Forms

Checkbox

Casella di spunta con supporto per modalità binaria, selezione multipla tramite array, stato indeterminato e loading.

Import

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

Modalità d'uso

Il Checkbox supporta due modalità di binding selezionate automaticamente in base al tipo del modelValue:

ModalitàmodelValuevalueQuando usarla
Binarybooleannon usatoSingolo flag (accetta termini, opt-in, on/off senza animazione — vedi ToggleSwitch come alternativa)
Arrayunknown[]richiestoSelezione multipla in un gruppo: il value viene aggiunto/rimosso dall'array
Aggiungi binary esplicitamente quando il modelValue iniziale è false/null/undefined: senza binary, il componente potrebbe interpretarlo come array vuoto.

Esempio Base

Props

PropTipoDefaultDescrizione
modelValueboolean | unknown[] | nullfalseValore del checkbox (v-model). Boolean in modalità binaria, array in modalità gruppo.
valueunknownundefinedValore associato al checkbox in modalità array; viene aggiunto/rimosso dall'array.
binarybooleanfalseAbilita la modalità binaria (true/false) invece di array.
indeterminatebooleanfalseStato intermedio, né selezionato né deselezionato. Utile per "seleziona tutto" con selezione parziale.
indeterminateIconstring'pi pi-minus' (da config)Icona CSS per lo stato indeterminato.
checkIconstring'pi pi-check' (da config)Icona CSS di spunta.
trueValuebooleantrueValore emesso quando selezionato (modalità binaria custom).
falseValuebooleanfalseValore emesso quando deselezionato (modalità binaria custom).
defaultValueboolean | unknown[] | nullnullValore predefinito se modelValue non è fornito.
labelstringundefinedEtichetta del checkbox.
helperTextstringundefinedTesto di aiuto visualizzato sotto il label.
errorstringundefinedMessaggio di errore; attiva lo stato di errore visivo.
size'small' | 'medium' | 'large''medium'Dimensione del checkbox.
severity'primary' | 'secondary' | 'success' | 'info' | 'warn' | 'danger' | 'help' | 'contrast''primary'Colore/severità visiva.
variant'default' | 'outlined' | 'filled''default'Variante stilistica del checkbox.
disabledbooleanfalseDisabilita il componente.
readonlybooleanfalseRende il componente non modificabile.
loadingbooleanfalseMostra il loading spinner al posto dell'icona di spunta.
loadingIconstringDa configIcona personalizzata per il loading.
requiredbooleanfalseMarca il campo come obbligatorio.
namestringnullAttributo name del campo (per form HTML).
inputIdstringnullID dell'input nascosto (per associazione a label).
inputClassstring | objectClasse CSS aggiuntiva sull'input.
inputStylestring | objectStyle inline sull'input.
ariaLabelstringLabel accessibile per screen reader.
ariaLabelledbystringRiferimento a elemento label esterno.
tabindexnumbernullIndice tab per navigazione da tastiera.
autofocusbooleanFocus automatico al mount.

Emits

EventoPayloadDescrizione
update:modelValueboolean | unknown[]Emesso al cambio valore (per v-model).
update:indeterminatebooleanEmesso al cambio dello stato indeterminato.
change{ originalEvent: Event; value: boolean | unknown[]; checked: boolean }Emesso al cambio con dettagli completi sull'evento.
focusFocusEventEmesso quando il componente riceve il focus.
blurFocusEventEmesso quando il componente perde il focus.

Slot

SlotScopeDescrizione
defaultContenuto alternativo al prop label.
icon{ checked: boolean; indeterminate: boolean; class: string[] }Icona di spunta personalizzata.

Esempi

Gruppo con Array

Stato Indeterminato (Seleziona Tutto)

Varianti

Con Helper Text ed Errore

Stato Loading

Durante il loading lo spinner sostituisce l'icona di spunta. Combinabile con disabled per bloccare l'interazione.

Valori personalizzati (trueValue/falseValue)

Utile quando il backend si aspetta valori diversi da true/false (es. 'Y'/'N', 1/0).

Icona Personalizzata tramite Slot

Metodi Esposti

MetodoDescrizione
focus()Porta il focus sull'input nascosto
<script setup>
import { ref } from 'vue'
const checkboxRef = ref(null)
function focusFirst() {
  checkboxRef.value?.focus()
}
</script>
<template>
  <Checkbox ref="checkboxRef" label="Esempio" binary />
</template>

Accessibilità

  • L'input <input type="checkbox"> è nascosto visivamente (sr-only) ma rimane accessibile agli screen reader.
  • inputId associa il checkbox a un elemento <label> esterno.
  • ariaLabel e ariaLabelledby forniscono descrizioni accessibili aggiuntive.
  • Quando required è true, viene aggiunta * visivamente e un testo (obbligatorio) per screen reader.
  • La navigazione da tastiera è supportata tramite tabindex e il comportamento nativo del checkbox.

TypeScript

import type { CheckboxProps, CheckboxEmits } from '@pzeta/vue-components'