Buttons
ToggleButton
Pulsante con stato on/off che mostra label e icone differenti in base allo stato attivo, con supporto v-model booleano.
Import
import { ToggleButton } from '@pzeta/vue-components'
// oppure con plugin selettivo:
import { ButtonsPlugin } from '@pzeta/vue-components'
app.use(ButtonsPlugin)
Esempio Base
Props
| Prop | Tipo | Default | Descrizione |
|---|---|---|---|
modelValue | boolean | false | Stato del pulsante (v-model) |
onLabel | string | 'On' | Label mostrata quando il pulsante è attivo |
offLabel | string | 'Off' | Label mostrata quando il pulsante è inattivo |
onIcon | string | undefined | Classe CSS dell'icona mostrata quando attivo |
offIcon | string | undefined | Classe CSS dell'icona mostrata quando inattivo |
severity | 'primary' | 'secondary' | 'success' | 'info' | 'warn' | 'danger' | 'contrast' | 'help' | 'primary' | Severità visiva applicata allo stato attivo |
size | 'small' | 'medium' | 'large' | 'medium' | Dimensione del pulsante |
disabled | boolean | false | Disabilita il pulsante impedendo il toggle |
invalid | boolean | false | Indica uno stato di validazione non valido |
autofocus | boolean | false | Focus automatico al mount |
tabindex | number | string | 0 | Ordine di tabulazione per navigazione tastiera |
ariaLabel | string | undefined | Label per screen reader |
ariaLabelledby | string | undefined | ID dell'elemento che fornisce il label |
class | string | '' | Classe CSS aggiuntiva per styling personalizzato |
Emits
| Evento | Payload | Descrizione |
|---|---|---|
update:modelValue | boolean | Emesso quando il valore cambia (per v-model) |
change | { originalEvent: Event; value: boolean } | Emesso al cambio di stato con evento originale |
focus | FocusEvent | Emesso quando il pulsante riceve il focus |
blur | FocusEvent | Emesso quando il pulsante perde il focus |
Slot
| Slot | Scope | Descrizione |
|---|---|---|
default | { checked: boolean } | Contenuto personalizzato in base allo stato |
icon | { checked: boolean } | Icona personalizzata in base allo stato |
Esempi
Con label e icone dinamiche
Solo icone (senza label)
Severity
Dimensioni
Stato disabilitato
Con slot personalizzato
Accessibilità
- Il componente usa un elemento
<button>nativo conaria-pressedimpostato automaticamente in base amodelValue. ariaLabeleariaLabelledbypermettono di fornire un contesto descrittivo per screen reader.- Il
tabindexconfigurabile permette di controllare l'ordine di navigazione. - Per pulsanti solo icona (senza
onLabel/offLabel), impostare sempreariaLabel.
TypeScript
import type { ToggleButtonProps, ToggleButtonEmits } from '@pzeta/vue-components'