mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2025-10-16 12:05:41 +00:00
Since v2.9.0, the `appearDone` class name has been supported.
See also:
- https://github.com/reactjs/react-transition-group/blob/v2.9.0/CHANGELOG.md
- fe3c156c11
131 lines
4.1 KiB
TypeScript
131 lines
4.1 KiB
TypeScript
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",
|
|
appearDone: "fade-done-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>
|
|
);
|
|
};
|