Skip to content

ToggleGroup ​

Groupe de toggles avec sélection exclusive ou multiple. Supporte le mode connecté, l'orientation verticale/horizontale et les rôles ARIA adaptés au mode de sélection.

Description ​

ToggleGroup affiche une liste de Toggle et gère la sélection. En mode exclusive, un seul toggle peut être actif (similaire à un groupe radio). En mode multi, plusieurs toggles peuvent être actifs simultanément. Le mode connecté (gap="none") fusionne visuellement les toggles en un seul bloc.

Exemples d'utilisation ​

Sélection multiple (défaut) ​

Format de texte

vue
<script setup>
import { ref } from 'vue'

const format = ref(['bold'])
const items = [
  { value: 'bold', label: 'Gras' },
  { value: 'italic', label: 'Italique' },
  { value: 'underline', label: 'Souligné' }
]
</script>

<template>
  <SuToggleGroup
    v-model="format"
    :items="items"
    aria-label="Format du texte"
  />
</template>

Sélection exclusive ​

vue
<script setup>
import { ref } from 'vue'
import { Bars3BottomLeftIcon, Bars3Icon, Bars3BottomRightIcon } from '@heroicons/vue/24/outline'

const align = ref(['center'])
const items = [
  { value: 'left', icon: Bars3BottomLeftIcon },
  { value: 'center', icon: Bars3Icon },
  { value: 'right', icon: Bars3BottomRightIcon }
]
</script>

<template>
  <SuToggleGroup
    v-model="align"
    :items="items"
    mode="exclusive"
    aria-label="Alignement"
  />
</template>

Mode connecté (gap=none) ​

vue
<SuToggleGroup
  v-model="selected"
  :items="items"
  gap="none"
  mode="exclusive"
  aria-label="Alignement"
/>

Orientation verticale ​

vue
<SuToggleGroup
  v-model="selected"
  :items="items"
  orientation="vertical"
  gap="none"
/>

API ​

Props ​

PropTypeDéfautDescription
modelValue(string | number)[][]Valeurs actives (v-model)
itemsToggleGroupItem[]requisListe des toggles
mode'exclusive' | 'multi''multi'Mode de sélection
size'sm' | 'md' | 'lg''md'Taille des toggles
variant'default' | 'outline' | 'ghost''default'Variante visuelle
radiusRadius'md'Rayon de bordure
gap'none' | 'sm' | 'md' | 'lg''md'Espacement (none = connecté)
orientation'horizontal' | 'vertical''horizontal'Orientation du groupe
disabledbooleanfalseDésactive tout le groupe

ToggleGroupItem ​

PropriétéTypeDescription
valuestring | numberIdentifiant unique (requis)
labelstringTexte affiché
iconComponentIcône (état inactif)
activeIconComponentIcône (état actif)
disabledbooleanDésactive cet item

Événements ​

ÉvénementPayloadDescription
update:modelValue(string | number)[]Émis lors du changement (v-model)
change(string | number)[]Nouvelle liste des valeurs actives
selectstring | number, booleanItem sélectionné et son nouvel état

Accessibilité ​

  • role="radiogroup" en mode exclusive, role="group" en mode multi
  • Chaque toggle utilise role="switch" avec aria-checked
  • Navigation clavier : Tab entre les toggles, Entrée / Espace pour basculer
  • aria-label sur le conteneur pour décrire le groupe

Publié sous licence MIT.