stk-table-vue 0.0.1-beta.9 → 0.0.2
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 +93 -71
- package/lib/src/StkTable/StkTable.vue.d.ts +54 -30
- package/lib/src/StkTable/useColResize.d.ts +18 -18
- package/lib/src/StkTable/useFixedStyle.d.ts +3 -2
- package/lib/src/StkTable/useThDrag.d.ts +14 -14
- package/lib/src/StkTable/useVirtualScroll.d.ts +12 -6
- package/lib/src/StkTable/utils.d.ts +23 -23
- package/lib/stk-table-vue.js +156 -113
- package/lib/style.css +34 -12
- package/package.json +5 -5
- package/src/StkTable/StkTable.vue +135 -61
- package/src/StkTable/style.less +46 -18
- package/src/StkTable/useAutoResize.ts +3 -1
- package/src/StkTable/useColResize.ts +28 -19
- package/src/StkTable/useFixedStyle.ts +23 -29
- package/src/StkTable/useThDrag.ts +5 -5
- package/src/StkTable/useVirtualScroll.ts +55 -30
- package/src/StkTable/utils.ts +3 -3
package/README.md
CHANGED
|
@@ -8,12 +8,21 @@ js体积(未压缩41kb)
|
|
|
8
8
|
* [x] 横向虚拟滚动。
|
|
9
9
|
* [x] 列固定。
|
|
10
10
|
* [x] 表头拖动更改顺序。
|
|
11
|
-
* [x]
|
|
12
|
-
*
|
|
11
|
+
* [x] 表头列宽拖动调整宽度。
|
|
12
|
+
* 多级表头。
|
|
13
|
+
- [x] 支持最多`2级`表头。
|
|
14
|
+
- [x] 支持更多级表头
|
|
15
|
+
- [] 多级表头固定列横向滚动
|
|
16
|
+
- [] 横向虚拟滚动。
|
|
13
17
|
* [x] 支持table-layout: fixed 配置。
|
|
14
|
-
*
|
|
15
|
-
|
|
16
|
-
|
|
18
|
+
* 鼠标悬浮在表格上,键盘滚动虚拟表格。
|
|
19
|
+
- [x] 键盘 `ArrowUp`/`ArrowDown`/`ArrowLeft`/`ArrowRight` 按键支持。
|
|
20
|
+
- [] 键盘 `PageUp`/ `PageDown` 按键支持。
|
|
21
|
+
* [x] 斑马纹。
|
|
22
|
+
* [] 列固定阴影。
|
|
23
|
+
* [] 不传row-key 时,自动按序号生成id。
|
|
24
|
+
* [] 列筛选。
|
|
25
|
+
* [] 非虚拟滚动时,大数据分批加载。
|
|
17
26
|
|
|
18
27
|
## Usage
|
|
19
28
|
> npm install stk-table-vue
|
|
@@ -24,8 +33,8 @@ import { StkTable } from 'stk-table-vue'
|
|
|
24
33
|
import { ref } from 'vue'
|
|
25
34
|
const stkTable = ref<InstanceType<typeof StkTable>>();
|
|
26
35
|
// highlight
|
|
27
|
-
|
|
28
|
-
|
|
36
|
+
stkTable.value.setHighlightDimRow([rowId]);// highlight row
|
|
37
|
+
stkTable.value.setHighlightDimCell(rowId, colId) // highlight cell
|
|
29
38
|
</script>
|
|
30
39
|
|
|
31
40
|
<template>
|
|
@@ -36,70 +45,78 @@ const stkTable = ref<InstanceType<typeof StkTable>>();
|
|
|
36
45
|
## API
|
|
37
46
|
### StkTable Component Props
|
|
38
47
|
```ts
|
|
39
|
-
export type StkProps =
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
48
|
+
export type StkProps = {
|
|
49
|
+
width?: string;
|
|
50
|
+
/** 最小表格宽度 */
|
|
51
|
+
minWidth?: string;
|
|
52
|
+
/** 表格最大宽度*/
|
|
53
|
+
maxWidth?: string;
|
|
54
|
+
/** 斑马线条纹 */
|
|
55
|
+
stripe?: boolean;
|
|
56
|
+
/** 是否使用 table-layout:fixed */
|
|
57
|
+
fixedMode?: boolean;
|
|
58
|
+
/** 是否隐藏表头 */
|
|
59
|
+
headless?: boolean;
|
|
60
|
+
/** 主题,亮、暗 */
|
|
61
|
+
theme?: 'light' | 'dark';
|
|
62
|
+
/** 行高 */
|
|
63
|
+
rowHeight?: number;
|
|
64
|
+
/** 虚拟滚动 */
|
|
65
|
+
virtual?: boolean;
|
|
66
|
+
/** x轴虚拟滚动 */
|
|
67
|
+
virtualX?: boolean;
|
|
68
|
+
/** 表格列配置 */
|
|
69
|
+
columns?: StkTableColumn<any>[];
|
|
70
|
+
/** 表格数据源 */
|
|
71
|
+
dataSource?: any[];
|
|
72
|
+
/** 行唯一键 */
|
|
73
|
+
rowKey?: UniqKey;
|
|
74
|
+
/** 列唯一键 */
|
|
75
|
+
colKey?: UniqKey;
|
|
76
|
+
/** 空值展示文字 */
|
|
77
|
+
emptyCellText?: string;
|
|
78
|
+
/** 暂无数据兜底高度是否撑满 */
|
|
79
|
+
noDataFull?: boolean;
|
|
80
|
+
/** 是否展示暂无数据 */
|
|
81
|
+
showNoData?: boolean;
|
|
82
|
+
/** 是否服务端排序,true则不排序数据 */
|
|
83
|
+
sortRemote?: boolean;
|
|
84
|
+
/** 表头是否溢出展示... */
|
|
85
|
+
showHeaderOverflow?: boolean;
|
|
86
|
+
/** 表体溢出是否展示... */
|
|
87
|
+
showOverflow?: boolean;
|
|
88
|
+
/** 是否增加行hover class */
|
|
89
|
+
showTrHoverClass?: boolean;
|
|
90
|
+
/** 表头是否可拖动 */
|
|
91
|
+
headerDrag?: boolean;
|
|
92
|
+
/**
|
|
93
|
+
* 给行附加className<br>
|
|
94
|
+
* FIXME: 是否需要优化,因为不传此prop会使表格行一直执行空函数,是否有影响
|
|
95
|
+
*/
|
|
96
|
+
rowClassName?: (row: any, i: number) => string;
|
|
97
|
+
/**
|
|
98
|
+
* 列宽是否可拖动<br>
|
|
99
|
+
* **不要设置**列minWidth,**必须**设置width<br>
|
|
100
|
+
* 列宽拖动时,每一列都必须要有width,且minWidth/maxWidth不生效。table width会变为"fit-content"。
|
|
101
|
+
*/
|
|
102
|
+
colResizable?: boolean;
|
|
103
|
+
/** 可拖动至最小的列宽 */
|
|
104
|
+
colMinWidth?: number;
|
|
105
|
+
/**
|
|
106
|
+
* 单元格分割线。
|
|
107
|
+
* 默认横竖都有
|
|
108
|
+
* "h" - 仅展示横线
|
|
109
|
+
* "v" - 仅展示竖线
|
|
110
|
+
* "body-v" - 仅表体展示竖线
|
|
111
|
+
*/
|
|
112
|
+
bordered?: boolean | 'h' | 'v' | 'body-v';
|
|
113
|
+
/**
|
|
114
|
+
* 自动重新计算虚拟滚动高度宽度。默认true
|
|
115
|
+
* [非响应式]
|
|
116
|
+
* 传入方法表示resize后的回调
|
|
117
|
+
*/
|
|
118
|
+
autoResize?: boolean | (() => void);
|
|
119
|
+
};
|
|
103
120
|
```
|
|
104
121
|
|
|
105
122
|
### StkTableColumn
|
|
@@ -155,6 +172,8 @@ export type StkTableColumn<T extends Record<string, any>> = {
|
|
|
155
172
|
:style="{height:props.height}"
|
|
156
173
|
theme='dark'
|
|
157
174
|
height='200px'
|
|
175
|
+
bordered="h"
|
|
176
|
+
:row-height="28"
|
|
158
177
|
:show-overflow="false"
|
|
159
178
|
:show-header-overflow="false"
|
|
160
179
|
:sort-remote="false"
|
|
@@ -163,6 +182,9 @@ export type StkTableColumn<T extends Record<string, any>> = {
|
|
|
163
182
|
virtual
|
|
164
183
|
virtual-x
|
|
165
184
|
no-data-full
|
|
185
|
+
col-resizable
|
|
186
|
+
auto-resize
|
|
187
|
+
:col-min-width="10"
|
|
166
188
|
:headless="false"
|
|
167
189
|
:data-source="dataSource"
|
|
168
190
|
@current-change="onCurrentChange"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SortOption, StkTableColumn, UniqKey } from './types/index';
|
|
1
|
+
import { Order, SortOption, StkTableColumn, UniqKey } from './types/index';
|
|
2
2
|
/**
|
|
3
3
|
* 选中一行,
|
|
4
4
|
* @param {string} rowKey
|
|
@@ -36,12 +36,16 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__
|
|
|
36
36
|
minWidth?: string | undefined;
|
|
37
37
|
/** 表格最大宽度*/
|
|
38
38
|
maxWidth?: string | undefined;
|
|
39
|
+
/** 斑马线条纹 */
|
|
40
|
+
stripe?: boolean | undefined;
|
|
39
41
|
/** 是否使用 table-layout:fixed */
|
|
40
42
|
fixedMode?: boolean | undefined;
|
|
41
43
|
/** 是否隐藏表头 */
|
|
42
44
|
headless?: boolean | undefined;
|
|
43
45
|
/** 主题,亮、暗 */
|
|
44
46
|
theme?: "light" | "dark" | undefined;
|
|
47
|
+
/** 行高 */
|
|
48
|
+
rowHeight?: number | undefined;
|
|
45
49
|
/** 虚拟滚动 */
|
|
46
50
|
virtual?: boolean | undefined;
|
|
47
51
|
/** x轴虚拟滚动 */
|
|
@@ -94,15 +98,18 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__
|
|
|
94
98
|
/**
|
|
95
99
|
* 自动重新计算虚拟滚动高度宽度。默认true
|
|
96
100
|
* [非响应式]
|
|
101
|
+
* 传入方法表示resize后的回调
|
|
97
102
|
*/
|
|
98
|
-
autoResize?: boolean | undefined;
|
|
103
|
+
autoResize?: boolean | (() => void) | undefined;
|
|
99
104
|
}>, {
|
|
100
105
|
width: string;
|
|
101
106
|
fixedMode: boolean;
|
|
107
|
+
stripe: boolean;
|
|
102
108
|
minWidth: string;
|
|
103
109
|
maxWidth: string;
|
|
104
110
|
headless: boolean;
|
|
105
111
|
theme: string;
|
|
112
|
+
rowHeight: number;
|
|
106
113
|
virtual: boolean;
|
|
107
114
|
virtualX: boolean;
|
|
108
115
|
columns: () => never[];
|
|
@@ -135,31 +142,39 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__
|
|
|
135
142
|
scrollTo: typeof scrollTo;
|
|
136
143
|
getTableData: typeof getTableData;
|
|
137
144
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
138
|
-
|
|
139
|
-
"
|
|
140
|
-
"
|
|
141
|
-
"
|
|
142
|
-
|
|
143
|
-
"
|
|
144
|
-
"
|
|
145
|
-
"
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
"
|
|
145
|
+
"sort-change": (col: StkTableColumn<any>, order: Order, data: any[]) => void;
|
|
146
|
+
"row-click": (ev: MouseEvent, row: any) => void;
|
|
147
|
+
"current-change": (ev: MouseEvent | null, row: any) => void;
|
|
148
|
+
"row-dblclick": (ev: MouseEvent, row: any) => void;
|
|
149
|
+
"header-row-menu": (ev: MouseEvent) => void;
|
|
150
|
+
"row-menu": (ev: MouseEvent, row: any) => void;
|
|
151
|
+
"cell-click": (ev: MouseEvent, row: any, col: StkTableColumn<any>) => void;
|
|
152
|
+
"header-cell-click": (ev: MouseEvent, col: StkTableColumn<any>) => void;
|
|
153
|
+
scroll: (ev: Event, data: {
|
|
154
|
+
startIndex: number;
|
|
155
|
+
endIndex: number;
|
|
156
|
+
}) => void;
|
|
157
|
+
"scroll-x": (ev: Event) => void;
|
|
158
|
+
"col-order-change": (dragStartKey: string, targetColKey: string) => void;
|
|
159
|
+
"th-drag-start": (dragStartKey: string) => void;
|
|
160
|
+
"th-drop": (targetColKey: string) => void;
|
|
161
|
+
"update:columns": (cols: StkTableColumn<any>[]) => void;
|
|
151
162
|
}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
|
|
152
163
|
width?: string | undefined;
|
|
153
164
|
/** 最小表格宽度 */
|
|
154
165
|
minWidth?: string | undefined;
|
|
155
166
|
/** 表格最大宽度*/
|
|
156
167
|
maxWidth?: string | undefined;
|
|
168
|
+
/** 斑马线条纹 */
|
|
169
|
+
stripe?: boolean | undefined;
|
|
157
170
|
/** 是否使用 table-layout:fixed */
|
|
158
171
|
fixedMode?: boolean | undefined;
|
|
159
172
|
/** 是否隐藏表头 */
|
|
160
173
|
headless?: boolean | undefined;
|
|
161
174
|
/** 主题,亮、暗 */
|
|
162
175
|
theme?: "light" | "dark" | undefined;
|
|
176
|
+
/** 行高 */
|
|
177
|
+
rowHeight?: number | undefined;
|
|
163
178
|
/** 虚拟滚动 */
|
|
164
179
|
virtual?: boolean | undefined;
|
|
165
180
|
/** x轴虚拟滚动 */
|
|
@@ -212,15 +227,18 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__
|
|
|
212
227
|
/**
|
|
213
228
|
* 自动重新计算虚拟滚动高度宽度。默认true
|
|
214
229
|
* [非响应式]
|
|
230
|
+
* 传入方法表示resize后的回调
|
|
215
231
|
*/
|
|
216
|
-
autoResize?: boolean | undefined;
|
|
232
|
+
autoResize?: boolean | (() => void) | undefined;
|
|
217
233
|
}>, {
|
|
218
234
|
width: string;
|
|
219
235
|
fixedMode: boolean;
|
|
236
|
+
stripe: boolean;
|
|
220
237
|
minWidth: string;
|
|
221
238
|
maxWidth: string;
|
|
222
239
|
headless: boolean;
|
|
223
240
|
theme: string;
|
|
241
|
+
rowHeight: number;
|
|
224
242
|
virtual: boolean;
|
|
225
243
|
virtualX: boolean;
|
|
226
244
|
columns: () => never[];
|
|
@@ -241,24 +259,30 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__
|
|
|
241
259
|
bordered: boolean;
|
|
242
260
|
autoResize: boolean;
|
|
243
261
|
}>>> & {
|
|
244
|
-
onScroll?: ((
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
"
|
|
250
|
-
"
|
|
251
|
-
"
|
|
252
|
-
"
|
|
253
|
-
"
|
|
254
|
-
"
|
|
255
|
-
"
|
|
256
|
-
"onHeader-
|
|
262
|
+
onScroll?: ((ev: Event, data: {
|
|
263
|
+
startIndex: number;
|
|
264
|
+
endIndex: number;
|
|
265
|
+
}) => any) | undefined;
|
|
266
|
+
"onUpdate:columns"?: ((cols: StkTableColumn<any>[]) => any) | undefined;
|
|
267
|
+
"onTh-drag-start"?: ((dragStartKey: string) => any) | undefined;
|
|
268
|
+
"onCol-order-change"?: ((dragStartKey: string, targetColKey: string) => any) | undefined;
|
|
269
|
+
"onTh-drop"?: ((targetColKey: string) => any) | undefined;
|
|
270
|
+
"onSort-change"?: ((col: StkTableColumn<any>, order: Order, data: any[]) => any) | undefined;
|
|
271
|
+
"onRow-click"?: ((ev: MouseEvent, row: any) => any) | undefined;
|
|
272
|
+
"onCurrent-change"?: ((ev: MouseEvent | null, row: any) => any) | undefined;
|
|
273
|
+
"onRow-dblclick"?: ((ev: MouseEvent, row: any) => any) | undefined;
|
|
274
|
+
"onHeader-row-menu"?: ((ev: MouseEvent) => any) | undefined;
|
|
275
|
+
"onRow-menu"?: ((ev: MouseEvent, row: any) => any) | undefined;
|
|
276
|
+
"onCell-click"?: ((ev: MouseEvent, row: any, col: StkTableColumn<any>) => any) | undefined;
|
|
277
|
+
"onHeader-cell-click"?: ((ev: MouseEvent, col: StkTableColumn<any>) => any) | undefined;
|
|
278
|
+
"onScroll-x"?: ((ev: Event) => any) | undefined;
|
|
257
279
|
}, {
|
|
258
280
|
width: string;
|
|
259
281
|
minWidth: string;
|
|
260
282
|
maxWidth: string;
|
|
283
|
+
rowHeight: number;
|
|
261
284
|
colKey: UniqKey;
|
|
285
|
+
stripe: boolean;
|
|
262
286
|
fixedMode: boolean;
|
|
263
287
|
headless: boolean;
|
|
264
288
|
theme: "light" | "dark";
|
|
@@ -279,7 +303,7 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__
|
|
|
279
303
|
colResizable: boolean;
|
|
280
304
|
colMinWidth: number;
|
|
281
305
|
bordered: boolean | "h" | "v" | "body-v";
|
|
282
|
-
autoResize: boolean;
|
|
306
|
+
autoResize: boolean | (() => void);
|
|
283
307
|
}, {}>, {
|
|
284
308
|
tableHeader?(_: {
|
|
285
309
|
column: StkTableColumn<any>;
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { Ref } from 'vue';
|
|
2
|
-
import { StkTableColumn } from './types';
|
|
3
|
-
type Params = {
|
|
4
|
-
props: any;
|
|
5
|
-
|
|
6
|
-
tableContainer: Ref<HTMLElement | undefined>;
|
|
7
|
-
tableHeaderLast: Ref<StkTableColumn<
|
|
8
|
-
colResizeIndicator: Ref<HTMLElement | undefined>;
|
|
9
|
-
colKeyGen: (p: any) => string;
|
|
10
|
-
};
|
|
11
|
-
/** 列宽拖动 */
|
|
12
|
-
export declare function useColResize({ tableContainer, tableHeaderLast, colResizeIndicator, props,
|
|
13
|
-
isColResizing: Ref<boolean>;
|
|
14
|
-
onThResizeMouseDown: (e: MouseEvent, col: StkTableColumn<
|
|
15
|
-
onThResizeMouseMove: (e: MouseEvent) => void;
|
|
16
|
-
onThResizeMouseUp: (e: MouseEvent) => void;
|
|
17
|
-
};
|
|
18
|
-
export {};
|
|
1
|
+
import { Ref } from 'vue';
|
|
2
|
+
import { StkTableColumn } from './types';
|
|
3
|
+
type Params<DT extends Record<string, any>> = {
|
|
4
|
+
props: any;
|
|
5
|
+
emits: any;
|
|
6
|
+
tableContainer: Ref<HTMLElement | undefined>;
|
|
7
|
+
tableHeaderLast: Ref<StkTableColumn<DT>[]>;
|
|
8
|
+
colResizeIndicator: Ref<HTMLElement | undefined>;
|
|
9
|
+
colKeyGen: (p: any) => string;
|
|
10
|
+
};
|
|
11
|
+
/** 列宽拖动 */
|
|
12
|
+
export declare function useColResize<DT extends Record<string, any>>({ tableContainer, tableHeaderLast, colResizeIndicator, props, emits, colKeyGen, }: Params<DT>): {
|
|
13
|
+
isColResizing: Ref<boolean>;
|
|
14
|
+
onThResizeMouseDown: (e: MouseEvent, col: StkTableColumn<DT>, isPrev?: boolean) => void;
|
|
15
|
+
onThResizeMouseMove: (e: MouseEvent) => void;
|
|
16
|
+
onThResizeMouseUp: (e: MouseEvent) => void;
|
|
17
|
+
};
|
|
18
|
+
export {};
|
|
@@ -2,6 +2,7 @@ import { CSSProperties, Ref } from 'vue';
|
|
|
2
2
|
import { StkTableColumn } from './types';
|
|
3
3
|
import { VirtualScrollStore, VirtualScrollXStore } from './useVirtualScroll';
|
|
4
4
|
type Options = {
|
|
5
|
+
props: any;
|
|
5
6
|
tableHeaderLast: Ref<StkTableColumn<any>[]>;
|
|
6
7
|
virtualScroll: Ref<VirtualScrollStore>;
|
|
7
8
|
virtualScrollX: Ref<VirtualScrollXStore>;
|
|
@@ -13,7 +14,7 @@ type Options = {
|
|
|
13
14
|
* @param param0
|
|
14
15
|
* @returns
|
|
15
16
|
*/
|
|
16
|
-
export declare function useFixedStyle({ tableHeaderLast, virtualScroll, virtualScrollX, virtualX_on, virtualX_offsetRight }: Options): {
|
|
17
|
-
getFixedStyle: (tagType: 1 | 2, col: StkTableColumn<any
|
|
17
|
+
export declare function useFixedStyle({ props, tableHeaderLast, virtualScroll, virtualScrollX, virtualX_on, virtualX_offsetRight }: Options): {
|
|
18
|
+
getFixedStyle: (tagType: 1 | 2, col: StkTableColumn<any>, depth?: number) => CSSProperties;
|
|
18
19
|
};
|
|
19
20
|
export {};
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
type Params = {
|
|
2
|
-
|
|
3
|
-
};
|
|
4
|
-
/**
|
|
5
|
-
* 列顺序拖动
|
|
6
|
-
* @param param0
|
|
7
|
-
* @returns
|
|
8
|
-
*/
|
|
9
|
-
export declare function useThDrag({
|
|
10
|
-
onThDragStart: (e: MouseEvent) => void;
|
|
11
|
-
onThDragOver: (e: MouseEvent) => void;
|
|
12
|
-
onThDrop: (e: MouseEvent) => void;
|
|
13
|
-
};
|
|
14
|
-
export {};
|
|
1
|
+
type Params = {
|
|
2
|
+
emits: any;
|
|
3
|
+
};
|
|
4
|
+
/**
|
|
5
|
+
* 列顺序拖动
|
|
6
|
+
* @param param0
|
|
7
|
+
* @returns
|
|
8
|
+
*/
|
|
9
|
+
export declare function useThDrag({ emits }: Params): {
|
|
10
|
+
onThDragStart: (e: MouseEvent) => void;
|
|
11
|
+
onThDragOver: (e: MouseEvent) => void;
|
|
12
|
+
onThDrop: (e: MouseEvent) => void;
|
|
13
|
+
};
|
|
14
|
+
export {};
|
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
import { Ref, ShallowRef } from 'vue';
|
|
2
2
|
import { StkTableColumn } from './types';
|
|
3
|
-
type Option = {
|
|
3
|
+
type Option<DT extends Record<string, any>> = {
|
|
4
4
|
tableContainer: Ref<HTMLElement | undefined>;
|
|
5
5
|
props: any;
|
|
6
|
-
dataSourceCopy: ShallowRef<
|
|
7
|
-
tableHeaderLast: Ref<StkTableColumn<
|
|
6
|
+
dataSourceCopy: ShallowRef<DT[]>;
|
|
7
|
+
tableHeaderLast: Ref<StkTableColumn<DT>[]>;
|
|
8
8
|
};
|
|
9
9
|
/** 暂存纵向虚拟滚动的数据 */
|
|
10
10
|
export type VirtualScrollStore = {
|
|
11
11
|
/** 容器高度 */
|
|
12
12
|
containerHeight: number;
|
|
13
|
+
/** 一页的大小 */
|
|
14
|
+
pageSize: number;
|
|
13
15
|
/** 数组开始位置 */
|
|
14
16
|
startIndex: number;
|
|
17
|
+
/** 数组结束位置 */
|
|
18
|
+
endIndex: number;
|
|
15
19
|
/** 行高 */
|
|
16
20
|
rowHeight: number;
|
|
17
21
|
/** 表格定位上边距 */
|
|
@@ -37,10 +41,12 @@ export type VirtualScrollXStore = {
|
|
|
37
41
|
* @param param0
|
|
38
42
|
* @returns
|
|
39
43
|
*/
|
|
40
|
-
export declare function useVirtualScroll({ tableContainer, props, dataSourceCopy, tableHeaderLast }: Option): {
|
|
44
|
+
export declare function useVirtualScroll<DT extends Record<string, any>>({ tableContainer, props, dataSourceCopy, tableHeaderLast }: Option<DT>): {
|
|
41
45
|
virtualScroll: Ref<{
|
|
42
46
|
containerHeight: number;
|
|
47
|
+
pageSize: number;
|
|
43
48
|
startIndex: number;
|
|
49
|
+
endIndex: number;
|
|
44
50
|
rowHeight: number;
|
|
45
51
|
offsetTop: number;
|
|
46
52
|
scrollTop: number;
|
|
@@ -53,10 +59,10 @@ export declare function useVirtualScroll({ tableContainer, props, dataSourceCopy
|
|
|
53
59
|
scrollLeft: number;
|
|
54
60
|
}>;
|
|
55
61
|
virtual_on: import("vue").ComputedRef<any>;
|
|
56
|
-
virtual_dataSourcePart: import("vue").ComputedRef<
|
|
62
|
+
virtual_dataSourcePart: import("vue").ComputedRef<DT[]>;
|
|
57
63
|
virtual_offsetBottom: import("vue").ComputedRef<number>;
|
|
58
64
|
virtualX_on: import("vue").ComputedRef<any>;
|
|
59
|
-
virtualX_columnPart: import("vue").ComputedRef<StkTableColumn<
|
|
65
|
+
virtualX_columnPart: import("vue").ComputedRef<StkTableColumn<DT>[]>;
|
|
60
66
|
virtualX_offsetRight: import("vue").ComputedRef<number>;
|
|
61
67
|
initVirtualScroll: (height?: number) => void;
|
|
62
68
|
initVirtualScrollY: (height?: number) => void;
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import { Order, SortOption, SortState, StkTableColumn } from './types';
|
|
2
|
-
/**
|
|
3
|
-
* 对有序数组插入新数据
|
|
4
|
-
* @param sortState
|
|
5
|
-
* @param sortState.dataIndex 排序的列
|
|
6
|
-
* @param sortState.order 排序顺序
|
|
7
|
-
* @param sortState.sortType 排序方式
|
|
8
|
-
* @param newItem 要插入的数据
|
|
9
|
-
* @param targetArray 表格数据
|
|
10
|
-
*/
|
|
11
|
-
export declare function insertToOrderedArray<T extends object>(sortState: SortState<keyof T>, newItem: any, targetArray: T[]): T[];
|
|
12
|
-
/**
|
|
13
|
-
* 表格排序抽离
|
|
14
|
-
* 可以在组件外部自己实现表格排序,组件配置remote,使表格不排序。
|
|
15
|
-
* 使用者在@sort-change事件中自行更改table props 'dataSource'完成排序。
|
|
16
|
-
* TODO: key 唯一值,排序字段相同时,根据唯一值排序。
|
|
17
|
-
* @param sortOption 列配置
|
|
18
|
-
* @param order 排序方式
|
|
19
|
-
* @param dataSource 排序的数组
|
|
20
|
-
*/
|
|
21
|
-
export declare function tableSort(sortOption: SortOption, order: Order, dataSource: any[]): any[];
|
|
22
|
-
/** column
|
|
23
|
-
export declare function
|
|
1
|
+
import { Order, SortOption, SortState, StkTableColumn } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* 对有序数组插入新数据
|
|
4
|
+
* @param sortState
|
|
5
|
+
* @param sortState.dataIndex 排序的列
|
|
6
|
+
* @param sortState.order 排序顺序
|
|
7
|
+
* @param sortState.sortType 排序方式
|
|
8
|
+
* @param newItem 要插入的数据
|
|
9
|
+
* @param targetArray 表格数据
|
|
10
|
+
*/
|
|
11
|
+
export declare function insertToOrderedArray<T extends object>(sortState: SortState<keyof T>, newItem: any, targetArray: T[]): T[];
|
|
12
|
+
/**
|
|
13
|
+
* 表格排序抽离
|
|
14
|
+
* 可以在组件外部自己实现表格排序,组件配置remote,使表格不排序。
|
|
15
|
+
* 使用者在@sort-change事件中自行更改table props 'dataSource'完成排序。
|
|
16
|
+
* TODO: key 唯一值,排序字段相同时,根据唯一值排序。
|
|
17
|
+
* @param sortOption 列配置
|
|
18
|
+
* @param order 排序方式
|
|
19
|
+
* @param dataSource 排序的数组
|
|
20
|
+
*/
|
|
21
|
+
export declare function tableSort(sortOption: SortOption, order: Order, dataSource: any[]): any[];
|
|
22
|
+
/** 表头column配置的层级 */
|
|
23
|
+
export declare function howDeepTheHeader(arr: StkTableColumn<any>[], level?: number): number;
|