vxe-table-demonic
Version:
一个基于 vue 的 PC 端表单/表格组件,支持增删改查、虚拟列表、虚拟树、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、弹窗、自定义模板、渲染器、JSON 配置式...
1 lines • 5.35 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_dom=require("../../tools/dom");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var __assign=function(){return(__assign=Object.assign||function(e){for(var t,o=1,l=arguments.length;o<l;o++)for(var r in t=arguments[o])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)},renderType="footer";function mergeFooterMethod(e,t,o){for(var l=0;l<e.length;l++){var r=e[l],n=r.row,a=r.col,c=r.rowspan,r=r.colspan;if(-1<a&&-1<n&&c&&r){if(n===t&&a===o)return{rowspan:c,colspan:r};if(n<=t&&t<n+c&&a<=o&&o<a+r)return{rowspan:0,colspan:0}}}}var _default=(0,_vue.defineComponent)({name:"VxeTableFooter",props:{footerTableData:{type:Array,default:function(){return[]}},tableColumn:{type:Array,default:function(){return[]}},fixedColumn:{type:Array,default:function(){return[]}},fixedType:{type:String,default:null}},setup:function(i){function n(e){var t=i.fixedType,o=u.scrollXLoad,l=s.lastScrollLeft,r=p.value,n=f.value,a=d.value,n=n?n.$el:null,c=x.value,a=a.$el,l=(c=c.scrollLeft)!==l;s.lastScrollLeft=c,u.lastScrollTime=Date.now(),n&&(n.scrollLeft=c),a&&(a.scrollLeft=c),o&&l&&E.triggerScrollXEvent(e),l&&r&&r.reactData.visible&&r.updatePlacement(),E.dispatchEvent("scroll",{type:renderType,fixed:t,scrollTop:a.scrollTop,scrollLeft:c,isX:l,isY:!1},e)}var E=(0,_vue.inject)("$xetable",{}),a=E.xID,c=E.props,u=E.reactData,s=E.internalData,e=E.getRefMaps(),f=e.refTableHeader,d=e.refTableBody,p=e.refValidTooltip,e=E.getComputeMaps(),v=e.computeTooltipOpts,_=e.computeColumnOpts,x=(0,_vue.ref)(),m=(0,_vue.ref)(),g=(0,_vue.ref)(),y=(0,_vue.ref)(),h=(0,_vue.ref)();(0,_vue.onMounted)(function(){(0,_vue.nextTick)(function(){var e=i.fixedType,t=s.elemStore,e="".concat(e||"main","-footer-");t["".concat(e,"wrapper")]=x,t["".concat(e,"table")]=m,t["".concat(e,"colgroup")]=g,t["".concat(e,"list")]=y,t["".concat(e,"xSpace")]=h})}),(0,_vue.onUnmounted)(function(){var e=i.fixedType,t=s.elemStore,e="".concat(e||"main","-footer-");t["".concat(e,"wrapper")]=null,t["".concat(e,"table")]=null,t["".concat(e,"colgroup")]=null,t["".concat(e,"list")]=null,t["".concat(e,"xSpace")]=null});return function(){var w=i.fixedType,e=i.fixedColumn,b=i.tableColumn,T=i.footerTableData,t=c.footerRowClassName,C=c.footerCellClassName,o=c.footerRowStyle,I=c.footerCellStyle,S=c.footerAlign,F=c.footerSpanMethod,$=c.align,D=c.columnKey,L=c.showFooterOverflow,l=s.visibleColumn,M=u.scrollXLoad,O=u.overflowX,r=u.scrollbarWidth,U=u.currentColumn,k=u.mergeFooterList,j=v.value,A=_.value;return w&&(b=u.expandColumn||!M&&!L||k.length&&F?l:e),(0,_vue.h)("div",{ref:x,class:["vxe-table--footer-wrapper",w?"fixed-".concat(w,"--wrapper"):"body--wrapper"],xid:a,onScroll:n},[w?(0,_vue.createCommentVNode)():(0,_vue.h)("div",{ref:h,class:"vxe-body--x-space"}),(0,_vue.h)("table",{ref:m,class:"vxe-table--footer",xid:a,cellspacing:0,cellpadding:0,border:0},[(0,_vue.h)("colgroup",{ref:g},b.map(function(e,t){return(0,_vue.h)("col",{name:e.id,key:t})}).concat(r?[(0,_vue.h)("col",{name:"col_gutter"})]:[])),(0,_vue.h)("tfoot",{ref:y},T.map(function(g,y){var h=y;return(0,_vue.h)("tr",{class:["vxe-footer--row",t?_xeUtils.default.isFunction(t)?t({$table:E,_rowIndex:y,$rowIndex:h,fixed:w,type:renderType}):t:""],style:o?_xeUtils.default.isFunction(o)?o({$table:E,_rowIndex:y,$rowIndex:h,fixed:w,type:renderType}):o:null},b.map(function(t,e){var o=t.type,l=t.showFooterOverflow,r=t.footerAlign,n=t.align,a=t.footerClassName,c=j.showAll,i=t.children&&t.children.length,i=w?t.fixed!==w&&!i:t.fixed&&O,l=_xeUtils.default.isUndefined(l)||_xeUtils.default.isNull(l)?L:l,r=r||n||S||$,n="ellipsis"===l,u="title"===l,s=!0===l||"tooltip"===l,l=u||s||n,f={colid:t.id},d={},p=E.getColumnIndex(t),v=E.getVTColumnIndex(t),_={$table:E,$grid:E.xegrid,_rowIndex:y,$rowIndex:h,column:t,columnIndex:p,$columnIndex:e,_columnIndex:v,itemIndex:v,items:g,fixed:w,type:renderType,data:T};if(M&&!l&&(n=l=!0),(u||s||c)&&(d.onMouseenter=function(e){u?(0,_dom.updateCellTitle)(e.currentTarget,t):(s||c)&&E.triggerFooterTooltipEvent(e,_)}),(s||c)&&(d.onMouseleave=function(e){(s||c)&&E.handleTargetLeaveEvent(e)}),d.onClick=function(e){E.dispatchEvent("footer-cell-click",Object.assign({cell:e.currentTarget},_),e)},d.onDblclick=function(e){E.dispatchEvent("footer-cell-dblclick",Object.assign({cell:e.currentTarget},_),e)},k.length){p=mergeFooterMethod(k,y,v);if(p){var x=p.rowspan,m=p.colspan;if(!x||!m)return null;1<x&&(f.rowspan=x),1<m&&(f.colspan=m)}}else if(F){var v=F(_)||{},p=v.rowspan,x=void 0===p?1:p,p=v.colspan,m=void 0===p?1:p;if(!x||!m)return null;1<x&&(f.rowspan=x),1<m&&(f.colspan=m)}return(0,_vue.h)("td",__assign(__assign(__assign(__assign({class:["vxe-footer--column",t.id,((v={})["col--".concat(r)]=r,v["col--".concat(o)]=o,v["col--last"]=e===b.length-1,v["fixed--hidden"]=i,v["col--ellipsis"]=l,v["col--current"]=U===t,v),(0,_dom.getPropClass)(a,_),(0,_dom.getPropClass)(C,_)]},f),{style:I?_xeUtils.default.isFunction(I)?I(_):I:null}),d),{key:D||A.useKey?t.id:e}),[(0,_vue.h)("div",{class:["vxe-cell",{"c--title":u,"c--tooltip":s,"c--ellipsis":n}]},t.renderFooter(_))])}).concat(r?[(0,_vue.h)("td",{class:"vxe-footer--gutter col--gutter"})]:[]))}))])])}}});exports.default=_default;