Forms

InputMask

Campo di testo con maschera di formattazione per input strutturati come date, codici fiscali, numeri di telefono e codici seriali. Supporta pattern con caratteri speciali e opzioni di autoclear.

Import

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

Esempio Base

Sintassi della Maschera

CarattereCorrisponde a
9Cifra numerica (0-9)
aCarattere alfabetico (a-z, A-Z)
*Carattere alfanumerico (a-z, A-Z, 0-9)
?Rende opzionale tutto ciò che segue
\Escape: il carattere successivo è letterale

Props

PropTipoDefaultDescrizione
modelValuestring | null—Valore del campo (v-model)
defaultValuestring | null—Valore predefinito (modalità non controllata)
maskstring—Pattern della maschera (es: '99/99/9999', '(999) 999-9999')
slotCharstring'_'Carattere placeholder mostrato nelle posizioni non compilate
autoClearbooleantrueCancella il valore se la maschera non è completamente compilata al blur
unmaskbooleanfalseSe true, emette il valore senza i caratteri letterali della maschera
labelstring—Label mostrata sopra il campo
placeholderstring—Testo placeholder (default: il pattern della maschera)
helperTextstring—Testo di aiuto sotto il campo
errorstring—Messaggio 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
disabledbooleanfalseDisabilita il campo
readonlybooleanfalseCampo in sola lettura
requiredbooleanfalseCampo obbligatorio
invalidbooleanfalseStato di validazione invalido
fluidbooleanfalseOccupa tutta la larghezza disponibile
loadingbooleanfalseMostra indicatore di caricamento
loadingIconstringconfig globaleClasse CSS icona di caricamento
autocompletestring—Valore attributo autocomplete HTML
idstringauto-generatoID dell'elemento input
namestring—Nome del campo per form nativi
tabindexnumber—Ordine di tabulazione
ariaLabelstring—Label ARIA per screen reader
ariaLabelledbystring—ID elemento che funge da label ARIA
ariaDescribedbystring—ID elemento con descrizione aggiuntiva
maskDescriptionstring—Descrizione del formato per screen reader (es: "Formato: GG/MM/AAAA")
inputClassstring | null—Classe CSS aggiuntiva per l'input
inputStylestring | object | null—Stile inline per l'input
autofocusbooleanfalseFocus automatico al mount

Emits

EventoPayloadDescrizione
update:modelValuestringAggiornamento v-model
valueChangestringCambio valore (modalità non controllata)
complete{ originalEvent: Event, value: string }Emesso quando la maschera è completamente compilata
focusFocusEventQuando il campo riceve il focus
blurFocusEventQuando il campo perde il focus
keydownKeyboardEventAlla pressione di un tasto
pasteClipboardEventAl paste di contenuto (la maschera viene applicata automaticamente)

Esempi

Maschere comuni

Con unmask (valore senza maschera)

Con maschera opzionale

Con accessibilità avanzata

Accessibilità

  • La prop maskDescription aggiunge un testo nascosto visivamente (sr-only) collegato all'input tramite aria-describedby
  • aria-invalid viene impostato automaticamente quando invalid o error sono presenti
  • aria-required e aria-busy sono gestiti automaticamente
  • Il cursore viene posizionato automaticamente alla prima posizione libera al focus
  • I tasti ArrowLeft/ArrowRight navigano tra le posizioni della maschera
  • Al paste, la maschera viene applicata automaticamente filtrando i caratteri validi

TypeScript

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

const maskProps: InputMaskProps = {
  mask: '99/99/9999',
  label: 'Data',
  slotChar: '_',
  autoClear: true,
  unmask: false,
  maskDescription: 'Formato: GG/MM/AAAA',
}