react-view-router
Version:
react-view-router
105 lines (101 loc) • 3.65 kB
TypeScript
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;