Note de version 1.9

Général

Information générale

Les librairies Figma et Sketch sont en avance de phase vis-à-vis du code sur un certains nombre d'évolutions et de correctifs. Ce retard sera rattrapé en code à la sortie de la prochaine version du Système de Design de l'État.

La version 1.9.4 est disponible depuis le 23 octobre 2023
Code en version 1.9.4

La version 1.9.3 est disponible depuis le 17 mai 2023
Code en version 1.9.3


La version 1.9.2 est disponible depuis le 18 avril 2023
Code en version 1.9.2


La version 1.9.1 est disponible depuis le 11 avril 2023
Code en version 1.9.1


La version 1.9.0 est disponible depuis le 1er mars 2023
Code en version 1.9.0

Nouveauté(s)

🎉 Ajout de l'API Analytics dans le cadre de la gestion de mesure d'audience au niveau interministériel pour les sites et applications de l'État

Librairie Sketch, v1.9.0

🎨 Fondamentaux

Pictogramme

🎉 Ajout des pictogrammes “Food”, “Grocery” et “House” dans la librairie "Système de Design de l'État · Pictogrammes"

Icône

🎉 Ajout des icônes “fr--equal-circle-fill”, “fr--arrow-right-down-circle-fill” et “fr--arrow-right-up-circle-fill” dans la partie “System” de la bibliothèque d’icônes

Style de texte

  • ✨ Évolution des styles de texte des composants : 1) Accordéon, 4) Bouton radio - Case à cocher, 6) Champ de saisie, 7) Interrupteur et 15) Tuile [Bêta]
  • 🎉 Ajout du style de texte du composant 5) Carte
  • 🚫 Suppression des styles de texte 2. Titres de niveaux (H1,H2,H3,H4,H5,H6) de couleur Bleu France

🧩 Composants

Accordéon

  • 🛠️ Changement de l’icône d’ouverture “add-line” par “arrow-down-s-ligne”
  • 🛠️ Changement de l’icône de fermeture “substract-line” par “arrow-up-s-ligne”
  • 🛠️ Ajustement de l’intitulé (label) en graisse medium
  • 🛠️ Changement de couleur de l’intitulé (label) et de l’icône en $text-action-high-blue-france

Bouton radio

  • 🛠️ Correction sur la couleur du contour de l'item (base) Défaut MD et SM en $border-action-high-blue-france
  • 🛠️ Changement de la couleur du fond de l’item (base) en $background-default-grey
  • 🎉 Ajout de l'item (base) en état Erreur MD et SM, avec couleur de contour du radio en $border-plain-error
  • 🎉 Ajout de l'item (base) en état Valide MD et SM, avec couleur de contour du radio en $border-plain-error
  • 🎉 Ajout des items de légende (base) en état Désactivé, Erreur et Valide
  • 🛠️ Correction de l’espacement entre le bouton radio et son label à 8px

Bouton radio riche

  • 🛠️ Correction sur la couleur du pictogramme en disabled-grey sur le bouton en état désactivé
  • 🛠️ Ajustement de la taille de la zone du pictogramme à 56px
  • 🎉 Ajout de l'état “Focus” du composant
  • 🛠️ Correction sur la couleur du contour du radio en $border-action-high-blue-france
  • 🛠️ Changement de la couleur du fond du radio riche en $background-default-grey
  • 🛠️ Changement de la couleur de contour du bouton radio en $border-plain-error lorsqu’il y a une erreur
  • 🛠️ Changement de la couleur de contour du bouton radio en $border-plain-success lorsqu’il y a une succès
  • 🛠️ Correction de l’espacement entre le bouton radio SM et le label à 8px

Carte

✨ Changement de couleur des titres en $text-title-blue-france

Case à cocher

  • 🛠️ Correction sur la couleur du contour de l'item (base) Défaut MD et SM en $border-action-high-blue-france
  • 🛠️ Changement de la couleur du fond de l’item (base) Décoché - Défaut MD et SM en $background-default-grey
  • 🎉 Ajout de l'item (base) en état Erreur MD et SM, avec couleur de contour en $border-plain-error
  • 🎉 Ajout de l'item (base) en état Valide MD et SM, avec couleur de contour en $border-plain-error
  • 🎉 Ajout des items de légende (base) en état Désactivé, Erreur et Valide
  • 🛠️ Correction de l’espacement entre la case à cocher et son label à 8px

