-
Notifications
You must be signed in to change notification settings - Fork 39
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Composition API support? #7
Comments
Hi, @restyler the component was not written with the new Composition API. So for now it’s not supported, but I want it to be supported. It's a great candidate for PRs 😄 UPDATE: You can use it in Composition API as @andgeno related in this comment #16 (comment) |
Thank you! In case anyone is interested in quick solution, I've found https://github.com/Maronato/vue-toastification/tree/next which is a similar project but designed with Vue 3 Composition API support in mind. |
Maybe this is of interest for you. I wrote a quick declare module '@meforma/vue-toaster' {
export const install: PluginFunction<{}>;
export interface ToasterOptions {
message?: string;
type?: 'default' | 'success' | 'info' | 'warning' | 'error';
position?: 'top' | 'bottom' | 'top-right' | 'bottom-right' | 'top-left' | 'bottom-left';
duration?: number;
dismissible?: boolean;
onClick?(): void;
onClose?(): void;
queue?: boolean;
pauseOnHover?: boolean;
useDefaultCss?: boolean;
}
export = class Toaster {
clear(): void;
show(message: string, options?: ToasterOptions): void;
success(message: string, options?: ToasterOptions): void;
error(message: string, options?: ToasterOptions): void;
info(message: string, options?: ToasterOptions): void;
warning(message: string, options?: ToasterOptions): void;
};
} |
Should this library expose function useRouter() {
return vue.inject(routerKey);
} Right now I have: import { Toaster } from '@meforma/vue-toaster';
import { inject } from 'vue';
export function useToast(): Toaster {
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
return inject<Toaster>('toast')!;
} based on @andgeno's example @jprodrigues70 what do you think? |
Not sure if this will help, but I set it this way to use the toast on any composition API components. // useToast.js
import { getCurrentInstance } from "@vue/runtime-core";
export default () => {
const toast = getCurrentInstance().ctx.$toast;
const trigger = (message, type) => {
switch (type) {
case "success":
toast.sucess(message);
break;
case "error":
toast.error(message);
break;
case "warning":
toast.warning(message);
break;
case "info":
toast.info(message);
break;
default:
toast.show(message);
break;
}
};
return {
trigger,
};
}; // app.js
import { createApp } from "vue";
import Toaster from "@meforma/vue-toaster";
import App from "./App.vue";
createApp(App)
.use(Toaster, {
duration: 5000, // or additional global properties
})
.mount("#app"); // Component.vue
...
import useToast from "path/to/useToast";
...
setup() {
const { trigger } = useToast();
...
trigger('Show me toast!'); // or pass the toast type as the second args
}
... Edit: Change to set the toast type on trigger. |
I'm really interested in having this. @naftis solutions seem the proper one, is there a PR already opened? |
@alvarosaburido My project moved to https://github.com/Maronato/vue-toastification/tree/next which implements the hook and also had other features this one was missing. It would be nice to have this + solid TypeScript support in this project too! |
You can try |
Hello,
Is it possible to use the component in Composition API?
As far as I see, the example is based on Options API.
Thanks!
The text was updated successfully, but these errors were encountered: