- import React,{Component} from 'react'
- import PropTypes from 'prop-types'
- import classnames from 'classnames'
- import {CSSTransitionGroup} from 'react-transition-group'
- import Logger from '../utils/logger'
-
- import '../style'
- import 'phoenix-styles/less/modules/animation.less'
-
- /**
- * 动画外层组件<br/>
- * - 使用时需要在子元素增加animated类名实现动画效果, animated定义的是过渡的duration和fill-mode, 默认300ms, 完全可以自定义。
- * - 可通过transitionName设置动画名称, 可选fade、slide-top、slide-bottom(还将补充), 默认fade。
- * - 可通过transitionEnterTimeout设置进入延迟时间。
- * - 可通过transitionLeaveTimeout设置离开延迟时间。
- *
- * 示例:
- * ```code
- * <Animate className='popup-content' transitionName='slide-top'>
- * {this.renderPopup()}
- * </Animate>
- * ```
- * ```code
- * renderPopup(){
- * let {visible,children,className} = this.props;
- * if(visible){
- * return <div {...this.props} className={'popup-main', 'animated', className)}>{children}</div>;
- * }else{
- * return '';
- * }
- * }
- * ```
- *
- * @class Animate
- * @module 辅助组件
- * @extends Component
- * @constructor
- * @since 1.0.0
- * @demo animate|animate.js {展示}
- * @show true
- * */
-
- export default class Animate extends Component{
-
- static propTypes = {
- /**
- * 动画名称,默认fade
- * @property transitionName
- * @type String
- * @default 'fade'
- * */
- transitionName: PropTypes.string,
- /**
- * 动画进入延迟时间
- * @property transitionEnterTimeout
- * @type Number
- * */
- transitionEnterTimeout: PropTypes.number,
- /**
- * 动画退出延迟时间
- * @property transitionLeaveTimeout
- * @type Number
- * */
- transitionLeaveTimeout: PropTypes.number
- };
-
- static defaultProps = {
- transitionName: 'fade',
- transitionEnterTimeout: 100,
- transitionLeaveTimeout: 300
- }
-
- constructor(props, context) {
- super(props, context);
- new Logger('Animate');
- }
-
- renderAnimate(){
- let {transitionName, transitionEnterTimeout, transitionLeaveTimeout, children} = this.props
-
- return (
- <CSSTransitionGroup {...this.props}
- transitionName={transitionName}
- transitionEnterTimeout={transitionEnterTimeout}
- transitionLeaveTimeout={transitionLeaveTimeout}
- >
- {children}
- </CSSTransitionGroup>
- )
- }
-
- render(){
- return this.renderAnimate()
- }
- }
-