12345678910111213141516171819202122232425262728293031 |
- /* eslint-disable max-len */
- /* eslint-disable @typescript-eslint/no-shadow */
- import { StyledTransition } from '@douyinfe/semi-animation-react';
- import React from 'react';
- import { cssClasses } from '@douyinfe/semi-foundation/tooltip/constants';
- import getMotionObjFromProps from '@douyinfe/semi-foundation/utils/getMotionObjFromProps';
- import { Motion } from '../_base/base';
- const enterCls = `${cssClasses.PREFIX}-bounceIn`;
- const leaveCls = `${cssClasses.PREFIX}-zoomOut`;
- export interface TooltipTransitionProps {
- [key: string]: any;
- children?: (arg: any) => React.ReactNode;
- motion?: Motion<TooltipTransitionProps>;
- }
- const TooltipTransition: React.FC<TooltipTransitionProps> = (props = {}) => {
- const { children } = props;
- const motion = getMotionObjFromProps(props);
- // add fillMode forwards to fix issue 715, tooltip close will flashing under react 18
- return (
- <StyledTransition {...props} enter={enterCls} leave={leaveCls} duration={'100ms'} {...motion} fillMode='forwards'>
- {typeof children === 'function' ?
- ({ animateCls, animateEvents, animateStyle }: any) => children({ animateCls, animateEvents, animateStyle }) :
- children}
- </StyledTransition>
- );
- };
- export default TooltipTransition;
|