@@ -40,6 +40,7 @@ let calls = {
4040 withAppear: [],
4141 cssFalse: [],
4242 ifInOut: [],
43+ preventEnterWhenLeaving: [],
4344
4445 show: [],
4546 showLeaveCancel: [],
@@ -52,6 +53,22 @@ let calls = {
5253window .getCalls = key => calls[key]
5354window .resetCalls = key => (calls[key] = [])
5455
56+ const preventEnterToggle = ref (false )
57+ const preventEnterVisible = ref (true )
58+ const togglePreventEnter = () => {
59+ preventEnterToggle .value = ! preventEnterToggle .value
60+ if (preventEnterToggle .value ) {
61+ preventEnterVisible .value = true
62+ }
63+ }
64+
65+ const PreventEnterComp = defineVaporComponent ({
66+ setup () {
67+ preventEnterVisible .value = false
68+ return []
69+ },
70+ })
71+
5572const activeComponent = shallowRef (VaporCompB)
5673function toggleComponent () {
5774 activeComponent .value =
@@ -550,6 +567,36 @@ const Comp2 = defineVaporComponent({
550567 </div >
551568 <button @click =" changeViewInOut" >button</button >
552569 </div >
570+ <div class =" if-prevent-enter-when-leaving" >
571+ <div class =" content" v-if =" preventEnterToggle" >
572+ <div class =" container" >
573+ <transition
574+ appear
575+ @before-enter ="
576+ () => calls.preventEnterWhenLeaving.push('beforeEnter')
577+ "
578+ @enter =" () => calls.preventEnterWhenLeaving.push('enter')"
579+ @enter-cancelled ="
580+ () => calls.preventEnterWhenLeaving.push('enterCancelled')
581+ "
582+ @after-enter ="
583+ () => calls.preventEnterWhenLeaving.push('afterEnter')
584+ "
585+ @before-leave ="
586+ () => calls.preventEnterWhenLeaving.push('beforeLeave')
587+ "
588+ @leave =" () => calls.preventEnterWhenLeaving.push('leave')"
589+ @after-leave ="
590+ () => calls.preventEnterWhenLeaving.push('afterLeave')
591+ "
592+ >
593+ <div v-if =" preventEnterVisible" >content</div >
594+ </transition >
595+ </div >
596+ <PreventEnterComp />
597+ </div >
598+ <button @click =" togglePreventEnter" >button</button >
599+ </div >
553600 <!-- work with vif end -->
554601
555602 <!-- work with vshow -->
0 commit comments