@aimerthyr/virtual-table 1.0.0 → 1.1.1
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/CHANGELOG.md +15 -0
- package/README.md +412 -33
- package/dist/index.cjs +3 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +154 -50
- package/dist/index.js +2185 -1840
- package/dist/index.js.map +1 -1
- package/dist/virtual-table.css +1 -1
- package/package.json +4 -2
package/dist/index.d.ts
CHANGED
|
@@ -4,7 +4,6 @@ import { ColumnFiltersState } from '@tanstack/vue-table';
|
|
|
4
4
|
import { ColumnPinningState } from '@tanstack/vue-table';
|
|
5
5
|
import { ColumnSizingState } from '@tanstack/vue-table';
|
|
6
6
|
import { ComponentCustomProps } from 'vue';
|
|
7
|
-
import { CSSProperties } from 'vue';
|
|
8
7
|
import { ExpandedState } from '@tanstack/vue-table';
|
|
9
8
|
import { HTMLAttributes } from 'vue';
|
|
10
9
|
import { PaginationState } from '@tanstack/vue-table';
|
|
@@ -43,7 +42,7 @@ declare const _default: <TData extends VTableData>(__VLS_props: NonNullable<Awai
|
|
|
43
42
|
defaultColumnPinning?: ColumnPinningState;
|
|
44
43
|
defaultColumnSizing?: ColumnSizingState;
|
|
45
44
|
} & VTableProps<TData>) & Partial<{}>> & PublicProps;
|
|
46
|
-
expose(exposed: ShallowUnwrapRef<VTableInstance
|
|
45
|
+
expose(exposed: ShallowUnwrapRef<VTableInstance<TData>>): void;
|
|
47
46
|
attrs: any;
|
|
48
47
|
slots: any;
|
|
49
48
|
emit: ((evt: "update:defaultFilter", value: ColumnFiltersState) => void) & ((evt: "update:defaultSort", value: SortingState) => void) & ((evt: "update:defaultPagination", value: PaginationState) => void) & ((evt: "update:defaultExpanded", value: ExpandedState) => void) & ((evt: "update:defaultSelection", value: RowSelectionState) => void) & ((evt: "update:defaultColumnPinning", value: ColumnPinningState) => void) & ((evt: "update:defaultColumnSizing", value: ColumnSizingState) => void);
|
|
@@ -53,6 +52,9 @@ declare const _default: <TData extends VTableData>(__VLS_props: NonNullable<Awai
|
|
|
53
52
|
export { _default as VTable }
|
|
54
53
|
export default _default;
|
|
55
54
|
|
|
55
|
+
/** 默认主题配置 */
|
|
56
|
+
export declare const defaultThemeConfig: VTableThemeConfig;
|
|
57
|
+
|
|
56
58
|
/** 展开列 */
|
|
57
59
|
export declare const EXPAND_COLUMN_KEY = "EXPAND_COLUMN_KEY";
|
|
58
60
|
|
|
@@ -62,24 +64,46 @@ export declare const EXPAND_ROW_DATA_INDEX = "_expandChildren";
|
|
|
62
64
|
/** 是否是展开行 */
|
|
63
65
|
export declare const EXPAND_ROW_KEY = "_isExpandRow";
|
|
64
66
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
+
export declare interface VTableBodyCellProps<TData = any> {
|
|
68
|
+
columnKey: string;
|
|
69
|
+
column: VTableColumn;
|
|
70
|
+
row: TData;
|
|
71
|
+
rowIndex: number;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/** 表体样式配置 */
|
|
75
|
+
export declare interface VTableBodyStyle {
|
|
76
|
+
/** 表体字体颜色 */
|
|
77
|
+
color: string;
|
|
78
|
+
/** 表体背景颜色 */
|
|
79
|
+
backgroundColor: string;
|
|
80
|
+
/** 表体内边距 */
|
|
81
|
+
padding: number;
|
|
82
|
+
}
|
|
67
83
|
|
|
68
|
-
export declare
|
|
84
|
+
export declare interface VTableBorderConfig {
|
|
69
85
|
/** 是否显示边框 */
|
|
70
86
|
enabled?: boolean;
|
|
71
87
|
/** 边框样式 */
|
|
72
88
|
borderStyle?: 'solid' | 'dashed';
|
|
73
89
|
/** 边框颜色 */
|
|
74
90
|
borderColor?: string;
|
|
75
|
-
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/** 边框样式配置 */
|
|
94
|
+
export declare interface VTableBorderStyle {
|
|
95
|
+
/** 边框样式 */
|
|
96
|
+
borderStyle: 'solid' | 'dashed';
|
|
97
|
+
/** 边框颜色 */
|
|
98
|
+
borderColor: string;
|
|
99
|
+
}
|
|
76
100
|
|
|
77
101
|
/** 表格状态(分页,排序,筛选) */
|
|
78
|
-
export declare
|
|
102
|
+
export declare interface VTableChangeState {
|
|
79
103
|
pagination: VTablePaginationState;
|
|
80
104
|
sortList: VTableSortingState;
|
|
81
105
|
filterList: VTableColumnFiltersState;
|
|
82
|
-
}
|
|
106
|
+
}
|
|
83
107
|
|
|
84
108
|
/**
|
|
85
109
|
* Checkbox 自定义组件接口定义
|
|
@@ -117,14 +141,19 @@ export declare interface VTableColumn<TData = any> {
|
|
|
117
141
|
columnMaxWidth?: number;
|
|
118
142
|
/** 列宽最小值 (默认 50px) */
|
|
119
143
|
columnMinWidth?: number;
|
|
120
|
-
/**
|
|
121
|
-
[
|
|
144
|
+
/** 子列(用于表头分组) */
|
|
145
|
+
columnChildren?: VTableColumn<TData>[];
|
|
122
146
|
}
|
|
123
147
|
|
|
148
|
+
/** 筛选状态 */
|
|
124
149
|
export declare type VTableColumnFiltersState = ColumnFiltersState;
|
|
125
150
|
|
|
151
|
+
/** 固定列状态 */
|
|
126
152
|
export declare type VTableColumnPinningState = ColumnPinningState;
|
|
127
153
|
|
|
154
|
+
/** 列宽状态 */
|
|
155
|
+
export declare type VTableColumnSizingState = ColumnSizingState;
|
|
156
|
+
|
|
128
157
|
export declare type VTableData<T = Record<string, any>> = T & {
|
|
129
158
|
/** 当前行是否展开 */
|
|
130
159
|
[EXPAND_ROW_KEY]?: boolean;
|
|
@@ -141,7 +170,7 @@ export declare const vTableDefaultProps: {
|
|
|
141
170
|
loading?: boolean | ((props: VTableProps<any>) => boolean) | undefined;
|
|
142
171
|
fixedHeader?: boolean | ((props: VTableProps<any>) => boolean) | undefined;
|
|
143
172
|
enableSortingRemoval?: boolean | ((props: VTableProps<any>) => boolean) | undefined;
|
|
144
|
-
|
|
173
|
+
bordered?: boolean | ((props: VTableProps<any>) => boolean) | undefined;
|
|
145
174
|
rowSelectionConfig?: ((props: VTableProps<any>) => VTableRowSelectionConfig<any>) | undefined;
|
|
146
175
|
loadMoreConfig?: ((props: VTableProps<any>) => VTableLoadMoreConfig) | undefined;
|
|
147
176
|
paginationConfig?: ((props: VTableProps<any>) => VTablePaginationConfig) | undefined;
|
|
@@ -151,31 +180,61 @@ export declare const vTableDefaultProps: {
|
|
|
151
180
|
adaptiveColumnWidth?: number | ((props: VTableProps<any>) => number) | undefined;
|
|
152
181
|
defaultExpandAllRows?: boolean | ((props: VTableProps<any>) => boolean) | undefined;
|
|
153
182
|
columnResizeMode?: "onChange" | "onEnd" | ((props: VTableProps<any>) => "onChange" | "onEnd") | undefined;
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
183
|
+
fixedFooter?: boolean | ((props: VTableProps<any>) => boolean) | undefined;
|
|
184
|
+
themeConfig?: ((props: VTableProps<any>) => VTableThemeConfig) | undefined;
|
|
185
|
+
defaultCheckboxColumnWidth?: number | ((props: VTableProps<any>) => number) | undefined;
|
|
186
|
+
defaultExpandColumnWidth?: number | ((props: VTableProps<any>) => number) | undefined;
|
|
187
|
+
customRowAttributes?: ((row: any, rowIndex: number) => HTMLAttributes) | ((props: VTableProps<any>) => (row: any, rowIndex: number) => HTMLAttributes) | undefined;
|
|
188
|
+
customHeaderCellAttributes?: ((column: VTableColumn, colIndex: number) => ThHTMLAttributes) | ((props: VTableProps<any>) => (column: VTableColumn, colIndex: number) => ThHTMLAttributes) | undefined;
|
|
189
|
+
customCellAttributes?: ((row: any, column: VTableColumn, rowIndex: number, colIndex: number) => TdHTMLAttributes | null) | ((props: VTableProps<any>) => (row: any, column: VTableColumn, rowIndex: number, colIndex: number) => TdHTMLAttributes | null) | undefined;
|
|
157
190
|
onTableChange?: ((data: VTableChangeState) => void) | ((props: VTableProps<any>) => (data: VTableChangeState) => void) | undefined;
|
|
158
191
|
onScrollToBottom?: (() => void) | ((props: VTableProps<any>) => () => void) | undefined;
|
|
159
192
|
onExpandedRowsChange?: ((expandState: VTableExpandedState) => void) | ((props: VTableProps<any>) => (expandState: VTableExpandedState) => void) | undefined;
|
|
193
|
+
onColumnSizingChange?: ((columnSizing: VTableColumnSizingState) => void) | ((props: VTableProps<any>) => (columnSizing: VTableColumnSizingState) => void) | undefined;
|
|
160
194
|
};
|
|
161
195
|
|
|
196
|
+
/** 展开状态 */
|
|
162
197
|
export declare type VTableExpandedState = ExpandedState;
|
|
163
198
|
|
|
199
|
+
/** 展开图标自定义组件接口定义 */
|
|
200
|
+
export declare interface VTableExpandIconProps {
|
|
201
|
+
expand: boolean;
|
|
202
|
+
onExpandChange: () => void;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/** 表头样式配置 */
|
|
206
|
+
export declare interface VTableHeaderStyle {
|
|
207
|
+
/** 表头字体颜色 */
|
|
208
|
+
color: string;
|
|
209
|
+
/** 表头背景颜色 */
|
|
210
|
+
backgroundColor: string;
|
|
211
|
+
/** 表头圆角大小 */
|
|
212
|
+
borderRadius: number;
|
|
213
|
+
/** 表头分割线颜色 */
|
|
214
|
+
splitColor: string;
|
|
215
|
+
/** 表头图标颜色 */
|
|
216
|
+
headerIconColor: string;
|
|
217
|
+
/** 表头内边距 */
|
|
218
|
+
padding: number;
|
|
219
|
+
}
|
|
220
|
+
|
|
164
221
|
/** VTable 实例类型定义 */
|
|
165
|
-
export declare interface VTableInstance {
|
|
166
|
-
/**
|
|
167
|
-
|
|
222
|
+
export declare interface VTableInstance<TData = any> {
|
|
223
|
+
/** tanstack 表格实例 */
|
|
224
|
+
tanstackTable: Table<TData>;
|
|
225
|
+
/** 滚动到指定下标(从 0 开始,默认是平滑滚动) */
|
|
226
|
+
scrollToIndex: (index: number, behavior?: 'auto' | 'smooth') => void;
|
|
168
227
|
}
|
|
169
228
|
|
|
170
|
-
export declare
|
|
229
|
+
export declare interface VTableLoadMoreConfig {
|
|
171
230
|
/** 是否显示"没有更多了"提示 */
|
|
172
231
|
showNoMore?: boolean;
|
|
173
232
|
/** 自定义"没有更多了"文本 */
|
|
174
233
|
noMoreText?: string;
|
|
175
|
-
}
|
|
234
|
+
}
|
|
176
235
|
|
|
177
|
-
export declare
|
|
178
|
-
/**
|
|
236
|
+
export declare interface VTablePaginationConfig {
|
|
237
|
+
/** 总数(必须要传, 客户端分页可以不传,自动以传入的 data 长度作为总数) */
|
|
179
238
|
total: number;
|
|
180
239
|
/** 是否开启分页 */
|
|
181
240
|
enabled?: boolean;
|
|
@@ -185,7 +244,7 @@ export declare type VTablePaginationConfig = {
|
|
|
185
244
|
mode?: 'client' | 'server';
|
|
186
245
|
/** 分页器额外属性(如果你自己定义了分页器组件,则用于回传给你自己定义的组件) */
|
|
187
246
|
paginationExtraProps?: Record<string, any>;
|
|
188
|
-
}
|
|
247
|
+
}
|
|
189
248
|
|
|
190
249
|
/**
|
|
191
250
|
* Pagination 自定义组件接口定义
|
|
@@ -201,6 +260,7 @@ export declare interface VTablePaginationProps {
|
|
|
201
260
|
onPageChange: (pageIndex: number, pageSize: number) => void;
|
|
202
261
|
}
|
|
203
262
|
|
|
263
|
+
/** 分页状态 */
|
|
204
264
|
export declare type VTablePaginationState = PaginationState;
|
|
205
265
|
|
|
206
266
|
/**
|
|
@@ -233,8 +293,8 @@ export declare interface VTableProps<TData = any> {
|
|
|
233
293
|
fixedHeader?: boolean;
|
|
234
294
|
/** 是否允许取消排序 */
|
|
235
295
|
enableSortingRemoval?: boolean;
|
|
236
|
-
/**
|
|
237
|
-
|
|
296
|
+
/** 是否显示边框 */
|
|
297
|
+
bordered?: boolean;
|
|
238
298
|
/** 选择行功能配置 */
|
|
239
299
|
rowSelectionConfig?: VTableRowSelectionConfig<TData>;
|
|
240
300
|
/** 加载更多配置 */
|
|
@@ -245,7 +305,7 @@ export declare interface VTableProps<TData = any> {
|
|
|
245
305
|
treeConfig?: VTableTreeConfig;
|
|
246
306
|
/** 是否启用展开行功能 */
|
|
247
307
|
enableExpandRow?: boolean;
|
|
248
|
-
/**
|
|
308
|
+
/** 是否启用行 hover 高亮 */
|
|
249
309
|
enableRowHover?: boolean;
|
|
250
310
|
/** 自适应列宽(当列数很多时,会出现横向滚动条,那么就需要设置自适应列的最小列宽) */
|
|
251
311
|
adaptiveColumnWidth?: number;
|
|
@@ -253,60 +313,69 @@ export declare interface VTableProps<TData = any> {
|
|
|
253
313
|
defaultExpandAllRows?: boolean;
|
|
254
314
|
/** 列宽调整模式 */
|
|
255
315
|
columnResizeMode?: 'onChange' | 'onEnd';
|
|
316
|
+
/** 是否固定表尾(表尾不随着滚动) */
|
|
317
|
+
fixedFooter?: boolean;
|
|
318
|
+
/** 自定义主题配置(可覆盖默认配置) */
|
|
319
|
+
themeConfig?: VTableThemeConfig;
|
|
320
|
+
/** 默认 checkbox 列宽 */
|
|
321
|
+
defaultCheckboxColumnWidth?: number;
|
|
322
|
+
/** 默认展开列的列宽 */
|
|
323
|
+
defaultExpandColumnWidth?: number;
|
|
256
324
|
/** 自定义数据行属性 */
|
|
257
|
-
|
|
325
|
+
customRowAttributes?: (row: TData, rowIndex: number) => HTMLAttributes;
|
|
258
326
|
/** 自定义表头单元格属性 */
|
|
259
|
-
|
|
260
|
-
/**
|
|
261
|
-
|
|
327
|
+
customHeaderCellAttributes?: (column: VTableColumn, colIndex: number) => ThHTMLAttributes;
|
|
328
|
+
/**
|
|
329
|
+
* 自定义表体单元格属性(包括合并单元格)
|
|
330
|
+
* 当返回的属性中 colspan 或 rowspan 为 0 时,该单元格不会被渲染
|
|
331
|
+
*/
|
|
332
|
+
customCellAttributes?: (row: TData, column: VTableColumn, rowIndex: number, colIndex: number) => TdHTMLAttributes | null;
|
|
262
333
|
/** 表格状态变化(筛选,排序,分页) */
|
|
263
334
|
onTableChange?: (data: VTableChangeState) => void;
|
|
264
335
|
/** 滚动到表格底部 */
|
|
265
336
|
onScrollToBottom?: () => void;
|
|
266
337
|
/** 展开行变化回调 */
|
|
267
338
|
onExpandedRowsChange?: (expandState: VTableExpandedState) => void;
|
|
339
|
+
/** 列宽调整回调 */
|
|
340
|
+
onColumnSizingChange?: (columnSizing: VTableColumnSizingState) => void;
|
|
268
341
|
}
|
|
269
342
|
|
|
270
343
|
export declare type VTableRowKey<TData> = string | number | ((row: TData) => string | number);
|
|
271
344
|
|
|
272
|
-
export declare
|
|
345
|
+
export declare interface VTableRowSelectionConfig<TData> {
|
|
273
346
|
/** 是否开启 checkbox 列 */
|
|
274
347
|
enabled?: boolean;
|
|
275
348
|
/** 判断该行是否禁用选择 */
|
|
276
349
|
getRowCheckDisabled?: (row: TData) => boolean;
|
|
277
350
|
/** 选择行变化回调 */
|
|
278
351
|
onChange?: (selectedRows: TData[]) => void;
|
|
279
|
-
}
|
|
352
|
+
}
|
|
280
353
|
|
|
354
|
+
/** 选择状态 */
|
|
281
355
|
export declare type VTableSelectionState = RowSelectionState;
|
|
282
356
|
|
|
283
357
|
/** slots 类型定义 */
|
|
284
358
|
export declare interface VTableSlots<TData = any> {
|
|
285
359
|
/** 自定义头部渲染 */
|
|
286
|
-
customHeader?: (
|
|
360
|
+
customHeader?: (props: {
|
|
287
361
|
columns: VTableColumn[];
|
|
288
362
|
table: Table<TData>;
|
|
289
363
|
}) => VNode_2;
|
|
290
364
|
/** 自定义单元格 */
|
|
291
|
-
bodyCell?: (
|
|
292
|
-
columnKey: string;
|
|
293
|
-
column: VTableColumn;
|
|
294
|
-
row: TData;
|
|
295
|
-
rowIndex: number;
|
|
296
|
-
}) => VNode_2;
|
|
365
|
+
bodyCell?: (props: VTableBodyCellProps<TData>) => VNode_2;
|
|
297
366
|
/** 自定义列头 */
|
|
298
|
-
headerCell?: (
|
|
367
|
+
headerCell?: (props: {
|
|
299
368
|
columnKey: string;
|
|
300
369
|
column: VTableColumn;
|
|
301
370
|
}) => VNode_2;
|
|
302
371
|
/** 自定义筛选图标 */
|
|
303
|
-
customFilterIcon?: (
|
|
372
|
+
customFilterIcon?: (props: {
|
|
304
373
|
columnKey: string;
|
|
305
374
|
filtered: boolean;
|
|
306
375
|
column: VTableColumn;
|
|
307
376
|
}) => VNode_2;
|
|
308
377
|
/** 自定义筛选下拉 */
|
|
309
|
-
customFilterDropdown?: (
|
|
378
|
+
customFilterDropdown?: (props: {
|
|
310
379
|
confirm: () => void;
|
|
311
380
|
reset: () => void;
|
|
312
381
|
setFilterValue: (value: any) => void;
|
|
@@ -314,16 +383,11 @@ export declare interface VTableSlots<TData = any> {
|
|
|
314
383
|
filterModelValue: any;
|
|
315
384
|
}) => VNode_2;
|
|
316
385
|
/** 自定义展开行 */
|
|
317
|
-
expandedRowRender?: (
|
|
386
|
+
expandedRowRender?: (props: {
|
|
318
387
|
row: TData;
|
|
319
388
|
}) => VNode_2;
|
|
320
389
|
/** 自定义 Popover */
|
|
321
|
-
customPopover?: (props:
|
|
322
|
-
open: boolean;
|
|
323
|
-
onOpenChange: (value: boolean) => void;
|
|
324
|
-
trigger: () => VNode_2;
|
|
325
|
-
content: () => VNode_2;
|
|
326
|
-
}) => VNode_2;
|
|
390
|
+
customPopover?: (props: VTablePopoverProps) => VNode_2;
|
|
327
391
|
/** 自定义分页器 */
|
|
328
392
|
customPagination?: (props: VTablePaginationProps) => VNode_2;
|
|
329
393
|
/** 自定义 checkbox */
|
|
@@ -332,18 +396,58 @@ export declare interface VTableSlots<TData = any> {
|
|
|
332
396
|
customEmpty?: () => VNode_2;
|
|
333
397
|
/** 自定义 loading 图标 */
|
|
334
398
|
customLoadingIcon?: () => VNode_2;
|
|
399
|
+
/** 自定义加载没有更多区域 */
|
|
400
|
+
customLoadNoMore?: () => VNode_2;
|
|
401
|
+
/** 自定义表尾 */
|
|
402
|
+
customFooter?: () => VNode_2;
|
|
403
|
+
/** 自定义展开图标 */
|
|
404
|
+
customExpandIcon?: (props: VTableExpandIconProps) => VNode_2;
|
|
405
|
+
/** 自定义组件图标 */
|
|
406
|
+
customSorterIcon?: (props: VTableSorterIconProps) => VNode_2;
|
|
335
407
|
[key: string]: ((...args: any[]) => VNode_2) | undefined;
|
|
336
408
|
}
|
|
337
409
|
|
|
410
|
+
/** 排序图标自定义组件接口定义 */
|
|
411
|
+
export declare interface VTableSorterIconProps {
|
|
412
|
+
sort: 'asc' | 'desc' | null;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
/** 排序状态 */
|
|
338
416
|
export declare type VTableSortingState = SortingState;
|
|
339
417
|
|
|
340
|
-
|
|
418
|
+
/** 表格主题配置 */
|
|
419
|
+
export declare interface VTableThemeConfig {
|
|
420
|
+
/** 主色 */
|
|
421
|
+
primaryColor?: string;
|
|
422
|
+
/** 表头样式 */
|
|
423
|
+
header?: Partial<VTableHeaderStyle>;
|
|
424
|
+
/** 表体样式 */
|
|
425
|
+
body?: Partial<VTableBodyStyle>;
|
|
426
|
+
/** 边框样式 */
|
|
427
|
+
border?: Partial<VTableBorderStyle>;
|
|
428
|
+
/** 行 hover 颜色 */
|
|
429
|
+
rowHoverColor?: string;
|
|
430
|
+
/** z-index 层级配置 */
|
|
431
|
+
zIndex?: VTableZIndexConfig;
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
export declare interface VTableTreeConfig {
|
|
341
435
|
/** 是否启用树形结构 */
|
|
342
436
|
enabled?: boolean;
|
|
343
437
|
/** 子节点字段名,默认为 'children' */
|
|
344
438
|
childrenKey?: string;
|
|
345
439
|
/** 缩进距离 */
|
|
346
440
|
indentSize?: number;
|
|
347
|
-
}
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
/** z-index 层级配置 */
|
|
444
|
+
export declare interface VTableZIndexConfig {
|
|
445
|
+
/** 固定列(左右固定) */
|
|
446
|
+
pinnedColumn?: number;
|
|
447
|
+
/** 固定表头 */
|
|
448
|
+
fixedHeader?: number;
|
|
449
|
+
/** 固定表尾 */
|
|
450
|
+
fixedFooter?: number;
|
|
451
|
+
}
|
|
348
452
|
|
|
349
453
|
export { }
|