import React, { useState } from 'react'; import { Radio, Space, Table, Tag } from 'antd'; import type { TableProps } from 'antd'; type ColumnsType = TableProps['columns']; type TablePagination = NonNullable['pagination'], boolean>>; type TablePaginationPosition = NonNullable< TablePagination['position'] >[number]; interface DataType { key: string; name: string; age: number; address: string; tags: string[]; } const topOptions = [ { label: 'topLeft', value: 'topLeft' }, { label: 'topCenter', value: 'topCenter' }, { label: 'topRight', value: 'topRight' }, { label: 'none', value: 'none' }, ]; const bottomOptions = [ { label: 'bottomLeft', value: 'bottomLeft' }, { label: 'bottomCenter', value: 'bottomCenter' }, { label: 'bottomRight', value: 'bottomRight' }, { label: 'none', value: 'none' }, ]; const columns: ColumnsType = [ { title: 'Name', dataIndex: 'name', key: 'name', render: (text) => {text}, }, { title: 'Age', dataIndex: 'age', key: 'age', }, { title: 'Address', dataIndex: 'address', key: 'address', }, { title: 'Tags', key: 'tags', dataIndex: 'tags', render: (tags: string[]) => ( {tags.map((tag) => { let color = tag.length > 5 ? 'geekblue' : 'green'; if (tag === 'loser') { color = 'volcano'; } return ( {tag.toUpperCase()} ); })} ), }, { title: 'Action', key: 'action', render: (_, record) => ( Invite {record.name} Delete ), }, ]; const data: DataType[] = [ { key: '1', name: 'John Brown', age: 32, address: 'New York No. 1 Lake Park', tags: ['nice', 'developer'], }, { key: '2', name: 'Jim Green', age: 42, address: 'London No. 1 Lake Park', tags: ['loser'], }, { key: '3', name: 'Joe Black', age: 32, address: 'Sydney No. 1 Lake Park', tags: ['cool', 'teacher'], }, ]; const App: React.FC = () => { const [top, setTop] = useState>('topLeft'); const [bottom, setBottom] = useState>('bottomRight'); return (
{ setTop(e.target.value); }} />
{ setBottom(e.target.value); }} /> columns={columns} pagination={{ position: [top, bottom] }} dataSource={data} />
); }; export default App;