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 • 6.54 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"),_util=require("./util");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let{renderer,renderEmptyElement}=_ui.VxeUI,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(m){let ae=(0,_vue.inject)("$xeTable",{}),{xID:_,props:b,reactData:C,internalData:y}=ae,{computeColumnOpts:l,computeColumnDragOpts:a,computeCellOpts:r,computeMouseOpts:w,computeHeaderCellOpts:t,computeDefaultRowHeight:i,computeVirtualXOpts:n}=ae.getComputeMaps(),D=(0,_vue.ref)([]),H=(0,_vue.ref)(),E=(0,_vue.ref)(),S=(0,_vue.ref)(),M=(0,_vue.ref)(),O=(0,_vue.ref)(),T=(0,_vue.ref)(),o=(0,_vue.ref)(),d=()=>{var e=C.isGroup;D.value=e?(0,_util.convertHeaderColumnToRows)(m.tableGroupColumn):[]},I=(H,E,S,M)=>{let O=ae.xeGrid,T=m.fixedType,{resizable:I,columnKey:k,headerCellClassName:U,headerCellStyle:z,showHeaderOverflow:R,headerAlign:$,align:q,mouseConfig:A}=b,{currentColumn:F,dragCol:X,scrollXLoad:j,scrollYLoad:G,overflowX:L,tableColumn:N}=C,{fullColumnIdData:V,scrollXStore:W}=y,B=n.value,K=l.value,P=a.value,Y=r.value;var e=i.value;let J=t.value,Q=(0,_util.getCalcHeight)(J.height)||e,{disabledMethod:Z,isCrossDrag:ee,isPeerDrag:le}=P;return S.map((e,l)=>{var{type:a,showHeaderOverflow:r,headerAlign:t,align:i,filters:n,headerClassName:o,editRender:d,cellRender:u}=e,s=e.id,c=V[s]||{},d=d||u,u=d?renderer.get(d.name):null,d=e.children&&e.children.length,p=L&&!d&&(T?e.fixed!==T:!!e.fixed),v=(_xeUtils.default.isBoolean(J.padding)?J:Y).padding,r=_xeUtils.default.eqNull(r)?R:r,t=t||(u?u.tableHeaderCellAlign:"")||$||i||(u?u.tableCellAlign:"")||q,i="ellipsis"===r,u="title"===r,r=!0===r||"tooltip"===r,x=u||r||i;let h=!1,g=null;n&&(g=n[0],h=n.some(e=>e.checked));var f=c.index,c=c._index;let m={$table:ae,$grid:O,$rowIndex:M,column:e,columnIndex:f,$columnIndex:l,_columnIndex:c,firstFilterOption:g,fixed:T,type:renderType,isHidden:p,hasFilter:h};var f={colid:s,colspan:1<e.colSpan?e.colSpan:null,rowspan:1<e.rowSpan?e.rowSpan:null},_={onClick:e=>ae.triggerHeaderCellClickEvent(e,m),onDblclick:e=>ae.triggerHeaderCellDblclickEvent(e,m)},b=K.drag&&"cell"===P.trigger;let C=!1;b&&(C=!(!Z||!Z(m))),(A||b)&&(_.onMousedown=e=>ae.triggerHeaderCellMousedownEvent(e,m)),K.drag&&(_.onDragstart=ae.handleHeaderCellDragDragstartEvent,_.onDragend=ae.handleHeaderCellDragDragendEvent,_.onDragover=ae.handleHeaderCellDragDragoverEvent,b)&&(_.onMouseup=ae.handleHeaderCellDragMouseupEvent);var b=l===S.length-1,y=_xeUtils.default.isBoolean(e.resizable)?e.resizable:K.resizable||I,w=!e.resizeWidth&&("auto"===e.minWidth||"auto"===e.width);let D=!1;!E||!L||H||X&&X.id===s||j&&10<N.length&&!e.fixed&&!B.immediate&&(c<W.visibleStartIndex-W.preloadSize||c>W.visibleEndIndex+W.preloadSize)&&(D=!0);c={};return x?c.height=Q+"px":c.minHeight=Q+"px",(0,_vue.h)("th",Object.assign(Object.assign(Object.assign({class:["vxe-table--column vxe-header--column",s,{["col--"+t]:t,["col--"+a]:a,"col--last":b,"col--fixed":e.fixed,"col--group":d,"col--ellipsis":x,"fixed--width":!w,"fixed--hidden":p,"is--padding":v,"is--sortable":e.sortable,"col--filter":!!n,"is--filter-active":h,"is--drag-active":K.drag&&!e.fixed&&!C&&(ee||le||!e.parentId),"is--drag-disabled":K.drag&&C,"col--current":F===e},o?_xeUtils.default.isFunction(o)?o(m):o:"",U?_xeUtils.default.isFunction(U)?U(m):U:""],style:z?_xeUtils.default.isFunction(z)?z(m):z:null},f),_),{key:k||j||G||K.useKey||K.drag||d?s:l}),[(0,_vue.h)("div",{class:["vxe-cell",{"c--title":u,"c--tooltip":r,"c--ellipsis":i}],style:c},D||E&&p?[]:[(0,_vue.h)("div",{colid:s,class:"vxe-cell--wrapper vxe-header-cell--wrapper"},e.renderHeader(m))]),!p&&y?(0,_vue.h)("div",{class:"vxe-cell--col-resizable",onMousedown:e=>ae.handleColResizeMousedownEvent(e,T,m),onDblclick:e=>ae.handleColResizeDblclickEvent(e,m)}):renderEmptyElement(ae)])})};return(0,_vue.watch)(()=>m.tableColumn,d),(0,_vue.onMounted)(()=>{(0,_vue.nextTick)(()=>{var e=m.fixedType,l=ae.internalData,l=l.elemStore,e=`${e||"main"}-header-`;l[e+"wrapper"]=H,l[e+"scroll"]=E,l[e+"table"]=S,l[e+"colgroup"]=M,l[e+"list"]=O,l[e+"xSpace"]=T,l[e+"repair"]=o,d()})}),(0,_vue.onUnmounted)(()=>{var e=m.fixedType,l=ae.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}=m;var{mouseConfig:r,showHeaderOverflow:t,spanMethod:i,footerSpanMethod:n}=b,{isGroup:o,isColLoading:d,overflowX:u,scrollXLoad:s,dragCol:c}=C,{visibleColumn:p,fullColumnIdData:v}=y,x=w.value;let h=D.value,g=a,f=!1;return o?g=p:(s&&t&&(i||n||(f=!0)),f&&(d||!l&&u)||(g=p),l&&f&&(g=e||[]),h=[g]),l||o||s&&c&&2<g.length&&(t=v[c.id])&&(i=t._index,n=g[0],d=g[g.length-1],u=v[n.id],p=v[d.id],u)&&p&&(s=u._index,t=p._index,i<s?(g=[c].concat(g),h=[[c].concat(h[0])].concat(h.slice(1))):t<i&&(g=g.concat([c]),h=[h[0].concat([c])].concat(h.slice(1)))),(0,_vue.h)("div",{ref:H,class:["vxe-table--header-wrapper",l?`fixed-${l}--wrapper`:"body--wrapper"],xid:_},[(0,_vue.h)("div",{ref:E,class:"vxe-table--header-inner-wrapper",onScroll(e){ae.triggerHeaderScrollEvent(e,l)}},[l?renderEmptyElement(ae):(0,_vue.h)("div",{ref:T,class:"vxe-body--x-space"}),(0,_vue.h)("table",{ref:S,class:"vxe-table--header",xid:_,cellspacing:0,cellpadding:0,border:0,xvm:f?"1":null},[(0,_vue.h)("colgroup",{ref:M},g.map((e,l)=>(0,_vue.h)("col",{name:e.id,key:l,style:{width:e.renderWidth+"px"}}))),(0,_vue.h)("thead",{ref:O},((r,t,e)=>{let i=m.fixedType,{headerRowClassName:n,headerRowStyle:o}=b;return e.map((e,l)=>{var a={$table:ae,$rowIndex:l,fixed:i,type:renderType};return(0,_vue.h)("tr",{key:l,class:["vxe-header--row",n?_xeUtils.default.isFunction(n)?n(a):n:""],style:o?_xeUtils.default.isFunction(o)?o(a):o:null},I(r,t,e,l))})})(o,f,h))]),r&&x.area?(0,_vue.h)("div",{class:"vxe-table--cell-area"},[(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(ae)])])}}});