Files
Mangarr/assets/vue/app/shared/composables/useNotifications.js

66 lines
1.6 KiB
JavaScript

import { ref } from 'vue';
const notifications = ref([]);
let nextId = 1;
export function useNotifications() {
const addNotification = (message, type = 'info', duration = 4000) => {
const notification = {
id: nextId++,
message,
type, // 'success', 'error', 'warning', 'info'
duration,
timestamp: Date.now()
};
notifications.value.push(notification);
// Auto-remove après la durée spécifiée
if (duration > 0) {
setTimeout(() => {
removeNotification(notification.id);
}, duration);
}
return notification.id;
};
const removeNotification = (id) => {
const index = notifications.value.findIndex(n => n.id === id);
if (index > -1) {
notifications.value.splice(index, 1);
}
};
const clearAll = () => {
notifications.value = [];
};
const showSuccess = (message, duration = 4000) => {
return addNotification(message, 'success', duration);
};
const showError = (message, duration = 6000) => {
return addNotification(message, 'error', duration);
};
const showWarning = (message, duration = 5000) => {
return addNotification(message, 'warning', duration);
};
const showInfo = (message, duration = 4000) => {
return addNotification(message, 'info', duration);
};
return {
notifications,
addNotification,
removeNotification,
clearAll,
showSuccess,
showError,
showWarning,
showInfo
};
}