vxe-table 4.18.7 → 4.18.9

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 (148) hide show
  1. package/LICENSE +20 -20
  2. package/README.en.md +118 -118
  3. package/README.ja-JP.md +117 -117
  4. package/README.md +268 -268
  5. package/README.zh-TW.md +117 -117
  6. package/es/style.css +1 -1
  7. package/es/table/src/table.js +101 -84
  8. package/es/table/src/util.js +6 -0
  9. package/es/table/style.css +18 -48
  10. package/es/ui/index.js +1 -1
  11. package/es/ui/src/dom.js +21 -0
  12. package/es/ui/src/log.js +1 -1
  13. package/es/vxe-table/style.css +18 -48
  14. package/lib/index.common.js +2 -1
  15. package/lib/index.umd.js +2769 -2840
  16. package/lib/index.umd.min.js +1 -1
  17. package/lib/style.css +1 -1
  18. package/lib/table/src/table.js +21 -18
  19. package/lib/table/src/table.min.js +1 -1
  20. package/lib/table/src/util.js +6 -0
  21. package/lib/table/src/util.min.js +1 -1
  22. package/lib/table/style/style.css +18 -48
  23. package/lib/ui/index.js +1 -1
  24. package/lib/ui/index.min.js +1 -1
  25. package/lib/ui/src/dom.js +23 -0
  26. package/lib/ui/src/dom.min.js +1 -1
  27. package/lib/ui/src/log.js +1 -1
  28. package/lib/ui/src/log.min.js +1 -1
  29. package/lib/v-x-e-table/index.js +2 -1
  30. package/lib/v-x-e-table/index.min.js +1 -1
  31. package/lib/vxe-colgroup/index.js +2 -1
  32. package/lib/vxe-colgroup/index.min.js +1 -1
  33. package/lib/vxe-column/index.js +2 -1
  34. package/lib/vxe-column/index.min.js +1 -1
  35. package/lib/vxe-grid/index.js +2 -1
  36. package/lib/vxe-grid/index.min.js +1 -1
  37. package/lib/vxe-table/index.js +2 -1
  38. package/lib/vxe-table/index.min.js +1 -1
  39. package/lib/vxe-table/style/style.css +18 -48
  40. package/lib/vxe-toolbar/index.js +2 -1
  41. package/lib/vxe-toolbar/index.min.js +1 -1
  42. package/lib/vxe-ui/index.js +2 -1
  43. package/lib/vxe-ui/index.min.js +1 -1
  44. package/lib/vxe-v-x-e-table/index.js +2 -1
  45. package/lib/vxe-v-x-e-table/index.min.js +1 -1
  46. package/package.json +91 -91
  47. package/packages/colgroup/index.ts +22 -22
  48. package/packages/column/index.ts +22 -22
  49. package/packages/components.ts +43 -43
  50. package/packages/grid/index.ts +18 -18
  51. package/packages/grid/src/emits.ts +19 -19
  52. package/packages/grid/src/grid.ts +1768 -1768
  53. package/packages/grid/src/props.ts +23 -23
  54. package/packages/index.ts +4 -4
  55. package/packages/locale/lang/ar-EG.ts +832 -832
  56. package/packages/locale/lang/de-DE.ts +832 -832
  57. package/packages/locale/lang/en-US.ts +832 -832
  58. package/packages/locale/lang/es-ES.ts +832 -832
  59. package/packages/locale/lang/fr-FR.ts +832 -832
  60. package/packages/locale/lang/hu-HU.ts +832 -832
  61. package/packages/locale/lang/hy-AM.ts +832 -832
  62. package/packages/locale/lang/id-ID.ts +832 -832
  63. package/packages/locale/lang/it-IT.ts +832 -832
  64. package/packages/locale/lang/ja-JP.ts +832 -832
  65. package/packages/locale/lang/ko-KR.ts +832 -832
  66. package/packages/locale/lang/ms-MY.ts +832 -832
  67. package/packages/locale/lang/nb-NO.ts +832 -832
  68. package/packages/locale/lang/pt-BR.ts +832 -832
  69. package/packages/locale/lang/ru-RU.ts +832 -832
  70. package/packages/locale/lang/th-TH.ts +832 -832
  71. package/packages/locale/lang/ug-CN.ts +832 -832
  72. package/packages/locale/lang/uk-UA.ts +832 -832
  73. package/packages/locale/lang/uz-UZ.ts +832 -832
  74. package/packages/locale/lang/vi-VN.ts +832 -832
  75. package/packages/locale/lang/zh-CHT.ts +832 -832
  76. package/packages/locale/lang/zh-CN.ts +832 -832
  77. package/packages/locale/lang/zh-HK.ts +3 -3
  78. package/packages/locale/lang/zh-MO.ts +3 -3
  79. package/packages/locale/lang/zh-TC.ts +3 -3
  80. package/packages/locale/lang/zh-TW.ts +3 -3
  81. package/packages/table/index.ts +26 -26
  82. package/packages/table/module/custom/hook.ts +359 -359
  83. package/packages/table/module/custom/panel.ts +1331 -1331
  84. package/packages/table/module/edit/hook.ts +1032 -1032
  85. package/packages/table/module/export/export-panel.ts +567 -567
  86. package/packages/table/module/export/hook.ts +1654 -1654
  87. package/packages/table/module/export/import-panel.ts +266 -266
  88. package/packages/table/module/export/util.ts +24 -24
  89. package/packages/table/module/filter/hook.ts +468 -468
  90. package/packages/table/module/filter/panel.ts +301 -301
  91. package/packages/table/module/keyboard/hook.ts +495 -495
  92. package/packages/table/module/menu/hook.ts +325 -325
  93. package/packages/table/module/menu/panel.ts +201 -201
  94. package/packages/table/module/validator/hook.ts +631 -631
  95. package/packages/table/render/index.ts +1440 -1440
  96. package/packages/table/src/body.ts +932 -932
  97. package/packages/table/src/cell.ts +1290 -1290
  98. package/packages/table/src/column.ts +190 -190
  99. package/packages/table/src/columnInfo.ts +225 -225
  100. package/packages/table/src/emits.ts +123 -123
  101. package/packages/table/src/footer.ts +368 -368
  102. package/packages/table/src/group.ts +59 -59
  103. package/packages/table/src/header.ts +559 -559
  104. package/packages/table/src/props.ts +324 -324
  105. package/packages/table/src/store.ts +14 -14
  106. package/packages/table/src/table.ts +14020 -14004
  107. package/packages/table/src/use/cell-view.ts +44 -44
  108. package/packages/table/src/use/index.ts +1 -1
  109. package/packages/table/src/util.ts +1070 -1064
  110. package/packages/toolbar/index.ts +18 -18
  111. package/packages/toolbar/src/toolbar.ts +701 -701
  112. package/packages/ui/index.ts +530 -530
  113. package/packages/ui/src/anime.ts +52 -52
  114. package/packages/ui/src/comp.ts +3 -3
  115. package/packages/ui/src/dom.ts +259 -236
  116. package/packages/ui/src/log.ts +8 -8
  117. package/packages/ui/src/utils.ts +56 -56
  118. package/packages/ui/src/vn.ts +55 -55
  119. package/packages/v-x-e-table/index.d.ts +4 -4
  120. package/packages/v-x-e-table/index.ts +4 -4
  121. package/styles/all.scss +7 -7
  122. package/styles/base.scss +16 -16
  123. package/styles/components/grid.scss +89 -89
  124. package/styles/components/icon.scss +225 -225
  125. package/styles/components/old-icon.scss +715 -715
  126. package/styles/components/table-module/all.scss +6 -6
  127. package/styles/components/table-module/custom.scss +527 -527
  128. package/styles/components/table-module/export.scss +130 -130
  129. package/styles/components/table-module/filter.scss +130 -130
  130. package/styles/components/table-module/menu.scss +81 -81
  131. package/styles/components/table.scss +2679 -2679
  132. package/styles/components/toolbar.scss +119 -119
  133. package/styles/default.scss +2 -2
  134. package/styles/helpers/baseMixin.scss +95 -95
  135. package/styles/index.scss +4 -4
  136. package/styles/modules.scss +5 -5
  137. package/styles/theme/base.scss +93 -93
  138. package/styles/theme/dark.scss +49 -49
  139. package/styles/theme/light.scss +44 -44
  140. package/styles/variable.scss +43 -43
  141. package/types/all.d.ts +37 -37
  142. package/types/index.d.ts +4 -4
  143. /package/es/{iconfont.1773991907408.ttf → iconfont.1774420952727.ttf} +0 -0
  144. /package/es/{iconfont.1773991907408.woff → iconfont.1774420952727.woff} +0 -0
  145. /package/es/{iconfont.1773991907408.woff2 → iconfont.1774420952727.woff2} +0 -0
  146. /package/lib/{iconfont.1773991907408.ttf → iconfont.1774420952727.ttf} +0 -0
  147. /package/lib/{iconfont.1773991907408.woff → iconfont.1774420952727.woff} +0 -0
  148. /package/lib/{iconfont.1773991907408.woff2 → iconfont.1774420952727.woff2} +0 -0
