30 lines
685 B
TypeScript
30 lines
685 B
TypeScript
|
import {defineStore} from 'pinia';
|
||
|
|
||
|
interface Notification {
|
||
|
message?: string;
|
||
|
details?: string[] | string;
|
||
|
}
|
||
|
|
||
|
export const useNotificationStore = defineStore('notification', {
|
||
|
state: () => ({
|
||
|
hasNotification: false,
|
||
|
type: "info",
|
||
|
notification: {},
|
||
|
}),
|
||
|
actions: {
|
||
|
pushNotification(type: 'warn' | 'info' | 'success', notification: Notification) {
|
||
|
this.notification = notification;
|
||
|
this.hasNotification = true;
|
||
|
this.type = type;
|
||
|
setTimeout(() => {
|
||
|
this.clearNotification();
|
||
|
}, 5000);
|
||
|
},
|
||
|
clearNotification() {
|
||
|
this.notification = {};
|
||
|
this.type = 'info';
|
||
|
this.hasNotification = false;
|
||
|
}
|
||
|
}
|
||
|
});
|