vxe-table
Version:
一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟滚动、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、虚拟列表、模态窗口、自定义模板、渲染器、贼灵活的配置项、扩展接口等...
1 lines • 5.83 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _ctor=_interopRequireDefault(require("xe-utils/ctor")),_tools=require("../../tools"),_util=require("./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:"VxeTableHeader",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,o=this.fixedType,r=e.elemStore,n="".concat(o||"main","-header-");r["".concat(n,"wrapper")]=t,r["".concat(n,"table")]=l.table,r["".concat(n,"colgroup")]=l.colgroup,r["".concat(n,"list")]=l.thead,r["".concat(n,"xSpace")]=l.xSpace,r["".concat(n,"repair")]=l.repair},render:function(w){var T=this,e=this._e,$=this.$parent,z=this.fixedType,t=this.headerColumn,l=this.fixedColumn,P=$.$listeners,o=$.tId,S=$.resizable,M=$.border,D=$.columnKey,r=$.headerRowClassName,W=$.headerCellClassName,n=$.headerRowStyle,k=$.headerCellStyle,I=$.showHeaderOverflow,R=$.headerAlign,H=$.align,A=$.highlightCurrentColumn,L=$.currentColumn,E=$.scrollXLoad,O=$.overflowX,i=$.scrollbarWidth,q=$.sortOpts,N=$.mouseConfig,a=this.tableColumn;return E&&z&&(a=l),w("div",{class:["vxe-table--header-wrapper",z?"fixed-".concat(z,"--wrapper"):"body--wrapper"],attrs:{"data-tid":o}},[z?e():w("div",{class:"vxe-body--x-space",ref:"xSpace"}),w("table",{class:"vxe-table--header",attrs:{"data-tid":o,cellspacing:0,cellpadding:0,border:0},ref:"table"},[w("colgroup",{ref:"colgroup"},a.map(function(e,t){return w("col",{attrs:{name:e.id},key:t})}).concat(i?[w("col",{attrs:{name:"col_gutter"}})]:[])),w("thead",{ref:"thead"},t.map(function(C,v){return w("tr",{class:["vxe-header--row",r?_ctor.default.isFunction(r)?r({$table:$,$rowIndex:v,fixed:z,type:cellType}):r:""],style:n?_ctor.default.isFunction(n)?n({$table:$,$rowIndex:v,fixed:z,type:cellType}):n:null},C.map(function(e,t){var l,o=e.type,r=e.showHeaderOverflow,n=e.headerAlign,i=e.align,a=e.headerClassName,s=e.children&&e.children.length,d=z?e.fixed!==z&&!s:e.fixed&&O,c=_ctor.default.isUndefined(r)||_ctor.default.isNull(r)?I:r,u=n||i||R||H,f="ellipsis"===c,p="title"===c,h=!0===c||"tooltip"===c,m=p||h||f,x={},y=e.filters&&e.filters.some(function(e){return e.checked}),g=$.getColumnIndex(e),_=$.getVTColumnIndex(e),b={$table:$,$rowIndex:v,column:e,columnIndex:g,$columnIndex:t,_columnIndex:_,fixed:z,type:cellType,isHidden:d,hasFilter:y};return E&&!m&&(f=m=!0),(A||P["header-cell-click"]||"cell"===q.trigger)&&(x.click=function(e){return $.triggerHeaderCellClickEvent(e,b)}),P["header-cell-dblclick"]&&(x.dblclick=function(e){return $.triggerHeaderCellDBLClickEvent(e,b)}),N&&(x.mousedown=function(e){return $.triggerHeaderCellMousedownEvent(e,b)}),w("th",{class:["vxe-header--column",e.id,(l={},_defineProperty(l,"col--".concat(u),u),_defineProperty(l,"col--".concat(o),o),_defineProperty(l,"col--last",t===C.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,"is--filter",!!e.filters),_defineProperty(l,"filter--active",y),_defineProperty(l,"col--current",L===e),l),_tools.UtilTools.getClass(a,b),_tools.UtilTools.getClass(W,b)],attrs:{"data-colid":e.id,colspan:1<e.colSpan?e.colSpan:null,rowspan:1<e.rowSpan?e.rowSpan:null},style:k?_ctor.default.isFunction(k)?k(b):k:null,on:x,key:D||s?e.id:t},[w("div",{class:["vxe-cell",{"c--title":p,"c--tooltip":h,"c--ellipsis":f}]},e.renderHeader(w,b)),!d&&!s&&(_ctor.default.isBoolean(e.resizable)?e.resizable:S)?w("div",{class:["vxe-resizable",{"is--line":!M||"none"===M}],on:{mousedown:function(e){return T.resizeMousedown(e,b)}}}):null])}).concat(i?[w("th",{class:"col--gutter"})]:[]))}))]),w("div",{class:"vxe-table--header-border-line",ref:"repair"})])},methods:{uploadColumn:function(){var e=this.$parent;this.headerColumn=e.isGroup?(0,_util.convertToRows)(this.tableGroupColumn):[e.scrollXLoad&&this.fixedType?this.fixedColumn:this.tableColumn]},resizeMousedown:function(e,t){var l=t.column,o=this.$parent,r=this.$el,n=this.fixedType,i=o.$refs,a=i.tableBody,s=i.leftContainer,d=i.rightContainer,c=i.resizeBar,u=e.target,f=e.clientX,p=u.parentNode,h=0,m=a.$el,x=_tools.DomTools.getOffsetPos(u,r),y=u.clientWidth,g=Math.floor(y/2),_=_tools.UtilTools.getColMinWidth(o,l)-g,b=x.left-p.clientWidth+y+_,C=x.left+g,v=document.onmousemove,w=document.onmouseup,T="left"===n,$="right"===n,z=0;if(T||$){for(var P=T?"nextElementSibling":"previousElementSibling",S=p[P];S&&!_tools.DomTools.hasClass(S,"fixed--hidden");)_tools.DomTools.hasClass(S,"col--group")||(z+=S.offsetWidth),S=S[P];$&&d&&(C=d.offsetLeft+z)}var M=function(e){e.stopPropagation(),e.preventDefault();var t=e.clientX-f,l=C+t,o=n?0:m.scrollLeft;T?l=Math.min(l,(d?d.offsetLeft:m.clientWidth)-z-_):$?(b=(s?s.clientWidth:0)+z+_,l=Math.min(l,C+p.clientWidth-_)):b=Math.max(m.scrollLeft,b),h=Math.max(l,b),c.style.left="".concat(h-o,"px")};o._isResize=!0,_tools.DomTools.addClass(o.$el,"drag--resize"),c.style.display="block",document.onmousemove=M,document.onmouseup=function(e){document.onmousemove=v,document.onmouseup=w,l.resizeWidth=l.renderWidth+($?C-h:h-C),c.style.display="none",o._isResize=!1,o._lastResizeTime=Date.now(),o.analyColumnWidth(),o.saveCustomResizable(),o.recalculate(!0).then(function(){o.updateCellAreas()}),_tools.DomTools.removeClass(o.$el,"drag--resize"),o.emitEvent("resizable-change",t,e)},M(e),o.closeMenu()}}};exports.default=_default;