return
}
- this._triggerBackdropTransition()
+ if (this._config.backdrop === 'static') {
+ this._triggerBackdropTransition()
+ } else {
+ this.hide()
+ }
})
if (animate) {
}
_triggerBackdropTransition() {
- if (this._config.backdrop === 'static') {
- const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)
- if (hideEvent.defaultPrevented) {
- return
- }
+ const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)
+ if (hideEvent.defaultPrevented) {
+ return
+ }
- const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight
+ const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight
+ if (!isModalOverflowing) {
+ this._element.style.overflowY = 'hidden'
+ }
+
+ this._element.classList.add(CLASS_NAME_STATIC)
+ const modalTransitionDuration = getTransitionDurationFromElement(this._dialog)
+ EventHandler.off(this._element, TRANSITION_END)
+ EventHandler.one(this._element, TRANSITION_END, () => {
+ this._element.classList.remove(CLASS_NAME_STATIC)
if (!isModalOverflowing) {
- this._element.style.overflowY = 'hidden'
+ EventHandler.one(this._element, TRANSITION_END, () => {
+ this._element.style.overflowY = ''
+ })
+ emulateTransitionEnd(this._element, modalTransitionDuration)
}
-
- this._element.classList.add(CLASS_NAME_STATIC)
- const modalTransitionDuration = getTransitionDurationFromElement(this._dialog)
- EventHandler.off(this._element, TRANSITION_END)
- EventHandler.one(this._element, TRANSITION_END, () => {
- this._element.classList.remove(CLASS_NAME_STATIC)
- if (!isModalOverflowing) {
- EventHandler.one(this._element, TRANSITION_END, () => {
- this._element.style.overflowY = ''
- })
- emulateTransitionEnd(this._element, modalTransitionDuration)
- }
- })
- emulateTransitionEnd(this._element, modalTransitionDuration)
- this._element.focus()
- } else {
- this.hide()
- }
+ })
+ emulateTransitionEnd(this._element, modalTransitionDuration)
+ this._element.focus()
}
// ----------------------------------------------------------------------
modal.show()
})
- it('should not close modal when escape key is pressed with keyboard = false and backdrop = static', done => {
- fixtureEl.innerHTML = '<div class="modal" data-bs-backdrop="static" data-bs-keyboard="false"><div class="modal-dialog"></div>'
+ it('should not close modal when escape key is pressed with keyboard = false', done => {
+ fixtureEl.innerHTML = '<div class="modal"><div class="modal-dialog"></div></div>'
const modalEl = fixtureEl.querySelector('.modal')
const modal = new Modal(modalEl, {
- backdrop: 'static',
keyboard: false
})