@@ -181,7 +181,13 @@ export function resolveTransitionProps(
181181 onAppearCancelled = onEnterCancelled ,
182182 } = baseProps
183183
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
185191 removeTransitionClass ( el , isAppear ? appearToClass : enterToClass )
186192 removeTransitionClass ( el , isAppear ? appearActiveClass : enterActiveClass )
187193 done && done ( )
@@ -240,7 +246,10 @@ export function resolveTransitionProps(
240246 } ,
241247 onEnter : makeEnterHook ( false ) ,
242248 onAppear : makeEnterHook ( true ) ,
243- onLeave ( el : Element & { _isLeaving ?: boolean } , done ) {
249+ onLeave (
250+ el : Element & { _isLeaving ?: boolean ; _enterCancelled ?: boolean } ,
251+ done ,
252+ ) {
244253 el . _isLeaving = true
245254 const resolve = ( ) => finishLeave ( el , done )
246255 addTransitionClass ( el , leaveFromClass )
@@ -249,9 +258,14 @@ export function resolveTransitionProps(
249258 }
250259 // add *-leave-active class before reflow so in the case of a cancelled enter transition
251260 // 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+ }
255269 nextFrame ( ( ) => {
256270 if ( ! el . _isLeaving ) {
257271 // cancelled
@@ -269,11 +283,11 @@ export function resolveTransitionProps(
269283 callHook ( onLeave , [ el , resolve ] )
270284 } ,
271285 onEnterCancelled ( el ) {
272- finishEnter ( el , false )
286+ finishEnter ( el , false , undefined , true )
273287 callHook ( onEnterCancelled , [ el ] )
274288 } ,
275289 onAppearCancelled ( el ) {
276- finishEnter ( el , true )
290+ finishEnter ( el , true , undefined , true )
277291 callHook ( onAppearCancelled , [ el ] )
278292 } ,
279293 onLeaveCancelled ( el ) {
0 commit comments