vxe-table 4.12.0 → 4.12.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/es/style.css +1 -1
- package/es/table/module/edit/hook.js +19 -22
- package/es/table/module/validator/hook.js +2 -4
- package/es/table/src/body.js +7 -8
- package/es/table/src/table.js +66 -92
- package/es/ui/index.js +3 -3
- package/es/ui/src/log.js +1 -1
- package/lib/index.umd.js +12257 -1056
- package/lib/index.umd.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/table/module/edit/hook.js +24 -33
- package/lib/table/module/edit/hook.min.js +1 -1
- package/lib/table/module/validator/hook.js +3 -8
- package/lib/table/module/validator/hook.min.js +1 -1
- package/lib/table/src/body.js +7 -8
- package/lib/table/src/body.min.js +1 -1
- package/lib/table/src/table.js +71 -108
- package/lib/table/src/table.min.js +1 -1
- package/lib/ui/index.js +3 -3
- 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 +2 -2
- package/packages/table/module/edit/hook.ts +19 -22
- package/packages/table/module/validator/hook.ts +2 -4
- package/packages/table/src/body.ts +7 -8
- package/packages/table/src/table.ts +72 -100
- package/packages/ui/index.ts +2 -2
- /package/es/{iconfont.1742955995631.ttf → iconfont.1743045589885.ttf} +0 -0
- /package/es/{iconfont.1742955995631.woff → iconfont.1743045589885.woff} +0 -0
- /package/es/{iconfont.1742955995631.woff2 → iconfont.1743045589885.woff2} +0 -0
- /package/lib/{iconfont.1742955995631.ttf → iconfont.1743045589885.ttf} +0 -0
- /package/lib/{iconfont.1742955995631.woff → iconfont.1743045589885.woff} +0 -0
- /package/lib/{iconfont.1742955995631.woff2 → iconfont.1743045589885.woff2} +0 -0
|
@@ -96,8 +96,8 @@ hooks.add('tableEditModule', {
|
|
|
96
96
|
};
|
|
97
97
|
const handleInsertRowAt = (records, targetRow, isInsertNextRow) => {
|
|
98
98
|
const { treeConfig } = props;
|
|
99
|
-
const { mergeList
|
|
100
|
-
const { tableFullTreeData, afterFullData, tableFullData, fullDataRowIdData, fullAllDataRowIdData } = internalData;
|
|
99
|
+
const { mergeList } = reactData;
|
|
100
|
+
const { tableFullTreeData, afterFullData, tableFullData, fullDataRowIdData, fullAllDataRowIdData, insertRowMaps } = internalData;
|
|
101
101
|
const treeOpts = computeTreeOpts.value;
|
|
102
102
|
const { transform, rowField, mapChildrenField } = treeOpts;
|
|
103
103
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
@@ -244,11 +244,11 @@ hooks.add('tableEditModule', {
|
|
|
244
244
|
}
|
|
245
245
|
}
|
|
246
246
|
}
|
|
247
|
-
const { insertMaps } = editStore;
|
|
248
247
|
newRecords.forEach(newRow => {
|
|
249
248
|
const rowid = getRowid($xeTable, newRow);
|
|
250
|
-
|
|
249
|
+
insertRowMaps[rowid] = newRow;
|
|
251
250
|
});
|
|
251
|
+
reactData.insertRowFlag++;
|
|
252
252
|
$xeTable.cacheRowMap(false);
|
|
253
253
|
$xeTable.updateScrollYStatus();
|
|
254
254
|
$xeTable.handleTableData(treeConfig && transform);
|
|
@@ -487,13 +487,12 @@ hooks.add('tableEditModule', {
|
|
|
487
487
|
remove(rows) {
|
|
488
488
|
const { treeConfig } = props;
|
|
489
489
|
const { mergeList, editStore } = reactData;
|
|
490
|
-
const { tableFullTreeData, selectCheckboxMaps, afterFullData, tableFullData, pendingRowMaps } = internalData;
|
|
490
|
+
const { tableFullTreeData, selectCheckboxMaps, afterFullData, tableFullData, pendingRowMaps, insertRowMaps, removeRowMaps } = internalData;
|
|
491
491
|
const checkboxOpts = computeCheckboxOpts.value;
|
|
492
492
|
const treeOpts = computeTreeOpts.value;
|
|
493
493
|
const { transform, mapChildrenField } = treeOpts;
|
|
494
494
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
495
|
-
const { actived
|
|
496
|
-
const insertDataRowMaps = Object.assign({}, editStore.insertMaps);
|
|
495
|
+
const { actived } = editStore;
|
|
497
496
|
const { checkField } = checkboxOpts;
|
|
498
497
|
let delList = [];
|
|
499
498
|
if (!rows) {
|
|
@@ -506,7 +505,7 @@ hooks.add('tableEditModule', {
|
|
|
506
505
|
rows.forEach((row) => {
|
|
507
506
|
if (!$xeTable.isInsertByRow(row)) {
|
|
508
507
|
const rowid = getRowid($xeTable, row);
|
|
509
|
-
|
|
508
|
+
removeRowMaps[rowid] = row;
|
|
510
509
|
}
|
|
511
510
|
});
|
|
512
511
|
// 如果绑定了多选属性,则更新状态
|
|
@@ -577,14 +576,15 @@ hooks.add('tableEditModule', {
|
|
|
577
576
|
// 从新增中移除已删除的数据
|
|
578
577
|
rows.forEach((row) => {
|
|
579
578
|
const rowid = getRowid($xeTable, row);
|
|
580
|
-
if (
|
|
581
|
-
delete
|
|
579
|
+
if (insertRowMaps[rowid]) {
|
|
580
|
+
delete insertRowMaps[rowid];
|
|
582
581
|
}
|
|
583
582
|
if (pendingRowMaps[rowid]) {
|
|
584
583
|
delete pendingRowMaps[rowid];
|
|
585
584
|
}
|
|
586
585
|
});
|
|
587
|
-
|
|
586
|
+
reactData.removeRowFlag++;
|
|
587
|
+
reactData.insertRowFlag++;
|
|
588
588
|
reactData.pendingRowFlag++;
|
|
589
589
|
$xeTable.updateFooter();
|
|
590
590
|
$xeTable.cacheRowMap(false);
|
|
@@ -654,11 +654,9 @@ hooks.add('tableEditModule', {
|
|
|
654
654
|
* 获取新增的临时数据
|
|
655
655
|
*/
|
|
656
656
|
getInsertRecords() {
|
|
657
|
-
const {
|
|
658
|
-
const { fullAllDataRowIdData } = internalData;
|
|
659
|
-
const { insertMaps } = editStore;
|
|
657
|
+
const { fullAllDataRowIdData, insertRowMaps } = internalData;
|
|
660
658
|
const insertRecords = [];
|
|
661
|
-
XEUtils.each(
|
|
659
|
+
XEUtils.each(insertRowMaps, (row, rowid) => {
|
|
662
660
|
if (fullAllDataRowIdData[rowid]) {
|
|
663
661
|
insertRecords.push(row);
|
|
664
662
|
}
|
|
@@ -669,10 +667,9 @@ hooks.add('tableEditModule', {
|
|
|
669
667
|
* 获取已删除的数据
|
|
670
668
|
*/
|
|
671
669
|
getRemoveRecords() {
|
|
672
|
-
const {
|
|
673
|
-
const { removeMaps } = editStore;
|
|
670
|
+
const { removeRowMaps } = internalData;
|
|
674
671
|
const removeRecords = [];
|
|
675
|
-
XEUtils.each(
|
|
672
|
+
XEUtils.each(removeRowMaps, (row) => {
|
|
676
673
|
removeRecords.push(row);
|
|
677
674
|
});
|
|
678
675
|
return removeRecords;
|
|
@@ -699,7 +696,7 @@ hooks.add('tableEditModule', {
|
|
|
699
696
|
if (process.env.NODE_ENV === 'development') {
|
|
700
697
|
warnLog('vxe.error.delFunc', ['getActiveRecord', 'getEditRecord']);
|
|
701
698
|
}
|
|
702
|
-
return
|
|
699
|
+
return $xeTable.getEditRecord();
|
|
703
700
|
},
|
|
704
701
|
getEditRecord() {
|
|
705
702
|
const { editStore } = reactData;
|
|
@@ -727,7 +724,7 @@ hooks.add('tableEditModule', {
|
|
|
727
724
|
if (process.env.NODE_ENV === 'development') {
|
|
728
725
|
warnLog('vxe.error.delFunc', ['clearActived', 'clearEdit']);
|
|
729
726
|
}
|
|
730
|
-
return
|
|
727
|
+
return $xeTable.clearEdit(row);
|
|
731
728
|
},
|
|
732
729
|
/**
|
|
733
730
|
* 清除激活的编辑
|
|
@@ -751,7 +748,7 @@ hooks.add('tableEditModule', {
|
|
|
751
748
|
warnLog('vxe.error.delFunc', ['isActiveByRow', 'isEditByRow']);
|
|
752
749
|
}
|
|
753
750
|
// 即将废弃
|
|
754
|
-
return
|
|
751
|
+
return $xeTable.isEditByRow(row);
|
|
755
752
|
},
|
|
756
753
|
/**
|
|
757
754
|
* 判断行是否为激活编辑状态
|
|
@@ -915,7 +912,7 @@ hooks.add('tableEditModule', {
|
|
|
915
912
|
if (isMouseSelected && (selected.row !== row || selected.column !== column)) {
|
|
916
913
|
if (actived.row !== row || (editOpts.mode === 'cell' ? actived.column !== column : false)) {
|
|
917
914
|
handleClearEdit(evnt);
|
|
918
|
-
|
|
915
|
+
$xeTable.clearSelected();
|
|
919
916
|
if ($xeTable.clearCellAreas) {
|
|
920
917
|
$xeTable.clearCellAreas();
|
|
921
918
|
$xeTable.clearCopyCellArea();
|
|
@@ -85,9 +85,7 @@ hooks.add('tableValidatorModule', {
|
|
|
85
85
|
const beginValidate = (rows, cols, cb, isFull) => {
|
|
86
86
|
const validRest = {};
|
|
87
87
|
const { editRules, treeConfig } = props;
|
|
88
|
-
const {
|
|
89
|
-
const { afterFullData, pendingRowMaps } = internalData;
|
|
90
|
-
const { removeMaps } = editStore;
|
|
88
|
+
const { afterFullData, pendingRowMaps, removeRowMaps } = internalData;
|
|
91
89
|
const treeOpts = computeTreeOpts.value;
|
|
92
90
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
93
91
|
const validOpts = computeValidOpts.value;
|
|
@@ -121,7 +119,7 @@ hooks.add('tableValidatorModule', {
|
|
|
121
119
|
const handleVaild = (row) => {
|
|
122
120
|
const rowid = getRowid($xeTable, row);
|
|
123
121
|
// 是否删除
|
|
124
|
-
if (
|
|
122
|
+
if (removeRowMaps[rowid]) {
|
|
125
123
|
return;
|
|
126
124
|
}
|
|
127
125
|
// 是否标记删除
|
package/es/table/src/body.js
CHANGED
|
@@ -414,10 +414,13 @@ export default defineComponent({
|
|
|
414
414
|
const rows = [];
|
|
415
415
|
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
416
416
|
tableData.forEach((row, $rowIndex) => {
|
|
417
|
-
const
|
|
417
|
+
const rowid = handleGetRowId(row);
|
|
418
|
+
const rowRest = fullAllDataRowIdData[rowid] || {};
|
|
418
419
|
let rowIndex = $rowIndex;
|
|
419
|
-
|
|
420
|
-
|
|
420
|
+
let rowLevel = 0;
|
|
421
|
+
let seq = -1;
|
|
422
|
+
let _rowIndex = -1;
|
|
423
|
+
const trOn = {};
|
|
421
424
|
// 当前行事件
|
|
422
425
|
if (rowOpts.isHover || highlightHoverRow) {
|
|
423
426
|
trOn.onMouseenter = (evnt) => {
|
|
@@ -433,11 +436,6 @@ export default defineComponent({
|
|
|
433
436
|
$xeTable.clearHoverRow();
|
|
434
437
|
};
|
|
435
438
|
}
|
|
436
|
-
const rowid = handleGetRowId(row);
|
|
437
|
-
const rowRest = fullAllDataRowIdData[rowid] || {};
|
|
438
|
-
let rowLevel = 0;
|
|
439
|
-
let seq = -1;
|
|
440
|
-
let _rowIndex = 0;
|
|
441
439
|
if (rowRest) {
|
|
442
440
|
rowLevel = rowRest.level;
|
|
443
441
|
if (treeConfig && transform && seqMode === 'increasing') {
|
|
@@ -446,6 +444,7 @@ export default defineComponent({
|
|
|
446
444
|
else {
|
|
447
445
|
seq = rowRest.seq;
|
|
448
446
|
}
|
|
447
|
+
rowIndex = rowRest.index;
|
|
449
448
|
_rowIndex = rowRest._index;
|
|
450
449
|
}
|
|
451
450
|
const params = { $table: $xeTable, seq, rowid, fixed: fixedType, type: renderType, level: rowLevel, row, rowIndex, $rowIndex, _rowIndex };
|
package/es/table/src/table.js
CHANGED
|
@@ -172,9 +172,7 @@ export default defineComponent({
|
|
|
172
172
|
focused: {
|
|
173
173
|
row: null,
|
|
174
174
|
column: null
|
|
175
|
-
}
|
|
176
|
-
insertMaps: {},
|
|
177
|
-
removeMaps: {}
|
|
175
|
+
}
|
|
178
176
|
},
|
|
179
177
|
// 存放 tooltip 相关信息
|
|
180
178
|
tooltipStore: {
|
|
@@ -236,6 +234,8 @@ export default defineComponent({
|
|
|
236
234
|
treeExpandedFlag: 1,
|
|
237
235
|
updateCheckboxFlag: 1,
|
|
238
236
|
pendingRowFlag: 1,
|
|
237
|
+
insertRowFlag: 1,
|
|
238
|
+
removeRowFlag: 1,
|
|
239
239
|
rowHeightStore: {
|
|
240
240
|
default: 48,
|
|
241
241
|
medium: 44,
|
|
@@ -335,7 +335,6 @@ export default defineComponent({
|
|
|
335
335
|
fullDataRowIdData: {},
|
|
336
336
|
fullColumnIdData: {},
|
|
337
337
|
fullColumnFieldData: {},
|
|
338
|
-
// prevDragRow: null,
|
|
339
338
|
// 已展开的行集合
|
|
340
339
|
rowExpandedMaps: {},
|
|
341
340
|
// 懒加载中的展开行的集合
|
|
@@ -348,6 +347,10 @@ export default defineComponent({
|
|
|
348
347
|
selectCheckboxMaps: {},
|
|
349
348
|
// 已标记的对象集
|
|
350
349
|
pendingRowMaps: {},
|
|
350
|
+
// 已新增的临时行
|
|
351
|
+
insertRowMaps: {},
|
|
352
|
+
// 已删除行
|
|
353
|
+
removeRowMaps: {},
|
|
351
354
|
inited: false,
|
|
352
355
|
tooltipTimeout: null,
|
|
353
356
|
initStatus: false,
|
|
@@ -418,8 +421,8 @@ export default defineComponent({
|
|
|
418
421
|
return virtualXOpts;
|
|
419
422
|
});
|
|
420
423
|
const computeScrollXThreshold = computed(() => {
|
|
421
|
-
const
|
|
422
|
-
const { threshold } =
|
|
424
|
+
const virtualXOpts = computeVirtualXOpts.value;
|
|
425
|
+
const { threshold } = virtualXOpts;
|
|
423
426
|
if (threshold) {
|
|
424
427
|
return XEUtils.toNumber(threshold);
|
|
425
428
|
}
|
|
@@ -450,8 +453,8 @@ export default defineComponent({
|
|
|
450
453
|
return !!(scrollbarOpts.y && scrollbarOpts.y.position === 'left');
|
|
451
454
|
});
|
|
452
455
|
const computeScrollYThreshold = computed(() => {
|
|
453
|
-
const
|
|
454
|
-
const { threshold } =
|
|
456
|
+
const virtualYOpts = computeVirtualYOpts.value;
|
|
457
|
+
const { threshold } = virtualYOpts;
|
|
455
458
|
if (threshold) {
|
|
456
459
|
return XEUtils.toNumber(threshold);
|
|
457
460
|
}
|
|
@@ -1020,14 +1023,14 @@ export default defineComponent({
|
|
|
1020
1023
|
};
|
|
1021
1024
|
const setMerges = (merges, mList, rowList) => {
|
|
1022
1025
|
if (merges) {
|
|
1023
|
-
const { treeConfig } = props
|
|
1026
|
+
// const { treeConfig } = props
|
|
1024
1027
|
const { visibleColumn } = internalData;
|
|
1025
1028
|
if (!XEUtils.isArray(merges)) {
|
|
1026
1029
|
merges = [merges];
|
|
1027
1030
|
}
|
|
1028
|
-
if (treeConfig && merges.length) {
|
|
1029
|
-
|
|
1030
|
-
}
|
|
1031
|
+
// if (treeConfig && merges.length) {
|
|
1032
|
+
// errLog('vxe.error.noTree', ['merge-cells | merge-footer-items'])
|
|
1033
|
+
// }
|
|
1031
1034
|
merges.forEach((item) => {
|
|
1032
1035
|
let { row, col, rowspan, colspan } = item;
|
|
1033
1036
|
if (rowList && XEUtils.isNumber(row)) {
|
|
@@ -1070,14 +1073,14 @@ export default defineComponent({
|
|
|
1070
1073
|
const removeMerges = (merges, mList, rowList) => {
|
|
1071
1074
|
const rest = [];
|
|
1072
1075
|
if (merges) {
|
|
1073
|
-
const { treeConfig } = props
|
|
1076
|
+
// const { treeConfig } = props
|
|
1074
1077
|
const { visibleColumn } = internalData;
|
|
1075
1078
|
if (!XEUtils.isArray(merges)) {
|
|
1076
1079
|
merges = [merges];
|
|
1077
1080
|
}
|
|
1078
|
-
if (treeConfig && merges.length) {
|
|
1079
|
-
|
|
1080
|
-
}
|
|
1081
|
+
// if (treeConfig && merges.length) {
|
|
1082
|
+
// errLog('vxe.error.noTree', ['merge-cells | merge-footer-items'])
|
|
1083
|
+
// }
|
|
1081
1084
|
merges.forEach((item) => {
|
|
1082
1085
|
let { row, col } = item;
|
|
1083
1086
|
if (rowList && XEUtils.isNumber(row)) {
|
|
@@ -1776,7 +1779,7 @@ export default defineComponent({
|
|
|
1776
1779
|
updateAfterDataIndex();
|
|
1777
1780
|
};
|
|
1778
1781
|
const updateStyle = () => {
|
|
1779
|
-
const {
|
|
1782
|
+
const { showHeaderOverflow: allColumnHeaderOverflow, showFooterOverflow: allColumnFooterOverflow, mouseConfig, spanMethod, footerSpanMethod } = props;
|
|
1780
1783
|
const { isGroup, currentRow, tableColumn, scrollXLoad, scrollYLoad, overflowX, scrollbarWidth, overflowY, scrollbarHeight, scrollXWidth, columnStore, editStore, isAllOverflow, expandColumn } = reactData;
|
|
1781
1784
|
const { visibleColumn, tableHeight, headerHeight, footerHeight, elemStore, customHeight, customMinHeight, customMaxHeight } = internalData;
|
|
1782
1785
|
const el = refElem.value;
|
|
@@ -1929,32 +1932,6 @@ export default defineComponent({
|
|
|
1929
1932
|
if (tableElem) {
|
|
1930
1933
|
tableElem.style.width = tWidth ? `${tWidth}px` : '';
|
|
1931
1934
|
}
|
|
1932
|
-
const listElem = getRefElem(elemStore[`${name}-${layout}-list`]);
|
|
1933
|
-
if (isGroup && listElem) {
|
|
1934
|
-
XEUtils.arrayEach(listElem.querySelectorAll('.col--group'), (thElem) => {
|
|
1935
|
-
const colNode = $xeTable.getColumnNode(thElem);
|
|
1936
|
-
if (colNode) {
|
|
1937
|
-
const column = colNode.item;
|
|
1938
|
-
const { showHeaderOverflow } = column;
|
|
1939
|
-
const cellOverflow = XEUtils.isBoolean(showHeaderOverflow) ? showHeaderOverflow : allColumnHeaderOverflow;
|
|
1940
|
-
const showEllipsis = cellOverflow === 'ellipsis';
|
|
1941
|
-
const showTitle = cellOverflow === 'title';
|
|
1942
|
-
const showTooltip = cellOverflow === true || cellOverflow === 'tooltip';
|
|
1943
|
-
const hasEllipsis = showTitle || showTooltip || showEllipsis;
|
|
1944
|
-
let childWidth = 0;
|
|
1945
|
-
let countChild = 0;
|
|
1946
|
-
if (hasEllipsis) {
|
|
1947
|
-
XEUtils.eachTree(column.children, (item) => {
|
|
1948
|
-
if (!item.children || !column.children.length) {
|
|
1949
|
-
countChild++;
|
|
1950
|
-
}
|
|
1951
|
-
childWidth += item.renderWidth;
|
|
1952
|
-
}, { children: 'children' });
|
|
1953
|
-
}
|
|
1954
|
-
thElem.style.width = hasEllipsis ? `${childWidth - countChild - (border ? 2 : 0)}px` : '';
|
|
1955
|
-
}
|
|
1956
|
-
});
|
|
1957
|
-
}
|
|
1958
1935
|
}
|
|
1959
1936
|
else if (layout === 'body') {
|
|
1960
1937
|
if (currScrollElem) {
|
|
@@ -2096,7 +2073,7 @@ export default defineComponent({
|
|
|
2096
2073
|
(sortConfig.multiple ? defaultSort : defaultSort.slice(0, 1)).forEach((item, index) => {
|
|
2097
2074
|
const { field, order } = item;
|
|
2098
2075
|
if (field && order) {
|
|
2099
|
-
const column =
|
|
2076
|
+
const column = $xeTable.getColumnByField(field);
|
|
2100
2077
|
if (column && column.sortable) {
|
|
2101
2078
|
column.order = order;
|
|
2102
2079
|
column.sortTime = Date.now() + index;
|
|
@@ -2104,7 +2081,7 @@ export default defineComponent({
|
|
|
2104
2081
|
}
|
|
2105
2082
|
});
|
|
2106
2083
|
if (!sortOpts.remote) {
|
|
2107
|
-
|
|
2084
|
+
$xeTable.handleTableData(true).then(updateStyle);
|
|
2108
2085
|
}
|
|
2109
2086
|
}
|
|
2110
2087
|
}
|
|
@@ -2163,7 +2140,7 @@ export default defineComponent({
|
|
|
2163
2140
|
const expandOpts = computeExpandOpts.value;
|
|
2164
2141
|
const { expandAll, expandRowKeys } = expandOpts;
|
|
2165
2142
|
if (expandAll) {
|
|
2166
|
-
|
|
2143
|
+
$xeTable.setAllRowExpand(true);
|
|
2167
2144
|
}
|
|
2168
2145
|
else if (expandRowKeys) {
|
|
2169
2146
|
const defExpandeds = [];
|
|
@@ -2172,7 +2149,7 @@ export default defineComponent({
|
|
|
2172
2149
|
defExpandeds.push(fullDataRowIdData[rowid].row);
|
|
2173
2150
|
}
|
|
2174
2151
|
});
|
|
2175
|
-
|
|
2152
|
+
$xeTable.setRowExpand(defExpandeds, true);
|
|
2176
2153
|
}
|
|
2177
2154
|
}
|
|
2178
2155
|
};
|
|
@@ -2533,13 +2510,13 @@ export default defineComponent({
|
|
|
2533
2510
|
const handleDefaultMergeCells = () => {
|
|
2534
2511
|
const { mergeCells } = props;
|
|
2535
2512
|
if (mergeCells) {
|
|
2536
|
-
|
|
2513
|
+
$xeTable.setMergeCells(mergeCells);
|
|
2537
2514
|
}
|
|
2538
2515
|
};
|
|
2539
2516
|
const handleDefaultMergeFooterItems = () => {
|
|
2540
2517
|
const { mergeFooterItems } = props;
|
|
2541
2518
|
if (mergeFooterItems) {
|
|
2542
|
-
|
|
2519
|
+
$xeTable.setMergeFooterItems(mergeFooterItems);
|
|
2543
2520
|
}
|
|
2544
2521
|
};
|
|
2545
2522
|
// 计算可视渲染相关数据
|
|
@@ -2629,7 +2606,7 @@ export default defineComponent({
|
|
|
2629
2606
|
*/
|
|
2630
2607
|
const loadTableData = (datas, isReset) => {
|
|
2631
2608
|
const { keepSource, treeConfig } = props;
|
|
2632
|
-
const {
|
|
2609
|
+
const { scrollYLoad: oldScrollYLoad } = reactData;
|
|
2633
2610
|
const { scrollYStore, scrollXStore, lastScrollLeft, lastScrollTop } = internalData;
|
|
2634
2611
|
const treeOpts = computeTreeOpts.value;
|
|
2635
2612
|
const { transform } = treeOpts;
|
|
@@ -2680,8 +2657,8 @@ export default defineComponent({
|
|
|
2680
2657
|
scrollXStore.endIndex = 1;
|
|
2681
2658
|
reactData.isRowLoading = true;
|
|
2682
2659
|
reactData.scrollVMLoading = false;
|
|
2683
|
-
|
|
2684
|
-
|
|
2660
|
+
internalData.insertRowMaps = {};
|
|
2661
|
+
internalData.removeRowMaps = {};
|
|
2685
2662
|
const sYLoad = updateScrollYStatus(fullData);
|
|
2686
2663
|
reactData.isDragColMove = false;
|
|
2687
2664
|
reactData.isDragRowMove = false;
|
|
@@ -2703,10 +2680,10 @@ export default defineComponent({
|
|
|
2703
2680
|
$xeTable.clearCellAreas();
|
|
2704
2681
|
$xeTable.clearCopyCellArea();
|
|
2705
2682
|
}
|
|
2706
|
-
|
|
2707
|
-
|
|
2708
|
-
|
|
2709
|
-
|
|
2683
|
+
$xeTable.clearMergeCells();
|
|
2684
|
+
$xeTable.clearMergeFooterItems();
|
|
2685
|
+
$xeTable.handleTableData(true);
|
|
2686
|
+
$xeTable.updateFooter();
|
|
2710
2687
|
return nextTick().then(() => {
|
|
2711
2688
|
updateHeight();
|
|
2712
2689
|
updateStyle();
|
|
@@ -2737,20 +2714,20 @@ export default defineComponent({
|
|
|
2737
2714
|
}
|
|
2738
2715
|
}
|
|
2739
2716
|
handleReserveStatus();
|
|
2740
|
-
|
|
2717
|
+
$xeTable.checkSelectionStatus();
|
|
2741
2718
|
return new Promise(resolve => {
|
|
2742
2719
|
nextTick()
|
|
2743
|
-
.then(() =>
|
|
2720
|
+
.then(() => $xeTable.recalculate())
|
|
2744
2721
|
.then(() => {
|
|
2745
2722
|
let targetScrollLeft = lastScrollLeft;
|
|
2746
2723
|
let targetScrollTop = lastScrollTop;
|
|
2747
|
-
const
|
|
2748
|
-
const
|
|
2724
|
+
const virtualXOpts = computeVirtualXOpts.value;
|
|
2725
|
+
const virtualYOpts = computeVirtualYOpts.value;
|
|
2749
2726
|
// 是否在更新数据之后自动滚动重置滚动条
|
|
2750
|
-
if (
|
|
2727
|
+
if (virtualXOpts.scrollToLeftOnChange) {
|
|
2751
2728
|
targetScrollLeft = 0;
|
|
2752
2729
|
}
|
|
2753
|
-
if (
|
|
2730
|
+
if (virtualYOpts.scrollToTopOnChange) {
|
|
2754
2731
|
targetScrollTop = 0;
|
|
2755
2732
|
}
|
|
2756
2733
|
reactData.isRowLoading = false;
|
|
@@ -2786,7 +2763,7 @@ export default defineComponent({
|
|
|
2786
2763
|
handleDefaultTreeExpand();
|
|
2787
2764
|
handleDefaultMergeCells();
|
|
2788
2765
|
handleDefaultMergeFooterItems();
|
|
2789
|
-
nextTick(() => setTimeout(() =>
|
|
2766
|
+
nextTick(() => setTimeout(() => $xeTable.recalculate()));
|
|
2790
2767
|
};
|
|
2791
2768
|
/**
|
|
2792
2769
|
* 处理初始化的默认行为
|
|
@@ -2852,7 +2829,7 @@ export default defineComponent({
|
|
|
2852
2829
|
const centerList = [];
|
|
2853
2830
|
const rightList = [];
|
|
2854
2831
|
const { isGroup, columnStore } = reactData;
|
|
2855
|
-
const
|
|
2832
|
+
const virtualXOpts = computeVirtualXOpts.value;
|
|
2856
2833
|
const { collectColumn, tableFullColumn, scrollXStore, fullColumnIdData } = internalData;
|
|
2857
2834
|
// 如果是分组表头,如果子列全部被隐藏,则根列也隐藏
|
|
2858
2835
|
if (isGroup) {
|
|
@@ -2916,7 +2893,7 @@ export default defineComponent({
|
|
|
2916
2893
|
}
|
|
2917
2894
|
const visibleColumn = leftList.concat(centerList).concat(rightList);
|
|
2918
2895
|
// 如果gt为0,则总是启用
|
|
2919
|
-
const scrollXLoad = !!
|
|
2896
|
+
const scrollXLoad = !!virtualXOpts.enabled && virtualXOpts.gt > -1 && (virtualXOpts.gt === 0 || virtualXOpts.gt < tableFullColumn.length);
|
|
2920
2897
|
reactData.hasFixedColumn = leftList.length > 0 || rightList.length > 0;
|
|
2921
2898
|
Object.assign(columnStore, { leftList, centerList, rightList });
|
|
2922
2899
|
if (scrollXLoad) {
|
|
@@ -3025,12 +3002,12 @@ export default defineComponent({
|
|
|
3025
3002
|
};
|
|
3026
3003
|
const updateScrollYStatus = (fullData) => {
|
|
3027
3004
|
const { treeConfig } = props;
|
|
3028
|
-
const
|
|
3005
|
+
const virtualYOpts = computeVirtualYOpts.value;
|
|
3029
3006
|
const treeOpts = computeTreeOpts.value;
|
|
3030
3007
|
const { transform } = treeOpts;
|
|
3031
3008
|
const allList = fullData || internalData.tableFullData;
|
|
3032
3009
|
// 如果gt为0,则总是启用
|
|
3033
|
-
const scrollYLoad = (transform || !treeConfig) && !!
|
|
3010
|
+
const scrollYLoad = (transform || !treeConfig) && !!virtualYOpts.enabled && virtualYOpts.gt > -1 && (virtualYOpts.gt === 0 || virtualYOpts.gt < allList.length);
|
|
3034
3011
|
reactData.scrollYLoad = scrollYLoad;
|
|
3035
3012
|
return scrollYLoad;
|
|
3036
3013
|
};
|
|
@@ -3732,9 +3709,7 @@ export default defineComponent({
|
|
|
3732
3709
|
*/
|
|
3733
3710
|
revertData(rows, field) {
|
|
3734
3711
|
const { keepSource, treeConfig } = props;
|
|
3735
|
-
const {
|
|
3736
|
-
const { fullAllDataRowIdData, fullDataRowIdData, tableSourceData, sourceDataRowIdData, tableFullData, afterFullData } = internalData;
|
|
3737
|
-
const removeTempMaps = Object.assign({}, editStore.removeMaps);
|
|
3712
|
+
const { fullAllDataRowIdData, fullDataRowIdData, tableSourceData, sourceDataRowIdData, tableFullData, afterFullData, removeRowMaps } = internalData;
|
|
3738
3713
|
const treeOpts = computeTreeOpts.value;
|
|
3739
3714
|
const { transform } = treeOpts;
|
|
3740
3715
|
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
@@ -3770,7 +3745,9 @@ export default defineComponent({
|
|
|
3770
3745
|
XEUtils.destructuring(row, XEUtils.clone(oRow, true));
|
|
3771
3746
|
}
|
|
3772
3747
|
if (!fullDataRowIdData[rowid] && $xeTable.isRemoveByRow(row)) {
|
|
3773
|
-
|
|
3748
|
+
if (removeRowMaps[rowid]) {
|
|
3749
|
+
delete removeRowMaps[rowid];
|
|
3750
|
+
}
|
|
3774
3751
|
tableFullData.unshift(row);
|
|
3775
3752
|
afterFullData.unshift(row);
|
|
3776
3753
|
reDelFlag = true;
|
|
@@ -3782,7 +3759,7 @@ export default defineComponent({
|
|
|
3782
3759
|
}
|
|
3783
3760
|
if (rows) {
|
|
3784
3761
|
if (reDelFlag) {
|
|
3785
|
-
|
|
3762
|
+
reactData.removeRowFlag++;
|
|
3786
3763
|
$xeTable.updateFooter();
|
|
3787
3764
|
$xeTable.cacheRowMap(false);
|
|
3788
3765
|
$xeTable.handleTableData(treeConfig && transform);
|
|
@@ -3915,22 +3892,19 @@ export default defineComponent({
|
|
|
3915
3892
|
* @param {Row} row 行对象
|
|
3916
3893
|
*/
|
|
3917
3894
|
isInsertByRow(row) {
|
|
3918
|
-
const { editStore } = reactData;
|
|
3919
3895
|
const rowid = getRowid($xeTable, row);
|
|
3920
|
-
return !!
|
|
3896
|
+
return !!reactData.insertRowFlag && !!internalData.insertRowMaps[rowid];
|
|
3921
3897
|
},
|
|
3922
3898
|
isRemoveByRow(row) {
|
|
3923
|
-
const { editStore } = reactData;
|
|
3924
3899
|
const rowid = getRowid($xeTable, row);
|
|
3925
|
-
return !!
|
|
3900
|
+
return !!reactData.removeRowFlag && !!internalData.removeRowMaps[rowid];
|
|
3926
3901
|
},
|
|
3927
3902
|
/**
|
|
3928
3903
|
* 删除所有新增的临时数据
|
|
3929
3904
|
* @returns
|
|
3930
3905
|
*/
|
|
3931
3906
|
removeInsertRow() {
|
|
3932
|
-
|
|
3933
|
-
editStore.insertMaps = {};
|
|
3907
|
+
internalData.insertRowMaps = {};
|
|
3934
3908
|
return $xeTable.remove($xeTable.getInsertRecords());
|
|
3935
3909
|
},
|
|
3936
3910
|
/**
|
|
@@ -3969,8 +3943,8 @@ export default defineComponent({
|
|
|
3969
3943
|
* @param {Number} columnIndex 索引
|
|
3970
3944
|
*/
|
|
3971
3945
|
getColumns(columnIndex) {
|
|
3972
|
-
const
|
|
3973
|
-
return XEUtils.isUndefined(columnIndex) ?
|
|
3946
|
+
const { visibleColumn } = internalData;
|
|
3947
|
+
return XEUtils.isUndefined(columnIndex) ? visibleColumn.slice(0) : visibleColumn[columnIndex];
|
|
3974
3948
|
},
|
|
3975
3949
|
/**
|
|
3976
3950
|
* 根据列获取列的唯一主键
|
|
@@ -3984,7 +3958,7 @@ export default defineComponent({
|
|
|
3984
3958
|
* @param {String} colid 列主键
|
|
3985
3959
|
*/
|
|
3986
3960
|
getColumnById(colid) {
|
|
3987
|
-
const fullColumnIdData = internalData
|
|
3961
|
+
const { fullColumnIdData } = internalData;
|
|
3988
3962
|
return colid && fullColumnIdData[colid] ? fullColumnIdData[colid].column : null;
|
|
3989
3963
|
},
|
|
3990
3964
|
/**
|
|
@@ -3996,7 +3970,7 @@ export default defineComponent({
|
|
|
3996
3970
|
return field && fullColumnFieldData[field] ? fullColumnFieldData[field].column : null;
|
|
3997
3971
|
},
|
|
3998
3972
|
getParentColumn(fieldOrColumn) {
|
|
3999
|
-
const fullColumnIdData = internalData
|
|
3973
|
+
const { fullColumnIdData } = internalData;
|
|
4000
3974
|
const column = handleFieldOrColumn($xeTable, fieldOrColumn);
|
|
4001
3975
|
return column && column.parentId && fullColumnIdData[column.parentId] ? fullColumnIdData[column.parentId].column : null;
|
|
4002
3976
|
},
|
|
@@ -8884,8 +8858,8 @@ export default defineComponent({
|
|
|
8884
8858
|
* 横向 X 可视渲染事件处理
|
|
8885
8859
|
*/
|
|
8886
8860
|
triggerScrollXEvent() {
|
|
8887
|
-
const
|
|
8888
|
-
if (
|
|
8861
|
+
const virtualXOpts = computeVirtualXOpts.value;
|
|
8862
|
+
if (virtualXOpts.immediate) {
|
|
8889
8863
|
loadScrollXData();
|
|
8890
8864
|
}
|
|
8891
8865
|
else {
|
|
@@ -8896,8 +8870,8 @@ export default defineComponent({
|
|
|
8896
8870
|
* 纵向 Y 可视渲染事件处理
|
|
8897
8871
|
*/
|
|
8898
8872
|
triggerScrollYEvent() {
|
|
8899
|
-
const
|
|
8900
|
-
if (
|
|
8873
|
+
const virtualYOpts = computeVirtualYOpts.value;
|
|
8874
|
+
if (virtualYOpts.immediate) {
|
|
8901
8875
|
loadScrollYData();
|
|
8902
8876
|
}
|
|
8903
8877
|
else {
|
|
@@ -9093,8 +9067,8 @@ export default defineComponent({
|
|
|
9093
9067
|
return;
|
|
9094
9068
|
}
|
|
9095
9069
|
const wheelSpeed = getWheelSpeed(reactData.lastScrollTime);
|
|
9096
|
-
const deltaTop =
|
|
9097
|
-
const deltaLeft = Math.ceil((shiftKey ? deltaY : deltaX) * wheelSpeed);
|
|
9070
|
+
const deltaTop = shiftKey ? 0 : Math.ceil(deltaY * wheelSpeed);
|
|
9071
|
+
const deltaLeft = shiftKey ? Math.ceil((shiftKey ? (deltaY || deltaX) : deltaX) * wheelSpeed) : 0;
|
|
9098
9072
|
const isTopWheel = deltaTop < 0;
|
|
9099
9073
|
const currScrollTop = bodyScrollElem.scrollTop;
|
|
9100
9074
|
// 如果滚动位置已经是顶部或底部,则不需要触发
|
|
@@ -9113,6 +9087,7 @@ export default defineComponent({
|
|
|
9113
9087
|
evnt.preventDefault();
|
|
9114
9088
|
internalData.inWheelScroll = true;
|
|
9115
9089
|
wheelScrollLeftTo(scrollLeft, (offsetLeft) => {
|
|
9090
|
+
internalData.inWheelScroll = true;
|
|
9116
9091
|
const currLeftNum = offsetLeft;
|
|
9117
9092
|
setScrollLeft(xHandleEl, currLeftNum);
|
|
9118
9093
|
setScrollLeft(bodyScrollElem, currLeftNum);
|
|
@@ -9129,9 +9104,10 @@ export default defineComponent({
|
|
|
9129
9104
|
}
|
|
9130
9105
|
if (isRollY) {
|
|
9131
9106
|
evnt.preventDefault();
|
|
9107
|
+
internalData.inWheelScroll = true;
|
|
9132
9108
|
wheelScrollTopTo(scrollTop - currScrollTop, (offsetTop) => {
|
|
9133
|
-
const currTopNum = bodyScrollElem.scrollTop + offsetTop;
|
|
9134
9109
|
internalData.inWheelScroll = true;
|
|
9110
|
+
const currTopNum = bodyScrollElem.scrollTop + offsetTop;
|
|
9135
9111
|
setScrollTop(yHandleEl, currTopNum);
|
|
9136
9112
|
setScrollTop(bodyScrollElem, currTopNum);
|
|
9137
9113
|
setScrollTop(leftScrollElem, currTopNum);
|
|
@@ -10274,7 +10250,6 @@ export default defineComponent({
|
|
|
10274
10250
|
nextTick(() => {
|
|
10275
10251
|
const { data, exportConfig, importConfig, treeConfig, showOverflow } = props;
|
|
10276
10252
|
const { scrollXStore, scrollYStore } = internalData;
|
|
10277
|
-
const sYOpts = computeSYOpts.value;
|
|
10278
10253
|
const editOpts = computeEditOpts.value;
|
|
10279
10254
|
const treeOpts = computeTreeOpts.value;
|
|
10280
10255
|
const radioOpts = computeRadioOpts.value;
|
|
@@ -10400,8 +10375,7 @@ export default defineComponent({
|
|
|
10400
10375
|
Object.assign(scrollYStore, {
|
|
10401
10376
|
startIndex: 0,
|
|
10402
10377
|
endIndex: 0,
|
|
10403
|
-
visibleSize: 0
|
|
10404
|
-
adaptive: sYOpts.adaptive !== false
|
|
10378
|
+
visibleSize: 0
|
|
10405
10379
|
});
|
|
10406
10380
|
Object.assign(scrollXStore, {
|
|
10407
10381
|
startIndex: 0,
|
package/es/ui/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { VxeUI } from '@vxe-ui/core';
|
|
2
2
|
import { getFuncText } from './src/utils';
|
|
3
|
-
export const version = "4.12.
|
|
3
|
+
export const version = "4.12.1";
|
|
4
4
|
VxeUI.version = version;
|
|
5
5
|
VxeUI.tableVersion = version;
|
|
6
6
|
VxeUI.setConfig({
|
|
@@ -193,13 +193,13 @@ VxeUI.setConfig({
|
|
|
193
193
|
enabled: true,
|
|
194
194
|
gt: 60,
|
|
195
195
|
preSize: 1,
|
|
196
|
-
oSize:
|
|
196
|
+
oSize: 0
|
|
197
197
|
},
|
|
198
198
|
virtualYConfig: {
|
|
199
199
|
enabled: true,
|
|
200
200
|
gt: 100,
|
|
201
201
|
preSize: 1,
|
|
202
|
-
oSize:
|
|
202
|
+
oSize: 0
|
|
203
203
|
},
|
|
204
204
|
scrollbarConfig: {
|
|
205
205
|
// width: 0,
|
package/es/ui/src/log.js
CHANGED