vxe-table 4.10.6-beta.6 → 4.10.6-beta.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 (40) hide show
  1. package/es/index.css +1 -1
  2. package/es/index.min.css +1 -1
  3. package/es/style.css +1 -1
  4. package/es/style.min.css +1 -1
  5. package/es/table/src/header.js +7 -2
  6. package/es/table/src/table.js +263 -189
  7. package/es/table/style.css +119 -38
  8. package/es/table/style.min.css +1 -1
  9. package/es/ui/index.js +1 -1
  10. package/es/ui/src/log.js +1 -1
  11. package/es/vxe-table/style.css +119 -38
  12. package/es/vxe-table/style.min.css +1 -1
  13. package/lib/index.css +1 -1
  14. package/lib/index.min.css +1 -1
  15. package/lib/index.umd.js +263 -187
  16. package/lib/index.umd.min.js +1 -1
  17. package/lib/style.css +1 -1
  18. package/lib/style.min.css +1 -1
  19. package/lib/table/src/header.js +10 -2
  20. package/lib/table/src/header.min.js +1 -1
  21. package/lib/table/src/table.js +251 -183
  22. package/lib/table/src/table.min.js +1 -1
  23. package/lib/table/style/style.css +119 -38
  24. package/lib/table/style/style.min.css +1 -1
  25. package/lib/ui/index.js +1 -1
  26. package/lib/ui/index.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/vxe-table/style/style.css +119 -38
  30. package/lib/vxe-table/style/style.min.css +1 -1
  31. package/package.json +1 -1
  32. package/packages/table/src/header.ts +7 -2
  33. package/packages/table/src/table.ts +271 -196
  34. package/styles/components/table.scss +149 -60
  35. /package/es/{iconfont.1736779080510.ttf → iconfont.1736840923205.ttf} +0 -0
  36. /package/es/{iconfont.1736779080510.woff → iconfont.1736840923205.woff} +0 -0
  37. /package/es/{iconfont.1736779080510.woff2 → iconfont.1736840923205.woff2} +0 -0
  38. /package/lib/{iconfont.1736779080510.ttf → iconfont.1736840923205.ttf} +0 -0
  39. /package/lib/{iconfont.1736779080510.woff → iconfont.1736840923205.woff} +0 -0
  40. /package/lib/{iconfont.1736779080510.woff2 → iconfont.1736840923205.woff2} +0 -0
