From 00b7524c579c6b6862742944f54ff0bb5e8afba6 Mon Sep 17 00:00:00 2001 From: Rockallite Wulf Date: Mon, 27 Jun 2016 17:35:54 +0800 Subject: [PATCH] Add support for Object type for `transitionName` prop of `Animate` component (Similar to `transitionName` prop of `ReactCSSTransitionGroup` component. https://facebook.github.io/react/docs/animation.html#custom-classes ) --- src/Animate.js | 5 ++++- src/AnimateChild.js | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/Animate.js b/src/Animate.js index 6a22c3d..64801c0 100644 --- a/src/Animate.js +++ b/src/Animate.js @@ -29,7 +29,10 @@ const Animate = React.createClass({ propTypes: { component: React.PropTypes.any, animation: React.PropTypes.object, - transitionName: React.PropTypes.string, + transitionName: React.PropTypes.oneOfType([ + React.PropTypes.string, + React.PropTypes.object, + ]), transitionEnter: React.PropTypes.bool, transitionAppear: React.PropTypes.bool, exclusive: React.PropTypes.bool, diff --git a/src/AnimateChild.js b/src/AnimateChild.js index f3d849d..362f056 100644 --- a/src/AnimateChild.js +++ b/src/AnimateChild.js @@ -49,6 +49,7 @@ const AnimateChild = React.createClass({ const node = ReactDOM.findDOMNode(this); const props = this.props; const transitionName = props.transitionName; + const nameIsObj = typeof transitionName === 'object'; this.stop(); const end = () => { this.stopper = null; @@ -56,7 +57,8 @@ const AnimateChild = React.createClass({ }; if ((isCssAnimationSupported || !props.animation[animationType]) && transitionName && props[transitionMap[animationType]]) { - this.stopper = cssAnimate(node, `${transitionName}-${animationType}`, end); + const name = nameIsObj ? transitionName[animationType] : `${transitionName}-${animationType}`; + this.stopper = cssAnimate(node, name, end); } else { this.stopper = props.animation[animationType](node, end); }