diff --git a/src/app/components/base/Toast.vue b/src/app/components/base/Toast.vue index c3bae05c..c1497e5b 100644 --- a/src/app/components/base/Toast.vue +++ b/src/app/components/base/Toast.vue @@ -11,12 +11,10 @@ defineExpose({ publish, }); -// TODO: support multiple types (info, success, error, warning) +const count = reactive([]); -const count = reactive<{ title: string; message: string }[]>([]); - -function publish(e: { title: string; message: string }) { - count.push({ title: e.title, message: e.message }); +function publish(e: ToastParams) { + count.push({ type: e.type, title: e.title, message: e.message }); } @@ -24,17 +22,20 @@ function publish(e: { title: string; message: string }) { - + {{ e.title }} - {{ e.message }} + {{ + e.message + }} diff --git a/src/app/stores/toast.ts b/src/app/stores/toast.ts index 2768f91c..9463154c 100644 --- a/src/app/stores/toast.ts +++ b/src/app/stores/toast.ts @@ -2,7 +2,7 @@ export const useToast = defineStore('Toast', () => { const { t: $t } = useI18n(); type ToastInterface = { - publish: (e: { title: string; message: string }) => void; + publish: (e: ToastParams) => void; }; type ToastRef = Ref; @@ -38,7 +38,11 @@ export const useToast = defineStore('Toast', () => { title = $t('toast.error'); } } - toast.value?.value?.publish({ title: title ?? '', message: message ?? '' }); + toast.value?.value?.publish({ + type, + title: title ?? '', + message: message ?? '', + }); } return { setToast, showToast }; diff --git a/src/app/utils/types.ts b/src/app/utils/types.ts new file mode 100644 index 00000000..0736ab97 --- /dev/null +++ b/src/app/utils/types.ts @@ -0,0 +1,6 @@ +export type ToastTypes = 'error' | 'success'; +export type ToastParams = { + type: ToastTypes; + title: string; + message: string; +};