@@ -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 = true
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,15 @@ 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
+ // force reflow so *-leave-from classes immediately take effect (#2593)
263
+ forceReflow ( )
264
+ addTransitionClass ( el , leaveActiveClass )
265
+ } else {
266
+ addTransitionClass ( el , leaveActiveClass )
267
+ // force reflow so *-leave-from classes immediately take effect (#2593)
268
+ forceReflow ( )
269
+ }
255
270
nextFrame ( ( ) => {
256
271
if ( ! el . _isLeaving ) {
257
272
// cancelled
@@ -269,11 +284,11 @@ export function resolveTransitionProps(
269
284
callHook ( onLeave , [ el , resolve ] )
270
285
} ,
271
286
onEnterCancelled ( el ) {
272
- finishEnter ( el , false )
287
+ finishEnter ( el , false , undefined , false )
273
288
callHook ( onEnterCancelled , [ el ] )
274
289
} ,
275
290
onAppearCancelled ( el ) {
276
- finishEnter ( el , true )
291
+ finishEnter ( el , true , undefined , false )
277
292
callHook ( onAppearCancelled , [ el ] )
278
293
} ,
279
294
onLeaveCancelled ( el ) {
0 commit comments