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); }