Saltar al contenido principal
Neural UIv2.0.0Documentación
Ver v1 GitHub

Input

Control de texto de una línea con modelo de valor público e integración con Signal Forms de Angular 22.

Categoría
Formularios y selección
Import
@neural-ui/core/input
Selector
neu-input
import { NeuInputComponent } from '@neural-ui/core/input';

Visión general

NeuInput envuelve un input nativo de una línea. Su modelo público value pertenece a la aplicación o a FormField; label, hint, size y la presentación opcional de iconos son inputs, no un motor de validación.

Modelo de valor básico

Conecta value a un signal y añade una etiqueta. Al escribir se actualiza el signal; al cambiar el signal se actualiza el campo.

Modelo de valor básico

Nombre visible para tu equipo

Valor: —

Configurador

Configura el tipo, el tamaño, la etiqueta flotante, el placeholder y el texto de ayuda. Prueba los estados de interacción y validación; el template generado refleja tus ajustes.

Configurador

Vista previa

Template generado. La pestaña Código incluye los imports y el estado.

template.html
<neu-input
  [(value)]="text"
  label="Nombre del cliente"
  type="text"
  size="md"
  [floatingLabel]="true"
/>

Deshabilitado y solo lectura

Disabled elimina el input nativo del foco de teclado y bloquea la edición. Readonly lo mantiene enfocable y legible, pero impide editar; no equivale a disabled. Aquí son inputs directos del componente, fuera de FormField.

Deshabilitado y solo lectura
Valor aplicado: Draft

Signal Forms

Conecta FormField al control y define la validación en el esquema del formulario. En este ejemplo puedes editar, validar y restablecer el mismo campo, incluidos sus estados deshabilitado y de solo lectura.

Fundamento de Signal Forms · Propiedad del estado

Signal Forms
Valor: —

touched: false · dirty: false · valid: false · invalid: true

Validación y estado de error

El esquema de Angular decide la validez; NeuInput solo representa invalid/errors recibidos y un errorMessage explícito. Aplica aria-invalid y enlaza el error visible o la ayuda mediante aria-describedby. La demo muestra el mensaje tras interactuar; no atribuye al componente la validación minLength.

Propiedad del modelo y eventos

Usa [(value)] para editar en ambos sentidos, o [value] junto con (valueChange) si necesitas un manejador explícito. El evento touch informa de la pérdida de foco; no contiene el valor del campo.

Accesibilidad y teclado

Core asocia la etiqueta al campo nativo, conecta la ayuda y el error y refleja los estados deshabilitado, de solo lectura, obligatorio y no válido. La edición por teclado sigue siendo nativa.

Tu aplicación proporciona una etiqueta clara, reglas de validación y un errorMessage comprensible. Usa valores inputId distintos si asignas los identificadores manualmente.

Fundamento de accesibilidad

Tecla
Acción
Tab Enfoca el input nativo salvo si está deshabilitado; las teclas de edición siguen siendo del navegador.

API

value admite enlace bidireccional. touch informa de la pérdida de foco. Los inputs configuran el campo y el estado del formulario que muestra; las tablas indican los tipos, valores por defecto y sintaxis.

Inputs

Configura el componente con [propiedad]="valor". Tu aplicación proporciona estos valores; el componente no debe reemplazar el estado que le pasas.

Nombre
Tipo
Por defecto
Uso en el template
Descripción
autocompletestring'off'[autocomplete]Pista nativa de autocompletado del campo de texto.
dirtybooleanfalse[dirty]Estado dirty aplicado, normalmente aportado por FormField.
disabledbooleanfalse[disabled]Deshabilita el input nativo y lo retira del foco de teclado.
endIconbooleanfalse[endIcon]Activa el slot de icono final proyectado.
errorMessagestring''[errorMessage]Texto de error visible explícito cuando existe estado de error.
errorsreadonly ValidationError.WithOptionalFieldTree[][][errors]Errores de validación aplicados, normalmente desde el esquema.
floatingLabelbooleantrue[floatingLabel]Alterna la presentación de etiqueta flotante o estática.
hiddenbooleanfalse[hidden]Oculta el host del componente.
hintstring''[hint]Texto de ayuda asociado al input nativo si no prevalece un error visible.
iconstring | nullnull[icon]Clave opcional de icono semántico resuelta por la aplicación.
iconPosition"left" | "right"'left'[iconPosition]Coloca el icono indicado a izquierda o derecha.
inputIdstringinject(NeuIdGenerator).getId('neu-input-')Valor derivado[inputId]ID compartido por el input nativo y sus referencias de etiqueta/ayuda.
invalidbooleanfalse[invalid]Marca invalid aplicada; no ejecuta un validador.
labelstring''[label]Etiqueta visible asociada al input nativo.
maxstring | undefinedundefined[max]Atributo max transferido. Los tipos de texto admitidos no usan límites numéricos/de fecha; usa maxLength o una regla del formulario para texto.
maxLengthnumber | undefinedundefined[maxLength]Longitud máxima de texto nativa.
minstring | undefinedundefined[min]Atributo min transferido. Los tipos de texto admitidos no usan límites numéricos/de fecha; usa minLength o una regla del formulario para texto.
minLengthnumber | undefinedundefined[minLength]Longitud mínima nativa; la validación del esquema es independiente.
namestring''[name]Nombre nativo del control de formulario.
patternreadonly RegExp[][][pattern]Lista de expresiones regulares aplicada; una expresión puede pasar a pattern nativo.
pendingbooleanfalse[pending]Estado pending aplicado anunciado mediante aria-busy.
placeholderstring''[placeholder]Placeholder para la presentación con etiqueta estática.
readonlybooleanfalse[readonly]Mantiene el input nativo enfocable mientras bloquea la edición.
requiredbooleanfalse[required]Marca el input nativo como obligatorio; el formulario gestiona la validación del esquema.
size"sm" | "md" | "lg"'md'[size]Tamaño pequeño, mediano o grande del control.
startIconbooleanfalse[startIcon]Activa el slot de icono inicial proyectado.
touchedbooleanfalse[touched]Estado touched aplicado, normalmente aportado por FormField.
typeNeuInputType'text'[type]Tipo nativo de input limitado por NeuInputType público.

