Aller au contenu principal

Référence

Cette page liste les points d'entrée publics du bundle : composants Twig, types de formulaires, commandes et intégrations Symfony.

Syntaxe Twig

Les composants se rendent avec la syntaxe Symfony UX Twig Component :

<twig:dsfr:button label="Enregistrer" />

Les tableaux et objets doivent être passés avec : pour conserver leur type :

<twig:dsfr:table
id="users"
caption="Utilisateurs"
:headers="['Nom', 'Statut']"
:rows="[
['Alice Martin', 'Actif'],
['Karim Benali', 'En attente']
]"
/>

N'utilisez pas de blocs Twig nommés comme footer, rows ou panels à l'intérieur des composants. Pour les composants composables, utilisez les sous-composants fournis.

Composition

<twig:dsfr:modal id="confirm-delete">
<twig:dsfr:modal:content>
<twig:dsfr:modal:title modalId="confirm-delete">Supprimer le dossier</twig:dsfr:modal:title>
<p>Cette action est définitive.</p>
</twig:dsfr:modal:content>
<twig:dsfr:modal:footer>
<twig:dsfr:button label="Supprimer" type="button" />
<twig:dsfr:button label="Annuler" variant="secondary" type="button" />
</twig:dsfr:modal:footer>
</twig:dsfr:modal>
<twig:dsfr:card horizontal>
<twig:dsfr:card:header src="/images/service.jpg" alt="" />
<twig:dsfr:card:body title="Démarche en ligne" href="/demarches" description="Accéder au service." />
<twig:dsfr:card:footer>
<twig:dsfr:badge label="Nouveau" type="new" />
</twig:dsfr:card:footer>
</twig:dsfr:card>

Composants Community

Les composants Community sont utilisables sans licence Pro :

ComposantUsage
dsfr:buttonBouton ou lien stylé DSFR
dsfr:linkLien DSFR, interne ou externe
dsfr:tagTag statique, lien, sélectionnable ou supprimable
dsfr:badgeBadge d'état ou de catégorie
dsfr:alertAlerte information, succès, avertissement ou erreur
dsfr:highlightMise en exergue courte
dsfr:breadcrumbFil d'Ariane
dsfr:paginationPagination accessible
dsfr:stepperIndicateur d'étapes
dsfr:skip:linksLiens d'évitement
dsfr:containerConteneur DSFR standard ou fluide
dsfr:grid:rowLigne de grille, gouttières et alignements
dsfr:grid:colColonne responsive et offsets

Composants Pro

Les composants Pro sont visibles en développement local. En production, ils nécessitent une licence valide.

FamilleComposants
Accordéondsfr:accordion, dsfr:accordion:group
Actionsdsfr:button:group, dsfr:download, dsfr:france:connect, dsfr:links:group, dsfr:share, dsfr:tag:group
Contenudsfr:callout, dsfr:card, dsfr:card:header, dsfr:card:body, dsfr:card:content, dsfr:card:title, dsfr:card:description, dsfr:card:footer, dsfr:composition, dsfr:media:content, dsfr:quote, dsfr:table, dsfr:table:head, dsfr:table:body, dsfr:table:row, dsfr:table:cell, dsfr:table:head:cell, dsfr:tabs, dsfr:tabs:list, dsfr:tabs:tab, dsfr:tabs:panel, dsfr:tile, dsfr:tooltip, dsfr:transcription
Feedbackdsfr:badge:group, dsfr:notice
Formulairesdsfr:checkbox, dsfr:combobox, dsfr:fieldset, dsfr:fieldset:element, dsfr:input, dsfr:password, dsfr:radio, dsfr:range, dsfr:search:bar, dsfr:segmented, dsfr:select, dsfr:textarea, dsfr:toggle, dsfr:toggle:group, dsfr:upload
Mise en pagedsfr:display, dsfr:follow, dsfr:footer, dsfr:footer:top, dsfr:footer:brand, dsfr:footer:content, dsfr:footer:partners, dsfr:footer:bottom, dsfr:header, dsfr:header:brand, dsfr:header:tools, dsfr:logo, dsfr:translate
Navigationdsfr:breadcrumb:item, dsfr:dropdown, dsfr:nav, dsfr:nav:item, dsfr:nav:menu, dsfr:nav:mega, dsfr:pagination, dsfr:sidemenu, dsfr:stepper, dsfr:summary, dsfr:tabnav
Vie privéedsfr:consent, dsfr:consent:placeholder
Surcouchesdsfr:modal, dsfr:modal:title, dsfr:modal:content, dsfr:modal:footer

