| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 | /* eslint-disable max-lines-per-function */import React, { useState } from 'react';import { Table, Dropdown, Tooltip, Tag, Popover } from '@douyinfe/semi-ui/';import { IconCaretdown, IconUser } from '@douyinfe/semi-icons';const CREATOR_MAP = {    ALL: {        value: 0,        desc: '创建者',    },    MINE: {        value: 1,        desc: '只看我的',    },};function InTableDemo({}) {    const [currentCreator, setCurrentCreator] = useState({});    const setCreator = type => {        if (type) {            setCurrentCreator(CREATOR_MAP[type] || {});        }    };    const onDropdownVisibleChange = (...args) => console.log('Dropdown onVisibleChange: ', ...args);    const onPopoverVisibleChange = (...args) => console.log('Popover onVisibleChange: ', ...args);    const columns = [        {            title: 'Name',            dataIndex: 'name',            width: 150,        },        {            title: 'Age',            dataIndex: 'age',            width: 150,        },        {            title: 'Address',            dataIndex: 'address',        },        {            title: (                <Dropdown                    position={'bottomLeft'}                    trigger="click"                    onVisibleChange={onDropdownVisibleChange}                    render={(                        <Dropdown.Menu>                            <Dropdown.Item onClick={() => setCreator('ALL')}>创建者</Dropdown.Item>                            <Dropdown.Item onClick={() => setCreator('MINE')}>只看我的</Dropdown.Item>                        </Dropdown.Menu>                    )}                >                    <span>{'点击trigger'}</span>                    <IconCaretdown />                </Dropdown>            ),            key: 'creator',            render: () => (                <div>                    <Dropdown                        position={'bottomLeft'}                        trigger="click"                        onVisibleChange={onDropdownVisibleChange}                        render={(                            <Dropdown.Menu>                                <Dropdown.Item onClick={() => setCreator('ALL')}>创建者</Dropdown.Item>                                <Dropdown.Item onClick={() => setCreator('MINE')}>只看我的</Dropdown.Item>                            </Dropdown.Menu>                        )}                    >                        <span>                            <span>{currentCreator.desc}</span>                            <IconCaretdown />                        </span>                    </Dropdown>                    <span                        style={{                            marginLeft: 10,                        }}                    >                        <Popover                            trigger="click"                            onVisibleChange={onPopoverVisibleChange}                            content={(                                <article                                    style={{                                        padding: 20,                                    }}                                >                                    123                                </article>                            )}                        >                            <IconUser />                        </Popover>                    </span>                </div>            ),            width: 168,        },        {            title: (                <Dropdown                    position={'bottomLeft'}                    trigger="hover"                    onVisibleChange={onDropdownVisibleChange}                    render={(                        <Dropdown.Menu>                            <Dropdown.Item onClick={() => setCreator('ALL')}>创建者</Dropdown.Item>                            <Dropdown.Item onClick={() => setCreator('MINE')}>只看我的</Dropdown.Item>                        </Dropdown.Menu>                    )}                >                    <span>{'hover trigger'}</span>                    <IconCaretdown />                </Dropdown>            ),            key: 'hover-creator',            render: () => (                <div>                    <Dropdown                        position={'bottomLeft'}                        trigger="hover"                        onVisibleChange={onDropdownVisibleChange}                        render={(                            <Dropdown.Menu>                                <Dropdown.Item onClick={() => setCreator('ALL')}>创建者</Dropdown.Item>                                <Dropdown.Item onClick={() => setCreator('MINE')}>只看我的</Dropdown.Item>                            </Dropdown.Menu>                        )}                    >                        <span>                            <span>{currentCreator.desc}</span>                            <IconCaretdown />                        </span>                    </Dropdown>                    <span                        style={{                            marginLeft: 10,                        }}                    >                        <Popover                            trigger="hover"                            onVisibleChange={onPopoverVisibleChange}                            content={(                                <article                                    style={{                                        padding: 20,                                    }}                                >                                    123                                </article>                            )}                        >                            <IconUser />                        </Popover>                    </span>                </div>            ),            width: 168,        },        {            render: (text, record) => (                <Tooltip content={record.description}>                    <Tag color="green">Show Info</Tag>                </Tooltip>            ),            width: 150,        },    ];    const dataTotalSize = 43;    const data = [];    for (let i = 0; i < dataTotalSize; i++) {        let age = 40 + i;        let name = `Edward King ${i}`;        data.push({            key: `${i}`,            name,            age,            address: `London, Park Lane no. ${i} Lake Park`,            description: `My name is ${name}, I am ${age} years old, living in New York No. ${i + 1} Lake Park.`,        });    }    return <Table columns={columns} dataSource={data} />;}export default InTableDemo;
 |