@blueking/vxe-table
Version:
一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟树、列拖拽,懒加载、快捷菜单、数据校验、树形结构、打印、导入导出、自定义模板、渲染器、JSON 配置式...
1 lines • 9.27 kB
JavaScript
Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_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;var _default=exports.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:()=>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:d,emit:r}=e;var o=_xeUtils.default.uniqueId();let v=_ui.VxeUI.getComponent("VxeButton"),g=useFns.useSize(u).computeSize,m=(0,_vue.reactive)({isRefresh:!1,connectFlag:0,columns:[]}),p={connectTable:null},b=(0,_vue.ref)(),t={refElem:b},f={xID:o,props:u,context:e,reactData:m,internalData:p,getRefMaps:()=>t};let _=(0,_vue.inject)("$xeGrid",null),x=(0,_vue.computed)(()=>Object.assign({},_xeUtils.default.clone(getConfig().toolbar.refresh,!0),u.refresh)),h=(0,_vue.computed)(()=>Object.assign({},_xeUtils.default.clone(getConfig().toolbar.import,!0),u.import)),O=(0,_vue.computed)(()=>Object.assign({},_xeUtils.default.clone(getConfig().toolbar.export,!0),u.export)),T=(0,_vue.computed)(()=>Object.assign({},_xeUtils.default.clone(getConfig().toolbar.print,!0),u.print)),C=(0,_vue.computed)(()=>Object.assign({},_xeUtils.default.clone(getConfig().toolbar.zoom,!0),u.zoom)),L=(0,_vue.computed)(()=>Object.assign({},_xeUtils.default.clone(getConfig().toolbar.custom,!0),u.custom)),n=(0,_vue.computed)(()=>{var e=p.connectTable;if((m.connectFlag||e)&&e)return e=e.getComputeMaps().computeCustomOpts,e.value;return{trigger:""}}),y=(0,_vue.computed)(()=>n.value.trigger),l=()=>{var e=p.connectTable;if(e)return!0;(0,_log.errLog)("vxe.error.barUnableLink")},$=({$event:e})=>{var o=p.connectTable;o&&(o.triggerCustomEvent?o.triggerCustomEvent(e):(0,_log.errLog)("vxe.error.reqModule",["VxeTableCustomModule"]))},E=({$event:e})=>{var o=p.connectTable;o?o.customOpenEvent(e):(0,_log.errLog)("vxe.error.reqModule",["VxeTableCustomModule"])},k=({$event:o})=>{var e=p.connectTable;let t=e;if(t){let e=t.reactData.customStore;e.activeBtn=!1,setTimeout(()=>{e.activeBtn||e.activeWrapper||t.customCloseEvent(o)},350)}},N=({$event:e})=>{var o=m.isRefresh,t=x.value;if(!o){o=t.queryMethod||t.query;if(o){m.isRefresh=!0;try{Promise.resolve(o({})).catch(e=>e).then(()=>{m.isRefresh=!1})}catch(e){m.isRefresh=!1}}else _&&(m.isRefresh=!0,_.triggerToolbarCommitEvent({code:t.code||"reload"},e).catch(e=>e).then(()=>{m.isRefresh=!1}))}},I=({$event:e})=>{_&&_.triggerZoomEvent(e)},R=(e,o)=>{var t,r=p.connectTable,n=o.code;n&&(_?_.triggerToolbarBtnEvent(o,e):(t=commands.get(n),o={code:n,button:o,$table:r,$grid:_,$event:e},t&&((r=t.tableCommandMethod||t.commandMethod)?r(o):"development"===process.env.NODE_ENV&&(0,_log.errLog)("vxe.error.notCommands",[n])),f.dispatchEvent("button-click",o,e)))},S=(e,o)=>{var t,r=p.connectTable,n=o.code;n&&(_?_.triggerToolbarTolEvent(o,e):(t=commands.get(n),o={code:n,tool:o,$table:r,$grid:_,$event:e},t&&((r=t.tableCommandMethod||t.commandMethod)?r(o):"development"===process.env.NODE_ENV&&(0,_log.errLog)("vxe.error.notCommands",[n])),f.dispatchEvent("tool-click",o,e)))},V=()=>{var e;l()&&(e=p.connectTable,e)&&e.openImport()},B=()=>{var e;l()&&(e=p.connectTable,e)&&e.openExport()},M=()=>{var e;l()&&(e=p.connectTable,e)&&e.openPrint()};Object.assign(f,{dispatchEvent:(e,o,t)=>{r(e,createEvent(t,{$toolbar:f},o))},syncUpdate(e){p.connectTable=e.$table,m.columns=e.collectColumn,m.connectFlag++}});let F=(e,t)=>{e=e.dropdowns;return e?e.map((o,e)=>!1!==o.visible&&v?(0,_vue.h)(v,{key:e,disabled:o.disabled,loading:o.loading,type:o.type,mode:o.mode,icon:o.icon,circle:o.circle,round:o.round,status:o.status,content:o.name,title:o.title,routerLink:o.routerLink,permissionCode:o.permissionCode,prefixTooltip:o.prefixTooltip,suffixTooltip:o.suffixTooltip,onClick:({$event:e})=>(t?R:S)(e,o)}):(0,_vue.createCommentVNode)()):[]};return f.renderVN=()=>{var{perfect:e,loading:o,refresh:t,zoom:r,custom:n,className:l}=u,i=p.connectTable,a=g.value,s=d.tools,c=d.buttons;return(0,_vue.h)("div",{ref:b,class:["vxe-toolbar",l?_xeUtils.default.isFunction(l)?l({$toolbar:f}):l:"",{["size--"+a]:a,"is--perfect":e,"is--loading":o}]},[(0,_vue.h)("div",{class:"vxe-buttons--wrapper"},c?c({$grid:_,$table:i}):(()=>{var e=u.buttons,o=p.connectTable;let a=o;var o=d.buttonPrefix||d["button-prefix"],t=d.buttonSuffix||d["button-suffix"];let s=[];return o&&s.push(...(0,_vn.getSlotVNs)(o({buttons:e||[],$grid:_,$table:a}))),e&&e.forEach((o,e)=>{var t,r,n,{dropdowns:l,buttonRender:i}=o;!1!==o.visible&&(t=i?renderer.get(i.name):null,i&&t&&t.renderToolbarButton?(r=t.toolbarButtonClassName,n={$grid:_,$table:a,button:o},s.push((0,_vue.h)("span",{key:"br"+(o.code||e),class:["vxe-button--item",r?_xeUtils.default.isFunction(r)?r(n):r:""]},(0,_vn.getSlotVNs)(t.renderToolbarButton(i,n))))):v&&s.push((0,_vue.h)(v,{key:"bd"+(o.code||e),disabled:o.disabled,loading:o.loading,type:o.type,mode:o.mode,icon:o.icon,circle:o.circle,round:o.round,status:o.status,content:o.name,title:o.title,routerLink:o.routerLink,permissionCode:o.permissionCode,prefixTooltip:o.prefixTooltip,suffixTooltip:o.suffixTooltip,destroyOnClose:o.destroyOnClose,placement:o.placement,transfer:o.transfer,onClick:({$event:e})=>R(e,o)},l&&l.length?{dropdowns:()=>F(o,!0)}:{})))}),t&&s.push(...(0,_vn.getSlotVNs)(t({buttons:e||[],$grid:_,$table:a}))),s})()),(0,_vue.h)("div",{class:"vxe-tools--wrapper"},s?s({$grid:_,$table:i}):(()=>{var e=u.tools,o=p.connectTable;let s=o;var o=d.toolPrefix||d["tool-prefix"],t=d.toolSuffix||d["tool-suffix"];let c=[];return o&&c.push(...(0,_vn.getSlotVNs)(o({tools:e||[],$grid:_,$table:s}))),e&&e.forEach((o,e)=>{var t,r,n,l,{dropdowns:i,toolRender:a}=o;!1!==o.visible&&(t=a?a.name:null,r=a?renderer.get(t):null,a&&r&&r.renderToolbarTool?(n=r.toolbarToolClassName,l={$grid:_,$table:s,tool:o},c.push((0,_vue.h)("span",{key:t,class:["vxe-tool--item",n?_xeUtils.default.isFunction(n)?n(l):n:""]},(0,_vn.getSlotVNs)(r.renderToolbarTool(a,l))))):v&&c.push((0,_vue.h)(v,{key:e,disabled:o.disabled,loading:o.loading,type:o.type,mode:o.mode,icon:o.icon,circle:o.circle,round:o.round,status:o.status,content:o.name,title:o.title,routerLink:o.routerLink,permissionCode:o.permissionCode,prefixTooltip:o.prefixTooltip,suffixTooltip:o.suffixTooltip,destroyOnClose:o.destroyOnClose,placement:o.placement,transfer:o.transfer,onClick:({$event:e})=>S(e,o)},i&&i.length?{dropdowns:()=>F(o,!1)}:{})))}),t&&c.push(...(0,_vn.getSlotVNs)(t({tools:e||[],$grid:_,$table:s}))),c})()),(0,_vue.h)("div",{class:"vxe-tools--operate"},[u.import&&(l=h.value,v)?(0,_vue.h)(v,{key:"import",circle:!0,icon:l.icon||getIcon().TOOLBAR_TOOLS_IMPORT,title:getI18n("vxe.toolbar.import"),onClick:V}):(0,_vue.createCommentVNode)(),u.export&&(a=O.value,v)?(0,_vue.h)(v,{key:"export",circle:!0,icon:a.icon||getIcon().TOOLBAR_TOOLS_EXPORT,title:getI18n("vxe.toolbar.export"),onClick:B}):(0,_vue.createCommentVNode)(),u.print&&(e=T.value,v)?(0,_vue.h)(v,{key:"print",circle:!0,icon:e.icon||getIcon().TOOLBAR_TOOLS_PRINT,title:getI18n("vxe.toolbar.print"),onClick:M}):(0,_vue.createCommentVNode)(),t&&(o=x.value,v)?(0,_vue.h)(v,{key:"refresh",circle:!0,icon:m.isRefresh?o.iconLoading||getIcon().TOOLBAR_TOOLS_REFRESH_LOADING:o.icon||getIcon().TOOLBAR_TOOLS_REFRESH,title:getI18n("vxe.toolbar.refresh"),onClick:N}):(0,_vue.createCommentVNode)(),r&&_&&(c=C.value,_)&&v?(0,_vue.h)(v,{key:"zoom",circle:!0,icon:_.isMaximized()?c.iconOut||getIcon().TOOLBAR_TOOLS_MINIMIZE:c.iconIn||getIcon().TOOLBAR_TOOLS_FULLSCREEN,title:getI18n("vxe.toolbar.zoom"+(_.isMaximized()?"Out":"In")),onClick:I}):(0,_vue.createCommentVNode)(),n&&(s=L.value,i=y.value,l={},"manual"!==i&&("hover"===i?(l.onMouseenter=E,l.onMouseleave=k):l.onClick=$),v)?(0,_vue.h)(v,Object.assign({key:"custom",circle:!0,icon:s.icon||getIcon().TOOLBAR_TOOLS_CUSTOM,title:getI18n("vxe.toolbar.custom"),className:"vxe-toolbar-custom-target"},l)):(0,_vue.createCommentVNode)()])])},(0,_vue.nextTick)(()=>{var e=u.refresh,o=x.value,o=o.queryMethod||o.query,e=(!e||_||o||(0,_log.warnLog)("vxe.error.notFunc",["queryMethod"]),L.value);"development"===process.env.NODE_ENV&&(e.isFooter&&(0,_log.warnLog)("vxe.error.delProp",["toolbar.custom.isFooter","table.custom-config.showFooter"]),e.showFooter&&(0,_log.warnLog)("vxe.error.delProp",["toolbar.custom.showFooter","table.custom-config.showFooter"]),e.immediate&&(0,_log.warnLog)("vxe.error.delProp",["toolbar.custom.immediate","table.custom-config.immediate"]),e.trigger)&&(0,_log.warnLog)("vxe.error.delProp",["toolbar.custom.trigger","table.custom-config.trigger"]),"development"===process.env.NODE_ENV&&(u.refresh||u.import||u.export||u.print||u.zoom)&&!v&&(0,_log.errLog)("vxe.error.reqComp",["vxe-button"])}),f},render(){return this.renderVN()}});