UNPKG

react-biz

Version:

React components for Business

74 lines (64 loc) 1.88 kB
import React, {Component, PropTypes} from 'react'; import ReactTransitionGroup from 'react-addons-transition-group'; import ExpandTransitionChild from './ExpandTransitionChild'; class ExpandTransition extends Component { static propTypes = { children: PropTypes.node, enterDelay: PropTypes.number, loading: PropTypes.bool, open: PropTypes.bool, style: PropTypes.object, transitionDelay: PropTypes.number, transitionDuration: PropTypes.number }; static defaultProps = { enterDelay: 0, transitionDelay: 0, transitionDuration: 450, loading: false, open: false }; renderChildren (children) { const {enterDelay, transitionDelay, transitionDuration} = this.props; return React.Children.map(children, (child) => { return ( <ExpandTransitionChild enterDelay={enterDelay} transitionDelay={transitionDelay} transitionDuration={transitionDuration} key={child.key} > {child} </ExpandTransitionChild> ); }, this); } render () { const { children, enterDelay, // eslint-disable-line no-unused-vars loading, open, style, transitionDelay, // eslint-disable-line no-unused-vars transitionDuration, // eslint-disable-line no-unused-vars ...other } = this.props; const mergedRootStyles = Object.assign({}, { position: 'relative', overflow: 'hidden', height: '100%' }, style); const newChildren = loading ? [] : this.renderChildren(children); return ( <ReactTransitionGroup style={mergedRootStyles} component="div" {...other} > {open && newChildren} </ReactTransitionGroup> ); } } export default ExpandTransition;