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 oplacement).Dropdown.Menu: a lista de itens, comaria-label.Dropdown.Item: cada ação, comLabel,DescriptioneKbdopcionais.Dropdown.ItemIndicator: sinal de selecionado (check ou ponto).Dropdown.Section,Dropdown.SubmenuTriggereDropdown.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
menucom itensmenuitem; o gatilho expõearia-haspopupearia-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(ouaria-labelledby). - Botão só com ícone precisa de
aria-labeldescrevendo 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
Evite
- 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
Descriptionsó 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 comSeparator.