stk-table-vue 0.0.1-beta.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/README.md +136 -0
- package/lib/StkTable/StkTable.vue.d.ts +169 -0
- package/lib/StkTable/const.d.ts +20 -0
- package/lib/StkTable/index.d.ts +2 -0
- package/lib/StkTable/types/index.d.ts +82 -0
- package/lib/StkTable/useColResize.d.ts +18 -0
- package/lib/StkTable/useThDrag.d.ts +14 -0
- package/lib/StkTable/useVirtualScroll.d.ts +35 -0
- package/lib/StkTable/utils.d.ts +23 -0
- package/lib/StkTableC/store.d.ts +12 -0
- package/lib/stk-table-vue.js +1054 -0
- package/lib/style.css +225 -0
- package/package.json +56 -0
- package/src/StkTable/StkTable.vue +1042 -0
- package/src/StkTable/const.ts +26 -0
- package/src/StkTable/index.ts +2 -0
- package/src/StkTable/types/index.ts +109 -0
- package/src/StkTable/useColResize.ts +172 -0
- package/src/StkTable/useHighlight.ts +150 -0
- package/src/StkTable/useThDrag.ts +43 -0
- package/src/StkTable/useVirtualScroll.ts +186 -0
- package/src/StkTable/utils.ts +132 -0
- package/src/StkTable.d.ts +17 -0
- package/src/StkTable.vue +1686 -0
- package/src/StkTableC/index.vue +193 -0
- package/src/StkTableC/store.js +6 -0
- package/src/StkTable_compatible.vue +590 -0
- package/src/VirtualTree.vue +617 -0
- package/src/VirtualTreeSelect.vue +338 -0
- package/src/images/sort-btn.svg +7 -0
- package/src/vite-env.d.ts +5 -0
package/README.md
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# StkTable
|
|
2
|
+
|
|
3
|
+
Vue3 简易虚拟滚动表格。用于实时数据展示,新数据行高亮渐暗动效。
|
|
4
|
+
js体积(38kb)
|
|
5
|
+
|
|
6
|
+
## 功能
|
|
7
|
+
* [x] 高亮行,单元格。
|
|
8
|
+
* [x] 横向虚拟滚动。
|
|
9
|
+
* [x] 列固定。
|
|
10
|
+
* [x] 表头拖动更改顺序。
|
|
11
|
+
* [x] 表头列宽拖动。
|
|
12
|
+
* [x] 多级表头。(不支持横向虚拟滚动)
|
|
13
|
+
|
|
14
|
+
## Usage
|
|
15
|
+
> npm install stk-table-vue
|
|
16
|
+
|
|
17
|
+
```html
|
|
18
|
+
<script>
|
|
19
|
+
import { StkTable } from 'stk-table-vue'
|
|
20
|
+
import { ref } from 'vue'
|
|
21
|
+
const stkTable = ref<InstanceType<typeof StkTable>>();
|
|
22
|
+
// highlight
|
|
23
|
+
// stkTable.value.setHighlightDimRow([rowId])
|
|
24
|
+
// stkTable.value.setHighlightDimCell(rowId,colId)
|
|
25
|
+
</script>
|
|
26
|
+
|
|
27
|
+
<template>
|
|
28
|
+
<StkTable row-key="id" :data-source="[]" :columns="[]" />
|
|
29
|
+
</template>
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
## API
|
|
33
|
+
### StkTable Component Props
|
|
34
|
+
```ts
|
|
35
|
+
export type StkProps = Partial<{
|
|
36
|
+
width: string;
|
|
37
|
+
|
|
38
|
+
/** 最小表格宽度 */
|
|
39
|
+
minWidth: string;
|
|
40
|
+
|
|
41
|
+
/** 表格最大宽度*/
|
|
42
|
+
maxWidth: string;
|
|
43
|
+
|
|
44
|
+
/** 是否隐藏表头 */
|
|
45
|
+
headless: boolean;
|
|
46
|
+
|
|
47
|
+
/** 主题,亮、暗 */
|
|
48
|
+
theme: 'light' | 'dark';
|
|
49
|
+
|
|
50
|
+
/** 虚拟滚动 */
|
|
51
|
+
virtual: boolean;
|
|
52
|
+
|
|
53
|
+
/** x轴虚拟滚动 */
|
|
54
|
+
virtualX: boolean;
|
|
55
|
+
|
|
56
|
+
/** 表格列配置 */
|
|
57
|
+
columns: StkTableColumn<any>[];
|
|
58
|
+
|
|
59
|
+
/** 表格数据源 */
|
|
60
|
+
dataSource: any[];
|
|
61
|
+
|
|
62
|
+
/** 行唯一键 */
|
|
63
|
+
rowKey: UniqKey;
|
|
64
|
+
|
|
65
|
+
/** 列唯一键 */
|
|
66
|
+
colKey: UniqKey;
|
|
67
|
+
|
|
68
|
+
/** 空值展示文字 */
|
|
69
|
+
emptyCellText: string;
|
|
70
|
+
|
|
71
|
+
/** 暂无数据兜底高度是否撑满 */
|
|
72
|
+
noDataFull: boolean;
|
|
73
|
+
|
|
74
|
+
/** 是否展示暂无数据 */
|
|
75
|
+
showNoData: boolean;
|
|
76
|
+
|
|
77
|
+
/** 是否服务端排序,true则不排序数据 */
|
|
78
|
+
sortRemote: boolean;
|
|
79
|
+
|
|
80
|
+
/** 表头是否溢出展示... */
|
|
81
|
+
showHeaderOverflow: boolean;
|
|
82
|
+
|
|
83
|
+
/** 表体溢出是否展示... */
|
|
84
|
+
showOverflow: boolean;
|
|
85
|
+
|
|
86
|
+
/** 是否增加行hover class */
|
|
87
|
+
showTrHoverClass: boolean;
|
|
88
|
+
|
|
89
|
+
/** 表头是否可拖动 */
|
|
90
|
+
headerDrag: boolean;
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* 给行附加className<br>
|
|
94
|
+
* FIXME: 是否需要优化,因为不传此prop会使表格行一直执行空函数,是否有影响
|
|
95
|
+
*/
|
|
96
|
+
rowClassName: (row: any, i: number) => string;
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* 列宽是否可拖动<br>
|
|
100
|
+
* **不要设置**列minWidth,**必须**设置width<br>
|
|
101
|
+
* 列宽拖动时,每一列都必须要有width,且minWidth/maxWidth不生效。table width会变为"fit-content"。
|
|
102
|
+
*/
|
|
103
|
+
colResizable: boolean;
|
|
104
|
+
|
|
105
|
+
/** 可拖动至最小的列宽 */
|
|
106
|
+
colMinWidth: number;
|
|
107
|
+
}>;
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
#### StkTableColumn
|
|
111
|
+
``` ts
|
|
112
|
+
type Sorter = boolean | Function;
|
|
113
|
+
|
|
114
|
+
export type StkTableColumn<T extends Record<string, any>> = {
|
|
115
|
+
dataIndex: keyof T & string;
|
|
116
|
+
title?: string;
|
|
117
|
+
align?: 'right' | 'left' | 'center';
|
|
118
|
+
headerAlign?: 'right' | 'left' | 'center';
|
|
119
|
+
sorter?: Sorter;
|
|
120
|
+
width?: string;
|
|
121
|
+
minWidth?: string;
|
|
122
|
+
maxWidth?: string;
|
|
123
|
+
headerClassName?: string;
|
|
124
|
+
className?: string;
|
|
125
|
+
sortField?: keyof T;
|
|
126
|
+
sortType?: 'number' | 'string';
|
|
127
|
+
fixed?: 'left' | 'right' | null;
|
|
128
|
+
|
|
129
|
+
/** private */ rowSpan?: number;
|
|
130
|
+
/** private */ colSpan?: number;
|
|
131
|
+
customCell?: Component | VNode;
|
|
132
|
+
customHeaderCell?: Component | VNode;
|
|
133
|
+
children?: StkTableColumn<T>[];
|
|
134
|
+
};
|
|
135
|
+
```
|
|
136
|
+
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { SortOption, StkProps, StkTableColumn } from '../StkTable/types/index';
|
|
2
|
+
/**
|
|
3
|
+
* 选中一行,
|
|
4
|
+
* @param {string} rowKey
|
|
5
|
+
* @param {boolean} option.silent 是否触发回调
|
|
6
|
+
*/
|
|
7
|
+
declare function setCurrentRow(rowKey: string, option?: {
|
|
8
|
+
silent: boolean;
|
|
9
|
+
}): void;
|
|
10
|
+
/** 高亮一个单元格 */
|
|
11
|
+
declare function setHighlightDimCell(rowKeyValue: string, dataIndex: string): void;
|
|
12
|
+
/**
|
|
13
|
+
* 高亮一行
|
|
14
|
+
* @param rowKeyValues
|
|
15
|
+
*/
|
|
16
|
+
declare function setHighlightDimRow(rowKeyValues: Array<string | number>): void;
|
|
17
|
+
/**
|
|
18
|
+
* 设置表头排序状态
|
|
19
|
+
* @param {string} dataIndex 列字段
|
|
20
|
+
* @param {'asc'|'desc'|null} order
|
|
21
|
+
* @param {object} option.sortOption 指定排序参数
|
|
22
|
+
* @param {boolean} option.sort 是否触发排序
|
|
23
|
+
* @param {boolean} option.silent 是否触发回调
|
|
24
|
+
*/
|
|
25
|
+
declare function setSorter(dataIndex: string, order: null | 'asc' | 'desc', option?: {
|
|
26
|
+
sortOption?: SortOption;
|
|
27
|
+
silent?: boolean;
|
|
28
|
+
sort?: boolean;
|
|
29
|
+
}): any[];
|
|
30
|
+
/** 重置排序 */
|
|
31
|
+
declare function resetSorter(): void;
|
|
32
|
+
/** 滚动 */
|
|
33
|
+
declare function scrollTo(top?: number, left?: number): void;
|
|
34
|
+
/** 获取当前状态的表格数据 */
|
|
35
|
+
declare function getTableData(): any[];
|
|
36
|
+
declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<StkProps>, {
|
|
37
|
+
width: string;
|
|
38
|
+
minWidth: string;
|
|
39
|
+
maxWidth: string;
|
|
40
|
+
headless: boolean;
|
|
41
|
+
theme: string;
|
|
42
|
+
virtual: boolean;
|
|
43
|
+
virtualX: boolean;
|
|
44
|
+
columns: () => never[];
|
|
45
|
+
dataSource: () => never[];
|
|
46
|
+
rowKey: string;
|
|
47
|
+
colKey: string;
|
|
48
|
+
emptyCellText: string;
|
|
49
|
+
noDataFull: boolean;
|
|
50
|
+
showNoData: boolean;
|
|
51
|
+
sortRemote: boolean;
|
|
52
|
+
showHeaderOverflow: boolean;
|
|
53
|
+
showOverflow: boolean;
|
|
54
|
+
showTrHoverClass: boolean;
|
|
55
|
+
headerDrag: boolean;
|
|
56
|
+
rowClassName: () => "";
|
|
57
|
+
colResizable: boolean;
|
|
58
|
+
colMinWidth: number;
|
|
59
|
+
}>, {
|
|
60
|
+
setCurrentRow: typeof setCurrentRow;
|
|
61
|
+
setHighlightDimCell: typeof setHighlightDimCell;
|
|
62
|
+
setHighlightDimRow: typeof setHighlightDimRow;
|
|
63
|
+
setSorter: typeof setSorter;
|
|
64
|
+
resetSorter: typeof resetSorter;
|
|
65
|
+
scrollTo: typeof scrollTo;
|
|
66
|
+
getTableData: typeof getTableData;
|
|
67
|
+
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
68
|
+
"row-click": (...args: any[]) => void;
|
|
69
|
+
"sort-change": (...args: any[]) => void;
|
|
70
|
+
"current-change": (...args: any[]) => void;
|
|
71
|
+
"row-dblclick": (...args: any[]) => void;
|
|
72
|
+
"header-row-menu": (...args: any[]) => void;
|
|
73
|
+
"row-menu": (...args: any[]) => void;
|
|
74
|
+
"cell-click": (...args: any[]) => void;
|
|
75
|
+
"header-cell-click": (...args: any[]) => void;
|
|
76
|
+
"col-order-change": (...args: any[]) => void;
|
|
77
|
+
"th-drop": (...args: any[]) => void;
|
|
78
|
+
"th-drag-start": (...args: any[]) => void;
|
|
79
|
+
scroll: (...args: any[]) => void;
|
|
80
|
+
columns: (...args: any[]) => void;
|
|
81
|
+
}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<StkProps>, {
|
|
82
|
+
width: string;
|
|
83
|
+
minWidth: string;
|
|
84
|
+
maxWidth: string;
|
|
85
|
+
headless: boolean;
|
|
86
|
+
theme: string;
|
|
87
|
+
virtual: boolean;
|
|
88
|
+
virtualX: boolean;
|
|
89
|
+
columns: () => never[];
|
|
90
|
+
dataSource: () => never[];
|
|
91
|
+
rowKey: string;
|
|
92
|
+
colKey: string;
|
|
93
|
+
emptyCellText: string;
|
|
94
|
+
noDataFull: boolean;
|
|
95
|
+
showNoData: boolean;
|
|
96
|
+
sortRemote: boolean;
|
|
97
|
+
showHeaderOverflow: boolean;
|
|
98
|
+
showOverflow: boolean;
|
|
99
|
+
showTrHoverClass: boolean;
|
|
100
|
+
headerDrag: boolean;
|
|
101
|
+
rowClassName: () => "";
|
|
102
|
+
colResizable: boolean;
|
|
103
|
+
colMinWidth: number;
|
|
104
|
+
}>>> & {
|
|
105
|
+
"onRow-click"?: ((...args: any[]) => any) | undefined;
|
|
106
|
+
"onSort-change"?: ((...args: any[]) => any) | undefined;
|
|
107
|
+
"onCurrent-change"?: ((...args: any[]) => any) | undefined;
|
|
108
|
+
"onRow-dblclick"?: ((...args: any[]) => any) | undefined;
|
|
109
|
+
"onHeader-row-menu"?: ((...args: any[]) => any) | undefined;
|
|
110
|
+
"onRow-menu"?: ((...args: any[]) => any) | undefined;
|
|
111
|
+
"onCell-click"?: ((...args: any[]) => any) | undefined;
|
|
112
|
+
"onHeader-cell-click"?: ((...args: any[]) => any) | undefined;
|
|
113
|
+
"onCol-order-change"?: ((...args: any[]) => any) | undefined;
|
|
114
|
+
"onTh-drop"?: ((...args: any[]) => any) | undefined;
|
|
115
|
+
"onTh-drag-start"?: ((...args: any[]) => any) | undefined;
|
|
116
|
+
onScroll?: ((...args: any[]) => any) | undefined;
|
|
117
|
+
onColumns?: ((...args: any[]) => any) | undefined;
|
|
118
|
+
}, {
|
|
119
|
+
columns: StkTableColumn<any>[];
|
|
120
|
+
dataSource: any[];
|
|
121
|
+
width: string;
|
|
122
|
+
minWidth: string;
|
|
123
|
+
maxWidth: string;
|
|
124
|
+
headless: boolean;
|
|
125
|
+
theme: "light" | "dark";
|
|
126
|
+
virtual: boolean;
|
|
127
|
+
virtualX: boolean;
|
|
128
|
+
rowKey: import('../StkTable/types/index').UniqKey;
|
|
129
|
+
colKey: import('../StkTable/types/index').UniqKey;
|
|
130
|
+
emptyCellText: string;
|
|
131
|
+
noDataFull: boolean;
|
|
132
|
+
showNoData: boolean;
|
|
133
|
+
sortRemote: boolean;
|
|
134
|
+
showHeaderOverflow: boolean;
|
|
135
|
+
showOverflow: boolean;
|
|
136
|
+
showTrHoverClass: boolean;
|
|
137
|
+
headerDrag: boolean;
|
|
138
|
+
rowClassName: Function;
|
|
139
|
+
colResizable: boolean;
|
|
140
|
+
colMinWidth: number;
|
|
141
|
+
}, {}>, {
|
|
142
|
+
tableHeader?(_: {
|
|
143
|
+
column: StkTableColumn<any>;
|
|
144
|
+
}): any;
|
|
145
|
+
empty?(_: {}): any;
|
|
146
|
+
}>;
|
|
147
|
+
export default _default;
|
|
148
|
+
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
|
|
149
|
+
type __VLS_TypePropsToRuntimeProps<T> = {
|
|
150
|
+
[K in keyof T]-?: {} extends Pick<T, K> ? {
|
|
151
|
+
type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
|
|
152
|
+
} : {
|
|
153
|
+
type: import('vue').PropType<T[K]>;
|
|
154
|
+
required: true;
|
|
155
|
+
};
|
|
156
|
+
};
|
|
157
|
+
type __VLS_WithDefaults<P, D> = {
|
|
158
|
+
[K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
|
|
159
|
+
default: D[K];
|
|
160
|
+
}> : P[K];
|
|
161
|
+
};
|
|
162
|
+
type __VLS_Prettify<T> = {
|
|
163
|
+
[K in keyof T]: T[K];
|
|
164
|
+
} & {};
|
|
165
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
166
|
+
new (): {
|
|
167
|
+
$slots: S;
|
|
168
|
+
};
|
|
169
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare const Default_Col_Width = "100";
|
|
2
|
+
export declare const Default_Table_Height = 100;
|
|
3
|
+
export declare const Default_Table_Width = 200;
|
|
4
|
+
/** 高亮背景色 */
|
|
5
|
+
export declare const Highlight_Color: {
|
|
6
|
+
light: {
|
|
7
|
+
from: string;
|
|
8
|
+
to: string;
|
|
9
|
+
};
|
|
10
|
+
dark: {
|
|
11
|
+
from: string;
|
|
12
|
+
to: string;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
/** 高亮持续时间 */
|
|
16
|
+
export declare const Highlight_Duration = 2000;
|
|
17
|
+
/** 高亮变更频率 */
|
|
18
|
+
export declare const Highlight_Color_Change_Freq = 100;
|
|
19
|
+
/** 是否兼容低版本模式 */
|
|
20
|
+
export declare const Is_Legacy_Mode: boolean;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { Component, VNode } from 'vue';
|
|
2
|
+
type Sorter = boolean | Function;
|
|
3
|
+
export type StkTableColumn<T extends Record<string, any>> = {
|
|
4
|
+
dataIndex: keyof T & string;
|
|
5
|
+
title?: string;
|
|
6
|
+
align?: 'right' | 'left' | 'center';
|
|
7
|
+
headerAlign?: 'right' | 'left' | 'center';
|
|
8
|
+
sorter?: Sorter;
|
|
9
|
+
width?: string;
|
|
10
|
+
minWidth?: string;
|
|
11
|
+
maxWidth?: string;
|
|
12
|
+
headerClassName?: string;
|
|
13
|
+
className?: string;
|
|
14
|
+
sortField?: keyof T;
|
|
15
|
+
sortType?: 'number' | 'string';
|
|
16
|
+
fixed?: 'left' | 'right' | null;
|
|
17
|
+
/** private */ rowSpan?: number;
|
|
18
|
+
/** private */ colSpan?: number;
|
|
19
|
+
customCell?: Component | VNode;
|
|
20
|
+
customHeaderCell?: Component | VNode;
|
|
21
|
+
children?: StkTableColumn<T>[];
|
|
22
|
+
};
|
|
23
|
+
export type SortOption = Pick<StkTableColumn<any>, 'sorter' | 'dataIndex' | 'sortField' | 'sortType'>;
|
|
24
|
+
export type SortState = {
|
|
25
|
+
dataIndex: string;
|
|
26
|
+
order: null | 'asc' | 'desc';
|
|
27
|
+
sortType?: 'number' | 'string';
|
|
28
|
+
};
|
|
29
|
+
export type UniqKey = string | ((param: any) => string);
|
|
30
|
+
export type StkProps = {
|
|
31
|
+
width: string;
|
|
32
|
+
/** 最小表格宽度 */
|
|
33
|
+
minWidth: string;
|
|
34
|
+
/** 表格最大宽度*/
|
|
35
|
+
maxWidth: string;
|
|
36
|
+
/** 是否隐藏表头 */
|
|
37
|
+
headless: boolean;
|
|
38
|
+
/** 主题,亮、暗 */
|
|
39
|
+
theme: 'light' | 'dark';
|
|
40
|
+
/** 虚拟滚动 */
|
|
41
|
+
virtual: boolean;
|
|
42
|
+
/** x轴虚拟滚动 */
|
|
43
|
+
virtualX: boolean;
|
|
44
|
+
/** 表格列配置 */
|
|
45
|
+
columns: StkTableColumn<any>[];
|
|
46
|
+
/** 表格数据源 */
|
|
47
|
+
dataSource: any[];
|
|
48
|
+
/** 行唯一键 */
|
|
49
|
+
rowKey: UniqKey;
|
|
50
|
+
/** 列唯一键 */
|
|
51
|
+
colKey: UniqKey;
|
|
52
|
+
/** 空值展示文字 */
|
|
53
|
+
emptyCellText: string;
|
|
54
|
+
/** 暂无数据兜底高度是否撑满 */
|
|
55
|
+
noDataFull: boolean;
|
|
56
|
+
/** 是否展示暂无数据 */
|
|
57
|
+
showNoData: boolean;
|
|
58
|
+
/** 是否服务端排序,true则不排序数据 */
|
|
59
|
+
sortRemote: boolean;
|
|
60
|
+
/** 表头是否溢出展示... */
|
|
61
|
+
showHeaderOverflow: boolean;
|
|
62
|
+
/** 表体溢出是否展示... */
|
|
63
|
+
showOverflow: boolean;
|
|
64
|
+
/** 是否增加行hover class */
|
|
65
|
+
showTrHoverClass: boolean;
|
|
66
|
+
/** 表头是否可拖动 */
|
|
67
|
+
headerDrag: boolean;
|
|
68
|
+
/**
|
|
69
|
+
* 给行附加className<br>
|
|
70
|
+
* FIXME: 是否需要优化,因为不传此prop会使表格行一直执行空函数,是否有影响
|
|
71
|
+
*/
|
|
72
|
+
rowClassName: Function;
|
|
73
|
+
/**
|
|
74
|
+
* 列宽是否可拖动<br>
|
|
75
|
+
* **不要设置**列minWidth,**必须**设置width<br>
|
|
76
|
+
* 列宽拖动时,每一列都必须要有width,且minWidth/maxWidth不生效。table width会变为"fit-content"。
|
|
77
|
+
*/
|
|
78
|
+
colResizable: boolean;
|
|
79
|
+
/** 可拖动至最小的列宽 */
|
|
80
|
+
colMinWidth: number;
|
|
81
|
+
};
|
|
82
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Ref } from 'vue';
|
|
2
|
+
import { StkTableColumn } from './types';
|
|
3
|
+
type Params = {
|
|
4
|
+
props: any;
|
|
5
|
+
emit: any;
|
|
6
|
+
tableContainer: Ref<HTMLElement | undefined>;
|
|
7
|
+
tableHeaderLast: Ref<StkTableColumn<any>[]>;
|
|
8
|
+
colResizeIndicator: Ref<HTMLElement | undefined>;
|
|
9
|
+
colKeyGen: (p: any) => string;
|
|
10
|
+
};
|
|
11
|
+
/** 列宽拖动 */
|
|
12
|
+
export declare function useColResize({ tableContainer, tableHeaderLast, colResizeIndicator, props, emit, colKeyGen }: Params): {
|
|
13
|
+
isColResizing: Ref<boolean>;
|
|
14
|
+
onThResizeMouseDown: (e: MouseEvent, col: StkTableColumn<any>, isPrev?: boolean) => void;
|
|
15
|
+
onThResizeMouseMove: (e: MouseEvent) => void;
|
|
16
|
+
onThResizeMouseUp: (e: MouseEvent) => void;
|
|
17
|
+
};
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
type Params = {
|
|
2
|
+
emit: any;
|
|
3
|
+
};
|
|
4
|
+
/**
|
|
5
|
+
* 列顺序拖动
|
|
6
|
+
* @param param0
|
|
7
|
+
* @returns
|
|
8
|
+
*/
|
|
9
|
+
export declare function useThDrag({ emit }: Params): {
|
|
10
|
+
onThDragStart: (e: MouseEvent) => void;
|
|
11
|
+
onThDragOver: (e: MouseEvent) => void;
|
|
12
|
+
onThDrop: (e: MouseEvent) => void;
|
|
13
|
+
};
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Ref, ShallowRef } from 'vue';
|
|
2
|
+
import { StkTableColumn } from './types';
|
|
3
|
+
type Option = {
|
|
4
|
+
tableContainer: Ref<HTMLElement | undefined>;
|
|
5
|
+
props: any;
|
|
6
|
+
dataSourceCopy: ShallowRef<any[]>;
|
|
7
|
+
tableHeaderLast: Ref<StkTableColumn<any>[]>;
|
|
8
|
+
};
|
|
9
|
+
export declare function useVirtualScroll({ tableContainer, props, dataSourceCopy, tableHeaderLast }: Option): {
|
|
10
|
+
virtualScroll: Ref<{
|
|
11
|
+
containerHeight: number;
|
|
12
|
+
startIndex: number;
|
|
13
|
+
rowHeight: number;
|
|
14
|
+
offsetTop: number;
|
|
15
|
+
scrollTop: number;
|
|
16
|
+
}>;
|
|
17
|
+
virtualScrollX: Ref<{
|
|
18
|
+
containerWidth: number;
|
|
19
|
+
startIndex: number;
|
|
20
|
+
endIndex: number;
|
|
21
|
+
offsetLeft: number;
|
|
22
|
+
scrollLeft: number;
|
|
23
|
+
}>;
|
|
24
|
+
virtual_on: import("vue").ComputedRef<any>;
|
|
25
|
+
virtual_dataSourcePart: import("vue").ComputedRef<any[]>;
|
|
26
|
+
virtual_offsetBottom: import("vue").ComputedRef<number>;
|
|
27
|
+
virtualX_on: import("vue").ComputedRef<any>;
|
|
28
|
+
virtualX_columnPart: import("vue").ComputedRef<StkTableColumn<any>[]>;
|
|
29
|
+
virtualX_offsetRight: import("vue").ComputedRef<number>;
|
|
30
|
+
initVirtualScrollY: (height?: number) => void;
|
|
31
|
+
initVirtualScrollX: () => void;
|
|
32
|
+
updateVirtualScrollY: (sTop?: number) => void;
|
|
33
|
+
updateVirtualScrollX: (sLeft?: number) => void;
|
|
34
|
+
};
|
|
35
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { SortOption, SortState, StkTableColumn } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* 对有序数组插入新数据
|
|
4
|
+
* @param {object} sortState
|
|
5
|
+
* @param {string} sortState.dataIndex 排序的列
|
|
6
|
+
* @param {null|'asc'|'desc'} sortState.order 排序顺序
|
|
7
|
+
* @param {'number'|'string'} [sortState.sortType] 排序方式
|
|
8
|
+
* @param {object} newItem 要插入的数据
|
|
9
|
+
* @param {Array} targetArray 表格数据
|
|
10
|
+
*/
|
|
11
|
+
export declare function insertToOrderedArray(sortState: SortState, newItem: any, targetArray: any[]): any[];
|
|
12
|
+
/**
|
|
13
|
+
* 表格排序抽离
|
|
14
|
+
* 可以在组件外部自己实现表格排序,组件配置remote,使表格不排序。
|
|
15
|
+
* 使用者在@sort-change事件中自行更改table props 'dataSource'完成排序。
|
|
16
|
+
* TODO: key 唯一值,排序字段相同时,根据唯一值排序。
|
|
17
|
+
* @param {SortOption} sortOption 列配置
|
|
18
|
+
* @param {string|null} order 排序方式
|
|
19
|
+
* @param {any} dataSource 排序的数组
|
|
20
|
+
*/
|
|
21
|
+
export declare function tableSort(sortOption: SortOption, order: string | null, dataSource: any[]): any[];
|
|
22
|
+
/** column 的层级 */
|
|
23
|
+
export declare function howDeepTheColumn(arr: StkTableColumn<any>[], level?: number): number;
|