UNPKG

vxe-table-demonic

Version:

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

1 lines 13.7 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_conf=_interopRequireDefault(require("../../v-x-e-table/src/conf")),_vXETable=require("../../v-x-e-table"),_util=require("./util"),_dom=require("../../tools/dom"),_utils=require("../../tools/utils"),_vn=require("../../tools/vn");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var __assign=function(){return(__assign=Object.assign||function(e){for(var l,t=1,o=arguments.length;t<o;t++)for(var a in l=arguments[t])Object.prototype.hasOwnProperty.call(l,a)&&(e[a]=l[a]);return e}).apply(this,arguments)},__spreadArray=function(e,l,t){if(t||2===arguments.length)for(var o,a=0,r=l.length;a<r;a++)!o&&a in l||((o=o||Array.prototype.slice.call(l,0,a))[a]=l[a]);return e.concat(o||Array.prototype.slice.call(l))},renderType="body",lineOffsetSizes={mini:3,small:2,medium:1},_default=(0,_vue.defineComponent)({name:"VxeTableBody",props:{tableData:Array,tableColumn:Array,fixedColumn:Array,fixedType:{type:String,default:null}},setup:function(_){function c(){if(l){var e=l.value;if(e)return lineOffsetSizes[e]||0}return 0}function u(e,l){var t=1;if(e){var o=d.value,a=e[o.children||o.childrenField];if(a&&ie.isTreeExpandByRow(e))for(var r=0;r<a.length;r++)t+=u(a[r],l)}return t}function ne(e){var l=e.row,t=e.column,o=se.treeConfig,a=d.value,r=t.slots,t=t.treeNode,l=ue.fullAllDataRowIdData[(0,_util.getRowid)(ie,l)],n=0,i=0,s=[];return l&&(n=l.level,i=l._index,s=l.items),r&&r.line?ie.callSlot(r.line,e):o&&t&&(a.showLine||a.line)?[(0,_vue.h)("div",{class:"vxe-tree--line-wrapper"},[(0,_vue.h)("div",{class:"vxe-tree--line",style:{height:"".concat((l=e,r=s,o=1,(t=i)&&(o=u(r[t-1],l)),ce.rowHeight*o-(t?1:12-c())),"px"),left:"".concat(n*a.indent+(n?2-c():0)+16,"px")}})])]:[]}function m(e,l,t,o){(t||o)&&(t&&((0,_util.removeScrollListener)(t),t.scrollTop=l),o&&((0,_util.removeScrollListener)(o),o.scrollTop=l),clearTimeout(a),a=setTimeout(function(){(0,_util.restoreScrollListener)(t),(0,_util.restoreScrollListener)(o),ce.lastScrollTime=Date.now()},300))}function o(e){var l=_.fixedType,t=se.highlightHoverRow,o=ce.scrollXLoad,a=ce.scrollYLoad,r=ue.elemStore,n=ue.lastScrollTop,i=ue.lastScrollLeft,s=fe.value,c=U.value,u=w.value,d=A.value,p=b.value,v=T.value,f=B.value,h=S.value,c=c?c.$el:null,d=d?d.$el:null,u=u.$el,p=p?p.$el:null,v=v?v.$el:null,g=(g=r["main-body-ySpace"])?g.value:null,r=(r=r["main-body-xSpace"])?r.value:null,g=(a&&g?g:u).clientHeight,r=(o&&r?r:u).clientWidth,h=h.scrollTop,x=u.scrollLeft,i=x!==i,n=h!==n;ue.lastScrollTop=h,ue.lastScrollLeft=x,ce.lastScrollTime=Date.now(),(s.isHover||t)&&ie.clearHoverRow(),p&&"left"===l?(h=p.scrollTop,m(0,h,u,v)):v&&"right"===l?(h=v.scrollTop,m(0,h,u,p)):(i&&(c&&(c.scrollLeft=u.scrollLeft),d)&&(d.scrollLeft=u.scrollLeft),(p||v)&&(ie.checkScrolling(),n)&&m(0,h,p,v)),o&&i&&ie.triggerScrollXEvent(e),a&&n&&ie.triggerScrollYEvent(e),i&&f&&f.reactData.visible&&f.updatePlacement(),ie.dispatchEvent("scroll",{type:renderType,fixed:l,scrollTop:h,scrollLeft:x,scrollHeight:u.scrollHeight,scrollWidth:u.scrollWidth,bodyHeight:g,bodyWidth:r,isX:i,isY:n},e)}function k(e){var l=e.deltaY,t=e.deltaX,o=se.highlightHoverRow,a=ce.scrollYLoad,r=ue.lastScrollTop,n=ue.lastScrollLeft,i=fe.value,s=w.value,c=S.value,s=s.$el,u=l<0;(u?c.scrollTop<=0:c.scrollTop>=c.scrollHeight-c.clientHeight)||(c=c.scrollTop+l,t=(s=s.scrollLeft+t)!==n,(n=c!==r)&&(e.preventDefault(),ue.lastScrollTop=c,ue.lastScrollLeft=s,ce.lastScrollTime=Date.now(),(i.isHover||o)&&ie.clearHoverRow(),p(e,u,l,t,n),a)&&ie.triggerScrollYEvent(e))}var a,x,ie=(0,_vue.inject)("$xetable",{}),l=(0,_vue.inject)("xesize",null),y=ie.xID,se=ie.props,q=ie.context,ce=ie.reactData,ue=ie.internalData,e=ie.getRefMaps(),U=e.refTableHeader,w=e.refTableBody,A=e.refTableFooter,b=e.refTableLeftBody,T=e.refTableRightBody,B=e.refValidTooltip,e=ie.getComputeMaps(),de=e.computeEditOpts,X=e.computeMouseOpts,pe=e.computeSYOpts,Y=e.computeEmptyOpts,W=e.computeKeyboardOpts,ge=e.computeTooltipOpts,t=e.computeRadioOpts,F=e.computeExpandOpts,d=e.computeTreeOpts,ve=e.computeCheckboxOpts,xe=e.computeValidOpts,fe=e.computeRowOpts,_e=e.computeColumnOpts,S=(0,_vue.ref)(),C=(0,_vue.ref)(),L=(0,_vue.ref)(),R=(0,_vue.ref)(),E=(0,_vue.ref)(),H=(0,_vue.ref)(),O=(0,_vue.ref)(),he=function(){var e=se.delayHover,l=ce.lastScrollTime;return!!(ce._isResize||l&&Date.now()<l+e)},V=function(e,l,t,o,a,r,n,i,s,c,q,U){var u,A=se.columnKey,d=se.height,B=se.showOverflow,X=se.cellClassName,p=se.cellStyle,v=se.align,Y=se.spanMethod,N=se.mouseConfig,W=se.editConfig,f=se.editRules,F=se.tooltipConfig,V=ce.tableData,h=ce.overflowX,j=ce.scrollYLoad,P=ce.currentColumn,g=ce.mergeList,x=ce.editStore,K=ce.isAllOverflow,z=ce.validErrorMaps,_=ue.afterFullData,m=xe.value,G=ve.value,y=de.value,w=ge.value,b=fe.value,T=pe.value,J=_e.value,Q=s.type,Z=s.cellRender,S=s.editRender,C=s.align,L=s.showOverflow,ee=s.className,le=s.treeNode,te=s.slots,x=x.actived,T=T.rHeight,b=b.height,R=S||Z,R=R?_vXETable.VXETable.renderer.get(R.name):null,oe=R?R.cellClassName:"",R=R?R.cellStyle:"",E=w.showAll,w=ie.getColumnIndex(s),ae=ie.getVTColumnIndex(s),re=(0,_utils.isEnableConf)(S),h=t?s.fixed!==t:s.fixed&&h,L=_xeUtils.default.isUndefined(L)||_xeUtils.default.isNull(L)?B:L,H="ellipsis"===L,O="title"===L,M=!0===L||"tooltip"===L,L=O||M||H,D={},C=C||v,v=z["".concat(l,":").concat(s.id)],z=f&&m.showMessage&&("default"===m.message?d||1<V.length:"inline"===m.message),f={colid:s.id},I={$table:ie,$grid:ie.xegrid,seq:e,rowid:l,row:a,rowIndex:r,$rowIndex:n,_rowIndex:i,column:s,columnIndex:w,$columnIndex:c,_columnIndex:ae,fixed:t,type:renderType,isHidden:h,level:o,visibleData:_,data:V,items:U};if(j&&!L&&(H=L=!0),(O||M||E||F)&&(D.onMouseenter=function(e){he()||(O?(0,_dom.updateCellTitle)(e.currentTarget,s):(M||E)&&ie.triggerBodyTooltipEvent(e,I),ie.dispatchEvent("cell-mouseenter",Object.assign({cell:e.currentTarget},I),e))}),(M||E||F)&&(D.onMouseleave=function(e){he()||((M||E)&&ie.handleTargetLeaveEvent(e),ie.dispatchEvent("cell-mouseleave",Object.assign({cell:e.currentTarget},I),e))}),(G.range||N)&&(D.onMousedown=function(e){ie.triggerCellMousedownEvent(e,I)}),D.onClick=function(e){ie.triggerCellClickEvent(e,I)},D.onDblclick=function(e){ie.triggerCellDblclickEvent(e,I)},g.length){d=(0,_util.mergeBodyMethod)(g,i,ae);if(d){var $=d.rowspan,k=d.colspan;if(!$||!k)return null;1<$&&(f.rowspan=$),1<k&&(f.colspan=k)}}else if(Y){e=Y(I)||{},l=e.rowspan,$=void 0===l?1:l,r=e.colspan,k=void 0===r?1:r;if(!$||!k)return null;1<$&&(f.rowspan=$),1<k&&(f.colspan=k)}!(h=h&&g&&(1<f.colspan||1<f.rowspan)?!1:h)&&W&&(S||Z)&&(y.showStatus||y.showUpdateStatus)&&(u=ie.isUpdateByRow(a,s.field));n=[];return h&&B&&K?n.push((0,_vue.h)("div",{class:["vxe-cell",{"c--title":O,"c--tooltip":M,"c--ellipsis":H}],style:{maxHeight:L&&(T||b)?"".concat(T||b,"px"):""}})):(n.push.apply(n,__spreadArray(__spreadArray([],ne(I),!1),[(0,_vue.h)("div",{class:["vxe-cell",{"c--title":O,"c--tooltip":M,"c--ellipsis":H}],style:{maxHeight:L&&(T||b)?"".concat(T||b,"px"):""},title:O?ie.getCellLabel(a,s):null},s.renderCell(I))],!1)),z&&v&&(w=v.rule,t=te?te.valid:null,o=__assign(__assign({},I),v),n.push((0,_vue.h)("div",{class:["vxe-cell--valid-error-hint",(0,_dom.getPropClass)(m.className,o)],style:w&&w.maxWidth?{width:"".concat(w.maxWidth,"px")}:null},t?ie.callSlot(t,o):[(0,_vue.h)("span",{class:"vxe-cell--valid-error-msg"},v.content)])))),(0,_vue.h)("td",__assign(__assign(__assign({class:["vxe-body--column",s.id,((_={})["col--".concat(C)]=C,_["col--".concat(Q)]=Q,_["col--last"]=c===q.length-1,_["col--tree-node"]=le,_["col--edit"]=re,_["col--ellipsis"]=L,_["fixed--hidden"]=h,_["col--dirty"]=u,_["col--active"]=W&&re&&x.row===a&&(x.column===s||"row"===y.mode),_["col--valid-error"]=!!v,_["col--current"]=P===s,_),(0,_dom.getPropClass)(oe,I),(0,_dom.getPropClass)(ee,I),(0,_dom.getPropClass)(X,I)],key:A||J.useKey?s.id:c},f),{style:Object.assign({height:L&&(T||b)?"".concat(T||b,"px"):""},_xeUtils.default.isFunction(R)?R(I):R,_xeUtils.default.isFunction(p)?p(I):p)}),D),n)},N=function(f,h,g){var x=se.stripe,_=se.rowKey,m=se.highlightHoverRow,y=se.rowClassName,w=se.rowStyle,b=se.showOverflow,T=se.editConfig,S=se.treeConfig,C=ce.hasFixedColumn,L=ce.treeExpandedMaps,R=ce.scrollYLoad,E=ce.rowExpandedMaps,H=ce.expandColumn,O=ce.selectRadioRow,M=ce.pendingRowMaps,D=ce.pendingRowList,I=ue.fullAllDataRowIdData,$=ve.value,k=t.value,q=d.value,U=de.value,A=fe.value,B=q.transform,X=q.children||q.childrenField,Y=[];return h.forEach(function(t,o){var e,l={},a=ie.getRowIndex(t),r=((A.isHover||m)&&(l.onMouseenter=function(e){he()||ie.triggerHoverEvent(e,{row:t,rowIndex:a})},l.onMouseleave=function(){he()||ie.clearHoverRow()}),(0,_util.getRowid)(ie,t)),n=I[r],i=0,s=-1,c=0,n=(n&&(i=n.level,s=n.seq,c=n._index),{$table:ie,seq:s,rowid:r,fixed:f,type:renderType,level:i,row:t,rowIndex:a,$rowIndex:o,_rowIndex:c}),u=H&&!!E[r],d=!1,p=[],v=!1;T&&(v=ie.isInsertByRow(t)),!S||R||B||(d=(p=t[X])&&p.length&&!!L[r]),Y.push((0,_vue.h)("tr",__assign({class:["vxe-body--row",S?"row--level-".concat(i):"",{"row--stripe":x&&(ie.getVTRowIndex(t)+1)%2==0,"is--new":v,"is--expand-row":u,"is--expand-tree":d,"row--new":v&&(U.showStatus||U.showInsertStatus),"row--radio":k.highlight&&ie.eqRow(O,t),"row--checked":$.highlight&&ie.isCheckedByCheckboxRow(t),"row--pending":D.length&&!!M[r]},(0,_dom.getPropClass)(y,n)],rowid:r,style:w?_xeUtils.default.isFunction(w)?w(n):w:null,key:_||A.useKey||S?r:o},l),g.map(function(e,l){return V(s,r,f,i,t,a,o,c,e,l,g,h)}))),u&&(v={},(n=F.value.height)&&(v.height="".concat(n,"px")),S&&(v.paddingLeft="".concat(i*q.indent+30,"px")),u=H.showOverflow,u=_xeUtils.default.isUndefined(u)||_xeUtils.default.isNull(u)?b:u,e={$table:ie,seq:s,column:H,fixed:f,type:renderType,level:i,row:t,rowIndex:a,$rowIndex:o,_rowIndex:c},Y.push((0,_vue.h)("tr",__assign({class:"vxe-body--expanded-row",key:"expand_".concat(r),style:w?_xeUtils.default.isFunction(w)?w(e):w:null},l),[(0,_vue.h)("td",{class:{"vxe-body--expanded-column":1,"fixed--hidden":f&&!C,"col--ellipsis":u},colspan:g.length},[(0,_vue.h)("div",{class:{"vxe-body--expanded-cell":1,"is--ellipsis":n},style:v},[H.renderData(e)])])]))),d&&Y.push.apply(Y,N(f,p,g))}),Y},M=0,D=0,I=0,$=!1,p=function(a,r,e,n,i){function s(){var e,l,t,o;I<M&&(e=_.fixedType,D=Math.max(5,Math.floor(1.5*D)),M<(I+=D)&&(D-=I-M),o=f.scrollTop,l=f.clientHeight,t=f.scrollHeight,o=o+D*(r?-1:1),f.scrollTop=o,p&&(p.scrollTop=o),v&&(v.scrollTop=o),(r?o<t-l:0<=o)&&(x=setTimeout(s,10)),ie.dispatchEvent("scroll",{type:renderType,fixed:e,scrollTop:f.scrollTop,scrollLeft:f.scrollLeft,scrollHeight:f.scrollHeight,scrollWidth:f.scrollWidth,bodyHeight:h,bodyWidth:g,isX:n,isY:i},a))}var l=ue.elemStore,t=ce.scrollXLoad,o=ce.scrollYLoad,c=w.value,u=b.value,d=T.value,p=u?u.$el:null,v=d?d.$el:null,f=c.$el,u=l["main-body-ySpace"],d=u?u.value:null,c=l["main-body-xSpace"],u=c?c.value:null,h=(o&&d?d:f).clientHeight,g=(t&&u?u:f).clientWidth,l=$===r?Math.max(0,M-I):0;$=r,M=Math.abs(r?e-l:e+l),I=D=0,clearTimeout(x);s()};(0,_vue.onMounted)(function(){(0,_vue.nextTick)(function(){var e=_.fixedType,l=ue.elemStore,e="".concat(e||"main","-body-"),t=S.value;l["".concat(e,"wrapper")]=S,l["".concat(e,"table")]=C,l["".concat(e,"colgroup")]=L,l["".concat(e,"list")]=R,l["".concat(e,"xSpace")]=E,l["".concat(e,"ySpace")]=H,l["".concat(e,"emptyBlock")]=O,t&&(t.onscroll=o,t._onscroll=o)})}),(0,_vue.onBeforeUnmount)(function(){var e=S.value;clearTimeout(x),e&&(e._onscroll=null,e.onscroll=null)}),(0,_vue.onUnmounted)(function(){var e=_.fixedType,l=ue.elemStore,e="".concat(e||"main","-body-");l["".concat(e,"wrapper")]=null,l["".concat(e,"table")]=null,l["".concat(e,"colgroup")]=null,l["".concat(e,"list")]=null,l["".concat(e,"xSpace")]=null,l["".concat(e,"ySpace")]=null,l["".concat(e,"emptyBlock")]=null});return function(){var e=_.fixedColumn,l=_.fixedType,t=_.tableColumn,o=se.keyboardConfig,a=se.showOverflow,r=se.spanMethod,n=se.mouseConfig,i=ce.tableData,s=ce.mergeList,c=ce.scrollYLoad,u=ce.isAllOverflow,d=ue.visibleColumn,p=q.slots,v=pe.value,f=Y.value,h=W.value,g=X.value,c=(l&&(t=ce.expandColumn||!(c||a&&u)||s.length||r||o&&h.isMerge?d:e),p?p.empty:null);return s=c?ie.callSlot(c,{$table:ie,$grid:ie.xegrid}):(u=(a=f.name?_vXETable.VXETable.renderer.get(f.name):null)?a.renderEmpty:null)?(0,_vn.getSlotVNs)(u(f,{$table:ie})):se.emptyText||_conf.default.i18n("vxe.table.emptyText"),(0,_vue.h)("div",__assign({ref:S,class:["vxe-table--body-wrapper",l?"fixed-".concat(l,"--wrapper"):"body--wrapper"],xid:y},"wheel"===v.mode?{onWheel:k}:{}),[l?(0,_vue.createCommentVNode)():(0,_vue.h)("div",{ref:E,class:"vxe-body--x-space"}),(0,_vue.h)("div",{ref:H,class:"vxe-body--y-space"}),(0,_vue.h)("table",{ref:C,class:"vxe-table--body",xid:y,cellspacing:0,cellpadding:0,border:0},[(0,_vue.h)("colgroup",{ref:L},t.map(function(e,l){return(0,_vue.h)("col",{name:e.id,key:l})})),(0,_vue.h)("tbody",{ref:R},N(l,i,t))]),(0,_vue.h)("div",{class:"vxe-table--checkbox-range"}),n&&g.area?(0,_vue.h)("div",{class:"vxe-table--cell-area"},[(0,_vue.h)("span",{class:"vxe-table--cell-main-area"},g.extension?[(0,_vue.h)("span",{class:"vxe-table--cell-main-area-btn",onMousedown:function(e){ie.triggerCellExtendMousedownEvent(e,{$table:ie,fixed:l,type:renderType})}})]:[]),(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"})]):null,l?null:(0,_vue.h)("div",{class:"vxe-table--empty-block",ref:O},[(0,_vue.h)("div",{class:"vxe-table--empty-content"},s)])])}}});exports.default=_default;