Combobox
StableCampo em que a pessoa digita até a lista, com grupos, limpeza e seleção múltipla em chips. Composto sobre Base UI Combobox e sobre o InputGroup e o Button do Up Web DS. O Select mostra uma lista; o combobox deixa digitar dentro dela — o que só compensa depois do ponto em que varrer com os olhos para de funcionar, e cobra um preço real: o campo passa a aceitar texto que não casa com nada, então o estado vazio faz parte do contrato.
Instalação
npx up-web-ds add comboboxGera check, chevron-down, close para a biblioteca de ícones do projeto (components.json → iconLibrary).
Preview
Basic
Default
Grouped
With Clear
Multiple
All states
Basic
Default
Grouped
With Clear
Multiple
Usage
Props
Combobox
Estende ComboboxRoot.Props<Value, Multiple>.
ComboboxValue
Estende ComboboxPrimitive.Value.Props.
ComboboxTrigger
Estende ComboboxPrimitive.Trigger.Props. Aceita também os atributos padrão de um elemento React (284 não listados).
ComboboxInput
Estende ComboboxPrimitive.Input.Props. Aceita também os atributos padrão de um elemento React (304 não listados).
ComboboxContent
Estende ComboboxPrimitive.Popup.Props & Pick< ComboboxPrimitive.Positioner.Props, 'side' | 'align' | 'sideOffset' | 'alignOffset' | 'anchor' >. Aceita também os atributos padrão de um elemento React (275 não listados).
ComboboxList
Estende ComboboxPrimitive.List.Props. Aceita também os atributos padrão de um elemento React (274 não listados).
ComboboxItem
Estende ComboboxPrimitive.Item.Props. Aceita também os atributos padrão de um elemento React (272 não listados).
ComboboxGroup
Estende ComboboxPrimitive.Group.Props. Aceita também os atributos padrão de um elemento React (275 não listados).
ComboboxLabel
Estende ComboboxPrimitive.GroupLabel.Props. Aceita também os atributos padrão de um elemento React (275 não listados).
ComboboxCollection
Estende ComboboxPrimitive.Collection.Props.
ComboboxEmpty
Estende ComboboxPrimitive.Empty.Props. Aceita também os atributos padrão de um elemento React (275 não listados).
ComboboxSeparator
Estende ComboboxPrimitive.Separator.Props. Aceita também os atributos padrão de um elemento React (275 não listados).
ComboboxChips
Estende React.ComponentPropsWithRef<typeof ComboboxPrimitive.Chips> & ComboboxPrimitive.Chips.Props. Aceita também os atributos padrão de um elemento React (275 não listados).
ComboboxChip
Estende ComboboxPrimitive.Chip.Props. Aceita também os atributos padrão de um elemento React (275 não listados).
ComboboxChipsInput
Estende ComboboxPrimitive.Input.Props. Aceita também os atributos padrão de um elemento React (304 não listados).
prop obrigatória.
Metadata
Notas de acessibilidade
Teclado verificado por teste: ArrowDown abre já com a primeira opção destacada, digitar estreita a lista em vez de exigir rolagem, Enter escolhe a opção destacada e Escape fecha sem tirar o foco do campo. Leitor de tela verificado por teste: o controle tem papel combobox, aria-expanded acompanha o estado, aria-controls aponta para o listbox portalizado, a opção escolhida é marcada por aria-selected, e quando nada casa o estado vazio é anunciado — um campo que aceita texto livre pode receber texto que não casa com nada, e não dizer nada de volta lê como campo quebrado. Em seleção múltipla cada chip é removível sozinho, verificado por teste: corrigir uma escolha entre duas não pode custar a outra. Touch verificado em navegador com emulação de toque em viewport de 375px: campo, opções e o botão de remover chip medem acima do mínimo de 24x24 da WCAG 2.2 SC 2.5.8, e o popup cabe na viewport. Reduced motion verificado com prefers-reduced-motion: reduce — os tokens de motion colapsam para 1ms e a animação de entrada do popup mede 0.001s.
Classificação
- Layer
- Primitive
- Domínio
- Domain-free (compartilhado)
- Categoria
- selection
- Status
- Stable
Origem e distribuição
- Fonte
- shadcn registry / combobox
- Licença
- MIT
- Distribuição
- Interna
Acessibilidade
- Teclado: revisado
- Leitor de tela: revisado
- Touch: revisado
- Reduced motion: revisado
Dependências
- Pacotes
- @base-ui/react
- Ícones
- check, chevron-down, close
- Construído sobre
- Input GroupButton
- Usado por
- Nenhum ainda