49 lines
1.2 KiB
TypeScript
Executable File
49 lines
1.2 KiB
TypeScript
Executable File
|
|
import { defineStore } from 'pinia'
|
|
import { ref, watch } from 'vue'
|
|
|
|
export const useDialogStore = defineStore('dialog', () => {
|
|
const onConfirm = ref<Function>()
|
|
const onCancel = ref<Function>()
|
|
const confirmText = ref('')
|
|
const cancelText = ref('')
|
|
const open = ref(false)
|
|
const title = ref('')
|
|
const content = ref('')
|
|
const type = ref('normal')
|
|
const showCancelButton = ref(true)
|
|
const dismissOnAction = ref(true)
|
|
const timer = ref<any>()
|
|
watch(open, (value) => {
|
|
if (!value) {
|
|
// check if timer is set
|
|
if (timer.value) {
|
|
clearTimeout(timer.value)
|
|
}
|
|
|
|
timer.value = setTimeout(() => {
|
|
onConfirm.value = () => { }
|
|
onCancel.value = () => { }
|
|
dismissOnAction.value = true
|
|
showCancelButton.value = true
|
|
}, 2000)
|
|
} else {
|
|
if (timer.value) {
|
|
clearTimeout(timer.value)
|
|
}
|
|
}
|
|
})
|
|
|
|
return {
|
|
showCancelButton,
|
|
dismissOnAction,
|
|
onConfirm,
|
|
onCancel,
|
|
title,
|
|
content,
|
|
type,
|
|
open,
|
|
confirmText,
|
|
cancelText,
|
|
}
|
|
}) |