Fixes: 1) Replace `ElNotification` with `useNotification` across all components and composables; 2) Add missing semicolons, consistent formatting, and type annotations in multiple files; 3) Resolve non-reactive elements in wishlist and cart state management; Extra: 1) Update i18n translations with new strings for promocodes, balance, authentication, and profile settings; 2) Refactor SCSS styles including variable additions and component-specific tweaks; 3) Remove redundant queries, unused imports, and `storePage.ts` file for cleanup.
32 lines
No EOL
680 B
TypeScript
32 lines
No EOL
680 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])
|
|
|
|
ElNotification({
|
|
title: args.title,
|
|
duration,
|
|
message: messageVNode,
|
|
type: args.type
|
|
} as NotificationOptions)
|
|
} |