Skip to content

Accordion

Le composant Accordion permet d’afficher plusieurs sections de contenu repliables.
Chaque section est gérée par un sous-composant AccordionItem, qui contient un Heading et un Panel.
Il est idéal pour présenter des informations hiérarchisées sans surcharger la page.

✨ Fonctionnalités

  • Ouvre ou ferme un ou plusieurs panneaux (single ou multiple)
  • Gestion automatique des états expanded, aria-controls, aria-labelledby
  • Navigation clavier accessible (WAI-ARIA)
  • Compatible avec les thèmes clair et sombre
  • Prend en charge les mises en page RTL (Right-To-Left)

🚀 Utilisation

Exemple de base

vue
<template>
  <SuAccordion>
    <SuAccordionItem title="Section 1">
      <p>Contenu de la première section</p>
    </SuAccordionItem>

    <SuAccordionItem title="Section 2">
      <p>Contenu de la deuxième section</p>
    </SuAccordionItem>
  </SuAccordion>
</template>

Mode multiple

vue
<template>
  <SuAccordion multiple>
    <SuAccordionItem title="Section 1">
      <p>Plusieurs sections peuvent être ouvertes en même temps.</p>
    </SuAccordionItem>
    <SuAccordionItem title="Section 2">
      <p>Chaque panneau conserve son état d’ouverture.</p>
    </SuAccordionItem>
  </SuAccordion>
</template>

Contenu personnalisé

vue
<SuAccordion multiple>
  <SuAccordionItem>
    <template #header>
      <Heading level="3">Titre personnalisé</Heading>
    </template>
    <p>Vous pouvez insérer ici n’importe quel contenu Vue.</p>
  </SuAccordionItem>
</SuAccordion>

API

Props

Accordion

PropTypePar défautDescription
multiplebooleanfalseSi true, plusieurs panneaux peuvent être ouverts simultanément.

AccordionItem

PropTypePar défautDescription
titlestringTitre affiché dans le bouton. Peut être remplacé via le slot title.
openbooleanfalseDéfinit l’état initial (ouvert/fermé).
idstringIdentifiant unique facultatif pour l’item.

Slots

AccordionItem

Nom du slotDescription
titleRemplace le contenu du titre du bouton.
defaultContenu principal du panneau.

Accessibilité (WAI-ARIA)

Chaque AccordionItem respecte les recommandations W3C :

  • Le bouton a aria-expanded et aria-controls
  • Le panneau a role="region" et aria-labelledby
  • Navigation clavier :
    • Entrée / Espace → ouvrir ou fermer
    • ↑ / ↓ → naviguer entre les en-têtes
    • Home / End → aller au premier ou dernier panneau
  • Focus visible mis en évidence

Bonnes pratiques

Utiliser multiple si le contexte ne nécessite pas une exclusivité d’ouverture. Fournir des titres clairs et courts pour chaque section. Ne pas insérer d’éléments interactifs directement dans les titres (préférer les contenus dans les panels). Préserver une hiérarchie logique de titres (h2, h3, etc.) via le composant Heading.

Accessibilité vérifiée

  • ✔ Gestion complète des rôles et attributs WAI-ARIA
  • ✔ Focus visible
  • ✔ Navigation clavier fonctionnelle
  • ✔ Composants autonomes ou groupés

Publié sous licence MIT.