useToast
Components and an API for displaying user toast messages.
Setup
To use toasts, provide the toast context somewhere high your component tree along with the ToastContainer
component.
The root layout component is probably the best place to set up the context.
<script lang="ts"> import { ToastContainer, ToastVariant } from '@viamrobotics/prime-core';
import PageRoot from '$lib/layout/page-root.svelte'; import PageContent from '$lib/layout/page-content.svelte';</script>
<PageRoot> <PageContent> <slot /> </PageContent> <ToastContainer /></PageRoot>
Usage
To display a toast, first provide access to the Toast context using provideToast
. Then, you can use the useToast
function:
import { provideToast } from '@viamrobotics/prime-core';
const doSomethingCrazy = () => { const toast = provideToast();
toast({ message: 'Hello, Brooklyn!', variant: ToastVariant.Success });};
If the variant is not specified, the default is “success”.
An action can also be specified in the params to useToast
.
import { provideToast } from '@viamrobotics/prime-core';
const doSomethingCrazy = () => { const toast = provideToast(); const exampleHanderFunction = () => void;
toast({ message: 'Plain slice please!' }); toast({ message: 'Plain slice please!', action: { text: 'action', handler: exampleHandlerFunction } });};
Try it!
<div class="flex flex-col"> <ToastContainer />
<div class="flex flex-wrap gap-4"> <Button onclick={() => toast({ message: 'Success message', variant: ToastVariant.Success, })} > Success </Button> <Button onclick={() => toast({ message: 'Info message', variant: ToastVariant.Info, })} > Info </Button> <Button onclick={() => toast({ message: 'Danger message', variant: ToastVariant.Danger, })} > Danger </Button> <Button onclick={() => toast({ message: 'Warning message', variant: ToastVariant.Warning, })} > Warning </Button> <Button onclick={() => toast({ message: 'Neutral message', variant: ToastVariant.Neutral, })} > Neutral </Button> <Button onclick={() => toast({ message: 'Success message', variant: ToastVariant.Success, action: { text: 'action', handler: () => { console.log('Clicked action'); }, }, })} > Success with action </Button> <Button onclick={() => toast({ message: 'Info message', variant: ToastVariant.Info, action: { text: 'action', handler: () => { console.log('Clicked action'); }, }, })} > Info with action </Button> <Button onclick={() => toast({ message: 'Danger message', variant: ToastVariant.Danger, action: { text: 'action', handler: () => { console.log('Clicked action'); }, }, })} > Danger with action </Button> <Button onclick={() => toast({ message: 'Warning message', variant: ToastVariant.Warning, action: { text: 'action', handler: () => { console.log('Clicked action'); }, }, })} > Warning with action </Button> <Button onclick={() => toast({ message: 'Neutral message', variant: ToastVariant.Neutral, action: { text: 'action', handler: () => { console.log('Clicked action'); }, }, })} > Neutral with action </Button> </div>
</div>