vxe-table 4.23.0-beta.2 → 4.23.0-beta.4

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 (68) hide show
  1. package/dist/all.esm.js +145 -167
  2. package/dist/style.css +1 -1
  3. package/dist/style.min.css +1 -1
  4. package/es/grid/src/grid.js +3 -0
  5. package/es/index.css +1 -1
  6. package/es/index.min.css +1 -1
  7. package/es/style.css +1 -1
  8. package/es/style.min.css +1 -1
  9. package/es/table/module/custom/panel.js +2 -2
  10. package/es/table/module/filter/hook.js +5 -7
  11. package/es/table/module/filter/panel.js +42 -46
  12. package/es/table/src/table.js +69 -47
  13. package/es/table/src/util.js +1 -2
  14. package/es/table/style.css +31 -12
  15. package/es/table/style.min.css +1 -1
  16. package/es/ui/index.js +2 -2
  17. package/es/ui/src/dom.js +11 -8
  18. package/es/ui/src/log.js +1 -1
  19. package/es/vxe-table/style.css +31 -12
  20. package/es/vxe-table/style.min.css +1 -1
  21. package/lib/grid/src/grid.js +5 -0
  22. package/lib/grid/src/grid.min.js +1 -1
  23. package/lib/index.css +1 -1
  24. package/lib/index.min.css +1 -1
  25. package/lib/index.umd.js +79 -127
  26. package/lib/index.umd.min.js +1 -1
  27. package/lib/style.css +1 -1
  28. package/lib/style.min.css +1 -1
  29. package/lib/table/module/custom/panel.js +2 -2
  30. package/lib/table/module/custom/panel.min.js +1 -1
  31. package/lib/table/module/filter/hook.js +6 -7
  32. package/lib/table/module/filter/hook.min.js +1 -1
  33. package/lib/table/module/filter/panel.js +34 -33
  34. package/lib/table/module/filter/panel.min.js +1 -1
  35. package/lib/table/src/table.js +19 -19
  36. package/lib/table/src/table.min.js +1 -1
  37. package/lib/table/src/util.js +1 -2
  38. package/lib/table/src/util.min.js +1 -1
  39. package/lib/table/style/style.css +31 -12
  40. package/lib/table/style/style.min.css +1 -1
  41. package/lib/ui/index.js +2 -2
  42. package/lib/ui/index.min.js +1 -1
  43. package/lib/ui/src/dom.js +11 -7
  44. package/lib/ui/src/dom.min.js +1 -1
  45. package/lib/ui/src/log.js +1 -1
  46. package/lib/ui/src/log.min.js +1 -1
  47. package/lib/vxe-table/style/style.css +31 -12
  48. package/lib/vxe-table/style/style.min.css +1 -1
  49. package/package.json +2 -2
  50. package/packages/grid/src/grid.ts +3 -0
  51. package/packages/table/module/custom/panel.ts +2 -2
  52. package/packages/table/module/filter/hook.ts +5 -7
  53. package/packages/table/module/filter/panel.ts +45 -46
  54. package/packages/table/src/table.ts +71 -47
  55. package/packages/table/src/util.ts +1 -2
  56. package/packages/ui/index.ts +1 -1
  57. package/packages/ui/src/dom.ts +12 -8
  58. package/styles/components/table-module/filter.scss +25 -14
  59. package/es/table/src/scrollbar.js +0 -54
  60. package/lib/table/src/scrollbar.js +0 -63
  61. package/lib/table/src/scrollbar.min.js +0 -1
  62. package/packages/table/src/scrollbar.ts +0 -57
  63. /package/es/{iconfont.1792035024476.ttf → iconfont.1792139865095.ttf} +0 -0
  64. /package/es/{iconfont.1792035024476.woff → iconfont.1792139865095.woff} +0 -0
  65. /package/es/{iconfont.1792035024476.woff2 → iconfont.1792139865095.woff2} +0 -0
  66. /package/lib/{iconfont.1792035024476.ttf → iconfont.1792139865095.ttf} +0 -0
  67. /package/lib/{iconfont.1792035024476.woff → iconfont.1792139865095.woff} +0 -0
  68. /package/lib/{iconfont.1792035024476.woff2 → iconfont.1792139865095.woff2} +0 -0
package/dist/all.esm.js CHANGED
@@ -56,7 +56,7 @@ function getDefaultConfig(val1, def1) {
56
56
  return XEUtils.eqNull(val1) ? def1 : val1;
57
57
  }
58
58
 
59
- const version = "4.23.0-beta.2";
59
+ const version = "4.23.0-beta.4";
60
60
  VxeUI.version = version;
61
61
  VxeUI.tableVersion = version;
