Vitral 0.2
Mensagens

Toast

Notificações enviadas de qualquer lugar com useToast, empilhadas na posição escolhida, que pausam o tempo enquanto estão sob o ponteiro ou em foco.

Importação

main.ts
import { Toast } from '@vitral/vue';

Severidades

Quatro segundos cada; passe o ponteiro sobre um para mantê-lo.

<script setup lang="ts">import { Button, Toast, useToast } from '@vitral/vue'; const toast = useToast();const severities = [    { severity: 'success', summary: 'Saved', detail: 'Your changes are live.' },    { severity: 'info', summary: 'Update available', detail: 'Restart to install version 2.4.' },    { severity: 'warn', summary: 'Storage almost full', detail: '92% of 15 GB used.' },    { severity: 'danger', summary: 'Upload failed', detail: 'The connection was reset.' },    { severity: 'secondary', summary: 'Synced', detail: 'Everything is up to date.' },    { severity: 'contrast', summary: 'Copied', detail: 'The link is on your clipboard.' }] as const; // A group of its own, so only this example's <Toast> shows these messages// when another <Toast> is on the page.function show(index: number) {    toast.add({ ...severities[index]!, group: 'severities', life: 4000 });}</script> <template>    <Toast group="severities" />    <Button v-for="(s, i) in severities" :key="s.severity" :label="s.severity" severity="secondary" @click="show(i)" /></template>

Fixos e agrupados

Sem um `life`, um toast espera ser fechado. Um `group` o envia para outro `<Toast>`, aqui um na parte de baixo.

<script setup lang="ts">import { Button, Toast, useToast } from '@vitral/vue'; const toast = useToast(); // Each <Toast> has a group, so it shows only the messages sent to it// when another <Toast> is on the page.function sticky() {    toast.add({ group: 'sticky', severity: 'info', summary: 'Stays until closed', detail: 'No life, so it waits for you.' });} function bottom() {    toast.add({ group: 'bc', severity: 'success', summary: 'Message sent', life: 3000 });}</script> <template>    <Toast group="sticky" />    <Toast position="bottom-center" group="bc" />    <Button label="Sticky" severity="secondary" @click="sticky" />    <Button label="Bottom centre" severity="secondary" @click="bottom" />    <Button label="Clear all" severity="secondary" variant="outlined" @click="toast.removeAll()" /></template>

API

Lido de packages/vue/src/components/Toast/types.ts, então diz o que o componente aceita de fato.

Props

NomeTipoDescrição
positionToastPositionO padrão é `'top-right'`.
groupstringMostra só as mensagens enviadas com o mesmo `group`.

Mais pt, dt e unstyled de BaseProps; veja pass-through e modo sem estilo.

Emits

EventoPayloadDescrição
closeevent: ToastEventFechado pelo seu botão de fechar.
life-endevent: ToastEventFechado porque seu `life` acabou.

Slots

NomeProps do slotDescrição
message(props: { message: ToastMessage })Substitui o ícone e o texto de cada mensagem; o botão de fechar permanece.
container(props: { message: ToastMessage; closeCallback: () => void })Substitui todo o interior do card, botão de fechar incluído.
closeicon——