Skip to content
Permalink
Newer
Older
100644 118 lines (115 sloc) 3.56 KB
Aug 29, 2018
1
import React , { Component } from 'react'
2
import NodeGroup from 'react-move/NodeGroup'
3
import Animate from 'react-move/Animate'
4
import { easeElastic } from 'd3-ease'
5
import animationTimings from './common/animationTimings'
May 3, 2018
7
class TransitionGrid extends Component {
8
render ( ) {
9
const { visible , items , removeItem } = this . props
May 3, 2018
10
11
return (
12
< Animate
13
show = { visible }
May 3, 2018
14
start = { {
15
// values have to be in an array for some reason or else they won't tween (?)
16
translateX : [ - 100 ] ,
17
opacity : [ 1 ]
May 3, 2018
18
} }
19
enter = { [
20
{
21
opacity : [ 1 ] ,
22
timing : { duration : animationTimings . gridEnter }
May 3, 2018
23
} ,
24
{
25
translateX : [ ] ,
Aug 29, 2018
26
timing : { duration : animationTimings . gridEnter , ease : easeElastic }
May 3, 2018
27
}
28
] }
29
leave = { [
30
{
31
opacity : [ ]
32
} ,
33
{
34
translateX : [ 1000 ] ,
Aug 29, 2018
35
timing : { duration : animationTimings . gridLeave , ease : easeElastic }
May 3, 2018
36
}
37
] }
38
>
39
{ ( { opacity , translateX } ) => {
May 3, 2018
40
return (
41
< div
May 3, 2018
42
className = "animated-grid"
Aug 29, 2018
43
style = { {
44
opacity : opacity ,
45
transform : `translateX( ${ translateX } px)`
46
} }
48
{
May 3, 2018
49
< NodeGroup
50
data = { items }
51
keyAccessor = { item => item }
52
start = { ( item , i ) => {
53
return {
54
opacity : [ ] ,
55
translateY : [ - 50 ] ,
56
timing : { delay : i * 100 }
57
}
58
} }
59
enter = { ( item , i ) => {
60
return [
61
{
62
opacity : [ 1 ] ,
May 3, 2018
63
timing : {
64
duration : animationTimings . cardEnter ,
65
delay : i * 100
66
}
67
} ,
68
{
69
translateY : [ ] ,
70
timing : {
71
duration : animationTimings . cardEnter ,
72
ease : easeElastic ,
73
delay : i * 100
74
}
75
}
76
]
77
} }
78
leave = { ( item , i ) => {
79
return {
80
opacity : ,
81
translateY : - 50 ,
May 3, 2018
82
timing : { delay : ( items . length - i ) * 100 }
83
}
84
} }
85
>
86
{ nodes => {
87
return (
88
< ul className = "grid" >
89
{ nodes . map ( ( { key , data , state } ) => {
90
return (
91
< li
92
key = { key }
93
className = "card"
94
style = { {
95
opacity : state . opacity ,
96
transform : `translateY( ${ state . translateY } px)`
97
} }
98
onClick = { ( ) => removeItem ( data ) }
99
>
100
< div className = "close-card" > < / div >
101
< div > { data } < / div >
102
< / li >
103
)
104
} ) }
105
< / ul >
106
)
107
} }
108
< / NodeGroup >
109
}
110
< / div >
May 3, 2018
111
)
112
} }
113
< / Animate >
114
)
115
}
116
}
117
118
export default TransitionGrid

友情链: IM·体育网上直播_IM·体育赛事最新版_im体育官网在线官网在线 | im体育app平台下载|IM体育v2.3 安卓版|IM体育今天官网赛表 | im体育推荐官网_im体育今晚高清_im体育买软件 | 2022im体育网网址_分析观看比赛_2022im体育在线软件 | IM体育开户网址-Im体育官方网站-IM体育期胜负彩专家分析 | im电竞体育登录入口_IM·体育比分分析在线_IM·体育v8.5 IOS版 | im体育app官网下载|IM体育最新今天观看|IM体育赛事注册 |