Sobreposição
Dialog
Uma janela sobre a página, modal ou não, que leva o foco para dentro, o mantém ali e o devolve ao fechar.
Testado com WAI-ARIA
Importação
main.ts
import { Dialog } from '@vitral/vue';Básico
O cabeçalho dá nome ao diálogo; o rodapé é a faixa de botões.
Posição
O diálogo fica no centro, ao longo de uma borda ou num canto, e desliza a partir dali.
Maximizável
Um botão faz o diálogo ocupar toda a viewport; o nome dele alterna entre Maximize e Restore.
Não modal
`modal: false` mantém a página utilizável: sem máscara, sem foco preso, sem bloqueio de rolagem. Escape continua fechando.
Overlays dentro
Abra o select e pressione Escape: o select fecha primeiro, e o diálogo fica.
API
Lido de packages/vue/src/components/Dialog/types.ts, então diz o que o componente aceita de fato.
Props
| Nome | Tipo | Descrição |
|---|---|---|
| header | string | O título; ele dá nome ao diálogo. Sem ele, nomeie-o com `aria-label` ou `aria-labelledby`. |
| modal | boolean | Escurece e bloqueia a página, prende o foco e trava a rolagem. O padrão é true. |
| closable | boolean | Mostra o botão de fechar. O padrão é true. |
| dismissableMask | boolean | Fecha com um clique na máscara. |
| closeOnEscape | boolean | O padrão é true. |
| position | DialogPosition | — |
| maximizable | boolean | Adiciona um botão que faz o diálogo ocupar a viewport. |
| blockScroll | boolean | Trava a rolagem da página mesmo quando o diálogo não é modal. |
| showHeader | boolean | O padrão é true. |
| appendTo | string | `'body'` (o padrão), `'self'` para renderizar no lugar, ou um seletor. |
Mais pt, dt e unstyled de BaseProps; veja pass-through e modo sem estilo.
Emits
| Evento | Payload | Descrição |
|---|---|---|
| show | — | — |
| hide | — | — |
| after-hide | — | Depois da animação de fechar, quando o diálogo já saiu da página. |
| maximize | — | — |
| unmaximize | — | — |
Slots
| Nome | Props do slot | Descrição |
|---|---|---|
| default | — | — |
| header | — | Substitui o texto do título; ele continua dando nome ao diálogo. |
| footer | — | — |
| closeicon | — | — |
| maximizeicon | (props: { maximized: boolean }) | — |