UNPKG

@edugouvfr/ngx-dsfr

Version:

NgxDsfr est un portage Angular des éléments d'interface du Système de Design de l'État Français (DSFR).

821 lines (661 loc) 73.8 kB
# @edugouvfr/ngx-dsfr - Changelog ## 1.19.1 (2026-06-11) - fix(doc): descriptions absentes des tableaux API Storybook (régression 1.19.0) - fix(sidemenu): en mode `noAccordion` les catégories doivent être des liens et non des boutons - fix(tabs): l'identifiant de l'onglet n'est pas généré en cas de chaine vide (régression 1.19.0) - fix(table): l'identifiant de la table n'est pas généré en cas de chaine vide (régression 1.19.0) - fix(table): correctif accessibilité, la description du composant ne prévient pas de l'absence de résultat - fix(table): l'icône flêche indiquant l'état plié/déplié du groupe ne se met plus à jour après changement de page ## 1.19.0 (2026-06-02) - break(chore): version minimale requise angular 20 (>= 20.3) - chore: passage en `strictPropertyInitialization` - chore(sidemenu): passage en stratégie `OnPush` - feat(backtotop): ajout d'un `modeButton` pour utiliser un bouton à la place du lien - feat(backtotop): possibilité de modifier l'identifiant cible `targetId` - feat(card/title): nouvelle propriété `descriptionMarkup` permettant de placer la description dans une `<div>` - feat(footer): ajout du slot `presentationTemplate` et de `presentationMarkup` pour personnaliser la présentation - feat(footer): `partnerMainHeadingLevel` permet de configurer le niveau du titre de "Nos partenaires" - feat(pagination): ajout de l'attribut `displayedNumbers` pour afficher la sélection de page sur 5 ou 7 numéros - feat(pagination): ajout des attributs `showPrevAndNextButton` et `showPrevAndNextLabelLg` - feat(sidemenu): ajout de `canDisplay` pour gérer dynamiquement l'affichage des items - feat(sidemenu): ajout de `isVisible` sur `DsfrMenuItem` - feat(sidemenu): possibilité d'utiliser le sidemenu sans éléments d'accordéon avec `noAccordion` - feat(skiplinks): possibilité de spécifier l'identifiant du container `skipLinksId` - feat(table): ajout de `selectionScope` sur `tableOptions` pour limiter la sélection globale à la page active - fix(display): valeur par défaut positionnée sur `system` au lieu de `light` - fix(header): le menu burger mobile est affiché même lorsque le menu est vide - fix(link): correctif accessibilité, l'information `nouvelle fenêtre` est ajoutée en `sr-only` - fix(notice): l'attribut `icon` ne fonctionne pas quand utilisé en même temps que `heading` - fix(range): correctif accessibilité sur le mode double - fix(select): le placeholder ne s'affiche pas sans au moins une option - fix(table): correctif chevauchement colonnes en position fixe en mode `Grid` - fix(table): suppression du rôle `gridcell` ajouté à tort sur les cellules en mode `Grid` - fix(table): le message `emptyResultsMessage` ne prend pas toute la largeur en cas de lignes sélectionnables - fix(table): `emptyResultsMessage` est affiché même en cas de loading ## 1.18.1 (2026-03-26) - fix(button): attribut `aria-hidden` manquant - fix(button): mauvais typage de l'attribut `tabIndex` - fix(header): suppression de l'attribut non pertinent `aria-describedyby` sur le menu en-tête connecté - fix(header): support manquant du type `DsfrLink` sur les liens de catégories du méga menu - fix(input): support manquant de l'attribut `labelSrOnly` du bouton combo - fix(table): style cliquable manquant sur les lignes dépliables de groupe (régression 1.18.0) ## 1.18.0 (2026-03-13) - feat(chore): montée de version DSFR 1.14.4 - feat(footer): possibilité de rédéfinir le niveau de titre des catégories de la liste de liens de rebond - feat(footer): ajout d'un slot `licenseTemplate` pour personnaliser la mention de licence - feat(header): ajout des slots `serviceTitle` et `serviceTagline` - feat(input): ajout de la propriété `ariaDescribedBy` pour permettre une description supplémentaire - feat(pagination): permettre l'affichage du nombre de lignes par page et le total d'éléments comme le footer de la table - feat(sidemenu): ajout d'un slot `labelItemTemplate` pour personnaliser l'affichage du label d'un item de menu - feat(searchbar): ajout d’un input `delay` pour définir un délai avant l’émission de la recherche - feat(searchbar): ajout des inputs `pattern` et `maxLength` pour renseigner les attributs HTML correspondants - fix(chore): `artworkDirPath` est dorénavant optionnel dans la configuration - fix(chore): mise à jour des bordures colorées des messages sévérité - fix(password): correctif accessibilité sur les messages de validation/erreur - fix(summary): erreur en cas de contenu dynamique du titre - fix(table): utilisation incorrecte de aria-sort sur les boutons du heading - fix(table): le passage en mode `selectable` n'est pas dynamique - fix(table): l'attribut `aria-expanded` des lignes pliables des groupes est déplacé au niveau de la première cellule - fix(tile): fallback sur la config globale pour artworkDirPath si non renseignée dans le composant ## 1.17.3 (2026-02-12) - fix(select): le placeholder par défaut n'est jamais visible en cas de groupes d'options - fix(table): navigation avec tabulation impossible sur les éléments repliables après pliage/dépliage ## 1.17.2 (2026-02-03) - fix(download-group): `assessFile` n'est pas pris en compte - fix(download-group): l'évènement `downloadSelect` n'est pas propagé - fix(download-link/link): assainissement des URLs fournies par l’utilisateur - fix(download-link/link): le lien désactivé envoie à tort l'évènement `linkSelect` - fix(download-link): l'évènement `downloadSelect` n'est pas émis en mode `link` ou `routerLink` - fix(select): la mise à jour avec l'input `value` n'est pas prise en compte - fix(tooltip): conflit entre la directive et le composant `tooltip` utilisés au sein d’un même composant ## 1.17.1 (2026-01-21) - doc(stepper): le nombre totale d'étapes doit être compris entre 2 et 8 - feat(stepper): possibilité de spécifier un niveau `p` pour le titre du `stepper` - fix(table): style cliquable appliqué à tort sur les lignes de groupes non dépliables - fix(select): le placeholder n'est pas sélectionné en reactive form lorsque la valeur est `undefined` ## 1.17.0 (2026-01-14) - break(chore): version minimale requise angular 19 (>= 19.2) - feat(card): ajout de la propriété `horizontalProportion` - feat(consent/display): le niveau de titre peut être surchargé par `headingLevel` - feat(content): ajout d'un slot `contentMediaTemplate` - feat(header): ajout des événements `menuDisclose/menuConceal` notifiant l'ouverture/fermeture du menu en affichage mobile - feat(header): ajout d'un slot `searchBarTemplate` permettrant de remplacer le composant barre de recherche par défaut - feat(i18n): possibilité de surcharger les traductions par configuration - feat(link): ajout des propriétés `ariaLabelledBy` et `ariaDescribedBy` - feat(table): gestion de la navigation en role `grid` ou `treegrid` - feat(table): possibilité de grouper des lignes et de les plier/déplier - feat(table): ajout de la propriété `tableHeaderSticky` - feat(table): ajout de `headerSelectedRowCountTemplate` pour personnaliser l'affichage du nombre de lignes sélectionnées - feat(table): gestion de l'état indéterminé de la case à cocher de l'en-tête - fix(card): correctif accessibilité, un `tag` ou un `badge` unique n'est plus dans une liste - fix(card): prise en charge de la propriété `imageRatio` pour les SVG - fix(consent/display/modal): correctif accessibilité, le niveau de titre par défaut est désormais `H2` au lieu de `H1` - fix(content/modal): dépréciation de `size` au profit de `contentSize` et `modalSize` - fix(fieldset): suppression de l'attribut `role='group'` (implicite sur l'élément fieldset) - fix(range): dépréciation de l'attribut `error` au profit de `message` et `messageSeverity` - fix(phone): formatage non appliqué lors d’une mise à jour programmatique de la valeur - fix(phone): correction d’une erreur grammaticale dans le message de validation du format - fix(select): ouverture de la liste d’options non annoncée sous NVDA+Firefox (placeholder désormais toujours visible) - fix(searchbar): ajout d'un label par défaut `Rechercher` pour les lecteurs d'écrans - fix(skiplinks): utilisation systématique de `ul/li` dans le cas d'un lien unique - fix(table): surcharge possible du label du champ de recherche via searchLabel - fix(table): nombre de lignes initial incorrect en cas de surcharge de `rowsPerPageOptions` ## 1.16.5 (2025-12-15) - fix(form): les composants autre que `form-input` ne mettent pas à jour l'état `touched` au `blur` ## 1.15.5 (2025-12-15) - fix(form): les composants autre que `form-input` ne mettent pas à jour l'état `touched` au `blur` ## 1.16.4 (2025-12-01) - fix(header): correctif accessibilité, la balise `<nav>`ne doit pas être présente si aucun menu n'est défini - fix(table): mauvais nombre de lignes sélectionnées en mode serveur après pagination ## 1.16.3 (2025-11-20) - fix(button): l'attribut `aria-pressed` n'autorise pas la valeur `false` - fix(link): `fr-link` ne peut pas être passé en tant que `customClass` - fix(form-select): correctif accessibilité, suppression de `aria-hidden` sur l'option `disabled` - fix(form-tel): mauvaise réinitialisation de l'erreur interne en cas de changement de valeur programmatique - fix(searchbar): en cas de `triggerSearchOnEnter`, `searchSelect` ne doit être émis que lors du submit - fix(searchbar): en cas de `triggerSearchOnEnter`, `searchChange` ne doit pas être émis lors de l’appui sur Entrée - fix(usermenu): le `tools-menu` ne prend pas en compte la taille du footer et du header pour la taille des items - fix(table): permet `thSticky` sans renseigner `fixedHeight` ## 1.16.2 (2025-10-27) - fix(link): l'évènement `linkSelect` est émis en double (régression 1.16.0) ## 1.16.1 (2025-10-13) - fix(address): incompatibilité entre `addressDetails` et le reste de l'adresse traditionnelle (code postal et commune) - fix(email,tel): l'erreur interne de validation ne disparait pas au vidage de l'input, même en mode `required = false` - fix(footer): `DsfrAccessibility` n'est plus exporté - fix(footer): l'output `displayChange` du composant display n'est pas exposé - fix(header): l'output `displayChange` et l'input `triggerSearchOnEnter` des composants internes ne sont pas exposés - fix(header): la propriété `logo.tooltipMessage` n'est pas exploitée lorsque `logo.navigation` est valorisée ## 1.16.0 (2025-10-03) - feat(chore): montée de version DSFR 1.14.2 (rétrogradage des versions minimales de node requises) - feat(footer): ajout nouvelle propriété `DsfrLogo#customClass` permettant notamment de modifier la largeur du logo opérateur - feat(form): il est possible de passer plusieurs messages de description avec l'input `hint` - feat(form-password): support de l'attribut `aria-invalid` - feat(header): dépréciation des inputs `logoLink`, `logoLabel`, `logoTooltipMessage`, `operatorImageAlt`, - feat(input/fieldset): possibilité d'afficher plusieurs messages de même sévérité pour un même `input`/`fieldset` - feat(search-bar): possibilité de soumettre la recherche à l'appui sur la touche Entrée - feat(table): `displayedRows` et `selectedRows` permettent de récupérer les données affichées de la table - feat(table): ajout de la méthode `forceRenderFixedColums` pour forcer un calcul des positions des colonnes fixées - feat(tabnav): ajout du composant de navigation tertiaire `Tabnav` - fix(footer): mise à jour du lien `service-public.fr` en `service-public.gouv.fr`(DSFR 1.14.2) - fix(form-tel/form-email/date): l'erreur interne prend toujours la priorité sur tout autre message - fix(input): attributs aria manquants sur l'input `textarea` - fix(input/select/upload): suppression de la marge supérieure de l'élément de formulaire en cas de `labelSrOnly` - fix(range): ajout de `aria-label` et possibilité de `aria-labelledBy` pour le curseur double - fix(table): `fixedHeight` accepte une valeur en `string` avec une unité autre que px - fix(table): le calcul des positions des en-têtes de colonnes fixées s'effectue désormais après le rendu des cellules - fix(tag): amélioration des labels des tags supprimables et sélectionnables pour l'accessibilité - fix(toggle): `labelPosition` est déprécié, pour l'accessibilité le label doit toujours être positionné à droite - chore(storybook): généralisation de l'onglet "Code panel" sur les stories ## 1.15.4 (2025-09-30) - fix(header): les évènements `linkSelect` ne sont pas propagés (régression 1.15.0) - fix(header): en mobile les évènements de `DsfrToolLinkMenu` et `DsfrUserMenu` ne sont pas dupliqués ## 1.15.3 (2025-09-10) - fix(header): les icônes des `toolsLinks` doivent être positionnées par défaut à gauche - fix(header): la `customClass` n'est pas prise en compte sur les slots des `toolsLinks` - fix(link): l'évènement `linkSelect` est désormais émis même en cas de `routerLink` - fix(sidemenu): le menu n'est pas automatiquement déplié vers le lien actif au rechargement de la page - fix(sidemenu): en mode mobile le menu ne se ferme pas lors d'une navigation en `routerLink` ## 1.15.2 (2025-08-28) - fix(alert): traduction manquante du libellé par défaut pour le title du bouton de fermeture - fix(name): dissociation des propriétés `addFirstName` et `nsoFirstName` - fix(table): décalage d'affichage de la ligne de sélection et cellule fixe en cas de `thSticky` - fix(table): l'évènement `paginationChange` n'est pas émis en cas de changement de taille de page - fix(table): décalage d'un pixel dans certains cas sur l'affichage des colonnes fixées - fix(usermenu): le menu ne se ferme pas au clic sur le texte du lien - chore(storybook): ajout d'un sélecteur de langue dans la toolbar pour toutes les stories ## 1.15.1 (2025-07-29) - fix(alert): prise en compte du niveau d'alerte `valid` - fix(footer): `linkTarget` et `tooltipMessage` manquants sur le modèle `DsfrPartner` - fix(input): l'évènement `blur` n'est pas propagé correctement - fix(input): correctif accessibilité, `role` est déprécié au profit de `inputRole` - fix(logo): l'interface `DsfrLogo` n'est pas exportée - fix(password): ajout de `message`, `messageSeverity` et `required` pour harmonisation avec les autres champs - fix(password): padding incorrect sur la checkbox "Afficher" - fix(segmented-control): l'interface `DsfrSegmentedControl` n'est pas exportée - fix(sidemenu): la `customClass` des links n'est pas appliquée - fix(sidemenu): affichage incorrect entre un lien actif et son icône - fix(tabs): `tabSelect` non émis en cas de sélection au clavier (flèches) - fix(usermenu): mauvais alignement dans le header lors de l'absence d'autres liens d'accès rapides ## 1.15.0 (2025-07-16) - break(chore): version minimale requise angular 18 (>= 18.2) - feat(chore): montée de version DSFR 1.14.0 (version minimale de node >=22.14) - feat(button): ajout de l'input `buttonRole` pour permettre l'ajout d'un rôle sur le bouton natif - feat(button): ajout de l'input `labelSrOnly` pour disposer d'un libellé accessible en cas de bouton avec icone seule - feat(button): ajout des inputs manquants d'accessibilité `aria-*` possibles sur un bouton - feat(date): possibilité d'ajouter plusieurs messages de même sévérité au pattern `date` - feat(fieldset): possibilité d'ajouter plusieurs messages de même sévérité à un `fieldset` - feat(header): ajout du composant en-tête connecté (`DsfrUserMenu`) disponible jusqu'a présent côté extensions - feat(header): ajout du composant `DsfrToolLinkMenu` disponible jusqu'a présent côté extensions - feat(header): dépréciation du slot `headerTools` et `headerToolsMobile` au profit de `toolsLinksTemplate` - feat(table): ajout des différents inputs de la `searchbar` - feat(toggles-group): ajout d'un slot `legend` correspondant à la legend du `fieldset` - feat(toggles-group): ajout des inputs `message` et `messageSeverity` - fix(checkbox, select): ̀l'attribut `aria-describedby` est absent lors de l'affichage de message d'erreur ou validation - fix(chore): dépréciation et remplacement des attributs `size` pour éviter les problèmes d'accessibilité - fix(date): les attributs `message` et `messageSeverity` sont manquants - fix(fieldset): application du style `regular` erronée dans certaines conditions - fix(header): la propriété `searchInputInitialValue` est dépréciée au profit de `searchInputValue` - fix(login): l'output `signSelect` n'est jamais émis - fix(login): le label du champ `password` n'est pas affiché - fix(modal): les boutons d'actions du template footer sont invisibles mais restent cliquables - fix(search-bar): la propriété `initialValue` est dépréciée au profit de `value` - fix(table): incompatibilité entre la sélection des lignes et `thSticky` - fix(table): le select défini par `rowsPerPageOptions` ne peut pas être supprimé - chore: disponibilité des composants en standalone - chore: migration storybook 9 ## 1.14.3 (2025-06-17) - fix(buttons-group): l'état disabled n'empêche pas entièrement le clic sur le bouton correspondant - fix(header): l'espacement des boutons outils est impacté en cas de présence d'un `buttons-group` dans la page - fix(link): l'id n'est pas répercuté sur le lien en mode `button` - fix(link): l'évènement `linkSelect` doit être émis dans tous les cas en mode `button` - fix(link): suppression de l'espace inséré au début de `tooltipMessage` dans le cas d'un lien externe - fix(link): la taille du lien n'est pas appliquée en mode `button` - fix(modal): les inputs `icon`, `top` et `markup` proposés par le DSFR n'existent pas sur le composant ## 1.14.2 (2025-05-19) - fix(date): calcul incorrect de la timezone actuelle - fix(date): impossibilité de donner une date avec une année sur seulement un ou deux digits - fix(date): la validation ne se rejoue pas sur la modification programmatique de la valeur - fix(header): les `toolsLinks` en mobile ne sont pas mis à jour dynamiquement - fix(header): désynchronisation des dropdown de menu suite à modification dynamique du menu - fix(footer): les liens institutionnels devraient être restitués avec les attributs `target` et `rel` - fix(form-email/form-tel): pouvoir passer le label en tant que slot ## 1.14.1 (2025-04-25) - fix(date): le composant s'initialise en état d'erreur si l'input `error` est valorisé avec chaîne vide - fix(table): incompatibilité entre `thSticky` et colonnes en `fixed` ## 1.14.0 (2025-04-18) - feat: montée de version DSFR 1.13.1 - feat(callout): nouvelle propriété `descriptionMarkup` permettant de placer la description dans une `<div>` - feat(date): ajout de l'input `legendRegular` - feat(form): gestion unifiée des messages et sévérité de message sur les composants formulaires - feat(links-group): création du composant groupe de liens `dsfr-links-group` - feat(follow/share): ajout de l'icône Bluesky - feat(form): ajout de l'attribut codePaneloptionnel `aria-invalid` pour la gestion des erreurs sur les champs de formulaire - feat(modal): retour automatique au dernier élément focus à la fermeture de la modale - feat(password): amélioration de l'accessibilité des messages de validation lors de la création de mot de passe - feat(response): ajout de `imagePath` et `imageAlt` - feat(table): ajout des fonctions `goToPage` et `sortTable` sur le service - feat(table): amélioration de l'accessibilité du `label` des boutons de tri - feat(table): possibilité d'avoir plusieurs colonnes consécutives en `fixed`, à droite ou à gauche (`fixedPosition`) - feat(table): ajout de `fixedHeight` et de `thSticky` - fix(button): suppression de la classe CSS `.fr-btn--icon` inutilisée - fix(button): propriété `id` dépréciée au profit de `buttonId` - fix(date): mauvaise gestion de l'offset dû à une mauvaise conversion d'horaire hiver/été - fix(fieldset): propriété `id` dépréciée au profit de `fieldsetId` - fix(header): placement du slot custom `headerTools` dans la balise `tools-links` du header - fix(header): ajout de l'input searchLabel permettant de personnaliser le libellé accessible de la barre de recherche - fix(modal): amélioration accessibilité lors de l'ouverture (attribut `controlMode` déprécié) - fix(table): en mode template utiliser uniquement la colonne en paramètre de `[dsfrColumn]` et non celle de l'input `[columns]` - fix(table): la propriété `labelSrOnly` n'est pas appliquée sur les labels de colonne - fix(toggle-group): propriété `id` dépréciée au profit de `fieldsetId` - fix(select): remplacement de l'attribut `hidden` par `display:none` sur la 1ère option désactivée (bug navigation clavier iOS/macOS) - fix(share-link): propriété `id` dépréciée au profit de `linkId` - doc: intégration JsDoc types et interfaces ## 1.13.6 (2025-04-09) - fix(display): correctif accessibilité, les options ne sont pas navigables au clavier - fix(side-menu): application des liens actifs avec `aria-current` incorrecte ## 1.13.5 (2025-04-04) - fix(modal): outputs `disclose/conceal` émis à tort si un composant enfant émet les même types d'événements (dsfr) ## 1.13.4 (2025-03-19) - fix(accordeon): `expandedChange` peut être émis de manière inappropriée - fix(accordeon): fermeture inattendue d'un accordéon lors d'un usage conjoint avec des systèmes d'onglets - fix(modal): positionnement du `z-index` (99999) désaligné avec le DSFR (1750) - fix(modal): valeur par défaut des boutons d'actions initialisée à `submit` au lieu de `button` - fix(select): suppression de l'attribut redondant `aria-selected` sur les options - fix(table): le nombre d'éléments affichés est restreint à 10 maximum en l'absence de pagination (régression 1.13.3) ## 1.13.3 (2025-03-06) - fix(accordeon): `expandedChange` est parfois désynchronisé des événements `conceal` et `disclose` du script DSFR - fix(input): suppression du pattern ajouté en cas de type `number` - fix(notice): suppression de styles impactant les balises de titre - fix(table): le nombre total d'éléments n'est pas recalculé dynamiquement en l'absence de `pagination` ou `serverSide` ## 1.13.2 (2025-02-13) - fix(chore): suppression dépendance obsolète `uuidv4` - fix(breadcrumb): espaces indésirables sur le dernier élément (page courante) - fix(date): la propriété `disabled` n'est pas transmise au fieldset - fix(header): application de `active` sur l'item parent de menu déroulant en l'absence de `routerLink` ## 1.13.1 (2025-01-31) - fix(badge): mauvaise prise en compte de `size` et `noIcon` en l'absence de `severity` - fix(checkbox): visuel incohérent dans le cas d'une checkbox `disabled` à l'état `indeterminate` - fix(date): ajout d'une précision sur le champ concerné pour l'erreur de valeur non numérique - fix(date): support de l'attribut natif `readonly` - fix(sidemenu): régression le menu ne s'ouvre plus en mode mobile ## 1.13.0 (2025-01-22) - break(chore): version minimale requise angular 17 - feat(chore): montée de version DSFR 1.13.0 - feat(chore/translate): ajout du pipe `DsfrI18n` pour améliorer la gestion de la traduction - feat(button): les buttons sont du type `button` par défaut - feat(buttons-group): ajout de la propriété `groupMarkup` permettant de remplacer le conteneur `<ul>` par une `<div>` - feat(card/tile): possibilité de transformer le markup du lien de download en `button` - feat(checkbox/toggle): ajout de la propriété `labelSrOnly` - feat(header/table): possibilité de donner une valeur initiale à l'input de recherche - feat(header/table): exposition du `placeholder` de l'input de recherche, et du `title` du bouton associé - feat(input/select): ajout du support de la sévérité `warning` pour les messages liés aux inputs - feat(modal): ajout de l'input `concealingBackdrop` permettant de désactiver la fermeture au click sur le fond - feat(modal): ajout du slot `modalFooterTemplate` permettant de fournir les boutons d'action via un template - feat(radio-rich): les pictogrammes sont optionnels - feat(table): ajout de `formatFunction` dans la définition des colonnes - fix(alert): suppression de la balise `<p>` résiduelle si le titre n'est pas présent en version `small` - fix(button): correction de la redondance de la restitution du button avec une liseuse d'écran et de sa documentation - fix(consent): exposition de l'identifiant de la modale `modalId` - fix(consent-banner): correction du style du lien - fix(consent-manager): mise à jour d'une finalité selon l'état de ses sous-finalités - fix(footer): permettre d'utiliser `DsfrNavigation` pour le lien du logo - fix(header): suppression de l'attribut `aria-current` sur le lien du logo avec `routerLink` - fix(pagination): retire `<button>` sur les points de suspension - fix(select): gestion dynamique de l'existence de groupes - fix(table): correction de l'attribut `aria-sort` sur le tri des colonnes ## 1.12.9 (2025-01-03) - fix(download-group): attribut `assessFile` manquant sur l'interface `DsfrDownload` - fix(sidemenu): le titre de rubrique est placé dans une balise `<p>` à la place de `<div>` - fix(sidemenu): ajout de `aria-labelledby` pour référencer le titre depuis le menu si il est renseigné (accessibilité) - fix(table): possibilité d'aligner les boutons d'actions du header à droite - fix(table): mauvaise gestion de l'affichage de la valeur 'N/A' dans la table ## 1.12.8 (2024-12-13) - fix(date pattern): prise en compte des dates avec une timezone négative - fix(header): régression 1.12.7 pas de fermeture du méga-menu au clic sur les liens - fix(header): correction du markup des liens sur les menus déroulants - fix(tile): ajout des breakpoints MD/LG au mode horizontal des tuiles - fix(tile): pouvoir customiser le pictogramme en mode téléchargement ## 1.12.7 (2024-12-10) - fix(header): régression 1.12.6, désactiver la navigation sur les entrées de menu en cas de `routerLink` - fix(header): correction du titre en bleu - fix(form-input): l'attribut natif `readonly` n'est pas répercuté depuis le composant `form-input` - fix(card/tag/tile): correction sur l'utilisation du composant lien en interne (propriété `label` dynamique) - fix(sidemenu): correction de `routerLink` pour les entrées de menu actives - fix(table): en mode serveur, la page courante reste à 0 après plusieurs requêtes si l'une ne donne pas de résultats ## 1.12.6 (2024-11-22) - fix(follow): correction de l'accessibilité des liens `follow-link` - fix(header): correction de `routerLink` pour les entrées de menu actives - fix(tag-groups/toggle-group/button-group): l'insertion des li n'est pas gérée dynamiquement - fix(tile): en version SM, correction des pictogrammes qui étaient tronqués - fix(tile): éléments `<p>` résiduels si les éléments optionnels ne sont pas renseignés ## 1.12.5 (2024-11-08) - fix(tile): régression sur la zone cliquable ## 1.12.4 (2024-10-30) - fix(card): la propriété `routePath` n'est pas prise en compte pour le lien - fix(card): élément `<div>` vide résiduel si tableau de tags|badges non null mais vide - fix(download): réhabilitation du composant `download` pour représenter le lien de téléchargement - fix(fieldset): correction de l'`aria-labelledby` - fix(input): ne pas activer l'attribut spellCheck par défaut - fix(modal): événement `conceal` inattendu au chargement du composant (même fermé) - fix(select/radio): correction accessibilité, l'attribut required ne prend pas de valeur - fix(table): correction de l'application de la sélection au changement de page en mode serveur - fix(table): ajout d'une méthode `setSelectedRows` pour permettre la sélection programmatique des lignes après initialisation - fix(table): désactiver les éléments de pagination à l'affichage d'une table sans résultat ## 1.12.3 (2024-10-10) - fix(form-tel): régression > la validation ne s'exécute plus si un pattern est défini ## 1.12.2 (2024-10-08) - fix(card/tile): régression de la taille des titres cliquables - fix(button): possibilité de définir l'attribut aria-pressed (accessibilité) - fix(buttons-group): effet de bord de la surcharge du CSS pour la modal sur les dsfr-btns-group - fix(form): affichage du conteneur de messages même vide et conditionnement de aria-describedby (accessibilité) - fix(translate): correction documentation, le label de la langue ne doit pas contenir le code - chore(i18n): permettre d'étendre les bundles d'internationalisation (notamment pour les extensions) ## 1.11.9 (2024-10-03) - fix(buttons-group): effet de bord de la surcharge du CSS pour la modal sur les dsfr-btns-group ## 1.12.1 (2024-09-23) - fix(card): régression interprétation du HTML sur l'input `heading` - fix(consent-banner): l'attribut title du lien des "données personnelles et cookies" concatène le label et le target - fix(consent-banner): les boutons radio 'consent-all' partagent désormais le même name (accessibilité) - fix(consent-banner): application de la traduction du lien des données personnelles dans la modale - fix(radio/radio-rich): les boutons radio sont désormais désactivables unitairement - fix(share): application de la traduction du lien des données personnelles - fix(stepper): impossible de changer le niveau de titre - fix(tile): régression projection du slot `heading` ## 1.11.8 (2024-09-23) - fix(stepper): impossible de changer le niveau de titre ## 1.12.0 (2024-09-13) - feat: montée de version DSFR 1.12.1 - feat(alert): ajout du slot `message` - feat(card/tile): gestion de la classe `enlargeButton` - feat(card): propriété `enlargeLink=true` par défaut - feat(cursor): ajout de la propriété `step` - feat(header): permettre d'utiliser un type `DsfrNavigation` sur le lien du logo - feat(i18n): possibilité d'ajouter un fichier de traduction de la librairie - feat(input/select/password/upload): ajout de la propriété `labelSrOnly` - feat(notice): évolutions suivant le DSFR 1.12 avec ajout des variations - feat(radio): ajout de la propriété `legendSrOnly` - feat(tab): ajout de la propriété `disabled` - feat(table): nouveau composant de tableau avec pagination, sélection et tri - feat(toggle): ajout des messages d'erreur et de validation - fix(backtotop): l'ancrage fonctionne correctement - fix(card/tile): `linkTarget` n'est pas utilisé dans le téléchargement - fix(content): structure html modifiée pour respecter le DSFR - fix(footer): changement d'ordre des liens institutionnels et ajout de l'attribut `title` - fix(form): bloc message affiché seulement si il y a un message de renseigné - fix(range): correctif accessibilité, le labelled-by de l'input ne pointait vers aucun label - fix(tag): correctif accessibilité, en mode cliquable, le `disabled` est correctement propagé aux enfants du tag ## 1.11.7 (2024-09-11) - fix(consent-banner): le texte du lien de la bannière de consentement se met bien à jour au changement de langage - fix(footer): ajout de traductions manquante - fix(header): slot `headerTools` et `headerToolsMobile` documentation manquante et régression mode mobile - fix(modal): en mode mobile, les boutons d'actions ne prennent pas toute la largeur - fix(stepper): ajout de traductions manquantes ## 1.11.6 (2024-08-21) - fix(header): correction de la fonctionnalité translate du menu en mode mobile - fix(header): générer un identifiant unique pour la navigation `navigationId` et possibilité de le redéfinir - fix(footer): coquille dans la traduction de "nos partenaires" - fix(form-tel): formatage inattendu si le _pattern_ est spécifié ## 1.11.5 (2024-07-25) - fix(link/card/tile/content/tag): fix accessibilité (navigation clavier), dépréciation de `routerLink` au profit de `routePath` ## 1.11.4 (2024-07-15) - fix(segmented-control): correction des labels qui n'étaient pas pris en compte ## 1.11.3 (2024-07-08) - fix(alert): problème d'internationalisation sur l'input `heading` - fix(alert): la projection de contenu par défaut (titre) ne fonctionne pas ## 1.11.2 (2024-06-14) - fix(address): correction syntaxe ngModel non compatible Angular 18 - fix(input): régression affichage du label en tant que slot - fix(name): correction syntaxe ngModel non compatible Angular 18 - fix(tabs): (avec routes) désélection de l'onglet si navigation vers une sous-route dans l'onglet - fix(tabs): ajout propriété manquante `routerLinkActiveOptions` sur interface `DsfrTabRoute` ## 1.11.1 (2024-06-03) - fix(radio, radio-rich): navigation clavier non conforme (attribut name non répercuté sur les boutons radios) ## 1.10.4 (2024-06-03) - fix(radio, radio-rich): navigation clavier non conforme (attribut name non répercuté sur les boutons radios) ## 1.9.9 (2024-06-03) - fix(radio, radio-rich): navigation clavier non conforme (attribut name non répercuté sur les boutons radios) ## 1.11.0 (2024-05-31) - break(chore): version minimale requise angular 16 - feat(input): événement `patternValueChange` si un `pattern` est défini et que la valeur change - feat(input): niveau de message : `info`, `error` ou `valid` - feat(skiplinks): ajout `DsfrAnchorLink#route` & ajout de l'output `linkSelect` - feat(tag): possibilité de rédéfinir l'attribut `ariaLabel` - fix(badge): si `severity` n'est pas renseignée, autoriser de passer une classe sytème avec `customClass` - fix(checkbox): correctif accessiblité état indéterminé de la checkbox - fix(footer): changement de l'url gouvernement.fr en info.gouv.fr - fix(input): `placeHolder` déprécié en faveur de `placeholder` - fix(input): la valeur `ariaExpanded` à false n'est pas valorisée - fix(pagination): correctif accesibilité remplacement des `<a>` par des `<button>` - fix(pagination): correctif accessibilité, ajout de la propriété `ariaLabel` pour contextualiser la pagination - doc(input): commentaires sur les propriétés d'accessibilité revus - chore: export des mixins sass - chore: migration storybook 8 ## 1.10.3 (2024-05-07) - fix(date): report adapté du hotfix 1.9.8 relatif à la mauvaise gestion du required ## 1.9.8 (2024-05-07) - fix(date): `required` non géré correctement ## 1.10.2 (2024-04-02) - fix(alert): composant hôte non supprimé du DOM à la fermeture de l'alerte - fix(alert): absence de notification à la fermeture (ajout output `conceal`) - fix: intégration des correctifs 1.9.6 et 1.9.7 ## 1.9.7 (2024-03-29) - fix(header): `tooltipMessage` non traité sur les liens en mode 'button' des `headerToolsLinks` ## 1.9.6 (2024-03-28) - fix(upload): pilotage via ReactiveForm incomplet (`setValue` et `reset` impossibles) - fix(upload): impossible de ré-initialiser le champ après une sélection (ajout d'une fonction reset) ## 1.10.1 (2024-03-22) - fix: mauvaise version de la dépendance `@gouvfr/dsfr` dans le package.json (1.11.0 au lieu de 1.11.2) ## 1.10.0 (2024-03-19) - feat: montée de version DSFR 1.11.2 - feat(accordions-group): ajout de la propriété `ungroup` - feat(date): accepte une date ISO courte telle que `2024-08-31` - feat(segmented-control): ajout du composant `dsfr-segmented-control` - feat(range): ajout du composant `dsfr-range` - fix(accordions-group): retrait des ul li - fix(card/tile): la hauteur du contenu du composant est forcée à la hauteur de son conteneur - fix(date): les erreurs internes n'invalident pas le form parent - fix(header): traductions manquantes sur boutons 'Fermer' - fix(header): affichage lien rubrique mega-menu - fix(select): fix accessibilité, ajout attribut `aria-selected` sur les options ## 1.9.5 (2024-03-15) - fix(breadcrumb): régression sur la prise en charge de `routerLinkActiveOptions` (depuis 1.9.0) - fix(radio): il manque les attributs disabled natifs sur les inputs radio lorsque le composant est désactivé - fix(tabs): en mode 'routes' la navigation clavier n'est pas opérante ## 1.9.4 (2024-02-27) - fix(tabs): dysfonctionnements du mode 'routes' en contexte dynamique et asynchrone (cf. doc storybook pour les impacts) ## 1.9.3 (2024-02-06) - fix(modal): ajout des propriétés `disabled`, `type` et `tooltipMessage` sur les boutons d'actions ## 1.9.2 (2024-01-31) - fix: le contrôle sur le nom des classes CSS RemixIcon empêche l'intégration d'icônes custom. (`DsfrIcon` déprécié, utiliser un `string`) - fix(card/tile): l'attribut `downloadDirect` positionné à `false` empêche l'affichage du téléchargement - fix(select): erreur à l'initialisation du select si la liste d'options est `undefined` - fix(tile): la valeur de l'attribut `downloadDirect` n'est pas valorisée ## 1.8.3 (2024-01-31) - fix(buttons-group): ne pas déclencher l'évènement click lors du clic légèrement à côté d'un bouton `disabled` - fix(select): problème de performance lors de l'affichage d'un grand nombre d'options sur Firefox - fix(select): suppression de la conversion automatique des values en string ## 1.9.1 (2024-01-23) - feat(follow/share): ajout de la constante `twitter-x` qui remplace la constante `twitter` - fix(table): nullInjectorError: no provider for KeyValuePipe ## 1.9.0 (2024-01-22) - feat: permettre de configurer globalement la propriété `artworkDirPath` - feat(alert): nouvel input `ariaRoleValue` permettant de positionner un rôle `status` plutôt que `alert` - feat(badge): un libellé trop long de badge est coupé par `...` s'il dépasse la largeur du conteneur - feat(display): ajout de l'output `displayChange` sur changement de mode - feat(display): dépréciation de `pictoPath` en faveur de `artworkDirPath` - feat(footer): dépréciation de `pictoPath` en faveur de `artworkDirPath` - feat(header): dépréciation de `pictoPath` en faveur de `artworkDirPath` - feat(header): possibilité de rendre les catégories du mega-menu non-cliquables - feat(response): dépréciation de `pictoPath` en faveur de `artworkDirPath` - feat(select): ajout de la propriété `compareWith` pour utiliser des objets comme valeurs des options - feat(summary): possibilité d'avoir des sous-niveaux - feat(summary): implémentation de `routerLink` - feat(table): permettre de conserver l'ordre initial des colonnes - feat(tabs): possibilité d'utiliser `router-outlet` - feat(toggles-group): les toggles sont placés dans un fieldset - feat(upload): ajout de la propriété `accept`, filtre pour les types de fichiers acceptés - fix(badges-group): la taille d'un groupe de badges doit être définie au niveau du groupe - fix(buttons-group): ne pas déclencher l'évènement click lors du clic légèrement à côté d'un bouton `disabled` - fix(consent): i18n libellé erroné - fix(header): la propriété `customClass` des items d'accès rapide n'est pas prise en compte - fix(header): mauvais alignement vertical des liens rapides si utilisation de `display=true` - fix(input): erreur js si usage dans une modale - fix(select): suppression de la conversion automatique des values en string - fix(select): problème de performance lors de l'affichage d'un grand nombre d'options sur Firefox - fix(select): libellé `optgroup` tronqué sur Firefox - fix(tile): dépréciation de `detail` en faveur de `detailBottom` pour homogénéiser avec la carte - doc(card/tile): correction documentation detail carte et tuile de téléchargement - doc(display): fix les modales non visibles dans la doc de Storybook ## 1.8.2 (2023-12-21) - fix(select): retour arrière sur les modifications effectuées en 1.8.0 (désélection possible si champ non required) ## 1.8.1 (2023-12-18) - fix(tabs): ExpressionChangedAfterItHasBeenCheckedError ## 1.8.0 (2023-12-12) - feat(consent-banner): implémentation de `routerLink` - feat(modal): ajout output `disclose` permettant de se mettre à l'écoute de l'ouverture de la modale - feat(modal): ajout input `controlMode` afin de pallier l'absence de bouton d'ouverture - feat(select): si le champ n'est pas requis, le placeholder à nouveau disponible - fix(accordion): la propriété `expanded` peut se désynchroniser de l'état réel du DOM (intéraction script DSFR) - fix(consent-banner): `heading` remplace `title` (déprécié) - fix(consent-banner): `rgpdLink` remplace `rgpdUrl` (déprécié) - fix(download): utiliser les options régionales pour l'affichage du détail - fix(header): désynchronisation des tools links du menu mobile lors d'une mise à jour dynamique - fix(header): erreurs 404 à l'initialisation du composant si le `display` n'est pas utilisé - fix(header/searchbar): fix accessibilité searchbar (attribut aria-describedby) - fix(input): suppression de l'attribut `aria-labelledby` redondant avec le label - fix(modal): suppression du `role="dialog"` sur la balise `dialog` - fix(tile): gestion de l'attribut `aria-label` sur la tuile cliquable. - fix(DsfrHeadingLevel): `NONE` est déprécié au profit de `undefined` - fix(DfsrLink): `target` est déprécié au profit de `linkTarget` - chore: compatible `"strictNullChecks": true` - chore: migration Angular 15 - doc: amélioration documentation Storybook, visibilité des propriétés dépréciées ## 1.7.1 (2023-11-13) - fix(modal): affichage intempestif de la modale lorsqu'elle est embarquée dans un formulaire ## 1.7.0 (2023-11-13) - feat(content): ajout de l'événement `linkSelect` - feat(date): ajout de la propriété `resetOnNull` (réinitialise le composant si le modèle est valorisé à `null`) - feat(date): ajout de la propriété `autocomplete` permettant de conditionner l'usage de l'autocomplétion - feat(DsfrLink): ajout des propriétés `ariaLabel`, `ariaControls` et `mode` - feat(DsfrNavigation): ajout de la propriété `routerLinkActiveOptions` - feat(follow): ajout des propriétés `emailError` et `registered` - feat(footer): ajout de l'évènement `mandatoryLinkSelect` - feat(header): possibilité d'utiliser des boutons dans le lien du header - feat(tabs): ajout de la propriété `fullViewport`, 100% largeur du viewport en mobile si vrai - feat(tooltip): nouvelle directive - feat(tooltip-button): nouveau composant - fix(content): `tooltipMessage` est aussi utilisé pour les images - fix(date): un message d'erreur est affiché à l'initialisation si le modèle est null - fix(date): la propriété `id` est dépréciée car elle n'est plus utilisée - fix(date): la date retournée par le composant ne devrait pas tenir compte du fuseau horaire courant - fix(header): langue courante de l'interface `translate` non optionnelle - fix(modal): perte du focus sur le bouton à la fermeture de la modale (dans le header) - fix(pagination): moins de pages affichée, 1 seule ligne en mode mobile - fix(pagination): le composant `pagination` remplace `previous-page` (déprécié) - fix(pagination): l'événement `pageSelect` remplace `pageSelectEvent` (déprécié) - fix(pagination): l'événement `backSelect` remplace `backEvent` (déprécié) - fix(tab): ajout de la classe `fr-tabs__panel--selected` - fix(tabs): la modification dynamique de l'input `selectedTabIndex` est sans effet - fix(tabs): valeur de `tabindex` inversée - fix(i18n): traductions manquantes - doc(checkbox): ajout de la story _'Reactive Form'_ - doc(content): stories images et vidéos dans le même fichier - chore: la version minimale requise de NodeJS est 18.18.2 (npm 9.8.1) - chore: suppression du type `ID`, alias du type `string` - chore(storybook): migration 7.5.1 ## 1.6.2 (2023-10-25) - fix(date): les erreurs de validation internes du composant n'affectent pas le statut du FormControl - fix(modal): la modale ne peut être fermée manuellement après une ouverture programmatique (régression DSFR 1.10) ## 1.6.1 (2023-10-24) - fix(card|tile): pas d'événement émis en mode download + route - fix(download): passe en mode carte si lien non renseigné - fix(modal): la méthode `open()` ne fonctionne plus si aucun bouton n'est lié à la modale (régression DSFR 1.10) - fix(modal): `aria-labelledby` référence un identifiant `undefined` - fix(tag): les changements sur l'input `selected` ne sont pas pris en compte ## 1.6.0 (2023-10-10) - feat(content): implémentation de `routerLink` - feat(content): ajout de la propriété `transcriptionHeading` - feat(content): ajout d'un slot `transcription` pour insérer le composant de transcription - feat(form-email): par défaut `autocomplete="email"`, `autocorrect="false"` - feat(form-input): ajout de la propriété `autoCorrect` - feat(form-password): ajout de la propriété `autocomplete="current-password"` par défaut - feat(form-radio-rich): ajout du support des pictogrammes - feat(link): ajout de la propriété `linkId` - feat(login): nouveau modèle de page - fix(buttons): type `button` par défaut, sauf exception, pour tous les boutons des composants - fix(card/tile): permettre la gestion programmatique du download (via input route) - fix(content): le slot pour les images svg est nommé `svg`, le slot par défaut est déprécié - fix(content): `linkLabel` remplace `transcriptionLabel` (déprécié) - fix(content): `transcriptionContent` remplace `transcription` (déprécié) - fix(display): erreurs 404 au primo-chargement des icônes - fix(form-checkbox): la `div` messages devrait toujours être présente - fix(form-password): `aria-describedby` présent même en l'absence de message - fix(form-password): `undefined` dans les `id` - fix(form-password): quelques messages non traduits - fix(franceconnect): pas de traduction 'en' - fix(transcription): traduction du bouton 'Fermer' - fix(response): `DsfrPageResponseModule` est déprécié en faveur de `DsfrResponseModule` - fix(response): `DsfrPageResponseComponent` est déprécié en faveur de `DsfrResponseComponent` - fix(response): le sélecteur `dsfr-page-response` est déprécié en faveur de `dsfr-response` - fix(tag): erreur TS2416 si `strictNullChecks` est activé côté client - fix(tag): l'attribut `id` est présent avec pour valeur 'null' lorsque la propriété n'est pas renseignée - chore(storybook): migration 7.4.5 ## 1.5.0 (2023-10-02) - feat: montée de version DSFR 1.10.1 - feat(card): ajout de la version carte de téléchargement (DSFR 1.10) - feat(card): ajout de la propriété `externalLink` - feat(card): ajout de la propriété `disabled` - feat(form-checkbox): ajout de `aria-checked` - feat(form-input): ajout de la propriété `inputWrapMode` - feat(link): ajout de la propriété `disabled` - feat(link): `linkTarget` remplace `targetLink` (déprécié) - feat(modal): ajout de la propriété `headingLevel` - feat(patterns/name): ajout de l'évènement `deleteFirstNameSelect`. - feat(tag): implémentation de routerLink (pour un mode `clickable`) - fix(card): la classe du lien ne doit pas contenir `fr-link` - feat(tile): ajout de la version tuile de téléchargement (DSFR 1.10) - feat(tile): nouvelle version de la tuile (DSFR 1.10) - feat(tile): ajout de la propriété `disabled` - fix(date): disparition des erreurs affichées (#390) - fix(download): composant `dsfr-download` déprécié au profit des propriétés `download` de la `dsfr-tile` et de la `dsfr-card` - fix(form): sur les composants de formulaire, dépréciation de l'input `id` en faveur de `inputId` (évite la collision avec l'attribut natif) - fix(form-checkbox): valorisation de `aria-controls` - fix(form-input): focus sur tags et non sur input - fix(header): ajout de l'évènement linkSelect sur les liens du menu mobile en cas d'utilisation de l'attribut route - fix(header): affichage d'un lien désactivé dans les menus en l'absence de route, routerLink et link (pas de href) - fix(patterns/date): préfixe des attributs id, dépréciation de l'attribut name et suppression du label - fix(tabs): entêtes non réactives aux modifications dynamiques - fix(tag): ajout de l'attribut tagId et dépréciation de id pour éviter la collision avec l'attribut natif - fix(tag): la classe du lien (tag cliquable) ne doit pas contenir `fr-link` - fix(tag): les boutons des modes `deletable` et `selectable` ne doivent pas être de type `submit` - fix(tile): la classe du lien ne doit pas contenir `fr-link` - fix(translate): soumission d'un formulaire inattendu ## 1.4.0 (2023-09-06) - feat(card): implémentation de routerLink - feat(checkbox): ajout de la propriété `indeterminate` - feat(checkbox): ajout de stories pour les groupes de checkbox - feat(password): implémentation de routerLink pour le recovery - feat(input): nouvelles propriétés pour l'accessibilité - feat(tag): un événement de type `DsfrTagEvent` est émis lors de la sélection si l'input `id` est renseigné - fix(upload): le nouveau sélecteur est `dsfr-form-upload`, `dsfr-upload` est déprécié - fix(card): ajout de la class `fr-card__title` sur la gestion des niveaux de titre - fix(card): niveau de titre obligatoire, `h3` par défaut - fix(card): la carte ne doit pas émettre d'événement autre que sur sélection d'un lien (d'une `route`) - fix(checkbox): ne pas positionner l'attribut aria-describedby s'il n'y a pas de message - fix(LinkTarget): dépréciation de `DsrfTargetLink` au profit de `DsfrLinkTarget` - fix(upload): utilisation dans un formulaire ## 1.3.2 (2023-09-04) - feat(tag): ajout d'un id (optionnel) pour un tag - fix(form): prise en compte de l'attribut `disabled` lors de l'utilisation des reactive form pour tous les composants concernés - fix(link/menu): gestion de l'attribut `aria-current` par routerLink lorsque cette directive est utilisée - fix(tag): mise à jour de la propriété `selected` ## 1.3.1 (2023-08-29) - fix(header): les icônes des liens rapides ne s'affichent pas - fix(radio): avec plusieurs groupes de radios, la sélection sur un groupe se répercute sur tous les autres groupes - fix(radio-rich): avec plusieurs groupes de radios, la sélection sur un groupe se répercute sur tous les autres groupes - fix(input): ne pas positionner l'attribut aria-describedby s'il n'y a pas de message ## 1.3.0 (2023-06-22) - feat(button): ajout des propriétés `id`, `customClass` - feat(email): nouveau composant `dfsr-form-email` - feat(fieldset): les 2 sélecteurs `dsfr-fieldset` et `dsfr-form-fieldset` peuvent être utilisés - fea