@@ -1,7 +1,7 @@
1
1
  import { h, reactive, ref, provide, inject, nextTick, Teleport, onActivated, onDeactivated, onBeforeUnmount, onUnmounted, watch, computed, onMounted } from 'vue';
2
2
  import { defineVxeComponent } from '../../ui/src/comp';
3
3
  import XEUtils from 'xe-utils';
4
- import { initTpImg, getTpImg, isPx, isScale, hasClass, addClass, removeClass, scrollTopTo, getEventTargetNode, getPaddingTopBottomSize, setScrollTop, setScrollLeft, toCssUnit, hasControlKey, checkTargetElement } from '../../ui/src/dom';
4
+ import { initTpImg, getTpImg, isPx, isScale, hasClass, addClass, removeClass, wheelScrollTopTo, wheelScrollLeftTo, getEventTargetNode, getPaddingTopBottomSize, setScrollTop, setScrollLeft, toCssUnit, hasControlKey, checkTargetElement } from '../../ui/src/dom';
5
5
  import { getLastZIndex, nextZIndex, hasChildrenList, getFuncText, isEnableConf, formatText, eqEmptyValue } from '../../ui/src/utils';
6
6
  import { VxeUI } from '../../ui';
7
7
  import { createReactData, createInternalData, getRowUniqueId, createRowId, clearTableAllStatus, getColumnList, toFilters, hasDeepKey, getRowkey, getRowid, rowToVisible, colToVisible, getCellValue, setCellValue, handleRowidOrRow, handleFieldOrColumn, toTreePathSeq, restoreScrollLocation, getRootColumn, getRefElem, getColReMinWidth, createHandleUpdateRowId, createHandleGetRowId, getCalcHeight, getCellRestHeight, getLastChildColumn } from './util';
@@ -364,6 +364,7 @@ export default defineVxeComponent({
364
364
  }
365
365
  return leftWidth;
366
366
  });
