maz-ui
Version:
A standalone components library for Vue.Js 3 & Nuxt.Js 3
1 lines • 7.15 kB
JavaScript
import{t as MazDialog_default}from"./MazDialog.hUJENsov.js";import{Fragment,computed,createBlock,createCommentVNode,createElementBlock,createElementVNode,createPropsRestProxy,createTextVNode,defineAsyncComponent,defineComponent,mergeProps,openBlock,ref,renderList,renderSlot,toDisplayString,unref,withCtx}from"vue";var defaultData={buttons:void 0,acceptText:`Confirm`,hideAcceptButton:!1,acceptProps:{color:`success`,type:`accept`,response:`accept`},rejectText:`Cancel`,hideRejectButton:!1,rejectProps:{color:`destructive`,type:`reject`,response:`reject`}};var data=ref(defaultData);var dialogState=ref([]);function showDialogAndWaitChoice(identifier,callback){return new Promise((resolve,reject)=>{dialogState.value=[...dialogState.value,{id:identifier,isActive:!0,accept:async response=>{resolve(response),await callback?.()},reject:async response=>{reject(response),await callback?.()}}]})}function removeDialogFromState(identifier){return dialogState.value=dialogState.value.filter(({id})=>id!==identifier),dialogState.value}function responseDialog(type,currentDialog,response){if(currentDialog)return currentDialog[type]?.(response),currentDialog.isActive=!1,setTimeout(()=>{removeDialogFromState(currentDialog.id)},500),response}function useMazDialogConfirm(){return{data,dialogState,showDialogAndWaitChoice,removeDialogFromState,reject:async(currentDialog,response=`reject`,onClick)=>(await onClick?.(),responseDialog(`reject`,currentDialog,response)),accept:async(currentDialog,response=`accept`,onClick)=>(await onClick?.(),responseDialog(`accept`,currentDialog,response))}}var _hoisted_1={class:`maz-flex maz-items-center maz-gap-2`};var MazDialogConfirm_default=defineComponent({__name:`MazDialogConfirm`,props:{identifier:{},title:{},message:{},rejectText:{},rejectProps:{},hideRejectButton:{type:Boolean},acceptText:{},acceptProps:{},hideAcceptButton:{type:Boolean},buttons:{},modelValue:{type:Boolean},hideCloseButton:{type:Boolean},maxWidth:{},minWidth:{},scrollable:{type:Boolean},persistent:{type:Boolean},teleportSelector:{},beforeClose:{type:Function},closeOnEscape:{type:Boolean,default:!0},transitionName:{},backdropClass:{type:[Boolean,null,String,Object,Array]},backdropContentClass:{type:[Boolean,null,String,Object,Array]},contentPadding:{type:Boolean},justify:{},align:{},variant:{},ariaLabelledby:{},ariaDescribedby:{}},emits:[`open`,`close`],setup(__props,{expose:__expose}){let dialogProps=createPropsRestProxy(__props,[`identifier`,`message`,`buttons`,`title`,`modelValue`,`closeOnEscape`,`rejectText`,`acceptText`,`rejectProps`,`acceptProps`,`hideRejectButton`,`hideAcceptButton`]);let MazBtn=defineAsyncComponent(()=>import(`../components/MazBtn.js`));let{dialogState,reject,accept,data}=useMazDialogConfirm();let currentData=computed(()=>{let baseData={...defaultData,...data.value,hideAcceptButton:data.value.hideAcceptButton??defaultData.hideAcceptButton,hideRejectButton:data.value.hideRejectButton??defaultData.hideRejectButton,acceptProps:{...defaultData.acceptProps,...data.value.acceptProps,text:__props.acceptText??data.value.acceptText??data.value.acceptProps?.text??defaultData.acceptText,type:data.value.acceptProps?.type??defaultData.acceptProps.type},rejectProps:{...defaultData.rejectProps,...data.value.rejectProps,text:__props.rejectText??data.value.rejectText??data.value.rejectProps?.text??defaultData.rejectText,type:data.value.rejectProps?.type??defaultData.rejectProps.type}};return{...baseData,acceptText:__props.acceptText??baseData.acceptText,rejectText:__props.rejectText??baseData.rejectText,hideAcceptButton:__props.hideAcceptButton??baseData.hideAcceptButton,hideRejectButton:__props.hideRejectButton??baseData.hideRejectButton,acceptProps:{...baseData.acceptProps,...__props.acceptProps,text:__props.acceptText??__props.acceptProps?.text??baseData.acceptText??baseData.acceptProps.text},rejectProps:{...baseData.rejectProps,...__props.rejectProps,text:__props.rejectText??__props.rejectProps?.text??baseData.rejectText??baseData.rejectProps?.text}}});let currentButtons=computed(()=>__props.buttons??currentData.value.buttons);let currentModal=computed(()=>dialogState.value.find(({id})=>id===__props.identifier));let dialog=ref();__expose({close:()=>dialog.value?.close?.(),isActive:computed(()=>currentModal.value?.isActive??__props.modelValue??!1)});function isPromiseButton(button){return button?`type`in button&&(button.type===`accept`||button.type===`reject`):!1}function buttonClick(currentModal,button){return isPromiseButton(button)?button.type===`accept`?accept(currentModal,button.response):reject(currentModal,button.response):accept(currentModal,void 0,button.onClick)}return(_ctx,_cache)=>(openBlock(),createBlock(MazDialog_default,mergeProps({ref_key:`dialog`,ref:dialog},{..._ctx.$attrs,...dialogProps},{"close-on-escape":__props.closeOnEscape,"model-value":currentModal.value?.isActive??__props.modelValue??!1,onClose:_cache[2]||=$event=>_ctx.$emit(`close`,$event),onOpen:_cache[3]||=$event=>_ctx.$emit(`open`,$event),"onUpdate:modelValue":_cache[4]||=$event=>unref(reject)(currentModal.value)}),{title:withCtx(()=>[renderSlot(_ctx.$slots,`title`,{},()=>[createTextVNode(toDisplayString(__props.title||currentData.value?.title),1)])]),default:withCtx(()=>[renderSlot(_ctx.$slots,`default`,{accept:reason=>unref(accept)(currentModal.value,reason),reject:reason=>unref(reject)(currentModal.value,reason)},()=>[createTextVNode(toDisplayString(__props.message||currentData.value?.message),1)])]),footer:withCtx(()=>[renderSlot(_ctx.$slots,`footer-button`,{accept:reason=>unref(accept)(currentModal.value,reason),reject:reason=>unref(reject)(currentModal.value,reason)},()=>[createElementVNode(`div`,_hoisted_1,[currentButtons.value?(openBlock(!0),createElementBlock(Fragment,{key:0},renderList(currentButtons.value,(button,i)=>(openBlock(),createBlock(unref(MazBtn),mergeProps({key:i},{ref_for:!0},{...button,onClick:void 0,type:`button`},{onClick:$event=>buttonClick(currentModal.value,button)}),{default:withCtx(()=>[createTextVNode(toDisplayString(button.text),1)]),_:2},1040,[`onClick`]))),128)):(openBlock(),createElementBlock(Fragment,{key:1},[currentData.value.hideAcceptButton?createCommentVNode(``,!0):(openBlock(),createBlock(unref(MazBtn),mergeProps({key:0},{...currentData.value.acceptProps,type:`button`,text:currentData.value.acceptText??currentData.value.acceptProps?.text},{onClick:_cache[0]||=$event=>isPromiseButton(currentData.value.acceptProps)?unref(accept)(currentModal.value,currentData.value.acceptProps.response):currentData.value.acceptProps?.onClick?.()}),null,16)),currentData.value.hideRejectButton?createCommentVNode(``,!0):(openBlock(),createBlock(unref(MazBtn),mergeProps({key:1},{...currentData.value.rejectProps,type:`button`,onClick:void 0,text:currentData.value.rejectText??currentData.value.rejectProps?.text},{onClick:_cache[1]||=$event=>isPromiseButton(currentData.value.rejectProps)?unref(reject)(currentModal.value,currentData.value.rejectProps.response):currentData.value.rejectProps?.onClick?.()}),null,16))],64))])])]),_:3},16,[`close-on-escape`,`model-value`]))}});export{useMazDialogConfirm as n,MazDialogConfirm_default as t};