1
1
import { defineComponent , h , onMounted , provide , ref , RendererElement , Transition } from 'vue'
2
2
3
+ import { executeAfterTransition } from './../../utils/transition'
4
+
3
5
import { Color } from '../props'
4
6
5
7
const CToast = defineComponent ( {
@@ -79,29 +81,31 @@ const CToast = defineComponent({
79
81
}
80
82
provide ( 'updateVisible' , updateVisible )
81
83
84
+ const handleBeforeEnter = ( el :RendererElement ) => {
85
+ el . classList . add ( 'showing' )
86
+ }
87
+
82
88
const handleEnter = ( el :RendererElement , done :( ) => void ) => {
83
- el . addEventListener ( 'transitionend' , ( ) => {
84
- done ( )
85
- } )
89
+ executeAfterTransition ( ( ) => done ( ) , el as HTMLElement )
90
+ el . classList . add ( 'show' )
86
91
setTimeout ( ( ) => {
87
- el . classList . add ( 'show ')
92
+ el . classList . remove ( 'showing ')
88
93
} , 1 )
94
+
89
95
if ( props . index ) {
90
96
emit ( 'show' , props . index )
91
97
} else {
92
98
emit ( 'show' )
93
99
}
94
100
}
95
- const handleBeforeLeave = ( el :RendererElement ) => {
96
- el . classList . remove ( 'show' )
97
- }
101
+
98
102
const handleLeave = ( el :RendererElement , done :( ) => void ) => {
99
- el . addEventListener ( 'transitionend' , ( ) => {
100
- done ( )
101
- } )
102
- el . classList . remove ( 'show' )
103
+ executeAfterTransition ( ( ) => done ( ) , el as HTMLElement )
104
+ el . classList . add ( 'showing' )
103
105
}
106
+
104
107
const handleAfterLeave = ( el :RendererElement ) => {
108
+ el . classList . remove ( 'show' )
105
109
el . classList . add ( 'hide' )
106
110
if ( props . index ) {
107
111
emit ( 'close' , props . index )
@@ -125,8 +129,8 @@ const CToast = defineComponent({
125
129
Transition ,
126
130
{
127
131
appear :true ,
132
+ onBeforeEnter :( el ) => handleBeforeEnter ( el ) ,
128
133
onEnter :( el , done ) => handleEnter ( el , done ) ,
129
- onBeforeLeave :( el ) => handleBeforeLeave ( el ) ,
130
134
onLeave :( el , done ) => handleLeave ( el , done ) ,
131
135
onAfterLeave :( el ) => handleAfterLeave ( el ) ,
132
136
} ,