Models

Un modelo admite [(propiedad)]="signal" o la pareja [propiedad] y (propiedadChange). Elige una de las dos formas, no ambas.

Nombre
Tipo
Por defecto
Uso en el template
Descripción
valuestring''[(value)]Modelo de texto bidireccional propiedad de la aplicación o FormField.

Outputs

Escucha un evento con (evento)="handler($event)". La tabla indica qué datos recibe tu función y cómo utilizarlos.

Nombre
Valor emitido
Uso en el template
Descripción
touchvoid(touch)="onTouch($event)"Aviso de ciclo de vida emitido cuando el input nativo pierde foco.

Templates

ng-content proyecta contenido dentro del componente. Los inputs TemplateRef reciben un template; las directivas ng-template identifican templates con un contexto tipado. Una directiva compartida en el entrypoint no es necesariamente un slot de este componente.

Nombre
Mecanismo
Contrato
[neu-input-start]

Antes del campo

Proyección de contenido

El ejemplo coloca un prefijo y un botón de acción en los slots del campo.

<ng-content select="[neu-input-start]" />

Contexto utilizado: —

[neu-input-end]

Después del campo

Proyección de contenido

El ejemplo coloca un prefijo y un botón de acción en los slots del campo.

<ng-content select="[neu-input-end]" />

Contexto utilizado: —

Ejemplo de uso

Activa las zonas con [startIcon]="true" y [endIcon]="true", y coloca contenido dentro del campo con los selectores neu-input-start y neu-input-end. Los selectores son de proyección; startIcon y endIcon son inputs. El ejemplo muestra unidades decorativas y la etiqueta nombra la moneda. No necesitas un resolver de iconos.

Personalizar contenido
Importe: 125.00 USD

Public Types

Abre un tipo para consultar su definición y los campos de sus interfaces.

Tematización

Los tokens públicos --neu-input-* siguientes personalizan el fondo, el borde y el foco. La tipografía, el radio y los colores compartidos proceden del tema global de Core.

Tokens específicos

Token
Efecto
Estado / variante
Valor / origen
Alternativa
--neu-input-background Fondo del campo y de su etiqueta flotante. Superficie del campo var(--neu-surface)Alternativa del componente--neu-surface
--neu-input-border Borde del campo cuando no tiene foco ni error. Campo válido sin foco var(--neu-border)Alternativa del componente--neu-border
--neu-input-focus-border Borde del campo con foco; el estado de error tiene prioridad. Foco sin error var(--neu-primary)Alternativa del componente--neu-primary
--neu-input-focus-ring Anillo de foco normal; con error se usa el color de error compartido. Foco sin error var(--neu-focus-ring)Alternativa del componente--neu-focus-ring

Tokens compartidos utilizados

Sobrescríbelos en un contenedor local para afectar a este ejemplo. Una modificación en :root afecta a los demás componentes que utilizan el mismo token.

Token
Efecto aquí
Otros efectos
Valor / alternativa
--neu-border Bordes normales de controles y celdas Compartido con otros consumidores de Core; limita el cambio a un ámbito. rgba(15, 23, 42, 0.08)
--neu-border-hover Bordes de controles al pasar el puntero Compartido con otros consumidores de Core; limita el cambio a un ámbito. rgba(15, 23, 42, 0.16)
--neu-error Color del campo no válido o de la acción de peligro Compartido con otros consumidores de Core; limita el cambio a un ámbito. #dc2626
--neu-error-text Texto de error y de Button danger outline/ghost en ambos temas Compartido con otros consumidores de Core; limita el cambio a un ámbito. #991b1b
--neu-focus-ring Anillo normal del foco de teclado Compartido con otros consumidores de Core; limita el cambio a un ámbito. 0 0 0 var(--neu-focus-ring-width) rgba(0, 122, 255, 0.15)
--neu-focus-ring-alpha Opacidad del anillo de foco semántico Compartido con otros consumidores de Core; limita el cambio a un ámbito. 25%
--neu-focus-ring-width Grosor del anillo, incluido el foco con error Compartido con otros consumidores de Core; limita el cambio a un ámbito. 3px
--neu-primary Color de marca en controles activos y énfasis Compartido con otros consumidores de Core; limita el cambio a un ámbito. #007aff