1
+ import { watch } from '@vue/runtime-core'
1
2
import { defineComponent , h , onMounted , onUpdated , ref , RendererElement , Transition } from 'vue'
2
3
3
4
const CNavGroup = defineComponent ( {
@@ -44,26 +45,34 @@ const CNavGroup = defineComponent({
44
45
}
45
46
} )
46
47
48
+ watch ( visible , ( ) => {
49
+ emit ( 'visible-change' , visible . value )
50
+ } )
51
+
47
52
const handleTogglerClick = function ( ) {
48
53
visible . value = ! visible . value
49
- emit ( 'visible-change' , visible . value )
50
54
}
55
+
51
56
const handleBeforeEnter = ( el : RendererElement ) => {
52
57
el . style . height = '0px'
53
58
navGroupRef . value . classList . add ( 'show' )
54
59
}
60
+
55
61
const handleEnter = ( el : RendererElement , done : ( ) => void ) => {
56
62
el . addEventListener ( 'transitionend' , ( ) => {
57
63
done ( )
58
64
} )
59
65
el . style . height = `${ el . scrollHeight } px`
60
66
}
67
+
61
68
const handleAfterEnter = ( el : RendererElement ) => {
62
69
el . style . height = 'auto'
63
70
}
71
+
64
72
const handleBeforeLeave = ( el : RendererElement ) => {
65
73
el . style . height = `${ el . scrollHeight } px`
66
74
}
75
+
67
76
const handleLeave = ( el : RendererElement , done : ( ) => void ) => {
68
77
el . addEventListener ( 'transitionend' , ( ) => {
69
78
done ( )
@@ -72,6 +81,7 @@ const CNavGroup = defineComponent({
72
81
el . style . height = '0px'
73
82
} , 1 )
74
83
}
84
+
75
85
const handleAfterLeave = ( ) => {
76
86
navGroupRef . value . classList . remove ( 'show' )
77
87
}
0 commit comments