import React, { useState, useMemo } from 'react';
import Tooltip from '../index';
import './story.scss';
import { Tag, Icon, IconButton, Switch, Checkbox, Radio, Button, Select, InputNumber } from '@douyinfe/semi-ui';
import InTableDemo from './InTable';
import EdgeDemo from './Edge';
import ScrollTooltip from './ScrollDemo';
import DangerousHtml from './DangerousHtml';
import ArrowPointAtCenter from './ArrowPointAtCenter';
import CustomContainer from './CustomContainer';
import ContainerPosition from './ContainerPosition';
import { IconList, IconSidebar, IconEdit } from '@douyinfe/semi-icons';
export default {
title: 'Tooltip',
parameters: {
chromatic: { disableSnapshot: true },
},
}
function test(visible) {
console.log('visible Change:' + visible);
}
const ScrollDemo = function ScrollDemo(props = {}) {
const tops = [
['topLeft', 'TL'],
['top', 'Top'],
['topRight', 'TR'],
];
const lefts = [
['leftTop', 'LT'],
['left', 'Left'],
['leftBottom', 'LB'],
];
const rights = [
['rightTop', 'RT'],
['right', 'Right'],
['rightBottom', 'RB'],
];
const bottoms = [
['bottomLeft', 'BL'],
['bottom', 'Bottom'],
['bottomRight', 'BR'],
];
const { tagStyle, ...restProps } = props;
return (
{tops.map((pos, index) => (
hi bytedance
hi bytedance
}
position={Array.isArray(pos) ? pos[0] : pos}
key={index}
trigger={'click'}
{...restProps}
>
{Array.isArray(pos) ? pos[1] : pos}
))}
{lefts.map((pos, index) => (
hi bytedance
hi bytedance
}
position={Array.isArray(pos) ? pos[0] : pos}
key={index}
trigger={'click'}
{...restProps}
>
{Array.isArray(pos) ? pos[1] : pos}
))}
{rights.map((pos, index) => (
hi bytedance
hi bytedance
}
position={Array.isArray(pos) ? pos[0] : pos}
key={index}
trigger={'click'}
{...restProps}
>
{Array.isArray(pos) ? pos[1] : pos}
))}
{bottoms.map((pos, index) => (
hi bytedance
hi bytedance
}
position={Array.isArray(pos) ? pos[0] : pos}
key={index}
trigger={'click'}
{...restProps}
>
{Array.isArray(pos) ? pos[1] : pos}
))}
);
};
export const TooltipOnVisibleChange = () => {
const [visible, setVisible] = useState();
return (
hi bytedance
hi bytedance
}
position="rightBottom"
onVisibleChange={test}
trigger="click"
>
demo
hi bytedance
hi bytedance
}
position="rightBottom"
onVisibleChange={setVisible}
trigger="click"
visible={visible}
>
demo
{/*
hi bytedance
hi bytedance
}
position="rightBottom"
onVisibleChange={test}
trigger="hover"
>
hover
hi bytedance
hi bytedance
}
mouseLeaveDelay={100}
position="rightBottom"
onVisibleChange={test}
trigger="hover"
>
hover with leave delay time
hi bytedance
hi bytedance
}
position="rightBottom"
onVisibleChange={test}
trigger="click"
>
click
*/}
);
};
TooltipOnVisibleChange.story = {
name: 'tooltip onVisibleChange',
};
export const GetPopupContainerDemo = () => (
hi bytedance
hi bytedance
}
position="bottom"
visible
trigger="custom"
getPopupContainer={() => document.querySelector('.content-layer')}
>
指定弹出层的容器
{/* */}
window}>
单选
);
GetPopupContainerDemo.story = {
name: 'tooltip指定弹出层的容器',
};
export const TooltipAll = () => (
);
TooltipAll.story = {
name: 'tooltip All',
};
export const NoContent = () => (
);
NoContent.story = {
name: 'no content',
};
export const AdjustPosition = () => (
<>
第一个滚动区域
hi bytedance
hi bytedance
}
position="rightBottom"
trigger="click"
>
{/* topleft */}
test
hi bytedance
hi bytedance
}
position="topRight"
trigger="click"
>
topRight
hi bytedance
hi bytedance
}
position="bottomLeft"
trigger="click"
>
bottomLeft
hi bytedance
hi bytedance
}
position="bottomRight"
trigger="click"
>
bottomRight
>
);
AdjustPosition.story = {
name: '自适应'
}
export const CompositeComponent = () => (
hi bytedance
hi bytedance
}
position="top"
>
} />
选择框
单选
);
CompositeComponent.story = {
name: '复合组件'
}
export const WrapDisabledElems = () => (
} />
} block />
);
WrapDisabledElems.story = {
name: 'wrap disabled elems',
};
export const InTable = () => (
);
InTable.story = {
name: 'in table',
};
export const _EdgeDemo = () => ;
_EdgeDemo.story = {
name: 'edge demo',
};
export const ScrollTooltipDemo = () => ;
ScrollTooltipDemo.story = {
name: 'scroll demo and set popup container'
}
export const DangerousHtmlDemo = () => ;
DangerousHtmlDemo.story = {
name: 'in dangerous html'
}
export const ArrowPointAtCenterDemo = () => ;
ArrowPointAtCenterDemo.story = {
name: 'arrow point at center'
}
export const CustomContainerDemo = () => ;
CustomContainerDemo.story = {
name: 'custom container'
}
export const ContainerPositionDemo = () => ;
ContainerPositionDemo.story = {
name: 'container observer'
}
export const QuickMoveMouse = () => {
/**
* mouseEnterDelay, mouseLeaveDelay 默认都为 50
* mouseEnterDelay, mouseLeaveDelay 都为 0,快速滑动可能出现两个 tooltip 出现
*/
const Demo = () => {
const props = {
mouseEnterDelay: 50,
mouseLeaveDelay: 0,
};
return (
aaaaaaaaaaa
bbbbbbbbbbb
ccccccccccc
aaaaaaaaaaa
bbbbbbbbbbb
ccccccccccc
aaaaaaaaaaa
bbbbbbbbbbb
ccccccccccc
);
};
return ;
};
QuickMoveMouse.story = {
name: '快速移动鼠标可见性'
}
export const MotionFalseFix1402 = () => {
function Demo() {
const Test = React.forwardRef((props, ref) => (
Test
));
return (
);
}
return ;
};
MotionFalseFix1402.story = {
name: 'motion=false fix #1402',
};
export const DisabledWrapperCls = () => (
<>
>
);
DisabledWrapperCls.story = {
name: 'disabledWrapperCls',
};
export const ShowArrow = () => {
function Demo() {
const Test = React.forwardRef((props, ref) => (
Test
));
return (
should show content and arrow when click
);
}
return ;
};
ShowArrow.story = {
name: 'showArrow',
};
export const OnClickOutSideDemo = () => {
let [v, setV] = useState(false);
let clickOutSide = () => {
console.log('clickOutSide');
setV(false);
}
return (
<>
clickOutSide()} content={'hi bytedance'} visible={v} trigger='custom'>
console.log('clickOutSide')} content={'hi bytedance'} trigger='click'>
>
);
}
OnClickOutSideDemo.story = {
name: 'OnClickOutSide',
};
export const AutoAdjustWithSpacing = () => {
const [height, setHeight] = useState(84);
const [key, setKey] = useState(1);
const initSpacing = 8;
const [spacing, setSpacing] = useState(initSpacing);
const change = (height, hasSpace) => {
setHeight(height);
hasSpace ? setSpacing(initSpacing) : setSpacing(0);
setKey(Math.random());
};
return (
hi bytedance, + padding 20
hi bytedance
}
position="top"
trigger="custom"
visible={true}
>
demo
change(height, hasSpace)} checked={spacing === initSpacing ? true : false}>
change(Number(height))} value={height} style={{ width: 200 }} />
)
};
AutoAdjustWithSpacing.story = {
name: 'AutoAdjustWithSpacing',
};