return
}
- if (this._isAnimated()) {
- this._isTransitioning = true
- }
-
const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {
relatedTarget
})
- if (this._isShown || showEvent.defaultPrevented) {
+ if (showEvent.defaultPrevented) {
return
}
this._isShown = true
+ if (this._isAnimated()) {
+ this._isTransitioning = true
+ }
+
scrollBarHide()
document.body.classList.add(CLASS_NAME_OPEN)
modal.show()
})
+ it('should be shown after the first call to show() has been prevented while fading is enabled ', done => {
+ fixtureEl.innerHTML = '<div class="modal fade"><div class="modal-dialog"></div></div>'
+
+ const modalEl = fixtureEl.querySelector('.modal')
+ const modal = new Modal(modalEl)
+
+ let prevented = false
+ modalEl.addEventListener('show.bs.modal', e => {
+ if (!prevented) {
+ e.preventDefault()
+ prevented = true
+
+ setTimeout(() => {
+ modal.show()
+ })
+ }
+ })
+
+ modalEl.addEventListener('shown.bs.modal', () => {
+ expect(prevented).toBeTrue()
+ expect(modal._isAnimated()).toBeTrue()
+ done()
+ })
+
+ modal.show()
+ })
+
it('should set is transitioning if fade class is present', done => {
fixtureEl.innerHTML = '<div class="modal fade"><div class="modal-dialog"></div></div>'
const modal = new Modal(modalEl)
modalEl.addEventListener('show.bs.modal', () => {
- expect(modal._isTransitioning).toEqual(true)
+ setTimeout(() => {
+ expect(modal._isTransitioning).toEqual(true)
+ })
})
modalEl.addEventListener('shown.bs.modal', () => {