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. 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
rowsnumber3Numero di righe visibili
colsnumber—Numero di colonne
autoResizebooleanfalseAuto ridimensionamento altezza in base al contenuto
minHeightnumber—Altezza minima per autoResize (in px)
maxHeightnumber—Altezza massima per autoResize (in px)
maxlengthnumber—Lunghezza massima caratteri
showCountbooleanfalseMostra contatore caratteri sotto il campo. Nel colore normale è neutral-500 (chiaro) / neutral-400 (scuro), almeno 4,5:1: prima neutral-400 sul bianco dava 2,56:1 (dalla 1.24.0)
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 | null—Classe CSS aggiuntiva per la textarea
inputStylestring | object | null—Stile inline per la textarea
ariaLabelstring | null—Label ARIA per screen reader
ariaLabelledbystring | null—ID 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,
}