vxe-table 4.1.9 → 4.1.11
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 +1 -1
- package/README.zh-TW.md +0 -1
- package/es/edit/src/hook.js +17 -26
- package/es/filter/src/hook.js +1 -1
- package/es/select/src/select.js +1 -1
- package/es/table/src/body.js +9 -3
- package/es/table/src/table.js +125 -54
- package/es/table/src/util.js +1 -1
- package/es/v-x-e-table/src/conf.js +2 -1
- package/lib/edit/src/hook.js +16 -29
- package/lib/edit/src/hook.min.js +1 -1
- package/lib/filter/src/hook.js +1 -1
- package/lib/filter/src/hook.min.js +1 -1
- package/lib/index.umd.js +276 -119
- package/lib/index.umd.min.js +1 -1
- package/lib/select/src/select.js +1 -1
- package/lib/select/src/select.min.js +1 -1
- package/lib/table/src/body.js +12 -4
- package/lib/table/src/body.min.js +1 -1
- package/lib/table/src/table.js +155 -70
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/src/util.js +1 -1
- package/lib/table/src/util.min.js +1 -1
- package/lib/v-x-e-table/src/conf.js +2 -1
- package/lib/v-x-e-table/src/conf.min.js +1 -1
- package/package.json +4 -4
- package/packages/edit/src/hook.ts +17 -26
- package/packages/export/src/hook.ts +5 -8
- package/packages/filter/src/hook.ts +1 -1
- package/packages/select/src/select.ts +1 -1
- package/packages/table/src/body.ts +9 -3
- package/packages/table/src/table.ts +138 -69
- package/packages/table/src/util.ts +1 -1
- package/packages/v-x-e-table/src/conf.ts +2 -1
- package/packages/validator/src/hook.ts +1 -1
- package/types/column.d.ts +1 -0
- package/types/table.d.ts +7 -3
package/README.md
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
* [x] v2.0 基于 vue2.6+,支持所有主流的浏览器,同时兼具功能与性能
|
|
25
25
|
* [x] v3.0 基于 vue2.6+,支持现代浏览器并保留兼容 IE11,提升渲染性能
|
|
26
26
|
* [x] v4.0 基于 vue3.0+,只支持现代浏览器,不支持 IE
|
|
27
|
-
* [ ] 下一阶段:sticky
|
|
27
|
+
* [ ] 下一阶段:sticky 渲染模式、css 变量主题、将虚拟滚动提升到极致、虚拟滚动动态行高、数据图表可视化
|
|
28
28
|
|
|
29
29
|
## QQ 交流群
|
|
30
30
|
|
package/README.zh-TW.md
CHANGED
package/es/edit/src/hook.js
CHANGED
|
@@ -25,7 +25,7 @@ var editHook = {
|
|
|
25
25
|
setupTable: function ($xetable) {
|
|
26
26
|
var props = $xetable.props, reactData = $xetable.reactData, internalData = $xetable.internalData;
|
|
27
27
|
var refElem = $xetable.getRefMaps().refElem;
|
|
28
|
-
var _a = $xetable.getComputeMaps(), computeMouseOpts = _a.computeMouseOpts, computeEditOpts = _a.computeEditOpts, computeCheckboxOpts = _a.computeCheckboxOpts,
|
|
28
|
+
var _a = $xetable.getComputeMaps(), computeMouseOpts = _a.computeMouseOpts, computeEditOpts = _a.computeEditOpts, computeCheckboxOpts = _a.computeCheckboxOpts, computeTreeOpts = _a.computeTreeOpts;
|
|
29
29
|
var editMethods = {};
|
|
30
30
|
var editPrivateMethods = {};
|
|
31
31
|
var getEditColumnModel = function (row, column) {
|
|
@@ -67,13 +67,13 @@ var editHook = {
|
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
function insertTreeRow(newRecords, isAppend) {
|
|
70
|
-
var
|
|
70
|
+
var tableFullTreeData = internalData.tableFullTreeData, afterFullData = internalData.afterFullData, fullDataRowIdData = internalData.fullDataRowIdData, fullAllDataRowIdData = internalData.fullAllDataRowIdData;
|
|
71
71
|
var treeOpts = computeTreeOpts.value;
|
|
72
72
|
var funcName = isAppend ? 'push' : 'unshift';
|
|
73
73
|
newRecords.forEach(function (item) {
|
|
74
74
|
var parentRowId = item[treeOpts.parentField];
|
|
75
75
|
var rowid = getRowid($xetable, item);
|
|
76
|
-
var matchObj = parentRowId ? XEUtils.findTree(
|
|
76
|
+
var matchObj = parentRowId ? XEUtils.findTree(tableFullTreeData, function (item) { return parentRowId === item[treeOpts.rowField]; }, treeOpts) : null;
|
|
77
77
|
if (matchObj) {
|
|
78
78
|
var parentRow = matchObj.item;
|
|
79
79
|
var parentRest = fullAllDataRowIdData[getRowid($xetable, parentRow)];
|
|
@@ -94,13 +94,12 @@ var editHook = {
|
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
96
|
afterFullData[funcName](item);
|
|
97
|
-
|
|
98
|
-
var rest = { row: item, rowid: rowid, seq: -1, index: -1, _index: -1, $index: -1, items:
|
|
97
|
+
tableFullTreeData[funcName](item);
|
|
98
|
+
var rest = { row: item, rowid: rowid, seq: -1, index: -1, _index: -1, $index: -1, items: tableFullTreeData, parent: null, level: 0 };
|
|
99
99
|
fullDataRowIdData[rowid] = rest;
|
|
100
100
|
fullAllDataRowIdData[rowid] = rest;
|
|
101
101
|
}
|
|
102
102
|
});
|
|
103
|
-
$xetable.updateVirtualTreeData();
|
|
104
103
|
}
|
|
105
104
|
editMethods = {
|
|
106
105
|
/**
|
|
@@ -122,9 +121,8 @@ var editHook = {
|
|
|
122
121
|
insertAt: function (records, row) {
|
|
123
122
|
var _a;
|
|
124
123
|
var treeConfig = props.treeConfig;
|
|
125
|
-
var mergeList = reactData.mergeList, editStore = reactData.editStore
|
|
126
|
-
var
|
|
127
|
-
var sYOpts = computeSYOpts.value;
|
|
124
|
+
var mergeList = reactData.mergeList, editStore = reactData.editStore;
|
|
125
|
+
var tableFullTreeData = internalData.tableFullTreeData, afterFullData = internalData.afterFullData, tableFullData = internalData.tableFullData, fullDataRowIdData = internalData.fullDataRowIdData, fullAllDataRowIdData = internalData.fullAllDataRowIdData;
|
|
128
126
|
var treeOpts = computeTreeOpts.value;
|
|
129
127
|
var transform = treeOpts.transform;
|
|
130
128
|
if (!XEUtils.isArray(records)) {
|
|
@@ -169,7 +167,7 @@ var editHook = {
|
|
|
169
167
|
else {
|
|
170
168
|
// 如果为虚拟树
|
|
171
169
|
if (treeConfig && transform) {
|
|
172
|
-
var matchObj_1 = XEUtils.findTree(
|
|
170
|
+
var matchObj_1 = XEUtils.findTree(tableFullTreeData, function (item) { return row[treeOpts.rowField] === item[treeOpts.rowField]; }, treeOpts);
|
|
173
171
|
if (matchObj_1) {
|
|
174
172
|
var parentRow_1 = matchObj_1.parent;
|
|
175
173
|
var parentChilds_1 = matchObj_1.items;
|
|
@@ -192,7 +190,6 @@ var editHook = {
|
|
|
192
190
|
fullDataRowIdData[rowid] = rest;
|
|
193
191
|
fullAllDataRowIdData[rowid] = rest;
|
|
194
192
|
});
|
|
195
|
-
$xetable.updateVirtualTreeData();
|
|
196
193
|
}
|
|
197
194
|
else {
|
|
198
195
|
if (process.env.NODE_ENV === 'development') {
|
|
@@ -225,13 +222,11 @@ var editHook = {
|
|
|
225
222
|
}
|
|
226
223
|
}
|
|
227
224
|
(_a = editStore.insertList).unshift.apply(_a, newRecords);
|
|
228
|
-
reactData.scrollYLoad = !treeConfig && sYOpts.gt > -1 && sYOpts.gt < tableFullData.length;
|
|
229
225
|
$xetable.updateFooter();
|
|
230
226
|
$xetable.cacheRowMap();
|
|
231
|
-
$xetable.handleTableData(transform);
|
|
232
|
-
$xetable.updateAfterDataIndex();
|
|
227
|
+
$xetable.handleTableData(treeConfig && treeOpts.transform);
|
|
233
228
|
$xetable.checkSelectionStatus();
|
|
234
|
-
if (scrollYLoad) {
|
|
229
|
+
if (reactData.scrollYLoad) {
|
|
235
230
|
$xetable.updateScrollYSpace();
|
|
236
231
|
}
|
|
237
232
|
return nextTick().then(function () {
|
|
@@ -252,10 +247,9 @@ var editHook = {
|
|
|
252
247
|
*/
|
|
253
248
|
remove: function (rows) {
|
|
254
249
|
var treeConfig = props.treeConfig;
|
|
255
|
-
var mergeList = reactData.mergeList, editStore = reactData.editStore, selection = reactData.selection
|
|
256
|
-
var
|
|
250
|
+
var mergeList = reactData.mergeList, editStore = reactData.editStore, selection = reactData.selection;
|
|
251
|
+
var tableFullTreeData = internalData.tableFullTreeData, afterFullData = internalData.afterFullData, tableFullData = internalData.tableFullData;
|
|
257
252
|
var checkboxOpts = computeCheckboxOpts.value;
|
|
258
|
-
var sYOpts = computeSYOpts.value;
|
|
259
253
|
var treeOpts = computeTreeOpts.value;
|
|
260
254
|
var transform = treeOpts.transform;
|
|
261
255
|
var actived = editStore.actived, removeList = editStore.removeList, insertList = editStore.insertList;
|
|
@@ -294,7 +288,7 @@ var editHook = {
|
|
|
294
288
|
if (treeConfig && transform) {
|
|
295
289
|
rows.forEach(function (row) {
|
|
296
290
|
var rowid = getRowid($xetable, row);
|
|
297
|
-
var matchObj = XEUtils.findTree(
|
|
291
|
+
var matchObj = XEUtils.findTree(tableFullTreeData, function (item) { return rowid === getRowid($xetable, item); }, treeOpts);
|
|
298
292
|
if (matchObj) {
|
|
299
293
|
var rItems = matchObj.items.splice(matchObj.index, 1);
|
|
300
294
|
rest.push(rItems[0]);
|
|
@@ -303,7 +297,6 @@ var editHook = {
|
|
|
303
297
|
if (afIndex > -1) {
|
|
304
298
|
afterFullData.splice(afIndex, 1);
|
|
305
299
|
}
|
|
306
|
-
$xetable.updateVirtualTreeData();
|
|
307
300
|
});
|
|
308
301
|
}
|
|
309
302
|
else {
|
|
@@ -341,13 +334,11 @@ var editHook = {
|
|
|
341
334
|
insertList.splice(iIndex, 1);
|
|
342
335
|
}
|
|
343
336
|
});
|
|
344
|
-
reactData.scrollYLoad = !treeConfig && sYOpts.gt > -1 && sYOpts.gt < tableFullData.length;
|
|
345
337
|
$xetable.updateFooter();
|
|
346
338
|
$xetable.cacheRowMap();
|
|
347
|
-
$xetable.handleTableData(transform);
|
|
348
|
-
$xetable.updateAfterDataIndex();
|
|
339
|
+
$xetable.handleTableData(treeConfig && treeOpts.transform);
|
|
349
340
|
$xetable.checkSelectionStatus();
|
|
350
|
-
if (scrollYLoad) {
|
|
341
|
+
if (reactData.scrollYLoad) {
|
|
351
342
|
$xetable.updateScrollYSpace();
|
|
352
343
|
}
|
|
353
344
|
return nextTick().then(function () {
|
|
@@ -402,7 +393,7 @@ var editHook = {
|
|
|
402
393
|
getInsertRecords: function () {
|
|
403
394
|
var treeConfig = props.treeConfig;
|
|
404
395
|
var editStore = reactData.editStore;
|
|
405
|
-
var
|
|
396
|
+
var tableFullTreeData = internalData.tableFullTreeData, tableFullData = internalData.tableFullData;
|
|
406
397
|
var treeOpts = computeTreeOpts.value;
|
|
407
398
|
var insertList = editStore.insertList;
|
|
408
399
|
var insertRecords = [];
|
|
@@ -411,7 +402,7 @@ var editHook = {
|
|
|
411
402
|
if (treeConfig && treeOpts.transform) {
|
|
412
403
|
insertList.forEach(function (row) {
|
|
413
404
|
var rowid = getRowid($xetable, row);
|
|
414
|
-
var matchObj = XEUtils.findTree(
|
|
405
|
+
var matchObj = XEUtils.findTree(tableFullTreeData, function (item) { return rowid === getRowid($xetable, item); }, treeOpts);
|
|
415
406
|
if (matchObj) {
|
|
416
407
|
insertRecords.push(row);
|
|
417
408
|
}
|
package/es/filter/src/hook.js
CHANGED
|
@@ -91,7 +91,7 @@ var tableFilterHook = {
|
|
|
91
91
|
// 判断面板不能大于表格高度
|
|
92
92
|
var maxHeight = null;
|
|
93
93
|
if (filterHeight >= bodyElem.clientHeight) {
|
|
94
|
-
maxHeight = Math.max(
|
|
94
|
+
maxHeight = Math.max(60, bodyElem.clientHeight - (filterFootElem ? filterFootElem.offsetHeight : 0) - (filterHeadElem ? filterHeadElem.offsetHeight : 0));
|
|
95
95
|
}
|
|
96
96
|
if (column.fixed === 'left') {
|
|
97
97
|
left = targetElem_1.offsetLeft + targetElem_1.offsetParent.offsetLeft - centerWidth;
|
package/es/select/src/select.js
CHANGED
|
@@ -151,7 +151,7 @@ export default defineComponent({
|
|
|
151
151
|
return getSelectLabel(modelValue);
|
|
152
152
|
});
|
|
153
153
|
var getOptkey = function () {
|
|
154
|
-
return props.optionId || '
|
|
154
|
+
return props.optionId || '_X_ID';
|
|
155
155
|
};
|
|
156
156
|
var getOptid = function (option) {
|
|
157
157
|
var optid = option[getOptkey()];
|
package/es/table/src/body.js
CHANGED
|
@@ -291,6 +291,7 @@ export default defineComponent({
|
|
|
291
291
|
var treeOpts = computeTreeOpts.value;
|
|
292
292
|
var editOpts = computeEditOpts.value;
|
|
293
293
|
var rowOpts = computeRowOpts.value;
|
|
294
|
+
var transform = treeOpts.transform;
|
|
294
295
|
var rows = [];
|
|
295
296
|
tableData.forEach(function (row, $rowIndex) {
|
|
296
297
|
var trOn = {};
|
|
@@ -315,9 +316,14 @@ export default defineComponent({
|
|
|
315
316
|
}
|
|
316
317
|
var rowid = getRowid($xetable, row);
|
|
317
318
|
var rest = fullDataRowIdData[rowid];
|
|
318
|
-
var rowLevel =
|
|
319
|
-
var seq =
|
|
319
|
+
var rowLevel = 0;
|
|
320
|
+
var seq = -1;
|
|
321
|
+
if (rest) {
|
|
322
|
+
rowLevel = rest.level;
|
|
323
|
+
seq = rest.seq;
|
|
324
|
+
}
|
|
320
325
|
var params = { $table: $xetable, seq: seq, rowid: rowid, fixed: fixedType, type: renderType, level: rowLevel, row: row, rowIndex: rowIndex, $rowIndex: $rowIndex, _rowIndex: _rowIndex };
|
|
326
|
+
// 处理新增状态
|
|
321
327
|
var isNewRow = false;
|
|
322
328
|
if (editConfig) {
|
|
323
329
|
isNewRow = $xetable.findRowIndexOf(editStore.insertList, row) > -1;
|
|
@@ -360,7 +366,7 @@ export default defineComponent({
|
|
|
360
366
|
]));
|
|
361
367
|
}
|
|
362
368
|
// 如果是树形表格
|
|
363
|
-
if (treeConfig && !scrollYLoad && treeExpandeds.length) {
|
|
369
|
+
if (treeConfig && !scrollYLoad && !transform && treeExpandeds.length) {
|
|
364
370
|
var rowChildren = row[treeOpts.children];
|
|
365
371
|
if (rowChildren && rowChildren.length && $xetable.findRowIndexOf(treeExpandeds, row) > -1) {
|
|
366
372
|
rows.push.apply(rows, renderRows(fixedType, rowChildren, tableColumn));
|
package/es/table/src/table.js
CHANGED
|
@@ -264,10 +264,12 @@ export default defineComponent({
|
|
|
264
264
|
rowExpandedReserveRowMap: {},
|
|
265
265
|
// 树结构数据,已展开保留的行
|
|
266
266
|
treeExpandedReserveRowMap: {},
|
|
267
|
-
//
|
|
267
|
+
// 列表完整数据、条件处理后
|
|
268
268
|
tableFullData: [],
|
|
269
|
-
treeFullData: [],
|
|
270
269
|
afterFullData: [],
|
|
270
|
+
// 树结构完整数据、条件处理后
|
|
271
|
+
tableFullTreeData: [],
|
|
272
|
+
afterTreeFullData: [],
|
|
271
273
|
tableSynchData: [],
|
|
272
274
|
tableSourceData: [],
|
|
273
275
|
// 收集的列配置(带分组)
|
|
@@ -1089,25 +1091,27 @@ export default defineComponent({
|
|
|
1089
1091
|
var updateAfterDataIndex = function () {
|
|
1090
1092
|
var treeConfig = props.treeConfig;
|
|
1091
1093
|
var afterFullData = internalData.afterFullData, fullDataRowIdData = internalData.fullDataRowIdData, fullAllDataRowIdData = internalData.fullAllDataRowIdData;
|
|
1092
|
-
var
|
|
1094
|
+
var afterTreeFullData = internalData.afterTreeFullData;
|
|
1093
1095
|
var treeOpts = computeTreeOpts.value;
|
|
1094
1096
|
if (treeConfig) {
|
|
1095
|
-
XEUtils.eachTree(
|
|
1097
|
+
XEUtils.eachTree(afterTreeFullData, function (row, index, items, path) {
|
|
1096
1098
|
var rowid = getRowid($xetable, row);
|
|
1097
1099
|
var allrest = fullAllDataRowIdData[rowid];
|
|
1098
1100
|
var fullrest = fullDataRowIdData[rowid];
|
|
1099
1101
|
var seq = path.map(function (num, i) { return i % 2 === 0 ? (Number(num) + 1) : '.'; }).join('');
|
|
1100
1102
|
if (allrest) {
|
|
1101
1103
|
allrest.seq = seq;
|
|
1104
|
+
allrest._index = index;
|
|
1102
1105
|
}
|
|
1103
1106
|
if (fullrest) {
|
|
1104
1107
|
fullrest.seq = seq;
|
|
1108
|
+
fullrest._index = index;
|
|
1105
1109
|
}
|
|
1106
1110
|
else {
|
|
1107
1111
|
fullAllDataRowIdData[rowid] = { row: row, rowid: rowid, seq: seq, index: -1, $index: -1, _index: index, items: [], parent: null, level: 0 };
|
|
1108
1112
|
fullDataRowIdData[rowid] = { row: row, rowid: rowid, seq: seq, index: -1, $index: -1, _index: index, items: [], parent: null, level: 0 };
|
|
1109
1113
|
}
|
|
1110
|
-
}, treeOpts);
|
|
1114
|
+
}, { children: treeOpts.mapChildren });
|
|
1111
1115
|
}
|
|
1112
1116
|
else {
|
|
1113
1117
|
afterFullData.forEach(function (row, index) {
|
|
@@ -1117,6 +1121,7 @@ export default defineComponent({
|
|
|
1117
1121
|
var seq = index + 1;
|
|
1118
1122
|
if (allrest) {
|
|
1119
1123
|
allrest.seq = seq;
|
|
1124
|
+
allrest._index = index;
|
|
1120
1125
|
}
|
|
1121
1126
|
if (fullrest) {
|
|
1122
1127
|
fullrest.seq = seq;
|
|
@@ -1134,12 +1139,17 @@ export default defineComponent({
|
|
|
1134
1139
|
* 如果存在筛选条件,继续处理
|
|
1135
1140
|
*/
|
|
1136
1141
|
var updateAfterFullData = function () {
|
|
1137
|
-
var
|
|
1142
|
+
var treeConfig = props.treeConfig;
|
|
1143
|
+
var tableFullColumn = internalData.tableFullColumn, tableFullData = internalData.tableFullData, tableFullTreeData = internalData.tableFullTreeData;
|
|
1138
1144
|
var filterOpts = computeFilterOpts.value;
|
|
1139
1145
|
var sortOpts = computeSortOpts.value;
|
|
1146
|
+
var treeOpts = computeTreeOpts.value;
|
|
1147
|
+
var transform = treeOpts.transform;
|
|
1140
1148
|
var allRemoteFilter = filterOpts.remote, allFilterMethod = filterOpts.filterMethod;
|
|
1141
1149
|
var allRemoteSort = sortOpts.remote, allSortMethod = sortOpts.sortMethod;
|
|
1142
|
-
var tableData =
|
|
1150
|
+
var tableData = [];
|
|
1151
|
+
var tableTree = [];
|
|
1152
|
+
// 处理列
|
|
1143
1153
|
if (!allRemoteFilter || !allRemoteSort) {
|
|
1144
1154
|
var filterColumns_1 = [];
|
|
1145
1155
|
var orderColumns_1 = [];
|
|
@@ -1165,7 +1175,7 @@ export default defineComponent({
|
|
|
1165
1175
|
// 处理筛选
|
|
1166
1176
|
// 支持单列、多列、组合筛选
|
|
1167
1177
|
if (!allRemoteFilter && filterColumns_1.length) {
|
|
1168
|
-
|
|
1178
|
+
var handleFilter = function (row) {
|
|
1169
1179
|
return filterColumns_1.every(function (_a) {
|
|
1170
1180
|
var column = _a.column, valueList = _a.valueList, itemList = _a.itemList;
|
|
1171
1181
|
var filterMethod = column.filterMethod, filterRender = column.filterRender;
|
|
@@ -1187,26 +1197,63 @@ export default defineComponent({
|
|
|
1187
1197
|
}
|
|
1188
1198
|
return valueList.indexOf(XEUtils.get(row, column.property)) > -1;
|
|
1189
1199
|
});
|
|
1190
|
-
}
|
|
1200
|
+
};
|
|
1201
|
+
if (treeConfig && transform) {
|
|
1202
|
+
// 筛选虚拟树
|
|
1203
|
+
tableTree = XEUtils.searchTree(tableFullTreeData, handleFilter, __assign(__assign({}, treeOpts), { original: true }));
|
|
1204
|
+
tableData = tableTree;
|
|
1205
|
+
}
|
|
1206
|
+
else {
|
|
1207
|
+
tableData = treeConfig ? tableFullTreeData.filter(handleFilter) : tableFullData.filter(handleFilter);
|
|
1208
|
+
tableTree = tableData;
|
|
1209
|
+
}
|
|
1191
1210
|
}
|
|
1192
|
-
|
|
1211
|
+
else {
|
|
1212
|
+
if (treeConfig && transform) {
|
|
1213
|
+
// 还原虚拟树
|
|
1214
|
+
tableTree = XEUtils.searchTree(tableFullTreeData, function () { return true; }, __assign(__assign({}, treeOpts), { original: true }));
|
|
1215
|
+
tableData = tableTree;
|
|
1216
|
+
}
|
|
1217
|
+
else {
|
|
1218
|
+
tableData = treeConfig ? tableFullTreeData.slice(0) : tableFullData.slice(0);
|
|
1219
|
+
tableTree = tableData;
|
|
1220
|
+
}
|
|
1221
|
+
}
|
|
1222
|
+
// 处理排序(不能用于树形结构)
|
|
1193
1223
|
// 支持单列、多列、组合排序
|
|
1194
1224
|
if (!allRemoteSort && orderColumns_1.length) {
|
|
1195
|
-
if (
|
|
1196
|
-
|
|
1197
|
-
|
|
1225
|
+
if (treeConfig && transform) {
|
|
1226
|
+
// 虚拟树和列表一样,只能排序根级节点
|
|
1227
|
+
if (allSortMethod) {
|
|
1228
|
+
var sortRests = allSortMethod({ data: tableTree, sortList: orderColumns_1, $table: $xetable });
|
|
1229
|
+
tableTree = XEUtils.isArray(sortRests) ? sortRests : tableTree;
|
|
1230
|
+
}
|
|
1231
|
+
else {
|
|
1232
|
+
tableTree = XEUtils.orderBy(tableTree, orderColumns_1.map(function (_a) {
|
|
1233
|
+
var column = _a.column, order = _a.order;
|
|
1234
|
+
return [getOrderField(column), order];
|
|
1235
|
+
}));
|
|
1236
|
+
}
|
|
1237
|
+
tableData = tableTree;
|
|
1198
1238
|
}
|
|
1199
1239
|
else {
|
|
1200
|
-
|
|
1201
|
-
var
|
|
1202
|
-
|
|
1203
|
-
}
|
|
1240
|
+
if (allSortMethod) {
|
|
1241
|
+
var sortRests = allSortMethod({ data: tableData, sortList: orderColumns_1, $table: $xetable });
|
|
1242
|
+
tableData = XEUtils.isArray(sortRests) ? sortRests : tableData;
|
|
1243
|
+
}
|
|
1244
|
+
else {
|
|
1245
|
+
tableData = XEUtils.orderBy(tableData, orderColumns_1.map(function (_a) {
|
|
1246
|
+
var column = _a.column, order = _a.order;
|
|
1247
|
+
return [getOrderField(column), order];
|
|
1248
|
+
}));
|
|
1249
|
+
}
|
|
1250
|
+
tableTree = tableData;
|
|
1204
1251
|
}
|
|
1205
1252
|
}
|
|
1206
1253
|
}
|
|
1207
1254
|
internalData.afterFullData = tableData;
|
|
1255
|
+
internalData.afterTreeFullData = tableTree;
|
|
1208
1256
|
updateAfterDataIndex();
|
|
1209
|
-
return tableData;
|
|
1210
1257
|
};
|
|
1211
1258
|
var updateStyle = function () {
|
|
1212
1259
|
var border = props.border, showFooter = props.showFooter, allColumnOverflow = props.showOverflow, allColumnHeaderOverflow = props.showHeaderOverflow, allColumnFooterOverflow = props.showFooterOverflow, mouseConfig = props.mouseConfig, spanMethod = props.spanMethod, footerSpanMethod = props.footerSpanMethod, keyboardConfig = props.keyboardConfig;
|
|
@@ -1292,7 +1339,7 @@ export default defineComponent({
|
|
|
1292
1339
|
countChild_1++;
|
|
1293
1340
|
}
|
|
1294
1341
|
childWidth_1 += item.renderWidth;
|
|
1295
|
-
});
|
|
1342
|
+
}, { children: 'children' });
|
|
1296
1343
|
}
|
|
1297
1344
|
thElem.style.width = hasEllipsis ? childWidth_1 - countChild_1 - (border ? 2 : 0) + "px" : '';
|
|
1298
1345
|
}
|
|
@@ -1655,7 +1702,7 @@ export default defineComponent({
|
|
|
1655
1702
|
var fullAllDataRowIdData = internalData.fullAllDataRowIdData;
|
|
1656
1703
|
var treeOpts = computeTreeOpts.value;
|
|
1657
1704
|
var checkboxOpts = computeCheckboxOpts.value;
|
|
1658
|
-
var loadMethod = treeOpts.loadMethod;
|
|
1705
|
+
var transform = treeOpts.transform, loadMethod = treeOpts.loadMethod;
|
|
1659
1706
|
var checkStrictly = checkboxOpts.checkStrictly;
|
|
1660
1707
|
var rest = fullAllDataRowIdData[getRowid($xetable, row)];
|
|
1661
1708
|
return new Promise(function (resolve) {
|
|
@@ -1676,9 +1723,18 @@ export default defineComponent({
|
|
|
1676
1723
|
if (!checkStrictly && tableMethods.isCheckedByCheckboxRow(row)) {
|
|
1677
1724
|
tableMethods.setCheckboxRow(childRows, true);
|
|
1678
1725
|
}
|
|
1726
|
+
nextTick().then(function () {
|
|
1727
|
+
if (transform) {
|
|
1728
|
+
return tablePrivateMethods.handleTableData();
|
|
1729
|
+
}
|
|
1730
|
+
}).then(function () {
|
|
1731
|
+
return tableMethods.recalculate();
|
|
1732
|
+
}).then(function () { return resolve(); });
|
|
1679
1733
|
});
|
|
1680
1734
|
}
|
|
1681
|
-
|
|
1735
|
+
else {
|
|
1736
|
+
nextTick().then(function () { return tableMethods.recalculate(); }).then(function () { return resolve(); });
|
|
1737
|
+
}
|
|
1682
1738
|
});
|
|
1683
1739
|
}
|
|
1684
1740
|
else {
|
|
@@ -1806,13 +1862,24 @@ export default defineComponent({
|
|
|
1806
1862
|
if (!treeOpts.children) {
|
|
1807
1863
|
errLog('vxe.error.reqProp', ['tree-config.children']);
|
|
1808
1864
|
}
|
|
1865
|
+
if (!treeOpts.mapChildren) {
|
|
1866
|
+
errLog('vxe.error.reqProp', ['tree-config.mapChildren']);
|
|
1867
|
+
}
|
|
1868
|
+
if (treeOpts.children === treeOpts.mapChildren) {
|
|
1869
|
+
errLog('vxe.error.errConflicts', ['tree-config.children', 'tree-config.mapChildren']);
|
|
1870
|
+
}
|
|
1809
1871
|
fullData.forEach(function (row) {
|
|
1810
1872
|
if (row[treeOpts.children] && row[treeOpts.children].length) {
|
|
1811
1873
|
warnLog('vxe.error.errConflicts', ['tree-config.transform', "row." + treeOpts.children]);
|
|
1812
1874
|
}
|
|
1813
1875
|
});
|
|
1814
1876
|
}
|
|
1815
|
-
treeData = XEUtils.toArrayTree(fullData, {
|
|
1877
|
+
treeData = XEUtils.toArrayTree(fullData, {
|
|
1878
|
+
key: treeOpts.rowField,
|
|
1879
|
+
parentKey: treeOpts.parentField,
|
|
1880
|
+
children: treeOpts.children,
|
|
1881
|
+
mapChildren: treeOpts.mapChildren
|
|
1882
|
+
});
|
|
1816
1883
|
fullData = treeData.slice(0);
|
|
1817
1884
|
}
|
|
1818
1885
|
else {
|
|
@@ -1829,7 +1896,7 @@ export default defineComponent({
|
|
|
1829
1896
|
reactData.scrollYLoad = sYLoad;
|
|
1830
1897
|
// 全量数据
|
|
1831
1898
|
internalData.tableFullData = fullData;
|
|
1832
|
-
internalData.
|
|
1899
|
+
internalData.tableFullTreeData = treeData;
|
|
1833
1900
|
// 缓存数据
|
|
1834
1901
|
tablePrivateMethods.cacheRowMap(true);
|
|
1835
1902
|
// 原始数据
|
|
@@ -2102,25 +2169,6 @@ export default defineComponent({
|
|
|
2102
2169
|
reactData.scrollYLoad = scrollYLoad;
|
|
2103
2170
|
return scrollYLoad;
|
|
2104
2171
|
};
|
|
2105
|
-
var updateVirtualTreeData = function () {
|
|
2106
|
-
var oldScrollYLoad = reactData.scrollYLoad, treeExpandeds = reactData.treeExpandeds;
|
|
2107
|
-
var treeFullData = internalData.treeFullData;
|
|
2108
|
-
var treeOpts = computeTreeOpts.value;
|
|
2109
|
-
var fullData = [];
|
|
2110
|
-
var expandMaps = new Map();
|
|
2111
|
-
XEUtils.eachTree(treeFullData, function (row, index, items, path, parent) {
|
|
2112
|
-
if (!parent || (expandMaps.has(parent) && $xetable.findRowIndexOf(treeExpandeds, parent) > -1)) {
|
|
2113
|
-
expandMaps.set(row, 1);
|
|
2114
|
-
fullData.push(row);
|
|
2115
|
-
}
|
|
2116
|
-
}, treeOpts);
|
|
2117
|
-
var scrollYLoad = updateScrollYStatus(fullData);
|
|
2118
|
-
internalData.tableFullData = scrollYLoad ? fullData : treeFullData;
|
|
2119
|
-
if (scrollYLoad || oldScrollYLoad !== scrollYLoad) {
|
|
2120
|
-
return tablePrivateMethods.handleTableData(true).then(function () { return tableMethods.recalculate(); });
|
|
2121
|
-
}
|
|
2122
|
-
return nextTick();
|
|
2123
|
-
};
|
|
2124
2172
|
/**
|
|
2125
2173
|
* 展开与收起树节点
|
|
2126
2174
|
* @param rows
|
|
@@ -2179,7 +2227,7 @@ export default defineComponent({
|
|
|
2179
2227
|
*/
|
|
2180
2228
|
var handleVirtualTreeExpand = function (rows, expanded) {
|
|
2181
2229
|
return handleBaseTreeExpand(rows, expanded).then(function () {
|
|
2182
|
-
return
|
|
2230
|
+
return tablePrivateMethods.handleTableData();
|
|
2183
2231
|
}).then(function () {
|
|
2184
2232
|
return tableMethods.recalculate();
|
|
2185
2233
|
});
|
|
@@ -2248,7 +2296,7 @@ export default defineComponent({
|
|
|
2248
2296
|
return clearTableAllStatus($xetable);
|
|
2249
2297
|
},
|
|
2250
2298
|
/**
|
|
2251
|
-
* 同步 data
|
|
2299
|
+
* 同步 data 数据(即将废弃)
|
|
2252
2300
|
* 如果用了该方法,那么组件将不再记录增删改的状态,只能自行实现对应逻辑
|
|
2253
2301
|
* 对于某些特殊的场景,比如深层树节点元素发生变动时可能会用到
|
|
2254
2302
|
*/
|
|
@@ -2345,7 +2393,7 @@ export default defineComponent({
|
|
|
2345
2393
|
var keepSource = props.keepSource;
|
|
2346
2394
|
var tableSourceData = internalData.tableSourceData, fullDataRowIdData = internalData.fullDataRowIdData, fullAllDataRowIdData = internalData.fullAllDataRowIdData;
|
|
2347
2395
|
var treeOpts = computeTreeOpts.value;
|
|
2348
|
-
var children = treeOpts.children;
|
|
2396
|
+
var transform = treeOpts.transform, children = treeOpts.children, mapChildren = treeOpts.mapChildren;
|
|
2349
2397
|
var parentRest = fullAllDataRowIdData[getRowid($xetable, row)];
|
|
2350
2398
|
var parentLevel = parentRest ? parentRest.level : 0;
|
|
2351
2399
|
return tableMethods.createData(childRecords).then(function (rows) {
|
|
@@ -2363,6 +2411,9 @@ export default defineComponent({
|
|
|
2363
2411
|
fullAllDataRowIdData[rowid] = rest;
|
|
2364
2412
|
}, treeOpts);
|
|
2365
2413
|
row[children] = rows;
|
|
2414
|
+
if (transform) {
|
|
2415
|
+
row[mapChildren] = rows;
|
|
2416
|
+
}
|
|
2366
2417
|
return rows;
|
|
2367
2418
|
});
|
|
2368
2419
|
},
|
|
@@ -3527,7 +3578,7 @@ export default defineComponent({
|
|
|
3527
3578
|
return handleAsyncTreeExpandChilds(row);
|
|
3528
3579
|
}).then(function () {
|
|
3529
3580
|
if (transform) {
|
|
3530
|
-
return
|
|
3581
|
+
return tablePrivateMethods.handleTableData();
|
|
3531
3582
|
}
|
|
3532
3583
|
}).then(function () {
|
|
3533
3584
|
return tableMethods.recalculate();
|
|
@@ -3604,15 +3655,15 @@ export default defineComponent({
|
|
|
3604
3655
|
*/
|
|
3605
3656
|
clearTreeExpand: function () {
|
|
3606
3657
|
var treeExpandeds = reactData.treeExpandeds;
|
|
3607
|
-
var
|
|
3658
|
+
var tableFullTreeData = internalData.tableFullTreeData;
|
|
3608
3659
|
var treeOpts = computeTreeOpts.value;
|
|
3609
3660
|
var reserve = treeOpts.reserve;
|
|
3610
3661
|
var isExists = treeExpandeds.length;
|
|
3611
3662
|
reactData.treeExpandeds = [];
|
|
3612
3663
|
if (reserve) {
|
|
3613
|
-
XEUtils.eachTree(
|
|
3664
|
+
XEUtils.eachTree(tableFullTreeData, function (row) { return handleTreeExpandReserve(row, false); }, treeOpts);
|
|
3614
3665
|
}
|
|
3615
|
-
return
|
|
3666
|
+
return tablePrivateMethods.handleTableData().then(function () {
|
|
3616
3667
|
if (isExists) {
|
|
3617
3668
|
tableMethods.recalculate();
|
|
3618
3669
|
}
|
|
@@ -4445,10 +4496,30 @@ export default defineComponent({
|
|
|
4445
4496
|
return record;
|
|
4446
4497
|
},
|
|
4447
4498
|
handleTableData: function (force) {
|
|
4499
|
+
var treeConfig = props.treeConfig;
|
|
4448
4500
|
var scrollYLoad = reactData.scrollYLoad;
|
|
4449
4501
|
var scrollYStore = internalData.scrollYStore, fullDataRowIdData = internalData.fullDataRowIdData;
|
|
4450
|
-
var
|
|
4451
|
-
var
|
|
4502
|
+
var treeExpandeds = reactData.treeExpandeds;
|
|
4503
|
+
var treeOpts = computeTreeOpts.value;
|
|
4504
|
+
var fullList = [];
|
|
4505
|
+
// 是否进行数据处理
|
|
4506
|
+
if (force) {
|
|
4507
|
+
updateAfterFullData();
|
|
4508
|
+
}
|
|
4509
|
+
// 如果为虚拟树,将树结构拍平
|
|
4510
|
+
if (treeConfig && treeOpts.transform) {
|
|
4511
|
+
var expandMaps_1 = new Map();
|
|
4512
|
+
XEUtils.eachTree(internalData.afterTreeFullData, function (row, index, items, path, parent) {
|
|
4513
|
+
if (!parent || (expandMaps_1.has(parent) && $xetable.findRowIndexOf(treeExpandeds, parent) > -1)) {
|
|
4514
|
+
expandMaps_1.set(row, 1);
|
|
4515
|
+
fullList.push(row);
|
|
4516
|
+
}
|
|
4517
|
+
}, { children: treeOpts.mapChildren });
|
|
4518
|
+
}
|
|
4519
|
+
else {
|
|
4520
|
+
fullList = internalData.afterFullData;
|
|
4521
|
+
}
|
|
4522
|
+
var tableData = scrollYLoad ? fullList.slice(scrollYStore.startIndex, scrollYStore.endIndex) : fullList.slice(0);
|
|
4452
4523
|
tableData.forEach(function (row, $index) {
|
|
4453
4524
|
var rowid = getRowid($xetable, row);
|
|
4454
4525
|
var rest = fullDataRowIdData[rowid];
|
|
@@ -4466,7 +4537,7 @@ export default defineComponent({
|
|
|
4466
4537
|
cacheRowMap: function (isSource) {
|
|
4467
4538
|
var treeConfig = props.treeConfig;
|
|
4468
4539
|
var treeOpts = computeTreeOpts.value;
|
|
4469
|
-
var fullDataRowIdData = internalData.fullDataRowIdData, fullAllDataRowIdData = internalData.fullAllDataRowIdData, tableFullData = internalData.tableFullData,
|
|
4540
|
+
var fullDataRowIdData = internalData.fullDataRowIdData, fullAllDataRowIdData = internalData.fullAllDataRowIdData, tableFullData = internalData.tableFullData, tableFullTreeData = internalData.tableFullTreeData;
|
|
4470
4541
|
var rowkey = getRowkey($xetable);
|
|
4471
4542
|
var isLazy = treeConfig && treeOpts.lazy;
|
|
4472
4543
|
var handleCache = function (row, index, items, path, parent, nodes) {
|
|
@@ -4491,7 +4562,7 @@ export default defineComponent({
|
|
|
4491
4562
|
}
|
|
4492
4563
|
fullAllDataRowIdData = internalData.fullAllDataRowIdData = {};
|
|
4493
4564
|
if (treeConfig) {
|
|
4494
|
-
XEUtils.eachTree(
|
|
4565
|
+
XEUtils.eachTree(tableFullTreeData, handleCache, treeOpts);
|
|
4495
4566
|
}
|
|
4496
4567
|
else {
|
|
4497
4568
|
tableFullData.forEach(handleCache);
|
|
@@ -5232,7 +5303,6 @@ export default defineComponent({
|
|
|
5232
5303
|
tablePrivateMethods.handleTableData();
|
|
5233
5304
|
tablePrivateMethods.updateScrollYSpace();
|
|
5234
5305
|
},
|
|
5235
|
-
updateVirtualTreeData: updateVirtualTreeData,
|
|
5236
5306
|
/**
|
|
5237
5307
|
* 处理固定列的显示状态
|
|
5238
5308
|
*/
|
|
@@ -5376,6 +5446,7 @@ export default defineComponent({
|
|
|
5376
5446
|
return false;
|
|
5377
5447
|
}
|
|
5378
5448
|
};
|
|
5449
|
+
// 检测对应模块是否安装
|
|
5379
5450
|
if (process.env.NODE_ENV === 'development') {
|
|
5380
5451
|
'openExport,openPrint,exportData,openImport,importData,saveFile,readFile,importByFile,print'.split(',').forEach(function (name) {
|
|
5381
5452
|
$xetable[name] = function () {
|
package/es/table/src/util.js
CHANGED
|
@@ -48,7 +48,7 @@ var GlobalConfig = {
|
|
|
48
48
|
// storage: false,
|
|
49
49
|
// checkMethod () {}
|
|
50
50
|
// },
|
|
51
|
-
// rowId: '
|
|
51
|
+
// rowId: '_X_ID', // 行数据的唯一主键字段名
|
|
52
52
|
sortConfig: {
|
|
53
53
|
// remote: false,
|
|
54
54
|
// trigger: 'default',
|
|
@@ -66,6 +66,7 @@ var GlobalConfig = {
|
|
|
66
66
|
parentField: 'parentId',
|
|
67
67
|
children: 'children',
|
|
68
68
|
hasChild: 'hasChild',
|
|
69
|
+
mapChildren: '_X_CHILD',
|
|
69
70
|
indent: 20,
|
|
70
71
|
showIcon: true
|
|
71
72
|
},
|