UNPKG

vxe-table

Version:

一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟滚动、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、虚拟列表、模态窗口、自定义模板、渲染器、贼灵活的配置项、扩展接口等...

1 lines 11.1 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _ctor=_interopRequireDefault(require("xe-utils/ctor")),_conf=_interopRequireDefault(require("../../conf")),_vXETable=_interopRequireDefault(require("../../v-x-e-table")),_tools=require("../../tools"),_util=require("./util");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _defineProperty(e,l,t){return l in e?Object.defineProperty(e,l,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[l]=t,e}function _toConsumableArray(e){return _arrayWithoutHoles(e)||_iterableToArray(e)||_unsupportedIterableToArray(e)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(e,l){if(e){if("string"==typeof e)return _arrayLikeToArray(e,l);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(e,l):void 0}}function _iterableToArray(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}function _arrayWithoutHoles(e){if(Array.isArray(e))return _arrayLikeToArray(e)}function _arrayLikeToArray(e,l){(null==l||l>e.length)&&(l=e.length);for(var t=0,r=new Array(l);t<l;t++)r[t]=e[t];return r}var scrollProcessTimeout,cellType="body";function isOperateMouse(e){return e._isResize||e.lastScrollTime&&Date.now()<e.lastScrollTime+e.delayHover}function renderLine(e,l,t,r,o,n){var a=n.column,i=t.treeOpts,s=t.treeConfig,c=a.slots,d=a.treeNode;return c&&c.line?c.line.call(t,n,e):s&&d&&i.line?[e("div",{class:"vxe-tree--line-wrapper"},[e("div",{class:"vxe-tree--line",style:{height:"".concat((0,_util.calcTreeLine)(n,o),"px"),left:"".concat(r*i.indent+(r?2-(0,_util.getOffsetSize)(t):0)+16,"px")}})])]:[]}function renderColumn(e,l,t,r,o,n,a,i,s,c,d,u,p,f,y,v){var g,m,x=t.$listeners,b=t.afterFullData,h=t.tableData,w=t.height,_=t.columnKey,T=t.overflowX,S=t.scrollXLoad,C=t.scrollYLoad,O=t.highlightCurrentRow,$=t.showOverflow,k=t.align,L=t.currentColumn,I=t.cellClassName,E=t.cellStyle,R=t.mergeList,A=t.spanMethod,P=t.radioOpts,B=t.checkboxOpts,q=t.expandOpts,D=t.treeOpts,M=t.tooltipOpts,H=t.mouseConfig,j=t.editConfig,N=t.editOpts,U=t.editRules,X=t.validOpts,F=t.editStore,Y=t.validStore,V=p.type,W=p.cellRender,z=p.editRender,K=p.align,G=p.showOverflow,J=p.className,Q=p.treeNode,Z=F.actived,ee=M.enabled,le=t.getColumnIndex(p),te=t.getVTColumnIndex(p),re=a?p.fixed!==a:p.fixed&&T,oe=_ctor.default.isUndefined(G)||_ctor.default.isNull(G)?$:G,ne="ellipsis"===oe,ae="title"===oe,ie=!0===oe||"tooltip"===oe,se=ae||ie||ne,ce={},de=K||k,ue=Y.row===s&&Y.column===p,pe=U&&("default"===X.message?w||1<h.length:"inline"===X.message),fe={"data-colid":p.id},ye=x["cell-mouseenter"],ve=x["cell-mouseleave"],ge=z&&j&&"dblclick"===N.trigger,me={$table:t,$seq:r,seq:o,rowid:n,row:s,rowIndex:c,$rowIndex:d,_rowIndex:u,column:p,columnIndex:le,$columnIndex:f,_columnIndex:te,fixed:a,type:cellType,isHidden:re,level:i,visibleData:b,data:h,items:v};if(!S&&!C||se||(ne=se=!0),(ae||ie||ee||ye)&&(ce.mouseenter=function(e){isOperateMouse(t)||(ae?_tools.DomTools.updateCellTitle(e.currentTarget,p):(ie||ee)&&t.triggerBodyTooltipEvent(e,me),ye&&t.emitEvent("cell-mouseenter",Object.assign({cell:e.currentTarget},me),e))}),(ie||ee||ve)&&(ce.mouseleave=function(e){isOperateMouse(t)||((ie||ee)&&t.handleTargetLeaveEvent(e),ve&&t.emitEvent("cell-mouseleave",Object.assign({cell:e.currentTarget},me),e))}),(B.range||H)&&(ce.mousedown=function(e){t.triggerCellMousedownEvent(e,me)}),(O||x["cell-click"]||z&&j||"row"===q.trigger||"cell"===q.trigger||"row"===P.trigger||"radio"===p.type&&"cell"===P.trigger||"row"===B.trigger||"checkbox"===p.type&&"cell"===B.trigger||"row"===D.trigger||p.treeNode&&"cell"===D.trigger)&&(ce.click=function(e){t.triggerCellClickEvent(e,me)}),(ge||x["cell-dblclick"])&&(ce.dblclick=function(e){t.triggerCellDBLClickEvent(e,me)}),R.length){var xe=(0,_util.mergeBodyMethod)(R,u,te);if(xe){var be=xe.rowspan,he=xe.colspan;if(!be||!he)return null;1<be&&(fe.rowspan=be),1<he&&(fe.colspan=he)}}else if(A){var we=A(me)||{},_e=we.rowspan,Te=void 0===_e?1:_e,Se=we.colspan,Ce=void 0===Se?1:Se;if(!Te||!Ce)return null;1<Te&&(fe.rowspan=Te),1<Ce&&(fe.colspan=Ce)}re&&R&&(1<fe.colspan||1<fe.rowspan)&&(re=!1),!re&&j&&(z||W)&&N.showStatus&&(m=t.isUpdateByRow(s,p.property));var Oe=[];return $&&re?Oe.push(e("div",{class:["vxe-cell",{"c--title":ae,"c--tooltip":ie,"c--ellipsis":ne}]})):(Oe.push.apply(Oe,_toConsumableArray(renderLine(e,l,t,i,v,me)).concat([e("div",{class:["vxe-cell",{"c--title":ae,"c--tooltip":ie,"c--ellipsis":ne}],attrs:{title:ae?_tools.UtilTools.getCellLabel(s,p,me):null}},p.renderCell(e,me))])),pe&&ue&&Oe.push(e("div",{class:"vxe-cell--valid",style:Y.rule&&Y.rule.maxWidth?{width:"".concat(Y.rule.maxWidth,"px")}:null},[e("span",{class:"vxe-cell--valid-msg"},Y.content)]))),e("td",{class:["vxe-body--column",p.id,(g={},_defineProperty(g,"col--".concat(de),de),_defineProperty(g,"col--".concat(V),V),_defineProperty(g,"col--last",f===y.length-1),_defineProperty(g,"col--tree-node",Q),_defineProperty(g,"col--edit",!!z),_defineProperty(g,"col--ellipsis",se),_defineProperty(g,"fixed--hidden",re),_defineProperty(g,"col--dirty",m),_defineProperty(g,"col--actived",j&&z&&Z.row===s&&(Z.column===p||"row"===N.mode)),_defineProperty(g,"col--valid-error",ue),_defineProperty(g,"col--current",L===p),g),_tools.UtilTools.getClass(J,me),_tools.UtilTools.getClass(I,me)],key:_?p.id:f,attrs:fe,style:E?_ctor.default.isFunction(E)?E(me):E:null,on:ce},Oe)}function renderRows(f,y,v,g,m,x,b,h){var w=v.stripe,_=v.rowKey,T=v.highlightHoverRow,S=v.rowClassName,C=v.rowStyle,O=v.showOverflow,$=v.treeConfig,k=v.treeOpts,L=v.treeExpandeds,I=v.scrollYLoad,E=v.scrollYStore,R=v.editStore,A=v.rowExpandeds,P=v.radioOpts,B=v.checkboxOpts,q=v.expandColumn,D=[];return b.forEach(function(t,r){var e={},o=r,n=o+1;I&&(n+=E.startIndex);var a=v.getVTRowIndex(t);o=v.getRowIndex(t),T&&(e.mouseenter=function(e){isOperateMouse(v)||v.triggerHoverEvent(e,{row:t,rowIndex:o})},e.mouseleave=function(){isOperateMouse(v)||v.clearHoverRow()});var i=_tools.UtilTools.getRowid(v,t),l={$table:v,$seq:g,seq:n,rowid:i,fixed:x,type:cellType,level:m,row:t,rowIndex:o,$rowIndex:r};if(D.push(f("tr",{class:["vxe-body--row",{"row--stripe":w&&(v.getVTRowIndex(t)+1)%2==0,"is--new":-1<R.insertList.indexOf(t),"row--radio":P.highlight&&v.selectRow===t,"row--checked":B.highlight&&v.isCheckedByCheckboxRow(t)},S?_ctor.default.isFunction(S)?S(l):S:""],attrs:{"data-rowid":i},style:C?_ctor.default.isFunction(C)?C(l):C:null,key:_||$?i:r,on:e},h.map(function(e,l){return renderColumn(f,y,v,g,n,i,x,m,t,o,r,a,e,l,h,b)}))),q&&A.length&&-1<A.indexOf(t)){var s;$&&(s={paddingLeft:"".concat(m*k.indent+30,"px")});var c=q.showOverflow,d=_ctor.default.isUndefined(c)||_ctor.default.isNull(c)?O:c,u={$table:v,$seq:g,seq:n,column:q,fixed:x,type:cellType,level:m,row:t,rowIndex:o,$rowIndex:r};D.push(f("tr",{class:"vxe-body--expanded-row",key:"expand_".concat(i),style:C?_ctor.default.isFunction(C)?C(u):C:null,on:e},[f("td",{class:["vxe-body--expanded-column",{"fixed--hidden":x,"col--ellipsis":d}],attrs:{colspan:h.length}},[f("div",{class:"vxe-body--expanded-cell",style:s},[q.renderData(f,u)])])]))}if($&&L.length){var p=t[k.children];p&&p.length&&-1<L.indexOf(t)&&D.push.apply(D,_toConsumableArray(renderRows(f,y,v,g?"".concat(g,".").concat(n):"".concat(n),m+1,x,p,h)))}}),D}function syncBodyScroll(e,l,t){(l||t)&&(l&&(l.onscroll=null,l.scrollTop=e),t&&(t.onscroll=null,t.scrollTop=e),clearTimeout(scrollProcessTimeout),scrollProcessTimeout=setTimeout(function(){l&&(l.onscroll=l._onscroll),t&&(t.onscroll=t._onscroll)},300))}var _default={name:"VxeTableBody",props:{tableData:Array,tableColumn:Array,fixedColumn:Array,size:String,fixedType:String},mounted:function(){var e=this.$parent,l=this.$el,t=this.$refs,r=this.fixedType,o=e.elemStore,n="".concat(r||"main","-body-");o["".concat(n,"wrapper")]=l,o["".concat(n,"table")]=t.table,o["".concat(n,"colgroup")]=t.colgroup,o["".concat(n,"list")]=t.tbody,o["".concat(n,"xSpace")]=t.xSpace,o["".concat(n,"ySpace")]=t.ySpace,o["".concat(n,"emptyBlock")]=t.emptyBlock,this.$el.onscroll=this.scrollEvent,this.$el._onscroll=this.scrollEvent},beforeDestroy:function(){this.$el._onscroll=null,this.$el.onscroll=null},render:function(t){var e,l=this._e,r=this.$parent,o=this.fixedColumn,n=this.fixedType,a=r.$scopedSlots,i=r.tId,s=r.tableData,c=r.tableColumn,d=r.showOverflow,u=r.keyboardConfig,p=r.keyboardOpts,f=r.mergeList,y=r.spanMethod,v=r.scrollXLoad,g=r.emptyRender,m=r.emptyOpts,x=r.mouseConfig,b=r.mouseOpts;if(f.length||y||u&&p.isMerge||(n&&d?c=o:v&&n&&(c=o)),a.empty)e=a.empty.call(this,{$table:r},t);else{var h=g?_vXETable.default.renderer.get(m.name):null;e=h&&h.renderEmpty?h.renderEmpty.call(this,t,m,{$table:r}):r.emptyText||_conf.default.i18n("vxe.table.emptyText")}return t("div",{class:["vxe-table--body-wrapper",n?"fixed-".concat(n,"--wrapper"):"body--wrapper"],attrs:{"data-tid":i}},[n?l():t("div",{class:"vxe-body--x-space",ref:"xSpace"}),t("div",{class:"vxe-body--y-space",ref:"ySpace"}),t("table",{class:"vxe-table--body",attrs:{"data-tid":i,cellspacing:0,cellpadding:0,border:0},ref:"table"},[t("colgroup",{ref:"colgroup"},c.map(function(e,l){return t("col",{attrs:{name:e.id},key:l})})),t("tbody",{ref:"tbody"},renderRows(t,this,r,"",0,n,s,c))]),t("div",{class:"vxe-table--checkbox-range"}),x&&b.area?t("div",{class:"vxe-table--cell-area"},[t("span",{class:"vxe-table--cell-main-area"},b.extension?[t("span",{class:"vxe-table--cell-main-area-btn",on:{mousedown:function(e){r.triggerCellExtendMousedownEvent(e,{$table:r,fixed:n,type:cellType})}}})]:null),t("span",{class:"vxe-table--cell-copy-area"}),t("span",{class:"vxe-table--cell-extend-area"}),t("span",{class:"vxe-table--cell-multi-area"}),t("span",{class:"vxe-table--cell-active-area"})]):null,n?null:t("div",{class:"vxe-table--empty-block",ref:"emptyBlock"},[t("div",{class:"vxe-table--empty-content"},e)])])},methods:{scrollEvent:function(e){var l=this.$el,t=this.$parent,r=this.fixedType,o=t.$refs,n=t.highlightHoverRow,a=t.scrollXLoad,i=t.scrollYLoad,s=t.lastScrollTop,c=t.lastScrollLeft,d=o.tableHeader,u=o.tableBody,p=o.leftBody,f=o.rightBody,y=o.tableFooter,v=o.validTip,g=d?d.$el:null,m=y?y.$el:null,x=u.$el,b=p?p.$el:null,h=f?f.$el:null,w=l.scrollTop,_=x.scrollLeft,T=_!==c,S=w!==s;t.lastScrollTop=w,t.lastScrollLeft=_,t.lastScrollTime=Date.now(),n&&t.clearHoverRow(),b&&"left"===r?syncBodyScroll(w=b.scrollTop,x,h):h&&"right"===r?syncBodyScroll(w=h.scrollTop,x,b):(T&&(g&&(g.scrollLeft=x.scrollLeft),m&&(m.scrollLeft=x.scrollLeft)),(b||h)&&(t.checkScrolling(),S&&syncBodyScroll(w,b,h))),a&&T&&t.triggerScrollXEvent(e),i&&S&&t.triggerScrollYEvent(e),T&&v&&v.visible&&v.updatePlacement(),t.emitEvent("scroll",{type:cellType,fixed:r,scrollTop:w,scrollLeft:_,isX:T,isY:S},e)}}};exports.default=_default;