vxe-table 3.20.6 → 3.20.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 (144) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +106 -106
  3. package/es/index.esm.js +2 -1
  4. package/es/style.css +1 -1
  5. package/es/table/src/methods.js +75 -78
  6. package/es/table/src/table.js +14 -2
  7. package/es/table/src/util.js +6 -0
  8. package/es/table/style.css +18 -48
  9. package/es/ui/index.js +1 -1
  10. package/es/ui/src/dom.js +19 -20
  11. package/es/ui/src/log.js +1 -1
  12. package/es/vxe-table/style.css +18 -48
  13. package/lib/index.common.js +2 -1
  14. package/lib/index.umd.js +1915 -3227
  15. package/lib/index.umd.min.js +1 -1
  16. package/lib/style.css +1 -1
  17. package/lib/table/src/methods.js +12 -10
  18. package/lib/table/src/methods.min.js +1 -1
  19. package/lib/table/src/table.js +13 -1
  20. package/lib/table/src/table.min.js +1 -1
  21. package/lib/table/src/util.js +6 -0
  22. package/lib/table/src/util.min.js +1 -1
  23. package/lib/table/style/style.css +18 -48
  24. package/lib/ui/index.js +1 -1
  25. package/lib/ui/index.min.js +1 -1
  26. package/lib/ui/src/dom.js +21 -20
  27. package/lib/ui/src/dom.min.js +1 -1
  28. package/lib/ui/src/log.js +1 -1
  29. package/lib/ui/src/log.min.js +1 -1
  30. package/lib/v-x-e-table/index.js +2 -1
  31. package/lib/v-x-e-table/index.min.js +1 -1
  32. package/lib/vxe-colgroup/index.js +2 -1
  33. package/lib/vxe-colgroup/index.min.js +1 -1
  34. package/lib/vxe-column/index.js +2 -1
  35. package/lib/vxe-column/index.min.js +1 -1
  36. package/lib/vxe-grid/index.js +2 -1
  37. package/lib/vxe-grid/index.min.js +1 -1
  38. package/lib/vxe-table/index.js +2 -1
  39. package/lib/vxe-table/index.min.js +1 -1
  40. package/lib/vxe-table/style/style.css +18 -48
  41. package/lib/vxe-toolbar/index.js +2 -1
  42. package/lib/vxe-toolbar/index.min.js +1 -1
  43. package/lib/vxe-ui/index.js +2 -1
  44. package/lib/vxe-ui/index.min.js +1 -1
  45. package/lib/vxe-v-x-e-table/index.js +2 -1
  46. package/lib/vxe-v-x-e-table/index.min.js +1 -1
  47. package/package.json +93 -93
  48. package/packages/colgroup/index.ts +22 -22
  49. package/packages/column/index.ts +22 -22
  50. package/packages/components.ts +42 -42
  51. package/packages/grid/index.ts +22 -22
  52. package/packages/grid/src/grid.ts +1935 -1935
  53. package/packages/index.ts +4 -4
  54. package/packages/locale/lang/ar-EG.ts +832 -832
  55. package/packages/locale/lang/de-DE.ts +832 -832
  56. package/packages/locale/lang/en-US.ts +832 -832
  57. package/packages/locale/lang/es-ES.ts +832 -832
  58. package/packages/locale/lang/fr-FR.ts +832 -832
  59. package/packages/locale/lang/hu-HU.ts +832 -832
  60. package/packages/locale/lang/hy-AM.ts +832 -832
  61. package/packages/locale/lang/id-ID.ts +832 -832
  62. package/packages/locale/lang/it-IT.ts +832 -832
  63. package/packages/locale/lang/ja-JP.ts +832 -832
  64. package/packages/locale/lang/ko-KR.ts +832 -832
  65. package/packages/locale/lang/ms-MY.ts +832 -832
  66. package/packages/locale/lang/nb-NO.ts +832 -832
  67. package/packages/locale/lang/pt-BR.ts +832 -832
  68. package/packages/locale/lang/ru-RU.ts +832 -832
  69. package/packages/locale/lang/th-TH.ts +832 -832
  70. package/packages/locale/lang/ug-CN.ts +832 -832
  71. package/packages/locale/lang/uk-UA.ts +832 -832
  72. package/packages/locale/lang/uz-UZ.ts +832 -832
  73. package/packages/locale/lang/vi-VN.ts +832 -832
  74. package/packages/locale/lang/zh-CHT.ts +832 -832
  75. package/packages/locale/lang/zh-CN.ts +832 -832
  76. package/packages/locale/lang/zh-HK.ts +3 -3
  77. package/packages/locale/lang/zh-MO.ts +3 -3
  78. package/packages/locale/lang/zh-TC.ts +3 -3
  79. package/packages/locale/lang/zh-TW.ts +3 -3
  80. package/packages/table/index.ts +49 -49
  81. package/packages/table/module/custom/mixin.ts +369 -369
  82. package/packages/table/module/custom/panel.ts +1461 -1461
  83. package/packages/table/module/edit/mixin.ts +1123 -1123
  84. package/packages/table/module/export/export-panel.ts +658 -658
  85. package/packages/table/module/export/import-panel.ts +319 -319
  86. package/packages/table/module/export/mixin.ts +1693 -1693
  87. package/packages/table/module/export/util.ts +24 -24
  88. package/packages/table/module/filter/mixin.ts +507 -507
  89. package/packages/table/module/filter/panel.ts +329 -329
  90. package/packages/table/module/keyboard/mixin.ts +513 -513
  91. package/packages/table/module/menu/mixin.ts +329 -329
  92. package/packages/table/module/menu/panel.ts +212 -212
  93. package/packages/table/module/validator/mixin.ts +626 -626
  94. package/packages/table/render/index.ts +1456 -1456
  95. package/packages/table/src/body.ts +969 -969
  96. package/packages/table/src/cell.ts +1285 -1285
  97. package/packages/table/src/column.ts +205 -205
  98. package/packages/table/src/columnInfo.ts +228 -228
  99. package/packages/table/src/footer.ts +388 -388
  100. package/packages/table/src/group.ts +51 -51
  101. package/packages/table/src/header.ts +602 -602
  102. package/packages/table/src/methods.ts +12936 -12939
  103. package/packages/table/src/props.ts +311 -311
  104. package/packages/table/src/store.ts +15 -15
  105. package/packages/table/src/table.ts +2513 -2502
  106. package/packages/table/src/util.ts +1018 -1012
  107. package/packages/toolbar/index.ts +18 -18
  108. package/packages/toolbar/src/toolbar.ts +856 -856
  109. package/packages/ui/index.ts +530 -530
  110. package/packages/ui/src/anime.ts +52 -52
  111. package/packages/ui/src/comp.ts +3 -3
  112. package/packages/ui/src/dom.ts +237 -236
  113. package/packages/ui/src/log.ts +8 -8
  114. package/packages/ui/src/utils.ts +56 -56
  115. package/packages/ui/src/vn.ts +65 -65
  116. package/packages/v-x-e-table/index.ts +4 -4
  117. package/styles/all.scss +7 -7
  118. package/styles/base.scss +16 -16
  119. package/styles/components/grid.scss +89 -89
  120. package/styles/components/icon.scss +225 -225
  121. package/styles/components/old-icon.scss +715 -715
  122. package/styles/components/table-module/all.scss +6 -6
  123. package/styles/components/table-module/custom.scss +527 -527
  124. package/styles/components/table-module/export.scss +130 -130
  125. package/styles/components/table-module/filter.scss +130 -130
  126. package/styles/components/table-module/menu.scss +81 -81
  127. package/styles/components/table.scss +2679 -2679
  128. package/styles/components/toolbar.scss +119 -119
  129. package/styles/default.scss +2 -2
  130. package/styles/helpers/baseMixin.scss +95 -95
  131. package/styles/index.scss +3 -3
  132. package/styles/modules.scss +5 -5
  133. package/styles/theme/base.scss +93 -93
  134. package/styles/theme/dark.scss +49 -49
  135. package/styles/theme/light.scss +44 -44
  136. package/styles/variable.scss +43 -43
  137. package/types/all.d.ts +53 -53
  138. package/types/index.d.ts +4 -4
  139. /package/es/{iconfont.1773972972913.ttf → iconfont.1774240303597.ttf} +0 -0
  140. /package/es/{iconfont.1773972972913.woff → iconfont.1774240303597.woff} +0 -0
  141. /package/es/{iconfont.1773972972913.woff2 → iconfont.1774240303597.woff2} +0 -0
  142. /package/lib/{iconfont.1773972972913.ttf → iconfont.1774240303597.ttf} +0 -0
  143. /package/lib/{iconfont.1773972972913.woff → iconfont.1774240303597.woff} +0 -0
  144. /package/lib/{iconfont.1773972972913.woff2 → iconfont.1774240303597.woff2} +0 -0
