diff --git a/package.json b/package.json index dc93fc28..2c42f3b3 100644 --- a/package.json +++ b/package.json @@ -57,6 +57,7 @@ "babel-plugin-add-module-exports": "^0.2.1", "babel-plugin-dev-expression": "^0.2.1", "babel-plugin-transform-object-assign": "^6.22.0", + "babel-plugin-transform-react-remove-prop-types": "^0.4.5", "babel-preset-latest": "^6.24.0", "babel-preset-react": "^6.23.0", "babel-preset-stage-2": "^6.18.0", diff --git a/src/CSSTransitionGroup.js b/src/CSSTransitionGroup.js index 73242f4a..5d4f2a5e 100644 --- a/src/CSSTransitionGroup.js +++ b/src/CSSTransitionGroup.js @@ -5,22 +5,6 @@ import TransitionGroup from './TransitionGroup'; import CSSTransitionGroupChild from './CSSTransitionGroupChild'; import { nameShape, transitionTimeout } from './utils/PropTypes'; -const propTypes = { - transitionName: nameShape.isRequired, - - transitionAppear: PropTypes.bool, - transitionEnter: PropTypes.bool, - transitionLeave: PropTypes.bool, - transitionAppearTimeout: transitionTimeout('Appear'), - transitionEnterTimeout: transitionTimeout('Enter'), - transitionLeaveTimeout: transitionTimeout('Leave'), -}; - -const defaultProps = { - transitionAppear: false, - transitionEnter: true, - transitionLeave: true, -}; class CSSTransitionGroup extends React.Component { @@ -53,7 +37,21 @@ class CSSTransitionGroup extends React.Component { } } -CSSTransitionGroup.propTypes = propTypes; -CSSTransitionGroup.defaultProps = defaultProps; +CSSTransitionGroup.propTypes = { + transitionName: nameShape.isRequired, + + transitionAppear: PropTypes.bool, + transitionEnter: PropTypes.bool, + transitionLeave: PropTypes.bool, + transitionAppearTimeout: transitionTimeout('Appear'), + transitionEnterTimeout: transitionTimeout('Enter'), + transitionLeaveTimeout: transitionTimeout('Leave'), +}; + +CSSTransitionGroup.defaultProps = { + transitionAppear: false, + transitionEnter: true, + transitionLeave: true, +}; export default CSSTransitionGroup; diff --git a/src/CSSTransitionGroupChild.js b/src/CSSTransitionGroupChild.js index e72bc2c7..cf8f6bea 100644 --- a/src/CSSTransitionGroupChild.js +++ b/src/CSSTransitionGroupChild.js @@ -26,20 +26,6 @@ function addEndListener(node, listener) { }; } -const propTypes = { - children: PropTypes.node, - name: nameShape.isRequired, - - // Once we require timeouts to be specified, we can remove the - // boolean flags (appear etc.) and just accept a number - // or a bool for the timeout flags (appearTimeout etc.) - appear: PropTypes.bool, - enter: PropTypes.bool, - leave: PropTypes.bool, - appearTimeout: PropTypes.number, - enterTimeout: PropTypes.number, - leaveTimeout: PropTypes.number, -}; class CSSTransitionGroupChild extends React.Component { @@ -176,6 +162,19 @@ class CSSTransitionGroupChild extends React.Component { } } -CSSTransitionGroupChild.propTypes = propTypes; +CSSTransitionGroupChild.propTypes = { + children: PropTypes.node, + name: nameShape.isRequired, + + // Once we require timeouts to be specified, we can remove the + // boolean flags (appear etc.) and just accept a number + // or a bool for the timeout flags (appearTimeout etc.) + appear: PropTypes.bool, + enter: PropTypes.bool, + leave: PropTypes.bool, + appearTimeout: PropTypes.number, + enterTimeout: PropTypes.number, + leaveTimeout: PropTypes.number, +}; export default CSSTransitionGroupChild; diff --git a/src/TransitionGroup.js b/src/TransitionGroup.js index 2cba6a6a..27d6e001 100644 --- a/src/TransitionGroup.js +++ b/src/TransitionGroup.js @@ -6,18 +6,6 @@ import warning from 'warning'; import { getChildMapping, mergeChildMappings } from './utils/ChildMapping'; -const propTypes = { - component: PropTypes.any, - childFactory: PropTypes.func, - children: PropTypes.node, -}; - -const defaultProps = { - component: 'span', - childFactory: child => child, -}; - - class TransitionGroup extends React.Component { static displayName = 'TransitionGroup'; @@ -243,7 +231,15 @@ class TransitionGroup extends React.Component { } } -TransitionGroup.propTypes = propTypes; -TransitionGroup.defaultProps = defaultProps; +TransitionGroup.propTypes = { + component: PropTypes.any, + childFactory: PropTypes.func, + children: PropTypes.node, +}; + +TransitionGroup.defaultProps = { + component: 'span', + childFactory: child => child, +}; export default TransitionGroup;