vxe-table
Version:
A PC-end table component based on Vxe UI, supporting copy-paste, data pivot table, and high-performance virtual list table solution.
1 lines • 9.79 kB
JavaScript
Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_utils=require("../../ui/src/utils"),_util=require("./util"),_vn=require("../../ui/src/vn");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let{renderer,renderEmptyElement}=_ui.VxeUI,sourceType="table",renderType="header";var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeTableHeader",props:{tableData:Array,tableColumn:Array,tableGroupColumn:Array,fixedColumn:Array,fixedType:{type:String,default:null}},setup(h){let he=(0,_vue.inject)("$xeTable",{}),{xID:x,props:m,reactData:f,internalData:_}=he,{computeColumnOpts:a,computeColumnDragOpts:r,computeCellOpts:t,computeMouseOpts:b,computeHeaderCellOpts:i,computeDefaultRowHeight:n,computeVirtualXOpts:o,computeFloatingFilterOpts:q,computeIsHeaderRenderOptimize:C,computeHeaderTooltipOpts:d,computeRendererOpts:s}=he.getComputeMaps(),w=(0,_vue.ref)([]),y=(0,_vue.ref)(),H=(0,_vue.ref)(),D=(0,_vue.ref)(),T=(0,_vue.ref)(),E=(0,_vue.ref)(),I=(0,_vue.ref)(),u=(0,_vue.ref)(),c=()=>{var e=m.showCustomHeader;let{collectColumn:l,visibleColumn:a}=_;var r=h.tableGroupColumn,t=f.isGroup;let i=t?(0,_util.convertHeaderColumnToRows)(r):[],n=[];e&&1<i.length&&(n=(0,_util.convertHeaderToGridRows)(i),i=n),w.value=i,(0,_vue.nextTick)(()=>{he.dispatchEvent("columns-change",{visibleColgroups:n,collectColumn:l,visibleColumn:a},null)})},O=(O,S,e,F,R)=>{let k=he.xeGrid,$=he.xeGantt,M=h.fixedType,{resizable:z,columnKey:A,showCustomHeader:U,headerCellClassName:q,headerCellStyle:G,showHeaderOverflow:N,headerAlign:X,align:j,mouseConfig:W}=m,{dragCol:L,scrollXLoad:V,scrollYLoad:B,overflowX:K,mergeHeadFlag:P,tableColumn:Y,currColFlag:J}=f,{fullColumnIdData:Q,scrollXStore:Z,mergeHeaderList:ee,mergeHeaderCellMaps:le,currentCol:ae}=_,ue=o.value,re=a.value,te=r.value,ie=d.value,ce=t.value;var l=n.value;let ne=i.value,pe=s.value,oe=(0,_util.getCalcHeight)(ne.height)||l,{disabledMethod:de,isCrossDrag:ve,isPeerDrag:ge}=te,se=F===e.length-1;return R.map((e,l)=>{var{type:a,showHeaderOverflow:r,headerAlign:t,align:i,filters:n,headerClassName:o,editRender:d,cellRender:s}=e,u=e.id,c=Q[u]||{},d=d||s,s=d&&d.name?pe[d.name]||renderer.get(d.name):null,d=e.children&&e.children.length,p=K&&!d&&(M?e.fixed!==M:!!e.fixed),v=(0,_utils.getDefaultConfig)(ne.padding,ce.padding),g=!0===v,h=!!v&&(g||!1!==v.top),x=!!v&&(g||!1!==v.bottom),m=!!v&&(g||!1!==v.left),g=!!v&&(g||!1!==v.right),v=(0,_utils.getDefaultConfig)(r,N),r=t||(s?s.tableHeaderCellAlign:"")||X||i||(s?s.tableCellAlign:"")||j,t="ellipsis"===(!0===v?ie.mode:v),i="title"===(!0===v?ie.mode:v),s="tooltip"===(!0===v?ie.mode:v),v=i||s||t;let f=!1,_=null;n&&(_=n[0],f=n.some(e=>e.checked));var b=c.index,c=c._index;let C={$table:he,$grid:k,$gantt:$,rowIndex:F,_rowIndex:F,$rowIndex:F,column:e,columnIndex:b,$columnIndex:l,_columnIndex:c,firstFilterOption:_,fixed:M,source:sourceType,type:renderType,isHidden:p,hasFilter:f};b={colid:u};let w=!1;if(U||(b.colspan=1<e.colSpan?e.colSpan:null,b.rowspan=1<e.rowSpan?e.rowSpan:null),P&&ee.length&&(U||se)){var y=le[F+":"+(U?l:c)];if(y){var{rowspan:y,colspan:H}=y;if(!y||!H)return null;1<y&&(w=!0,b.rowspan=y),1<H&&(w=!0,b.colspan=H)}}y={onClick:e=>he.triggerHeaderCellClickEvent(e,C),onDblclick:e=>he.triggerHeaderCellDblclickEvent(e,C)},H=re.drag&&"cell"===te.trigger;let D=!1;H&&(D=!(!de||!de(C))),(W||H)&&(y.onMousedown=e=>he.triggerHeaderCellMousedownEvent(e,C)),re.drag&&(y.onDragstart=he.handleHeaderCellDragDragstartEvent,y.onDragend=he.handleHeaderCellDragDragendEvent,y.onDragover=he.handleHeaderCellDragDragoverEvent,H)&&(y.onMouseup=he.handleHeaderCellDragMouseupEvent);var H=l===R.length-1,T=_xeUtils.default.isBoolean(e.resizable)?e.resizable:re.resizable||z,E=!e.resizeWidth&&("auto"===e.minWidth||"auto"===e.width);let I=!1;!S||!K||O||w||L&&L.id===u||V&&10<Y.length&&!e.fixed&&!ue.immediate&&(c<Z.visibleStartIndex-Z.preloadSize||c>Z.visibleEndIndex+Z.preloadSize)&&(I=!0);c={};if(v?c.height=oe+"px":c.minHeight=oe+"px",!U&&d&&!se){let l=0;_xeUtils.default.eachTree(e.children,e=>{!e.visible||e.children&&e.children.length||(l+=e.renderWidth)}),c.width=l+"px"}return(0,_vue.h)("th",Object.assign(Object.assign(Object.assign({class:["vxe-table--column vxe-header--column",u,p?"fixed--hidden":"fixed--visible",{["col--"+r]:r,["col--"+a]:a,"col--last":H,"col--fixed":e.fixed,"col--group":d,"col--ellipsis":v,"fixed--width":!E,"is--pg-top":h,"is--pg-bottom":x,"is--pg-left":m,"is--pg-right":g,"is--sortable":e.sortable,"col--filter":!!n,"is--filter-active":f,"is--drag-active":re.drag&&!e.fixed&&!D&&(ve||ge||!e.parentId),"is--drag-disabled":re.drag&&D,"col--current":J&&ae===e},o?_xeUtils.default.isFunction(o)?o(C):o:"",q?_xeUtils.default.isFunction(q)?q(C):q:""],style:G?_xeUtils.default.isFunction(G)?G(C):G:null},b),y),{key:U?""+u+l:A||V||B||re.useKey||re.drag||d?u:l}),[(0,_vue.h)("div",{class:["vxe-cell",{"c--title":i,"c--tooltip":s,"c--ellipsis":t}],style:c},I||S&&p?[]:[(0,_vue.h)("div",{colid:u,class:"vxe-cell--wrapper vxe-header-cell--wrapper"},e.renderHeader(C))]),p||!T||U&&!se?renderEmptyElement(he):(0,_vue.h)("div",{class:"vxe-cell--col-resizable",onMousedown:e=>he.handleColResizeMousedownEvent(e,M,C),onDblclick:e=>he.handleColResizeDblclickEvent(e,C)})])})},S=(C,w)=>{let y=he.xeGrid,H=he.xeGantt,D=h.fixedType,{showHeaderOverflow:T,headerAlign:E,align:I}=m,{overflowX:O,currColFlag:S}=f,{fullColumnIdData:F,currentCol:R}=_,k=d.value,$=t.value;var e=n.value;let M=i.value;var l=q.value;let z=s.value,A=l.cellClassName,U=(0,_util.getCalcHeight)(M.height)||e;return w.map((e,l)=>{var{type:a,showHeaderOverflow:r,headerAlign:t,align:i,filters:n,editRender:o,cellRender:d,floatingFilters:s,filterRender:u,slots:c}=e,p=e.id,v=F[p]||{},o=o||d,d=c?c.floatingFilter||c["floating-filter"]:null,c=o&&o.name?z[o.name]||renderer.get(o.name):null,o=(0,_utils.isEnableConf)(u)&&u.name?z[u.name]||renderer.get(u.name):null,o=o?o.renderTableFloatingFilter:null,g=O&&(D?e.fixed!==D:!!e.fixed),h=(_xeUtils.default.isBoolean(M.padding)?M:$).padding,r=_xeUtils.default.eqNull(r)?T:r,t=t||(c?c.tableHeaderCellAlign:"")||E||i||(c?c.tableCellAlign:"")||I,i="ellipsis"===r,c="title"===r,r=!0===r?"tooltip"===k.mode:"tooltip"===r,x=c||r||i;let m=!1,f=null;n&&(f=n[0],m=n.some(e=>e.checked));var n=v.index,v=v._index,n={$table:he,$grid:y,$gantt:H,column:e,columnIndex:n,$columnIndex:l,_columnIndex:v,option:f,fixed:D,source:sourceType,type:renderType,isHidden:g,hasFilter:m},v={colid:p},l=l===w.length-1,_=!e.resizeWidth&&("auto"===e.minWidth||"auto"===e.width),b={};return x?b.height=U+"px":b.minHeight=U+"px",(0,_vue.h)("th",Object.assign({class:["vxe-table--column vxe-header--column is--floating-filters",p,g?"fixed--hidden":"fixed--visible",{["col--"+t]:t,["col--"+a]:a,"col--last":l,"col--fixed":e.fixed,"col--ellipsis":x,"fixed--width":!_,"is--padding":h,"is--sortable":e.sortable,"col--current":S&&R===e}],key:p},v),[(0,_vue.h)("div",{class:["vxe-cell",""+(A||""),{"c--title":c,"c--tooltip":r,"c--ellipsis":i}],style:b},C&&g&&!s?[]:[(0,_vue.h)("div",{colid:p,class:"vxe-cell--wrapper vxe-header-cell--wrapper"},d?he.callSlot(d,n):o&&f?(0,_vn.getSlotVNs)(o(u,n)):[])])])})};return(0,_vue.watch)(()=>h.tableColumn,c),(0,_vue.onMounted)(()=>{(0,_vue.nextTick)(()=>{var e=h.fixedType,l=he.internalData,l=l.elemStore,e=`${e||"main"}-header-`;l[e+"wrapper"]=y,l[e+"scroll"]=H,l[e+"table"]=D,l[e+"colgroup"]=T,l[e+"list"]=E,l[e+"xSpace"]=I,l[e+"repair"]=u,c()})}),(0,_vue.onUnmounted)(()=>{var e=h.fixedType,l=he.internalData,l=l.elemStore,e=`${e||"main"}-header-`;l[e+"wrapper"]=null,l[e+"scroll"]=null,l[e+"table"]=null,l[e+"colgroup"]=null,l[e+"list"]=null,l[e+"xSpace"]=null,l[e+"repair"]=null}),()=>{let{fixedType:l,fixedColumn:e,tableColumn:a}=h;var r=m.mouseConfig,{isGroup:t,isColLoading:i,overflowX:n,scrollXLoad:o,dragCol:d}=f,{visibleColumn:s,fullColumnIdData:u}=_,c=b.value,p=C.value;let v=w.value||[],g=a;return t?g=s:(p&&(i||!l&&n)||(g=s),l&&p&&(g=e||[]),v=[g]),l||t||o&&d&&2<g.length&&(i=u[d.id])&&(n=i._index,s=g[0],o=g[g.length-1],i=u[s.id],s=u[o.id],i)&&s&&(u=i._index,o=s._index,n<u?(g=[d].concat(g),v=[[d].concat(v[0])].concat(v.slice(1))):o<n&&(g=g.concat([d]),v=[v[0].concat([d])].concat(v.slice(1)))),(0,_vue.h)("div",{ref:y,class:["vxe-table--header-wrapper",l?`fixed-${l}--wrapper`:"body--wrapper"],xid:x},[(0,_vue.h)("div",{ref:H,class:"vxe-table--header-inner-wrapper",onScroll(e){he.triggerHeaderScrollEvent(e,l)}},[l?renderEmptyElement(he):(0,_vue.h)("div",{ref:I,class:"vxe-body--x-space"}),(0,_vue.h)("table",{ref:D,class:"vxe-table--header",xid:x,cellspacing:0,cellpadding:0,border:0,xvm:p?"1":null},[(0,_vue.h)("colgroup",{ref:T},g.map((e,l)=>(0,_vue.h)("col",{name:e.id,key:l,style:{width:e.renderWidth+"px"}}))),(0,_vue.h)("thead",{ref:E},((r,t,i,e)=>{let n=h.fixedType,{headerRowClassName:o,headerRowStyle:d}=m;var l=q.value,a=i.map((e,l)=>{var a={$table:he,rowIndex:l,_rowIndex:l,$rowIndex:l,fixed:n,type:renderType};return(0,_vue.h)("tr",{key:l,class:["vxe-header--row",o?_xeUtils.default.isFunction(o)?o(a):o:""],style:d?_xeUtils.default.isFunction(d)?d(a):d:null},O(r,t,i,l,e))});return l.enabled&&a.push((0,_vue.h)("tr",{key:"ff",class:["vxe-header--row is--floating-filters",""+(l.rowClassName||"")]},S(t,e))),a})(t,p,v,g))]),r&&c.area?(0,_vue.h)("div",{class:"vxe-table--cell-area",xid:x},[(0,_vue.h)("span",{class:"vxe-table--cell-main-area"}),(0,_vue.h)("span",{class:"vxe-table--cell-clip-area"}),(0,_vue.h)("span",{class:"vxe-table--cell-extend-area"}),(0,_vue.h)("span",{class:"vxe-table--cell-multi-area"}),(0,_vue.h)("span",{class:"vxe-table--cell-active-area"}),(0,_vue.h)("span",{class:"vxe-table--cell-col-status-area"})]):renderEmptyElement(he)])])}}});