vxe-table 4.1.2 → 4.1.5

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.
@@ -113,6 +113,69 @@ var editHook = {
113
113
  }
114
114
  }
115
115
 
116
+ function insertTreeRow(newRecords, isAppend) {
117
+ var treeFullData = internalData.treeFullData,
118
+ afterFullData = internalData.afterFullData,
119
+ fullDataRowIdData = internalData.fullDataRowIdData,
120
+ fullAllDataRowIdData = internalData.fullAllDataRowIdData;
121
+ var treeOpts = computeTreeOpts.value;
122
+ var funcName = isAppend ? 'push' : 'unshift';
123
+ newRecords.forEach(function (item) {
124
+ var parentRowId = item[treeOpts.parentField];
125
+ var rowid = (0, _util.getRowid)($xetable, item);
126
+ var matchObj = parentRowId ? _xeUtils.default.findTree(treeFullData, function (item) {
127
+ return parentRowId === item[treeOpts.rowField];
128
+ }, treeOpts) : null;
129
+
130
+ if (matchObj) {
131
+ var parentRow = matchObj.item;
132
+ var parentRest = fullAllDataRowIdData[(0, _util.getRowid)($xetable, parentRow)];
133
+ var parentLevel = parentRest ? parentRest.level : 0;
134
+ var parentChilds = parentRow[treeOpts.children];
135
+
136
+ if (!_xeUtils.default.isArray(parentChilds)) {
137
+ parentChilds = parentRow[treeOpts.children] = [];
138
+ }
139
+
140
+ parentChilds[funcName](item);
141
+ var rest = {
142
+ row: item,
143
+ rowid: rowid,
144
+ index: -1,
145
+ _index: -1,
146
+ $index: -1,
147
+ items: parentChilds,
148
+ parent: parent,
149
+ level: parentLevel + 1
150
+ };
151
+ fullDataRowIdData[rowid] = rest;
152
+ fullAllDataRowIdData[rowid] = rest;
153
+ } else {
154
+ if (process.env.NODE_ENV === 'development') {
155
+ if (parentRowId) {
156
+ (0, _utils.warnLog)('vxe.error.unableInsert');
157
+ }
158
+ }
159
+
160
+ afterFullData[funcName](item);
161
+ treeFullData[funcName](item);
162
+ var rest = {
163
+ row: item,
164
+ rowid: rowid,
165
+ index: -1,
166
+ _index: -1,
167
+ $index: -1,
168
+ items: treeFullData,
169
+ parent: null,
170
+ level: 0
171
+ };
172
+ fullDataRowIdData[rowid] = rest;
173
+ fullAllDataRowIdData[rowid] = rest;
174
+ }
175
+ });
176
+ $xetable.updateVirtualTreeData();
177
+ }
178
+
116
179
  editMethods = {
117
180
  /**
118
181
  * 往表格中插入临时数据
@@ -125,9 +188,9 @@ var editHook = {
125
188
 
126
189
  /**
127
190
  * 往表格指定行中插入临时数据
128
- * 如果 row 为空则从插入到顶部
129
- * 如果 row 为 -1 则从插入到底部
130
- * 如果 row 为有效行则插入到该行的位置
191
+ * 如果 row 为空则从插入到顶部,如果为树结构,则插入到目标节点顶部
192
+ * 如果 row 为 -1 则从插入到底部,如果为树结构,则插入到目标节点底部
193
+ * 如果 row 为有效行则插入到该行的位置,如果为树结构,则有插入到效的目标节点该行的位置
131
194
  * @param {Object/Array} records 新的数据
132
195
  * @param {Row} row 指定行
133
196
  */
@@ -138,9 +201,14 @@ var editHook = {
138
201
  var mergeList = reactData.mergeList,
139
202
  editStore = reactData.editStore,
140
203
  scrollYLoad = reactData.scrollYLoad;
141
- var afterFullData = internalData.afterFullData,
142
- tableFullData = internalData.tableFullData;
204
+ var treeFullData = internalData.treeFullData,
205
+ afterFullData = internalData.afterFullData,
206
+ tableFullData = internalData.tableFullData,
207
+ fullDataRowIdData = internalData.fullDataRowIdData,
208
+ fullAllDataRowIdData = internalData.fullAllDataRowIdData;
143
209
  var sYOpts = computeSYOpts.value;
210
+ var treeOpts = computeTreeOpts.value;
211
+ var transform = treeOpts.transform;
144
212
 
145
213
  if (!_xeUtils.default.isArray(records)) {
146
214
  records = [records];
@@ -151,53 +219,113 @@ var editHook = {
151
219
  });
152
220
 
153
221
  if (!row) {
154
- afterFullData.unshift.apply(afterFullData, newRecords);
155
- tableFullData.unshift.apply(tableFullData, newRecords); // 刷新单元格合并
156
-
157
- mergeList.forEach(function (mergeItem) {
158
- var mergeRowIndex = mergeItem.row;
159
-
160
- if (mergeRowIndex > 0) {
161
- mergeItem.row = mergeRowIndex + newRecords.length;
162
- }
163
- });
164
- } else {
165
- if (row === -1) {
166
- afterFullData.push.apply(afterFullData, newRecords);
167
- tableFullData.push.apply(tableFullData, newRecords); // 刷新单元格合并
222
+ // 如果为虚拟树
223
+ if (treeConfig && transform) {
224
+ insertTreeRow(newRecords, false);
225
+ } else {
226
+ afterFullData.unshift.apply(afterFullData, newRecords);
227
+ tableFullData.unshift.apply(tableFullData, newRecords); // 刷新单元格合并
168
228
 
169
229
  mergeList.forEach(function (mergeItem) {
170
- var mergeRowIndex = mergeItem.row,
171
- mergeRowspan = mergeItem.rowspan;
230
+ var mergeRowIndex = mergeItem.row;
172
231
 
173
- if (mergeRowIndex + mergeRowspan > afterFullData.length) {
174
- mergeItem.rowspan = mergeRowspan + newRecords.length;
232
+ if (mergeRowIndex > 0) {
233
+ mergeItem.row = mergeRowIndex + newRecords.length;
175
234
  }
176
235
  });
177
- } else {
178
- if (treeConfig) {
179
- throw new Error((0, _utils.getLog)('vxe.error.noTree', ['insert']));
180
- }
236
+ }
237
+ } else {
238
+ if (row === -1) {
239
+ // 如果为虚拟树
240
+ if (treeConfig && transform) {
241
+ insertTreeRow(newRecords, true);
242
+ } else {
243
+ afterFullData.push.apply(afterFullData, newRecords);
244
+ tableFullData.push.apply(tableFullData, newRecords); // 刷新单元格合并
181
245
 
182
- var afIndex_1 = $xetable.findRowIndexOf(afterFullData, row);
246
+ mergeList.forEach(function (mergeItem) {
247
+ var mergeRowIndex = mergeItem.row,
248
+ mergeRowspan = mergeItem.rowspan;
183
249
 
184
- if (afIndex_1 === -1) {
185
- throw new Error((0, _utils.errLog)('vxe.error.unableInsert'));
250
+ if (mergeRowIndex + mergeRowspan > afterFullData.length) {
251
+ mergeItem.rowspan = mergeRowspan + newRecords.length;
252
+ }
253
+ });
186
254
  }
255
+ } else {
256
+ // 如果为虚拟树
257
+ if (treeConfig && transform) {
258
+ var matchObj_1 = _xeUtils.default.findTree(treeFullData, function (item) {
259
+ return row[treeOpts.rowField] === item[treeOpts.rowField];
260
+ }, treeOpts);
261
+
262
+ if (matchObj_1) {
263
+ var parentRow_1 = matchObj_1.parent;
264
+ var parentChilds_1 = matchObj_1.items;
265
+ var parentRest = fullAllDataRowIdData[(0, _util.getRowid)($xetable, parentRow_1)];
266
+ var parentLevel_1 = parentRest ? parentRest.level : 0;
267
+ newRecords.forEach(function (item, i) {
268
+ var rowid = (0, _util.getRowid)($xetable, item);
269
+
270
+ if (process.env.NODE_ENV === 'development') {
271
+ if (item[treeOpts.parentField]) {
272
+ if (parentRow_1 && item[treeOpts.parentField] !== parentRow_1[treeOpts.rowField]) {
273
+ (0, _utils.errLog)('vxe.error.errProp', [treeOpts.parentField + "=" + item[treeOpts.parentField], treeOpts.parentField + "=" + parentRow_1[treeOpts.rowField]]);
274
+ }
275
+ }
276
+ }
277
+
278
+ if (parentRow_1) {
279
+ item[treeOpts.parentField] = parentRow_1[treeOpts.rowField];
280
+ }
281
+
282
+ parentChilds_1.splice(matchObj_1.index + i, 0, item);
283
+ var rest = {
284
+ row: item,
285
+ rowid: rowid,
286
+ index: -1,
287
+ _index: -1,
288
+ $index: -1,
289
+ items: parentChilds_1,
290
+ parent: parentRow_1,
291
+ level: parentLevel_1 + 1
292
+ };
293
+ fullDataRowIdData[rowid] = rest;
294
+ fullAllDataRowIdData[rowid] = rest;
295
+ });
296
+ $xetable.updateVirtualTreeData();
297
+ } else {
298
+ if (process.env.NODE_ENV === 'development') {
299
+ (0, _utils.warnLog)('vxe.error.unableInsert');
300
+ }
187
301
 
188
- afterFullData.splice.apply(afterFullData, __spreadArray([afIndex_1, 0], newRecords));
189
- tableFullData.splice.apply(tableFullData, __spreadArray([$xetable.findRowIndexOf(tableFullData, row), 0], newRecords)); // 刷新单元格合并
302
+ insertTreeRow(newRecords, true);
303
+ }
304
+ } else {
305
+ if (treeConfig) {
306
+ throw new Error((0, _utils.getLog)('vxe.error.noTree', ['insert']));
307
+ }
190
308
 
191
- mergeList.forEach(function (mergeItem) {
192
- var mergeRowIndex = mergeItem.row,
193
- mergeRowspan = mergeItem.rowspan;
309
+ var afIndex_1 = $xetable.findRowIndexOf(afterFullData, row);
194
310
 
195
- if (mergeRowIndex > afIndex_1) {
196
- mergeItem.row = mergeRowIndex + newRecords.length;
197
- } else if (mergeRowIndex + mergeRowspan > afIndex_1) {
198
- mergeItem.rowspan = mergeRowspan + newRecords.length;
311
+ if (afIndex_1 === -1) {
312
+ throw new Error((0, _utils.errLog)('vxe.error.unableInsert'));
199
313
  }
200
- });
314
+
315
+ afterFullData.splice.apply(afterFullData, __spreadArray([afIndex_1, 0], newRecords));
316
+ tableFullData.splice.apply(tableFullData, __spreadArray([$xetable.findRowIndexOf(tableFullData, row), 0], newRecords)); // 刷新单元格合并
317
+
318
+ mergeList.forEach(function (mergeItem) {
319
+ var mergeRowIndex = mergeItem.row,
320
+ mergeRowspan = mergeItem.rowspan;
321
+
322
+ if (mergeRowIndex > afIndex_1) {
323
+ mergeItem.row = mergeRowIndex + newRecords.length;
324
+ } else if (mergeRowIndex + mergeRowspan > afIndex_1) {
325
+ mergeItem.rowspan = mergeRowspan + newRecords.length;
326
+ }
327
+ });
328
+ }
201
329
  }
202
330
  }
203
331
 
@@ -206,7 +334,7 @@ var editHook = {
206
334
  reactData.scrollYLoad = !treeConfig && sYOpts.gt > -1 && sYOpts.gt < tableFullData.length;
207
335
  $xetable.updateFooter();
208
336
  $xetable.cacheRowMap();
209
- $xetable.handleTableData();
337
+ $xetable.handleTableData(transform);
210
338
  $xetable.updateAfterDataIndex();
211
339
  $xetable.checkSelectionStatus();
212
340
 
@@ -237,10 +365,13 @@ var editHook = {
237
365
  editStore = reactData.editStore,
238
366
  selection = reactData.selection,
239
367
  scrollYLoad = reactData.scrollYLoad;
240
- var afterFullData = internalData.afterFullData,
368
+ var treeFullData = internalData.treeFullData,
369
+ afterFullData = internalData.afterFullData,
241
370
  tableFullData = internalData.tableFullData;
242
371
  var checkboxOpts = computeCheckboxOpts.value;
243
372
  var sYOpts = computeSYOpts.value;
373
+ var treeOpts = computeTreeOpts.value;
374
+ var transform = treeOpts.transform;
244
375
  var actived = editStore.actived,
245
376
  removeList = editStore.removeList,
246
377
  insertList = editStore.insertList;
@@ -277,31 +408,55 @@ var editHook = {
277
408
  internalData.afterFullData = [];
278
409
  $xetable.clearMergeCells();
279
410
  } else {
280
- rows.forEach(function (row) {
281
- var tfIndex = $xetable.findRowIndexOf(tableFullData, row);
411
+ // 如果为虚拟树
412
+ if (treeConfig && transform) {
413
+ rows.forEach(function (row) {
414
+ var rowid = (0, _util.getRowid)($xetable, row);
415
+
416
+ var matchObj = _xeUtils.default.findTree(treeFullData, function (item) {
417
+ return rowid === (0, _util.getRowid)($xetable, item);
418
+ }, treeOpts);
419
+
420
+ if (matchObj) {
421
+ var rItems = matchObj.items.splice(matchObj.index, 1);
422
+ rest.push(rItems[0]);
423
+ }
282
424
 
283
- if (tfIndex > -1) {
284
- var rItems = tableFullData.splice(tfIndex, 1);
285
- rest.push(rItems[0]);
286
- }
425
+ var afIndex = $xetable.findRowIndexOf(afterFullData, row);
287
426
 
288
- var afIndex = $xetable.findRowIndexOf(afterFullData, row);
427
+ if (afIndex > -1) {
428
+ afterFullData.splice(afIndex, 1);
429
+ }
289
430
 
290
- if (afIndex > -1) {
291
- // 刷新单元格合并
292
- mergeList.forEach(function (mergeItem) {
293
- var mergeRowIndex = mergeItem.row,
294
- mergeRowspan = mergeItem.rowspan;
431
+ $xetable.updateVirtualTreeData();
432
+ });
433
+ } else {
434
+ rows.forEach(function (row) {
435
+ var tfIndex = $xetable.findRowIndexOf(tableFullData, row);
295
436
 
296
- if (mergeRowIndex > afIndex) {
297
- mergeItem.row = mergeRowIndex - 1;
298
- } else if (mergeRowIndex + mergeRowspan > afIndex) {
299
- mergeItem.rowspan = mergeRowspan - 1;
300
- }
301
- });
302
- afterFullData.splice(afIndex, 1);
303
- }
304
- });
437
+ if (tfIndex > -1) {
438
+ var rItems = tableFullData.splice(tfIndex, 1);
439
+ rest.push(rItems[0]);
440
+ }
441
+
442
+ var afIndex = $xetable.findRowIndexOf(afterFullData, row);
443
+
444
+ if (afIndex > -1) {
445
+ // 刷新单元格合并
446
+ mergeList.forEach(function (mergeItem) {
447
+ var mergeRowIndex = mergeItem.row,
448
+ mergeRowspan = mergeItem.rowspan;
449
+
450
+ if (mergeRowIndex > afIndex) {
451
+ mergeItem.row = mergeRowIndex - 1;
452
+ } else if (mergeRowIndex + mergeRowspan > afIndex) {
453
+ mergeItem.rowspan = mergeRowspan - 1;
454
+ }
455
+ });
456
+ afterFullData.splice(afIndex, 1);
457
+ }
458
+ });
459
+ }
305
460
  } // 如果当前行被激活编辑,则清除激活状态
306
461
 
307
462
 
@@ -320,7 +475,7 @@ var editHook = {
320
475
  reactData.scrollYLoad = !treeConfig && sYOpts.gt > -1 && sYOpts.gt < tableFullData.length;
321
476
  $xetable.updateFooter();
322
477
  $xetable.cacheRowMap();
323
- $xetable.handleTableData();
478
+ $xetable.handleTableData(transform);
324
479
  $xetable.updateAfterDataIndex();
325
480
  $xetable.checkSelectionStatus();
326
481
 
@@ -386,17 +541,35 @@ var editHook = {
386
541
  * 获取新增的临时数据
387
542
  */
388
543
  getInsertRecords: function getInsertRecords() {
544
+ var treeConfig = props.treeConfig;
389
545
  var editStore = reactData.editStore;
390
- var tableFullData = internalData.tableFullData;
546
+ var treeFullData = internalData.treeFullData,
547
+ tableFullData = internalData.tableFullData;
548
+ var treeOpts = computeTreeOpts.value;
391
549
  var insertList = editStore.insertList;
392
550
  var insertRecords = [];
393
551
 
394
552
  if (insertList.length) {
395
- tableFullData.forEach(function (row) {
396
- if ($xetable.findRowIndexOf(insertList, row) > -1) {
397
- insertRecords.push(row);
398
- }
399
- });
553
+ // 如果为虚拟树
554
+ if (treeConfig && treeOpts.transform) {
555
+ insertList.forEach(function (row) {
556
+ var rowid = (0, _util.getRowid)($xetable, row);
557
+
558
+ var matchObj = _xeUtils.default.findTree(treeFullData, function (item) {
559
+ return rowid === (0, _util.getRowid)($xetable, item);
560
+ }, treeOpts);
561
+
562
+ if (matchObj) {
563
+ insertRecords.push(row);
564
+ }
565
+ });
566
+ } else {
567
+ insertList.forEach(function (row) {
568
+ if ($xetable.findRowIndexOf(tableFullData, row) > -1) {
569
+ insertRecords.push(row);
570
+ }
571
+ });
572
+ }
400
573
  }
401
574
 
402
575
  return insertRecords;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_vXETable=require("../../v-x-e-table"),_utils=require("../../tools/utils"),_util=require("../../table/src/util"),_dom=require("../../tools/dom");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var __assign=function(){return(__assign=Object.assign||function(e){for(var t,r=1,l=arguments.length;r<l;r++)for(var n in t=arguments[r])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e}).apply(this,arguments)},__spreadArray=function(e,t){for(var r=0,l=t.length,n=e.length;r<l;r++,n++)e[n]=t[r];return e},tableEditMethodKeys=["insert","insertAt","remove","removeCheckboxRow","removeRadioRow","removeCurrentRow","getRecordset","getInsertRecords","getRemoveRecords","getUpdateRecords","getActiveRecord","getSelectedCell","clearActived","clearSelected","isActiveByRow","setActiveRow","setActiveCell","setSelectCell"],editHook={setupTable:function(g){function v(e,t){var r=t.model;t.editRender&&(r.value=(0,_util.getCellValue)(e,t),r.update=!1)}function n(e,t){var r=t.model;t.editRender&&r.update&&((0,_util.setCellValue)(e,t,r.value),r.update=!1,r.value=null)}function r(){var e=o.value;!e||(e=e.querySelector(".col--selected"))&&(0,_dom.removeClass)(e,"col--selected")}var p=g.props,w=g.reactData,m=g.internalData,o=g.getRefMaps().refElem,e=g.getComputeMaps(),s=e.computeMouseOpts,h=e.computeEditOpts,R=e.computeCheckboxOpts,C=e.computeSYOpts,a=e.computeTreeOpts,x={},_={};function u(){var e=w.editStore,t=w.tableColumn,r=h.value,e=e.actived,l=e.row,e=e.column;(l||e)&&("row"===r.mode?t.forEach(function(e){return n(l,e)}):n(l,e))}return x={insert:function(e){return x.insertAt(e,null)},insertAt:function(e,t){var r=p.treeConfig,l=w.mergeList,n=w.editStore,o=w.scrollYLoad,a=m.afterFullData,u=m.tableFullData,c=C.value,i=(e=!_xeUtils.default.isArray(e)?[e]:e).map(function(e){return g.defineField(Object.assign({},e))});if(t)if(-1===t)a.push.apply(a,i),u.push.apply(u,i),l.forEach(function(e){var t=e.row,r=e.rowspan;t+r>a.length&&(e.rowspan=r+i.length)});else{if(r)throw new Error((0,_utils.getLog)("vxe.error.noTree",["insert"]));var d=g.findRowIndexOf(a,t);if(-1===d)throw new Error((0,_utils.errLog)("vxe.error.unableInsert"));a.splice.apply(a,__spreadArray([d,0],i)),u.splice.apply(u,__spreadArray([g.findRowIndexOf(u,t),0],i)),l.forEach(function(e){var t=e.row,r=e.rowspan;d<t?e.row=t+i.length:d<t+r&&(e.rowspan=r+i.length)})}else a.unshift.apply(a,i),u.unshift.apply(u,i),l.forEach(function(e){var t=e.row;0<t&&(e.row=t+i.length)});return(n=n.insertList).unshift.apply(n,i),w.scrollYLoad=!r&&-1<c.gt&&c.gt<u.length,g.updateFooter(),g.cacheRowMap(),g.handleTableData(),g.updateAfterDataIndex(),g.checkSelectionStatus(),o&&g.updateScrollYSpace(),(0,_vue.nextTick)().then(function(){return g.updateCellAreas(),g.recalculate()}).then(function(){return{row:i.length?i[i.length-1]:null,rows:i}})},remove:function(e){var t=p.treeConfig,r=w.mergeList,l=w.editStore,n=w.selection,o=w.scrollYLoad,a=m.afterFullData,u=m.tableFullData,c=R.value,i=C.value,d=l.actived,s=l.removeList,f=l.insertList,c=c.checkField,v=[];return e?_xeUtils.default.isArray(e)||(e=[e]):e=u,e.forEach(function(e){g.isInsertByRow(e)||s.push(e)}),c||e.forEach(function(e){e=g.findRowIndexOf(n,e);-1<e&&n.splice(e,1)}),u===e?(e=v=u.slice(0),m.tableFullData=[],m.afterFullData=[],g.clearMergeCells()):e.forEach(function(e){var t=g.findRowIndexOf(u,e);-1<t&&(t=u.splice(t,1),v.push(t[0]));var l=g.findRowIndexOf(a,e);-1<l&&(r.forEach(function(e){var t=e.row,r=e.rowspan;l<t?e.row=t-1:l<t+r&&(e.rowspan=r-1)}),a.splice(l,1))}),d.row&&-1<g.findRowIndexOf(e,d.row)&&x.clearActived(),e.forEach(function(e){e=g.findRowIndexOf(f,e);-1<e&&f.splice(e,1)}),w.scrollYLoad=!t&&-1<i.gt&&i.gt<u.length,g.updateFooter(),g.cacheRowMap(),g.handleTableData(),g.updateAfterDataIndex(),g.checkSelectionStatus(),o&&g.updateScrollYSpace(),(0,_vue.nextTick)().then(function(){return g.updateCellAreas(),g.recalculate()}).then(function(){return{row:v.length?v[v.length-1]:null,rows:v}})},removeCheckboxRow:function(){return x.remove(g.getCheckboxRecords()).then(function(e){return g.clearCheckboxRow(),e})},removeRadioRow:function(){var e=g.getRadioRecord();return x.remove(e||[]).then(function(e){return g.clearRadioRow(),e})},removeCurrentRow:function(){var e=g.getCurrentRecord();return x.remove(e||[]).then(function(e){return g.clearCurrentRow(),e})},getRecordset:function(){return{insertRecords:x.getInsertRecords(),removeRecords:x.getRemoveRecords(),updateRecords:x.getUpdateRecords()}},getInsertRecords:function(){var e=w.editStore,t=m.tableFullData,r=e.insertList,l=[];return r.length&&t.forEach(function(e){-1<g.findRowIndexOf(r,e)&&l.push(e)}),l},getRemoveRecords:function(){return w.editStore.removeList},getUpdateRecords:function(){var e=p.keepSource,t=p.treeConfig,r=m.tableFullData,l=a.value;return e?(u(),t?_xeUtils.default.filterTree(r,function(e){return g.isUpdateByRow(e)},l):r.filter(function(e){return g.isUpdateByRow(e)})):[]},getActiveRecord:function(){var e=w.editStore,t=m.afterFullData,r=o.value,l=e.actived,e=l.args,l=l.row;return e&&-1<g.findRowIndexOf(t,l)&&r.querySelectorAll(".vxe-body--column.col--actived").length?Object.assign({},e):null},getSelectedCell:function(){var e=w.editStore.selected,t=e.args,e=e.column;return t&&e?Object.assign({},t):null},clearActived:function(e){var t=w.editStore.actived,r=t.row,l=t.column;return(r||l)&&(u(),t.args=null,t.row=null,t.column=null,g.updateFooter(),g.dispatchEvent("edit-closed",{row:r,rowIndex:g.getRowIndex(r),$rowIndex:g.getVMRowIndex(r),column:l,columnIndex:g.getColumnIndex(l),$columnIndex:g.getVMColumnIndex(l)},e||null)),(g.clearValidate?g.clearValidate():(0,_vue.nextTick)()).then(function(){return g.recalculate()})},clearSelected:function(){var e=w.editStore.selected;return e.row=null,e.column=null,r(),(0,_vue.nextTick)()},isActiveByRow:function(e){return w.editStore.actived.row===e},setActiveRow:function(e){var t=m.visibleColumn;return g.setActiveCell(e,_xeUtils.default.find(t,function(e){return(0,_utils.isEnableConf)(e.editRender)}))},setActiveCell:function(t,e){var r=p.editConfig,l=_xeUtils.default.isString(e)?g.getColumnByField(e):e;return t&&l&&(0,_utils.isEnableConf)(r)&&(0,_utils.isEnableConf)(l.editRender)?g.scrollToRow(t,l).then(function(){var e=g.getCell(t,l);return e&&(_.handleActived({row:t,rowIndex:g.getRowIndex(t),column:l,columnIndex:g.getColumnIndex(l),cell:e,$table:g}),m._lastCallTime=Date.now()),(0,_vue.nextTick)()}):(0,_vue.nextTick)()},setSelectCell:function(e,t){var r=w.tableData,l=m.visibleColumn,n=h.value,t=_xeUtils.default.isString(t)?g.getColumnByField(t):t;return e&&t&&"manual"!==n.trigger&&(-1<(n=g.findRowIndexOf(r,e))&&t&&(r=g.getCell(e,t),r={row:e,rowIndex:n,column:t,columnIndex:l.indexOf(t),cell:r},g.handleSelected(r,{}))),(0,_vue.nextTick)()}},_={handleActived:function(e,t){var r,l=p.editConfig,n=p.mouseConfig,o=w.editStore,a=w.tableColumn,u=h.value,c=u.mode,i=u.activeMethod,d=o.actived,s=e.row,f=e.column,u=f.editRender,o=e.cell=e.cell||g.getCell(s,f);return(0,_utils.isEnableConf)(l)&&(0,_utils.isEnableConf)(u)&&o&&(d.row!==s||"cell"===c&&d.column!==f?(r="edit-disabled",i&&!i(e)||(n&&(x.clearSelected(),g.clearCellAreas&&(g.clearCellAreas(),g.clearCopyCellArea())),g.closeTooltip(),x.clearActived(t),r="edit-actived",f.renderHeight=o.offsetHeight,d.args=e,d.row=s,d.column=f,"row"===c?a.forEach(function(e){return v(s,e)}):v(s,f),(0,_vue.nextTick)(function(){_.handleFocus(e,t)})),g.dispatchEvent(r,{row:s,rowIndex:g.getRowIndex(s),$rowIndex:g.getVMRowIndex(s),column:f,columnIndex:g.getColumnIndex(f),$columnIndex:g.getVMColumnIndex(f)},t)):(r=d.column,n&&(x.clearSelected(),g.clearCellAreas&&(g.clearCellAreas(),g.clearCopyCellArea())),r!==f&&((n=r.model).update&&(0,_util.setCellValue)(s,r,n.value),g.clearValidate&&g.clearValidate()),f.renderHeight=o.offsetHeight,d.args=e,d.column=f,setTimeout(function(){_.handleFocus(e,t)})),g.focus()),(0,_vue.nextTick)()},handleFocus:function(e){var t,r,l=e.row,n=e.column,o=e.cell,a=n.editRender;(0,_utils.isEnableConf)(a)&&(t=_vXETable.renderer.get(a.name),r=a.autofocus,e=a.autoselect,a=void 0,(a=!(a=r?o.querySelector(r):a)&&t&&t.autofocus?o.querySelector(t.autofocus):a)?(a.focus(),e?a.select():_dom.browse.msie&&((a=a.createTextRange()).collapse(!1),a.select())):g.scrollToRow(l,n))},handleSelected:function(e,t){var r=p.mouseConfig,l=w.editStore,n=s.value,o=h.value,a=l.actived,u=l.selected,c=e.row,i=e.column,d=r&&n.selected;return!d||u.row===c&&u.column===i||(a.row!==c||"cell"===o.mode&&a.column!==i)&&(x.clearActived(t),x.clearSelected(),g.clearCellAreas&&(g.clearCellAreas(),g.clearCopyCellArea()),u.args=e,u.row=c,u.column=i,d&&_.addCellSelectedClass(),g.focus()),(0,_vue.nextTick)()},addCellSelectedClass:function(){var e=w.editStore.selected,t=e.row,e=e.column;r(),t&&e&&((e=g.getCell(t,e))&&(0,_dom.addClass)(e,"col--selected"))}},__assign(__assign({},x),_)},setupGrid:function(e){return e.extendTableMethods(tableEditMethodKeys)}},_default=editHook;exports.default=_default;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_vXETable=require("../../v-x-e-table"),_utils=require("../../tools/utils"),_util=require("../../table/src/util"),_dom=require("../../tools/dom");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var __assign=function(){return(__assign=Object.assign||function(e){for(var t,r=1,l=arguments.length;r<l;r++)for(var n in t=arguments[r])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e}).apply(this,arguments)},__spreadArray=function(e,t){for(var r=0,l=t.length,n=e.length;r<l;r++,n++)e[n]=t[r];return e},tableEditMethodKeys=["insert","insertAt","remove","removeCheckboxRow","removeRadioRow","removeCurrentRow","getRecordset","getInsertRecords","getRemoveRecords","getUpdateRecords","getActiveRecord","getSelectedCell","clearActived","clearSelected","isActiveByRow","setActiveRow","setActiveCell","setSelectCell"],editHook={setupTable:function(R){function v(e,t){var r=t.model;t.editRender&&(r.value=(0,_util.getCellValue)(e,t),r.update=!1)}function n(e,t){var r=t.model;t.editRender&&r.update&&((0,_util.setCellValue)(e,t,r.value),r.update=!1,r.value=null)}function r(){var e=o.value;!e||(e=e.querySelector(".col--selected"))&&(0,_dom.removeClass)(e,"col--selected")}var _=R.props,C=R.reactData,I=R.internalData,o=R.getRefMaps().refElem,e=R.getComputeMaps(),s=e.computeMouseOpts,p=e.computeEditOpts,m=e.computeCheckboxOpts,b=e.computeSYOpts,S=e.computeTreeOpts,h={},w={};function a(){var e=C.editStore,t=C.tableColumn,r=p.value,e=e.actived,l=e.row,e=e.column;(l||e)&&("row"===r.mode?t.forEach(function(e){return n(l,e)}):n(l,e))}function A(e,t){var a=I.treeFullData,i=I.afterFullData,u=I.fullDataRowIdData,c=I.fullAllDataRowIdData,d=S.value,s=t?"push":"unshift";e.forEach(function(e){var t,r,l=e[d.parentField],n=(0,_util.getRowid)(R,e),o=l?_xeUtils.default.findTree(a,function(e){return l===e[d.rowField]},d):null;e=o?(t=o.item,o=(r=c[(0,_util.getRowid)(R,t)])?r.level:0,r=t[d.children],(r=!_xeUtils.default.isArray(r)?t[d.children]=[]:r)[s](e),{row:e,rowid:n,index:-1,_index:-1,$index:-1,items:r,parent:parent,level:o+1}):("development"===process.env.NODE_ENV&&l&&(0,_utils.warnLog)("vxe.error.unableInsert"),i[s](e),a[s](e),{row:e,rowid:n,index:-1,_index:-1,$index:-1,items:a,parent:null,level:0}),u[n]=e,c[n]=e}),R.updateVirtualTreeData()}return h={insert:function(e){return h.insertAt(e,null)},insertAt:function(e,t){var r=_.treeConfig,l=C.mergeList,n=C.editStore,o=C.scrollYLoad,a=I.treeFullData,i=I.afterFullData,u=I.tableFullData,c=I.fullDataRowIdData,d=I.fullAllDataRowIdData,s=b.value,f=S.value,v=f.transform,p=(e=!_xeUtils.default.isArray(e)?[e]:e).map(function(e){return R.defineField(Object.assign({},e))});if(t)if(-1===t)r&&v?A(p,!0):(i.push.apply(i,p),u.push.apply(u,p),l.forEach(function(e){var t=e.row,r=e.rowspan;t+r>i.length&&(e.rowspan=r+p.length)}));else if(r&&v){var w,g,m,h=_xeUtils.default.findTree(a,function(e){return t[f.rowField]===e[f.rowField]},f);h?(w=h.parent,g=h.items,a=d[(0,_util.getRowid)(R,w)],m=a?a.level:0,p.forEach(function(e,t){var r=(0,_util.getRowid)(R,e);"development"===process.env.NODE_ENV&&e[f.parentField]&&w&&e[f.parentField]!==w[f.rowField]&&(0,_utils.errLog)("vxe.error.errProp",[f.parentField+"="+e[f.parentField],f.parentField+"="+w[f.rowField]]),w&&(e[f.parentField]=w[f.rowField]),g.splice(h.index+t,0,e);e={row:e,rowid:r,index:-1,_index:-1,$index:-1,items:g,parent:w,level:m+1};c[r]=e,d[r]=e}),R.updateVirtualTreeData()):("development"===process.env.NODE_ENV&&(0,_utils.warnLog)("vxe.error.unableInsert"),A(p,!0))}else{if(r)throw new Error((0,_utils.getLog)("vxe.error.noTree",["insert"]));var x=R.findRowIndexOf(i,t);if(-1===x)throw new Error((0,_utils.errLog)("vxe.error.unableInsert"));i.splice.apply(i,__spreadArray([x,0],p)),u.splice.apply(u,__spreadArray([R.findRowIndexOf(u,t),0],p)),l.forEach(function(e){var t=e.row,r=e.rowspan;x<t?e.row=t+p.length:x<t+r&&(e.rowspan=r+p.length)})}else r&&v?A(p,!1):(i.unshift.apply(i,p),u.unshift.apply(u,p),l.forEach(function(e){var t=e.row;0<t&&(e.row=t+p.length)}));return(n=n.insertList).unshift.apply(n,p),C.scrollYLoad=!r&&-1<s.gt&&s.gt<u.length,R.updateFooter(),R.cacheRowMap(),R.handleTableData(v),R.updateAfterDataIndex(),R.checkSelectionStatus(),o&&R.updateScrollYSpace(),(0,_vue.nextTick)().then(function(){return R.updateCellAreas(),R.recalculate()}).then(function(){return{row:p.length?p[p.length-1]:null,rows:p}})},remove:function(e){var t=_.treeConfig,r=C.mergeList,l=C.editStore,n=C.selection,o=C.scrollYLoad,a=I.treeFullData,i=I.afterFullData,u=I.tableFullData,c=m.value,d=b.value,s=S.value,f=s.transform,v=l.actived,p=l.removeList,w=l.insertList,c=c.checkField,g=[];return e?_xeUtils.default.isArray(e)||(e=[e]):e=u,e.forEach(function(e){R.isInsertByRow(e)||p.push(e)}),c||e.forEach(function(e){e=R.findRowIndexOf(n,e);-1<e&&n.splice(e,1)}),u===e?(e=g=u.slice(0),I.tableFullData=[],I.afterFullData=[],R.clearMergeCells()):t&&f?e.forEach(function(e){var t=(0,_util.getRowid)(R,e),r=_xeUtils.default.findTree(a,function(e){return t===(0,_util.getRowid)(R,e)},s);r&&(r=r.items.splice(r.index,1),g.push(r[0]));e=R.findRowIndexOf(i,e);-1<e&&i.splice(e,1),R.updateVirtualTreeData()}):e.forEach(function(e){var t=R.findRowIndexOf(u,e);-1<t&&(t=u.splice(t,1),g.push(t[0]));var l=R.findRowIndexOf(i,e);-1<l&&(r.forEach(function(e){var t=e.row,r=e.rowspan;l<t?e.row=t-1:l<t+r&&(e.rowspan=r-1)}),i.splice(l,1))}),v.row&&-1<R.findRowIndexOf(e,v.row)&&h.clearActived(),e.forEach(function(e){e=R.findRowIndexOf(w,e);-1<e&&w.splice(e,1)}),C.scrollYLoad=!t&&-1<d.gt&&d.gt<u.length,R.updateFooter(),R.cacheRowMap(),R.handleTableData(f),R.updateAfterDataIndex(),R.checkSelectionStatus(),o&&R.updateScrollYSpace(),(0,_vue.nextTick)().then(function(){return R.updateCellAreas(),R.recalculate()}).then(function(){return{row:g.length?g[g.length-1]:null,rows:g}})},removeCheckboxRow:function(){return h.remove(R.getCheckboxRecords()).then(function(e){return R.clearCheckboxRow(),e})},removeRadioRow:function(){var e=R.getRadioRecord();return h.remove(e||[]).then(function(e){return R.clearRadioRow(),e})},removeCurrentRow:function(){var e=R.getCurrentRecord();return h.remove(e||[]).then(function(e){return R.clearCurrentRow(),e})},getRecordset:function(){return{insertRecords:h.getInsertRecords(),removeRecords:h.getRemoveRecords(),updateRecords:h.getUpdateRecords()}},getInsertRecords:function(){var e=_.treeConfig,t=C.editStore,r=I.treeFullData,l=I.tableFullData,n=S.value,t=t.insertList,o=[];return t.length&&(e&&n.transform?t.forEach(function(e){var t=(0,_util.getRowid)(R,e);_xeUtils.default.findTree(r,function(e){return t===(0,_util.getRowid)(R,e)},n)&&o.push(e)}):t.forEach(function(e){-1<R.findRowIndexOf(l,e)&&o.push(e)})),o},getRemoveRecords:function(){return C.editStore.removeList},getUpdateRecords:function(){var e=_.keepSource,t=_.treeConfig,r=I.tableFullData,l=S.value;return e?(a(),t?_xeUtils.default.filterTree(r,function(e){return R.isUpdateByRow(e)},l):r.filter(function(e){return R.isUpdateByRow(e)})):[]},getActiveRecord:function(){var e=C.editStore,t=I.afterFullData,r=o.value,l=e.actived,e=l.args,l=l.row;return e&&-1<R.findRowIndexOf(t,l)&&r.querySelectorAll(".vxe-body--column.col--actived").length?Object.assign({},e):null},getSelectedCell:function(){var e=C.editStore.selected,t=e.args,e=e.column;return t&&e?Object.assign({},t):null},clearActived:function(e){var t=C.editStore.actived,r=t.row,l=t.column;return(r||l)&&(a(),t.args=null,t.row=null,t.column=null,R.updateFooter(),R.dispatchEvent("edit-closed",{row:r,rowIndex:R.getRowIndex(r),$rowIndex:R.getVMRowIndex(r),column:l,columnIndex:R.getColumnIndex(l),$columnIndex:R.getVMColumnIndex(l)},e||null)),(R.clearValidate?R.clearValidate():(0,_vue.nextTick)()).then(function(){return R.recalculate()})},clearSelected:function(){var e=C.editStore.selected;return e.row=null,e.column=null,r(),(0,_vue.nextTick)()},isActiveByRow:function(e){return C.editStore.actived.row===e},setActiveRow:function(e){var t=I.visibleColumn;return R.setActiveCell(e,_xeUtils.default.find(t,function(e){return(0,_utils.isEnableConf)(e.editRender)}))},setActiveCell:function(t,e){var r=_.editConfig,l=_xeUtils.default.isString(e)?R.getColumnByField(e):e;return t&&l&&(0,_utils.isEnableConf)(r)&&(0,_utils.isEnableConf)(l.editRender)?R.scrollToRow(t,l).then(function(){var e=R.getCell(t,l);return e&&(w.handleActived({row:t,rowIndex:R.getRowIndex(t),column:l,columnIndex:R.getColumnIndex(l),cell:e,$table:R}),I._lastCallTime=Date.now()),(0,_vue.nextTick)()}):(0,_vue.nextTick)()},setSelectCell:function(e,t){var r=C.tableData,l=I.visibleColumn,n=p.value,t=_xeUtils.default.isString(t)?R.getColumnByField(t):t;return e&&t&&"manual"!==n.trigger&&(-1<(n=R.findRowIndexOf(r,e))&&t&&(r=R.getCell(e,t),r={row:e,rowIndex:n,column:t,columnIndex:l.indexOf(t),cell:r},R.handleSelected(r,{}))),(0,_vue.nextTick)()}},w={handleActived:function(e,t){var r,l=_.editConfig,n=_.mouseConfig,o=C.editStore,a=C.tableColumn,i=p.value,u=i.mode,c=i.activeMethod,d=o.actived,s=e.row,f=e.column,i=f.editRender,o=e.cell=e.cell||R.getCell(s,f);return(0,_utils.isEnableConf)(l)&&(0,_utils.isEnableConf)(i)&&o&&(d.row!==s||"cell"===u&&d.column!==f?(r="edit-disabled",c&&!c(e)||(n&&(h.clearSelected(),R.clearCellAreas&&(R.clearCellAreas(),R.clearCopyCellArea())),R.closeTooltip(),h.clearActived(t),r="edit-actived",f.renderHeight=o.offsetHeight,d.args=e,d.row=s,d.column=f,"row"===u?a.forEach(function(e){return v(s,e)}):v(s,f),(0,_vue.nextTick)(function(){w.handleFocus(e,t)})),R.dispatchEvent(r,{row:s,rowIndex:R.getRowIndex(s),$rowIndex:R.getVMRowIndex(s),column:f,columnIndex:R.getColumnIndex(f),$columnIndex:R.getVMColumnIndex(f)},t)):(r=d.column,n&&(h.clearSelected(),R.clearCellAreas&&(R.clearCellAreas(),R.clearCopyCellArea())),r!==f&&((n=r.model).update&&(0,_util.setCellValue)(s,r,n.value),R.clearValidate&&R.clearValidate()),f.renderHeight=o.offsetHeight,d.args=e,d.column=f,setTimeout(function(){w.handleFocus(e,t)})),R.focus()),(0,_vue.nextTick)()},handleFocus:function(e){var t,r,l=e.row,n=e.column,o=e.cell,a=n.editRender;(0,_utils.isEnableConf)(a)&&(t=_vXETable.renderer.get(a.name),r=a.autofocus,e=a.autoselect,a=void 0,(a=!(a=r?o.querySelector(r):a)&&t&&t.autofocus?o.querySelector(t.autofocus):a)?(a.focus(),e?a.select():_dom.browse.msie&&((a=a.createTextRange()).collapse(!1),a.select())):R.scrollToRow(l,n))},handleSelected:function(e,t){var r=_.mouseConfig,l=C.editStore,n=s.value,o=p.value,a=l.actived,i=l.selected,u=e.row,c=e.column,d=r&&n.selected;return!d||i.row===u&&i.column===c||(a.row!==u||"cell"===o.mode&&a.column!==c)&&(h.clearActived(t),h.clearSelected(),R.clearCellAreas&&(R.clearCellAreas(),R.clearCopyCellArea()),i.args=e,i.row=u,i.column=c,d&&w.addCellSelectedClass(),R.focus()),(0,_vue.nextTick)()},addCellSelectedClass:function(){var e=C.editStore.selected,t=e.row,e=e.column;r(),t&&e&&((e=R.getCell(t,e))&&(0,_dom.addClass)(e,"col--selected"))}},__assign(__assign({},h),w)},setupGrid:function(e){return e.extendTableMethods(tableEditMethodKeys)}},_default=editHook;exports.default=_default;