Autocomplete
StableCampo de texto que sugere enquanto a pessoa digita: a lista estreita a cada tecla, escolher uma sugestão a escreve no campo, e texto livre continua sendo resposta válida. Composto sobre Base UI Autocomplete e sobre o Input e o ScrollArea do Up Web DS, com escala de tamanho, addon inicial, gatilho e limpeza. A diferença para o Combobox é o valor: no Combobox ele precisa ser uma das opções; aqui o valor é o texto, e a lista só sugere — use-o para busca e para campos que aceitam o que a lista não conhece. É também a base do Command.
Instalação
npx up-web-ds add autocompleteGera chevrons-up-down, close para a biblioteca de ícones do projeto (components.json → iconLibrary).
Preview
Basic
Default
Sizes
With Start Addon
With Trigger
With Clear
Grouped
Disabled
Invalid
Esse token não existe na Foundation. Escolha um da lista.
All states
Basic
Default
Sizes
With Start Addon
With Trigger
With Clear
Grouped
Disabled
Invalid
Esse token não existe na Foundation. Escolha um da lista.
Usage
Props
Autocomplete
Estende Omit<AutocompleteRoot.Props<Items[number]['items'][number]>, 'items'>.
AutocompleteInput
Estende Omit< AutocompletePrimitive.Input.Props, 'size' >. Aceita também os atributos padrão de um elemento React (303 não listados).
AutocompletePopup
Estende AutocompletePrimitive.Popup.Props & Pick< AutocompletePrimitive.Positioner.Props, 'side' | 'align' | 'sideOffset' | 'alignOffset' | 'anchor' >. Aceita também os atributos padrão de um elemento React (275 não listados).
AutocompleteItem
Estende AutocompletePrimitive.Item.Props. Aceita também os atributos padrão de um elemento React (272 não listados).
AutocompleteSeparator
Estende AutocompletePrimitive.Separator.Props. Aceita também os atributos padrão de um elemento React (275 não listados).
AutocompleteGroup
Estende AutocompletePrimitive.Group.Props. Aceita também os atributos padrão de um elemento React (275 não listados).
AutocompleteGroupLabel
Estende AutocompletePrimitive.GroupLabel.Props. Aceita também os atributos padrão de um elemento React (275 não listados).
AutocompleteEmpty
Estende AutocompletePrimitive.Empty.Props. Aceita também os atributos padrão de um elemento React (275 não listados).
AutocompleteRow
Estende AutocompletePrimitive.Row.Props. Aceita também os atributos padrão de um elemento React (275 não listados).
AutocompleteValue
Estende AutocompleteValue.Props.
AutocompleteList
Estende AutocompletePrimitive.List.Props. Aceita também os atributos padrão de um elemento React (274 não listados).
AutocompleteClear
Estende AutocompletePrimitive.Clear.Props. Aceita também os atributos padrão de um elemento React (284 não listados).
AutocompleteStatus
Estende AutocompletePrimitive.Status.Props. Aceita também os atributos padrão de um elemento React (275 não listados).
AutocompleteCollection
Estende ComboboxCollection.Props.
AutocompleteTrigger
Estende AutocompletePrimitive.Trigger.Props. Aceita também os atributos padrão de um elemento React (284 não listados).
prop obrigatória.
Composition
O campo e o popup são irmãos dentro do Autocomplete. Com `items`, a lista recebe uma função que renderiza cada item; em grupos, cada AutocompleteGroup recebe os seus e os renderiza por AutocompleteCollection.
Metadata
Notas de acessibilidade
Teclado verificado por teste, em jsdom e em navegador: digitar abre e estreita a lista, ArrowDown abre e percorre as sugestões, Enter escreve a sugestão destacada no campo e fecha, Escape fecha sem tirar o foco do campo e sem apagar o texto. O foco nunca sai do campo; o gatilho e o botão de limpar ficam fora da sequência de tabulação (tabindex -1), porque o caminho de teclado é o próprio campo. Leitor de tela verificado por teste: o campo tem papel combobox com aria-autocomplete="list", aria-expanded acompanha o estado, aria-controls aponta para o listbox portalizado e aria-activedescendant acompanha o destaque; grupos são nomeados pelo rótulo, que nunca vira opção; quando nada casa, o estado vazio é anunciado por uma região role="status" — um campo que aceita texto livre pode receber texto que não casa com nada, e o silêncio leria como campo quebrado. O gatilho e o botão de limpar, sem nome na origem, recebem nome acessível ("Abrir sugestões", "Limpar"), substituível por triggerProps e clearProps. Estado inválido é aria-invalid no campo, e o exemplo liga a mensagem por aria-describedby. Touch verificado em navegador com emulação de toque em viewport de 375px: campo, gatilho, limpar e as sugestões medem acima do mínimo de 24x24, o popup cabe na viewport e uma sugestão é escolhida por toque. Reduced motion verificado em navegador com prefers-reduced-motion: reduce — o zoom de entrada e saída está em motion-safe:, então o popup chega sem escala; o animate-in e o fade continuam, porque é o animationend deles que o Base UI espera para desmontar, e o popup fecha normalmente. Light e dark verificados pela varredura axe do catálogo.
Classificação
- Layer
- Primitive
- Domínio
- Domain-free (compartilhado)
- Categoria
- input
- Status
- Stable
Origem e distribuição
- Fonte
- coss registry / autocomplete
- 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
- chevrons-up-down, close
- Construído sobre
- InputScroll Area
- Usado por
- Command