Buttons

SelectButton

Componente per selezione singola o multipla tramite un gruppo di pulsanti, compatibile con array di stringhe o oggetti tramite v-model.

Import

import { SelectButton } from '@pzeta/vue-components'
// oppure con plugin selettivo:
import { ButtonsPlugin } from '@pzeta/vue-components'
app.use(ButtonsPlugin)

Esempio Base

Props

PropTipoDefaultDescrizione
modelValueunknown | unknown[]undefinedValore selezionato (singolo o array per selezione multipla)
optionsSelectButtonOption[] | string[]undefinedArray di opzioni da visualizzare
optionLabelstring'label'Nome della proprietà da usare come etichetta
optionValuestringundefinedNome della proprietà da usare come valore (se omesso, usa l'oggetto intero)
optionDisabledstring'disabled'Nome della proprietà che indica se l'opzione è disabilitata
multiplebooleanfalseAbilita la selezione multipla
allowEmptybooleanfalsePermette di deselezionare l'opzione attiva
disabledbooleanfalseDisabilita l'intero componente
size'small' | 'medium' | 'large''medium'Dimensione del componente
dataKeystringundefinedChiave univoca per identificare opzioni oggetto (necessaria per selezione multipla con oggetti)
ariaLabelledbystringundefinedAttributo aria-labelledby per il contenitore del gruppo
invalidbooleanfalseIndica uno stato di validazione non valido

Emits

EventoPayloadDescrizione
update:modelValueunknown | unknown[]Emesso quando cambia il valore selezionato
change{ originalEvent: Event; value: unknown | unknown[] }Emesso al cambio di selezione con evento originale

Slot

SlotScopeDescrizione
option{ option: SelectButtonOption; index: number; selected: boolean }Template personalizzato per ogni opzione

Esempi

Array di stringhe

Con oggetti e optionLabel/optionValue

Selezione multipla

Con icone

Con icone e label

Dimensioni

Con opzione disabilitata

Accessibilità

  • Il contenitore ha role="group" per comunicare agli screen reader il raggruppamento logico.
  • ariaLabelledby permette di collegare il gruppo a un elemento label esterno.
  • Ogni pulsante ha aria-pressed impostato automaticamente in base allo stato di selezione.
  • I pulsanti disabilitati hanno l'attributo disabled nativo.

TypeScript

import type { SelectButtonProps, SelectButtonEmits, SelectButtonOption } from '@pzeta/vue-components'