UNPKG

vexip-ui

Version:

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

3 lines (2 loc) 4.45 kB
"use strict";const n=require("vue");require("../icon/index.cjs");require("../renderer/index.cjs");const t=require("@vexip-ui/config"),i=require("@vexip-ui/utils"),h=require("./props.cjs"),m=require("./symbol.cjs"),x=require("../renderer/renderer.cjs"),u=require("../icon/icon.cjs"),P=["innerHTML"],M=n.defineComponent({name:"Toast",__name:"toast",props:h.toastProps,setup(k,{expose:p}){const r=t.useNameHelper("toast"),d=k,s=t.useProps("toast",d,{bodyWidth:100,icon:t.createIconProp(),iconProps:()=>({}),position:"center",transitionName:()=>r.ns("ease"),closable:!1,maskClose:!1,showMask:!1,maskClass:null,maskStyle:null,renderer:{default:null,isFunc:!0,static:!0},parseHtml:!1}),f=t.useZIndex(),a=t.useIcons(),y=n.computed(()=>({success:a.value.success,warning:a.value.warning,error:a.value.error,loading:a.value.loading})),e=n.reactive({visible:!1,zIndex:0,type:null,content:"",icon:s.icon,iconProps:s.iconProps,position:s.position,transition:s.transitionName,closable:s.closable,maskClose:s.maskClose,showMask:s.showMask,maskClass:s.maskClass,maskStyle:s.maskStyle,parseHtml:s.parseHtml,textOnly:!1,renderer:s.renderer,onClose:null}),C=new Promise(o=>{n.onMounted(()=>{n.nextTick(o)})});p({state:e,openToast:b,closeToast:c,handleReset:v});async function b(o){if(await C,e.zIndex=f(),e.type=o.type??null,e.content=o.content??"",e.icon=o.icon??s.icon,e.iconProps=o.iconProps??s.iconProps,e.position=o.position??s.position,e.transition=o.transitionName??s.transitionName,e.closable=o.closable??s.closable,e.maskClose=o.maskClose??s.maskClose,e.showMask=o.showMask??s.showMask,e.maskClass=o.maskClass??s.maskClass,e.maskStyle=o.maskStyle??s.maskStyle,e.parseHtml=o.parseHtml??s.parseHtml,e.renderer=i.isFunction(o.renderer)?o.renderer:s.renderer,e.onClose=o.onClose||null,e.textOnly=!e.icon&&!(e.type&&m.effectiveTypes.includes(e.type)),i.isFunction(e.renderer)){const l=e.renderer;e.renderer=()=>l(o),e.textOnly=!1}e.visible=!0}function c(){e.visible=!1,i.isFunction(e.onClose)&&e.onClose()}function v(){e.visible||(e.type=null,e.content="",e.icon=s.icon,e.iconProps=s.iconProps,e.position=s.position,e.transition=s.transitionName,e.closable=s.closable,e.maskClose=s.maskClose,e.showMask=s.showMask,e.maskClass=s.maskClass,e.maskStyle=s.maskStyle,e.parseHtml=s.parseHtml,e.textOnly=!1,e.renderer=s.renderer,e.onClose=null)}function w(){e.visible&&e.closable&&c()}function B(){e.visible&&e.maskClose&&c()}return(o,l)=>(n.openBlock(),n.createElementBlock("div",{class:n.normalizeClass({[n.unref(r).b()]:!0,[n.unref(r).bs("vars")]:!0,[n.unref(r).bm("text-only")]:e.textOnly}),role:"alert",style:n.normalizeStyle({zIndex:e.zIndex}),"aria-atomic":"true","aria-live":"assertive"},[n.createVNode(n.Transition,{name:n.unref(r).ns("fade")},{default:n.withCtx(()=>[e.showMask&&e.visible?(n.openBlock(),n.createElementBlock("div",{key:0,class:n.normalizeClass([n.unref(r).be("mask"),e.maskClass]),style:n.normalizeStyle(e.maskStyle),onClick:B,onWheel:l[0]||(l[0]=n.withModifiers(()=>{},["stop","prevent"]))},null,38)):n.createCommentVNode("",!0)]),_:1},8,["name"]),n.createVNode(n.Transition,{name:e.transition},{default:n.withCtx(()=>[e.visible?(n.openBlock(),n.createElementBlock("div",{key:0,class:n.normalizeClass({[n.unref(r).be("wrapper")]:!0,[n.unref(r).bem("wrapper",e.position)]:e.position!=="center",[n.unref(r).bem("wrapper","closable")]:e.closable}),onClick:w,onWheel:l[1]||(l[1]=n.withModifiers(()=>{},["stop","prevent"]))},[n.unref(i.isFunction)(e.renderer)?(n.openBlock(),n.createBlock(n.unref(x),{key:0,renderer:e.renderer},null,8,["renderer"])):(n.openBlock(),n.createElementBlock(n.Fragment,{key:1},[e.icon||e.type&&n.unref(m.effectiveTypes).includes(e.type)?(n.openBlock(),n.createElementBlock("div",{key:0,class:n.normalizeClass(n.unref(r).be("icon"))},[e.icon?(n.openBlock(),n.createBlock(n.unref(u),n.mergeProps({key:0,icon:e.icon,scale:1.8},e.iconProps),null,16,["icon"])):(n.openBlock(),n.createBlock(n.unref(u),n.normalizeProps(n.mergeProps({key:1},{...y.value[e.type],scale:1.8,...e.iconProps})),null,16))],2)):n.createCommentVNode("",!0),e.parseHtml?(n.openBlock(),n.createElementBlock("div",{key:1,class:n.normalizeClass(n.unref(r).be("content")),innerHTML:e.content},null,10,P)):(n.openBlock(),n.createElementBlock("div",{key:2,class:n.normalizeClass(n.unref(r).be("content"))},n.toDisplayString(e.content),3))],64))],34)):n.createCommentVNode("",!0)]),_:1},8,["name"])],6))}});module.exports=M; //# sourceMappingURL=toast.vue2.cjs.map