Combobox
Cuadro combinado ARIA con filtrado y uno o varios valores.
- Navegadores
- Chrome 114+Firefox 125+Safari 17+
- Nivel
- 2
- Tamaño comprimido
- 5.18 kB
- Presupuesto de diseño forzado
- 0 ms
- Presupuesto de axe
- 0
- Compatible con SSR
- Sí
- Contrato publicado
- Entorno de pruebas
Zona de pruebas
Combobox
Predeterminado
Manzana
Banana
Cereza
Dátil
Múltiple
ReactUI
React
UI
TypeScript
Accesibilidad
Sistemas de diseño
Abierto
Manzana
Banana
Cereza
Dátil
Grande
API
Combobox.Root
| Prop | Tipo | Predeterminado | Descripción |
|---|---|---|---|
children | ReactNode | — | Partes de Combobox: control, etiquetas, input, activador y contenido. |
items* | ComboboxItemData[] | — | Lista completa de opciones que filtra el input. |
defaultInputValue | string | — | Texto inicial del input cuando su valor es no controlado. |
defaultOpen | boolean | — | Indica si la lista comienza abierta cuando el estado de apertura es no controlado. |
defaultValue | string | readonly string[] | — | Valor o valores seleccionados en el primer renderizado cuando la selección es no controlada. |
multiple | boolean | false | Permite seleccionar y quitar varios valores como etiquetas. |
allowCustomValue | boolean | false | Permite convertir texto escrito que no está en items en un valor seleccionado. |
addOnPaste | boolean | true | Añade varios valores delimitados a partir de texto pegado en modo múltiple. |
delimiters | readonly string[] | [","] | Caracteres que confirman o separan los valores escritos en modo múltiple. |
maxValues | number | — | Número máximo de valores que se pueden seleccionar en modo múltiple. |
validateValue | (value: string) => boolean | — | Rechaza un valor personalizado cuando devuelve false. |
filterFn | (items: ComboboxItemData[], inputValue: string) => ComboboxItemData[] | — | Reemplaza el filtro integrado que reduce los elementos a medida que el usuario escribe. |
inputValue | string | — | Texto del input; hace que el valor escrito sea controlado. |
onInputValueChange | (value: string) => void | — | Se llama con el nuevo texto cada vez que cambia el input. |
onOpenChange | (open: boolean, details: OpenChangeDetails) => void | — | Se llama al abrir o cerrar la lista, con el motivo del cambio. |
onValueChange | ((value: string) => void) | ((value: string[]) => void) | — | Se llama con el valor seleccionado o con el arreglo completo de valores seleccionados. |
open | boolean | — | Indica si la lista está abierta; hace que el estado de apertura sea controlado. |
value | string | readonly string[] | — | Valor o valores seleccionados; hace que la selección sea controlada. |
Combobox.Control
| Prop | Tipo | Predeterminado | Descripción |
|---|---|---|---|
children | ReactNode | — | Etiquetas e input renderizados dentro del control visual compartido. |
className | string | — | Clase aplicada al elemento de control. |
render | ReactElement | ((props, state) => ReactElement) | — | Reemplaza el elemento renderizado y conserva las conexiones de comportamiento y accesibilidad. |
Combobox.Tags
| Prop | Tipo | Predeterminado | Descripción |
|---|---|---|---|
children | ReactNode | — | Contenido añadido después de las etiquetas generadas que se pueden quitar. |
className | string | — | Clase aplicada al contenedor de etiquetas generadas. |
render | ReactElement | ((props, state) => ReactElement) | — | Reemplaza el elemento renderizado y conserva las conexiones de comportamiento y accesibilidad. |
Combobox.Input
| Prop | Tipo | Predeterminado | Descripción |
|---|---|---|---|
className | string | — | Clase aplicada al input de texto. |
render | ReactElement | ((props, state) => ReactElement) | — | Reemplaza el elemento renderizado y conserva las conexiones de comportamiento y accesibilidad. |
Combobox.Trigger
| Prop | Tipo | Predeterminado | Descripción |
|---|---|---|---|
children | ReactNode | — | Contenido del botón que abre la lista, como un ícono. |
className | string | — | Clase aplicada al botón activador. |
render | ReactElement | ((props, state) => ReactElement) | — | Reemplaza el elemento renderizado y conserva las conexiones de comportamiento y accesibilidad. |
Combobox.Content
| Prop | Tipo | Predeterminado | Descripción |
|---|---|---|---|
align | "start" | "center" | "end" | — | Alineación de la lista respecto al input sobre el lado elegido. |
children* | (filteredItems: ComboboxItemData[]) => ReactNode | — | Función de renderizado que se llama con los elementos que quedan tras filtrar. |
className | string | — | Clase aplicada a la ventana emergente de la lista. |
side | "top" | "right" | "bottom" | "left" | — | Lado del input en el que se coloca la lista. |
Combobox.Item
| Prop | Tipo | Predeterminado | Descripción |
|---|---|---|---|
className | string | — | Clase aplicada al elemento de opción. |
item* | ComboboxItemData | — | Elemento que renderiza esta opción, normalmente obtenido del callback de contenido. |
Combobox.Empty
| Prop | Tipo | Predeterminado | Descripción |
|---|---|---|---|
children | ReactNode | — | Contenido que se muestra cuando el filtrado no deja elementos. |
className | string | — | Clase aplicada al elemento de estado vacío. |
ComboboxItemData
| Prop | Tipo | Predeterminado | Descripción |
|---|---|---|---|
disabled | boolean | — | Impide seleccionar este elemento. |
label* | string | — | Texto que se muestra para el elemento y con el que compara el filtro. |
value* | string | — | Valor que se comunica al seleccionar el elemento. |
Teclado
| Tecla | Acción |
|---|---|
| ↓ / ↑ | Abrir y recorrer las opciones |
| Enter | Seleccionar |
| Escape | Cerrar |
| a–z | Escribir para filtrar opciones |
Accesibilidad
Combobox ARIA + listbox. La opción activa se anuncia mediante aria-activedescendant. Content expone el estado abierto/cerrado; las opciones exponen los estados resaltado, desactivado y, en modo múltiple, seleccionado. Usa Empty para explicar que ninguna opción coincide. La animación de presencia de Popup se desactiva si se prefiere el movimiento reducido.
Puntos de estilo
data-statedata-highlighteddata-disableddata-selected