UNPKG

vxe-table

Version:

一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟树、拖拽排序,懒加载、快捷菜单、数据校验、树形结构、打印、导入导出、自定义模板、渲染器、JSON 配置式...

1 lines 6.03 kB
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"),_util=require("./util");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let{renderer,renderEmptyElement}=_ui.VxeUI,renderType="footer";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(m){let Z=(0,_vue.inject)("$xeTable",{}),{xID:g,props:_,reactData:h,internalData:b}=Z,{computeTooltipOpts:l,computeColumnOpts:y,computeColumnDragOpts:w,computeCellOpts:t,computeFooterCellOpts:o,computeDefaultRowHeight:r,computeResizableOpts:i,computeVirtualXOpts:a}=Z.getComputeMaps(),C=(0,_vue.ref)(),T=(0,_vue.ref)(),O=(0,_vue.ref)(),D=(0,_vue.ref)(),F=(0,_vue.ref)(),I=(0,_vue.ref)(),S=(w,C,T,O,D)=>{let F=Z.xeGrid,I=m.fixedType,{resizable:S,border:E,footerCellClassName:M,footerCellStyle:k,footerAlign:z,footerSpanMethod:U,align:R,columnKey:$,showFooterOverflow:A}=_,{scrollXLoad:j,scrollYLoad:q,overflowX:L,currentColumn:X}=h,{fullColumnIdData:N,mergeFooterList:G,mergeFooterCellMaps:H,scrollXStore:P}=b,V=a.value,W=l.value;let B=i.value.isAllColumnDrag,K=y.value;var e=r.value;let Y=t.value,J=o.value,Q=(0,_util.getCellHeight)(J.height||Y.height)||e;return w.map((l,e)=>{var{type:t,showFooterOverflow:o,footerAlign:r,align:i,footerClassName:a,editRender:n,cellRender:u}=l,d=l.id,s=N[d]||{},n=n||u,u=n?renderer.get(n.name):null;let c=W.showAll;var n=l.children&&l.children.length,n=I?l.fixed!==I&&!n:l.fixed&&L,p=(_xeUtils.default.isBoolean(J.padding)?J:Y).padding,o=_xeUtils.default.eqNull(o)?A:o,r=r||(u?u.tableFooterCellAlign:"")||z||i||(u?u.tableCellAlign:"")||R;let f="ellipsis"===o,v="title"===o,x=!0===o||"tooltip"===o,m=v||x||f;var i=_xeUtils.default.isBoolean(l.resizable)?l.resizable:K.resizable||S,u={colid:d},o={},g=s.index,s=s._index,_=s;let h={$table:Z,$grid:F,row:T,rowIndex:D,_rowIndex:D,$rowIndex:O,column:l,columnIndex:g,$columnIndex:e,_columnIndex:s,itemIndex:_,items:T,fixed:I,type:renderType,data:C},b=(j&&!m&&(f=m=!0),(v||x||c)&&(o.onMouseenter=e=>{v?(0,_dom.updateCellTitle)(e.currentTarget,l):(x||c)&&Z.triggerFooterTooltipEvent(e,h)}),(x||c)&&(o.onMouseleave=e=>{(x||c)&&Z.handleTargetLeaveEvent(e)}),o.onClick=e=>{Z.dispatchEvent("footer-cell-click",Object.assign({cell:e.currentTarget},h),e)},!(o.onDblclick=e=>{Z.dispatchEvent("footer-cell-dblclick",Object.assign({cell:e.currentTarget},h),e)}));if(G.length){g=H[D+":"+s];if(g){var{rowspan:_,colspan:g}=g;if(!_||!g)return null;1<_&&(b=!0,u.rowspan=_),1<g&&(b=!0,u.colspan=g)}}else if(U){var{rowspan:_=1,colspan:g=1}=U(h)||{};if(!_||!g)return null;1<_&&(u.rowspan=_),1<g&&(u.colspan=g)}_=e===w.length-1,g=!l.resizeWidth&&("auto"===l.minWidth||"auto"===l.width);let y=!1;b||j&&!l.fixed&&!V.immediate&&(s<P.visibleStartIndex-P.preloadSize||s>P.visibleEndIndex+P.preloadSize)&&(y=!0);s={};return m?s.height=Q+"px":s.minHeight=Q+"px",(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":_,"fixed--width":!g,"fixed--hidden":n,"is--padding":p,"col--ellipsis":m,"col--current":X===l},(0,_dom.getPropClass)(a,h),(0,_dom.getPropClass)(M,h)]},u),{style:k?_xeUtils.default.isFunction(k)?k(h):k:null}),o),{key:$||j||q||K.useKey||K.drag?l.id:e}),[(0,_vue.h)("div",{class:["vxe-cell",{"c--title":v,"c--tooltip":x,"c--ellipsis":f}],style:s},y?[]:[(0,_vue.h)("div",{colid:d,class:"vxe-cell--wrapper"},l.renderFooter(h))]),!n&&i&&B?(0,_vue.h)("div",{class:["vxe-cell--col-resizable",{"is--line":!E||"none"===E}],onMousedown:e=>Z.handleColResizeMousedownEvent(e,I,h),onDblclick:e=>Z.handleColResizeDblclickEvent(e,h)}):renderEmptyElement(Z)])})};return(0,_vue.onMounted)(()=>{(0,_vue.nextTick)(()=>{var e=m.fixedType,l=b.elemStore,e=`${e||"main"}-footer-`;l[e+"wrapper"]=C,l[e+"scroll"]=T,l[e+"table"]=O,l[e+"colgroup"]=D,l[e+"list"]=F,l[e+"xSpace"]=I})}),(0,_vue.onUnmounted)(()=>{var e=m.fixedType,l=b.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}=m;var{spanMethod:o,footerSpanMethod:r,showFooterOverflow:i}=_,{visibleColumn:a,fullColumnIdData:n}=b,{isGroup:u,isColLoading:d,overflowX:s,scrollXLoad:c,scrollYLoad:p,dragCol:f}=h;let v=t,x=!(c||p||i)||o||r?!1:!0;return d||!l&&s||(v=a),l&&x&&(v=e||[]),l||u||c&&f&&2<v.length&&(p=n[f.id])&&(i=p._index,o=v[0],r=v[v.length-1],d=n[o.id],s=n[r.id],d)&&s&&(a=d._index,u=s._index,i<a?v=[f].concat(v):u<i&&(v=v.concat([f]))),(0,_vue.h)("div",{ref:C,class:["vxe-table--footer-wrapper",l?`fixed-${l}--wrapper`:"body--wrapper"],xid:g},[(0,_vue.h)("div",{ref:T,class:"vxe-table--footer-inner-wrapper",onScroll(e){Z.triggerFooterScrollEvent(e,l)}},[l?renderEmptyElement(Z):(0,_vue.h)("div",{ref:I,class:"vxe-body--x-space"}),(0,_vue.h)("table",{ref:O,class:"vxe-table--footer",xid:g,cellspacing:0,cellpadding:0,border:0},[(0,_vue.h)("colgroup",{ref:D},v.map((e,l)=>(0,_vue.h)("col",{name:e.id,key:l,style:{width:e.renderWidth+"px"}}))),(0,_vue.h)("tfoot",{ref:F},(r=>{let{fixedType:i,footerTableData:a}=m,{footerRowClassName:n,footerRowStyle:u}=_,{isColLoading:d,isDragColMove:s}=h,c=y.value,p=w.value;return a.map((e,l)=>{let t=l;var o={$table:Z,row:e,_rowIndex:t,$rowIndex:l,fixed:i,type:renderType};return!d&&c.drag&&p.animation?(0,_vue.h)(_vue.TransitionGroup,{key:l,name:"vxe-header--col-list"+(s?"":"-disabled"),tag:"tr",class:["vxe-footer--row",n?_xeUtils.default.isFunction(n)?n(o):n:""],style:u?_xeUtils.default.isFunction(u)?u(o):u:null},{default:()=>S(r,a,e,l,t)}):(0,_vue.h)("tr",{key:l,class:["vxe-footer--row",n?_xeUtils.default.isFunction(n)?n(o):n:""],style:u?_xeUtils.default.isFunction(u)?u(o):u:null},S(r,a,e,l,t))})})(v))])])])}}});