vxe-table 4.1.4 → 4.1.5-beta.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/es/edit/src/hook.js +106 -39
- package/es/table/src/body.js +6 -3
- package/es/table/src/table.js +23 -14
- package/lib/edit/src/hook.js +130 -38
- package/lib/edit/src/hook.min.js +1 -1
- package/lib/index.umd.js +159 -54
- package/lib/index.umd.min.js +1 -1
- package/lib/table/src/body.js +6 -3
- package/lib/table/src/body.min.js +1 -1
- package/lib/table/src/table.js +22 -13
- package/lib/table/src/table.min.js +1 -1
- package/package.json +1 -1
- package/packages/edit/src/hook.ts +101 -39
- package/packages/table/src/body.ts +6 -3
- package/packages/table/src/table.ts +23 -14
- package/types/table.d.ts +5 -0
package/es/edit/src/hook.js
CHANGED
|
@@ -18,7 +18,7 @@ import { nextTick } from 'vue';
|
|
|
18
18
|
import XEUtils from 'xe-utils';
|
|
19
19
|
import { renderer } from '../../v-x-e-table';
|
|
20
20
|
import { errLog, getLog, isEnableConf } from '../../tools/utils';
|
|
21
|
-
import { getCellValue, setCellValue } from '../../table/src/util';
|
|
21
|
+
import { getCellValue, setCellValue, getRowid } from '../../table/src/util';
|
|
22
22
|
import { browse, removeClass, addClass } from '../../tools/dom';
|
|
23
23
|
var tableEditMethodKeys = ['insert', 'insertAt', 'remove', 'removeCheckboxRow', 'removeRadioRow', 'removeCurrentRow', 'getRecordset', 'getInsertRecords', 'getRemoveRecords', 'getUpdateRecords', 'getActiveRecord', 'getSelectedCell', 'clearActived', 'clearSelected', 'isActiveByRow', 'setActiveRow', 'setActiveCell', 'setSelectCell'];
|
|
24
24
|
var editHook = {
|
|
@@ -87,22 +87,56 @@ var editHook = {
|
|
|
87
87
|
var _a;
|
|
88
88
|
var treeConfig = props.treeConfig;
|
|
89
89
|
var mergeList = reactData.mergeList, editStore = reactData.editStore, scrollYLoad = reactData.scrollYLoad;
|
|
90
|
-
var afterFullData = internalData.afterFullData, tableFullData = internalData.tableFullData;
|
|
90
|
+
var treeFullData = internalData.treeFullData, afterFullData = internalData.afterFullData, tableFullData = internalData.tableFullData, fullDataRowIdData = internalData.fullDataRowIdData, fullAllDataRowIdData = internalData.fullAllDataRowIdData;
|
|
91
91
|
var sYOpts = computeSYOpts.value;
|
|
92
|
+
var treeOpts = computeTreeOpts.value;
|
|
92
93
|
if (!XEUtils.isArray(records)) {
|
|
93
94
|
records = [records];
|
|
94
95
|
}
|
|
95
96
|
var newRecords = records.map(function (record) { return $xetable.defineField(Object.assign({}, record)); });
|
|
96
97
|
if (!row) {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
98
|
+
// 如果为虚拟树
|
|
99
|
+
if (treeConfig && treeOpts.transform) {
|
|
100
|
+
newRecords.forEach(function (item) {
|
|
101
|
+
var parentRowId = item[treeOpts.parentField];
|
|
102
|
+
var rowid = getRowid($xetable, item);
|
|
103
|
+
if (parentRowId) {
|
|
104
|
+
var matchObj = XEUtils.findTree(treeFullData, function (item) { return parentRowId === item[treeOpts.rowField]; }, treeOpts);
|
|
105
|
+
if (matchObj) {
|
|
106
|
+
var parentRow = matchObj.item;
|
|
107
|
+
var parentRest = fullAllDataRowIdData[getRowid($xetable, parentRow)];
|
|
108
|
+
var parentLevel = parentRest ? parentRest.level : 0;
|
|
109
|
+
var parentChilds = parentRow[treeOpts.children];
|
|
110
|
+
if (!XEUtils.isArray(parentChilds)) {
|
|
111
|
+
parentChilds = parentRow[treeOpts.children] = [];
|
|
112
|
+
}
|
|
113
|
+
parentChilds.push(item);
|
|
114
|
+
var rest = { row: item, rowid: rowid, index: -1, _index: -1, $index: -1, items: parentChilds, parent: parent, level: parentLevel + 1 };
|
|
115
|
+
fullDataRowIdData[rowid] = rest;
|
|
116
|
+
fullAllDataRowIdData[rowid] = rest;
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
// 父节点不存在
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
afterFullData.unshift(item);
|
|
124
|
+
treeFullData.unshift(item);
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
$xetable.updateVirtualTreeData();
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
afterFullData.unshift.apply(afterFullData, newRecords);
|
|
131
|
+
tableFullData.unshift.apply(tableFullData, newRecords);
|
|
132
|
+
// 刷新单元格合并
|
|
133
|
+
mergeList.forEach(function (mergeItem) {
|
|
134
|
+
var mergeRowIndex = mergeItem.row;
|
|
135
|
+
if (mergeRowIndex > 0) {
|
|
136
|
+
mergeItem.row = mergeRowIndex + newRecords.length;
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
}
|
|
106
140
|
}
|
|
107
141
|
else {
|
|
108
142
|
if (row === -1) {
|
|
@@ -167,9 +201,10 @@ var editHook = {
|
|
|
167
201
|
remove: function (rows) {
|
|
168
202
|
var treeConfig = props.treeConfig;
|
|
169
203
|
var mergeList = reactData.mergeList, editStore = reactData.editStore, selection = reactData.selection, scrollYLoad = reactData.scrollYLoad;
|
|
170
|
-
var afterFullData = internalData.afterFullData, tableFullData = internalData.tableFullData;
|
|
204
|
+
var treeFullData = internalData.treeFullData, afterFullData = internalData.afterFullData, tableFullData = internalData.tableFullData;
|
|
171
205
|
var checkboxOpts = computeCheckboxOpts.value;
|
|
172
206
|
var sYOpts = computeSYOpts.value;
|
|
207
|
+
var treeOpts = computeTreeOpts.value;
|
|
173
208
|
var actived = editStore.actived, removeList = editStore.removeList, insertList = editStore.insertList;
|
|
174
209
|
var property = checkboxOpts.checkField;
|
|
175
210
|
var rest = [];
|
|
@@ -202,27 +237,45 @@ var editHook = {
|
|
|
202
237
|
$xetable.clearMergeCells();
|
|
203
238
|
}
|
|
204
239
|
else {
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
var
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
240
|
+
// 如果为虚拟树
|
|
241
|
+
if (treeConfig && treeOpts.transform) {
|
|
242
|
+
rows.forEach(function (row) {
|
|
243
|
+
var rowid = getRowid($xetable, row);
|
|
244
|
+
var matchObj = XEUtils.findTree(treeFullData, function (item) { return rowid === getRowid($xetable, item); }, treeOpts);
|
|
245
|
+
if (matchObj) {
|
|
246
|
+
var rItems = matchObj.items.splice(matchObj.index, 1);
|
|
247
|
+
rest.push(rItems[0]);
|
|
248
|
+
}
|
|
249
|
+
var afIndex = $xetable.findRowIndexOf(afterFullData, row);
|
|
250
|
+
if (afIndex > -1) {
|
|
251
|
+
afterFullData.splice(afIndex, 1);
|
|
252
|
+
}
|
|
253
|
+
$xetable.updateVirtualTreeData();
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
rows.forEach(function (row) {
|
|
258
|
+
var tfIndex = $xetable.findRowIndexOf(tableFullData, row);
|
|
259
|
+
if (tfIndex > -1) {
|
|
260
|
+
var rItems = tableFullData.splice(tfIndex, 1);
|
|
261
|
+
rest.push(rItems[0]);
|
|
262
|
+
}
|
|
263
|
+
var afIndex = $xetable.findRowIndexOf(afterFullData, row);
|
|
264
|
+
if (afIndex > -1) {
|
|
265
|
+
// 刷新单元格合并
|
|
266
|
+
mergeList.forEach(function (mergeItem) {
|
|
267
|
+
var mergeRowIndex = mergeItem.row, mergeRowspan = mergeItem.rowspan;
|
|
268
|
+
if (mergeRowIndex > afIndex) {
|
|
269
|
+
mergeItem.row = mergeRowIndex - 1;
|
|
270
|
+
}
|
|
271
|
+
else if (mergeRowIndex + mergeRowspan > afIndex) {
|
|
272
|
+
mergeItem.rowspan = mergeRowspan - 1;
|
|
273
|
+
}
|
|
274
|
+
});
|
|
275
|
+
afterFullData.splice(afIndex, 1);
|
|
276
|
+
}
|
|
277
|
+
});
|
|
278
|
+
}
|
|
226
279
|
}
|
|
227
280
|
// 如果当前行被激活编辑,则清除激活状态
|
|
228
281
|
if (actived.row && $xetable.findRowIndexOf(rows, actived.row) > -1) {
|
|
@@ -294,16 +347,30 @@ var editHook = {
|
|
|
294
347
|
* 获取新增的临时数据
|
|
295
348
|
*/
|
|
296
349
|
getInsertRecords: function () {
|
|
350
|
+
var treeConfig = props.treeConfig;
|
|
297
351
|
var editStore = reactData.editStore;
|
|
298
|
-
var tableFullData = internalData.tableFullData;
|
|
352
|
+
var treeFullData = internalData.treeFullData, tableFullData = internalData.tableFullData;
|
|
353
|
+
var treeOpts = computeTreeOpts.value;
|
|
299
354
|
var insertList = editStore.insertList;
|
|
300
355
|
var insertRecords = [];
|
|
301
356
|
if (insertList.length) {
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
357
|
+
// 如果为虚拟树
|
|
358
|
+
if (treeConfig && treeOpts.transform) {
|
|
359
|
+
insertList.forEach(function (row) {
|
|
360
|
+
var rowid = getRowid($xetable, row);
|
|
361
|
+
var matchObj = XEUtils.findTree(treeFullData, function (item) { return rowid === getRowid($xetable, item); }, treeOpts);
|
|
362
|
+
if (matchObj) {
|
|
363
|
+
insertRecords.push(row);
|
|
364
|
+
}
|
|
365
|
+
});
|
|
366
|
+
}
|
|
367
|
+
else {
|
|
368
|
+
insertList.forEach(function (row) {
|
|
369
|
+
if ($xetable.findRowIndexOf(tableFullData, row) > -1) {
|
|
370
|
+
insertRecords.push(row);
|
|
371
|
+
}
|
|
372
|
+
});
|
|
373
|
+
}
|
|
307
374
|
}
|
|
308
375
|
return insertRecords;
|
|
309
376
|
},
|
package/es/table/src/body.js
CHANGED
|
@@ -290,6 +290,7 @@ export default defineComponent({
|
|
|
290
290
|
var radioOpts = computeRadioOpts.value;
|
|
291
291
|
var treeOpts = computeTreeOpts.value;
|
|
292
292
|
var editOpts = computeEditOpts.value;
|
|
293
|
+
var rowOpts = computeRowOpts.value;
|
|
293
294
|
var rows = [];
|
|
294
295
|
tableData.forEach(function (row, $rowIndex) {
|
|
295
296
|
var trOn = {};
|
|
@@ -302,7 +303,7 @@ export default defineComponent({
|
|
|
302
303
|
// 确保任何情况下 rowIndex 都精准指向真实 data 索引
|
|
303
304
|
rowIndex = $xetable.getRowIndex(row);
|
|
304
305
|
// 事件绑定
|
|
305
|
-
if (highlightHoverRow) {
|
|
306
|
+
if (rowOpts.isHover || highlightHoverRow) {
|
|
306
307
|
trOn.onMouseenter = function (evnt) {
|
|
307
308
|
if (isOperateMouse()) {
|
|
308
309
|
return;
|
|
@@ -402,6 +403,7 @@ export default defineComponent({
|
|
|
402
403
|
var highlightHoverRow = tableProps.highlightHoverRow;
|
|
403
404
|
var scrollXLoad = tableReactData.scrollXLoad, scrollYLoad = tableReactData.scrollYLoad;
|
|
404
405
|
var elemStore = tableInternalData.elemStore, lastScrollTop = tableInternalData.lastScrollTop, lastScrollLeft = tableInternalData.lastScrollLeft;
|
|
406
|
+
var rowOpts = computeRowOpts.value;
|
|
405
407
|
var tableHeader = refTableHeader.value;
|
|
406
408
|
var tableBody = refTableBody.value;
|
|
407
409
|
var tableFooter = refTableFooter.value;
|
|
@@ -425,7 +427,7 @@ export default defineComponent({
|
|
|
425
427
|
tableInternalData.lastScrollTop = scrollTop;
|
|
426
428
|
tableInternalData.lastScrollLeft = scrollLeft;
|
|
427
429
|
tableInternalData.lastScrollTime = Date.now();
|
|
428
|
-
if (highlightHoverRow) {
|
|
430
|
+
if (rowOpts.isHover || highlightHoverRow) {
|
|
429
431
|
$xetable.clearHoverRow();
|
|
430
432
|
}
|
|
431
433
|
if (leftElem && fixedType === 'left') {
|
|
@@ -519,6 +521,7 @@ export default defineComponent({
|
|
|
519
521
|
var highlightHoverRow = tableProps.highlightHoverRow;
|
|
520
522
|
var scrollYLoad = tableReactData.scrollYLoad;
|
|
521
523
|
var lastScrollTop = tableInternalData.lastScrollTop, lastScrollLeft = tableInternalData.lastScrollLeft;
|
|
524
|
+
var rowOpts = computeRowOpts.value;
|
|
522
525
|
var tableBody = refTableBody.value;
|
|
523
526
|
var scrollBodyElem = refElem.value;
|
|
524
527
|
var bodyElem = tableBody.$el;
|
|
@@ -539,7 +542,7 @@ export default defineComponent({
|
|
|
539
542
|
tableInternalData.lastScrollTop = scrollTop;
|
|
540
543
|
tableInternalData.lastScrollLeft = scrollLeft;
|
|
541
544
|
tableInternalData.lastScrollTime = Date.now();
|
|
542
|
-
if (highlightHoverRow) {
|
|
545
|
+
if (rowOpts.isHover || highlightHoverRow) {
|
|
543
546
|
$xetable.clearHoverRow();
|
|
544
547
|
}
|
|
545
548
|
handleWheel(evnt, isTopWheel, deltaTop, isRollX, isRollY);
|
package/es/table/src/table.js
CHANGED
|
@@ -2291,8 +2291,8 @@ export default defineComponent({
|
|
|
2291
2291
|
var tableSourceData = internalData.tableSourceData, fullDataRowIdData = internalData.fullDataRowIdData, fullAllDataRowIdData = internalData.fullAllDataRowIdData;
|
|
2292
2292
|
var treeOpts = computeTreeOpts.value;
|
|
2293
2293
|
var children = treeOpts.children;
|
|
2294
|
-
var
|
|
2295
|
-
var parentLevel =
|
|
2294
|
+
var parentRest = fullAllDataRowIdData[getRowid($xetable, row)];
|
|
2295
|
+
var parentLevel = parentRest ? parentRest.level : 0;
|
|
2296
2296
|
return tableMethods.createData(childRecords).then(function (rows) {
|
|
2297
2297
|
if (keepSource) {
|
|
2298
2298
|
var rowid_1 = getRowid($xetable, row);
|
|
@@ -3126,11 +3126,12 @@ export default defineComponent({
|
|
|
3126
3126
|
* @param {Row} row 行对象
|
|
3127
3127
|
*/
|
|
3128
3128
|
setCurrentRow: function (row) {
|
|
3129
|
+
var rowOpts = computeRowOpts.value;
|
|
3129
3130
|
var el = refElem.value;
|
|
3130
3131
|
tableMethods.clearCurrentRow();
|
|
3131
3132
|
tableMethods.clearCurrentColumn();
|
|
3132
3133
|
reactData.currentRow = row;
|
|
3133
|
-
if (props.highlightCurrentRow) {
|
|
3134
|
+
if (rowOpts.isCurrent || props.highlightCurrentRow) {
|
|
3134
3135
|
if (el) {
|
|
3135
3136
|
XEUtils.arrayEach(el.querySelectorAll("[rowid=\"" + getRowid($xetable, row) + "\"]"), function (elem) { return addClass(elem, 'row--current'); });
|
|
3136
3137
|
}
|
|
@@ -3176,7 +3177,8 @@ export default defineComponent({
|
|
|
3176
3177
|
* 用于当前行,获取当前行的数据
|
|
3177
3178
|
*/
|
|
3178
3179
|
getCurrentRecord: function () {
|
|
3179
|
-
|
|
3180
|
+
var rowOpts = computeRowOpts.value;
|
|
3181
|
+
return rowOpts.isCurrent || props.highlightCurrentRow ? reactData.currentRow : null;
|
|
3180
3182
|
},
|
|
3181
3183
|
/**
|
|
3182
3184
|
* 用于单选行,获取当已选中的数据
|
|
@@ -3211,7 +3213,8 @@ export default defineComponent({
|
|
|
3211
3213
|
return null;
|
|
3212
3214
|
},
|
|
3213
3215
|
getCurrentColumn: function () {
|
|
3214
|
-
|
|
3216
|
+
var columnOpts = computeColumnOpts.value;
|
|
3217
|
+
return columnOpts.isCurrent || props.highlightCurrentColumn ? reactData.currentColumn : null;
|
|
3215
3218
|
},
|
|
3216
3219
|
/**
|
|
3217
3220
|
* 用于当前列,设置某列行为高亮状态
|
|
@@ -4014,6 +4017,7 @@ export default defineComponent({
|
|
|
4014
4017
|
var editOpts = computeEditOpts.value;
|
|
4015
4018
|
var treeOpts = computeTreeOpts.value;
|
|
4016
4019
|
var menuList = computeMenuList.value;
|
|
4020
|
+
var rowOpts = computeRowOpts.value;
|
|
4017
4021
|
var selected = editStore.selected, actived = editStore.actived;
|
|
4018
4022
|
var keyCode = evnt.keyCode;
|
|
4019
4023
|
var isEsc = hasEventKey(evnt, EVENT_KEYS.ESCAPE);
|
|
@@ -4094,7 +4098,7 @@ export default defineComponent({
|
|
|
4094
4098
|
internalData._keyCtx = false;
|
|
4095
4099
|
}, 1000);
|
|
4096
4100
|
}
|
|
4097
|
-
else if (isEnter && !isAltKey && keyboardConfig && keyboardOpts.isEnter && (selected.row || actived.row || (treeConfig && highlightCurrentRow && currentRow))) {
|
|
4101
|
+
else if (isEnter && !isAltKey && keyboardConfig && keyboardOpts.isEnter && (selected.row || actived.row || (treeConfig && (rowOpts.isCurrent || highlightCurrentRow) && currentRow))) {
|
|
4098
4102
|
// 退出选中
|
|
4099
4103
|
if (hasCtrlKey) {
|
|
4100
4104
|
// 如果是激活编辑状态,则取消编辑
|
|
@@ -4128,7 +4132,7 @@ export default defineComponent({
|
|
|
4128
4132
|
}
|
|
4129
4133
|
}
|
|
4130
4134
|
}
|
|
4131
|
-
else if (treeConfig && highlightCurrentRow && currentRow) {
|
|
4135
|
+
else if (treeConfig && (rowOpts.isCurrent || highlightCurrentRow) && currentRow) {
|
|
4132
4136
|
// 如果是树形表格当前行回车移动到子节点
|
|
4133
4137
|
var childrens = currentRow[treeOpts.children];
|
|
4134
4138
|
if (childrens && childrens.length) {
|
|
@@ -4153,7 +4157,7 @@ export default defineComponent({
|
|
|
4153
4157
|
if (selected.row && selected.column) {
|
|
4154
4158
|
$xetable.moveSelected(selected.args, isLeftArrow, isUpArrow, isRightArrow, isDwArrow, evnt);
|
|
4155
4159
|
}
|
|
4156
|
-
else if ((isUpArrow || isDwArrow) && highlightCurrentRow) {
|
|
4160
|
+
else if ((isUpArrow || isDwArrow) && (rowOpts.isCurrent || highlightCurrentRow)) {
|
|
4157
4161
|
// 当前行按键上下移动
|
|
4158
4162
|
$xetable.moveCurrentRow(isUpArrow, isDwArrow, evnt);
|
|
4159
4163
|
}
|
|
@@ -4168,7 +4172,7 @@ export default defineComponent({
|
|
|
4168
4172
|
$xetable.moveTabSelected(actived.args, hasShiftKey, evnt);
|
|
4169
4173
|
}
|
|
4170
4174
|
}
|
|
4171
|
-
else if (keyboardConfig && isEnableConf(editConfig) && (isDel || (treeConfig && highlightCurrentRow && currentRow ? isBack && keyboardOpts.isArrow : isBack))) {
|
|
4175
|
+
else if (keyboardConfig && isEnableConf(editConfig) && (isDel || (treeConfig && (rowOpts.isCurrent || highlightCurrentRow) && currentRow ? isBack && keyboardOpts.isArrow : isBack))) {
|
|
4172
4176
|
if (!isEditStatus) {
|
|
4173
4177
|
var delMethod = keyboardOpts.delMethod, backMethod = keyboardOpts.backMethod;
|
|
4174
4178
|
// 如果是删除键
|
|
@@ -4204,7 +4208,7 @@ export default defineComponent({
|
|
|
4204
4208
|
tableMethods.updateFooter();
|
|
4205
4209
|
}
|
|
4206
4210
|
}
|
|
4207
|
-
else if (isBack && keyboardOpts.isArrow && treeConfig && highlightCurrentRow && currentRow) {
|
|
4211
|
+
else if (isBack && keyboardOpts.isArrow && treeConfig && (rowOpts.isCurrent || highlightCurrentRow) && currentRow) {
|
|
4208
4212
|
// 如果树形表格回退键关闭当前行返回父节点
|
|
4209
4213
|
var parentRow_1 = XEUtils.findTree(internalData.afterFullData, function (item) { return item === currentRow; }, treeOpts).parent;
|
|
4210
4214
|
if (parentRow_1) {
|
|
@@ -4845,6 +4849,7 @@ export default defineComponent({
|
|
|
4845
4849
|
triggerHeaderCellClickEvent: function (evnt, params) {
|
|
4846
4850
|
var _lastResizeTime = internalData._lastResizeTime;
|
|
4847
4851
|
var sortOpts = computeSortOpts.value;
|
|
4852
|
+
var columnOpts = computeColumnOpts.value;
|
|
4848
4853
|
var column = params.column;
|
|
4849
4854
|
var cell = evnt.currentTarget;
|
|
4850
4855
|
var triggerResizable = _lastResizeTime && _lastResizeTime > Date.now() - 300;
|
|
@@ -4854,7 +4859,7 @@ export default defineComponent({
|
|
|
4854
4859
|
tablePrivateMethods.triggerSortEvent(evnt, column, getNextSortOrder(column));
|
|
4855
4860
|
}
|
|
4856
4861
|
tableMethods.dispatchEvent('header-cell-click', Object.assign({ triggerResizable: triggerResizable, triggerSort: triggerSort, triggerFilter: triggerFilter, cell: cell }, params), evnt);
|
|
4857
|
-
if (props.highlightCurrentColumn) {
|
|
4862
|
+
if (columnOpts.isCurrent || props.highlightCurrentColumn) {
|
|
4858
4863
|
tableMethods.setCurrentColumn(column);
|
|
4859
4864
|
}
|
|
4860
4865
|
},
|
|
@@ -4874,6 +4879,7 @@ export default defineComponent({
|
|
|
4874
4879
|
var treeOpts = computeTreeOpts.value;
|
|
4875
4880
|
var radioOpts = computeRadioOpts.value;
|
|
4876
4881
|
var checkboxOpts = computeCheckboxOpts.value;
|
|
4882
|
+
var rowOpts = computeRowOpts.value;
|
|
4877
4883
|
var actived = editStore.actived;
|
|
4878
4884
|
var row = params.row, column = params.column;
|
|
4879
4885
|
var type = column.type, treeNode = column.treeNode;
|
|
@@ -4900,7 +4906,7 @@ export default defineComponent({
|
|
|
4900
4906
|
if (!triggerTreeNode) {
|
|
4901
4907
|
if (!triggerExpandNode) {
|
|
4902
4908
|
// 如果是高亮行
|
|
4903
|
-
if (highlightCurrentRow) {
|
|
4909
|
+
if (rowOpts.isCurrent || highlightCurrentRow) {
|
|
4904
4910
|
if (!triggerCheckbox && !triggerRadio) {
|
|
4905
4911
|
tablePrivateMethods.triggerCurrentRowEvent(evnt, params);
|
|
4906
4912
|
}
|
|
@@ -5214,6 +5220,7 @@ export default defineComponent({
|
|
|
5214
5220
|
tablePrivateMethods.handleTableData();
|
|
5215
5221
|
tablePrivateMethods.updateScrollYSpace();
|
|
5216
5222
|
},
|
|
5223
|
+
updateVirtualTreeData: updateVirtualTreeData,
|
|
5217
5224
|
/**
|
|
5218
5225
|
* 处理固定列的显示状态
|
|
5219
5226
|
*/
|
|
@@ -5681,6 +5688,8 @@ export default defineComponent({
|
|
|
5681
5688
|
var leftList = columnStore.leftList, rightList = columnStore.rightList;
|
|
5682
5689
|
var tooltipOpts = computeTooltipOpts.value;
|
|
5683
5690
|
var treeOpts = computeTreeOpts.value;
|
|
5691
|
+
var rowOpts = computeRowOpts.value;
|
|
5692
|
+
var columnOpts = computeColumnOpts.value;
|
|
5684
5693
|
var vSize = computeSize.value;
|
|
5685
5694
|
var tableBorder = computeTableBorder.value;
|
|
5686
5695
|
var mouseOpts = computeMouseOpts.value;
|
|
@@ -5695,8 +5704,8 @@ export default defineComponent({
|
|
|
5695
5704
|
_a['cell--highlight'] = highlightCell,
|
|
5696
5705
|
_a['cell--selected'] = mouseConfig && mouseOpts.selected,
|
|
5697
5706
|
_a['cell--area'] = mouseConfig && mouseOpts.area,
|
|
5698
|
-
_a['row--highlight'] = highlightHoverRow,
|
|
5699
|
-
_a['column--highlight'] = highlightHoverColumn,
|
|
5707
|
+
_a['row--highlight'] = rowOpts.isHover || highlightHoverRow,
|
|
5708
|
+
_a['column--highlight'] = columnOpts.isHover || highlightHoverColumn,
|
|
5700
5709
|
_a['is--header'] = showHeader,
|
|
5701
5710
|
_a['is--footer'] = showFooter,
|
|
5702
5711
|
_a['is--group'] = isGroup,
|
package/lib/edit/src/hook.js
CHANGED
|
@@ -138,9 +138,13 @@ var editHook = {
|
|
|
138
138
|
var mergeList = reactData.mergeList,
|
|
139
139
|
editStore = reactData.editStore,
|
|
140
140
|
scrollYLoad = reactData.scrollYLoad;
|
|
141
|
-
var
|
|
142
|
-
|
|
141
|
+
var treeFullData = internalData.treeFullData,
|
|
142
|
+
afterFullData = internalData.afterFullData,
|
|
143
|
+
tableFullData = internalData.tableFullData,
|
|
144
|
+
fullDataRowIdData = internalData.fullDataRowIdData,
|
|
145
|
+
fullAllDataRowIdData = internalData.fullAllDataRowIdData;
|
|
143
146
|
var sYOpts = computeSYOpts.value;
|
|
147
|
+
var treeOpts = computeTreeOpts.value;
|
|
144
148
|
|
|
145
149
|
if (!_xeUtils.default.isArray(records)) {
|
|
146
150
|
records = [records];
|
|
@@ -151,16 +155,60 @@ var editHook = {
|
|
|
151
155
|
});
|
|
152
156
|
|
|
153
157
|
if (!row) {
|
|
154
|
-
|
|
155
|
-
|
|
158
|
+
// 如果为虚拟树
|
|
159
|
+
if (treeConfig && treeOpts.transform) {
|
|
160
|
+
newRecords.forEach(function (item) {
|
|
161
|
+
var parentRowId = item[treeOpts.parentField];
|
|
162
|
+
var rowid = (0, _util.getRowid)($xetable, item);
|
|
163
|
+
|
|
164
|
+
if (parentRowId) {
|
|
165
|
+
var matchObj = _xeUtils.default.findTree(treeFullData, function (item) {
|
|
166
|
+
return parentRowId === item[treeOpts.rowField];
|
|
167
|
+
}, treeOpts);
|
|
168
|
+
|
|
169
|
+
if (matchObj) {
|
|
170
|
+
var parentRow = matchObj.item;
|
|
171
|
+
var parentRest = fullAllDataRowIdData[(0, _util.getRowid)($xetable, parentRow)];
|
|
172
|
+
var parentLevel = parentRest ? parentRest.level : 0;
|
|
173
|
+
var parentChilds = parentRow[treeOpts.children];
|
|
174
|
+
|
|
175
|
+
if (!_xeUtils.default.isArray(parentChilds)) {
|
|
176
|
+
parentChilds = parentRow[treeOpts.children] = [];
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
parentChilds.push(item);
|
|
180
|
+
var rest = {
|
|
181
|
+
row: item,
|
|
182
|
+
rowid: rowid,
|
|
183
|
+
index: -1,
|
|
184
|
+
_index: -1,
|
|
185
|
+
$index: -1,
|
|
186
|
+
items: parentChilds,
|
|
187
|
+
parent: parent,
|
|
188
|
+
level: parentLevel + 1
|
|
189
|
+
};
|
|
190
|
+
fullDataRowIdData[rowid] = rest;
|
|
191
|
+
fullAllDataRowIdData[rowid] = rest;
|
|
192
|
+
} else {// 父节点不存在
|
|
193
|
+
}
|
|
194
|
+
} else {
|
|
195
|
+
afterFullData.unshift(item);
|
|
196
|
+
treeFullData.unshift(item);
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
$xetable.updateVirtualTreeData();
|
|
200
|
+
} else {
|
|
201
|
+
afterFullData.unshift.apply(afterFullData, newRecords);
|
|
202
|
+
tableFullData.unshift.apply(tableFullData, newRecords); // 刷新单元格合并
|
|
156
203
|
|
|
157
|
-
|
|
158
|
-
|
|
204
|
+
mergeList.forEach(function (mergeItem) {
|
|
205
|
+
var mergeRowIndex = mergeItem.row;
|
|
159
206
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
207
|
+
if (mergeRowIndex > 0) {
|
|
208
|
+
mergeItem.row = mergeRowIndex + newRecords.length;
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
}
|
|
164
212
|
} else {
|
|
165
213
|
if (row === -1) {
|
|
166
214
|
afterFullData.push.apply(afterFullData, newRecords);
|
|
@@ -237,10 +285,12 @@ var editHook = {
|
|
|
237
285
|
editStore = reactData.editStore,
|
|
238
286
|
selection = reactData.selection,
|
|
239
287
|
scrollYLoad = reactData.scrollYLoad;
|
|
240
|
-
var
|
|
288
|
+
var treeFullData = internalData.treeFullData,
|
|
289
|
+
afterFullData = internalData.afterFullData,
|
|
241
290
|
tableFullData = internalData.tableFullData;
|
|
242
291
|
var checkboxOpts = computeCheckboxOpts.value;
|
|
243
292
|
var sYOpts = computeSYOpts.value;
|
|
293
|
+
var treeOpts = computeTreeOpts.value;
|
|
244
294
|
var actived = editStore.actived,
|
|
245
295
|
removeList = editStore.removeList,
|
|
246
296
|
insertList = editStore.insertList;
|
|
@@ -277,31 +327,55 @@ var editHook = {
|
|
|
277
327
|
internalData.afterFullData = [];
|
|
278
328
|
$xetable.clearMergeCells();
|
|
279
329
|
} else {
|
|
280
|
-
|
|
281
|
-
|
|
330
|
+
// 如果为虚拟树
|
|
331
|
+
if (treeConfig && treeOpts.transform) {
|
|
332
|
+
rows.forEach(function (row) {
|
|
333
|
+
var rowid = (0, _util.getRowid)($xetable, row);
|
|
334
|
+
|
|
335
|
+
var matchObj = _xeUtils.default.findTree(treeFullData, function (item) {
|
|
336
|
+
return rowid === (0, _util.getRowid)($xetable, item);
|
|
337
|
+
}, treeOpts);
|
|
338
|
+
|
|
339
|
+
if (matchObj) {
|
|
340
|
+
var rItems = matchObj.items.splice(matchObj.index, 1);
|
|
341
|
+
rest.push(rItems[0]);
|
|
342
|
+
}
|
|
282
343
|
|
|
283
|
-
|
|
284
|
-
var rItems = tableFullData.splice(tfIndex, 1);
|
|
285
|
-
rest.push(rItems[0]);
|
|
286
|
-
}
|
|
344
|
+
var afIndex = $xetable.findRowIndexOf(afterFullData, row);
|
|
287
345
|
|
|
288
|
-
|
|
346
|
+
if (afIndex > -1) {
|
|
347
|
+
afterFullData.splice(afIndex, 1);
|
|
348
|
+
}
|
|
289
349
|
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
350
|
+
$xetable.updateVirtualTreeData();
|
|
351
|
+
});
|
|
352
|
+
} else {
|
|
353
|
+
rows.forEach(function (row) {
|
|
354
|
+
var tfIndex = $xetable.findRowIndexOf(tableFullData, row);
|
|
295
355
|
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
356
|
+
if (tfIndex > -1) {
|
|
357
|
+
var rItems = tableFullData.splice(tfIndex, 1);
|
|
358
|
+
rest.push(rItems[0]);
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
var afIndex = $xetable.findRowIndexOf(afterFullData, row);
|
|
362
|
+
|
|
363
|
+
if (afIndex > -1) {
|
|
364
|
+
// 刷新单元格合并
|
|
365
|
+
mergeList.forEach(function (mergeItem) {
|
|
366
|
+
var mergeRowIndex = mergeItem.row,
|
|
367
|
+
mergeRowspan = mergeItem.rowspan;
|
|
368
|
+
|
|
369
|
+
if (mergeRowIndex > afIndex) {
|
|
370
|
+
mergeItem.row = mergeRowIndex - 1;
|
|
371
|
+
} else if (mergeRowIndex + mergeRowspan > afIndex) {
|
|
372
|
+
mergeItem.rowspan = mergeRowspan - 1;
|
|
373
|
+
}
|
|
374
|
+
});
|
|
375
|
+
afterFullData.splice(afIndex, 1);
|
|
376
|
+
}
|
|
377
|
+
});
|
|
378
|
+
}
|
|
305
379
|
} // 如果当前行被激活编辑,则清除激活状态
|
|
306
380
|
|
|
307
381
|
|
|
@@ -386,17 +460,35 @@ var editHook = {
|
|
|
386
460
|
* 获取新增的临时数据
|
|
387
461
|
*/
|
|
388
462
|
getInsertRecords: function getInsertRecords() {
|
|
463
|
+
var treeConfig = props.treeConfig;
|
|
389
464
|
var editStore = reactData.editStore;
|
|
390
|
-
var
|
|
465
|
+
var treeFullData = internalData.treeFullData,
|
|
466
|
+
tableFullData = internalData.tableFullData;
|
|
467
|
+
var treeOpts = computeTreeOpts.value;
|
|
391
468
|
var insertList = editStore.insertList;
|
|
392
469
|
var insertRecords = [];
|
|
393
470
|
|
|
394
471
|
if (insertList.length) {
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
472
|
+
// 如果为虚拟树
|
|
473
|
+
if (treeConfig && treeOpts.transform) {
|
|
474
|
+
insertList.forEach(function (row) {
|
|
475
|
+
var rowid = (0, _util.getRowid)($xetable, row);
|
|
476
|
+
|
|
477
|
+
var matchObj = _xeUtils.default.findTree(treeFullData, function (item) {
|
|
478
|
+
return rowid === (0, _util.getRowid)($xetable, item);
|
|
479
|
+
}, treeOpts);
|
|
480
|
+
|
|
481
|
+
if (matchObj) {
|
|
482
|
+
insertRecords.push(row);
|
|
483
|
+
}
|
|
484
|
+
});
|
|
485
|
+
} else {
|
|
486
|
+
insertList.forEach(function (row) {
|
|
487
|
+
if ($xetable.findRowIndexOf(tableFullData, row) > -1) {
|
|
488
|
+
insertRecords.push(row);
|
|
489
|
+
}
|
|
490
|
+
});
|
|
491
|
+
}
|
|
400
492
|
}
|
|
401
493
|
|
|
402
494
|
return insertRecords;
|