@jecloud/func
Version:
JECloud 功能库
1 lines • 2.39 kB
JavaScript
import{isVNode as o,resolveComponent as n,mergeProps as t,createVNode as r}from"vue";import{Toolbar as e,Button as u}from"@jecloud/ui";import{pick as i,isNotEmpty as l}from"@jecloud/utils";import{useInjectFunc as f,useInjectFuncEdit as c}from"../../../func/src/context";import{useFuncConfig as a}from"../../../func-config/hooks/use-func-config";import{useFuncWorkflow as d}from"../../../func-workflow";import{useStarButton as p}from"./use-form-star-button";function m(n){return"function"==typeof n||"[object Object]"===Object.prototype.toString.call(n)&&!o(n)}export function useFuncToolbar(o){var n=o.$form,t=f(),u=t.getFuncData().info.formOptions.hiddenTbar,i=g({$form:n}).configMenuSlot,l=d({$func:t,$form:n}),c=l.workflowButtonSlot,a=l.workflowMainButtonSlot,m=p({$func:t,$form:n}).starButtonSlot,v=s({$form:n,$func:t});return function(){return u?null:r(e,{class:"je-form-func-tbar"},{default:function(){return[v(),c(),r(e.Fill,null,null),m(),a(),i()]}})}}function s(o){var e=o.$form,f=o.$func,c=f.action.eventAction.bindButtonEvents,a=f.action.permAction.funcButtonPerm,d=e.getButtons(),p=[];null==d||d.forEach((function(o){l(o.children)&&p.push.apply(p,o.children)}));var s=p,g={},v=function(o){var n,t=o.key,r=g[t];if(!r){var e=s.find((function(o){return o.code===t}));r=g[t]=c({type:"form",button:e})}null===(n=r.onClick)||void 0===n||n.call(r)};return function(){return a({type:"form",buttons:d}).map((function(o){return r(u.Group,null,{default:function(){var e,l;return[r(u,t({type:"primary","data-code":o.code,style:(null===(e=o.children)||void 0===e?void 0:e.length)>0?"padding-right:4px;":"",loading:o.loading},i(o,["icon","iconColor","bgColor","fontColor","borderColor"]),c({type:"form",button:o})),{default:function(){return[o.text]}}),(null===(l=o.children)||void 0===l?void 0:l.length)>0?r(n("Dropdown"),{trigger:["click"]},{default:function(){return[r(u,t({type:"primary",icon:"fal fa-chevron-down",style:"padding-left:4px;padding-right:10px;"},i(o,["iconColor","bgColor","fontColor","borderColor"])),null)]},overlay:function(){var t;return r(n("Menu"),{onClick:v},m(t=o.children.map((function(o){return r(Menu.Item,{icon:o.icon,key:o.code,style:"padding-right:17px;"},{default:function(){return[o.text]}})})))?t:{default:function(){return[t]}})}}):null]}})}))}}function g(o){var n=o.$form.type,t=c();return{configMenuSlot:a({parent:t,disabled:"func"!==n}).configMenuSlot}}