UNPKG

vexip-ui

Version:

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

3 lines (2 loc) 6.07 kB
"use strict";const e=require("vue");require("../button/index.cjs");require("../icon/index.cjs");const z=require("../modal/index.cjs");require("../renderer/index.cjs");const b=require("@vexip-ui/config"),r=require("@vexip-ui/utils"),E=require("./props.cjs"),g=require("../renderer/renderer.cjs"),C=require("../icon/icon.cjs"),N=require("../button/button.cjs"),_=["innerHTML"],H=e.defineComponent({name:"Confirm",__name:"confirm",props:E.confirmProps,setup(T,{expose:P}){const B=t=>t==="auto"||!Number.isNaN(parseFloat(t)),i={default:"auto",validator:B},h=Object.freeze(["default","primary","info","success","warning","error"]),V=T,c=b.useProps("confirm",V,{locale:null,width:{default:420,validator:B},height:i,top:i,left:i,right:i,bottom:i,maskClose:!1,confirmType:{default:"primary",validator:t=>h.includes(t)},cancelType:{default:"default",validator:t=>h.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=b.useNameHelper("confirm"),a=b.useIcons(),v=b.useLocale("confirm",e.toRef(c,"locale")),y=["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({...y.reduce((t,l)=>(t[l]=c[l],t),{}),visible:!1,loading:!1,title:"",content:"",raw:{}}),s=e.ref(c.renderer);let u=null,d=null,p=null;const q=new Promise(t=>{e.onMounted(()=>{e.nextTick(t)})});P({state:n,openConfirm:F,closeConfirm:f,handleReset:x});async function F(t){return await q,await new Promise(l=>{for(const m of y)n[m]=t[m]??c[m];if(n.title=t.title??"",n.content=t.content??"",n.raw=t,s.value=r.isFunction(t.renderer)?t.renderer:c.renderer,u=r.isFunction(t.onBeforeConfirm)?t.onBeforeConfirm:null,r.isFunction(s.value)){const m=s.value;s.value=()=>m(n,w,f)}n.visible=!0;let k=!1;d=()=>{!k&&l(!0),k=!0,u=null},p=()=>{!k&&l(!1),k=!0,u=null}})}async function w(){if(n.loading=!0,r.isFunction(u)){let t=u();if(r.isPromise(t)&&(t=await t),t===!1){n.loading=!1;return}}n.visible=!1,n.loading=!1,r.isFunction(d)&&(d(),d=null)}function f(){n.visible=!1,r.isFunction(p)&&(p(),p=null)}function x(){for(const t of y)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(z.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:x,onClose:f},{default:e.withCtx(()=>[e.unref(r.isFunction)(s.value)?(e.openBlock(),e.createBlock(e.unref(g),{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(g),{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:f},[e.renderSlot(t.$slots,"close",{},()=>[e.createVNode(e.unref(C),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(C),e.mergeProps({key:0},n.iconProps,{icon:n.icon}),null,16,["icon"])):(e.openBlock(),e.createBlock(e.unref(C),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(g),{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.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(N),{key:0,class:e.normalizeClass([e.unref(o).be("button"),e.unref(o).bem("button","cancel")]),inherit:"","no-pulse":"",type:n.cancelType,onClick:f},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(n.cancelText||e.unref(v).cancel),1)]),_:1},8,["class","type"])):e.createCommentVNode("",!0),e.createVNode(e.unref(N),{class:e.normalizeClass([e.unref(o).be("button"),e.unref(o).bem("button","confirm")]),inherit:"","no-pulse":"",type:n.confirmType,loading:n.loading,onClick:w},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(n.confirmText||e.unref(v).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=H; //# sourceMappingURL=confirm.vue2.cjs.map