Feedback

ProgressBar

Barra di avanzamento per mostrare il progresso di un'operazione. Supporta modalità determinate e indeterminate, striped, animated e severity colorata.

Import

import { ProgressBar } from '@pzeta/vue-components'
// oppure tramite plugin:
import { FeedbackPlugin } from '@pzeta/vue-components'
app.use(FeedbackPlugin)

Esempio Base

Props

PropTipoDefaultDescrizione
valuenumber0Valore corrente (0-max)
maxnumber100Valore massimo
mode'determinate' | 'indeterminate''determinate'Modalità della barra
severity'primary' | 'secondary' | 'success' | 'info' | 'warn' | 'danger' | 'contrast' | 'help''primary'Colore della barra di riempimento
size'small' | 'medium' | 'large' | 'xlarge''medium'Altezza della barra
labelstring | nullnullEtichetta mostrata sopra la barra
helperTextstring | nullnullTesto di aiuto mostrato sotto la barra
showValuebooleanfalseMostra il valore percentuale
valueInsidebooleanfalseMostra il valore all'interno della barra (richiede showValue: true)
unitstring'%'Unità visualizzata accanto al valore
roundedbooleantrueBordi arrotondati
stripedbooleanfalsePattern a strisce
animatedbooleanfalseAnima le strisce (richiede striped: true)
heightstring | nullnullAltezza custom CSS (es. '8px'), sovrascrive size
ariaValueTextstring | nullnullTesto letto dagli screen reader al posto della percentuale (aria-valuetext), es. "3 attività su 5 completate". Default: il valore visualizzato ("60%")

Slot

SlotScopeDescrizione
content{ value: number, percentage: number }Custom per il testo del valore (usato sia fuori che dentro la barra)

Esempi

Con label e valore

Valore dentro la barra

Severity e aspetto

Valore personalizzato via slot

Caricamento indeterminate

Accessibilità

  • Il contenitore ha role="progressbar".
  • In modalità indeterminate, il valore visualizzato è una stringa localizzata ("Caricamento...").
  • Senza label né aria-label/aria-labelledby del chiamante, la barra si chiama «Caricamento in corso» solo se indeterminate; una barra con un valore si chiama «Avanzamento» (feedback.progressAriaLabel): misura una quota o un punteggio, non un caricamento (dalla 1.24.0).
  • In modalità determinate espone aria-valuenow/aria-valuemin/aria-valuemax e aria-valuetext, che di default è il valore visualizzato. Quando la percentuale non basta a capire il progresso, passare ariaValueText:
<ProgressBar :value="60" label="Attività" :aria-value-text="`${fatte} attività su ${totali} completate`" />
  • Gli attributi aria-* passati al componente (aria-label, aria-labelledby, aria-describedby…) finiscono sull'elemento role="progressbar", non sul wrapper esterno dove prima nessuno li leggeva; classi e altri attributi restano sul wrapper (dalla 1.24.0):
<ProgressBar :value="40" aria-label="Spazio occupato" />

TypeScript

import type { ProgressBarProps } from '@pzeta/vue-components'
import type { ProgressBarMode, ProgressBarSize } from '@pzeta/vue-components'

// ProgressBarMode = 'determinate' | 'indeterminate'
// ProgressBarSize = 'small' | 'medium' | 'large' | 'xlarge'