@f3ve/vue-notify-components
Version:
Vue Notify components
2 lines (1 loc) • 1.41 kB
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("vue"),r=require("pinia"),l=r.defineStore("vue-notify",()=>{const e=o.ref([]);function i(n,c="default"){const a=e.value.length?e.value[0].id+1:1;e.value.unshift({message:n,color:c,id:a})}function t(n){e.value.splice(n,1)}return{notifications:e,show:i,hide:t}}),s=o.defineComponent(e=>{const i=l();let t;o.onMounted(()=>{t&&clearTimeout(t),t=setTimeout(()=>{i.hide(e.index)},e.delay)}),o.onBeforeUnmount(()=>{t&&clearTimeout(t)});function n(){t&&clearTimeout(t),i.hide(e.index)}return()=>o.createVNode("output",{role:"status",class:`vue-notification color-${e.color}`},[o.createVNode("p",null,[e.message]),o.createVNode("button",{onClick:n},[o.createVNode("span",{class:"vue-notification-close"},null)])])},{props:["color","message","index","delay"]});function d(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!o.isVNode(e)}const f=o.defineComponent(e=>{const i=l(),t=e.notifyComponent||s,n=e.delay!==void 0?e.delay:3500;return()=>{let c;return o.createVNode("div",{class:"notifications"},[o.createVNode(o.TransitionGroup,{name:"notifications"},d(c=i.notifications.map((a,u)=>o.createVNode(t,{color:a.color,message:a.message,index:u,key:a.id,delay:n},null)))?c:{default:()=>[c]})])}},{props:["notifyComponent","delay"]});exports.VNotification=s;exports.VNotifications=f;