Forms

Rating

Componente di valutazione a stelle con numero configurabile di stelle, icone personalizzabili, modalità readonly e pulsante di annullamento.

Import

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

Esempio Base

Props

PropTipoDefaultDescrizione
modelValuenumber | nullnullValore del rating (v-model). Intero da 1 a stars, oppure null se non selezionato.
starsnumber5Numero di stelle da visualizzare.
cancelbooleantrueMostra il pulsante di annullamento (icona ban) per deselezionare il rating.
onIconstring'pi pi-star-fill' (da config)Classe CSS dell'icona stella selezionata.
offIconstring'pi pi-star' (da config)Classe CSS dell'icona stella non selezionata.
cancelIconstring'pi pi-ban' (da config)Classe CSS dell'icona del pulsante di annullamento.
labelstringnullEtichetta del campo.
helperTextstringnullTesto di aiuto visualizzato sotto il componente.
errorstringnullMessaggio di errore; attiva lo stato di errore visivo.
disabledbooleanfalseDisabilita l'interazione.
readonlybooleanfalseRende il componente non modificabile (solo visualizzazione): esposto come immagine (role="img") con il valore nel nome, senza pulsante di annullamento.
requiredbooleanfalseMarca il campo come obbligatorio.
loadingbooleanfalseMostra il loading spinner e blocca l'interazione.
loadingIconstringDa configIcona personalizzata per il loading.
namestringundefinedNome del campo hidden per la submission del form.
inputIdstringundefinedID dell'input hidden.
inputClassstring | objectundefinedClasse CSS sull'input hidden.
inputStylestring | objectundefinedStyle inline sull'input hidden.
ariaLabelstringundefinedLabel accessibile per screen reader.
ariaLabelledbystringundefinedRiferimento a elemento label esterno.
autofocusboolean—Focus automatico al mount.
unstyledbooleanfalseRimuove gli stili di default (PrimeVue passthrough).
dtunknownundefinedPrimeVue design token passthrough.
ptunknownundefinedPrimeVue passthrough options.
ptOptionsunknownundefinedPrimeVue passthrough options configuration.

Emits

EventoPayloadDescrizione
update:modelValuenumber | nullEmesso al cambio valore (per v-model). Null quando il rating viene annullato.
change{ originalEvent: Event; value: number | null }Emesso al cambio con l'evento originale e il nuovo valore.
focusFocusEventEmesso quando il componente riceve il focus.
blurFocusEventEmesso quando il componente perde il focus.

Slot

SlotScopeDescrizione
onicon{ index: number }Icona personalizzata per stella selezionata. index è 0-based.
officon{ index: number }Icona personalizzata per stella non selezionata. index è 0-based.
cancelicon—Icona personalizzata per il pulsante di annullamento.

Esempi

Numero di Stelle Personalizzato

Senza Pulsante Annullamento

Readonly

In sola lettura il valore non si può cambiare, quindi il Rating non è un gruppo di radio: il contenitore ha role="img" e un nome che include il valore, "

<Rating :model-value="lead.priorita" :stars="3" readonly aria-label="Priorità" />
<!-- role="img" aria-label="Priorità: 2 di 3" -->

Icone Personalizzate tramite Props

Icone Personalizzate tramite Slot

Con Label, Helper Text ed Errore

Accessibilità

  • Il componente usa role="radiogroup" sul contenitore con aria-label / aria-labelledby; in readonly usa invece role="img" con il valore nel nome (vedi Readonly).
  • Ogni stella è un <button role="radio"> con aria-label localizzato (es. "1 stella") e aria-checked.
  • Il pulsante di annullamento ha aria-label localizzato.
  • Navigazione da tastiera: frecce destra/sinistra/su/giù per spostarsi tra le stelle; Spazio/Invio per selezionare.
  • In modalità disabled o readonly i pulsanti ricevono tabindex="-1".

TypeScript

import type { RatingProps, RatingEmits, RatingSlots, RatingChangeEvent } from '@pzeta/vue-components'