Aller au contenu principal

Bouton (Button)

Utilisez un bouton pour déclencher une action ou un lien d’action stylé DSFR.

info

Ce composant est inclus dans l’offre Community.

InformationValeur
NiveauCommunity
Composants Twigdsfr:button, dsfr:button:group

Usage

  • Avec href, le composant rend un lien.
  • Sans href, il rend un bouton type="button".
  • dsfr:button:group est Pro.

Modes d'utilisation

Bouton · exemple principal
<twig:dsfr:button:group inline iconPlace="left">
<twig:dsfr:button label="Enregistrer" icon="fr-icon-save-line" />
<twig:dsfr:button label="Annuler" variant="secondary" />
</twig:dsfr:button:group>

API publique

ComposantRôle
dsfr:buttonComposant principal de cette page.
dsfr:button:groupSous-composant public utilisable en composition Twig.

Configuration

OptionTypeDéfaut / requisValeurs et usage
labelstringRequisLibellé visible du contrôle.
hrefstring|nullSelon composantURL de destination. Les URL sont normalisées.
variantenumprimaryprimary, secondary, tertiary, tertiary-no-outline
sizeenummdmd, sm, lg
iconstring|nullnullClasse d’icône DSFR, par exemple fr-icon-save-line.
iconPlaceenumleft si icône seule absenteleft, right
iconOnlyboolfalseRend un bouton icône seule.
disabledboolfalseDésactive le contrôle. Accepte aussi 0/1 ou chaînes booléennes.
fullWidthboolfalseLargeur complète.
htmlTypestringbuttonType HTML du bouton : button, submit, reset.
dsfr:button:grouppropsalign, size, inline, equisized, reverse, iconPlaceOptions de groupe.

Guide d'intégration

QuestionRéponse
Famille DSFRInteraction
Quand l'utiliserQuand l’usager déclenche une action, ouvre une ressource, filtre une vue ou manipule une interaction ponctuelle.
Quand éviterPour structurer une page complète ou afficher un statut durable : utilisez plutôt un composant de contenu ou de feedback.
API publiqueUtilisez uniquement les composants Twig listés sur cette page : dsfr:button, dsfr:button:group.
Documentation DSFRConsultez aussi la bibliothèque officielle : Système de Design de l'État.
Bouton : composition avec 1 sous-composant

Variantes de bouton

  • tailles disponibles via size quand le DSFR expose une variante compacte ou large.
  • icône DSFR avec icon et placement contrôlé par la prop dédiée.
  • état désactivé avec disabled quand l’action existe mais n’est pas disponible.

Points de contrôle propres à ce composant

  • Avec href, le composant rend un lien.
  • Sans href, il rend un bouton type="button".
  • dsfr:button:group est Pro.
  • Testez la composition avec dsfr:button:group sans copier les templates internes.
  • Contrôlez le rendu lien/action selon la présence de href et le libellé annoncé au clavier.
  • Contrôlez l’icône, son placement et le libellé accessible quand l’icône porte seule l’action.

Accessibilité interaction

  • Le libellé d’action doit rester compréhensible hors contexte.
  • Les icônes seules nécessitent un libellé accessible.
  • Les actions indisponibles doivent utiliser disabled ou un état équivalent documenté.

Intégration Symfony/Twig pour dsfr:button

  • Composez avec les sous-composants publics dsfr:button:group quand le rendu doit être plus précis que les props.
  • Ajoutez vos attributs applicatifs (data-controller, data-action, aria-*, class) sur dsfr:button quand ils concernent son nœud racine.

Checklist de recette

  • focus clavier visible
  • libellé accessible vérifié
  • état hover/focus/disabled cohérent
  • rendu vérifié en thème clair et sombre ;
  • rendu vérifié sur mobile, tablette et desktop ;
  • aucune erreur dans le profiler DSFR ni dans l'inspecteur d'accessibilité du navigateur.

Erreurs fréquentes

SymptômeCorrection
Les classes DSFR semblent incomplètesUtilisez les props du composant plutôt que des classes ajoutées à la main.