Contrat d'accessibilité

Les composants rendent les classes DSFR et les relations ARIA attendues lorsque les props nécessaires sont fournies. Les points suivants restent sous la responsabilité de l'application :

  • fournir un caption aux tableaux de données ;
  • relier les boutons de disclosure aux panneaux avec des id stables ;
  • donner un nom accessible aux modales avec title ou dsfr:modal:title ;
  • conserver des alternatives d'image utiles ou vides selon que l'image est informative ou décorative ;
  • vérifier les pages réelles avec le profiler DSFR et l'inspecteur d'accessibilité du navigateur.

Aide à l'intégration

Props et attributs HTML

Les props déclarées par un composant sont validées et normalisées. Les attributs non déclarés sont transmis au nœud racine quand le template le permet :

<twig:dsfr:alert
type="info"
title="Information"
text="Message visible."
class="fr-mt-3w"
data-controller="tracking"
/>

Pour les tableaux et objets, utilisez toujours :. Sans :, Twig transmet une chaîne et non une structure :

<twig:dsfr:nav :items="[
{label: 'Accueil', href: '/'},
{label: 'Dossiers', href: '/dossiers', active: true}
]" />

Composition avec sous-composants

N'utilisez pas de macros ni d'include pour composer les composants du bundle. Les composants complexes exposent des sous-composants publics :

ComposantSous-composants
Cartedsfr:card:header, body, content, title, description, footer
Modaledsfr:modal:title, content, footer
Tableaudsfr:table:head, body, row, cell, head:cell
Ongletsdsfr:tabs:list, tab, panel
Grilledsfr:container, dsfr:grid:row, dsfr:grid:col

Diagnostic

SituationAction
Le rendu est bloqué en productionLancez php bin/console dsfr:license:validate et vérifiez le domaine courant.
Le JavaScript DSFR signale un nom accessible manquantAjoutez title, ariaLabel, caption, legend ou aria-labelledby selon le composant.
Un bouton contrôle le mauvais panneauAssurez-vous que aria-controls pointe vers un id unique et présent dans la page.
Une page contient beaucoup de composantsOuvrez le profiler DSFR : il affiche les composants rendus, leur tier, leurs props et les alertes d'accessibilité détectables côté serveur.

Types de formulaires Symfony

use Nalabdou\Dsfr\Form\Type\DsfrInputType;
use Nalabdou\Dsfr\Form\Type\DsfrSubmitType;

$builder
->add('email', DsfrInputType::class, [
'label' => 'Adresse électronique',
'help' => 'Format attendu : nom@example.fr',
])
->add('submit', DsfrSubmitType::class, [
'label' => 'Envoyer',
]);

Types disponibles :

TypeParent Symfony
DsfrInputTypeChamp texte
DsfrTextareaTypeZone de texte
DsfrSelectTypeListe déroulante
DsfrCheckboxTypeCase à cocher
DsfrRadioTypeBouton radio
DsfrToggleTypeInterrupteur
DsfrSearchTypeBarre de recherche
DsfrSubmitTypeBouton de soumission

Commandes

php bin/console debug:dsfr-components
php bin/console debug:dsfr-components --tier=community
php bin/console debug:dsfr-components --tier=pro
php bin/console dsfr:license:validate
php bin/console dsfr:license:validate config/dsfr_bundle.lic

La commande de validation affiche le titulaire, le profil tarifaire, le niveau, le périmètre de sites couverts, tous les hôtes autorisés et le statut de la licence.

Profiler

En environnement de développement avec le Web Profiler Symfony, le collecteur dsfr_bundle affiche :

  • le nombre de composants rendus ;
  • la répartition Community / Pro ;
  • l'état de la licence ;
  • les props utiles au diagnostic ;
  • un lien vers les informations d'achat si une page utilise des composants Pro sans licence.