UNPKG

vhb-table

Version:

一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟列表、虚拟树、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、弹窗、自定义模板、渲染器、贼灵活的配置项、扩展接口等...

1 lines 5.07 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _xeUtils=_interopRequireDefault(require("xe-utils")),_utils=_interopRequireDefault(require("../../tools/utils")),_dom=_interopRequireDefault(require("../../tools/dom"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _defineProperty(e,t,l){return t in e?Object.defineProperty(e,t,{value:l,enumerable:!0,configurable:!0,writable:!0}):e[t]=l,e}var cellType="footer";function mergeFooterMethod(e,t,l){for(var o=0;o<e.length;o++){var r=e[o],n=r.row,i=r.col,a=r.rowspan,c=r.colspan;if(-1<i&&-1<n&&a&&c){if(n===t&&i===l)return{rowspan:a,colspan:c};if(n<=t&&t<n+a&&i<=l&&l<i+c)return{rowspan:0,colspan:0}}}}var _default={name:"VhbTableFooter",props:{footerTableData:Array,tableColumn:Array,fixedColumn:Array,fixedType:String,size:String},mounted:function(){var e=this.$parent,t=this.$el,l=this.$refs,o=this.fixedType,r=e.elemStore,n="".concat(o||"main","-footer-");r["".concat(n,"wrapper")]=t,r["".concat(n,"table")]=l.table,r["".concat(n,"colgroup")]=l.colgroup,r["".concat(n,"list")]=l.tfoot,r["".concat(n,"xSpace")]=l.xSpace},destroyed:function(){var e=this.$parent,t=this.fixedType,l=e.elemStore,o="".concat(t||"main","-footer-");l["".concat(o,"wrapper")]=null,l["".concat(o,"table")]=null,l["".concat(o,"colgroup")]=null,l["".concat(o,"list")]=null,l["".concat(o,"xSpace")]=null},render:function(O){var e=this._e,q=this.$parent,D=this.fixedType,t=this.fixedColumn,U=this.tableColumn,A=this.footerTableData,R=q.$listeners,l=q.tId,o=q.footerRowClassName,M=q.footerCellClassName,r=q.footerRowStyle,X=q.footerCellStyle,j=q.footerAlign,N=q.mergeFooterList,K=q.footerSpanMethod,V=q.align,z=q.scrollXLoad,B=q.columnKey,H=q.columnOpts,W=q.showFooterOverflow,Y=q.currentColumn,G=q.overflowX,n=q.scrollbarWidth,J=q.tooltipOpts,i=q.visibleColumn;return D&&(U=z||W?N.length&&K?i:t:i),O("div",{class:["vhb-table--footer-wrapper",D?"fixed-".concat(D,"--wrapper"):"body--wrapper"],attrs:{xid:l},on:{scroll:this.scrollEvent}},[D?e():O("div",{class:"vhb-body--x-space",ref:"xSpace"}),O("table",{class:"vhb-table--footer",attrs:{xid:l,cellspacing:0,cellpadding:0,border:0},ref:"table"},[O("colgroup",{ref:"colgroup"},U.map(function(e,t){return O("col",{attrs:{name:e.id},key:t})}).concat(n?[O("col",{attrs:{name:"col_gutter"}})]:[])),O("tfoot",{ref:"tfoot"},A.map(function(P,k){var E=k;return O("tr",{class:["vhb-footer--row",o?_xeUtils.default.isFunction(o)?o({$table:q,_rowIndex:k,$rowIndex:E,fixed:D,type:cellType}):o:""],style:r?_xeUtils.default.isFunction(r)?r({$table:q,_rowIndex:k,$rowIndex:E,fixed:D,type:cellType}):r:null},U.map(function(t,e){var l,o=t.type,r=t.showFooterOverflow,n=t.footerAlign,i=t.align,a=t.footerClassName,c=J.showAll||J.enabled,s=t.children&&t.children.length,u=D?t.fixed!==D&&!s:t.fixed&&G,f=_xeUtils.default.isUndefined(r)||_xeUtils.default.isNull(r)?W:r,d=n||i||j||V,p="ellipsis"===f,m="title"===f,v=!0===f||"tooltip"===f,x=m||v||p,b={colid:t.id},h={},g=q.getColumnIndex(t),y=q.getVTColumnIndex(t),_={$table:q,_rowIndex:k,$rowIndex:E,column:t,columnIndex:g,$columnIndex:e,_columnIndex:y,itemIndex:y,items:P,fixed:D,type:cellType,data:A};if(z&&!x&&(p=x=!0),(m||v||c)&&(h.mouseenter=function(e){m?_dom.default.updateCellTitle(e.currentTarget,t):(v||c)&&q.triggerFooterTooltipEvent(e,_)}),(v||c)&&(h.mouseleave=function(e){(v||c)&&q.handleTargetLeaveEvent(e)}),R["footer-cell-click"]&&(h.click=function(e){q.emitEvent("footer-cell-click",Object.assign({cell:e.currentTarget},_),e)}),R["footer-cell-dblclick"]&&(h.dblclick=function(e){q.emitEvent("footer-cell-dblclick",Object.assign({cell:e.currentTarget},_),e)}),N.length){var w=mergeFooterMethod(N,k,y);if(w){var T=w.rowspan,$=w.colspan;if(!T||!$)return null;1<T&&(b.rowspan=T),1<$&&(b.colspan=$)}}else if(K){var C=K(_)||{},S=C.rowspan,I=void 0===S?1:S,F=C.colspan,L=void 0===F?1:F;if(!I||!L)return null;1<I&&(b.rowspan=I),1<L&&(b.colspan=L)}return O("td",{class:["vhb-footer--column",t.id,(l={},_defineProperty(l,"col--".concat(d),d),_defineProperty(l,"col--".concat(o),o),_defineProperty(l,"col--last",e===U.length-1),_defineProperty(l,"fixed--hidden",u),_defineProperty(l,"col--ellipsis",x),_defineProperty(l,"col--current",Y===t),l),_utils.default.getClass(a,_),_utils.default.getClass(M,_)],attrs:b,style:X?_xeUtils.default.isFunction(X)?X(_):X:null,on:h,key:B||H.useKey?t.id:e},[O("div",{class:["vhb-cell",{"c--title":m,"c--tooltip":v,"c--ellipsis":p}]},t.renderFooter(O,_))])}).concat(n?[O("td",{class:"vhb-footer--gutter col--gutter"})]:[]))}))])])},methods:{scrollEvent:function(e){var t=this.$parent,l=this.fixedType,o=t.$refs,r=t.scrollXLoad,n=t.triggerScrollXEvent,i=t.lastScrollLeft,a=o.tableHeader,c=o.tableBody,s=o.tableFooter,u=o.validTip,f=a?a.$el:null,d=s?s.$el:null,p=c.$el,m=d?d.scrollLeft:0,v=m!==i;t.lastScrollLeft=m,t.lastScrollTime=Date.now(),f&&(f.scrollLeft=m),p&&(p.scrollLeft=m),r&&v&&n(e),v&&u&&u.visible&&u.updatePlacement(),t.emitEvent("scroll",{type:cellType,fixed:l,scrollTop:p.scrollTop,scrollLeft:m,isX:v,isY:!1},e)}}};exports.default=_default;