@@ -55,6 +55,9 @@ export interface BaseTransitionProps<HostElement = RendererElement> {
55
55
onAppear ?: Hook < ( el : HostElement , done : ( ) => void ) => void >
56
56
onAfterAppear ?: Hook < ( el : HostElement ) => void >
57
57
onAppearCancelled ?: Hook < ( el : HostElement ) => void >
58
+
59
+ // Ignore unmount optimization to execute full animation
60
+ skipUnmountingOptimization ?: boolean
58
61
}
59
62
60
63
export interface TransitionHooks < HostElement = RendererElement > {
@@ -135,6 +138,8 @@ export const BaseTransitionPropsValidators: Record<string, any> = {
135
138
onAppear : TransitionHookValidator ,
136
139
onAfterAppear : TransitionHookValidator ,
137
140
onAppearCancelled : TransitionHookValidator ,
141
+
142
+ skipUnmountingOptimization : Boolean ,
138
143
}
139
144
140
145
const recursiveGetSubtree = ( instance : ComponentInternalInstance ) : VNode => {
@@ -343,6 +348,7 @@ export function resolveTransitionHooks(
343
348
onAppear,
344
349
onAfterAppear,
345
350
onAppearCancelled,
351
+ skipUnmountingOptimization = false ,
346
352
} = props
347
353
const key = String ( vnode . key )
348
354
const leavingVNodesCache = getLeavingNodesForType ( state , vnode )
@@ -438,7 +444,7 @@ export function resolveTransitionHooks(
438
444
if ( el [ enterCbKey ] ) {
439
445
el [ enterCbKey ] ( true /* cancelled */ )
440
446
}
441
- if ( state . isUnmounting ) {
447
+ if ( state . isUnmounting && ! skipUnmountingOptimization ) {
442
448
return remove ( )
443
449
}
444
450
callHook ( onBeforeLeave , [ el ] )
0 commit comments