Formularios@unozero-ai/ui

SearchInput

Búsqueda con icono y botón para limpiar.

Usar

import { SearchInput } from "@unozero-ai/ui/react";

<SearchInput></SearchInput>

Básico

Filtra lo que ya está en pantalla o lanza una búsqueda; para elegir un valor de una lista es un Select o un Combobox. La X aparece en cuanto hay texto; ella y Escape vacían el campo y devuelven el foco. Con el campo vacío, Escape sigue su camino y cierra el modal que lo contenga. No lleva etiqueta visible, así que pasa aria-label: si falta, el nombre accesible es el placeholder, que por defecto es el «Buscar…» de setLabels. Es un control de formulario nativo (type="search"): con name entra en el FormData.

Tamaños

sm para la barra de herramientas de una tabla, junto a otros filtros pequeños; md (por defecto) cuando la búsqueda es la entrada principal de la vista; lg en superficies públicas. La altura ya no es fija (antes 36 y 44 px): sigue los tokens de densidad --control-h-sm y --control-h, como Input, así que crece en la densidad cómoda.

Buscar en el servidor

Con debounce (en ms), el evento input espera a que se deje de escribir: una consulta por palabra, no por tecla. value está siempre al día; limpiar no espera. Al vaciar con la X o con Escape también llega uz-clear (onClear en React). Escribe «laura» seguido y luego despacio.

Escribe un nombre: la consulta al PMS sale cuando dejas de teclear.

Filtrar una lista

Un caso real: buscar en las conversaciones de WhatsApp, controlado con value y onInput; e.target.value trae el texto (antes onChange recibía el texto sin el evento). Compara sin tildes ni mayúsculas y quita los espacios del teléfono, porque nadie escribe «Peña» con eñe en un buscador. Cuando no hay resultados, dilo y ofrece limpiar la búsqueda en lugar de dejar la lista vacía. Prueba «pena», «48190» o «hotel».

RES-48213RES-48190RES-48177RES-48152

API

Generada del custom-elements.json que publica @unozero-ai/ui. Las partes se estilan desde tu CSS con el nombre del elemento: uz-button::part(base).

SearchInput · <uz-search-input>

PropTipoDefectoDescripción
valueV""Texto de búsqueda actual, siempre al día aunque haya debounce.
debouncenumber0Milisegundos que espera el evento input a que se deje de escribir.
autocompletestring"off"Pista de autocompletado del navegador; apagado por defecto.
maxlengthnumber | undefined—Longitud máxima: no deja escribir más.
labelstring""Etiqueta visible encima del campo; también es su nombre accesible.
namestring""Nombre con el que el valor entra en el FormData del formulario.
placeholderstring""Ejemplo del dato dentro del campo vacío; no sustituye a la etiqueta.
helperTextstring""Ayuda bajo el campo (helper-text); el error la sustituye mientras dura.
errorstring""Mensaje de error bajo el campo; con texto, el campo es inválido y no se envía.
state"default" | "error" | "success""default"Estado visual del borde: default, error o success. Un error manda sobre él.
size"sm" | "md" | "lg""md"Tamaño: sm, md o lg; la altura sale de los tokens de densidad.
requiredbooleanfalseObligatorio: el formulario no se envía mientras esté vacío.
disabledbooleanfalseDeshabilitado: no se puede usar ni se envía con el formulario.
readonlybooleanfalseSolo lectura: se puede enfocar y copiar, pero no cambiar.
accessibleLabelstring""Nombre accesible (aria-label del host) cuando no hay etiqueta visible.
EventoDescripción
onInputAl escribir (con debounce, al dejar de escribir) y al limpiar.
onChangeAl confirmar (Enter o perder el foco).
onClearAl vaciar con la X o con Escape.
Parte CSSDescripción
uz-search-input::part(field)El contenedor con borde.
uz-search-input::part(input)El <input> interno.
MétodoDescripción
checkValidity()—
reportValidity()—