Contenu média

  • 🛠️ Bloc de transcription : Changement de l’icône d’ouverture “add-line” par “arrow-down-s-ligne”
  • 🛠️ Bloc de transcription : Changement de l’icône de fermeture “substract-line” par “arrow-up-s-ligne”
  • 🛠️ Bloc de transcription : Ajustement de l’intitulé (label) en graisse médium

Interrupteur

  • ✨ Modification de la nomenclature du composant
  • 🎉 Ajout des états Erreur, Valide
  • 🎉 Ajout des groupes d’interrupteurs
  • 🛠️ Changement de la couleur de fond de l’interrupteur décoché (base) en $background-default-grey
  • 🎉 Ajout des items de légende (base) en état Défaut, Désactivé, Erreur et Valide

Menu latéral

  • 🛠️ Changement de l’icône d’ouverture par “arrow-down-s-ligne”
  • 🛠️ Changement de l’icône de fermeture par “arrow-up-s-ligne”
  • 🛠️ Changement de graisse (bold) sur le titre

Mot de passe

✨ Déplacement depuis le dossier “Champs de saisie” vers un dossier dédié “Mot de passe” à la racine de la liste des composants

Navigation principale

  • 🛠️ Changement de l’icône d’ouverture par “arrow-down-s-ligne”
  • 🛠️ Changement de l’icône de fermeture par “arrow-up-s-ligne”

Pagination

🛠️ Ajustement des espacements entre les boutons à 16px

Sélecteur de langue

  • 🛠️ Changement de l’icône d’ouverture par “arrow-down-s-ligne”
  • 🛠️ Changement de l’icône de fermeture par “arrow-up-s-ligne”

Transcription

  • 🛠️ Changement de l’icône d’ouverture “add-line” par “arrow-down-s-ligne”
  • 🛠️ Changement de l’icône de fermeture “substract-line” par “arrow-up-s-ligne”
  • 🛠️ Ajustement de l’intitulé (label) en graisse médium

[Bêta] Tuile

  • ✨ Changement de couleur des titres en $text-title-blue-france
  • ✨ Possibilité d’afficher un tag au lieu d’un badge

Si vous aviez inséré le composant Tuile dans vos conceptions avant la mise à jour 1.8.0, celui-ci sera toujours disponible et porte le statut [Déprécié] jusqu'à la fin de la phase de transition. Il est conseillé de mettre à jour vos composants Tuile en utilisant la version du dossier [Bêta].

📁 Blocs fonctionnels

🛠️ Ajustement des blocs utilisant les composants mis à jour (voir ci-dessus)

📝 Modèles

🛠️ Ajustement des modèles utilisant les composants et bloc fonctionnels mis à jour (voir ci-dessus)

Librairie Figma, v1.9.0

🎨 Fondamentaux

Pictogramme

🎉 Ajout des pictogrammes “Food”, “Grocery” et “House” dans la librairie

Icône

🎉 Ajout des icônes “fr--equal-circle-fill”, “fr--arrow-right-down-circle-fill” et “fr--arrow-right-up-circle-fill” dans la partie “System” de la bibliothèque d’icônes

Style de texte

🚫 Suppression des styles de texte Titres de niveaux (H1,H2,H3,H4,H5,H6) en couleur Bleu France

🧩 Composants

Accordéon

  • ✨ Changement de l’icône d’ouverture “add-line” par “arrow-down-s-ligne”
  • ✨ Changement de l’icône de fermeture “substract-line” par “arrow-up-s-ligne”
  • ✨ Ajustement de l’intitulé (label) en graisse médium
  • ✨ Changement de couleur de l’intitulé (label) et de l’icône en $text-action-high-blue-france

Formulaire

  • ✨ Séparation des messages de formulaire pour limiter l’usage, les liens devraient être préservés.

Bouton

  • 🎉 Ajout du bouton tertiaire sans contour sur la page du composant

Changements destructifs

