T2 EducaçãoMidas

Dialog

Janela modal sobre a página para tarefas focadas (formulários curtos, confirmações, questionários). Dialog, DialogTrigger, DialogContent (com botão fechar), DialogHeader, DialogTitle, DialogDescription, DialogFooter e DialogClose.

Código-fonte

Exemplos

Interaja com o componente e copie o código de cada exemplo.

Formulário

import {
  Dialog,
  DialogClose,
  DialogContent,
  DialogDescription,
  DialogFooter,
  DialogHeader,
  DialogTitle,
  DialogTrigger,
} from "@t2-educacao/midas";

Uso

<Dialog>
  <DialogTrigger asChild>
    <Button variant="outline">Editar perfil</Button>
  </DialogTrigger>
  <DialogContent>
    <DialogHeader>
      <DialogTitle>Editar perfil</DialogTitle>
      <DialogDescription>Altere seus dados e salve.</DialogDescription>
    </DialogHeader>
    <Field>
      <FieldLabel htmlFor="nome">Nome</FieldLabel>
      <Input id="nome" defaultValue="Ana Souza" />
    </Field>
    <DialogFooter>
      <DialogClose asChild>
        <Button variant="outline">Cancelar</Button>
      </DialogClose>
      <Button>Salvar</Button>
    </DialogFooter>
  </DialogContent>
</Dialog>

Componentes

ComponenteO que é
DialogRaiz (open, defaultOpen, onOpenChange)
DialogTriggerAbre o diálogo (use asChild)
DialogContentA janela (largura máxima de 448px). showCloseButton={false} esconde o X
DialogHeader / DialogTitle / DialogDescriptionCabeçalho. O título dá nome ao diálogo
DialogFooterRodapé cinza para as ações
DialogCloseFecha o diálogo

Exemplos

Controlado

const [aberto, setAberto] = useState(false);

<Dialog open={aberto} onOpenChange={setAberto}>
  <DialogContent>...</DialogContent>
</Dialog>

Com Questionnaire

Veja o exemplo "Dialog" em Questionnaire.

Acessibilidade

  • Foco fica preso dentro do diálogo e volta ao gatilho ao fechar.
  • Esc fecha. O fundo fica inerte para leitores de tela.
  • DialogTitle é obrigatório (pode ficar visualmente escondido com className="sr-only").

Não faça

  • Abrir diálogo dentro de diálogo.
  • Usar diálogo para mensagens que não exigem ação: use Toast.

On this page