Skip to content

Commit ab93b7d

Browse files
author
Anne Johnson
committed
Allow configuring appear v. enter v. leave timeouts separately
1 parent 8d0299b commit ab93b7d

2 files changed

Lines changed: 49 additions & 9 deletions

File tree

docs/lib/Components/ModalsPage.js

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,20 @@ export default class ModalsPage extends React.Component {
6868
contentClassName: PropTypes.string,
6969
// boolean to control whether the fade transition occurs (default: true)
7070
fade: PropTypes.bool,
71-
// default: 300
71+
// modalTransitionTimeout - controls appear, enter, and leave (default: 300)
72+
// If you need different values for appear v. enter v. leave, use the more
73+
// specific props like modalTransitionAppearTimeout.
7274
modalTransitionTimeout: PropTypes.number,
73-
// default: 150
75+
modalTransitionAppearTimeout: PropTypes.number,
76+
modalTransitionEnterTimeout: PropTypes.number,
77+
modalTransitionLeaveTimeout: PropTypes.number,
78+
// backdropTransitionTimeout - controls appear, enter, and leave (default: 150)
79+
// If you need different values for appear v. enter v. leave, use the more
80+
// specific props like backdropTransitionAppearTimeout.
7481
backdropTransitionTimeout: PropTypes.number
82+
backdropTransitionAppearTimeout: PropTypes.number,
83+
backdropTransitionEnterTimeout: PropTypes.number,
84+
backdropTransitionLeaveTimeout: PropTypes.number,
7585
}`}
7686
</PrismCode>
7787
</pre>

src/Modal.js

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,14 @@ const propTypes = {
3333
PropTypes.number,
3434
PropTypes.string,
3535
]),
36-
modalTransitionTimeout: PropTypes.number,
3736
backdropTransitionTimeout: PropTypes.number,
37+
backdropTransitionAppearTimeout: PropTypes.number,
38+
backdropTransitionEnterTimeout: PropTypes.number,
39+
backdropTransitionLeaveTimeout: PropTypes.number,
40+
modalTransitionTimeout: PropTypes.number,
41+
modalTransitionAppearTimeout: PropTypes.number,
42+
modalTransitionEnterTimeout: PropTypes.number,
43+
modalTransitionLeaveTimeout: PropTypes.number,
3844
};
3945

4046
const defaultProps = {
@@ -231,9 +237,21 @@ class Modal extends React.Component {
231237
key="modal-dialog"
232238
onEnter={this.onEnter}
233239
onLeave={this.onExit}
234-
transitionAppearTimeout={modalTransitionTimeout}
235-
transitionEnterTimeout={modalTransitionTimeout}
236-
transitionLeaveTimeout={modalTransitionTimeout}
240+
transitionAppearTimeout={
241+
typeof this.props.modalTransitionAppearTimeout === 'number'
242+
? this.props.modalTransitionAppearTimeout
243+
: modalTransitionTimeout
244+
}
245+
transitionEnterTimeout={
246+
typeof this.props.modalTransitionEnterTimeout === 'number'
247+
? this.props.modalTransitionEnterTimeout
248+
: modalTransitionTimeout
249+
}
250+
transitionLeaveTimeout={
251+
typeof this.props.modalTransitionLeaveTimeout === 'number'
252+
? this.props.modalTransitionLeaveTimeout
253+
: modalTransitionTimeout
254+
}
237255
className={mapToCssModules(classNames('modal', modalClassName), cssModule)}
238256
{...modalAttributes}
239257
>
@@ -243,9 +261,21 @@ class Modal extends React.Component {
243261
{isOpen && backdrop && (
244262
<Fade
245263
key="modal-backdrop"
246-
transitionAppearTimeout={backdropTransitionTimeout}
247-
transitionEnterTimeout={backdropTransitionTimeout}
248-
transitionLeaveTimeout={backdropTransitionTimeout}
264+
transitionAppearTimeout={
265+
typeof this.props.backdropTransitionAppearTimeout === 'number'
266+
? this.props.backdropTransitionAppearTimeout
267+
: backdropTransitionTimeout
268+
}
269+
transitionEnterTimeout={
270+
typeof this.props.backdropTransitionEnterTimeout === 'number'
271+
? this.props.backdropTransitionEnterTimeout
272+
: backdropTransitionTimeout
273+
}
274+
transitionLeaveTimeout={
275+
typeof this.props.backdropTransitionLeaveTimeout === 'number'
276+
? this.props.backdropTransitionLeaveTimeout
277+
: backdropTransitionTimeout
278+
}
249279
className={mapToCssModules(classNames('modal-backdrop', backdropClassName), cssModule)}
250280
/>
251281
)}

0 commit comments

Comments
 (0)