• Liens à refaire pour les instances en Focus et les boutons tertiaires avec contour
• Tous les labels seront remplacés par “Label” (pour l’initialisation de la propriété “Label”)
• Tous les Icônes seront remplacés l’icône settings-3-line par défaut (pour permettre l’initialisation de la propriété"Icône")

  • ✨ Remaniement de la classification éléments :
    • Séparation des thèmes clairs et sombres
    • Séparation par type (Primaire, Secondaire, Tertiaire)
    • Séparation par taille (SM, MD, LG)
  • ✨ Les labels sont maintenant des styles de texte
  • ✨ Les changements de taille peuvent maintenant s’effectuer depuis le composant directement
  • ✨ Les propriétés sont initialisés :
    • Icône : [Sans, Droite, Gauche, Seule]
    • État : [Défaut, Survol, Cliqué]
    • Désactivé : Booléen => Défaut = False
    • Focus: Booléen => Non visible par défaut
    • Icône : Instance swap (Si l’icône à des propriétés, celles-ci sont accessible directement)
    • Label : Texte personnalisable
    • Bordure (Bouton tertiaire uniquement) : Booléen => Visible par défaut

• Les propriétés citées se conserveront lors d’un swap de thème, de type ou de taille
• Toutes les instances sont simplifiées (Masquez les calques sans propriétés, ainsi que les détails tels que les remplissages, les effets, l’auto-layout, etc…)

Case à cocher

  • 🛠️ Correction sur la couleur du contour de l'item (base) Défaut MD et SM en $border-action-high-blue-france
  • 🛠️ Changement de la couleur du fond de l’item (base) Décoché - Défaut MD et SM en $background-default-grey
  • 🎉 Ajout de l'état Erreur MD et SM, avec couleur de contour en $border-plain-error
  • 🎉 Ajout de l'état Valide MD et SM, avec couleur de contour en $border-plain-error
  • 🛠️ Correction de l’espacement entre la case à cocher et son label à 8px sur la version SM (maintenant alignée à gauche)

Carte

  • ✨ Changement de couleur des titres en $text-title-blue-france
  • ✨ Remaniement de la classification éléments :
    • Séparation des thèmes clairs et sombres
    • Séparation par type (Horizontale, Verticale)
  • ✨ Si “Action” est actif dans les propriétés, alors le titre passe automatiquement en $title-grey, ce qui donne la possibilité de choisir entre des boutons ou des liens (3 max)
  • ✨ Si “Hauteur Max” est actif dans les propriétés, alors le contenu de la description ne pourra excéder 5 lignes. Si il est inactif, c’est la hauteur et la largeur de la carte qui limite la description
  • ✨ Si “Action” est actif dans les propriétés, alors le titre passe automatiquement en $title-grey, ce qui donne la possibilité de choisir entre des boutons ou des liens (3 max)

Changement de thème

Tout changement de thème peut entraîner des conflits avec les éléments enfant overidés, ceux-ci resteront en thème clair. Exemple : Vous construisez une carte en thème clair, vous changez la description, lorsque la carte est interchangée avec une carte de thème sombre, le texte restera en thème clair.

Préférez donc une construction de la carte en débutant par choisir le bon thème. Si vous décidez néanmoins d’interchanger le thème, il faudra “swap” les composants overidés pour leur version du thème correspondant.

Menu latéral

  • 🛠️ Changement de l’icône d’ouverture par “arrow-down-s-ligne”
  • 🛠️ Changement de l’icône de fermeture par “arrow-up-s-ligne”
  • 🛠️ Changement de graisse (bold) sur le titre

Interrupteur

  • 🎉 Ajout des états Erreur, Valide
  • 🛠️ Changement de la couleur de fond de l’interrupteur décoché (base) en $background-default-grey
  • 🎉 Ajout des items de légende (base) en état Défaut, Désactivé, Erreur et Valide

Retour en haut de page

🎉 Création d’une page dédiée dans la liste des composants

Transcription

  • 🛠️ Changement de l’icône d’ouverture “add-line” par “arrow-down-s-ligne”
  • 🛠️ Changement de l’icône de fermeture “substract-line” par “arrow-up-s-ligne”
  • 🛠️ Ajustement de l’intitulé (label) en graisse médium

Bouton radio

  • 🛠️ Correction sur la couleur du contour de l'item (base) Défaut MD et SM en $border-action-high-blue-france
  • 🛠️ Changement de la couleur du fond de l’item (base) en $background-default-grey
  • 🎉 Ajout de l'item (base) en état Erreur MD et SM, avec couleur de contour du radio en $border-plain-error
  • 🎉 Ajout de l'item (base) en état Valide MD et SM, avec couleur de contour du radio en $border-plain-error
  • 🛠️ Correction de l’espacement entre le bouton radio et son label à 8px

