vxe-table 4.11.16 → 4.11.17

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 (61) hide show
  1. package/es/grid/src/grid.js +15 -29
  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 +3 -5
  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/validator/hook.js +1 -3
  9. package/es/table/render/index.js +2 -4
  10. package/es/table/src/columnInfo.js +26 -28
  11. package/es/table/src/table.js +112 -78
  12. package/es/toolbar/src/toolbar.js +16 -24
  13. package/es/ui/index.js +1 -1
  14. package/es/ui/src/log.js +1 -1
  15. package/lib/grid/src/grid.js +15 -29
  16. package/lib/grid/src/grid.min.js +1 -1
  17. package/lib/index.umd.js +246 -240
  18. package/lib/index.umd.min.js +1 -1
  19. package/lib/style.css +1 -1
  20. package/lib/table/module/custom/panel.js +21 -23
  21. package/lib/table/module/custom/panel.min.js +1 -1
  22. package/lib/table/module/edit/hook.js +3 -5
  23. package/lib/table/module/edit/hook.min.js +1 -1
  24. package/lib/table/module/export/export-panel.js +17 -19
  25. package/lib/table/module/export/export-panel.min.js +1 -1
  26. package/lib/table/module/export/hook.js +5 -11
  27. package/lib/table/module/export/hook.min.js +1 -1
  28. package/lib/table/module/export/import-panel.js +11 -13
  29. package/lib/table/module/export/import-panel.min.js +1 -1
  30. package/lib/table/module/validator/hook.js +1 -3
  31. package/lib/table/module/validator/hook.min.js +1 -1
  32. package/lib/table/render/index.js +2 -4
  33. package/lib/table/render/index.min.js +1 -1
  34. package/lib/table/src/columnInfo.js +30 -32
  35. package/lib/table/src/columnInfo.min.js +1 -1
  36. package/lib/table/src/table.js +119 -75
  37. package/lib/table/src/table.min.js +1 -1
  38. package/lib/toolbar/src/toolbar.js +16 -24
  39. package/lib/toolbar/src/toolbar.min.js +1 -1
  40. package/lib/ui/index.js +1 -1
  41. package/lib/ui/index.min.js +1 -1
  42. package/lib/ui/src/log.js +1 -1
  43. package/lib/ui/src/log.min.js +1 -1
  44. package/package.json +2 -2
  45. package/packages/grid/src/grid.ts +16 -29
  46. package/packages/table/module/custom/panel.ts +19 -21
  47. package/packages/table/module/edit/hook.ts +3 -5
  48. package/packages/table/module/export/export-panel.ts +17 -19
  49. package/packages/table/module/export/hook.ts +5 -11
  50. package/packages/table/module/export/import-panel.ts +11 -13
  51. package/packages/table/module/validator/hook.ts +1 -3
  52. package/packages/table/render/index.ts +2 -4
  53. package/packages/table/src/columnInfo.ts +26 -28
  54. package/packages/table/src/table.ts +110 -75
  55. package/packages/toolbar/src/toolbar.ts +16 -24
  56. /package/es/{iconfont.1741051544689.ttf → iconfont.1741140593243.ttf} +0 -0
  57. /package/es/{iconfont.1741051544689.woff → iconfont.1741140593243.woff} +0 -0
  58. /package/es/{iconfont.1741051544689.woff2 → iconfont.1741140593243.woff2} +0 -0
  59. /package/lib/{iconfont.1741051544689.ttf → iconfont.1741140593243.ttf} +0 -0
  60. /package/lib/{iconfont.1741051544689.woff → iconfont.1741140593243.woff} +0 -0
  61. /package/lib/{iconfont.1741051544689.woff2 → iconfont.1741140593243.woff2} +0 -0
