vxe-table 4.17.6 → 4.17.7

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 (37) hide show
  1. package/es/style.css +1 -1
  2. package/es/table/src/body.js +12 -20
  3. package/es/table/src/cell.js +41 -35
  4. package/es/table/src/footer.js +3 -12
  5. package/es/table/src/header.js +4 -12
  6. package/es/table/src/table.js +109 -54
  7. package/es/ui/index.js +1 -1
  8. package/es/ui/src/log.js +1 -1
  9. package/lib/index.umd.js +55 -74
  10. package/lib/index.umd.min.js +1 -1
  11. package/lib/style.css +1 -1
  12. package/lib/table/src/body.js +10 -23
  13. package/lib/table/src/body.min.js +1 -1
  14. package/lib/table/src/cell.js +8 -4
  15. package/lib/table/src/cell.min.js +1 -1
  16. package/lib/table/src/footer.js +4 -15
  17. package/lib/table/src/footer.min.js +1 -1
  18. package/lib/table/src/header.js +5 -14
  19. package/lib/table/src/header.min.js +1 -1
  20. package/lib/table/src/table.js +29 -18
  21. package/lib/table/src/table.min.js +1 -1
  22. package/lib/ui/index.js +1 -1
  23. package/lib/ui/index.min.js +1 -1
  24. package/lib/ui/src/log.js +1 -1
  25. package/lib/ui/src/log.min.js +1 -1
  26. package/package.json +1 -1
  27. package/packages/table/src/body.ts +8 -20
  28. package/packages/table/src/cell.ts +41 -35
  29. package/packages/table/src/footer.ts +3 -11
  30. package/packages/table/src/header.ts +4 -12
  31. package/packages/table/src/table.ts +109 -53
  32. /package/es/{iconfont.1761877377602.ttf → iconfont.1762136085329.ttf} +0 -0
  33. /package/es/{iconfont.1761877377602.woff → iconfont.1762136085329.woff} +0 -0
  34. /package/es/{iconfont.1761877377602.woff2 → iconfont.1762136085329.woff2} +0 -0
  35. /package/lib/{iconfont.1761877377602.ttf → iconfont.1762136085329.ttf} +0 -0
  36. /package/lib/{iconfont.1761877377602.woff → iconfont.1762136085329.woff} +0 -0
  37. /package/lib/{iconfont.1761877377602.woff2 → iconfont.1762136085329.woff2} +0 -0
