stk-table-vue 0.11.2 → 0.11.4
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/lib/index-t5SJ6KNv.js +1 -1
- package/lib/src/StkTable/StkTable.vue.d.ts +43 -30
- package/lib/src/StkTable/index.d.ts +1 -1
- package/lib/src/StkTable/types/index.d.ts +47 -20
- package/lib/src/StkTable/useSorter.d.ts +38 -0
- package/lib/stk-table-vue.js +255 -153
- package/lib/style.css +6 -5
- package/lib/test/setSorter.test.d.ts +1 -0
- package/package.json +1 -1
- package/src/StkTable/StkTable.vue +49 -138
- package/src/StkTable/index.ts +1 -1
- package/src/StkTable/style.less +3 -2
- package/src/StkTable/types/index.ts +49 -20
- package/src/StkTable/useSorter.ts +262 -0
- package/src/StkTable/useVirtualScroll.ts +6 -2
package/lib/index-t5SJ6KNv.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FilterStatus } from './components/Filter/types';
|
|
2
|
-
import { AreaSelectionConfig, AreaSelectionRange, AutoRowHeightConfig, ColResizableConfig, DragRowConfig, ExpandConfig, ExperimentalConfig, HeaderDragConfig, HighlightConfig, Order, PrivateRowDT, PrivateStkTableColumn, RowActiveOption, SeqConfig, SortConfig,
|
|
2
|
+
import { AreaSelectionConfig, AreaSelectionRange, AutoRowHeightConfig, ColResizableConfig, DragRowConfig, ExpandConfig, ExperimentalConfig, FooterConfig, HeaderDragConfig, HighlightConfig, Order, PrivateRowDT, PrivateStkTableColumn, RowActiveOption, SeqConfig, SortConfig, StkTableColumn, TreeConfig, UniqKey, UniqKeyProp } from './types/index';
|
|
3
3
|
import { ScrollbarOptions } from './useScrollbar';
|
|
4
4
|
|
|
5
5
|
/** Generic stands for DataType */
|
|
@@ -28,23 +28,6 @@ declare function setCurrentRow(rowKeyOrRow: string | undefined | DT, option?: {
|
|
|
28
28
|
declare function setSelectedCell(row?: DT, col?: StkTableColumn<DT>, option?: {
|
|
29
29
|
silent: boolean;
|
|
30
30
|
}): void;
|
|
31
|
-
/**
|
|
32
|
-
* 设置表头排序状态。
|
|
33
|
-
* @param colKey 列唯一键字段。如果你想要取消排序状态,请使用`resetSorter`
|
|
34
|
-
* @param order 正序倒序
|
|
35
|
-
* @param option.sortOption 指定排序参数。同 StkTableColumn 中排序相关字段。建议从columns中find得到。
|
|
36
|
-
* @param option.sort 是否触发排序-默认true
|
|
37
|
-
* @param option.silent 是否禁止触发回调-默认true
|
|
38
|
-
* @param option.force 是否触发排序-默认true
|
|
39
|
-
* @return 表格数据
|
|
40
|
-
*/
|
|
41
|
-
declare function setSorter(colKey: string, order: Order, option?: {
|
|
42
|
-
sortOption?: SortOption<DT>;
|
|
43
|
-
force?: boolean;
|
|
44
|
-
silent?: boolean;
|
|
45
|
-
sort?: boolean;
|
|
46
|
-
}): any[];
|
|
47
|
-
declare function resetSorter(): void;
|
|
48
31
|
/**
|
|
49
32
|
* set scroll bar position
|
|
50
33
|
* @param top null to not change
|
|
@@ -53,14 +36,6 @@ declare function resetSorter(): void;
|
|
|
53
36
|
declare function scrollTo(top?: number | null, left?: number | null): void;
|
|
54
37
|
/** get current table data */
|
|
55
38
|
declare function getTableData(): any[];
|
|
56
|
-
/**
|
|
57
|
-
* get current sort info
|
|
58
|
-
* @return {{key:string,order:Order}[]}
|
|
59
|
-
*/
|
|
60
|
-
declare function getSortColumns(): {
|
|
61
|
-
key: string | number | symbol | undefined;
|
|
62
|
-
order: "desc" | "asc";
|
|
63
|
-
}[];
|
|
64
39
|
declare function __VLS_template(): {
|
|
65
40
|
tableHeader?(_: {
|
|
66
41
|
col: PrivateStkTableColumn<PrivateRowDT>;
|
|
@@ -228,6 +203,8 @@ declare const __VLS_component: import('vue').DefineComponent<import('vue').Extra
|
|
|
228
203
|
experimental?: ExperimentalConfig;
|
|
229
204
|
/** 表格底部合计行数据 */
|
|
230
205
|
footerData?: DT[];
|
|
206
|
+
/** 表格底部配置 */
|
|
207
|
+
footerConfig?: FooterConfig;
|
|
231
208
|
}>, {
|
|
232
209
|
width: string;
|
|
233
210
|
fixedMode: boolean;
|
|
@@ -285,6 +262,9 @@ declare const __VLS_component: import('vue').DefineComponent<import('vue').Extra
|
|
|
285
262
|
scrollRowByRow: boolean;
|
|
286
263
|
scrollbar: boolean;
|
|
287
264
|
experimental: () => {};
|
|
265
|
+
footerConfig: () => {
|
|
266
|
+
position: string;
|
|
267
|
+
};
|
|
288
268
|
}>>, {
|
|
289
269
|
/**
|
|
290
270
|
* 重新计算虚拟列表宽高
|
|
@@ -340,28 +320,55 @@ declare const __VLS_component: import('vue').DefineComponent<import('vue').Extra
|
|
|
340
320
|
*
|
|
341
321
|
* en: Table sort column colKey
|
|
342
322
|
*/
|
|
343
|
-
sortCol: import('vue').
|
|
323
|
+
sortCol: import('vue').ComputedRef<string | number | symbol | undefined>;
|
|
324
|
+
/**
|
|
325
|
+
* 排序状态数组
|
|
326
|
+
*
|
|
327
|
+
* en: Multi-column sort states array
|
|
328
|
+
*/
|
|
329
|
+
sortStates: import('vue').Ref<{
|
|
330
|
+
key?: any;
|
|
331
|
+
dataIndex: string;
|
|
332
|
+
sortField?: string | number | symbol | undefined;
|
|
333
|
+
sortType?: "number" | "string" | undefined;
|
|
334
|
+
order: Order;
|
|
335
|
+
}[], {
|
|
336
|
+
key?: any;
|
|
337
|
+
dataIndex: string;
|
|
338
|
+
sortField?: string | number | symbol | undefined;
|
|
339
|
+
sortType?: "number" | "string" | undefined;
|
|
340
|
+
order: Order;
|
|
341
|
+
}[] | import('.').SortState<any>[]>;
|
|
344
342
|
/**
|
|
345
343
|
* 表格排序列顺序
|
|
346
344
|
*
|
|
347
345
|
* en: get current sort info
|
|
348
346
|
* @see {@link getSortColumns}
|
|
349
347
|
*/
|
|
350
|
-
getSortColumns:
|
|
348
|
+
getSortColumns: () => {
|
|
349
|
+
key: string | number | symbol | undefined;
|
|
350
|
+
order: Order;
|
|
351
|
+
}[];
|
|
351
352
|
/**
|
|
352
353
|
* 设置表头排序状态
|
|
353
354
|
*
|
|
354
355
|
* en: Set the sort status of the table header
|
|
355
356
|
* @see {@link setSorter}
|
|
356
357
|
*/
|
|
357
|
-
setSorter:
|
|
358
|
+
setSorter: (colKey: string, order: Order, option?: {
|
|
359
|
+
sortOption?: import('.').SortOption<any> | undefined;
|
|
360
|
+
force?: boolean;
|
|
361
|
+
silent?: boolean;
|
|
362
|
+
sort?: boolean;
|
|
363
|
+
append?: boolean;
|
|
364
|
+
}) => any[];
|
|
358
365
|
/**
|
|
359
366
|
* 重置sorter状态
|
|
360
367
|
*
|
|
361
368
|
* en: Reset the sorter status
|
|
362
369
|
* @see {@link resetSorter}
|
|
363
370
|
*/
|
|
364
|
-
resetSorter:
|
|
371
|
+
resetSorter: () => void;
|
|
365
372
|
/**
|
|
366
373
|
* 滚动至
|
|
367
374
|
*
|
|
@@ -660,6 +667,8 @@ declare const __VLS_component: import('vue').DefineComponent<import('vue').Extra
|
|
|
660
667
|
experimental?: ExperimentalConfig;
|
|
661
668
|
/** 表格底部合计行数据 */
|
|
662
669
|
footerData?: DT[];
|
|
670
|
+
/** 表格底部配置 */
|
|
671
|
+
footerConfig?: FooterConfig;
|
|
663
672
|
}>, {
|
|
664
673
|
width: string;
|
|
665
674
|
fixedMode: boolean;
|
|
@@ -717,6 +726,9 @@ declare const __VLS_component: import('vue').DefineComponent<import('vue').Extra
|
|
|
717
726
|
scrollRowByRow: boolean;
|
|
718
727
|
scrollbar: boolean;
|
|
719
728
|
experimental: () => {};
|
|
729
|
+
footerConfig: () => {
|
|
730
|
+
position: string;
|
|
731
|
+
};
|
|
720
732
|
}>>> & Readonly<{
|
|
721
733
|
onScroll?: ((ev: Event, data: {
|
|
722
734
|
startIndex: number;
|
|
@@ -829,6 +841,7 @@ declare const __VLS_component: import('vue').DefineComponent<import('vue').Extra
|
|
|
829
841
|
scrollRowByRow: boolean | "scrollbar";
|
|
830
842
|
experimental: ExperimentalConfig;
|
|
831
843
|
footerData: DT[];
|
|
844
|
+
footerConfig: FooterConfig;
|
|
832
845
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
833
846
|
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, ReturnType<typeof __VLS_template>>;
|
|
834
847
|
export default _default;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { default as StkTable } from './StkTable.vue';
|
|
2
2
|
export { tableSort, insertToOrderedArray, strCompare, binarySearch } from './utils';
|
|
3
|
-
export type { StkTableColumn } from './types/index';
|
|
3
|
+
export type { StkTableColumn, SortState, SortConfig, SortOption, Order } from './types/index';
|
|
4
4
|
export { useAreaSelection } from './features/index';
|
|
5
5
|
export { registerFeature } from './registerFeature';
|
|
6
6
|
export { useFilter } from './components/Filter';
|
|
@@ -187,12 +187,37 @@ export type PrivateRowDT = {
|
|
|
187
187
|
children?: any[];
|
|
188
188
|
};
|
|
189
189
|
export type SortOption<T extends Record<string, any>> = Pick<StkTableColumn<T>, 'sorter' | 'dataIndex' | 'sortField' | 'sortType'>;
|
|
190
|
-
|
|
190
|
+
/**
|
|
191
|
+
* 单列排序状态
|
|
192
|
+
*/
|
|
193
|
+
export type SortState<T extends Record<string, any>> = Pick<StkTableColumn<T>, 'key' | 'dataIndex' | 'sortField' | 'sortType'> & {
|
|
191
194
|
order: Order;
|
|
192
195
|
};
|
|
193
196
|
export type UniqKey = string | number;
|
|
194
197
|
export type UniqKeyFun = (param: any) => UniqKey;
|
|
195
198
|
export type UniqKeyProp = UniqKey | UniqKeyFun;
|
|
199
|
+
/**
|
|
200
|
+
* 默认排序配置
|
|
201
|
+
*/
|
|
202
|
+
export type DefaultSortConfig<T extends Record<string, any>> = {
|
|
203
|
+
/**
|
|
204
|
+
* colKey
|
|
205
|
+
*
|
|
206
|
+
* if set `props.colKey`
|
|
207
|
+
*
|
|
208
|
+
* default: StkTableColumn<T>['dataIndex']
|
|
209
|
+
*/
|
|
210
|
+
key?: StkTableColumn<T>['key'];
|
|
211
|
+
dataIndex: StkTableColumn<T>['dataIndex'];
|
|
212
|
+
order: Order;
|
|
213
|
+
sortField?: StkTableColumn<T>['sortField'];
|
|
214
|
+
sortType?: StkTableColumn<T>['sortType'];
|
|
215
|
+
sorter?: StkTableColumn<T>['sorter'];
|
|
216
|
+
/**
|
|
217
|
+
* whether to disable trigger`sort-change` event. default: false
|
|
218
|
+
*/
|
|
219
|
+
silent?: boolean;
|
|
220
|
+
};
|
|
196
221
|
export type SortConfig<T extends Record<string, any>> = {
|
|
197
222
|
/**
|
|
198
223
|
* TODO: Sort icon display strategy
|
|
@@ -204,25 +229,7 @@ export type SortConfig<T extends Record<string, any>> = {
|
|
|
204
229
|
* 1. trigger when init
|
|
205
230
|
* 2. trigger when sort direction is null
|
|
206
231
|
*/
|
|
207
|
-
defaultSort?:
|
|
208
|
-
/**
|
|
209
|
-
* colKey
|
|
210
|
-
*
|
|
211
|
-
* if set `props.colKey`
|
|
212
|
-
*
|
|
213
|
-
* default: StkTableColumn<T>['dataIndex']
|
|
214
|
-
*/
|
|
215
|
-
key?: StkTableColumn<T>['key'];
|
|
216
|
-
dataIndex: StkTableColumn<T>['dataIndex'];
|
|
217
|
-
order: Order;
|
|
218
|
-
sortField?: StkTableColumn<T>['sortField'];
|
|
219
|
-
sortType?: StkTableColumn<T>['sortType'];
|
|
220
|
-
sorter?: StkTableColumn<T>['sorter'];
|
|
221
|
-
/**
|
|
222
|
-
* whether to disable trigger`sort-change` event. default: false
|
|
223
|
-
*/
|
|
224
|
-
silent?: boolean;
|
|
225
|
-
};
|
|
232
|
+
defaultSort?: DefaultSortConfig<T>;
|
|
226
233
|
/** empty value always sort to bottom */
|
|
227
234
|
emptyToBottom?: boolean;
|
|
228
235
|
/**
|
|
@@ -234,6 +241,17 @@ export type SortConfig<T extends Record<string, any>> = {
|
|
|
234
241
|
* whether to sort children when sort current column. default: false
|
|
235
242
|
*/
|
|
236
243
|
sortChildren?: boolean;
|
|
244
|
+
/**
|
|
245
|
+
* 是否启用多列排序
|
|
246
|
+
* - false (default): 单列排序,点击新列会取消之前列的排序
|
|
247
|
+
* - true: 多列排序,支持同时按多列排序,通过点击顺序决定优先级
|
|
248
|
+
*/
|
|
249
|
+
multiSort?: boolean;
|
|
250
|
+
/**
|
|
251
|
+
* 多列排序时的最大列数限制
|
|
252
|
+
* default: 3
|
|
253
|
+
*/
|
|
254
|
+
multiSortLimit?: number;
|
|
237
255
|
};
|
|
238
256
|
/** th td type */
|
|
239
257
|
export declare const enum TagType {
|
|
@@ -329,4 +347,13 @@ export type ExperimentalConfig = {
|
|
|
329
347
|
/** use transform to simulate scroll */
|
|
330
348
|
scrollY?: boolean;
|
|
331
349
|
};
|
|
350
|
+
/** 表格底部配置 */
|
|
351
|
+
export type FooterConfig = {
|
|
352
|
+
/**
|
|
353
|
+
* 表格底部吸附位置
|
|
354
|
+
* - bottom: 吸附在表格底部(默认)
|
|
355
|
+
* - top: 吸附在表格顶部
|
|
356
|
+
*/
|
|
357
|
+
position?: 'bottom' | 'top';
|
|
358
|
+
};
|
|
332
359
|
export {};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Ref } from 'vue';
|
|
2
|
+
import { Order, SortOption, SortState, StkTableColumn, UniqKey } from './types/index';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* 排序 Hook
|
|
6
|
+
* 管理表格排序状态和相关操作
|
|
7
|
+
* @param props 表格 props
|
|
8
|
+
* @param colKeyGen 列 key 生成函数
|
|
9
|
+
* @param tableHeaderLast 表头最后一行(叶子节点)
|
|
10
|
+
* @param dataSourceCopy 数据源副本 ref
|
|
11
|
+
* @param initDataSource 初始化数据源函数
|
|
12
|
+
* @param emits 事件发射函数
|
|
13
|
+
* @returns 排序相关状态和方法
|
|
14
|
+
*/
|
|
15
|
+
export declare function useSorter<DT extends Record<string, any>>(props: any, emits: any, colKeyGen: Ref<(col: StkTableColumn<DT>) => string>, tableHeaderLast: Ref<StkTableColumn<DT>[]>, dataSourceCopy: Ref<DT[]>, initDataSource: (data?: DT[], option?: {
|
|
16
|
+
forceSort?: boolean;
|
|
17
|
+
}) => void): readonly [Ref<{
|
|
18
|
+
key?: any;
|
|
19
|
+
dataIndex: import('vue').UnwrapRef<keyof DT & string>;
|
|
20
|
+
sortField?: import('vue').UnwrapRef<keyof DT> | undefined;
|
|
21
|
+
sortType?: "number" | "string" | undefined;
|
|
22
|
+
order: Order;
|
|
23
|
+
}[], SortState<DT>[] | {
|
|
24
|
+
key?: any;
|
|
25
|
+
dataIndex: import('vue').UnwrapRef<keyof DT & string>;
|
|
26
|
+
sortField?: import('vue').UnwrapRef<keyof DT> | undefined;
|
|
27
|
+
sortType?: "number" | "string" | undefined;
|
|
28
|
+
order: Order;
|
|
29
|
+
}[]>, import('vue').ComputedRef<keyof DT | undefined>, (col: StkTableColumn<DT> | undefined | null) => void, (colKey: string, order: Order, option?: {
|
|
30
|
+
sortOption?: SortOption<DT>;
|
|
31
|
+
force?: boolean;
|
|
32
|
+
silent?: boolean;
|
|
33
|
+
sort?: boolean;
|
|
34
|
+
append?: boolean;
|
|
35
|
+
}) => DT[], () => void, () => {
|
|
36
|
+
key: keyof DT | undefined;
|
|
37
|
+
order: Order;
|
|
38
|
+
}[], () => void, (colKey: UniqKey) => SortState<DT> | undefined, (dataSource: DT[]) => DT[]];
|