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