schon/storefront/app/composables/notification/useNotification.ts
2026-02-27 21:59:51 +03:00

36 lines
745 B
TypeScript

import type { VNodeChild } from 'vue';
interface INotificationArguments {
message: string | VNodeChild;
type: string;
title?: string;
}
export function useNotification(args: INotificationArguments) {
const duration = 5000;
const progressBar = h('div', {
class: 'el-notification__progress',
style: {
animationDuration: `${duration}ms`,
},
});
const bodyContent: VNodeChild = typeof args.message === 'string' ? h('p', args.message) : args.message;
const messageVNode = h('div', [
bodyContent,
progressBar,
]);
const notification = ElNotification({
title: args.title,
duration: 0,
message: messageVNode,
type: args.type,
} as NotificationOptions);
setTimeout(() => {
notification.close();
}, duration);
}