@@ -1,5 +1,5 @@
1
1
  import XEUtils from 'xe-utils';
2
- import { getTpImg, isPx, isScale, hasClass, addClass, removeClass, scrollTopTo, getEventTargetNode, getPaddingTopBottomSize, setScrollTop, setScrollLeft, toCssUnit, hasControlKey, checkTargetElement } from '../../ui/src/dom';
2
+ import { getTpImg, isPx, isScale, hasClass, addClass, removeClass, wheelScrollLeftTo, wheelScrollTopTo, getEventTargetNode, getPaddingTopBottomSize, setScrollTop, setScrollLeft, toCssUnit, hasControlKey, checkTargetElement } from '../../ui/src/dom';
3
3
  import { getLastZIndex, nextZIndex, hasChildrenList, getFuncText, isEnableConf, formatText, eqEmptyValue } from '../../ui/src/utils';
4
4
  import { VxeUI } from '../../ui';
5
5
  import Cell from './cell';
@@ -1838,32 +1838,46 @@ function handleVirtualYVisible($xeTable) {
1838
1838
  }
1839
1839
  return { toVisibleIndex: 0, visibleSize: 6 };
1840
1840
  }
1841
- function calculateMergerOffsetIndex(list, offsetItem, type) {
1842
- for (let mcIndex = 0, len = list.length; mcIndex < len; mcIndex++) {
1843
- const mergeItem = list[mcIndex];
1844
- const { startIndex, endIndex } = offsetItem;
1845
- const mergeStartIndex = mergeItem[type];
1846
- const mergeSpanNumber = mergeItem[type + 'span'];
1847
- const mergeEndIndex = mergeStartIndex + mergeSpanNumber;
1848
- if (mergeStartIndex < startIndex && startIndex < mergeEndIndex) {
1849
- offsetItem.startIndex = mergeStartIndex;
1850
- }
1851
- if (mergeStartIndex < endIndex && endIndex < mergeEndIndex) {
1852
- offsetItem.endIndex = mergeEndIndex;
1853
- }
1854
- if (offsetItem.startIndex !== startIndex || offsetItem.endIndex !== endIndex) {
1855
- mcIndex = -1;
1841
+ function calculateMergerOffsetIndex(list, mergeMaps, offsetItem, type) {
1842
+ const mKey = `${offsetItem.startIndex}:${offsetItem.endIndex}`;
1843
+ const mObj = mergeMaps[mKey];
1844
+ // 缓存
1845
+ if (mObj) {
1846
+ offsetItem.startIndex = mObj.startIndex;
1847
+ offsetItem.endIndex = mObj.endIndex;
1848
+ }
1849
+ else {
1850
+ for (let mcIndex = 0, len = list.length; mcIndex < len; mcIndex++) {
1851
+ const mergeItem = list[mcIndex];
1852
+ const { startIndex, endIndex } = offsetItem;
1853
+ const mergeStartIndex = mergeItem[type];
1854
+ const mergeSpanNumber = mergeItem[type + 'span'];
1855
+ const mergeEndIndex = mergeStartIndex + mergeSpanNumber;
1856
+ if (mergeStartIndex < startIndex && startIndex < mergeEndIndex) {
1857
+ offsetItem.startIndex = mergeStartIndex;
1858
+ }
1859
+ if (mergeStartIndex < endIndex && endIndex < mergeEndIndex) {
1860
+ offsetItem.endIndex = mergeEndIndex;
1861
+ }
1862
+ if (offsetItem.startIndex !== startIndex || offsetItem.endIndex !== endIndex) {
1863
+ mcIndex = -1;
1864
+ }
1856
1865
  }
1866
+ mergeMaps[mKey] = offsetItem;
1857
1867
  }
1858
1868
  }
1859
1869
  function buildMergeData(mergeConfigs) {
1860
1870
  const mergeMaps = {};
1871
+ const mergeRowMaps = {};
1872
+ const mergeColMaps = {};
1861
1873
  if (mergeConfigs && mergeConfigs.length) {
1862
1874
  for (let mIndex = 0; mIndex < mergeConfigs.length; mIndex++) {
1863
1875
  const { row: _rowIndex, col: _columnIndex, rowspan: mergeRowspan, colspan: mergeColspan } = mergeConfigs[mIndex];
1864
1876
  for (let i = 0; i < mergeRowspan; i++) {
1877
+ const currRIndex = _rowIndex + i;
1865
1878
  for (let j = 0; j < mergeColspan; j++) {
1866
- mergeMaps[`${_rowIndex + i}:${_columnIndex + j}`] = !i && !j
1879
+ const currCIndex = _columnIndex + j;
1880
+ mergeMaps[`${currRIndex}:${currCIndex}`] = !i && !j
1867
1881
  ? {
1868
1882
  rowspan: mergeRowspan,
1869
1883
  colspan: mergeColspan
@@ -1876,7 +1890,7 @@ function buildMergeData(mergeConfigs) {
1876
1890
  }
1877
1891
  }
1878
1892
  }
1879
- return mergeMaps;
1893
+ return { mergeMaps, mergeRowMaps, mergeColMaps };
1880
1894
  }
1881
1895
  function handleBodyMerge($xeTable, merges) {
1882
1896
  const internalData = $xeTable;
@@ -3510,7 +3524,7 @@ function loadScrollXData($xeTable) {
3510
3524
  const reactData = $xeTable;
3511
3525
  const internalData = $xeTable;
3512
3526
  const { isScrollXBig } = reactData;
3513
- const { mergeBodyList, mergeFooterList, scrollXStore } = internalData;
3527
+ const { mergeBodyList, mergeFooterList, mergeBodyColMaps, scrollXStore } = internalData;
3514
3528
  const { preloadSize, startIndex, endIndex, offsetSize } = scrollXStore;
3515
3529
  const { toVisibleIndex, visibleSize } = handleVirtualXVisible($xeTable);
3516
3530
  const offsetItem = {
@@ -3519,7 +3533,7 @@ function loadScrollXData($xeTable) {
3519
3533
  };
3520
3534
  scrollXStore.visibleStartIndex = toVisibleIndex - 1;
3521
3535
  scrollXStore.visibleEndIndex = toVisibleIndex + visibleSize + 1;
3522
- calculateMergerOffsetIndex(mergeBodyList.concat(mergeFooterList), offsetItem, 'col');
3536
+ calculateMergerOffsetIndex(mergeBodyList.concat(mergeFooterList), mergeBodyColMaps, offsetItem, 'col');
3523
3537
  const { startIndex: offsetStartIndex, endIndex: offsetEndIndex } = offsetItem;
3524
3538
  if (toVisibleIndex <= startIndex || toVisibleIndex >= endIndex - visibleSize - 1) {
3525
3539
  if (startIndex !== offsetStartIndex || endIndex !== offsetEndIndex) {
@@ -3741,7 +3755,7 @@ function loadScrollYData($xeTable) {
3741
3755
  const reactData = $xeTable;
3742
3756
  const internalData = $xeTable;
3743
3757
  const { isAllOverflow, isScrollYBig } = reactData;
3744
- const { mergeBodyList, scrollYStore } = internalData;
3758
+ const { mergeBodyList, mergeBodyRowMaps, scrollYStore } = internalData;
3745
3759
  const { preloadSize, startIndex, endIndex, offsetSize } = scrollYStore;
3746
3760
  const autoOffsetYSize = isAllOverflow ? offsetSize : offsetSize + 1;
3747
3761
  const { toVisibleIndex, visibleSize } = handleVirtualYVisible($xeTable);
@@ -3751,7 +3765,7 @@ function loadScrollYData($xeTable) {
3751
3765
  };
3752
3766
  scrollYStore.visibleStartIndex = toVisibleIndex - 1;
3753
3767
  scrollYStore.visibleEndIndex = toVisibleIndex + visibleSize + 1;
3754
- calculateMergerOffsetIndex(mergeBodyList, offsetItem, 'row');
3768
+ calculateMergerOffsetIndex(mergeBodyList, mergeBodyRowMaps, offsetItem, 'row');
3755
3769
  const { startIndex: offsetStartIndex, endIndex: offsetEndIndex } = offsetItem;
3756
3770
  if (toVisibleIndex <= startIndex || toVisibleIndex >= endIndex - visibleSize - 1) {
3757
3771
  if (startIndex !== offsetStartIndex || endIndex !== offsetEndIndex) {
@@ -3909,11 +3923,6 @@ const getWheelSpeed = (lastScrollTime) => {
3909
3923
  }
3910
3924
  return multiple;
3911
3925
  };
3912
- const wheelScrollLeftTo = (scrollLeft, cb) => {
3913
- requestAnimationFrame(() => {
3914
- cb(scrollLeft);
3915
- });
3916
- };
3917
3926
  const syncGanttScrollTop = ($xeTable, scrollTop) => {
3918
3927
  const internalData = $xeTable;
3919
3928
  const $xeGanttView = internalData.xeGanttView;
@@ -4383,6 +4392,13 @@ const tableMethods = {
4383
4392
  updateAfterFullData($xeTable);
4384
4393
  // 如果为虚拟树,将树结构拍平
4385
4394
  fullList = handleVirtualTreeToList($xeTable);
4395
+ // 更新数据后清除合并缓存,涉及分组、筛选、排序等
4396
+ internalData.mergeHeaderRowMaps = {};
4397
+ internalData.mergeHeaderColMaps = {};
4398
+ internalData.mergeBodyRowMaps = {};
4399
+ internalData.mergeBodyColMaps = {};
4400
+ internalData.mergeFooterRowMaps = {};
4401
+ internalData.mergeFooterColMaps = {};
4386
4402
  }
4387
4403
  const tableData = scrollYLoad ? fullList.slice(scrollYStore.startIndex, scrollYStore.endIndex) : fullList.slice(0);
4388
4404
  const visibleDataRowIdMaps = {};
@@ -7382,6 +7398,17 @@ const tableMethods = {
7382
7398
  handleResizeEvent($xeTable);
7383
7399
  $xeTable.updateCellAreas();
7384
7400
  },
7401
+ handleUpdateHeaderMerge() {
7402
+ const $xeTable = this;
7403
+ const reactData = $xeTable;
7404
+ const internalData = $xeTable;
7405
+ const { mergeHeaderList } = internalData;
7406
+ const { mergeMaps, mergeRowMaps, mergeColMaps } = buildMergeData(mergeHeaderList);
7407
+ internalData.mergeHeaderCellMaps = mergeMaps;
7408
+ internalData.mergeHeaderRowMaps = mergeRowMaps;
7409
+ internalData.mergeHeaderColMaps = mergeColMaps;
7410
+ reactData.mergeHeadFlag++;
7411
+ },
7385
7412
  /**
7386
7413
  * 处理合并
7387
7414
  */
@@ -7390,23 +7417,21 @@ const tableMethods = {
7390
7417
  const reactData = $xeTable;
7391
7418
  const internalData = $xeTable;
7392
7419
  const { mergeBodyList } = internalData;
7393
- internalData.mergeBodyCellMaps = buildMergeData(mergeBodyList);
7420
+ const { mergeMaps, mergeRowMaps, mergeColMaps } = buildMergeData(mergeBodyList);
7421
+ internalData.mergeBodyCellMaps = mergeMaps;
7422
+ internalData.mergeBodyRowMaps = mergeRowMaps;
7423
+ internalData.mergeBodyColMaps = mergeColMaps;
7394
7424
  reactData.mergeBodyFlag++;
7395
7425
  },
7396
- handleUpdateHeaderMerge() {
7397
- const $xeTable = this;
7398
- const reactData = $xeTable;
7399
- const internalData = $xeTable;
7400
- const { mergeHeaderList } = internalData;
7401
- internalData.mergeHeaderCellMaps = buildMergeData(mergeHeaderList);
7402
- reactData.mergeHeadFlag++;
7403
- },
7404
7426
  handleUpdateFooterMerge() {
7405
7427
  const $xeTable = this;
7406
7428
  const reactData = $xeTable;
7407
7429
  const internalData = $xeTable;
7408
7430
  const { mergeFooterList } = internalData;
7409
- internalData.mergeFooterCellMaps = buildMergeData(mergeFooterList);
7431
+ const { mergeMaps, mergeRowMaps, mergeColMaps } = buildMergeData(mergeFooterList);
7432
+ internalData.mergeFooterCellMaps = mergeMaps;
7433
+ internalData.mergeFooterRowMaps = mergeRowMaps;
7434
+ internalData.mergeFooterColMaps = mergeColMaps;
7410
7435
  reactData.mergeFootFlag++;
7411
7436
  },
7412
7437
  handleAggregateSummaryData() {
@@ -11540,8 +11565,8 @@ const tableMethods = {
11540
11565
  if (isRollX) {
11541
11566
  evnt.preventDefault();
11542
11567
  internalData.inWheelScroll = true;
11543
- if (browseObj.firefox || browseObj.safari) {
11544
- const currLeftNum = scrollLeft;
11568
+ wheelScrollLeftTo(scrollLeft, (offsetLeft) => {
11569
+ const currLeftNum = offsetLeft;
11545
11570
  setScrollLeft(xHandleEl, currLeftNum);
11546
11571
  setScrollLeft(bodyScrollElem, currLeftNum);
11547
11572
  setScrollLeft(headerScrollElem, currLeftNum);
@@ -11553,28 +11578,13 @@ const tableMethods = {
11553
11578
  type: 'table',
11554
11579
  fixed: ''
11555
11580
  });
11556
- }
11557
- else {
11558
- wheelScrollLeftTo(scrollLeft, (offsetLeft) => {
11559
- const currLeftNum = offsetLeft;
11560
- setScrollLeft(xHandleEl, currLeftNum);
11561
- setScrollLeft(bodyScrollElem, currLeftNum);
11562
- setScrollLeft(headerScrollElem, currLeftNum);
11563
- setScrollLeft(footerScrollElem, currLeftNum);
11564
- if (scrollXLoad) {
11565
- $xeTable.triggerScrollXEvent(evnt);
11566
- }
11567
- $xeTable.handleScrollEvent(evnt, isRollY, isRollX, bodyScrollElem.scrollTop, currLeftNum, {
11568
- type: 'table',
11569
- fixed: ''
11570
- });
11571
- });
11572
- }
11581
+ });
11573
11582
  }
11574
11583
  if (isRollY) {
11575
11584
  evnt.preventDefault();
11576
- if (browseObj.firefox || browseObj.safari) {
11577
- const currTopNum = scrollTop;
11585
+ wheelScrollTopTo(scrollTop, (offsetTop) => {
11586
+ const currTopNum = offsetTop;
11587
+ internalData.inWheelScroll = true;
11578
11588
  setScrollTop(yHandleEl, currTopNum);
11579
11589
  setScrollTop(bodyScrollElem, currTopNum);
11580
11590
  setScrollTop(leftScrollElem, currTopNum);
@@ -11588,26 +11598,7 @@ const tableMethods = {
11588
11598
  type: 'table',
11589
11599
  fixed: ''
11590
11600
  });
11591
- }
11592
- else {
11593
- scrollTopTo(scrollTop - currScrollTop, (offsetTop) => {
11594
- const currTopNum = bodyScrollElem.scrollTop + offsetTop;
11595
- internalData.inWheelScroll = true;
11596
- setScrollTop(yHandleEl, currTopNum);
11597
- setScrollTop(bodyScrollElem, currTopNum);
11598
- setScrollTop(leftScrollElem, currTopNum);
11599
- setScrollTop(rightScrollElem, currTopNum);
11600
- setScrollTop(rowExpandEl, currTopNum);
11601
- syncGanttScrollTop($xeTable, currTopNum);
11602
- if (scrollYLoad) {
11603
- $xeTable.triggerScrollYEvent(evnt);
11604
- }
11605
- $xeTable.handleScrollEvent(evnt, isRollY, isRollX, currTopNum, bodyScrollElem.scrollLeft, {
11606
- type: 'table',
11607
- fixed: ''
11608
- });
11609
- });
11610
- }
11601
+ });
11611
11602
  }
11612
11603
  },
11613
11604
  triggerVirtualScrollXEvent(evnt) {
@@ -12261,6 +12252,8 @@ const tableMethods = {
12261
12252
  internalData.mergeBodyList = [];
12262
12253
  internalData.mergeBodyMaps = {};
12263
12254
  internalData.mergeBodyCellMaps = {};
12255
+ internalData.mergeBodyRowMaps = {};
12256
+ internalData.mergeBodyColMaps = {};
12264
12257
  reactData.mergeBodyFlag++;
12265
12258
  return $xeTable.$nextTick().then(() => {
12266
12259
  return updateStyle($xeTable);
@@ -12304,6 +12297,8 @@ const tableMethods = {
12304
12297
  internalData.mergeHeaderList = [];
12305
12298
  internalData.mergeHeaderMaps = {};
12306
12299
  internalData.mergeHeaderCellMaps = {};
12300
+ internalData.mergeHeaderRowMaps = {};
12301
+ internalData.mergeBodyColMaps = {};
12307
12302
  reactData.mergeHeadFlag++;
12308
12303
  return $xeTable.$nextTick().then(() => {
12309
12304
  return updateStyle($xeTable);
@@ -12367,6 +12362,8 @@ const tableMethods = {
12367
12362
  internalData.mergeFooterList = [];
12368
12363
  internalData.mergeFooterMaps = {};
12369
12364
  internalData.mergeFooterCellMaps = {};
12365
+ internalData.mergeFooterRowMaps = {};
12366
+ internalData.mergeFooterColMaps = {};
12370
12367
  reactData.mergeFootFlag++;
12371
12368
  return $xeTable.$nextTick().then(() => {
12372
12369
  return updateStyle($xeTable);
@@ -29,6 +29,8 @@ function handleUpdateMergeBodyCells($xeTable, merges) {
29
29
  internalData.mergeBodyList = [];
30
30
  internalData.mergeBodyMaps = {};
31
31
  internalData.mergeBodyCellMaps = {};
32
+ internalData.mergeBodyRowMaps = {};
33
+ internalData.mergeBodyColMaps = {};
32
34
  $xeTable.setMergeCells(merges);
33
35
  }
34
36
  function handleUpdateMergeHeaderCells($xeTable, merges) {
@@ -36,6 +38,8 @@ function handleUpdateMergeHeaderCells($xeTable, merges) {
36
38
  internalData.mergeHeaderList = [];
37
39
  internalData.mergeHeaderMaps = {};
38
40
  internalData.mergeHeaderCellMaps = {};
41
+ internalData.mergeHeaderRowMaps = {};
42
+ internalData.mergeBodyColMaps = {};
39
43
  $xeTable.setMergeHeaderCells(merges);
40
44
  }
41
45
  function handleUpdateMergeFooterCells($xeTable, merges) {
@@ -43,6 +47,8 @@ function handleUpdateMergeFooterCells($xeTable, merges) {
43
47
  internalData.mergeFooterList = [];
44
48
  internalData.mergeFooterMaps = {};
45
49
  internalData.mergeFooterCellMaps = {};
50
+ internalData.mergeFooterRowMaps = {};
51
+ internalData.mergeFooterColMaps = {};
46
52
  $xeTable.setMergeFooterCells(merges);
47
53
  }
48
54
  function handleKeyField($xeTable) {
@@ -57,7 +63,7 @@ function updateColumnAllOverflow($xeTable) {
57
63
  const internalData = $xeTable;
58
64
  const { showOverflow } = props;
59
65
  const { isGroup } = reactData;
60
- const { tableFullColumn, collectColumn } = internalData;
66
+ const { fullAllDataRowIdData, tableFullColumn, collectColumn } = internalData;
61
67
  let isAllOverflow = !!showOverflow;
62
68
  const handleFunc = (column) => {
63
69
  if (isAllOverflow && column.showOverflow === false) {
@@ -70,6 +76,9 @@ function updateColumnAllOverflow($xeTable) {
70
76
  else {
71
77
  tableFullColumn.forEach(handleFunc);
72
78
  }
79
+ XEUtils.each(fullAllDataRowIdData, (rowRest) => {
80
+ rowRest.height = 0;
81
+ });
73
82
  reactData.isAllOverflow = isAllOverflow;
74
83
  }
75
84
  /**
@@ -1013,7 +1022,10 @@ export default {
1013
1022
  const lecIndex = leftList.length;
1014
1023
  for (let i = 0; i < mergeBodyList.length; i++) {
1015
1024
  const { col, colspan } = mergeBodyList[i];
1016
- if (col < lecIndex || (col + colspan) > rscIndex) {
1025
+ if (col < lecIndex && col + colspan > lecIndex) {
1026
+ return true;
1027
+ }
1028
+ else if (col < rscIndex && col + colspan > rscIndex) {
1017
1029
  return true;
1018
1030
  }
1019
1031
  }
@@ -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 = "3.20.6";
3
+ export const version = "3.20.8";
4
4
  VxeUI.version = version;
5
5
  VxeUI.tableVersion = version;
6
6
  VxeUI.setConfig({
package/es/ui/src/dom.js CHANGED
@@ -184,25 +184,24 @@ export function triggerEvent(targetElem, type) {
184
184
  export function isNodeElement(elem) {
185
185
  return elem && elem.nodeType === 1;
186
186
  }
187
- export function scrollTopTo(diffNum, cb) {
188
- const duration = Math.abs(diffNum);
189
- const startTime = performance.now();
190
- let countTop = 0;
191
- const step = (timestamp) => {
192
- let progress = (timestamp - startTime) / duration;
193
- if (progress < 0) {
194
- progress = 0;
195
- }
196
- else if (progress > 1) {
197
- progress = 1;
198
- }
199
- const easedProgress = Math.pow(progress, 2);
200
- const offsetTop = Math.floor((diffNum * easedProgress)) - countTop;
201
- countTop += offsetTop;
187
+ let wtlFrame;
188
+ export function wheelScrollLeftTo(scrollLeft, cb) {
189
+ if (wtlFrame) {
190
+ cancelAnimationFrame(wtlFrame);
191
+ }
192
+ wtlFrame = requestAnimationFrame(() => {
193
+ cb(scrollLeft);
194
+ wtlFrame = null;
195
+ });
196
+ }
197
+ let wtaFrame;
198
+ export function wheelScrollTopTo(diffNum, cb) {
199
+ if (wtaFrame) {
200
+ cancelAnimationFrame(wtaFrame);
201
+ }
202
+ wtaFrame = requestAnimationFrame(() => {
203
+ const offsetTop = diffNum;
202
204
  cb(offsetTop);
203
- if (progress < 1) {
204
- requestAnimationFrame(step);
205
- }
206
- };
207
- requestAnimationFrame(step);
205
+ wtaFrame = null;
206
+ });
208
207
  }
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${"3.20.6"}`;
3
+ const version = `table v${"3.20.8"}`;
4
4
  export const warnLog = log.create('warn', version);
5
5
  export const errLog = log.create('error', version);