UNPKG

react-view-router

Version:
105 lines (101 loc) 3.65 kB
import React from "react"; /** * A transition component inspired by the excellent * [ng-animate](https://docs.angularjs.org/api/ngAnimate) library, you should * use it if you're using CSS transitions or animations. It's built upon the * [`Transition`](https://reactcommunity.org/react-transition-group/transition) * component, so it inherits all of its props. * * `CSSTransition` applies a pair of class names during the `appear`, `enter`, * and `exit` states of the transition. The first class is applied and then a * second `*-active` class in order to activate the CSS transition. After the * transition, matching `*-done` class names are applied to persist the * transition state. * * ```jsx * function App() { * const [inProp, setInProp] = useState(false); * return ( * <div> * <CSSTransition in={inProp} timeout={200} classNames="my-node"> * <div> * {"I'll receive my-node-* classes"} * </div> * </CSSTransition> * <button type="button" onClick={() => setInProp(true)}> * Click to Enter * </button> * </div> * ); * } * ``` * * When the `in` prop is set to `true`, the child component will first receive * the class `example-enter`, then the `example-enter-active` will be added in * the next tick. `CSSTransition` [forces a * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215) * between before adding the `example-enter-active`. This is an important trick * because it allows us to transition between `example-enter` and * `example-enter-active` even though they were added immediately one after * another. Most notably, this is what makes it possible for us to animate * _appearance_. * * ```css * .my-node-enter { * opacity: 0; * } * .my-node-enter-active { * opacity: 1; * transition: opacity 200ms; * } * .my-node-exit { * opacity: 1; * } * .my-node-exit-active { * opacity: 0; * transition: opacity 200ms; * } * ``` * * `*-active` classes represent which styles you want to animate **to**, so it's * important to add `transition` declaration only to them, otherwise transitions * might not behave as intended! This might not be obvious when the transitions * are symmetrical, i.e. when `*-enter-active` is the same as `*-exit`, like in * the example above (minus `transition`), but it becomes apparent in more * complex transitions. * * **Note**: If you're using the * [`appear`](http://reactcommunity.org/react-transition-group/transition#Transition-prop-appear) * prop, make sure to define styles for `.appear-*` classes as well. */ declare class CSSTransition extends React.Component<any, any, any> { static defaultProps: { classNames: string; }; constructor(props: any); constructor(props: any, context: any); appliedClasses: { appear: {}; enter: {}; exit: {}; }; onEnter: (maybeNode: any, maybeAppearing: any) => void; onEntering: (maybeNode: any, maybeAppearing: any) => void; onEntered: (maybeNode: any, maybeAppearing: any) => void; onExit: (maybeNode: any) => void; onExiting: (maybeNode: any) => void; onExited: (maybeNode: any) => void; resolveArguments: (maybeNode: any, maybeAppearing: any) => any[]; getClassNames: (type: any) => { baseClassName: any; activeClassName: any; doneClassName: any; }; addClass(node: any, type: any, phase: any): void; removeClasses(node: any, type: any): void; render(): JSX.Element; } declare namespace CSSTransition { const propTypes: any; } export default CSSTransition;