UNPKG

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 • 10.7 kB
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"),_vn=require("../../ui/src/vn"),_log=require("../../ui/src/log");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let{warnLog,errLog}=(0,_log.createComponentLog)("toolbar"),{getConfig,getIcon,getI18n,renderer,commands,createEvent,useFns}=_ui.VxeUI;function createReactData(){return{isRefresh:!1,connectFlag:0,columns:[]}}function createInternalData(){return{connectTable:null}}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeToolbar",props:{loading:Boolean,refresh:[Boolean,Object],refreshOptions:Object,import:[Boolean,Object],importOptions:Object,export:[Boolean,Object],exportOptions:Object,print:[Boolean,Object],printOptions:Object,zoom:[Boolean,Object],zoomOptions:Object,custom:[Boolean,Object],customOptions:Object,buttons:{type:Array,default:()=>getConfig().toolbar.buttons},tools:{type:Array,default:()=>getConfig().toolbar.tools},perfect:{type:Boolean,default:()=>getConfig().toolbar.perfect},size:{type:String,default:()=>getConfig().toolbar.size||getConfig().size},className:[String,Function]},emits:["button-click","tool-click"],setup(i,e){let{slots:u,emit:r}=e;var t=_xeUtils.default.uniqueId();let v=_ui.VxeUI.getComponent("VxeButton"),p=(0,_vue.inject)("$xeGrid",null),g=(0,_vue.inject)("$xeGantt",null),s=p||g,c=useFns.useSize(i).computeSize,m=(0,_vue.reactive)(createReactData()),b=createInternalData(),d=(0,_vue.ref)(),o={refElem:d},f={xID:t,props:i,context:e,reactData:m,internalData:b,getRefMaps:()=>o};let _=(0,_vue.computed)(()=>Object.assign({},_xeUtils.default.clone(getConfig().toolbar.refresh,!0),i.refreshOptions,i.refresh)),x=(0,_vue.computed)(()=>Object.assign({},_xeUtils.default.clone(getConfig().toolbar.import,!0),i.importOptions,i.import)),O=(0,_vue.computed)(()=>Object.assign({},_xeUtils.default.clone(getConfig().toolbar.export,!0),i.exportOptions,i.export)),h=(0,_vue.computed)(()=>Object.assign({},_xeUtils.default.clone(getConfig().toolbar.print,!0),i.printOptions,i.print)),T=(0,_vue.computed)(()=>Object.assign({},_xeUtils.default.clone(getConfig().toolbar.zoom,!0),i.zoomOptions,i.zoom)),C=(0,_vue.computed)(()=>Object.assign({},_xeUtils.default.clone(getConfig().toolbar.custom,!0),i.customOptions,i.custom)),n=(0,_vue.computed)(()=>{var e=b.connectTable;if((m.connectFlag||e)&&e)return e=e.getComputeMaps().computeCustomOpts,e.value;return{trigger:""}}),$=(0,_vue.computed)(()=>n.value.trigger),a=()=>{var e=b.connectTable;if(e)return!0;errLog("vxe.error.barUnableLink")},L=({$event:e})=>{var t=b.connectTable;t&&t.triggerCustomEvent&&t.triggerCustomEvent(e)},j=({$event:e})=>{var t=b.connectTable;t&&t.customOpenEvent(e)},k=({$event:t})=>{var e=b.connectTable;let o=e;if(o){let e=o.reactData.customStore;e.activeBtn=!1,setTimeout(()=>{e.activeBtn||e.activeWrapper||o.customCloseEvent(t)},350)}},R=({$event:e})=>{var t=m.isRefresh,o=_.value;if(!t){t=o.queryMethod||o.query;if(t){m.isRefresh=!0;try{Promise.resolve(t({})).catch(e=>e).then(()=>{m.isRefresh=!1})}catch(e){m.isRefresh=!1}}else s&&(m.isRefresh=!0,s.triggerToolbarCommitEvent({code:o.code||"reload"},e).catch(()=>{}).then(()=>{m.isRefresh=!1}))}},I=({$event:e})=>{s?s.triggerZoomEvent(e):warnLog("vxe.error.notProp",["zoom"])},P=()=>{var e;a()&&(e=b.connectTable,e)&&e.importData()},w=()=>{var e;a()&&(e=b.connectTable,e)&&e.openImport()},B=()=>{var e;a()&&(e=b.connectTable,e)&&e.exportData()},S=()=>{var e;a()&&(e=b.connectTable,e)&&e.openExport()},z=()=>{var e;a()&&(e=b.connectTable,e)&&e.print()},N=()=>{var e;a()&&(e=b.connectTable,e)&&e.openPrint()},l=(e,t,o)=>{switch(t.code){case"print":z();break;case"open_print":N();break;case"custom":L(e);break;case"export":B();break;case"open_export":S();break;case"import":P();break;case"open_import":w();break;case"zoom":I(e);break;case"refresh":R(e);break;default:o()}},U=(e,o)=>{let r=e.$event;var t=b.connectTable;let n=t,a=o.code;a&&l(e,o,()=>{var e,t;s?s.triggerToolbarBtnEvent(o,r):(t=commands.get(a),e={code:a,button:o,$table:n,$grid:p,$gantt:g,$event:r},t&&((t=t.tableCommandMethod||t.commandMethod)?t(e):errLog("vxe.error.notCommands",[a])),f.dispatchEvent("button-click",e,r))})},y=(e,o)=>{let r=e.$event;var t=b.connectTable;let n=t,a=o.code;a&&l(e,o,()=>{var e,t;s?s.triggerToolbarTolEvent(o,r):(t=commands.get(a),e={code:a,button:null,tool:o,$table:n,$grid:p,$gantt:g,$event:r},t&&((t=t.tableCommandMethod||t.commandMethod)?t(e):errLog("vxe.error.notCommands",[a])),f.dispatchEvent("tool-click",e,r))})};Object.assign(f,{dispatchEvent:(e,t,o)=>{r(e,createEvent(o,{$toolbar:f},t))},syncUpdate(e){b.connectTable=e.$table,m.columns=e.collectColumn,m.connectFlag++}});let E=(e,o)=>{e=e.dropdowns;return e?e.map((t,e)=>!1!==t.visible&&v?(0,_vue.h)(v,Object.assign(Object.assign({key:e},Object.assign({},t,{content:t.content||t.name,options:void 0})),{onClick:e=>(o?U:y)(e,t)})):(0,_vue.createCommentVNode)()):[]};return f.renderVN=()=>{var{perfect:e,loading:t,refresh:o,zoom:r,custom:n,className:a}=i,l=c.value;return(0,_vue.h)("div",{ref:d,class:["vxe-toolbar",a?_xeUtils.default.isFunction(a)?a({$toolbar:f}):a:"",{["size--"+l]:l,"is--perfect":e,"is--loading":t}]},[(0,_vue.h)("div",{class:"vxe-buttons--wrapper"},(()=>{var e=i.buttons,t=b.connectTable;let s=t;var t=u.buttons,o=u.buttonPrefix||u["button-prefix"],r=u.buttonSuffix||u["button-suffix"];let c=[];if(e){var n=(s?s.getComputeMaps():{}).computeRendererOpts;let i=(n?n.value:null)||{};e.forEach((t,e)=>{var o,r,n,{dropdowns:a,buttonRender:l}=t;!1!==t.visible&&(o=l&&l.name?i[l.name]||renderer.get(l.name):null,l&&o&&o.renderToolbarButton?(r=o.toolbarButtonClassName,n={$grid:p,$gantt:g,$table:s,button:t},c.push((0,_vue.h)("span",{key:"br"+(t.code||e),class:["vxe-button--item",r?_xeUtils.default.isFunction(r)?r(n):r:""]},(0,_vn.getSlotVNs)(o.renderToolbarButton(l,n))))):v&&c.push((0,_vue.h)(v,Object.assign(Object.assign({key:"bd"+(t.code||e)},Object.assign({},t,{content:t.content||t.name,options:void 0})),{onClick:e=>U(e,t)}),a&&a.length?{dropdowns:()=>E(t,!0)}:{})))})}return[(0,_vue.h)("div",{class:"vxe-button--prefix-wrapper"},o?(0,_vn.getSlotVNs)(o({buttons:e||[],$grid:p,$gantt:g,$table:s})):[]),(0,_vue.h)("div",{class:"vxe-button--item-wrapper"},t?(0,_vn.getSlotVNs)(t({buttons:e||[],$grid:p,$gantt:g,$table:s})):c),(0,_vue.h)("div",{class:"vxe-button--suffix-wrapper"},r?(0,_vn.getSlotVNs)(r({buttons:e||[],$grid:p,$gantt:g,$table:s})):[])]})()),(0,_vue.h)("div",{class:"vxe-tools--wrapper"},(()=>{var e=i.tools,t=b.connectTable;let s=t;var t=u.tools,o=u.toolPrefix||u["tool-prefix"],r=u.toolSuffix||u["tool-suffix"];let c=[];if(e){var n=(s?s.getComputeMaps():{}).computeRendererOpts;let i=(n?n.value:null)||{};e.forEach((t,e)=>{var o,r,n,{dropdowns:a,toolRender:l}=t;!1!==t.visible&&(o=l&&l.name?i[l.name]||renderer.get(l.name):null,l&&o&&o.renderToolbarTool?(r=o.toolbarToolClassName,n={$grid:p,$gantt:g,$table:s,tool:t},c.push((0,_vue.h)("span",{key:e,class:["vxe-tool--item",r?_xeUtils.default.isFunction(r)?r(n):r:""]},(0,_vn.getSlotVNs)(o.renderToolbarTool(l,n))))):v&&c.push((0,_vue.h)(v,Object.assign(Object.assign({key:e},Object.assign({},t,{content:t.content||t.name,options:void 0})),{onClick:e=>y(e,t)}),a&&a.length?{dropdowns:()=>E(t,!1)}:{})))})}return[(0,_vue.h)("div",{class:"vxe-tool--prefix-wrapper"},o?(0,_vn.getSlotVNs)(o({tools:e||[],$grid:p,$gantt:g,$table:s})):[]),(0,_vue.h)("div",{class:"vxe-tool--item-wrapper"},t?(0,_vn.getSlotVNs)(t({tools:e||[],$grid:p,$gantt:g,$table:s})):c),(0,_vue.h)("div",{class:"vxe-tool--suffix-wrapper"},r?(0,_vn.getSlotVNs)(r({tools:e||[],$grid:p,$gantt:g,$table:s})):[])]})()),(0,_vue.h)("div",{class:"vxe-tools--operate"},[i.import&&(a=x.value,v)?(0,_vue.h)(v,{key:"import",circle:!0,icon:a.icon||getIcon().TOOLBAR_TOOLS_IMPORT,title:getI18n("vxe.toolbar.import"),onClick:w}):(0,_vue.createCommentVNode)(),i.export&&(l=O.value,v)?(0,_vue.h)(v,{key:"export",circle:!0,icon:l.icon||getIcon().TOOLBAR_TOOLS_EXPORT,title:getI18n("vxe.toolbar.export"),onClick:S}):(0,_vue.createCommentVNode)(),i.print&&(e=h.value,v)?(0,_vue.h)(v,{key:"print",circle:!0,icon:e.icon||getIcon().TOOLBAR_TOOLS_PRINT,title:getI18n("vxe.toolbar.print"),onClick:N}):(0,_vue.createCommentVNode)(),o&&(t=_.value,v)?(0,_vue.h)(v,{key:"refresh",circle:!0,icon:m.isRefresh?t.iconLoading||getIcon().TOOLBAR_TOOLS_REFRESH_LOADING:t.icon||getIcon().TOOLBAR_TOOLS_REFRESH,title:getI18n("vxe.toolbar.refresh"),onClick:R}):(0,_vue.createCommentVNode)(),r&&s&&(a=T.value,s)&&v?(0,_vue.h)(v,{key:"zoom",circle:!0,icon:s.isMaximized()?a.iconOut||getIcon().TOOLBAR_TOOLS_MINIMIZE:a.iconIn||getIcon().TOOLBAR_TOOLS_FULLSCREEN,title:getI18n("vxe.toolbar.zoom"+(s.isMaximized()?"Out":"In")),onClick:I}):(0,_vue.createCommentVNode)(),n&&(l=C.value,e=$.value,o={},"manual"!==e&&("hover"===e?(o.onMouseenter=j,o.onMouseleave=k):o.onClick=L),v)?(0,_vue.h)(v,Object.assign({key:"custom",circle:!0,icon:l.icon||getIcon().TOOLBAR_TOOLS_CUSTOM,title:getI18n("vxe.toolbar.custom"),className:"vxe-toolbar-custom-target"},o)):(0,_vue.createCommentVNode)()])])},(0,_vue.nextTick)(()=>{var e=_.value,e=e.queryMethod||e.query,e=(!i.refresh||s||e||warnLog("vxe.error.notFunc",["queryMethod"]),_xeUtils.default.isPlainObject(i.custom)&&warnLog("vxe.error.delProp",["custom={...}","custom=boolean & custom-options={...}"]),_xeUtils.default.isPlainObject(i.print)&&warnLog("vxe.error.delProp",["print={...}","print=boolean & print-options={...}"]),_xeUtils.default.isPlainObject(i.export)&&warnLog("vxe.error.delProp",["export={...}","export=boolean & export-options={...}"]),_xeUtils.default.isPlainObject(i.import)&&warnLog("vxe.error.delProp",["import={...}","import=boolean & import-options={...}"]),_xeUtils.default.isPlainObject(i.refresh)&&warnLog("vxe.error.delProp",["refresh={...}","refresh=boolean & refresh-options={...}"]),_xeUtils.default.isPlainObject(i.refresh)&&warnLog("vxe.error.delProp",["zoom={...}","zoom=boolean & zoom-options={...}"]),C.value);e.isFooter&&warnLog("vxe.error.delProp",["toolbar.custom.isFooter","table.custom-config.showFooter"]),e.showFooter&&warnLog("vxe.error.delProp",["toolbar.custom.showFooter","table.custom-config.showFooter"]),e.immediate&&warnLog("vxe.error.delProp",["toolbar.custom.immediate","table.custom-config.immediate"]),e.trigger&&warnLog("vxe.error.delProp",["toolbar.custom.trigger","table.custom-config.trigger"]),(i.refresh||i.import||i.export||i.print||i.zoom)&&!v&&errLog("vxe.error.reqComp",["vxe-button"])}),(0,_vue.onBeforeUnmount)(()=>{_xeUtils.default.assign(m,createReactData()),_xeUtils.default.assign(b,createInternalData())}),f},render(){return this.renderVN()}});