vxe-table 4.18.6 → 4.18.8

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 +89 -79
  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 +2762 -2833
  16. package/lib/index.umd.min.js +1 -1
  17. package/lib/style.css +1 -1
  18. package/lib/table/src/table.js +15 -12
  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 +14010 -14001
  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.1773972993993.ttf → iconfont.1774240404046.ttf} +0 -0
  144. /package/es/{iconfont.1773972993993.woff → iconfont.1774240404046.woff} +0 -0
  145. /package/es/{iconfont.1773972993993.woff2 → iconfont.1774240404046.woff2} +0 -0
  146. /package/lib/{iconfont.1773972993993.ttf → iconfont.1774240404046.ttf} +0 -0
  147. /package/lib/{iconfont.1773972993993.woff → iconfont.1774240404046.woff} +0 -0
  148. /package/lib/{iconfont.1773972993993.woff2 → iconfont.1774240404046.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) => {
@@ -1560,7 +1584,7 @@ export default defineVxeComponent({
1560
1584
  const updateColumnAllOverflow = () => {
1561
1585
  const { showOverflow } = props;
1562
1586
  const { isGroup } = reactData;
1563
- const { tableFullColumn, collectColumn } = internalData;
1587
+ const { fullAllDataRowIdData, tableFullColumn, collectColumn } = internalData;
1564
1588
  let isAllOverflow = !!showOverflow;
1565
1589
  const handleFunc = (column) => {
1566
1590
  if (isAllOverflow && column.showOverflow === false) {
@@ -1573,6 +1597,9 @@ export default defineVxeComponent({
1573
1597
  else {
1574
1598
  tableFullColumn.forEach(handleFunc);
1575
1599
  }
1600
+ XEUtils.each(fullAllDataRowIdData, (rowRest) => {
1601
+ rowRest.height = 0;
1602
+ });
1576
1603
  reactData.isAllOverflow = isAllOverflow;
1577
1604
  };
1578
1605
  /**
@@ -3762,7 +3789,7 @@ export default defineVxeComponent({
3762
3789
  };
3763
3790
  const loadScrollXData = () => {
3764
3791
  const { isScrollXBig } = reactData;
3765
- const { mergeBodyList, mergeFooterList, scrollXStore } = internalData;
3792
+ const { mergeBodyList, mergeFooterList, mergeBodyRowMaps, scrollXStore } = internalData;
3766
3793
  const { preloadSize, startIndex, endIndex, offsetSize } = scrollXStore;
3767
3794
  const { toVisibleIndex, visibleSize } = handleVirtualXVisible();
3768
3795
  const offsetItem = {
@@ -3771,7 +3798,7 @@ export default defineVxeComponent({
3771
3798
  };
3772
3799
  scrollXStore.visibleStartIndex = toVisibleIndex - 1;
3773
3800
  scrollXStore.visibleEndIndex = toVisibleIndex + visibleSize + 1;
3774
- calculateMergerOffsetIndex(mergeBodyList.concat(mergeFooterList), offsetItem, 'col');
3801
+ calculateMergerOffsetIndex(mergeBodyList.concat(mergeFooterList), mergeBodyRowMaps, offsetItem, 'col');
3775
3802
  const { startIndex: offsetStartIndex, endIndex: offsetEndIndex } = offsetItem;
3776
3803
  if (toVisibleIndex <= startIndex || toVisibleIndex >= endIndex - visibleSize - 1) {
3777
3804
  if (startIndex !== offsetStartIndex || endIndex !== offsetEndIndex) {
@@ -4198,7 +4225,7 @@ export default defineVxeComponent({
4198
4225
  */
4199
4226
  const loadScrollYData = () => {
4200
4227
  const { isAllOverflow, isScrollYBig } = reactData;
4201
- const { mergeBodyList, scrollYStore } = internalData;
4228
+ const { mergeBodyList, mergeBodyColMaps, scrollYStore } = internalData;
4202
4229
  const { preloadSize, startIndex, endIndex, offsetSize } = scrollYStore;
4203
4230
  const autoOffsetYSize = isAllOverflow ? offsetSize : offsetSize + 1;
4204
4231
  const { toVisibleIndex, visibleSize } = handleVirtualYVisible();
@@ -4208,7 +4235,7 @@ export default defineVxeComponent({
4208
4235
  };
4209
4236
  scrollYStore.visibleStartIndex = toVisibleIndex - 1;
4210
4237
  scrollYStore.visibleEndIndex = toVisibleIndex + visibleSize + 1;
4211
- calculateMergerOffsetIndex(mergeBodyList, offsetItem, 'row');
4238
+ calculateMergerOffsetIndex(mergeBodyList, mergeBodyColMaps, offsetItem, 'row');
4212
4239
  const { startIndex: offsetStartIndex, endIndex: offsetEndIndex } = offsetItem;
4213
4240
  if (toVisibleIndex <= startIndex || toVisibleIndex >= endIndex - visibleSize - 1) {
4214
4241
  if (startIndex !== offsetStartIndex || endIndex !== offsetEndIndex) {
@@ -4356,11 +4383,6 @@ export default defineVxeComponent({
4356
4383
  }
4357
4384
  return multiple;
4358
4385
  };
4359
- const wheelScrollLeftTo = (scrollLeft, cb) => {
4360
- requestAnimationFrame(() => {
4361
- cb(scrollLeft);
4362
- });
4363
- };
4364
4386
  const syncGanttScrollTop = (scrollTop) => {
4365
4387
  const $xeGanttView = internalData.xeGanttView;
4366
4388
  if ($xeGanttView) {
@@ -7452,6 +7474,8 @@ export default defineVxeComponent({
7452
7474
  internalData.mergeBodyList = [];
7453
7475
  internalData.mergeBodyMaps = {};
7454
7476
  internalData.mergeBodyCellMaps = {};
7477
+ internalData.mergeBodyRowMaps = {};
7478
+ internalData.mergeBodyColMaps = {};
7455
7479
  reactData.mergeBodyFlag++;
7456
7480
  return nextTick().then(() => {
7457
7481
  return updateStyle();
@@ -7488,6 +7512,8 @@ export default defineVxeComponent({
7488
7512
  internalData.mergeHeaderList = [];
7489
7513
  internalData.mergeHeaderMaps = {};
7490
7514
  internalData.mergeHeaderCellMaps = {};
7515
+ internalData.mergeHeaderRowMaps = {};
7516
+ internalData.mergeBodyColMaps = {};
7491
7517
  reactData.mergeHeadFlag++;
7492
7518
  return nextTick().then(() => {
7493
7519
  return updateStyle();
@@ -7539,6 +7565,8 @@ export default defineVxeComponent({
7539
7565
  internalData.mergeFooterList = [];
7540
7566
  internalData.mergeFooterMaps = {};
7541
7567
  internalData.mergeFooterCellMaps = {};
7568
+ internalData.mergeFooterRowMaps = {};
7569
+ internalData.mergeFooterColMaps = {};
7542
7570
  reactData.mergeFootFlag++;
7543
7571
  return nextTick().then(() => {
7544
7572
  return updateStyle();
@@ -8780,6 +8808,13 @@ export default defineVxeComponent({
8780
8808
  updateAfterFullData();
8781
8809
  // 如果为虚拟树,将树结构拍平
8782
8810
  fullList = handleVirtualTreeToList();
8811
+ // 更新数据后清除合并缓存,涉及分组、筛选、排序等
8812
+ internalData.mergeHeaderRowMaps = {};
8813
+ internalData.mergeHeaderColMaps = {};
8814
+ internalData.mergeBodyRowMaps = {};
8815
+ internalData.mergeBodyColMaps = {};
8816
+ internalData.mergeFooterRowMaps = {};
8817
+ internalData.mergeFooterColMaps = {};
8783
8818
  }
8784
8819
  const tableData = scrollYLoad ? fullList.slice(scrollYStore.startIndex, scrollYStore.endIndex) : fullList.slice(0);
8785
8820
  const visibleDataRowIdMaps = {};
@@ -9741,22 +9776,31 @@ export default defineVxeComponent({
9741
9776
  handleSelectRow({ row }, checked, isForce) {
9742
9777
  $xeTable.handleBatchSelectRows([row], checked, isForce);
9743
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
+ },
9744
9787
  /**
9745
9788
  * 处理合并
9746
9789
  */
9747
9790
  handleUpdateBodyMerge() {
9748
9791
  const { mergeBodyList } = internalData;
9749
- internalData.mergeBodyCellMaps = buildMergeData(mergeBodyList);
9792
+ const { mergeMaps, mergeRowMaps, mergeColMaps } = buildMergeData(mergeBodyList);
9793
+ internalData.mergeBodyCellMaps = mergeMaps;
9794
+ internalData.mergeBodyRowMaps = mergeRowMaps;
9795
+ internalData.mergeBodyColMaps = mergeColMaps;
9750
9796
  reactData.mergeBodyFlag++;
9751
9797
  },
9752
- handleUpdateHeaderMerge() {
9753
- const { mergeHeaderList } = internalData;
9754
- internalData.mergeHeaderCellMaps = buildMergeData(mergeHeaderList);
9755
- reactData.mergeHeadFlag++;
9756
- },
9757
9798
  handleUpdateFooterMerge() {
9758
9799
  const { mergeFooterList } = internalData;
9759
- internalData.mergeFooterCellMaps = buildMergeData(mergeFooterList);
9800
+ const { mergeMaps, mergeRowMaps, mergeColMaps } = buildMergeData(mergeFooterList);
9801
+ internalData.mergeFooterCellMaps = mergeMaps;
9802
+ internalData.mergeFooterRowMaps = mergeRowMaps;
9803
+ internalData.mergeFooterColMaps = mergeColMaps;
9760
9804
  reactData.mergeFootFlag++;
9761
9805
  },
9762
9806
  handleAggregateSummaryData() {
@@ -11898,8 +11942,9 @@ export default defineVxeComponent({
11898
11942
  if (isRollX) {
11899
11943
  evnt.preventDefault();
11900
11944
  internalData.inWheelScroll = true;
11901
- if (browseObj.firefox || browseObj.safari) {
11902
- const currLeftNum = scrollLeft;
11945
+ wheelScrollLeftTo(scrollLeft, (offsetLeft) => {
11946
+ internalData.inWheelScroll = true;
11947
+ const currLeftNum = offsetLeft;
11903
11948
  setScrollLeft(xHandleEl, currLeftNum);
11904
11949
  setScrollLeft(bodyScrollElem, currLeftNum);
11905
11950
  setScrollLeft(headerScrollElem, currLeftNum);
@@ -11911,30 +11956,14 @@ export default defineVxeComponent({
11911
11956
  type: 'table',
11912
11957
  fixed: ''
11913
11958
  });
11914
- }
11915
- else {
11916
- wheelScrollLeftTo(scrollLeft, (offsetLeft) => {
11917
- internalData.inWheelScroll = true;
11918
- const currLeftNum = offsetLeft;
11919
- setScrollLeft(xHandleEl, currLeftNum);
11920
- setScrollLeft(bodyScrollElem, currLeftNum);
11921
- setScrollLeft(headerScrollElem, currLeftNum);
11922
- setScrollLeft(footerScrollElem, currLeftNum);
11923
- if (scrollXLoad) {
11924
- $xeTable.triggerScrollXEvent(evnt);
11925
- }
11926
- $xeTable.handleScrollEvent(evnt, isRollY, isRollX, bodyScrollElem.scrollTop, currLeftNum, {
11927
- type: 'table',
11928
- fixed: ''
11929
- });
11930
- });
11931
- }
11959
+ });
11932
11960
  }
11933
11961
  if (isRollY) {
11934
11962
  evnt.preventDefault();
11935
11963
  internalData.inWheelScroll = true;
11936
- if (browseObj.firefox || browseObj.safari) {
11937
- const currTopNum = scrollTop;
11964
+ wheelScrollTopTo(scrollTop, (offsetTop) => {
11965
+ internalData.inWheelScroll = true;
11966
+ const currTopNum = offsetTop;
11938
11967
  setScrollTop(yHandleEl, currTopNum);
11939
11968
  setScrollTop(bodyScrollElem, currTopNum);
11940
11969
  setScrollTop(leftScrollElem, currTopNum);
@@ -11944,30 +11973,11 @@ export default defineVxeComponent({
11944
11973
  if (scrollYLoad) {
11945
11974
  $xeTable.triggerScrollYEvent(evnt);
11946
11975
  }
11947
- $xeTable.handleScrollEvent(evnt, isRollY, isRollX, currTopNum, bodyScrollElem.scrollLeft, {
11976
+ $xeTable.handleScrollEvent(evnt, isRollY, isRollX, offsetTop, bodyScrollElem.scrollLeft, {
11948
11977
  type: 'table',
11949
11978
  fixed: ''
11950
11979
  });
11951
- }
11952
- else {
11953
- scrollTopTo(scrollTop - currScrollTop, (offsetTop) => {
11954
- internalData.inWheelScroll = true;
11955
- const currTopNum = bodyScrollElem.scrollTop + offsetTop;
11956
- setScrollTop(yHandleEl, currTopNum);
11957
- setScrollTop(bodyScrollElem, currTopNum);
11958
- setScrollTop(leftScrollElem, currTopNum);
11959
- setScrollTop(rightScrollElem, currTopNum);
11960
- setScrollTop(rowExpandEl, currTopNum);
11961
- syncGanttScrollTop(currTopNum);
11962
- if (scrollYLoad) {
11963
- $xeTable.triggerScrollYEvent(evnt);
11964
- }
11965
- $xeTable.handleScrollEvent(evnt, isRollY, isRollX, currTopNum, bodyScrollElem.scrollLeft, {
11966
- type: 'table',
11967
- fixed: ''
11968
- });
11969
- });
11970
- }
11980
+ });
11971
11981
  }
11972
11982
  },
11973
11983
  triggerVirtualScrollXEvent(evnt) {
@@ -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.6";
3
+ export const version = "4.18.8";
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.6"}`;
3
+ const version = `table v${"4.18.8"}`;
4
4
  export const warnLog = log.create('warn', version);
5
5
  export const errLog = log.create('error', version);