snackbar.ts
1 import { defineStore } from 'pinia' 2 3 type SnackbarType = 'error' | 'success' | 'info' | 'warning' | 'unknown' 4 5 interface SnackbarState { 6 isShow: boolean 7 message: string 8 type: SnackbarType 9 } 10 11 export const useSnackbarStore = defineStore('snackbarStore', { 12 state: () => 13 ({ 14 isShow: false, 15 message: '', 16 type: 'unknown' 17 }) as SnackbarState, 18 19 actions: { 20 showMessage(message: string, type: SnackbarType = 'unknown') { 21 console.log(message) 22 this.isShow = true 23 this.message = message 24 this.type = type 25 }, 26 27 showErrorMessage(message: string) { 28 this.showMessage(message, 'error') 29 }, 30 showSuccessMessage(message: string) { 31 this.showMessage(message, 'success') 32 }, 33 showInfoMessage(message: string) { 34 this.showMessage(message, 'info') 35 }, 36 showWarningMessage(message: string) { 37 this.showMessage(message, 'warning') 38 }, 39 getIcon() { 40 const icon = { 41 info: 'mdi-information', 42 success: 'mdi-check-circle', 43 error: 'mdi-alert-circle', 44 warning: 'mdi-alert', 45 unknown: 'mdi-help-circle-outline' 46 } 47 48 return icon[this.type] 49 } 50 } 51 })