vxe-table-demonic
Version:
一个基于 vue 的 PC 端表单/表格组件,支持增删改查、虚拟列表、虚拟树、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、弹窗、自定义模板、渲染器、JSON 配置式...
1 lines • 6.27 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_util=require("./util"),_util2=require("../../table/src/util"),_dom=require("../../tools/dom");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var __assign=function(){return(__assign=Object.assign||function(e){for(var t,l=1,n=arguments.length;l<n;l++)for(var r in t=arguments[l])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)},renderType="header",_default=(0,_vue.defineComponent)({name:"VxeTableHeader",props:{tableData:Array,tableColumn:Array,tableGroupColumn:Array,fixedColumn:Array,fixedType:{type:String,default:null}},setup:function(U){function l(){var e=I.isGroup;d.value=e?(0,_util.convertToRows)(U.tableGroupColumn):[]}function $(e,l){var n=l.column,r=U.fixedType,t=R.value,a=S.value,o=D.value,i=W.value,u=e.clientX,s=O.value,c=e.target,d=l.cell=c.parentNode,f=0,p=t.$el,t=(0,_dom.getOffsetPos)(c,s),s=c.clientWidth,c=Math.floor(s/2),v=(0,_util2.getColReMinWidth)(l)-c,m=t.left-d.clientWidth+s+v,_=t.left+c,h=document.onmousemove,x=document.onmouseup,g="left"===r,b="right"===r,y=T.value,C=0;if(g||b){for(var w=g?"nextElementSibling":"previousElementSibling",M=d[w];M&&!(0,_dom.hasClass)(M,"fixed--hidden");)(0,_dom.hasClass)(M,"col--group")||(C+=M.offsetWidth),M=M[w];b&&o&&(_=o.offsetLeft+C)}function z(e){e.stopPropagation(),e.preventDefault();var e=e.clientX-u,e=_+e,t=r?0:p.scrollLeft;g?e=Math.min(e,(o?o.offsetLeft:p.clientWidth)-C-v):b?(m=(a?a.clientWidth:0)+C+v,e=Math.min(e,_+d.clientWidth-v)):m=Math.max(p.scrollLeft,m),f=Math.max(e,m),i.style.left="".concat(f-t,"px")}I._isResize=!0,(0,_dom.addClass)(y,"drag--resize"),i.style.display="block",document.onmousemove=z,document.onmouseup=function(e){document.onmousemove=h,document.onmouseup=x;var t=n.renderWidth+(b?_-f:f-_);n.resizeWidth=t,i.style.display="none",I._isResize=!1,H._lastResizeTime=Date.now(),k.analyColumnWidth(),k.recalculate(!0).then(function(){k.saveCustomResizable(),k.updateCellAreas(),k.dispatchEvent("resizable-change",__assign(__assign({},l),{resizeWidth:t}),e)}),(0,_dom.removeClass)(y,"drag--resize")},z(e),k.closeMenu&&k.closeMenu()}var k=(0,_vue.inject)("$xetable",{}),u=k.xID,s=k.props,I=k.reactData,H=k.internalData,e=k.getRefMaps(),T=e.refElem,R=e.refTableBody,S=e.refLeftContainer,D=e.refRightContainer,W=e.refCellResizeBar,c=k.getComputeMaps().computeColumnOpts,d=(0,_vue.ref)([]),O=(0,_vue.ref)(),f=(0,_vue.ref)(),p=(0,_vue.ref)(),v=(0,_vue.ref)(),m=(0,_vue.ref)(),_=(0,_vue.ref)();(0,_vue.watch)(function(){return U.tableColumn},l),(0,_vue.onMounted)(function(){(0,_vue.nextTick)(function(){var e=U.fixedType,t=k.internalData.elemStore,e="".concat(e||"main","-header-");t["".concat(e,"wrapper")]=O,t["".concat(e,"table")]=f,t["".concat(e,"colgroup")]=p,t["".concat(e,"list")]=v,t["".concat(e,"xSpace")]=m,t["".concat(e,"repair")]=_,l()})}),(0,_vue.onUnmounted)(function(){var e=U.fixedType,t=k.internalData.elemStore,e="".concat(e||"main","-header-");t["".concat(e,"wrapper")]=null,t["".concat(e,"table")]=null,t["".concat(e,"colgroup")]=null,t["".concat(e,"list")]=null,t["".concat(e,"xSpace")]=null,t["".concat(e,"repair")]=null});return function(){var h=U.fixedType,e=U.fixedColumn,t=U.tableColumn,x=s.resizable,g=s.border,b=s.columnKey,l=s.headerRowClassName,y=s.headerCellClassName,n=s.headerRowStyle,C=s.headerCellStyle,w=s.showHeaderOverflow,M=s.headerAlign,z=s.align,T=s.mouseConfig,r=I.isGroup,R=I.currentColumn,S=I.scrollXLoad,D=I.overflowX,a=I.scrollbarWidth,o=H.visibleColumn,W=c.value,i=d.value;return r?t=o:i=[t=h&&(S||w)?e:t],(0,_vue.h)("div",{ref:O,class:["vxe-table--header-wrapper",h?"fixed-".concat(h,"--wrapper"):"body--wrapper"],xid:u},[h?(0,_vue.createCommentVNode)():(0,_vue.h)("div",{ref:m,class:"vxe-body--x-space"}),(0,_vue.h)("table",{ref:f,class:"vxe-table--header",xid:u,cellspacing:0,cellpadding:0,border:0},[(0,_vue.h)("colgroup",{ref:p},t.map(function(e,t){return(0,_vue.h)("col",{name:e.id,key:t})}).concat(a?[(0,_vue.h)("col",{name:"col_gutter"})]:[])),(0,_vue.h)("thead",{ref:v},i.map(function(m,_){return(0,_vue.h)("tr",{class:["vxe-header--row",l?_xeUtils.default.isFunction(l)?l({$table:k,$rowIndex:_,fixed:h,type:renderType}):l:""],style:n?_xeUtils.default.isFunction(n)?n({$table:k,$rowIndex:_,fixed:h,type:renderType}):n:null},m.map(function(e,t){var l=e.type,n=e.showHeaderOverflow,r=e.headerAlign,a=e.align,o=e.headerClassName,i=e.children&&e.children.length,u=h?e.fixed!==h&&!i:!!e.fixed&&D,n=_xeUtils.default.isUndefined(n)||_xeUtils.default.isNull(n)?w:n,r=r||a||M||z,a="ellipsis"===n,s="title"===n,n=!0===n||"tooltip"===n,c=s||n||a,d=e.filters&&e.filters.some(function(e){return e.checked}),f=k.getColumnIndex(e),p=k.getVTColumnIndex(e),v={$table:k,$grid:k.xegrid,$rowIndex:_,column:e,columnIndex:f,$columnIndex:t,_columnIndex:p,fixed:h,type:renderType,isHidden:u,hasFilter:d},f={onClick:function(e){return k.triggerHeaderCellClickEvent(e,v)},onDblclick:function(e){return k.triggerHeaderCellDblclickEvent(e,v)}};return S&&!c&&(a=c=!0),T&&(f.onMousedown=function(e){return k.triggerHeaderCellMousedownEvent(e,v)}),(0,_vue.h)("th",__assign(__assign({class:["vxe-header--column",e.id,((p={})["col--".concat(r)]=r,p["col--".concat(l)]=l,p["col--last"]=t===m.length-1,p["col--fixed"]=e.fixed,p["col--group"]=i,p["col--ellipsis"]=c,p["fixed--hidden"]=u,p["is--sortable"]=e.sortable,p["col--filter"]=!!e.filters,p["is--filter-active"]=d,p["col--current"]=R===e,p),o?_xeUtils.default.isFunction(o)?o(v):o:"",y?_xeUtils.default.isFunction(y)?y(v):y:""],colid:e.id,colspan:1<e.colSpan?e.colSpan:null,rowspan:1<e.rowSpan?e.rowSpan:null,style:C?_xeUtils.default.isFunction(C)?C(v):C:null},f),{key:b||W.useKey||i?e.id:t}),[(0,_vue.h)("div",{class:["vxe-cell",{"c--title":s,"c--tooltip":n,"c--ellipsis":a}]},e.renderHeader(v)),u||i||!(_xeUtils.default.isBoolean(e.resizable)?e.resizable:W.resizable||x)?null:(0,_vue.h)("div",{class:["vxe-resizable",{"is--line":!g||"none"===g}],onMousedown:function(e){return $(e,v)}})])}).concat(a?[(0,_vue.h)("th",{class:"vxe-header--gutter col--gutter"})]:[]))}))]),(0,_vue.h)("div",{ref:_,class:"vxe-table--header-border-line"})])}}});exports.default=_default;