import { ref } from 'vue' export interface ConfirmDialogExpose { open: (title: string, message: string) => Promise } export const ConfirmDialog = () => { let resolver: ((value: boolean) => void) | null = null const visible = ref(false), title = ref(''), message = ref(''), open = (t: string, m: string) => { title.value = t message.value = m visible.value = true return new Promise((resolve) => { resolver = resolve }) }, close = (result: boolean) => { visible.value = false resolver?.(result) resolver = null }, confirm = () => close(true), cancel = () => close(false) vineExpose({ open }) return vine`

{{ title }}

{{ message }}

` }