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

NumberInput

Edita números opcionales con límites, botones y formato decimal o de moneda según el idioma.

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

Uso

El modelo es number | null, nunca texto formateado. formatOptions configura el idioma, los decimales y la moneda opcional. min/max limitan los valores aceptados; step controla los botones. inputDetail distingue texto válido, incompleto o inválido sin sustituir el modelo confirmado.

Ejemplos

Interactúa con el ejemplo y abre Código para ver su implementación completa.

Ejemplos

Prueba y configura

Cambia las opciones y prueba la vista previa. Despliega el valor de la aplicación o el evento para consultar los datos reales; el template generado permanece junto al configurador.

Prueba y configura

Vista previa

Template generado: refleja las opciones anteriores. La pestaña Código incluye los imports y el estado.

template.html
<neu-number-input
  [(value)]="number"
  [min]="0"
  [max]="100"
  [step]="1"
  layout="stacked"
  size="md"
  [formatOptions]="formatOptions"
  [decrementLabel]="'Disminuir'"
  [floatingLabel]="true"
  [incrementLabel]="'Aumentar'"
  [label]="'Cantidad'"
/>

Signal Forms

Enlaza FormField una sola vez al componente; el campo controla el valor y la validación. El esquema exige un valor no vacío. Sal del control para marcarlo como visitado y restablece el campo para limpiar el valor y el estado de interacción.

Guía de Signal Forms

Signal Forms

Válido: false

Valor y eventos

Utiliza [(value)] o [value] junto con (valueChange), no ambas formas. El modelo sincroniza el estado de la aplicación; los demás Outputs comunican los eventos documentados. touch comunica que se ha visitado o abandonado el control, no un valor nuevo.

Accesibilidad y teclado

Asocia label al campo numérico. Nombra los botones mediante incrementLabel/decrementLabel. ArrowUp/ArrowDown cambia el valor según step; Home/End utiliza los límites configurados. Explica el texto inválido o incompleto con un mensaje, no solo con color.

Tecla
Acción
Tab Recorre el campo editable y sus botones.
ArrowUp / ArrowDown Aumenta o reduce el valor según step.
Home / End Aplica min o max si ese límite está configurado.
Enter Confirma la edición del texto actual.

API

Los Inputs, modelos y Outputs proceden del contrato de Core fijado. Pulsa un tipo con nombre para abrir su definición. Este componente no tiene templates públicos.

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
ariaDescribedBystring''[ariaDescribedBy]IDs de los elementos que describen el control, separados por espacios.
ariaLabelstring''[ariaLabel]Nombre accesible cuando no hay una etiqueta visible.
ariaLabelledBystring''[ariaLabelledBy]IDs de los elementos que nombran el input numérico nativo, separados por espacios.
decrementLabelstring'Decrease'[decrementLabel]Nombre accesible del botón para disminuir.
dirtybooleanfalse[dirty]Estado del formulario que indica que el usuario ha cambiado el valor.
disabledbooleanfalse[disabled]Impide la interacción del usuario.
errorsreadonly ValidationError.WithOptionalFieldTree[][][errors]Errores de validación proporcionados por el formulario o la aplicación.
floatingLabelbooleanfalse[floatingLabel]Muestra la etiqueta con el estilo de campo float label.
formatOptionsNeuNumberInputFormatOptionsDEFAULT_FORMATValor derivado[formatOptions]Idioma y formato decimal o de moneda. El formato moneda exige su código.
hiddenbooleanfalse[hidden]Oculta el control según el estado del formulario.
incrementLabelstring'Increase'[incrementLabel]Nombre accesible del botón para aumentar.
inputIdstringinject(NeuIdGenerator).getId('neu-number-input-')Valor derivado[inputId]Identificador estable del control nativo; se genera si se omite.
invalidbooleanfalse[invalid]Muestra el estado inválido; no añade una regla de validación.
labelstring''[label]Etiqueta visible y nombre accesible del control.
layoutNeuNumberInputLayout'stacked'[layout]Distribuye los botones en stacked, horizontal o vertical.
maxnumber | undefinedundefined[max]Límite superior para los botones y comandos de teclado. Se conserva el valor escrito; añade la validación max al esquema del formulario para validarlo.
minnumber | undefinedundefined[min]Límite inferior para los botones y comandos de teclado. Se conserva el valor escrito; añade la validación min al esquema del formulario para validarlo.
namestring''[name]Nombre asociado al control nativo del formulario.
pendingbooleanfalse[pending]Estado del formulario que indica que hay una validación asíncrona pendiente.
readonlybooleanfalse[readonly]Mantiene el control enfocable y legible sin aceptar cambios.
requiredbooleanfalse[required]Marca el campo como obligatorio; utiliza un validador del formulario para exigirlo.
size"sm" | "md" | "lg"'md'[size]Tamaño visual del campo: sm, md o lg.
stepnumber1[step]Incremento admitido entre valores.
touchedbooleanfalse[touched]Estado del formulario que indica que el control ha sido visitado.

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
valuenumber | nullnull[(value)]Número confirmado o null si está vacío; sincronizado mediante valueChange.

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
inputDetailNeuNumberInputDetail(inputDetail)="onInputDetail($event)"Detalle de edición: rawText, estado del análisis y valor numérico confirmado. No sustituye a valueChange.
touchvoid(touch)="onTouch($event)"Notifica al formulario que el control ha sido visitado; no es un cambio de valor.

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.

Este componente no expone proyección de contenido ni templates públicos de personalización.

Public Types

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

Estilos y tokens

Carga los estilos de Core una sola vez. Utiliza los tokens públicos para personalizaciones locales o un preset para cambios de toda la aplicación. Conserva la legibilidad de etiquetas, foco, opciones seleccionadas y estados deshabilitados en modo claro y oscuro.

Tokens específicos

Token
Efecto
Estado / variante
Valor / origen
Alternativa
--neu-number-input-btn-size Valor del tema heredado que utiliza este componente Superficie del campo 2remDeclaración raízSin alias de token
--neu-number-input-height Valor del tema heredado que utiliza este componente Superficie del campo 48pxDeclaración raízSin alias de token
--neu-number-input-stacked-min-width Valor del tema heredado que utiliza este componente Superficie del campo 120pxDeclaración raízSin alias de token
--neu-number-input-width Valor del tema heredado que utiliza este componente Superficie del campo 80pxDeclaración raízSin alias de token

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-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-primary Color de marca en controles activos y énfasis Compartido con otros consumidores de Core; limita el cambio a un ámbito. #007aff
--neu-radius Radio de las esquinas del control Compartido con otros consumidores de Core; limita el cambio a un ámbito. 8px
--neu-surface Superficie principal del campo, cabecera o control Compartido con otros consumidores de Core; limita el cambio a un ámbito. #ffffff
--neu-surface-2 Superficies secundarias y filas alternas Compartido con otros consumidores de Core; limita el cambio a un ámbito. #f1f5f9
--neu-text Color del texto principal y de los iconos que lo heredan Compartido con otros consumidores de Core; limita el cambio a un ámbito. #0f172a
--neu-text-muted Etiquetas secundarias y contenido de ayuda Compartido con otros consumidores de Core; limita el cambio a un ámbito. #475569