vxe-table 4.10.6-beta.6 → 4.10.6-beta.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/es/index.css +1 -1
  2. package/es/index.min.css +1 -1
  3. package/es/style.css +1 -1
  4. package/es/style.min.css +1 -1
  5. package/es/table/src/header.js +7 -2
  6. package/es/table/src/table.js +263 -189
  7. package/es/table/style.css +119 -38
  8. package/es/table/style.min.css +1 -1
  9. package/es/ui/index.js +1 -1
  10. package/es/ui/src/log.js +1 -1
  11. package/es/vxe-table/style.css +119 -38
  12. package/es/vxe-table/style.min.css +1 -1
  13. package/lib/index.css +1 -1
  14. package/lib/index.min.css +1 -1
  15. package/lib/index.umd.js +263 -187
  16. package/lib/index.umd.min.js +1 -1
  17. package/lib/style.css +1 -1
  18. package/lib/style.min.css +1 -1
  19. package/lib/table/src/header.js +10 -2
  20. package/lib/table/src/header.min.js +1 -1
  21. package/lib/table/src/table.js +251 -183
  22. package/lib/table/src/table.min.js +1 -1
  23. package/lib/table/style/style.css +119 -38
  24. package/lib/table/style/style.min.css +1 -1
  25. package/lib/ui/index.js +1 -1
  26. package/lib/ui/index.min.js +1 -1
  27. package/lib/ui/src/log.js +1 -1
  28. package/lib/ui/src/log.min.js +1 -1
  29. package/lib/vxe-table/style/style.css +119 -38
  30. package/lib/vxe-table/style/style.min.css +1 -1
  31. package/package.json +1 -1
  32. package/packages/table/src/header.ts +7 -2
  33. package/packages/table/src/table.ts +271 -196
  34. package/styles/components/table.scss +149 -60
  35. /package/es/{iconfont.1736779080510.ttf → iconfont.1736840923205.ttf} +0 -0
  36. /package/es/{iconfont.1736779080510.woff → iconfont.1736840923205.woff} +0 -0
  37. /package/es/{iconfont.1736779080510.woff2 → iconfont.1736840923205.woff2} +0 -0
  38. /package/lib/{iconfont.1736779080510.ttf → iconfont.1736840923205.ttf} +0 -0
  39. /package/lib/{iconfont.1736779080510.woff → iconfont.1736840923205.woff} +0 -0
  40. /package/lib/{iconfont.1736779080510.woff2 → iconfont.1736840923205.woff2} +0 -0
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_util=require("./util"),_dom=require("../../ui/src/dom");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let{getI18n,renderer,renderEmptyElement}=_ui.VxeUI,renderType="header";var _default=exports.default=(0,_vue.defineComponent)({name:"VxeTableHeader",props:{tableData:Array,tableColumn:Array,tableGroupColumn:Array,fixedColumn:Array,fixedType:{type:String,default:null}},setup(V){let Y=(0,_vue.inject)("$xeTable",{}),{xID:h,props:m,reactData:K,internalData:J}=Y,{refElem:r,refLeftContainer:d,refRightContainer:s,refCellResizeBar:u,refCellResizeTip:c}=Y.getRefMaps(),{computeColumnOpts:g,computeColumnDragOpts:x,computeResizableOpts:v}=Y.getComputeMaps(),_=(0,_vue.ref)([]),S=(0,_vue.ref)(),b=(0,_vue.ref)(),C=(0,_vue.ref)(),y=(0,_vue.ref)(),w=(0,_vue.ref)(),D=(0,_vue.ref)(),M=(0,_vue.ref)(),t=()=>{var e=K.isGroup;_.value=e?(0,_util.convertHeaderColumnToRows)(V.tableGroupColumn):[]},Q=(e,a)=>{var l=a.column;let f=V.fixedType,{elemStore:t,visibleColumn:i}=J,h=v.value,m=r.value,g=d.value,x=s.value,_=u.value,b=c.value,C=e.clientX,y=S.value;var n=e.target;let w=l,D=(l.children&&l.children.length&&_xeUtils.default.eachTree(l.children,e=>{w=e}),n.parentNode);l=Object.assign(a,{cell:D});let M=0,E=(0,_util.getRefElem)(t["main-body-scroll"]);if(E){var o=(0,_dom.getOffsetPos)(n,y),n=n.clientWidth,T=Math.floor(n/2);let d=(0,_util.getColReMinWidth)(l)-T,s=o.left-D.clientWidth+n+d,u=o.left+T,t=document.onmousemove,r=document.onmouseup,c="left"===f,v="right"===f,p=0;if(c||v){var z=c?"nextElementSibling":"previousElementSibling";let e=D[z];for(;e&&!(0,_dom.hasClass)(e,"fixed--hidden");)(0,_dom.hasClass)(e,"col--group")||(p+=e.offsetWidth),e=e[z];v&&x&&(u=x.offsetLeft+p)}l=l=>{l.stopPropagation(),l.preventDefault();var t=l.clientX-C;let e=u+t;t=f?0:E.scrollLeft,c?e=Math.min(e,(x?x.offsetLeft:E.clientWidth)-p-d):v?(s=(g?g.clientWidth:0)+p+d,e=Math.min(e,u+D.clientWidth-d)):s=Math.max(E.scrollLeft,s),M=Math.max(e,s),t=Math.max(1,M-t);if(_.style.left=t+"px",h.showDragTip&&b){var r=m.clientWidth,a=y.getBoundingClientRect(),i=_.clientWidth,n=b.clientWidth,o=b.clientHeight;let e=-n;t<n+i?e=0:r<t&&(e+=r-t),b.style.left=e+"px",b.style.top=Math.min(m.clientHeight-o,Math.max(0,l.clientY-a.y-o/2))+"px",b.textContent=getI18n("vxe.table.resizeColTip",[w.renderWidth+(v?u-M:M-u)])}};K._isResize=!0,(0,_dom.addClass)(m,"drag--resize"),_.style.display="block",document.onmousemove=l,document.onmouseup=function(e){document.onmousemove=t,document.onmouseup=r;let l=w.renderWidth+(v?u-M:M-u);w.resizeWidth=l,"fixed"===h.dragMode&&i.forEach(e=>{e.id===w.id||e.resizeWidth||(e.resizeWidth=e.renderWidth)}),_.style.display="none",K._isResize=!1,J._lastResizeTime=Date.now(),Y.analyColumnWidth(),Y.recalculate(!0).then(()=>{Y.saveCustomStore("update:visible"),Y.updateCellAreas(),Y.dispatchEvent("resizable-change",Object.assign(Object.assign({},a),{resizeWidth:l}),e),setTimeout(()=>Y.recalculate(!0),300)}),(0,_dom.removeClass)(m,"drag--resize")},l(e),Y.closeMenu&&Y.closeMenu()}},E=(D,M,E,T)=>{let z=V.fixedType,{resizable:S,border:W,columnKey:R,headerCellClassName:H,headerCellStyle:I,showHeaderOverflow:O,headerAlign:k,align:U,mouseConfig:$}=m,{currentColumn:A,scrollXLoad:F,scrollYLoad:L,overflowX:j}=K,q=J.scrollXStore,X=g.value,G=x.value,{disabledMethod:N,isCrossDrag:P,isPeerDrag:B}=G;return E.map((e,l)=>{var{type:t,showHeaderOverflow:r,headerAlign:a,align:i,filters:n,headerClassName:o,editRender:d,cellRender:s}=e,u=e.id,d=d||s,s=d?renderer.get(d.name):null,d=e.children&&e.children.length,c=z?e.fixed!==z&&!d:!!e.fixed&&j,r=_xeUtils.default.eqNull(r)?O:r,a=a||(s?s.tableHeaderCellAlign:"")||k||i||(s?s.tableCellAlign:"")||U;let v="ellipsis"===r;i="title"===r,s=!0===r||"tooltip"===r;let p=i||s||v,f=!1,h=null;n&&(h=n[0],f=n.some(e=>e.checked));var r=Y.getColumnIndex(e),m=Y.getVTColumnIndex(e);let g={$table:Y,$grid:Y.xegrid,$rowIndex:T,column:e,columnIndex:r,$columnIndex:l,_columnIndex:m,firstFilterOption:h,fixed:z,type:renderType,isHidden:c,hasFilter:f};var r={colid:u,colspan:1<e.colSpan?e.colSpan:null,rowspan:1<e.rowSpan?e.rowSpan:null},x={onClick:e=>Y.triggerHeaderCellClickEvent(e,g),onDblclick:e=>Y.triggerHeaderCellDblclickEvent(e,g)},_=(F&&!p&&(v=p=!0),X.drag&&"cell"===G.trigger);let b=!1;_&&(b=!(!N||!N(g))),($||_)&&(x.onMousedown=e=>Y.triggerHeaderCellMousedownEvent(e,g)),X.drag&&(x.onDragstart=Y.handleHeaderCellDragDragstartEvent,x.onDragend=Y.handleHeaderCellDragDragendEvent,x.onDragover=Y.handleHeaderCellDragDragoverEvent,_)&&(x.onMouseup=Y.handleHeaderCellDragMouseupEvent);var _=l===E.length-1,C=_xeUtils.default.isBoolean(e.resizable)?e.resizable:X.resizable||S,y=!e.resizeWidth&&("auto"===e.minWidth||"auto"===e.width);let w=!1;return F&&!D&&!e.fixed&&(m<q.visibleStartIndex||m>q.visibleEndIndex)&&(w=!0),(0,_vue.h)("th",Object.assign(Object.assign(Object.assign({class:["vxe-header--column",u,{["col--"+a]:a,["col--"+t]:t,"col--last":_,"col--fixed":e.fixed,"col--group":d,"col--ellipsis":p,"fixed--width":!y,"fixed--hidden":c,"is--sortable":e.sortable,"col--filter":!!n,"is--filter-active":f,"is--drag-active":!e.fixed&&!b&&(P||B||!e.parentId),"is--drag-disabled":b,"col--current":A===e},o?_xeUtils.default.isFunction(o)?o(g):o:"",H?_xeUtils.default.isFunction(H)?H(g):H:""],style:I?_xeUtils.default.isFunction(I)?I(g):I:null},r),x),{key:R||F||L||X.useKey||X.drag||d?u:l}),[(0,_vue.h)("div",{class:["vxe-cell",{"c--title":i,"c--tooltip":s,"c--ellipsis":v}]},w||M&&c?[]:e.renderHeader(g)),!c&&C?(0,_vue.h)("div",{class:["vxe-resizable",{"is--line":!W||"none"===W}],onMousedown:e=>Q(e,g),onDblclick:e=>Y.handleResizeDblclickEvent(e,g)}):renderEmptyElement(Y)])})};return(0,_vue.watch)(()=>V.tableColumn,t),(0,_vue.onMounted)(()=>{(0,_vue.nextTick)(()=>{var e=V.fixedType,l=Y.internalData,l=l.elemStore,e=`${e||"main"}-header-`;l[e+"wrapper"]=S,l[e+"scroll"]=b,l[e+"table"]=C,l[e+"colgroup"]=y,l[e+"list"]=w,l[e+"xSpace"]=D,l[e+"repair"]=M,t()})}),(0,_vue.onUnmounted)(()=>{var e=V.fixedType,l=Y.internalData,l=l.elemStore,e=`${e||"main"}-header-`;l[e+"wrapper"]=null,l[e+"scroll"]=null,l[e+"table"]=null,l[e+"colgroup"]=null,l[e+"list"]=null,l[e+"xSpace"]=null,l[e+"repair"]=null}),()=>{let{fixedType:l,fixedColumn:e,tableColumn:t}=V;var{showHeaderOverflow:r,spanMethod:a,footerSpanMethod:i}=m,{isGroup:n,scrollXLoad:o,scrollYLoad:d,dragCol:s}=K,{visibleColumn:u,fullColumnIdData:c}=J;let v=_.value,p=t,f=!1;return n?p=u:(!(o||d||r)||a||i||(f=!0),l&&(p=u,f)&&(p=e||[]),v=[p]),l||n||o&&s&&2<p.length&&(d=c[s.id])&&(r=d._index,a=p[0],i=p[p.length-1],u=c[a.id],o=c[i.id],u)&&o&&(d=u._index,a=o._index,r<d?(p=[s].concat(p),v=[[s].concat(v[0])].concat(v.slice(1))):a<r&&(p=p.concat([s]),v=[v[0].concat([s])].concat(v.slice(1)))),(0,_vue.h)("div",{ref:S,class:["vxe-table--header-wrapper",l?`fixed-${l}--wrapper`:"body--wrapper"],xid:h},[(0,_vue.h)("div",{ref:b,class:"vxe-table--header-inner-wrapper",onScroll(e){Y.triggerHeaderScrollEvent(e,l)}},[l?renderEmptyElement(Y):(0,_vue.h)("div",{ref:D,class:"vxe-body--x-space"}),(0,_vue.h)("table",{ref:C,class:"vxe-table--header",xid:h,cellspacing:0,cellpadding:0,border:0},[(0,_vue.h)("colgroup",{ref:y},p.map((e,l)=>(0,_vue.h)("col",{name:e.id,key:l}))),(0,_vue.h)("thead",{ref:w},((r,a,e)=>{let i=V.fixedType,{headerRowClassName:n,headerRowStyle:o}=m,d=K.isDragColMove,s=g.value,u=x.value;return e.map((e,l)=>{var t={$table:Y,$rowIndex:l,fixed:i,type:renderType};return s.drag&&u.animation?(0,_vue.h)(_vue.TransitionGroup,{key:l,name:"vxe-header--col-list"+(d?"":"-disabled"),tag:"tr",class:["vxe-header--row",n?_xeUtils.default.isFunction(n)?n(t):n:""],style:o?_xeUtils.default.isFunction(o)?o(t):o:null},{default:()=>E(r,a,e,l)}):(0,_vue.h)("tr",{key:l,class:["vxe-header--row",n?_xeUtils.default.isFunction(n)?n(t):n:""],style:o?_xeUtils.default.isFunction(o)?o(t):o:null},E(r,a,e,l))})})(n,f,v))])]),(0,_vue.h)("div",{ref:M,class:"vxe-table--header-border-line"})])}}});
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_util=require("./util"),_dom=require("../../ui/src/dom");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let{getI18n,renderer,renderEmptyElement}=_ui.VxeUI,renderType="header";var _default=exports.default=(0,_vue.defineComponent)({name:"VxeTableHeader",props:{tableData:Array,tableColumn:Array,tableGroupColumn:Array,fixedColumn:Array,fixedType:{type:String,default:null}},setup(V){let Y=(0,_vue.inject)("$xeTable",{}),{xID:f,props:m,reactData:K,internalData:J}=Y,{refElem:r,refLeftContainer:s,refRightContainer:u,refCellResizeBar:c,refCellResizeTip:v}=Y.getRefMaps(),{computeColumnOpts:g,computeColumnDragOpts:x,computeResizableOpts:p,computeScrollbarXToTop:h}=Y.getComputeMaps(),_=(0,_vue.ref)([]),H=(0,_vue.ref)(),b=(0,_vue.ref)(),C=(0,_vue.ref)(),y=(0,_vue.ref)(),w=(0,_vue.ref)(),D=(0,_vue.ref)(),M=(0,_vue.ref)(),t=()=>{var e=K.isGroup;_.value=e?(0,_util.convertHeaderColumnToRows)(V.tableGroupColumn):[]},Q=(e,a)=>{var l=a.column;let f=V.fixedType,m=K.scrollbarHeight,{elemStore:t,visibleColumn:i}=J,g=p.value,x=r.value,_=s.value,b=u.value,C=c.value,y=v.value,w=h.value,D=e.clientX,M=H.value;var n=e.target;let T=l,E=(l.children&&l.children.length&&_xeUtils.default.eachTree(l.children,e=>{T=e}),n.parentNode);l=Object.assign(a,{cell:E});let z=0,S=(0,_util.getRefElem)(t["main-body-scroll"]);if(S){var o=(0,_dom.getOffsetPos)(n,M),n=n.clientWidth,d=Math.floor(n/2);let s=(0,_util.getColReMinWidth)(l)-d,u=o.left-E.clientWidth+n+s,c=o.left+d,t=document.onmousemove,r=document.onmouseup,v="left"===f,p="right"===f,h=0;if(v||p){var W=v?"nextElementSibling":"previousElementSibling";let e=E[W];for(;e&&!(0,_dom.hasClass)(e,"fixed--hidden");)(0,_dom.hasClass)(e,"col--group")||(h+=e.offsetWidth),e=e[W];p&&b&&(c=b.offsetLeft+h)}l=l=>{l.stopPropagation(),l.preventDefault();var t=x.clientHeight,r=l.clientX-D;let e=c+r;r=f?0:S.scrollLeft,v?e=Math.min(e,(b?b.offsetLeft:S.clientWidth)-h-s):p?(u=(_?_.clientWidth:0)+h+s,e=Math.min(e,c+E.clientWidth-s)):u=Math.max(S.scrollLeft,u),z=Math.max(e,u),r=Math.max(1,z-r);if(C.style.left=r+"px",C.style.top=`${w?m:0}px`,C.style.height=`${w?t-m:t}px`,g.showDragTip&&y){var a=x.clientWidth,i=M.getBoundingClientRect(),n=C.clientWidth,o=y.clientWidth,d=y.clientHeight;let e=-o;r<o+n?e=0:a<r&&(e+=a-r),y.style.left=e+"px",y.style.top=Math.min(t-d,Math.max(0,l.clientY-i.y-d/2))+"px",y.textContent=getI18n("vxe.table.resizeColTip",[T.renderWidth+(p?c-z:z-c)])}};K._isResize=!0,(0,_dom.addClass)(x,"drag--resize"),C.style.display="block",document.onmousemove=l,document.onmouseup=function(e){document.onmousemove=t,document.onmouseup=r;let l=T.renderWidth+(p?c-z:z-c);T.resizeWidth=l,"fixed"===g.dragMode&&i.forEach(e=>{e.id===T.id||e.resizeWidth||(e.resizeWidth=e.renderWidth)}),C.style.display="none",K._isResize=!1,J._lastResizeTime=Date.now(),Y.analyColumnWidth(),Y.recalculate(!0).then(()=>{Y.saveCustomStore("update:visible"),Y.updateCellAreas(),Y.dispatchEvent("resizable-change",Object.assign(Object.assign({},a),{resizeWidth:l}),e),setTimeout(()=>Y.recalculate(!0),300)}),(0,_dom.removeClass)(x,"drag--resize")},l(e),Y.closeMenu&&Y.closeMenu()}},T=(D,M,T,E)=>{let z=V.fixedType,{resizable:S,border:W,columnKey:H,headerCellClassName:R,headerCellStyle:I,showHeaderOverflow:O,headerAlign:k,align:U,mouseConfig:$}=m,{currentColumn:A,scrollXLoad:F,scrollYLoad:L,overflowX:j}=K,q=J.scrollXStore,X=g.value,G=x.value,{disabledMethod:N,isCrossDrag:P,isPeerDrag:B}=G;return T.map((e,l)=>{var{type:t,showHeaderOverflow:r,headerAlign:a,align:i,filters:n,headerClassName:o,editRender:d,cellRender:s}=e,u=e.id,d=d||s,s=d?renderer.get(d.name):null,d=e.children&&e.children.length,c=z?e.fixed!==z&&!d:!!e.fixed&&j,r=_xeUtils.default.eqNull(r)?O:r,a=a||(s?s.tableHeaderCellAlign:"")||k||i||(s?s.tableCellAlign:"")||U;let v="ellipsis"===r;i="title"===r,s=!0===r||"tooltip"===r;let p=i||s||v,h=!1,f=null;n&&(f=n[0],h=n.some(e=>e.checked));var r=Y.getColumnIndex(e),m=Y.getVTColumnIndex(e);let g={$table:Y,$grid:Y.xegrid,$rowIndex:E,column:e,columnIndex:r,$columnIndex:l,_columnIndex:m,firstFilterOption:f,fixed:z,type:renderType,isHidden:c,hasFilter:h};var r={colid:u,colspan:1<e.colSpan?e.colSpan:null,rowspan:1<e.rowSpan?e.rowSpan:null},x={onClick:e=>Y.triggerHeaderCellClickEvent(e,g),onDblclick:e=>Y.triggerHeaderCellDblclickEvent(e,g)},_=(F&&!p&&(v=p=!0),X.drag&&"cell"===G.trigger);let b=!1;_&&(b=!(!N||!N(g))),($||_)&&(x.onMousedown=e=>Y.triggerHeaderCellMousedownEvent(e,g)),X.drag&&(x.onDragstart=Y.handleHeaderCellDragDragstartEvent,x.onDragend=Y.handleHeaderCellDragDragendEvent,x.onDragover=Y.handleHeaderCellDragDragoverEvent,_)&&(x.onMouseup=Y.handleHeaderCellDragMouseupEvent);var _=l===T.length-1,C=_xeUtils.default.isBoolean(e.resizable)?e.resizable:X.resizable||S,y=!e.resizeWidth&&("auto"===e.minWidth||"auto"===e.width);let w=!1;return F&&!D&&!e.fixed&&(m<q.visibleStartIndex||m>q.visibleEndIndex)&&(w=!0),(0,_vue.h)("th",Object.assign(Object.assign(Object.assign({class:["vxe-header--column",u,{["col--"+a]:a,["col--"+t]:t,"col--last":_,"col--fixed":e.fixed,"col--group":d,"col--ellipsis":p,"fixed--width":!y,"fixed--hidden":c,"is--sortable":e.sortable,"col--filter":!!n,"is--filter-active":h,"is--drag-active":!e.fixed&&!b&&(P||B||!e.parentId),"is--drag-disabled":b,"col--current":A===e},o?_xeUtils.default.isFunction(o)?o(g):o:"",R?_xeUtils.default.isFunction(R)?R(g):R:""],style:I?_xeUtils.default.isFunction(I)?I(g):I:null},r),x),{key:H||F||L||X.useKey||X.drag||d?u:l}),[(0,_vue.h)("div",{class:["vxe-cell",{"c--title":i,"c--tooltip":s,"c--ellipsis":v}]},w||M&&c?[]:e.renderHeader(g)),!c&&C?(0,_vue.h)("div",{class:["vxe-resizable",{"is--line":!W||"none"===W}],onMousedown:e=>Q(e,g),onDblclick:e=>Y.handleResizeDblclickEvent(e,g)}):renderEmptyElement(Y)])})};return(0,_vue.watch)(()=>V.tableColumn,t),(0,_vue.onMounted)(()=>{(0,_vue.nextTick)(()=>{var e=V.fixedType,l=Y.internalData,l=l.elemStore,e=`${e||"main"}-header-`;l[e+"wrapper"]=H,l[e+"scroll"]=b,l[e+"table"]=C,l[e+"colgroup"]=y,l[e+"list"]=w,l[e+"xSpace"]=D,l[e+"repair"]=M,t()})}),(0,_vue.onUnmounted)(()=>{var e=V.fixedType,l=Y.internalData,l=l.elemStore,e=`${e||"main"}-header-`;l[e+"wrapper"]=null,l[e+"scroll"]=null,l[e+"table"]=null,l[e+"colgroup"]=null,l[e+"list"]=null,l[e+"xSpace"]=null,l[e+"repair"]=null}),()=>{let{fixedType:l,fixedColumn:e,tableColumn:t}=V;var{showHeaderOverflow:r,spanMethod:a,footerSpanMethod:i}=m,{isGroup:n,scrollXLoad:o,scrollYLoad:d,dragCol:s}=K,{visibleColumn:u,fullColumnIdData:c}=J;let v=_.value,p=t,h=!1;return n?p=u:(!(o||d||r)||a||i||(h=!0),l&&(p=u,h)&&(p=e||[]),v=[p]),l||n||o&&s&&2<p.length&&(d=c[s.id])&&(r=d._index,a=p[0],i=p[p.length-1],u=c[a.id],o=c[i.id],u)&&o&&(d=u._index,a=o._index,r<d?(p=[s].concat(p),v=[[s].concat(v[0])].concat(v.slice(1))):a<r&&(p=p.concat([s]),v=[v[0].concat([s])].concat(v.slice(1)))),(0,_vue.h)("div",{ref:H,class:["vxe-table--header-wrapper",l?`fixed-${l}--wrapper`:"body--wrapper"],xid:f},[(0,_vue.h)("div",{ref:b,class:"vxe-table--header-inner-wrapper",onScroll(e){Y.triggerHeaderScrollEvent(e,l)}},[l?renderEmptyElement(Y):(0,_vue.h)("div",{ref:D,class:"vxe-body--x-space"}),(0,_vue.h)("table",{ref:C,class:"vxe-table--header",xid:f,cellspacing:0,cellpadding:0,border:0},[(0,_vue.h)("colgroup",{ref:y},p.map((e,l)=>(0,_vue.h)("col",{name:e.id,key:l}))),(0,_vue.h)("thead",{ref:w},((r,a,e)=>{let i=V.fixedType,{headerRowClassName:n,headerRowStyle:o}=m,d=K.isDragColMove,s=g.value,u=x.value;return e.map((e,l)=>{var t={$table:Y,$rowIndex:l,fixed:i,type:renderType};return s.drag&&u.animation?(0,_vue.h)(_vue.TransitionGroup,{key:l,name:"vxe-header--col-list"+(d?"":"-disabled"),tag:"tr",class:["vxe-header--row",n?_xeUtils.default.isFunction(n)?n(t):n:""],style:o?_xeUtils.default.isFunction(o)?o(t):o:null},{default:()=>T(r,a,e,l)}):(0,_vue.h)("tr",{key:l,class:["vxe-header--row",n?_xeUtils.default.isFunction(n)?n(t):n:""],style:o?_xeUtils.default.isFunction(o)?o(t):o:null},T(r,a,e,l))})})(n,h,v))])]),(0,_vue.h)("div",{ref:M,class:"vxe-table--header-border-line"})])}}});
@@ -393,9 +393,12 @@ var _default = exports.default = (0, _vue.defineComponent)({
393
393
  const refScrollXVirtualElem = (0, _vue.ref)();
394
394
  const refScrollYVirtualElem = (0, _vue.ref)();
395
395
  const refScrollXHandleElem = (0, _vue.ref)();
396
+ const refScrollXLeftCornerElem = (0, _vue.ref)();
396
397
  const refScrollXRightCornerElem = (0, _vue.ref)();
397
398
  const refScrollYHandleElem = (0, _vue.ref)();
398
399
  const refScrollYTopCornerElem = (0, _vue.ref)();
400
+ const refScrollXWrapperElem = (0, _vue.ref)();
401
+ const refScrollYWrapperElem = (0, _vue.ref)();
399
402
  const refScrollYBottomCornerElem = (0, _vue.ref)();
400
403
  const refScrollXSpaceElem = (0, _vue.ref)();
401
404
  const refScrollYSpaceElem = (0, _vue.ref)();
@@ -452,6 +455,14 @@ var _default = exports.default = (0, _vue.defineComponent)({
452
455
  const computeScrollbarOpts = (0, _vue.computed)(() => {
453
456
  return Object.assign({}, getConfig().table.scrollbarConfig, props.scrollbarConfig);
454
457
  });
458
+ const computeScrollbarXToTop = (0, _vue.computed)(() => {
459
+ const scrollbarOpts = computeScrollbarOpts.value;
460
+ return !!(scrollbarOpts.x && scrollbarOpts.x.position === 'top');
461
+ });
462
+ const computeScrollbarYToLeft = (0, _vue.computed)(() => {
463
+ const scrollbarOpts = computeScrollbarOpts.value;
464
+ return !!(scrollbarOpts.y && scrollbarOpts.y.position === 'left');
465
+ });
455
466
  const computeScrollYThreshold = (0, _vue.computed)(() => {
456
467
  const sYOpts = computeSYOpts.value;
457
468
  const {
@@ -756,6 +767,8 @@ var _default = exports.default = (0, _vue.defineComponent)({
756
767
  computeVirtualXOpts,
757
768
  computeVirtualYOpts,
758
769
  computeScrollbarOpts,
770
+ computeScrollbarXToTop,
771
+ computeScrollbarYToLeft,
759
772
  computeColumnOpts,
760
773
  computeScrollXThreshold,
761
774
  computeScrollYThreshold,
@@ -2045,19 +2058,26 @@ var _default = exports.default = (0, _vue.defineComponent)({
2045
2058
  }
2046
2059
  bodyHeight = Math.max(bodyMinHeight, bodyHeight);
2047
2060
  }
2061
+ const xLeftCornerEl = refScrollXLeftCornerElem.value;
2062
+ const xRightCornerEl = refScrollXRightCornerElem.value;
2063
+ const scrollbarXToTop = computeScrollbarXToTop.value;
2048
2064
  const scrollXVirtualEl = refScrollXVirtualElem.value;
2049
2065
  if (scrollXVirtualEl) {
2050
2066
  scrollXVirtualEl.style.height = `${scrollbarHeight}px`;
2051
2067
  scrollXVirtualEl.style.visibility = scrollbarHeight ? 'visible' : 'hidden';
2052
2068
  }
2053
- const xHandleEl = refScrollXHandleElem.value;
2054
- if (xHandleEl) {
2055
- xHandleEl.style.width = `${el.clientWidth - scrollbarWidth}px`;
2069
+ const xWrapperEl = refScrollXWrapperElem.value;
2070
+ if (xWrapperEl) {
2071
+ xWrapperEl.style.left = scrollbarXToTop ? `${scrollbarWidth}px` : '';
2072
+ xWrapperEl.style.width = `${el.clientWidth - scrollbarWidth}px`;
2073
+ }
2074
+ if (xLeftCornerEl) {
2075
+ xLeftCornerEl.style.width = scrollbarXToTop ? `${scrollbarWidth}px` : '';
2076
+ xLeftCornerEl.style.display = scrollbarXToTop ? scrollbarWidth && scrollbarHeight ? 'block' : '' : '';
2056
2077
  }
2057
- const xRightCornerEl = refScrollXRightCornerElem.value;
2058
2078
  if (xRightCornerEl) {
2059
- xRightCornerEl.style.width = `${scrollbarWidth}px`;
2060
- xRightCornerEl.style.display = scrollbarWidth && scrollbarHeight ? 'block' : '';
2079
+ xRightCornerEl.style.width = scrollbarXToTop ? '' : `${scrollbarWidth}px`;
2080
+ xRightCornerEl.style.display = scrollbarXToTop ? '' : scrollbarWidth && scrollbarHeight ? 'block' : '';
2061
2081
  }
2062
2082
  const scrollYVirtualEl = refScrollYVirtualElem.value;
2063
2083
  if (scrollYVirtualEl) {
@@ -2070,10 +2090,10 @@ var _default = exports.default = (0, _vue.defineComponent)({
2070
2090
  yTopCornerEl.style.height = `${headerHeight}px`;
2071
2091
  yTopCornerEl.style.display = headerHeight ? 'block' : '';
2072
2092
  }
2073
- const yHandleEl = refScrollYHandleElem.value;
2074
- if (yHandleEl) {
2075
- yHandleEl.style.height = `${bodyHeight}px`;
2076
- yHandleEl.style.top = `${headerHeight}px`;
2093
+ const yWrapperEl = refScrollYWrapperElem.value;
2094
+ if (yWrapperEl) {
2095
+ yWrapperEl.style.height = `${bodyHeight}px`;
2096
+ yWrapperEl.style.top = `${headerHeight}px`;
2077
2097
  }
2078
2098
  const yBottomCornerEl = refScrollYBottomCornerElem.value;
2079
2099
  if (yBottomCornerEl) {
@@ -3651,86 +3671,6 @@ var _default = exports.default = (0, _vue.defineComponent)({
3651
3671
  loadScrollYData();
3652
3672
  }, fpsTime);
3653
3673
  };
3654
- const scrollXEvent = evnt => {
3655
- const {
3656
- elemStore,
3657
- inWheelScroll,
3658
- lastScrollTop,
3659
- inHeaderScroll,
3660
- inBodyScroll,
3661
- inFooterScroll
3662
- } = internalData;
3663
- if (inHeaderScroll || inBodyScroll || inFooterScroll) {
3664
- return;
3665
- }
3666
- if (inWheelScroll) {
3667
- return;
3668
- }
3669
- const headerScrollElem = (0, _util.getRefElem)(elemStore['main-header-scroll']);
3670
- const bodyScrollElem = (0, _util.getRefElem)(elemStore['main-body-scroll']);
3671
- const footerScrollElem = (0, _util.getRefElem)(elemStore['main-footer-scroll']);
3672
- const yHandleEl = refScrollYHandleElem.value;
3673
- const wrapperEl = evnt.currentTarget;
3674
- const {
3675
- scrollLeft
3676
- } = wrapperEl;
3677
- const yBodyEl = yHandleEl || bodyScrollElem;
3678
- let scrollTop = 0;
3679
- if (yBodyEl) {
3680
- scrollTop = yBodyEl.scrollTop;
3681
- }
3682
- const isRollX = true;
3683
- const isRollY = scrollTop !== lastScrollTop;
3684
- internalData.inVirtualScroll = true;
3685
- (0, _dom.setScrollLeft)(bodyScrollElem, scrollLeft);
3686
- (0, _dom.setScrollLeft)(headerScrollElem, scrollLeft);
3687
- (0, _dom.setScrollLeft)(footerScrollElem, scrollLeft);
3688
- $xeTable.triggerScrollXEvent(evnt);
3689
- $xeTable.handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, {
3690
- type: 'table',
3691
- fixed: ''
3692
- });
3693
- };
3694
- const scrollYEvent = evnt => {
3695
- const {
3696
- elemStore,
3697
- inWheelScroll,
3698
- lastScrollLeft,
3699
- inHeaderScroll,
3700
- inBodyScroll,
3701
- inFooterScroll
3702
- } = internalData;
3703
- if (inHeaderScroll || inBodyScroll || inFooterScroll) {
3704
- return;
3705
- }
3706
- if (inWheelScroll) {
3707
- return;
3708
- }
3709
- const leftScrollElem = (0, _util.getRefElem)(elemStore['left-body-scroll']);
3710
- const bodyScrollElem = (0, _util.getRefElem)(elemStore['main-body-scroll']);
3711
- const rightScrollElem = (0, _util.getRefElem)(elemStore['right-body-scroll']);
3712
- const xHandleEl = refScrollXHandleElem.value;
3713
- const wrapperEl = evnt.currentTarget;
3714
- const {
3715
- scrollTop
3716
- } = wrapperEl;
3717
- const xBodyEl = xHandleEl || bodyScrollElem;
3718
- let scrollLeft = 0;
3719
- if (xBodyEl) {
3720
- scrollLeft = xBodyEl.scrollLeft;
3721
- }
3722
- const isRollX = scrollLeft !== lastScrollLeft;
3723
- const isRollY = true;
3724
- internalData.inVirtualScroll = true;
3725
- (0, _dom.setScrollTop)(bodyScrollElem, scrollTop);
3726
- (0, _dom.setScrollTop)(leftScrollElem, scrollTop);
3727
- (0, _dom.setScrollTop)(rightScrollElem, scrollTop);
3728
- $xeTable.triggerScrollYEvent(evnt);
3729
- $xeTable.handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, {
3730
- type: 'table',
3731
- fixed: ''
3732
- });
3733
- };
3734
3674
  const checkLastSyncScroll = (isRollX, isRollY) => {
3735
3675
  const {
3736
3676
  scrollXLoad,
@@ -3782,6 +3722,12 @@ var _default = exports.default = (0, _vue.defineComponent)({
3782
3722
  }
3783
3723
  return (0, _vue.nextTick)();
3784
3724
  };
3725
+ function handleUupdateResize() {
3726
+ const el = refElem.value;
3727
+ if (el && el.clientWidth && el.clientHeight) {
3728
+ tableMethods.recalculate();
3729
+ }
3730
+ }
3785
3731
  tableMethods = {
3786
3732
  dispatchEvent,
3787
3733
  /**
@@ -7126,6 +7072,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
7126
7072
  const rdLineEl = refDragRowLineElem.value;
7127
7073
  if (rdLineEl) {
7128
7074
  if (showLine) {
7075
+ const scrollbarYToLeft = computeScrollbarYToLeft.value;
7129
7076
  const trRect = trEl.getBoundingClientRect();
7130
7077
  let trHeight = trEl.clientHeight;
7131
7078
  const offsetTop = Math.max(1, trRect.y - wrapperRect.y);
@@ -7133,6 +7080,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
7133
7080
  trHeight = tableHeight - offsetTop - scrollbarHeight;
7134
7081
  }
7135
7082
  rdLineEl.style.display = 'block';
7083
+ rdLineEl.style.left = `${scrollbarYToLeft ? scrollbarWidth : 0}px`;
7136
7084
  rdLineEl.style.top = `${offsetTop}px`;
7137
7085
  rdLineEl.style.height = `${trHeight}px`;
7138
7086
  rdLineEl.style.width = `${tableWidth - scrollbarWidth}px`;
@@ -7146,6 +7094,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
7146
7094
  const cdLineEl = refDragColLineElem.value;
7147
7095
  if (cdLineEl) {
7148
7096
  if (showLine) {
7097
+ const scrollbarXToTop = computeScrollbarXToTop.value;
7149
7098
  const leftContainerElem = refLeftContainer.value;
7150
7099
  const leftContainerWidth = leftContainerElem ? leftContainerElem.clientWidth : 0;
7151
7100
  const rightContainerElem = refRightContainer.value;
@@ -7170,7 +7119,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
7170
7119
  if (prevDragToChild) {
7171
7120
  cdLineEl.style.height = `${thRect.height}px`;
7172
7121
  } else {
7173
- cdLineEl.style.height = `${tableHeight - offsetTop - scrollbarHeight}px`;
7122
+ cdLineEl.style.height = `${tableHeight - offsetTop - (scrollbarXToTop ? 0 : scrollbarHeight)}px`;
7174
7123
  }
7175
7124
  cdLineEl.setAttribute('drag-pos', dragPos);
7176
7125
  cdLineEl.setAttribute('drag-to-child', prevDragToChild ? 'y' : 'n');
@@ -9635,6 +9584,86 @@ var _default = exports.default = (0, _vue.defineComponent)({
9635
9584
  });
9636
9585
  }
9637
9586
  },
9587
+ triggerVirtualScrollXEvent(evnt) {
9588
+ const {
9589
+ elemStore,
9590
+ inWheelScroll,
9591
+ lastScrollTop,
9592
+ inHeaderScroll,
9593
+ inBodyScroll,
9594
+ inFooterScroll
9595
+ } = internalData;
9596
+ if (inHeaderScroll || inBodyScroll || inFooterScroll) {
9597
+ return;
9598
+ }
9599
+ if (inWheelScroll) {
9600
+ return;
9601
+ }
9602
+ const headerScrollElem = (0, _util.getRefElem)(elemStore['main-header-scroll']);
9603
+ const bodyScrollElem = (0, _util.getRefElem)(elemStore['main-body-scroll']);
9604
+ const footerScrollElem = (0, _util.getRefElem)(elemStore['main-footer-scroll']);
9605
+ const yHandleEl = refScrollYHandleElem.value;
9606
+ const wrapperEl = evnt.currentTarget;
9607
+ const {
9608
+ scrollLeft
9609
+ } = wrapperEl;
9610
+ const yBodyEl = yHandleEl || bodyScrollElem;
9611
+ let scrollTop = 0;
9612
+ if (yBodyEl) {
9613
+ scrollTop = yBodyEl.scrollTop;
9614
+ }
9615
+ const isRollX = true;
9616
+ const isRollY = scrollTop !== lastScrollTop;
9617
+ internalData.inVirtualScroll = true;
9618
+ (0, _dom.setScrollLeft)(bodyScrollElem, scrollLeft);
9619
+ (0, _dom.setScrollLeft)(headerScrollElem, scrollLeft);
9620
+ (0, _dom.setScrollLeft)(footerScrollElem, scrollLeft);
9621
+ $xeTable.triggerScrollXEvent(evnt);
9622
+ $xeTable.handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, {
9623
+ type: 'table',
9624
+ fixed: ''
9625
+ });
9626
+ },
9627
+ triggerVirtualScrollYEvent(evnt) {
9628
+ const {
9629
+ elemStore,
9630
+ inWheelScroll,
9631
+ lastScrollLeft,
9632
+ inHeaderScroll,
9633
+ inBodyScroll,
9634
+ inFooterScroll
9635
+ } = internalData;
9636
+ if (inHeaderScroll || inBodyScroll || inFooterScroll) {
9637
+ return;
9638
+ }
9639
+ if (inWheelScroll) {
9640
+ return;
9641
+ }
9642
+ const leftScrollElem = (0, _util.getRefElem)(elemStore['left-body-scroll']);
9643
+ const bodyScrollElem = (0, _util.getRefElem)(elemStore['main-body-scroll']);
9644
+ const rightScrollElem = (0, _util.getRefElem)(elemStore['right-body-scroll']);
9645
+ const xHandleEl = refScrollXHandleElem.value;
9646
+ const wrapperEl = evnt.currentTarget;
9647
+ const {
9648
+ scrollTop
9649
+ } = wrapperEl;
9650
+ const xBodyEl = xHandleEl || bodyScrollElem;
9651
+ let scrollLeft = 0;
9652
+ if (xBodyEl) {
9653
+ scrollLeft = xBodyEl.scrollLeft;
9654
+ }
9655
+ const isRollX = scrollLeft !== lastScrollLeft;
9656
+ const isRollY = true;
9657
+ internalData.inVirtualScroll = true;
9658
+ (0, _dom.setScrollTop)(bodyScrollElem, scrollTop);
9659
+ (0, _dom.setScrollTop)(leftScrollElem, scrollTop);
9660
+ (0, _dom.setScrollTop)(rightScrollElem, scrollTop);
9661
+ $xeTable.triggerScrollYEvent(evnt);
9662
+ $xeTable.handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, {
9663
+ type: 'table',
9664
+ fixed: ''
9665
+ });
9666
+ },
9638
9667
  /**
9639
9668
  * 对于树形结构中,可以直接滚动到指定深层节点中
9640
9669
  * 对于某些特定的场景可能会用到,比如定位到某一节点
@@ -10035,12 +10064,108 @@ var _default = exports.default = (0, _vue.defineComponent)({
10035
10064
  }
10036
10065
  return renderEmptyElement($xeTable);
10037
10066
  };
10038
- function handleUupdateResize() {
10039
- const el = refElem.value;
10040
- if (el && el.clientWidth && el.clientHeight) {
10041
- tableMethods.recalculate();
10042
- }
10043
- }
10067
+ const renderScrollX = () => {
10068
+ return (0, _vue.h)('div', {
10069
+ key: 'vsx',
10070
+ ref: refScrollXVirtualElem,
10071
+ class: 'vxe-table--scroll-x-virtual'
10072
+ }, [(0, _vue.h)('div', {
10073
+ ref: refScrollXLeftCornerElem,
10074
+ class: 'vxe-table--scroll-x-left-corner'
10075
+ }), (0, _vue.h)('div', {
10076
+ ref: refScrollXWrapperElem,
10077
+ class: 'vxe-table--scroll-x-wrapper'
10078
+ }, [(0, _vue.h)('div', {
10079
+ ref: refScrollXHandleElem,
10080
+ class: 'vxe-table--scroll-x-handle',
10081
+ onScroll: $xeTable.triggerVirtualScrollXEvent
10082
+ }, [(0, _vue.h)('div', {
10083
+ ref: refScrollXSpaceElem,
10084
+ class: 'vxe-table--scroll-x-space'
10085
+ })])]), (0, _vue.h)('div', {
10086
+ ref: refScrollXRightCornerElem,
10087
+ class: 'vxe-table--scroll-x-right-corner'
10088
+ })]);
10089
+ };
10090
+ const renderScrollY = () => {
10091
+ return (0, _vue.h)('div', {
10092
+ ref: refScrollYVirtualElem,
10093
+ class: 'vxe-table--scroll-y-virtual'
10094
+ }, [(0, _vue.h)('div', {
10095
+ ref: refScrollYTopCornerElem,
10096
+ class: 'vxe-table--scroll-y-top-corner'
10097
+ }), (0, _vue.h)('div', {
10098
+ ref: refScrollYWrapperElem,
10099
+ class: 'vxe-table--scroll-y-wrapper'
10100
+ }, [(0, _vue.h)('div', {
10101
+ ref: refScrollYHandleElem,
10102
+ class: 'vxe-table--scroll-y-handle',
10103
+ onScroll: $xeTable.triggerVirtualScrollYEvent
10104
+ }, [(0, _vue.h)('div', {
10105
+ ref: refScrollYSpaceElem,
10106
+ class: 'vxe-table--scroll-y-space'
10107
+ })])]), (0, _vue.h)('div', {
10108
+ ref: refScrollYBottomCornerElem,
10109
+ class: 'vxe-table--scroll-y-bottom-corner'
10110
+ })]);
10111
+ };
10112
+ const renderViewport = () => {
10113
+ const {
10114
+ showHeader,
10115
+ showFooter
10116
+ } = props;
10117
+ const {
10118
+ overflowX,
10119
+ tableData,
10120
+ tableColumn,
10121
+ tableGroupColumn,
10122
+ footerTableData,
10123
+ columnStore
10124
+ } = reactData;
10125
+ const {
10126
+ leftList,
10127
+ rightList
10128
+ } = columnStore;
10129
+ return (0, _vue.h)('div', {
10130
+ ref: refTableViewportElem,
10131
+ class: 'vxe-table--viewport-wrapper'
10132
+ }, [(0, _vue.h)('div', {
10133
+ class: 'vxe-table--main-wrapper'
10134
+ }, [
10135
+ /**
10136
+ * 表头
10137
+ */
10138
+ showHeader ? (0, _vue.h)(_header.default, {
10139
+ ref: refTableHeader,
10140
+ tableData,
10141
+ tableColumn,
10142
+ tableGroupColumn
10143
+ }) : renderEmptyElement($xeTable),
10144
+ /**
10145
+ * 表体
10146
+ */
10147
+ (0, _vue.h)(_body.default, {
10148
+ ref: refTableBody,
10149
+ tableData,
10150
+ tableColumn
10151
+ }),
10152
+ /**
10153
+ * 表尾
10154
+ */
10155
+ showFooter ? (0, _vue.h)(_footer.default, {
10156
+ ref: refTableFooter,
10157
+ footerTableData,
10158
+ tableColumn
10159
+ }) : renderEmptyElement($xeTable)]), (0, _vue.h)('div', {
10160
+ class: 'vxe-table--fixed-wrapper'
10161
+ }, [leftList && leftList.length && overflowX ? renderFixed('left') : renderEmptyElement($xeTable), rightList && rightList.length && overflowX ? renderFixed('right') : renderEmptyElement($xeTable)])]);
10162
+ };
10163
+ const renderBody = () => {
10164
+ const scrollbarYToLeft = computeScrollbarYToLeft.value;
10165
+ return (0, _vue.h)('div', {
10166
+ class: 'vxe-table--layout-wrapper'
10167
+ }, scrollbarYToLeft ? [renderScrollY(), renderViewport()] : [renderViewport(), renderScrollY()]);
10168
+ };
10044
10169
  const renderVN = () => {
10045
10170
  const {
10046
10171
  loading,
@@ -10063,11 +10188,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
10063
10188
  overflowY,
10064
10189
  scrollXLoad,
10065
10190
  scrollYLoad,
10066
- scrollbarHeight,
10067
10191
  tableData,
10068
- tableColumn,
10069
- tableGroupColumn,
10070
- footerTableData,
10071
10192
  initStore,
10072
10193
  columnStore,
10073
10194
  filterStore,
@@ -10095,9 +10216,11 @@ var _default = exports.default = (0, _vue.defineComponent)({
10095
10216
  const resizableOpts = computeResizableOpts.value;
10096
10217
  const isArea = mouseConfig && mouseOpts.area;
10097
10218
  const columnDragOpts = computeColumnDragOpts.value;
10219
+ const scrollbarXToTop = computeScrollbarXToTop.value;
10220
+ const scrollbarYToLeft = computeScrollbarYToLeft.value;
10098
10221
  return (0, _vue.h)('div', {
10099
10222
  ref: refElem,
10100
- class: ['vxe-table', 'vxe-table--render-default', `tid_${xID}`, `border--${tableBorder}`, {
10223
+ class: ['vxe-table', 'vxe-table--render-default', `tid_${xID}`, `border--${tableBorder}`, `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`, `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`, {
10101
10224
  [`size--${vSize}`]: vSize,
10102
10225
  [`valid-msg--${validOpts.msgMode}`]: !!editRules,
10103
10226
  'vxe-editable': !!editConfig,
@@ -10140,69 +10263,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
10140
10263
  }, slots.default ? slots.default({}) : []), (0, _vue.h)('div', {
10141
10264
  key: 'tw',
10142
10265
  class: 'vxe-table--render-wrapper'
10143
- }, [(0, _vue.h)('div', {
10144
- ref: refTableViewportElem,
10145
- class: 'vxe-table--viewport-wrapper'
10146
- }, [(0, _vue.h)('div', {
10147
- class: 'vxe-table--main-wrapper'
10148
- }, [
10149
- /**
10150
- * 表头
10151
- */
10152
- showHeader ? (0, _vue.h)(_header.default, {
10153
- ref: refTableHeader,
10154
- tableData,
10155
- tableColumn,
10156
- tableGroupColumn
10157
- }) : renderEmptyElement($xeTable),
10158
- /**
10159
- * 表体
10160
- */
10161
- (0, _vue.h)(_body.default, {
10162
- ref: refTableBody,
10163
- tableData,
10164
- tableColumn
10165
- }),
10166
- /**
10167
- * 表尾
10168
- */
10169
- showFooter ? (0, _vue.h)(_footer.default, {
10170
- ref: refTableFooter,
10171
- footerTableData,
10172
- tableColumn
10173
- }) : renderEmptyElement($xeTable)]), (0, _vue.h)('div', {
10174
- class: 'vxe-table--fixed-wrapper'
10175
- }, [leftList && leftList.length && overflowX ? renderFixed('left') : renderEmptyElement($xeTable), rightList && rightList.length && overflowX ? renderFixed('right') : renderEmptyElement($xeTable)])]), (0, _vue.h)('div', {
10176
- ref: refScrollYVirtualElem,
10177
- class: 'vxe-table--scroll-y-virtual'
10178
- }, [(0, _vue.h)('div', {
10179
- ref: refScrollYTopCornerElem,
10180
- class: 'vxe-table--scroll-y-top-corner'
10181
- }), (0, _vue.h)('div', {
10182
- ref: refScrollYHandleElem,
10183
- class: 'vxe-table--scroll-y-handle',
10184
- onScroll: scrollYEvent
10185
- }, [(0, _vue.h)('div', {
10186
- ref: refScrollYSpaceElem,
10187
- class: 'vxe-table--scroll-y-space'
10188
- })]), (0, _vue.h)('div', {
10189
- ref: refScrollYBottomCornerElem,
10190
- class: 'vxe-table--scroll-y-bottom-corner'
10191
- })])]), (0, _vue.h)('div', {
10192
- key: 'vx',
10193
- ref: refScrollXVirtualElem,
10194
- class: 'vxe-table--scroll-x-virtual'
10195
- }, [(0, _vue.h)('div', {
10196
- ref: refScrollXHandleElem,
10197
- class: 'vxe-table--scroll-x-handle',
10198
- onScroll: scrollXEvent
10199
- }, [(0, _vue.h)('div', {
10200
- ref: refScrollXSpaceElem,
10201
- class: 'vxe-table--scroll-x-space'
10202
- })]), (0, _vue.h)('div', {
10203
- ref: refScrollXRightCornerElem,
10204
- class: 'vxe-table--scroll-x-right-corner'
10205
- })]),
10266
+ }, scrollbarXToTop ? [renderScrollX(), renderBody()] : [renderBody(), renderScrollX()]),
10206
10267
  /**
10207
10268
  * 空数据
10208
10269
  */
@@ -10226,10 +10287,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
10226
10287
  (0, _vue.h)('div', {
10227
10288
  key: 'cl',
10228
10289
  ref: refCellResizeBar,
10229
- class: 'vxe-table--resizable-bar',
10230
- style: overflowX ? {
10231
- 'padding-bottom': `${scrollbarHeight}px`
10232
- } : null
10290
+ class: 'vxe-table--resizable-bar'
10233
10291
  }, resizableOpts.showDragTip ? [(0, _vue.h)('div', {
10234
10292
  ref: refCellResizeTip,
10235
10293
  class: 'vxe-table--resizable-number-tip'
@@ -10401,16 +10459,37 @@ var _default = exports.default = (0, _vue.defineComponent)({
10401
10459
  tableMethods.refreshColumn();
10402
10460
  });
10403
10461
  });
10462
+ const reScrollFlag = (0, _vue.ref)(0);
10463
+ (0, _vue.watch)(computeSize, () => {
10464
+ reScrollFlag.value++;
10465
+ });
10404
10466
  (0, _vue.watch)(() => props.showHeader, () => {
10405
- (0, _vue.nextTick)(() => {
10406
- tableMethods.recalculate(true).then(() => tableMethods.refreshScroll());
10407
- });
10467
+ reScrollFlag.value++;
10408
10468
  });
10409
10469
  (0, _vue.watch)(() => props.showFooter, () => {
10470
+ reScrollFlag.value++;
10471
+ });
10472
+ (0, _vue.watch)(reScrollFlag, () => {
10410
10473
  (0, _vue.nextTick)(() => {
10411
10474
  tableMethods.recalculate(true).then(() => tableMethods.refreshScroll());
10412
10475
  });
10413
10476
  });
10477
+ const reLayoutFlag = (0, _vue.ref)(0);
10478
+ (0, _vue.watch)(() => props.height, () => {
10479
+ reLayoutFlag.value++;
10480
+ });
10481
+ (0, _vue.watch)(() => props.maxHeight, () => {
10482
+ reLayoutFlag.value++;
10483
+ });
10484
+ (0, _vue.watch)(computeScrollbarXToTop, () => {
10485
+ reLayoutFlag.value++;
10486
+ });
10487
+ (0, _vue.watch)(computeScrollbarYToLeft, () => {
10488
+ reLayoutFlag.value++;
10489
+ });
10490
+ (0, _vue.watch)(reLayoutFlag, () => {
10491
+ (0, _vue.nextTick)(() => tableMethods.recalculate(true));
10492
+ });
10414
10493
  const footFlag = (0, _vue.ref)(0);
10415
10494
  (0, _vue.watch)(() => props.footerData ? props.footerData.length : -1, () => {
10416
10495
  footFlag.value++;
@@ -10421,17 +10500,6 @@ var _default = exports.default = (0, _vue.defineComponent)({
10421
10500
  (0, _vue.watch)(footFlag, () => {
10422
10501
  tableMethods.updateFooter();
10423
10502
  });
10424
- (0, _vue.watch)(() => props.height, () => {
10425
- (0, _vue.nextTick)(() => tableMethods.recalculate(true));
10426
- });
10427
- (0, _vue.watch)(() => props.maxHeight, () => {
10428
- (0, _vue.nextTick)(() => tableMethods.recalculate(true));
10429
- });
10430
- (0, _vue.watch)(computeSize, () => {
10431
- (0, _vue.nextTick)(() => {
10432
- tableMethods.recalculate(true).then(() => tableMethods.refreshScroll());
10433
- });
10434
- });
10435
10503
  (0, _vue.watch)(() => props.syncResize, value => {
10436
10504
  if (value) {
10437
10505
  handleUupdateResize();