vxe-table 4.12.0-beta.0 → 4.12.0-beta.2

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.
Files changed (69) hide show
  1. package/es/grid/src/grid.js +17 -34
  2. package/es/style.css +1 -1
  3. package/es/table/module/custom/panel.js +19 -21
  4. package/es/table/module/edit/hook.js +1 -1
  5. package/es/table/module/export/export-panel.js +17 -19
  6. package/es/table/module/export/hook.js +5 -11
  7. package/es/table/module/export/import-panel.js +11 -13
  8. package/es/table/module/keyboard/hook.js +2 -2
  9. package/es/table/module/validator/hook.js +1 -3
  10. package/es/table/render/index.js +2 -4
  11. package/es/table/src/body.js +2 -2
  12. package/es/table/src/columnInfo.js +26 -28
  13. package/es/table/src/table.js +123 -102
  14. package/es/toolbar/src/toolbar.js +16 -24
  15. package/es/ui/index.js +1 -1
  16. package/es/ui/src/log.js +1 -1
  17. package/lib/grid/src/grid.js +17 -36
  18. package/lib/grid/src/grid.min.js +1 -1
  19. package/lib/index.umd.js +263 -270
  20. package/lib/index.umd.min.js +1 -1
  21. package/lib/style.css +1 -1
  22. package/lib/table/module/custom/panel.js +21 -23
  23. package/lib/table/module/custom/panel.min.js +1 -1
  24. package/lib/table/module/edit/hook.js +1 -1
  25. package/lib/table/module/edit/hook.min.js +1 -1
  26. package/lib/table/module/export/export-panel.js +17 -19
  27. package/lib/table/module/export/export-panel.min.js +1 -1
  28. package/lib/table/module/export/hook.js +5 -11
  29. package/lib/table/module/export/hook.min.js +1 -1
  30. package/lib/table/module/export/import-panel.js +11 -13
  31. package/lib/table/module/export/import-panel.min.js +1 -1
  32. package/lib/table/module/keyboard/hook.js +2 -2
  33. package/lib/table/module/keyboard/hook.min.js +1 -1
  34. package/lib/table/module/validator/hook.js +1 -3
  35. package/lib/table/module/validator/hook.min.js +1 -1
  36. package/lib/table/render/index.js +2 -4
  37. package/lib/table/render/index.min.js +1 -1
  38. package/lib/table/src/body.js +2 -1
  39. package/lib/table/src/body.min.js +1 -1
  40. package/lib/table/src/columnInfo.js +30 -32
  41. package/lib/table/src/columnInfo.min.js +1 -1
  42. package/lib/table/src/table.js +132 -99
  43. package/lib/table/src/table.min.js +1 -1
  44. package/lib/toolbar/src/toolbar.js +16 -24
  45. package/lib/toolbar/src/toolbar.min.js +1 -1
  46. package/lib/ui/index.js +1 -1
  47. package/lib/ui/index.min.js +1 -1
  48. package/lib/ui/src/log.js +1 -1
  49. package/lib/ui/src/log.min.js +1 -1
  50. package/package.json +2 -2
  51. package/packages/grid/src/grid.ts +18 -34
  52. package/packages/table/module/custom/panel.ts +19 -21
  53. package/packages/table/module/edit/hook.ts +1 -1
  54. package/packages/table/module/export/export-panel.ts +17 -19
  55. package/packages/table/module/export/hook.ts +5 -11
  56. package/packages/table/module/export/import-panel.ts +11 -13
  57. package/packages/table/module/keyboard/hook.ts +2 -2
  58. package/packages/table/module/validator/hook.ts +1 -3
  59. package/packages/table/render/index.ts +2 -4
  60. package/packages/table/src/body.ts +2 -2
  61. package/packages/table/src/columnInfo.ts +26 -28
  62. package/packages/table/src/table.ts +122 -99
  63. package/packages/toolbar/src/toolbar.ts +16 -24
  64. /package/es/{iconfont.1740732137800.ttf → iconfont.1741080000843.ttf} +0 -0
  65. /package/es/{iconfont.1740732137800.woff → iconfont.1741080000843.woff} +0 -0
  66. /package/es/{iconfont.1740732137800.woff2 → iconfont.1741080000843.woff2} +0 -0
  67. /package/lib/{iconfont.1740732137800.ttf → iconfont.1741080000843.ttf} +0 -0
  68. /package/lib/{iconfont.1740732137800.woff → iconfont.1741080000843.woff} +0 -0
  69. /package/lib/{iconfont.1740732137800.woff2 → iconfont.1741080000843.woff2} +0 -0
@@ -493,25 +493,23 @@ export default defineComponent({
493
493
  })
494
494
  : createCommentVNode();
495
495
  };