367
+ // 合并列是否超越冻结列
367
368
  const computeBodyMergeCoverFixed = computed(() => {
368
369
  const { columnStore, mergeBodyFlag } = reactData;
369
370
  const { mergeBodyList, visibleColumn } = internalData;
@@ -373,7 +374,10 @@ export default defineVxeComponent({
373
374
  const lecIndex = leftList.length;
374
375
  for (let i = 0; i < mergeBodyList.length; i++) {
375
376
  const { col, colspan } = mergeBodyList[i];
376
- if (col < lecIndex || (col + colspan) > rscIndex) {
377
+ if (col < lecIndex && col + colspan > lecIndex) {
378
+ return true;
379
+ }
380
+ else if (col < rscIndex && col + colspan > rscIndex) {
377
381
  return true;
378
382
  }
379
383
  }
@@ -970,32 +974,46 @@ export default defineVxeComponent({
970
974
  }
971
975
  return { toVisibleIndex: 0, visibleSize: 6 };
972
976
  };
973
- const calculateMergerOffsetIndex = (list, offsetItem, type) => {
974
- for (let mcIndex = 0, len = list.length; mcIndex < len; mcIndex++) {
975
- const mergeItem = list[mcIndex];
976
- const { startIndex, endIndex } = offsetItem;
977
- const mergeStartIndex = mergeItem[type];
978
- const mergeSpanNumber = mergeItem[type + 'span'];
979
- const mergeEndIndex = mergeStartIndex + mergeSpanNumber;
980
- if (mergeStartIndex < startIndex && startIndex < mergeEndIndex) {
981
- offsetItem.startIndex = mergeStartIndex;
982
- }
983
- if (mergeStartIndex < endIndex && endIndex < mergeEndIndex) {
984
- offsetItem.endIndex = mergeEndIndex;
985
- }
986
- if (offsetItem.startIndex !== startIndex || offsetItem.endIndex !== endIndex) {
987
- mcIndex = -1;
977
+ const calculateMergerOffsetIndex = (list, mergeMaps, offsetItem, type) => {
978
+ const mKey = `${offsetItem.startIndex}:${offsetItem.endIndex}`;
979
+ const mObj = mergeMaps[mKey];
980
+ // 缓存
981
+ if (mObj) {
982
+ offsetItem.startIndex = mObj.startIndex;
983
+ offsetItem.endIndex = mObj.endIndex;
984
+ }
985
+ else {
986
+ for (let mcIndex = 0, len = list.length; mcIndex < len; mcIndex++) {
987
+ const mergeItem = list[mcIndex];
988
+ const { startIndex, endIndex } = offsetItem;
989
+ const mergeStartIndex = mergeItem[type];
990
+ const mergeSpanNumber = mergeItem[type + 'span'];
991
+ const mergeEndIndex = mergeStartIndex + mergeSpanNumber;
992
+ if (mergeStartIndex < startIndex && startIndex < mergeEndIndex) {
993
+ offsetItem.startIndex = mergeStartIndex;
994
+ }
995
+ if (mergeStartIndex < endIndex && endIndex < mergeEndIndex) {
996
+ offsetItem.endIndex = mergeEndIndex;
997
+ }
998
+ if (offsetItem.startIndex !== startIndex || offsetItem.endIndex !== endIndex) {
999
+ mcIndex = -1;
1000
+ }
988
1001
  }
1002
+ mergeMaps[mKey] = offsetItem;
989
1003
  }
990
1004
  };
991
1005
  function buildMergeData(mergeConfigs) {
992
1006
  const mergeMaps = {};
1007
+ const mergeRowMaps = {};
1008
+ const mergeColMaps = {};
993
1009
  if (mergeConfigs && mergeConfigs.length) {
994
1010
  for (let mIndex = 0; mIndex < mergeConfigs.length; mIndex++) {
995
1011
  const { row: _rowIndex, col: _columnIndex, rowspan: mergeRowspan, colspan: mergeColspan } = mergeConfigs[mIndex];
996
1012
  for (let i = 0; i < mergeRowspan; i++) {
1013
+ const currRIndex = _rowIndex + i;
997
1014
  for (let j = 0; j < mergeColspan; j++) {
998
- mergeMaps[`${_rowIndex + i}:${_columnIndex + j}`] = !i && !j
1015
+ const currCIndex = _columnIndex + j;
1016
+ mergeMaps[`${currRIndex}:${currCIndex}`] = !i && !j
999
1017
  ? {
1000
1018
  rowspan: mergeRowspan,
1001
1019
  colspan: mergeColspan
@@ -1008,12 +1026,14 @@ export default defineVxeComponent({
1008
1026
  }
1009
1027
  }
1010
1028
  }
1011
- return mergeMaps;
1029
+ return { mergeMaps, mergeRowMaps, mergeColMaps };
1012
1030
  }
1013
1031
  const handleUpdateMergeBodyCells = (merges) => {
1014
1032
  internalData.mergeBodyList = [];
1015
1033
  internalData.mergeBodyMaps = {};
1016
1034
  internalData.mergeBodyCellMaps = {};
1035
+ internalData.mergeBodyRowMaps = {};
1036
+ internalData.mergeBodyColMaps = {};
1017
1037
  $xeTable.setMergeCells(merges);
1018
1038
  };
1019
1039
  const handleBodyMerge = (merges) => {
@@ -1130,6 +1150,8 @@ export default defineVxeComponent({
1130
1150
  internalData.mergeHeaderList = [];
1131
1151
  internalData.mergeHeaderMaps = {};
1132
1152
  internalData.mergeHeaderCellMaps = {};
1153
+ internalData.mergeHeaderRowMaps = {};
1154
+ internalData.mergeBodyColMaps = {};
1133
1155
  $xeTable.setMergeHeaderCells(merges);
1134
1156
  };
1135
1157
  const handleHeaderMerge = (merges) => {
@@ -1231,6 +1253,8 @@ export default defineVxeComponent({
1231
1253
  internalData.mergeFooterList = [];
1232
1254
  internalData.mergeFooterMaps = {};
1233
1255
  internalData.mergeFooterCellMaps = {};
1256
+ internalData.mergeFooterRowMaps = {};
1257
+ internalData.mergeFooterColMaps = {};
1234
1258
  $xeTable.setMergeFooterCells(merges);
1235
1259
  };
1236
1260
  const handleFooterMerge = (merges) => {
@@ -2135,8 +2159,8 @@ export default defineVxeComponent({
2135
2159
  const treeOpts = computeTreeOpts.value;
2136
2160
  const childrenField = treeOpts.children || treeOpts.childrenField;
2137
2161
  const { transform, rowField, parentField, mapChildrenField } = treeOpts;
2138
- const { isEvery, remote: allRemoteFilter, filterMethod: allFilterMethod } = filterOpts;
2139
- const { remote: allRemoteSort, sortMethod: allSortMethod, multiple: sortMultiple, chronological } = sortOpts;
2162
+ const { isEvery, remote: allRemoteFilter, filterMethod: allFilterMethod, isDeep: isFilterDeep } = filterOpts;
2163
+ const { remote: allRemoteSort, sortMethod: allSortMethod, multiple: sortMultiple, chronological, isDeep: isSortDeep } = sortOpts;
2140
2164
  let tableData = [];
2141
2165
  let tableTree = [];
2142
2166
  // 处理数据
@@ -2200,7 +2224,7 @@ export default defineVxeComponent({
2200
2224
  });
2201
2225
  tableData = tableTree;
2202
2226
  }
2203
- else if (treeConfig && transform) {
2227
+ else if (treeConfig && transform && isFilterDeep !== false) {
2204
2228
  // 筛选虚拟树
2205
2229
  tableTree = XEUtils.searchTree(tableFullTreeData, handleFilter, {
2206
2230
  original: true,
@@ -2226,7 +2250,7 @@ export default defineVxeComponent({
2226
2250
  });
2227
2251
  tableData = tableTree;
2228
2252
  }
2229
- else if (treeConfig && transform) {
2253
+ else if (treeConfig && transform && isFilterDeep !== false) {
2230
2254
  // 还原虚拟树
2231
2255
  tableTree = XEUtils.searchTree(tableFullTreeData, () => true, {
2232
2256
  original: true,
@@ -2265,7 +2289,7 @@ export default defineVxeComponent({
2265
2289
  }
2266
2290
  tableData = tableTree;
2267
2291
  }
2268
- else if (treeConfig && transform) {
2292
+ else if (treeConfig && transform && isSortDeep !== false) {
2269
2293
  // 虚拟树的排序
2270
2294
  if (allSortMethod) {
2271
2295
  const sortRests = allSortMethod({ data: tableTree, sortList: orderColumns, $table: $xeTable });
@@ -2308,7 +2332,7 @@ export default defineVxeComponent({
2308
2332
  });
2309
2333
  tableData = tableTree;
2310
2334
  }
2311
- else if (treeConfig && transform) {
2335
+ else if (treeConfig && transform && isSortDeep !== false) {
2312
2336
  // 还原虚拟树
2313
2337
  tableTree = XEUtils.searchTree(tableFullTreeData, () => true, {
2314
2338
  original: true,
@@ -3765,7 +3789,7 @@ export default defineVxeComponent({
3765
3789
  };
3766
3790
  const loadScrollXData = () => {
3767
3791
  const { isScrollXBig } = reactData;
3768
- const { mergeBodyList, mergeFooterList, scrollXStore } = internalData;
3792
+ const { mergeBodyList, mergeFooterList, mergeBodyRowMaps, scrollXStore } = internalData;
3769
3793
  const { preloadSize, startIndex, endIndex, offsetSize } = scrollXStore;
3770
3794
  const { toVisibleIndex, visibleSize } = handleVirtualXVisible();
3771
3795
  const offsetItem = {
@@ -3774,7 +3798,7 @@ export default defineVxeComponent({
3774
3798
  };
3775
3799
  scrollXStore.visibleStartIndex = toVisibleIndex - 1;
3776
3800
  scrollXStore.visibleEndIndex = toVisibleIndex + visibleSize + 1;
3777
- calculateMergerOffsetIndex(mergeBodyList.concat(mergeFooterList), offsetItem, 'col');
3801
+ calculateMergerOffsetIndex(mergeBodyList.concat(mergeFooterList), mergeBodyRowMaps, offsetItem, 'col');
3778
3802
  const { startIndex: offsetStartIndex, endIndex: offsetEndIndex } = offsetItem;
3779
3803
  if (toVisibleIndex <= startIndex || toVisibleIndex >= endIndex - visibleSize - 1) {
3780
3804
  if (startIndex !== offsetStartIndex || endIndex !== offsetEndIndex) {
@@ -4201,7 +4225,7 @@ export default defineVxeComponent({
4201
4225
  */
4202
4226
  const loadScrollYData = () => {
4203
4227
  const { isAllOverflow, isScrollYBig } = reactData;
4204
- const { mergeBodyList, scrollYStore } = internalData;
4228
+ const { mergeBodyList, mergeBodyColMaps, scrollYStore } = internalData;
4205
4229
  const { preloadSize, startIndex, endIndex, offsetSize } = scrollYStore;
4206
4230
  const autoOffsetYSize = isAllOverflow ? offsetSize : offsetSize + 1;
4207
4231
  const { toVisibleIndex, visibleSize } = handleVirtualYVisible();
@@ -4211,7 +4235,7 @@ export default defineVxeComponent({
4211
4235
  };
4212
4236
  scrollYStore.visibleStartIndex = toVisibleIndex - 1;
4213
4237
  scrollYStore.visibleEndIndex = toVisibleIndex + visibleSize + 1;
4214
- calculateMergerOffsetIndex(mergeBodyList, offsetItem, 'row');
4238
+ calculateMergerOffsetIndex(mergeBodyList, mergeBodyColMaps, offsetItem, 'row');
4215
4239
  const { startIndex: offsetStartIndex, endIndex: offsetEndIndex } = offsetItem;
4216
4240
  if (toVisibleIndex <= startIndex || toVisibleIndex >= endIndex - visibleSize - 1) {
4217
4241
  if (startIndex !== offsetStartIndex || endIndex !== offsetEndIndex) {
@@ -4359,11 +4383,6 @@ export default defineVxeComponent({
4359
4383
  }
4360
4384
  return multiple;
4361
4385
  };
4362
- const wheelScrollLeftTo = (scrollLeft, cb) => {
4363
- requestAnimationFrame(() => {
4364
- cb(scrollLeft);
4365
- });
4366
- };
4367
4386
  const syncGanttScrollTop = (scrollTop) => {
4368
4387
  const $xeGanttView = internalData.xeGanttView;
4369
4388
  if ($xeGanttView) {
@@ -7455,6 +7474,8 @@ export default defineVxeComponent({
7455
7474
  internalData.mergeBodyList = [];
7456
7475
  internalData.mergeBodyMaps = {};
7457
7476
  internalData.mergeBodyCellMaps = {};
7477
+ internalData.mergeBodyRowMaps = {};
7478
+ internalData.mergeBodyColMaps = {};
7458
7479
  reactData.mergeBodyFlag++;
7459
7480
  return nextTick().then(() => {
7460
7481
  return updateStyle();
@@ -7491,6 +7512,8 @@ export default defineVxeComponent({
7491
7512
  internalData.mergeHeaderList = [];
7492
7513
  internalData.mergeHeaderMaps = {};
7493
7514
  internalData.mergeHeaderCellMaps = {};
7515
+ internalData.mergeHeaderRowMaps = {};
7516
+ internalData.mergeBodyColMaps = {};
7494
7517
  reactData.mergeHeadFlag++;
7495
7518
  return nextTick().then(() => {
7496
7519
  return updateStyle();
@@ -7542,6 +7565,8 @@ export default defineVxeComponent({
7542
7565
  internalData.mergeFooterList = [];
7543
7566
  internalData.mergeFooterMaps = {};
7544
7567
  internalData.mergeFooterCellMaps = {};
7568
+ internalData.mergeFooterRowMaps = {};
7569
+ internalData.mergeFooterColMaps = {};
7545
7570
  reactData.mergeFootFlag++;
7546
7571
  return nextTick().then(() => {
7547
7572
  return updateStyle();
@@ -8783,6 +8808,13 @@ export default defineVxeComponent({
8783
8808
  updateAfterFullData();
8784
8809
  // 如果为虚拟树,将树结构拍平
8785
8810
  fullList = handleVirtualTreeToList();
8811
+ // 更新数据后清除合并缓存,涉及分组、筛选、排序等
8812
+ internalData.mergeHeaderRowMaps = {};
8813
+ internalData.mergeHeaderColMaps = {};
8814
+ internalData.mergeBodyRowMaps = {};
8815
+ internalData.mergeBodyColMaps = {};
8816
+ internalData.mergeFooterRowMaps = {};
8817
+ internalData.mergeFooterColMaps = {};
8786
8818
  }
8787
8819
  const tableData = scrollYLoad ? fullList.slice(scrollYStore.startIndex, scrollYStore.endIndex) : fullList.slice(0);
8788
8820
  const visibleDataRowIdMaps = {};
@@ -9744,22 +9776,31 @@ export default defineVxeComponent({
9744
9776
  handleSelectRow({ row }, checked, isForce) {
9745
9777
  $xeTable.handleBatchSelectRows([row], checked, isForce);
9746
9778
  },
9779
+ handleUpdateHeaderMerge() {
9780
+ const { mergeHeaderList } = internalData;
9781
+ const { mergeMaps, mergeRowMaps, mergeColMaps } = buildMergeData(mergeHeaderList);
9782
+ internalData.mergeHeaderCellMaps = mergeMaps;
9783
+ internalData.mergeHeaderRowMaps = mergeRowMaps;
9784
+ internalData.mergeHeaderColMaps = mergeColMaps;
9785
+ reactData.mergeHeadFlag++;
9786
+ },
9747
9787
  /**
9748
9788
  * 处理合并
9749
9789
  */
9750
9790
  handleUpdateBodyMerge() {
9751
9791
  const { mergeBodyList } = internalData;
9752
- internalData.mergeBodyCellMaps = buildMergeData(mergeBodyList);
9792
+ const { mergeMaps, mergeRowMaps, mergeColMaps } = buildMergeData(mergeBodyList);
9793
+ internalData.mergeBodyCellMaps = mergeMaps;
9794
+ internalData.mergeBodyRowMaps = mergeRowMaps;
9795
+ internalData.mergeBodyColMaps = mergeColMaps;
9753
9796
  reactData.mergeBodyFlag++;
9754
9797
  },
9755
- handleUpdateHeaderMerge() {
9756
- const { mergeHeaderList } = internalData;
9757
- internalData.mergeHeaderCellMaps = buildMergeData(mergeHeaderList);
9758
- reactData.mergeHeadFlag++;
9759
- },
9760
9798
  handleUpdateFooterMerge() {
9761
9799
  const { mergeFooterList } = internalData;
9762
- internalData.mergeFooterCellMaps = buildMergeData(mergeFooterList);
9800
+ const { mergeMaps, mergeRowMaps, mergeColMaps } = buildMergeData(mergeFooterList);
9801
+ internalData.mergeFooterCellMaps = mergeMaps;
9802
+ internalData.mergeFooterRowMaps = mergeRowMaps;
9803
+ internalData.mergeFooterColMaps = mergeColMaps;
9763
9804
  reactData.mergeFootFlag++;
9764
9805
  },
9765
9806
  handleAggregateSummaryData() {
@@ -11901,8 +11942,9 @@ export default defineVxeComponent({
11901
11942
  if (isRollX) {
11902
11943
  evnt.preventDefault();
11903
11944
  internalData.inWheelScroll = true;
11904
- if (browseObj.firefox || browseObj.safari) {
11905
- const currLeftNum = scrollLeft;
11945
+ wheelScrollLeftTo(scrollLeft, (offsetLeft) => {
11946
+ internalData.inWheelScroll = true;
11947
+ const currLeftNum = offsetLeft;
11906
11948
  setScrollLeft(xHandleEl, currLeftNum);
11907
11949
  setScrollLeft(bodyScrollElem, currLeftNum);
11908
11950
  setScrollLeft(headerScrollElem, currLeftNum);
@@ -11914,30 +11956,14 @@ export default defineVxeComponent({
11914
11956
  type: 'table',
11915
11957
  fixed: ''
11916
11958
  });
11917
- }
11918
- else {
11919
- wheelScrollLeftTo(scrollLeft, (offsetLeft) => {
11920
- internalData.inWheelScroll = true;
11921
- const currLeftNum = offsetLeft;
11922
- setScrollLeft(xHandleEl, currLeftNum);
11923
- setScrollLeft(bodyScrollElem, currLeftNum);
11924
- setScrollLeft(headerScrollElem, currLeftNum);
11925
- setScrollLeft(footerScrollElem, currLeftNum);
11926
- if (scrollXLoad) {
11927
- $xeTable.triggerScrollXEvent(evnt);
11928
- }
11929
- $xeTable.handleScrollEvent(evnt, isRollY, isRollX, bodyScrollElem.scrollTop, currLeftNum, {
11930
- type: 'table',
11931
- fixed: ''
11932
- });
11933
- });
11934
- }
11959
+ });
11935
11960
  }
11936
11961
  if (isRollY) {
11937
11962
  evnt.preventDefault();
11938
11963
  internalData.inWheelScroll = true;
11939
- if (browseObj.firefox || browseObj.safari) {
11940
- const currTopNum = scrollTop;
11964
+ wheelScrollTopTo(scrollTop, (offsetTop) => {
11965
+ internalData.inWheelScroll = true;
11966
+ const currTopNum = offsetTop;
11941
11967
  setScrollTop(yHandleEl, currTopNum);
11942
11968
  setScrollTop(bodyScrollElem, currTopNum);
11943
11969
  setScrollTop(leftScrollElem, currTopNum);
@@ -11947,30 +11973,11 @@ export default defineVxeComponent({
11947
11973
  if (scrollYLoad) {
11948
11974
  $xeTable.triggerScrollYEvent(evnt);
11949
11975
  }
11950
- $xeTable.handleScrollEvent(evnt, isRollY, isRollX, currTopNum, bodyScrollElem.scrollLeft, {
11976
+ $xeTable.handleScrollEvent(evnt, isRollY, isRollX, offsetTop, bodyScrollElem.scrollLeft, {
11951
11977
  type: 'table',
11952
11978
  fixed: ''
11953
11979
  });
11954
- }
11955
- else {
11956
- scrollTopTo(scrollTop - currScrollTop, (offsetTop) => {
11957
- internalData.inWheelScroll = true;
11958
- const currTopNum = bodyScrollElem.scrollTop + offsetTop;
11959
- setScrollTop(yHandleEl, currTopNum);
11960
- setScrollTop(bodyScrollElem, currTopNum);
11961
- setScrollTop(leftScrollElem, currTopNum);
11962
- setScrollTop(rightScrollElem, currTopNum);
11963
- setScrollTop(rowExpandEl, currTopNum);
11964
- syncGanttScrollTop(currTopNum);
11965
- if (scrollYLoad) {
11966
- $xeTable.triggerScrollYEvent(evnt);
11967
- }
11968
- $xeTable.handleScrollEvent(evnt, isRollY, isRollX, currTopNum, bodyScrollElem.scrollLeft, {
11969
- type: 'table',
11970
- fixed: ''
11971
- });
11972
- });
11973
- }
11980
+ });
11974
11981
  }
11975
11982
  },
11976
11983
  triggerVirtualScrollXEvent(evnt) {
@@ -13422,6 +13429,8 @@ export default defineVxeComponent({
13422
13429
  // const keyboardOpts = computeKeyboardOpts.value
13423
13430
  const rowDragOpts = computeRowDragOpts.value;
13424
13431
  const areaOpts = computeAreaOpts.value;
13432
+ const sortOpts = computeSortOpts.value;
13433
+ const filterOpts = computeFilterOpts.value;
13425
13434
  const { groupFields } = aggregateOpts;
13426
13435
  if ($xeGantt) {
13427
13436
  const { refClassifyWrapperElem } = $xeGantt.getRefMaps();
@@ -13461,6 +13470,14 @@ export default defineVxeComponent({
13461
13470
  if (treeConfig && !treeOpts.transform && props.stripe) {
13462
13471
  warnLog('vxe.error.noTree', ['stripe']);
13463
13472
  }
13473
+ if (treeConfig && !treeOpts.transform) {
13474
+ if (sortOpts.isDeep) {
13475
+ warnLog('vxe.error.reqSupportProp', ['transform=false', 'sort-config.isDeep=false']);
13476
+ }
13477
+ if (filterOpts.isDeep) {
13478
+ warnLog('vxe.error.reqSupportProp', ['transform=false', 'filter-config.isDeep=false']);
13479
+ }
13480
+ }
13464
13481
  if (props.showFooter && !(props.footerMethod || props.footerData)) {
13465
13482
  warnLog('vxe.error.reqProp', ['footer-data | footer-method']);
13466
13483
  }
@@ -87,16 +87,22 @@ export function createInternalData() {
87
87
  mergeHeaderMaps: {},
88
88
  // 已合并单元格数据集合
89
89
  mergeHeaderCellMaps: {},
90
+ mergeHeaderRowMaps: {},
91
+ mergeHeaderColMaps: {},
90
92
  // 合并单元格的数据
91
93
  mergeBodyList: [],
92
94
  mergeBodyMaps: {},
93
95
  // 已合并单元格数据集合
94
96
  mergeBodyCellMaps: {},
97
+ mergeBodyRowMaps: {},
98
+ mergeBodyColMaps: {},
95
99
  // 合并表尾的数据
96
100
  mergeFooterList: [],
97
101
  mergeFooterMaps: {},
98
102
  // 已合并表尾数据集合
99
103
  mergeFooterCellMaps: {},
104
+ mergeFooterRowMaps: {},
105
+ mergeFooterColMaps: {},
100
106
  // 已展开的行集合
101
107
  rowExpandedMaps: {},
102
108
  // 懒加载中的展开行的集合
@@ -2507,12 +2507,12 @@
2507
2507
  }
2508
2508
 
2509
2509
  /*header*/
2510
- .vxe-table .vxe-table--header-wrapper {
2511
- color: var(--vxe-ui-table-header-font-color);
2512
- }
2513
2510
  .vxe-table {
2514
2511
  /*排序*/
2515
2512
  }
2513
+ .vxe-table .vxe-table--header-wrapper {
2514
+ color: var(--vxe-ui-table-header-font-color);
2515
+ }
2516
2516
  .vxe-table .vxe-cell--sort {
2517
2517
  text-align: center;
2518
2518
  position: relative;
@@ -2866,6 +2866,21 @@
2866
2866
  color: var(--vxe-ui-font-color);
2867
2867
  font-family: var(--vxe-ui-font-family);
2868
2868
  direction: ltr;
2869
+ /*边框*/
2870
+ /*边框线*/
2871
+ /*树形节点*/
2872
+ /*行分组*/
2873
+ /*单元格高度*/
2874
+ /*溢出列*/
2875
+ /*展开行*/
2876
+ /*拖拽列*/
2877
+ /*拖拽行把柄*/
2878
+ /*暂无数据*/
2879
+ /*校验不通过*/
2880
+ /*已废弃,旧的校验样式**/
2881
+ /*单元格标记删除状态*/
2882
+ /*单元格编辑状态*/
2883
+ /*可编辑*/
2869
2884
  }
2870
2885
  .vxe-table--render-default .vxe-table--body-wrapper {
2871
2886
  background-color: var(--vxe-ui-layout-background-color);
@@ -3034,9 +3049,6 @@
3034
3049
  .vxe-table--render-default .vxe-body--row.row--hover.row--current > .vxe-body--column {
3035
3050
  background-color: var(--vxe-ui-table-row-hover-current-background-color);
3036
3051
  }
3037
- .vxe-table--render-default {
3038
- /*边框*/
3039
- }
3040
3052
  .vxe-table--render-default.border--default.sy-pos--right .vxe-table--scroll-y-top-corner, .vxe-table--render-default.border--full.sy-pos--right .vxe-table--scroll-y-top-corner, .vxe-table--render-default.border--outer.sy-pos--right .vxe-table--scroll-y-top-corner, .vxe-table--render-default.border--inner.sy-pos--right .vxe-table--scroll-y-top-corner {
3041
3053
  background-image: linear-gradient(var(--vxe-ui-table-border-color), var(--vxe-ui-table-border-color)), linear-gradient(var(--vxe-ui-table-border-color), var(--vxe-ui-table-border-color));
3042
3054
  background-repeat: no-repeat;
@@ -3401,9 +3413,6 @@
3401
3413
  width: 0;
3402
3414
  float: left;
3403
3415
  }
3404
- .vxe-table--render-default {
3405
- /*边框线*/
3406
- }
3407
3416
  .vxe-table--render-default .vxe-table--border-line {
3408
3417
  position: absolute;
3409
3418
  top: 0;
@@ -3414,9 +3423,6 @@
3414
3423
  pointer-events: none;
3415
3424
  border: var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color);
3416
3425
  }
3417
- .vxe-table--render-default {
3418
- /*树形节点*/
3419
- }
3420
3426
  .vxe-table--render-default .vxe-tree--line-wrapper {
3421
3427
  position: relative;
3422
3428
  display: block;
@@ -3463,9 +3469,6 @@
3463
3469
  user-select: none;
3464
3470
  cursor: pointer;
3465
3471
  }
3466
- .vxe-table--render-default {
3467
- /*行分组*/
3468
- }
3469
3472
  .vxe-table--render-default .vxe-row-group--node-btn:hover {
3470
3473
  color: var(--vxe-ui-font-color);
3471
3474
  }
@@ -3474,9 +3477,6 @@
3474
3477
  color: var(--vxe-ui-font-lighten-color);
3475
3478
  transition: transform 0.1s ease-in-out;
3476
3479
  }
3477
- .vxe-table--render-default {
3478
- /*单元格高度*/
3479
- }
3480
3480
  .vxe-table--render-default .vxe-body--column.col--ellipsis > .vxe-cell .vxe-row-group-cell,
3481
3481
  .vxe-table--render-default .vxe-body--column.col--ellipsis > .vxe-cell .vxe-tree-cell {
3482
3482
  overflow: hidden;
@@ -3497,9 +3497,6 @@
3497
3497
  flex-direction: row;
3498
3498
  align-items: center;
3499
3499
  }
3500
- .vxe-table--render-default {
3501
- /*溢出列*/
3502
- }
3503
3500
  .vxe-table--render-default .vxe-header--column:not(.col--active).col--ellipsis > .vxe-cell,
3504
3501
  .vxe-table--render-default .vxe-body--column:not(.col--active).col--ellipsis > .vxe-cell,
3505
3502
  .vxe-table--render-default .vxe-footer--column:not(.col--active).col--ellipsis > .vxe-cell {
@@ -3533,9 +3530,6 @@
3533
3530
  flex-direction: row;
3534
3531
  align-items: center;
3535
3532
  }
3536
- .vxe-table--render-default {
3537
- /*展开行*/
3538
- }
3539
3533
  .vxe-table--render-default .vxe-table--row-expanded-wrapper {
3540
3534
  position: absolute;
3541
3535
  top: 0;
@@ -3606,18 +3600,12 @@
3606
3600
  overflow: auto;
3607
3601
  outline: 0;
3608
3602
  }
3609
- .vxe-table--render-default {
3610
- /*拖拽列*/
3611
- }
3612
3603
  .vxe-table--render-default .vxe-table--column.col--drag-move {
3613
3604
  transition: transform 0.5s ease;
3614
3605
  }
3615
3606
  .vxe-table--render-default .vxe-table--column.col--drag-origin > .vxe-cell {
3616
3607
  opacity: 0.3;
3617
3608
  }
3618
- .vxe-table--render-default {
3619
- /*拖拽行把柄*/
3620
- }
3621
3609
  .vxe-table--render-default .vxe-cell--drag-handle {
3622
3610
  -webkit-user-select: none;
3623
3611
  -moz-user-select: none;
@@ -3681,9 +3669,6 @@
3681
3669
  .vxe-table--render-default.size--mini .vxe-cell--radio {
3682
3670
  font-size: var(--vxe-radio-font-size-mini);
3683
3671
  }
3684
- .vxe-table--render-default {
3685
- /*暂无数据*/
3686
- }
3687
3672
  .vxe-table--render-default .vxe-table--empty-placeholder,
3688
3673
  .vxe-table--render-default .vxe-table--empty-block {
3689
3674
  color: var(--vxe-ui-input-placeholder-color);
@@ -3724,9 +3709,6 @@
3724
3709
  .vxe-table--render-default .vxe-body--column.col--selected {
3725
3710
  box-shadow: inset 0px 0px 0px 2px var(--vxe-ui-font-primary-color);
3726
3711
  }
3727
- .vxe-table--render-default {
3728
- /*校验不通过*/
3729
- }
3730
3712
  .vxe-table--render-default .vxe-body--column .vxe-cell--valid-error-tip {
3731
3713
  width: 100%;
3732
3714
  position: absolute;
@@ -3783,9 +3765,6 @@
3783
3765
  .vxe-table--render-default.valid-msg--full .vxe-body--row:last-child .vxe-cell--valid-error-tip {
3784
3766
  top: calc(100% - 1.3em);
3785
3767
  }
3786
- .vxe-table--render-default {
3787
- /*已废弃,旧的校验样式**/
3788
- }
3789
3768
  .vxe-table--render-default.old-cell-valid .vxe-body--column.col--valid-error .vxe-cell--valid-error-tip {
3790
3769
  width: 320px;
3791
3770
  position: absolute;
@@ -3813,9 +3792,6 @@
3813
3792
  transform: translateX(0);
3814
3793
  text-align: left;
3815
3794
  }
3816
- .vxe-table--render-default {
3817
- /*单元格标记删除状态*/
3818
- }
3819
3795
  .vxe-table--render-default .vxe-body--row.row--pending {
3820
3796
  color: var(--vxe-ui-font-disabled-color);
3821
3797
  opacity: 0.5;
@@ -3835,9 +3811,6 @@
3835
3811
  border-bottom: 1px solid var(--vxe-ui-table-validate-error-color);
3836
3812
  z-index: 1;
3837
3813
  }
3838
- .vxe-table--render-default {
3839
- /*单元格编辑状态*/
3840
- }
3841
3814
  .vxe-table--render-default .vxe-body--row.row--new > .vxe-body--column {
3842
3815
  position: relative;
3843
3816
  }
@@ -3864,9 +3837,6 @@
3864
3837
  border-color: transparent var(--vxe-ui-table-cell-dirty-update-color) transparent transparent;
3865
3838
  transform: rotate(45deg);
3866
3839
  }
3867
- .vxe-table--render-default {
3868
- /*可编辑*/
3869
- }
3870
3840
  .vxe-table--render-default.vxe-editable.cell--highlight .vxe-body--column.col--active {
3871
3841
  box-shadow: inset 0px 0px 0px 2px var(--vxe-ui-font-primary-color);
3872
3842
  }
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.18.7";
3
+ export const version = "4.18.9";
4
4
  VxeUI.version = version;
5
5
  VxeUI.tableVersion = version;
6
6
  VxeUI.setConfig({
package/es/ui/src/dom.js CHANGED
@@ -206,3 +206,24 @@ export function scrollTopTo(diffNum, cb) {
206
206
  };
207
207
  requestAnimationFrame(step);
208
208
  }
209
+ let wtlFrame;
210
+ export function wheelScrollLeftTo(scrollLeft, cb) {
211
+ if (wtlFrame) {
212
+ cancelAnimationFrame(wtlFrame);
213
+ }
214
+ wtlFrame = requestAnimationFrame(() => {
215
+ cb(scrollLeft);
216
+ wtlFrame = null;
217
+ });
218
+ }
219
+ let wtaFrame;
220
+ export function wheelScrollTopTo(diffNum, cb) {
221
+ if (wtaFrame) {
222
+ cancelAnimationFrame(wtaFrame);
223
+ }
224
+ wtaFrame = requestAnimationFrame(() => {
225
+ const offsetTop = diffNum;
226
+ cb(offsetTop);
227
+ wtaFrame = null;
228
+ });
229
+ }
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.18.7"}`;
3
+ const version = `table v${"4.18.9"}`;
4
4
  export const warnLog = log.create('warn', version);
5
5
  export const errLog = log.create('error', version);