Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/twbs/bootstrap.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/js/src
diff options
context:
space:
mode:
authorJann Westermann <github@jann.bayern>2022-03-02 03:20:37 +0300
committerGitHub <noreply@github.com>2022-03-02 03:20:37 +0300
commit8d7358f23131a04762af95b88d045fde0627c79f (patch)
treee7b9a55ba4dfe88dcfd5987939a1d341c1c81563 /js/src
parentd788d2efac79bfe84bba46db6574534f111fcece (diff)
Add static backdrop to offcanvas (#35832)
* Add static backdrop option, to offcanvas * Trigger prevented event on esc with keyboard=false * Change offcanvas doc , moving backdrop examples to examples section
Diffstat (limited to 'js/src')
-rw-r--r--js/src/offcanvas.js30
1 files changed, 25 insertions, 5 deletions
diff --git a/js/src/offcanvas.js b/js/src/offcanvas.js
index 2735a9c2ae..b5afc0c87b 100644
--- a/js/src/offcanvas.js
+++ b/js/src/offcanvas.js
@@ -39,6 +39,7 @@ const OPEN_SELECTOR = '.offcanvas.show'
const EVENT_SHOW = `show${EVENT_KEY}`
const EVENT_SHOWN = `shown${EVENT_KEY}`
const EVENT_HIDE = `hide${EVENT_KEY}`
+const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`
const EVENT_HIDDEN = `hidden${EVENT_KEY}`
const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`
const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`
@@ -52,7 +53,7 @@ const Default = {
}
const DefaultType = {
- backdrop: 'boolean',
+ backdrop: '(boolean|string)',
keyboard: 'boolean',
scroll: 'boolean'
}
@@ -164,12 +165,24 @@ class Offcanvas extends BaseComponent {
// Private
_initializeBackDrop() {
+ const clickCallback = () => {
+ if (this._config.backdrop === 'static') {
+ EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)
+ return
+ }
+
+ this.hide()
+ }
+
+ // 'static' option will be translated to true, and booleans will keep their value
+ const isVisible = Boolean(this._config.backdrop)
+
return new Backdrop({
className: CLASS_NAME_BACKDROP,
- isVisible: this._config.backdrop,
+ isVisible,
isAnimated: true,
rootElement: this._element.parentNode,
- clickCallback: () => this.hide()
+ clickCallback: isVisible ? clickCallback : null
})
}
@@ -181,9 +194,16 @@ class Offcanvas extends BaseComponent {
_addEventListeners() {
EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {
- if (this._config.keyboard && event.key === ESCAPE_KEY) {
- this.hide()
+ if (event.key !== ESCAPE_KEY) {
+ return
}
+
+ if (!this._config.keyboard) {
+ EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)
+ return
+ }
+
+ this.hide()
})
}