Toasts are used to show a notification to the user. They are implemented using Svelte stores. The <Base>
component sets up the store and the wrapper components to show the toast.
import { toast } from '@hyvor/design/components';
toast('Blank toast');
toast.success('Success toast');
toast.error('Error toast');
toast.warning('Warning toast');
toast.info('Info toast');
toast.loading('Loading toast'); // not auto-closed
In all toast-creating functions, you can pass an object as the second parameter to override options.
toast("Notification", {
type: 'success',
duration: 5000, // default is 5s
})
The toast message can contain HTML code.
toast.success('<strong>Success</strong> toast');
You can also pass a svelte component as the message. A toast
prop will be passed to the component. You can use it to close the toast.
import ToastComponent from './ToastComponent.svelte';
toast(ToastComponent);
// ToastComponent.svelte
<script>
import toastService from '$lib/components/Toast/toast.ts';
import Button from '$lib/components/Button/Button.svelte';
export let toast;
</script>
This is a Svelte Component notification
<Button
on:click={() => toastService.close(toast.id)}
size="x-small"
>Close</Button>
You can show a loading toast by calling the toast.loading()
function. The toast will not be auto-closed. You may update its type by calling a toast-creating function with the same toast id.
// save the toast id
const toastId = toast.loading('Loading...');
await doSomething();
// change status
toast.success('Success', { id: toastId });
toast.error('Error', { id: toastId });
// or by using options
toast('Success', { id: toastId, type: 'success' });
You can also close it by calling toast.close(toastId)
function.
const toastId = toast.loading('Loading...');
await doSomething();
toast.close(toastId);