yw-common-list
Version:
基于vxe-table封装的自定义可配置表格
1 lines • 6.91 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 ownKeys(t,e){var r,l=Object.keys(t);return Object.getOwnPropertySymbols&&(r=Object.getOwnPropertySymbols(t),e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),l.push.apply(l,r)),l}function _objectSpread(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?ownKeys(Object(r),!0).forEach(function(e){_defineProperty(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function _defineProperty(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,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,r=this.$refs,l=this.fixedType,e=e.elemStore,l="".concat(l||"main","-header-");e["".concat(l,"wrapper")]=t,e["".concat(l,"table")]=r.table,e["".concat(l,"colgroup")]=r.colgroup,e["".concat(l,"list")]=r.thead,e["".concat(l,"xSpace")]=r.xSpace,e["".concat(l,"repair")]=r.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(x){var g=this,e=this._e,_=this.$parent,v=this.fixedType,t=this.headerColumn,r=this.fixedColumn,C=_.$listeners,l=_.tId,n=_.isGroup,w=_.resizable,P=_.border,O=_.columnKey,o=_.headerRowClassName,S=_.headerCellClassName,i=_.headerRowStyle,$=_.headerCellStyle,z=_.showHeaderOverflow,j=_.headerAlign,T=_.align,D=_.highlightCurrentColumn,M=_.currentColumn,W=_.scrollXLoad,k=_.overflowX,a=_.scrollbarWidth,R=_.sortOpts,q=_.mouseConfig,I=_.columnOpts,s=this.tableColumn;return n||(t=[s=v&&(W||z)?r:s]),x("div",{class:["vxe-table--header-wrapper",v?"fixed-".concat(v,"--wrapper"):"body--wrapper"],attrs:{xid:l}},[v?e():x("div",{class:"vxe-body--x-space",ref:"xSpace"}),x("table",{class:"vxe-table--header",attrs:{xid:l,cellspacing:0,cellpadding:0,border:0},ref:"table"},[x("colgroup",{ref:"colgroup"},s.map(function(e,t){return x("col",{attrs:{name:e.id},key:t})}).concat(a?[x("col",{attrs:{name:"col_gutter"}})]:[])),x("thead",{ref:"thead"},t.map(function(y,b){return x("tr",{class:["vxe-header--row",o?_xeUtils.default.isFunction(o)?o({$table:_,$rowIndex:b,fixed:v,type:cellType}):o:""],style:i?_xeUtils.default.isFunction(i)?i({$table:_,$rowIndex:b,fixed:v,type:cellType}):i:null},y.map(function(e,t){var r=e.type,l=e.showHeaderOverflow,n=e.headerAlign,o=e.align,i=e.headerClassName,a=e.children&&e.children.length,s=v?e.fixed!==v&&!a:e.fixed&&k,l=_xeUtils.default.isUndefined(l)||_xeUtils.default.isNull(l)?z:l,n=n||o||j||T,o="ellipsis"===l,c="title"===l,l=!0===l||"tooltip"===l,u=c||l||o,d={},f=e.filters&&e.filters.some(function(e){return e.checked}),p=_.getColumnIndex(e),h=_.getVTColumnIndex(e),m={$table:_,$rowIndex:b,column:e,columnIndex:p,$columnIndex:t,_columnIndex:h,fixed:v,type:cellType,isHidden:s,hasFilter:f};return W&&!u&&(o=u=!0),(I.isCurrent||D||C["header-cell-click"]||"cell"===R.trigger)&&(d.click=function(e){return _.triggerHeaderCellClickEvent(e,m)}),C["header-cell-dblclick"]&&(d.dblclick=function(e){return _.triggerHeaderCellDblclickEvent(e,m)}),q&&(d.mousedown=function(e){return _.triggerHeaderCellMousedownEvent(e,m)}),x("th",{class:["vxe-header--column",e.id,(_defineProperty(p={},"col--".concat(n),n),_defineProperty(p,"col--".concat(r),r),_defineProperty(p,"col--last",t===y.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",M===e),p),_utils.default.getClass(i,m),_utils.default.getClass(S,m)],attrs:{colid:e.id,colspan:1<e.colSpan?e.colSpan:null,rowspan:1<e.rowSpan?e.rowSpan:null},style:$?_xeUtils.default.isFunction($)?$(m):$:null,on:d,key:O||I.useKey||a?e.id:t},[x("div",{class:["vxe-cell",{"c--title":c,"c--tooltip":l,"c--ellipsis":o}]},e.renderHeader(x,m)),s||a||!(_xeUtils.default.isBoolean(e.resizable)?e.resizable:I.resizable||w)?null:x("div",{class:["vxe-resizable",{"is--line":!P||"none"===P}],on:{mousedown:function(e){return g.resizeMousedown(e,m)}}})])}).concat(a?[x("th",{class:"vxe-header--gutter col--gutter"})]:[]))}))]),x("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,r){var l=r.column,n=this.$parent,t=this.$el,o=this.fixedType,i=n.$refs,a=i.tableBody,s=i.leftContainer,c=i.rightContainer,u=i.resizeBar,i=e.target,d=e.clientX,f=r.cell=i.parentNode,p=0,h=a.$el,a=_dom.default.getOffsetPos(i,t),t=i.clientWidth,i=Math.floor(t/2),m=(0,_util2.getColMinWidth)(r)-i,y=a.left-f.clientWidth+t+m,b=a.left+i,x=document.onmousemove,g=document.onmouseup,_="left"===o,v="right"===o,C=0;if(_||v){for(var w=_?"nextElementSibling":"previousElementSibling",P=f[w];P&&!_dom.default.hasClass(P,"fixed--hidden");)_dom.default.hasClass(P,"col--group")||(C+=P.offsetWidth),P=P[w];v&&c&&(b=c.offsetLeft+C)}function O(e){e.stopPropagation(),e.preventDefault();var e=e.clientX-d,e=b+e,t=o?0:h.scrollLeft;_?e=Math.min(e,(c?c.offsetLeft:h.clientWidth)-C-m):v?(y=(s?s.clientWidth:0)+C+m,e=Math.min(e,b+f.clientWidth-m)):y=Math.max(h.scrollLeft,y),p=Math.max(e,y),u.style.left="".concat(p-t,"px")}n._isResize=!0,_dom.default.addClass(n.$el,"drag--resize"),u.style.display="block",document.onmousemove=O,document.onmouseup=function(e){document.onmousemove=x,document.onmouseup=g;var t=l.renderWidth+(v?b-p:p-b);l.resizeWidth=t,u.style.display="none",n._isResize=!1,n._lastResizeTime=Date.now(),n.analyColumnWidth(),n.recalculate(!0).then(function(){n.saveCustomResizable(),n.updateCellAreas(),n.emitEvent("resizable-change",_objectSpread(_objectSpread({},r),{},{resizeWidth:t}),e)}),_dom.default.removeClass(n.$el,"drag--resize")},O(e),n.closeMenu()}}};exports.default=_default;