Select
Escolhe uma ou várias opções de uma lista que abre sob demanda.
O Select é para escolher entre cinco ou mais opções conhecidas, como a Origem de um Template ou a UF de destino. Para duas ou três opções visíveis, prefira RadioButtonGroup; para filtrar por texto, use um campo de busca.
import { Label, ListBox, Select } from "@rastreio-x/ui";
Padrão
A composição leva Label, Select.Trigger (valor e indicador) e Select.Popover com um ListBox. Cada item tem id e textValue.
Playground
Alterne variante e estados do campo; abra a lista para conferir o resultado.
Variantes
primary tem sombra suave; secondary não tem, e é a variante para usar dentro de cartões e outras superfícies.
Com descrição
Description fica abaixo do gatilho e explica onde a escolha aparece.
Vários valores
selectionMode="multiple" no Select e no ListBox permite marcar mais de uma opção. O valor mostra a lista escolhida.
Controlado
Com value e onChange você guarda a escolha no estado.
Desabilitado
O campo todo (isDisabled) ou só algumas opções (disabledKeys). Diga no texto da opção por que ela não está disponível.
Com botão de limpar
Select.ClearButton limpa a escolha com o mouse. No teclado, Backspace ou Delete limpam o valor do gatilho.
Anatomia
Select.Trigger: o botão que abre a lista, comSelect.ValueeSelect.Indicator.Select.ClearButton: limpa a escolha (opcional).Select.Popover: a camada flutuante que contém oListBox.ListBox.ItemeListBox.ItemIndicator: as opções e o sinal de selecionada.
Propriedades
Raiz (Select):
Gatilho (Select.Trigger):
Animações
A lista abre e fecha com opacity e transform em transição curta (150 ms), e o indicador gira. Com prefers-reduced-motion, a folha global da fachada reduz a transição a 0,01 ms.
Acessibilidade
- O gatilho é um botão com
aria-haspopup="listbox"earia-expanded; a lista tem papellistbox. - Teclado: Enter, Espaço ou seta para baixo abrem; setas navegam; digitar a inicial salta para a opção; Enter escolhe; Esc fecha e devolve o foco ao gatilho.
- O
Labeldá o nome acessível e deve estar sempre visível. isRequiredeisInvalidexpõemaria-requiredearia-invalid.
Boas práticas
Faça
Evite
- Mantenha as opções em ordem previsível (alfabética ou por frequência).
- Opção indisponível aparece bloqueada com o motivo, não desaparece.
- Use
secondarydentro de cartões e superfícies. - Para mais de 20 opções, ofereça busca.
Relacionados
- ListBox a lista usada dentro do
Select. - RadioButtonGroup para poucas opções sempre visíveis.
- TextField para texto livre.