Bouton radio riche

  • 🛠️ Correction sur la couleur du pictogramme en disabled-grey sur le bouton en état désactivé
  • 🛠️ Intégration des pictogrammes sun et moon par défaut
  • 🛠️ Ajustement de la taille de la zone du pictogramme à 56px
  • ✨ Possibilité de choisir le pictogramme directement depuis les propriétés
  • 🛠️ Correction sur la couleur du contour du radio en $border-action-high-blue-france
  • 🛠️ Changement de la couleur du fond du radio riche en $background-default-grey
  • 🛠️ Changement de la couleur de contour du bouton radio en $border-plain-error lorsqu’il y a une erreur
  • 🛠️ Changement de la couleur de contour du bouton radio en $border-plain-success lorsqu’il y a une succès
  • 🛠️ Correction de l’espacement entre le bouton radio SM et le label à 8px
  • 🛠️ L'échange entre thème sombre et clair conservent les overides

Mot de passe

✨ Création d’une page dédiée dans la liste des composants

[Bêta] Tuile

  • ✨ Changement de couleur des titres en $text-title-blue-france
  • ✨ Possibilité d’afficher un tag au lieu d’un badge

📁 Blocs fonctionnels

🛠️ Ajustement des blocs utilisant les composants mis à jour (voir ci-dessus)

📝 Modèles

🛠️ Ajustement des modèles utilisant les composants et bloc fonctionnels mis à jour (voir ci-dessus)

Code, v1.9.3

🎨 Fondamentaux

  • ✨feat(*): nouvelle version interne du changelog #590
    • Outil en ligne de commande pour générer un journal des modifications CHANGELOG.md à partir des balises git et de l'historique des commits. Commande : yarn changelog
  • 🛠️fix(button, theme): retrait de la propriété css “:where” #596
    • Le support de cette propriété CSS est encore trop récent.

Core

  • 🛠️fix(core): La valeur no-wrap n’existe pas dans la spécification CSS #594
    • Correction d’une coquille dans le CSS de core

🧩 Composants

Fil d'Ariane - breadcrumb

  • fix(breadcrumb): ajoute une page exemple alternative #600
    • étiquette d'élément span rendue possible sur l'élément courant du fil d'ariane
    • ajout d'une page d'exemple avec boutons

Modale - Modal

  • 🛠️fix(modal): correction ombre footer modal avec zone d’action #572
    • l’ombre au scroll est remplacée par une bordure plus discrète.

Mot de passe - Password

  • 🐛 fix(password, account): correction capslock et trousseau safari #503
    • Correction erreur js sur le champ password au clic sur le trousseau (safari)
    • Retrait icône native capslock safari
    • Ajout attribut autocapitalize='off' sur les champs password et email pour désactiver la majuscule au début (mobile)
    • Ajout attribut autocorrect sur les champs password et email pour désactiver la correction orthographique

🔌 Analytics

API Analytics 1.9.3

Correctif d’un bug concernant l’absence de valeur pour les component_value des actions de recherches et filtre. Dans certains cas, les valeurs recherchées ou filtrées n’étaient pas collectées dans Eulerian.

  • 🛠️fix(analytics): Corrections diverses du package Analytics #596
    • Ajout de la récupération automatique de la pagination (voir page.md)
    • Correction action dynamique vide
    • Correction envoi data
    • Correction erreur querySelector dans la hiérarchie
    • Revue de la profondeur de la hiérarchie
    • Correction de la version standalone
    • Collection désynchronisée pour attendre l’initialisation
    • Correction du cycle de vie des instances et garbage collection
    • Ajout d’une fonctionnalité d’Opt-in/out (voir opt.md)
    • Ajout d’une page d’exemple en SPA sans framework
    • Ajout de la valeur dans le label au submit (button, input)
    • Ajustements component_value sur chaque composant
  • 📝 doc(analytics): doc analytics en markdown #599
    • Réécriture de la documentation Analytics en markdown : analytics.md

Documentation

  • ✨feat(doc): Réécriture de la documentation Analytics en markdown : analytics.md 

