@@ -181,7 +181,13 @@ export function resolveTransitionProps(
181
181
onAppearCancelled = onEnterCancelled ,
182
182
} = baseProps
183
183
184
- const finishEnter = ( el : Element , isAppear : boolean , done ?: ( ) => void ) => {
184
+ const finishEnter = (
185
+ el : Element & { _enterCancelled ?: boolean } ,
186
+ isAppear : boolean ,
187
+ done ?: ( ) => void ,
188
+ isCancelled ?: boolean ,
189
+ ) => {
190
+ el . _enterCancelled = isCancelled
185
191
removeTransitionClass ( el , isAppear ? appearToClass : enterToClass )
186
192
removeTransitionClass ( el , isAppear ? appearActiveClass : enterActiveClass )
187
193
done && done ( )
@@ -240,7 +246,10 @@ export function resolveTransitionProps(
240
246
} ,
241
247
onEnter : makeEnterHook ( false ) ,
242
248
onAppear : makeEnterHook ( true ) ,
243
- onLeave ( el : Element & { _isLeaving ?: boolean } , done ) {
249
+ onLeave (
250
+ el : Element & { _isLeaving ?: boolean ; _enterCancelled ?: boolean } ,
251
+ done ,
252
+ ) {
244
253
el . _isLeaving = true
245
254
const resolve = ( ) => finishLeave ( el , done )
246
255
addTransitionClass ( el , leaveFromClass )
@@ -249,9 +258,14 @@ export function resolveTransitionProps(
249
258
}
250
259
// add *-leave-active class before reflow so in the case of a cancelled enter transition
251
260
// the css will not get the final state (#10677)
252
- addTransitionClass ( el , leaveActiveClass )
253
- // force reflow so *-leave-from classes immediately take effect (#2593)
254
- forceReflow ( )
261
+ if ( ! el . _enterCancelled ) {
262
+ forceReflow ( )
263
+ addTransitionClass ( el , leaveActiveClass )
264
+ } else {
265
+ addTransitionClass ( el , leaveActiveClass )
266
+ // force reflow so *-leave-from classes immediately take effect (#2593)
267
+ forceReflow ( )
268
+ }
255
269
nextFrame ( ( ) => {
256
270
if ( ! el . _isLeaving ) {
257
271
// cancelled
@@ -269,11 +283,11 @@ export function resolveTransitionProps(
269
283
callHook ( onLeave , [ el , resolve ] )
270
284
} ,
271
285
onEnterCancelled ( el ) {
272
- finishEnter ( el , false )
286
+ finishEnter ( el , false , undefined , false )
273
287
callHook ( onEnterCancelled , [ el ] )
274
288
} ,
275
289
onAppearCancelled ( el ) {
276
- finishEnter ( el , true )
290
+ finishEnter ( el , true , undefined , false )
277
291
callHook ( onAppearCancelled , [ el ] )
278
292
} ,
279
293
onLeaveCancelled ( el ) {
0 commit comments