lc-vue-biz-cu-dialog
Version:
2 lines (1 loc) • 5.29 kB
JavaScript
(function(s,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("@vueuse/core"),require("lodash"),require("uuid"),require("element-plus")):typeof define=="function"&&define.amd?define(["exports","vue","@vueuse/core","lodash","uuid","element-plus"],e):(s=typeof globalThis<"u"?globalThis:s||self,e(s["lc-vue-biz-cu-dialog"]={},s.Vue,s["@vueuse/core"],s._,s.uuid,s["element-plus"]))})(this,function(s,e,F,y,C,B){"use strict";const[D,b]=F.createInjectionState(({initFunc:t,submitFunc:c})=>{const o=e.ref(!1),n=e.ref(!1),i=e.ref(!1),r=e.ref(),d=e.ref(),u=e.ref(),l=e.ref(),p=e.ref();return{visible:o,ready:n,submitLoading:i,defaultData:u,show:async(m,N)=>{const k=C.v4();l.value=k,r.value=m,d.value=N,i.value=!1,o.value=!0,n.value=!1,u.value=await t(y.cloneDeep(r.value),y.cloneDeep(d.value)),k===l.value&&(n.value=!0)},submit:async()=>{const m=C.v4();p.value=m;try{if(i.value=!0,await c(y.cloneDeep(r.value),y.cloneDeep(d.value)),m!==p.value)return;o.value=!1}finally{m===p.value&&(i.value=!1)}},cancel:async()=>{o.value=!1}}}),$=e.defineComponent({__name:"dialog-root",props:{initFunc:{type:Function,default:()=>({})},submitFunc:{type:Function,default:()=>({})}},setup(t){const c=t;return D({initFunc:c.initFunc,submitFunc:c.submitFunc}),(o,n)=>e.renderSlot(o.$slots,"default")}}),x={key:1,style:{height:"50px"}},O={class:"dialog-footer"},V=e.defineComponent({__name:"dialog",props:{title:{type:String,default:""},width:{type:[String,Number],default:"600"},showFooter:{type:Boolean,default:!0},closeOnClickModal:{type:Boolean,default:!1},closeOnPressEscape:{type:Boolean,default:!1}},setup(t,{expose:c}){const o=e.ref(!0),{visible:n,ready:i,defaultData:r,show:d}=b();return c({show:d}),(u,l)=>{const p=e.resolveComponent("el-dialog"),a=e.resolveDirective("loading");return e.openBlock(),e.createBlock(p,{modelValue:e.unref(n),"onUpdate:modelValue":l[0]||(l[0]=f=>e.isRef(n)?n.value=f:null),title:t.title,width:t.width,"append-to-body":"","close-on-click-modal":t.closeOnClickModal,"close-on-press-escape":t.closeOnPressEscape,onOpen:l[1]||(l[1]=f=>o.value=!1),onClosed:l[2]||(l[2]=f=>o.value=!0)},e.createSlots({default:e.withCtx(()=>[o.value===!1&&e.unref(i)===!0?e.renderSlot(u.$slots,"default",{key:0,defaultData:e.unref(r)}):e.unref(i)===!1?e.withDirectives((e.openBlock(),e.createElementBlock("div",x,null,512)),[[a,!0]]):e.createCommentVNode("",!0)]),_:2},[t.showFooter?{name:"footer",fn:e.withCtx(()=>[e.createElementVNode("div",O,[e.renderSlot(u.$slots,"footer")])]),key:"0"}:void 0]),1032,["modelValue","title","width","close-on-click-modal","close-on-press-escape"])}}}),h=e.defineComponent({__name:"footer-button",props:{type:{type:String,default:""},btnType:{type:String,default:"cancel"}},emits:["completed","success"],setup(t,{emit:c}){const o=t,n=c,{cancel:i,submit:r,submitLoading:d,ready:u}=b(),l=e.computed(()=>d.value&&o.btnType==="submit"),p=e.computed(()=>!u.value&&o.btnType==="submit"),a=async()=>{try{o.btnType==="cancel"?await i():o.btnType==="submit"&&await r(),n("success")}finally{n("completed")}};return(f,g)=>{const m=e.resolveComponent("el-button");return e.openBlock(),e.createBlock(m,{type:t.type,loading:l.value,disabled:p.value,onClick:a},{default:e.withCtx(()=>[e.renderSlot(f.$slots,"default")]),_:3},8,["type","loading","disabled"])}}}),w={"zh-cn":{ok:"确认",cancel:"取消"},en:{ok:"confirm",cancel:"cancel"},ja:{ok:"確認",cancel:"キャンセル"}},S=t=>{const{lang:c}=B.useLocale(),o=w[c.value]||w["zh-cn"];return y.get(o,t,void 0)||y.get(w["zh-cn"],t,void 0)||t},T=e.defineComponent({__name:"biz-dialog",props:{initFunc:{type:Function,default:()=>({})},submitFunc:{type:Function,default:()=>({})},title:{type:String,default:""},width:{type:[String,Number],default:"600"},showFooter:{type:Boolean,default:!0},closeOnClickModal:{type:Boolean,default:!1},closeOnPressEscape:{type:Boolean,default:!1}},emits:["cancel-completed","cancel-success","submit-completed","submit-success"],setup(t,{expose:c,emit:o}){const n=o,i=()=>{n("cancel-completed")},r=()=>{n("cancel-success")},d=()=>{n("submit-completed")},u=()=>{n("submit-success")},l=e.ref();return c({show:(a,f)=>{l.value.show(a,f)}}),(a,f)=>(e.openBlock(),e.createBlock($,{"init-func":t.initFunc,"submit-func":t.submitFunc},{default:e.withCtx(()=>[e.createVNode(V,e.mergeProps(a.$attrs,{ref_key:"dialogRef",ref:l,title:t.title,width:t.width,"show-footer":t.showFooter,"close-on-click-modal":t.closeOnClickModal,"close-on-press-escape":t.closeOnPressEscape}),{default:e.withCtx(({defaultData:g})=>[e.renderSlot(a.$slots,"default",{defaultData:g})]),footer:e.withCtx(()=>[e.renderSlot(a.$slots,"prefix-footer"),e.renderSlot(a.$slots,"footer",{},()=>[e.createVNode(h,{"btn-type":"cancel",onCompleted:i,onSuccess:r},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(S)("cancel")),1)]),_:1}),e.createVNode(h,{"btn-type":"submit",type:"primary",onCompleted:d,onSuccess:u},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(S)("ok")),1)]),_:1})]),e.renderSlot(a.$slots,"suffix-footer")]),_:3},16,["title","width","show-footer","close-on-click-modal","close-on-press-escape"])]),_:3},8,["init-func","submit-func"]))}});s.BizCuDialog=T,s.FooterButton=h,s.useDialogState=b,Object.defineProperty(s,Symbol.toStringTag,{value:"Module"})});