Forms

InputNumber

Campo numerico con formattazione locale, supporto valute, pulsanti stepper e gestione min/max/step. Usa Intl.NumberFormat per la formattazione.

Import

import { InputNumber } from '@pzeta/vue-components'

Esempio Base

Props

PropTipoDefaultDescrizione
modelValuenumber | null—Valore del campo (v-model)
defaultValuenumber | null—Valore predefinito (modalità non controllata)
labelstring | nullnullLabel mostrata sopra il campo
placeholderstring | nullnullTesto placeholder
helperTextstring | nullnullTesto di aiuto sotto il campo
errorstring | nullnullMessaggio di errore (sovrascrive helperText)
reserveMessageSpacebooleantrueRiserva sotto il campo lo spazio del messaggio anche senza helperText né error, così un errore non sposta i campi sotto. false nelle barre filtri: un error resta comunque visibile (dalla 1.23.0)
variant'outlined' | 'filled''outlined'Variante visiva del campo. Il bordo di outlined usa --color-field-border, almeno 3:1 su ogni superficie (dalla 1.24.0)
size'small' | 'medium' | 'large''medium'Dimensione del campo
severity'primary' | 'secondary' | 'success' | 'info' | 'warn' | 'danger' | 'contrast' | 'help''primary'Colore focus e accenti
disabledbooleanfalseDisabilita il campo. Bordo, sfondo e testo come InputText (prima lo sfondo restava quello del campo attivo) (dalla 1.24.0)
readonlybooleanfalseCampo in sola lettura
requiredbooleanfalseCampo obbligatorio
invalidbooleanfalseStato di validazione invalido
fluidbooleanfalseOccupa tutta la larghezza disponibile
roundedbooleanfalseBordi completamente arrotondati
loadingbooleanfalseMostra indicatore di caricamento
loadingIconstringconfig globaleClasse CSS icona di caricamento
minnumber | nullnullValore minimo consentito
maxnumber | nullnullValore massimo consentito
stepnumber1Incremento per i pulsanti stepper e tasti freccia
minFractionDigitsnumber | nullnullCifre decimali minime
maxFractionDigitsnumber | nullnullCifre decimali massime
mode'decimal' | 'currency''decimal'Modalità di formattazione
currencystring'EUR'Codice valuta ISO 4217 (es: 'EUR', 'USD')
localestring'it-IT'Locale BCP 47 per formattazione (es: 'it-IT', 'en-US')
prefixstring | nullnullPrefisso custom (es: '$', '€') - solo in modalità decimal
suffixstring | nullnullSuffisso custom (es: ' kg', '%') - solo in modalità decimal
showButtonsbooleanfalseMostra pulsanti incremento/decremento
buttonLayout'stacked' | 'horizontal' | 'vertical''stacked'Layout dei pulsanti stepper
incrementButtonIconstringconfig globaleIcona pulsante incremento
decrementButtonIconstringconfig globaleIcona pulsante decremento
incrementButtonClassstring | nullnullClasse CSS aggiuntiva pulsante incremento
decrementButtonClassstring | nullnullClasse CSS aggiuntiva pulsante decremento
highlightOnFocusbooleanfalseSeleziona tutto il testo al focus, da tastiera e al clic: la cifra digitata sostituisce il valore. Vedi Selezione al focus
useGroupingbooleantrueUsa separatori delle migliaia
allowEmptybooleantrueConsente valore vuoto (null)
showClearbooleanfalseMostra pulsante per cancellare il valore
prefixIconstring | nullnullClasse CSS icona a sinistra del campo
suffixIconstring | nullnullClasse CSS icona a destra del campo
inputIdstring | nullauto-generatoID dell'elemento input
namestring | nullnullNome del campo per form nativi
autofocusbooleanfalseFocus automatico al mount
ariaLabelstring | null—Label ARIA per screen reader
ariaLabelledbystring | null—ID elemento che funge da label ARIA
tabindexnumber | null—Ordine di tabulazione

Emits

EventoPayloadDescrizione
update:modelValuenumber | nullAggiornamento v-model
change{ originalEvent: Event, value: number | null }Al cambio del valore (blur)
focusFocusEventQuando il campo riceve il focus
blurFocusEventQuando il campo perde il focus
keydownKeyboardEventAlla pressione di un tasto
keyupKeyboardEventAl rilascio di un tasto
keypressKeyboardEventAlla pressione di un tasto che produce carattere
pasteClipboardEventAl paste di contenuto
clearEventQuando il valore viene cancellato tramite clear button

Slot

SlotScopeDescrizione
prefix—Contenuto personalizzato a sinistra dell'input
suffix—Contenuto personalizzato a destra dell'input
incrementbuttonicon—Icona personalizzata per il pulsante incremento
decrementbuttonicon—Icona personalizzata per il pulsante decremento

Esempi

Con range e step

Con prefix e suffix

Modalità valuta

Con pulsanti stepper

Selezione al focus

Con highlightOnFocus il contenuto viene selezionato quando il campo riceve il focus, così la prima cifra digitata sostituisce il valore invece di anteporsi (da 12.000 a 912.000).

<InputNumber v-model="importo" mode="currency" currency="EUR" highlight-on-focus />

La selezione avviene dopo che il campo ha riscritto il valore nella forma modificabile (da "12.000,00 €" a "12000"), altrimenti riguarderebbe il testo precedente e andrebbe persa. Quando il focus arriva da un clic, il mouseup di quel clic non sposta il cursore e la selezione resta; i clic successivi, a campo già attivo, posizionano il cursore normalmente. Non servono più aggiramenti lato consumer (selezione in setTimeout o al primo mouseup).

Accessibilità

  • La label è collegata all'input tramite for/id (ID auto-generato se non specificato)
  • I tasti ArrowUp/ArrowDown incrementano/decrementano il valore rispettando step, min, max
  • In focus il valore viene mostrato senza formattazione per facilitare la modifica
  • Al blur il valore viene formattato secondo locale e mode

TypeScript

import type { InputNumberProps } from '@pzeta/vue-components'

const numberProps: InputNumberProps = {
  mode: 'currency',
  currency: 'EUR',
  locale: 'it-IT',
  min: 0,
  max: 9999,
  showButtons: true,
}