@@ -28,8 +28,10 @@ function enter (_, vnode) {
28
28
29
29
const {
30
30
enterClass,
31
+ enterToClass,
31
32
enterActiveClass,
32
33
appearClass,
34
+ appearToClass,
33
35
appearActiveClass,
34
36
beforeEnter,
35
37
enter,
@@ -55,6 +57,7 @@ function enter (_, vnode) {
55
57
}
56
58
57
59
const startClass = isAppear ? appearClass : enterClass
60
+ const toClass = isAppear ? appearToClass : enterToClass
58
61
const activeClass = isAppear ? appearActiveClass : enterActiveClass
59
62
const beforeEnterHook = isAppear ? ( beforeAppear || beforeEnter ) : beforeEnter
60
63
const enterHook = isAppear ? ( typeof appear === 'function' ? appear : enter ) : enter
@@ -69,7 +72,8 @@ function enter (_, vnode) {
69
72
70
73
const stylesheet = vnode . context . $options . style || { }
71
74
const startState = stylesheet [ startClass ]
72
- const endState = stylesheet [ activeClass ]
75
+ const endState = stylesheet [ toClass ] || stylesheet [ activeClass ]
76
+ const transitionProperties = ( stylesheet [ '@TRANSITION' ] && stylesheet [ '@TRANSITION' ] [ activeClass ] ) || { }
73
77
const expectsCSS = startState && endState
74
78
75
79
const cb = el . _enterCb = once ( ( ) => {
@@ -99,8 +103,9 @@ function enter (_, vnode) {
99
103
const animation = vnode . context . _requireWeexModule ( 'animation' )
100
104
animation . transition ( el . ref , {
101
105
styles : endState ,
102
- duration : 300 ,
103
- timingFunction : 'ease-in-out'
106
+ duration : transitionProperties . duration || 0 ,
107
+ delay : transitionProperties . delay || 0 ,
108
+ timingFunction : transitionProperties . timingFunction || 'linear'
104
109
} , userWantsControl ? noop : cb )
105
110
} else if ( ! userWantsControl ) {
106
111
cb ( )
@@ -141,6 +146,7 @@ function leave (vnode, rm) {
141
146
142
147
const {
143
148
leaveClass,
149
+ leaveToClass,
144
150
leaveActiveClass,
145
151
beforeLeave,
146
152
leave,
@@ -157,7 +163,8 @@ function leave (vnode, rm) {
157
163
158
164
const stylesheet = vnode . context . $options . style || { }
159
165
const startState = stylesheet [ leaveClass ]
160
- const endState = stylesheet [ leaveActiveClass ]
166
+ const endState = stylesheet [ leaveToClass ] || stylesheet [ leaveActiveClass ]
167
+ const transitionProperties = ( stylesheet [ '@TRANSITION' ] && stylesheet [ '@TRANSITION' ] [ leaveActiveClass ] ) || { }
161
168
const expectsCSS = startState && endState
162
169
163
170
const cb = el . _leaveCb = once ( ( ) => {
@@ -202,8 +209,9 @@ function leave (vnode, rm) {
202
209
function next ( ) {
203
210
animation . transition ( el . ref , {
204
211
styles : endState ,
205
- duration : 300 ,
206
- timingFunction : 'ease-in-out'
212
+ duration : transitionProperties . duration || 0 ,
213
+ delay : transitionProperties . delay || 0 ,
214
+ timingFunction : transitionProperties . timingFunction || 'linear'
207
215
} , userWantsControl ? noop : cb )
208
216
}
209
217
@@ -246,6 +254,9 @@ const autoCssTransition = cached(name => {
246
254
enterClass : `${ name } -enter` ,
247
255
leaveClass : `${ name } -leave` ,
248
256
appearClass : `${ name } -enter` ,
257
+ enterToClass : `${ name } -enter-to` ,
258
+ leaveToClass : `${ name } -leave-to` ,
259
+ appearToClass : `${ name } -enter-to` ,
249
260
enterActiveClass : `${ name } -enter-active` ,
250
261
leaveActiveClass : `${ name } -leave-active` ,
251
262
appearActiveClass : `${ name } -enter-active`
0 commit comments