mirror of
https://github.com/ant-design/ant-design.git
synced 2025-06-16 23:21:00 +08:00
153 lines
3.5 KiB
TypeScript
153 lines
3.5 KiB
TypeScript
import React from 'react';
|
|
import { Table, TableColumnsType, TableProps } from 'antd';
|
|
|
|
import SemanticPreview from '../../../.dumi/theme/common/SemanticPreview';
|
|
import useLocale from '../../../.dumi/hooks/useLocale';
|
|
|
|
const locales = {
|
|
cn: {
|
|
root: '根元素',
|
|
section: '容器元素',
|
|
'header.wrapper': '头部容器元素',
|
|
'header.row': '头部行元素',
|
|
'header.cell': '头部单元格元素',
|
|
title: '标题元素',
|
|
'body.wrapper': '主体容器元素',
|
|
'body.row': '主体行元素',
|
|
'body.cell': '主体单元格元素',
|
|
footer: '底部元素',
|
|
content: '内容元素',
|
|
'pagination.root': '分页根元素',
|
|
'pagination.item': '分页单项元素',
|
|
},
|
|
en: {
|
|
root: 'Root element',
|
|
section: 'Container element',
|
|
'header.wrapper': 'Header wrapper element',
|
|
'header.row': 'Header row element',
|
|
'header.cell': 'Header cell element',
|
|
title: 'Title element',
|
|
'body.wrapper': 'Body wrapper element',
|
|
'body.row': 'Body row element',
|
|
'body.cell': 'Body cell element',
|
|
footer: 'Footer element',
|
|
content: 'Content element',
|
|
'pagination.root': 'Pagination root element',
|
|
'pagination.item': 'Pagination item element',
|
|
},
|
|
};
|
|
|
|
interface DataType {
|
|
key: React.Key;
|
|
name: string;
|
|
age: number;
|
|
address: string;
|
|
}
|
|
|
|
const columns: TableColumnsType<DataType> = [
|
|
{
|
|
title: 'Personal Info',
|
|
children: [
|
|
{
|
|
title: 'Name',
|
|
dataIndex: 'name',
|
|
key: 'name',
|
|
},
|
|
{
|
|
title: 'Age',
|
|
dataIndex: 'age',
|
|
key: 'age',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
title: 'Address',
|
|
dataIndex: 'address',
|
|
},
|
|
];
|
|
|
|
const data: DataType[] = [
|
|
{
|
|
key: '1',
|
|
name: 'thinkasany',
|
|
age: 24,
|
|
address: 'New York No. 1 Lake Park',
|
|
},
|
|
{
|
|
key: '2',
|
|
name: 'Jim Green',
|
|
age: 42,
|
|
address: 'London No. 1 Lake Park',
|
|
},
|
|
{
|
|
key: '3',
|
|
name: 'Joe Black',
|
|
age: 32,
|
|
address: 'Sydney No. 1 Lake Park',
|
|
},
|
|
{
|
|
key: '4',
|
|
name: 'Joe Black',
|
|
age: 32,
|
|
address: 'Sydney No. 1 Lake Park',
|
|
},
|
|
{
|
|
key: '5',
|
|
name: 'Joe Black',
|
|
age: 32,
|
|
address: 'Sydney No. 1 Lake Park',
|
|
},
|
|
{
|
|
key: '6',
|
|
name: 'Joe Black',
|
|
age: 32,
|
|
address: 'Sydney No. 1 Lake Park',
|
|
},
|
|
];
|
|
|
|
const Block: React.FC<TableProps<DataType>> = (props) => {
|
|
return (
|
|
<Table<DataType>
|
|
bordered
|
|
style={{ width: '100%' }}
|
|
columns={columns}
|
|
dataSource={data}
|
|
size="middle"
|
|
pagination={{ pageSize: 3 }}
|
|
title={() => <>table title</>}
|
|
footer={() => <>table footer</>}
|
|
{...props}
|
|
/>
|
|
);
|
|
};
|
|
|
|
const App: React.FC = () => {
|
|
const [locale] = useLocale(locales);
|
|
|
|
return (
|
|
<>
|
|
<SemanticPreview
|
|
componentName="Table"
|
|
semantics={[
|
|
{ name: 'root', desc: locale.root },
|
|
{ name: 'title', desc: locale.title },
|
|
{ name: 'header.wrapper', desc: locale['header.wrapper'] },
|
|
{ name: 'header.row', desc: locale['header.row'] },
|
|
{ name: 'header.cell', desc: locale['header.cell'] },
|
|
{ name: 'section', desc: locale.section },
|
|
{ name: 'body.wrapper', desc: locale['body.wrapper'] },
|
|
{ name: 'body.row', desc: locale['body.row'] },
|
|
{ name: 'body.cell', desc: locale['body.cell'] },
|
|
{ name: 'footer', desc: locale.footer },
|
|
{ name: 'pagination.root', desc: locale['pagination.root'] },
|
|
{ name: 'pagination.item', desc: locale['pagination.item'] },
|
|
]}
|
|
>
|
|
<Block />
|
|
</SemanticPreview>
|
|
</>
|
|
);
|
|
};
|
|
|
|
export default App;
|