package/lib/index.umd.js CHANGED
@@ -3138,7 +3138,7 @@ function eqEmptyValue(cellValue) {
3138
3138
  ;// ./packages/ui/index.ts
3139
3139
 
3140
3140
 
3141
- const version = "4.10.6-beta.6";
3141
+ const version = "4.10.6-beta.8";
3142
3142
  core_.VxeUI.version = version;
3143
3143
  core_.VxeUI.tableVersion = version;
3144
3144
  core_.VxeUI.setConfig({
@@ -3568,7 +3568,7 @@ var esnext_iterator_some = __webpack_require__(7550);
3568
3568
  const {
3569
3569
  log: log_log
3570
3570
  } = core_.VxeUI;
3571
- const log_version = `table v${"4.10.6-beta.6"}`;
3571
+ const log_version = `table v${"4.10.6-beta.8"}`;
3572
3572
  const warnLog = log_log.create('warn', log_version);
3573
3573
  const errLog = log_log.create('error', log_version);
3574
3574
  ;// ./packages/table/src/columnInfo.ts
@@ -7028,7 +7028,8 @@ const header_renderType = 'header';
7028
7028
  const {
7029
7029
  computeColumnOpts,
7030
7030
  computeColumnDragOpts,
7031
- computeResizableOpts
7031
+ computeResizableOpts,
7032
+ computeScrollbarXToTop
7032
7033
  } = $xeTable.getComputeMaps();
7033
7034
  const headerColumn = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)([]);
7034
7035
  const refElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
@@ -7051,6 +7052,9 @@ const header_renderType = 'header';
7051
7052
  const {
7052
7053
  fixedType
7053
7054
  } = props;
7055
+ const {
7056
+ scrollbarHeight
7057
+ } = tableReactData;
7054
7058
  const {
7055
7059
  elemStore,
7056
7060
  visibleColumn
@@ -7061,6 +7065,7 @@ const header_renderType = 'header';
7061
7065
  const rightContainerElem = refRightContainer.value;
7062
7066
  const resizeBarElem = refCellResizeBar.value;
7063
7067
  const resizeTipElem = refCellResizeTip.value;
7068
+ const scrollbarXToTop = computeScrollbarXToTop.value;
7064
7069
  const {
7065
7070
  clientX: dragClientX
7066
7071
  } = evnt;
@@ -7112,6 +7117,7 @@ const header_renderType = 'header';
7112
7117
  const updateEvent = evnt => {
7113
7118
  evnt.stopPropagation();
7114
7119
  evnt.preventDefault();
7120
+ const tableHeight = tableEl.clientHeight;
7115
7121
  const offsetX = evnt.clientX - dragClientX;
7116
7122
  let left = dragPosLeft + offsetX;
7117
7123
  const scrollLeft = fixedType ? 0 : bodyScrollElem.scrollLeft;
@@ -7129,6 +7135,8 @@ const header_renderType = 'header';
7129
7135
  dragLeft = Math.max(left, dragMinLeft);
7130
7136
  const resizeBarLeft = Math.max(1, dragLeft - scrollLeft);
7131
7137
  resizeBarElem.style.left = `${resizeBarLeft}px`;
7138
+ resizeBarElem.style.top = `${scrollbarXToTop ? scrollbarHeight : 0}px`;
7139
+ resizeBarElem.style.height = `${scrollbarXToTop ? tableHeight - scrollbarHeight : tableHeight}px`;
7132
7140
  if (resizableOpts.showDragTip && resizeTipElem) {
7133
7141
  const tableWidth = tableEl.clientWidth;
7134
7142
  const wrapperRect = wrapperElem.getBoundingClientRect();
@@ -7142,7 +7150,7 @@ const header_renderType = 'header';
7142
7150
  resizeTipLeft += tableWidth - resizeBarLeft;
7143
7151
  }
7144
7152
  resizeTipElem.style.left = `${resizeTipLeft}px`;
7145
- resizeTipElem.style.top = `${Math.min(tableEl.clientHeight - resizeTipHeight, Math.max(0, evnt.clientY - wrapperRect.y - resizeTipHeight / 2))}px`;
7153
+ resizeTipElem.style.top = `${Math.min(tableHeight - resizeTipHeight, Math.max(0, evnt.clientY - wrapperRect.y - resizeTipHeight / 2))}px`;
7146
7154
  resizeTipElem.textContent = header_getI18n('vxe.table.resizeColTip', [resizeColumn.renderWidth + (isRightFixed ? dragPosLeft - dragLeft : dragLeft - dragPosLeft)]);
7147
7155
  }
7148
7156
  };
@@ -10659,9 +10667,12 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
10659
10667
  const refScrollXVirtualElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
10660
10668
  const refScrollYVirtualElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
10661
10669
  const refScrollXHandleElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
10670
+ const refScrollXLeftCornerElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
10662
10671
  const refScrollXRightCornerElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
10663
10672
  const refScrollYHandleElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
10664
10673
  const refScrollYTopCornerElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
10674
+ const refScrollXWrapperElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
10675
+ const refScrollYWrapperElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
10665
10676
  const refScrollYBottomCornerElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
10666
10677
  const refScrollXSpaceElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
10667
10678
  const refScrollYSpaceElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
@@ -10718,6 +10729,14 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
10718
10729
  const computeScrollbarOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
10719
10730
  return Object.assign({}, table_getConfig().table.scrollbarConfig, props.scrollbarConfig);
10720
10731
  });
10732
+ const computeScrollbarXToTop = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
10733
+ const scrollbarOpts = computeScrollbarOpts.value;
10734
+ return !!(scrollbarOpts.x && scrollbarOpts.x.position === 'top');
10735
+ });
10736
+ const computeScrollbarYToLeft = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
10737
+ const scrollbarOpts = computeScrollbarOpts.value;
10738
+ return !!(scrollbarOpts.y && scrollbarOpts.y.position === 'left');
10739
+ });
10721
10740
  const computeScrollYThreshold = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
10722
10741
  const sYOpts = computeSYOpts.value;
