File tree 2 files changed +35
-6
lines changed
2 files changed +35
-6
lines changed Original file line number Diff line number Diff line change @@ -108,20 +108,20 @@ class Modal extends BaseComponent {
108
108
return
109
109
}
110
110
111
- if ( this . _isAnimated ( ) ) {
112
- this . _isTransitioning = true
113
- }
114
-
115
111
const showEvent = EventHandler . trigger ( this . _element , EVENT_SHOW , {
116
112
relatedTarget
117
113
} )
118
114
119
- if ( this . _isShown || showEvent . defaultPrevented ) {
115
+ if ( showEvent . defaultPrevented ) {
120
116
return
121
117
}
122
118
123
119
this . _isShown = true
124
120
121
+ if ( this . _isAnimated ( ) ) {
122
+ this . _isTransitioning = true
123
+ }
124
+
125
125
scrollBarHide ( )
126
126
127
127
document . body . classList . add ( CLASS_NAME_OPEN )
Original file line number Diff line number Diff line change @@ -203,14 +203,43 @@ describe('Modal', () => {
203
203
modal . show ( )
204
204
} )
205
205
206
+ it ( 'should be shown after the first call to show() has been prevented while fading is enabled ' , done => {
207
+ fixtureEl . innerHTML = '<div class="modal fade"><div class="modal-dialog"></div></div>'
208
+
209
+ const modalEl = fixtureEl . querySelector ( '.modal' )
210
+ const modal = new Modal ( modalEl )
211
+
212
+ let prevented = false
213
+ modalEl . addEventListener ( 'show.bs.modal' , e => {
214
+ if ( ! prevented ) {
215
+ e . preventDefault ( )
216
+ prevented = true
217
+
218
+ setTimeout ( ( ) => {
219
+ modal . show ( )
220
+ } )
221
+ }
222
+ } )
223
+
224
+ modalEl . addEventListener ( 'shown.bs.modal' , ( ) => {
225
+ expect ( prevented ) . toBeTrue ( )
226
+ expect ( modal . _isAnimated ( ) ) . toBeTrue ( )
227
+ done ( )
228
+ } )
229
+
230
+ modal . show ( )
231
+ } )
232
+
206
233
it ( 'should set is transitioning if fade class is present' , done => {
207
234
fixtureEl . innerHTML = '<div class="modal fade"><div class="modal-dialog"></div></div>'
208
235
209
236
const modalEl = fixtureEl . querySelector ( '.modal' )
210
237
const modal = new Modal ( modalEl )
211
238
212
239
modalEl . addEventListener ( 'show.bs.modal' , ( ) => {
213
- expect ( modal . _isTransitioning ) . toEqual ( true )
240
+ setTimeout ( ( ) => {
241
+ expect ( modal . _isTransitioning ) . toEqual ( true )
242
+ } )
214
243
} )
215
244
216
245
modalEl . addEventListener ( 'shown.bs.modal' , ( ) => {
You can’t perform that action at this time.
0 commit comments