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); }