10723
10742
  const {
@@ -11022,6 +11041,8 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
11022
11041
  computeVirtualXOpts,
11023
11042
  computeVirtualYOpts,
11024
11043
  computeScrollbarOpts,
11044
+ computeScrollbarXToTop,
11045
+ computeScrollbarYToLeft,
11025
11046
  computeColumnOpts,
11026
11047
  computeScrollXThreshold,
11027
11048
  computeScrollYThreshold,
@@ -12311,19 +12332,26 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
12311
12332
  }
12312
12333
  bodyHeight = Math.max(bodyMinHeight, bodyHeight);
12313
12334
  }
12335
+ const xLeftCornerEl = refScrollXLeftCornerElem.value;
12336
+ const xRightCornerEl = refScrollXRightCornerElem.value;
12337
+ const scrollbarXToTop = computeScrollbarXToTop.value;
12314
12338
  const scrollXVirtualEl = refScrollXVirtualElem.value;
12315
12339
  if (scrollXVirtualEl) {
12316
12340
  scrollXVirtualEl.style.height = `${scrollbarHeight}px`;
12317
12341
  scrollXVirtualEl.style.visibility = scrollbarHeight ? 'visible' : 'hidden';
12318
12342
  }
12319
- const xHandleEl = refScrollXHandleElem.value;
12320
- if (xHandleEl) {
12321
- xHandleEl.style.width = `${el.clientWidth - scrollbarWidth}px`;
12343
+ const xWrapperEl = refScrollXWrapperElem.value;
12344
+ if (xWrapperEl) {
12345
+ xWrapperEl.style.left = scrollbarXToTop ? `${scrollbarWidth}px` : '';
12346
+ xWrapperEl.style.width = `${el.clientWidth - scrollbarWidth}px`;
12347
+ }
12348
+ if (xLeftCornerEl) {
12349
+ xLeftCornerEl.style.width = scrollbarXToTop ? `${scrollbarWidth}px` : '';
12350
+ xLeftCornerEl.style.display = scrollbarXToTop ? scrollbarWidth && scrollbarHeight ? 'block' : '' : '';
12322
12351
  }
12323
- const xRightCornerEl = refScrollXRightCornerElem.value;
12324
12352
  if (xRightCornerEl) {
12325
- xRightCornerEl.style.width = `${scrollbarWidth}px`;
12326
- xRightCornerEl.style.display = scrollbarWidth && scrollbarHeight ? 'block' : '';
12353
+ xRightCornerEl.style.width = scrollbarXToTop ? '' : `${scrollbarWidth}px`;
12354
+ xRightCornerEl.style.display = scrollbarXToTop ? '' : scrollbarWidth && scrollbarHeight ? 'block' : '';
12327
12355
  }
12328
12356
  const scrollYVirtualEl = refScrollYVirtualElem.value;
12329
12357
  if (scrollYVirtualEl) {
@@ -12336,10 +12364,10 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
12336
12364
  yTopCornerEl.style.height = `${headerHeight}px`;
12337
12365
  yTopCornerEl.style.display = headerHeight ? 'block' : '';
12338
12366
  }
12339
- const yHandleEl = refScrollYHandleElem.value;
12340
- if (yHandleEl) {
12341
- yHandleEl.style.height = `${bodyHeight}px`;
12342
- yHandleEl.style.top = `${headerHeight}px`;
12367
+ const yWrapperEl = refScrollYWrapperElem.value;
12368
+ if (yWrapperEl) {
12369
+ yWrapperEl.style.height = `${bodyHeight}px`;
12370
+ yWrapperEl.style.top = `${headerHeight}px`;
12343
12371
  }
12344
12372
  const yBottomCornerEl = refScrollYBottomCornerElem.value;
12345
12373
  if (yBottomCornerEl) {
@@ -13925,86 +13953,6 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
13925
13953
  loadScrollYData();
13926
13954
  }, fpsTime);
13927
13955
  };