62
62
  VxeUI.setConfig({
@@ -219,7 +219,7 @@ VxeUI.setConfig({
219
219
  destroyOnClose: true,
220
220
  multiple: true,
221
221
  showIcon: true,
222
- maxHeight: 280
222
+ maxHeight: 320
223
223
  },
224
224
  floatingFilterConfig: {
225
225
  // enabled: false
@@ -790,7 +790,8 @@ function wheelScrollTopTo(diffNum, cb) {
790
790
  * 通用定位计算
791
791
  */
792
792
  function updatePanelPlacement(targetElem, panelElem, options) {
793
- const { defaultTop, defaultLeft, placement, defaultPlacement, teleportTo, marginSize, isMinWidth } = Object.assign({
793
+ const { defaultTop, defaultLeft, placement, defaultPlacement, appendTo, teleportTo, marginSize, isMinWidth } = Object.assign({
794
+ appendTo: '',
794
795
  teleportTo: false,
795
796
  marginSize: 18,
796
797
  isMinWidth: true
@@ -804,7 +805,7 @@ function updatePanelPlacement(targetElem, panelElem, options) {
804
805
  const stys = {};
805
806
  if (panelElem && targetElem) {
806
807
  const bodyEl = document.body;
807
- const parentWrapperEl = getPopupWrapperElement(panelElem);
808
+ const parentWrapperEl = getPopupWrapperElement(teleportTo ? getPopupAppendElement(appendTo) : panelElem);
808
809
  if (parentWrapperEl) {
809
810
  const targetWidth = targetElem.offsetWidth;
810
811
  const targetHeight = targetElem.offsetHeight;
@@ -815,14 +816,16 @@ function updatePanelPlacement(targetElem, panelElem, options) {
815
816
  const targetRect = targetElem.getBoundingClientRect();
816
817
  const visibleHeight = bodyEl.clientHeight;
817
818
  const visibleWidth = bodyEl.clientWidth;
818
- const offsetLeft = parentWrapperRect.left;
819
- const offsetTop = parentWrapperRect.top;
819
+ const parentWrapperScrollLeft = parentWrapperEl.scrollLeft;
820
+ const parentWrapperScrollTop = parentWrapperEl.scrollTop;
821
+ const parentWrapperOffsetLeft = parentWrapperRect.left;
822
+ const parentWrapperOffsetTop = parentWrapperRect.top;
820
823
  const targetLeft = targetRect.left;
821
824
  const targetTop = targetRect.top;
822
825
  minWidth = targetElem.offsetWidth;
823
826
  if (teleportTo) {
824
- left = defaultLeft || (targetLeft - (panelWidth - targetWidth) / 2);
825
- top = defaultTop || (targetTop + targetHeight);
827
+ left = (defaultLeft || (targetLeft - (panelWidth - targetWidth) / 2)) - parentWrapperScrollLeft;
828
+ top = (defaultTop || (targetTop + targetHeight)) - parentWrapperScrollTop;
826
829
  if (placement === 'top') {
827
830
  panelPlacement = 'top';
828
831
  top = targetTop - panelHeight;
@@ -866,8 +869,8 @@ function updatePanelPlacement(targetElem, panelElem, options) {
866
869
  left = marginSize;
867
870
  }
868
871
  // 偏移
869
- top -= offsetTop;
870
- left -= offsetLeft;
872
+ top -= parentWrapperOffsetTop;
873
+ left -= parentWrapperOffsetLeft;
871
874
  }
872
875
  else {
873
876
  if (placement === 'top') {
@@ -936,9 +939,20 @@ function getPopupWrapperElement(panelElem) {
936
939
  const parentEl = panelElem.parentElement;
937
940
  return (parentEl === bodyEl ? document.documentElement : parentEl) || null;
938
941
  }
942
+ function getPopupContainer(appendTo) {
943
+ const selectElem = appendTo && XEUtils.isFunction(appendTo) ? appendTo({}) : appendTo;
944
+ return selectElem || 'body';
945
+ }
946
+ function getPopupAppendElement(appendTo) {
947
+ const selectElem = getPopupContainer(appendTo);
948
+ if (XEUtils.isString(selectElem)) {
949
+ return document.querySelector(selectElem) || document.body;
950
+ }
951
+ return selectElem;
952
+ }
939
953
 
940
954
  const { log } = VxeUI;
941
- const tableVersion = `table v${"4.23.0-beta.2"}`;
955
+ const tableVersion = `table v${"4.23.0-beta.4"}`;
942
956
  function createComponentLog(name) {
943
957
  const uiVersion = VxeUI.uiVersion ? `ui v${VxeUI.uiVersion}` : '';
944
958
  const ganttVersion = VxeUI.ganttVersion ? `gantt v${VxeUI.ganttVersion}` : '';
@@ -1392,8 +1406,7 @@ function createReactData$2() {
1392
1406
  isIndeterminate: false,
1393
1407
  style: null,
1394
1408
  column: null,
1395
- visible: false,
1396
- maxHeight: null
1409
+ visible: false
1397
1410
  },
1398
1411
  // 存放列相关的信息
1399
1412
  columnStore: {
@@ -4299,61 +4312,6 @@ function clearColAnimate(elem, clss) {
4299
4312
  }, 500);
4300
4313
  }
4301
4314
 
4302
- /**
4303
- * 计算滚动条滑块的长度
4304
- */
4305
- function getThumbSize(viewportSize, contentSize, trackSize) {
4306
- if (contentSize <= viewportSize) {
4307
- return 0;
4308
- }
4309
- const ratio = viewportSize / contentSize;
4310
- const ideal = trackSize * ratio;
4311
- return Math.max(20, Math.min(ideal, trackSize));
4312
- }
4313
- /**
4314
- * 计算滚动条滑块的偏移位置
4315
- */
4316
- function getThumbOffsetSize(offsetSize, viewportSize, contentSize, trackSize, thumbSize) {
4317
- const maxScroll = contentSize - viewportSize;
4318
- if (maxScroll <= 0) {
4319
- return 0;
4320
- }
4321
- const maxThumbOffset = trackSize - thumbSize;
4322
- if (maxThumbOffset <= 0) {
4323
- return 0;
4324
- }
4325
- const clamped = Math.min(Math.max(offsetSize, 0), maxScroll);
4326
- const ratio = clamped / maxScroll;
4327
- return ratio * maxThumbOffset;
4328
- }
4329
- /**
4330
- * 根据点击轨道的位置,计算滑块的偏移位置
4331
- */
4332
- function getScrollFromClick(clickPosition, viewportSize, contentSize, trackSize, thumbSize) {
4333
- const maxThumbOffset = trackSize - thumbSize;
4334
- const maxScroll = contentSize - viewportSize;
4335
- if (maxScroll <= 0 || maxThumbOffset <= 0) {
4336
- return 0;
4337
- }
4338
- let thumbOffset = clickPosition - thumbSize / 2;
4339
- thumbOffset = Math.min(Math.max(thumbOffset, 0), maxThumbOffset);
4340
- const scrollOffset = (thumbOffset / maxThumbOffset) * maxScroll;
4341
- return scrollOffset;
4342
- }
4343
- /**
4344
- * 拖拽 thumb 时,根据鼠标位置计算滑块的偏移位置
4345
- */
4346
- function getScrollFromDrag(pointerPosition, dragOffset, viewportSize, contentSize, trackSize, thumbSize) {
4347
- const maxScroll = contentSize - viewportSize;
4348
- const maxThumbOffset = trackSize - thumbSize;
4349
- if (maxScroll <= 0 || maxThumbOffset <= 0) {
4350
- return 0;
4351
- }
4352
- let thumbOffset = pointerPosition - dragOffset;
4353
- thumbOffset = Math.min(Math.max(thumbOffset, 0), maxThumbOffset);
4354
- return (thumbOffset / maxThumbOffset) * maxScroll;
4355
- }
4356
-
4357
4315
  // 跨表拖拽
4358
4316
  const crossTableDragRowInfo = reactive({
4359
4317
  row: null
@@ -6449,8 +6407,8 @@ var TableCustomPanelComponent = defineVxeComponent({
6449
6407
  const { prevDragCol, prevDragGroupField, prevDragAggFnColid, prevDragPos, prevDragToChild } = customPanelInternalData;
6450
6408
  const dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0;
6451
6409
  if (prevDragGroupField || prevDragAggFnColid) {
6452
- if ($xeTable.handlePivotTableAggregatePanelDragendEvent) {
6453
- $xeTable.handlePivotTableAggregatePanelDragendEvent(evnt);
6410
+ if ($xeTable.handlePivotTableAggPanelDragendEvent) {
6411
+ $xeTable.handlePivotTableAggPanelDragendEvent(evnt);
6454
6412
  }
6455
6413
  }
6456
6414
  else if (prevDragCol && dragCol) {
@@ -7711,6 +7669,7 @@ var TableFilterPanelComponent = defineVxeComponent({
7711
7669
  },
7712
7670
  setup(props, context) {
7713
7671
  const xID = XEUtils.uniqueId();
7672
+ const VxeUIScrollbarComponent = VxeUI.getComponent('VxeScrollbar');
7714
7673
  const $xeTable = inject('$xeTable', {});
7715
7674
  const { reactData: tableReactData, internalData: tableInternalData, getComputeMaps } = $xeTable;
7716
7675
  const { computeFilterOpts, computeRendererOpts } = getComputeMaps();
@@ -7798,10 +7757,12 @@ var TableFilterPanelComponent = defineVxeComponent({
7798
7757
  Object.assign($xeFilterPanel, filterPanelMethods);
7799
7758
  const renderOptions = (filterRender, compConf) => {
7800
7759
  const { filterStore } = props;
7801
- const { column, maxHeight } = filterStore;
7760
+ const { column } = filterStore;
7802
7761
  if (!column) {
7803
7762
  return [];
7804
7763
  }
7764
+ const filterOpts = computeFilterOpts.value;
7765
+ const { useScrollbar } = filterOpts;
7805
7766
  const { filterMultiple, filters, slots } = column;
7806
7767
  const filterOptions = (filters || []);
7807
7768
  const filterSlot = slots ? slots.filter : null;
@@ -7810,34 +7771,46 @@ var TableFilterPanelComponent = defineVxeComponent({
7810
7771
  if (filterSlot) {
7811
7772
  return [
7812
7773
  h('div', {
7813
- class: 'vxe-table--filter-template',
7814
- style: maxHeight
7815
- ? {
7816
- maxHeight: toCssUnit(maxHeight)
7817
- }
7818
- : {}
7774
+ class: 'vxe-table--filter-template'
7819
7775
  }, $xeTable.callSlot(filterSlot, params))
7820
7776
  ];
7821
7777
  }
7822
7778
  else if (filterRender && rtFilter) {
7823
7779
  return [
7824
7780
  h('div', {
7825
- class: 'vxe-table--filter-template',
7826
- style: maxHeight
7827
- ? {
7828
- maxHeight: toCssUnit(maxHeight)
7829
- }
7830
- : {}
7781
+ class: 'vxe-table--filter-template'
7831
7782
  }, getSlotVNs(rtFilter(filterRender, params)))
7832
7783
  ];
7833
7784
  }
7834
7785
  const isAllChecked = filterMultiple ? filterStore.isAllSelected : !filterOptions.some((item) => item._checked);
7835
7786
  const isAllIndeterminate = filterMultiple && filterStore.isIndeterminate;
7787
+ const optVNs = filterOptions.map((item) => {
7788
+ const isChecked = item._checked;
7789
+ return h('div', {
7790
+ class: ['vxe-table--filter-option', {
7791
+ 'is--checked': item._checked
7792
+ }],
7793
+ title: item.label,
7794
+ onClick: (evnt) => {
7795
+ changeOption(evnt, !item._checked, item);
7796
+ }
7797
+ }, (filterMultiple
7798
+ ? [
7799
+ h('span', {
7800
+ class: ['vxe-checkbox--icon', (isChecked ? getIcon$5().TABLE_CHECKBOX_CHECKED : getIcon$5().TABLE_CHECKBOX_UNCHECKED)]
7801
+ })
7802
+ ]
7803
+ : []).concat([
7804
+ h('span', {
7805
+ class: 'vxe-checkbox--label'
7806
+ }, formatText(item.label, 1))
7807
+ ]));
7808
+ });
7836
7809
  return [
7837
- h('ul', {
7810
+ h('div', {
7838
7811
  class: 'vxe-table--filter-header'
7839
7812
  }, [
7840
- h('li', {
7813
+ h('div', {
7841
7814
  class: ['vxe-table--filter-option', {
7842
7815
  'is--checked': isAllChecked,
7843
7816
  'is--indeterminate': isAllIndeterminate
@@ -7858,35 +7831,16 @@ var TableFilterPanelComponent = defineVxeComponent({
7858
7831
  }, getI18n$9('vxe.table.allFilter'))
7859
7832
  ]))
7860
7833
  ]),
7861
- h('ul', {
7862
- class: 'vxe-table--filter-body',
7863
- style: maxHeight
7864
- ? {
7865
- maxHeight: toCssUnit(maxHeight)
7866
- }
7867
- : {}
7868
- }, filterOptions.map((item) => {
7869
- const isChecked = item._checked;
7870
- return h('li', {
7871
- class: ['vxe-table--filter-option', {
7872
- 'is--checked': item._checked
7873
- }],
7874
- title: item.label,
7875
- onClick: (evnt) => {
7876
- changeOption(evnt, !item._checked, item);
7877
- }
7878
- }, (filterMultiple
7879
- ? [
7880
- h('span', {
7881
- class: ['vxe-checkbox--icon', (isChecked ? getIcon$5().TABLE_CHECKBOX_CHECKED : getIcon$5().TABLE_CHECKBOX_UNCHECKED)]
7882
- })
7883
- ]
7884
- : []).concat([
7885
- h('span', {
7886
- class: 'vxe-checkbox--label'
7887
- }, formatText(item.label, 1))
7888
- ]));
7889
- }))
7834
+ useScrollbar
7835
+ ? h(VxeUIScrollbarComponent, {
7836
+ class: 'vxe-table--scrollbar-filter-body',
7837
+ viewClassName: 'vxe-table--scrollbar-filter-body-view'
7838
+ }, {
7839
+ default: () => optVNs
7840
+ })
7841
+ : h('div', {
7842
+ class: 'vxe-table--filter-body'
7843
+ }, optVNs)
7890
7844
  ];
7891
7845
  };
7892
7846
  const renderFooters = () => {
@@ -8996,7 +8950,7 @@ hooks$7.add('tableFilterModule', {
8996
8950
  const { refElem, refTableFilter } = $xeTable.getRefMaps();
8997
8951
  const { computeFilterOpts, computeMouseOpts, computeRendererOpts } = $xeTable.getComputeMaps();
8998
8952
  const updatePopupStyle = () => {
8999
- const { filterStore } = reactData;
8953
+ const { filterStore, scrollbarHeight } = reactData;
9000
8954
  const { elemStore } = internalData;
9001
8955
  const { column, targetEl } = filterStore;
9002
8956
  if (!column) {
@@ -9017,8 +8971,6 @@ hooks$7.add('tableFilterModule', {
9017
8971
  if (!filterWrapperElem) {
9018
8972
  return nextTick();
9019
8973
  }
9020
- const filterHeadElem = filterWrapperElem.querySelector('.vxe-table--filter-header');
9021
- const filterFootElem = filterWrapperElem.querySelector('.vxe-table--filter-footer');
9022
8974
  /**
9023
8975
  * 是否显示筛选按钮图标
9024
8976
  * 如果不存在图标,则相对单元格居中显示
@@ -9044,6 +8996,7 @@ hooks$7.add('tableFilterModule', {
9044
8996
  if (transfer) {
9045
8997
  const ppObj = updatePanelPlacement(currEl, filterWrapperElem, {
9046
8998
  defaultPlacement: 'bottom',
8999
+ appendTo: '',
9047
9000
  isMinWidth: false,
9048
9001
  teleportTo: transfer
9049
9002
  });
@@ -9054,7 +9007,7 @@ hooks$7.add('tableFilterModule', {
9054
9007
  const centerWidth = targetEl ? filterWidth / 2 : ((filterWidth - column.renderWidth) / 2);
9055
9008
  left = btnRect.left - tableRect.left - centerWidth;
9056
9009
  top = btnRect.top - tableRect.top + currEl.clientHeight;
9057
- maxHeight = Math.max(40, tableEl.clientHeight - top - (filterHeadElem ? filterHeadElem.clientHeight : 0) - (filterFootElem ? filterFootElem.clientHeight : 0) - 14);
9010
+ maxHeight = Math.max(40, tableEl.clientHeight - top - scrollbarHeight);
9058
9011
  if (left < 1) {
9059
9012
  left = 1;
9060
9013
  }
@@ -9076,7 +9029,6 @@ hooks$7.add('tableFilterModule', {
9076
9029
  if (zIndex) {
9077
9030
  panelStyle.zIndex = zIndex;
9078
9031
  }
9079
- filterStore.style = panelStyle;
9080
9032
  // 筛选面板是自适应表格高度
9081
9033
  if (compConf ? !compConf.tableFilterAutoHeight : false) {
9082
9034
  maxHeight = 0;
@@ -9086,8 +9038,8 @@ hooks$7.add('tableFilterModule', {
9086
9038
  maxHeight = customMaxHeight > maxHeight ? maxHeight : customMaxHeight;
9087
9039
  }
9088
9040
  }
9089
- // 判断面板不能大于表格高度
9090
- filterStore.maxHeight = maxHeight;
9041
+ panelStyle['--vxe-ui-vxe-table-filter-default-max-height'] = maxHeight ? toCssUnit(maxHeight) : 'none';
9042
+ filterStore.style = panelStyle;
9091
9043
  };
9092
9044
  handleStyle();
9093
9045
  return nextTick().then(() => {
@@ -16043,7 +15995,8 @@ renderer$2.mixin({
16043
15995
  });
16044
15996
 
16045
15997
  const { warnLog: warnLog$2, errLog: errLog$2 } = createComponentLog('table');
16046
- const { getConfig: getConfig$2, getIcon: getIcon$1, getI18n: getI18n$2, renderer: renderer$1, formats, createEvent: createEvent$2, globalResize, interceptor, hooks: hooks$1, domUtils, globalEvents: globalEvents$1, GLOBAL_EVENT_KEYS: GLOBAL_EVENT_KEYS$1, useFns: useFns$2, renderEmptyElement: renderEmptyElement$1 } = VxeUI;
15998
+ const { getConfig: getConfig$2, getIcon: getIcon$1, getI18n: getI18n$2, renderer: renderer$1, formats, scrollbarUtils, createEvent: createEvent$2, globalResize, interceptor, hooks: hooks$1, domUtils, globalEvents: globalEvents$1, GLOBAL_EVENT_KEYS: GLOBAL_EVENT_KEYS$1, useFns: useFns$2, renderEmptyElement: renderEmptyElement$1 } = VxeUI;
15999
+ const { getThumbOffsetSize, getThumbSize, getScrollFromClick, getScrollFromDrag } = scrollbarUtils || {};
16047
16000
  const supportMaxRow = 5e6;
16048
16001
  const customStorageKey = 'VXE_CUSTOM_STORE';
16049
16002
  const maxYHeight = 5e6;
@@ -16070,6 +16023,7 @@ var VxeTableComponent = defineVxeComponent({
16070
16023
  const $xeGantt = inject('$xeGantt', null);
16071
16024
  const $xeGGWrapper = $xeGrid || $xeGantt;
16072
16025
  const { computeSize } = useFns$2.useSize(props);
16026
+ const { computeIsVScrollbar } = useFns$2.useVScrollbar(props);
16073
16027
  const crossTableDragRowInfo = getCrossTableDragRowInfo();
16074
16028
  const reactData = reactive(createReactData$2());
16075
16029
  const internalData = createInternalData$3();
@@ -16363,7 +16317,8 @@ var VxeTableComponent = defineVxeComponent({
16363
16317
  return Object.assign({}, getConfig$2().table.checkboxConfig, props.checkboxConfig);
16364
16318
  });
16365
16319
  const computeTooltipOpts = computed(() => {
16366
- return Object.assign({}, getConfig$2().tooltip, getConfig$2().table.tooltipConfig, props.tooltipConfig);
16320
+ const isVScrollbar = computeIsVScrollbar.value;
16321
+ return Object.assign({ useScrollbar: isVScrollbar }, getConfig$2().tooltip, getConfig$2().table.tooltipConfig, props.tooltipConfig);
16367
16322
  });
16368
16323
  const computeHeaderTooltipOpts = computed(() => {
16369
16324
  const tooltipOpts = computeTooltipOpts.value;
@@ -16398,7 +16353,8 @@ var VxeTableComponent = defineVxeComponent({
16398
16353
  return Object.assign({ orders: ['asc', 'desc', null] }, getConfig$2().table.sortConfig, props.sortConfig);
16399
16354
  });
16400
16355
  const computeFilterOpts = computed(() => {
16401
- return Object.assign({}, getConfig$2().table.filterConfig, props.filterConfig);
16356
+ const isVScrollbar = computeIsVScrollbar.value;
16357
+ return Object.assign({ useScrollbar: isVScrollbar }, getConfig$2().table.filterConfig, props.filterConfig);
16402
16358
  });
16403
16359
  const computeFloatingFilterOpts = computed(() => {
16404
16360
  return Object.assign({}, getConfig$2().table.floatingFilterConfig, props.floatingFilterConfig);
@@ -16788,6 +16744,7 @@ var VxeTableComponent = defineVxeComponent({
16788
16744
  };
16789
16745
  const computeMaps = {
16790
16746
  computeSize,
16747
+ computeIsVScrollbar,
16791
16748
  computeTableId,
16792
16749
  computeValidOpts,
16793
16750
  computeRowField,
@@ -19439,6 +19396,7 @@ var VxeTableComponent = defineVxeComponent({
19439
19396
  if (reFull) {
19440
19397
  updateTreeLineStyle();
19441
19398
  }
19399
+ updateScrollbar();
19442
19400
  internalData.rceRunTime = Date.now();
19443
19401
  if (reFull) {
19444
19402
  return computeScrollLoad();
@@ -19446,8 +19404,14 @@ var VxeTableComponent = defineVxeComponent({
19446
19404
  });
19447
19405
  };
19448
19406
  const updateScrollbar = () => {
19449
- updateThumbSize();
19450
- updateThumbOffset();
19407
+ const isVScrollbar = computeIsVScrollbar.value;
19408
+ if (isVScrollbar) {
19409
+ return nextTick().then(() => {
19410
+ updateThumbSize();
19411
+ updateThumbOffset();
19412
+ });
19413
+ }
19414
+ return Promise.resolve();
19451
19415
  };
19452
19416
  const defaultMinRunDelay = 50;
19453
19417
  const handleLazyRecalculate = (reFull, reWidth, reHeight, options) => {
@@ -28748,8 +28712,8 @@ var VxeTableComponent = defineVxeComponent({
28748
28712
  }
28749
28713
  },
28750
28714
  triggerBodyScrollEvent(evnt, fixedType) {
28751
- const { useScrollbar } = props;
28752
28715
  const { scrollYLoad, scrollXLoad } = reactData;
28716
+ const isVScrollbar = computeIsVScrollbar.value;
28753
28717
  const { elemStore, intoRunScroll, lastScrollTop, lastScrollLeft, inWheelScroll, inVirtualScroll, inHeaderScroll, inBodyScroll, scrollRenderType, inFooterScroll } = internalData;
28754
28718
  if (inWheelScroll || inVirtualScroll || inHeaderScroll || inFooterScroll) {
28755
28719
  return;
@@ -28768,7 +28732,7 @@ var VxeTableComponent = defineVxeComponent({
28768
28732
  if (!bodyScrollElem) {
28769
28733
  return;
28770
28734
  }
28771
- if (!useScrollbar) {
28735
+ if (!isVScrollbar) {
28772
28736
  if (!xHandleEl) {
28773
28737
  return;
28774
28738
  }
@@ -29519,6 +29483,24 @@ var VxeTableComponent = defineVxeComponent({
29519
29483
  return nextTick();
29520
29484
  }
29521
29485
  };
29486
+ const bindScrollbarResize = () => {
29487
+ const { elemStore } = internalData;
29488
+ const isVScrollbar = computeIsVScrollbar.value;
29489
+ if (isVScrollbar) {
29490
+ const el = refElem.value;
29491
+ const viewInnerEl = getRefElem(elemStore['main-body-table']);
29492
+ const scrollObserver = globalResize.create(() => {
29493
+ reScrollFlag.value++;
29494
+ });
29495
+ if (el) {
29496
+ scrollObserver.observe(el);
29497
+ }
29498
+ if (viewInnerEl) {
29499
+ scrollObserver.observe(viewInnerEl);
29500
+ }
29501
+ internalData.scrollObserver = scrollObserver;
29502
+ }
29503
+ };
29522
29504
  const updateThumbSize = () => {
29523
29505
  const { elemStore } = internalData;
29524
29506
  const viewEl = getRefElem(elemStore['main-body-scroll']);
@@ -30098,8 +30080,8 @@ var VxeTableComponent = defineVxeComponent({
30098
30080
  };
30099
30081
  const renderVirtualBody = () => {
30100
30082
  const $xeGanttView = internalData.xeGanttView;
30101
- const { useScrollbar } = props;
30102
30083
  const { xThumbWidth, yThumbHeight } = reactData;
30084
+ const isVScrollbar = computeIsVScrollbar.value;
30103
30085
  const scrollbarOpts = computeScrollbarOpts.value;
30104
30086
  const scrollXAutoHide = computeScrollXAutoHide.value;
30105
30087
  const scrollYAutoHide = computeScrollYAutoHide.value;
@@ -30113,10 +30095,10 @@ var VxeTableComponent = defineVxeComponent({
30113
30095
  return h('div', {
30114
30096
  key: 'lvb',
30115
30097
  class: ['vxe-table--layout-wrapper', `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`, `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`, {
30116
- 'is--virtual-scrollbar': useScrollbar,
30117
- 'ov-padding': useScrollbar && scrollbarOpts.padding,
30118
- 'ov-x--auto-hide': useScrollbar && scrollXAutoHide,
30119
- 'ov-y--auto-hide': useScrollbar && scrollYAutoHide,
30098
+ 'is--virtual-scrollbar': isVScrollbar,
30099
+ 'ov-padding': isVScrollbar && scrollbarOpts.padding,
30100
+ 'ov-x--auto-hide': isVScrollbar && scrollXAutoHide,
30101
+ 'ov-y--auto-hide': isVScrollbar && scrollYAutoHide,
30120
30102
  'overflow-y': yThumbHeight,
30121
30103
  'overflow-x': xThumbWidth
30122
30104
  }]
@@ -30163,10 +30145,11 @@ var VxeTableComponent = defineVxeComponent({
30163
30145
  ]);
30164
30146
  };
30165
30147
  const renderVN = () => {
30166
- const { loading, stripe, useScrollbar, showHeader, height, treeConfig, mouseConfig, showFooter, highlightCell, highlightHoverRow, highlightHoverColumn, editConfig, editRules, importConfig, exportConfig, printConfig } = props;
30148
+ const { loading, stripe, showHeader, height, treeConfig, mouseConfig, showFooter, highlightCell, highlightHoverRow, highlightHoverColumn, editConfig, editRules, importConfig, exportConfig, printConfig } = props;
30167
30149
  const { isGroup, overflowX, overflowY, scrollXLoad, scrollYLoad, tableData, initStore, isRowGroupStatus, columnStore, filterStore, customStore, tooltipStore } = reactData;
30168
30150
  const { teleportToWrapperElem, popupToWrapperElem, customPopupToElem } = internalData;
30169
30151
  const { leftList, rightList } = columnStore;
30152
+ const isVScrollbar = computeIsVScrollbar.value;
30170
30153
  const loadingSlot = slots.loading;
30171
30154
  const tipSlots = {
30172
30155
  header: slots.headerTooltip || slots['header-tooltip'],
@@ -30206,7 +30189,7 @@ var VxeTableComponent = defineVxeComponent({
30206
30189
  if (isCrossTableDrag && !tableData.length) {
30207
30190
  tbOns.onDragover = $xeTable.handleCrossTableRowDragoverEmptyEvent;
30208
30191
  }
30209
- return h('div', Object.assign({ ref: refElem, class: ['vxe-table', 'vxe-table--render-default', `tid_${xID}`, `border--${tableBorder}`, useScrollbar ? 'is--virtual-scrollbar' : 'is--native-scrollbar', `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`, `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`, {
30192
+ return h('div', Object.assign({ ref: refElem, class: ['vxe-table', 'vxe-table--render-default', `tid_${xID}`, `border--${tableBorder}`, isVScrollbar ? 'is--virtual-scrollbar' : 'is--native-scrollbar', `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`, `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`, {
30210
30193
  [`size--${vSize}`]: vSize,
30211
30194
  [`valid-msg--${validOpts.msgMode}`]: !!editRules,
30212
30195
  'vxe-editable': !!editConfig,
@@ -30267,7 +30250,7 @@ var VxeTableComponent = defineVxeComponent({
30267
30250
  h('div', {
30268
30251
  key: 'tw',
30269
30252
  class: 'vxe-table--render-wrapper'
30270
- }, useScrollbar
30253
+ }, isVScrollbar
30271
30254
  ? [renderVirtualBody()]
30272
30255
  : (scrollbarXToTop
30273
30256
  ? [
@@ -30453,7 +30436,8 @@ var VxeTableComponent = defineVxeComponent({
30453
30436
  key: 'ctp',
30454
30437
  ref: refCommTooltip,
30455
30438
  isArrow: false,
30456
- enterable: false
30439
+ enterable: false,
30440
+ useScrollbar: isVScrollbar
30457
30441
  }),
30458
30442
  /**
30459
30443
  * 工具提示
@@ -30476,7 +30460,8 @@ var VxeTableComponent = defineVxeComponent({
30476
30460
  maxHeight: tableTipConfig.maxHeight,
30477
30461
  placement: tableTipConfig.placement,
30478
30462
  defaultPlacement: tableTipConfig.defaultPlacement,
30479
- popupClassName: tableTipConfig.popupClassName
30463
+ popupClassName: tableTipConfig.popupClassName,
30464
+ useScrollbar: tableTipConfig.useScrollbar
30480
30465
  }, currTooltipSlot
30481
30466
  ? {
30482
30467
  content: () => {
@@ -30515,7 +30500,8 @@ var VxeTableComponent = defineVxeComponent({
30515
30500
  theme: validTipConfig.theme,
30516
30501
  enterable: validTipConfig.enterable,
30517
30502
  enterDelay: validTipConfig.enterDelay,
30518
- leaveDelay: validTipConfig.leaveDelay
30503
+ leaveDelay: validTipConfig.leaveDelay,
30504
+ useScrollbar: validTipConfig.useScrollbar
30519
30505
  })
30520
30506
  : renderEmptyElement$1($xeTable)
30521
30507
  ])
@@ -30620,42 +30606,43 @@ var VxeTableComponent = defineVxeComponent({
30620
30606
  watch(() => VxeUI.getLanguage(), () => {
30621
30607
  reLayoutFlag.value++;
30622
30608
  });
30609
+ watch(computeIsVScrollbar, () => {
30610
+ nextTick(() => {
30611
+ bindScrollbarResize();
30612
+ nextTick(() => {
30613
+ reLayoutFlag.value++;
30614
+ });
30615
+ });
30616
+ });
30623
30617
  watch(computeScrollbarXToTop, () => {
30624
- reScrollFlag.value++;
30625
30618
  reLayoutFlag.value++;
30626
30619
  });
30627
30620
  watch(computeScrollbarYToLeft, () => {
30628
- reScrollFlag.value++;
30629
30621
  reLayoutFlag.value++;
30630
30622
  });
30631
30623
  watch(computeScrollXVisible, () => {
30632
- reScrollFlag.value++;
30633
30624
  reLayoutFlag.value++;
30634
30625
  });
30635
30626
  watch(computeScrollYVisible, () => {
30636
- reScrollFlag.value++;
30637
30627
  reLayoutFlag.value++;
30638
30628
  });
30639
30629
  watch(computeScrollXHeight, () => {
30640
- reScrollFlag.value++;
30641
30630
  reLayoutFlag.value++;
30642
30631
  });
30643
30632
  watch(computeScrollYWidth, () => {
30644
- reScrollFlag.value++;
30645
30633
  reLayoutFlag.value++;
30646
30634
  });
30647
30635
  watch(computeCellHeitht, () => {
30648
30636
  reLayoutFlag.value++;
30649
30637
  });
30650
30638
  watch(reLayoutFlag, () => {
30651
- $xeTable.recalculate(true);
30639
+ nextTick().then(() => {
30640
+ $xeTable.recalculate(true);
30641
+ });
30652
30642
  });
30653
30643
  watch(reScrollFlag, () => {
30654
- nextTick(() => {
30655
- $xeTable.updateScrollbar();
30656
- nextTick(() => {
30657
- $xeTable.updateScrollbar();
30658
- });
30644
+ updateScrollbar().then(() => {
30645
+ updateScrollbar();
30659
30646
  });
30660
30647
  });
30661
30648
  const footFlag = ref(0);
@@ -30788,7 +30775,7 @@ var VxeTableComponent = defineVxeComponent({
30788
30775
  });
30789
30776
  onMounted(() => {
30790
30777
  const { editConfig, exportConfig, importConfig, treeConfig, minHeight, keepSource, areaConfig } = props;
30791
- const { elemStore, scrollXStore, scrollYStore } = internalData;
30778
+ const { scrollXStore, scrollYStore } = internalData;
30792
30779
  const columnOpts = computeColumnOpts.value;
30793
30780
  const columnDragOpts = computeColumnDragOpts.value;
30794
30781
  const aggregateOpts = computeAggregateOpts.value;
@@ -31061,22 +31048,9 @@ var VxeTableComponent = defineVxeComponent({
31061
31048
  handleUpdateRowGroup(groupFields);
31062
31049
  initData();
31063
31050
  nextTick(() => {
31064
- const { useScrollbar, autoResize } = props;
31065
- const el = refElem.value;
31066
- if (useScrollbar) {
31067
- const viewInnerEl = getRefElem(elemStore['main-body-table']);
31068
- const scrollObserver = globalResize.create(() => {
31069
- reScrollFlag.value++;
31070
- });
31071
- if (el) {
31072
- scrollObserver.observe(el);
31073
- }
31074
- if (viewInnerEl) {
31075
- scrollObserver.observe(viewInnerEl);
31076
- }
31077
- internalData.scrollObserver = scrollObserver;
31078
- }
31051
+ const { autoResize } = props;
31079
31052
  if (autoResize) {
31053
+ const el = refElem.value;
31080
31054
  const parentEl = $xeTable.getParentElem();
31081
31055
  const resizeObserver = globalResize.create(() => {
31082
31056
  if (props.autoResize) {
@@ -31091,6 +31065,7 @@ var VxeTableComponent = defineVxeComponent({
31091
31065
  }
31092
31066
  internalData.resizeObserver = resizeObserver;
31093
31067
  }
31068
+ bindScrollbarResize();
31094
31069
  });
31095
31070
  if (virtualYOpts.mode !== 'scroll') {
31096
31071
  const tableViewportEl = refTableViewportElem.value;
@@ -31919,6 +31894,7 @@ var VxeGridComponent = defineVxeComponent({
31919
31894
  const VxeUIPagerComponent = VxeUI.getComponent('VxePager');
31920
31895
  const defaultLayouts = [['Form'], ['Toolbar', 'Top', 'Table', 'Bottom', 'Pager']];
31921
31896
  const { computeSize } = useFns.useSize(props);
31897
+ const { computeIsVScrollbar } = useFns.useVScrollbar(props);
31922
31898
  const reactData = reactive(createReactData());
31923
31899
  const internalData = createInternalData();
31924
31900
  const refElem = ref();
@@ -32101,6 +32077,8 @@ var VxeGridComponent = defineVxeComponent({
32101
32077
  refPopupContainerElem
32102
32078
  };
32103
32079
  const computeMaps = {
32080
+ computeSize,
32081
+ computeIsVScrollbar,
32104
32082
  computeProxyOpts,
32105
32083
  computePagerOpts,
32106
32084
  computeFormOpts,