Skip to content

Commit ba38fe0

Browse files
committed
Define prop types using the util in react-transition-group.
1 parent bb60952 commit ba38fe0

File tree

1 file changed

+6
-39
lines changed

1 file changed

+6
-39
lines changed

src/ReactCSSTransitionReplace.jsx

Lines changed: 6 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -9,60 +9,27 @@ import ReactDOM from 'react-dom'
99
import PropTypes from 'prop-types'
1010

1111
import ReactCSSTransitionGroupChild from 'react-transition-group/CSSTransitionGroupChild'
12+
import { nameShape, transitionTimeout } from 'react-transition-group/utils/PropTypes'
13+
1214

1315
const reactCSSTransitionGroupChild = React.createFactory(ReactCSSTransitionGroupChild)
1416

1517
const TICK = 17
1618

1719

18-
function createTransitionTimeoutPropValidator(transitionType) {
19-
const timeoutPropName = 'transition' + transitionType + 'Timeout'
20-
const enabledPropName = 'transition' + transitionType
21-
22-
return function(props) {
23-
// If the transition is enabled
24-
if (props[enabledPropName]) {
25-
// If no timeout duration is provided
26-
if (!props[timeoutPropName]) {
27-
return new Error(timeoutPropName + ' wasn\'t supplied to ReactCSSTransitionReplace: '
28-
+ 'this can cause unreliable animations and won\'t be supported in '
29-
+ 'a future version of React. See '
30-
+ 'https://fb.me/react-animation-transition-group-timeout for more ' + 'information.')
31-
32-
// If the duration isn't a number
33-
} else if (typeof props[timeoutPropName] != 'number') {
34-
return new Error(timeoutPropName + ' must be a number (in milliseconds)')
35-
}
36-
}
37-
}
38-
}
39-
4020
export default class ReactCSSTransitionReplace extends React.Component {
4121

4222
static displayName = 'ReactCSSTransitionReplace'
4323

4424
static propTypes = {
45-
transitionName: PropTypes.oneOfType([PropTypes.string, PropTypes.shape({
46-
enter: PropTypes.string,
47-
leave: PropTypes.string,
48-
active: PropTypes.string,
49-
height: PropTypes.string,
50-
}), PropTypes.shape({
51-
enter: PropTypes.string,
52-
enterActive: PropTypes.string,
53-
leave: PropTypes.string,
54-
leaveActive: PropTypes.string,
55-
appear: PropTypes.string,
56-
appearActive: PropTypes.string,
57-
height: PropTypes.string,
58-
})]).isRequired,
25+
transitionName: nameShape.isRequired,
5926

6027
transitionAppear: PropTypes.bool,
6128
transitionEnter: PropTypes.bool,
6229
transitionLeave: PropTypes.bool,
63-
transitionAppearTimeout: createTransitionTimeoutPropValidator('Appear'),
64-
transitionEnterTimeout: createTransitionTimeoutPropValidator('Enter'),
65-
transitionLeaveTimeout: createTransitionTimeoutPropValidator('Leave'),
30+
transitionAppearTimeout: transitionTimeout('Appear'),
31+
transitionEnterTimeout: transitionTimeout('Enter'),
32+
transitionLeaveTimeout: transitionTimeout('Leave'),
6633
overflowHidden: PropTypes.bool,
6734
}
6835

0 commit comments

Comments
 (0)