496
- if (process.env.NODE_ENV === 'development') {
497
- nextTick(() => {
498
- if (!VxeUIModalComponent) {
499
- errLog('vxe.error.reqComp', ['vxe-modal']);
500
- }
501
- if (!VxeUIButtonComponent) {
502
- errLog('vxe.error.reqComp', ['vxe-button']);
503
- }
504
- if (!VxeUISelectComponent) {
505
- errLog('vxe.error.reqComp', ['vxe-select']);
506
- }
507
- if (!VxeUIInputComponent) {
508
- errLog('vxe.error.reqComp', ['vxe-input']);
509
- }
510
- if (!VxeUICheckboxComponent) {
511
- errLog('vxe.error.reqComp', ['vxe-checkbox']);
512
- }
513
- });
514
- }
496
+ nextTick(() => {
497
+ if (!VxeUIModalComponent) {
498
+ errLog('vxe.error.reqComp', ['vxe-modal']);
499
+ }
500
+ if (!VxeUIButtonComponent) {
501
+ errLog('vxe.error.reqComp', ['vxe-button']);
502
+ }
503
+ if (!VxeUISelectComponent) {
504
+ errLog('vxe.error.reqComp', ['vxe-select']);
505
+ }
506
+ if (!VxeUIInputComponent) {
507
+ errLog('vxe.error.reqComp', ['vxe-input']);
508
+ }
509
+ if (!VxeUICheckboxComponent) {
510
+ errLog('vxe.error.reqComp', ['vxe-checkbox']);
511
+ }
512
+ });
515
513
  return renderVN;
516
514
  }
517
515
  });
@@ -893,9 +893,7 @@ hooks.add('tableExportModule', {
893
893
  }
894
894
  else {
895
895
  // 不支持的浏览器
896
- if (process.env.NODE_ENV === 'development') {
897
- errLog('vxe.error.notExp');
898
- }
896
+ errLog('vxe.error.notExp');
899
897
  _importResolve({ status: true });
900
898
  }
901
899
  });
@@ -1512,10 +1510,8 @@ hooks.add('tableExportModule', {
1512
1510
  message: true,
1513
1511
  types: XEUtils.keys(exportOpts._typeMaps)
1514
1512
  }, exportOpts, options);
1515
- if (process.env.NODE_ENV === 'development') {
1516
- if (!props.exportConfig) {
1517
- errLog('vxe.error.reqProp', ['export-config']);
1518
- }
1513
+ if (!props.exportConfig) {
1514
+ errLog('vxe.error.reqProp', ['export-config']);
1519
1515
  }
1520
1516
  handleExportAndPrint(defOpts);
1521
1517
  },
@@ -1525,10 +1521,8 @@ hooks.add('tableExportModule', {
1525
1521
  const defOpts = Object.assign({
1526
1522
  message: true
1527
1523
  }, printOpts, options);
1528
- if (process.env.NODE_ENV === 'development') {
1529
- if (!props.printConfig) {
1530
- errLog('vxe.error.reqProp', ['print-config']);
1531
- }
1524
+ if (!props.printConfig) {
1525
+ errLog('vxe.error.reqProp', ['print-config']);
1532
1526
  }
1533
1527
  handleExportAndPrint(defOpts, true);
1534
1528
  }
@@ -218,19 +218,17 @@ export default defineComponent({
218
218
  })
219
219
  : createCommentVNode();
220
220
  };
221
- if (process.env.NODE_ENV === 'development') {
222
- nextTick(() => {
223
- if (!VxeUIModalComponent) {
224
- errLog('vxe.error.reqComp', ['vxe-modal']);
225
- }
226
- if (!VxeUIButtonComponent) {
227
- errLog('vxe.error.reqComp', ['vxe-button']);
228
- }
229
- if (!VxeUISelectComponent) {
230
- errLog('vxe.error.reqComp', ['vxe-select']);
231
- }
232
- });
233
- }
221
+ nextTick(() => {
222
+ if (!VxeUIModalComponent) {
223
+ errLog('vxe.error.reqComp', ['vxe-modal']);
224
+ }
225
+ if (!VxeUIButtonComponent) {
226
+ errLog('vxe.error.reqComp', ['vxe-button']);
227
+ }
228
+ if (!VxeUISelectComponent) {
229
+ errLog('vxe.error.reqComp', ['vxe-select']);
230
+ }
231
+ });
234
232
  return renderVN;
235
233
  }
236
234
  });
