UNPKG

maz-ui

Version:

A standalone components library for Vue.Js 3 & Nuxt.Js 3

1 lines 1.89 kB
import{useMountComponent}from"../composables/useMountComponent.js";import{n as useMazDialogConfirm,t as MazDialogConfirm_default}from"./MazDialogConfirm.BJoosQcV.js";var DEFAULT_OPTIONS={identifier:`main-dialog`};var DialogHandler=class{activeDialogs=new Map;constructor(app,globalOptions=DEFAULT_OPTIONS){this.app=app,this.globalOptions=globalOptions}open(options){let props={...DEFAULT_OPTIONS,...this.globalOptions,...options};let{removeDialogFromState}=useMazDialogConfirm();let existing=this.activeDialogs.get(props.identifier);existing&&(existing.cleanupTimer&&clearTimeout(existing.cleanupTimer),removeDialogFromState(props.identifier),existing.destroy(),this.activeDialogs.delete(props.identifier));let{destroy,vNode}=useMountComponent(MazDialogConfirm_default,{props,app:this.app});let entry={destroy};this.activeDialogs.set(props.identifier,entry);let{showDialogAndWaitChoice}=useMazDialogConfirm();let scheduleDestroy=()=>{entry.cleanupTimer=setTimeout(()=>{this.activeDialogs.get(props.identifier)===entry&&(destroy(),this.activeDialogs.delete(props.identifier))},700)};return(async()=>{try{let response=await showDialogAndWaitChoice(props.identifier);props.onAccept&&props.onAccept(response)}catch(error){props.onReject&&props.onReject(error)}finally{scheduleDestroy()}})(),{destroy:()=>{entry.cleanupTimer&&clearTimeout(entry.cleanupTimer),destroy(),this.activeDialogs.get(props.identifier)===entry&&this.activeDialogs.delete(props.identifier)},close:()=>{vNode.component?.exposed?.isActive?.value&&(vNode.component?.exposed?.close(),props.onClose?.(),scheduleDestroy())}}}};var DialogPlugin={install(app,options){let dialogHandler=new DialogHandler(app,options);app.provide(`mazDialog`,dialogHandler),app.config.globalProperties.$mazDialog={open:dialogHandler.open.bind(dialogHandler),globalOptions:dialogHandler.globalOptions}}};export{DialogHandler as n,DialogPlugin as t};