Accordion
Composant de contenu repliable/dépliable. Prend un tableau items et expose un slot nommé #[item.id] pour le contenu de chaque panneau.
Démo de base
vue
<script setup>
const items = [
{ id: 'kyb', title: 'Informations générales', content: 'Raison sociale, SIREN, forme juridique.' },
{ id: 'docs', title: 'Documents KYB', content: 'Kbis, pièce d\'identité dirigeant.' },
{ id: 'oidc', title: 'Configuration OIDC', content: 'Scopes, claims, redirect URIs.' },
]
</script>
<BcAccordion :items="items" />Avec contenu personnalisé (slot nommé)
vue
<BcAccordion :items="[
{ id: 'panel-a', title: 'Section personnalisée' },
{ id: 'panel-b', title: 'Section standard', content: 'Contenu texte.' },
]">
<!-- slot nommé par l'ID de l'item -->
<template #panel-a>
<div style="padding: 12px 16px;">
<BcButton size="sm" variant="primary">Action</BcButton>
</div>
</template>
</BcAccordion>Plusieurs panneaux ouverts simultanément
vue
<BcAccordion :items="items" :multiple="true" />Props
| Prop | Type | Défaut | Description |
|---|---|---|---|
items | AccordionItem[] | [] | Tableau des panneaux |
flush | boolean | false | Sans bordure extérieure |
multiple | boolean | false | Plusieurs panneaux ouverts simultanément |
Type AccordionItem
ts
interface AccordionItem {
id: string // identifiant unique — sert aussi de nom de slot
title: string // titre du panneau
content?: string // contenu texte (alternatif au slot nommé)
}Slots
| Slot | Props | Description |
|---|---|---|
#[item.id] | { item } | Contenu personnalisé pour l'item ayant cet id |