@@ -267,8 +267,8 @@ hooks.add('tableKeyboardModule', {
267
267
  const checkboxOpts = computeCheckboxOpts.value;
268
268
  const mouseOpts = computeMouseOpts.value;
269
269
  const editOpts = computeEditOpts.value;
270
- if (mouseConfig && mouseOpts.area && $xeTable.handleMousedownCellAreaEvent) {
271
- return $xeTable.handleMousedownCellAreaEvent(evnt, params);
270
+ if (mouseConfig && mouseOpts.area && $xeTable.handleCellAreaMousedownEvent) {
271
+ return $xeTable.handleCellAreaMousedownEvent(evnt, params);
272
272
  }
273
273
  else {
274
274
  if (checkboxConfig && checkboxOpts.range) {
@@ -392,9 +392,7 @@ hooks.add('tableValidatorModule', {
392
392
  }
393
393
  }
394
394
  else {
395
- if (process.env.NODE_ENV === 'development') {
396
- errLog('vxe.error.notValidators', [validator]);
397
- }
395
+ errLog('vxe.error.notValidators', [validator]);
398
396
  }
399
397
  }
400
398
  else {
@@ -152,10 +152,8 @@ function getComponentOns(renderOpts, params, eFns) {
152
152
  const ons = {};
153
153
  XEUtils.objectEach(events, (func, key) => {
154
154
  ons[getOnName(key)] = function (...args) {
155
- if (process.env.NODE_ENV === 'development') {
156
- if (!XEUtils.isFunction(func)) {
157
- errLog('vxe.error.errFunc', [func]);
158
- }
155
+ if (!XEUtils.isFunction(func)) {
156
+ errLog('vxe.error.errFunc', [func]);
159
157
  }
160
158
  func(params, ...args);
161
159
  };
@@ -79,7 +79,7 @@ export default defineComponent({
79
79
  */
80
80
  const renderTdColumn = (seq, rowid, fixedType, isOptimizeMode, rowLevel, row, rowIndex, $rowIndex, _rowIndex, column, $columnIndex, columns, items) => {
81
81
  const { fullAllDataRowIdData } = tableInternalData;
82
- const { columnKey, resizable: allResizable, border, height, cellClassName: allCellClassName, cellStyle, align: allAlign, spanMethod, mouseConfig, editConfig, editRules, tooltipConfig, padding: allPadding } = tableProps;
82
+ const { columnKey, resizable: allResizable, showOverflow: allShowOverflow, border, height, cellClassName: allCellClassName, cellStyle, align: allAlign, spanMethod, mouseConfig, editConfig, editRules, tooltipConfig, padding: allPadding } = tableProps;
83
83
  const { tableData, dragRow, overflowX, currentColumn, scrollXLoad, scrollYLoad, calcCellHeightFlag, resizeHeightFlag, mergeList, editStore, isAllOverflow, validErrorMaps } = tableReactData;
84
84
  const { afterFullData, scrollXStore, scrollYStore } = tableInternalData;
85
85
  const cellOpts = computeCellOpts.value;
@@ -114,7 +114,7 @@ export default defineComponent({
114
114
  const resizeHeight = resizeHeightFlag ? rowRest.resizeHeight : 0;
115
115
  let fixedHiddenColumn = fixedType ? column.fixed !== fixedType : column.fixed && overflowX;
116
116
  const isCellPadding = XEUtils.eqNull(padding) ? (allPadding === null ? cellOpts.padding : allPadding) : padding;
117
- const cellOverflow = XEUtils.eqNull(showOverflow) ? isAllOverflow : showOverflow;
117
+ const cellOverflow = XEUtils.eqNull(showOverflow) ? allShowOverflow : showOverflow;
118
118
  const showEllipsis = cellOverflow === 'ellipsis';
119
119
  const showTitle = cellOverflow === 'title';
120
120
  const showTooltip = cellOverflow === true || cellOverflow === 'tooltip';
@@ -11,37 +11,35 @@ export class ColumnInfo {
11
11
  const formatter = _vm.formatter;
12
12
  const visible = XEUtils.isBoolean(_vm.visible) ? _vm.visible : true;
13
13
  const { props: tableProps } = $xeTable;
14
- if (process.env.NODE_ENV === 'development') {
15
- const types = ['seq', 'checkbox', 'radio', 'expand', 'html'];
16
- if (_vm.type && types.indexOf(_vm.type) === -1) {
17
- warnLog('vxe.error.errProp', [`type=${_vm.type}`, types.join(', ')]);
18
- }
19
- if (XEUtils.isBoolean(_vm.cellRender) || (_vm.cellRender && !XEUtils.isObject(_vm.cellRender))) {
20
- warnLog('vxe.error.errProp', [`column.cell-render=${_vm.cellRender}`, 'column.cell-render={}']);
21
- }
22
- if (XEUtils.isBoolean(_vm.editRender) || (_vm.editRender && !XEUtils.isObject(_vm.editRender))) {
23
- warnLog('vxe.error.errProp', [`column.edit-render=${_vm.editRender}`, 'column.edit-render={}']);
14
+ const types = ['seq', 'checkbox', 'radio', 'expand', 'html'];
15
+ if (_vm.type && types.indexOf(_vm.type) === -1) {
16
+ warnLog('vxe.error.errProp', [`type=${_vm.type}`, types.join(', ')]);
17
+ }
18
+ if (XEUtils.isBoolean(_vm.cellRender) || (_vm.cellRender && !XEUtils.isObject(_vm.cellRender))) {
19
+ warnLog('vxe.error.errProp', [`column.cell-render=${_vm.cellRender}`, 'column.cell-render={}']);
20
+ }
21
+ if (XEUtils.isBoolean(_vm.editRender) || (_vm.editRender && !XEUtils.isObject(_vm.editRender))) {
22
+ warnLog('vxe.error.errProp', [`column.edit-render=${_vm.editRender}`, 'column.edit-render={}']);
23
+ }
24
+ if (_vm.type === 'expand') {
25
+ const { treeConfig } = tableProps;
26
+ const { computeTreeOpts } = $xeTable.getComputeMaps();
27
+ const treeOpts = computeTreeOpts.value;
28
+ if (treeConfig && (treeOpts.showLine || treeOpts.line)) {
29
+ errLog('vxe.error.errConflicts', ['tree-config.showLine', 'column.type=expand']);
24
30
  }
25
- if (_vm.type === 'expand') {
26
- const { treeConfig } = tableProps;
27
- const { computeTreeOpts } = $xeTable.getComputeMaps();
28
- const treeOpts = computeTreeOpts.value;
29
- if (treeConfig && (treeOpts.showLine || treeOpts.line)) {
30
- errLog('vxe.error.errConflicts', ['tree-config.showLine', 'column.type=expand']);
31
+ }
32
+ if (formatter) {
33
+ if (XEUtils.isString(formatter)) {
34
+ const gFormatOpts = formats.get(formatter) || XEUtils[formatter];
35
+ if (!gFormatOpts || !XEUtils.isFunction(gFormatOpts.tableCellFormatMethod || gFormatOpts.cellFormatMethod)) {
36
+ errLog('vxe.error.notFormats', [formatter]);
31
37
  }
32
38
  }
33
- if (formatter) {
34
- if (XEUtils.isString(formatter)) {
35
- const gFormatOpts = formats.get(formatter) || XEUtils[formatter];
36
- if (!gFormatOpts || !XEUtils.isFunction(gFormatOpts.tableCellFormatMethod || gFormatOpts.cellFormatMethod)) {
37
- errLog('vxe.error.notFormats', [formatter]);
38
- }
39
- }
40
- else if (XEUtils.isArray(formatter)) {
41
- const gFormatOpts = formats.get(formatter[0]) || XEUtils[formatter[0]];
42
- if (!gFormatOpts || !XEUtils.isFunction(gFormatOpts.tableCellFormatMethod || gFormatOpts.cellFormatMethod)) {
43
- errLog('vxe.error.notFormats', [formatter[0]]);
44
- }
39
+ else if (XEUtils.isArray(formatter)) {
40
+ const gFormatOpts = formats.get(formatter[0]) || XEUtils[formatter[0]];
41
+ if (!gFormatOpts || !XEUtils.isFunction(gFormatOpts.tableCellFormatMethod || gFormatOpts.cellFormatMethod)) {
42
+ errLog('vxe.error.notFormats', [formatter[0]]);
45
43
  }
46
44
  }
47
45
  }
@@ -1265,14 +1265,12 @@ export default defineComponent({
1265
1265
  if ((expandColumn && expandOpts.mode !== 'fixed') && mouseOpts.area) {
1266
1266
  errLog('vxe.error.errConflicts', ['mouse-config.area', 'column.type=expand']);
1267
1267
  }
1268
- if (process.env.NODE_ENV === 'development') {
1269
- if (htmlColumn) {
1270
- if (!columnOpts.useKey) {
1271
- errLog('vxe.error.reqProp', ['column-config.useKey & column.type=html']);
1272
- }
1273
- if (!rowOpts.useKey) {
1274
- errLog('vxe.error.reqProp', ['row-config.useKey & column.type=html']);
1275
- }
1268
+ if (htmlColumn) {
1269
+ if (!columnOpts.useKey) {
1270
+ errLog('vxe.error.reqProp', ['column-config.useKey & column.type=html']);
1271
+ }
1272
+ if (!rowOpts.useKey) {
1273
+ errLog('vxe.error.reqProp', ['row-config.useKey & column.type=html']);
1276
1274
  }
1277
1275
  }
1278
1276
  reactData.isGroup = isGroup;
@@ -2505,12 +2503,12 @@ export default defineComponent({
2505
2503
  rExpandLazyLoadedMaps[rowid] = row;
2506
2504
  reactData.rowExpandLazyLoadedMaps = rExpandLazyLoadedMaps;
2507
2505
  loadMethod({ $table: $xeTable, row, rowIndex: tableMethods.getRowIndex(row), $rowIndex: tableMethods.getVMRowIndex(row) }).then(() => {
2508
- const rExpandedMaps = Object.assign({}, reactData.rowExpandedMaps);
2506
+ const rowTempExpandedMaps = Object.assign({}, reactData.rowExpandedMaps);
2509
2507
  if (rowRest) {
2510
2508
  rowRest.expandLoaded = true;
2511
2509
  }
2512
- rExpandedMaps[rowid] = row;
2513
- reactData.rowExpandedMaps = rExpandedMaps;
2510
+ rowTempExpandedMaps[rowid] = row;
2511
+ reactData.rowExpandedMaps = rowTempExpandedMaps;
2514
2512
  }).catch(() => {
2515
2513
  if (rowRest) {
2516
2514
  rowRest.expandLoaded = false;
@@ -2657,28 +2655,26 @@ export default defineComponent({
2657
2655
  if (treeConfig) {
2658
2656
  if (transform) {
2659
2657
  // 树结构自动转换
2660
- if (process.env.NODE_ENV === 'development') {
2661
- if (!treeOpts.rowField) {
2662
- errLog('vxe.error.reqProp', ['tree-config.rowField']);
2663
- }
2664
- if (!treeOpts.parentField) {
2665
- errLog('vxe.error.reqProp', ['tree-config.parentField']);
2666
- }
2667
- if (!childrenField) {
2668
- errLog('vxe.error.reqProp', ['tree-config.childrenField']);
2669
- }
2670
- if (!treeOpts.mapChildrenField) {
2671
- errLog('vxe.error.reqProp', ['tree-config.mapChildrenField']);
2672
- }
2673
- if (childrenField === treeOpts.mapChildrenField) {
2674
- errLog('vxe.error.errConflicts', ['tree-config.childrenField', 'tree-config.mapChildrenField']);
2675
- }
2676
- // fullData.forEach(row => {
2677
- // if (row[treeOpts.children] && row[treeOpts.children].length) {
2678
- // warnLog('vxe.error.errConflicts', ['tree-config.transform', `row.${treeOpts.children}`])
2679
- // }
2680
- // })
2658
+ if (!treeOpts.rowField) {
2659
+ errLog('vxe.error.reqProp', ['tree-config.rowField']);
2660
+ }
2661
+ if (!treeOpts.parentField) {
2662
+ errLog('vxe.error.reqProp', ['tree-config.parentField']);
2663
+ }
2664
+ if (!childrenField) {
2665
+ errLog('vxe.error.reqProp', ['tree-config.childrenField']);
2666
+ }
2667
+ if (!treeOpts.mapChildrenField) {
2668
+ errLog('vxe.error.reqProp', ['tree-config.mapChildrenField']);
2681
2669
  }
2670
+ if (childrenField === treeOpts.mapChildrenField) {
2671
+ errLog('vxe.error.errConflicts', ['tree-config.childrenField', 'tree-config.mapChildrenField']);
2672
+ }
2673
+ // fullData.forEach(row => {
2674
+ // if (row[treeOpts.children] && row[treeOpts.children].length) {
2675
+ // warnLog('vxe.error.errConflicts', ['tree-config.transform', `row.${treeOpts.children}`])
2676
+ // }
2677
+ // })
2682
2678
  treeData = XEUtils.toArrayTree(fullData, {
2683
2679
  key: treeOpts.rowField,
2684
2680
  parentKey: treeOpts.parentField,
@@ -2743,16 +2739,14 @@ export default defineComponent({
2743
2739
  // }
2744
2740
  // }
2745
2741
  // }
2746
- if (process.env.NODE_ENV === 'development') {
2747
- if (!(props.height || props.maxHeight)) {
2748
- errLog('vxe.error.reqProp', ['table.height | table.max-height | table.scroll-y={enabled: false}']);
2749
- }
2750
- // if (!props.showOverflow) {
2751
- // warnLog('vxe.error.reqProp', ['table.show-overflow'])
2752
- // }
2753
- if (props.spanMethod) {
2754
- warnLog('vxe.error.scrollErrProp', ['table.span-method']);
2755
- }
2742
+ if (!(props.height || props.maxHeight)) {
2743
+ errLog('vxe.error.reqProp', ['table.height | table.max-height | table.scroll-y={enabled: false}']);
2744
+ }
2745
+ // if (!props.showOverflow) {
2746
+ // warnLog('vxe.error.reqProp', ['table.show-overflow'])
2747
+ // }
2748
+ if (props.spanMethod) {
2749
+ warnLog('vxe.error.scrollErrProp', ['table.span-method']);
2756
2750
  }
2757
2751
  }
2758
2752
  handleReserveStatus();
@@ -3737,23 +3731,6 @@ export default defineComponent({
3737
3731
  }
3738
3732
  return tableMethods.createData(records).then((rows) => isArr ? rows : rows[0]);
3739
3733
  },
3740
- // toOriginalRecords (rows: any[]) {
3741
- // const { treeConfig } = props
3742
- // const treeOpts = computeTreeOpts.value
3743
- // const { transform, mapChildrenField } = treeOpts
3744
- // const rowkey = getRowkey($xeTable)
3745
- // if (treeConfig) {
3746
- // if (transform) {
3747
- // return []
3748
- // }
3749
- // return []
3750
- // }
3751
- // return rows.map(item => {
3752
- // const obj = Object.assign({}, item)
3753
- // delete obj.rowkey
3754
- // return obj
3755
- // })
3756
- // },
3757
3734
  /**
3758
3735
  * 还原数据
3759
3736
  * 如果不传任何参数,则还原整个表格
@@ -3762,8 +3739,10 @@ export default defineComponent({
3762
3739
  * 如果还额外传了 field 则还原指定的单元格数据
3763
3740
  */
3764
3741
  revertData(rows, field) {
3765
- const { keepSource } = props;
3766
- const { tableSourceData, sourceDataRowIdData } = internalData;
3742
+ const { keepSource, treeConfig } = props;
3743
+ const { fullAllDataRowIdData, tableSourceData, sourceDataRowIdData, tableFullData, afterFullData } = internalData;
3744
+ const treeOpts = computeTreeOpts.value;
3745
+ const { transform } = treeOpts;
3767
3746
  if (!keepSource) {
3768
3747
  if (process.env.NODE_ENV === 'development') {
3769
3748
  warnLog('vxe.error.reqProp', ['keep-source']);
@@ -3779,9 +3758,10 @@ export default defineComponent({
3779
3758
  else {
3780
3759
  targetRows = XEUtils.toArray($xeTable.getUpdateRecords());
3781
3760
  }
3761
+ let reDelFlag = false;
3782
3762
  if (targetRows.length) {
3783
3763
  targetRows.forEach((row) => {
3784
- if (!tableMethods.isInsertByRow(row)) {
3764
+ if (!$xeTable.isInsertByRow(row)) {
3785
3765
  const rowid = getRowid($xeTable, row);
3786
3766
  const oRow = sourceDataRowIdData[rowid];
3787
3767
  if (oRow && row) {
@@ -3791,14 +3771,38 @@ export default defineComponent({
3791
3771
  else {
3792
3772
  XEUtils.destructuring(row, XEUtils.clone(oRow, true));
3793
3773
  }
3774
+ if ($xeTable.isRemoveByRow(row)) {
3775
+ const rowRest = fullAllDataRowIdData[rowid];
3776
+ if (rowRest) {
3777
+ const reRow = rowRest.row;
3778
+ tableFullData.unshift(reRow);
3779
+ afterFullData.unshift(reRow);
3780
+ reDelFlag = true;
3781
+ }
3782
+ }
3794
3783
  }
3795
3784
  }
3796
3785
  });
3797
3786
  }
3798
3787
  if (rows) {
3799
- return nextTick();
3788
+ if (reDelFlag) {
3789
+ $xeTable.updateFooter();
3790
+ $xeTable.cacheRowMap(false);
3791
+ $xeTable.handleTableData(treeConfig && transform);
3792
+ if (!(treeConfig && transform)) {
3793
+ $xeTable.updateAfterDataIndex();
3794
+ }
3795
+ $xeTable.checkSelectionStatus();
3796
+ if (reactData.scrollYLoad) {
3797
+ $xeTable.updateScrollYSpace();
3798
+ }
3799
+ }
3800
+ return nextTick().then(() => {
3801
+ $xeTable.updateCellAreas();
3802
+ return $xeTable.recalculate();
3803
+ });
3800
3804
  }
3801
- return tableMethods.reloadData(tableSourceData);
3805
+ return $xeTable.reloadData(tableSourceData);
3802
3806
  },
3803
3807
  /**
3804
3808
  * 清空单元格内容
@@ -3918,6 +3922,11 @@ export default defineComponent({
3918
3922
  const rowid = getRowid($xeTable, row);
3919
3923
  return !!editStore.insertMaps[rowid];
3920
3924
  },
3925
+ isRemoveByRow(row) {
3926
+ const { editStore } = reactData;
3927
+ const rowid = getRowid($xeTable, row);
3928
+ return !!editStore.removeMaps[rowid];
3929
+ },
3921
3930
  /**
3922
3931
  * 删除所有新增的临时数据
3923
3932
  * @returns
@@ -6727,14 +6736,15 @@ export default defineComponent({
6727
6736
  */
6728
6737
  cacheRowMap() {
6729
6738
  const { treeConfig } = props;
6730
- const treeOpts = computeTreeOpts.value;
6739
+ const { treeExpandedMaps } = reactData;
6731
6740
  const { fullAllDataRowIdData, tableFullData, tableFullTreeData } = internalData;
6741
+ const treeOpts = computeTreeOpts.value;
6732
6742
  const childrenField = treeOpts.children || treeOpts.childrenField;
6733
6743
  const hasChildField = treeOpts.hasChild || treeOpts.hasChildField;
6734
6744
  const rowkey = getRowkey($xeTable);
6735
- const isLazy = treeConfig && treeOpts.lazy;
6736
- const fullAllDataRowIdMaps = {};
6745
+ const fullAllDataRowIdMaps = Object.assign({}, fullAllDataRowIdData); // 存在已删除数据
6737
6746
  const fullDataRowIdMaps = {};
6747
+ const treeTempExpandedMaps = Object.assign({}, treeExpandedMaps);
6738
6748
  const handleRow = (row, index, items, path, parentRow, nodes) => {
6739
6749
  let rowid = getRowid($xeTable, row);
6740
6750
  const seq = treeConfig && path ? toTreePathSeq(path) : index + 1;
@@ -6743,13 +6753,23 @@ export default defineComponent({
6743
6753
  rowid = getRowUniqueId();
6744
6754
  XEUtils.set(row, rowkey, rowid);
6745
6755
  }
6746
- if (isLazy && row[hasChildField] && XEUtils.isUndefined(row[childrenField])) {
6747
- row[childrenField] = null;
6756
+ if (treeConfig && treeOpts.lazy) {
6757
+ const treeExpRest = treeExpandedMaps[rowid];
6758
+ if (row[hasChildField] && XEUtils.isUndefined(row[childrenField])) {
6759
+ row[childrenField] = null;
6760
+ }
6761
+ if (treeExpRest) {
6762
+ if (!row[childrenField] || !row[childrenField].length) {
6763
+ delete treeTempExpandedMaps[rowid];
6764
+ }
6765
+ }
6748
6766
  }
6749
6767
  let rowRest = fullAllDataRowIdData[rowid];
6750
6768
  if (!rowRest) {
6751
6769
  rowRest = { row, rowid, seq, index: -1, _index: -1, $index: -1, treeIndex: index, items, parent: parentRow, level, height: 0, resizeHeight: 0, oTop: 0, expandHeight: 0 };
6752
6770
  }
6771
+ rowRest.treeLoaded = false;
6772
+ rowRest.expandLoaded = false;
6753
6773
  rowRest.row = row;
6754
6774
  rowRest.items = items;
6755
6775
  rowRest.parent = parentRow;
@@ -6758,14 +6778,15 @@ export default defineComponent({
6758
6778
  fullDataRowIdMaps[rowid] = rowRest;
6759
6779
  fullAllDataRowIdMaps[rowid] = rowRest;
6760
6780
  };
6761
- internalData.fullDataRowIdData = fullDataRowIdMaps;
6762
- internalData.fullAllDataRowIdData = fullAllDataRowIdMaps;
6763
6781
  if (treeConfig) {
6764
6782
  XEUtils.eachTree(tableFullTreeData, handleRow, { children: childrenField });
6765
6783
  }
6766
6784
  else {
6767
6785
  tableFullData.forEach(handleRow);
6768
6786
  }
6787
+ internalData.fullDataRowIdData = fullDataRowIdMaps;
6788
+ internalData.fullAllDataRowIdData = fullAllDataRowIdMaps;
6789
+ reactData.treeExpandedMaps = treeTempExpandedMaps;
6769
6790
  },
6770
6791
  cacheSourceMap(fullData) {
6771
6792
  const { treeConfig } = props;
@@ -7355,8 +7376,8 @@ export default defineComponent({
7355
7376
  const { treeConfig } = props;
7356
7377
  const { selectCheckboxMaps, treeIndeterminateMaps } = reactData;
7357
7378
  const checkboxOpts = computeCheckboxOpts.value;
7358
- const { checkField, checkMethod } = checkboxOpts;
7359
- const { afterFullData, afterTreeFullData } = internalData;
7379
+ const { checkField, checkMethod, showReserveStatus } = checkboxOpts;
7380
+ const { afterFullData, afterTreeFullData, checkboxReserveRowMap } = internalData;
7360
7381
  let sLen = 0; // 已选
7361
7382
  let hLen = 0; // 半选
7362
7383
  let vLen = 0; // 有效行
@@ -7395,7 +7416,11 @@ export default defineComponent({
7395
7416
  vLen++;
7396
7417
  });
7397
7418
  const isSelected = rootList.length > 0 ? (vLen > 0 ? (sLen >= vLen) : (sLen >= rootList.length)) : false;
7398
- const halfSelect = !isSelected && (sLen >= 1 || hLen >= 1);
7419
+ let halfSelect = !isSelected && (sLen >= 1 || hLen >= 1);
7420
+ // 如果复选框启用保留记录,当保留数据存在时显示半选
7421
+ if (!isSelected && !halfSelect && showReserveStatus) {
7422
+ halfSelect = !XEUtils.isEmpty(checkboxReserveRowMap);
7423
+ }
7399
7424
  reactData.isAllSelected = isSelected;
7400
7425
  reactData.isIndeterminate = halfSelect;
7401
7426
  },
@@ -9331,18 +9356,16 @@ export default defineComponent({
9331
9356
  }
9332
9357
  };
9333
9358
  // 检测对应模块是否安装
9334
- if (process.env.NODE_ENV === 'development') {
9335
- 'openExport,openPrint,exportData,openImport,importData,saveFile,readFile,importByFile,print'.split(',').forEach(name => {
9336
- $xeTable[name] = function () {
9337
- errLog('vxe.error.reqModule', ['VxeTableExportModule']);
9338
- };
9339
- });
9340
- 'clearValidate,fullValidate,validate'.split(',').forEach(name => {
9341
- $xeTable[name] = function () {
9342
- errLog('vxe.error.reqModule', ['VxeTableValidatorModule']);
9343
- };
9344
- });
9345
- }
9359
+ 'openExport,openPrint,exportData,openImport,importData,saveFile,readFile,importByFile,print'.split(',').forEach(name => {
9360
+ $xeTable[name] = function () {
9361
+ errLog('vxe.error.reqModule', ['VxeTableExportModule']);
9362
+ };
9363
+ });
9364
+ 'clearValidate,fullValidate,validate'.split(',').forEach(name => {
9365
+ $xeTable[name] = function () {
9366
+ errLog('vxe.error.reqModule', ['VxeTableValidatorModule']);
9367
+ };
9368
+ });
9346
9369
  Object.assign($xeTable, tableMethods, tablePrivateMethods);
9347
9370
  /**
9348
9371
  * 渲染浮固定列
@@ -10171,7 +10194,7 @@ export default defineComponent({
10171
10194
  if (rowOpts.height && !props.showOverflow) {
10172
10195
  warnLog('vxe.error.notProp', ['table.show-overflow']);
10173
10196
  }
10174
- if (!$xeTable.handleMousedownCellAreaEvent) {
10197
+ if (!$xeTable.handleCellAreaMousedownEvent) {
10175
10198
  if (props.areaConfig) {
10176
10199
  warnLog('vxe.error.notProp', ['area-config']);
10177
10200
  }
@@ -10303,23 +10326,21 @@ export default defineComponent({
10303
10326
  globalEvents.off($xeTable, 'contextmenu');
10304
10327
  tablePrivateMethods.preventEvent(null, 'unmounted', { $table: $xeTable });
10305
10328
  });
10306
- if (process.env.NODE_ENV === 'development') {
10307
- nextTick(() => {
10308
- if (props.loading) {
10309
- if (!VxeUILoadingComponent && !slots.loading) {
10310
- errLog('vxe.error.reqComp', ['vxe-loading']);
10311
- }
10329
+ nextTick(() => {
10330
+ if (props.loading) {
10331
+ if (!VxeUILoadingComponent && !slots.loading) {
10332
+ errLog('vxe.error.reqComp', ['vxe-loading']);
10312
10333
  }
10313
- if ((props.showOverflow === true || props.showOverflow === 'tooltip') ||
10314
- (props.showHeaderOverflow === true || props.showHeaderOverflow === 'tooltip') ||
10315
- (props.showFooterOverflow === true || props.showFooterOverflow === 'tooltip') ||
10316
- props.tooltipConfig || props.editRules) {
10317
- if (!VxeUITooltipComponent) {
10318
- errLog('vxe.error.reqComp', ['vxe-tooltip']);
10319
- }
10334
+ }
10335
+ if ((props.showOverflow === true || props.showOverflow === 'tooltip') ||
10336
+ (props.showHeaderOverflow === true || props.showHeaderOverflow === 'tooltip') ||
10337
+ (props.showFooterOverflow === true || props.showFooterOverflow === 'tooltip') ||
10338
+ props.tooltipConfig || props.editRules) {
10339
+ if (!VxeUITooltipComponent) {
10340
+ errLog('vxe.error.reqComp', ['vxe-tooltip']);
10320
10341
  }
10321
- });
10322
- }
10342
+ }
10343
+ });
10323
10344
  provide('$xeColgroup', null);
10324
10345
  provide('$xeTable', $xeTable);
10325
10346
  $xeTable.renderVN = renderVN;