styled.jsx 934 B

12345678910111213141516171819202122232425262728
  1. import React from 'react';
  2. import { StyledTransition } from '../../index';
  3. function QueueStyledTransition({ children, position = 'Left', state = 'enter', ...rest }) {
  4. const enterCls = `semi-fadeIn, semi-slideIn${position}`;
  5. const leaveCls = `semi-fadeOut, semi-slideOut${position}`;
  6. return React.Children.map(children, (child, idx) => (
  7. <StyledTransition
  8. enter={enterCls}
  9. leave={leaveCls}
  10. state={state}
  11. delay={idx * 50 + 'ms'}
  12. duration={state === 'enter' ? '.3s,.3s' : '.2s,.2s'}
  13. >
  14. {({ animateCls, animateStyle }) => React.cloneElement(child, {
  15. ...child.props,
  16. className: animateCls,
  17. style: {
  18. ...child.props.style,
  19. ...animateStyle,
  20. },
  21. })}
  22. </StyledTransition>
  23. ));
  24. }
  25. export default QueueStyledTransition;