13928
- const scrollXEvent = evnt => {
13929
- const {
13930
- elemStore,
13931
- inWheelScroll,
13932
- lastScrollTop,
13933
- inHeaderScroll,
13934
- inBodyScroll,
13935
- inFooterScroll
13936
- } = internalData;
13937
- if (inHeaderScroll || inBodyScroll || inFooterScroll) {
13938
- return;
13939
- }
13940
- if (inWheelScroll) {
13941
- return;
13942
- }
13943
- const headerScrollElem = getRefElem(elemStore['main-header-scroll']);
13944
- const bodyScrollElem = getRefElem(elemStore['main-body-scroll']);
13945
- const footerScrollElem = getRefElem(elemStore['main-footer-scroll']);
13946
- const yHandleEl = refScrollYHandleElem.value;
13947
- const wrapperEl = evnt.currentTarget;
13948
- const {
13949
- scrollLeft
13950
- } = wrapperEl;
13951
- const yBodyEl = yHandleEl || bodyScrollElem;
13952
- let scrollTop = 0;
13953
- if (yBodyEl) {
13954
- scrollTop = yBodyEl.scrollTop;
13955
- }
13956
- const isRollX = true;
13957
- const isRollY = scrollTop !== lastScrollTop;
13958
- internalData.inVirtualScroll = true;
13959
- setScrollLeft(bodyScrollElem, scrollLeft);
13960
- setScrollLeft(headerScrollElem, scrollLeft);
13961
- setScrollLeft(footerScrollElem, scrollLeft);
13962
- $xeTable.triggerScrollXEvent(evnt);
13963
- $xeTable.handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, {
13964
- type: 'table',
13965
- fixed: ''
13966
- });
13967
- };
13968
- const scrollYEvent = evnt => {
13969
- const {
13970
- elemStore,
13971
- inWheelScroll,
13972
- lastScrollLeft,
13973
- inHeaderScroll,
13974
- inBodyScroll,
13975
- inFooterScroll
13976
- } = internalData;
13977
- if (inHeaderScroll || inBodyScroll || inFooterScroll) {
13978
- return;
13979
- }
13980
- if (inWheelScroll) {
13981
- return;
13982
- }
13983
- const leftScrollElem = getRefElem(elemStore['left-body-scroll']);
13984
- const bodyScrollElem = getRefElem(elemStore['main-body-scroll']);
13985
- const rightScrollElem = getRefElem(elemStore['right-body-scroll']);
13986
- const xHandleEl = refScrollXHandleElem.value;
13987
- const wrapperEl = evnt.currentTarget;
13988
- const {
13989
- scrollTop
13990
- } = wrapperEl;
13991
- const xBodyEl = xHandleEl || bodyScrollElem;
13992
- let scrollLeft = 0;
13993
- if (xBodyEl) {
13994
- scrollLeft = xBodyEl.scrollLeft;
13995
- }
13996
- const isRollX = scrollLeft !== lastScrollLeft;
13997
- const isRollY = true;
13998
- internalData.inVirtualScroll = true;
13999
- setScrollTop(bodyScrollElem, scrollTop);
14000
- setScrollTop(leftScrollElem, scrollTop);
14001
- setScrollTop(rightScrollElem, scrollTop);
14002
- $xeTable.triggerScrollYEvent(evnt);
14003
- $xeTable.handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, {
14004
- type: 'table',
14005
- fixed: ''
14006
- });
14007
- };
14008
13956
  const checkLastSyncScroll = (isRollX, isRollY) => {
14009
13957
  const {
14010
13958
  scrollXLoad,
@@ -14056,6 +14004,12 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
14056
14004
  }
14057
14005
  return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
14058
14006
  };
