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