UNPKG

vxe-table

Version:

一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟树、拖拽排序,懒加载、快捷菜单、数据校验、树形结构、打印、导入导出、自定义模板、渲染器、JSON 配置式...

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