14007
+ function handleUupdateResize() {
14008
+ const el = refElem.value;
14009
+ if (el && el.clientWidth && el.clientHeight) {
14010
+ tableMethods.recalculate();
14011
+ }
14012
+ }
14059
14013
  tableMethods = {
14060
14014
  dispatchEvent,
14061
14015
  /**
@@ -17408,6 +17362,7 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
17408
17362
  const rdLineEl = refDragRowLineElem.value;
17409
17363
  if (rdLineEl) {
17410
17364
  if (showLine) {
17365
+ const scrollbarYToLeft = computeScrollbarYToLeft.value;
17411
17366
  const trRect = trEl.getBoundingClientRect();
17412
17367
  let trHeight = trEl.clientHeight;
17413
17368
  const offsetTop = Math.max(1, trRect.y - wrapperRect.y);
@@ -17415,6 +17370,7 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
17415
17370
  trHeight = tableHeight - offsetTop - scrollbarHeight;
17416
17371
  }
17417
17372
  rdLineEl.style.display = 'block';
17373
+ rdLineEl.style.left = `${scrollbarYToLeft ? scrollbarWidth : 0}px`;
17418
17374
  rdLineEl.style.top = `${offsetTop}px`;
17419
17375
  rdLineEl.style.height = `${trHeight}px`;
17420
17376
  rdLineEl.style.width = `${tableWidth - scrollbarWidth}px`;
@@ -17428,6 +17384,7 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
17428
17384
  const cdLineEl = refDragColLineElem.value;
17429
17385
  if (cdLineEl) {
17430
17386
  if (showLine) {
17387
+ const scrollbarXToTop = computeScrollbarXToTop.value;
17431
17388
  const leftContainerElem = refLeftContainer.value;
17432
17389
  const leftContainerWidth = leftContainerElem ? leftContainerElem.clientWidth : 0;
17433
17390
  const rightContainerElem = refRightContainer.value;
@@ -17452,7 +17409,7 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
17452
17409
  if (prevDragToChild) {
17453
17410
  cdLineEl.style.height = `${thRect.height}px`;
17454
17411
  } else {
17455
- cdLineEl.style.height = `${tableHeight - offsetTop - scrollbarHeight}px`;
17412
+ cdLineEl.style.height = `${tableHeight - offsetTop - (scrollbarXToTop ? 0 : scrollbarHeight)}px`;
17456
17413
  }
17457
17414
  cdLineEl.setAttribute('drag-pos', dragPos);
17458
17415
  cdLineEl.setAttribute('drag-to-child', prevDragToChild ? 'y' : 'n');
@@ -19919,6 +19876,86 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
19919
19876
  });
19920
19877
  }
19921
19878
  },
19879
+ triggerVirtualScrollXEvent(evnt) {
19880
+ const {
19881
+ elemStore,
19882
+ inWheelScroll,
19883
+ lastScrollTop,
19884
+ inHeaderScroll,
19885
+ inBodyScroll,
19886
+ inFooterScroll
19887
+ } = internalData;
19888
+ if (inHeaderScroll || inBodyScroll || inFooterScroll) {
19889
+ return;
19890
+ }
19891
+ if (inWheelScroll) {
19892
+ return;
19893
+ }
19894
+ const headerScrollElem = getRefElem(elemStore['main-header-scroll']);
19895
+ const bodyScrollElem = getRefElem(elemStore['main-body-scroll']);
19896
+ const footerScrollElem = getRefElem(elemStore['main-footer-scroll']);
19897
+ const yHandleEl = refScrollYHandleElem.value;
19898
+ const wrapperEl = evnt.currentTarget;
19899
+ const {
19900
+ scrollLeft
19901
+ } = wrapperEl;
19902
+ const yBodyEl = yHandleEl || bodyScrollElem;
19903
+ let scrollTop = 0;
19904
+ if (yBodyEl) {
19905
+ scrollTop = yBodyEl.scrollTop;
19906
+ }
19907
+ const isRollX = true;
19908
+ const isRollY = scrollTop !== lastScrollTop;
19909
+ internalData.inVirtualScroll = true;
19910
+ setScrollLeft(bodyScrollElem, scrollLeft);
19911
+ setScrollLeft(headerScrollElem, scrollLeft);
19912
+ setScrollLeft(footerScrollElem, scrollLeft);
19913
+ $xeTable.triggerScrollXEvent(evnt);
19914
+ $xeTable.handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, {
19915
+ type: 'table',
19916
+ fixed: ''
19917
+ });
19918
+ },
19919
+ triggerVirtualScrollYEvent(evnt) {
19920
+ const {
19921
+ elemStore,
19922
+ inWheelScroll,
19923
+ lastScrollLeft,
19924
+ inHeaderScroll,
19925
+ inBodyScroll,
19926
+ inFooterScroll
19927
+ } = internalData;
19928
+ if (inHeaderScroll || inBodyScroll || inFooterScroll) {
19929
+ return;
19930
+ }
19931
+ if (inWheelScroll) {
19932
+ return;
19933
+ }
19934
+ const leftScrollElem = getRefElem(elemStore['left-body-scroll']);
19935
+ const bodyScrollElem = getRefElem(elemStore['main-body-scroll']);
19936
+ const rightScrollElem = getRefElem(elemStore['right-body-scroll']);
19937
+ const xHandleEl = refScrollXHandleElem.value;
19938
+ const wrapperEl = evnt.currentTarget;
19939
+ const {
19940
+ scrollTop
19941
+ } = wrapperEl;
19942
+ const xBodyEl = xHandleEl || bodyScrollElem;
19943
+ let scrollLeft = 0;
19944
+ if (xBodyEl) {
19945
+ scrollLeft = xBodyEl.scrollLeft;
19946
+ }
19947
+ const isRollX = scrollLeft !== lastScrollLeft;
19948
+ const isRollY = true;
19949
+ internalData.inVirtualScroll = true;
19950
+ setScrollTop(bodyScrollElem, scrollTop);
19951
+ setScrollTop(leftScrollElem, scrollTop);
19952
+ setScrollTop(rightScrollElem, scrollTop);
19953
+ $xeTable.triggerScrollYEvent(evnt);
19954
+ $xeTable.handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, {
19955
+ type: 'table',
19956
+ fixed: ''
19957
+ });
19958
+ },
19922
19959
  /**
19923
19960
  * 对于树形结构中,可以直接滚动到指定深层节点中
19924
19961
  * 对于某些特定的场景可能会用到,比如定位到某一节点
@@ -20319,12 +20356,108 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
20319
20356
  }
20320
20357
  return table_renderEmptyElement($xeTable);
20321
20358
  };
20322
- function handleUupdateResize() {
20323
- const el = refElem.value;
20324
- if (el && el.clientWidth && el.clientHeight) {
20325
- tableMethods.recalculate();
20326
- }
20327
- }
20359
+ const renderScrollX = () => {
20360
+ return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
20361
+ key: 'vsx',
20362
+ ref: refScrollXVirtualElem,
20363
+ class: 'vxe-table--scroll-x-virtual'
20364
+ }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
20365
+ ref: refScrollXLeftCornerElem,
20366
+ class: 'vxe-table--scroll-x-left-corner'
20367
+ }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
20368
+ ref: refScrollXWrapperElem,
20369
+ class: 'vxe-table--scroll-x-wrapper'
20370
+ }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
20371
+ ref: refScrollXHandleElem,
20372
+ class: 'vxe-table--scroll-x-handle',
20373
+ onScroll: $xeTable.triggerVirtualScrollXEvent
20374
+ }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
20375
+ ref: refScrollXSpaceElem,
20376
+ class: 'vxe-table--scroll-x-space'
20377
+ })])]), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
20378
+ ref: refScrollXRightCornerElem,
20379
+ class: 'vxe-table--scroll-x-right-corner'
20380
+ })]);
20381
+ };
20382
+ const renderScrollY = () => {
20383
+ return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
20384
+ ref: refScrollYVirtualElem,
20385
+ class: 'vxe-table--scroll-y-virtual'
20386
+ }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
20387
+ ref: refScrollYTopCornerElem,
20388
+ class: 'vxe-table--scroll-y-top-corner'
20389
+ }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
20390
+ ref: refScrollYWrapperElem,
20391
+ class: 'vxe-table--scroll-y-wrapper'
20392
+ }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
20393
+ ref: refScrollYHandleElem,
20394
+ class: 'vxe-table--scroll-y-handle',
20395
+ onScroll: $xeTable.triggerVirtualScrollYEvent
20396
+ }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
20397
+ ref: refScrollYSpaceElem,
20398
+ class: 'vxe-table--scroll-y-space'
20399
+ })])]), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
20400
+ ref: refScrollYBottomCornerElem,
20401
+ class: 'vxe-table--scroll-y-bottom-corner'
20402
+ })]);
20403
+ };
20404
+ const renderViewport = () => {
20405
+ const {
20406
+ showHeader,
20407
+ showFooter
20408
+ } = props;
20409
+ const {
20410
+ overflowX,
20411
+ tableData,
20412
+ tableColumn,
20413
+ tableGroupColumn,
20414
+ footerTableData,
20415
+ columnStore
20416
+ } = reactData;
20417
+ const {
20418
+ leftList,
20419
+ rightList
20420
+ } = columnStore;
20421
+ return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
20422
+ ref: refTableViewportElem,
20423
+ class: 'vxe-table--viewport-wrapper'
20424
+ }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
20425
+ class: 'vxe-table--main-wrapper'
20426
+ }, [
20427
+ /**
20428
+ * 表头
20429
+ */
20430
+ showHeader ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(header, {
20431
+ ref: refTableHeader,
20432
+ tableData,
20433
+ tableColumn,
20434
+ tableGroupColumn
20435
+ }) : table_renderEmptyElement($xeTable),
20436
+ /**
20437
+ * 表体
20438
+ */
20439
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(body, {
20440
+ ref: refTableBody,
20441
+ tableData,
20442
+ tableColumn
20443
+ }),
20444
+ /**
20445
+ * 表尾
20446
+ */
20447
+ showFooter ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(footer, {
20448
+ ref: refTableFooter,
20449
+ footerTableData,
20450
+ tableColumn
20451
+ }) : table_renderEmptyElement($xeTable)]), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
20452
+ class: 'vxe-table--fixed-wrapper'
20453
+ }, [leftList && leftList.length && overflowX ? renderFixed('left') : table_renderEmptyElement($xeTable), rightList && rightList.length && overflowX ? renderFixed('right') : table_renderEmptyElement($xeTable)])]);
20454
+ };
20455
+ const renderBody = () => {
20456
+ const scrollbarYToLeft = computeScrollbarYToLeft.value;
20457
+ return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
20458
+ class: 'vxe-table--layout-wrapper'
20459
+ }, scrollbarYToLeft ? [renderScrollY(), renderViewport()] : [renderViewport(), renderScrollY()]);
20460
+ };
20328
20461
  const renderVN = () => {
20329
20462
  const {
20330
20463
  loading,
@@ -20347,11 +20480,7 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
20347
20480
  overflowY,
20348
20481
  scrollXLoad,
20349
20482
  scrollYLoad,
20350
- scrollbarHeight,
20351
20483
  tableData,
20352
- tableColumn,
20353
- tableGroupColumn,
20354
- footerTableData,
20355
20484
  initStore,
20356
20485
  columnStore,
20357
20486
  filterStore,
@@ -20379,9 +20508,11 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
20379
20508
  const resizableOpts = computeResizableOpts.value;
20380
20509
  const isArea = mouseConfig && mouseOpts.area;
20381
20510
  const columnDragOpts = computeColumnDragOpts.value;
20511
+ const scrollbarXToTop = computeScrollbarXToTop.value;
20512
+ const scrollbarYToLeft = computeScrollbarYToLeft.value;
20382
20513
  return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
20383
20514
  ref: refElem,
20384
- class: ['vxe-table', 'vxe-table--render-default', `tid_${xID}`, `border--${tableBorder}`, {
20515
+ class: ['vxe-table', 'vxe-table--render-default', `tid_${xID}`, `border--${tableBorder}`, `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`, `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`, {
20385
20516
  [`size--${vSize}`]: vSize,
20386
20517
  [`valid-msg--${validOpts.msgMode}`]: !!editRules,
20387
20518
  'vxe-editable': !!editConfig,
@@ -20424,69 +20555,7 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
20424
20555
  }, slots.default ? slots.default({}) : []), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
20425
20556
  key: 'tw',
20426
20557
  class: 'vxe-table--render-wrapper'
20427
- }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
20428
- ref: refTableViewportElem,
20429
- class: 'vxe-table--viewport-wrapper'
20430
- }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
20431
- class: 'vxe-table--main-wrapper'
20432
- }, [
20433
- /**
20434
- * 表头
20435
- */
20436
- showHeader ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(header, {
20437
- ref: refTableHeader,
20438
- tableData,
20439
- tableColumn,
20440
- tableGroupColumn
20441
- }) : table_renderEmptyElement($xeTable),
20442
- /**
20443
- * 表体
20444
- */
20445
- (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(body, {
20446
- ref: refTableBody,
20447
- tableData,
20448
- tableColumn
20449
- }),
20450
- /**
20451
- * 表尾
20452
- */
20453
- showFooter ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(footer, {
20454
- ref: refTableFooter,
20455
- footerTableData,
20456
- tableColumn
20457
- }) : table_renderEmptyElement($xeTable)]), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
20458
- class: 'vxe-table--fixed-wrapper'
20459
- }, [leftList && leftList.length && overflowX ? renderFixed('left') : table_renderEmptyElement($xeTable), rightList && rightList.length && overflowX ? renderFixed('right') : table_renderEmptyElement($xeTable)])]), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
20460
- ref: refScrollYVirtualElem,
20461
- class: 'vxe-table--scroll-y-virtual'
20462
- }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
20463
- ref: refScrollYTopCornerElem,
20464
- class: 'vxe-table--scroll-y-top-corner'
20465
- }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
20466
- ref: refScrollYHandleElem,
20467
- class: 'vxe-table--scroll-y-handle',
20468
- onScroll: scrollYEvent
20469
- }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
20470
- ref: refScrollYSpaceElem,
20471
- class: 'vxe-table--scroll-y-space'
20472
- })]), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
20473
- ref: refScrollYBottomCornerElem,
20474
- class: 'vxe-table--scroll-y-bottom-corner'
20475
- })])]), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
20476
- key: 'vx',
20477
- ref: refScrollXVirtualElem,
20478
- class: 'vxe-table--scroll-x-virtual'
20479
- }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
20480
- ref: refScrollXHandleElem,
20481
- class: 'vxe-table--scroll-x-handle',
20482
- onScroll: scrollXEvent
20483
- }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
20484
- ref: refScrollXSpaceElem,
20485
- class: 'vxe-table--scroll-x-space'
20486
- })]), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
20487
- ref: refScrollXRightCornerElem,
20488
- class: 'vxe-table--scroll-x-right-corner'
20489
- })]),
20558
+ }, scrollbarXToTop ? [renderScrollX(), renderBody()] : [renderBody(), renderScrollX()]),
20490
20559
  /**
20491
20560
  * 空数据
20492
20561
  */