Code, v1.9.2

🎨 Fondamentaux

  • ✨ feat(changelog): ajoute un changelog auto-généré #561

🧩 Composants

🔌 Analytics

API Analytics 1.9.2

· Mise en conformité avec les Single Page App (Angular, React, Vue)
· Ajout d’une propriété is Debugging pour faciliter la recette

  • ✨ feat(analytics): Ajout du support legacy (IE11)
    • Corrections des analytics en version nomodule (polyfill IE11) #588
  • Ajout de la documentation Analytics-1.9.2.pdf
  • 🐛 fix(analytics): correctifs analytics & page test spa #587
    • Amélioration de la qualité des labels envoyés à Eulérian
      • Maximum 50 caractères, couper avec […] au dela
      • Récupère uniquement le premier texte
      • Retrait des espaces en trop
    • Ajout de la propriété isDebugging dans dsfr.analytics permettant d'activer/désactiver le debug Eulerian
    • Mise en conformité avec les SPA (Single-page application - Angular, React, Vue)
    • Ajout d’exemples de SPA (Vue & React)

Documentation

  • Ajout de la documentation Analytics-1.9.2.pdf

Code, v1.9.1

🎨 Fondamentaux

  • 🐛 fix(build): changement des path pour compiler sur windows #580
  • ✨ feat(readme): Mise à jour du readme Github (ajout d’un warning sur la licence et les droits d’utilisations) #559
  • ⬆️ feat(deps): mise à jour des dépendances #553

Core

  • 🐛 fix(core): correction icone lien externe IE #548
  • ✨ feat(core): ajout de paramètres d’url permettant de configurer l’API :
    • ?verbose=true
      permet d’obtenir les logs détaillés
    • ?production=false
      permet d’obtenir les logs de développement même avec une configuration de production

Pictogramme

  • 🎉 feat(artwork): ajout du pictogramme “document-add “ dans la catégorie “document” #571

🧩 Composants

Consent - Gestionnaire de consentement
  • 🐛 fix(consent): Centrage du texte dans le consent placeholder video #573

Footer - Pied de page

  • ✨ feat(footer): évolution des mentions légales #568
    • Nouveau texte : ”Sauf mention explicite de propriété intellectuelle détenue par des tiers, les contenus de ce site sont proposés sous”

Header - En-tête / Navigation - Navigation

  • ✨ feat(header,navigation): fermeture de la navigation au clic sur lien ou bouton #583
    • Tout clic sur un élément <button> ou <a> entraîne la fermeture de la navigation (modale et/ou menu).
    • L'ajout de l'attribut data-fr-prevent-conceal permet de préserver un lien ou un bouton particulier de ce nouveau comportement.

Input - Champ de saisie

  • 🐛 fix(input): correctif input date-picker sur firefox 109+ #585

Modal - Modale

  • 🐛 fix(modal): correctif prise de focus au focus-trap #566

Notice - Bandeau d’information

  • 🐛 fix(notice): Le nom du composant “bandeau d'information“ devient “bandeau d'information importante” #563

Password - Mot de passe

  • 🐛 fix(password): correctif erreur getModifierState #574

Transcription - transcription

  • 🐛 fix(transcription): corrige largeur du bouton a l'ouverture de la modale #565

🔌 Analytics

API Analytics 1.9.1

· Correctif d’un bug générant un double appel du collector Eulerian au chargement de page. Cet incident générait un doublement de certaines pages vues et augmentait la consommation de données Eulerian.
· Modification de la configuration analytics : dsfr.analytics.collection=MANUAL||LOAD|FULL|HASH :
     - Load : Mode par défaut, envoie automatiquement les données de page vue au chargement de la page.
     - Manual : attend l’exécution de la fonction collect() pour envoyer les données de pages. Cela permet de ne pas écraser un marquage de pages vues préexistant en dehors du DSFR.
    - Full : Supporte les « Single-Page Application » en envoyant les données à chaque changement de path dans l’URL
    - Hash : Supporte les « Single-Page Application » en envoyant des données à chaque changement de path dans l’URL, incluant les ancres.
