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 • 14.6 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"),_dom=require("../../ui/src/dom"),_utils=require("../../ui/src/utils"),_vn=require("../../ui/src/vn");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let{getI18n,renderer,renderEmptyElement}=_ui.VxeUI,sourceType="table",renderType="body";var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeTableBody",props:{tableData:Array,tableColumn:Array,fixedColumn:Array,fixedType:{type:String,default:""}},setup(C){let al=(0,_vue.inject)("$xeTable",{}),{xID:R,props:rl,context:E,reactData:ol,internalData:il}=al,{computeEditOpts:nl,computeMouseOpts:sl,computeCellOffsetWidth:dl,computeAreaOpts:ul,computeDefaultRowHeight:cl,computeEmptyOpts:D,computeTooltipOpts:pl,computeRadioOpts:e,computeExpandOpts:ae,computeTreeOpts:l,computeCheckboxOpts:vl,computeCellOpts:gl,computeValidOpts:xl,computeRowOpts:hl,computeColumnOpts:ml,computeRowDragOpts:wl,computeResizableOpts:_l,computeVirtualXOpts:fl,computeVirtualYOpts:bl,computeIsBodyRenderOptimize:z}=al.getComputeMaps(),I=(0,_vue.ref)(),O=(0,_vue.ref)(),S=(0,_vue.ref)(),M=(0,_vue.ref)(),T=(0,_vue.ref)(),k=(0,_vue.ref)(),$=(0,_vue.ref)(),H=(0,_vue.ref)(),yl=()=>{var e=rl.delayHover,l=ol.isDragResize,t=il.lastSTime;return!!(l||t&&Date.now()<t+e)},Cl=(r,o,i)=>{var n=o.column,s=rl.treeConfig,d=gl.value,u=hl.value,c=cl.value,p=l.value,{slots:n,treeNode:v}=n,g=il.fullAllDataRowIdData;if(s&&v&&(p.showLine||p.line)){if(n&&n.line)return al.callSlot(n.line,o);s=g[r];let e=0,l=null,t=null,a="";return(s&&(e=s.level,l=s.items[s.treeIndex-1],t=s.parent),e||p.showRootLine)?(l?(v=g[(0,_util.getRowid)(al,l)]||{},a=`${v.lineHeight||0}px`):e&&t&&(n=g[(0,_util.getRowid)(al,t)]||{},a=`calc(-1em + ${Math.floor(i/2+(0,_util.getCellRestHeight)(n,d,u,c)/2)}px)`),[(0,_vue.h)("div",{key:"tl",class:"vxe-tree--line-wrapper"},[(0,_vue.h)("div",{class:"vxe-tree--line",style:{height:a,bottom:`-${Math.floor(i/2)}px`,left:`calc(${e*p.indent}px + 1em)`}})])]):[]}return[]},oe=(A,e,l,q,F,t,B,j,a,r,L,U,o)=>{var i=al.xeGrid,N=al.xeGantt,{columnKey:G,resizable:n,showOverflow:s,border:W,height:d,treeConfig:V,cellClassName:P,cellStyle:X,align:Y,spanMethod:K,mouseConfig:J,editConfig:Q,editRules:u,tooltipConfig:c,padding:p}=rl,{tableData:Z,tableColumn:ee,dragRow:le,overflowX:te,overflowY:ae,currentColumn:re,scrollXLoad:v,scrollYLoad:oe,mergeBodyFlag:ie,calcCellHeightFlag:g,resizeHeightFlag:x,resizeWidthFlag:ne,editStore:se,isAllOverflow:de,validErrorMaps:h}=ol,{fullAllDataRowIdData:ue,fullColumnIdData:m,mergeBodyCellMaps:ce,visibleColumn:pe,afterFullData:ve,mergeBodyList:ge,scrollXStore:xe,scrollYStore:he,keepUpdateFieldMaps:me}=il,w=gl.value,_=xl.value,f=vl.value,we=nl.value,b=pl.value,_e=_l.value,fe=fl.value,be=bl.value,{isAllColumnDrag:_e,isAllRowDrag:ye}=_e,y=hl.value,C=wl.value,Ce=cl.value,g=g?w.height||y.height:0,{disabledMethod:R,isCrossDrag:Re,isPeerDrag:Ee}=C,De=ml.value,Ie=sl.value,Oe=ul.value,Se=dl.value,Oe=Oe.selectCellToRow,{field:Me,type:Te,cellRender:E,editRender:ke,align:$e,showOverflow:He,className:ze,treeNode:Ae,rowResize:qe,padding:D,verticalAlign:I,slots:Fe}=r,{verticalAlign:O,minHeight:Be,maxHeight:je}=w,se=se.actived,Le=ue[e]||{},S=r.id,m=m[S]||{},E=ke||E,E=E?renderer.get(E.name):null,Ue=E?E.tableCellClassName||E.cellClassName:null,Ne=E?E.tableCellStyle||E.cellStyle:"";let Ge=b.showAll;var We=m.index,m=m._index,ke=(0,_utils.isEnableConf)(ke),x=x?Le.resizeHeight:0;let M=te&&(l?r.fixed!==l:!!r.fixed);var D=(0,_utils.getDefaultConfig)(D,null===p?w.padding:p),p=!0===D,Ve=!!D&&(p||!1!==D.top),Pe=!!D&&(p||!1!==D.bottom),Xe=!!D&&(p||!1!==D.left),p=!!D&&(p||!1!==D.right),D=(0,_utils.getDefaultConfig)(He,s),He="ellipsis"===(!0===D?b.mode:D);let T="title"===(!0===D?b.mode:D),k="tooltip"===(!0===D?b.mode:D);s=de||T||k||He,b=_xeUtils.default.isBoolean(r.resizable)?r.resizable:De.resizable||n,D=!!g,n=0<x;let Ye;g={},x=$e||(E?E.tableCellAlign:"")||Y,$e=_xeUtils.default.eqNull(I)?O:I,E=h[e+":"+S],Y=u&&_.showErrorMessage&&("default"===_.message?d||1<Z.length:"inline"===_.message),O={colid:S};let $={$table:al,$grid:i,$gantt:N,isEdit:!1,seq:A,rowid:e,row:t,rowIndex:B,$rowIndex:j,_rowIndex:a,column:r,columnIndex:We,$columnIndex:L,_columnIndex:m,fixed:l,source:sourceType,type:renderType,isHidden:!!M,level:F,visibleData:ve,data:Z,items:o},H=!1,Ke=!1,z=((H=y.drag?"row"===C.trigger||r.dragSort&&"cell"===C.trigger:H)&&(Ke=!(!R||!R($))),(T||k||Ge||c)&&(g.onMouseover=e=>{yl()||(T?(0,_dom.updateCellTitle)(e.currentTarget,r):(k||Ge)&&al.triggerBodyTooltipEvent(e,$)),al.dispatchEvent("cell-mouseenter",Object.assign({cell:e.currentTarget},$),e)}),(k||Ge||c)&&(g.onMouseleave=e=>{yl()||(k||Ge)&&al.handleTargetLeaveEvent(e),al.dispatchEvent("cell-mouseleave",Object.assign({cell:e.currentTarget},$),e)}),(H||f.range||J)&&(g.onMousedown=e=>{al.triggerCellMousedownEvent(e,$)}),H&&(g.onMouseup=al.triggerCellMouseupEvent),g.onClick=e=>{al.triggerCellClickEvent(e,$)},!(g.onDblclick=e=>{al.triggerCellDblclickEvent(e,$)})),Je=1,Qe=1;if(ie&&ge.length){I=ce[a+":"+m];if(I){var{rowspan:h,colspan:u}=I;if(!h||!u)return renderEmptyElement(al);1<h&&(z=!0,Qe=h,O.rowspan=h),1<u&&(z=!0,Je=u,O.colspan=u)}}else if(K){var{rowspan:d=1,colspan:i=1}=K($)||{};if(!d||!i)return renderEmptyElement(al);1<d&&(z=!0,Qe=d,O.rowspan=d),1<i&&(z=!0,Je=i,O.colspan=i)}!(M=M&&z&&(1<O.colspan||1<O.rowspan)?!1:M)&&Q&&(we.showStatus||we.showUpdateStatus)&&me[Me]&&(Ye=al.isUpdateByRow(t,Me));N=!s&&(oe||v);let Ze=(0,_util.getCellRestHeight)(Le,w,y,Ce);A=L===U.length-1,B=!r.resizeWidth&&("auto"===r.minWidth||"auto"===r.width);let el=!1;z||le&&(0,_util.getRowid)(al,le)===e||(ae&&oe&&16<Z.length&&!V&&!be.immediate&&(a<he.visibleStartIndex-he.preloadSize||a>he.visibleEndIndex+he.preloadSize)||te&&v&&10<ee.length&&!fe.immediate&&!r.fixed&&(m<xe.visibleStartIndex-xe.preloadSize||m>xe.visibleEndIndex+xe.preloadSize))&&(el=!0),1<Qe&&(j=ve[a+Qe-1])&&(o=ue[(0,_util.getRowid)(al,j)])&&(Ze+=o.oTop+(0,_util.getCellRestHeight)(o,w,y,Ce)-Le.oTop-(0,_util.getCellRestHeight)(Le,w,y,Ce));C={};if(je&&(C.maxHeight=je+"px"),s&&ne){let l=0;if(1<Je)for(let e=1;e<Je;e++){var ll=pe[We+e];ll&&(l+=ll.renderWidth)}C.width=r.renderWidth+l-Se+"px"}oe||v||s||D||n?C.height=Ze+"px":C.minHeight=Ze+"px",Be&&(C.minHeight=Be+"px");R=[];M&&de?R.push((0,_vue.h)("div",{key:"tc",class:["vxe-cell",{"c--title":T,"c--tooltip":k,"c--ellipsis":He}],style:C})):(V&&R.push(...Cl(e,$,Ze)),c=[],el||c.push((0,_vue.h)("div",{colid:S,rowid:e,class:"vxe-cell--wrapper vxe-body-cell--wrapper"},r.renderCell($))),R.push((0,_vue.h)("div",{key:"tc",class:["vxe-cell",{"c--title":T,"c--tooltip":k,"c--ellipsis":He}],style:C,title:T?al.getCellLabel(t,r):null},c)),Y&&E&&(f=E.rule,ie=Fe?Fe.valid:null,ge=Object.assign(Object.assign(Object.assign({},$),E),{rule:E}),R.push((0,_vue.h)("div",{key:"tcv",class:["vxe-cell--valid-error-tip",(0,_dom.getPropClass)(_.className,ge)],style:f&&f.maxWidth?{width:f.maxWidth+"px"}:null},[(0,_vue.h)("div",{class:"vxe-cell--valid-error-wrapper vxe-cell--valid-error-theme-"+(_.theme||"normal")},[ie?al.callSlot(ie,ge):[(0,_vue.h)("span",{class:"vxe-cell--valid-error-msg"},E.content)]])]))));let tl=!1;return J&&Ie.area&&!m&&Oe&&(tl=!0),!M&&b&&_e&&R.push((0,_vue.h)("div",{key:"tcc",class:["vxe-cell--col-resizable",{"is--line":!W||"none"===W}],onMousedown:e=>al.handleColResizeMousedownEvent(e,l,$),onDblclick:e=>al.handleColResizeDblclickEvent(e,$)})),(qe||ye)&&y.resizable&&R.push((0,_vue.h)("div",{key:"tcr",class:"vxe-cell--row-resizable",onMousedown:e=>al.handleRowResizeMousedownEvent(e,$),onDblclick:e=>al.handleRowResizeDblclickEvent(e,$)})),(0,_vue.h)("td",Object.assign(Object.assign(Object.assign({class:["vxe-table--column vxe-body--column",S,$e?"col--vertical-"+$e:"",x?"col--"+x:"",Te?"col--"+Te:"",{"col--last":A,"col--tree-node":Ae,"col--edit":ke,"col--ellipsis":s,"col--cs-height":D,"col--rs-height":n,"col--to-row":tl,"col--auto-height":N,"col--max-height":je,"fixed--width":!B,"fixed--hidden":M,"is--pg-top":Ve,"is--pg-bottom":Pe,"is--pg-left":Xe,"is--pg-right":p,"is--progress":M&&de||el,"is--drag-cell":H&&(Re||Ee||!F),"is--drag-disabled":Ke,"col--dirty":Ye,"col--active":Q&&ke&&se.row===t&&(se.column===r||"row"===we.mode),"col--valid-error":!!E,"show--valid-bg":E&&_.showErrorBackground,"col--current":re===r},(0,_dom.getPropClass)(Ue,$),(0,_dom.getPropClass)(ze,$),(0,_dom.getPropClass)(P,$)],key:G||v||oe||De.useKey||y.useKey||De.drag?S:L},O),{style:Object.assign({},_xeUtils.default.isFunction(Ne)?Ne($):Ne,_xeUtils.default.isFunction(X)?X($):X)}),g),q&&M?[]:R)},re=(h,m,w,_)=>{let f=al.xeGrid,b=al.xeGantt,{stripe:y,rowKey:C,highlightHoverRow:R,rowClassName:E,rowStyle:D,editConfig:I,treeConfig:O}=rl,{hasFixedColumn:S,treeExpandedFlag:M,scrollYLoad:T,isAllOverflow:k,rowExpandedFlag:$,expandColumn:H,selectRadioRow:z,pendingRowFlag:A,rowExpandHeightFlag:q,isRowGroupStatus:F}=ol,{fullAllDataRowIdData:B,fullColumnIdData:j,treeExpandedMaps:L,pendingRowMaps:U,rowExpandedMaps:N,currentRow:G}=il,W=vl.value,Q=e.value,V=l.value,P=nl.value,X=hl.value,Z=ml.value,{transform:Y,seqMode:K}=V,ee=V.children||V.childrenField,J=[],le=(0,_util.createHandleGetRowId)(al).handleGetRowId,te=O||F;return w.forEach((a,r)=>{let o=le(a);var i=B[o]||{};let n=r,s=0,d=-1,u=-1;var c=F&&a.isAggregate,p={},v=((X.isHover||R)&&(p.onMouseover=e=>{yl()||al.triggerHoverEvent(e,{row:a,rowIndex:n})},p.onMouseleave=()=>{yl()||al.clearHoverRow()}),i&&(n=i.index,u=i._index,s=i.level,d=i.seq,c||O&&Y&&"increasing"===K?d=i._index+1:O&&"fixed"===K&&(d=i._tIndex+1)),{$table:al,seq:d,rowid:o,fixed:h,type:renderType,level:s,row:a,rowIndex:n,$rowIndex:r,_rowIndex:u}),g=H&&!!$&&!!N[o];let e=!1,l=[],t=!1;I&&(t=al.isInsertByRow(a)),!O||T||Y||(l=a[ee],e=!!M&&l&&0<l.length&&!!L[o]),!X.drag||F||O&&!Y||(p.onDragstart=al.handleRowDragDragstartEvent,p.onDragend=al.handleRowDragDragendEvent,p.onDragover=al.handleRowDragDragoverEvent);var c=["vxe-body--row",te?"row--level-"+s:"",{"row--stripe":y&&(u+1)%2==0,"is--new":t,"is--expand-row":g,"is--expand-tree":e,"row--new":t&&(P.showStatus||P.showInsertStatus),"row--radio":Q.highlight&&al.eqRow(z,a),"row--checked":W.highlight&&al.isCheckedByCheckboxRow(a),"row--pending":!!A&&!!U[o],"row--group":c,"row--current":G&&o===(0,_util.getRowid)(al,G)},(0,_dom.getPropClass)(E,v)],x=_.map((e,l)=>oe(d,o,h,m,s,a,n,r,u,e,l,_,w));if(J.push((0,_vue.h)("tr",Object.assign({class:c,rowid:o,style:D?_xeUtils.default.isFunction(D)?D(v):D:null,key:C||X.useKey||X.drag||Z.drag||F||O?o:r},p),x)),g){var{height:c,padding:v,mode:p}=ae.value;if("fixed"===p){x=i.expandHeight;let e=0;q&&(x||c)&&(e=(x||c||0)+1),J.push((0,_vue.h)("tr",{class:"vxe-body--row-expanded-place",key:"expand_"+o,rowid:o},[(0,_vue.h)("td",{class:"vxe-body--row-expanded-place-column",colspan:_.length,style:{height:e+"px"}})]))}else{g={},p=(c&&(g.height=c+"px"),O&&(g.paddingLeft=s*V.indent+30+"px"),H||{}).showOverflow,i=H.id,x=j[i]||{},i=_xeUtils.default.eqNull(p)?k:p;let e=-1,l=-1,t=-1;x&&(e=x.index,l=x.$index,t=x._index);p={$table:al,$grid:f,$gantt:b,seq:d,column:H,columnIndex:e,$columnIndex:l,_columnIndex:t,fixed:h,source:sourceType,type:renderType,level:s,row:a,rowid:o,rowIndex:n,$rowIndex:r,_rowIndex:u,isHidden:!1,isEdit:!1,visibleData:[],data:[],items:[]};J.push((0,_vue.h)("tr",{class:["vxe-body--expanded-row",{"is--padding":v}],key:"expand_"+o},[(0,_vue.h)("td",{class:["vxe-body--expanded-column",{"fixed--hidden":h&&!S,"col--ellipsis":i}],colspan:_.length},[(0,_vue.h)("div",{class:["vxe-body--expanded-cell",{"is--ellipsis":c}],style:g},[H.renderData(p)])])]))}}e&&J.push(...re(h,m,l,_))}),J};(0,_vue.onMounted)(()=>{(0,_vue.nextTick)(()=>{var e=C.fixedType,l=il.elemStore,e=`${e||"main"}-body-`;l[e+"wrapper"]=I,l[e+"scroll"]=O,l[e+"table"]=S,l[e+"colgroup"]=M,l[e+"list"]=T,l[e+"xSpace"]=k,l[e+"ySpace"]=$,l[e+"emptyBlock"]=H})}),(0,_vue.onUnmounted)(()=>{var e=C.fixedType,l=il.elemStore,e=`${e||"main"}-body-`;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+"ySpace"]=null,l[e+"emptyBlock"]=null});return()=>{var e=E.slots,l=al.xeGrid,t=al.xeGantt;let{fixedColumn:a,fixedType:r,tableColumn:o}=C;var i=rl.mouseConfig,{isGroup:n,tableData:s,isColLoading:d,overflowX:u,scrollXLoad:c,scrollYLoad:p,dragRow:v,dragCol:g}=ol,{visibleColumn:x,fullAllDataRowIdData:h,fullColumnIdData:m}=il,w=D.value,_=sl.value;let f=s,b=o;s=z.value;d||!r&&u||(b=x),r&&s&&(b=a||[]),p&&v&&2<f.length&&(d=h[(0,_util.getRowid)(al,v)])&&(u=d._index,x=f[0],p=f[f.length-1],d=h[(0,_util.getRowid)(al,x)],x=h[(0,_util.getRowid)(al,p)],d)&&x&&(h=d._index,p=x._index,u<h?f=[v].concat(f):p<u&&(f=f.concat([v]))),r||n||c&&g&&2<b.length&&(d=m[g.id])&&(x=d._index,h=b[0],p=b[b.length-1],u=m[h.id],v=m[p.id],u)&&v&&(n=u._index,c=v._index,x<n?b=[g].concat(b):c<x&&(b=b.concat([g])));let y;d=e?e.empty:null,h={$table:al,$grid:l,$gantt:t};return y=d?al.callSlot(d,h):(p=(m=w.name?renderer.get(w.name):null)?m.renderTableEmpty||m.renderTableEmptyView||m.renderEmpty:null)?(0,_vn.getSlotVNs)(p(w,h)):rl.emptyText||getI18n("vxe.table.emptyText"),(0,_vue.h)("div",{ref:I,class:["vxe-table--body-wrapper",r?`fixed-${r}--wrapper`:"body--wrapper"],xid:R},[(0,_vue.h)("div",{ref:O,class:"vxe-table--body-inner-wrapper",onScroll(e){al.triggerBodyScrollEvent(e,r)}},[r?renderEmptyElement(al):(0,_vue.h)("div",{ref:k,class:"vxe-body--x-space"}),(0,_vue.h)("div",{ref:$,class:"vxe-body--y-space"}),(0,_vue.h)("table",{ref:S,class:"vxe-table--body",xid:R,cellspacing:0,cellpadding:0,border:0,xvm:s?"1":null},[(0,_vue.h)("colgroup",{ref:M},b.map((e,l)=>(0,_vue.h)("col",{name:e.id,key:l,style:{width:e.renderWidth+"px"}}))),(0,_vue.h)("tbody",{ref:T},re(r,s,f,b))]),(0,_vue.h)("div",{class:"vxe-table--checkbox-range"}),i&&_.area?(0,_vue.h)("div",{class:"vxe-table--cell-area",xid:R},[(0,_vue.h)("span",{class:"vxe-table--cell-main-area"},_.extension?[(0,_vue.h)("span",{class:"vxe-table--cell-main-area-btn",onMousedown(e){al.triggerCellAreaExtendMousedownEvent&&al.triggerCellAreaExtendMousedownEvent(e,{$table:al,fixed:r,type:renderType})}})]:[]),(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-row-status-area"})]):renderEmptyElement(al),r?renderEmptyElement(al):(0,_vue.h)("div",{class:"vxe-table--empty-block",ref:H},[(0,_vue.h)("div",{class:"vxe-table--empty-content"},y)])])])}}});