UNPKG

vxe-table-demonic

Version:

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

1 lines 12.8 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"),_size=require("../../hooks/size"),_dom=require("../../tools/dom"),_utils=require("../../tools/utils"),_log=require("../../tools/log"),_event=require("../../tools/event"),_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 o,t=1,n=arguments.length;t<n;t++)for(var i in o=arguments[t])Object.prototype.hasOwnProperty.call(o,i)&&(e[i]=o[i]);return e}).apply(this,arguments)},_default=(0,_vue.defineComponent)({name:"VxeToolbar",props:{loading:Boolean,refresh:[Boolean,Object],import:[Boolean,Object],export:[Boolean,Object],print:[Boolean,Object],zoom:[Boolean,Object],custom:[Boolean,Object],buttons:{type:Array,default:function(){return _conf.default.toolbar.buttons}},tools:{type:Array,default:function(){return _conf.default.toolbar.tools}},perfect:{type:Boolean,default:function(){return _conf.default.toolbar.perfect}},size:{type:String,default:function(){return _conf.default.toolbar.size||_conf.default.size}},className:[String,Function]},emits:["button-click","tool-click"],setup:function(O,e){function n(){var e=N.columns,o=L.getComputeMaps().computeCustomOpts.value.checkMethod;M.isAll=e.every(function(e){return!!o&&!o({column:e})||e.visible}),M.isIndeterminate=!M.isAll&&e.some(function(e){return(!o||o({column:e}))&&(e.visible||e.halfVisible)})}function i(){L.handleCustom()}function o(e){!v()||M.visible||(M.visible=!0,n(),d("open",e))}function t(e){M.visible&&(f(),d("close",e))}function l(o){var e=N.columns;(e=_xeUtils.default.findTree(e,function(e){return e===o}))&&e.parent&&(e=e.parent).children&&e.children.length&&(e.visible=e.children.every(function(e){return e.visible}),e.halfVisible=!e.visible&&e.children.some(function(e){return e.visible||e.halfVisible}),l(e))}function c(e){var o=A.value;(0,_dom.getEventTargetNode)(e,o).flag||t(e)}function r(e){t(e)}function g(e){var o=N.isRefresh,t=F.value;if(!o){o=t.queryMethod||t.query;if(o){N.isRefresh=!0;try{Promise.resolve(o({})).catch(function(e){return e}).then(function(){N.isRefresh=!1})}catch(e){N.isRefresh=!1}}else I&&(N.isRefresh=!0,I.triggerToolbarCommitEvent({code:t.code||"reload"},e).catch(function(e){return e}).then(function(){N.isRefresh=!1}))}}function C(e){I&&I.triggerZoomEvent(e)}function T(){v()&&L.openImport()}function E(){v()&&L.openExport()}function B(){v()&&L.openPrint()}var L,R=e.slots,u=e.emit,a=_xeUtils.default.uniqueId(),k=(0,_size.useSize)(O),N=(0,_vue.reactive)({isRefresh:!1,columns:[]}),y=(0,_vue.ref)(),A=(0,_vue.ref)(),M=(0,_vue.reactive)({isAll:!1,isIndeterminate:!1,activeBtn:!1,activeWrapper:!1,visible:!1}),s={refElem:y},V={xID:a,props:O,context:e,reactData:N,getRefMaps:function(){return s}},I=(0,_vue.inject)("$xegrid",null),F=(0,_vue.computed)(function(){return Object.assign({},_conf.default.toolbar.refresh,O.refresh)}),S=(0,_vue.computed)(function(){return Object.assign({},_conf.default.toolbar.import,O.import)}),w=(0,_vue.computed)(function(){return Object.assign({},_conf.default.toolbar.export,O.export)}),U=(0,_vue.computed)(function(){return Object.assign({},_conf.default.toolbar.print,O.print)}),z=(0,_vue.computed)(function(){return Object.assign({},_conf.default.toolbar.zoom,O.zoom)}),D=(0,_vue.computed)(function(){return Object.assign({},_conf.default.toolbar.custom,O.custom)}),v=function(){if(L)return!0;(0,_log.errLog)("vxe.error.barUnableLink")},f=function(){var e=O.custom,o=D.value;M.visible&&(M.visible=!1,e)&&!o.immediate&&i()},d=function(e,o){(I||L).dispatchEvent("custom",{type:e},o)},H=function(e){f(),d("confirm",e)},K=function(e){L.resetColumn(!0),f(),d("reset",e)},G=function(e){var o=!e.visible,t=D.value;_xeUtils.default.eachTree([e],function(e){e.visible=o,e.halfVisible=!1}),l(e),O.custom&&t.immediate&&i(),n()},X=function(e,o){var t=L.getComputeMaps().computeIsMaxFixedColumn.value;e.fixed===o?L.clearColumnFixed(e):t&&!e.fixed||L.setColumnFixed(e,o)},P=function(){var e=N.columns,o=L.getComputeMaps().computeCustomOpts.value.checkMethod,t=!M.isAll;_xeUtils.default.eachTree(e,function(e){o&&!o({column:e})||(e.visible=t,e.halfVisible=!1)}),M.isAll=t,n()},W=function(e){(M.visible?t:o)(e)},Z=function(e){M.activeBtn=!0,o(e)},J=function(e){M.activeBtn=!1,setTimeout(function(){M.activeBtn||M.activeWrapper||t(e)},300)},Q=function(e){M.activeWrapper=!0,o(e)},Y=function(e){M.activeWrapper=!1,setTimeout(function(){M.activeBtn||M.activeWrapper||t(e)},300)},q=function(e,o){var t,n=o.code;n&&(I?I.triggerToolbarBtnEvent(o,e):(t=_vXETable.VXETable.commands.get(n),o={code:n,button:o,$table:L,$grid:I,$event:e},t&&(t.commandMethod?t.commandMethod(o):"development"===process.env.NODE_ENV&&(0,_log.errLog)("vxe.error.notCommands",[n])),V.dispatchEvent("button-click",o,e)))},$=function(e,o){var t,n=o.code;n&&(I?I.triggerToolbarTolEvent(o,e):(t=_vXETable.VXETable.commands.get(n),o={code:n,tool:o,$table:L,$grid:I,$event:e},t&&(t.commandMethod?t.commandMethod(o):"development"===process.env.NODE_ENV&&(0,_log.errLog)("vxe.error.notCommands",[n])),V.dispatchEvent("tool-click",o,e)))},j=function(e,t){e=e.dropdowns;return e?e.map(function(o,e){return!1===o.visible?(0,_vue.createCommentVNode)():(0,_vue.h)((0,_vue.resolveComponent)("vxe-button"),{key:e,disabled:o.disabled,loading:o.loading,type:o.type,icon:o.icon,circle:o.circle,round:o.round,status:o.status,content:o.name,onClick:function(e){return(t?q:$)(e,o)}})}):[]};Object.assign(V,{dispatchEvent:function(e,o,t){u(e,Object.assign({$toolbar:V,$event:t},o))},syncUpdate:function(e){var o=e.collectColumn;L=e.$table,N.columns=o}}),(0,_vue.onMounted)(function(){_event.GlobalEvent.on(V,"mousedown",c),_event.GlobalEvent.on(V,"blur",r)}),(0,_vue.onUnmounted)(function(){_event.GlobalEvent.off(V,"mousedown"),_event.GlobalEvent.off(V,"blur")}),(0,_vue.nextTick)(function(){var e=O.refresh,o=F.value,o=o.queryMethod||o.query,e=(!e||I||o||(0,_log.warnLog)("vxe.error.notFunc",["queryMethod"]),D.value);"development"===process.env.NODE_ENV&&e.isFooter&&(0,_log.warnLog)("vxe.error.notValidators",["custom.isFooter","custom.showFooter"])});return V.renderVN=function(){var s,v,f,d,e,o,c,r,t=O.perfect,n=O.loading,i=O.refresh,l=O.zoom,u=O.custom,a=O.className,_=k.value,m=F.value,p=S.value,b=w.value,h=U.value,x=z.value;return(0,_vue.h)("div",{ref:y,class:["vxe-toolbar",a?_xeUtils.default.isFunction(a)?a({$toolbar:V}):a:"",((a={})["size--".concat(_)]=_,a["is--perfect"]=t,a["is--loading"]=n,a)]},[(0,_vue.h)("div",{class:"vxe-buttons--wrapper"},(_=O.buttons,(t=R.buttons)?(0,_vn.getSlotVNs)(t({$grid:I,$table:L})):(r=[],_&&_.forEach(function(o){var e,t,n,i=o.dropdowns,l=o.buttonRender;!1!==o.visible&&(e=l?_vXETable.VXETable.renderer.get(l.name):null,l&&e&&e.renderToolbarButton?(t=e.toolbarButtonClassName,n={$grid:I,$table:L,button:o},r.push((0,_vue.h)("span",{class:["vxe-button--item",t?_xeUtils.default.isFunction(t)?t(n):t:""]},(0,_vn.getSlotVNs)(e.renderToolbarButton(l,n))))):r.push((0,_vue.h)((0,_vue.resolveComponent)("vxe-button"),{disabled:o.disabled,loading:o.loading,type:o.type,icon:o.icon,circle:o.circle,round:o.round,status:o.status,content:o.name,destroyOnClose:o.destroyOnClose,placement:o.placement,transfer:o.transfer,onClick:function(e){return q(e,o)}},i&&i.length?{dropdowns:function(){return j(o,!0)}}:{})))}),r))),(0,_vue.h)("div",{class:"vxe-tools--wrapper"},(n=O.tools,(a=R.tools)?(0,_vn.getSlotVNs)(a({$grid:I,$table:L})):(c=[],n&&n.forEach(function(o){var e,t,n,i=o.dropdowns,l=o.toolRender;!1!==o.visible&&(e=l?_vXETable.VXETable.renderer.get(l.name):null,l&&e&&e.renderToolbarTool?(t=e.toolbarToolClassName,n={$grid:I,$table:L,tool:o},c.push((0,_vue.h)("span",{class:["vxe-tool--item",t?_xeUtils.default.isFunction(t)?t(n):t:""]},(0,_vn.getSlotVNs)(e.renderToolbarTool(l,n))))):c.push((0,_vue.h)((0,_vue.resolveComponent)("vxe-button"),{disabled:o.disabled,loading:o.loading,type:o.type,icon:o.icon,circle:o.circle,round:o.round,status:o.status,content:o.name,destroyOnClose:o.destroyOnClose,placement:o.placement,transfer:o.transfer,onClick:function(e){return $(e,o)}},i&&i.length?{dropdowns:function(){return j(o,!1)}}:{})))}),c))),(0,_vue.h)("div",{class:"vxe-tools--operate"},[O.import?(0,_vue.h)((0,_vue.resolveComponent)("vxe-button"),{circle:!0,icon:p.icon||_conf.default.icon.TOOLBAR_TOOLS_IMPORT,title:_conf.default.i18n("vxe.toolbar.import"),onClick:T}):(0,_vue.createCommentVNode)(),O.export?(0,_vue.h)((0,_vue.resolveComponent)("vxe-button"),{circle:!0,icon:b.icon||_conf.default.icon.TOOLBAR_TOOLS_EXPORT,title:_conf.default.i18n("vxe.toolbar.export"),onClick:E}):(0,_vue.createCommentVNode)(),O.print?(0,_vue.h)((0,_vue.resolveComponent)("vxe-button"),{circle:!0,icon:h.icon||_conf.default.icon.TOOLBAR_TOOLS_PRINT,title:_conf.default.i18n("vxe.toolbar.print"),onClick:B}):(0,_vue.createCommentVNode)(),i?(0,_vue.h)((0,_vue.resolveComponent)("vxe-button"),{circle:!0,icon:N.isRefresh?m.iconLoading||_conf.default.icon.TOOLBAR_TOOLS_REFRESH_LOADING:m.icon||_conf.default.icon.TOOLBAR_TOOLS_REFRESH,title:_conf.default.i18n("vxe.toolbar.refresh"),onClick:g}):(0,_vue.createCommentVNode)(),l&&I?(0,_vue.h)((0,_vue.resolveComponent)("vxe-button"),{circle:!0,icon:I.isMaximized()?x.iconOut||_conf.default.icon.TOOLBAR_TOOLS_MINIMIZE:x.iconIn||_conf.default.icon.TOOLBAR_TOOLS_FULLSCREEN,title:_conf.default.i18n("vxe.toolbar.zoom".concat(I.isMaximized()?"Out":"In")),onClick:C}):(0,_vue.createCommentVNode)(),u?(t=N.columns,v=D.value,f=!0,d=[],_={},a={},L&&(e=(o=L.getComputeMaps()).computeCustomOpts,o=o.computeIsMaxFixedColumn,s=e.value.checkMethod,f=o.value),"manual"!==v.trigger&&("hover"===v.trigger?(_.onMouseenter=Z,_.onMouseleave=J,a.onMouseenter=Q,a.onMouseleave=Y):_.onClick=W),_xeUtils.default.eachTree(t,function(e,o,t,n,i){var l,c=(0,_utils.formatText)(e.getTitle(),1),r=e.getKey(),u=e.children&&e.children.length,a=!!s&&!s({column:e});(u||r)&&(r=e.visible,l=e.halfVisible,d.push((0,_vue.h)("li",{class:["vxe-custom--option","level--".concat(e.level),{"is--group":u}]},[(0,_vue.h)("div",{title:c,class:["vxe-custom--checkbox-option",{"is--checked":r,"is--indeterminate":l,"is--disabled":a}],onClick:function(){a||G(e)}},[(0,_vue.h)("span",{class:["vxe-checkbox--icon",l?_conf.default.icon.TABLE_CHECKBOX_INDETERMINATE:r?_conf.default.icon.TABLE_CHECKBOX_CHECKED:_conf.default.icon.TABLE_CHECKBOX_UNCHECKED]}),(0,_vue.h)("span",{class:"vxe-checkbox--label"},c)]),!i&&v.allowFixed?(0,_vue.h)("div",{class:"vxe-custom--fixed-option"},[(0,_vue.h)("span",{class:["vxe-custom--fixed-left-option","left"===e.fixed?_conf.default.icon.TOOLBAR_TOOLS_FIXED_LEFT_ACTIVED:_conf.default.icon.TOOLBAR_TOOLS_FIXED_LEFT,{"is--checked":"left"===e.fixed,"is--disabled":f&&!e.fixed}],title:_conf.default.i18n("left"===e.fixed?"vxe.toolbar.cancelfixed":"vxe.toolbar.fixedLeft"),onClick:function(){X(e,"left")}}),(0,_vue.h)("span",{class:["vxe-custom--fixed-right-option","right"===e.fixed?_conf.default.icon.TOOLBAR_TOOLS_FIXED_RIGHT_ACTIVED:_conf.default.icon.TOOLBAR_TOOLS_FIXED_RIGHT,{"is--checked":"right"===e.fixed,"is--disabled":f&&!e.fixed}],title:_conf.default.i18n("right"===e.fixed?"vxe.toolbar.cancelfixed":"vxe.toolbar.fixedRight"),onClick:function(){X(e,"right")}})]):null])))}),e=M.isAll,o=M.isIndeterminate,(0,_vue.h)("div",{class:["vxe-custom--wrapper",{"is--active":M.visible}],ref:A},[(0,_vue.h)((0,_vue.resolveComponent)("vxe-button"),__assign({circle:!0,icon:v.icon||_conf.default.icon.TOOLBAR_TOOLS_CUSTOM,title:_conf.default.i18n("vxe.toolbar.custom")},_)),(0,_vue.h)("div",{class:"vxe-custom--option-wrapper"},[(0,_vue.h)("ul",{class:"vxe-custom--header"},[(0,_vue.h)("li",{class:"vxe-custom--option"},[(0,_vue.h)("div",{class:["vxe-custom--checkbox-option",{"is--checked":e,"is--indeterminate":o}],title:_conf.default.i18n("vxe.table.allTitle"),onClick:P},[(0,_vue.h)("span",{class:["vxe-checkbox--icon",o?_conf.default.icon.TABLE_CHECKBOX_INDETERMINATE:e?_conf.default.icon.TABLE_CHECKBOX_CHECKED:_conf.default.icon.TABLE_CHECKBOX_UNCHECKED]}),(0,_vue.h)("span",{class:"vxe-checkbox--label"},_conf.default.i18n("vxe.toolbar.customAll"))])])]),(0,_vue.h)("ul",__assign({class:"vxe-custom--body"},a),d),v.showFooter||v.isFooter?(0,_vue.h)("div",{class:"vxe-custom--footer"},[(0,_vue.h)("button",{class:"btn--reset",onClick:K},v.resetButtonText||_conf.default.i18n("vxe.toolbar.customRestore")),(0,_vue.h)("button",{class:"btn--confirm",onClick:H},v.confirmButtonText||_conf.default.i18n("vxe.toolbar.customConfirm"))]):null])])):(0,_vue.createCommentVNode)()])])},V},render:function(){return this.renderVN()}});exports.default=_default;