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