· Mise en place du mode EnableRating, désactivé par défaut. Si ce mode est activé, il permet d’envoyer les impressions de composant (actionin) et ainsi calculer un taux de clic. Attention, l’activation de ce mode implique l’envoi de beaucoup de données à Eulerian, ce qui peut complexifier les analyses.
· Marquage de tous les composants du DSFR.

  • 🐛 fix(build): changement des path pour compiler sur windows #580
  • ✨ feat(readme): Mise à jour du readme Github (ajout d’un warning sur la licence et les droits d’utilisations) #559
  • ⬆️ feat(deps): mise à jour des dépendances #553
  • Ajout d’un atttribut id sur tous les éléments marqués. Les éléments où l'id manque sont recensés en warning dans la console.
  • Ajout de la documentation Analytics-1.9.1.pdf
  • ⚠ Modification de la configuration analytics :
    • dsfr.analytics.mode devient dsfr.analytics.collection et peut maintenant prendre les valeurs MANUAL, LOAD, FULL, HASH (voir doc).
    • ajout du support des SPA activé automatiquement si en mode ANGULAR, REACT ou VUE
    • Ajout de la variable enableRating dans dsfr.analytics.enableRating, permettant d’activer le taux de clic (désactivé par défaut).
  • Tous les composants sont maintenant marqués par défaut, ajout de :
    • Ajout de fichier - File upload
    • Alertes - Alert
    • Badge
    • Bandeau d'information importante
    • Bouton FranceConnect
    • Champ de saisie - Input
    • Citation - Quote
    • Contenu médias - Responsive médias
    • Gestionnaire de consentement - Consent banner
    • Indicateur d'étape
    • Lettre d'information et réseaux sociaux - Newsletter & Follow us
    • Liens d'évitement - Skiplinks
    • Liste déroulante - Select
    • Pagination
    • Sélecteur de langue
    • Tableau - Table
    • Tag
    • Téléchargement de fichier
    • Tuile - Tile
    • Transcription

Code, v1.9.0

🎨 Fondamentaux

Core

  • 🎉 Ajout des valeurs des breakpoints en custom var css
  • 🎉 Ajout de nouveaux tokens de couleur
  • 🛠️ Correction de la taille minimum du soulignement des liens

Pictogramme

  • 🎉 Ajout de 3 nouveaux pictogrammes "Food", "Grocery" et "House"
  • 🛠️ Dépréciation des xlink:href au profit de href

Icône

  • 🎉 Ajout des icônes “fr--equal-circle-fill”, “fr--arrow-right-down-circle-fill” et “fr--arrow-right-up-circle-fill” dans la partie “System”
  • 🛠️ Correction lien externe IE11

Scheme

  • 🛠️ Mode sombre sur la scrollbar
  • 🛠️ Correction html sur le script boot pour omission par IE11
    ajout de l’attribut type="module" sur l'étiquette d'élément script

🧩 Composants

Bouton radio

🛠️ Correction rendu accessibilité

Case à cocher

🛠️ Correction rendu accessibilité

Champs de saisie

  • 🛠️ Correction du curseur sur le textarea
  • 🛠️ Correction icône calendrier

En-tête

  • 🛠️ Correction alignement des liens sans icônes
  • 🛠️ Correction copie du sélecteur de langue sans accès rapide

Interrupteur

🛠️ Correction compatibilité avec vite + svelte

Tuile

🛠️ Correction taille svg

📝 Modèles

Page d'erreurs

🛠️ Retrait du fil d’Ariane

🔌 API

Analytics

🎉 Ajout de l’API de marquage : les fonctionnalités sont détaillées dans le document inclus dans la livraison. Les composants suivants sont automatiquement marqués :

  • "Accordéon" (accordion),
  • "Fil d’Ariane" (breadcrumb),
  • "Bouton" (button),
  • "Mise en avant" (callout),
  • "Carte" (card),
  • "Case à cocher" (checkbox),
  • "Pied de page" (footer),
  • "En-tête" (header),
  • "Mise en exergue" (highlight),
  • "Lien" (link),
  • "Modale" (modal),
  • "Navigation principale" (navigation),
  • "Bouton radio" (radio),
  • "Bouton radio riches" (radio-rich),
  • "Barre de recherche" (search),
  • "Partage" (share),
  • "Menu latéral" (sidemenu),
  • "Sommaire" (summary),
  • "Onglet" (tab),
  • "Interrupteur" (toggle)