-
Notifications
You must be signed in to change notification settings - Fork 29.9k
/
react-transition-group-tests.tsx
129 lines (117 loc) · 4.05 KB
/
react-transition-group-tests.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
import * as React from "react";
import CSSTransition = require("react-transition-group/CSSTransition");
import Transition, { UNMOUNTED, EXITED, ENTERING, ENTERED, EXITING, TransitionStatus } from "react-transition-group/Transition";
import TransitionGroup = require("react-transition-group/TransitionGroup");
import Components = require("react-transition-group");
interface ContainerProps {
theme: string;
children?: Element[];
}
const Container: React.StatelessComponent<ContainerProps> = (props: ContainerProps) => {
return (
<div data-theme={props.theme}>
{props.children}
</div>
);
};
const Test: React.StatelessComponent = () => {
function handleEnter(node: HTMLElement, isAppearing: boolean) {}
function handleExit(node: HTMLElement) {}
function handleEndListener(node: HTMLElement, done: () => void) {
node.addEventListener("transitionend", done, false);
}
function statusAsArgument(status: TransitionStatus) {
switch (status) {
case ENTERING:
case ENTERED:
case EXITING:
case EXITED:
case UNMOUNTED:
return <div>{status}</div>;
}
}
return (
<TransitionGroup
component={Container}
theme="test"
className="animated-list"
childFactory={ (child: React.ReactElement) => child }
>
<Components.Transition
in
mountOnEnter
unmountOnExit
appear
enter
exit
timeout={ 500 }
addEndListener={ handleEndListener }
onEnter={ handleEnter }
onEntering={ handleEnter }
onEntered={ handleEnter }
onExit={ handleExit }
onExiting={ handleExit }
onExited={ handleExit }
>
<div>{ "test" }</div>
</Components.Transition>
<Components.Transition in timeout={500}>
{(status) => {
switch (status) {
case ENTERING:
case ENTERED:
case EXITING:
case EXITED:
case UNMOUNTED:
return <div>{status}</div>;
}
}}
</Components.Transition>
<Components.Transition in timeout={500}>
{statusAsArgument}
</Components.Transition>
<Transition
timeout={ { enter : 500, exit : 500 } }
>
<div>{ "test" }</div>
</Transition>
<Components.CSSTransition
in
mountOnEnter
unmountOnExit
appear
enter
exit
timeout={ 500 }
addEndListener={ handleEndListener }
onEnter={ handleEnter }
onEntering={ handleEnter }
onEntered={ handleEnter }
onExit={ handleExit }
onExiting={ handleExit }
onExited={ handleExit }
classNames="fade"
>
<div>{ "test" }</div>
</Components.CSSTransition>
<CSSTransition
timeout={ { enter : 500, exit : 500 } }
classNames={ {
appear: "fade-appear",
appearActive: "fade-active-appear",
enter: "fade-enter",
enterActive: "fade-active-enter",
enterDone: "fade-done-enter",
exit: "fade-exit",
exitActive: "fade-active-exit",
exitDone: "fade-done-exit",
} }
>
<div>{ "test" }</div>
</CSSTransition>
<CSSTransition timeout={ 100 }>
<div>{ "test" }</div>
</CSSTransition>
</TransitionGroup>
);
};