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.
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * name: stk-table-vue
3
- * version: v0.11.2
3
+ * version: v0.11.4
4
4
  * description: High performance realtime virtual table for vue3 and vue2.7
5
5
  * author: japlus
6
6
  * homepage: https://ja-plus.github.io/stk-table-vue/
@@ -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, SortOption, StkTableColumn, TreeConfig, UniqKey, UniqKeyProp } from './types/index';
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').Ref<string | number | symbol | undefined, string | number | symbol | undefined>;
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: typeof 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: typeof 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: typeof 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
- export type SortState<T extends Record<string, any>> = Pick<StkTableColumn<T>, 'dataIndex' | 'sortField' | 'sortType'> & {
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[]];