Bannière de consentement (Cookies)
Composant réglementaire permettant de recueillir le consentement de l’utilisateur pour les cookies et traceurs, conformément à la réglementation en vigueur.
Bannière de consentement
La bannière s’affiche en pied de page jusqu’à ce qu’un choix soit enregistré. Pour la documentation, l’aperçu ci-dessous utilise un positionnement relatif afin de rester visible dans le flux de la page.
<div style="position: relative; background: var(--bj-bg-alt); padding: var(--bj-spacing-4v); border-radius: var(--bj-radius-sm);">
<div class="bj-consent-banner" data-bj-consent-banner style="position: relative; display: block; box-shadow: var(--bj-shadow-lg); border-top: 2px solid var(--bj-action-high);">
<div class="bj-consent-banner__body">
<div class="bj-consent-banner__header">
<div class="bj-consent-banner__icon"><i class="ri-shield-check-line"></i></div>
<h2 class="bj-consent-banner__title">Gestion des cookies</h2>
</div>
<p class="bj-consent-banner__text">…</p>
<div class="bj-consent-banner__actions">
<button type="button" class="bj-btn" data-bj-consent-accept>Tout accepter</button>
<button type="button" class="bj-btn bj-btn--secondary" data-bj-consent-refuse>Tout refuser</button>
<button type="button" class="bj-btn bj-btn--tertiary" data-bj-consent-customize data-bj-modal-open="id-modale-consentement">Personnaliser</button>
</div>
</div>
</div>
</div>Modale de personnalisation
La personnalisation repose sur la structure bj-consent-manager et des lignes bj-consent-service, chacune associée à un interrupteur bj-toggle. En production, le gestionnaire est généralement rendu dans un overlay plein écran ; ici il est centré pour l’aperçu.
<div class="bj-consent-manager" id="id-modale-consentement" role="dialog" aria-modal="true" aria-labelledby="consent-manager-title" style="display: flex">
<div class="bj-consent-manager__dialog">
<div class="bj-consent-manager__header">
<h2 class="bj-consent-manager__title" id="consent-manager-title">Personnaliser les cookies</h2>
<button type="button" class="bj-btn bj-btn--tertiary bj-btn--sm" data-bj-modal-close aria-label="Fermer">
<i class="ri-close-line" aria-hidden="true"></i>
</button>
</div>
<div class="bj-consent-manager__body">
<div class="bj-consent-service">
<div class="bj-consent-service__info">
<p class="bj-consent-service__name">Cookies essentiels</p>
<p class="bj-consent-service__desc">Nécessaires au fonctionnement du site. Toujours actifs.</p>
</div>
<div class="bj-consent-service__toggle">
<label class="bj-toggle">
<input type="checkbox" class="bj-toggle__input" checked disabled>
<span class="bj-toggle__slider"></span>
</label>
</div>
</div>
<!-- autres services -->
</div>
<div class="bj-consent-manager__footer">
<button type="button" class="bj-btn bj-btn--secondary">Tout refuser</button>
<button type="button" class="bj-btn">Confirmer mes choix</button>
</div>
</div>
</div>Liste de services (exemple)
En personnalisation, chaque traceur ou famille de cookies est une ligne bj-consent-service avec nom, description courte et bj-toggle . Réutilisez le bloc suivant pour rester aligné avec le DSBJ.
<div class="bj-consent-manager__body">
<div class="bj-consent-service">
<div class="bj-consent-service__info">
<p class="bj-consent-service__name">Strictly necessary</p>
<p class="bj-consent-service__desc">Required for security and basic features. Always on.</p>
</div>
<div class="bj-consent-service__toggle">
<label class="bj-toggle">
<input type="checkbox" class="bj-toggle__input" checked disabled />
<span class="bj-toggle__slider"></span>
</label>
</div>
</div>
<div class="bj-consent-service">
<div class="bj-consent-service__info">
<p class="bj-consent-service__name">Audience measurement</p>
<p class="bj-consent-service__desc">Anonymous statistics to improve content.</p>
</div>
<div class="bj-consent-service__toggle">
<label class="bj-toggle">
<input type="checkbox" class="bj-toggle__input" />
<span class="bj-toggle__slider"></span>
</label>
</div>
</div>
<div class="bj-consent-service">
<div class="bj-consent-service__info">
<p class="bj-consent-service__name">Personalization</p>
<p class="bj-consent-service__desc">Remember preferences and contextual content.</p>
</div>
<div class="bj-consent-service__toggle">
<label class="bj-toggle">
<input type="checkbox" class="bj-toggle__input" />
<span class="bj-toggle__slider"></span>
</label>
</div>
</div>
<div class="bj-consent-service">
<div class="bj-consent-service__info">
<p class="bj-consent-service__name">Social & sharing</p>
<p class="bj-consent-service__desc">Embeds and share buttons from third-party platforms.</p>
</div>
<div class="bj-consent-service__toggle">
<label class="bj-toggle">
<input type="checkbox" class="bj-toggle__input" />
<span class="bj-toggle__slider"></span>
</label>
</div>
</div>
</div>Classes CSS
| Classe | Description |
|---|---|
bj-consent-banner | Bannière fixée en bas de page |
bj-consent-banner__body | Corps de la bannière |
bj-consent-banner__header | En-tête avec icône et titre |
bj-consent-banner__icon | Icône de la bannière |
bj-consent-banner__title | Titre de la bannière |
bj-consent-banner__text | Texte explicatif |
bj-consent-banner__actions | Conteneur des boutons d’action |
bj-consent-manager | Modale de personnalisation (overlay) |
bj-consent-manager__dialog | Boîte de dialogue |
bj-consent-manager__header | En-tête de la modale |
bj-consent-manager__body | Corps scrollable |
bj-consent-manager__footer | Pied avec boutons |
bj-consent-service | Ligne de service |
bj-consent-service__info | Informations du service |
bj-consent-service__name | Nom du service |
bj-consent-service__desc | Description du service |
bj-consent-service__toggle | Interrupteur du service |
bj-toggle / bj-toggle__input | Interrupteur sur chaque ligne de service (voir composant Toggle). |
Attributs JavaScript
| Attribut | Description |
|---|---|
data-bj-consent-banner | Sur l’élément bannière |
data-bj-consent-accept | Sur le bouton « Tout accepter » |
data-bj-consent-refuse | Sur le bouton « Tout refuser » |
data-bj-consent-customize | Sur le bouton « Personnaliser » : associer data-bj-modal-open à l’id du gestionnaire (bj-consent-manager) si ouverture via modale DSBJ. |
data-bj-expanded | Rend la bannière visible (utile pour forcer l’affichage en démo ou après rechargement) |
Accessibilité
label , ce qui préserve une association explicite entre le libellé et le contrôle. Les choix de consentement sont persistés dans localStorage sous la clé bj-consent (clé utilisée par la bannière de démonstration du site docs).