|
|
@@ -24,6 +24,7 @@ import ArrowPointAtCenter from './ArrowPointAtCenter';
|
|
|
import CustomContainer from './CustomContainer';
|
|
|
import ContainerPosition from './ContainerPosition';
|
|
|
import { IconList, IconSidebar, IconEdit } from '@douyinfe/semi-icons';
|
|
|
+import TooltipTransition from '../TooltipStyledTransition';
|
|
|
|
|
|
export default {
|
|
|
title: 'Tooltip',
|
|
|
@@ -1007,3 +1008,92 @@ export const autoFocusContentDemo = () => {
|
|
|
</div>
|
|
|
);
|
|
|
};
|
|
|
+
|
|
|
+
|
|
|
+export const FlashWithReact18 = () => {
|
|
|
+ const [visible, setV] = useState(false);
|
|
|
+
|
|
|
+ const change = () => {
|
|
|
+ setV(false);
|
|
|
+ }
|
|
|
+
|
|
|
+ return (<>
|
|
|
+ <Tooltip content='test work with react 18' position='bottom' trigger='custom' visible={visible}>
|
|
|
+ <Button style={{ marginLeft: 10 }} onClick={() => setV(true)}>show, semi with react 18 motion=true, abnormal</Button>
|
|
|
+ </Tooltip>
|
|
|
+ <Button style={{ marginLeft: 10 }} onClick={() => change()}>hide</Button>
|
|
|
+
|
|
|
+ </>);
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+export const Transition = () => {
|
|
|
+
|
|
|
+ const [transitionState, setT] = useState('');
|
|
|
+
|
|
|
+ const [insert, setInsert] = useState(false);
|
|
|
+
|
|
|
+ const handleLeave = () => {
|
|
|
+ console.log('set insert false')
|
|
|
+ setInsert(false);
|
|
|
+ }
|
|
|
+
|
|
|
+ const CommonDOM = () => {
|
|
|
+ const enterCls = `semi-tooltip-bounceIn`;
|
|
|
+ const leaveCls = `semi-tooltip-zoomOut`;
|
|
|
+ const animateStyle = {
|
|
|
+ animationDirection: 'normal',
|
|
|
+ animationName: transitionState === 'enter' ? enterCls : leaveCls,
|
|
|
+ animationDuration: '1000ms',
|
|
|
+ }
|
|
|
+
|
|
|
+ const handleEnd = () => {
|
|
|
+ if (transitionState === 'enter') {
|
|
|
+ console.log('animation end of show');
|
|
|
+ } else if (transitionState === 'leave') {
|
|
|
+ console.log('animation end of hide');
|
|
|
+ handleLeave();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return <div style={{ ...animateStyle }} onAnimationEnd={handleEnd}>test</div>
|
|
|
+ };
|
|
|
+
|
|
|
+ const toggleShow = (insert) => {
|
|
|
+ if (!transitionState) {
|
|
|
+ setT('enter');
|
|
|
+ setInsert(insert);
|
|
|
+ } else if (transitionState === 'enter') {
|
|
|
+ setT('leave');
|
|
|
+ } else if (transitionState === 'leave') {
|
|
|
+ setT('enter');
|
|
|
+ setInsert(insert);
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ return (
|
|
|
+ <>
|
|
|
+ <div style={{ width: 200, height: 90, border: '1px solid var(--semi-color-text-1)' }}>
|
|
|
+ {
|
|
|
+ insert ? (
|
|
|
+ <CommonDOM></CommonDOM>
|
|
|
+ ): null
|
|
|
+ }
|
|
|
+ </div>
|
|
|
+ <Button onClick={() => toggleShow(true)}>show</Button>
|
|
|
+ <Button onClick={() => toggleShow(false)}>hide</Button>
|
|
|
+ </>
|
|
|
+ )
|
|
|
+}
|
|
|
+
|
|
|
+export const TransitionDemo = () => {
|
|
|
+ const [key, setKey] = useState(1);
|
|
|
+ return (
|
|
|
+ <>
|
|
|
+ <Transition key={key} />
|
|
|
+ <Button onClick={() => setKey(Math.random())}>reset Demo</Button>
|
|
|
+ </>
|
|
|
+ )
|
|
|
+}
|