@@ -20510,10 +20579,7 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
20510
20579
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
20511
20580
  key: 'cl',
20512
20581
  ref: refCellResizeBar,
20513
- class: 'vxe-table--resizable-bar',
20514
- style: overflowX ? {
20515
- 'padding-bottom': `${scrollbarHeight}px`
20516
- } : null
20582
+ class: 'vxe-table--resizable-bar'
20517
20583
  }, resizableOpts.showDragTip ? [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
20518
20584
  ref: refCellResizeTip,
20519
20585
  class: 'vxe-table--resizable-number-tip'
@@ -20686,16 +20752,37 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
20686
20752
  tableMethods.refreshColumn();
20687
20753
  });
20688
20754
  });
20755
+ const reScrollFlag = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)(0);
20756
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(computeSize, () => {
20757
+ reScrollFlag.value++;
20758
+ });
20689
20759
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(() => props.showHeader, () => {
20690
- (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
20691
- tableMethods.recalculate(true).then(() => tableMethods.refreshScroll());
20692
- });
20760
+ reScrollFlag.value++;
20693
20761
  });
20694
20762
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(() => props.showFooter, () => {
20763
+ reScrollFlag.value++;
20764
+ });
20765
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(reScrollFlag, () => {
20695
20766
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
20696
20767
  tableMethods.recalculate(true).then(() => tableMethods.refreshScroll());
20697
20768
  });
