UNPKG

vxe-table-ro-test

Version:

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

1 lines 4.92 kB
"use strict";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}}const renderer=_ui.VxeUI["renderer"],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(s){const q=(0,_vue.inject)("$xeTable",{}),{xID:n,props:a,reactData:u,internalData:c}=q,{refTableHeader:d,refTableBody:p,refValidTooltip:f}=q.getRefMaps(),{computeTooltipOpts:i,computeColumnOpts:v}=q.getComputeMaps(),x=(0,_vue.ref)(),m=(0,_vue.ref)(),g=(0,_vue.ref)(),_=(0,_vue.ref)(),b=(0,_vue.ref)(),R=e=>{var l=s["fixedType"],t=u["scrollXLoad"],o=c["lastScrollLeft"],r=f.value,n=d.value,a=p.value,n=n?n.$el:null,i=x.value,a=a.$el,i=i.scrollLeft,o=i!==o;c.lastScrollLeft=i,u.lastScrollTime=Date.now(),n&&(n.scrollLeft=i),a&&(a.scrollLeft=i),t&&o&&q.triggerScrollXEvent(e),o&&r&&r.reactData.visible&&r.updatePlacement(),q.dispatchEvent("scroll",{type:renderType,fixed:l,scrollTop:a.scrollTop,scrollLeft:i,isX:o,isY:!1},e)};(0,_vue.onMounted)(()=>{(0,_vue.nextTick)(()=>{var e=s["fixedType"],l=c["elemStore"],e=`${e||"main"}-footer-`;l[e+"wrapper"]=x,l[e+"table"]=m,l[e+"colgroup"]=g,l[e+"list"]=_,l[e+"xSpace"]=b})}),(0,_vue.onUnmounted)(()=>{var e=s["fixedType"],l=c["elemStore"],e=`${e||"main"}-footer-`;l[e+"wrapper"]=null,l[e+"table"]=null,l[e+"colgroup"]=null,l[e+"list"]=null,l[e+"xSpace"]=null});return()=>{let{fixedType:y,fixedColumn:e,tableColumn:h,footerTableData:w}=s;const{footerRowClassName:l,footerCellClassName:T,footerRowStyle:t,footerCellStyle:C,footerAlign:I,footerSpanMethod:S,align:F,columnKey:$,showFooterOverflow:O}=a;var o=c["visibleColumn"];const{scrollXLoad:D,overflowX:L,scrollbarWidth:r,currentColumn:M,mergeFooterList:j}=u,A=i.value,k=v.value;return y&&(h=u.expandColumn||!D&&!O||j.length&&S?o:e),(0,_vue.h)("div",{ref:x,class:["vxe-table--footer-wrapper",y?`fixed-${y}--wrapper`:"body--wrapper"],xid:n,onScroll:R},[y?(0,_vue.createCommentVNode)():(0,_vue.h)("div",{ref:b,class:"vxe-body--x-space"}),(0,_vue.h)("table",{ref:m,class:"vxe-table--footer",xid:n,cellspacing:0,cellpadding:0,border:0},[(0,_vue.h)("colgroup",{ref:g},h.map((e,l)=>(0,_vue.h)("col",{name:e.id,key:l})).concat(r?[(0,_vue.h)("col",{name:"col_gutter"})]:[])),(0,_vue.h)("tfoot",{ref:_},w.map((g,_)=>{const b=_;var e={$table:q,row:g,_rowIndex:_,$rowIndex:b,fixed:y,type:renderType};return(0,_vue.h)("tr",{class:["vxe-footer--row",l?_xeUtils.default.isFunction(l)?l(e):l:""],style:t?_xeUtils.default.isFunction(t)?t(e):t:null},h.map((l,e)=>{var{type:t,showFooterOverflow:o,footerAlign:r,align:n,footerClassName:a,editRender:i,cellRender:s}=l,i=i||s,s=i?renderer.get(i.name):null;const u=A.showAll;i=l.children&&l.children.length,i=y?l.fixed!==y&&!i:l.fixed&&L,o=_xeUtils.default.eqNull(o)?O:o,r=r||(s?s.tableFooterCellAlign:"")||I||n||(s?s.tableCellAlign:"")||F;let c="ellipsis"===o;const d="title"===o,p=!0===o||"tooltip"===o;let f=d||p||c;var n={colid:l.id},s={},o=q.getColumnIndex(l),v=q.getVTColumnIndex(l),x=v;const m={$table:q,$grid:q.xegrid,row:g,rowIndex:_,_rowIndex:_,$rowIndex:b,column:l,columnIndex:o,$columnIndex:e,_columnIndex:v,itemIndex:x,items:g,fixed:y,type:renderType,data:w};if(D&&!f&&(c=f=!0),(d||p||u)&&(s.onMouseenter=e=>{d?(0,_dom.updateCellTitle)(e.currentTarget,l):(p||u)&&q.triggerFooterTooltipEvent(e,m)}),(p||u)&&(s.onMouseleave=e=>{(p||u)&&q.handleTargetLeaveEvent(e)}),s.onClick=e=>{q.dispatchEvent("footer-cell-click",Object.assign({cell:e.currentTarget},m),e)},s.onDblclick=e=>{q.dispatchEvent("footer-cell-dblclick",Object.assign({cell:e.currentTarget},m),e)},j.length){o=mergeFooterMethod(j,_,v);if(o){var{rowspan:x,colspan:v}=o;if(!x||!v)return null;1<x&&(n.rowspan=x),1<v&&(n.colspan=v)}}else if(S){var{rowspan:o=1,colspan:x=1}=S(m)||{};if(!o||!x)return null;1<o&&(n.rowspan=o),1<x&&(n.colspan=x)}return(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":e===h.length-1,"fixed--hidden":i,"col--ellipsis":f,"col--current":M===l},(0,_dom.getPropClass)(a,m),(0,_dom.getPropClass)(T,m)]},n),{style:C?_xeUtils.default.isFunction(C)?C(m):C:null}),s),{key:$||k.useKey?l.id:e}),[(0,_vue.h)("div",{class:["vxe-cell",{"c--title":d,"c--tooltip":p,"c--ellipsis":c}]},l.renderFooter(m))])}).concat(r?[(0,_vue.h)("td",{class:"vxe-footer--gutter col--gutter"})]:[]))}))])])}}});