@blueking/vxe-table
Version:
一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟树、列拖拽,懒加载、快捷菜单、数据校验、树形结构、打印、导入导出、自定义模板、渲染器、JSON 配置式...
1 lines • 5.33 kB
JavaScript
Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_dom=require("../../ui/src/dom");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let{renderer,renderEmptyElement}=_ui.VxeUI,renderType="footer";function mergeFooterMethod(l,t,o){for(let e=0;e<l.length;e++){var{row:r,col:n,rowspan:a,colspan:i}=l[e];if(-1<n&&-1<r&&a&&i){if(r===t&&n===o)return{rowspan:a,colspan:i};if(r<=t&&t<r+a&&n<=o&&o<n+i)return{rowspan:0,colspan:0}}}}var _default=exports.default=(0,_vue.defineComponent)({name:"VxeTableFooter",props:{footerTableData:{type:Array,default:()=>[]},tableColumn:{type:Array,default:()=>[]},fixedColumn:{type:Array,default:()=>[]},fixedType:{type:String,default:null}},setup(v){let R=(0,_vue.inject)("$xeTable",{}),{xID:x,props:m,reactData:_,internalData:N}=R,{computeTooltipOpts:e,computeColumnOpts:X,computeColumnDragOpts:g}=R.getComputeMaps(),h=(0,_vue.ref)(),w=(0,_vue.ref)(),y=(0,_vue.ref)(),b=(0,_vue.ref)(),C=(0,_vue.ref)(),T=(0,_vue.ref)(),F=(g,h,w,y,b)=>{let C=v.fixedType,{footerCellClassName:T,footerCellStyle:F,footerAlign:I,footerSpanMethod:O,align:S,columnKey:M,showFooterOverflow:D}=m,{scrollXLoad:E,scrollYLoad:$,overflowX:k,currentColumn:U,mergeFooterList:j}=_,A=N.scrollXStore,q=e.value,L=X.value;return g.map((l,e)=>{var{type:t,showFooterOverflow:o,footerAlign:r,align:n,footerClassName:a,editRender:i,cellRender:u}=l,i=i||u,u=i?renderer.get(i.name):null;let d=q.showAll;i=l.children&&l.children.length,i=C?l.fixed!==C&&!i:l.fixed&&k,o=_xeUtils.default.eqNull(o)?D:o,r=r||(u?u.tableFooterCellAlign:"")||I||n||(u?u.tableCellAlign:"")||S;let s="ellipsis"===o,c="title"===o,p=!0===o||"tooltip"===o,f=c||p||s;var n={colid:l.id},u={},o=R.getColumnIndex(l),v=R.getVTColumnIndex(l),x=v;let m={$table:R,$grid:R.xegrid,row:w,rowIndex:b,_rowIndex:b,$rowIndex:y,column:l,columnIndex:o,$columnIndex:e,_columnIndex:v,itemIndex:x,items:w,fixed:C,type:renderType,data:h};if(E&&!f&&(s=f=!0),(c||p||d)&&(u.onMouseenter=e=>{c?(0,_dom.updateCellTitle)(e.currentTarget,l):(p||d)&&R.triggerFooterTooltipEvent(e,m)}),(p||d)&&(u.onMouseleave=e=>{(p||d)&&R.handleTargetLeaveEvent(e)}),u.onClick=e=>{R.dispatchEvent("footer-cell-click",Object.assign({cell:e.currentTarget},m),e)},u.onDblclick=e=>{R.dispatchEvent("footer-cell-dblclick",Object.assign({cell:e.currentTarget},m),e)},j.length){o=mergeFooterMethod(j,b,v);if(o){var{rowspan:x,colspan:o}=o;if(!x||!o)return null;1<x&&(n.rowspan=x),1<o&&(n.colspan=o)}}else if(O){var{rowspan:x=1,colspan:o=1}=O(m)||{};if(!x||!o)return null;1<x&&(n.rowspan=x),1<o&&(n.colspan=o)}x=e===g.length-1,o=!l.resizeWidth&&("auto"===l.minWidth||"auto"===l.width);let _=!1;return E&&!l.fixed&&(v<A.visibleStartIndex||v>A.visibleEndIndex)&&(_=!0),(0,_vue.h)("td",Object.assign(Object.assign(Object.assign(Object.assign({class:["vxe-footer--column",l.id,{["col--"+r]:r,["col--"+t]:t,"col--last":x,"fixed--width":!o,"fixed--hidden":i,"col--ellipsis":f,"col--current":U===l},(0,_dom.getPropClass)(a,m),(0,_dom.getPropClass)(T,m)]},n),{style:F?_xeUtils.default.isFunction(F)?F(m):F:null}),u),{key:M||E||$||L.useKey||L.drag?l.id:e}),[(0,_vue.h)("div",{class:["vxe-cell",{"c--title":c,"c--tooltip":p,"c--ellipsis":s}]},_?[]:l.renderFooter(m))])})};return(0,_vue.onMounted)(()=>{(0,_vue.nextTick)(()=>{var e=v.fixedType,l=N.elemStore,e=`${e||"main"}-footer-`;l[e+"wrapper"]=h,l[e+"scroll"]=w,l[e+"table"]=y,l[e+"colgroup"]=b,l[e+"list"]=C,l[e+"xSpace"]=T})}),(0,_vue.onUnmounted)(()=>{var e=v.fixedType,l=N.elemStore,e=`${e||"main"}-footer-`;l[e+"wrapper"]=null,l[e+"scroll"]=null,l[e+"table"]=null,l[e+"colgroup"]=null,l[e+"list"]=null,l[e+"xSpace"]=null}),()=>{let{fixedType:l,fixedColumn:e,tableColumn:t}=v;var{spanMethod:o,footerSpanMethod:r,showFooterOverflow:n}=m,{visibleColumn:a,fullColumnIdData:i}=N,{isGroup:u,scrollXLoad:d,scrollYLoad:s,dragCol:c}=_;let p=t,f=!(d||s||n)||o||r?!1:!0;return l&&(p=a,f)&&(p=e||[]),l||u||d&&c&&2<p.length&&(s=i[c.id])&&(n=s._index,o=p[0],r=p[p.length-1],a=i[o.id],u=i[r.id],a)&&u&&(d=a._index,s=u._index,n<d?p=[c].concat(p):s<n&&(p=p.concat([c]))),(0,_vue.h)("div",{ref:h,class:["vxe-table--footer-wrapper",l?`fixed-${l}--wrapper`:"body--wrapper"],xid:x},[(0,_vue.h)("div",{ref:w,class:"vxe-table--footer-inner-wrapper",onScroll(e){R.triggerFooterScrollEvent(e,l)}},[l?renderEmptyElement(R):(0,_vue.h)("div",{ref:T,class:"vxe-body--x-space"}),(0,_vue.h)("table",{ref:y,class:"vxe-table--footer",xid:x,cellspacing:0,cellpadding:0,border:0},[(0,_vue.h)("colgroup",{ref:b},p.map((e,l)=>(0,_vue.h)("col",{name:e.id,key:l}))),(0,_vue.h)("tfoot",{ref:C},(r=>{let{fixedType:n,footerTableData:a}=v,{footerRowClassName:i,footerRowStyle:u}=m,d=_.isDragColMove,s=X.value,c=g.value;return a.map((e,l)=>{let t=l;var o={$table:R,row:e,_rowIndex:t,$rowIndex:l,fixed:n,type:renderType};return s.drag&&c.animation?(0,_vue.h)(_vue.TransitionGroup,{key:l,name:"vxe-header--col-list"+(d?"":"-disabled"),tag:"tr",class:["vxe-footer--row",i?_xeUtils.default.isFunction(i)?i(o):i:""],style:u?_xeUtils.default.isFunction(u)?u(o):u:null},{default:()=>F(r,a,e,l,t)}):(0,_vue.h)("tr",{key:l,class:["vxe-footer--row",i?_xeUtils.default.isFunction(i)?i(o):i:""],style:u?_xeUtils.default.isFunction(u)?u(o):u:null},F(r,a,e,l,t))})})(p))])])])}}});