package/lib/ui/index.js CHANGED
@@ -13,7 +13,7 @@ Object.defineProperty(exports, "VxeUI", {
13
13
  exports.version = exports.validators = exports.use = exports.t = exports.setup = exports.setTheme = exports.setLanguage = exports.setIcon = exports.setI18n = exports.setConfig = exports.saveFile = exports.renderer = exports.readFile = exports.print = exports.modal = exports.menus = exports.log = exports.interceptor = exports.hooks = exports.globalResize = exports.globalEvents = exports.getTheme = exports.getIcon = exports.getI18n = exports.getConfig = exports.formats = exports.default = exports.config = exports.commands = exports.clipboard = exports._t = void 0;
14
14
  var _core = require("@vxe-ui/core");
15
15
  var _utils = require("./src/utils");
16
- const version = exports.version = "4.17.6";
16
+ const version = exports.version = "4.17.7";
17
17
  _core.VxeUI.version = version;
18
18
  _core.VxeUI.tableVersion = version;
19
19
  _core.VxeUI.setConfig({
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.VXETable=void 0,Object.defineProperty(exports,"VxeUI",{enumerable:!0,get:function(){return _core.VxeUI}}),exports.version=exports.validators=exports.use=exports.t=exports.setup=exports.setTheme=exports.setLanguage=exports.setIcon=exports.setI18n=exports.setConfig=exports.saveFile=exports.renderer=exports.readFile=exports.print=exports.modal=exports.menus=exports.log=exports.interceptor=exports.hooks=exports.globalResize=exports.globalEvents=exports.getTheme=exports.getIcon=exports.getI18n=exports.getConfig=exports.formats=exports.default=exports.config=exports.commands=exports.clipboard=exports._t=void 0;var _core=require("@vxe-ui/core"),_utils=require("./src/utils");let version=exports.version="4.17.6",iconPrefix=(_core.VxeUI.version=version,_core.VxeUI.tableVersion=version,_core.VxeUI.setConfig({emptyCell:" ",table:{fit:!0,showHeader:!0,animat:!0,delayHover:250,autoResize:!0,resizeConfig:{},resizableConfig:{dragMode:"auto",showDragTip:!0,isSyncAutoHeight:!0,isSyncAutoWidth:!0,minHeight:18},radioConfig:{strict:!0},rowDragConfig:{showIcon:!0,animation:!0,showGuidesStatus:!0,showDragTip:!0},columnDragConfig:{showIcon:!0,animation:!0,showGuidesStatus:!0,showDragTip:!0},checkboxConfig:{strict:!0},tooltipConfig:{enterable:!0},headerTooltipConfig:{enterable:!0},footerTooltipConfig:{enterable:!0},validConfig:{showMessage:!0,autoClear:!0,autoPos:!0,message:"inline",msgMode:"single",theme:"beautify"},columnConfig:{autoOptions:{isCalcHeader:!0,isCalcBody:!0,isCalcFooter:!0},maxFixedSize:4},cellConfig:{padding:!0},headerCellConfig:{height:"unset"},footerCellConfig:{height:"unset"},menuConfig:{destroyOnClose:!0},customConfig:{allowVisible:!0,allowResizable:!0,allowFixed:!0,allowSort:!0,showFooter:!0,placement:"top-right",storeOptions:{visible:!0,resizable:!0,sort:!0,fixed:!0},modalOptions:{showMaximize:!0,mask:!0,lockView:!0,resize:!0,escClosable:!0},drawerOptions:{mask:!0,lockView:!0,escClosable:!0,resize:!0}},sortConfig:{showIcon:!0,allowClear:!0,allowBtn:!0,iconLayout:"vertical"},filterConfig:{destroyOnClose:!0,multiple:!0,showIcon:!0},floatingFilterConfig:{},aggregateConfig:{padding:!0,rowField:"id",parentField:"_X_ROW_PARENT_KEY",childrenField:"_X_ROW_CHILDREN",mapChildrenField:"_X_ROW_CHILD_LIST",indent:20,showIcon:!0,maxGroupSize:4,showAggFuncTitle:!0},treeConfig:{padding:!0,rowField:"id",parentField:"parentId",childrenField:"children",hasChildField:"hasChild",mapChildrenField:"_X_ROW_CHILD",indent:20,showIcon:!0,showRootLine:!0},expandConfig:{showIcon:!0,mode:"fixed"},editConfig:{showIcon:!0,showAsterisk:!0,autoFocus:!0},importConfig:{_typeMaps:{csv:1,html:1,xml:1,txt:1}},exportConfig:{_typeMaps:{csv:1,html:1,xml:1,txt:1}},printConfig:{},mouseConfig:{extension:!0},keyboardConfig:{isAll:!0,isEsc:!0},areaConfig:{autoClear:!0,selectCellByHeader:!0,selectCellByBody:!0,extendDirection:{top:!0,left:!0,bottom:!0,right:!0}},clipConfig:{isCopy:!0,isCut:!0,isPaste:!0},fnrConfig:{isFind:!0,isReplace:!0},virtualXConfig:{gt:24,preSize:1,oSize:0},virtualYConfig:{gt:100,preSize:1,oSize:0},scrollbarConfig:{x:{visible:!0},y:{visible:!0}}},grid:{formConfig:{enabled:!0},pagerConfig:{enabled:!0},toolbarConfig:{enabled:!0},proxyConfig:{enabled:!0,autoLoad:!0,showLoading:!0,showResponseMsg:!0,showActionMsg:!0,response:{list:null,result:"result",total:"page.total",message:"message"}}},toolbar:{},gantt:{}}),"vxe-table-icon-"),setTheme=(_core.VxeUI.setIcon({TABLE_SORT_ASC:iconPrefix+"caret-up",TABLE_SORT_DESC:iconPrefix+"caret-down",TABLE_FILTER_NONE:iconPrefix+"funnel",TABLE_FILTER_MATCH:iconPrefix+"funnel",TABLE_EDIT:iconPrefix+"edit",TABLE_TITLE_PREFIX:iconPrefix+"question-circle-fill",TABLE_TITLE_SUFFIX:iconPrefix+"question-circle-fill",TABLE_TREE_LOADED:iconPrefix+"spinner roll",TABLE_TREE_OPEN:iconPrefix+"caret-right rotate90",TABLE_TREE_CLOSE:iconPrefix+"caret-right",TABLE_EXPAND_LOADED:iconPrefix+"spinner roll",TABLE_EXPAND_OPEN:iconPrefix+"arrow-right rotate90",TABLE_EXPAND_CLOSE:iconPrefix+"arrow-right",TABLE_CHECKBOX_CHECKED:iconPrefix+"checkbox-checked-fill",TABLE_CHECKBOX_UNCHECKED:iconPrefix+"checkbox-unchecked",TABLE_CHECKBOX_INDETERMINATE:iconPrefix+"checkbox-indeterminate-fill",TABLE_CHECKBOX_DISABLED_UNCHECKED:iconPrefix+"checkbox-unchecked-fill",TABLE_RADIO_CHECKED:iconPrefix+"radio-checked-fill",TABLE_RADIO_UNCHECKED:iconPrefix+"radio-unchecked",TABLE_RADIO_DISABLED_UNCHECKED:iconPrefix+"radio-unchecked-fill",TABLE_CUSTOM_SORT:iconPrefix+"drag-handle",TABLE_MENU_OPTIONS:iconPrefix+"arrow-right",TABLE_DRAG_ROW:iconPrefix+"drag-handle",TABLE_DRAG_COLUMN:iconPrefix+"drag-handle",TABLE_DRAG_STATUS_ROW:iconPrefix+"sort",TABLE_DRAG_STATUS_SUB_ROW:iconPrefix+"add-sub",TABLE_DRAG_STATUS_AGG_GROUP:iconPrefix+"grouping",TABLE_DRAG_STATUS_AGG_VALUES:iconPrefix+"values",TABLE_DRAG_STATUS_COLUMN:iconPrefix+"swap",TABLE_DRAG_DISABLED:iconPrefix+"no-drop",TABLE_ROW_GROUP_OPEN:iconPrefix+"arrow-right rotate90",TABLE_ROW_GROUP_CLOSE:iconPrefix+"arrow-right",TABLE_AGGREGATE_GROUPING:iconPrefix+"grouping",TABLE_AGGREGATE_VALUES:iconPrefix+"values",TABLE_AGGREGATE_SORT:iconPrefix+"drag-handle",TABLE_AGGREGATE_DELETE:iconPrefix+"close",TOOLBAR_TOOLS_REFRESH:iconPrefix+"repeat",TOOLBAR_TOOLS_REFRESH_LOADING:iconPrefix+"repeat roll",TOOLBAR_TOOLS_IMPORT:iconPrefix+"upload",TOOLBAR_TOOLS_EXPORT:iconPrefix+"download",TOOLBAR_TOOLS_PRINT:iconPrefix+"print",TOOLBAR_TOOLS_FULLSCREEN:iconPrefix+"fullscreen",TOOLBAR_TOOLS_MINIMIZE:iconPrefix+"minimize",TOOLBAR_TOOLS_CUSTOM:iconPrefix+"custom-column",TOOLBAR_TOOLS_FIXED_LEFT:iconPrefix+"fixed-left",TOOLBAR_TOOLS_FIXED_LEFT_ACTIVE:iconPrefix+"fixed-left-fill",TOOLBAR_TOOLS_FIXED_RIGHT:iconPrefix+"fixed-right",TOOLBAR_TOOLS_FIXED_RIGHT_ACTIVE:iconPrefix+"fixed-right-fill"}),exports.setTheme=_core.VxeUI.setTheme),getTheme=exports.getTheme=_core.VxeUI.getTheme,setConfig=exports.setConfig=_core.VxeUI.setConfig,getConfig=exports.getConfig=_core.VxeUI.getConfig,setIcon=exports.setIcon=_core.VxeUI.setIcon,getIcon=exports.getIcon=_core.VxeUI.getIcon,setLanguage=exports.setLanguage=_core.VxeUI.setLanguage,setI18n=exports.setI18n=_core.VxeUI.setI18n,getI18n=exports.getI18n=_core.VxeUI.getI18n,globalEvents=exports.globalEvents=_core.VxeUI.globalEvents,globalResize=exports.globalResize=_core.VxeUI.globalResize,renderer=exports.renderer=_core.VxeUI.renderer,validators=exports.validators=_core.VxeUI.validators,menus=exports.menus=_core.VxeUI.menus,formats=exports.formats=_core.VxeUI.formats,commands=exports.commands=_core.VxeUI.commands,interceptor=exports.interceptor=_core.VxeUI.interceptor,clipboard=exports.clipboard=_core.VxeUI.clipboard,log=exports.log=_core.VxeUI.log,hooks=exports.hooks=_core.VxeUI.hooks,use=exports.use=_core.VxeUI.use,setup=e=>_core.VxeUI.setConfig(e),config=(exports.setup=setup,_core.VxeUI.setup=setup,e=>_core.VxeUI.setConfig(e)),t=(exports.config=config,_core.VxeUI.config=config,(e,o)=>_core.VxeUI.getI18n(e,o)),_t=(exports.t=t,_core.VxeUI.t=t,(e,o)=>(0,_utils.getFuncText)(e,o)),VXETable=(exports._t=_t,_core.VxeUI._t=_t,exports.VXETable=_core.VxeUI),saveFile=e=>_core.VxeUI.saveFile(e),readFile=(exports.saveFile=saveFile,e=>_core.VxeUI.readFile(e)),print=(exports.readFile=readFile,e=>_core.VxeUI.print(e)),modal=(exports.print=print,exports.modal={get(e){return _core.VxeUI.modal.get(e)},close(e){return _core.VxeUI.modal.close(e)},open(e){return _core.VxeUI.modal.open(e)},alert(e,o,i){return _core.VxeUI.modal.alert(e,o,i)},confirm(e,o,i){return _core.VxeUI.modal.confirm(e,o,i)},message(e,o){return _core.VxeUI.modal.message(e,o)},notification(e,o,i){return _core.VxeUI.modal.notification(e,o,i)}});var _default=exports.default=_core.VxeUI;
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.VXETable=void 0,Object.defineProperty(exports,"VxeUI",{enumerable:!0,get:function(){return _core.VxeUI}}),exports.version=exports.validators=exports.use=exports.t=exports.setup=exports.setTheme=exports.setLanguage=exports.setIcon=exports.setI18n=exports.setConfig=exports.saveFile=exports.renderer=exports.readFile=exports.print=exports.modal=exports.menus=exports.log=exports.interceptor=exports.hooks=exports.globalResize=exports.globalEvents=exports.getTheme=exports.getIcon=exports.getI18n=exports.getConfig=exports.formats=exports.default=exports.config=exports.commands=exports.clipboard=exports._t=void 0;var _core=require("@vxe-ui/core"),_utils=require("./src/utils");let version=exports.version="4.17.7",iconPrefix=(_core.VxeUI.version=version,_core.VxeUI.tableVersion=version,_core.VxeUI.setConfig({emptyCell:" ",table:{fit:!0,showHeader:!0,animat:!0,delayHover:250,autoResize:!0,resizeConfig:{},resizableConfig:{dragMode:"auto",showDragTip:!0,isSyncAutoHeight:!0,isSyncAutoWidth:!0,minHeight:18},radioConfig:{strict:!0},rowDragConfig:{showIcon:!0,animation:!0,showGuidesStatus:!0,showDragTip:!0},columnDragConfig:{showIcon:!0,animation:!0,showGuidesStatus:!0,showDragTip:!0},checkboxConfig:{strict:!0},tooltipConfig:{enterable:!0},headerTooltipConfig:{enterable:!0},footerTooltipConfig:{enterable:!0},validConfig:{showMessage:!0,autoClear:!0,autoPos:!0,message:"inline",msgMode:"single",theme:"beautify"},columnConfig:{autoOptions:{isCalcHeader:!0,isCalcBody:!0,isCalcFooter:!0},maxFixedSize:4},cellConfig:{padding:!0},headerCellConfig:{height:"unset"},footerCellConfig:{height:"unset"},menuConfig:{destroyOnClose:!0},customConfig:{allowVisible:!0,allowResizable:!0,allowFixed:!0,allowSort:!0,showFooter:!0,placement:"top-right",storeOptions:{visible:!0,resizable:!0,sort:!0,fixed:!0},modalOptions:{showMaximize:!0,mask:!0,lockView:!0,resize:!0,escClosable:!0},drawerOptions:{mask:!0,lockView:!0,escClosable:!0,resize:!0}},sortConfig:{showIcon:!0,allowClear:!0,allowBtn:!0,iconLayout:"vertical"},filterConfig:{destroyOnClose:!0,multiple:!0,showIcon:!0},floatingFilterConfig:{},aggregateConfig:{padding:!0,rowField:"id",parentField:"_X_ROW_PARENT_KEY",childrenField:"_X_ROW_CHILDREN",mapChildrenField:"_X_ROW_CHILD_LIST",indent:20,showIcon:!0,maxGroupSize:4,showAggFuncTitle:!0},treeConfig:{padding:!0,rowField:"id",parentField:"parentId",childrenField:"children",hasChildField:"hasChild",mapChildrenField:"_X_ROW_CHILD",indent:20,showIcon:!0,showRootLine:!0},expandConfig:{showIcon:!0,mode:"fixed"},editConfig:{showIcon:!0,showAsterisk:!0,autoFocus:!0},importConfig:{_typeMaps:{csv:1,html:1,xml:1,txt:1}},exportConfig:{_typeMaps:{csv:1,html:1,xml:1,txt:1}},printConfig:{},mouseConfig:{extension:!0},keyboardConfig:{isAll:!0,isEsc:!0},areaConfig:{autoClear:!0,selectCellByHeader:!0,selectCellByBody:!0,extendDirection:{top:!0,left:!0,bottom:!0,right:!0}},clipConfig:{isCopy:!0,isCut:!0,isPaste:!0},fnrConfig:{isFind:!0,isReplace:!0},virtualXConfig:{gt:24,preSize:1,oSize:0},virtualYConfig:{gt:100,preSize:1,oSize:0},scrollbarConfig:{x:{visible:!0},y:{visible:!0}}},grid:{formConfig:{enabled:!0},pagerConfig:{enabled:!0},toolbarConfig:{enabled:!0},proxyConfig:{enabled:!0,autoLoad:!0,showLoading:!0,showResponseMsg:!0,showActionMsg:!0,response:{list:null,result:"result",total:"page.total",message:"message"}}},toolbar:{},gantt:{}}),"vxe-table-icon-"),setTheme=(_core.VxeUI.setIcon({TABLE_SORT_ASC:iconPrefix+"caret-up",TABLE_SORT_DESC:iconPrefix+"caret-down",TABLE_FILTER_NONE:iconPrefix+"funnel",TABLE_FILTER_MATCH:iconPrefix+"funnel",TABLE_EDIT:iconPrefix+"edit",TABLE_TITLE_PREFIX:iconPrefix+"question-circle-fill",TABLE_TITLE_SUFFIX:iconPrefix+"question-circle-fill",TABLE_TREE_LOADED:iconPrefix+"spinner roll",TABLE_TREE_OPEN:iconPrefix+"caret-right rotate90",TABLE_TREE_CLOSE:iconPrefix+"caret-right",TABLE_EXPAND_LOADED:iconPrefix+"spinner roll",TABLE_EXPAND_OPEN:iconPrefix+"arrow-right rotate90",TABLE_EXPAND_CLOSE:iconPrefix+"arrow-right",TABLE_CHECKBOX_CHECKED:iconPrefix+"checkbox-checked-fill",TABLE_CHECKBOX_UNCHECKED:iconPrefix+"checkbox-unchecked",TABLE_CHECKBOX_INDETERMINATE:iconPrefix+"checkbox-indeterminate-fill",TABLE_CHECKBOX_DISABLED_UNCHECKED:iconPrefix+"checkbox-unchecked-fill",TABLE_RADIO_CHECKED:iconPrefix+"radio-checked-fill",TABLE_RADIO_UNCHECKED:iconPrefix+"radio-unchecked",TABLE_RADIO_DISABLED_UNCHECKED:iconPrefix+"radio-unchecked-fill",TABLE_CUSTOM_SORT:iconPrefix+"drag-handle",TABLE_MENU_OPTIONS:iconPrefix+"arrow-right",TABLE_DRAG_ROW:iconPrefix+"drag-handle",TABLE_DRAG_COLUMN:iconPrefix+"drag-handle",TABLE_DRAG_STATUS_ROW:iconPrefix+"sort",TABLE_DRAG_STATUS_SUB_ROW:iconPrefix+"add-sub",TABLE_DRAG_STATUS_AGG_GROUP:iconPrefix+"grouping",TABLE_DRAG_STATUS_AGG_VALUES:iconPrefix+"values",TABLE_DRAG_STATUS_COLUMN:iconPrefix+"swap",TABLE_DRAG_DISABLED:iconPrefix+"no-drop",TABLE_ROW_GROUP_OPEN:iconPrefix+"arrow-right rotate90",TABLE_ROW_GROUP_CLOSE:iconPrefix+"arrow-right",TABLE_AGGREGATE_GROUPING:iconPrefix+"grouping",TABLE_AGGREGATE_VALUES:iconPrefix+"values",TABLE_AGGREGATE_SORT:iconPrefix+"drag-handle",TABLE_AGGREGATE_DELETE:iconPrefix+"close",TOOLBAR_TOOLS_REFRESH:iconPrefix+"repeat",TOOLBAR_TOOLS_REFRESH_LOADING:iconPrefix+"repeat roll",TOOLBAR_TOOLS_IMPORT:iconPrefix+"upload",TOOLBAR_TOOLS_EXPORT:iconPrefix+"download",TOOLBAR_TOOLS_PRINT:iconPrefix+"print",TOOLBAR_TOOLS_FULLSCREEN:iconPrefix+"fullscreen",TOOLBAR_TOOLS_MINIMIZE:iconPrefix+"minimize",TOOLBAR_TOOLS_CUSTOM:iconPrefix+"custom-column",TOOLBAR_TOOLS_FIXED_LEFT:iconPrefix+"fixed-left",TOOLBAR_TOOLS_FIXED_LEFT_ACTIVE:iconPrefix+"fixed-left-fill",TOOLBAR_TOOLS_FIXED_RIGHT:iconPrefix+"fixed-right",TOOLBAR_TOOLS_FIXED_RIGHT_ACTIVE:iconPrefix+"fixed-right-fill"}),exports.setTheme=_core.VxeUI.setTheme),getTheme=exports.getTheme=_core.VxeUI.getTheme,setConfig=exports.setConfig=_core.VxeUI.setConfig,getConfig=exports.getConfig=_core.VxeUI.getConfig,setIcon=exports.setIcon=_core.VxeUI.setIcon,getIcon=exports.getIcon=_core.VxeUI.getIcon,setLanguage=exports.setLanguage=_core.VxeUI.setLanguage,setI18n=exports.setI18n=_core.VxeUI.setI18n,getI18n=exports.getI18n=_core.VxeUI.getI18n,globalEvents=exports.globalEvents=_core.VxeUI.globalEvents,globalResize=exports.globalResize=_core.VxeUI.globalResize,renderer=exports.renderer=_core.VxeUI.renderer,validators=exports.validators=_core.VxeUI.validators,menus=exports.menus=_core.VxeUI.menus,formats=exports.formats=_core.VxeUI.formats,commands=exports.commands=_core.VxeUI.commands,interceptor=exports.interceptor=_core.VxeUI.interceptor,clipboard=exports.clipboard=_core.VxeUI.clipboard,log=exports.log=_core.VxeUI.log,hooks=exports.hooks=_core.VxeUI.hooks,use=exports.use=_core.VxeUI.use,setup=e=>_core.VxeUI.setConfig(e),config=(exports.setup=setup,_core.VxeUI.setup=setup,e=>_core.VxeUI.setConfig(e)),t=(exports.config=config,_core.VxeUI.config=config,(e,o)=>_core.VxeUI.getI18n(e,o)),_t=(exports.t=t,_core.VxeUI.t=t,(e,o)=>(0,_utils.getFuncText)(e,o)),VXETable=(exports._t=_t,_core.VxeUI._t=_t,exports.VXETable=_core.VxeUI),saveFile=e=>_core.VxeUI.saveFile(e),readFile=(exports.saveFile=saveFile,e=>_core.VxeUI.readFile(e)),print=(exports.readFile=readFile,e=>_core.VxeUI.print(e)),modal=(exports.print=print,exports.modal={get(e){return _core.VxeUI.modal.get(e)},close(e){return _core.VxeUI.modal.close(e)},open(e){return _core.VxeUI.modal.open(e)},alert(e,o,i){return _core.VxeUI.modal.alert(e,o,i)},confirm(e,o,i){return _core.VxeUI.modal.confirm(e,o,i)},message(e,o){return _core.VxeUI.modal.message(e,o)},notification(e,o,i){return _core.VxeUI.modal.notification(e,o,i)}});var _default=exports.default=_core.VxeUI;
package/lib/ui/src/log.js CHANGED
@@ -8,6 +8,6 @@ var _core = require("@vxe-ui/core");
8
8
  const {
9
9
  log
10
10
  } = _core.VxeUI;
11
- const version = `table v${"4.17.6"}`;
11
+ const version = `table v${"4.17.7"}`;
12
12
  const warnLog = exports.warnLog = log.create('warn', version);
13
13
  const errLog = exports.errLog = log.create('error', version);
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.warnLog=exports.errLog=void 0;var _core=require("@vxe-ui/core");let log=_core.VxeUI.log,version="table v4.17.6",warnLog=exports.warnLog=log.create("warn",version),errLog=exports.errLog=log.create("error",version);
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.warnLog=exports.errLog=void 0;var _core=require("@vxe-ui/core");let log=_core.VxeUI.log,version="table v4.17.7",warnLog=exports.warnLog=log.create("warn",version),errLog=exports.errLog=log.create("error",version);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vxe-table",
3
- "version": "4.17.6",
3
+ "version": "4.17.7",
4
4
  "description": "A PC-end table component based on Vxe UI, supporting copy-paste, data pivot table, and high-performance virtual list table solution.",
5
5
  "scripts": {
6
6
  "update": "npm install --legacy-peer-deps",
@@ -29,7 +29,7 @@ export default defineVxeComponent({
29
29
  const $xeTable = inject('$xeTable', {} as VxeTableConstructor & VxeTablePrivateMethods)
30
30
 
31
31
  const { xID, props: tableProps, context: tableContext, reactData: tableReactData, internalData: tableInternalData } = $xeTable
32
- const { computeEditOpts, computeMouseOpts, computeCellOffsetWidth, computeAreaOpts, computeDefaultRowHeight, computeEmptyOpts, computeTooltipOpts, computeRadioOpts, computeExpandOpts, computeTreeOpts, computeCheckboxOpts, computeCellOpts, computeValidOpts, computeRowOpts, computeColumnOpts, computeRowDragOpts, computeResizableOpts, computeVirtualXOpts, computeVirtualYOpts } = $xeTable.getComputeMaps()
32
+ const { computeEditOpts, computeMouseOpts, computeCellOffsetWidth, computeAreaOpts, computeDefaultRowHeight, computeEmptyOpts, computeTooltipOpts, computeRadioOpts, computeExpandOpts, computeTreeOpts, computeCheckboxOpts, computeCellOpts, computeValidOpts, computeRowOpts, computeColumnOpts, computeRowDragOpts, computeResizableOpts, computeVirtualXOpts, computeVirtualYOpts, computeIsBodyRenderOptimize } = $xeTable.getComputeMaps()
33
33
 
34
34
  const refElem = ref() as Ref<HTMLDivElement>
35
35
  const refBodyScroll = ref() as Ref<HTMLDivElement>
@@ -729,24 +729,16 @@ export default defineVxeComponent({
729
729
  const $xeGantt = $xeTable.xeGantt
730
730
 
731
731
  const { fixedColumn, fixedType, tableColumn } = props
732
- const { spanMethod, footerSpanMethod, mouseConfig } = tableProps
733
- const { isGroup, tableData, isColLoading, overflowX, scrollXLoad, scrollYLoad, isAllOverflow, expandColumn, dragRow, dragCol } = tableReactData
732
+ const { mouseConfig } = tableProps
733
+ const { isGroup, tableData, isColLoading, overflowX, scrollXLoad, scrollYLoad, dragRow, dragCol } = tableReactData
734
734
  const { visibleColumn, fullAllDataRowIdData, fullColumnIdData } = tableInternalData
735
735
  const emptyOpts = computeEmptyOpts.value
736
736
  const mouseOpts = computeMouseOpts.value
737
- const expandOpts = computeExpandOpts.value
737
+ const isBodyRenderOptimize = computeIsBodyRenderOptimize.value
738
738
 
739
739
  let renderDataList = tableData
740
740
  let renderColumnList = tableColumn as VxeTableDefines.ColumnInfo[]
741
- let isOptimizeMode = false
742
- // 如果是使用优化模式
743
- if (scrollXLoad || scrollYLoad || isAllOverflow) {
744
- if ((expandColumn && expandOpts.mode !== 'fixed') || spanMethod || footerSpanMethod) {
745
- // 如果不支持优化模式
746
- } else {
747
- isOptimizeMode = true
748
- }
749
- }
741
+ const isOptimizeMode = isBodyRenderOptimize
750
742
 
751
743
  if (!isColLoading && (fixedType || !overflowX)) {
752
744
  renderColumnList = visibleColumn
@@ -821,12 +813,6 @@ export default defineVxeComponent({
821
813
  }
822
814
  }
823
815
 
824
- const ons: Record<string, any> = {
825
- onScroll (evnt: Event) {
826
- $xeTable.triggerBodyScrollEvent(evnt, fixedType)
827
- }
828
- }
829
-
830
816
  return h('div', {
831
817
  ref: refElem,
832
818
  class: ['vxe-table--body-wrapper', fixedType ? `fixed-${fixedType}--wrapper` : 'body--wrapper'],
@@ -835,7 +821,9 @@ export default defineVxeComponent({
835
821
  h('div', {
836
822
  ref: refBodyScroll,
837
823
  class: 'vxe-table--body-inner-wrapper',
838
- ...ons
824
+ onScroll (evnt) {
825
+ $xeTable.triggerBodyScrollEvent(evnt, fixedType)
826
+ }
839
827
  }, [
840
828
  fixedType
841
829
  ? renderEmptyElement($xeTable)
@@ -186,7 +186,8 @@ function renderTitleContent (params: VxeTableDefines.CellRenderHeaderParams & {
186
186
  const { computeHeaderTooltipOpts } = $table.getComputeMaps()
187
187
  const { showHeaderOverflow: allColumnHeaderOverflow } = tableProps
188
188
  const { isRowGroupStatus } = tableReactData
189
- const { showHeaderOverflow } = column
189
+ const { showHeaderOverflow, slots } = column
190
+ const titleSlot = slots ? slots.title : null
190
191
  const headerTooltipOpts = computeHeaderTooltipOpts.value
191
192
  const showAllTip = headerTooltipOpts.showAll
192
193
  const headOverflow = XEUtils.eqNull(showHeaderOverflow) ? allColumnHeaderOverflow : showHeaderOverflow
@@ -222,9 +223,11 @@ function renderTitleContent (params: VxeTableDefines.CellRenderHeaderParams & {
222
223
  ...ons
223
224
  }, isRowGroupStatus && column.aggFunc && $table.getPivotTableAggregateRenderColTitles
224
225
  ? $table.getPivotTableAggregateRenderColTitles(column, titleVN)
225
- : [
226
- titleVN
227
- ])
226
+ : titleSlot
227
+ ? $table.callSlot(titleSlot, params)
228
+ : [
229
+ titleVN
230
+ ])
228
231
  ]
229
232
  }
230
233
 
@@ -1080,38 +1083,41 @@ export const Cell = {
1080
1083
  const { computeSortOpts } = $table.getComputeMaps()
1081
1084
  const sortOpts = computeSortOpts.value
1082
1085
  const { showIcon, allowBtn, ascTitle, descTitle, iconLayout, iconAsc, iconDesc, iconVisibleMethod } = sortOpts
1083
- const { order } = column
1086
+ const { order, slots } = column
1084
1087
  if (showIcon && (!iconVisibleMethod || iconVisibleMethod(params))) {
1085
- return [
1086
- h('span', {
1087
- class: ['vxe-cell--sort', `vxe-cell--sort-${iconLayout}-layout`]
1088
- }, [
1089
- h('i', {
1090
- class: ['vxe-sort--asc-btn', iconAsc || getIcon().TABLE_SORT_ASC, {
1091
- 'sort--active': order === 'asc'
1092
- }],
1093
- title: XEUtils.eqNull(ascTitle) ? getI18n('vxe.table.sortAsc') : `${ascTitle || ''}`,
1094
- onClick: allowBtn
1095
- ? (evnt: Event) => {
1096
- evnt.stopPropagation()
1097
- $table.triggerSortEvent(evnt, column, 'asc')
1098
- }
1099
- : undefined
1100
- }),
1101
- h('i', {
1102
- class: ['vxe-sort--desc-btn', iconDesc || getIcon().TABLE_SORT_DESC, {
1103
- 'sort--active': order === 'desc'
1104
- }],
1105
- title: XEUtils.eqNull(descTitle) ? getI18n('vxe.table.sortDesc') : `${descTitle || ''}`,
1106
- onClick: allowBtn
1107
- ? (evnt: Event) => {
1108
- evnt.stopPropagation()
1109
- $table.triggerSortEvent(evnt, column, 'desc')
1110
- }
1111
- : undefined
1112
- })
1113
- ])
1114
- ]
1088
+ const sortSlot = slots ? slots.sort : null
1089
+ return sortSlot
1090
+ ? getSlotVNs($table.callSlot(sortSlot, params)) as VNode[]
1091
+ : [
1092
+ h('span', {
1093
+ class: ['vxe-cell--sort', `vxe-cell--sort-${iconLayout}-layout`]
1094
+ }, [
1095
+ h('i', {
1096
+ class: ['vxe-sort--asc-btn', iconAsc || getIcon().TABLE_SORT_ASC, {
1097
+ 'sort--active': order === 'asc'
1098
+ }],
1099
+ title: XEUtils.eqNull(ascTitle) ? getI18n('vxe.table.sortAsc') : `${ascTitle || ''}`,
1100
+ onClick: allowBtn
1101
+ ? (evnt: Event) => {
1102
+ evnt.stopPropagation()
1103
+ $table.triggerSortEvent(evnt, column, 'asc')
1104
+ }
1105
+ : undefined
1106
+ }),
1107
+ h('i', {
1108
+ class: ['vxe-sort--desc-btn', iconDesc || getIcon().TABLE_SORT_DESC, {
1109
+ 'sort--active': order === 'desc'
1110
+ }],
1111
+ title: XEUtils.eqNull(descTitle) ? getI18n('vxe.table.sortDesc') : `${descTitle || ''}`,
1112
+ onClick: allowBtn
1113
+ ? (evnt: Event) => {
1114
+ evnt.stopPropagation()
1115
+ $table.triggerSortEvent(evnt, column, 'desc')
1116
+ }
1117
+ : undefined
1118
+ })
1119
+ ])
1120
+ ]
1115
1121
  }
1116
1122
  return []
1117
1123
  },
@@ -36,7 +36,7 @@ export default defineVxeComponent({
36
36
  const $xeTable = inject('$xeTable', {} as VxeTableConstructor & VxeTableMethods & VxeTablePrivateMethods)
37
37
 
38
38
  const { xID, props: tableProps, reactData: tableReactData, internalData: tableInternalData } = $xeTable
39
- const { computeFooterTooltipOpts, computeColumnOpts, computeCellOpts, computeFooterCellOpts, computeDefaultRowHeight, computeResizableOpts, computeVirtualXOpts } = $xeTable.getComputeMaps()
39
+ const { computeFooterTooltipOpts, computeColumnOpts, computeCellOpts, computeFooterCellOpts, computeDefaultRowHeight, computeResizableOpts, computeVirtualXOpts, computeIsFooterRenderOptimize } = $xeTable.getComputeMaps()
40
40
 
41
41
  const refElem = ref() as Ref<HTMLDivElement>
42
42
  const refFooterScroll = ref() as Ref<HTMLDivElement>
@@ -243,20 +243,12 @@ export default defineVxeComponent({
243
243
 
244
244
  const renderVN = () => {
245
245
  const { fixedType, fixedColumn, tableColumn } = props
246
- const { spanMethod, footerSpanMethod, showFooterOverflow: allColumnFooterOverflow } = tableProps
247
246
  const { visibleColumn, fullColumnIdData } = tableInternalData
248
247
  const { isGroup, isColLoading, overflowX, scrollXLoad, dragCol } = tableReactData
248
+ const isFooterRenderOptimize = computeIsFooterRenderOptimize.value
249
249
 
250
250
  let renderColumnList = tableColumn
251
- let isOptimizeMode = false
252
- // 如果是使用优化模式
253
- if (scrollXLoad && allColumnFooterOverflow) {
254
- if (spanMethod || footerSpanMethod) {
255
- // 如果不支持优化模式
256
- } else {
257
- isOptimizeMode = true
258
- }
259
- }
251
+ const isOptimizeMode = isFooterRenderOptimize
260
252
 
261
253
  if (!isOptimizeMode || (!isColLoading && (fixedType || !overflowX))) {
262
254
  renderColumnList = visibleColumn
@@ -45,7 +45,7 @@ export default defineVxeComponent({
45
45
  const $xeTable = inject('$xeTable', {} as VxeTableConstructor & VxeTableMethods & VxeTablePrivateMethods)
46
46
 
47
47
  const { xID, props: tableProps, reactData: tableReactData, internalData: tableInternalData } = $xeTable
48
- const { computeColumnOpts, computeColumnDragOpts, computeCellOpts, computeMouseOpts, computeHeaderCellOpts, computeDefaultRowHeight, computeVirtualXOpts, computeFloatingFilterOpts } = $xeTable.getComputeMaps()
48
+ const { computeColumnOpts, computeColumnDragOpts, computeCellOpts, computeMouseOpts, computeHeaderCellOpts, computeDefaultRowHeight, computeVirtualXOpts, computeFloatingFilterOpts, computeIsHeaderRenderOptimize } = $xeTable.getComputeMaps()
49
49
 
50
50
  const headerColumn = ref<VxeTableDefines.ColumnInfo[][]>([])
51
51
 
@@ -416,27 +416,19 @@ export default defineVxeComponent({
416
416
 
417
417
  const renderVN = () => {
418
418
  const { fixedType, fixedColumn, tableColumn } = props
419
- const { mouseConfig, showHeaderOverflow: allColumnHeaderOverflow, spanMethod, footerSpanMethod } = tableProps
419
+ const { mouseConfig } = tableProps
420
420
  const { isGroup, isColLoading, overflowX, scrollXLoad, dragCol } = tableReactData
421
421
  const { visibleColumn, fullColumnIdData } = tableInternalData
422
422
 
423
423
  const mouseOpts = computeMouseOpts.value
424
+ const isHeaderRenderOptimize = computeIsHeaderRenderOptimize.value
424
425
  let renderHeaderList = headerColumn.value || []
425
426
  let renderColumnList = tableColumn as VxeTableDefines.ColumnInfo[]
426
- let isOptimizeMode = false
427
+ const isOptimizeMode = isHeaderRenderOptimize
427
428
 
428
429
  if (isGroup) {
429
430
  renderColumnList = visibleColumn
430
431
  } else {
431
- // 如果是使用优化模式
432
- if (scrollXLoad && allColumnHeaderOverflow) {
433
- if (spanMethod || footerSpanMethod) {
434
- // 如果不支持优化模式
435
- } else {
436
- isOptimizeMode = true
437
- }
438
- }
439
-
440
432
  if (!isOptimizeMode || (!isColLoading && (fixedType || !overflowX))) {
441
433
  renderColumnList = visibleColumn
442
434
  }
@@ -677,6 +677,77 @@ export default defineVxeComponent({
677
677
  return leftWidth
678
678
  })
679
679
 
680
+ const computeBodyMergeCoverFixed = computed(() => {
681
+ const { columnStore, mergeBodyFlag } = reactData
682
+ const { mergeBodyList, visibleColumn } = internalData
683
+ const { leftList, rightList } = columnStore
684
+ const rscIndex = visibleColumn.length - rightList.length
685
+ if (mergeBodyFlag && (leftList.length || rightList.length)) {
686
+ const lecIndex = leftList.length
687
+ for (let i = 0; i < mergeBodyList.length; i++) {
688
+ const { col, colspan } = mergeBodyList[i]
689
+ if (col < lecIndex || (col + colspan) > rscIndex) {
690
+ return true
691
+ }
692
+ }
693
+ }
694
+ return false
695
+ })
696
+
697
+ const computeIsHeaderRenderOptimize = computed(() => {
698
+ const { spanMethod, footerSpanMethod, showHeaderOverflow: allColumnHeaderOverflow } = props
699
+ const { isGroup, scrollXLoad } = reactData
700
+ let isOptimizeMode = false
701
+ if (isGroup) {
702
+ // 分组表头
703
+ } else {
704
+ // 如果是使用优化模式
705
+ if (scrollXLoad && allColumnHeaderOverflow) {
706
+ if (spanMethod || footerSpanMethod) {
707
+ // 如果不支持优化模式
708
+ } else {
709
+ isOptimizeMode = true
710
+ }
711
+ }
712
+ }
713
+ return isOptimizeMode
714
+ })
715
+
716
+ const computeIsBodyRenderOptimize = computed(() => {
717
+ const { spanMethod, footerSpanMethod } = props
718
+ const { scrollXLoad, scrollYLoad, isAllOverflow, expandColumn } = reactData
719
+ const bodyMergeCoverFixed = computeBodyMergeCoverFixed.value
720
+ const expandOpts = computeExpandOpts.value
721
+ let isOptimizeMode = false
722
+ // 如果是使用优化模式
723
+ if (scrollXLoad || scrollYLoad || isAllOverflow) {
724
+ // 如果是展开行,内联模式,不支持优化
725
+ // 如果是方法合并,不支持优化
726
+ // 如果固定列且配置式合并,不支持优化
727
+ if ((expandColumn && expandOpts.mode !== 'fixed') || bodyMergeCoverFixed || spanMethod || footerSpanMethod) {
728
+ // 如果不支持优化模式
729
+ } else {
730
+ isOptimizeMode = true
731
+ }
732
+ }
733
+ return isOptimizeMode
734
+ })
735
+
736
+ const computeIsFooterRenderOptimize = computed(() => {
737
+ const { spanMethod, footerSpanMethod, showFooterOverflow: allColumnFooterOverflow } = props
738
+ const { scrollXLoad } = reactData
739
+ let isOptimizeMode = false
740
+ // 如果是使用优化模式
741
+ if (scrollXLoad && allColumnFooterOverflow) {
742
+ if (spanMethod || footerSpanMethod) {
743
+ // 如果不支持优化模式
744
+ } else {
745
+ isOptimizeMode = true
746
+ }
747
+ }
748
+ return isOptimizeMode
749
+ })
750
+
680
751
  const computeHeaderMenu = computed(() => {
681
752
  const menuOpts = computeMenuOpts.value
682
753
  const headerOpts = menuOpts.header
@@ -949,9 +1020,13 @@ export default defineVxeComponent({
949
1020
  computeCustomOpts,
950
1021
  computeLeftFixedWidth,
951
1022
  computeRightFixedWidth,
1023
+ computeBodyMergeCoverFixed,
952
1024
  computeFixedColumnSize,
953
1025
  computeIsMaxFixedColumn,
954
1026
  computeIsAllCheckboxDisabled,
1027
+ computeIsHeaderRenderOptimize,
1028
+ computeIsBodyRenderOptimize,
1029
+ computeIsFooterRenderOptimize,
955
1030
  computeVirtualScrollBars,
956
1031
  computeRowGroupFields,
957
1032
  computeRowGroupColumns,
@@ -2474,8 +2549,8 @@ export default defineVxeComponent({
2474
2549
  }
2475
2550
 
2476
2551
  const updateStyle = () => {
2477
- const { showHeaderOverflow: allColumnHeaderOverflow, showFooterOverflow: allColumnFooterOverflow, mouseConfig, spanMethod, footerSpanMethod } = props
2478
- const { isGroup, currentRow, tableColumn, scrollXLoad, scrollYLoad, overflowX, scrollbarWidth, overflowY, scrollbarHeight, scrollXWidth, columnStore, editStore, isAllOverflow, expandColumn, isColLoading } = reactData
2552
+ const { mouseConfig } = props
2553
+ const { isGroup, currentRow, tableColumn, overflowX, scrollbarWidth, overflowY, scrollbarHeight, scrollXWidth, columnStore, editStore, isColLoading } = reactData
2479
2554
  const { visibleColumn, tableHeight, elemStore, customHeight, customMinHeight, customMaxHeight, tHeaderHeight, tFooterHeight } = internalData
2480
2555
  const $xeGanttView = internalData.xeGanttView
2481
2556
  const el = refElem.value
@@ -2483,12 +2558,15 @@ export default defineVxeComponent({
2483
2558
  return
2484
2559
  }
2485
2560
  const containerList = ['main', 'left', 'right']
2561
+ const { leftList, rightList } = columnStore
2486
2562
  let osbWidth = overflowY ? scrollbarWidth : 0
2487
2563
  let osbHeight = overflowX ? scrollbarHeight : 0
2488
2564
  const emptyPlaceholderElem = refEmptyPlaceholder.value
2565
+ const isHeaderRenderOptimize = computeIsHeaderRenderOptimize.value
2566
+ const isBodyRenderOptimize = computeIsBodyRenderOptimize.value
2567
+ const isFooterRenderOptimize = computeIsFooterRenderOptimize.value
2489
2568
  const scrollbarOpts = computeScrollbarOpts.value
2490
2569
  const mouseOpts = computeMouseOpts.value
2491
- const expandOpts = computeExpandOpts.value
2492
2570
  const bodyWrapperElem = getRefElem(elemStore['main-body-wrapper'])
2493
2571
  const bodyTableElem = getRefElem(elemStore['main-body-table'])
2494
2572
  if (emptyPlaceholderElem) {
@@ -2610,7 +2688,7 @@ export default defineVxeComponent({
2610
2688
  let fixedColumn: VxeTableDefines.ColumnInfo[] = []
2611
2689
  let fixedWrapperElem: HTMLDivElement
2612
2690
  if (fixedType) {
2613
- fixedColumn = isFixedLeft ? columnStore.leftList : columnStore.rightList
2691
+ fixedColumn = isFixedLeft ? leftList : rightList
2614
2692
  fixedWrapperElem = isFixedLeft ? refLeftContainer.value : refRightContainer.value
2615
2693
  }
2616
2694
  layoutList.forEach(layout => {
@@ -2621,20 +2699,11 @@ export default defineVxeComponent({
2621
2699
  // 表头体样式处理
2622
2700
  // 横向滚动渲染
2623
2701
  let renderColumnList = tableColumn
2624
- let isOptimizeMode = false
2702
+ const isOptimizeMode = isHeaderRenderOptimize
2625
2703
 
2626
2704
  if (isGroup) {
2627
2705
  renderColumnList = visibleColumn
2628
2706
  } else {
2629
- // 如果是使用优化模式
2630
- if (scrollXLoad && allColumnHeaderOverflow) {
2631
- if (spanMethod || footerSpanMethod) {
2632
- // 如果不支持优化模式
2633
- } else {
2634
- isOptimizeMode = true
2635
- }
2636
- }
2637
-
2638
2707
  if (!isOptimizeMode || (!isColLoading && (fixedType || !overflowX))) {
2639
2708
  renderColumnList = visibleColumn
2640
2709
  }
@@ -2691,16 +2760,7 @@ export default defineVxeComponent({
2691
2760
  }
2692
2761
 
2693
2762
  let renderColumnList = tableColumn
2694
-
2695
- let isOptimizeMode = false
2696
- // 如果是使用优化模式
2697
- if (scrollXLoad || scrollYLoad || isAllOverflow) {
2698
- if ((expandColumn && expandOpts.mode !== 'fixed') || spanMethod || footerSpanMethod) {
2699
- // 如果不支持优化模式
2700
- } else {
2701
- isOptimizeMode = true
2702
- }
2703
- }
2763
+ const isOptimizeMode = isBodyRenderOptimize
2704
2764
 
2705
2765
  if (fixedType) {
2706
2766
  renderColumnList = visibleColumn
@@ -2734,15 +2794,7 @@ export default defineVxeComponent({
2734
2794
  }
2735
2795
  } else if (layout === 'footer') {
2736
2796
  let renderColumnList = tableColumn
2737
- let isOptimizeMode = false
2738
- // 如果是使用优化模式
2739
- if (scrollXLoad && allColumnFooterOverflow) {
2740
- if (spanMethod || footerSpanMethod) {
2741
- // 如果不支持优化模式
2742
- } else {
2743
- isOptimizeMode = true
2744
- }
2745
- }
2797
+ const isOptimizeMode = isFooterRenderOptimize
2746
2798
 
2747
2799
  if (!isOptimizeMode || (!isColLoading && (fixedType || !overflowX))) {
2748
2800
  renderColumnList = visibleColumn
@@ -4190,6 +4242,7 @@ export default defineVxeComponent({
4190
4242
  * @returns
4191
4243
  */
4192
4244
  const handleVirtualTreeExpand = (rows: any[], expanded: boolean) => {
4245
+ const { lastScrollLeft, lastScrollTop } = internalData
4193
4246
  return handleBaseTreeExpand(rows, expanded).then(() => {
4194
4247
  handleVirtualTreeToList()
4195
4248
  $xeTable.handleTableData()
@@ -4197,9 +4250,9 @@ export default defineVxeComponent({
4197
4250
  updateAfterDataIndex()
4198
4251
  return nextTick()
4199
4252
  }).then(() => {
4200
- updateTreeLineStyle()
4201
- return handleLazyRecalculate(true, true, true)
4253
+ return handleRecalculateStyle(true, true, true)
4202
4254
  }).then(() => {
4255
+ restoreScrollLocation($xeTable, lastScrollLeft, lastScrollTop)
4203
4256
  updateTreeLineStyle()
4204
4257
  setTimeout(() => {
4205
4258
  $xeTable.updateCellAreas()
@@ -11879,7 +11932,7 @@ export default defineVxeComponent({
11879
11932
  },
11880
11933
  // 更新纵向 Y 可视渲染上下剩余空间大小
11881
11934
  updateScrollYSpace () {
11882
- const { isAllOverflow, overflowY, scrollYLoad, expandColumn } = reactData
11935
+ const { isAllOverflow, overflowY, scrollYLoad, scrollYHeight, expandColumn } = reactData
11883
11936
  const { scrollYStore, elemStore, isResizeCellHeight, afterFullData, fullAllDataRowIdData, rowExpandedMaps } = internalData
11884
11937
  const $xeGanttView = internalData.xeGanttView
11885
11938
  const { startIndex } = scrollYStore
@@ -11894,13 +11947,13 @@ export default defineVxeComponent({
11894
11947
  const rightbodyTableElem = getRefElem(elemStore['right-body-table'])
11895
11948
  const containerList = ['main', 'left', 'right']
11896
11949
  let ySpaceTop = 0
11897
- let scrollYHeight = 0
11950
+ let sYHeight = scrollYHeight
11898
11951
  let isScrollYBig = false
11899
11952
  if (scrollYLoad) {
11900
11953
  const isCustomCellHeight = isResizeCellHeight || cellOpts.height || rowOpts.height
11901
11954
  if (!isCustomCellHeight && !expandColumn && isAllOverflow) {
11902
- scrollYHeight = afterFullData.length * defaultRowHeight
11903
- if (scrollYHeight > maxYHeight) {
11955
+ sYHeight = afterFullData.length * defaultRowHeight
11956
+ if (sYHeight > maxYHeight) {
11904
11957
  isScrollYBig = true
11905
11958
  }
11906
11959
  ySpaceTop = Math.max(0, startIndex * defaultRowHeight)
@@ -11913,18 +11966,21 @@ export default defineVxeComponent({
11913
11966
  const lastRow = afterFullData[afterFullData.length - 1]
11914
11967
  rowid = getRowid($xeTable, lastRow)
11915
11968
  rowRest = fullAllDataRowIdData[rowid] || {}
11916
- scrollYHeight = (rowRest.oTop || 0) + (rowRest.resizeHeight || cellOpts.height || rowOpts.height || rowRest.height || defaultRowHeight)
11917
- // 是否展开行
11918
- if (expandColumn && rowExpandedMaps[rowid]) {
11919
- scrollYHeight += rowRest.expandHeight || expandOpts.height || 0
11969
+ // 如果为空时还没计算完数据,保持原高度不变
11970
+ if (rowRest.oTop) {
11971
+ sYHeight = (rowRest.oTop || 0) + (rowRest.resizeHeight || cellOpts.height || rowOpts.height || rowRest.height || defaultRowHeight)
11972
+ // 是否展开行
11973
+ if (expandColumn && rowExpandedMaps[rowid]) {
11974
+ sYHeight += rowRest.expandHeight || expandOpts.height || 0
11975
+ }
11920
11976
  }
11921
- if (scrollYHeight > maxYHeight) {
11977
+ if (sYHeight > maxYHeight) {
11922
11978
  isScrollYBig = true
11923
11979
  }
11924
11980
  }
11925
11981
  } else {
11926
11982
  if (bodyTableElem) {
11927
- scrollYHeight = bodyTableElem.clientHeight
11983
+ sYHeight = bodyTableElem.clientHeight
11928
11984
  }
11929
11985
  }
11930
11986
  let clientHeight = 0
@@ -11932,7 +11988,7 @@ export default defineVxeComponent({
11932
11988
  clientHeight = bodyScrollElem.clientHeight
11933
11989
  }
11934
11990
  // 虚拟渲染
11935
- let ySpaceHeight = scrollYHeight
11991
+ let ySpaceHeight = sYHeight
11936
11992
  let scrollYTop = ySpaceTop
11937
11993
  if (isScrollYBig) {
11938
11994
  // 触底
@@ -11976,7 +12032,7 @@ export default defineVxeComponent({
11976
12032
  rowExpandYSpaceEl.style.height = ySpaceHeight ? `${ySpaceHeight}px` : ''
11977
12033
  }
11978
12034
  reactData.scrollYTop = scrollYTop
11979
- reactData.scrollYHeight = scrollYHeight
12035
+ reactData.scrollYHeight = ySpaceHeight
11980
12036
  reactData.isScrollYBig = isScrollYBig
11981
12037
 
11982
12038
  calcScrollbar()
@@ -13175,12 +13231,12 @@ export default defineVxeComponent({
13175
13231
  if (props.resizable) {
13176
13232
  warnLog('vxe.error.delProp', ['resizable', 'column-config.resizable'])
13177
13233
  }
13178
- if (props.virtualXConfig && props.scrollX) {
13179
- warnLog('vxe.error.notSupportProp', ['virtual-x-config', 'scroll-x', 'scroll-x=null'])
13180
- }
13181
- if (props.virtualYConfig && props.scrollY) {
13182
- warnLog('vxe.error.notSupportProp', ['virtual-y-config', 'scroll-y', 'scroll-y=null'])
13183
- }
13234
+ // if (props.virtualXConfig && props.scrollX) {
13235
+ // warnLog('vxe.error.notSupportProp', ['virtual-x-config', 'scroll-x', 'scroll-x=null'])
13236
+ // }
13237
+ // if (props.virtualYConfig && props.scrollY) {
13238
+ // warnLog('vxe.error.notSupportProp', ['virtual-y-config', 'scroll-y', 'scroll-y=null'])
13239
+ // }
13184
13240
  if (props.aggregateConfig && props.rowGroupConfig) {
13185
13241
  warnLog('vxe.error.notSupportProp', ['aggregate-config', 'row-group-config', 'row-group-config=null'])
13186
13242
  }