vxe-table 4.11.16 → 4.11.18

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 +90 -61
  10. package/es/table/src/columnInfo.js +26 -28
  11. package/es/table/src/table.js +132 -89
  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 +361 -312
  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 +98 -66
  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 +138 -85
  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 +89 -59
  53. package/packages/table/src/columnInfo.ts +26 -28
  54. package/packages/table/src/table.ts +128 -85
  55. package/packages/toolbar/src/toolbar.ts +16 -24
  56. /package/es/{iconfont.1741051544689.ttf → iconfont.1741224125327.ttf} +0 -0
  57. /package/es/{iconfont.1741051544689.woff → iconfont.1741224125327.woff} +0 -0
  58. /package/es/{iconfont.1741051544689.woff2 → iconfont.1741224125327.woff2} +0 -0
  59. /package/lib/{iconfont.1741051544689.ttf → iconfont.1741224125327.ttf} +0 -0
  60. /package/lib/{iconfont.1741051544689.woff → iconfont.1741224125327.woff} +0 -0
  61. /package/lib/{iconfont.1741051544689.woff2 → iconfont.1741224125327.woff2} +0 -0
@@ -1415,14 +1415,12 @@ var _default = exports.default = (0, _vue.defineComponent)({
1415
1415
  if (expandColumn && expandOpts.mode !== 'fixed' && mouseOpts.area) {
1416
1416
  (0, _log.errLog)('vxe.error.errConflicts', ['mouse-config.area', 'column.type=expand']);
1417
1417
  }
1418
- if (process.env.NODE_ENV === 'development') {
1419
- if (htmlColumn) {
1420
- if (!columnOpts.useKey) {
1421
- (0, _log.errLog)('vxe.error.reqProp', ['column-config.useKey & column.type=html']);
1422
- }
1423
- if (!rowOpts.useKey) {
1424
- (0, _log.errLog)('vxe.error.reqProp', ['row-config.useKey & column.type=html']);
1425
- }
1418
+ if (htmlColumn) {
1419
+ if (!columnOpts.useKey) {
1420
+ (0, _log.errLog)('vxe.error.reqProp', ['column-config.useKey & column.type=html']);
1421
+ }
1422
+ if (!rowOpts.useKey) {
1423
+ (0, _log.errLog)('vxe.error.reqProp', ['row-config.useKey & column.type=html']);
1426
1424
  }
1427
1425
  }
1428
1426
  reactData.isGroup = isGroup;
@@ -3095,28 +3093,26 @@ var _default = exports.default = (0, _vue.defineComponent)({
3095
3093
  if (treeConfig) {
3096
3094
  if (transform) {
3097
3095
  // 树结构自动转换
3098
- if (process.env.NODE_ENV === 'development') {
3099
- if (!treeOpts.rowField) {
3100
- (0, _log.errLog)('vxe.error.reqProp', ['tree-config.rowField']);
3101
- }
3102
- if (!treeOpts.parentField) {
3103
- (0, _log.errLog)('vxe.error.reqProp', ['tree-config.parentField']);
3104
- }
3105
- if (!childrenField) {
3106
- (0, _log.errLog)('vxe.error.reqProp', ['tree-config.childrenField']);
3107
- }
3108
- if (!treeOpts.mapChildrenField) {
3109
- (0, _log.errLog)('vxe.error.reqProp', ['tree-config.mapChildrenField']);
3110
- }
3111
- if (childrenField === treeOpts.mapChildrenField) {
3112
- (0, _log.errLog)('vxe.error.errConflicts', ['tree-config.childrenField', 'tree-config.mapChildrenField']);
3113
- }
3114
- // fullData.forEach(row => {
3115
- // if (row[treeOpts.children] && row[treeOpts.children].length) {
3116
- // warnLog('vxe.error.errConflicts', ['tree-config.transform', `row.${treeOpts.children}`])
3117
- // }
3118
- // })
3096
+ if (!treeOpts.rowField) {
3097
+ (0, _log.errLog)('vxe.error.reqProp', ['tree-config.rowField']);
3098
+ }
3099
+ if (!treeOpts.parentField) {
3100
+ (0, _log.errLog)('vxe.error.reqProp', ['tree-config.parentField']);
3101
+ }
3102
+ if (!childrenField) {
3103
+ (0, _log.errLog)('vxe.error.reqProp', ['tree-config.childrenField']);
3119
3104
  }
3105
+ if (!treeOpts.mapChildrenField) {
3106
+ (0, _log.errLog)('vxe.error.reqProp', ['tree-config.mapChildrenField']);
3107
+ }
3108
+ if (childrenField === treeOpts.mapChildrenField) {
3109
+ (0, _log.errLog)('vxe.error.errConflicts', ['tree-config.childrenField', 'tree-config.mapChildrenField']);
3110
+ }
3111
+ // fullData.forEach(row => {
3112
+ // if (row[treeOpts.children] && row[treeOpts.children].length) {
3113
+ // warnLog('vxe.error.errConflicts', ['tree-config.transform', `row.${treeOpts.children}`])
3114
+ // }
3115
+ // })
3120
3116
  treeData = _xeUtils.default.toArrayTree(fullData, {
3121
3117
  key: treeOpts.rowField,
3122
3118
  parentKey: treeOpts.parentField,
@@ -3180,16 +3176,14 @@ var _default = exports.default = (0, _vue.defineComponent)({
3180
3176
  // }
3181
3177
  // }
3182
3178
  // }
3183
- if (process.env.NODE_ENV === 'development') {
3184
- if (!(props.height || props.maxHeight)) {
3185
- (0, _log.errLog)('vxe.error.reqProp', ['table.height | table.max-height | table.scroll-y={enabled: false}']);
3186
- }
3187
- // if (!props.showOverflow) {
3188
- // warnLog('vxe.error.reqProp', ['table.show-overflow'])
3189
- // }
3190
- if (props.spanMethod) {
3191
- (0, _log.warnLog)('vxe.error.scrollErrProp', ['table.span-method']);
3192
- }
3179
+ if (!(props.height || props.maxHeight)) {
3180
+ (0, _log.errLog)('vxe.error.reqProp', ['table.height | table.max-height | table.scroll-y={enabled: false}']);
3181
+ }
3182
+ // if (!props.showOverflow) {
3183
+ // warnLog('vxe.error.reqProp', ['table.show-overflow'])
3184
+ // }
3185
+ if (props.spanMethod) {
3186
+ (0, _log.errLog)('vxe.error.scrollErrProp', ['table.span-method']);
3193
3187
  }
3194
3188
  }
3195
3189
  handleReserveStatus();
@@ -4310,15 +4304,24 @@ var _default = exports.default = (0, _vue.defineComponent)({
4310
4304
  */
4311
4305
  revertData(rows, field) {
4312
4306
  const {
4313
- keepSource
4307
+ keepSource,
4308
+ treeConfig
4314
4309
  } = props;
4315
4310
  const {
4311
+ fullAllDataRowIdData,
4312
+ fullDataRowIdData,
4316
4313
  tableSourceData,
4317
- sourceDataRowIdData
4314
+ sourceDataRowIdData,
4315
+ tableFullData,
4316
+ afterFullData
4318
4317
  } = internalData;
4318
+ const treeOpts = computeTreeOpts.value;
4319
+ const {
4320
+ transform
4321
+ } = treeOpts;
4319
4322
  if (!keepSource) {
4320
4323
  if (process.env.NODE_ENV === 'development') {
4321
- (0, _log.warnLog)('vxe.error.reqProp', ['keep-source']);
4324
+ (0, _log.errLog)('vxe.error.reqProp', ['keep-source']);
4322
4325
  }
4323
4326
  return (0, _vue.nextTick)();
4324
4327
  }
@@ -4330,25 +4333,50 @@ var _default = exports.default = (0, _vue.defineComponent)({
4330
4333
  } else {
4331
4334
  targetRows = _xeUtils.default.toArray($xeTable.getUpdateRecords());
4332
4335
  }
4336
+ let reDelFlag = false;
4333
4337
  if (targetRows.length) {
4334
- targetRows.forEach(row => {
4335
- if (!tableMethods.isInsertByRow(row)) {
4336
- const rowid = (0, _util.getRowid)($xeTable, row);
4337
- const oRow = sourceDataRowIdData[rowid];
4338
- if (oRow && row) {
4339
- if (field) {
4340
- _xeUtils.default.set(row, field, _xeUtils.default.clone(_xeUtils.default.get(oRow, field), true));
4341
- } else {
4342
- _xeUtils.default.destructuring(row, _xeUtils.default.clone(oRow, true));
4338
+ targetRows.forEach(item => {
4339
+ const rowid = (0, _util.getRowid)($xeTable, item);
4340
+ const rowRest = fullAllDataRowIdData[rowid];
4341
+ if (rowRest) {
4342
+ const row = rowRest.row;
4343
+ if (!$xeTable.isInsertByRow(row)) {
4344
+ const oRow = sourceDataRowIdData[rowid];
4345
+ if (oRow && row) {
4346
+ if (field) {
4347
+ _xeUtils.default.set(row, field, _xeUtils.default.clone(_xeUtils.default.get(oRow, field), true));
4348
+ } else {
4349
+ _xeUtils.default.destructuring(row, _xeUtils.default.clone(oRow, true));
4350
+ }
4351
+ if (!fullDataRowIdData[rowid] && $xeTable.isRemoveByRow(row)) {
4352
+ tableFullData.unshift(row);
4353
+ afterFullData.unshift(row);
4354
+ reDelFlag = true;
4355
+ }
4343
4356
  }
4344
4357
  }
4345
4358
  }
4346
4359
  });
4347
4360
  }
4348
4361
  if (rows) {
4349
- return (0, _vue.nextTick)();
4362
+ if (reDelFlag) {
4363
+ $xeTable.updateFooter();
4364
+ $xeTable.cacheRowMap(false);
4365
+ $xeTable.handleTableData(treeConfig && transform);
4366
+ if (!(treeConfig && transform)) {
4367
+ $xeTable.updateAfterDataIndex();
4368
+ }
4369
+ $xeTable.checkSelectionStatus();
4370
+ if (reactData.scrollYLoad) {
4371
+ $xeTable.updateScrollYSpace();
4372
+ }
4373
+ }
4374
+ return (0, _vue.nextTick)().then(() => {
4375
+ $xeTable.updateCellAreas();
4376
+ return $xeTable.recalculate();
4377
+ });
4350
4378
  }
4351
- return tableMethods.reloadData(tableSourceData);
4379
+ return $xeTable.reloadData(tableSourceData);
4352
4380
  },
4353
4381
  /**
4354
4382
  * 清空单元格内容
@@ -4481,6 +4509,13 @@ var _default = exports.default = (0, _vue.defineComponent)({
4481
4509
  const rowid = (0, _util.getRowid)($xeTable, row);
4482
4510
  return !!editStore.insertMaps[rowid];
4483
4511
  },
4512
+ isRemoveByRow(row) {
4513
+ const {
4514
+ editStore
4515
+ } = reactData;
4516
+ const rowid = (0, _util.getRowid)($xeTable, row);
4517
+ return !!editStore.removeMaps[rowid];
4518
+ },
4484
4519
  /**
4485
4520
  * 删除所有新增的临时数据
4486
4521
  * @returns
@@ -7552,7 +7587,15 @@ var _default = exports.default = (0, _vue.defineComponent)({
7552
7587
  if (el) {
7553
7588
  const parentElem = el.parentNode;
7554
7589
  const parentPaddingSize = height === '100%' || height === 'auto' ? (0, _dom.getPaddingTopBottomSize)(parentElem) : 0;
7555
- return Math.floor($xeGrid ? $xeGrid.getParentHeight() : _xeUtils.default.toNumber(getComputedStyle(parentElem).height) - parentPaddingSize);
7590
+ let parentWrapperHeight = 0;
7591
+ if (parentElem) {
7592
+ if ($xeGrid && (0, _dom.hasClass)(parentElem, 'vxe-grid--table-wrapper')) {
7593
+ parentWrapperHeight = $xeGrid.getParentHeight();
7594
+ } else {
7595
+ parentWrapperHeight = parentElem.clientHeight;
7596
+ }
7597
+ }
7598
+ return Math.floor(parentWrapperHeight - parentPaddingSize);
7556
7599
  }
7557
7600
  return 0;
7558
7601
  },
@@ -7654,18 +7697,21 @@ var _default = exports.default = (0, _vue.defineComponent)({
7654
7697
  const {
7655
7698
  treeConfig
7656
7699
  } = props;
7657
- const treeOpts = computeTreeOpts.value;
7700
+ const {
7701
+ treeExpandedMaps
7702
+ } = reactData;
7658
7703
  const {
7659
7704
  fullAllDataRowIdData,
7660
7705
  tableFullData,
7661
7706
  tableFullTreeData
7662
7707
  } = internalData;
7708
+ const treeOpts = computeTreeOpts.value;
7663
7709
  const childrenField = treeOpts.children || treeOpts.childrenField;
7664
7710
  const hasChildField = treeOpts.hasChild || treeOpts.hasChildField;
7665
7711
  const rowkey = (0, _util.getRowkey)($xeTable);
7666
- const isLazy = treeConfig && treeOpts.lazy;
7667
- const fullAllDataRowIdMaps = {};
7712
+ const fullAllDataRowIdMaps = Object.assign({}, fullAllDataRowIdData); // 存在已删除数据
7668
7713
  const fullDataRowIdMaps = {};
7714
+ const treeTempExpandedMaps = Object.assign({}, treeExpandedMaps);
7669
7715
  const handleRow = (row, index, items, path, parentRow, nodes) => {
7670
7716
  let rowid = (0, _util.getRowid)($xeTable, row);
7671
7717
  const seq = treeConfig && path ? (0, _util.toTreePathSeq)(path) : index + 1;
@@ -7674,8 +7720,16 @@ var _default = exports.default = (0, _vue.defineComponent)({
7674
7720
  rowid = (0, _util.getRowUniqueId)();
7675
7721
  _xeUtils.default.set(row, rowkey, rowid);
7676
7722
  }
7677
- if (isLazy && row[hasChildField] && _xeUtils.default.isUndefined(row[childrenField])) {
7678
- row[childrenField] = null;
7723
+ if (treeConfig && treeOpts.lazy) {
7724
+ const treeExpRest = treeExpandedMaps[rowid];
7725
+ if (row[hasChildField] && _xeUtils.default.isUndefined(row[childrenField])) {
7726
+ row[childrenField] = null;
7727
+ }
7728
+ if (treeExpRest) {
7729
+ if (!row[childrenField] || !row[childrenField].length) {
7730
+ delete treeTempExpandedMaps[rowid];
7731
+ }
7732
+ }
7679
7733
  }
7680
7734
  let rowRest = fullAllDataRowIdData[rowid];
7681
7735
  if (!rowRest) {
@@ -7696,6 +7750,8 @@ var _default = exports.default = (0, _vue.defineComponent)({
7696
7750
  expandHeight: 0
7697
7751
  };
7698
7752
  }
7753
+ rowRest.treeLoaded = false;
7754
+ rowRest.expandLoaded = false;
7699
7755
  rowRest.row = row;
7700
7756
  rowRest.items = items;
7701
7757
  rowRest.parent = parentRow;
@@ -7704,8 +7760,6 @@ var _default = exports.default = (0, _vue.defineComponent)({
7704
7760
  fullDataRowIdMaps[rowid] = rowRest;
7705
7761
  fullAllDataRowIdMaps[rowid] = rowRest;
7706
7762
  };
7707
- internalData.fullDataRowIdData = fullDataRowIdMaps;
7708
- internalData.fullAllDataRowIdData = fullAllDataRowIdMaps;
7709
7763
  if (treeConfig) {
7710
7764
  _xeUtils.default.eachTree(tableFullTreeData, handleRow, {
7711
7765
  children: childrenField
@@ -7713,6 +7767,9 @@ var _default = exports.default = (0, _vue.defineComponent)({
7713
7767
  } else {
7714
7768
  tableFullData.forEach(handleRow);
7715
7769
  }
7770
+ internalData.fullDataRowIdData = fullDataRowIdMaps;
7771
+ internalData.fullAllDataRowIdData = fullAllDataRowIdMaps;
7772
+ reactData.treeExpandedMaps = treeTempExpandedMaps;
7716
7773
  },
7717
7774
  cacheSourceMap(fullData) {
7718
7775
  const {
@@ -10690,18 +10747,16 @@ var _default = exports.default = (0, _vue.defineComponent)({
10690
10747
  }
10691
10748
  };
10692
10749
  // 检测对应模块是否安装
10693
- if (process.env.NODE_ENV === 'development') {
10694
- 'openExport,openPrint,exportData,openImport,importData,saveFile,readFile,importByFile,print'.split(',').forEach(name => {
10695
- $xeTable[name] = function () {
10696
- (0, _log.errLog)('vxe.error.reqModule', ['VxeTableExportModule']);
10697
- };
10698
- });
10699
- 'clearValidate,fullValidate,validate'.split(',').forEach(name => {
10700
- $xeTable[name] = function () {
10701
- (0, _log.errLog)('vxe.error.reqModule', ['VxeTableValidatorModule']);
10702
- };
10703
- });
10704
- }
10750
+ 'openExport,openPrint,exportData,openImport,importData,saveFile,readFile,importByFile,print'.split(',').forEach(name => {
10751
+ $xeTable[name] = function () {
10752
+ (0, _log.errLog)('vxe.error.reqModule', ['VxeTableExportModule']);
10753
+ };
10754
+ });
10755
+ 'clearValidate,fullValidate,validate'.split(',').forEach(name => {
10756
+ $xeTable[name] = function () {
10757
+ (0, _log.errLog)('vxe.error.reqModule', ['VxeTableValidatorModule']);
10758
+ };
10759
+ });
10705
10760
  Object.assign($xeTable, tableMethods, tablePrivateMethods);
10706
10761
  /**
10707
10762
  * 渲染浮固定列
@@ -11680,20 +11735,18 @@ var _default = exports.default = (0, _vue.defineComponent)({
11680
11735
  $table: $xeTable
11681
11736
  });
11682
11737
  });
11683
- if (process.env.NODE_ENV === 'development') {
11684
- (0, _vue.nextTick)(() => {
11685
- if (props.loading) {
11686
- if (!VxeUILoadingComponent && !slots.loading) {
11687
- (0, _log.errLog)('vxe.error.reqComp', ['vxe-loading']);
11688
- }
11738
+ (0, _vue.nextTick)(() => {
11739
+ if (props.loading) {
11740
+ if (!VxeUILoadingComponent && !slots.loading) {
11741
+ (0, _log.errLog)('vxe.error.reqComp', ['vxe-loading']);
11689
11742
  }
11690
- if (props.showOverflow === true || props.showOverflow === 'tooltip' || props.showHeaderOverflow === true || props.showHeaderOverflow === 'tooltip' || props.showFooterOverflow === true || props.showFooterOverflow === 'tooltip' || props.tooltipConfig || props.editRules) {
11691
- if (!VxeUITooltipComponent) {
11692
- (0, _log.errLog)('vxe.error.reqComp', ['vxe-tooltip']);
11693
- }
11743
+ }
11744
+ if (props.showOverflow === true || props.showOverflow === 'tooltip' || props.showHeaderOverflow === true || props.showHeaderOverflow === 'tooltip' || props.showFooterOverflow === true || props.showFooterOverflow === 'tooltip' || props.tooltipConfig || props.editRules) {
11745
+ if (!VxeUITooltipComponent) {
11746
+ (0, _log.errLog)('vxe.error.reqComp', ['vxe-tooltip']);
11694
11747
  }
11695
- });
11696
- }
11748
+ }
11749
+ });
11697
11750
  (0, _vue.provide)('$xeColgroup', null);
11698
11751
  (0, _vue.provide)('$xeTable', $xeTable);
11699
11752
  $xeTable.renderVN = renderVN;