stk-table-vue 0.11.11 → 0.11.13
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-C40Rz-HL.js → index-BzpbBYPO.js} +2 -3
- package/lib/src/StkTable/StkTable.vue.d.ts +12 -3
- package/lib/src/StkTable/custom-cells/EditableCell/EditableCell.vue.d.ts +18 -0
- package/lib/src/StkTable/custom-cells/EditableCell/createEditableCell.d.ts +33 -0
- package/lib/src/StkTable/custom-cells/EditableCell/index.d.ts +3 -0
- package/lib/src/StkTable/{components/Filter/useFilter.d.ts → custom-cells/Filter/createFilter.d.ts} +5 -15
- package/lib/src/StkTable/custom-cells/Filter/index.d.ts +2 -0
- package/lib/src/StkTable/custom-cells/Filter/types.d.ts +38 -0
- package/lib/src/StkTable/features/useAreaSelection.d.ts +3 -2
- package/lib/src/StkTable/index.d.ts +7 -5
- package/lib/src/StkTable/types/index.d.ts +15 -0
- package/lib/src/StkTable/utils/index.d.ts +2 -0
- package/lib/stk-table-vue.js +518 -280
- package/lib/style.css +55 -18
- package/package.json +2 -2
- package/src/StkTable/StkTable.vue +121 -77
- package/src/StkTable/custom-cells/EditableCell/EditableCell.less +18 -0
- package/src/StkTable/custom-cells/EditableCell/EditableCell.vue +100 -0
- package/src/StkTable/custom-cells/EditableCell/createEditableCell.ts +41 -0
- package/src/StkTable/custom-cells/EditableCell/index.ts +5 -0
- package/src/StkTable/{components → custom-cells}/Filter/Dropdown/index.ts +16 -16
- package/src/StkTable/{components → custom-cells}/Filter/Dropdown/index.vue +184 -185
- package/src/StkTable/{components → custom-cells}/Filter/Filter.less +118 -129
- package/src/StkTable/{components → custom-cells}/Filter/Filter.vue +66 -61
- package/src/StkTable/{components/Filter/useFilter.ts → custom-cells/Filter/createFilter.ts} +103 -90
- package/src/StkTable/custom-cells/Filter/index.ts +6 -0
- package/src/StkTable/custom-cells/Filter/types.ts +39 -0
- package/src/StkTable/features/useAreaSelection.ts +138 -86
- package/src/StkTable/index.ts +9 -6
- package/src/StkTable/registerFeature.ts +1 -0
- package/src/StkTable/style.less +16 -0
- package/src/StkTable/types/index.ts +11 -0
- package/src/StkTable/useScrollbar.ts +12 -4
- package/src/StkTable/useThDrag.ts +4 -6
- package/src/StkTable/utils/index.ts +10 -3
- package/lib/src/StkTable/components/Filter/index.d.ts +0 -2
- package/lib/src/StkTable/components/Filter/types.d.ts +0 -11
- package/src/StkTable/components/Filter/index.ts +0 -6
- package/src/StkTable/components/Filter/types.ts +0 -18
- /package/lib/src/StkTable/{components → custom-cells}/Filter/Dropdown/index.d.ts +0 -0
- /package/lib/src/StkTable/{components → custom-cells}/Filter/Dropdown/index.vue.d.ts +0 -0
- /package/lib/src/StkTable/{components → custom-cells}/Filter/Filter.vue.d.ts +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* name: stk-table-vue
|
|
3
|
-
* version: v0.11.
|
|
3
|
+
* version: v0.11.12
|
|
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/
|
|
7
7
|
* license: MIT
|
|
8
8
|
*/
|
|
9
|
-
import { defineComponent, ref, reactive, h, onMounted, onUnmounted, createElementBlock, openBlock, withModifiers, normalizeStyle, normalizeClass,
|
|
9
|
+
import { defineComponent, ref, reactive, h, onMounted, onUnmounted, createElementBlock, openBlock, withModifiers, normalizeStyle, normalizeClass, createVNode, createElementVNode, nextTick } from "vue";
|
|
10
10
|
import { StkTable as _sfc_main$1 } from "./stk-table-vue.js";
|
|
11
11
|
const DROPDOWN_DEFAULT_WIDTH = 300;
|
|
12
12
|
const DROPDOWN_DEFAULT_HEIGHT = 400;
|
|
@@ -140,7 +140,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
140
140
|
onClick: _cache[0] || (_cache[0] = withModifiers(() => {
|
|
141
141
|
}, ["stop"]))
|
|
142
142
|
}, [
|
|
143
|
-
_cache[1] || (_cache[1] = createElementVNode("div", { style: { "padding": "4px" } }, "Filter (Beta)", -1)),
|
|
144
143
|
createVNode(_sfc_main$1, {
|
|
145
144
|
"row-key": "id",
|
|
146
145
|
headless: "",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FilterStatus } from './
|
|
1
|
+
import { FilterStatus } from './custom-cells/Filter/types';
|
|
2
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
|
|
|
@@ -343,6 +343,8 @@ declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<im
|
|
|
343
343
|
* @see {@link getTableData}
|
|
344
344
|
*/
|
|
345
345
|
getTableData: () => any[];
|
|
346
|
+
getRowIndex: (row: any) => number;
|
|
347
|
+
getColumnIndex: (column: PrivateStkTableColumn<any>) => number;
|
|
346
348
|
/**
|
|
347
349
|
* 设置展开的行
|
|
348
350
|
*
|
|
@@ -391,6 +393,13 @@ declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<im
|
|
|
391
393
|
cols: StkTableColumn<any>[];
|
|
392
394
|
ranges: AreaSelectionRange[];
|
|
393
395
|
};
|
|
396
|
+
/**
|
|
397
|
+
* 设置拖选选区
|
|
398
|
+
*
|
|
399
|
+
* en: Set cell selection range (areaSelection=true)
|
|
400
|
+
* @see {@link setAreaSelection}
|
|
401
|
+
*/
|
|
402
|
+
setAreaSelection: (ranges?: import('./types/index').AreaSelectionSetterRange<any> | undefined, option?: import('./types/index').AreaSelectionSetterOption) => AreaSelectionRange[];
|
|
394
403
|
/**
|
|
395
404
|
* 清空拖选选区
|
|
396
405
|
*
|
|
@@ -406,9 +415,9 @@ declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<im
|
|
|
406
415
|
*/
|
|
407
416
|
copySelectedArea: () => string;
|
|
408
417
|
/**
|
|
409
|
-
* 设置筛选状态
|
|
418
|
+
* 设置筛选状态(Beta)
|
|
410
419
|
*
|
|
411
|
-
* en: Set filter status
|
|
420
|
+
* en: Set filter status(Beta)
|
|
412
421
|
* @see {@link setFilter}
|
|
413
422
|
*/
|
|
414
423
|
setFilter: (status: Record<UniqKey, FilterStatus> | null, option?: {
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { CustomCellProps } from '../../types';
|
|
2
|
+
|
|
3
|
+
declare const _default: <T extends Record<string, any>>(__VLS_props: Awaited<typeof __VLS_setup>["props"], __VLS_ctx?: __VLS_Prettify<Pick<Awaited<typeof __VLS_setup>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
4
|
+
props: __VLS_Prettify<__VLS_OmitKeepDiscriminatedUnion<(Partial<{}> & Omit<{} & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps, never>) & (CustomCellProps<T> & {
|
|
5
|
+
trigger?: "dblclick" | "click";
|
|
6
|
+
onChange?: (newValue: any) => void;
|
|
7
|
+
}), keyof import('vue').VNodeProps | keyof import('vue').AllowedComponentProps>> & {} & (import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps);
|
|
8
|
+
expose(exposed: import('vue').ShallowUnwrapRef<{}>): void;
|
|
9
|
+
attrs: any;
|
|
10
|
+
slots: ReturnType<() => {}>;
|
|
11
|
+
emit: typeof __VLS_emit;
|
|
12
|
+
}>) => import('vue').VNode & {
|
|
13
|
+
__ctx?: Awaited<typeof __VLS_setup>;
|
|
14
|
+
};
|
|
15
|
+
export default _default;
|
|
16
|
+
type __VLS_Prettify<T> = {
|
|
17
|
+
[K in keyof T]: T[K];
|
|
18
|
+
} & {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/** createEditableCell 配置选项 */
|
|
2
|
+
export interface CreateEditableCellOptions {
|
|
3
|
+
/** 触发编辑的事件,默认 'dblclick' */
|
|
4
|
+
trigger?: 'dblclick' | 'click';
|
|
5
|
+
/** 值变更回调 */
|
|
6
|
+
onChange?: (newValue: any, row: Record<string, any>, dataIndex: string) => void;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* 可编辑单元格工厂函数
|
|
10
|
+
* @param option 配置选项
|
|
11
|
+
* @returns EditableCell 组件
|
|
12
|
+
*/
|
|
13
|
+
export declare function createEditableCell(option?: CreateEditableCellOptions): {
|
|
14
|
+
EditableCell: () => import('vue').Raw<import('vue').DefineComponent<{
|
|
15
|
+
row: any;
|
|
16
|
+
col: import('../..').StkTableColumn<any>;
|
|
17
|
+
cellValue: any;
|
|
18
|
+
rowIndex: number;
|
|
19
|
+
colIndex: number;
|
|
20
|
+
expanded?: import('../..').StkTableColumn<any> | undefined;
|
|
21
|
+
treeExpanded?: boolean | undefined;
|
|
22
|
+
}, () => import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
|
|
23
|
+
[key: string]: any;
|
|
24
|
+
}>, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
|
|
25
|
+
row: any;
|
|
26
|
+
col: import('../..').StkTableColumn<any>;
|
|
27
|
+
cellValue: any;
|
|
28
|
+
rowIndex: number;
|
|
29
|
+
colIndex: number;
|
|
30
|
+
expanded?: import('../..').StkTableColumn<any> | undefined;
|
|
31
|
+
treeExpanded?: boolean | undefined;
|
|
32
|
+
}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>>;
|
|
33
|
+
};
|
package/lib/src/StkTable/{components/Filter/useFilter.d.ts → custom-cells/Filter/createFilter.d.ts}
RENAMED
|
@@ -1,24 +1,14 @@
|
|
|
1
|
-
import { UniqKey } from '../../types';
|
|
1
|
+
import { CustomHeaderCellProps, UniqKey } from '../../types';
|
|
2
2
|
import { VNode } from 'vue';
|
|
3
|
-
import {
|
|
3
|
+
import { CreateFilterOption, FilterComponentConfig, FilterStatus } from './types';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
7
|
-
* @param dataSource 数据源
|
|
8
|
-
* @param columnKey 列名
|
|
9
|
-
* @returns 筛选选项数组
|
|
10
|
-
// */
|
|
11
|
-
/**
|
|
12
|
-
* 表格筛选功能Hook (BETA)
|
|
6
|
+
* 表格筛选功能工厂函数 (BETA)
|
|
13
7
|
* @beta
|
|
14
8
|
* @returns
|
|
15
9
|
*/
|
|
16
|
-
export declare function
|
|
17
|
-
|
|
18
|
-
}): {
|
|
19
|
-
Filter: (config?: {
|
|
20
|
-
options?: FilterOption[];
|
|
21
|
-
}, component?: VNode) => import('vue').Raw<import('vue').DefineComponent<{
|
|
10
|
+
export declare function createFilter(option?: CreateFilterOption): {
|
|
11
|
+
Filter: (config?: FilterComponentConfig, component?: VNode | ((props: CustomHeaderCellProps<any>) => VNode)) => import('vue').Raw<import('vue').DefineComponent<{
|
|
22
12
|
col: import('../../types').StkTableColumn<any>;
|
|
23
13
|
rowIndex: number;
|
|
24
14
|
colIndex: number;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/** 筛选选项接口 */
|
|
2
|
+
export interface FilterOption {
|
|
3
|
+
label: string;
|
|
4
|
+
value: any;
|
|
5
|
+
selected?: boolean;
|
|
6
|
+
}
|
|
7
|
+
/** 筛选状态接口 */
|
|
8
|
+
export interface FilterStatus {
|
|
9
|
+
value: FilterOption['value'][];
|
|
10
|
+
/**
|
|
11
|
+
* 自定义筛选逻辑函数。
|
|
12
|
+
* 当选中筛选条件时,根据此函数的返回值决定记录是否保留。
|
|
13
|
+
* @param row 当前行数据
|
|
14
|
+
* @param cellValue 当前单元格的值(即 row[columnKey])
|
|
15
|
+
* @param filterValues 当前选中的筛选值数组
|
|
16
|
+
* @returns 返回 true 保留记录,false 过滤掉
|
|
17
|
+
*/
|
|
18
|
+
filter?: (args: {
|
|
19
|
+
row: any;
|
|
20
|
+
cellValue: any;
|
|
21
|
+
filterValues: FilterOption['value'][];
|
|
22
|
+
}) => boolean;
|
|
23
|
+
}
|
|
24
|
+
/** FilterComponent 配置接口 */
|
|
25
|
+
export interface FilterComponentConfig {
|
|
26
|
+
options?: FilterOption[];
|
|
27
|
+
filter?: FilterStatus['filter'];
|
|
28
|
+
/**
|
|
29
|
+
* 是否自动从数据中提取筛选选项,默认 false
|
|
30
|
+
* en: Whether to automatically extract filter options from the data source
|
|
31
|
+
*/
|
|
32
|
+
autoOptions?: boolean;
|
|
33
|
+
}
|
|
34
|
+
/** createFilter选项接口 */
|
|
35
|
+
export interface CreateFilterOption {
|
|
36
|
+
/** 是否远程筛选 */
|
|
37
|
+
remote?: boolean;
|
|
38
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Ref, ShallowRef } from 'vue';
|
|
2
|
-
import { AreaSelectionConfig, AreaSelectionRange, CellKeyGen, ColKeyGen, StkTableColumn, UniqKey } from '../types';
|
|
2
|
+
import { AreaSelectionConfig, AreaSelectionRange, CellKeyGen, ColKeyGen, StkTableColumn, UniqKey, AreaSelectionSetterRange, AreaSelectionSetterOption } from '../types';
|
|
3
3
|
import { VirtualScrollStore, VirtualScrollXStore } from '../useVirtualScroll';
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -7,7 +7,7 @@ import { VirtualScrollStore, VirtualScrollXStore } from '../useVirtualScroll';
|
|
|
7
7
|
* 支持鼠标拖拽选择、键盘导航、复制粘贴等功能
|
|
8
8
|
* en: Cell area selection feature with mouse drag, keyboard navigation, copy-paste, etc.
|
|
9
9
|
*/
|
|
10
|
-
export declare function useAreaSelection<DT extends Record<string, any>>(props: any, emits: any, tableContainerRef: Ref<HTMLDivElement | undefined>, dataSourceCopy: ShallowRef<DT[]>, tableHeaderLast: ShallowRef<StkTableColumn<DT>[]>, colKeyGen: ColKeyGen, cellKeyGen: CellKeyGen, scrollTo: (top: number | null, left: number | null) => void, virtualScroll: Ref<VirtualScrollStore>, virtualScrollX: Ref<VirtualScrollXStore>): {
|
|
10
|
+
export declare function useAreaSelection<DT extends Record<string, any>>(props: any, emits: any, tableContainerRef: Ref<HTMLDivElement | undefined>, dataSourceCopy: ShallowRef<DT[]>, tableHeaderLast: ShallowRef<StkTableColumn<DT>[]>, colKeyGen: ColKeyGen, cellKeyGen: CellKeyGen, scrollTo: (top: number | null, left: number | null) => void, virtualScroll: Ref<VirtualScrollStore>, virtualScrollX: Ref<VirtualScrollXStore>, getRowIndex: (row: DT) => number, getColumnIndex: (col: StkTableColumn<DT>) => number): {
|
|
11
11
|
config: import('vue').ComputedRef<AreaSelectionConfig>;
|
|
12
12
|
isSelecting: Ref<boolean, boolean>;
|
|
13
13
|
getClass: (cellKey: string, absoluteRowIndex: number, colKey: UniqKey) => string[];
|
|
@@ -17,6 +17,7 @@ export declare function useAreaSelection<DT extends Record<string, any>>(props:
|
|
|
17
17
|
cols: StkTableColumn<DT>[];
|
|
18
18
|
ranges: AreaSelectionRange[];
|
|
19
19
|
};
|
|
20
|
+
set: (ranges?: AreaSelectionSetterRange<DT>, option?: AreaSelectionSetterOption) => AreaSelectionRange[];
|
|
20
21
|
clear: () => void;
|
|
21
22
|
copy: () => string;
|
|
22
23
|
onMD: (e: MouseEvent) => void;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
export { default as StkTable } from './StkTable.vue';
|
|
2
|
-
export { tableSort, insertToOrderedArray, strCompare, binarySearch } from './utils';
|
|
3
|
-
export type { StkTableColumn, SortState, SortConfig, SortOption, Order } from './types/index';
|
|
4
1
|
export { useAreaSelection } from './features/index';
|
|
5
2
|
export { registerFeature } from './registerFeature';
|
|
6
|
-
export {
|
|
7
|
-
export type {
|
|
3
|
+
export { default as StkTable } from './StkTable.vue';
|
|
4
|
+
export type { Order, SortConfig, SortOption, SortState, StkTableColumn } from './types/index';
|
|
5
|
+
export { binarySearch, insertToOrderedArray, strCompare, tableSort } from './utils';
|
|
6
|
+
export { createFilter } from './custom-cells/Filter/index';
|
|
7
|
+
export type { CreateFilterOption, FilterStatus } from './custom-cells/Filter/index';
|
|
8
|
+
export { createEditableCell } from './custom-cells/EditableCell/index';
|
|
9
|
+
export type { CreateEditableCellOptions } from './custom-cells/EditableCell/index';
|
|
@@ -384,6 +384,21 @@ export type AreaSelectionConfig<T extends Record<string, any> = any> = {
|
|
|
384
384
|
row?: boolean;
|
|
385
385
|
};
|
|
386
386
|
};
|
|
387
|
+
/** 获取选中的单元格信息 */
|
|
388
|
+
export type AreaSelectionSetterRange<DT extends Record<string, any>> = {
|
|
389
|
+
begin: {
|
|
390
|
+
row: number | DT;
|
|
391
|
+
col?: number | StkTableColumn<DT>;
|
|
392
|
+
};
|
|
393
|
+
end?: {
|
|
394
|
+
row: number | DT;
|
|
395
|
+
col?: number | StkTableColumn<DT>;
|
|
396
|
+
};
|
|
397
|
+
};
|
|
398
|
+
export type AreaSelectionSetterOption = {
|
|
399
|
+
silent?: boolean;
|
|
400
|
+
scrollToView?: boolean;
|
|
401
|
+
};
|
|
387
402
|
/** 实验性功能配置 */
|
|
388
403
|
export type ExperimentalConfig = {
|
|
389
404
|
/** use transform to simulate scroll */
|
|
@@ -52,6 +52,8 @@ export declare function transformWidthToStr(width?: string | number): string | u
|
|
|
52
52
|
export declare function getBrowsersVersion(browserName: string): number;
|
|
53
53
|
export declare function pureCellKeyGen(rowKey: UniqKey, colKey: UniqKey): string;
|
|
54
54
|
export declare function getClosestTr(target: HTMLElement): HTMLTableRowElement | null;
|
|
55
|
+
export declare function getClosestTh(target: HTMLElement): HTMLTableCellElement | null;
|
|
56
|
+
export declare function getClosestTd(target: HTMLElement): HTMLTableCellElement | null;
|
|
55
57
|
export declare function getClosestTrIndex(target: HTMLElement): number;
|
|
56
58
|
export declare function getClosestColKey(target: HTMLElement): string | undefined;
|
|
57
59
|
/**
|