TooltipStyledTransition.tsx 1.2 KB

123456789101112131415161718192021222324252627282930
  1. /* eslint-disable max-len */
  2. /* eslint-disable @typescript-eslint/no-shadow */
  3. import { StyledTransition } from '@douyinfe/semi-animation-react';
  4. import React from 'react';
  5. import { cssClasses } from '@douyinfe/semi-foundation/tooltip/constants';
  6. import getMotionObjFromProps from '@douyinfe/semi-foundation/utils/getMotionObjFromProps';
  7. import { Motion } from '../_base/base';
  8. const enterCls = `${cssClasses.PREFIX}-bounceIn`;
  9. const leaveCls = `${cssClasses.PREFIX}-zoomOut`;
  10. export interface TooltipTransitionProps {
  11. [key: string]: any;
  12. children?: (arg: any) => React.ReactNode;
  13. motion?: Motion<TooltipTransitionProps>;
  14. }
  15. const TooltipTransition: React.FC<TooltipTransitionProps> = (props = {}) => {
  16. const { children } = props;
  17. const motion = getMotionObjFromProps(props);
  18. return (
  19. <StyledTransition {...props} enter={enterCls} leave={leaveCls} duration={'100ms'} {...motion}>
  20. {typeof children === 'function' ?
  21. ({ animateCls, animateEvents, animateStyle }: any) => children({ animateCls, animateEvents, animateStyle }) :
  22. children}
  23. </StyledTransition>
  24. );
  25. };
  26. export default TooltipTransition;