diff --git a/docs/components/toastProvider/examples/ToastProviderExampleChild.vue b/docs/components/toastProvider/examples/ToastProviderExampleChild.vue index 1288081..ce24439 100644 --- a/docs/components/toastProvider/examples/ToastProviderExampleChild.vue +++ b/docs/components/toastProvider/examples/ToastProviderExampleChild.vue @@ -5,6 +5,7 @@ +
@@ -13,18 +14,34 @@ diff --git a/src/components/Toast/components/ToastProvider/ToastProvider.vue b/src/components/Toast/components/ToastProvider/ToastProvider.vue index 6dd4809..3d5b3b8 100644 --- a/src/components/Toast/components/ToastProvider/ToastProvider.vue +++ b/src/components/Toast/components/ToastProvider/ToastProvider.vue @@ -22,7 +22,7 @@ export default defineComponent({ id, ...toast, }) - if(toast.time > 0) + if (toast.time > 0) runRemoveTimeout(id, toast.time) } @@ -32,7 +32,7 @@ export default defineComponent({ } const popToast = () => { - if(toasts.value.length === 0) return + if (toasts.value.length === 0) return toasts.value.pop() } @@ -63,12 +63,18 @@ export default defineComponent({ }, { default: () => toasts.map(_toast => // rendering every toast - h(Toast as any, { - closable: true, - type: _toast.type, - key: _toast.id, - onClose: () => removeToast(_toast.id), - }, () => _toast.text), + _toast.component + ? h(_toast.component, { + key: _toast.id, + onClose: () => removeToast(_toast.id), + ...(_toast.componentProps ? _toast.componentProps : {}), + }, () => _toast.text) + : h(Toast as any, { + closable: true, + type: _toast.type, + key: _toast.id, + onClose: () => removeToast(_toast.id), + }, () => _toast.text), ), }, ), diff --git a/src/components/Toast/components/ToastProvider/types.ts b/src/components/Toast/components/ToastProvider/types.ts index 9ecaf0a..3d802c3 100644 --- a/src/components/Toast/components/ToastProvider/types.ts +++ b/src/components/Toast/components/ToastProvider/types.ts @@ -1,9 +1,12 @@ import type { ToastType } from '@/components/Toast/types' +import type { DefineComponent } from 'vue' export type ToastItem = { time: number // ms type: ToastType text: string + component?: DefineComponent + componentProps?: Record } export type ToastItemWithId = ToastItem & { diff --git a/src/components/utils/FlowbiteThemable/FlowbiteThemable.vue b/src/components/utils/FlowbiteThemable/FlowbiteThemable.vue index 1dd9e80..fb438d6 100644 --- a/src/components/utils/FlowbiteThemable/FlowbiteThemable.vue +++ b/src/components/utils/FlowbiteThemable/FlowbiteThemable.vue @@ -1,5 +1,7 @@