The toast component is a non-disruptive message that appears at the top of the interface to provide a quick, at-a-glance feedback on the outcome of an action. Toasts are often used to confirm that an action has been completed successfully or to inform users of a change in state.
<script lang="ts" setup>
import { useToastNotifications } from '@returnless/focus-ui';
const {
initializeNotificationHandlers,
emitToastNotificationEvent,
emitToastNotificationEvents,
toastNotifications,
closeToastNotification,
} = useToastNotifications();
const TOAST_MESSAGE_DURATION = 5_000;
const notifications = ref([{
message: 'This is a toast message',
duration: TOAST_MESSAGE_DURATION,
}]);
onMounted(() => {
initializeNotificationHandlers();
});
watch(notifications, (newValue): void => {
if (newValue) {
setTimeout(() => {
emitToastNotificationEvents(newValue);
});
}
}, { immediate: true });
function closeToast(toastNotification: ToastNotification): void {
closeToastNotification(toastNotification);
}
function addToast(): void {
emitToastNotificationEvent({
message: 'This is a new toast message',
duration: TOAST_MESSAGE_DURATION,
});
}
</script>Toast should:
Toast messages should be:
Only include an action in toast if the same action is available elsewhere o n the page. For example:
Actions should:
Cancel, for dismissing toast. The X to dismiss is already included in the component.The content of the toast component is implemented as an ARIA live region using aria-live"assertive". When the toast appears, screen readers will interrupt any announcement a screen reader is currently making.
Avoid using toast for critical information that users need to act on immediately. Toast might be difficult for users with low vision or low dexterity to access because it:
Make sure that users can also accomplish the action in the toast another way, since the toast action may be difficult to access for some users. If the toast action is not available somewhere else on the page, for example a retry action that reloads a section, it should have a fallback action, for example a browser refresh.
Toast with action should persist for at least 10,000 milliseconds to give users enough time to read the message and act on it.