UNPKG

vxe-table

Version:

A PC-end table component based on Vxe UI, supporting copy-paste, data pivot table, and high-performance virtual list table solution.

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