@@ -163,11 +163,9 @@ hooks.add('tableEditModule', {
163
163
  const parentLevel = parentRest ? parentRest.level : 0;
164
164
  newRecords.forEach((item, i) => {
165
165
  const rowid = getRowid($xeTable, item);
166
- if (process.env.NODE_ENV === 'development') {
167
- if (item[treeOpts.parentField]) {
168
- if (parentRow && item[treeOpts.parentField] !== parentRow[rowField]) {
169
- errLog('vxe.error.errProp', [`${treeOpts.parentField}=${item[treeOpts.parentField]}`, `${treeOpts.parentField}=${parentRow[rowField]}`]);
170
- }
166
+ if (item[treeOpts.parentField]) {
167
+ if (parentRow && item[treeOpts.parentField] !== parentRow[rowField]) {
168
+ errLog('vxe.error.errProp', [`${treeOpts.parentField}=${item[treeOpts.parentField]}`, `${treeOpts.parentField}=${parentRow[rowField]}`]);
171
169
  }
172
170
  }
173
171
  if (parentRow) {
@@ -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
  });
@@ -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
  };
@@ -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
  }
@@ -1241,14 +1241,12 @@ export default defineComponent({
1241
1241
  if ((expandColumn && expandOpts.mode !== 'fixed') && mouseOpts.area) {
1242
1242
  errLog('vxe.error.errConflicts', ['mouse-config.area', 'column.type=expand']);
1243
1243
  }
1244
- if (process.env.NODE_ENV === 'development') {
1245
- if (htmlColumn) {
1246
- if (!columnOpts.useKey) {
1247
- errLog('vxe.error.reqProp', ['column-config.useKey & column.type=html']);
1248
- }
1249
- if (!rowOpts.useKey) {
1250
- errLog('vxe.error.reqProp', ['row-config.useKey & column.type=html']);
1251
- }
1244
+ if (htmlColumn) {
1245
+ if (!columnOpts.useKey) {
1246
+ errLog('vxe.error.reqProp', ['column-config.useKey & column.type=html']);
1247
+ }
1248
+ if (!rowOpts.useKey) {
1249
+ errLog('vxe.error.reqProp', ['row-config.useKey & column.type=html']);
1252
1250
  }
1253
1251
  }
1254
1252
  reactData.isGroup = isGroup;
@@ -2626,28 +2624,26 @@ export default defineComponent({
2626
2624
  if (treeConfig) {
2627
2625
  if (transform) {
2628
2626
  // 树结构自动转换
2629
- if (process.env.NODE_ENV === 'development') {
2630
- if (!treeOpts.rowField) {
2631
- errLog('vxe.error.reqProp', ['tree-config.rowField']);
2632
- }
2633
- if (!treeOpts.parentField) {
2634
- errLog('vxe.error.reqProp', ['tree-config.parentField']);
2635
- }
2636
- if (!childrenField) {
2637
- errLog('vxe.error.reqProp', ['tree-config.childrenField']);
2638
- }
2639
- if (!treeOpts.mapChildrenField) {
2640
- errLog('vxe.error.reqProp', ['tree-config.mapChildrenField']);
2641
- }
2642
- if (childrenField === treeOpts.mapChildrenField) {
2643
- errLog('vxe.error.errConflicts', ['tree-config.childrenField', 'tree-config.mapChildrenField']);
2644
- }
2645
- // fullData.forEach(row => {
2646
- // if (row[treeOpts.children] && row[treeOpts.children].length) {
2647
- // warnLog('vxe.error.errConflicts', ['tree-config.transform', `row.${treeOpts.children}`])
2648
- // }
2649
- // })
2627
+ if (!treeOpts.rowField) {
2628
+ errLog('vxe.error.reqProp', ['tree-config.rowField']);
2629
+ }
2630
+ if (!treeOpts.parentField) {
2631
+ errLog('vxe.error.reqProp', ['tree-config.parentField']);
2632
+ }
2633
+ if (!childrenField) {
2634
+ errLog('vxe.error.reqProp', ['tree-config.childrenField']);
2635
+ }
2636
+ if (!treeOpts.mapChildrenField) {
2637
+ errLog('vxe.error.reqProp', ['tree-config.mapChildrenField']);
2650
2638
  }
2639
+ if (childrenField === treeOpts.mapChildrenField) {
2640
+ errLog('vxe.error.errConflicts', ['tree-config.childrenField', 'tree-config.mapChildrenField']);
2641
+ }
2642
+ // fullData.forEach(row => {
2643
+ // if (row[treeOpts.children] && row[treeOpts.children].length) {
2644
+ // warnLog('vxe.error.errConflicts', ['tree-config.transform', `row.${treeOpts.children}`])
2645
+ // }
2646
+ // })
2651
2647
  treeData = XEUtils.toArrayTree(fullData, {
2652
2648
  key: treeOpts.rowField,
2653
2649
  parentKey: treeOpts.parentField,
@@ -2712,16 +2708,14 @@ export default defineComponent({
2712
2708
  // }
2713
2709
  // }
2714
2710
  // }
2715
- if (process.env.NODE_ENV === 'development') {
2716
- if (!(props.height || props.maxHeight)) {
2717
- errLog('vxe.error.reqProp', ['table.height | table.max-height | table.scroll-y={enabled: false}']);
2718
- }
2719
- // if (!props.showOverflow) {
2720
- // warnLog('vxe.error.reqProp', ['table.show-overflow'])
2721
- // }
2722
- if (props.spanMethod) {
2723
- warnLog('vxe.error.scrollErrProp', ['table.span-method']);
2724
- }
2711
+ if (!(props.height || props.maxHeight)) {
2712
+ errLog('vxe.error.reqProp', ['table.height | table.max-height | table.scroll-y={enabled: false}']);
2713
+ }
2714
+ // if (!props.showOverflow) {
2715
+ // warnLog('vxe.error.reqProp', ['table.show-overflow'])
2716
+ // }
2717
+ if (props.spanMethod) {
2718
+ warnLog('vxe.error.scrollErrProp', ['table.span-method']);
2725
2719
  }
2726
2720
  }
2727
2721
  handleReserveStatus();
@@ -3698,8 +3692,10 @@ export default defineComponent({
3698
3692
  * 如果还额外传了 field 则还原指定的单元格数据
3699
3693
  */
3700
3694
  revertData(rows, field) {
3701
- const { keepSource } = props;
3702
- const { tableSourceData, sourceDataRowIdData } = internalData;
3695
+ const { keepSource, treeConfig } = props;
3696
+ const { fullAllDataRowIdData, tableSourceData, sourceDataRowIdData, tableFullData, afterFullData } = internalData;
3697
+ const treeOpts = computeTreeOpts.value;
3698
+ const { transform } = treeOpts;
3703
3699
  if (!keepSource) {
3704
3700
  if (process.env.NODE_ENV === 'development') {
3705
3701
  warnLog('vxe.error.reqProp', ['keep-source']);
@@ -3715,9 +3711,10 @@ export default defineComponent({
3715
3711
  else {
3716
3712
  targetRows = XEUtils.toArray($xeTable.getUpdateRecords());
3717
3713
  }
3714
+ let reDelFlag = false;
3718
3715
  if (targetRows.length) {
3719
3716
  targetRows.forEach((row) => {
3720
- if (!tableMethods.isInsertByRow(row)) {
3717
+ if (!$xeTable.isInsertByRow(row)) {
3721
3718
  const rowid = getRowid($xeTable, row);
3722
3719
  const oRow = sourceDataRowIdData[rowid];
3723
3720
  if (oRow && row) {
@@ -3727,14 +3724,38 @@ export default defineComponent({
3727
3724
  else {
3728
3725
  XEUtils.destructuring(row, XEUtils.clone(oRow, true));
3729
3726
  }
3727
+ if ($xeTable.isRemoveByRow(row)) {
3728
+ const rowRest = fullAllDataRowIdData[rowid];
3729
+ if (rowRest) {
3730
+ const reRow = rowRest.row;
3731
+ tableFullData.unshift(reRow);
3732
+ afterFullData.unshift(reRow);
3733
+ reDelFlag = true;
3734
+ }
3735
+ }
3730
3736
  }
3731
3737
  }
3732
3738
  });
3733
3739
  }
3734
3740
  if (rows) {
3735
- return nextTick();
3741
+ if (reDelFlag) {
3742
+ $xeTable.updateFooter();
3743
+ $xeTable.cacheRowMap(false);
3744
+ $xeTable.handleTableData(treeConfig && transform);
3745
+ if (!(treeConfig && transform)) {
3746
+ $xeTable.updateAfterDataIndex();
3747
+ }
3748
+ $xeTable.checkSelectionStatus();
3749
+ if (reactData.scrollYLoad) {
3750
+ $xeTable.updateScrollYSpace();
3751
+ }
3752
+ }
3753
+ return nextTick().then(() => {
3754
+ $xeTable.updateCellAreas();
3755
+ return $xeTable.recalculate();
3756
+ });
3736
3757
  }
3737
- return tableMethods.reloadData(tableSourceData);
3758
+ return $xeTable.reloadData(tableSourceData);
3738
3759
  },
3739
3760
  /**
3740
3761
  * 清空单元格内容
@@ -3854,6 +3875,11 @@ export default defineComponent({
3854
3875
  const rowid = getRowid($xeTable, row);
3855
3876
  return !!editStore.insertMaps[rowid];
3856
3877
  },
3878
+ isRemoveByRow(row) {
3879
+ const { editStore } = reactData;
3880
+ const rowid = getRowid($xeTable, row);
3881
+ return !!editStore.removeMaps[rowid];
3882
+ },
3857
3883
  /**
3858
3884
  * 删除所有新增的临时数据
3859
3885
  * @returns
@@ -6657,14 +6683,15 @@ export default defineComponent({
6657
6683
  */
6658
6684
  cacheRowMap() {
6659
6685
  const { treeConfig } = props;
6660
- const treeOpts = computeTreeOpts.value;
6686
+ const { treeExpandedMaps } = reactData;
6661
6687
  const { fullAllDataRowIdData, tableFullData, tableFullTreeData } = internalData;
6688
+ const treeOpts = computeTreeOpts.value;
6662
6689
  const childrenField = treeOpts.children || treeOpts.childrenField;
6663
6690
  const hasChildField = treeOpts.hasChild || treeOpts.hasChildField;
6664
6691
  const rowkey = getRowkey($xeTable);
6665
- const isLazy = treeConfig && treeOpts.lazy;
6666
- const fullAllDataRowIdMaps = {};
6692
+ const fullAllDataRowIdMaps = Object.assign({}, fullAllDataRowIdData); // 存在已删除数据
6667
6693
  const fullDataRowIdMaps = {};
6694
+ const treeTempExpandedMaps = Object.assign({}, treeExpandedMaps);
6668
6695
  const handleRow = (row, index, items, path, parentRow, nodes) => {
6669
6696
  let rowid = getRowid($xeTable, row);
6670
6697
  const seq = treeConfig && path ? toTreePathSeq(path) : index + 1;
@@ -6673,13 +6700,23 @@ export default defineComponent({
6673
6700
  rowid = getRowUniqueId();
6674
6701
  XEUtils.set(row, rowkey, rowid);
6675
6702
  }
6676
- if (isLazy && row[hasChildField] && XEUtils.isUndefined(row[childrenField])) {
6677
- row[childrenField] = null;
6703
+ if (treeConfig && treeOpts.lazy) {
6704
+ const treeExpRest = treeExpandedMaps[rowid];
6705
+ if (row[hasChildField] && XEUtils.isUndefined(row[childrenField])) {
6706
+ row[childrenField] = null;
6707
+ }
6708
+ if (treeExpRest) {
6709
+ if (!row[childrenField] || !row[childrenField].length) {
6710
+ delete treeTempExpandedMaps[rowid];
6711
+ }
6712
+ }
6678
6713
  }
6679
6714
  let rowRest = fullAllDataRowIdData[rowid];
6680
6715
  if (!rowRest) {
6681
6716
  rowRest = { row, rowid, seq, index: -1, _index: -1, $index: -1, treeIndex: index, items, parent: parentRow, level, height: 0, resizeHeight: 0, oTop: 0, expandHeight: 0 };
6682
6717
  }
6718
+ rowRest.treeLoaded = false;
6719
+ rowRest.expandLoaded = false;
6683
6720
  rowRest.row = row;
6684
6721
  rowRest.items = items;
6685
6722
  rowRest.parent = parentRow;
@@ -6688,14 +6725,15 @@ export default defineComponent({
6688
6725
  fullDataRowIdMaps[rowid] = rowRest;
6689
6726
  fullAllDataRowIdMaps[rowid] = rowRest;
6690
6727
  };
6691
- internalData.fullDataRowIdData = fullDataRowIdMaps;
6692
- internalData.fullAllDataRowIdData = fullAllDataRowIdMaps;
6693
6728
  if (treeConfig) {
6694
6729
  XEUtils.eachTree(tableFullTreeData, handleRow, { children: childrenField });
6695
6730
  }
6696
6731
  else {
6697
6732
  tableFullData.forEach(handleRow);
6698
6733
  }
6734
+ internalData.fullDataRowIdData = fullDataRowIdMaps;
6735
+ internalData.fullAllDataRowIdData = fullAllDataRowIdMaps;
6736
+ reactData.treeExpandedMaps = treeTempExpandedMaps;
6699
6737
  },
6700
6738
  cacheSourceMap(fullData) {
6701
6739
  const { treeConfig } = props;
@@ -9217,18 +9255,16 @@ export default defineComponent({
9217
9255
  }
9218
9256
  };
9219
9257
  // 检测对应模块是否安装
9220
- if (process.env.NODE_ENV === 'development') {
9221
- 'openExport,openPrint,exportData,openImport,importData,saveFile,readFile,importByFile,print'.split(',').forEach(name => {
9222
- $xeTable[name] = function () {
9223
- errLog('vxe.error.reqModule', ['VxeTableExportModule']);
9224
- };
9225
- });
9226
- 'clearValidate,fullValidate,validate'.split(',').forEach(name => {
9227
- $xeTable[name] = function () {
9228
- errLog('vxe.error.reqModule', ['VxeTableValidatorModule']);
9229
- };
9230
- });
9231
- }
9258
+ 'openExport,openPrint,exportData,openImport,importData,saveFile,readFile,importByFile,print'.split(',').forEach(name => {
9259
+ $xeTable[name] = function () {
9260
+ errLog('vxe.error.reqModule', ['VxeTableExportModule']);
9261
+ };
9262
+ });
9263
+ 'clearValidate,fullValidate,validate'.split(',').forEach(name => {
9264
+ $xeTable[name] = function () {
9265
+ errLog('vxe.error.reqModule', ['VxeTableValidatorModule']);
9266
+ };
9267
+ });
9232
9268
  Object.assign($xeTable, tableMethods, tablePrivateMethods);
9233
9269
  /**
9234
9270
  * 渲染浮固定列
@@ -10189,23 +10225,21 @@ export default defineComponent({
10189
10225
  globalEvents.off($xeTable, 'contextmenu');
10190
10226
  tablePrivateMethods.preventEvent(null, 'unmounted', { $table: $xeTable });
10191
10227
  });
10192
- if (process.env.NODE_ENV === 'development') {
10193
- nextTick(() => {
10194
- if (props.loading) {
10195
- if (!VxeUILoadingComponent && !slots.loading) {
10196
- errLog('vxe.error.reqComp', ['vxe-loading']);
10197
- }
10228
+ nextTick(() => {
10229
+ if (props.loading) {
10230
+ if (!VxeUILoadingComponent && !slots.loading) {
10231
+ errLog('vxe.error.reqComp', ['vxe-loading']);
10198
10232
  }
10199
- if ((props.showOverflow === true || props.showOverflow === 'tooltip') ||
10200
- (props.showHeaderOverflow === true || props.showHeaderOverflow === 'tooltip') ||
10201
- (props.showFooterOverflow === true || props.showFooterOverflow === 'tooltip') ||
10202
- props.tooltipConfig || props.editRules) {
10203
- if (!VxeUITooltipComponent) {
10204
- errLog('vxe.error.reqComp', ['vxe-tooltip']);
10205
- }
10233
+ }
10234
+ if ((props.showOverflow === true || props.showOverflow === 'tooltip') ||
10235
+ (props.showHeaderOverflow === true || props.showHeaderOverflow === 'tooltip') ||
10236
+ (props.showFooterOverflow === true || props.showFooterOverflow === 'tooltip') ||
10237
+ props.tooltipConfig || props.editRules) {
10238
+ if (!VxeUITooltipComponent) {
10239
+ errLog('vxe.error.reqComp', ['vxe-tooltip']);
10206
10240
  }
10207
- });
10208
- }
10241
+ }
10242
+ });
10209
10243
  provide('$xeColgroup', null);
10210
10244
  provide('$xeTable', $xeTable);
10211
10245
  $xeTable.renderVN = renderVN;
@@ -186,9 +186,7 @@ export default defineComponent({
186
186
  tCommandMethod(params);
187
187
  }
188
188
  else {
189
- if (process.env.NODE_ENV === 'development') {
190
- errLog('vxe.error.notCommands', [code]);
191
- }
189
+ errLog('vxe.error.notCommands', [code]);
192
190
  }
193
191
  }
194
192
  $xeToolbar.dispatchEvent('button-click', params, evnt);
@@ -212,9 +210,7 @@ export default defineComponent({
212
210
  tCommandMethod(params);
213
211
  }
214
212
  else {
215
- if (process.env.NODE_ENV === 'development') {
216
- errLog('vxe.error.notCommands', [code]);
217
- }
213
+ errLog('vxe.error.notCommands', [code]);
218
214
  }
219
215
  }
220
216
  $xeToolbar.dispatchEvent('tool-click', params, evnt);
@@ -541,25 +537,21 @@ export default defineComponent({
541
537
  warnLog('vxe.error.notFunc', ['queryMethod']);
542
538
  }
543
539
  const customOpts = computeCustomOpts.value;
544
- if (process.env.NODE_ENV === 'development') {
545
- if (customOpts.isFooter) {
546
- warnLog('vxe.error.delProp', ['toolbar.custom.isFooter', 'table.custom-config.showFooter']);
547
- }
548
- if (customOpts.showFooter) {
549
- warnLog('vxe.error.delProp', ['toolbar.custom.showFooter', 'table.custom-config.showFooter']);
550
- }
551
- if (customOpts.immediate) {
552
- warnLog('vxe.error.delProp', ['toolbar.custom.immediate', 'table.custom-config.immediate']);
553
- }
554
- if (customOpts.trigger) {
555
- warnLog('vxe.error.delProp', ['toolbar.custom.trigger', 'table.custom-config.trigger']);
556
- }
540
+ if (customOpts.isFooter) {
541
+ warnLog('vxe.error.delProp', ['toolbar.custom.isFooter', 'table.custom-config.showFooter']);
557
542
  }
558
- if (process.env.NODE_ENV === 'development') {
559
- if (props.refresh || props.import || props.export || props.print || props.zoom) {
560
- if (!VxeUIButtonComponent) {
561
- errLog('vxe.error.reqComp', ['vxe-button']);
562
- }
543
+ if (customOpts.showFooter) {
544
+ warnLog('vxe.error.delProp', ['toolbar.custom.showFooter', 'table.custom-config.showFooter']);
545
+ }
546
+ if (customOpts.immediate) {
547
+ warnLog('vxe.error.delProp', ['toolbar.custom.immediate', 'table.custom-config.immediate']);
548
+ }
549
+ if (customOpts.trigger) {
550
+ warnLog('vxe.error.delProp', ['toolbar.custom.trigger', 'table.custom-config.trigger']);
551
+ }
552
+ if (props.refresh || props.import || props.export || props.print || props.zoom) {
553
+ if (!VxeUIButtonComponent) {
554
+ errLog('vxe.error.reqComp', ['vxe-button']);
563
555
  }
564
556
  }
565
557
  });
package/es/ui/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { VxeUI } from '@vxe-ui/core';
2
2
  import { getFuncText } from './src/utils';
3
- export const version = "4.11.16";
3
+ export const version = "4.11.17";
4
4
  VxeUI.version = version;
5
5
  VxeUI.tableVersion = version;
6
6
  VxeUI.setConfig({
package/es/ui/src/log.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { VxeUI } from '@vxe-ui/core';
2
2
  const { log } = VxeUI;
3
- const version = `table v${"4.11.16"}`;
3
+ const version = `table v${"4.11.17"}`;
4
4
  export const warnLog = log.create('warn', version);
5
5
  export const errLog = log.create('error', version);