Pular para o conteúdo

Dropdown

Abre um menu de ações ou de escolhas a partir de um botão.

O Dropdown agrupa ações secundárias sob um botão: importar CSV, duplicar uma versão, mover uma conversa. Para escolher um valor de um campo, use Select; para mostrar uma ajuda ao passar o mouse, Tooltip; para conteúdo livre, Popover.

import { Dropdown, Label } from "@rastreio-x/ui";

Padrão

O gatilho é o primeiro filho (um Button), seguido de Dropdown.Popover com um Dropdown.Menu. Cada Dropdown.Item tem id e textValue, e o menu tem aria-label. Use onAction para tratar a escolha.

Com ícones e descrições

Ícone decorativo (aria-hidden) à esquerda e Description explica o efeito da ação.

Ação destrutiva e item desabilitado

variant="danger" marca a ação destrutiva, separada das outras por um Separator. disabledKeys bloqueia um item: diga no texto por que ele não está disponível.

Seleção múltipla

selectionMode com selectedKeys e onSelectionChange transforma o menu em filtro; Dropdown.ItemIndicator mostra o check.

Atalhos de teclado

Kbd com slot="keyboard" mostra o atalho à direita do item.

Gatilho só com ícone

Como no cartão do kanban de suporte: o botão é só um EllipsisIcon, então precisa de aria-label que diga o objeto da ação.

Anatomia

  • Dropdown: guarda o estado de abertura.
  • Dropdown.Popover: a camada flutuante (escolha o placement).
  • Dropdown.Menu: a lista de itens, com aria-label.
  • Dropdown.Item: cada ação, com Label, Description e Kbd opcionais.
  • Dropdown.ItemIndicator: sinal de selecionado (check ou ponto).
  • Dropdown.Section, Dropdown.SubmenuTrigger e Dropdown.SubmenuIndicator: seções e submenus.

Propriedades

Dropdown:

Dropdown.Menu:

Dropdown.Item:

Dropdown.Popover:

Animações

O menu abre e fecha com opacity e transform em transição curta de CSS, e o indicador do item aparece na escolha. Com prefers-reduced-motion, a folha global da fachada reduz as transições a 0,01 ms.

Acessibilidade

  • Papel menu com itens menuitem; o gatilho expõe aria-haspopup e aria-expanded.
  • Teclado: Enter, Espaço ou seta para baixo abrem; setas navegam; digitar a inicial salta para o item; Enter ativa; Esc fecha e devolve o foco ao gatilho.
  • O menu precisa de aria-label (ou aria-labelledby).
  • Botão só com ícone precisa de aria-label descrevendo o objeto ("Mover para… conversa de Marina Souza").
  • A ação destrutiva é marcada também por texto, não só pela cor danger.

Boas práticas

Faça

Rótulos de verbo mais objeto, ação destrutiva por último e separada.

Evite

Mais de sete itens sem seções, ou esconder a única ação principal da tela dentro de um menu.
  • Ação principal vai num botão visível; o menu leva as secundárias.
  • Para escolher um valor num formulário, use Select.
  • Mantenha o texto do item curto; use Description só quando a ação não for óbvia.
  • Importante: Header (título de seção do menu) ainda não é exportado pela fachada; hoje separe seções com Separator.

Relacionados

  • Select para escolher um valor em campo.
  • Popover para conteúdo livre sob um gatilho.
  • Button como gatilho do menu.
  • Tooltip para dicas curtas.