@fvc/table 1.1.1 → 1.1.2-next-ec65dfb844e6183b3d7f417eee613cfe5ecfd997
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +169 -0
- package/package.json +12 -1
package/README.md
ADDED
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
# @fvc/table
|
|
2
|
+
|
|
3
|
+
`@fvc/table` provides a data table component built on top of Ant Design's `Table`. It applies the FE-VIS class prefix and exposes the full Ant Design `Table` API so existing `antd` table knowledge transfers directly.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
bun add @fvc/table
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Peer Dependencies
|
|
12
|
+
|
|
13
|
+
The package expects these dependencies to be available in the consuming application:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
bun add react antd
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Import
|
|
20
|
+
|
|
21
|
+
```tsx
|
|
22
|
+
import { Table } from '@fvc/table';
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Quick Start
|
|
26
|
+
|
|
27
|
+
```tsx
|
|
28
|
+
import { Table } from '@fvc/table';
|
|
29
|
+
|
|
30
|
+
const columns = [
|
|
31
|
+
{ title: 'Name', dataIndex: 'name', key: 'name' },
|
|
32
|
+
{ title: 'Age', dataIndex: 'age', key: 'age' },
|
|
33
|
+
];
|
|
34
|
+
|
|
35
|
+
const data = [
|
|
36
|
+
{ key: '1', name: 'Alice', age: 30 },
|
|
37
|
+
{ key: '2', name: 'Bob', age: 25 },
|
|
38
|
+
];
|
|
39
|
+
|
|
40
|
+
export function UserTable() {
|
|
41
|
+
return <Table columns={columns} dataSource={data} />;
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Common Usage
|
|
46
|
+
|
|
47
|
+
### Sortable Columns
|
|
48
|
+
|
|
49
|
+
```tsx
|
|
50
|
+
const columns = [
|
|
51
|
+
{
|
|
52
|
+
title: 'Name',
|
|
53
|
+
dataIndex: 'name',
|
|
54
|
+
sorter: (a, b) => a.name.localeCompare(b.name),
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
title: 'Age',
|
|
58
|
+
dataIndex: 'age',
|
|
59
|
+
sorter: (a, b) => a.age - b.age,
|
|
60
|
+
},
|
|
61
|
+
];
|
|
62
|
+
|
|
63
|
+
<Table columns={columns} dataSource={data} />;
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Pagination
|
|
67
|
+
|
|
68
|
+
```tsx
|
|
69
|
+
<Table
|
|
70
|
+
columns={columns}
|
|
71
|
+
dataSource={data}
|
|
72
|
+
pagination={{ pageSize: 10, total: 100, current: page, onChange: setPage }}
|
|
73
|
+
/>
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Row Selection
|
|
77
|
+
|
|
78
|
+
```tsx
|
|
79
|
+
const [selectedRowKeys, setSelectedRowKeys] = useState([]);
|
|
80
|
+
|
|
81
|
+
<Table
|
|
82
|
+
columns={columns}
|
|
83
|
+
dataSource={data}
|
|
84
|
+
rowSelection={{
|
|
85
|
+
selectedRowKeys,
|
|
86
|
+
onChange: setSelectedRowKeys,
|
|
87
|
+
}}
|
|
88
|
+
/>;
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Loading State
|
|
92
|
+
|
|
93
|
+
```tsx
|
|
94
|
+
<Table columns={columns} dataSource={data} loading={isFetching} />
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Horizontal Scroll
|
|
98
|
+
|
|
99
|
+
```tsx
|
|
100
|
+
<Table columns={columns} dataSource={data} scroll={{ x: 1200 }} />
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Props
|
|
104
|
+
|
|
105
|
+
Extends all [Ant Design `TableProps`](https://ant-design.antgroup.com/components/table#api).
|
|
106
|
+
|
|
107
|
+
| Prop | Type | Description |
|
|
108
|
+
| -------------- | -------------------- | ---------------------------------------------------- |
|
|
109
|
+
| `columns` | `ColumnsType` | Column definitions (title, dataIndex, render, etc.). |
|
|
110
|
+
| `dataSource` | `object[]` | Array of row data records. |
|
|
111
|
+
| `rowKey` | `string \| function` | Unique key for each row (defaults to `'key'`). |
|
|
112
|
+
| `loading` | `boolean` | Shows a loading indicator over the table. |
|
|
113
|
+
| `pagination` | `object \| false` | Pagination config; `false` to disable. |
|
|
114
|
+
| `rowSelection` | `object` | Checkbox selection config. |
|
|
115
|
+
| `onChange` | `function` | Callback when pagination, filters, or sorter change. |
|
|
116
|
+
| `scroll` | `object` | Enables horizontal or vertical scrolling. |
|
|
117
|
+
|
|
118
|
+
## TypeScript
|
|
119
|
+
|
|
120
|
+
The package ships with type definitions. No `@types/` install needed.
|
|
121
|
+
|
|
122
|
+
```ts
|
|
123
|
+
import type { TableProps } from '@fvc/table/types';
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## Consumer Example
|
|
127
|
+
|
|
128
|
+
```tsx
|
|
129
|
+
import { Table } from '@fvc/table';
|
|
130
|
+
import { useState } from 'react';
|
|
131
|
+
|
|
132
|
+
export function OrdersTable({ orders, loading }) {
|
|
133
|
+
const [page, setPage] = useState(1);
|
|
134
|
+
|
|
135
|
+
const columns = [
|
|
136
|
+
{ title: 'Order ID', dataIndex: 'id', key: 'id' },
|
|
137
|
+
{ title: 'Customer', dataIndex: 'customer', key: 'customer' },
|
|
138
|
+
{
|
|
139
|
+
title: 'Status',
|
|
140
|
+
dataIndex: 'status',
|
|
141
|
+
key: 'status',
|
|
142
|
+
filters: [
|
|
143
|
+
{ text: 'Pending', value: 'pending' },
|
|
144
|
+
{ text: 'Shipped', value: 'shipped' },
|
|
145
|
+
],
|
|
146
|
+
onFilter: (value, record) => record.status === value,
|
|
147
|
+
},
|
|
148
|
+
];
|
|
149
|
+
|
|
150
|
+
return (
|
|
151
|
+
<Table
|
|
152
|
+
columns={columns}
|
|
153
|
+
dataSource={orders}
|
|
154
|
+
loading={loading}
|
|
155
|
+
rowKey="id"
|
|
156
|
+
pagination={{ current: page, pageSize: 20, onChange: setPage }}
|
|
157
|
+
/>
|
|
158
|
+
);
|
|
159
|
+
}
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## Development
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
bun run lint
|
|
166
|
+
bun run type-check
|
|
167
|
+
bun run test
|
|
168
|
+
bun run build
|
|
169
|
+
```
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fvc/table",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.2-next-ec65dfb844e6183b3d7f417eee613cfe5ecfd997",
|
|
4
4
|
"main": "./dist/lib/index.js",
|
|
5
5
|
"types": "./dist/lib/table/src/index.d.ts",
|
|
6
6
|
"files": [
|
|
@@ -26,6 +26,17 @@
|
|
|
26
26
|
"type-check": "tsc --noEmit",
|
|
27
27
|
"test": "bun test --preload ../../tests/happydom.ts --preload ../../tests/testing-library.tsx"
|
|
28
28
|
},
|
|
29
|
+
"keywords": [
|
|
30
|
+
"react",
|
|
31
|
+
"react-component",
|
|
32
|
+
"fvc",
|
|
33
|
+
"fe-vis-core",
|
|
34
|
+
"ui",
|
|
35
|
+
"table",
|
|
36
|
+
"data-table",
|
|
37
|
+
"design-system",
|
|
38
|
+
"antd"
|
|
39
|
+
],
|
|
29
40
|
"peerDependencies": {
|
|
30
41
|
"react": "^18.0.0",
|
|
31
42
|
"antd": "^5.0.0"
|