vxe-table 3.25.0-beta.2 → 3.25.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 (66) 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/module/custom/panel.js +2 -2
  6. package/es/table/module/filter/mixin.js +5 -7
  7. package/es/table/module/filter/panel.js +47 -48
  8. package/es/table/src/methods.js +13 -7
  9. package/es/table/src/table.js +52 -27
  10. package/es/table/src/util.js +1 -2
  11. package/es/table/style.css +31 -12
  12. package/es/table/style.min.css +1 -1
  13. package/es/ui/index.js +2 -2
  14. package/es/ui/src/dom.js +11 -8
  15. package/es/ui/src/log.js +1 -1
  16. package/es/vxe-table/style.css +31 -12
  17. package/es/vxe-table/style.min.css +1 -1
  18. package/lib/index.css +1 -1
  19. package/lib/index.min.css +1 -1
  20. package/lib/index.umd.js +126 -149
  21. package/lib/index.umd.min.js +1 -1
  22. package/lib/style.css +1 -1
  23. package/lib/style.min.css +1 -1
  24. package/lib/table/module/custom/panel.js +2 -2
  25. package/lib/table/module/custom/panel.min.js +1 -1
  26. package/lib/table/module/filter/mixin.js +6 -7
  27. package/lib/table/module/filter/mixin.min.js +1 -1
  28. package/lib/table/module/filter/panel.js +41 -37
  29. package/lib/table/module/filter/panel.min.js +1 -1
  30. package/lib/table/src/methods.js +9 -9
  31. package/lib/table/src/methods.min.js +1 -1
  32. package/lib/table/src/table.js +56 -29
  33. package/lib/table/src/table.min.js +1 -1
  34. package/lib/table/src/util.js +1 -2
  35. package/lib/table/src/util.min.js +1 -1
  36. package/lib/table/style/style.css +31 -12
  37. package/lib/table/style/style.min.css +1 -1
  38. package/lib/ui/index.js +2 -2
  39. package/lib/ui/index.min.js +1 -1
  40. package/lib/ui/src/dom.js +11 -7
  41. package/lib/ui/src/dom.min.js +1 -1
  42. package/lib/ui/src/log.js +1 -1
  43. package/lib/ui/src/log.min.js +1 -1
  44. package/lib/vxe-table/style/style.css +31 -12
  45. package/lib/vxe-table/style/style.min.css +1 -1
  46. package/package.json +2 -2
  47. package/packages/grid/src/grid.ts +2 -1
  48. package/packages/table/module/custom/panel.ts +2 -2
  49. package/packages/table/module/filter/mixin.ts +5 -7
  50. package/packages/table/module/filter/panel.ts +50 -48
  51. package/packages/table/src/methods.ts +15 -7
  52. package/packages/table/src/table.ts +55 -27
  53. package/packages/table/src/util.ts +1 -2
  54. package/packages/ui/index.ts +1 -1
  55. package/packages/ui/src/dom.ts +12 -8
  56. package/styles/components/table-module/filter.scss +25 -14
  57. package/es/table/src/scrollbar.js +0 -54
  58. package/lib/table/src/scrollbar.js +0 -63
  59. package/lib/table/src/scrollbar.min.js +0 -1
  60. package/packages/table/src/scrollbar.ts +0 -57
  61. /package/es/{iconfont.1792035018941.ttf → iconfont.1792139868734.ttf} +0 -0
  62. /package/es/{iconfont.1792035018941.woff → iconfont.1792139868734.woff} +0 -0
  63. /package/es/{iconfont.1792035018941.woff2 → iconfont.1792139868734.woff2} +0 -0
  64. /package/lib/{iconfont.1792035018941.ttf → iconfont.1792139868734.ttf} +0 -0
  65. /package/lib/{iconfont.1792035018941.woff → iconfont.1792139868734.woff} +0 -0
  66. /package/lib/{iconfont.1792035018941.woff2 → iconfont.1792139868734.woff2} +0 -0
