En-tête - Header
L’en-tête permet aux utilisateurs d’identifier sur quel site ils se trouvent. Il peut donner accès à la recherche et à certaines pages ou fonctionnalités clés.
En-tête complet
L’intégralité des options est exposée dans cet exemple mais composez selon vos besoins en privilégiant toujours l’accessibilité et la simplicité de votre page. Vous pouvez voir :
- le nom du sponsor (requis)
- le nom du service (requis)
- le logo du service
- un champ de recherche
- des liens d’accès rapide
- des liens directs
- des liens direct déroulants.
Code
= dsfr_header logo_text: "Ministère du Travail", title: "Égapro", tagline: "Indice de parité professionelle" do |header|
= header.with_operator_image title: "beta.gouv.fr", src: "/assets/images/logo-betagouvfr.svg", alt: "logo de beta.gouv.fr"
= header.with_tool_link title: "Connexion", path: "#"
= header.with_tool_link title: "Comment ça marche", path: "#"
= header.with_tool_link title: "Contact", path: "#", html_attributes: { class: ["fr-btn", "fr-icon-mail-line"] }
= header.with_direct_link_simple title: "Accueil", path: "#"
= header.with_direct_link_simple title: "Ce service", path: "#"
= header.with_direct_link_dropdown title: "L'équipe" do |dropdown|
= dropdown.with_link title: "Beta Gouv", path: "#"
= dropdown.with_link title: "DSFR", path: "#"
= header.with_search do
= form_with(url: "#") do |form|
.fr-search-bar
= form.label :query, "Rechercher", { class: 'fr-label' }
= form.search_field :query, { class: 'fr-input' }
%button.fr-btn{title: "Rechercher"} Rechercher
Résultat
Égapro
Indice de parité professionelle
<header class="fr-header" role="banner">
<div class="fr-header__body">
<div class="fr-container">
<div class="fr-header__body-row">
<div class="fr-header__brand fr-enlarge-link">
<div class="fr-header__brand-top">
<div class="fr-header__logo">
<p class="fr-logo">
Ministère du Travail
</p>
</div>
<div class="fr-header__operator">
<a href="/" title="beta.gouv.fr">
<img class="fr-responsive-img" src="/assets/images/logo-betagouvfr.svg" alt="logo de beta.gouv.fr" style="max-width:9.0625rem;">
</a>
</div>
<div class="fr-header__navbar">
<button class="fr-btn--search fr-btn" data-fr-opened="false" aria-controls="modal-header-search" id="button-header-search" title="Rechercher">
Rechercher
</button>
<button class="fr-btn--menu fr-btn" data-fr-opened="false" aria-controls="modal-header-menu" aria-haspopup="menu" id="button-header-menu" title="Menu">
Menu
</button>
</div>
</div>
<div class="fr-header__service">
<a href="/" title="Accueil - Égapro">
<p class="fr-header__service-title">
Égapro
</p>
</a>
<p class="fr-header__service-tagline">
Indice de parité professionelle
</p>
</div>
</div>
<div class="fr-header__tools">
<div class="fr-header__tools-links">
<ul class="fr-btns-group">
<li>
<a href="#" class="fr-btn">
Connexion
</a>
</li>
<li>
<a href="#" class="fr-btn">
Comment ça marche
</a>
</li>
<li>
<a href="#" class="fr-btn fr-icon-mail-line">
Contact
</a>
</li>
</ul>
</div>
<div class="fr-header__search fr-modal" id="modal-header-search">
<div class="fr-container fr-container-lg--fluid">
<button class="fr-btn--close fr-btn" aria-controls="modal-header-search" title="Fermer">
Fermer
</button>
<div role="search" id="header-search">
<form action="#" accept-charset="UTF-8" data-remote="true" method="post">
<input name="utf8" type="hidden" value="✓" autocomplete="off" />
<div class='fr-search-bar'>
<label class="fr-label">
Rechercher
</label>
<input class="fr-input" type="search" name="query" />
<button class='fr-btn' title='Rechercher'>
Rechercher
</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="fr-header__menu fr-modal" id="modal-header-menu" aria-labelledby="button-header-menu" role="navigation">
<div class="fr-container">
<button class="fr-btn--close fr-btn" aria-controls="modal-header-menu" title="Fermer">
Fermer
</button>
<div class="fr-header__menu-links">
<!-- this seems to get autopopulated with the tool links with JS -->
</div>
<nav class="fr-nav" id="navigation-direct-links" role="navigation" aria-label="Menu principal">
<ul class="fr-nav__list">
<li class="fr-nav__item">
<a href="#" class="fr-nav__link" target="_self">
Accueil
</a>
</li>
<li class="fr-nav__item">
<a href="#" class="fr-nav__link" target="_self">
Ce service
</a>
</li>
<li class="fr-nav__item">
<button class="fr-nav__btn" aria-expanded="false" aria-controls="menu-l-equipe">
L'équipe
</button>
<div class="fr-collapse fr-menu" id="menu-l-equipe">
<ul class="fr-menu__list">
<li>
<a href="#" class="fr-nav__link" target="_self">
Beta Gouv
</a>
</li>
<li>
<a href="#" class="fr-nav__link" target="_self">
DSFR
</a>
</li>
</ul>
</div>
</li>
</ul>
</nav>
</div>
</div>
</header>
En-tête avec liens personnalisés
Il n’est pas rare que l’action de déconnexion d’un utilisateur passe par un DELETE
sur /sessions
ou autre. Comme les liens (<a>
) sont limités à GET
il est possible d’outrepasser ça avec custom_tool_links
qui permet par exemple d’insérer le combo formulaire/bouton dans ce cas :
Code
= dsfr_header logo_text: "Ministère du travail", title: "Égapro" do |header|
- if "l'utilisateur est connecté"
= header.with_tool_link title: "Vos services (Marie Curie)", path: '#', html_attributes: { class: "fr-icon-account-line" }
= header.with_custom_tool_link do
= button_to "Déconnexion", '#', { method: :delete, class: "fr-btn fr-icon-logout-box-r-line", data: { turbo: "false" } }
Résultat
Ministère du travail
<header class="fr-header" role="banner">
<div class="fr-header__body">
<div class="fr-container">
<div class="fr-header__body-row">
<div class="fr-header__brand fr-enlarge-link">
<div class="fr-header__brand-top">
<div class="fr-header__logo">
<p class="fr-logo">
Ministère du travail
</p>
</div>
<div class="fr-header__navbar">
<button class="fr-btn--menu fr-btn" data-fr-opened="false" aria-controls="modal-header-menu" aria-haspopup="menu" id="button-header-menu" title="Menu">
Menu
</button>
</div>
</div>
<div class="fr-header__service">
<a href="/" title="Accueil - Égapro">
<p class="fr-header__service-title">
Égapro
</p>
</a>
</div>
</div>
<div class="fr-header__tools">
<div class="fr-header__tools-links">
<ul class="fr-btns-group">
<li>
<a href="#" class="fr-btn fr-icon-account-line">
Vos services (Marie Curie)
</a>
</li>
<li>
<form class="button_to" method="post" action="#">
<input type="hidden" name="_method" value="delete" autocomplete="off" />
<input class="fr-btn fr-icon-logout-box-r-line" data-turbo="false" type="submit" value="Déconnexion" />
</form>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="fr-header__menu fr-modal" id="modal-header-menu" aria-labelledby="button-header-menu" role="navigation">
<div class="fr-container">
<button class="fr-btn--close fr-btn" aria-controls="modal-header-menu" title="Fermer">
Fermer
</button>
<div class="fr-header__menu-links">
<!-- this seems to get autopopulated with the tool links with JS -->
</div>
</div>
</div>
</header>