@are-visual/virtual-table 0.6.0 → 0.8.0
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 +163 -0
- package/index.d.ts +144 -85
- package/index.esm.js +623 -274
- package/index.esm.js.map +1 -1
- package/middleware/column-resize/index.d.ts +2 -1
- package/middleware/empty/index.d.ts +2 -1
- package/middleware/expandable/index.d.ts +6 -2
- package/middleware/expandable/index.js +8 -8
- package/middleware/expandable/index.js.map +1 -1
- package/middleware/horizontal-scroll-bar/index.d.ts +2 -1
- package/middleware/loading/index.js +21 -8
- package/middleware/loading/index.js.map +1 -1
- package/middleware/selection/index.d.ts +3 -2
- package/middleware/summary/index.d.ts +18 -5
- package/middleware/summary/index.js +30 -6
- package/middleware/summary/index.js.map +1 -1
- package/middleware/summary/styles.css +2 -2
- package/middleware/summary/styles.scss +4 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -137,6 +137,168 @@ function App() {
|
|
|
137
137
|
|
|
138
138
|
> 关于 `getOffsetTop` 的默认实现是否会造成额外重排/性能影响,还有待验证。若你实在担心,可以设置 getOffsetTop 以覆盖默认实现。
|
|
139
139
|
|
|
140
|
+
#### useTableInstance
|
|
141
|
+
|
|
142
|
+
一个提供编程式操作 VirtualTable 的 hook。
|
|
143
|
+
|
|
144
|
+
> 版本要求:>=v0.8.0
|
|
145
|
+
|
|
146
|
+
##### scrollToRow 滚动到指定行
|
|
147
|
+
|
|
148
|
+
```tsx
|
|
149
|
+
const instance = useTableInstance()
|
|
150
|
+
|
|
151
|
+
const onScroll = () => {
|
|
152
|
+
// 通过索引值,滚动到第 10 行
|
|
153
|
+
instance.scrollToRow(10)
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
<VirtualTable instance={instance} />
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
> 注意:由于是虚拟列表,行高是不确定的,若 `estimatedRowHeight` 不准确,scrollToRow 则无法准确滚动到对应的行。
|
|
160
|
+
|
|
161
|
+
##### scrollToColumn 滚动到指定列
|
|
162
|
+
|
|
163
|
+
```tsx
|
|
164
|
+
const instance = useTableInstance()
|
|
165
|
+
|
|
166
|
+
const onScroll = () => {
|
|
167
|
+
// 通过 key,滚动到指定列
|
|
168
|
+
instance.scrollToColumn('columnKey')
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
<VirtualTable instance={instance} />
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
> 注意:由于是虚拟列表,列宽是不确定的,若 `estimatedColumnWidth` 不准确,scrollToColumn 则无法准确滚动到对应的列。
|
|
175
|
+
|
|
176
|
+
##### scrollTo 手动滚动
|
|
177
|
+
|
|
178
|
+
```tsx
|
|
179
|
+
const instance = useTableInstance()
|
|
180
|
+
|
|
181
|
+
const onScroll = () => {
|
|
182
|
+
// 使用像素值进行滚动,背后其实是对原生 DOM 节点的 scrollTo 进行的封装
|
|
183
|
+
instance.scrollTo({ top: 0, left: 0 })
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
<VirtualTable instance={instance} />
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
##### getScrollValueByRowIndex
|
|
190
|
+
|
|
191
|
+
```tsx
|
|
192
|
+
const instance = useTableInstance()
|
|
193
|
+
|
|
194
|
+
const onScroll = () => {
|
|
195
|
+
// 通过索引值,滚动到第 10 行所对应的数值
|
|
196
|
+
console.log(instance.getScrollValueByRowIndex(10))
|
|
197
|
+
}
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
##### getScrollValueByColumnKey
|
|
201
|
+
|
|
202
|
+
```tsx
|
|
203
|
+
const instance = useTableInstance()
|
|
204
|
+
|
|
205
|
+
const onScroll = () => {
|
|
206
|
+
// 通过 key,获取滚动到指定列所对应的数值
|
|
207
|
+
console.log(instance.getScrollValueByColumnKey('columnKey'))
|
|
208
|
+
}
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
##### getDOM
|
|
212
|
+
|
|
213
|
+
有些时候,你不得不获取 DOM 节点来进行一些操作。
|
|
214
|
+
|
|
215
|
+
```tsx
|
|
216
|
+
const instance = useTableInstance()
|
|
217
|
+
|
|
218
|
+
const doSomething = () => {
|
|
219
|
+
const { root, headerWrapper, bodyWrapper, bodyRoot, body } = instance.getDOM()
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
<VirtualTable instance={instance} />
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
##### getCurrentProps
|
|
226
|
+
|
|
227
|
+
有些时候,你可能不太方便获取到传递给 VirtualTable 的 props,那么你可以通过 `instance.getCurrentProps` 获取。
|
|
228
|
+
|
|
229
|
+
```tsx
|
|
230
|
+
const instance = useTableInstance()
|
|
231
|
+
|
|
232
|
+
const doSomething = () => {
|
|
233
|
+
console.log(instance.getCurrentProps().stickyHeader)
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
<VirtualTable stickyHeader={120} instance={instance} />
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
##### getRowVirtualizeState 获取行虚拟化用到的数据
|
|
240
|
+
|
|
241
|
+
```tsx
|
|
242
|
+
const { startIndex, endIndex, overscan, estimateSize } = instance.getRowVirtualizeState()
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
##### getRowHeightMap 获取所有的行高信息
|
|
246
|
+
|
|
247
|
+
```ts
|
|
248
|
+
const heightMap = instance.getRowHeightMap()
|
|
249
|
+
|
|
250
|
+
heightMap.get(rowKey)
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
##### getColumnByKey 通过 columnKey 获取 column 定义
|
|
254
|
+
|
|
255
|
+
```ts
|
|
256
|
+
const column = instance.getColumnByKey(columnKey)
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
##### getColumnByIndex 通过索引获取 column 定义
|
|
260
|
+
|
|
261
|
+
```ts
|
|
262
|
+
const column = instance.getColumnByIndex(index)
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
##### getColumnKeyByIndex 通过索引获取 columnKey
|
|
266
|
+
|
|
267
|
+
```ts
|
|
268
|
+
const columnKey = instance.getColumnKeyByIndex(index)
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
##### getColumnWidths 获取所有的列宽
|
|
272
|
+
|
|
273
|
+
所有的列宽通过 columnKey 进行记录(无序)。
|
|
274
|
+
|
|
275
|
+
```ts
|
|
276
|
+
const widths = instance.getColumnWidths()
|
|
277
|
+
widths.get(columnKey)
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
##### getColumnWidthByKey 通过 columnKey 获取列宽
|
|
281
|
+
|
|
282
|
+
```ts
|
|
283
|
+
const width = instance.getColumnWidthByKey(columnKey)
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
##### getColumns 获取 middleware 处理过的 columns
|
|
287
|
+
|
|
288
|
+
```ts
|
|
289
|
+
const pipelineColumns = instance.getColumns()
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
##### getDataSource 获取 middleware 处理过的 dataSource
|
|
293
|
+
|
|
294
|
+
```ts
|
|
295
|
+
const pipelineDataSource = instance.getDataSource()
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
通过以上的函数,你可以很方便的获取一些 VirtualTable 内部的数据,但是这些函数不能在 render 阶段中直接调用,否则会抛出 `has not been implemented yet` 错误。因为这些函数都在 VirtualTable 内部渲染阶段初始化,它们初始化完成后便能使用。建议在事件处理函数中调用。
|
|
299
|
+
|
|
300
|
+
你也许会发现有些函数能够在渲染阶段直接使用,但是并不能保证在未来的版本中均是如此。
|
|
301
|
+
|
|
140
302
|
#### 插件
|
|
141
303
|
|
|
142
304
|
`@are-visual/virtual-table` 提供一个 `useTablePipeline` hook 用于组合各种插件,为 Table 增加各式各样的功能。
|
|
@@ -251,6 +413,7 @@ const mergedPipeline = useTablePipeline({
|
|
|
251
413
|
| bodyRef | tbody 元素 | RefObject\<HTMLTableSectionElement\> | |
|
|
252
414
|
| getScroller | 获取滚动容器 | () => ScrollElement \| undefined | |
|
|
253
415
|
| getOffsetTop | 计算顶部偏移量 | () => number | |
|
|
416
|
+
| instance | 与 useTableInstance 一致 | TableInstance | >=0.8.0 |
|
|
254
417
|
|
|
255
418
|
##### 插件返回值定义
|
|
256
419
|
|
package/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
|
-
import { DetailedHTMLProps, HTMLAttributes, Key,
|
|
2
|
+
import { DetailedHTMLProps, HTMLAttributes, Key, ReactElement, CSSProperties, Ref, RefAttributes, ReactNode, TdHTMLAttributes, RefObject } from 'react';
|
|
3
3
|
|
|
4
4
|
type ScrollElement = HTMLElement | Window;
|
|
5
5
|
declare function getScrollParent(el: Element, root?: ScrollElement | null | undefined): ScrollElement;
|
|
@@ -10,6 +10,92 @@ declare function getScrollElement(el: unknown): Element;
|
|
|
10
10
|
declare function getScrollTop(node: ScrollElement): number;
|
|
11
11
|
declare function getRelativeOffsetTop(el: HTMLElement, ancestor: HTMLElement): number;
|
|
12
12
|
|
|
13
|
+
type NativeProps$1 = DetailedHTMLProps<HTMLAttributes<HTMLTableRowElement>, HTMLTableRowElement>;
|
|
14
|
+
interface OnRefCallbackArgs<T> {
|
|
15
|
+
node: HTMLTableRowElement | null;
|
|
16
|
+
rowKey: Key;
|
|
17
|
+
rowIndex: number;
|
|
18
|
+
rowData: T;
|
|
19
|
+
}
|
|
20
|
+
interface RowProps<T> extends Omit<NativeProps$1, 'children'> {
|
|
21
|
+
rowIndex: number;
|
|
22
|
+
rowKey: Key;
|
|
23
|
+
rowData: T;
|
|
24
|
+
columns: InnerColumnDescriptor<T>;
|
|
25
|
+
onRow?: OnRowType<T>;
|
|
26
|
+
renderRow?: MiddlewareRenderRow;
|
|
27
|
+
renderCell?: MiddlewareRenderCell;
|
|
28
|
+
onRefCallback?: (args: OnRefCallbackArgs<T>) => void;
|
|
29
|
+
}
|
|
30
|
+
declare const _default$3: <T>(props: RowProps<T>) => ReactElement;
|
|
31
|
+
|
|
32
|
+
interface TableBodyProps<T> extends Omit<NecessaryProps<T>, 'columns'>, Pick<RowProps<T>, 'onRow' | 'renderRow' | 'renderCell'> {
|
|
33
|
+
className?: string;
|
|
34
|
+
style?: CSSProperties;
|
|
35
|
+
columns: InnerColumnDescriptor<T>;
|
|
36
|
+
bodyWrapperRef?: Ref<HTMLDivElement>;
|
|
37
|
+
bodyRootRef?: Ref<HTMLTableElement>;
|
|
38
|
+
bodyRef?: Ref<HTMLTableSectionElement>;
|
|
39
|
+
instance: TableInstance;
|
|
40
|
+
overscan: number;
|
|
41
|
+
estimateSize: number;
|
|
42
|
+
getOffsetTop: () => number;
|
|
43
|
+
getScroller: () => ScrollElement | undefined;
|
|
44
|
+
rowClassName?: (record: T, index: number) => string;
|
|
45
|
+
renderBodyWrapper?: MiddlewareRenderBodyWrapper;
|
|
46
|
+
renderBodyRoot?: MiddlewareRenderBodyRoot;
|
|
47
|
+
renderBody?: MiddlewareRenderBody;
|
|
48
|
+
renderBodyContent?: MiddlewareRenderBodyContent;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
interface Hook<T> {
|
|
52
|
+
priority: number;
|
|
53
|
+
hook: Middleware<T>;
|
|
54
|
+
}
|
|
55
|
+
declare class TablePipeline<T> {
|
|
56
|
+
constructor();
|
|
57
|
+
hooks: Hook<T>[];
|
|
58
|
+
setHooks(value: Hook<T>[]): void;
|
|
59
|
+
use(options: MiddlewareContext<T>): MiddlewareResult<T>;
|
|
60
|
+
static defaultPipeline: TablePipeline<unknown>;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
interface UseTablePipelineOptions<T = any> {
|
|
64
|
+
pipeline?: TablePipeline<T>;
|
|
65
|
+
use?: (Middleware<T> | Hook<T>)[];
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
declare function useTablePipeline<T = any>(options: UseTablePipelineOptions<T>): TablePipeline<T>;
|
|
69
|
+
|
|
70
|
+
interface VirtualTableCoreProps<T> extends NecessaryProps<T>, Pick<TableBodyProps<T>, 'rowClassName' | 'onRow'> {
|
|
71
|
+
bodyRootRef?: Ref<HTMLTableElement>;
|
|
72
|
+
instance?: TableInstance;
|
|
73
|
+
className?: string;
|
|
74
|
+
style?: CSSProperties;
|
|
75
|
+
tableBodyClassName?: string;
|
|
76
|
+
tableBodyStyle?: CSSProperties;
|
|
77
|
+
/** 开启表头 sticky,设置为 true 则默认 top 为 0,为 number 则是偏移量 */
|
|
78
|
+
stickyHeader?: number | boolean;
|
|
79
|
+
/** 预计每列宽度,需要横向虚拟化时,设置它 */
|
|
80
|
+
estimatedColumnWidth?: number;
|
|
81
|
+
/** 预计每行高度 @default 46 */
|
|
82
|
+
estimatedRowHeight?: number;
|
|
83
|
+
/** 在头和尾额外渲染多少行 @default 5 */
|
|
84
|
+
overscanRows?: number;
|
|
85
|
+
/** 横向虚拟化时,在头和尾额外渲染多少列 @default 3 */
|
|
86
|
+
overscanColumns?: number;
|
|
87
|
+
/** 开启表头虚拟滚动 @default true */
|
|
88
|
+
virtualHeader?: boolean;
|
|
89
|
+
/**
|
|
90
|
+
* 缺失宽度设置时的默认值(与虚拟化无关)
|
|
91
|
+
* @default 100
|
|
92
|
+
*/
|
|
93
|
+
defaultColumnWidth?: number;
|
|
94
|
+
pipeline?: TablePipeline<T>;
|
|
95
|
+
getOffsetTop?: () => number;
|
|
96
|
+
}
|
|
97
|
+
declare const _default$2: <T>(props: VirtualTableCoreProps<T> & RefAttributes<HTMLDivElement>) => ReactElement;
|
|
98
|
+
|
|
13
99
|
type FixedType = 'left' | 'right';
|
|
14
100
|
declare function isValidFixedLeft(fixed: unknown): fixed is "left";
|
|
15
101
|
declare function isValidFixedRight(fixed: unknown): fixed is "right";
|
|
@@ -56,6 +142,48 @@ interface InnerColumnDescriptor<T> {
|
|
|
56
142
|
descriptor: ColumnDescriptor<T>[];
|
|
57
143
|
columns: ColumnType<T>[];
|
|
58
144
|
}
|
|
145
|
+
interface TableInstance<T = any> {
|
|
146
|
+
getCurrentProps: () => Readonly<VirtualTableCoreProps<T>>;
|
|
147
|
+
/** 获取所有 middleware 处理过的 columns */
|
|
148
|
+
getColumns: () => ColumnType<T>[];
|
|
149
|
+
/** 获取所有 middleware 处理过的 dataSource */
|
|
150
|
+
getDataSource: () => T[];
|
|
151
|
+
getDOM: () => {
|
|
152
|
+
root: HTMLDivElement | null;
|
|
153
|
+
headerWrapper: HTMLDivElement | null;
|
|
154
|
+
bodyWrapper: HTMLDivElement | null;
|
|
155
|
+
bodyRoot: HTMLTableElement | null;
|
|
156
|
+
body: HTMLTableSectionElement | null;
|
|
157
|
+
};
|
|
158
|
+
/** 获取行虚拟化用到的数据 */
|
|
159
|
+
getRowVirtualizeState: () => {
|
|
160
|
+
startIndex: number;
|
|
161
|
+
endIndex: number;
|
|
162
|
+
overscan: number;
|
|
163
|
+
estimateSize: number;
|
|
164
|
+
};
|
|
165
|
+
/** 获取所有的行高信息。Map<rowKey, Map<key, number>> */
|
|
166
|
+
getRowHeightMap: () => Map<Key, Map<Key, number>>;
|
|
167
|
+
/** 通过索引值,获取指定行所对应的滚动数值 */
|
|
168
|
+
getScrollValueByRowIndex: (index: number) => number;
|
|
169
|
+
/** 通过 columnKey,获取指定列所对应的滚动数值 */
|
|
170
|
+
getScrollValueByColumnKey: (columnKey: Key) => number;
|
|
171
|
+
/** 通过索引值,滚动到指定行 */
|
|
172
|
+
scrollToRow: (index: number) => void;
|
|
173
|
+
/** 通过 columnKey,滚动到指定列 */
|
|
174
|
+
scrollToColumn: (columnKey: Key) => void;
|
|
175
|
+
scrollTo: (options: ScrollToOptions) => void;
|
|
176
|
+
/** 通过 columnKey 获取 column 定义 */
|
|
177
|
+
getColumnByKey: (columnKey: Key) => ColumnType<T> | undefined;
|
|
178
|
+
/** 通过索引获取 column 定义 */
|
|
179
|
+
getColumnByIndex: (index: number) => ColumnType<T> | undefined;
|
|
180
|
+
/** 通过索引获取 columnKey */
|
|
181
|
+
getColumnKeyByIndex: (index: number) => Key | undefined;
|
|
182
|
+
/** 获取所有的列宽 */
|
|
183
|
+
getColumnWidths: () => Map<Key, number>;
|
|
184
|
+
/** 通过 columnKey 获取列宽 */
|
|
185
|
+
getColumnWidthByKey: (columnKey: Key) => number | undefined;
|
|
186
|
+
}
|
|
59
187
|
|
|
60
188
|
interface NecessaryProps<T> {
|
|
61
189
|
dataSource: T[];
|
|
@@ -75,6 +203,7 @@ interface MiddlewareContext<T> extends Readonly<NecessaryProps<T>> {
|
|
|
75
203
|
readonly bodyRef: RefObject<HTMLTableSectionElement>;
|
|
76
204
|
readonly getScroller: () => ScrollElement | undefined;
|
|
77
205
|
readonly getOffsetTop: () => number;
|
|
206
|
+
readonly instance: TableInstance;
|
|
78
207
|
[key: string]: unknown;
|
|
79
208
|
}
|
|
80
209
|
interface MiddlewareResult<T> extends MiddlewareContext<T>, MiddlewareRenders {
|
|
@@ -86,6 +215,7 @@ type Middleware<T> = (context: MiddlewareContext<T>) => MiddlewareResult<T>;
|
|
|
86
215
|
interface RenderOptions<T = any> {
|
|
87
216
|
column: ColumnType<T>;
|
|
88
217
|
columnWidths: Map<Key, number>;
|
|
218
|
+
rowKey: Key;
|
|
89
219
|
rowIndex: number;
|
|
90
220
|
startRowIndex: number;
|
|
91
221
|
columns: ColumnType<T>[];
|
|
@@ -106,7 +236,7 @@ type MiddlewareRenderBodyWrapper<T = any> = (children: ReactNode, options: Prett
|
|
|
106
236
|
type MiddlewareRenderBodyRoot<T = any> = (children: ReactNode, options: Prettify<Pick<RenderOptions<T>, 'columns' | 'columnDescriptor' | 'startRowIndex'>>) => ReactNode;
|
|
107
237
|
type MiddlewareRenderBody<T = any> = (children: ReactNode, options: Prettify<Pick<RenderOptions<T>, 'columns' | 'columnDescriptor' | 'startRowIndex'>>) => ReactNode;
|
|
108
238
|
type MiddlewareRenderBodyContent<T = any> = (children: ReactNode, options: Prettify<Pick<RenderOptions<T>, 'columns' | 'columnDescriptor' | 'startRowIndex'>>) => ReactNode;
|
|
109
|
-
type MiddlewareRenderRow<T = any> = (children: ReactNode, options: Prettify<Pick<RenderOptions<T>, 'columns' | 'columnDescriptor' | 'rowIndex' | 'rowData'>>) => ReactNode;
|
|
239
|
+
type MiddlewareRenderRow<T = any> = (children: ReactNode, options: Prettify<Pick<RenderOptions<T>, 'columns' | 'columnDescriptor' | 'rowKey' | 'rowIndex' | 'rowData'>>) => ReactNode;
|
|
110
240
|
type MiddlewareRenderCell<T = any> = (children: ReactNode, options: Prettify<Pick<RenderOptions<T>, 'column'>>) => ReactNode;
|
|
111
241
|
type MergedMiddlewareRender<T = any> = MiddlewareRender<T> | MiddlewareRenderRoot<T> | MiddlewareRenderContent<T> | MiddlewareRenderHeaderWrapper<T> | MiddlewareRenderHeaderRoot<T> | MiddlewareRenderHeader<T> | MiddlewareRenderHeaderRow<T> | MiddlewareRenderHeaderCell<T> | MiddlewareRenderBodyWrapper<T> | MiddlewareRenderBodyRoot<T> | MiddlewareRenderBody<T> | MiddlewareRenderBodyContent<T> | MiddlewareRenderRow<T> | MiddlewareRenderCell<T>;
|
|
112
242
|
interface MiddlewareRenders {
|
|
@@ -179,20 +309,20 @@ interface MiddlewareRenders {
|
|
|
179
309
|
renderCell?: MiddlewareRenderCell;
|
|
180
310
|
}
|
|
181
311
|
|
|
182
|
-
type NativeProps
|
|
183
|
-
interface CellProps<T> extends Omit<NativeProps
|
|
312
|
+
type NativeProps = DetailedHTMLProps<HTMLAttributes<HTMLTableCellElement>, HTMLTableCellElement>;
|
|
313
|
+
interface CellProps<T> extends Omit<NativeProps, 'children'> {
|
|
184
314
|
column: ColumnType<T>;
|
|
185
315
|
rowIndex: number;
|
|
186
316
|
rowData: T;
|
|
187
317
|
renderCell?: MiddlewareRenderCell;
|
|
188
318
|
}
|
|
189
|
-
declare const _default$
|
|
319
|
+
declare const _default$1: <T>(props: CellProps<T>) => ReactElement;
|
|
190
320
|
|
|
191
321
|
interface ColgroupProps {
|
|
192
322
|
columns: ColumnDescriptor[];
|
|
193
323
|
onColumnSizesMeasure?: (columnSizes: Map<Key, number>) => void;
|
|
194
324
|
}
|
|
195
|
-
declare const _default
|
|
325
|
+
declare const _default: react.NamedExoticComponent<ColgroupProps>;
|
|
196
326
|
|
|
197
327
|
interface TableColumnsContextType {
|
|
198
328
|
widthList: Map<Key, number>;
|
|
@@ -221,11 +351,11 @@ declare function useHorizontalScrollContext(): HorizontalScrollContextState;
|
|
|
221
351
|
interface TableRowManagerContextType {
|
|
222
352
|
getRowHeightList: () => number[];
|
|
223
353
|
/**
|
|
224
|
-
* @param
|
|
354
|
+
* @param rowKey
|
|
225
355
|
* @param key 唯一的 key,用于去重
|
|
226
356
|
* @param height 行高
|
|
227
357
|
*/
|
|
228
|
-
|
|
358
|
+
setRowHeightByRowKey: (rowKey: Key, key: Key, height: number) => void;
|
|
229
359
|
}
|
|
230
360
|
declare function useTableRowManager(): TableRowManagerContextType;
|
|
231
361
|
|
|
@@ -239,6 +369,8 @@ interface StickyContextState {
|
|
|
239
369
|
}
|
|
240
370
|
declare function useTableSticky(): StickyContextState;
|
|
241
371
|
|
|
372
|
+
declare const NormalRowHeightKey = "NormalRow";
|
|
373
|
+
|
|
242
374
|
/**
|
|
243
375
|
* 缓存数据(浅比较,如果是数组则对第一层进行浅比较)
|
|
244
376
|
*/
|
|
@@ -246,87 +378,13 @@ declare function useShallowMemo<T>(pickData: () => T): T;
|
|
|
246
378
|
|
|
247
379
|
declare function useStableFn<T extends Function>(callback: T): T;
|
|
248
380
|
|
|
381
|
+
declare function useTableInstance(instance?: TableInstance): TableInstance<any>;
|
|
382
|
+
|
|
249
383
|
/**
|
|
250
384
|
* 创建中间件,内部会浅比较 options,只有 options 改变才会返回新的函数。
|
|
251
385
|
*/
|
|
252
386
|
declare function createMiddleware<T, Args extends any[]>(hook: (ctx: MiddlewareContext<T>, ...args: Args) => MiddlewareResult<T>): (...args: Args) => Middleware<T>;
|
|
253
387
|
|
|
254
|
-
interface Hook<T> {
|
|
255
|
-
priority: number;
|
|
256
|
-
hook: Middleware<T>;
|
|
257
|
-
}
|
|
258
|
-
declare class TablePipeline<T> {
|
|
259
|
-
constructor();
|
|
260
|
-
hooks: Hook<T>[];
|
|
261
|
-
setHooks(value: Hook<T>[]): void;
|
|
262
|
-
use(options: MiddlewareContext<T>): MiddlewareResult<T>;
|
|
263
|
-
static defaultPipeline: TablePipeline<unknown>;
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
interface UseTablePipelineOptions<T = any> {
|
|
267
|
-
pipeline?: TablePipeline<T>;
|
|
268
|
-
use?: (Middleware<T> | Hook<T>)[];
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
declare function useTablePipeline<T = any>(options: UseTablePipelineOptions<T>): TablePipeline<T>;
|
|
272
|
-
|
|
273
|
-
type NativeProps = DetailedHTMLProps<HTMLAttributes<HTMLTableRowElement>, HTMLTableRowElement>;
|
|
274
|
-
interface RowProps<T> extends Omit<NativeProps, 'children'> {
|
|
275
|
-
rowIndex: number;
|
|
276
|
-
rowData: T;
|
|
277
|
-
columns: InnerColumnDescriptor<T>;
|
|
278
|
-
onRow?: OnRowType<T>;
|
|
279
|
-
renderRow?: MiddlewareRenderRow;
|
|
280
|
-
renderCell?: MiddlewareRenderCell;
|
|
281
|
-
}
|
|
282
|
-
declare const _default$1: <T>(props: RowProps<T>) => ReactElement;
|
|
283
|
-
|
|
284
|
-
interface TableBodyProps<T> extends Omit<NecessaryProps<T>, 'columns'>, Pick<RowProps<T>, 'onRow' | 'renderRow' | 'renderCell'> {
|
|
285
|
-
className?: string;
|
|
286
|
-
style?: CSSProperties;
|
|
287
|
-
columns: InnerColumnDescriptor<T>;
|
|
288
|
-
bodyWrapperRef?: Ref<HTMLDivElement>;
|
|
289
|
-
bodyRootRef?: Ref<HTMLTableElement>;
|
|
290
|
-
bodyRef?: Ref<HTMLTableSectionElement>;
|
|
291
|
-
overscan: number;
|
|
292
|
-
estimateSize: number;
|
|
293
|
-
getOffsetTop: () => number;
|
|
294
|
-
getScroller: () => ScrollElement | undefined;
|
|
295
|
-
rowClassName?: (record: T, index: number) => string;
|
|
296
|
-
renderBodyWrapper?: MiddlewareRenderBodyWrapper;
|
|
297
|
-
renderBodyRoot?: MiddlewareRenderBodyRoot;
|
|
298
|
-
renderBody?: MiddlewareRenderBody;
|
|
299
|
-
renderBodyContent?: MiddlewareRenderBodyContent;
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
interface VirtualTableCoreProps<T> extends NecessaryProps<T>, Pick<TableBodyProps<T>, 'rowClassName' | 'onRow'> {
|
|
303
|
-
bodyRootRef?: Ref<HTMLTableElement>;
|
|
304
|
-
className?: string;
|
|
305
|
-
style?: CSSProperties;
|
|
306
|
-
tableBodyClassName?: string;
|
|
307
|
-
tableBodyStyle?: CSSProperties;
|
|
308
|
-
/** 开启表头 sticky,设置为 true 则默认 top 为 0,为 number 则是偏移量 */
|
|
309
|
-
stickyHeader?: number | boolean;
|
|
310
|
-
/** 预计每列宽度,需要横向虚拟化时,设置它 */
|
|
311
|
-
estimatedColumnWidth?: number;
|
|
312
|
-
/** 预计每行高度 @default 46 */
|
|
313
|
-
estimatedRowHeight?: number;
|
|
314
|
-
/** 在头和尾额外渲染多少行 @default 5 */
|
|
315
|
-
overscanRows?: number;
|
|
316
|
-
/** 横向虚拟化时,在头和尾额外渲染多少列 @default 3 */
|
|
317
|
-
overscanColumns?: number;
|
|
318
|
-
/** 开启表头虚拟滚动 @default true */
|
|
319
|
-
virtualHeader?: boolean;
|
|
320
|
-
/**
|
|
321
|
-
* 缺失宽度设置时的默认值(与虚拟化无关)
|
|
322
|
-
* @default 100
|
|
323
|
-
*/
|
|
324
|
-
defaultColumnWidth?: number;
|
|
325
|
-
pipeline?: TablePipeline<T>;
|
|
326
|
-
getOffsetTop?: () => number;
|
|
327
|
-
}
|
|
328
|
-
declare const _default: <T>(props: VirtualTableCoreProps<T> & RefAttributes<HTMLDivElement>) => ReactElement;
|
|
329
|
-
|
|
330
388
|
declare function getKey<T>(column: ColumnType<T>): Key;
|
|
331
389
|
declare function getRowKey<T>(rowData: T, rowKey: NecessaryProps<T>['rowKey']): Key;
|
|
332
390
|
|
|
@@ -342,4 +400,5 @@ type PossibleRef<T> = Ref<T> | undefined;
|
|
|
342
400
|
declare function mergeRefs<T>(...refs: PossibleRef<T>[]): (node: T | null) => void;
|
|
343
401
|
declare function useMergedRef<T>(...refs: PossibleRef<T>[]): (node: T | null) => void;
|
|
344
402
|
|
|
345
|
-
export {
|
|
403
|
+
export { _default as Colgroup, NormalRowHeightKey, TablePipeline, _default$2 as VirtualTable, _default$1 as VirtualTableCell, _default$3 as VirtualTableRow, createMiddleware, findLastIndex, getKey, getRelativeOffsetTop, getRowKey, getScrollElement, getScrollParent, getScrollTop, isDocument, isRoot, isValidFixed, isValidFixedLeft, isValidFixedRight, isWindow, mergeRefs, onResize, useColumnSizes, useContainerSize, useHorizontalScrollContext, useMergedRef, useShallowMemo, useStableFn, useTableInstance, useTablePipeline, useTableRowManager, useTableSticky };
|
|
404
|
+
export type { AlignType, AnyObject, ColumnDescriptor, ColumnExtra, ColumnType, ContainerSizeState, FixedType, HorizontalScrollContextState, MergedMiddlewareRender, Middleware, MiddlewareContext, MiddlewareRender, MiddlewareRenderBody, MiddlewareRenderBodyContent, MiddlewareRenderBodyRoot, MiddlewareRenderBodyWrapper, MiddlewareRenderCell, MiddlewareRenderContent, MiddlewareRenderHeader, MiddlewareRenderHeaderCell, MiddlewareRenderHeaderRoot, MiddlewareRenderHeaderRow, MiddlewareRenderHeaderWrapper, MiddlewareRenderRoot, MiddlewareRenderRow, MiddlewareRenders, MiddlewareResult, OnRowType, PipelineRender, PipelineRenderOptions, ScrollElement, StickyContextState, TableColumnsContextType, TableInstance, TableRowManagerContextType, UseTablePipelineOptions, CellProps as VirtualTableCellProps, VirtualTableCoreProps as VirtualTableProps, RowProps as VirtualTableRowProps };
|