package/lib/index.umd.js CHANGED
@@ -3323,7 +3323,7 @@ function getDefaultConfig(val1, def1) {
3323
3323
  /* unused harmony import specifier */ var VxeUI;
3324
3324
 
3325
3325
 
3326
- const version = "3.25.0-beta.2";
3326
+ const version = "3.25.0-beta.4";
3327
3327
  core_.VxeUI.version = version;
3328
3328
  core_.VxeUI.tableVersion = version;
3329
3329
  core_.VxeUI.setConfig({
@@ -3487,7 +3487,7 @@ core_.VxeUI.setConfig({
3487
3487
  destroyOnClose: true,
3488
3488
  multiple: true,
3489
3489
  showIcon: true,
3490
- maxHeight: 280
3490
+ maxHeight: 320
3491
3491
  },
3492
3492
  floatingFilterConfig: {
3493
3493
  // enabled: false
@@ -3865,7 +3865,6 @@ var es_iterator_reduce = __webpack_require__(8237);
3865
3865
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.some.js
3866
3866
  var es_iterator_some = __webpack_require__(3579);
3867
3867
  ;// ./packages/ui/src/dom.ts
3868
- /* unused harmony import specifier */ var XEUtils;
3869
3868
 
3870
3869
 
3871
3870
  const reClsMap = {};
@@ -4124,10 +4123,12 @@ function updatePanelPlacement(targetElem, panelElem, options) {
4124
4123
  defaultLeft,
4125
4124
  placement,
4126
4125
  defaultPlacement,
4126
+ appendTo,
4127
4127
  teleportTo,
4128
4128
  marginSize,
4129
4129
  isMinWidth
4130
4130
  } = Object.assign({
4131
+ appendTo: '',
4131
4132
  teleportTo: false,
4132
4133
  marginSize: 18,
4133
4134
  isMinWidth: true
@@ -4141,7 +4142,7 @@ function updatePanelPlacement(targetElem, panelElem, options) {
4141
4142
  const stys = {};
4142
4143
  if (panelElem && targetElem) {
4143
4144
  const bodyEl = document.body;
4144
- const parentWrapperEl = getPopupWrapperElement(panelElem);
4145
+ const parentWrapperEl = getPopupWrapperElement(teleportTo ? getPopupAppendElement(appendTo) : panelElem);
4145
4146
  if (parentWrapperEl) {
4146
4147
  const targetWidth = targetElem.offsetWidth;
4147
4148
  const targetHeight = targetElem.offsetHeight;
@@ -4152,14 +4153,16 @@ function updatePanelPlacement(targetElem, panelElem, options) {
4152
4153
  const targetRect = targetElem.getBoundingClientRect();
4153
4154
  const visibleHeight = bodyEl.clientHeight;
4154
4155
  const visibleWidth = bodyEl.clientWidth;
4155
- const offsetLeft = parentWrapperRect.left;
4156
- const offsetTop = parentWrapperRect.top;
4156
+ const parentWrapperScrollLeft = parentWrapperEl.scrollLeft;
4157
+ const parentWrapperScrollTop = parentWrapperEl.scrollTop;
4158
+ const parentWrapperOffsetLeft = parentWrapperRect.left;
4159
+ const parentWrapperOffsetTop = parentWrapperRect.top;
4157
4160
  const targetLeft = targetRect.left;
4158
4161
  const targetTop = targetRect.top;
4159
4162
  minWidth = targetElem.offsetWidth;
4160
4163
  if (teleportTo) {
4161
- left = defaultLeft || targetLeft - (panelWidth - targetWidth) / 2;
4162
- top = defaultTop || targetTop + targetHeight;
4164
+ left = (defaultLeft || targetLeft - (panelWidth - targetWidth) / 2) - parentWrapperScrollLeft;
4165
+ top = (defaultTop || targetTop + targetHeight) - parentWrapperScrollTop;
4163
4166
  if (placement === 'top') {
4164
4167
  panelPlacement = 'top';
4165
4168
  top = targetTop - panelHeight;
@@ -4201,8 +4204,8 @@ function updatePanelPlacement(targetElem, panelElem, options) {
4201
4204
  left = marginSize;
4202
4205
  }
4203
4206
  // 偏移
4204
- top -= offsetTop;
4205
- left -= offsetLeft;
4207
+ top -= parentWrapperOffsetTop;
4208
+ left -= parentWrapperOffsetLeft;
4206
4209
  } else {
4207
4210
  if (placement === 'top') {
4208
4211
  panelPlacement = 'top';
@@ -4268,12 +4271,12 @@ function getPopupWrapperElement(panelElem) {
4268
4271
  return (parentEl === bodyEl ? document.documentElement : parentEl) || null;
4269
4272
  }
4270
4273
  function getPopupContainer(appendTo) {
4271
- const selectElem = appendTo && XEUtils.isFunction(appendTo) ? appendTo({}) : appendTo;
4274
+ const selectElem = appendTo && external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(appendTo) ? appendTo({}) : appendTo;
4272
4275
  return selectElem || 'body';
4273
4276
  }
4274
4277
  function getPopupAppendElement(appendTo) {
4275
4278
  const selectElem = getPopupContainer(appendTo);
4276
- if (XEUtils.isString(selectElem)) {
4279
+ if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(selectElem)) {
4277
4280
  return document.querySelector(selectElem) || document.body;
4278
4281
  }
4279
4282
  return selectElem;
@@ -4283,7 +4286,7 @@ function getPopupAppendElement(appendTo) {
4283
4286
  const {
4284
4287
  log: log_log
4285
4288
  } = core_.VxeUI;
4286
- const tableVersion = `table v${"3.25.0-beta.2"}`;
4289
+ const tableVersion = `table v${"3.25.0-beta.4"}`;
4287
4290
  function createComponentLog(name) {
4288
4291
  const uiVersion = core_.VxeUI.uiVersion ? `ui v${core_.VxeUI.uiVersion}` : '';
4289
4292
  const ganttVersion = core_.VxeUI.ganttVersion ? `gantt v${core_.VxeUI.ganttVersion}` : '';
@@ -4811,8 +4814,7 @@ function createReactData() {
4811
4814
  isIndeterminate: false,
4812
4815
  style: null,
4813
4816
  column: null,
4814
- visible: false,
4815
- maxHeight: null
4817
+ visible: false
4816
4818
  },
4817
4819
  // 存放列相关的信息
4818
4820
  columnStore: {
@@ -8054,61 +8056,6 @@ function clearColAnimate(elem, clss) {
8054
8056
  }
8055
8057
  }, 500);
8056
8058
  }
8057
- ;// ./packages/table/src/scrollbar.ts
8058
- /**
8059
- * 计算滚动条滑块的长度
8060
- */
8061
- function getThumbSize(viewportSize, contentSize, trackSize) {
8062
- if (contentSize <= viewportSize) {
8063
- return 0;
8064
- }
8065
- const ratio = viewportSize / contentSize;
8066
- const ideal = trackSize * ratio;
8067
- return Math.max(20, Math.min(ideal, trackSize));
8068
- }
8069
- /**
8070
- * 计算滚动条滑块的偏移位置
8071
- */
8072
- function getThumbOffsetSize(offsetSize, viewportSize, contentSize, trackSize, thumbSize) {
8073
- const maxScroll = contentSize - viewportSize;
8074
- if (maxScroll <= 0) {
8075
- return 0;
8076
- }
8077
- const maxThumbOffset = trackSize - thumbSize;
8078
- if (maxThumbOffset <= 0) {
8079
- return 0;
8080
- }
8081
- const clamped = Math.min(Math.max(offsetSize, 0), maxScroll);
8082
- const ratio = clamped / maxScroll;
8083
- return ratio * maxThumbOffset;
8084
- }
8085
- /**
8086
- * 根据点击轨道的位置,计算滑块的偏移位置
8087
- */
8088
- function getScrollFromClick(clickPosition, viewportSize, contentSize, trackSize, thumbSize) {
8089
- const maxThumbOffset = trackSize - thumbSize;
8090
- const maxScroll = contentSize - viewportSize;
8091
- if (maxScroll <= 0 || maxThumbOffset <= 0) {
8092
- return 0;
8093
- }
8094
- let thumbOffset = clickPosition - thumbSize / 2;
8095
- thumbOffset = Math.min(Math.max(thumbOffset, 0), maxThumbOffset);
8096
- const scrollOffset = thumbOffset / maxThumbOffset * maxScroll;
8097
- return scrollOffset;
8098
- }
8099
- /**
8100
- * 拖拽 thumb 时,根据鼠标位置计算滑块的偏移位置
8101
- */
8102
- function getScrollFromDrag(pointerPosition, dragOffset, viewportSize, contentSize, trackSize, thumbSize) {
8103
- const maxScroll = contentSize - viewportSize;
8104
- const maxThumbOffset = trackSize - thumbSize;
8105
- if (maxScroll <= 0 || maxThumbOffset <= 0) {
8106
- return 0;
8107
- }
8108
- let thumbOffset = pointerPosition - dragOffset;
8109
- thumbOffset = Math.min(Math.max(thumbOffset, 0), maxThumbOffset);
8110
- return thumbOffset / maxThumbOffset * maxScroll;
8111
- }
8112
8059
  ;// ./packages/table/src/store.ts
8113
8060
  // 跨表拖拽
8114
8061
  const crossTableDragRowGlobal = {
@@ -8119,7 +8066,7 @@ function getCrossTableDragRowInfo($xeTable) {
8119
8066
  return crossTableDragRowInfo;
8120
8067
  }
8121
8068
  ;// ./packages/table/src/methods.ts
8122
- const{warnLog: methods_warnLog,errLog: methods_errLog}=createComponentLog('table');const{getConfig: methods_getConfig,getI18n: methods_getI18n,renderer: methods_renderer,formats: methods_formats,interceptor: methods_interceptor,createEvent,globalEvents: methods_globalEvents,GLOBAL_EVENT_KEYS}=core_.VxeUI;const supportMaxRow=5e6;const customStorageKey='VXE_CUSTOM_STORE';const maxYHeight=5e6;const maxXWidth=5e6;const sourceType='table';let crossTableDragRowObj=null;function eqCellValue(newRow,oldRow,field){const val1=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(newRow,field);const val2=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(oldRow,field);let result=false;if(eqEmptyValue(val1)&&eqEmptyValue(val2)){result=true;}else if(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(val1)||external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(val1)){result=''+val1===''+val2;}else{result=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isEqual(val1,val2);}return{newValue:val1,oldValue:val2,result};}function getNextSortOrder($xeTable,column){const sortOpts=$xeTable.computeSortOpts;const{orders=[]}=sortOpts;const currOrder=column.order||null;const oIndex=orders.indexOf(currOrder)+1;return orders[oIndex<orders.length?oIndex:0];}const getCustomStorageMap=id=>{const version=methods_getConfig().version;const rest=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toStringJSON(localStorage.getItem(customStorageKey)||'');const maps=rest&&rest._v===version?rest:{_v:version};return(id?maps[id]:maps)||{};};const setCustomStorageMap=(id,data)=>{const version=methods_getConfig().version;const maps=getCustomStorageMap();maps[id]=data||undefined;maps._v=version;localStorage.setItem(customStorageKey,external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toJSONString(maps));};const getRecoverRowMaps=($xeTable,keyMaps)=>{const internalData=$xeTable;const{fullAllDataRowIdData}=internalData;const restKeys={};external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(keyMaps,(row,rowid)=>{if(fullAllDataRowIdData[rowid]){restKeys[rowid]=row;}});return restKeys;};function handleReserveRow($xeTable,reserveRowMap){const internalData=$xeTable;const{fullDataRowIdData}=internalData;const reserveList=[];external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(reserveRowMap,(item,rowid)=>{if(fullDataRowIdData[rowid]&&reserveList.indexOf(fullDataRowIdData[rowid].row)===-1){reserveList.push(fullDataRowIdData[rowid].row);}});return reserveList;}function handleVirtualXVisible($xeTable){const reactData=$xeTable;const internalData=$xeTable;const{isScrollXBig,scrollXWidth}=reactData;const{elemStore,visibleColumn,fullColumnIdData}=internalData;const leftFixedWidth=$xeTable.computeLeftFixedWidth;const rightFixedWidth=$xeTable.computeRightFixedWidth;const bodyScrollElem=getRefElem(elemStore['main-body-scroll']);if(bodyScrollElem){const clientWidth=bodyScrollElem.clientWidth;let scrollLeft=bodyScrollElem.scrollLeft;if(isScrollXBig){scrollLeft=Math.ceil((scrollXWidth-clientWidth)*Math.min(1,scrollLeft/(maxXWidth-clientWidth)));}const startLeft=scrollLeft+leftFixedWidth;const endLeft=scrollLeft+clientWidth-rightFixedWidth;let leftIndex=0;let rightIndex=visibleColumn.length;while(leftIndex<rightIndex){const cIndex=Math.floor((leftIndex+rightIndex)/2);const column=visibleColumn[cIndex];const colid=column.id;const colRest=fullColumnIdData[colid]||{};if(colRest.oLeft<=startLeft){leftIndex=cIndex+1;}else{rightIndex=cIndex;}}let visibleSize=0;const toVisibleIndex=leftIndex===visibleColumn.length?leftIndex:Math.max(0,leftIndex<visibleColumn.length?leftIndex-2:0);for(let cIndex=toVisibleIndex,cLen=visibleColumn.length;cIndex<cLen;cIndex++){const column=visibleColumn[cIndex];const colid=column.id;const colRest=fullColumnIdData[colid]||{};visibleSize++;if(colRest.oLeft>endLeft||visibleSize>=60){break;}}return{toVisibleIndex:Math.max(0,toVisibleIndex),visibleSize:Math.max(6,visibleSize)};}return{toVisibleIndex:0,visibleSize:6};}function handleCustomRestore($xeTable,storeData){const props=$xeTable;const reactData=$xeTable;const internalData=$xeTable;const $xeGrid=$xeTable.$xeGrid;const $xeGantt=$xeTable.$xeGantt;const $xeGGWrapper=$xeGrid||$xeGantt;const{aggregateConfig,rowGroupConfig}=props;const{collectColumn}=internalData;const{isCustomAlign,isCustomHeaderAlign,isCustomFooterAlign,isCustomResizable,isCustomVisible,isCustomFixed,isCustomSort,isCustomAggGroup,isCustomAggFunc,isCustomPager}=handleCustomStoreConfig($xeTable);let{alignData,headerAlignData,footerAlignData,resizableData,sortData,visibleData,fixedData,aggGroupData,aggFuncData,pagerData}=storeData;// 处理还原
8069
+ const{warnLog: methods_warnLog,errLog: methods_errLog}=createComponentLog('table');const{getConfig: methods_getConfig,getI18n: methods_getI18n,renderer: methods_renderer,scrollbarUtils,formats: methods_formats,interceptor: methods_interceptor,createEvent,globalEvents: methods_globalEvents,GLOBAL_EVENT_KEYS}=core_.VxeUI;const{getThumbOffsetSize,getThumbSize,getScrollFromClick,getScrollFromDrag}=scrollbarUtils||{};const supportMaxRow=5e6;const customStorageKey='VXE_CUSTOM_STORE';const maxYHeight=5e6;const maxXWidth=5e6;const sourceType='table';let crossTableDragRowObj=null;function eqCellValue(newRow,oldRow,field){const val1=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(newRow,field);const val2=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(oldRow,field);let result=false;if(eqEmptyValue(val1)&&eqEmptyValue(val2)){result=true;}else if(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(val1)||external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(val1)){result=''+val1===''+val2;}else{result=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isEqual(val1,val2);}return{newValue:val1,oldValue:val2,result};}function getNextSortOrder($xeTable,column){const sortOpts=$xeTable.computeSortOpts;const{orders=[]}=sortOpts;const currOrder=column.order||null;const oIndex=orders.indexOf(currOrder)+1;return orders[oIndex<orders.length?oIndex:0];}const getCustomStorageMap=id=>{const version=methods_getConfig().version;const rest=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toStringJSON(localStorage.getItem(customStorageKey)||'');const maps=rest&&rest._v===version?rest:{_v:version};return(id?maps[id]:maps)||{};};const setCustomStorageMap=(id,data)=>{const version=methods_getConfig().version;const maps=getCustomStorageMap();maps[id]=data||undefined;maps._v=version;localStorage.setItem(customStorageKey,external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toJSONString(maps));};const getRecoverRowMaps=($xeTable,keyMaps)=>{const internalData=$xeTable;const{fullAllDataRowIdData}=internalData;const restKeys={};external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(keyMaps,(row,rowid)=>{if(fullAllDataRowIdData[rowid]){restKeys[rowid]=row;}});return restKeys;};function handleReserveRow($xeTable,reserveRowMap){const internalData=$xeTable;const{fullDataRowIdData}=internalData;const reserveList=[];external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(reserveRowMap,(item,rowid)=>{if(fullDataRowIdData[rowid]&&reserveList.indexOf(fullDataRowIdData[rowid].row)===-1){reserveList.push(fullDataRowIdData[rowid].row);}});return reserveList;}function handleVirtualXVisible($xeTable){const reactData=$xeTable;const internalData=$xeTable;const{isScrollXBig,scrollXWidth}=reactData;const{elemStore,visibleColumn,fullColumnIdData}=internalData;const leftFixedWidth=$xeTable.computeLeftFixedWidth;const rightFixedWidth=$xeTable.computeRightFixedWidth;const bodyScrollElem=getRefElem(elemStore['main-body-scroll']);if(bodyScrollElem){const clientWidth=bodyScrollElem.clientWidth;let scrollLeft=bodyScrollElem.scrollLeft;if(isScrollXBig){scrollLeft=Math.ceil((scrollXWidth-clientWidth)*Math.min(1,scrollLeft/(maxXWidth-clientWidth)));}const startLeft=scrollLeft+leftFixedWidth;const endLeft=scrollLeft+clientWidth-rightFixedWidth;let leftIndex=0;let rightIndex=visibleColumn.length;while(leftIndex<rightIndex){const cIndex=Math.floor((leftIndex+rightIndex)/2);const column=visibleColumn[cIndex];const colid=column.id;const colRest=fullColumnIdData[colid]||{};if(colRest.oLeft<=startLeft){leftIndex=cIndex+1;}else{rightIndex=cIndex;}}let visibleSize=0;const toVisibleIndex=leftIndex===visibleColumn.length?leftIndex:Math.max(0,leftIndex<visibleColumn.length?leftIndex-2:0);for(let cIndex=toVisibleIndex,cLen=visibleColumn.length;cIndex<cLen;cIndex++){const column=visibleColumn[cIndex];const colid=column.id;const colRest=fullColumnIdData[colid]||{};visibleSize++;if(colRest.oLeft>endLeft||visibleSize>=60){break;}}return{toVisibleIndex:Math.max(0,toVisibleIndex),visibleSize:Math.max(6,visibleSize)};}return{toVisibleIndex:0,visibleSize:6};}function handleCustomRestore($xeTable,storeData){const props=$xeTable;const reactData=$xeTable;const internalData=$xeTable;const $xeGrid=$xeTable.$xeGrid;const $xeGantt=$xeTable.$xeGantt;const $xeGGWrapper=$xeGrid||$xeGantt;const{aggregateConfig,rowGroupConfig}=props;const{collectColumn}=internalData;const{isCustomAlign,isCustomHeaderAlign,isCustomFooterAlign,isCustomResizable,isCustomVisible,isCustomFixed,isCustomSort,isCustomAggGroup,isCustomAggFunc,isCustomPager}=handleCustomStoreConfig($xeTable);let{alignData,headerAlignData,footerAlignData,resizableData,sortData,visibleData,fixedData,aggGroupData,aggFuncData,pagerData}=storeData;// 处理还原
8123
8070
  if(isCustomAlign&&alignData||isCustomHeaderAlign&&headerAlignData||isCustomFooterAlign&&footerAlignData||isCustomResizable&&resizableData||isCustomSort&&sortData||isCustomVisible&&visibleData||isCustomFixed&&fixedData||isCustomAggGroup&&aggGroupData||isCustomAggFunc&&aggFuncData||isCustomPager&&pagerData&&$xeGGWrapper){const sortColMaps={};if(isCustomSort&&sortData){// 转换兼容老版本数据,即将废弃兼容
8124
8071
  if(!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(sortData)){const sortRests=[];external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(sortData,(index,colKey)=>{sortRests.push({key:colKey,index});});sortData=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().orderBy(sortRests,{field:'index',order:'asc'}).map(item=>({k:item.key}));}let colNum=1;external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(sortData,(sObj,index,sOjs,path,pSObj)=>{sortColMaps[sObj.k]={key:sObj.k,sNum:colNum++,pKey:pSObj?pSObj.k:null};},{children:'c'});}const colKeyMaps={};const allCols=[];const aggGroupConfs=[];external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(collectColumn,(column,index,items,path,parentColumn)=>{const colKey=column.getKey();// 支持一级
8125
8072
  if(!parentColumn){if(isCustomFixed&&fixedData&&fixedData[colKey]!==undefined){column.fixed=fixedData[colKey];}}if(isCustomResizable&&resizableData&&external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(resizableData[colKey])){column.resizeWidth=resizableData[colKey];}if(isCustomVisible&&visibleData&&external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isBoolean(visibleData[colKey])){column.visible=visibleData[colKey];}if(isCustomAggFunc&&aggFuncData&&(aggregateConfig||rowGroupConfig)&&aggFuncData[colKey]){column.aggFunc=aggFuncData[colKey];}if(isCustomAggGroup&&aggGroupData&&aggGroupData[colKey]){aggGroupConfs.push({field:column.field});}colKeyMaps[colKey]=column;allCols.push(column);});if((aggregateConfig||rowGroupConfig)&&aggGroupConfs.length){const groupRest=handleGroupData($xeTable,internalData.tableFullData,aggGroupConfs);internalData.tableFullTreeData=[];internalData.tableFullGroupData=groupRest.treeData;reactData.isRowGroupStatus=true;reactData.rowGroupList=aggGroupConfs;$xeTable.cacheRowMap(false);}// 如果自定义了顺序
@@ -8286,7 +8233,7 @@ const rowHeight=computeRowHeight($xeTable);scrollYStore.rowHeight=rowHeight;//
8286
8233
  reactData.rowHeight=rowHeight;const{toVisibleIndex:toYVisibleIndex,visibleSize:visibleYSize}=handleVirtualYVisible($xeTable);if(scrollYLoad){const offsetYSize=Math.max(0,virtualYOpts.oSize?external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(virtualYOpts.oSize):0);scrollYStore.preloadSize=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(virtualYOpts.preSize);scrollYStore.offsetSize=offsetYSize;scrollYStore.visibleSize=visibleYSize;scrollYStore.endIndex=Math.max(scrollYStore.startIndex+visibleYSize+offsetYSize,scrollYStore.endIndex);scrollYStore.visibleStartIndex=Math.max(scrollYStore.startIndex,toYVisibleIndex);scrollYStore.visibleEndIndex=Math.min(scrollYStore.endIndex,toYVisibleIndex+visibleYSize);$xeTable.updateScrollYData().then(()=>{loadScrollYData($xeTable);});}else{$xeTable.updateScrollYSpace();}});}function calcScrollbar($xeTable){const reactData=$xeTable;const internalData=$xeTable;const{scrollXWidth,scrollYHeight}=reactData;const{elemStore}=internalData;const el=$xeTable.$refs.refElem;if(!el||!el.clientWidth){return;}const bodyWrapperElem=getRefElem(elemStore['main-body-wrapper']);const headerTableElem=getRefElem(elemStore['main-header-table']);const footerTableElem=getRefElem(elemStore['main-footer-table']);const xHandleEl=$xeTable.$refs.refScrollXHandleElem;const yHandleEl=$xeTable.$refs.refScrollYHandleElem;const thumbXElem=$xeTable.$refs.refThumbXElem;const thumbYElem=$xeTable.$refs.refThumbYElem;let overflowY=false;let overflowX=false;if(bodyWrapperElem){const scrollbarOpts=$xeTable.computeScrollbarOpts;const barWidth=$xeTable.computeScrollYWidth;const barHeight=$xeTable.computeScrollXHeight;overflowY=scrollYHeight>bodyWrapperElem.clientHeight;// 如果是虚拟滚动条
8287
8234
  if(thumbYElem){reactData.scrollbarHeight=scrollbarOpts.padding?thumbYElem.offsetWidth:0;}else if(yHandleEl){reactData.scrollbarWidth=barWidth||barHeight||yHandleEl.offsetWidth-yHandleEl.clientWidth||14;}reactData.overflowY=overflowY;overflowX=scrollXWidth>bodyWrapperElem.clientWidth;// 如果是虚拟滚动条
8288
8235
  if(thumbXElem){reactData.scrollbarHeight=scrollbarOpts.padding?thumbXElem.offsetHeight:0;}else if(xHandleEl){reactData.scrollbarHeight=barHeight||barWidth||xHandleEl.offsetHeight-xHandleEl.clientHeight||14;}const hHeight=headerTableElem?headerTableElem.clientHeight:0;const fHeight=footerTableElem?footerTableElem.clientHeight:0;internalData.tableHeight=bodyWrapperElem.offsetHeight;internalData.tHeaderHeight=hHeight;internalData.tFooterHeight=fHeight;reactData.overflowX=overflowX;reactData.parentHeight=Math.max(hHeight+fHeight+20,$xeTable.getParentHeight());}if(overflowX){$xeTable.checkScrolling();}}function handleRecalculateStyle($xeTable,reFull,reWidth,reHeight){const internalData=$xeTable;const el=$xeTable.$refs.refElem;if(!el||!el.clientWidth){return $xeTable.$nextTick();}const varEl=$xeTable.$refs.refVarElem;if(varEl){const[defEl,mediumEl,smallEl,miniEl]=varEl.children;calcVarRowHeightConfig($xeTable,'default',defEl);calcVarRowHeightConfig($xeTable,'medium',mediumEl);calcVarRowHeightConfig($xeTable,'small',smallEl);calcVarRowHeightConfig($xeTable,'mini',miniEl);}if(reWidth){calcCellWidth($xeTable);}if(reFull){autoCellWidth($xeTable);}calcScrollbar($xeTable);updateStyle($xeTable);updateRowExpandStyle($xeTable);if(reFull){updateTreeLineStyle($xeTable);}internalData.rceRunTime=Date.now();return computeScrollLoad($xeTable).then(()=>{// 初始化时需要在列计算之后再执行优化运算,达到最优显示效果
8289
- if(reWidth){calcCellWidth($xeTable);}if(reFull){autoCellWidth($xeTable);}if(reHeight){calcCellHeight($xeTable);}updateStyle($xeTable);calcScrollbar($xeTable);if(reFull){updateRowOffsetTop($xeTable);}updateRowExpandStyle($xeTable);if(reFull){updateTreeLineStyle($xeTable);}internalData.rceRunTime=Date.now();if(reFull){return computeScrollLoad($xeTable);}});}const defaultMinRunDelay=50;function handleLazyRecalculate($xeTable,reFull,reWidth,reHeight,options){const reactData=$xeTable;const internalData=$xeTable;const minRunDelay=(options?options.minRunDelay:defaultMinRunDelay)||defaultMinRunDelay;return new Promise(resolve=>{const{customStore,tableData,tableColumn}=reactData;const{rceTimeout,rceRunTime}=internalData;const $xeGanttView=internalData.xeGanttView;const resizeOpts=$xeTable.computeResizeOpts;let rceDelay=internalData.rceDelay;// 如果在500毫秒内频繁执行,则执行次数减缓
8236
+ if(reWidth){calcCellWidth($xeTable);}if(reFull){autoCellWidth($xeTable);}if(reHeight){calcCellHeight($xeTable);}updateStyle($xeTable);calcScrollbar($xeTable);if(reFull){updateRowOffsetTop($xeTable);}updateRowExpandStyle($xeTable);if(reFull){updateTreeLineStyle($xeTable);}$xeTable.updateScrollbar();internalData.rceRunTime=Date.now();if(reFull){return computeScrollLoad($xeTable);}});}const defaultMinRunDelay=50;function handleLazyRecalculate($xeTable,reFull,reWidth,reHeight,options){const reactData=$xeTable;const internalData=$xeTable;const minRunDelay=(options?options.minRunDelay:defaultMinRunDelay)||defaultMinRunDelay;return new Promise(resolve=>{const{customStore,tableData,tableColumn}=reactData;const{rceTimeout,rceRunTime}=internalData;const $xeGanttView=internalData.xeGanttView;const resizeOpts=$xeTable.computeResizeOpts;let rceDelay=internalData.rceDelay;// 如果在500毫秒内频繁执行,则执行次数减缓
8290
8237
  if(rceRunTime&&rceRunTime>Date.now()-500){rceDelay=Math.min(Math.max(60,Math.min(800,tableData.length/8)),rceDelay+50);}else{rceDelay=0;}internalData.rceDelay=rceDelay;const refreshDelay=resizeOpts.refreshDelay||30;const reDelay=rceDelay+refreshDelay;const el=$xeTable.$refs.refElem;$xeTable.updateScrollbar();if(el&&el.clientWidth){autoCellWidth($xeTable);updateRowExpandStyle($xeTable);}if(customStore.visible&&$xeTable.handleCustomStyle){$xeTable.handleCustomStyle();}const renderCellSize=tableData.length*tableColumn.length;// 渲染量低的场景
8291
8238
  if(renderCellSize<400){rceDelay=20;}else if(renderCellSize<600){rceDelay=40;}else if(renderCellSize<800){rceDelay=80;}if(rceTimeout){clearTimeout(rceTimeout);// 多少毫秒内至少执行一次
8292
8239
  if(rceRunTime&&rceRunTime+minRunDelay<Date.now()){resolve(handleRecalculateStyle($xeTable,reFull,reWidth,reHeight));}else{$xeTable.$nextTick(()=>{resolve();});}}else{resolve(handleRecalculateStyle($xeTable,reFull,reWidth,reHeight));}if($xeGanttView&&$xeGanttView.handleLazyRecalculate){$xeGanttView.handleLazyRecalculate();}internalData.rceTimeout=setTimeout(()=>{internalData.rceDelay=0;internalData.rceTimeout=undefined;handleRecalculateStyle($xeTable,reFull,reWidth,reHeight);if($xeGanttView&&$xeGanttView.handleLazyRecalculate){$xeGanttView.handleLazyRecalculate();}},reDelay);});}function handleResizeEvent($xeTable){const internalData=$xeTable;if(internalData.rsePending){return;}internalData.rsePending=true;handleLazyRecalculate($xeTable,true,true,true,{minRunDelay:200}).then(()=>{internalData.rsePending=false;}).catch(()=>{internalData.rsePending=false;});}function handleUpdateAggValues($xeTable){const reactData=$xeTable;const internalData=$xeTable;const{visibleColumn}=internalData;const aggCols=[];visibleColumn.forEach(column=>{if(column.aggFunc){aggCols.push(column);}});reactData.aggHandleAggColumns=aggCols;}function handleUpdateRowGroup($xeTable,groupFields){const reactData=$xeTable;const aggGroupFields=[];const aggGroupConfs=[];if(groupFields){(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(groupFields)?groupFields:[groupFields]).forEach(field=>{aggGroupFields.push(field);aggGroupConfs.push({field});});}reactData.rowGroupList=aggGroupConfs;reactData.aggHandleFields=aggGroupFields;handleUpdateAggValues($xeTable);}function handleeGroupSummary($xeTable,aggList){const internalData=$xeTable;const{fullColumnFieldData}=internalData;const aggregateOpts=$xeTable.computeAggregateOpts;const aggFuncColumns=$xeTable.computeAggFuncColumns;const{mapChildrenField}=aggregateOpts;const aggCalcMethod=aggregateOpts.calcValuesMethod||aggregateOpts.countMethod||aggregateOpts.aggregateMethod;if(mapChildrenField){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().lastEach(aggList,aggRow=>{let count=0;external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(aggRow[mapChildrenField],row=>{if(row.isAggregate){count+=row.childCount||0;}else{count++;}});aggRow.childCount=count;});if($xeTable.handlePivotTableAggData){$xeTable.handlePivotTableAggData(aggList);}else{external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().lastEach(aggList,aggRow=>{const aggDtObj={};const aggData=aggRow.aggData;const groupField=aggRow.groupField;const groupContent=aggRow.groupContent;const childList=mapChildrenField?aggRow[mapChildrenField]||[]:[];const childCount=aggRow.childCount;const colRest=fullColumnFieldData[groupField]||{};aggFuncColumns.forEach(column=>{const{field}=column;const currAggData=aggData?aggData[field]:null;const ctParams={$table:$xeTable,groupField,groupColumn:colRest?colRest.column:null,column,groupValue:groupContent,childList,childCount,aggValue:currAggData?currAggData.value:0,/**
@@ -8810,7 +8757,7 @@ if(isEnableConf(editConfig)&&editOpts.autoClear!==false&&editOpts.trigger==='dbl
8810
8757
  * 点击排序事件
8811
8758
  */triggerSortEvent(evnt,column,order){const $xeTable=this;const sortOpts=$xeTable.computeSortOpts;const{multiple,allowClear}=sortOpts;const{field,sortable}=column;if(sortable||column.remoteSort){if(!order||column.order===order){if(allowClear){$xeTable.clearSort(multiple?column:null);}}else{$xeTable.sort({field,order});}$xeTable.handleColumnSortEvent(evnt,column);}},handleCellRuleUpdateStatus(type,cellParams,cellValue){const $xeTable=this;const reactData=$xeTable;const{validStore}=reactData;const{row,column}=cellParams;if($xeTable.hasCellRules){if($xeTable.hasCellRules(type,row,column)){const cell=$xeTable.getCellElement(row,column);if(cell){const customVal=!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isUndefined(cellValue);return $xeTable.validCellRules(type,row,column,cellValue).then(()=>{if(customVal&&validStore.visible){setCellValue(row,column,cellValue);}$xeTable.clearValidate(row,column);}).catch(({rule})=>{if(customVal){setCellValue(row,column,cellValue);}$xeTable.showValidTooltip({rule,row,column,cell});});}}}return $xeTable.$nextTick();},/**
8812
8759
  * @private
8813
- */updateScrollbar(){const $xeTable=this;$xeTable.updateThumbSize();$xeTable.updateThumbOffset();},/**
8760
+ */updateScrollbar(){const $xeTable=this;const isVScrollbar=$xeTable.computeIsVScrollbar;if(isVScrollbar){return $xeTable.$nextTick().then(()=>{$xeTable.updateThumbSize();$xeTable.updateThumbOffset();});}return Promise.resolve();},/**
8814
8761
  * 表头单元格按下事件
8815
8762
  */triggerHeaderCellMousedownEvent(evnt,params){const $xeTable=this;const props=$xeTable;const{mouseConfig}=props;const mouseOpts=$xeTable.computeMouseOpts;const columnOpts=$xeTable.computeColumnOpts;const columnDragOpts=$xeTable.computeColumnDragOpts;const{trigger,isCrossDrag,isPeerDrag,disabledMethod}=columnDragOpts;const cell=evnt.currentTarget;const triggerInput=cell&&cell.tagName&&cell.tagName.toLowerCase()==='input';const triggerCheckbox=getEventTargetNode(evnt,cell,'vxe-cell--checkbox').flag;const triggerSort=getEventTargetNode(evnt,cell,'vxe-cell--sort').flag;const triggerFilter=getEventTargetNode(evnt,cell,'vxe-cell--filter').flag;let triggerDrag=false;const isColDragCell=columnOpts.drag&&trigger==='cell';if(!(triggerInput||triggerCheckbox||triggerSort||triggerFilter)){const{column}=params;if(isColDragCell&&!column.fixed&&(isCrossDrag||isPeerDrag||!column.parentId)&&!(disabledMethod&&disabledMethod(params))){triggerDrag=true;$xeTable.handleHeaderCellDragMousedownEvent(evnt,params);}}if(!triggerDrag&&hasEnableConf(mouseConfig,mouseOpts)&&mouseOpts.area&&$xeTable.handleHeaderCellAreaMouseDnEvent){$xeTable.handleHeaderCellAreaMouseDnEvent(evnt,Object.assign({cell,triggerSort,triggerFilter},params));}$xeTable.focus();if($xeTable.closeMenu){$xeTable.closeMenu();}},/**
8816
8763
  * 单元格按下事件
@@ -8940,7 +8887,7 @@ if(transform){return handleVirtualTreeExpand($xeTable,rows,expanded);}else{retur
8940
8887
  * 横向 X 可视渲染事件处理
8941
8888
  */triggerScrollXEvent(){const $xeTable=this;const virtualXOpts=$xeTable.computeVirtualXOpts;if(virtualXOpts.immediate){loadScrollXData($xeTable);}else{lazyScrollXData($xeTable);}},/**
8942
8889
  * 纵向 Y 可视渲染事件处理
8943
- */triggerScrollYEvent(){const $xeTable=this;const virtualYOpts=$xeTable.computeVirtualYOpts;if(virtualYOpts.immediate){loadScrollYData($xeTable);}else{lazyScrollYData($xeTable);}},triggerBodyScrollEvent(evnt,fixedType){const $xeTable=this;const props=$xeTable;const reactData=$xeTable;const internalData=$xeTable;const{useScrollbar}=props;const{scrollYLoad,scrollXLoad}=reactData;const{elemStore,intoRunScroll,lastScrollTop,lastScrollLeft,inWheelScroll,inVirtualScroll,inHeaderScroll,inBodyScroll,scrollRenderType,inFooterScroll}=internalData;if(inWheelScroll||inVirtualScroll||inHeaderScroll||inFooterScroll){return;}const xHandleEl=$xeTable.$refs.refScrollXHandleElem;const yHandleEl=$xeTable.$refs.refScrollYHandleElem;const leftScrollElem=getRefElem(elemStore['left-body-scroll']);const bodyScrollElem=getRefElem(elemStore['main-body-scroll']);const rightScrollElem=getRefElem(elemStore['right-body-scroll']);const headerScrollElem=getRefElem(elemStore['main-header-scroll']);const footerScrollElem=getRefElem(elemStore['main-footer-scroll']);const rowExpandEl=$xeTable.$refs.refRowExpandElem;if(intoRunScroll){return;}if(!bodyScrollElem){return;}if(!useScrollbar){if(!xHandleEl){return;}if(!yHandleEl){return;}}if(inBodyScroll){if(scrollRenderType!==fixedType){return;}}let scrollTop=0;let scrollLeft=0;if(leftScrollElem&&fixedType==='left'){scrollTop=leftScrollElem.scrollTop;}else if(rightScrollElem&&fixedType==='right'){scrollTop=rightScrollElem.scrollTop;}else{scrollTop=bodyScrollElem.scrollTop;scrollLeft=bodyScrollElem.scrollLeft;}const isRollX=scrollLeft!==lastScrollLeft;const isRollY=scrollTop!==lastScrollTop;internalData.inBodyScroll=true;internalData.scrollRenderType=fixedType;if(isRollY){if(fixedType==='left'){setScrollTop(bodyScrollElem,scrollTop);setScrollTop(rightScrollElem,scrollTop);}else if(fixedType==='right'){setScrollTop(bodyScrollElem,scrollTop);setScrollTop(leftScrollElem,scrollTop);}else{setScrollTop(leftScrollElem,scrollTop);setScrollTop(rightScrollElem,scrollTop);}setScrollTop(yHandleEl,scrollTop);setScrollTop(rowExpandEl,scrollTop);syncGanttScrollTop($xeTable,scrollTop);if(scrollYLoad){$xeTable.triggerScrollYEvent(evnt);}}if(isRollX){setScrollLeft(xHandleEl,scrollLeft);setScrollLeft(headerScrollElem,scrollLeft);setScrollLeft(footerScrollElem,scrollLeft);if(scrollXLoad){$xeTable.triggerScrollXEvent(evnt);}}$xeTable.handleScrollEvent(evnt,isRollY,isRollX,scrollTop,scrollLeft,{type:'body',fixed:fixedType});},triggerHeaderScrollEvent(evnt,fixedType){const $xeTable=this;const reactData=$xeTable;const internalData=$xeTable;const{scrollXLoad}=reactData;const{elemStore,intoRunScroll,inWheelScroll,inVirtualScroll,inBodyScroll,inFooterScroll}=internalData;if(inWheelScroll||inVirtualScroll||inBodyScroll||inFooterScroll){return;}if(intoRunScroll){return;}const xHandleEl=$xeTable.$refs.refScrollXHandleElem;const yHandleEl=$xeTable.$refs.refScrollYHandleElem;const bodyScrollElem=getRefElem(elemStore['main-body-scroll']);const headerScrollElem=getRefElem(elemStore['main-header-scroll']);const footerScrollElem=getRefElem(elemStore['main-footer-scroll']);if(!headerScrollElem){return;}if(!xHandleEl){return;}if(!yHandleEl){return;}const scrollTop=yHandleEl.scrollTop;const scrollLeft=headerScrollElem.scrollLeft;const isRollX=true;const isRollY=false;internalData.inHeaderScroll=true;setScrollLeft(xHandleEl,scrollLeft);setScrollLeft(footerScrollElem,scrollLeft);setScrollLeft(bodyScrollElem,scrollLeft);if(scrollXLoad){$xeTable.triggerScrollXEvent(evnt);}$xeTable.handleScrollEvent(evnt,isRollY,isRollX,scrollTop,scrollLeft,{type:'header',fixed:fixedType});},triggerFooterScrollEvent(evnt,fixedType){const $xeTable=this;const reactData=$xeTable;const internalData=$xeTable;const{scrollXLoad}=reactData;const{elemStore,intoRunScroll,inWheelScroll,inVirtualScroll,inHeaderScroll,inBodyScroll}=internalData;if(inWheelScroll||inVirtualScroll||inHeaderScroll||inBodyScroll){return;}const xHandleEl=$xeTable.$refs.refScrollXHandleElem;const yHandleEl=$xeTable.$refs.refScrollYHandleElem;const bodyScrollElem=getRefElem(elemStore['main-body-scroll']);const headerScrollElem=getRefElem(elemStore['main-header-scroll']);const footerScrollElem=getRefElem(elemStore['main-footer-scroll']);if(intoRunScroll){return;}if(!footerScrollElem){return;}if(!xHandleEl){return;}if(!yHandleEl){return;}const scrollTop=yHandleEl.scrollTop;const scrollLeft=footerScrollElem.scrollLeft;const isRollX=true;const isRollY=false;internalData.inFooterScroll=true;setScrollLeft(xHandleEl,scrollLeft);setScrollLeft(headerScrollElem,scrollLeft);setScrollLeft(bodyScrollElem,scrollLeft);if(scrollXLoad){$xeTable.triggerScrollXEvent(evnt);}$xeTable.handleScrollEvent(evnt,isRollY,isRollX,scrollTop,scrollLeft,{type:'footer',fixed:fixedType});},triggerBodyWheelEvent(evnt){const $xeTable=this;const $xeParentTable=$xeTable.$xeParentTable;const tableProps=$xeTable;const reactData=$xeTable;const internalData=$xeTable;const{target,deltaY,deltaX,shiftKey}=evnt;if(target&&/^textarea$/i.test(target.tagName)){return;}// 如果滚轮未移动或者触摸板未变化位置
8890
+ */triggerScrollYEvent(){const $xeTable=this;const virtualYOpts=$xeTable.computeVirtualYOpts;if(virtualYOpts.immediate){loadScrollYData($xeTable);}else{lazyScrollYData($xeTable);}},triggerBodyScrollEvent(evnt,fixedType){const $xeTable=this;const reactData=$xeTable;const internalData=$xeTable;const{scrollYLoad,scrollXLoad}=reactData;const isVScrollbar=$xeTable.computeIsVScrollbar;const{elemStore,intoRunScroll,lastScrollTop,lastScrollLeft,inWheelScroll,inVirtualScroll,inHeaderScroll,inBodyScroll,scrollRenderType,inFooterScroll}=internalData;if(inWheelScroll||inVirtualScroll||inHeaderScroll||inFooterScroll){return;}const xHandleEl=$xeTable.$refs.refScrollXHandleElem;const yHandleEl=$xeTable.$refs.refScrollYHandleElem;const leftScrollElem=getRefElem(elemStore['left-body-scroll']);const bodyScrollElem=getRefElem(elemStore['main-body-scroll']);const rightScrollElem=getRefElem(elemStore['right-body-scroll']);const headerScrollElem=getRefElem(elemStore['main-header-scroll']);const footerScrollElem=getRefElem(elemStore['main-footer-scroll']);const rowExpandEl=$xeTable.$refs.refRowExpandElem;if(intoRunScroll){return;}if(!bodyScrollElem){return;}if(!isVScrollbar){if(!xHandleEl){return;}if(!yHandleEl){return;}}if(inBodyScroll){if(scrollRenderType!==fixedType){return;}}let scrollTop=0;let scrollLeft=0;if(leftScrollElem&&fixedType==='left'){scrollTop=leftScrollElem.scrollTop;}else if(rightScrollElem&&fixedType==='right'){scrollTop=rightScrollElem.scrollTop;}else{scrollTop=bodyScrollElem.scrollTop;scrollLeft=bodyScrollElem.scrollLeft;}const isRollX=scrollLeft!==lastScrollLeft;const isRollY=scrollTop!==lastScrollTop;internalData.inBodyScroll=true;internalData.scrollRenderType=fixedType;if(isRollY){if(fixedType==='left'){setScrollTop(bodyScrollElem,scrollTop);setScrollTop(rightScrollElem,scrollTop);}else if(fixedType==='right'){setScrollTop(bodyScrollElem,scrollTop);setScrollTop(leftScrollElem,scrollTop);}else{setScrollTop(leftScrollElem,scrollTop);setScrollTop(rightScrollElem,scrollTop);}setScrollTop(yHandleEl,scrollTop);setScrollTop(rowExpandEl,scrollTop);syncGanttScrollTop($xeTable,scrollTop);if(scrollYLoad){$xeTable.triggerScrollYEvent(evnt);}}if(isRollX){setScrollLeft(xHandleEl,scrollLeft);setScrollLeft(headerScrollElem,scrollLeft);setScrollLeft(footerScrollElem,scrollLeft);if(scrollXLoad){$xeTable.triggerScrollXEvent(evnt);}}$xeTable.handleScrollEvent(evnt,isRollY,isRollX,scrollTop,scrollLeft,{type:'body',fixed:fixedType});},triggerHeaderScrollEvent(evnt,fixedType){const $xeTable=this;const reactData=$xeTable;const internalData=$xeTable;const{scrollXLoad}=reactData;const{elemStore,intoRunScroll,inWheelScroll,inVirtualScroll,inBodyScroll,inFooterScroll}=internalData;if(inWheelScroll||inVirtualScroll||inBodyScroll||inFooterScroll){return;}if(intoRunScroll){return;}const xHandleEl=$xeTable.$refs.refScrollXHandleElem;const yHandleEl=$xeTable.$refs.refScrollYHandleElem;const bodyScrollElem=getRefElem(elemStore['main-body-scroll']);const headerScrollElem=getRefElem(elemStore['main-header-scroll']);const footerScrollElem=getRefElem(elemStore['main-footer-scroll']);if(!headerScrollElem){return;}if(!xHandleEl){return;}if(!yHandleEl){return;}const scrollTop=yHandleEl.scrollTop;const scrollLeft=headerScrollElem.scrollLeft;const isRollX=true;const isRollY=false;internalData.inHeaderScroll=true;setScrollLeft(xHandleEl,scrollLeft);setScrollLeft(footerScrollElem,scrollLeft);setScrollLeft(bodyScrollElem,scrollLeft);if(scrollXLoad){$xeTable.triggerScrollXEvent(evnt);}$xeTable.handleScrollEvent(evnt,isRollY,isRollX,scrollTop,scrollLeft,{type:'header',fixed:fixedType});},triggerFooterScrollEvent(evnt,fixedType){const $xeTable=this;const reactData=$xeTable;const internalData=$xeTable;const{scrollXLoad}=reactData;const{elemStore,intoRunScroll,inWheelScroll,inVirtualScroll,inHeaderScroll,inBodyScroll}=internalData;if(inWheelScroll||inVirtualScroll||inHeaderScroll||inBodyScroll){return;}const xHandleEl=$xeTable.$refs.refScrollXHandleElem;const yHandleEl=$xeTable.$refs.refScrollYHandleElem;const bodyScrollElem=getRefElem(elemStore['main-body-scroll']);const headerScrollElem=getRefElem(elemStore['main-header-scroll']);const footerScrollElem=getRefElem(elemStore['main-footer-scroll']);if(intoRunScroll){return;}if(!footerScrollElem){return;}if(!xHandleEl){return;}if(!yHandleEl){return;}const scrollTop=yHandleEl.scrollTop;const scrollLeft=footerScrollElem.scrollLeft;const isRollX=true;const isRollY=false;internalData.inFooterScroll=true;setScrollLeft(xHandleEl,scrollLeft);setScrollLeft(headerScrollElem,scrollLeft);setScrollLeft(bodyScrollElem,scrollLeft);if(scrollXLoad){$xeTable.triggerScrollXEvent(evnt);}$xeTable.handleScrollEvent(evnt,isRollY,isRollX,scrollTop,scrollLeft,{type:'footer',fixed:fixedType});},triggerBodyWheelEvent(evnt){const $xeTable=this;const $xeParentTable=$xeTable.$xeParentTable;const tableProps=$xeTable;const reactData=$xeTable;const internalData=$xeTable;const{target,deltaY,deltaX,shiftKey}=evnt;if(target&&/^textarea$/i.test(target.tagName)){return;}// 如果滚轮未移动或者触摸板未变化位置
8944
8891
  if(!deltaY&&!deltaX){return;}const{highlightHoverRow}=tableProps;const{scrollXLoad,scrollYLoad,overflowX,overflowY,expandColumn}=reactData;const leftFixedWidth=$xeTable.computeLeftFixedWidth;const rightFixedWidth=$xeTable.computeRightFixedWidth;const{elemStore,lastScrollTop,lastScrollLeft}=internalData;const rowOpts=$xeTable.computeRowOpts;const scrollXVisible=$xeTable.computeScrollXVisible;const scrollYVisible=$xeTable.computeScrollYVisible;const xHandleEl=$xeTable.$refs.refScrollXHandleElem;const yHandleEl=$xeTable.$refs.refScrollYHandleElem;const leftScrollElem=getRefElem(elemStore['left-body-scroll']);const headerScrollElem=getRefElem(elemStore['main-header-scroll']);const bodyScrollElem=getRefElem(elemStore['main-body-scroll']);const footerScrollElem=getRefElem(elemStore['main-footer-scroll']);const rightScrollElem=getRefElem(elemStore['right-body-scroll']);const rowExpandEl=$xeTable.$refs.refRowExpandElem;if(!bodyScrollElem){return;}const wheelSpeed=getWheelSpeed(internalData.lastSTime);const deltaTop=shiftKey?0:deltaY*wheelSpeed;const deltaLeft=(shiftKey?deltaX||deltaY:deltaX)*wheelSpeed;const currScrollTop=bodyScrollElem.scrollTop;const currScrollLeft=bodyScrollElem.scrollLeft;const scrollTop=Math.max(0,currScrollTop+deltaTop);const scrollLeft=Math.max(0,currScrollLeft+deltaLeft);const isRollX=overflowX&&scrollLeft!==lastScrollLeft;const isRollY=overflowY&&scrollTop!==lastScrollTop;if(isRollX){// 如果禁用滚动
8945
8892
  if(scrollXVisible===false||scrollXVisible==='hidden'){evnt.preventDefault();return;}}if(isRollY){// 如果禁用滚动
8946
8893
  if(scrollYVisible===false||scrollYVisible==='hidden'){evnt.preventDefault();return;}const isTopWheel=deltaTop<0;// 如果滚动位置已经是顶部或底部,则不需要触发
@@ -11676,8 +11623,8 @@ function panel_hideDropTip($xeTableCustomPanel) {
11676
11623
  } = customPanelInternalData;
11677
11624
  const dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0;
11678
11625
  if (prevDragGroupField || prevDragAggFnColid) {
11679
- if ($xeTable.handlePivotTableAggregatePanelDragendEvent) {
11680
- $xeTable.handlePivotTableAggregatePanelDragendEvent(evnt);
11626
+ if ($xeTable.handlePivotTableAggPanelDragendEvent) {
11627
+ $xeTable.handlePivotTableAggPanelDragendEvent(evnt);
11681
11628
  }
11682
11629
  } else if (prevDragCol && dragCol) {
11683
11630
  // 判断是否有拖动
@@ -13166,6 +13113,7 @@ function filterCheckAllEvent($xeFilterPanel, evnt, value) {
13166
13113
  * Publish methods
13167
13114
  *************************/
13168
13115
  renderOptions(h, filterRender, compConf) {
13116
+ const VxeUIScrollbarComponent = core_.VxeUI.getComponent('VxeScrollbar');
13169
13117
  const $xeFilterPanel = this;
13170
13118
  const props = $xeFilterPanel;
13171
13119
  const $xeTable = $xeFilterPanel.$xeTable;
@@ -13174,12 +13122,15 @@ function filterCheckAllEvent($xeFilterPanel, evnt, value) {
13174
13122
  filterStore
13175
13123
  } = props;
13176
13124
  const {
13177
- column,
13178
- maxHeight
13125
+ column
13179
13126
  } = filterStore;
13180
13127
  if (!column) {
13181
13128
  return [];
13182
13129
  }
13130
+ const filterOpts = $xeTable.computeFilterOpts;
13131
+ const {
13132
+ useScrollbar
13133
+ } = filterOpts;
13183
13134
  const {
13184
13135
  filterMultiple,
13185
13136
  filters,
@@ -13195,49 +13146,19 @@ function filterCheckAllEvent($xeFilterPanel, evnt, value) {
13195
13146
  const rtFilter = compConf ? compConf.renderTableFilter || compConf.renderFilter : null;
13196
13147
  if (filterSlot) {
13197
13148
  return [h('div', {
13198
- class: 'vxe-table--filter-template',
13199
- style: maxHeight ? {
13200
- maxHeight: toCssUnit(maxHeight)
13201
- } : {}
13149
+ class: 'vxe-table--filter-template'
13202
13150
  }, $xeTable.callSlot(filterSlot, params, h))];
13203
13151
  } else if (filterRender && rtFilter) {
13204
13152
  return [h('div', {
13205
- class: 'vxe-table--filter-template',
13206
- style: maxHeight ? {
13207
- maxHeight: toCssUnit(maxHeight)
13208
- } : {}
13153
+ class: 'vxe-table--filter-template'
13209
13154
  }, getSlotVNs(rtFilter.call($xeTable, h, filterRender, params)))];
13210
13155
  }
13211
13156
  const isAllChecked = filterMultiple ? filterStore.isAllSelected : !filterOptions.some(item => item._checked);
13212
13157
  const isAllIndeterminate = filterMultiple && filterStore.isIndeterminate;
13213
- return [h('ul', {
13214
- class: 'vxe-table--filter-header'
13215
- }, [h('li', {
13216
- class: ['vxe-table--filter-option', {
13217
- 'is--checked': isAllChecked,
13218
- 'is--indeterminate': isAllIndeterminate
13219
- }],
13220
- attrs: {
13221
- title: filter_panel_getI18n(filterMultiple ? 'vxe.table.allTitle' : 'vxe.table.allFilter')
13222
- },
13223
- on: {
13224
- click: evnt => {
13225
- $xeFilterPanel.changeAllOption(evnt, !filterStore.isAllSelected);
13226
- }
13227
- }
13228
- }, (filterMultiple ? [h('span', {
13229
- class: ['vxe-checkbox--icon', isAllIndeterminate ? filter_panel_getIcon().TABLE_CHECKBOX_INDETERMINATE : isAllChecked ? filter_panel_getIcon().TABLE_CHECKBOX_CHECKED : filter_panel_getIcon().TABLE_CHECKBOX_UNCHECKED]
13230
- })] : []).concat([h('span', {
13231
- class: 'vxe-checkbox--label'
13232
- }, filter_panel_getI18n('vxe.table.allFilter'))]))]), h('ul', {
13233
- class: 'vxe-table--filter-body',
13234
- style: maxHeight ? {
13235
- maxHeight: toCssUnit(maxHeight)
13236
- } : {}
13237
- }, filterOptions.map(item => {
13158
+ const optVNs = filterOptions.map(item => {
13238
13159
  const isChecked = item._checked;
13239
13160
  const isIndeterminate = false;
13240
- return h('li', {
13161
+ return h('div', {
13241
13162
  class: ['vxe-table--filter-option', {
13242
13163
  'is--checked': isChecked
13243
13164
  }],
@@ -13254,7 +13175,37 @@ function filterCheckAllEvent($xeFilterPanel, evnt, value) {
13254
13175
  })] : []).concat([h('span', {
13255
13176
  class: 'vxe-checkbox--label'
13256
13177
  }, formatText(item.label, 1))]));
13257
- }))];
13178
+ });
13179
+ return [h('div', {
13180
+ class: 'vxe-table--filter-header'
13181
+ }, [h('div', {
13182
+ class: ['vxe-table--filter-option', {
13183
+ 'is--checked': isAllChecked,
13184
+ 'is--indeterminate': isAllIndeterminate
13185
+ }],
13186
+ attrs: {
13187
+ title: filter_panel_getI18n(filterMultiple ? 'vxe.table.allTitle' : 'vxe.table.allFilter')
13188
+ },
13189
+ on: {
13190
+ click: evnt => {
13191
+ $xeFilterPanel.changeAllOption(evnt, !filterStore.isAllSelected);
13192
+ }
13193
+ }
13194
+ }, (filterMultiple ? [h('span', {
13195
+ class: ['vxe-checkbox--icon', isAllIndeterminate ? filter_panel_getIcon().TABLE_CHECKBOX_INDETERMINATE : isAllChecked ? filter_panel_getIcon().TABLE_CHECKBOX_CHECKED : filter_panel_getIcon().TABLE_CHECKBOX_UNCHECKED]
13196
+ })] : []).concat([h('span', {
13197
+ class: 'vxe-checkbox--label'
13198
+ }, filter_panel_getI18n('vxe.table.allFilter'))]))]), useScrollbar ? h(VxeUIScrollbarComponent, {
13199
+ class: 'vxe-table--scrollbar-filter-body',
13200
+ props: {
13201
+ viewClassName: 'vxe-table--scrollbar-filter-body-view'
13202
+ },
13203
+ scopedSlots: {
13204
+ default: () => optVNs
13205
+ }
13206
+ }) : h('div', {
13207
+ class: 'vxe-table--filter-body'
13208
+ }, optVNs)];
13258
13209
  },
13259
13210
  renderFooter(h) {
13260
13211
  const $xeFilterPanel = this;
@@ -14473,7 +14424,8 @@ function updatePopupStyle($xeTable) {
14473
14424
  const internalData = $xeTable;
14474
14425
  const $xeGGWrapper = $xeGrid || $xeGantt;
14475
14426
  const {
14476
- filterStore
14427
+ filterStore,
14428
+ scrollbarHeight
14477
14429
  } = reactData;
14478
14430
  const {
14479
14431
  elemStore
@@ -14504,8 +14456,6 @@ function updatePopupStyle($xeTable) {
14504
14456
  if (!filterWrapperElem) {
14505
14457
  return $xeTable.$nextTick();
14506
14458
  }
14507
- const filterHeadElem = filterWrapperElem.querySelector('.vxe-table--filter-header');
14508
- const filterFootElem = filterWrapperElem.querySelector('.vxe-table--filter-footer');
14509
14459
  /**
14510
14460
  * 是否显示筛选按钮图标
14511
14461
  * 如果不存在图标,则相对单元格居中显示
@@ -14535,6 +14485,7 @@ function updatePopupStyle($xeTable) {
14535
14485
  if (transfer) {
14536
14486
  const ppObj = updatePanelPlacement(currEl, filterWrapperElem, {
14537
14487
  defaultPlacement: 'bottom',
14488
+ appendTo: '',
14538
14489
  isMinWidth: false,
14539
14490
  teleportTo: transfer
14540
14491
  });
@@ -14542,9 +14493,9 @@ function updatePopupStyle($xeTable) {
14542
14493
  } else {
14543
14494
  const filterWidth = filterWrapperElem.offsetWidth;
14544
14495
  const centerWidth = targetEl ? filterWidth / 2 : (filterWidth - column.renderWidth) / 2;
14545
- maxHeight = Math.max(40, tableEl.clientHeight - top - (filterHeadElem ? filterHeadElem.clientHeight : 0) - (filterFootElem ? filterFootElem.clientHeight : 0) - 14);
14546
14496
  left = btnRect.left - tableRect.left - centerWidth;
14547
14497
  top = btnRect.top - tableRect.top + currEl.clientHeight;
14498
+ maxHeight = Math.max(40, tableEl.clientHeight - top - scrollbarHeight);
14548
14499
  if (left < 1) {
14549
14500
  left = 1;
14550
14501
  } else if (left > tableEl.clientWidth - filterWidth - 1) {
@@ -14565,7 +14516,6 @@ function updatePopupStyle($xeTable) {
14565
14516
  if (zIndex) {
14566
14517
  panelStyle.zIndex = zIndex;
14567
14518
  }
14568
- filterStore.style = panelStyle;
14569
14519
  // 筛选面板是自适应表格高度
14570
14520
  if (compConf ? !compConf.tableFilterAutoHeight : false) {
14571
14521
  maxHeight = 0;
@@ -14574,8 +14524,8 @@ function updatePopupStyle($xeTable) {
14574
14524
  maxHeight = customMaxHeight > maxHeight ? maxHeight : customMaxHeight;
14575
14525
  }
14576
14526
  }
14577
- // 判断面板不能大于表格高度
14578
- filterStore.maxHeight = maxHeight;
14527
+ panelStyle['--vxe-ui-vxe-table-filter-default-max-height'] = maxHeight ? toCssUnit(maxHeight) : 'none';
14528
+ filterStore.style = panelStyle;
14579
14529
  };
14580
14530
  handleStyle();
14581
14531
  return $xeTable.$nextTick().then(() => {
@@ -21321,6 +21271,27 @@ const {
21321
21271
  globalMixins: table_globalMixins,
21322
21272
  renderEmptyElement: table_renderEmptyElement
21323
21273
  } = core_.VxeUI;
21274
+ function bindScrollbarResize($xeTable) {
21275
+ const internalData = $xeTable;
21276
+ const {
21277
+ elemStore
21278
+ } = internalData;
21279
+ const isVScrollbar = $xeTable.computeIsVScrollbar;
21280
+ if (isVScrollbar) {
21281
+ const el = $xeTable.$refs.refElem;
21282
+ const viewInnerEl = getRefElem(elemStore['main-body-table']);
21283
+ const scrollObserver = table_globalResize.create(() => {
21284
+ $xeTable.reScrollFlag++;
21285
+ });
21286
+ if (el) {
21287
+ scrollObserver.observe(el);
21288
+ }
21289
+ if (viewInnerEl) {
21290
+ scrollObserver.observe(viewInnerEl);
21291
+ }
21292
+ internalData.scrollObserver = scrollObserver;
21293
+ }
21294
+ }
21324
21295
  function handleUpdateMergeBodyCells($xeTable, merges) {
21325
21296
  const internalData = $xeTable;
21326
21297
  internalData.mergeBodyList = [];
@@ -21820,18 +21791,15 @@ function renderNativeBody(h, $xeTable) {
21820
21791
  }, scrollbarYToLeft ? [renderScrollY(h, $xeTable), renderViewport(h, $xeTable)] : [renderViewport(h, $xeTable), renderScrollY(h, $xeTable)]);
21821
21792
  }
21822
21793
  function renderVirtualBody(h, $xeTable) {
21823
- const props = $xeTable;
21824
21794
  const reactData = $xeTable;
21825
21795
  const internalData = $xeTable;
21826
21796
  const $xeGantt = $xeTable.$xeGantt;
21827
21797
  const $xeGanttView = internalData.xeGanttView;
21828
- const {
21829
- useScrollbar
21830
- } = props;
21831
21798
  const {
21832
21799
  xThumbWidth,
21833
21800
  yThumbHeight
21834
21801
  } = reactData;
21802
+ const isVScrollbar = $xeTable.computeIsVScrollbar;
21835
21803
  const scrollbarOpts = $xeTable.computeScrollbarOpts;
21836
21804
  const scrollXAutoHide = $xeTable.computeScrollXAutoHide;
21837
21805
  const scrollYAutoHide = $xeTable.computeScrollYAutoHide;
@@ -21845,10 +21813,10 @@ function renderVirtualBody(h, $xeTable) {
21845
21813
  return h('div', {
21846
21814
  key: 'lvb',
21847
21815
  class: ['vxe-table--layout-wrapper', `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`, `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`, {
21848
- 'is--virtual-scrollbar': useScrollbar,
21849
- 'ov-padding': useScrollbar && scrollbarOpts.padding,
21850
- 'ov-x--auto-hide': useScrollbar && scrollXAutoHide,
21851
- 'ov-y--auto-hide': useScrollbar && scrollYAutoHide,
21816
+ 'is--virtual-scrollbar': isVScrollbar,
21817
+ 'ov-padding': isVScrollbar && scrollbarOpts.padding,
21818
+ 'ov-x--auto-hide': isVScrollbar && scrollXAutoHide,
21819
+ 'ov-y--auto-hide': isVScrollbar && scrollYAutoHide,
21852
21820
  'overflow-y': yThumbHeight,
21853
21821
  'overflow-x': xThumbWidth
21854
21822
  }]
@@ -22294,7 +22262,10 @@ function renderVirtualBody(h, $xeTable) {
22294
22262
  computeTooltipOpts() {
22295
22263
  const $xeTable = this;
22296
22264
  const props = $xeTable;
22297
- return Object.assign({}, table_getConfig().tooltip, table_getConfig().table.tooltipConfig, props.tooltipConfig);
22265
+ const isVScrollbar = $xeTable.computeIsVScrollbar;
22266
+ return Object.assign({
22267
+ useScrollbar: isVScrollbar
22268
+ }, table_getConfig().tooltip, table_getConfig().table.tooltipConfig, props.tooltipConfig);
22298
22269
  },
22299
22270
  tipConfig() {
22300
22271
  return {
@@ -22365,7 +22336,10 @@ function renderVirtualBody(h, $xeTable) {
22365
22336
  computeFilterOpts() {
22366
22337
  const $xeTable = this;
22367
22338
  const props = $xeTable;
22368
- return Object.assign({}, table_getConfig().table.filterConfig, props.filterConfig);
22339
+ const isVScrollbar = $xeTable.computeIsVScrollbar;
22340
+ return Object.assign({
22341
+ useScrollbar: isVScrollbar
22342
+ }, table_getConfig().table.filterConfig, props.filterConfig);
22369
22343
  },
22370
22344
  computeFloatingFilterOpts() {
22371
22345
  const $xeTable = this;
@@ -23058,34 +23032,37 @@ function renderVirtualBody(h, $xeTable) {
23058
23032
  const $xeTable = this;
23059
23033
  $xeTable.reLayoutFlag++;
23060
23034
  },
23035
+ computeIsVScrollbar() {
23036
+ const $xeTable = this;
23037
+ $xeTable.$nextTick(() => {
23038
+ bindScrollbarResize($xeTable);
23039
+ $xeTable.$nextTick(() => {
23040
+ $xeTable.reLayoutFlag++;
23041
+ });
23042
+ });
23043
+ },
23061
23044
  computeScrollbarXToTop() {
23062
23045
  const $xeTable = this;
23063
- $xeTable.reScrollFlag++;
23064
23046
  $xeTable.reLayoutFlag++;
23065
23047
  },
23066
23048
  computeScrollbarYToLeft() {
23067
23049
  const $xeTable = this;
23068
- $xeTable.reScrollFlag++;
23069
23050
  $xeTable.reLayoutFlag++;
23070
23051
  },
23071
23052
  computeScrollXVisible() {
23072
23053
  const $xeTable = this;
23073
- $xeTable.reScrollFlag++;
23074
23054
  $xeTable.reLayoutFlag++;
23075
23055
  },
23076
23056
  computeScrollYVisible() {
23077
23057
  const $xeTable = this;
23078
- $xeTable.reScrollFlag++;
23079
23058
  $xeTable.reLayoutFlag++;
23080
23059
  },
23081
23060
  computeScrollXHeight() {
23082
23061
  const $xeTable = this;
23083
- $xeTable.reScrollFlag++;
23084
23062
  $xeTable.reLayoutFlag++;
23085
23063
  },
23086
23064
  computeScrollYWidth() {
23087
23065
  const $xeTable = this;
23088
- $xeTable.reScrollFlag++;
23089
23066
  $xeTable.reLayoutFlag++;
23090
23067
  },
23091
23068
  computeCellHeitht() {
@@ -23094,17 +23071,14 @@ function renderVirtualBody(h, $xeTable) {
23094
23071
  },
23095
23072
  reLayoutFlag() {
23096
23073
  const $xeTable = this;
23097
- $xeTable.$nextTick(() => {
23074
+ $xeTable.$nextTick().then(() => {
23098
23075
  $xeTable.recalculate(true);
23099
23076
  });
23100
23077
  },
23101
23078
  reScrollFlag() {
23102
23079
  const $xeTable = this;
23103
- $xeTable.$nextTick(() => {
23080
+ $xeTable.updateScrollbar().then(() => {
23104
23081
  $xeTable.updateScrollbar();
23105
- $xeTable.$nextTick(() => {
23106
- $xeTable.updateScrollbar();
23107
- });
23108
23082
  });
23109
23083
  },
23110
23084
  footerData() {
@@ -23569,7 +23543,6 @@ function renderVirtualBody(h, $xeTable) {
23569
23543
  }
23570
23544
  $xeTable.$nextTick(() => {
23571
23545
  const {
23572
- useScrollbar,
23573
23546
  autoResize
23574
23547
  } = props;
23575
23548
  const {
@@ -23583,6 +23556,7 @@ function renderVirtualBody(h, $xeTable) {
23583
23556
  showHeaderOverflow,
23584
23557
  showFooterOverflow
23585
23558
  } = props;
23559
+ const isVScrollbar = $xeTable.computeIsVScrollbar;
23586
23560
  const tooltipOpts = $xeTable.computeTooltipOpts;
23587
23561
  const headerTooltipOpts = $xeTable.computeHeaderTooltipOpts;
23588
23562
  const footerTooltipOpts = $xeTable.computeFooterTooltipOpts;
@@ -23623,7 +23597,7 @@ function renderVirtualBody(h, $xeTable) {
23623
23597
  }
23624
23598
  }
23625
23599
  const el = $xeTable.$refs.refElem;
23626
- if (useScrollbar) {
23600
+ if (isVScrollbar) {
23627
23601
  const viewInnerEl = getRefElem(elemStore['main-body-table']);
23628
23602
  const scrollObserver = table_globalResize.create(() => {
23629
23603
  $xeTable.reScrollFlag++;
@@ -23751,7 +23725,6 @@ function renderVirtualBody(h, $xeTable) {
23751
23725
  const {
23752
23726
  loading,
23753
23727
  stripe,
23754
- useScrollbar,
23755
23728
  showHeader,
23756
23729
  height,
23757
23730
  treeConfig,
@@ -23784,6 +23757,7 @@ function renderVirtualBody(h, $xeTable) {
23784
23757
  leftList,
23785
23758
  rightList
23786
23759
  } = columnStore;
23760
+ const isVScrollbar = $xeTable.computeIsVScrollbar;
23787
23761
  const loadingSlot = slots.loading;
23788
23762
  const tipSlots = {
23789
23763
  header: slots.headerTooltip || slots['header-tooltip'],
@@ -23827,7 +23801,7 @@ function renderVirtualBody(h, $xeTable) {
23827
23801
  }
23828
23802
  return h('div', {
23829
23803
  ref: 'refElem',
23830
- 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'}`, {
23804
+ 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'}`, {
23831
23805
  [`size--${vSize}`]: vSize,
23832
23806
  [`valid-msg--${validOpts.msgMode}`]: !!editRules,
23833
23807
  'vxe-editable': !!editConfig,
@@ -23888,7 +23862,7 @@ function renderVirtualBody(h, $xeTable) {
23888
23862
  })]), h('div', {
23889
23863
  key: 'tw',
23890
23864
  class: 'vxe-table--render-wrapper'
23891
- }, useScrollbar ? [renderVirtualBody(h, $xeTable)] : scrollbarXToTop ? [renderScrollX(h, $xeTable), renderNativeBody(h, $xeTable)] : [renderNativeBody(h, $xeTable), renderScrollX(h, $xeTable)]),
23865
+ }, isVScrollbar ? [renderVirtualBody(h, $xeTable)] : scrollbarXToTop ? [renderScrollX(h, $xeTable), renderNativeBody(h, $xeTable)] : [renderNativeBody(h, $xeTable), renderScrollX(h, $xeTable)]),
23892
23866
  /**
23893
23867
  * 空数据
23894
23868
  */
@@ -24033,7 +24007,8 @@ function renderVirtualBody(h, $xeTable) {
24033
24007
  ref: 'refCommTooltip',
24034
24008
  props: {
24035
24009
  isArrow: false,
24036
- enterable: false
24010
+ enterable: false,
24011
+ useScrollbar: isVScrollbar
24037
24012
  }
24038
24013
  }) : table_renderEmptyElement($xeTable),
24039
24014
  /**
@@ -24058,7 +24033,8 @@ function renderVirtualBody(h, $xeTable) {
24058
24033
  maxHeight: tableTipConfig.maxHeight,
24059
24034
  placement: tableTipConfig.placement,
24060
24035
  defaultPlacement: tableTipConfig.defaultPlacement,
24061
- popupClassName: tableTipConfig.popupClassName
24036
+ popupClassName: tableTipConfig.popupClassName,
24037
+ useScrollbar: tableTipConfig.useScrollbar
24062
24038
  },
24063
24039
  scopedSlots: currTooltipSlot ? {
24064
24040
  content: () => {
@@ -24122,7 +24098,8 @@ function renderVirtualBody(h, $xeTable) {
24122
24098
  theme: validTipConfig.theme,
24123
24099
  enterable: validTipConfig.enterable,
24124
24100
  enterDelay: validTipConfig.enterDelay,
24125
- leaveDelay: validTipConfig.leaveDelay
24101
+ leaveDelay: validTipConfig.leaveDelay,
24102
+ useScrollbar: validTipConfig.useScrollbar
24126
24103
  }
24127
24104
  }) : table_renderEmptyElement($xeTable)])]);
24128
24105
  },