vxe-table 3.15.26 → 3.15.28
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/es/style.css +1 -1
- package/es/table/index.js +11 -3
- package/es/table/module/filter/mixin.js +19 -8
- package/es/table/src/cell.js +3 -1
- package/es/table/src/methods.js +97 -9
- package/es/table/src/table.js +36 -4
- package/es/table/src/util.js +21 -17
- package/es/ui/index.js +1 -1
- package/es/ui/src/log.js +1 -1
- package/lib/index.umd.js +226 -45
- package/lib/index.umd.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/table/index.js +10 -3
- package/lib/table/index.min.js +1 -1
- package/lib/table/module/filter/mixin.js +25 -8
- package/lib/table/module/filter/mixin.min.js +1 -1
- package/lib/table/src/cell.js +3 -1
- package/lib/table/src/cell.min.js +1 -1
- package/lib/table/src/methods.js +114 -9
- package/lib/table/src/methods.min.js +1 -1
- package/lib/table/src/table.js +40 -5
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/src/util.js +33 -17
- package/lib/table/src/util.min.js +1 -1
- package/lib/ui/index.js +1 -1
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/package.json +1 -1
- package/packages/table/index.ts +10 -3
- package/packages/table/module/filter/mixin.ts +26 -12
- package/packages/table/src/cell.ts +3 -1
- package/packages/table/src/methods.ts +96 -10
- package/packages/table/src/table.ts +47 -10
- package/packages/table/src/util.ts +24 -19
- /package/es/{iconfont.1747024909816.ttf → iconfont.1747176212818.ttf} +0 -0
- /package/es/{iconfont.1747024909816.woff → iconfont.1747176212818.woff} +0 -0
- /package/es/{iconfont.1747024909816.woff2 → iconfont.1747176212818.woff2} +0 -0
- /package/lib/{iconfont.1747024909816.ttf → iconfont.1747176212818.ttf} +0 -0
- /package/lib/{iconfont.1747024909816.woff → iconfont.1747176212818.woff} +0 -0
- /package/lib/{iconfont.1747024909816.woff2 → iconfont.1747176212818.woff2} +0 -0
|
@@ -287,8 +287,14 @@ export default {
|
|
|
287
287
|
* @param {Event} evnt 事件
|
|
288
288
|
*/
|
|
289
289
|
handleFilterResetFilter(evnt) {
|
|
290
|
-
this
|
|
291
|
-
|
|
290
|
+
const $xeTable = this;
|
|
291
|
+
const reactData = $xeTable;
|
|
292
|
+
const { filterStore } = reactData;
|
|
293
|
+
$xeTable.handleClearFilter(filterStore.column);
|
|
294
|
+
$xeTable.confirmFilterEvent(evnt);
|
|
295
|
+
if (evnt) {
|
|
296
|
+
$xeTable.dispatchEvent('clear-filter', { filterList: [] }, evnt);
|
|
297
|
+
}
|
|
292
298
|
},
|
|
293
299
|
/**
|
|
294
300
|
* 清空指定列的筛选条件
|
|
@@ -296,16 +302,20 @@ export default {
|
|
|
296
302
|
* @param {String} fieldOrColumn 列
|
|
297
303
|
*/
|
|
298
304
|
_clearFilter(fieldOrColumn) {
|
|
299
|
-
const
|
|
305
|
+
const $xeTable = this;
|
|
306
|
+
const reactData = $xeTable;
|
|
307
|
+
const internalData = $xeTable;
|
|
308
|
+
const { filterStore } = reactData;
|
|
309
|
+
const { tableFullColumn } = internalData;
|
|
300
310
|
let column;
|
|
301
311
|
if (fieldOrColumn) {
|
|
302
|
-
column = handleFieldOrColumn(
|
|
312
|
+
column = handleFieldOrColumn($xeTable, fieldOrColumn);
|
|
303
313
|
if (column) {
|
|
304
|
-
|
|
314
|
+
$xeTable.handleClearFilter(column);
|
|
305
315
|
}
|
|
306
316
|
}
|
|
307
317
|
else {
|
|
308
|
-
|
|
318
|
+
tableFullColumn.forEach($xeTable.handleClearFilter);
|
|
309
319
|
}
|
|
310
320
|
if (!fieldOrColumn || column !== filterStore.column) {
|
|
311
321
|
Object.assign(filterStore, {
|
|
@@ -318,12 +328,13 @@ export default {
|
|
|
318
328
|
visible: false
|
|
319
329
|
});
|
|
320
330
|
}
|
|
321
|
-
return
|
|
331
|
+
return $xeTable.updateData();
|
|
322
332
|
},
|
|
323
333
|
_updateFilterOptionStatus(item, checked) {
|
|
334
|
+
const $xeTable = this;
|
|
324
335
|
item._checked = checked;
|
|
325
336
|
item.checked = checked;
|
|
326
|
-
return
|
|
337
|
+
return $xeTable.$nextTick();
|
|
327
338
|
}
|
|
328
339
|
}
|
|
329
340
|
};
|
package/es/table/src/cell.js
CHANGED
package/es/table/src/methods.js
CHANGED
|
@@ -4188,7 +4188,6 @@ const Methods = {
|
|
|
4188
4188
|
},
|
|
4189
4189
|
/**
|
|
4190
4190
|
* 检查是否为临时行数据
|
|
4191
|
-
* @param {Row} row 行对象
|
|
4192
4191
|
*/
|
|
4193
4192
|
isInsertByRow(row) {
|
|
4194
4193
|
const $xeTable = this;
|
|
@@ -4206,18 +4205,15 @@ const Methods = {
|
|
|
4206
4205
|
},
|
|
4207
4206
|
/**
|
|
4208
4207
|
* 删除所有新增的临时数据
|
|
4209
|
-
* @returns
|
|
4210
4208
|
*/
|
|
4211
4209
|
removeInsertRow() {
|
|
4212
4210
|
const $xeTable = this;
|
|
4213
4211
|
const internalData = $xeTable;
|
|
4214
|
-
|
|
4215
|
-
return $xeTable.remove(
|
|
4212
|
+
const { insertRowMaps } = internalData;
|
|
4213
|
+
return $xeTable.remove(XEUtils.values(insertRowMaps));
|
|
4216
4214
|
},
|
|
4217
4215
|
/**
|
|
4218
4216
|
* 检查行或列数据是否发生改变
|
|
4219
|
-
* @param {Row} rowOrId 行对象
|
|
4220
|
-
* @param {String} field 字段名
|
|
4221
4217
|
*/
|
|
4222
4218
|
isUpdateByRow(rowOrId, field) {
|
|
4223
4219
|
const $xeTable = this;
|
|
@@ -6235,7 +6231,12 @@ const Methods = {
|
|
|
6235
6231
|
}
|
|
6236
6232
|
}
|
|
6237
6233
|
if (tooltipStore.column !== column || tooltipStore.row !== row || !tooltipStore.visible) {
|
|
6238
|
-
|
|
6234
|
+
const ctEl = tdEl.querySelector('.vxe-cell--wrapper');
|
|
6235
|
+
let ovEl = null;
|
|
6236
|
+
if (column.treeNode) {
|
|
6237
|
+
ovEl = tdEl.querySelector('.vxe-tree-cell');
|
|
6238
|
+
}
|
|
6239
|
+
handleTooltip($xeTable, evnt, tdEl, ovEl || ctEl, tdEl.querySelector('.vxe-cell--label') || tdEl.querySelector('.vxe-cell--wrapper'), params);
|
|
6239
6240
|
}
|
|
6240
6241
|
},
|
|
6241
6242
|
/**
|
|
@@ -7375,12 +7376,15 @@ const Methods = {
|
|
|
7375
7376
|
const props = $xeTable;
|
|
7376
7377
|
const { mouseConfig } = props;
|
|
7377
7378
|
const mouseOpts = $xeTable.computeMouseOpts;
|
|
7378
|
-
const { field, sortable } = column;
|
|
7379
|
+
const { field, sortable, order } = column;
|
|
7379
7380
|
if (sortable) {
|
|
7380
|
-
const params = { $table: $xeTable, $event: evnt, column, field, property: field, order
|
|
7381
|
+
const params = { $table: $xeTable, $event: evnt, column, field, property: field, order, sortList: $xeTable.getSortColumns(), sortTime: column.sortTime };
|
|
7381
7382
|
if (mouseConfig && mouseOpts.area && $xeTable.handleSortEvent) {
|
|
7382
7383
|
$xeTable.handleSortEvent(evnt, params);
|
|
7383
7384
|
}
|
|
7385
|
+
if (!order) {
|
|
7386
|
+
$xeTable.dispatchEvent('clear-sort', params, evnt);
|
|
7387
|
+
}
|
|
7384
7388
|
$xeTable.dispatchEvent('sort-change', params, evnt);
|
|
7385
7389
|
}
|
|
7386
7390
|
},
|
|
@@ -8332,6 +8336,44 @@ const Methods = {
|
|
|
8332
8336
|
return updateStyle($xeTable);
|
|
8333
8337
|
});
|
|
8334
8338
|
},
|
|
8339
|
+
clearSortByEvent(evnt, fieldOrColumn) {
|
|
8340
|
+
const $xeTable = this;
|
|
8341
|
+
const internalData = $xeTable;
|
|
8342
|
+
const { tableFullColumn } = internalData;
|
|
8343
|
+
const sortOpts = $xeTable.computeSortOpts;
|
|
8344
|
+
const sortCols = [];
|
|
8345
|
+
let column = null;
|
|
8346
|
+
if (evnt) {
|
|
8347
|
+
if (fieldOrColumn) {
|
|
8348
|
+
column = handleFieldOrColumn($xeTable, fieldOrColumn);
|
|
8349
|
+
if (column) {
|
|
8350
|
+
column.order = null;
|
|
8351
|
+
}
|
|
8352
|
+
}
|
|
8353
|
+
else {
|
|
8354
|
+
tableFullColumn.forEach((column) => {
|
|
8355
|
+
if (column.order) {
|
|
8356
|
+
column.order = null;
|
|
8357
|
+
sortCols.push(column);
|
|
8358
|
+
}
|
|
8359
|
+
});
|
|
8360
|
+
}
|
|
8361
|
+
if (!sortOpts.remote) {
|
|
8362
|
+
$xeTable.handleTableData(true);
|
|
8363
|
+
}
|
|
8364
|
+
if (sortCols.length) {
|
|
8365
|
+
const params = { $table: $xeTable, $event: evnt, cols: sortCols, sortList: [] };
|
|
8366
|
+
$xeTable.dispatchEvent('clear-all-sort', params, evnt);
|
|
8367
|
+
}
|
|
8368
|
+
else if (column) {
|
|
8369
|
+
$xeTable.handleColumnSortEvent(evnt, column);
|
|
8370
|
+
}
|
|
8371
|
+
}
|
|
8372
|
+
return $xeTable.$nextTick().then(() => {
|
|
8373
|
+
updateRowOffsetTop($xeTable);
|
|
8374
|
+
return updateStyle($xeTable);
|
|
8375
|
+
});
|
|
8376
|
+
},
|
|
8335
8377
|
// 在 v3 中废弃
|
|
8336
8378
|
getSortColumn() {
|
|
8337
8379
|
if (process.env.NODE_ENV === 'development') {
|
|
@@ -8399,6 +8441,52 @@ const Methods = {
|
|
|
8399
8441
|
isFilter(fieldOrColumn) {
|
|
8400
8442
|
return this.isActiveFilterByColumn(fieldOrColumn);
|
|
8401
8443
|
},
|
|
8444
|
+
clearFilterByEvent(evnt, fieldOrColumn) {
|
|
8445
|
+
const $xeTable = this;
|
|
8446
|
+
const reactData = $xeTable;
|
|
8447
|
+
const internalData = $xeTable;
|
|
8448
|
+
const { filterStore } = reactData;
|
|
8449
|
+
const { tableFullColumn } = internalData;
|
|
8450
|
+
const filterOpts = $xeTable.computeFilterOpts;
|
|
8451
|
+
const filterCols = [];
|
|
8452
|
+
let column = null;
|
|
8453
|
+
if (fieldOrColumn) {
|
|
8454
|
+
column = handleFieldOrColumn($xeTable, fieldOrColumn);
|
|
8455
|
+
if (column) {
|
|
8456
|
+
$xeTable.handleClearFilter(column);
|
|
8457
|
+
}
|
|
8458
|
+
}
|
|
8459
|
+
else {
|
|
8460
|
+
tableFullColumn.forEach(column => {
|
|
8461
|
+
if (column.filters) {
|
|
8462
|
+
filterCols.push(column);
|
|
8463
|
+
$xeTable.handleClearFilter(column);
|
|
8464
|
+
}
|
|
8465
|
+
});
|
|
8466
|
+
}
|
|
8467
|
+
if (!fieldOrColumn || column !== filterStore.column) {
|
|
8468
|
+
Object.assign(filterStore, {
|
|
8469
|
+
isAllSelected: false,
|
|
8470
|
+
isIndeterminate: false,
|
|
8471
|
+
style: null,
|
|
8472
|
+
options: [],
|
|
8473
|
+
column: null,
|
|
8474
|
+
multiple: false,
|
|
8475
|
+
visible: false
|
|
8476
|
+
});
|
|
8477
|
+
}
|
|
8478
|
+
if (!filterOpts.remote) {
|
|
8479
|
+
$xeTable.updateData();
|
|
8480
|
+
}
|
|
8481
|
+
if (filterCols.length) {
|
|
8482
|
+
const params = { $table: $xeTable, $event: evnt, cols: filterCols, filterList: [] };
|
|
8483
|
+
$xeTable.dispatchEvent('clear-all-filter', params, evnt);
|
|
8484
|
+
}
|
|
8485
|
+
else if (column) {
|
|
8486
|
+
$xeTable.dispatchEvent('clear-filter', { filterList: () => $xeTable.getCheckedFilters() }, evnt);
|
|
8487
|
+
}
|
|
8488
|
+
return $xeTable.$nextTick();
|
|
8489
|
+
},
|
|
8402
8490
|
/**
|
|
8403
8491
|
* 判断展开行是否懒加载完成
|
|
8404
8492
|
* @param {Row} row 行对象
|
package/es/table/src/table.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import XEUtils from 'xe-utils';
|
|
2
2
|
import { getFuncText, isEnableConf } from '../../ui/src/utils';
|
|
3
3
|
import { initTpImg } from '../../ui/src/dom';
|
|
4
|
-
import { createHandleGetRowId, getCellHeight } from './util';
|
|
4
|
+
import { createHandleGetRowId, getCellHeight, hasDeepKey } from './util';
|
|
5
5
|
import { VxeUI } from '../../ui';
|
|
6
6
|
import methods from './methods';
|
|
7
7
|
import TableBodyComponent from './body';
|
|
@@ -23,6 +23,12 @@ import keyboardMixin from '../module/keyboard/mixin';
|
|
|
23
23
|
import validatorMixin from '../module/validator/mixin';
|
|
24
24
|
import customMixin from '../module/custom/mixin';
|
|
25
25
|
const { getConfig, getIcon, getI18n, renderer, globalResize, globalEvents, globalMixins, renderEmptyElement } = VxeUI;
|
|
26
|
+
function handleKeyField($xeTable) {
|
|
27
|
+
const internalData = $xeTable;
|
|
28
|
+
const keyField = $xeTable.computeRowField;
|
|
29
|
+
internalData.currKeyField = keyField;
|
|
30
|
+
internalData.isCurrDeepKey = hasDeepKey(keyField);
|
|
31
|
+
}
|
|
26
32
|
/**
|
|
27
33
|
* 渲染浮固定列
|
|
28
34
|
* 分别渲染左边固定列和右边固定列
|
|
@@ -690,6 +696,12 @@ export default {
|
|
|
690
696
|
}
|
|
691
697
|
return '';
|
|
692
698
|
},
|
|
699
|
+
computeRowField() {
|
|
700
|
+
const $xeTable = this;
|
|
701
|
+
const props = $xeTable;
|
|
702
|
+
const rowOpts = $xeTable.computeRowOpts;
|
|
703
|
+
return `${props.rowId || rowOpts.keyField || '_X_ROW_KEY'}`;
|
|
704
|
+
},
|
|
693
705
|
validOpts() {
|
|
694
706
|
return this.computeValidOpts;
|
|
695
707
|
},
|
|
@@ -1303,6 +1315,20 @@ export default {
|
|
|
1303
1315
|
computeRowGroupFields(val) {
|
|
1304
1316
|
const $xeTable = this;
|
|
1305
1317
|
$xeTable.handleUpdateRowGroup(val);
|
|
1318
|
+
},
|
|
1319
|
+
computeRowField() {
|
|
1320
|
+
const $xeTable = this;
|
|
1321
|
+
const reactData = $xeTable;
|
|
1322
|
+
const internalData = $xeTable;
|
|
1323
|
+
// 行主键被改变,重载表格
|
|
1324
|
+
const { inited, tableFullData } = internalData;
|
|
1325
|
+
if (inited) {
|
|
1326
|
+
handleKeyField($xeTable);
|
|
1327
|
+
reactData.tableData = [];
|
|
1328
|
+
$xeTable.$nextTick(() => {
|
|
1329
|
+
$xeTable.reloadData(tableFullData);
|
|
1330
|
+
});
|
|
1331
|
+
}
|
|
1306
1332
|
}
|
|
1307
1333
|
},
|
|
1308
1334
|
created() {
|
|
@@ -1311,6 +1337,8 @@ export default {
|
|
|
1311
1337
|
const internalData = $xeTable;
|
|
1312
1338
|
Object.assign($xeTable, {
|
|
1313
1339
|
tZindex: 0,
|
|
1340
|
+
currKeyField: '',
|
|
1341
|
+
isCurrDeepKey: false,
|
|
1314
1342
|
elemStore: {},
|
|
1315
1343
|
// 存放横向 X 虚拟滚动相关的信息
|
|
1316
1344
|
scrollXStore: {
|
|
@@ -1417,6 +1445,7 @@ export default {
|
|
|
1417
1445
|
swYInterval: 0,
|
|
1418
1446
|
swYTotal: 0
|
|
1419
1447
|
});
|
|
1448
|
+
handleKeyField($xeTable);
|
|
1420
1449
|
const { data, exportConfig, importConfig, treeConfig, showOverflow, highlightCurrentRow, highlightCurrentColumn } = props;
|
|
1421
1450
|
const { scrollXStore, scrollYStore } = internalData;
|
|
1422
1451
|
const columnOpts = $xeTable.computeColumnOpts;
|
|
@@ -1653,6 +1682,7 @@ export default {
|
|
|
1653
1682
|
const columnOpts = $xeTable.computeColumnOpts;
|
|
1654
1683
|
const rowOpts = $xeTable.computeRowOpts;
|
|
1655
1684
|
const customOpts = $xeTable.computeCustomOpts;
|
|
1685
|
+
const virtualYOpts = $xeTable.computeVirtualYOpts;
|
|
1656
1686
|
if (columnOpts.drag || rowOpts.drag || customOpts.allowSort) {
|
|
1657
1687
|
initTpImg();
|
|
1658
1688
|
}
|
|
@@ -1693,9 +1723,11 @@ export default {
|
|
|
1693
1723
|
resizeObserver.observe(this.getParentElem());
|
|
1694
1724
|
this.$resize = resizeObserver;
|
|
1695
1725
|
}
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
tableViewportEl
|
|
1726
|
+
if (virtualYOpts.mode !== 'scroll') {
|
|
1727
|
+
const tableViewportEl = $xeTable.$refs.refTableViewportElem;
|
|
1728
|
+
if (tableViewportEl) {
|
|
1729
|
+
tableViewportEl.addEventListener('wheel', $xeTable.triggerBodyWheelEvent, { passive: false });
|
|
1730
|
+
}
|
|
1699
1731
|
}
|
|
1700
1732
|
this.preventEvent(null, 'mounted');
|
|
1701
1733
|
},
|
package/es/table/src/util.js
CHANGED
|
@@ -86,36 +86,40 @@ export function toTreePathSeq(path) {
|
|
|
86
86
|
export function getRowUniqueId() {
|
|
87
87
|
return XEUtils.uniqueId('row_');
|
|
88
88
|
}
|
|
89
|
+
export function hasDeepKey(rowKey) {
|
|
90
|
+
return rowKey.indexOf('.') > -1;
|
|
91
|
+
}
|
|
89
92
|
// 行主键 key
|
|
90
93
|
export function getRowkey($xeTable) {
|
|
91
|
-
const
|
|
92
|
-
const
|
|
93
|
-
return
|
|
94
|
+
const internalData = $xeTable;
|
|
95
|
+
const { currKeyField } = internalData;
|
|
96
|
+
return currKeyField;
|
|
94
97
|
}
|
|
95
98
|
// 行主键 value
|
|
96
99
|
export function getRowid($xeTable, row) {
|
|
97
|
-
const
|
|
98
|
-
|
|
100
|
+
const internalData = $xeTable;
|
|
101
|
+
const { isCurrDeepKey, currKeyField } = internalData;
|
|
102
|
+
return row ? encodeRowid((isCurrDeepKey ? getDeepRowIdByKey : getFastRowIdByKey)(row, currKeyField)) : '';
|
|
99
103
|
}
|
|
100
104
|
export function createHandleUpdateRowId($xeTable) {
|
|
101
|
-
const
|
|
102
|
-
const
|
|
103
|
-
const updateRId =
|
|
105
|
+
const internalData = $xeTable;
|
|
106
|
+
const { isCurrDeepKey, currKeyField } = internalData;
|
|
107
|
+
const updateRId = isCurrDeepKey ? updateDeepRowKey : updateFastRowKey;
|
|
104
108
|
return {
|
|
105
|
-
rowKey,
|
|
109
|
+
rowKey: currKeyField,
|
|
106
110
|
handleUpdateRowId(row) {
|
|
107
|
-
return row ? updateRId(row,
|
|
111
|
+
return row ? updateRId(row, currKeyField) : '';
|
|
108
112
|
}
|
|
109
113
|
};
|
|
110
114
|
}
|
|
111
115
|
export function createHandleGetRowId($xeTable) {
|
|
112
|
-
const
|
|
113
|
-
const
|
|
114
|
-
const getRId =
|
|
116
|
+
const internalData = $xeTable;
|
|
117
|
+
const { isCurrDeepKey, currKeyField } = internalData;
|
|
118
|
+
const getRId = isCurrDeepKey ? getDeepRowIdByKey : getFastRowIdByKey;
|
|
115
119
|
return {
|
|
116
|
-
rowKey,
|
|
120
|
+
rowKey: currKeyField,
|
|
117
121
|
handleGetRowId(row) {
|
|
118
|
-
return row ? getRId(row,
|
|
122
|
+
return row ? encodeRowid(getRId(row, currKeyField)) : '';
|
|
119
123
|
}
|
|
120
124
|
};
|
|
121
125
|
}
|
|
@@ -127,7 +131,7 @@ function getDeepRowIdByKey(row, rowKey) {
|
|
|
127
131
|
return XEUtils.get(row, rowKey);
|
|
128
132
|
}
|
|
129
133
|
export function updateDeepRowKey(row, rowKey) {
|
|
130
|
-
let rowid = getDeepRowIdByKey(row, rowKey);
|
|
134
|
+
let rowid = encodeRowid(getDeepRowIdByKey(row, rowKey));
|
|
131
135
|
if (eqEmptyValue(rowid)) {
|
|
132
136
|
rowid = getRowUniqueId();
|
|
133
137
|
XEUtils.set(row, rowKey, rowid);
|
|
@@ -138,7 +142,7 @@ function getFastRowIdByKey(row, rowKey) {
|
|
|
138
142
|
return row[rowKey];
|
|
139
143
|
}
|
|
140
144
|
export function updateFastRowKey(row, rowKey) {
|
|
141
|
-
let rowid = getFastRowIdByKey(row, rowKey);
|
|
145
|
+
let rowid = encodeRowid(getFastRowIdByKey(row, rowKey));
|
|
142
146
|
if (eqEmptyValue(rowid)) {
|
|
143
147
|
rowid = getRowUniqueId();
|
|
144
148
|
row[rowKey] = rowid;
|
package/es/ui/index.js
CHANGED
package/es/ui/src/log.js
CHANGED