Forms

Textarea

Campo di testo multiriga con supporto per auto-resize, contatore caratteri e controllo del ridimensionamento manuale.

Import

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

Esempio Base

Props

PropTipoDefaultDescrizione
modelValuestring | nullnullValore corrente (v-model)
defaultValuestring | nullnullValore di default (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)
variant'outlined' | 'filled''outlined'Variante visiva del campo
size'small' | 'medium' | 'large''medium'Dimensione del campo
severity'primary' | 'secondary' | 'success' | 'info' | 'warn' | 'danger' | 'contrast' | 'help''primary'Colore focus e accenti
rowsnumber3Numero di righe visibili
colsnumberNumero di colonne
autoResizebooleanfalseAuto ridimensionamento altezza in base al contenuto
minHeightnumberAltezza minima per autoResize (in px)
maxHeightnumberAltezza massima per autoResize (in px)
maxlengthnumberLunghezza massima caratteri
showCountbooleanfalseMostra contatore caratteri sotto il campo
resize'none' | 'both' | 'horizontal' | 'vertical''vertical'Direzione di ridimensionamento manuale (ignorato se autoResize è attivo)
disabledbooleanfalseDisabilita il campo
readonlybooleanfalseCampo in sola lettura
requiredbooleanfalseCampo obbligatorio
invalidbooleanfalseStato di validazione invalido
fluidbooleantrueOccupa tutta la larghezza disponibile
loadingbooleanfalseMostra indicatore di caricamento
loadingIconstringconfig globaleClasse CSS icona di caricamento
inputIdstring | nullauto-generatoID dell'elemento textarea
inputClassstring | nullClasse CSS aggiuntiva per la textarea
inputStylestring | object | nullStile inline per la textarea
ariaLabelstring | nullLabel ARIA per screen reader
ariaLabelledbystring | nullID elemento che funge da label ARIA
autofocusbooleanfalseFocus automatico al mount
namestring | nullnullNome del campo per form nativi

Emits

EventoPayloadDescrizione
update:modelValuestring | nullAggiornamento v-model (null se stringa vuota)
inputEventAd ogni input dell'utente
changeEventAl cambio del valore
focusFocusEventQuando il campo riceve il focus
blurFocusEventQuando il campo perde il focus
keydownKeyboardEventAlla pressione di un tasto
keyupKeyboardEventAl rilascio di un tasto

Slot

SlotScopeDescrizione
counter{ current: number, max: number | undefined }Personalizzazione del contatore caratteri

Esempi

Con auto-resize

Con contatore caratteri

Con contatore personalizzato

Resize disabilitato

Con varianti

Accessibilità

  • La label è collegata alla textarea tramite for/id (ID auto-generato se non specificato)
  • aria-invalid viene impostato automaticamente quando invalid è true o quando error è presente
  • aria-busy viene impostato durante il caricamento (loading)
  • In stato loading il campo diventa non modificabile e non interattivo

TypeScript

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

const textareaProps: TextareaProps = {
  label: 'Descrizione',
  rows: 4,
  autoResize: true,
  maxlength: 500,
  showCount: true,
}