DS MS.GOV V2.0.0

Diretrizes de design

Dropdown

O Dropdown é uma família de componentes que permite ao usuário selecionar opções ou acessar ações dentro de uma lista colapsável.

Ele não é um único componente, mas um padrão estrutural base, do qual derivam variações com comportamentos e finalidades distintas.

Essa família inclui:

  • Select
  • Combobox
  • Autocomplete
  • Menu (Action Menu / Context Menu)
  • Multi-select
  • Searchable Select

A escolha correta da variação é essencial para manter clareza, acessibilidade e consistência.

Estrutura Base (Anatomia Comum)

Todos os componentes da família Dropdown compartilham uma estrutura conceitual:

  1. Trigger
  2. Overlay / Lista
  3. Item de Opção
  4. Estado Ativo / Selecionado
  5. Feedback Visual

Trigger

Elemento que ativa o dropdown.

Pode ser:

  • Input
  • Botão
  • Campo de formulário

Responsável por:

  • Abrir/fechar lista
  • Exibir valor selecionado
  • Indicar estado (ícone de seta)

Overlay / Lista

Container flutuante que exibe as opções.

Características:

  • Posicionamento relativo ao trigger
  • Scroll quando necessário
  • Elevação superior ao conteúdo base
  • Pode conter agrupamentos

2.3 Item

Cada opção da lista.

Pode conter:

  • Texto
  • Ícone
  • Descrição
  • Estado disabled
  • Indicador de seleção

2.4 Estados Comuns

  • Default
  • Hover
  • Focus
  • Active
  • Selected
  • Disabled
  • Error (quando aplicado a formulário)

Variações do Dropdown


3.1 Select

O que é

Componente de seleção simples, substituto estilizado do <select> nativo.

Quando usar

  • Listas fechadas
  • Até 10–15 opções
  • Seleção única
  • Cenários formais (formulários)

Características

  • Não editável
  • Valor fixo
  • Pode possuir placeholder
  • Pode ter validação

Quando NÃO usar

  • Quando o usuário precisa digitar
  • Listas muito extensas
  • Busca avançada

Matriz de Decisão

CenárioComponente Ideal
Seleção simples até 10 opçõesSelect
Lista grande com filtroCombobox
Sugestão dinâmica por APIAutocomplete
Ações administrativasMenu
Múltiplas escolhasMulti-select
Select com busca internaSearchable Select

Comportamento e Interação


Abertura

  • Click
  • Enter
  • Space
  • Seta para baixo (teclado)

Navegação por Teclado

  • ↑ / ↓ navegam entre itens
  • Enter seleciona
  • Esc fecha
  • Tab move foco

Fechamento

  • Clique fora
  • Esc
  • Seleção de item (quando aplicável)

Acessibilidade

Implementações devem seguir:

  • role="combobox" (quando aplicável)
  • aria-expanded
  • aria-controls
  • aria-activedescendant
  • role="listbox"
  • role="option"

Menu de ações:

  • role="menu"
  • role="menuitem"

Evitar:

  • Dropdowns que não respondem a teclado
  • Overlay sem gerenciamento de foco

Boas Práticas

Faça

  • Limite altura máxima da lista
  • Use scroll interno
  • Indique item selecionado
  • Mantenha largura coerente com trigger
  • Use debounce em autocomplete remoto

Não Faça

  • Não use dropdown para mais de 50 opções sem busca
  • Não esconda ações críticas dentro de menu sem necessidade
  • Não misture seleção e ação no mesmo componente
  • Não permita digitação livre quando a lista é restrita

Erros Comuns

  • Usar Menu quando deveria ser Select
  • Usar Select quando deveria ser Autocomplete
  • Não tratar estados vazios
  • Não tratar loading
  • Não indicar erro de validação

Resumo Estratégico

A família Dropdown deve ser usada com clareza conceitual:

  • Select → escolha controlada
  • Combobox → escolha com filtro
  • Autocomplete → sugestão inteligente
  • Menu → ação
  • Multi-select → múltiplas escolhas

Escolher a variação correta melhora:

  • Usabilidade
  • Performance
  • Acessibilidade
  • Clareza semântica
  • Consistência do Design System