UNPKG

vexip-ui

Version:

A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good

3 lines (2 loc) 6.03 kB
"use strict";const e=require("vue");require("../button/index.cjs");require("../icon/index.cjs");const F=require("../modal/index.cjs");require("../renderer/index.cjs");const k=require("@vexip-ui/config"),r=require("@vexip-ui/utils"),z=require("./props.cjs"),y=require("../renderer/renderer.cjs"),g=require("../icon/icon.cjs"),x=require("../button/button.cjs"),E=["innerHTML"],_=e.defineComponent({name:"Confirm",__name:"confirm",props:z.confirmProps,setup(N,{expose:T}){const C=t=>t==="auto"||!Number.isNaN(parseFloat(t)),i={default:"auto",validator:C},B=Object.freeze(["default","primary","info","success","warning","error"]),P=N,c=k.useProps("confirm",P,{locale:null,width:{default:420,validator:C},height:i,top:i,left:i,right:i,bottom:i,maskClose:!1,confirmType:{default:"primary",validator:t=>B.includes(t)},cancelType:{default:"default",validator:t=>B.includes(t)},confirmText:null,cancelText:null,icon:{isFunc:!0,default:!1},className:null,style:null,renderer:{default:null,isFunc:!0,static:!0},iconProps:()=>({}),closable:!1,parseHtml:!1,contentAlign:"left",actionsAlign:"right",cancelable:!0,xOffset:0,yOffset:0}),o=k.useNameHelper("confirm"),a=k.useIcons(),h=k.useLocale("confirm",e.toRef(c,"locale")),b=["className","style","icon","iconProps","maskClose","confirmType","cancelType","confirmText","cancelText","parseHtml","closable","contentAlign","actionsAlign","cancelable","width","height","top","right","bottom","left","xOffset","yOffset"],n=e.reactive({...b.reduce((t,l)=>(t[l]=c[l],t),{}),visible:!1,loading:!1,title:"",content:"",raw:{}}),s=e.ref(c.renderer);let f=null,m=null,d=null;const V=new Promise(t=>{e.onMounted(()=>{e.nextTick(t)})});T({state:n,openConfirm:q,closeConfirm:p,handleReset:w});async function q(t){return await V,await new Promise(l=>{for(const u of b)n[u]=t[u]??c[u];if(n.title=t.title??"",n.content=t.content??"",n.raw=t,s.value=r.isFunction(t.renderer)?t.renderer:c.renderer,f=r.isFunction(t.onBeforeConfirm)?t.onBeforeConfirm:null,r.isFunction(s.value)){const u=s.value;s.value=()=>u(n,v,p)}n.visible=!0,m=()=>{l(!0),f=null},d=()=>{l(!1),f=null}})}async function v(){if(n.loading=!0,r.isFunction(f)){let t=f();if(r.isPromise(t)&&(t=await t),t===!1){n.loading=!1;return}}n.visible=!1,n.loading=!1,r.isFunction(m)&&(m(),m=null)}function p(){n.visible=!1,r.isFunction(d)&&(d(),d=null)}function w(){for(const t of b)n[t]=c[t];n.visible=!1,n.loading=!1,n.title="",n.content="",n.raw={},s.value=c.renderer}return(t,l)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(o).b(),e.unref(o).bs("vars")])},[e.createVNode(e.unref(F.Modal),{"no-footer":"","auto-remove":!1,transfer:!1,closable:!1,active:n.visible,"modal-class":n.className,"modal-style":n.style,width:n.width,height:n.height,top:n.top,left:n.left,right:n.right,bottom:n.bottom,"x-offset":n.xOffset,"y-offset":n.yOffset,"mask-close":n.maskClose,onHide:w},{default:e.withCtx(()=>[e.unref(r.isFunction)(s.value)?(e.openBlock(),e.createBlock(e.unref(y),{key:0,renderer:s.value},null,8,["renderer"])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[n.title?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(o).be("header"))},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(o).be("title"))},[typeof n.title=="function"?(e.openBlock(),e.createBlock(e.unref(y),{key:0,renderer:n.title},null,8,["renderer"])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(n.title),1)],64))],2),n.closable?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:e.normalizeClass(e.unref(o).be("close")),onMousedown:l[0]||(l[0]=e.withModifiers(()=>{},["stop"])),onClick:p},[e.renderSlot(t.$slots,"close",{},()=>[e.createVNode(e.unref(g),e.mergeProps(e.unref(a).close,{scale:+(e.unref(a).close.scale||1)*1.2,label:"close"}),null,16,["scale"])])],34)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(o).be("body"),e.unref(o).bem("body",n.contentAlign),!n.title&&e.unref(o).bem("body","no-title")])},[n.icon!==!1?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(o).be("icon"))},[typeof n.icon!="boolean"?(e.openBlock(),e.createBlock(e.unref(g),e.mergeProps({key:0},n.iconProps,{icon:n.icon}),null,16,["icon"])):(e.openBlock(),e.createBlock(e.unref(g),e.mergeProps({key:1,scale:2.2},{...n.cancelable?e.unref(a).question:e.unref(a).warning,...n.iconProps},{icon:(n.cancelable?e.unref(a).question:e.unref(a).warning).icon}),null,16,["icon"]))],2)):e.createCommentVNode("",!0),typeof n.content=="function"?(e.openBlock(),e.createBlock(e.unref(y),{key:1,renderer:n.content},null,8,["renderer"])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[n.parseHtml?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(o).be("content")),innerHTML:n.content},null,10,E)):(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(e.unref(o).be("content"))},e.toDisplayString(n.content),3))],64))],2),e.createElementVNode("div",{class:e.normalizeClass([e.unref(o).be("footer"),e.unref(o).bem("footer",n.actionsAlign)])},[n.cancelable?(e.openBlock(),e.createBlock(e.unref(x),{key:0,class:e.normalizeClass([e.unref(o).be("button"),e.unref(o).bem("button","cancel")]),inherit:"","no-pulse":"",type:n.cancelType,onClick:p},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(n.cancelText||e.unref(h).cancel),1)]),_:1},8,["class","type"])):e.createCommentVNode("",!0),e.createVNode(e.unref(x),{class:e.normalizeClass([e.unref(o).be("button"),e.unref(o).bem("button","confirm")]),inherit:"","no-pulse":"",type:n.confirmType,loading:n.loading,onClick:v},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(n.confirmText||e.unref(h).confirm),1)]),_:1},8,["class","type","loading"])],2)],64))]),_:3},8,["active","modal-class","modal-style","width","height","top","left","right","bottom","x-offset","y-offset","mask-close"])],2))}});module.exports=_; //# sourceMappingURL=confirm.vue2.cjs.map