Combobox
Combobox ARIA de valor único ou múltiplo com filtragem.
- Navegadores
- Chrome 114+Firefox 125+Safari 17+
- Nível
- 2
- Tamanho compactado
- 5.18 kB
- Limite de layout forçado
- 0 ms
- Limite do axe
- 0
- Compatível com SSR
- Sim
- Contrato publicado
- Ambiente de teste
Experimentar
Combobox
Padrão
Maçã
Banana
Cereja
Tâmara
Múltiplo
ReactUI
React
UI
TypeScript
Acessibilidade
Sistemas de design
Aberto
Maçã
Banana
Cereja
Tâmara
Grande
API
Combobox.Root
| Prop | Tipo | Padrão | Descrição |
|---|---|---|---|
children | ReactNode | — | Partes de Combobox: controle, tags, input, acionador e conteúdo. |
items* | ComboboxItemData[] | — | Lista completa de opções filtradas pelo input. |
defaultInputValue | string | — | Texto inicial no input quando seu valor não é controlado. |
defaultOpen | boolean | — | Define se a lista começa aberta quando o estado de abertura não é controlado. |
defaultValue | string | readonly string[] | — | Valor ou valores selecionados na primeira renderização quando a seleção não é controlada. |
multiple | boolean | false | Permite selecionar e remover vários valores como tags. |
allowCustomValue | boolean | false | Permite que um texto digitado ausente em items se torne um valor selecionado. |
addOnPaste | boolean | true | Adiciona vários valores delimitados a partir de texto colado no modo múltiplo. |
delimiters | readonly string[] | [","] | Caracteres que confirmam ou separam valores digitados no modo múltiplo. |
maxValues | number | — | Número máximo de valores selecionáveis no modo múltiplo. |
validateValue | (value: string) => boolean | — | Rejeita um valor personalizado quando retorna false. |
filterFn | (items: ComboboxItemData[], inputValue: string) => ComboboxItemData[] | — | Substitui o filtro integrado que reduz os itens à medida que o usuário digita. |
inputValue | string | — | Texto no input, tornando o valor digitado controlado. |
onInputValueChange | (value: string) => void | — | Chamado com o novo texto sempre que o input muda. |
onOpenChange | (open: boolean, details: OpenChangeDetails) => void | — | Chamado quando a lista abre ou fecha, com o motivo da mudança. |
onValueChange | ((value: string) => void) | ((value: string[]) => void) | — | Chamado com o valor selecionado ou o array completo de valores selecionados. |
open | boolean | — | Define se a lista está aberta, tornando o estado de abertura controlado. |
value | string | readonly string[] | — | Valor ou valores selecionados, tornando a seleção controlada. |
Combobox.Control
| Prop | Tipo | Padrão | Descrição |
|---|---|---|---|
children | ReactNode | — | Tags e input renderizados dentro do controle visual compartilhado. |
className | string | — | Classe aplicada ao elemento de controle. |
render | ReactElement | ((props, state) => ReactElement) | — | Substitua o elemento renderizado preservando comportamento e conexões de acessibilidade. |
Combobox.Tags
| Prop | Tipo | Padrão | Descrição |
|---|---|---|---|
children | ReactNode | — | Conteúdo adicionado após as tags removíveis geradas. |
className | string | — | Classe aplicada ao contêiner das tags geradas. |
render | ReactElement | ((props, state) => ReactElement) | — | Substitua o elemento renderizado preservando comportamento e conexões de acessibilidade. |
Combobox.Input
| Prop | Tipo | Padrão | Descrição |
|---|---|---|---|
className | string | — | Classe aplicada ao input de texto. |
render | ReactElement | ((props, state) => ReactElement) | — | Substitua o elemento renderizado preservando comportamento e conexões de acessibilidade. |
Combobox.Trigger
| Prop | Tipo | Padrão | Descrição |
|---|---|---|---|
children | ReactNode | — | Conteúdo do botão que abre a lista, como um ícone. |
className | string | — | Classe aplicada ao botão acionador. |
render | ReactElement | ((props, state) => ReactElement) | — | Substitua o elemento renderizado preservando comportamento e conexões de acessibilidade. |
Combobox.Content
| Prop | Tipo | Padrão | Descrição |
|---|---|---|---|
align | "start" | "center" | "end" | — | Alinhamento da lista em relação ao input ao longo do lado escolhido. |
children* | (filteredItems: ComboboxItemData[]) => ReactNode | — | Função de renderização chamada com os itens restantes após a filtragem. |
className | string | — | Classe aplicada à janela flutuante da lista. |
side | "top" | "right" | "bottom" | "left" | — | Lado do input em que a lista é posicionada. |
Combobox.Item
| Prop | Tipo | Padrão | Descrição |
|---|---|---|---|
className | string | — | Classe aplicada ao elemento de opção. |
item* | ComboboxItemData | — | O item renderizado por esta opção, normalmente obtido do callback de conteúdo. |
Combobox.Empty
| Prop | Tipo | Padrão | Descrição |
|---|---|---|---|
children | ReactNode | — | Conteúdo exibido quando a filtragem não deixa nenhum item. |
className | string | — | Classe aplicada ao elemento de estado vazio. |
ComboboxItemData
| Prop | Tipo | Padrão | Descrição |
|---|---|---|---|
disabled | boolean | — | Impede a seleção deste item. |
label* | string | — | Texto exibido para o item e comparado pelo filtro. |
value* | string | — | Valor informado quando o item é selecionado. |
Teclado
| Tecla | Ação |
|---|---|
| ↓ / ↑ | Abra e percorra as opções |
| Enter | Selecione |
| Escape | Feche |
| a–z | Digite para filtrar opções |
Acessibilidade
Combobox ARIA + listbox. A opção ativa é anunciada por aria-activedescendant. O conteúdo expõe o estado aberto/fechado; as opções expõem os estados destacado, desabilitado e, no modo múltiplo, selecionado. Use Empty para explicar quando nenhuma opção corresponde. A animação de presença de Popup é desativada quando há preferência por movimento reduzido.
Pontos de integração de estilos
data-statedata-highlighteddata-disableddata-selected