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