20698
20769
  });
20770
+ const reLayoutFlag = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)(0);
20771
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(() => props.height, () => {
20772
+ reLayoutFlag.value++;
20773
+ });
20774
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(() => props.maxHeight, () => {
20775
+ reLayoutFlag.value++;
20776
+ });
20777
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(computeScrollbarXToTop, () => {
20778
+ reLayoutFlag.value++;
20779
+ });
20780
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(computeScrollbarYToLeft, () => {
20781
+ reLayoutFlag.value++;
20782
+ });
20783
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(reLayoutFlag, () => {
20784
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => tableMethods.recalculate(true));
20785
+ });
20699
20786
  const footFlag = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)(0);
20700
20787
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(() => props.footerData ? props.footerData.length : -1, () => {
20701
20788
  footFlag.value++;
@@ -20706,17 +20793,6 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
20706
20793
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(footFlag, () => {
20707
20794
  tableMethods.updateFooter();
20708
20795
  });
20709
- (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(() => props.height, () => {
20710
- (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => tableMethods.recalculate(true));
20711
- });
20712
- (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(() => props.maxHeight, () => {
20713
- (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => tableMethods.recalculate(true));
20714
- });
20715
- (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(computeSize, () => {
20716
- (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
20717
- tableMethods.recalculate(true).then(() => tableMethods.refreshScroll());
20718
- });
20719
- });
20720
20796
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(() => props.syncResize, value => {
20721
20797
  if (value) {
20722
20798
  handleUupdateResize();