UNPKG

vhb-table

Version:

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

1 lines 6.25 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")),_util=require("./util"),_util2=require("../../table/src/util");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="header",_default={name:"VhbTableHeader",props:{tableData:Array,tableColumn:Array,tableGroupColumn:Array,fixedColumn:Array,size:String,fixedType:String},data:function(){return{headerColumn:[]}},watch:{tableColumn:function(){this.uploadColumn()}},created:function(){this.uploadColumn()},mounted:function(){var e=this.$parent,t=this.$el,l=this.$refs,r=this.fixedType,i=e.elemStore,n="".concat(r||"main","-header-");i["".concat(n,"wrapper")]=t,i["".concat(n,"table")]=l.table,i["".concat(n,"colgroup")]=l.colgroup,i["".concat(n,"list")]=l.thead,i["".concat(n,"xSpace")]=l.xSpace,i["".concat(n,"repair")]=l.repair},destroyed:function(){var e=this.$parent,t=this.fixedType,l=e.elemStore,r="".concat(t||"main","-header-");l["".concat(r,"wrapper")]=null,l["".concat(r,"table")]=null,l["".concat(r,"colgroup")]=null,l["".concat(r,"list")]=null,l["".concat(r,"xSpace")]=null,l["".concat(r,"repair")]=null},render:function(w){var $=this,e=this._e,z=this.$parent,P=this.fixedType,t=this.headerColumn,l=this.fixedColumn,S=z.$listeners,r=z.tId,i=z.isGroup,T=z.resizable,M=z.border,R=z.columnKey,n=z.headerRowClassName,W=z.headerCellClassName,o=z.headerRowStyle,k=z.headerCellStyle,q=z.showHeaderOverflow,I=z.headerAlign,D=z.align,H=z.highlightCurrentColumn,U=z.currentColumn,A=z.scrollXLoad,O=z.overflowX,a=z.scrollbarWidth,E=z.sortOpts,L=z.mouseConfig,N=z.columnOpts,s=this.tableColumn,d=t;return i||(P&&(A||q)&&(s=l),d=[s]),w("div",{class:["vhb-table--header-wrapper",P?"fixed-".concat(P,"--wrapper"):"body--wrapper"],attrs:{xid:r}},[P?e():w("div",{class:"vhb-body--x-space",ref:"xSpace"}),w("table",{class:"vhb-table--header",attrs:{xid:r,cellspacing:0,cellpadding:0,border:0},ref:"table"},[w("colgroup",{ref:"colgroup"},s.map(function(e,t){return w("col",{attrs:{name:e.id},key:t})}).concat(a?[w("col",{attrs:{name:"col_gutter"}})]:[])),w("thead",{ref:"thead"},d.map(function(v,C){return w("tr",{class:["vhb-header--row",n?_xeUtils.default.isFunction(n)?n({$table:z,$rowIndex:C,fixed:P,type:cellType}):n:""],style:o?_xeUtils.default.isFunction(o)?o({$table:z,$rowIndex:C,fixed:P,type:cellType}):o:null},v.map(function(e,t){var l,r=e.type,i=e.showHeaderOverflow,n=e.headerAlign,o=e.align,a=e.headerClassName,s=e.children&&e.children.length,d=P?e.fixed!==P&&!s:e.fixed&&O,u=_xeUtils.default.isUndefined(i)||_xeUtils.default.isNull(i)?q:i,c=n||o||I||D,f="ellipsis"===u,p="title"===u,h=!0===u||"tooltip"===u,m=p||h||f,b={},y=e.filters&&e.filters.some(function(e){return e.checked}),_=z.getColumnIndex(e),g=z.getVTColumnIndex(e),x={$table:z,$rowIndex:C,column:e,columnIndex:_,$columnIndex:t,_columnIndex:g,fixed:P,type:cellType,isHidden:d,hasFilter:y};return A&&!m&&(f=m=!0),(N.isCurrent||H||S["header-cell-click"]||"cell"===E.trigger)&&(b.click=function(e){return z.triggerHeaderCellClickEvent(e,x)}),S["header-cell-dblclick"]&&(b.dblclick=function(e){return z.triggerHeaderCellDblclickEvent(e,x)}),L&&(b.mousedown=function(e){return z.triggerHeaderCellMousedownEvent(e,x)}),w("th",{class:["vhb-header--column",e.id,(l={},_defineProperty(l,"col--".concat(c),c),_defineProperty(l,"col--".concat(r),r),_defineProperty(l,"col--last",t===v.length-1),_defineProperty(l,"col--fixed",e.fixed),_defineProperty(l,"col--group",s),_defineProperty(l,"col--ellipsis",m),_defineProperty(l,"fixed--hidden",d),_defineProperty(l,"is--sortable",e.sortable),_defineProperty(l,"col--filter",!!e.filters),_defineProperty(l,"is--filter-active",y),_defineProperty(l,"col--current",U===e),l),_utils.default.getClass(a,x),_utils.default.getClass(W,x)],attrs:{colid:e.id,colspan:1<e.colSpan?e.colSpan:null,rowspan:1<e.rowSpan?e.rowSpan:null},style:k?_xeUtils.default.isFunction(k)?k(x):k:null,on:b,key:R||N.useKey||s?e.id:t},[w("div",{class:["vhb-cell",{"c--title":p,"c--tooltip":h,"c--ellipsis":f}]},e.renderHeader(w,x)),d||s||!(_xeUtils.default.isBoolean(e.resizable)?e.resizable:N.resizable||T)?null:w("div",{class:["vhb-resizable",{"is--line":!M||"none"===M}],on:{mousedown:function(e){return $.resizeMousedown(e,x)}}})])}).concat(a?[w("th",{class:"vhb-header--gutter col--gutter"})]:[]))}))]),w("div",{class:"vhb-table--header-border-line",ref:"repair"})])},methods:{uploadColumn:function(){var e=this.$parent;this.headerColumn=e.isGroup?(0,_util.convertToRows)(this.tableGroupColumn):[]},resizeMousedown:function(e,t){var l=t.column,r=this.$parent,i=this.$el,n=this.fixedType,o=r.$refs,a=o.tableBody,s=o.leftContainer,d=o.rightContainer,u=o.resizeBar,c=e.target,f=e.clientX,p=t.cell=c.parentNode,h=0,m=a.$el,b=_dom.default.getOffsetPos(c,i),y=c.clientWidth,_=Math.floor(y/2),g=(0,_util2.getColMinWidth)(t)-_,x=b.left-p.clientWidth+y+g,v=b.left+_,C=document.onmousemove,w=document.onmouseup,$="left"===n,z="right"===n,P=0;if($||z){for(var S=$?"nextElementSibling":"previousElementSibling",T=p[S];T&&!_dom.default.hasClass(T,"fixed--hidden");)_dom.default.hasClass(T,"col--group")||(P+=T.offsetWidth),T=T[S];z&&d&&(v=d.offsetLeft+P)}var M=function(e){e.stopPropagation(),e.preventDefault();var t=e.clientX-f,l=v+t,r=n?0:m.scrollLeft;$?l=Math.min(l,(d?d.offsetLeft:m.clientWidth)-P-g):z?(x=(s?s.clientWidth:0)+P+g,l=Math.min(l,v+p.clientWidth-g)):x=Math.max(m.scrollLeft,x),h=Math.max(l,x),u.style.left="".concat(h-r,"px")};r._isResize=!0,_dom.default.addClass(r.$el,"drag--resize"),u.style.display="block",document.onmousemove=M,document.onmouseup=function(e){document.onmousemove=C,document.onmouseup=w,l.resizeWidth=l.renderWidth+(z?v-h:h-v),u.style.display="none",r._isResize=!1,r._lastResizeTime=Date.now(),r.analyColumnWidth(),r.recalculate(!0).then(function(){r.saveCustomResizable(),r.updateCellAreas(),r.emitEvent("resizable-change",t,e)}),_dom.default.removeClass(r.$el,"drag--resize")},M(e),r.closeMenu()}}};exports.default=_default;