Onglet - Tab
Le composant onglet permet aux utilisateurs de naviguer dans différentes sections de contenu au sein d’une même page.
Le système d’onglet aide à regrouper différents contenus dans un espace limité et permet de diviser un contenu dense en sections accessibles individuellement afin de faciliter la lecture pour l’utilisateur.
Vue d’ensemble
Le rendu de base du TabsComponent
Code
= dsfr_tabs do |tabs|
- tabs.with_tab title: "Onglet 1", active: true do
%p Contenu de l’onglet 1
- tabs.with_tab title: "Onglet 2" do
%p Contenu de l’onglet 2
Résultat
Contenu de l’onglet 1
Contenu de l’onglet 1
Contenu de l’onglet 2
<div class="fr-tabs">
<ul class="fr-tabs__list" role="tablist" aria-label="">
<li role="presentation">
<button id="tab-onglet-1-nav" class="fr-tabs__tab" role="tab" aria-selected="true" aria-controls="tab-onglet-1-panel">
Onglet 1
</button>
</li>
<li role="presentation">
<button id="tab-onglet-2-nav" class="fr-tabs__tab" role="tab" aria-selected="false" aria-controls="tab-onglet-2-panel">
Onglet 2
</button>
</li>
</ul>
<div id="tab-onglet-1-panel" class="fr-tabs__panel fr-tabs__panel--selected" role="tabpanel" aria-labelledby="tab-onglet-1-nav">
<p>
Contenu de l’onglet 1
</p>
</div>
<div id="tab-onglet-2-panel" class="fr-tabs__panel" role="tabpanel" aria-labelledby="tab-onglet-2-nav">
<p>
Contenu de l’onglet 1
</p>
<p>
Contenu de l’onglet 2
</p>
</div>
</div>
Onglets avec des icônes
Vous pouvez utiliser des icônes pour illustrer les onglets.
Code
= dsfr_tabs do |tabs|
- tabs.with_tab title: "Comment ça marche ?", icon: "info-fill" do
%p Ça marche bien
- tabs.with_tab title: "Contact", icon: "mail-line" do
%p Contactez-nous par email
- tabs.with_tab title: "Support", active: true, icon: "settings-5-line" do
%p Support technique
Résultat
Ça marche bien
Ça marche bien
Contactez-nous par email
Ça marche bien
Contactez-nous par email
Support technique
<div class="fr-tabs">
<ul class="fr-tabs__list" role="tablist" aria-label="">
<li role="presentation">
<button id="tab-comment-ca-marche-nav" class="fr-tabs__tab fr-icon-info-fill fr-tabs__tab--icon-left" role="tab" aria-selected="false" aria-controls="tab-comment-ca-marche-panel">
Comment ça marche ?
</button>
</li>
<li role="presentation">
<button id="tab-contact-nav" class="fr-tabs__tab fr-icon-mail-line fr-tabs__tab--icon-left" role="tab" aria-selected="false" aria-controls="tab-contact-panel">
Contact
</button>
</li>
<li role="presentation">
<button id="tab-support-nav" class="fr-tabs__tab fr-icon-settings-5-line fr-tabs__tab--icon-left" role="tab" aria-selected="true" aria-controls="tab-support-panel">
Support
</button>
</li>
</ul>
<div id="tab-comment-ca-marche-panel" class="fr-tabs__panel" role="tabpanel" aria-labelledby="tab-comment-ca-marche-nav">
<p>
Ça marche bien
</p>
</div>
<div id="tab-contact-panel" class="fr-tabs__panel" role="tabpanel" aria-labelledby="tab-contact-nav">
<p>
Ça marche bien
</p>
<p>
Contactez-nous par email
</p>
</div>
<div id="tab-support-panel" class="fr-tabs__panel fr-tabs__panel--selected" role="tabpanel" aria-labelledby="tab-support-nav">
<p>
Ça marche bien
</p>
<p>
Contactez-nous par email
</p>
<p>
Support technique
</p>
</div>
</div>
Onglets avec des liens
Les boutons de navigation des onglets peuvent être des transformés en liens vers d’autres pages en utilisant le paramètre path
.
Cela permet entre-autres d’utiliser Turbo Drive pour naviguer entre les onglets. Chaque page affiche uniquement un onglet actif avec son contenu et les liens vers les autres onglets. L’onglet actif n’a pas besoin d’avoir de lien, il peut rester un bouton.
Code
= dsfr_tabs do |tabs|
- tabs.with_tab title: "Première page", path: "#onglet-1"
- tabs.with_tab title: "Deuxième page", active: true do
%p Contenu de l’onglet 2
- tabs.with_tab title: "Troisième page", path: "#onglet-3"
Résultat
<div class="fr-tabs">
<ul class="fr-tabs__list" role="tablist" aria-label="">
<li role="presentation">
<a href="#onglet-1" data-turbo-action="advance" id="tab-premiere-page-nav" class="fr-tabs__tab" role="tab" aria-selected="false" aria-controls="tab-premiere-page-panel">
Première page
</a>
</li>
<li role="presentation">
<button id="tab-deuxieme-page-nav" class="fr-tabs__tab" role="tab" aria-selected="true" aria-controls="tab-deuxieme-page-panel">
Deuxième page
</button>
</li>
<li role="presentation">
<a href="#onglet-3" data-turbo-action="advance" id="tab-troisieme-page-nav" class="fr-tabs__tab" role="tab" aria-selected="false" aria-controls="tab-troisieme-page-panel">
Troisième page
</a>
</li>
</ul>
<div id="tab-premiere-page-panel" class="fr-tabs__panel" role="tabpanel" aria-labelledby="tab-premiere-page-nav">
</div>
<div id="tab-deuxieme-page-panel" class="fr-tabs__panel fr-tabs__panel--selected" role="tabpanel" aria-labelledby="tab-deuxieme-page-nav">
<p>
Contenu de l’onglet 2
</p>
</div>
<div id="tab-troisieme-page-panel" class="fr-tabs__panel" role="tabpanel" aria-labelledby="tab-troisieme-page-nav">
</div>
</div>