import React from 'react'; import { storiesOf } from '@storybook/react'; import classNames from 'classnames'; import { optionRenderProps, RenderMultipleSelectedItemFn, RenderSingleSelectedItemFn } from '@douyinfe/semi-ui/select/index'; import { Checkbox } from '../../index'; import { Select, Avatar, Tag, Space } from '../../index'; const stories = storiesOf('Select', module); let optionList = [ { value: 'tony', label: 'Ironman' }, { value: 'Thor', label: 'Thor' }, { value: 'steve', label: 'Caption' }, { value: 'peter', label: 'SpiderBoy' }, ]; stories.add('Select', () => ( <> )); const RenderOptionDemo = () => { const renderOptionItem = (renderProps: optionRenderProps) => { const { disabled, selected, label, value, focused, className, style, onMouseEnter, onClick, ...rest } = renderProps; const optionCls = classNames({ ['custom-option-render']: true, ['custom-option-render-focused']: focused, ['custom-option-render-disabled']: disabled, ['custom-option-render-selected']: selected, }); // Notice: // 1.props传入的style需在wrapper dom上进行消费,否则在虚拟化场景下会无法正常使用 // 2.选中(selected)、聚焦(focused)、禁用(disabled)等状态的样式需自行加上,你可以从props中获取到相对的boolean值 // 3.onMouseEnter需在wrapper dom上绑定,否则上下键盘操作时显示会有问题 return (
onClick(e)} onMouseEnter={e => onMouseEnter(e)}>
{label}
); }; return ( {list.map(item => renderCustomOption(item))} ); } stories.add('自定义已选标签渲染', () => ( <>
renderSelectedItem
));