stk-table-vue 0.0.1 → 0.1.0
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 +128 -9
- package/lib/src/StkTable/StkTable.vue.d.ts +360 -335
- package/lib/src/StkTable/const.d.ts +21 -20
- package/lib/src/StkTable/types/index.d.ts +73 -60
- package/lib/src/StkTable/useColResize.d.ts +18 -18
- package/lib/src/StkTable/useFixedStyle.d.ts +20 -19
- package/lib/src/StkTable/useKeyboardArrowScroll.d.ts +17 -14
- package/lib/src/StkTable/useThDrag.d.ts +14 -14
- package/lib/src/StkTable/useVirtualScroll.d.ts +73 -73
- package/lib/src/StkTable/utils.d.ts +23 -23
- package/lib/stk-table-vue.js +1441 -1263
- package/lib/style.css +320 -286
- package/package.json +60 -60
- package/src/StkTable/StkTable.vue +223 -72
- package/src/StkTable/const.ts +1 -0
- package/src/StkTable/style.less +55 -22
- package/src/StkTable/types/index.ts +15 -2
- package/src/StkTable/useFixedStyle.ts +23 -29
- package/src/StkTable/useKeyboardArrowScroll.ts +24 -10
- package/src/StkTable/useVirtualScroll.ts +1 -1
- package/src/StkTable/utils.ts +3 -3
- package/src/vite-env.d.ts +1 -0
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# StkTable (Sticky Table)
|
|
2
2
|
|
|
3
3
|
Vue3 简易虚拟滚动表格。用于实时数据展示,新数据行高亮渐暗动效。
|
|
4
|
-
js体积(未压缩
|
|
4
|
+
js体积(未压缩44kb)
|
|
5
5
|
|
|
6
6
|
## Feature TODO:
|
|
7
7
|
* [x] 高亮行,单元格。
|
|
@@ -9,13 +9,21 @@ js体积(未压缩41kb)
|
|
|
9
9
|
* [x] 列固定。
|
|
10
10
|
* [x] 表头拖动更改顺序。
|
|
11
11
|
* [x] 表头列宽拖动调整宽度。
|
|
12
|
-
*
|
|
12
|
+
* 多级表头。
|
|
13
|
+
- [x] 支持最多`2级`表头。
|
|
14
|
+
- [x] 支持更多级表头
|
|
15
|
+
- [] 多级表头固定列横向滚动
|
|
16
|
+
- [] 横向虚拟滚动。
|
|
13
17
|
* [x] 支持table-layout: fixed 配置。
|
|
14
|
-
*
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
* []
|
|
18
|
-
* []
|
|
18
|
+
* 鼠标悬浮在表格上,键盘滚动虚拟表格。
|
|
19
|
+
- [x] 键盘 `ArrowUp`/`ArrowDown`/`ArrowLeft`/`ArrowRight` 按键支持。
|
|
20
|
+
- [x] 键盘 `PageUp`/ `PageDown` 按键支持。
|
|
21
|
+
* [x] 斑马纹。
|
|
22
|
+
* [x] 列固定阴影。
|
|
23
|
+
- [] 多级表头固定列阴影。
|
|
24
|
+
- [] sticky column 动态计算阴影位置。
|
|
25
|
+
* [] 不传row-key 时,自动按序号生成id。
|
|
26
|
+
* [] 列筛选。
|
|
19
27
|
* [] 非虚拟滚动时,大数据分批加载。
|
|
20
28
|
|
|
21
29
|
## Usage
|
|
@@ -36,8 +44,13 @@ stkTable.value.setHighlightDimCell(rowId, colId) // highlight cell
|
|
|
36
44
|
</template>
|
|
37
45
|
|
|
38
46
|
```
|
|
47
|
+
|
|
48
|
+
## Notice
|
|
49
|
+
注意,组件会改动 `props.columns` 中的对象。如果多个组件 `columns` 数组元素存在引用同一个 `StkTableColumn` 对象。则考虑赋值 `columns` 前进行深拷贝。
|
|
50
|
+
|
|
39
51
|
## API
|
|
40
|
-
### StkTable Component
|
|
52
|
+
### StkTable Component
|
|
53
|
+
#### Props
|
|
41
54
|
```ts
|
|
42
55
|
export type StkProps = {
|
|
43
56
|
width?: string;
|
|
@@ -55,6 +68,8 @@ export type StkProps = {
|
|
|
55
68
|
theme?: 'light' | 'dark';
|
|
56
69
|
/** 行高 */
|
|
57
70
|
rowHeight?: number;
|
|
71
|
+
/** 表头行高。default = rowHeight */
|
|
72
|
+
headerRowHeight?: number | null;
|
|
58
73
|
/** 虚拟滚动 */
|
|
59
74
|
virtual?: boolean;
|
|
60
75
|
/** x轴虚拟滚动 */
|
|
@@ -110,10 +125,112 @@ export type StkProps = {
|
|
|
110
125
|
* 传入方法表示resize后的回调
|
|
111
126
|
*/
|
|
112
127
|
autoResize?: boolean | (() => void);
|
|
128
|
+
/** 是否展示固定列阴影。默认不展示。 */
|
|
129
|
+
fixedColShadow?: boolean;
|
|
113
130
|
};
|
|
114
131
|
```
|
|
132
|
+
#### Emits
|
|
133
|
+
```js
|
|
134
|
+
{
|
|
135
|
+
/**
|
|
136
|
+
* 排序变更触发
|
|
137
|
+
* ```(col: StkTableColumn<DT>, order: Order, data: DT[])```
|
|
138
|
+
*/
|
|
139
|
+
(e: 'sort-change', col: StkTableColumn<DT>, order: Order, data: DT[]): void;
|
|
140
|
+
/**
|
|
141
|
+
* 一行点击事件
|
|
142
|
+
* ```(ev: MouseEvent, row: DT)```
|
|
143
|
+
*/
|
|
144
|
+
(e: 'row-click', ev: MouseEvent, row: DT): void;
|
|
145
|
+
/**
|
|
146
|
+
* 选中一行触发。ev返回null表示不是点击事件触发的
|
|
147
|
+
* ```(ev: MouseEvent | null, row: DT)```
|
|
148
|
+
*/
|
|
149
|
+
(e: 'current-change', ev: MouseEvent | null, row: DT): void;
|
|
150
|
+
/**
|
|
151
|
+
* 行双击事件
|
|
152
|
+
* ```(ev: MouseEvent, row: DT)```
|
|
153
|
+
*/
|
|
154
|
+
(e: 'row-dblclick', ev: MouseEvent, row: DT): void;
|
|
155
|
+
/**
|
|
156
|
+
* 表头右键事件
|
|
157
|
+
* ```(ev: MouseEvent)```
|
|
158
|
+
*/
|
|
159
|
+
(e: 'header-row-menu', ev: MouseEvent): void;
|
|
160
|
+
/**
|
|
161
|
+
* 表体行右键点击事件
|
|
162
|
+
* ```(ev: MouseEvent, row: DT)```
|
|
163
|
+
*/
|
|
164
|
+
(e: 'row-menu', ev: MouseEvent, row: DT): void;
|
|
165
|
+
/**
|
|
166
|
+
* 单元格点击事件
|
|
167
|
+
* ```(ev: MouseEvent, row: DT, col: StkTableColumn<DT>)```
|
|
168
|
+
*/
|
|
169
|
+
(e: 'cell-click', ev: MouseEvent, row: DT, col: StkTableColumn<DT>): void;
|
|
170
|
+
/**
|
|
171
|
+
* 表头单元格点击事件
|
|
172
|
+
* ```(ev: MouseEvent, col: StkTableColumn<DT>)```
|
|
173
|
+
*/
|
|
174
|
+
(e: 'header-cell-click', ev: MouseEvent, col: StkTableColumn<DT>): void;
|
|
175
|
+
/**
|
|
176
|
+
* 表格滚动事件
|
|
177
|
+
* ```(ev: Event, data: { startIndex: number; endIndex: number })```
|
|
178
|
+
*/
|
|
179
|
+
(e: 'scroll', ev: Event, data: { startIndex: number; endIndex: number }): void;
|
|
180
|
+
/**
|
|
181
|
+
* 表格横向滚动事件
|
|
182
|
+
* ```(ev: Event)```
|
|
183
|
+
*/
|
|
184
|
+
(e: 'scroll-x', ev: Event): void;
|
|
185
|
+
/**
|
|
186
|
+
* 表头列拖动事件
|
|
187
|
+
* ```(dragStartKey: string, targetColKey: string)```
|
|
188
|
+
*/
|
|
189
|
+
(e: 'col-order-change', dragStartKey: string, targetColKey: string): void;
|
|
190
|
+
/**
|
|
191
|
+
* 表头列拖动开始
|
|
192
|
+
* ```(dragStartKey: string)```
|
|
193
|
+
*/
|
|
194
|
+
(e: 'th-drag-start', dragStartKey: string): void;
|
|
195
|
+
/**
|
|
196
|
+
* 表头列拖动drop
|
|
197
|
+
* ```(targetColKey: string)```
|
|
198
|
+
*/
|
|
199
|
+
(e: 'th-drop', targetColKey: string): void;
|
|
200
|
+
/** v-model:columns col resize 时更新宽度*/
|
|
201
|
+
(e: 'update:columns', cols: StkTableColumn<DT>[]): void;
|
|
202
|
+
}
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
#### Expose
|
|
206
|
+
```js
|
|
207
|
+
defineExpose({
|
|
208
|
+
/** 初始化横向纵向虚拟滚动 */
|
|
209
|
+
initVirtualScroll,
|
|
210
|
+
/** 初始化横向虚拟滚动 */
|
|
211
|
+
initVirtualScrollX,
|
|
212
|
+
/** 初始化纵向虚拟滚动 */
|
|
213
|
+
initVirtualScrollY,
|
|
214
|
+
/** 设置当前选中行 */
|
|
215
|
+
setCurrentRow,
|
|
216
|
+
/** 设置高亮渐暗单元格 */
|
|
217
|
+
setHighlightDimCell,
|
|
218
|
+
/** 设置高亮渐暗行 */
|
|
219
|
+
setHighlightDimRow,
|
|
220
|
+
/** 表格排序列dataIndex */
|
|
221
|
+
sortCol,
|
|
222
|
+
/** 设置排序 */
|
|
223
|
+
setSorter,
|
|
224
|
+
/** 重置排序 */
|
|
225
|
+
resetSorter,
|
|
226
|
+
/** 滚动至 */
|
|
227
|
+
scrollTo,
|
|
228
|
+
/** 获取表格数据 */
|
|
229
|
+
getTableData,
|
|
230
|
+
});
|
|
231
|
+
```
|
|
115
232
|
|
|
116
|
-
### StkTableColumn
|
|
233
|
+
### StkTableColumn 列配置
|
|
117
234
|
``` ts
|
|
118
235
|
type Sorter<T> = boolean | ((data: T[], option: { order: Order; column: any }) => T[]);
|
|
119
236
|
/** 表格列配置 */
|
|
@@ -178,6 +295,7 @@ export type StkTableColumn<T extends Record<string, any>> = {
|
|
|
178
295
|
no-data-full
|
|
179
296
|
col-resizable
|
|
180
297
|
auto-resize
|
|
298
|
+
fixed-col-shadow
|
|
181
299
|
:col-min-width="10"
|
|
182
300
|
:headless="false"
|
|
183
301
|
:data-source="dataSource"
|
|
@@ -190,6 +308,7 @@ export type StkTableColumn<T extends Record<string, any>> = {
|
|
|
190
308
|
@cell-click="onCellClick"
|
|
191
309
|
@header-cell-click="onHeaderCellClick"
|
|
192
310
|
@scroll="onTableScroll"
|
|
311
|
+
@scroll-x="onTableScrollX"
|
|
193
312
|
@col-order-change="onColOrderChange"
|
|
194
313
|
/>
|
|
195
314
|
</template>
|