{"version":3,"file":"edugouvfr-ngx-dsfr.mjs","sources":["../../../projects/ngx-dsfr-components/src/lib/shared/utils/dom-utils.ts","../../../projects/ngx-dsfr-components/src/lib/components/download/dsfr-mime.type.ts","../../../projects/ngx-dsfr-components/src/lib/shared/utils/file-utils.ts","../../../projects/ngx-dsfr-components/src/lib/shared/utils/json-utils.ts","../../../projects/ngx-dsfr-components/src/lib/shared/utils/ssr-utils.ts","../../../projects/ngx-dsfr-components/src/lib/shared/utils/local-storage.ts","../../../projects/ngx-dsfr-components/src/lib/shared/utils/storage-enum.ts","../../../projects/ngx-dsfr-components/src/lib/shared/utils/string-utils.ts","../../../projects/ngx-dsfr-components/src/lib/shared/utils/uuid-utils.ts","../../../projects/ngx-dsfr-components/src/lib/shared/components/default-value-accessor.component.ts","../../../projects/ngx-dsfr-components/src/lib/shared/components/default-control.component.ts","../../../projects/ngx-dsfr-components/src/lib/shared/components/heading/heading.component.ts","../../../projects/ngx-dsfr-components/src/lib/shared/components/heading/heading.component.html","../../../projects/ngx-dsfr-components/src/lib/shared/components/heading/heading.module.ts","../../../projects/ngx-dsfr-components/src/lib/shared/models/heading-level.ts","../../../projects/ngx-dsfr-components/src/lib/shared/models/position.ts","../../../projects/ngx-dsfr-components/src/lib/shared/models/severity.ts","../../../projects/ngx-dsfr-components/src/lib/shared/models/size.ts","../../../projects/ngx-dsfr-components/src/lib/shared/models/text-size.ts","../../../projects/ngx-dsfr-components/src/lib/shared/models/button.model.ts","../../../projects/ngx-dsfr-components/src/lib/shared/models/link-target.model.ts","../../../projects/ngx-dsfr-components/src/lib/shared/models/index.ts","../../../projects/ngx-dsfr-components/src/lib/shared/components/link-download/link-download.component.ts","../../../projects/ngx-dsfr-components/src/lib/shared/components/link-download/link-download.component.html","../../../projects/ngx-dsfr-components/src/lib/shared/components/input-group/input-group.component.ts","../../../projects/ngx-dsfr-components/src/lib/shared/components/input-group/input-group.component.html","../../../projects/ngx-dsfr-components/src/lib/shared/components/pictogram/pictogram.component.ts","../../../projects/ngx-dsfr-components/src/lib/shared/components/pictogram/pictogram.component.html","../../../projects/ngx-dsfr-components/src/lib/shared/components/pictogram/pictogram.module.ts","../../../projects/ngx-dsfr-components/src/lib/shared/components/svg-icon/svg-icon.component.ts","../../../projects/ngx-dsfr-components/src/lib/shared/components/svg-icon/svg-icon.module.ts","../../../projects/ngx-dsfr-components/src/lib/shared/config/config-token.ts","../../../projects/ngx-dsfr-components/src/lib/shared/config/config.module.ts","../../../projects/ngx-dsfr-components/src/lib/shared/directives/watch-attr.directive.ts","../../../projects/ngx-dsfr-components/src/lib/shared/properties/messages.en.ts","../../../projects/ngx-dsfr-components/src/lib/shared/properties/messages.fr.ts","../../../projects/ngx-dsfr-components/src/lib/shared/services/config.service.ts","../../../projects/ngx-dsfr-components/src/lib/shared/services/logger.service.ts","../../../projects/ngx-dsfr-components/src/lib/shared/services/lang.service.ts","../../../projects/ngx-dsfr-components/src/lib/shared/services/base-i18n.service.ts","../../../projects/ngx-dsfr-components/src/lib/shared/services/i18n.service.ts","../../../projects/ngx-dsfr-components/src/lib/components/accordion/accordion.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/accordion/accordion.component.html","../../../projects/ngx-dsfr-components/src/lib/components/accordion/accordion.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/accordions-group/accordions-group.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/accordions-group/accordions-group.component.html","../../../projects/ngx-dsfr-components/src/lib/components/accordions-group/accordions-group.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/alert/alert.size.ts","../../../projects/ngx-dsfr-components/src/lib/components/alert/alert.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/alert/alert.component.html","../../../projects/ngx-dsfr-components/src/lib/components/alert/alert.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/backtotop/backtotop.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/backtotop/backtotop.component.html","../../../projects/ngx-dsfr-components/src/lib/components/backtotop/backtotop.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/badge/badge.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/badge/badge.component.html","../../../projects/ngx-dsfr-components/src/lib/components/badge/badge.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/badge/badges.model.ts","../../../projects/ngx-dsfr-components/src/lib/components/badges-group/badges-group.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/badges-group/badges-group.component.html","../../../projects/ngx-dsfr-components/src/lib/components/badges-group/badges-group.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/link/link.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/link/link.component.html","../../../projects/ngx-dsfr-components/src/lib/components/link/item-link.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/breadcrumb/breadcrumb.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/breadcrumb/breadcrumb.component.html","../../../projects/ngx-dsfr-components/src/lib/components/breadcrumb/breadcrumb.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/button/button.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/button/button.component.html","../../../projects/ngx-dsfr-components/src/lib/components/button/button.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/buttons-group/buttons-group.model.ts","../../../projects/ngx-dsfr-components/src/lib/components/buttons-group/buttons-group.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/buttons-group/buttons-group.component.html","../../../projects/ngx-dsfr-components/src/lib/components/buttons-group/buttons-group.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/callout/callout.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/callout/callout.component.html","../../../projects/ngx-dsfr-components/src/lib/components/callout/callout.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/link/link.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/tag/tag.model.ts","../../../projects/ngx-dsfr-components/src/lib/components/tag/tag.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/tag/tag.component.html","../../../projects/ngx-dsfr-components/src/lib/components/tag/tag.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/tags-group/tags-group.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/tags-group/tags-group.component.html","../../../projects/ngx-dsfr-components/src/lib/components/tags-group/tags-group.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/card/base-panel.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/card/base-panel.model.ts","../../../projects/ngx-dsfr-components/src/lib/components/card/card.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/card/card.component.html","../../../projects/ngx-dsfr-components/src/lib/components/card/card.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/card/card.model.ts","../../../projects/ngx-dsfr-components/src/lib/components/consent-banner/consent-manager/consent-service/consent-service.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/consent-banner/consent-manager/consent-service/consent-service.component.html","../../../projects/ngx-dsfr-components/src/lib/components/consent-banner/consent-manager/consent-manager.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/consent-banner/consent-manager/consent-manager.component.html","../../../projects/ngx-dsfr-components/src/lib/components/consent-banner/consent-banner.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/consent-banner/consent-banner.component.html","../../../projects/ngx-dsfr-components/src/lib/components/consent-banner/consent-manager/consent-manager.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/consent-banner/consent-banner.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/transcription/transcription.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/transcription/transcription.component.html","../../../projects/ngx-dsfr-components/src/lib/components/content/content.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/content/content.component.html","../../../projects/ngx-dsfr-components/src/lib/components/content/content.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/content/media.ts","../../../projects/ngx-dsfr-components/src/lib/components/display/display.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/display/display.component.html","../../../projects/ngx-dsfr-components/src/lib/components/display/display.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/download/download-variant.ts","../../../projects/ngx-dsfr-components/src/lib/components/download/download.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/download/download.component.html","../../../projects/ngx-dsfr-components/src/lib/components/download/download.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/downloads-group/downloads-group.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/downloads-group/downloads-group.component.html","../../../projects/ngx-dsfr-components/src/lib/components/downloads-group/downloads-group.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/footer/footer.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/footer/footer.component.html","../../../projects/ngx-dsfr-components/src/lib/components/footer/footer.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/franceconnect/franceconnect.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/franceconnect/franceconnect.component.html","../../../projects/ngx-dsfr-components/src/lib/components/search-bar/search-bar.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/search-bar/search-bar.component.html","../../../projects/ngx-dsfr-components/src/lib/components/search-bar/search-bar.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/translate/translate.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/translate/translate.component.html","../../../projects/ngx-dsfr-components/src/lib/components/translate/translate.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/header/mega-menu/mega-menu.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/header/mega-menu/mega-menu.component.html","../../../projects/ngx-dsfr-components/src/lib/components/header/header.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/header/header.component.html","../../../projects/ngx-dsfr-components/src/lib/components/header/header.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/highlight/highlight.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/highlight/highlight.component.html","../../../projects/ngx-dsfr-components/src/lib/components/highlight/highlight.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/logo/logo.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/logo/logo.component.html","../../../projects/ngx-dsfr-components/src/lib/components/logo/logo.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/modal/modal.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/modal/modal.component.html","../../../projects/ngx-dsfr-components/src/lib/components/modal/modal.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/notice/notice.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/notice/notice.component.html","../../../projects/ngx-dsfr-components/src/lib/components/notice/notice.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/pagination/page-link.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/pagination/page-link.component.html","../../../projects/ngx-dsfr-components/src/lib/components/pagination/pagination-calc.ts","../../../projects/ngx-dsfr-components/src/lib/components/pagination/pagination.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/pagination/pagination.component.html","../../../projects/ngx-dsfr-components/src/lib/components/pagination/previous-page/previous-page.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/pagination/previous-page/previous-page.component.html","../../../projects/ngx-dsfr-components/src/lib/components/pagination/pagination.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/quote/quote.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/quote/quote.component.html","../../../projects/ngx-dsfr-components/src/lib/components/quote/quote.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/range/range.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/range/range.component.html","../../../projects/ngx-dsfr-components/src/lib/components/segmented-control/segmented-control.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/segmented-control/segmented-control.component.html","../../../projects/ngx-dsfr-components/src/lib/components/segmented-control/segmented-control.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/share/share.model.ts","../../../projects/ngx-dsfr-components/src/lib/components/share/share-link/share-link.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/share/share-link/share-link.component.html","../../../projects/ngx-dsfr-components/src/lib/components/share/share.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/share/share.component.html","../../../projects/ngx-dsfr-components/src/lib/components/share/share.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/sidemenu/sidemenu.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/sidemenu/sidemenu.component.html","../../../projects/ngx-dsfr-components/src/lib/components/sidemenu/sidemenu.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/skiplinks/skiplinks.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/skiplinks/skiplinks.component.html","../../../projects/ngx-dsfr-components/src/lib/components/skiplinks/skiplinks.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/stepper/stepper.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/stepper/stepper.component.html","../../../projects/ngx-dsfr-components/src/lib/components/stepper/stepper.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/summary/summary.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/summary/summary.component.html","../../../projects/ngx-dsfr-components/src/lib/components/summary/summary.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/table/data-table.model.ts","../../../projects/ngx-dsfr-components/src/lib/components/table/table.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/table/table.component.html","../../../projects/ngx-dsfr-components/src/lib/components/table/table.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/tabs/tabs.model.ts","../../../projects/ngx-dsfr-components/src/lib/components/tabs/tab.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/tabs/tab.component.html","../../../projects/ngx-dsfr-components/src/lib/components/tabs/tabs.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/tabs/tabs.component.html","../../../projects/ngx-dsfr-components/src/lib/components/tabs/tabs.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/tile/tile.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/tile/tile.component.html","../../../projects/ngx-dsfr-components/src/lib/components/tile/tile.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/tooltip/tooltip.directive.ts","../../../projects/ngx-dsfr-components/src/lib/components/tooltip/tooltip-button.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/tooltip/tooltip-button.component.html","../../../projects/ngx-dsfr-components/src/lib/forms/fieldset/form-fieldset-element.directive.ts","../../../projects/ngx-dsfr-components/src/lib/forms/fieldset/base-fieldset.component.ts","../../../projects/ngx-dsfr-components/src/lib/forms/fieldset/form-fieldset.component.ts","../../../projects/ngx-dsfr-components/src/lib/forms/fieldset/form-fieldset.component.html","../../../projects/ngx-dsfr-components/src/lib/forms/fieldset/form-fieldset.module.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-checkbox/form-checkbox.component.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-checkbox/form-checkbox.component.html","../../../projects/ngx-dsfr-components/src/lib/forms/form-checkbox/form-checkbox.module.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-input/form-input.model.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-input/base-input.component.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-input/base-input-combo.component.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-input/form-input.component.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-input/form-input.component.html","../../../projects/ngx-dsfr-components/src/lib/forms/form-input/form-input.module.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-email/email-utils.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-email/form-email.component.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-email/form-email.module.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-password/form-password.component.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-password/form-password.component.html","../../../projects/ngx-dsfr-components/src/lib/forms/form-password/form-password.module.ts","../../../projects/ngx-dsfr-components/src/lib/forms/default-radio.component.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-radio/form-radio.component.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-radio/form-radio.component.html","../../../projects/ngx-dsfr-components/src/lib/forms/form-radio/form-radio.module.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-radio-rich/form-radio-rich.component.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-radio-rich/form-radio-rich.component.html","../../../projects/ngx-dsfr-components/src/lib/forms/form-radio-rich/form-radio-rich.module.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-select/form-select.component.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-select/form-select.component.html","../../../projects/ngx-dsfr-components/src/lib/forms/form-select/form-select.module.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-tel/phone-number-utils.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-tel/form-tel.component.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-toggle/form-toggle.component.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-toggle/form-toggle.component.html","../../../projects/ngx-dsfr-components/src/lib/forms/form-toggle/form-toggle.module.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-toggles-group/form-toggles-group.component.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-toggles-group/form-toggles-group.component.html","../../../projects/ngx-dsfr-components/src/lib/forms/form-toggles-group/form-toggles-group.module.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-upload/upload.component.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-upload/upload.component.html","../../../projects/ngx-dsfr-components/src/lib/forms/form-upload/upload.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/follow/follow.model.ts","../../../projects/ngx-dsfr-components/src/lib/components/follow/follow-link/follow-link.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/follow/follow-link/follow-link.component.html","../../../projects/ngx-dsfr-components/src/lib/components/follow/follow.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/follow/follow.component.html","../../../projects/ngx-dsfr-components/src/lib/components/follow/follow.module.ts","../../../projects/ngx-dsfr-components/src/lib/pages/login/login.component.ts","../../../projects/ngx-dsfr-components/src/lib/pages/login/login.component.html","../../../projects/ngx-dsfr-components/src/lib/pages/response/response.component.ts","../../../projects/ngx-dsfr-components/src/lib/pages/response/response.component.html","../../../projects/ngx-dsfr-components/src/lib/pages/response/response.module.ts","../../../projects/ngx-dsfr-components/src/lib/patterns/address/address.component.ts","../../../projects/ngx-dsfr-components/src/lib/patterns/address/address.component.html","../../../projects/ngx-dsfr-components/src/lib/patterns/address/address.module.ts","../../../projects/ngx-dsfr-components/src/lib/shared/utils/date-utils.ts","../../../projects/ngx-dsfr-components/src/lib/patterns/date/date.model.ts","../../../projects/ngx-dsfr-components/src/lib/patterns/date/date.component.ts","../../../projects/ngx-dsfr-components/src/lib/patterns/date/date.component.html","../../../projects/ngx-dsfr-components/src/lib/patterns/date/date.module.ts","../../../projects/ngx-dsfr-components/src/lib/patterns/name/name.component.ts","../../../projects/ngx-dsfr-components/src/lib/patterns/name/name.component.html","../../../projects/ngx-dsfr-components/src/lib/patterns/name/name.module.ts","../../../projects/ngx-dsfr-components/src/public-api.ts","../../../projects/ngx-dsfr-components/src/edugouvfr-ngx-dsfr.ts"],"sourcesContent":["import { ElementRef } from '@angular/core';\n\nexport class DomUtils {\n  private constructor() {}\n\n  static surroundChildWithli(parent: ElementRef<any>, childTagName: string): void {\n    const nativeElement = parent.nativeElement;\n    const children = nativeElement.getElementsByTagName(childTagName);\n    for (let i = 0; i < children.length; i++) {\n      const child = children[i];\n      const li = document.createElement('li');\n      child.replaceWith(li);\n      li.appendChild(child);\n    }\n  }\n}\n","export type DsfrMimeType = T[keyof T];\ntype T = typeof DsfrMimeTypeConst;\n\n/** cf. https://developer.mozilla.org/fr/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types */\nexport namespace DsfrMimeTypeConst {\n  // TEXT\n  export const TEXT_CSS = 'text/css';\n  export const TEXT_CSV = 'text/csv';\n  export const TEXT_HTML = 'text/html';\n  export const TEXT_CALENDAR = 'text/calendar';\n  export const TEXT_PLAIN = 'text/plain';\n  export const TEXT_XML = 'text/xml';\n\n  // FONT\n  export const FONT_OTF = 'font/otf';\n  export const FONT_TTF = 'font/ttf';\n  export const FONT_WOFF = 'font/woff';\n  export const FONT_WOFF2 = 'font/woff2';\n\n  // IMAGE\n  export const IMAGE_BMP = 'image/bmp';\n  export const IMAGE_GIF = 'image/gif';\n  export const IMAGE_ICON = 'image/x-icon';\n  export const IMAGE_JPEG = 'image/jpeg';\n  export const IMAGE_PNG = 'image/png';\n  export const IMAGE_SVG = 'image/svg+xml';\n  export const IMAGE_TIFF = 'image/tiff';\n  export const IMAGE_WEBP = 'image/webp';\n\n  // AUDIO\n  export const AUDIO_3GPP = 'audio/3gpp';\n  export const AUDIO_3GPP2 = 'audio/3gpp2';\n  export const AUDIO_ACC = 'audio/aac';\n  export const AUDIO_OGG = 'audio/ogg';\n  export const AUDIO_MIDI = 'audio/midi';\n  export const AUDIO_WAV = 'audio/x-wav';\n  export const AUDIO_WEBM = 'audio/webm';\n\n  // VIDEO\n  export const VIDEO_3GPP = 'video/3gpp';\n  export const VIDEO_3GPP2 = 'video/3gpp2';\n  export const VIDEO_MPEG = 'video/mpeg';\n  export const VIDEO_OGG = 'video/ogg';\n  export const VIDEO_WEBM = 'video/webm';\n\n  // APPLICATION\n  export const APPLICATION_ABIWORD = 'application/x-abiword';\n  export const APPLICATION_CSH = 'application/x-csh';\n  export const APPLICATION_EPUB = 'application/epub+zip';\n  export const APPLICATION_FLASH = 'application/x-shockwave-flash';\n  export const APPLICATION_FORM_URLENCODED = 'application/x-www-form-urlencoded';\n  export const APPLICATION_JAVASCRIPT = 'application/javascript';\n  export const APPLICATION_JSON = 'application/json';\n  export const APPLICATION_OCTET_STREAM = 'application/octet-stream';\n  export const APPLICATION_OGG = 'application/ogg';\n  export const APPLICATION_PDF = 'application/pdf';\n  export const APPLICATION_RTF = 'application/rtf';\n  export const APPLICATION_TYPESCRIPT = 'application/typescript';\n  export const APPLICATION_XML = 'application/xml';\n  export const APPLICATION_XML_ATOM = 'application/atom+xml';\n  export const APPLICATION_XML_SVG = 'application/svg+xml';\n  export const APPLICATION_XML_XHTML = 'application/xhtml+xml';\n  export const APPLICATION_XML_XUL = 'application/vnd.mozilla.xul+xml';\n\n  // ARCHIVE\n  export const ARCHIVE_7Z_COMPRESSED = 'application/x-7z-compressed';\n  export const ARCHIVE_BZIP = 'application/x-bzip';\n  export const ARCHIVE_BZIP2 = 'application/x-bzip2';\n  export const ARCHIVE_JAVA = 'application/java-archive';\n  export const ARCHIVE_GZIP = 'application/gzip';\n  export const ARCHIVE_RAR_COMPRESSED = 'application/x-rar-compressed';\n  export const ARCHIVE_TAR = 'application/x-tar';\n  export const ARCHIVE_RAR = 'application/vnd.rar';\n  export const ARCHIVE_ZIP = 'application/zip';\n  export const ARCHIVE_ZIP_COMPRESSED = 'application/x-zip-compressed';\n\n  // MICROSOFT\n  export const MS_FONT_OBJECT = 'application/vnd.ms-fontobject';\n  export const MS_EXCEL = 'application/vnd.ms-excel';\n  export const MS_EXCEL_XML = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n  export const MS_POWERPOINT = 'application/vnd.ms-powerpoint';\n  export const MS_POWERPOINT_XML = 'application/vnd.openxmlformats-officedocument.presentationml.presentation';\n  export const MS_VIDEO = 'video/x-msvideo';\n  export const MS_VISIO = 'application/vnd.visio';\n  export const MS_WORD = 'application/msword';\n  export const MS_WORD_XML = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';\n\n  // Autres\n  export const MULTIPART_FORM_DATA = 'multipart/form-data';\n  export const SCRIPT_SHELL = 'application/x-sh';\n  export const OPEN_PRESENTATION = 'application/vnd.oasis.opendocument.presentation';\n  export const OPEN_SPREADSHEET = 'application/vnd.oasis.opendocument.spreadsheet';\n  export const OPEN_TEXT = 'application/vnd.oasis.opendocument.text';\n}\n\nexport function convertMimeType2FileFormat(mineType: string): FileFormat | undefined {\n  const element = mimeType2FileFormat.find((e) => e[0] === mineType);\n  return element ? element[1] : undefined;\n}\n\nenum FileFormat {\n  XLS = 'XLS',\n  XLSX = 'XLSX',\n  PPT = 'PPT',\n  PPTX = 'PPTX',\n  DOC = 'DOC',\n  DOCX = 'DOCX',\n  ODS = 'ODS',\n  ODP = 'ODP',\n  ODT = 'ODT',\n  XML = 'XML',\n  JPG = 'JPG',\n  PNG = 'PNG',\n  PDF = 'PDF',\n  CSV = 'CSV',\n  HTML = 'HTML',\n  SVG = 'SVG',\n  TXT = 'TXT',\n  ZIP = 'ZIP',\n  SEVEN_ZIP = '7Z',\n  RAR = 'RAR',\n  XHTML = 'XHTML',\n  BMP = 'BMP',\n  GIF = 'GIF',\n  TIF = 'TIF',\n  RTF = 'RTF',\n  GZIP = 'GZIP',\n  TAR = 'TAR',\n}\n\nconst mimeType2FileFormat: [DsfrMimeType | string, FileFormat][] = [\n  [DsfrMimeTypeConst.APPLICATION_PDF, FileFormat.PDF],\n  [DsfrMimeTypeConst.APPLICATION_RTF, FileFormat.RTF],\n  [DsfrMimeTypeConst.APPLICATION_XML, FileFormat.XML],\n  [DsfrMimeTypeConst.APPLICATION_XML_ATOM, FileFormat.XML],\n  [DsfrMimeTypeConst.APPLICATION_XML_XHTML, FileFormat.XHTML],\n\n  [DsfrMimeTypeConst.ARCHIVE_7Z_COMPRESSED, FileFormat.SEVEN_ZIP],\n  [DsfrMimeTypeConst.ARCHIVE_GZIP, FileFormat.GZIP],\n  [DsfrMimeTypeConst.ARCHIVE_RAR, FileFormat.RAR],\n  [DsfrMimeTypeConst.ARCHIVE_TAR, FileFormat.TAR],\n  [DsfrMimeTypeConst.ARCHIVE_ZIP, FileFormat.ZIP],\n  [DsfrMimeTypeConst.ARCHIVE_ZIP_COMPRESSED, FileFormat.ZIP],\n\n  [DsfrMimeTypeConst.IMAGE_BMP, FileFormat.BMP],\n  [DsfrMimeTypeConst.IMAGE_GIF, FileFormat.GIF],\n  [DsfrMimeTypeConst.IMAGE_JPEG, FileFormat.JPG],\n  [DsfrMimeTypeConst.IMAGE_PNG, FileFormat.PNG],\n  [DsfrMimeTypeConst.IMAGE_SVG, FileFormat.SVG],\n  [DsfrMimeTypeConst.IMAGE_TIFF, FileFormat.TIF],\n\n  [DsfrMimeTypeConst.MS_EXCEL, FileFormat.XLS],\n  [DsfrMimeTypeConst.MS_EXCEL_XML, FileFormat.XLSX],\n  [DsfrMimeTypeConst.MS_POWERPOINT, FileFormat.PPT],\n  [DsfrMimeTypeConst.MS_POWERPOINT_XML, FileFormat.PPTX],\n  [DsfrMimeTypeConst.MS_WORD, FileFormat.DOC],\n  [DsfrMimeTypeConst.MS_WORD_XML, FileFormat.DOCX],\n\n  [DsfrMimeTypeConst.OPEN_PRESENTATION, FileFormat.ODP],\n  [DsfrMimeTypeConst.OPEN_SPREADSHEET, FileFormat.ODS],\n  [DsfrMimeTypeConst.OPEN_TEXT, FileFormat.ODT],\n\n  [DsfrMimeTypeConst.TEXT_CSV, FileFormat.CSV],\n  [DsfrMimeTypeConst.TEXT_HTML, FileFormat.HTML],\n  [DsfrMimeTypeConst.TEXT_PLAIN, FileFormat.TXT],\n  [DsfrMimeTypeConst.TEXT_XML, FileFormat.XML],\n];\n","import { convertMimeType2FileFormat } from '../../components/download/dsfr-mime.type';\n\nconst KILO_OCTETS = 1024;\nconst MEGA_OCTETS = KILO_OCTETS * 1024;\nconst GIGA_OCTETS = MEGA_OCTETS * 1024;\n\n/**\n * Construit le libellé de détail dans un composant de téléchargement lorsque ce libellé n'est pas fourni par le Dsfr\n * @param mimeType Type mime du fichier\n * @param sizeBytes Nombre d'octets\n * @param sizeUnit Unité utilisée dans la restitution\n * @return par exemple 'PDF - 10 octets'\n */\nexport function downloadDetail(mimeType: string, sizeBytes: number | undefined, sizeUnit: DsfrFileSizeUnit): string {\n  return !sizeBytes\n    ? convertMimeType2FileFormat(mimeType) || ''\n    : convertMimeType2FileFormat(mimeType) + ' - ' + fileSizeToString(sizeBytes, sizeUnit);\n}\n\n/**\n * Retourne la taille sous forme de string sous forme de 'nombre unité'\n * @param bytes Taille à transformer exprimée en octets\n * @param sizeUnit Si true, l'unité sera en bytes (KB, MB, ... ) sinon en octets (ko, mo, ...)\n */\nfunction fileSizeToString(bytes: number, sizeUnit?: DsfrFileSizeUnit): string {\n  if (!bytes) return '';\n\n  const bytesUnit = sizeUnit === 'bytes';\n\n  let fileSize: number;\n  let fileSizeUnit: string;\n\n  if (bytes < KILO_OCTETS) {\n    fileSize = bytes;\n    fileSizeUnit = bytesUnit ? FileSizeUnit.BYTES : FileSizeUnit.OCTETS;\n  } else if (bytes < MEGA_OCTETS) {\n    fileSize = bytes / 1024;\n    fileSizeUnit = bytesUnit ? FileSizeUnit.KB : FileSizeUnit.KO;\n  } else if (bytes < GIGA_OCTETS) {\n    fileSize = bytes / 1048576;\n    fileSizeUnit = bytesUnit ? FileSizeUnit.MB : FileSizeUnit.MO;\n  } else {\n    fileSize = bytes / 1073741824;\n    fileSizeUnit = bytesUnit ? FileSizeUnit.GB : FileSizeUnit.GO;\n  }\n\n  fileSize = Math.round(fileSize * 100) / 100;\n\n  // @since 1.8, les options régionales sont prise en compte pour les décimales\n  //FIXME: ne devrait-ton pas transmettre la locale depuis l'extérieur de manière à pouvoir la transmettre depuis i18nService ?\n  const localSize = fileSize.toLocaleString();\n  return localSize + ' ' + fileSizeUnit;\n}\n\n// -- Constantes d'unités de taille de fichier -------------------------------------------------------------------------\n\n// TODO Un peu bizarre ces noms ?\nenum FileSizeUnit {\n  OCTETS = 'octets',\n  KO = 'ko',\n  MO = 'Mo',\n  GO = 'Go',\n  BYTES = 'bytes',\n  KB = 'KB',\n  MB = 'MB',\n  GB = 'GB',\n}\n\nexport namespace DsfrFileSizeUnitConst {\n  export const BYTES = 'bytes';\n  export const OCTETS = 'octets';\n}\n\nexport type DsfrFileSizeUnit = (typeof DsfrFileSizeUnitConst)[keyof typeof DsfrFileSizeUnitConst];\n","/**\n * https://www.w3resource.com/JSON/JSONPath-with-JavaScript.php\n * @param obj : object|array This parameter represents the Object representing the JSON structure.\n * @param path : string This parameter represents JSONPath expression string.\n * @return une valeur extrait de l'objet Json\n */\nexport function jsonPath2Value(obj: any, path: string): any {\n  const keys = path.split('.');\n  let value = obj; // value est soit un objet JSON, soit une valeur terminale\n  keys.forEach((key) => {\n    // key, ex: 'labels[20]'\n    const matchArr = key.match(/([^\\[]*)\\[(\\d*)\\]/);\n    const k = matchArr ? matchArr[1] : undefined; // clé sans l'indice, ex : 'labels'\n    const i = matchArr ? matchArr[2] : undefined; // indice, ex : 20\n    value = k && i ? value[k][i] : value[key];\n  });\n  return value;\n}\n","/**\n * La fonction permet de savoir si le code en cours s'exécute côté serveur ou côté browser.\n */\nexport function isOnBrowser() {\n  return typeof window !== 'undefined';\n}\n","import { isOnBrowser } from './ssr-utils';\n\n/**\n * Les méthodes statiques de cette classe permettent de gérer le local storage uniquement si le code s'exécute côté browser.\n */\nexport abstract class LocalStorage {\n  /**\n   * The setItem() method of the Storage interface, when passed a key name and value, will add that key to the given\n   * Storage object, or update that key's value if it already exists.\n   */\n  static set(key: string, value: string): void {\n    if (isOnBrowser()) window.localStorage?.setItem(key, value);\n  }\n\n  /**\n   * The getItem() method of the Storage interface, when passed a key name, will return that key's value, or null if\n   * he key does not exist, in the given Storage object.\n   * @return Signature identique à l'interface Storage.getItem(key: string): string | null\n   */\n  static get(key: string): string | null {\n    return isOnBrowser() ? window.localStorage?.getItem(key) : null;\n  }\n\n  /**\n   * The removeItem() method of the Storage interface, when passed a key name, will remove that key from the given\n   * Storage object if it exists. The Storage interface of the Web Storage API  provides access to a\n   * particular domain's session or local storage.\n   */\n  static remove(key: string): void {\n    if (isOnBrowser()) window.localStorage?.removeItem(key);\n  }\n}\n","export enum StorageEnum {\n  SCHEME = 'scheme', // display type\n  REMEMBER_ME = 'rememberMe',\n  LOGIN = 'login', // remember me dans la page de login\n  // 'lang' pour la langue (dans _commons)\n}\n","/**\n * Retourne vrai si la string 's' est null, undefined ou vide.\n * @param s la chaïne à considére\n */\nexport function isStringEmptyOrNull(s: string | null | undefined): boolean {\n  return !s || s.trim() === '';\n}\n","import { v4 as uuidv4 } from 'uuid';\n\n/**\n * Fournit un identifiant unique de type string basé, actuellement, sur uuidv4.\n */\nexport function newUniqueId(): string {\n  return uuidv4();\n}\n","import { Component, Input } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\n\n/**\n * Base class for all ControlValueAccessor classes defined in Forms package. Contains common logic and utility functions.\n * Le type de `value` est : T | undefined, undefined par défaut. Par exemple si on manipule un input de type number, celui-ci\n * sera initialisé à undefined par défaut.\n */\n// Même si on ne précise pas undefined, à l'exécution, c'est quand même le cas.\n// Même si on indique un type number, à l'exécution, si l'utilisateur saisie \"1a\", value sera de type string\n@Component({\n  template: '',\n})\nexport abstract class DefaultValueAccessorComponent<T> implements ControlValueAccessor {\n  /**\n   * Permet de désactiver le champ.\n   */\n  @Input() disabled = false;\n\n  private _value: T | undefined;\n\n  get value(): T | undefined {\n    return this._value;\n  }\n\n  /**\n   * La valeur gérée par le champ de formulaire.\n   */\n  @Input() set value(value: T | undefined) {\n    this._value = value;\n    this.fnOnChange(this.value);\n    this.fnOnTouched();\n  }\n\n  /**\n   * Writes a new value to the element.\n   * This method is called by the forms API to write to the view when programmatic changes from model to view are requested.\n   *\n   * @internal\n   */\n  writeValue(value: T | undefined): void {\n    this._value = value;\n  }\n\n  /**\n   * Registers a callback function that is called when the control's value changes in the UI.\n   * When the value changes in the UI, call the registered function to allow the forms API to update itself:\n   * host: {\n   *    '(change)': '_onChange($event.target.value)'\n   * }\n   *  @internal\n   */\n  registerOnChange(fn: (_: any) => void): void {\n    this.fnOnChange = fn;\n  }\n\n  /**\n   * Registers a callback function that is called by the forms API on initialization to update the form model on blur.\n   * On blur (or equivalent), your class should call the registered function to allow the forms API to update itself:\n   * host: {\n   *    '(blur)': '_onTouched()'\n   * }\n   *  @internal\n   */\n  registerOnTouched(fn: () => void): void {\n    this.fnOnTouched = fn;\n  }\n\n  /**\n   * Function that is called by the forms API when the control status changes to or from 'DISABLED'.\n   * Depending on the status, it enables or disables the appropriate DOM element.\n   *\n   * @internal\n   */\n  setDisabledState?(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  /** @internal */\n  fnOnChange = (_: T | undefined) => {};\n\n  /** @internal */\n  fnOnTouched = () => {};\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { newUniqueId } from '../utils';\nimport { DefaultValueAccessorComponent } from './default-value-accessor.component';\n\n/**\n * Ce composant est le contrôle abstrait des contrôles Dsfr possédant un id, un name et un label.\n */\n@Component({\n  template: '',\n})\n// Renamed from AbstractControlComponent\nexport abstract class DefaultControlComponent<T> extends DefaultValueAccessorComponent<T> implements OnInit {\n  @Input() ariaControls: string;\n\n  /**\n   * Attribut `id` du champ, généré automatiquement par défaut.\n   */\n  @Input() inputId: string;\n\n  /**\n   * Texte additionnel décrivant le champ.\n   */\n  @Input() hint: string | undefined; // Le composant upload utilise la valeur undefined\n\n  /**\n   *  Libellé du champ.\n   */\n  @Input() label: string;\n\n  /**\n   * Sera utilisé pour positionner un attribut `name` sur le champ de formulaire.\n   */\n  @Input() name: string;\n\n  /**\n   * @deprecated since 1.11, l'id sur un label ne sera plus utilisé en 2.0\n   * @internal\n   */\n  labelId: string;\n\n  private _id: string;\n\n  /**\n   * Cet attribut doit être utilisé en tant que propriété et non en attribut, ex. `[id]=\"'monid'\"`.\n   *\n   * @deprecated since 1.5, utiliser `inputId` à la place.\n   */\n  @Input() set id(value: string) {\n    if (value) {\n      this._id = value;\n      this.inputId ??= this._id;\n    }\n  }\n\n  /** @internal */\n  ngOnInit() {\n    this.inputId = this.inputId || newUniqueId(); // même si this.inputId = '', l'id sera valorisé (contrairement à '')\n    this.labelId = `${this.inputId}-label`;\n  }\n}\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { DsfrHeadingLevel } from '../../models';\n\n@Component({\n  selector: 'edu-heading',\n  templateUrl: './heading.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\n/**\n * Permet de définir le titre de composant d'un niveau de titre de `<h2>` à `<h6>`, avec un niveau par défaut de `<h2>` à `<h6>` ou `<p>`.\n * Ne permets pas la projection du titre.\n */\nexport class HeadingComponent {\n  /** Classe du titre. */\n  @Input() customClass: string;\n\n  /** Le titre de l'accordéon est du texte simple. */\n  @Input() heading: string;\n\n  /** id du titre @since 1.9 */\n  @Input() headingId: string;\n\n  /** Le niveau du titre dans la structure. */\n  @Input() level: DsfrHeadingLevel | undefined;\n\n  /** Niveau par défaut si 'level' n'est pas renseigné. */\n  @Input() defaultLevel: DsfrHeadingLevel | 'P';\n\n  /** @internal */\n  getLevel(): DsfrHeadingLevel | 'P' {\n    return this.level ?? this.defaultLevel;\n  }\n}\n","<ng-container [ngSwitch]=\"getLevel()\">\n  <h2 *ngSwitchCase=\"'H2'\" [attr.id]=\"headingId || null\" [class]=\"customClass\">\n    <ng-container *ngTemplateOutlet=\"headingTemplate\"></ng-container>\n  </h2>\n  <h3 *ngSwitchCase=\"'H3'\" [attr.id]=\"headingId || null\" [class]=\"customClass\">\n    <ng-container *ngTemplateOutlet=\"headingTemplate\"></ng-container>\n  </h3>\n  <h4 *ngSwitchCase=\"'H4'\" [attr.id]=\"headingId || null\" [class]=\"customClass\">\n    <ng-container *ngTemplateOutlet=\"headingTemplate\"></ng-container>\n  </h4>\n  <h5 *ngSwitchCase=\"'H5'\" [attr.id]=\"headingId || null\" [class]=\"customClass\">\n    <ng-container *ngTemplateOutlet=\"headingTemplate\"></ng-container>\n  </h5>\n  <h6 *ngSwitchCase=\"'H6'\" [attr.id]=\"headingId || null\" [class]=\"customClass\">\n    <ng-container *ngTemplateOutlet=\"headingTemplate\"></ng-container>\n  </h6>\n  <p *ngSwitchCase=\"'P'\" [attr.id]=\"headingId || null\" [class]=\"customClass\">\n    <ng-container *ngTemplateOutlet=\"headingTemplate\"></ng-container>\n  </p>\n  <p *ngSwitchDefault [attr.id]=\"headingId || null\" [class]=\"customClass\">\n    <ng-container *ngTemplateOutlet=\"headingTemplate\"></ng-container>\n  </p>\n</ng-container>\n\n<ng-template #headingTemplate>\n  <ng-container *ngIf=\"heading; else headingContentTemplate\"><span [outerHTML]=\"heading\"></span></ng-container>\n</ng-template>\n\n<ng-template #headingContentTemplate>\n  <ng-content></ng-content>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { HeadingComponent } from './heading.component';\n\n@NgModule({\n  declarations: [HeadingComponent],\n  exports: [HeadingComponent],\n  imports: [CommonModule],\n})\nexport class HeadingModule {}\n","/**\n * Constantes des niveaux de titre.\n */\nexport namespace DsfrHeadingLevelConst {\n  /** @deprecated (@since 1.8) use undefined instead */\n  export const NONE = 'none';\n  export const H2 = 'H2';\n  export const H3 = 'H3';\n  export const H4 = 'H4';\n  export const H5 = 'H5';\n  export const H6 = 'H6';\n}\n\n/**\n * Niveaux de titre de H2 à H6 ou NONE (indique alors qu'il faut utiliser une balise <p>)\n */\nexport type DsfrHeadingLevel = (typeof DsfrHeadingLevelConst)[keyof typeof DsfrHeadingLevelConst];\n","/**\n * Les positions sous forme énumérées.\n */\nexport namespace DsfrPositionConst {\n  export const LEFT = 'left';\n  export const RIGHT = 'right';\n}\n\n/**\n * Les positions DSFR.\n */\nexport type DsfrPosition = (typeof DsfrPositionConst)[keyof typeof DsfrPositionConst];\n","/**\n * Les constantes des niveaux de sévérité DSFR.\n */\nexport namespace DsfrSeverityConst {\n  export const INFO = 'info';\n  export const SUCCESS = 'success';\n  export const WARNING = 'warning';\n  export const ERROR = 'error';\n}\n\n/**\n * Les niveaux de sévérité DSFR exposées sous forme de type.\n */\nexport type DsfrSeverity = (typeof DsfrSeverityConst)[keyof typeof DsfrSeverityConst];\n","/**\n * Les tailles sous forme énumérées.\n */\nexport namespace DsfrSizeConst {\n  export const SM = 'SM';\n  export const MD = 'MD';\n  export const LG = 'LG';\n}\n\n/**\n * Les tailles standards DSFR : SM, MD, LG.\n */\nexport type DsfrSize = (typeof DsfrSizeConst)[keyof typeof DsfrSizeConst];\n","/**\n * Les tailles de texte sous forme énumérées.\n */\nexport namespace DsfrTextSizeConst {\n  export const XS = 'XS';\n  export const SM = 'SM';\n  export const MD = 'MD';\n  export const LG = 'LG';\n  export const XL = 'XL';\n}\n\n/**\n * Les tailles DSFR.\n * @see https://www.systeme-de-design.gouv.fr/elements-d-interface/fondamentaux-de-l-identite-de-l-etat/typographie > Corps de texte - Body\n */\nexport type DsfrTextSize = (typeof DsfrTextSizeConst)[keyof typeof DsfrTextSizeConst];\n","import { DsfrPosition, DsfrSize } from '../../shared';\n\n/** Interface traduite en bouton par certains composants de la librairie. */\nexport interface DsfrButton {\n  /** Libellé du bouton. */\n  label: string;\n\n  /** Type du button,'submit' par défaut. */\n  type?: DsfrButtonType;\n\n  /** Message du tooltip (attribut title) du bouton. */\n  tooltipMessage?: string;\n\n  /** Style du bouton, 'primary' par défaut. */\n  variant?: DsfrButtonVariant;\n\n  /** Taille du bouton, 'MD' par défaut  */\n  size?: DsfrSize;\n\n  /** Nom de l'icône. */\n  icon?: string;\n\n  /** Position de l'icône définie, 'left' par défaut. */\n  iconPosition?: DsfrPosition;\n\n  /** Permet de désactiver le bouton d'action, 'false' par défaut. */\n  disabled?: boolean;\n\n  /** Permet de passer le libellé du bouton en majuscules, 'false' par défaut. */\n  uppercase?: boolean;\n\n  /** Permet d'activer un visuel dénotant un \"chargement\" (busy), 'false' par défaut. */\n  loader?: boolean;\n\n  /** [accessibilité] Spécifie le libellé qui sera retranscrit par les narrateurs d'écran. */\n  ariaLabel?: string;\n\n  /** Permet d'inverser le contraste du marqueur de focus, 'false' par défaut. */\n  invertedOutlineContrast?: boolean;\n\n  /**Permet d'identifier le button. */\n  id?: string;\n}\n\n/**\n * Les types du bouton sous forme énumérée.\n */\nexport namespace DsfrButtonTypeConst {\n  export const SUBMIT = 'submit';\n  export const RESET = 'reset';\n  export const BUTTON = 'button';\n}\n\n/**\n * Le type d'un bouton au sens HTML.\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button\n */\ntype Type = typeof DsfrButtonTypeConst;\nexport type DsfrButtonType = Type[keyof Type];\n\n/**\n * Les constantes dénotant les variantes du bouton.\n */\nexport namespace DsfrButtonVariantConst {\n  export const PRIMARY = 'primary';\n  export const SECONDARY = 'secondary';\n  export const TERTIARY = 'tertiary';\n  export const TERTIARY_NO_OUTLINE = 'tertiary-no-outline';\n}\n/**\n * Les variantes du bouton exportées en tant que type.\n */\ntype Variant = typeof DsfrButtonVariantConst;\nexport type DsfrButtonVariant = Variant[keyof Variant];\n","/**\n * Constantes qui correspondent aux valeurs possibles de l'attribut target d'un lien html.\n */\nexport namespace DsfrLinkTargetConst {\n  export const BLANK = '_blank';\n  export const SELF = '_self';\n  export const PARENT = '_parent';\n  export const TOP = '_top';\n}\n\n/** @deprecated since 1.4 use DsfrLinkTargetConst instead */\nexport namespace DsfrTargetLinkConst {\n  export const BLANK = '_blank';\n  export const SELF = '_self';\n  export const PARENT = '_parent';\n  export const TOP = '_top';\n}\n\n/**\n * Les constantes target exposées sous forme de type.\n */\nexport type DsfrLinkTarget = (typeof DsfrLinkTargetConst)[keyof typeof DsfrLinkTargetConst];\n\n/** @deprecated since 1.4 use DsfrLinkTarget instead */\nexport type DsfrTargetLink = DsfrLinkTarget;\n","// Types\nexport * from './icon';\nexport * from './heading-level';\nexport * from './position';\nexport * from './severity';\nexport * from './size';\nexport * from './text-size';\n\n// Interfaces\nexport * from './anchor-link.model';\nexport * from './button.model';\nexport * from './link-target.model';\nexport * from './link.model';\nexport * from './navigation.model';\nexport * from './option.model';\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { DsfrLink, DsfrLinkTarget, DsfrPositionConst } from '../../models';\n\n@Component({\n  selector: 'edu-link-download',\n  templateUrl: './link-download.component.html',\n  encapsulation: ViewEncapsulation.None,\n  standalone: true,\n  imports: [CommonModule, RouterModule],\n})\n/** Ce composant permet de gérer facilement une ancre href ou un `routerLink` sans ajout de styles.\n * Utilisé par le `header`, `footer`, `breadcrumb` et `sidemenu`. */\nexport class LinkDownloadComponent {\n  /** Classe personnalisée du composant, par exemple, `fr-btn`, `fr-nav__link`, ... */\n  @Input() customClass: string;\n\n  /**\n   * Active la version download avec l'attribut download.\n   * Permet l'utilisation de `downloadAssessFile` et  `langCode`\n   */\n  @Input() downloadDirect: boolean | string = false;\n\n  /** Option de détail de téléchargement renseigné automatiquement.\n   * Si la valeur est 'bytes', l'unité sera en Bytes\n   */\n  @Input() downloadAssessFile: boolean | 'bytes' = false;\n\n  /**\n   * Langue courante. hreflang ne sera indiquée que différent de la langue courante.\n   */\n  @Input() langCode = 'fr';\n\n  /**\n   * Propage la valeur de 'route' ou de 'link' (selon le cas) lors du click sur le lien.\n   */\n  @Output() linkSelect = new EventEmitter<string>();\n\n  private _item: DsfrLink;\n\n  get disabled(): boolean {\n    return !(this.item.route || this.item.routerLink || this.item.link);\n  }\n\n  get item(): DsfrLink {\n    return this._item;\n  }\n\n  /** Item représentant un lien `<a>` avec ou sans `routerLink`. */\n  @Input() set item(item: DsfrLink) {\n    if (item.label) {\n      this._item = { ...item, label: item.label };\n    } else {\n      this._item = item;\n    }\n    if (this.item) this.item.customClass = this.getLinkClasses();\n  }\n\n  /**\n   * Si === 'true', télécharge directement le fichier sans l'ouvrir, 'false' par défaut.\n   * @internal\n   */\n  isDirectDownload(): boolean {\n    return this.downloadDirect !== false;\n  }\n\n  /** @internal */\n  getHref(): string | undefined {\n    if (this.item.route) return this.item.route;\n    if (this.item.link) return this.item.link;\n    return undefined;\n  }\n\n  /** @internal */\n  getNewFileName(): string {\n    return typeof this.downloadDirect === 'string' ? this.downloadDirect : '';\n  }\n\n  onLinkSelect(event: Event) {\n    if (this.item.route && !this.item.routerLink) {\n      event.preventDefault();\n      this.linkSelect.emit(this.item.route);\n    } else if (this.item.link) {\n      this.linkSelect.emit(this.item.link);\n    }\n  }\n\n  /** @internal */\n  getLinkTarget(item: DsfrLink): DsfrLinkTarget | undefined {\n    return item.target ?? item.linkTarget;\n  }\n\n  /** @internal */\n  private getLinkClasses(): string {\n    const classes = [];\n    classes.push(!this.customClass ? 'fr-link' : this.customClass);\n\n    if (this._item.icon) {\n      classes.push(this._item.icon);\n      // Dans le header, les liens utilisent la classe fr-btn, pour être cohérent, on va utiliser fr-btn--icon-left et right\n      const likeButton = this.customClass?.search('fr-btn') >= 0;\n      const prefixPos = likeButton ? 'fr-btn--icon-' : 'fr-link--icon-';\n      classes.push(this._item.iconPosition === DsfrPositionConst.RIGHT ? prefixPos + 'right' : prefixPos + 'left');\n    }\n\n    return classes.join(' ');\n  }\n}\n","<!-- Lien de téléchargement-->\n<a\n  [attr.aria-controls]=\"item.ariaControls || null\"\n  [attr.aria-disabled]=\"disabled\"\n  [attr.aria-label]=\"item.ariaLabel || null\"\n  [attr.href]=\"getHref() || null\"\n  [attr.download]=\"!isDirectDownload() ? null : getNewFileName()\"\n  [attr.data-fr-assess-file]=\"downloadAssessFile || null\"\n  [attr.hreflang]=\"langCode || null\"\n  (click)=\"onLinkSelect($event)\"\n  [innerHTML]=\"item.label\">\n  <ng-content></ng-content>\n</a>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { DsfrSeverity, DsfrSeverityConst } from '../../models';\nimport { isStringEmptyOrNull } from '../../utils';\n\n/**\n * InputGroupComponent contient :\n * - Le label et l'aide textuel de l'input,\n * - Les messages de l'input\n * @since 1.11.0\n * @author pfontanet\n */\n@Component({\n  selector: 'edu-input-group',\n  encapsulation: ViewEncapsulation.None,\n  templateUrl: './input-group.component.html',\n  standalone: true,\n  imports: [CommonModule],\n})\nexport class InputGroupComponent {\n  /** Libellé du champ. */\n  @Input() label: string;\n\n  /** Elément sur lequel porte le label. */\n  @Input() inputId: string;\n\n  /** Texte additionnel décrivant le champ.  */\n  @Input() hint: string | undefined;\n\n  /**\n   * Permet de désactiver le champ.\n   */\n  @Input() disabled = false;\n\n  /**\n   * Message d'information lié au composant\n   */\n  @Input() message: string | undefined = undefined;\n\n  /**\n   * Représente la sévérité du message\n   */\n  @Input() severity: DsfrSeverity;\n\n  /**\n   * Id de la div affichant les messages d'erreur ou de validation.\n   */\n  @Input() messagesGroupId: string;\n\n  // Afin de pouvoir utiliser le type dans l'HTML\n  /** @internal */\n  protected readonly severityConst = DsfrSeverityConst;\n\n  /** @internal */\n  protected hasMessage(severity: DsfrSeverity): boolean {\n    return !isStringEmptyOrNull(this.message) && severity === this.severity;\n  }\n}\n","<div\n  [ngClass]=\"{\n    'fr-input-group': true,\n    'fr-input-group--disabled': disabled,\n    'fr-input-group--error': hasMessage(severityConst.ERROR),\n    'fr-input-group--valid': hasMessage(severityConst.SUCCESS),\n    'fr-input-group--info': hasMessage(severityConst.INFO)\n  }\">\n  <ng-content />\n  <div class=\"fr-messages-group\" [id]=\"messagesGroupId\" aria-live=\"polite\">\n    <!-- prettier-ignore -->\n    <p\n      class=\"fr-message\"\n      [ngClass]=\"{\n        'fr-message--error': hasMessage(severityConst.ERROR),\n        'fr-message--valid': hasMessage(severityConst.SUCCESS),\n        'fr-message--info': hasMessage(severityConst.INFO)\n      }\"\n    >{{ message }}</p>\n  </div>\n</div>\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'edu-pictogram',\n  templateUrl: './pictogram.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\n/** Ce composant permet de gérer facilement les pictogrammes issus du DSFR. */\nexport class PictogramComponent {\n  /**\n   * Chemin vers le répertoire exposant les pictogrammes illustratifs DSFR.\n   */\n  @Input() artworkDirPath = 'artwork';\n\n  /**\n   * Chemin relatif à artworkDirPath dénotant le fichier d'illustration à utiliser.\n   */\n  @Input() artworkFilePath: string;\n\n  /**\n   * Détermine l'affichage du pictogramme associé aux téléchargements.\n   */\n  @Input() download = false;\n}\n","<ng-container *ngIf=\"!download\">\n  <svg aria-hidden=\"true\" class=\"fr-artwork\" viewBox=\"0 0 80 80\" width=\"80px\" height=\"80px\">\n    <use class=\"fr-artwork-decorative\" [attr.href]=\"artworkFilePath + '#artwork-decorative'\"></use>\n    <use class=\"fr-artwork-minor\" [attr.href]=\"artworkFilePath + '#artwork-minor'\"></use>\n    <use class=\"fr-artwork-major\" [attr.href]=\"artworkFilePath + '#artwork-major'\"></use>\n  </svg>\n</ng-container>\n\n<!---DOWNLOAD-->\n<ng-container *ngIf=\"download\">\n  <svg aria-hidden=\"true\" class=\"fr-artwork\" viewBox=\"0 0 80 80\" width=\"80px\" height=\"80px\">\n    <use\n      class=\"fr-artwork-decorative\"\n      [attr.href]=\"artworkDirPath + '/pictograms/document/document-download.svg#artwork-decorative'\"></use>\n    <use\n      class=\"fr-artwork-minor\"\n      [attr.href]=\"artworkDirPath + '/pictograms/document/document-download.svg#artwork-minor'\"></use>\n    <use\n      class=\"fr-artwork-major\"\n      [attr.href]=\"artworkDirPath + '/pictograms/document/document-download.svg#artwork-major'\"></use>\n  </svg>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { PictogramComponent } from './pictogram.component';\n\n@NgModule({\n  declarations: [PictogramComponent],\n  exports: [PictogramComponent],\n  imports: [CommonModule, RouterModule],\n})\nexport class PictogramModule {}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'edu-svg-icon',\n  template: `\n    <svg [attr.aria-hidden]=\"ariaHidden\" [attr.role]=\"role\" [attr.alt]=\"alt\">\n      <use attr.xlink:href=\"{{ iconPath }}\"></use>\n    </svg>\n  `,\n})\nexport class SvgIconComponent {\n  @Input() iconPath: string;\n  @Input() role = 'img';\n  @Input() ariaHidden: boolean = true;\n  @Input() alt: string;\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SvgIconComponent } from './svg-icon.component';\n\n@NgModule({\n  declarations: [SvgIconComponent],\n  imports: [CommonModule],\n  exports: [SvgIconComponent],\n})\nexport class SvgIconModule {}\n","import { InjectionToken } from '@angular/core';\nimport { DsfrConfig } from './config.model';\n\nexport const DEFAULT_CONFIG = {\n  artworkDirPath: 'artwork',\n};\n\n/*\n * Étant donné que ce jeton est à usage interne uniquement, nous n'exporterons pas ce fichier en dehors de\n * la bibliothèque. La création du jeton DI dans un fichier séparé permet d'éviter dépendances circulaires.\n */\nexport const DSFR_CONFIG_TOKEN = new InjectionToken<DsfrConfig>('ngx-dsfr-config', {\n  providedIn: 'root',\n  factory: () => DEFAULT_CONFIG,\n});\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { DSFR_CONFIG_TOKEN } from './config-token';\nimport { DsfrConfig } from './config.model';\n\n@NgModule({\n  imports: [CommonModule],\n})\nexport class DsfrConfigModule {\n  static forRoot(config: DsfrConfig): ModuleWithProviders<DsfrConfigModule> {\n    return {\n      ngModule: DsfrConfigModule,\n      providers: [{ provide: DSFR_CONFIG_TOKEN, useValue: config }],\n    };\n  }\n}\n","import { Directive, ElementRef, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\n\n@Directive({\n  selector: '[watchAttr]',\n  standalone: true,\n})\nexport class WatchAttrDirective implements OnDestroy {\n  // /**\n  //  * Obligatoire : permet d'indiquer quel attribut on souhaite observer.\n  //  */\n  // @Input() attrObserver: string;\n\n  @Input()\n  public watchAttrName: string | undefined = undefined;\n\n  @Output()\n  public watchAttr = new EventEmitter<MutationRecord>();\n\n  private _changes: MutationObserver;\n\n  constructor(private elementRef: ElementRef) {\n    const element = this.elementRef.nativeElement;\n\n    this._changes = new MutationObserver((mutations: MutationRecord[]) => {\n      mutations.forEach((mutation: MutationRecord) => {\n        if (\n          this.watchAttrName === undefined ||\n          (this.watchAttrName.trim().length > 0 && this.watchAttrName.trim() === mutation.attributeName)\n        ) {\n          this.watchAttr.emit(mutation);\n        }\n      });\n    });\n\n    this._changes.observe(element, {\n      attributes: true,\n      childList: false,\n      characterData: false,\n    });\n  }\n\n  ngOnDestroy(): void {\n    this._changes.disconnect();\n  }\n}\n","export const MESSAGES_EN = {\n  commons: {\n    accept: 'Accept',\n    close: 'Close',\n    disabled: 'Disabled',\n    download: 'Download',\n    enlarge: 'Enlarge',\n    refuse: 'Refuse',\n    search: 'Search',\n  },\n\n  alert: {\n    close: 'Hide message',\n  },\n  backtotop: {\n    topOfPage: 'Top of page',\n  },\n  breadcrumb: {\n    viewBreadcrumb: 'View breadcrumb',\n    ariaLabel: 'you are here :',\n  },\n  consent: {\n    acceptAll: 'Accept All',\n    allowAllCookies: 'Allow all cookies',\n    refuseAll: 'Refuse all',\n    refuseAllCookies: 'Refuse all cookies',\n    customize: 'Customize',\n    customizeCookies: 'Customize cookies',\n    welcome: [\n      'Welcome ! We use cookies to improve your experience and the services available on this site. To find out more, visit the ',\n      'Personal data and cookies',\n      ' page. You can, at any time, have control over the cookies you wish to activate.',\n    ],\n\n    manager: {\n      title: 'Cookies management panel',\n      preferences: 'Preferences for all services.',\n      personalData: 'Personal data and cookies',\n      confirmChoices: 'Confirm my choices',\n      finalityExempt: 'Enabled',\n      showDetails: 'Show more details',\n    },\n  },\n  display: {\n    heading: 'Display settings',\n    hint: 'Choose a theme to customize the look of the site.',\n    light: { label: 'Light theme' },\n    dark: { label: 'Dark theme' },\n    system: { label: 'System', hint: 'Use system settings.' },\n  },\n  email: {\n    label: 'Email address',\n    hint: 'Expected format: name@domain.fr',\n    error: 'The format of the email address entered is invalid. The expected format is: name@example.org',\n  },\n  follow: {\n    networks: { heading: 'Follow us<br/>on social networks' },\n    newsletter: {\n      heading: 'Subscribe to our newsletter',\n      button: { label: 'Subscribe', title: 'Subscribe to our newsletter' },\n      input: {\n        placeholder: 'Your email address (e.g. name@domain.fr)',\n        hint: `By entering your email address, you agree to receive our news by email. You can unsubscribe at any time using the unsubscribe links or by contacting us.`,\n        error: 'The format of the email address entered is invalid. The expected format is: name@example.org',\n      },\n      registration: { success: 'Your registration has been taken into account.' },\n    },\n    newWindow: 'New window',\n  },\n  footer: {\n    partners: { title: 'Our partners' },\n  },\n  franceConnect: {\n    title: 'Identify with',\n    link: { label: 'What is FranceConnect', tooltip: 'What is FranceConnect? - new window' },\n  },\n  header: {\n    menu: { label: 'Menu' },\n    mainMenu: 'Main menu',\n  },\n  link: {\n    newWindow: 'new window',\n  },\n  login: {\n    heading: 'Connecting to ',\n    franceConnect: {\n      heading: 'Connect with FranceConnect',\n    },\n    or: 'or',\n    account: {\n      heading: 'Log in with your account',\n      email: { label: 'Identifier' },\n      srOnly: { label: 'identifiers' },\n      rememberMe: { label: 'Remember me' },\n      button: { label: 'Log in' },\n    },\n    noAccount: { heading: 'You do not have an account ?', button: { label: 'Create an account' } },\n  },\n  modal: {\n    ariaLabel: 'Close the window',\n  },\n  notice: {\n    close: 'Hide message',\n  },\n  pagination: {\n    firstPage: 'First page',\n    previousPage: 'Previous page',\n    nextPage: 'Next page',\n    lastPage: 'Last page',\n    role: 'navigation',\n    ariaLabel: 'Paging',\n  },\n  password: {\n    aria: { label: 'Show password' },\n    forgotPassword: 'Forgot your password ?',\n    label: 'Password',\n    message: 'Your password must contain:',\n    show: 'Show',\n    dataFrValid: 'valid',\n    dataFrError: 'in error',\n  },\n  response: {\n    contactUs: 'Contact us',\n  },\n  select: {\n    placeholder: 'Select an option',\n  },\n  share: {\n    'heading': 'Share page',\n    'cookiesText': 'Please $1allow cookies$2 to be shared on social networks.',\n    //\n    'copy': { title: 'Clipboard', label: 'Copy to clipboard' },\n    'facebook': { title: 'Facebook', label: 'Share on Facebook' },\n    'linkedin': { title: 'LinkedIn', label: 'Share on LinkedIn' },\n    'mail': { title: 'Email', label: 'Share by email' },\n    'mastodon': { title: 'Mastodon', label: 'Share on Mastodon' },\n    'twitter': { title: 'X', label: 'Share on X' },\n    'twitter-x': { title: 'X', label: 'Share on X' },\n  },\n  table: {\n    noData: 'No data',\n  },\n  tag: {\n    removeFilter: 'Remove the filter',\n    selectFilter: 'Select the filter',\n  },\n  tel: {\n    label: 'Phone number',\n    hint: 'Expected format: (+33) 1 23 45 67 89',\n    error: 'The phone number format entered is invalid. The expected format is: (+33) 2 43 55 55 55',\n  },\n  toggle: {\n    dataLabelChecked: 'Checked',\n    dataLabelUnchecked: 'Unchecked',\n  },\n  tooltip: {\n    button: { label: 'Contextual information' },\n  },\n  transcription: {\n    button: 'Transcription',\n    ariaLabel: 'Enlarge transcript',\n  },\n  translate: {\n    tooltip: 'Select a language',\n  },\n  upload: {\n    label: 'Add a file',\n    hint: '** Mandatory help text which specifies the constraints at the level of the expected file(s) **',\n  },\n  date: {\n    day: { label: 'Day', hint: 'Example: 14' },\n    month: { label: 'Month', hint: 'Example: 12' },\n    year: { label: 'Year', hint: 'Example: 1984' },\n    error: {\n      required: 'All fields are required.',\n      invalid: {\n        format: 'Fields must be in numeric format.',\n        day: 'The day is not valid.',\n        month: 'The month is not valid.',\n        date: 'The date is not valid.',\n      },\n    },\n  },\n  pageResponse: {\n    heading: 'Unexpected error',\n    description: 'Try refreshing the page or try again later.',\n    detail: 'Sorry, there is a problem with the service, we are working to resolve it as soon as possible.',\n  },\n};\n","export const MESSAGES_FR = {\n  commons: {\n    accept: 'Accepter',\n    close: 'Fermer',\n    disabled: 'Désactivé',\n    download: 'Télécharger',\n    enlarge: 'Agrandir',\n    refuse: 'Refuser',\n    search: 'Rechercher',\n  },\n\n  alert: {\n    close: 'Masquer le message',\n  },\n  backtotop: {\n    topOfPage: 'Haut de page',\n  },\n  breadcrumb: {\n    viewBreadcrumb: 'Voir le fil d’Ariane',\n    ariaLabel: 'vous êtes ici :',\n  },\n  consent: {\n    acceptAll: 'Tout accepter',\n    allowAllCookies: 'Autoriser tous les cookies',\n    refuseAll: 'Tout refuser',\n    refuseAllCookies: 'Refuser tous les cookies',\n    customize: 'Personnaliser',\n    customizeCookies: 'Personnaliser les cookies',\n    welcome: [\n      'Bienvenue ! Nous utilisons des cookies pour améliorer votre expérience et les services disponibles sur ce site. Pour en savoir plus, visitez la page',\n      'Données personnelles et cookies',\n      '. Vous pouvez, à tout moment, avoir le contrôle sur les cookies que vous souhaitez activer.',\n    ],\n\n    manager: {\n      title: 'Panneau de gestion des cookies',\n      preferences: 'Préférences pour tous les services.',\n      personalData: 'Données personnelles et cookies',\n      confirmChoices: 'Confirmer mes choix',\n      finalityExempt: 'Activé',\n      showDetails: 'Voir plus de détails',\n    },\n  },\n  display: {\n    heading: 'Paramètres d’affichage',\n    hint: 'Choisissez un thème pour personnaliser l’apparence du site.',\n    light: { label: 'Thème clair' },\n    dark: { label: 'Thème sombre' },\n    system: { label: 'Système', hint: 'Utilise les paramètres système.' },\n  },\n  email: {\n    label: 'Adresse électronique',\n    hint: 'Format attendu : nom@domaine.fr',\n    error: 'Le format de l’adresse électronique saisie n’est pas valide. Le format attendu est : nom@exemple.org',\n  },\n  follow: {\n    networks: { heading: 'Suivez-nous<br/>sur les réseaux sociaux' },\n    newsletter: {\n      heading: 'Abonnez-vous à notre lettre d’information',\n      button: { label: 'S’abonner', title: 'S’abonner à notre lettre d’information' },\n      input: {\n        placeholder: 'Votre adresse électronique (ex. : nom@domaine.fr)',\n        hint: `En renseignant votre adresse électronique, vous acceptez de recevoir nos actualités par courriel. Vous pouvez vous désinscrire à tout moment à l’aide des liens de désinscription ou en nous contactant.`,\n        error: 'Le format de l’adresse électronique saisie n’est pas valide. Le format attendu est : nom@exemple.org',\n      },\n      registration: { success: 'Votre inscription a bien été prise en compte.' },\n    },\n    newWindow: 'Nouvelle fenêtre',\n  },\n  footer: {\n    partners: { title: 'Nos partenaires' },\n  },\n  franceConnect: {\n    title: 'S’identifier avec',\n    link: { label: 'Qu’est-ce que FranceConnect', tooltip: 'Qu’est-ce que FranceConnect ? - nouvelle fenêtre' },\n  },\n  header: {\n    menu: { label: 'Menu' },\n    mainMenu: 'Menu principal',\n  },\n  link: {\n    newWindow: 'nouvelle fenêtre',\n  },\n  login: {\n    heading: 'Connexion à ',\n    franceConnect: {\n      heading: 'Se connecter avec FranceConnnect',\n    },\n    or: 'ou',\n    account: {\n      heading: 'Se connecter avec son compte',\n      email: { label: 'Identifiant' },\n      srOnly: { label: 'identifiants' },\n      rememberMe: { label: 'Se souvenir de moi' },\n      button: { label: 'Se connecter' },\n    },\n    noAccount: { heading: 'Vous n’avez pas de compte ?', button: { label: 'Créer un compte' } },\n  },\n  modal: {\n    ariaLabel: 'Fermer la fenêtre',\n  },\n  notice: {\n    close: 'Masquer le message',\n  },\n  pagination: {\n    firstPage: 'Première page',\n    previousPage: 'Page précédente',\n    nextPage: 'Page suivante',\n    lastPage: 'Dernière page',\n    role: 'navigation',\n    ariaLabel: 'Pagination',\n  },\n  password: {\n    aria: { label: 'Afficher le mot de passe' },\n    forgotPassword: 'Mot de passe oublié ?',\n    label: 'Mot de passe',\n    message: 'Votre mot de passe doit contenir :',\n    show: 'Afficher',\n    dataFrValid: 'validé',\n    dataFrError: 'en erreur',\n  },\n  response: {\n    contactUs: 'Contactez-nous',\n  },\n  select: {\n    placeholder: 'Sélectionnez une option',\n  },\n  share: {\n    'heading': 'Partager la page',\n    'cookiesText': ['Veuillez', 'autoriser le dépôt de cookies', 'pour partager sur les réseaux sociaux.'],\n    //\n    'copy': { title: 'Presse-papier', label: 'Copier dans le presse-papier' },\n    'facebook': { title: 'Facebook', label: 'Partager sur Facebook' },\n    'linkedin': { title: 'LinkedIn', label: 'Partager sur LinkedIn' },\n    'mail': { title: 'Email', label: 'Partager par email' },\n    'mastodon': { title: 'Mastodon', label: 'Partager sur Mastodon' },\n    'twitter': { title: 'X', label: 'Partager sur X' },\n    'twitter-x': { title: 'X', label: 'Partager sur X' },\n  },\n  table: {\n    noData: 'Aucune donnée',\n  },\n  tag: {\n    removeFilter: 'Retirer le filtre',\n    selectFilter: 'Sélectionner le filtre',\n  },\n  tel: {\n    label: 'Numéro de téléphone',\n    hint: 'Format attendu : (+33) 1 23 45 67 89',\n    error: 'Le format de numéro de téléphone saisie n’est pas valide. Le format attendu est : (+33) 2 43 55 55 55',\n  },\n  toggle: {\n    dataLabelChecked: 'Activé',\n    dataLabelUnchecked: 'Désactivé',\n  },\n  tooltip: {\n    button: { label: 'Information contextuelle' },\n  },\n  transcription: {\n    button: 'Transcription',\n    ariaLabel: 'Agrandir la transcription',\n  },\n  translate: {\n    tooltip: 'Sélectionner une langue',\n  },\n  upload: {\n    label: 'Ajouter un fichier',\n    hint: \"** Texte d'aide obligatoire qui précise les contraintes au niveau du ou des fichiers attendus **\",\n  },\n  date: {\n    day: { label: 'Jour', hint: 'Exemple : 14' },\n    month: { label: 'Mois', hint: 'Exemple : 12' },\n    year: { label: 'Année', hint: 'Exemple : 1984' },\n    error: {\n      required: 'Tous les champs sont requis.',\n      invalid: {\n        format: 'Les champs doivent être au format numérique.',\n        day: 'Le jour est invalide.',\n        month: 'Le mois est invalide.',\n        date: 'La date est invalide.',\n      },\n    },\n  },\n  pageResponse: {\n    heading: 'Erreur inattendue',\n    description: 'Essayez de rafraichir la page ou bien ressayez plus tard.',\n    detail: 'Désolé, le service rencontre un problème, nous travaillons pour le résoudre le plus rapidement possible.',\n  },\n};\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { DSFR_CONFIG_TOKEN } from '../config/config-token';\nimport { DsfrConfig } from '../config/config.model';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ConfigService {\n  /**\n   * Puisqu'il est possible que les utilisateurs de la bibliothèque oublient d'appeler forRoot(), nous marquons\n   * le jeton DI comme optionnel à l'aide du décorateur intégré (pour éviter une erreur \"Aucun fournisseur pour ...\").\n   * Dans ces cas, le paramètre constructeur sera nul, mais nous fournirons des valeurs par défaut.\n   */\n  constructor(\n    @Optional()\n    @Inject(DSFR_CONFIG_TOKEN)\n    public readonly params: DsfrConfig | null,\n  ) {}\n}\n","import { Injectable } from '@angular/core';\nimport { isOnBrowser } from '../utils';\n\n/** Levels used for identifying the severity of an event. Levels are organized from most specific to least. */\nexport enum DsfrLogLevel {\n  OFF = 0, // No events will be logged.\n  ERROR = 2, // An error in the application, possibly recoverable.\n  WARN, // An event that might possible lead to an error.\n  INFO, // An event for informational purposes.\n  DEBUG, // A general debugging event.\n  ALL = 7, // All events should be logged\n}\n\n@Injectable({\n  providedIn: 'root',\n})\n/** Les opérations de journalisation de la librairie sont effectuées via ce service. */\nexport class LoggerService {\n  /** Indique à partir de quel niveau on effectue la journalisation, WARN par défaut. */\n  private _level = DsfrLogLevel.WARN;\n\n  constructor() {}\n\n  set level(value: DsfrLogLevel) {\n    if (!value) return;\n    this._level = value;\n    this.info(`Configuration du niveau de log : '${this.levelAsString()}'`);\n  }\n\n  error(message: string) {\n    this.log(DsfrLogLevel.ERROR, message);\n  }\n\n  warn(message: string) {\n    this.log(DsfrLogLevel.WARN, message);\n  }\n\n  info(message: string) {\n    this.log(DsfrLogLevel.INFO, message);\n  }\n\n  debug(message: string) {\n    this.log(DsfrLogLevel.DEBUG, message);\n  }\n\n  private log(level: DsfrLogLevel, message: string) {\n    if (!isOnBrowser()) return;\n\n    if (level <= this._level) {\n      switch (level) {\n        case DsfrLogLevel.ERROR:\n          console.error(message);\n          break;\n        case DsfrLogLevel.WARN:\n          console.warn(message);\n          break;\n        case DsfrLogLevel.INFO:\n          console.info(message);\n          break;\n        default:\n          console.log(message);\n          break;\n      }\n    }\n  }\n\n  private levelAsString() {\n    switch (this._level) {\n      case DsfrLogLevel.OFF:\n        return 'OFF';\n      case DsfrLogLevel.ERROR:\n        return 'ERROR';\n      case DsfrLogLevel.WARN:\n        return 'WARN';\n      case DsfrLogLevel.INFO:\n        return 'INFO';\n      case DsfrLogLevel.DEBUG:\n        return 'DEBUG';\n      case DsfrLogLevel.ALL:\n        return 'ALL';\n    }\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { LocalStorage } from '../utils';\nimport { LoggerService } from './logger.service';\n\n/**\n * Le service est chargé de maintenir le code langue de l'application et de signaler le changement de langue aux observateurs.\n */\n@Injectable({ providedIn: 'root' })\nexport class LangService {\n  private static readonly DEF_LANG = 'fr';\n\n  /** Observable de la langue. */\n  subject = new BehaviorSubject<string>(LangService.DEF_LANG);\n\n  /** Par défaut, le code de la langue est stocké dans le localStorage.  */\n  private hasLocalStorage = true;\n\n  /** Nom par défaut du local storage. */\n  private localStorageName = 'lang';\n\n  constructor(private logger: LoggerService) {\n    if (this.hasLocalStorage) {\n      const lang = LocalStorage.get(this.localStorageName);\n      if (lang) this.lang = <string>LocalStorage.get(this.localStorageName);\n    }\n  }\n\n  get lang(): string {\n    return this.subject.value;\n  }\n\n  set lang(code: string) {\n    if (!code || code === this.lang) return;\n\n    this.logger.info(`Changement de langue courante: '${code}'`);\n    this.subject.next(code);\n\n    if (this.hasLocalStorage) LocalStorage.set(this.localStorageName, code);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { jsonPath2Value } from '../utils';\nimport { LangService } from './lang.service';\nimport { LoggerService } from './logger.service';\n\n/**\n * La méthode i18n.t() de ce service retourne une traduction en fonction de la langue courante.\n * La traduction est recherchée dans la propriété `messages`.\n */\n@Injectable({ providedIn: 'root' })\nexport class BaseI18nService {\n  /**\n   * Messages (JSON) de la langue courante.\n   */\n  messages: {} = {};\n\n  constructor(\n    protected logger: LoggerService,\n    private langService: LangService,\n  ) {\n    langService.subject.subscribe((code) => this.onLangChange(code));\n  }\n\n  /**\n   * Retourne la valeur de traduction dans `messages` partir d'un path json.\n   * @param jsonPath le chemin dans le fichier de messages json de la langue courante\n   * @return le message et si non trouvé le path json\n   */\n  t(jsonPath: string): string {\n    let message: string = jsonPath2Value(this.messages, jsonPath);\n    if (!message) {\n      this.logger.warn(`Aucune traduction '${this.langService.lang}' pour '${jsonPath}'`);\n      message = jsonPath;\n    }\n    return message;\n  }\n\n  protected onLangChange(code: string) {}\n}\n","import { Injectable } from '@angular/core';\nimport { MESSAGES_EN, MESSAGES_FR } from '../properties';\nimport { BaseI18nService } from './base-i18n.service';\n\n/** Le service est chargé de maintenir le code langue de l'application et de signaler le changement de langue aux observateurs */\n@Injectable({ providedIn: 'root' })\nexport class I18nService extends BaseI18nService {\n  protected override onLangChange(code: string): void {\n    this.messages = code === 'fr' ? MESSAGES_FR : MESSAGES_EN;\n  }\n}\n","import { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { DsfrHeadingLevel, DsfrHeadingLevelConst, newUniqueId } from '../../shared';\n\n@Component({\n  selector: 'dsfr-accordion',\n  templateUrl: './accordion.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrAccordionComponent implements OnInit {\n  /**\n   * Contenu de l'accordéon, accepte du html, prioritaire sur le slot par défaut.\n   */\n  @Input() content: string;\n\n  /**\n   * Indique si l'accordéon doit être ouvert initialement.\n   */\n  @Input() expanded: boolean = false;\n\n  /**\n   * Le titre de l'accordéon est du texte simple.\n   */\n  @Input() heading: string;\n\n  /**\n   * Le niveau du titre dans la structure, ne change pas l'apparence, `<h3>` par défaut.\n   */\n  @Input() headingLevel: DsfrHeadingLevel = DsfrHeadingLevelConst.H3;\n\n  /**\n   * Index qui identifie l'accordéon sur la page. Identifiant unique généré par défaut.\n   *\n   * @deprecated (@since 1.8.0) jamais utilisé\n   */\n  @Input() index: string;\n\n  /**\n   * Attribut d'accessibilité pour l'entête de l'accordéon.\n   */\n  @Input() headingAriaLabel: string;\n\n  /**\n   * Événement présentant le nouvel état de l'accordéon.\n   */\n  @Output() expandedChange = new EventEmitter<boolean>();\n\n  /** @internal */\n  accordionId: string;\n\n  constructor() {}\n\n  ngOnInit() {\n    this.accordionId = newUniqueId();\n  }\n\n  /** @internal */\n  onExpandButtonAttrChange(mutation: MutationRecord) {\n    if (mutation.attributeName === 'aria-expanded') {\n      const elem: HTMLElement = <HTMLElement>mutation.target;\n      if (String(this.expanded) !== elem.ariaExpanded) {\n        this.expanded = elem.ariaExpanded === 'true';\n        this.expandedChange.emit(this.expanded);\n      }\n    }\n  }\n}\n","<section class=\"fr-accordion\">\n  <edu-heading [level]=\"headingLevel\" defaultLevel=\"H3\" customClass=\"fr-accordion__title\">\n    <ng-container *ngTemplateOutlet=\"accordionButton\"></ng-container>\n  </edu-heading>\n\n  <div class=\"fr-collapse\" [id]=\"accordionId\">\n    <!-- La propriété content est prioritaire sur le slot -->\n    <ng-container *ngIf=\"content\">{{ content }}</ng-container>\n    <ng-content *ngIf=\"!content\"></ng-content>\n    <!-- TODO @deprecated à supprimer en v2 au profit du slot par défaut -->\n    <ng-content *ngIf=\"!content\" select=\"[content]\"></ng-content>\n    <!-- TODO @deprecated à supprimer en v2 au profit du slot par défaut -->\n    <ng-content *ngIf=\"!content\" select=\"[body]\"></ng-content>\n  </div>\n</section>\n\n<ng-template #accordionButton>\n  <button\n    type=\"button\"\n    class=\"fr-accordion__btn\"\n    [attr.aria-expanded]=\"expanded\"\n    [attr.aria-controls]=\"accordionId\"\n    [attr.aria-label]=\"headingAriaLabel\"\n    (watchAttr)=\"onExpandButtonAttrChange($event)\"\n    watchAttrName=\"aria-expanded\">\n    <!-- La propriété heading est prioritaire sur le slot de même nom -->\n    <ng-container *ngIf=\"heading\">{{ heading }}</ng-container>\n    <!-- TODO à déprécier en v2 au profit d'un simple outerHTML car trop compliqué, il faut  l'expliquer, pas intuitif -->\n    <ng-content *ngIf=\"!heading\" select=\"[heading]\"></ng-content>\n  </button>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { HeadingModule, WatchAttrDirective } from '../../shared';\nimport { DsfrAccordionComponent } from './accordion.component';\n\n@NgModule({\n  declarations: [DsfrAccordionComponent],\n  exports: [DsfrAccordionComponent],\n  imports: [CommonModule, HeadingModule, WatchAttrDirective],\n})\nexport class DsfrAccordionModule {}\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'dsfr-accordions-group',\n  templateUrl: './accordions-group.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrAccordionsGroupComponent {\n  /** Dissocie le groupe d'accordéon pour en avoir plusieurs d'ouvert à la fois.*/\n  @Input() ungroup = false;\n}\n","<div [attr.data-fr-group]=\"ungroup ? false : null\" class=\"fr-accordions-group\">\n  <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DsfrAccordionsGroupComponent } from './accordions-group.component';\n\n@NgModule({\n  declarations: [DsfrAccordionsGroupComponent],\n  exports: [DsfrAccordionsGroupComponent],\n  imports: [CommonModule],\n})\nexport class DsfrAccordionsGroupModule {}\n","export namespace DsfrAlertSizeConst {\n  export const SM = 'SM';\n  export const MD = 'MD';\n}\n\nexport type DsfrAlertSize = (typeof DsfrAlertSizeConst)[keyof typeof DsfrAlertSizeConst];\n","import { Component, ElementRef, EventEmitter, Input, Output, Renderer2, ViewEncapsulation } from '@angular/core';\nimport { DsfrHeadingLevel, DsfrSeverity, DsfrSeverityConst, DsfrSizeConst, I18nService } from '../../shared';\nimport { DsfrAlertSize, DsfrAlertSizeConst } from './alert.size';\n\n@Component({\n  selector: 'dsfr-alert',\n  templateUrl: './alert.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrAlertComponent {\n  /** Le titre de l'alerte (html autorisé). */\n  @Input() heading: string;\n\n  /** Le niveau de titre devant être utilisé, une balise <p> sera utilisée si la propriété n'est pas renseignée. */\n  @Input() headingLevel: DsfrHeadingLevel;\n\n  /** Le corps du message de l'alerte (textex simple). */\n  @Input() message: string;\n\n  /** Le niveau d'alerte. 'info' par défaut. */\n  @Input() severity: DsfrSeverity;\n\n  /** La valeur à utiliser pour le rôle ARIA. 'alert' par défaut. */\n  @Input() ariaRoleValue: 'alert' | 'status' = 'alert';\n\n  /** La taille de l'alerte. 'MD' par défaut. */\n  @Input() size: DsfrAlertSize;\n\n  /** Le libellé associé au bouton de fermeture de l'alerte. */\n  @Input() closeControlLabel: string;\n\n  /** Doit être vrai si l'alerte apparait dynamiquement en cours de navigation. (ajout de role=alert pour l'accessibilité),\n   *  false par défaut */\n  // https://www.systeme-de-design.gouv.fr/elements-d-interface/composants/alerte\n  // Pour les développeurs.\n  // Nous avons retiré l’attribut role=\"alert\" des exemples de code pour les alertes présentes au chargement de la page.\n  // En effet, l'élément avec un role=\"alert\" sont les premières choses lues par les technologies d'assistance.\n  // De ce fait, le role=\"alert\" doit être réservé aux alertes ajoutées (/injectées) dynamiquement au cours de la navigation.\n  // Ex : alertes de notification suite à une action utilisateur ou mise à jour d’un statut.\n  @Input() hasAriaRole = false;\n\n  /** L'alerte peut être masquée */\n  @Input() closeable = false;\n\n  /** Signale la fermeture de l'alerte. */\n  @Output() conceal = new EventEmitter<void>();\n\n  constructor(\n    private i18n: I18nService,\n    private el: ElementRef,\n    private renderer: Renderer2,\n  ) {\n    this.closeControlLabel = this.i18n.t('alert.close');\n    this.severity = DsfrSeverityConst.INFO;\n    this.size = DsfrAlertSizeConst.MD;\n  }\n\n  /** @deprecated @since 1.7.0 use 'closeable' instead (avec un 'e') */\n  get closable(): boolean {\n    return this.closeable;\n  }\n\n  /** @deprecated (@since 1.7.0) utiliser `closeable` à la place (avec un 'e') */\n  @Input() set closable(value: boolean) {\n    this.closeable = value;\n  }\n\n  /** @internal */\n  getClasses(): string[] {\n    const classes = ['fr-alert'];\n    if (this.severity === DsfrSeverityConst.ERROR) classes.push('fr-alert--error');\n    if (this.severity === DsfrSeverityConst.SUCCESS) classes.push('fr-alert--success');\n    if (this.severity === DsfrSeverityConst.INFO) classes.push('fr-alert--info');\n    if (this.severity === DsfrSeverityConst.WARNING) classes.push('fr-alert--warning');\n    if (this.size === DsfrSizeConst.SM) classes.push('fr-alert--sm');\n    return classes;\n  }\n\n  /** @internal */\n  isSmall(): boolean {\n    return this.size == DsfrSizeConst.SM;\n  }\n\n  /** @internal */\n  onClose(event: Event): void {\n    const parentNode = this.el.nativeElement?.parentNode;\n    if (parentNode) {\n      this.renderer.removeChild(parentNode, this.el.nativeElement, true);\n    }\n\n    this.conceal.emit();\n  }\n}\n","<div [attr.role]=\"hasAriaRole ? ariaRoleValue : null\" [ngClass]=\"getClasses()\">\n  <ng-container *ngTemplateOutlet=\"headingTemplate\"></ng-container>\n  <p>{{ message }}</p>\n  <button\n    *ngIf=\"closable\"\n    type=\"button\"\n    class=\"fr-btn--close fr-btn\"\n    [title]=\"closeControlLabel\"\n    (click)=\"onClose($event)\">\n    {{ closeControlLabel }}\n  </button>\n</div>\n\n<!-- Templates ----------------------------------------------------------------------------------------------------- -->\n<ng-template #headingTemplate>\n  <ng-container [ngSwitch]=\"headingLevel\">\n    <h2 *ngSwitchCase=\"'H2'\" class=\"fr-alert__title\">\n      <ng-container *ngTemplateOutlet=\"headingPropTemplate\"></ng-container>\n    </h2>\n    <h3 *ngSwitchCase=\"'H3'\" class=\"fr-alert__title\">\n      <ng-container *ngTemplateOutlet=\"headingPropTemplate\"></ng-container>\n    </h3>\n    <h4 *ngSwitchCase=\"'H4'\" class=\"fr-alert__title\">\n      <ng-container *ngTemplateOutlet=\"headingPropTemplate\"></ng-container>\n    </h4>\n    <h5 *ngSwitchCase=\"'H5'\" class=\"fr-alert__title\">\n      <ng-container *ngTemplateOutlet=\"headingPropTemplate\"></ng-container>\n    </h5>\n    <h6 *ngSwitchCase=\"'H6'\" class=\"fr-alert__title\">\n      <ng-container *ngTemplateOutlet=\"headingPropTemplate\"></ng-container>\n    </h6>\n    <p *ngSwitchDefault class=\"fr-alert__title\">\n      <ng-container *ngTemplateOutlet=\"headingPropTemplate\"></ng-container>\n    </p>\n  </ng-container>\n</ng-template>\n\n<ng-template #headingPropTemplate>\n  <ng-container *ngIf=\"heading; else headingContentTemplate\"><span outerHTML=\"{{ heading }}\"></span></ng-container>\n</ng-template>\n\n<ng-template #headingContentTemplate>\n  <ng-content></ng-content>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DsfrAlertComponent } from './alert.component';\n\n@NgModule({\n  declarations: [DsfrAlertComponent],\n  exports: [DsfrAlertComponent],\n  imports: [CommonModule],\n})\nexport class DsfrAlertModule {}\n","import { Component, ViewEncapsulation } from '@angular/core';\nimport { I18nService } from '../../shared';\n\n@Component({\n  selector: 'dsfr-backtotop',\n  templateUrl: './backtotop.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrBackToTopComponent {\n  constructor(/** @internal */ public i18n: I18nService) {}\n}\n","<a class=\"fr-link fr-icon-arrow-up-fill fr-link--icon-left\" href=\"#top\">\n  {{ i18n.t('backtotop.topOfPage') }}\n</a>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DsfrBackToTopComponent } from './backtotop.component';\n\n@NgModule({\n  declarations: [DsfrBackToTopComponent],\n  exports: [DsfrBackToTopComponent],\n  imports: [CommonModule],\n})\nexport class DsfrBackToTopModule {}\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { DsfrSizeConst } from '../../shared';\nimport { DsfrBadgeSeverity, DsfrBadgeSize } from './badges.model';\n\n@Component({\n  selector: 'dsfr-badge',\n  templateUrl: './badge.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrBadgeComponent {\n  /** Label du badge, obligatoire. */\n  @Input() label: string;\n\n  /**\n   * L'icône de sévérité n'est pas affiché si `true` (`false` par défaut).\n   * Attention seuls les badges dits \"système\" peuvent avoir une icône, les badges \"custom\" ne le peuvent pas.\n   */\n  @Input() noIcon = false;\n\n  /** Taille du badge, optionnel, `MD` par défaut. */\n  @Input() size: DsfrBadgeSize = 'MD';\n\n  /** Classe personnalisée pour la couleur du badge.  */\n  @Input() customClass: string;\n\n  /** @internal */\n  private _severity: DsfrBadgeSeverity | undefined = undefined;\n\n  get severity(): DsfrBadgeSeverity | undefined {\n    return this._severity;\n  }\n\n  /** Niveau d'alerte, optionnel. */\n  @Input() set severity(value: DsfrBadgeSeverity | undefined) {\n    this._severity = !value ? undefined : <DsfrBadgeSeverity>value?.toLowerCase();\n  }\n\n  /** @internal */\n  getClasses() {\n    if (!this.severity) return '';\n    return {\n      // Severity\n      'fr-badge--new': this.severity === 'new',\n      'fr-badge--success': this.severity === 'success',\n      'fr-badge--info': this.severity == 'info',\n      'fr-badge--warning': this.severity == 'warning',\n      'fr-badge--error': this.severity === 'error',\n      // small\n      'fr-badge--sm': this.size === DsfrSizeConst.SM && this.label,\n      // no-icon (system badges)\n      'fr-badge--no-icon': this.noIcon,\n    };\n  }\n}\n","<p class=\"fr-badge\" [class]=\"customClass ?? ''\" [ngClass]=\"getClasses()\">\n  <span class=\"fr-ellipsis\">{{ label }}</span>\n</p>\n","import { CommonModule } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { DsfrBadgeComponent } from './badge.component';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [DsfrBadgeComponent],\n  exports: [DsfrBadgeComponent],\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class DsfrBadgeModule {}\n","/**\n * Définition d'un badge dans un groupe de badges\n */\nexport interface DsfrBadge {\n  /** Label du badge **/\n  label: string;\n\n  /** Niveau d'alerte. Optionnel. */\n  severity?: DsfrBadgeSeverity;\n\n  /** L'icône de sévérité n'est pas affiché si 'true' (il est affiché par défaut). */\n  noIcon?: boolean;\n\n  /** @deprecated since 1.9. Ignoré, La taille des badges dans un groupe est liée au groupe. */\n  size?: DsfrBadgeSize;\n\n  /** Classe personnalisée pour la couleur du badge.  */\n  customClass?: string;\n}\n\n// -- Severity ---------------------------------------------------------------------------------------------------------\n\nexport namespace DsfrBadgeSeverityConst {\n  export const NEW = 'new';\n  export const INFO = 'info';\n  export const SUCCESS = 'success';\n  export const WARNING = 'warning';\n  export const ERROR = 'error';\n}\n\n/** Sévérité des badges, (minuscules recommandées) */\ntype Type = typeof DsfrBadgeSeverityConst;\nexport type DsfrBadgeSeverity = Type[keyof Type] | 'NEW' | 'SUCCESS' | 'INFO' | 'WARNING' | 'ERROR';\n\n// -- Size ---------------------------------------------------------------------------------------------------------\n\nexport type DsfrBadgeSize = 'SM' | 'MD';\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { DsfrBadge } from '../badge';\n\n@Component({\n  selector: 'dsfr-badges-group',\n  templateUrl: './badges-group.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrBadgesGroupComponent {\n  /** Tableau de type `<Badge>`. */\n  @Input() badges: DsfrBadge[] = [];\n\n  /** @since 1.9.0 Taille des badges */\n  @Input() small = false;\n}\n","<ul class=\"fr-badges-group\" [class.fr-badges-group--sm]=\"small\">\n  <li *ngFor=\"let badge of badges\">\n    <dsfr-badge\n      [label]=\"badge.label\"\n      [noIcon]=\"badge.noIcon ?? false\"\n      [severity]=\"badge.severity ?? undefined\"\n      [customClass]=\"badge.customClass ?? ''\"></dsfr-badge>\n  </li>\n</ul>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DsfrBadgeModule } from '../badge';\nimport { DsfrBadgesGroupComponent } from './badges-group.component';\n\n@NgModule({\n  declarations: [DsfrBadgesGroupComponent],\n  exports: [DsfrBadgesGroupComponent],\n  imports: [CommonModule, DsfrBadgeModule],\n})\nexport class DsfrBadgesGroupModule {}\n","import { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { IsActiveMatchOptions, NavigationExtras } from '@angular/router';\nimport {\n  DsfrLink,\n  DsfrLinkTarget,\n  DsfrLinkTargetConst,\n  DsfrPosition,\n  DsfrPositionConst,\n  DsfrSize,\n  DsfrSizeConst,\n  I18nService,\n} from '../../shared';\n\n@Component({\n  selector: 'dsfr-link',\n  templateUrl: './link.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrLinkComponent implements Omit<DsfrLink, 'active' | 'target'>, OnInit {\n  /** Permet d'ajouter un attribut `aria-current` sur le lien.*/\n  @Input() ariaCurrent: string | undefined;\n\n  /** @since 1.4.0 La propriété ariaLabel définit une valeur de chaîne qui étiquette un élément interactif. */\n  @Input() ariaLabel: string | undefined;\n\n  /** @since 1.7 Identifie l'élément (ou les éléments) contrôlé par cet élément. */\n  @Input() ariaControls: string | undefined;\n\n  /** Pour ajouter des classes CSS custom. */\n  @Input() customClass: string | undefined;\n\n  /**\n   * Permet de désactiver le composant.\n   */\n  @Input() disabled = false;\n\n  /** Classe de l'icône. */\n  @Input() icon: string | undefined;\n\n  /** Position de l'icône. À droite par défaut. */\n  @Input() iconPosition: DsfrPosition | undefined = DsfrPositionConst.RIGHT;\n\n  /** @since 1.6 */\n  @Input() linkId: string | undefined;\n\n  /** Texte du lien. */\n  @Input() label: string;\n\n  /** Lien href externe, exclusif avec route et routePath. */\n  @Input() link: string | undefined;\n\n  /** Attribut target du lien. */\n  // Le nom 'target' crée un problème avec le CSS DSFR, puisque du coup, on a target=\"_blank\" dans le host et un\n  // style s'applique, ce qui provoque un doublement de l'icône lien externe.\n  @Input() linkTarget: DsfrLinkTarget | undefined;\n\n  /** Path interne. Exclusif avec link et routePath, prioritaire sur link. */\n  @Input() route: string | undefined;\n\n  /** Path angular géré en tant que directive routerLink. Prioritaire et exclusif avec link et route. */\n  @Input() routePath: string | string[] | undefined;\n\n  /** Classe CSS utilisée pour la directive routerLink active. */\n  @Input() routerLinkActive: string | string[] | undefined;\n\n  /** RouterLink : options additionnelles pour le routerLinkActive (exact). */\n  @Input() routerLinkActiveOptions: { exact: boolean } | IsActiveMatchOptions | undefined;\n\n  /** RouterLink : options additionnelles ppour le routerLink (queryParams, state, etc.) */\n  @Input() routerLinkExtras: NavigationExtras | undefined;\n\n  /** Taille du lien. */\n  @Input() size: DsfrSize = DsfrSizeConst.MD;\n\n  /** Message du tooltip (attribut title). @since 1.3.0 */\n  @Input() tooltipMessage: string | undefined;\n\n  /** @since 1.7.0 Transforme un lien en bouton si `button`, `link` par défaut. */\n  @Input() mode: 'link' | 'button' | undefined;\n\n  /**\n   * Si l'input 'route' est renseigné, sa valeur sera émise lorsque le lien est sélectionné.\n   */\n  @Output() linkSelect = new EventEmitter<string>();\n\n  constructor(private i18n: I18nService) {}\n\n  /** @deprecated @since 1.5 utiliser `linkTarget` à la place. */\n  get targetLink(): DsfrLinkTarget | undefined {\n    return this.linkTarget;\n  }\n\n  /** @deprecated @since 1.5 utiliser `linkTarget` à la place. */\n  @Input() set targetLink(value: DsfrLinkTarget | undefined) {\n    this.linkTarget = value;\n  }\n\n  /**\n   * @deprecated (@since 1.11.5) utiliser `routePath` à la place.\n   * routerLink provoque un bug accessibilité sur la navigation au clavier (ajout d'un tabindex=0)\n   **/\n  @Input() set routerLink(value: string | string[] | undefined) {\n    if (value) this.routePath = value;\n  }\n\n  ngOnInit(): void {\n    if (this.linkTarget === DsfrLinkTargetConst.BLANK) {\n      this.tooltipMessage = this.tooltipMessage\n        ? ` ${this.tooltipMessage} - ${this.i18n.t('link.newWindow')}`\n        : `${this.i18n.t('link.newWindow')}`;\n    }\n  }\n\n  /** @internal */\n  getHref(): string | undefined {\n    return this.disabled ? undefined : this.link || this.route;\n  }\n\n  /** @internal */\n  hasRouterLink(): boolean {\n    return !this.disabled && !!this.routePath;\n  }\n\n  /** @internal */\n  /*\n   * DsfrLink est partagé par plusieurs composants, 'tag', 'card' et 'tile' à la place d'un simple lien.\n   * Cela permet de bénéficier des nombreuses caractéristiques du composant DsfrLink.\n   * @since 1.5 Cependant, la classe 'fr-link' ne doit pas cohabiter les classes de ces composants ('fr-tag', ...)\n   */\n  getClass() {\n    return {\n      'fr-link': !this.customClass && !this.disabled,\n      'fr-link--icon-right': this.icon && this.iconPosition === DsfrPositionConst.RIGHT,\n      'fr-link--icon-left': this.icon && this.iconPosition === DsfrPositionConst.LEFT,\n      'fr-link--sm': this.size === DsfrSizeConst.SM,\n      'fr-link--lg': this.size === DsfrSizeConst.LG,\n    };\n  }\n\n  /** @internal */\n  getButtonClasses(): string {\n    const classes = ['fr-btn', 'fr-btn--tertiary-no-outline'];\n    if (this.customClass) classes.push(this.customClass);\n\n    if (this.icon) {\n      classes.push(this.icon);\n      classes.push(this.iconPosition === DsfrPositionConst.RIGHT ? 'fr-btn--icon-right' : 'fr-btn--icon-left');\n    }\n\n    return classes.join(' ');\n  }\n\n  /** @internal */\n  onLink(event: Event) {\n    if (this.route && !this.routePath) {\n      event.preventDefault();\n      this.linkSelect.emit(this.route);\n    } else if (this.link) {\n      this.linkSelect.emit(this.link);\n    }\n  }\n}\n","<!-- Lien externe ou géré programmatiquement -->\n<a\n  *ngIf=\"!hasRouterLink() && mode !== 'button'\"\n  class=\"{{ customClass ? customClass : '' }}\"\n  [className]=\"icon ? icon : ''\"\n  [ngClass]=\"getClass()\"\n  [attr.aria-current]=\"ariaCurrent || null\"\n  [attr.aria-controls]=\"ariaControls || null\"\n  [attr.aria-disabled]=\"disabled || null\"\n  [attr.aria-label]=\"ariaLabel || null\"\n  [attr.role]=\"disabled ? 'link' : null\"\n  [attr.id]=\"linkId || null\"\n  [attr.href]=\"getHref() || null\"\n  [attr.target]=\"targetLink || null\"\n  [attr.title]=\"tooltipMessage || null\"\n  [attr.rel]=\"linkTarget === '_blank' ? 'noopener external' : null\"\n  [attr.data-fr-opened]=\"ariaControls ? false : null\"\n  (click)=\"onLink($event)\">\n  <div *ngIf=\"label\" [outerHTML]=\"label\"></div>\n  <ng-container *ngIf=\"!label\" [ngTemplateOutlet]=\"slot\"></ng-container>\n</a>\n\n<!-- Directive router link-->\n<a\n  *ngIf=\"hasRouterLink() && mode !== 'button'\"\n  [attr.id]=\"linkId || null\"\n  class=\"{{ customClass ? customClass : '' }}\"\n  [className]=\"icon ? icon : ''\"\n  [ngClass]=\"getClass()\"\n  [ariaCurrentWhenActive]=\"'page'\"\n  [attr.aria-current]=\"ariaCurrent || null\"\n  [attr.aria-controls]=\"ariaControls || null\"\n  [attr.aria-disabled]=\"disabled || null\"\n  [attr.aria-label]=\"ariaLabel || null\"\n  [attr.role]=\"disabled ? 'link' : null\"\n  [routerLink]=\"routePath\"\n  [routerLinkActive]=\"routerLinkActive ?? ''\"\n  [routerLinkActiveOptions]=\"routerLinkActiveOptions ? routerLinkActiveOptions : { exact: false }\"\n  [queryParams]=\"routerLinkExtras?.queryParams\"\n  [fragment]=\"routerLinkExtras?.fragment\"\n  [queryParamsHandling]=\"routerLinkExtras?.queryParamsHandling\"\n  [preserveFragment]=\"routerLinkExtras?.preserveFragment\"\n  [skipLocationChange]=\"routerLinkExtras?.skipLocationChange\"\n  [replaceUrl]=\"routerLinkExtras?.replaceUrl\"\n  [state]=\"routerLinkExtras?.state\"\n  [attr.target]=\"targetLink || null\"\n  [attr.title]=\"tooltipMessage || null\"\n  (click)=\"onLink($event)\">\n  <div *ngIf=\"label\" [outerHTML]=\"label\"></div>\n  <ng-container *ngIf=\"!label\" [ngTemplateOutlet]=\"slot\"> </ng-container>\n</a>\n\n<!-- Bouton en apparence de lien-->\n<button\n  *ngIf=\"mode === 'button'\"\n  type=\"button\"\n  [ngClass]=\"getButtonClasses()\"\n  [attr.aria-controls]=\"ariaControls || null\"\n  [attr.aria-label]=\"ariaLabel || null\"\n  [attr.data-fr-opened]=\"ariaControls ? false : null\"\n  [attr.title]=\"tooltipMessage || null\"\n  (click)=\"onLink($event)\">\n  <div *ngIf=\"label\" [outerHTML]=\"label\"></div>\n  <ng-container *ngIf=\"!label\" [ngTemplateOutlet]=\"slot\"> </ng-container>\n</button>\n\n<ng-template #slot>\n  <ng-content></ng-content>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { DsfrLink, DsfrPosition, DsfrPositionConst } from '../../shared';\nimport { DsfrLinkComponent } from './link.component';\n\n@Component({\n  selector: 'edu-item-link',\n  templateUrl: './link.component.html',\n  encapsulation: ViewEncapsulation.None,\n  standalone: true,\n  imports: [CommonModule, RouterModule],\n})\nexport class ItemLinkComponent extends DsfrLinkComponent {\n  // DsfrPositionConst.RIGHT pour être, malheureusement, compatible avec l'existant. undefined dans l'idéal.\n  @Input() defaultIconPosition: DsfrPosition | undefined = DsfrPositionConst.RIGHT;\n\n  /**@internal */\n  private _item: DsfrLink | undefined;\n\n  /**@internal */\n  get item(): DsfrLink | undefined {\n    return this._item;\n  }\n\n  /** @since 1.7 Optionnel, utilisation avec un model DsfrLink (exclusif avec les autres propriétés) */\n  @Input() set item(value: DsfrLink | undefined) {\n    this._item = value;\n    if (this._item) {\n      this.ariaControls = this._item.ariaControls;\n      this.ariaCurrent = this._item.active ? 'page' : undefined;\n      this.ariaLabel = this._item.ariaLabel;\n      this.routePath = this._item.routerLink;\n      this.route = this._item.route;\n      this.routerLinkActive = this._item.routerLinkActive;\n      this.routerLinkActiveOptions = this._item?.routerLinkActiveOptions;\n      this.routerLinkExtras = this._item.routerLinkExtras;\n      this.customClass = this.customClass || this._item.customClass;\n      this.disabled = this._item.disabled || false;\n      this.mode = this._item.mode;\n      this.icon = this._item.icon;\n      this.iconPosition = this._item.iconPosition || this.defaultIconPosition;\n      this.label = this._item.label;\n      this.link = this._item.link;\n      this.linkId = this._item.linkId;\n      this.linkTarget = this._item.linkTarget || this._item.target;\n      this.tooltipMessage = this._item.tooltipMessage;\n    }\n  }\n}\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { DsfrLink, I18nService } from '../../shared';\n\n@Component({\n  selector: 'dsfr-breadcrumb',\n  templateUrl: './breadcrumb.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrBreadcrumbComponent {\n  /** Tableau d'item du fil d'Ariane. */\n  @Input() items: DsfrLink[] = [];\n\n  /** Attribut aria-label de la balise `nav` du fil d'Ariane. */\n  @Input() ariaLabel: string;\n\n  /** Confirmation du clic sur le bouton. */\n  @Output() linkSelect = new EventEmitter<DsfrLink>();\n\n  /** @internal */\n  constructor(public i18n: I18nService) {\n    this.ariaLabel = this.i18n.t('breadcrumb.ariaLabel');\n  }\n\n  /** @internal */\n  onItem(item: DsfrLink): void {\n    this.linkSelect.emit(item);\n  }\n}\n","<nav role=\"navigation\" class=\"fr-breadcrumb\" [attr.aria-label]=\"ariaLabel\">\n  <button type=\"button\" class=\"fr-breadcrumb__button\" aria-expanded=\"false\" aria-controls=\"breadcrumb-1\">\n    {{ i18n.t('breadcrumb.viewBreadcrumb') }}\n  </button>\n  <div class=\"fr-collapse\" id=\"breadcrumb-1\">\n    <ol class=\"fr-breadcrumb__list\">\n      <li *ngFor=\"let item of items; let isFirst = first; let isLast = last\">\n        <a *ngIf=\"isLast\" class=\"fr-breadcrumb__link\" aria-current=\"page\" [attr.aria-label]=\"item.ariaLabel || null\">\n          {{ item.label }}\n        </a>\n        <edu-item-link\n          *ngIf=\"!isLast\"\n          (linkSelect)=\"onItem(item)\"\n          [customClass]=\"'fr-breadcrumb__link'\"\n          [item]=\"item\"></edu-item-link>\n      </li>\n    </ol>\n  </div>\n</nav>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ItemLinkComponent } from '../link/item-link.component';\nimport { DsfrBreadcrumbComponent } from './breadcrumb.component';\n\n@NgModule({\n  declarations: [DsfrBreadcrumbComponent],\n  exports: [DsfrBreadcrumbComponent],\n  imports: [CommonModule, ItemLinkComponent],\n})\nexport class DsfrBreadcrumbModule {}\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport {\n  DsfrButton,\n  DsfrButtonType,\n  DsfrButtonVariant,\n  DsfrButtonVariantConst,\n  DsfrPosition,\n  DsfrPositionConst,\n  DsfrSize,\n  DsfrSizeConst,\n} from '../../shared';\n\n@Component({\n  selector: 'dsfr-button',\n  templateUrl: './button.component.html',\n  styleUrls: ['./button.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrButtonComponent implements DsfrButton {\n  /** Libellé du bouton, obligatoire. */\n  @Input() label: string;\n\n  /** Type du button, `submit` par défaut. */\n  @Input() type: DsfrButtonType;\n\n  /**\n   * Message du `tooltip` (attribut `title` du bouton) ou ajout d'un `span` en `sr-only` si pas de label.\n   */\n  @Input() tooltipMessage: string;\n\n  /** Style du bouton, `primary` par défaut. */\n  @Input() variant: DsfrButtonVariant = DsfrButtonVariantConst.PRIMARY;\n\n  /** Taille du bouton, `MD` par défaut  */\n  @Input() size: DsfrSize = DsfrSizeConst.MD;\n\n  /** Nom de l'icône. */\n  @Input() icon: string | undefined;\n\n  /** Position de l'icône, à gauche par défaut. */\n  @Input() iconPosition: DsfrPosition;\n\n  /** Permet de désactiver le bouton d'action, `false` par défaut. */\n  @Input() disabled = false;\n\n  /**\n   *  @deprecated (since 1.1.0)\n   *  Permet de passer le libellé du bouton en majuscules, 'false' par défaut.\n   */\n  /** @internal */\n  @Input() uppercase = false;\n\n  /**\n   * @deprecated (since 1.1.0)\n   * Permet d'activer un visuel dénotant un \"chargement\" (busy), 'false' par défaut.\n   * */\n  /** @internal */\n  @Input() loader = false;\n\n  /** 👓 Spécifie le libellé qui sera retranscrit par les narrateurs d'écran. */\n  @Input() ariaLabel: string;\n\n  /** Permet d'inverser le contraste du marqueur de focus, `false` par défaut. */\n  @Input() invertedOutlineContrast = false;\n\n  /** Permet d'identifier le button. */\n  @Input() id: string;\n\n  /**\n   * 👓 `ariaControls` est utilisé pour la manipulation d'une modale par exemple.\n   * (prise en charge du retour de focus à la fermeture de la modale).\n   */\n  // ariaControls ne fait pas partie de l'interface ?\n  @Input() ariaControls: string;\n\n  /** Style personnalisé `@since 1.3.0` */\n  @Input() customClass: string;\n\n  /** @internal */\n  getClasses(): string[] {\n    const classes: string[] = ['fr-btn'];\n\n    if (this.customClass) classes.push(this.customClass);\n\n    if (this.variant === DsfrButtonVariantConst.SECONDARY) classes.push('fr-btn--secondary');\n    else if (this.variant === DsfrButtonVariantConst.TERTIARY) classes.push('fr-btn--tertiary');\n    else if (this.variant === DsfrButtonVariantConst.TERTIARY_NO_OUTLINE) classes.push('fr-btn--tertiary-no-outline');\n\n    if (this.icon) {\n      classes.push(this.icon);\n      if (this.label) {\n        if (this.iconPosition === DsfrPositionConst.RIGHT) classes.push('fr-btn--icon-right');\n        else classes.push('fr-btn--icon-left');\n      }\n    }\n\n    if (this.size === DsfrSizeConst.SM) classes.push('fr-btn--sm');\n    else if (this.size === DsfrSizeConst.LG) classes.push('fr-btn--lg');\n\n    // 'déprécié'\n    if (this.uppercase) classes.push('uppercase');\n    if (this.invertedOutlineContrast) classes.push('inverted-outline-contrast');\n\n    return classes;\n  }\n}\n","<button\n  [ngClass]=\"getClasses()\"\n  [attr.type]=\"type || null\"\n  [attr.title]=\"tooltipMessage || null\"\n  [disabled]=\"disabled || null\"\n  [attr.aria-label]=\"ariaLabel || null\"\n  [attr.aria-controls]=\"ariaControls || null\"\n  [attr.data-fr-opened]=\"ariaControls ? false : null\">\n  <ng-container *ngIf=\"label\">{{ label }}</ng-container>\n  <span *ngIf=\"!label && tooltipMessage\" class=\"sr-only\">{{ tooltipMessage }}</span>\n</button>\n","import { CommonModule } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DsfrButtonComponent } from './button.component';\n\n@NgModule({\n  imports: [CommonModule, FormsModule],\n  declarations: [DsfrButtonComponent],\n  exports: [DsfrButtonComponent],\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class DsfrButtonModule {}\n","// -- Alignement -------------------------------------------------------------------------------------------------------\n\n/**\n * Constantes des modes d'alignement.\n */\nexport namespace DsfrAlignConst {\n  /** Aligne les boutons sur la gauche. */\n  export const DEFAULT = 'default';\n\n  /** Aligne les boutons sur la droite  */\n  export const RIGHT = 'right';\n\n  /* Les boutons ont les mêmes espacements ente eux.  */\n  export const BETWEEN = 'between';\n\n  /** Aligne les boutons au centre du conteneur. */\n  export const CENTER = 'center';\n\n  /** Combine un alignement à droite avec une inversion du sens des boutons de droite à gauche. */\n  export const REVERSE = 'reverse';\n}\n\n/**\n * Type des modes d'alignement.\n */\nexport type DsfrAlign = (typeof DsfrAlignConst)[keyof typeof DsfrAlignConst];\n\n// -- Inline -----------------------------------------------------------------------------------------------------------\n\nimport { DsfrSizeConst } from '../../shared';\n\nexport namespace DsfrInlineConst {\n  /**\n   * Mode vertical (par défaut).\n   */\n  export const NEVER = 'never';\n  /**\n   * Toujours en mode horizontal.\n   */\n  export const ALWAYS = 'always';\n  /**\n   * Mode horizontal à partir du point de rupture SM (576px).\n   */\n  export const FROM_SM = DsfrSizeConst.SM;\n  /**\n   * Mode horizontal à partir du point de rupture MD 576px.\n   */\n  export const FROM_MD = DsfrSizeConst.MD;\n  /**\n   * Mode horizontal à partir du point de rupture LG ().\n   */\n  export const FROM_LG = DsfrSizeConst.LG;\n}\n\ntype T = typeof DsfrInlineConst;\nexport type DsfrInline = T[keyof T];\n","import {\n  AfterViewInit,\n  Component,\n  ContentChildren,\n  ElementRef,\n  Input,\n  QueryList,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { DomUtils, DsfrPosition, DsfrPositionConst, DsfrSize, DsfrSizeConst } from '../../shared';\nimport { DsfrButtonComponent } from '../button';\nimport { DsfrAlign, DsfrAlignConst, DsfrInline, DsfrInlineConst } from './buttons-group.model';\n\n@Component({\n  selector: 'dsfr-buttons-group',\n  templateUrl: './buttons-group.component.html',\n  styleUrls: ['./buttons-group.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrButtonsGroupComponent implements AfterViewInit {\n  /** @internal */\n  @ContentChildren(DsfrButtonComponent) buttons!: QueryList<DsfrButtonComponent>;\n\n  /**\n   * Permet de basculer la disposition des boutons en mode horizontal.\n   * En mode vertical, mode par défaut, les boutons prennent 100% de la largeur du conteneur.\n   */\n  @Input() inline: DsfrInline = DsfrInlineConst.NEVER;\n\n  /**\n   * Placement des boutons en mode `inline` :\n   * - `default` : aligne les boutons sur la gauche.\n   * - `right` : aligne les boutons sur la droite\n   * - `between` : les boutons ont les mêmes espacements ente eux.\n   * - `center` : aligne les boutons au centre du conteneur.\n   * - `reverse` : les boutons se lisent de droite à gauche (implique nécessairement un placement à droite).\n   *\n   * 📌 n'a aucun effet en mode vertical.\n   */\n  @Input() alignment: DsfrAlign;\n\n  /**\n   * Permet de mettre automatiquement tous les boutons d’un groupe à la même largeur.\n   * Cela permet une uniformité des boutons en mode horizontal.\n   * (en mode vertical, les boutons prennent 100% de la largeur du conteneur)\n   * Cette option peut être combinée avec la propriété d'alignement.\n   */\n  @Input() equisized = false;\n\n  /** Taille des boutons du groupe. */\n  @Input() size: DsfrSize = DsfrSizeConst.MD;\n\n  private _iconPosition: DsfrPosition;\n\n  constructor(private _elementRef: ElementRef) {}\n\n  get iconPosition(): DsfrPosition {\n    return this._iconPosition;\n  }\n\n  /**\n   * Positionnement (gauche ou droite) au niveau du groupe des icônes dans les boutons qui\n   * contiennent à la fois une icône et un label.\n   */\n  @Input() set iconPosition(value: DsfrPosition) {\n    this._iconPosition = value;\n    this.updateButtonsIconPosition();\n  }\n\n  /**\n   * Cette méthode calcule les styles du composant en évitant les magic strings.\n   * @internal\n   */\n  getClasses(): string[] {\n    let classes: string[] = [];\n\n    // Inline class\n    switch (this.inline) {\n      case 'always':\n        classes.push('fr-btns-group--inline');\n        break;\n      case 'LG':\n        classes.push('fr-btns-group--inline-lg');\n        break;\n      case 'MD':\n        classes.push('fr-btns-group--inline-md');\n        break;\n      case 'SM':\n        classes.push('fr-btns-group--inline-sm');\n        break;\n\n      default:\n        break;\n    }\n\n    // Alignment class\n    switch (this.alignment) {\n      case DsfrAlignConst.CENTER:\n        classes.push('fr-btns-group--center');\n        break;\n      case DsfrAlignConst.BETWEEN:\n        classes.push('fr-btns-group--between');\n        break;\n      case DsfrAlignConst.RIGHT:\n        classes.push('fr-btns-group--right');\n        break;\n      case DsfrAlignConst.REVERSE:\n        classes.push('fr-btns-group--inline-reverse', 'fr-btns-group--right');\n        break;\n\n      default:\n        break;\n    }\n\n    // Size class\n    if (this.size === DsfrSizeConst.SM) {\n      classes.push('fr-btns-group--sm');\n    } else if (this.size === DsfrSizeConst.LG) {\n      classes.push('fr-btns-group--lg');\n    }\n\n    // Equisized class\n    if (this.equisized) {\n      classes.push('fr-btns-group--equisized');\n    }\n\n    // IconPosition class\n    if (this._iconPosition) {\n      classes.push(\n        this._iconPosition === DsfrPositionConst.LEFT ? 'fr-btns-group--icon-left' : 'fr-btns-group--icon-right',\n      );\n    }\n\n    return classes;\n  }\n\n  ngAfterViewInit() {\n    // Position des icônes de boutons\n    this.updateButtonsIconPosition();\n\n    // Ajout de <li> autour des boutons\n    DomUtils.surroundChildWithli(this._elementRef, 'dsfr-button');\n  }\n\n  /** On force la position des icônes des boutons. */\n  private updateButtonsIconPosition(): void {\n    this.buttons?.forEach((button) => (button.iconPosition = this._iconPosition));\n  }\n}\n","<ul class=\"fr-btns-group\" [ngClass]=\"getClasses()\">\n  <ng-content></ng-content>\n</ul>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DsfrButtonsGroupComponent } from './buttons-group.component';\n\n@NgModule({\n  declarations: [DsfrButtonsGroupComponent],\n  exports: [DsfrButtonsGroupComponent],\n  imports: [CommonModule],\n})\nexport class DsfrButtonsGroupModule {}\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { DsfrHeadingLevel, DsfrHeadingLevelConst } from '../../shared';\n\n@Component({\n  selector: 'dsfr-callout',\n  templateUrl: './callout.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrCalloutComponent {\n  /**\n   * Titre du call out. Si inexistant, pas de balise titre.\n   */\n  @Input() heading: string;\n\n  /**\n   * Le niveau de titre devant être utilisé.\n   * Valeurs supportées : H2, H3, H4, H5, H6 ou P si vous ne souhaitez pas positionner un titre de section.\n   */\n  @Input() headingLevel: DsfrHeadingLevel = DsfrHeadingLevelConst.H3;\n\n  /**\n   * Indique la classe d'icône à utiliser en haut à gauche. Ex. `fr-icon-information-line`.\n   */\n  @Input() icon: string;\n\n  /**\n   * Permet de personnaliser la couleur du tag. Il faut donner la class exact (ex : fr-callout--green-emeraude) que vous trouverez\n   * [ici](https://gouvfr.atlassian.net/wiki/spaces/DB/pages/222331196/Mise+en+avant+-+Call+out#Personnalisation).\n   */\n  @Input() customClass: string;\n\n  /**\n   * Détermine la liste des classes CSS à positioner sur le parent.\n   * @returns un tableau de classes CSS\n   *\n   * @internal\n   */\n  getClasses(): string[] {\n    let results: string[] = ['fr-callout'];\n    if (this.icon) {\n      results = results.concat(this.icon.trim().split(/\\s+/));\n    }\n    if (this.customClass) {\n      results = results.concat(this.customClass.trim().split(/\\s+/));\n    }\n\n    return results;\n  }\n}\n","<div [class]=\"getClasses()\">\n  <ng-container *ngIf=\"heading\" [ngSwitch]=\"headingLevel\">\n    <p *ngSwitchCase=\"'NONE'\" class=\"fr-callout__title\" [innerHTML]=\"heading\"></p>\n    <h2 *ngSwitchCase=\"'H2'\" class=\"fr-callout__title\" [innerHTML]=\"heading\"></h2>\n    <h4 *ngSwitchCase=\"'H4'\" class=\"fr-callout__title\" [innerHTML]=\"heading\"></h4>\n    <h5 *ngSwitchCase=\"'H5'\" class=\"fr-callout__title\" [innerHTML]=\"heading\"></h5>\n    <h6 *ngSwitchCase=\"'H6'\" class=\"fr-callout__title\" [innerHTML]=\"heading\"></h6>\n    <h3 *ngSwitchDefault class=\"fr-callout__title\" [innerHTML]=\"heading\"></h3>\n  </ng-container>\n  <p class=\"fr-callout__text\">\n    <ng-content></ng-content>\n  </p>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DsfrCalloutComponent } from './callout.component';\n\n@NgModule({\n  declarations: [DsfrCalloutComponent],\n  exports: [DsfrCalloutComponent],\n  imports: [CommonModule],\n})\nexport class DsfrCalloutModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { DsfrLinkComponent } from './link.component';\n\n@NgModule({\n  declarations: [DsfrLinkComponent],\n  exports: [DsfrLinkComponent],\n  imports: [CommonModule, RouterModule],\n})\nexport class DsfrLinkModule {}\n","import { DsfrNavigation } from '../../shared';\n\n/** @since 1.4.0 Événement sur sélection d'un tag (si l'id est renseigné). */\nexport interface DsfrTagEvent {\n  id: string;\n  label: string;\n  link: string;\n  route: string;\n  selected: boolean;\n}\n\n/** Description d'un élément tag */\nexport interface DsfrTag extends Omit<DsfrNavigation, 'linkTarget'> {\n  /** @since 1.3.2 id du tag, optionnel */\n  id?: string;\n\n  /** Permet de personnaliser la couleur du tag. **/\n  customClass?: string;\n\n  /**\n   * Permet d'avoir un tag cliquable disabled.\n   * @since 1.3\n   */\n  disabled?: boolean;\n\n  /** Icône  */\n  icon?: string;\n\n  /** Libelle du tag. */\n  label: string;\n\n  /** Lien du tag à renseigner si le mode est 'clickable'. */\n  link?: string;\n\n  /** Mode spécifique : default / selectable / clickable / deletable */\n  mode?: DsfrTagMode;\n\n  /** Path angular. */\n  route?: string;\n\n  /** État selected du tag. */\n  selected?: boolean;\n\n  /** Taille du tag (small ou médium). */\n  small?: boolean;\n\n  /** Attribut aria-label du tag */\n  ariaLabel?: string;\n\n  /** Tooltip du tag */\n  //TODO: à déprécier au profit d'un input tooltipMessage (pour des raisons de consistence)\n  title?: string;\n}\n\n/** Modes du tag sous forme de constantes. */\nexport namespace DsfrTagModeConst {\n  /** Par défaut, le tag ne peut pas changer d'état ni accepter aucun lien. */\n  export const DEFAULT = 'default';\n\n  /** Un tag cliquable permet de débrancher sur un lien iou un path Angular. */\n  export const CLICKABLE = 'clickable';\n\n  /** Un tag 'selectable' change le tag d'état. */\n  export const SELECTABLE = 'selectable';\n\n  export const DELETABLE = 'deletable';\n}\ntype T = typeof DsfrTagModeConst;\n\n/** Modes du tag */\nexport type DsfrTagMode = T[keyof T];\n","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { NavigationExtras } from '@angular/router';\nimport { DsfrLinkTarget, I18nService } from '../../shared';\nimport { DsfrTag, DsfrTagEvent, DsfrTagMode, DsfrTagModeConst } from './tag.model';\n\n@Component({\n  selector: 'dsfr-tag',\n  templateUrl: './tag.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrTagComponent implements Omit<DsfrTag, 'title'>, OnChanges {\n  /** id du tag, optionnel */\n  @Input() tagId: string;\n\n  /**\n   * Permet de personnaliser la couleur du tag. Il faut donner la classe exacte (ex : `fr-tag--green-emeraude`) que vous trouverez\n   * [ici](https://gouvfr.atlassian.net/wiki/spaces/DB/pages/310706305/Tag#Personnalisation).\n   */\n  @Input() customClass: string;\n\n  /**\n   * Permet d'avoir un tag cliquable disabled.\n   * @since 1.3\n   */\n  @Input() disabled: boolean;\n\n  /** Classe de l'icône (cf. DSFR TAG). */\n  @Input() icon: string | undefined; // undefined car peut provenir d'un DsfrTag.icon dans le cas d'un groupe\n\n  /** Libelle du tag. */\n  @Input() label: string;\n\n  /** Lien href externe, exclusif avec route et routePath. */\n  @Input() link: string;\n\n  /** Target du lien. Target par défaut de l'application si la propriété est non renseignée. */\n  @Input() linkTarget: DsfrLinkTarget;\n\n  /** Path interne. Exclusif avec link et routePath */\n  @Input() route: string;\n\n  /** Path angular géré en tant que directive routerLink. Exclusif avec link et route. */\n  @Input() routePath: string | string[];\n\n  /** RouterLink : classe utilisée pour la directive routerLink active. */\n  @Input() routerLinkActive: string | string[] | undefined;\n\n  /** RouterLink : valeurs additionnelles de navigation pour le routerLink (queryParams, state etc.) */\n  @Input() routerLinkExtras: NavigationExtras;\n\n  /** État d'un tag 'selectable'. */\n  // 1.3 Non automatiquement modifié lorsque l'état du bouton 'aria-pressed' change, 'aria-pressed' est géré\n  // le JavaScript du DSFR, d'où la gestion de l'événement '(click)' pour synchroniser 'selected' et 'aria-pressed'.\n  @Input() selected = false;\n\n  /** Taille du tag (small ou médium). */\n  @Input() small = false;\n\n  /** Donne l'attribut title pour les liens. */\n  @Input() tooltipMessage: string;\n\n  @Input() ariaLabel: string;\n\n  /**\n   * Événement émis suite au click sur un tag, le contenu de l'événement est soit le lien, la route ou à défaut le label du tag.\n   * @since 1.4.0, si l'id du tag est renseigné, l'événement émet un objet de type DsfrTagEvent.\n   */\n  @Output() tagSelect = new EventEmitter<string | DsfrTagEvent>();\n\n  /** @internal */\n  ariaPressed: boolean;\n\n  /** Mode spécifique : default / selectable / clickable / deletable (les modes exclusifs entre eux). */\n  private _mode: DsfrTagMode;\n\n  private _id: string;\n\n  /** @internal */\n  constructor(public i18n: I18nService) {}\n\n  get mode(): DsfrTagMode {\n    if (!this._mode) {\n      if (this.selected) this._mode = DsfrTagModeConst.SELECTABLE;\n      else if (this.link || this.route || this.routePath) this._mode = DsfrTagModeConst.CLICKABLE;\n    }\n    return this._mode;\n  }\n\n  /** Mode spécifique : default / selectable / clickable / deletable (les modes exclusifs entre eux). */\n  @Input() set mode(value: DsfrTagMode) {\n    this._mode = value;\n  }\n\n  /**\n   * @deprecated (@since 1.5) utiliser tagId.\n   * Attention en cas d'utilisation de cet attribut, il doit être utilisé en tant que propriété et non en attribut,\n   * ex. [id]=\"'monid'\"\n   */\n  @Input() set id(value: string) {\n    if (value) {\n      this._id = value;\n      this.tagId ??= this._id;\n    }\n  }\n\n  /**\n   * @deprecated (@since 1.11.5) utiliser `routePath` à la place.\n   * routerLink provoque un bug accessibilité sur la navigation au clavier (ajout d'un tabindex=0)\n   **/\n  @Input() set routerLink(value: string | string[] | undefined) {\n    if (value) this.routePath = value;\n  }\n\n  ngOnChanges({ selected }: SimpleChanges) {\n    // On ne se préoccupe pas trop du mode qui à l'initialisation est 'default' (comme ça chacun porte ses responsabilités)\n    if (selected) {\n      // On synchronise l'attribut 'aria-pressed' avec la nouvelle valeur de selected\n      this.ariaPressed = this.selected || false; // || false au cas où on reçoit undefined ou null\n      // On n'émet pas d'événement\n    }\n  }\n\n  /**\n   * Valeur pour le 'href' dans le template.\n   * @internal\n   */\n  getHrefValue(): string {\n    return this.route || this.link;\n  }\n\n  /**\n   * Tag `selectable` : événement `tagSelect()` avec le contenu de du lien ou à défaut son label.\n   * @internal\n   */\n  onSelectable() {\n    this.selected = !this.selected; // @since 1.3.2\n    this.emitTagSelect(this.getHrefValue() || this.label);\n  }\n\n  /**\n   * Événement (click) sur un lien.\n   * @internal\n   */\n  onClickable(event: Event) {\n    if (this.route) {\n      event.preventDefault();\n      this.emitTagSelect(this.route);\n    }\n  }\n\n  /**\n   * Tag `selectable` : événement `tagSelect()` avec le contenu de `link` ou à défaut son `label`.\n   * @internal\n   */\n  onDeletable() {\n    this.emitTagSelect(this.getHrefValue() || this.label);\n  }\n\n  /** @internal */\n  getSelectableClasses(): string[] {\n    return this.getDefaultClasses();\n  }\n\n  /** @internal */\n  getClickableClasses(): string {\n    const classes = this.getDefaultClasses();\n    if (this.customClass) classes.push(this.customClass);\n    return classes.join(' ');\n  }\n\n  /** @internal */\n  getNotClickableClasses(): string[] {\n    return this.getDefaultClasses();\n  }\n\n  /** @since 1.4.0 Emission de DsfrTagEvent */\n  private emitTagSelect(value: string) {\n    if (!this.tagId) this.tagSelect.emit(value);\n    else {\n      this.tagSelect.emit({\n        id: this.tagId,\n        label: this.label,\n        link: this.link,\n        route: this.route,\n        selected: this.selected,\n      });\n    }\n  }\n\n  private getDefaultClasses(): string[] {\n    const classes: string[] = ['fr-tag'];\n\n    if (this.small) classes.push('fr-tag--sm');\n    if (this.icon) {\n      classes.push('fr-tag--icon-left');\n      classes.push(this.icon);\n    }\n    // Un tag non cliquable ne peut pas avoir de custom class\n\n    return classes;\n  }\n}\n","<ng-container [ngSwitch]=\"mode\">\n  <!-- Tag supprimable -->\n  <ng-container *ngSwitchCase=\"'deletable'\">\n    <button\n      type=\"button\"\n      [attr.id]=\"tagId || null\"\n      [ngClass]=\"{\n        'fr-tag fr-tag--dismiss': true,\n        'fr-tag--sm': small\n      }\"\n      [attr.title]=\"tooltipMessage || null\"\n      [attr.aria-label]=\"ariaLabel ? ariaLabel : i18n.t('tag.removeFilter') + ' ' + label\"\n      [disabled]=\"disabled || null\"\n      (click)=\"onDeletable()\">\n      {{ label }}\n    </button>\n  </ng-container>\n\n  <!-- Tag sélectionnable -->\n  <ng-container *ngSwitchCase=\"'selectable'\">\n    <button\n      type=\"button\"\n      [attr.id]=\"tagId || null\"\n      [ngClass]=\"getSelectableClasses()\"\n      [attr.class]=\"icon || null\"\n      [attr.title]=\"tooltipMessage || null\"\n      [attr.aria-label]=\"ariaLabel ? ariaLabel : i18n.t('tag.selectFilter') + ' ' + label\"\n      [attr.aria-pressed]=\"ariaPressed\"\n      (click)=\"onSelectable()\"\n      [disabled]=\"disabled || null\">\n      {{ label }}\n    </button>\n  </ng-container>\n\n  <!-- Tag cliquable -->\n  <ng-container *ngSwitchCase=\"'clickable'\">\n    <dsfr-link\n      [linkId]=\"tagId\"\n      [customClass]=\"getClickableClasses()\"\n      [tooltipMessage]=\"tooltipMessage\"\n      [ariaLabel]=\"ariaLabel ? ariaLabel : label\"\n      (click)=\"onClickable($event)\"\n      [link]=\"link\"\n      [targetLink]=\"linkTarget\"\n      [route]=\"route\"\n      [routePath]=\"routePath\"\n      [routerLinkActive]=\"routerLinkActive ?? ''\"\n      [routerLinkExtras]=\"routerLinkExtras\"\n      [label]=\"label\"></dsfr-link>\n  </ng-container>\n\n  <!-- Tag non cliquable -->\n  <ng-container *ngSwitchDefault>\n    <p [attr.id]=\"tagId || null\" [ngClass]=\"getNotClickableClasses()\" [attr.title]=\"tooltipMessage || null\">\n      {{ label }}\n    </p>\n  </ng-container>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DsfrLinkModule } from '../link';\nimport { DsfrTagComponent } from './tag.component';\n\n@NgModule({\n  declarations: [DsfrTagComponent],\n  exports: [DsfrTagComponent],\n  imports: [CommonModule, DsfrLinkModule],\n})\nexport class DsfrTagModule {}\n","import {\n  AfterContentInit,\n  AfterViewInit,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  Input,\n  Output,\n  QueryList,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { DomUtils } from '../../shared';\nimport { DsfrTag, DsfrTagComponent, DsfrTagEvent, DsfrTagMode } from '../tag';\n\n@Component({\n  selector: 'dsfr-tags-group',\n  templateUrl: './tags-group.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrTagsGroupComponent implements AfterViewInit, AfterContentInit {\n  /** Modèle de présentation des tags. */\n  @Input() tags: DsfrTag[] = [];\n\n  /** Mode du groupe de tags (deletable / clickable / selectable). Surcharge le mode par tag. */\n  @Input() mode: DsfrTagMode;\n\n  /**\n   * Événement émis suite au click sur un tag, le contenu de l'événement est soit le link, la route ou à défaut le label du tag.\n   * @since 1.4.0, si l'id du tag est renseigné, l'événement émet un objet de type DsfrTagEvent.\n   */\n  @Output() tagSelect = new EventEmitter<string | DsfrTagEvent>();\n\n  /** @internal */\n  @ContentChildren(DsfrTagComponent) tagsComponent: QueryList<DsfrTagComponent>;\n\n  constructor(private _elementRef: ElementRef) {}\n\n  /** @internal */\n  ngAfterViewInit() {\n    DomUtils.surroundChildWithli(this._elementRef, 'dsfr-tag');\n  }\n\n  /** @internal */\n  ngAfterContentInit(): void {\n    if (this.mode && this.tagsComponent) {\n      this.setGroupeMode();\n    }\n  }\n\n  /**\n   * Surcharge le mode de chaque tag avec le mode du groupe en cas d'utilisation de ng-content.\n   * @internal\n   */\n  setGroupeMode() {\n    this.tagsComponent.map((c) => (c.mode = this.mode));\n  }\n\n  /** @internal */\n  onTagSelect(event: string | DsfrTagEvent) {\n    this.tagSelect.emit(event);\n  }\n}\n","<ul class=\"fr-tags-group\">\n  <dsfr-tag\n    *ngFor=\"let tag of tags\"\n    [id]=\"tag.id ?? ''\"\n    [customClass]=\"tag.customClass ?? ''\"\n    [icon]=\"tag.icon\"\n    [label]=\"tag.label\"\n    [ariaLabel]=\"tag.ariaLabel ?? ''\"\n    [link]=\"tag.link ?? ''\"\n    [mode]=\"mode ? mode : tag.mode ?? 'default'\"\n    [route]=\"tag.route ?? ''\"\n    [selected]=\"tag.selected ?? false\"\n    [small]=\"tag.small ?? false\"\n    [tooltipMessage]=\"tag.title ?? ''\"\n    (tagSelect)=\"onTagSelect($event)\"></dsfr-tag>\n  <ng-content></ng-content>\n</ul>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DsfrTagModule } from '../tag';\nimport { DsfrTagsGroupComponent } from './tags-group.component';\n\n@NgModule({\n  declarations: [DsfrTagsGroupComponent],\n  exports: [DsfrTagsGroupComponent],\n  imports: [CommonModule, DsfrTagModule],\n})\nexport class DsfrTagsGroupModule {}\n","import { Component, Input } from '@angular/core';\nimport { NavigationExtras } from '@angular/router';\nimport {\n  DsfrFileSizeUnit,\n  DsfrHeadingLevel,\n  DsfrLink,\n  DsfrLinkTarget,\n  DsfrNavigation,\n  DsfrSize,\n  LangService,\n  downloadDetail,\n} from '../../shared';\nimport { DsfrBadge } from '../badge';\nimport { DsfrPanelBackground, DsfrPanelBorder } from '../card';\nimport { DsfrTag } from '../tag';\n// Ne peut pas être déplacé dans 'shared' à cause de la dépendance sur DsfrBadge et DsfrTag\n\nexport const DEFAULT_HEADING_LEVEL: DsfrHeadingLevel = 'H3';\n\n@Component({ template: '' })\nexport abstract class BasePanelComponent implements DsfrNavigation {\n  /** @since 1.7 La propriété ariaLabel définit une valeur de chaîne qui étiquette un élément interactif. */\n  @Input() ariaLabel?: string;\n\n  /**\n   * Permet de positionner des badges (jusqu'à 4 badges maxi) en haut du composant, optionnel.\n   * @see DsfrBadge\n   */\n  @Input() badges: DsfrBadge[] = [];\n\n  /**\n   * Permet d'avoir un fond gris ou transparent.\n   */\n  @Input() customBackground: DsfrPanelBackground = 'default';\n\n  /**\n   * Permet d'afficher une ombre ou ne pas mettre de bordure.\n   */\n  @Input() customBorder: DsfrPanelBorder = 'default';\n\n  /**\n   * Une description optionnelle plein texte.\n   */\n  @Input() description: string;\n\n  /**\n   * Permet de désactiver le composant.\n   */\n  @Input() disabled = false;\n\n  /**\n   * Equivalent à l'attribut html natif 'download'.\n   * - true : la fenêtre de téléchargement s'affiche directement,\n   * - false : le fichier est ouvert avant d'être téléchargé,\n   * - string : nouveau nom de fichier proposé au téléchargement.\n   */\n  @Input() downloadDirect: boolean | string = true;\n\n  /**\n   * Si 'true' (défaut) : le détail du téléchargement est automatiquement renseigné par le script DSFR.\n   * - Dans ce cas, les propriétés : 'downloadMimeType', 'downloadSizeBytes', 'downloadLangCode' sont ignorées.\n   * Si 'false' : le détail est calculé par la librairie 'ngx-dsfr'.\n   * Dans les 2 cas, l'unité dépend de la langue du site, en octets (ko, Mo, ...) pour 'fr', en 'bytes' (KB, MB...) pour les autres langues.\n   * Ce mécanisme peut être forcé avec 'downloadSizeUnit'.\n   */\n  @Input() downloadAssessFile = true;\n\n  /**\n   * Obligatoire, dans le cas d'un téléchargement si le document n'est pas du même langage que la page courante.\n   * Ex : downloadLangCode=\"en\".\n   */\n  @Input() downloadLangCode: string;\n\n  /**\n   * Format du fichier, à renseigner si downloadAssessFile est faux.\n   */\n  @Input() downloadMimeType: string;\n\n  /**\n   * Poids du fichier en octets, à renseigner si downloadAssessFile est faux.\n   * */\n  @Input() downloadSizeBytes: number;\n\n  /**\n   * Permet de désactiver le lien étendu de la carte.\n   */\n  @Input() enlargeLink = true;\n\n  /**\n   * Titre du composant.\n   * Le fait de valoriser cette propriété est prioritaire sur le ng-content [heading].\n   * Attention fonctionnellement la présence d'un titre est obligatoire.\n   */\n  @Input() heading: string;\n\n  /**\n   * Le niveau de titre devant être utilisé (tag `h4` par défaut).\n   * Cette balise ne produit pas de style, mais de la structure.\n   */\n  @Input() headingLevel: string = DEFAULT_HEADING_LEVEL;\n\n  /**\n   * Passe le composant en mode horizontal.\n   */\n  @Input() horizontal = false;\n\n  /**\n   * Permet de positionner un lien de type href.\n   * Sert aussi de lien de téléchargement.\n   */\n  @Input() link: string;\n\n  /**\n   * Permet de positionner une route Angular qui sera récupérée via 'output tileSelect.\n   */\n  @Input() route: string;\n\n  /**\n   * Path angular géré en tant que directive routerLink. Prioritaire et exclusif avec link et route.\n   */\n  @Input() routePath: string | string[];\n\n  /**\n   * Classe CSS utilisée pour la directive routerLink active.\n   */\n  @Input() routerLinkActive: string | string[] | undefined;\n\n  /**\n   * RouterLink : valeurs additionnelles de navigation pour le routerLink (queryParams, state, etc.)\n   */\n  @Input() routerLinkExtras: NavigationExtras;\n\n  /**\n   * Dimension du composant, 'MD' par défaut ('SM, 'MD' uniquement pour la tuile).\n   */\n  @Input() size: DsfrSize = 'MD';\n\n  private _download = false;\n  private _downloadSizeUnit: DsfrFileSizeUnit;\n  private _linkTarget: DsfrLinkTarget;\n  private _tags: DsfrTag[] = [];\n  private _detailBottom: string;\n\n  protected constructor(private langService: LangService) {}\n\n  get downloadSizeUnit(): DsfrFileSizeUnit {\n    return this._downloadSizeUnit || this.langService.lang ? 'octets' : 'bytes';\n  }\n\n  get linkTarget(): DsfrLinkTarget {\n    return this._linkTarget;\n  }\n\n  get tags(): DsfrTag[] {\n    return this._tags;\n  }\n\n  get itemLink(): DsfrLink {\n    const label = this.heading ? this.heading : '';\n    const itemLink: DsfrLink = { label: label, ariaLabel: this.ariaLabel }; // ariaLabel @since 1.7\n    if (this.link) {\n      itemLink.link = this.link;\n    } else if (this.route) {\n      itemLink.route = this.route;\n    }\n    return itemLink;\n  }\n\n  get download(): boolean {\n    return this._download;\n  }\n\n  get detailBottom(): string {\n    return !this.download ? this._detailBottom : this.downloadDetail;\n  }\n\n  /**\n   * Dans le cas d'un téléchargement sans l'option 'downloadAssessFile',\n   * on crée le détail à l'aide des propriétés 'downloadSizeBytes', 'downloadMimeType'.\n   * @internal\n   */\n  protected get downloadDetail(): string {\n    return downloadDetail(this.downloadMimeType, this.downloadSizeBytes, this.downloadSizeUnit);\n  }\n\n  /**\n   * Transforme le composant classique en composant de téléchargement.\n   */\n  @Input() set download(download: boolean) {\n    this._download = download;\n    if (this._download) this.enlargeLink = true;\n  }\n\n  /** Zone de détail se trouvant visuellement sous la description et à côté de l’icône, optionnel.\n   * Pour la tuile, on peut passer un slot de sélecteur \"detail\".\n   * En cas de téléchargement le détail est remplacé par les informations du fichier calculées selon downloadAssessFile.\n   */\n  @Input() set detailBottom(value: string) {\n    this._detailBottom = value;\n  }\n\n  /**\n   * Force l'unité par défaut qui dépend de la langue du site, en octets (ko, Mo, ...) pour 'fr', en 'bytes' (KB, MB...) pour les autres langues.\n   */\n  @Input() set downloadSizeUnit(value: DsfrFileSizeUnit) {\n    this._downloadSizeUnit = value;\n  }\n\n  /**\n   * Attribut target du lien.\n   */\n  @Input() set linkTarget(target: DsfrLinkTarget) {\n    this._linkTarget = target;\n\n    // Si un lien est externe, le composant ne peut pas être entièrement cliquable\n    if (target === '_blank') this.enlargeLink = false;\n  }\n\n  /**\n   * Permet de positionner des tags en haut de la carte (cliquables ou non), optionnel.\n   * @see DsfrTag\n   */\n  @Input() set tags(tags: DsfrTag[]) {\n    this._tags = tags;\n\n    // Vérifie si un tag est cliquable pour désactiver enlargeLink.\n    if (tags?.find((tag) => tag.link)) this.enlargeLink = false;\n  }\n\n  /**\n   * @deprecated (@since 1.11.5) utiliser `routePath` à la place.\n   * routerLink provoque un bug accessibilité sur la navigation au clavier (ajout d'un tabindex=0)\n   **/\n  @Input() set routerLink(value: string | string[] | undefined) {\n    if (value) this.routePath = value;\n  }\n\n  /** @internal */\n  hasLink(): boolean {\n    return !!(this.link || this.route || this.routePath);\n  }\n}\n","// -- Background -------------------------------------------------------------------------------------------------------\n\nexport namespace DsfrPanelBackgroundConst {\n  export const DEFAULT = 'default';\n  export const GREY = 'grey';\n  export const TRANSPARENT = 'transparent';\n}\ntype TypeBackground = typeof DsfrPanelBackgroundConst;\n\nexport type DsfrPanelBackground = TypeBackground[keyof TypeBackground];\n\n// -- Border -----------------------------------------------------------------------------------------------------------\n\nexport namespace DsfrPanelBorderConst {\n  export const DEFAULT = 'default';\n  export const NO_BORDER = 'no-border';\n  export const SHADOW = 'shadow';\n}\ntype TypeBorder = typeof DsfrPanelBorderConst;\n\nexport type DsfrPanelBorder = TypeBorder[keyof TypeBorder];\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { DsfrSizeConst, I18nService, LangService } from '../../shared';\nimport { BasePanelComponent } from './base-panel.component';\nimport { DsfrPanelBackgroundConst, DsfrPanelBorderConst } from './base-panel.model';\nimport { DsfrImageFit, DsfrImageRatio, DsfrImageType } from './card.model';\n\n@Component({\n  selector: 'dsfr-card',\n  templateUrl: './card.component.html',\n  styleUrls: ['./card.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrCardComponent extends BasePanelComponent {\n  /** Si true, les badges seront affichés sur la zone media. */\n  @Input() badgesOnMedia: boolean;\n\n  /**\n   * Le détail, optionnel. Supporte le format HTML (slot avec sélecteur \"detail\")\n   */\n  @Input() detail: string;\n\n  /** Icône de la zone de détail, optionnel. */\n  @Input() detailIcon: string;\n\n  /** Icône devant le détail situé au bas de la carte, optionnel. */\n  @Input() detailBottomIcon: string;\n\n  /**\n   * Zone d'actions, composée de bouton ou de liens (jusqu'à 4 éléments), optionnelle (mais incompatible avec la\n   * deuxième zone de détail).\n   * Usage : cette propriété doit être activée pour afficher le contenu fourni par l'intermédiaire du slot 'actions'\n   */\n  @Input() hasFooter = false;\n\n  /** Texte alternatif d'une image à utiliser uniquement si l'image à une information à passer. */\n  @Input() imageAlt: string;\n\n  /**\n   * Selon la valeur utilisée pour 'imageFit', l'élément peut être rogné, mis à l'échelle ou étiré, afin de remplir\n   * la boîte qui le contient.\n   */\n  @Input() imageFit: DsfrImageFit;\n\n  /** Url de l'image de l'entête, optionnel. */\n  @Input() imagePath: string;\n\n  /** Ratio de l'image. */\n  @Input() imageRatio: DsfrImageRatio;\n\n  /**\n   * Type d'illustration\n   * - `img` : pour l'utilisation d'une balise '<img>'.\n   * - `svg` : pour l'utilisation de '<edu-svg-icon>'.\n   * Si c'est le cas, `@ImagePath` devient le path du fichier `sprite.svg` et la concaténation de l'id du svg à afficher.\n   */\n  @Input() imageType: DsfrImageType = 'img';\n\n  /** Signale quand la carte est sélectionnée. */\n  @Output() readonly cardSelect: EventEmitter<string> = new EventEmitter();\n\n  /**@internal */\n  constructor(\n    langService: LangService,\n    public i18n: I18nService,\n  ) {\n    super(langService);\n    this.enlargeLink = false;\n  }\n\n  /** @internal */\n  getClasses(): {} {\n    return {\n      'fr-card': true,\n      'fr-card--horizontal': this.horizontal,\n      'fr-card--download': this.download,\n      'fr-enlarge-link': this.enlargeLink && !this.hasFooter,\n      'fr-card--no-arrow': this.hasFooter,\n      'fr-card--no-border': this.customBorder === DsfrPanelBorderConst.NO_BORDER,\n      'fr-card--shadow': this.customBorder === DsfrPanelBorderConst.SHADOW,\n      'fr-card--grey': this.customBackground === DsfrPanelBackgroundConst.GREY,\n      'fr-card--no-background': this.customBackground === DsfrPanelBackgroundConst.TRANSPARENT,\n      'fr-card--sm': this.size === DsfrSizeConst.SM,\n      'fr-card--lg': this.size === DsfrSizeConst.LG,\n    };\n  }\n\n  /** @internal */\n  onLinkSelect(): void {\n    // on propage l'output, pas besoin de gérer ici le preventDefault, c'est géré en amont\n    if (this.route) {\n      this.cardSelect.emit(this.route);\n    }\n  }\n}\n","<div [ngClass]=\"getClasses()\">\n  <!-- Card body -->\n  <div class=\"fr-card__body\">\n    <div class=\"fr-card__content\">\n      <!-- Titre du contenu -->\n      <ng-container>\n        <ng-container *ngTemplateOutlet=\"dsfrCardHeading\"></ng-container>\n      </ng-container>\n\n      <!-- Détail du haut -->\n      <div *ngIf=\"detail || tags || (badges && !badgesOnMedia)\" class=\"fr-card__start\">\n        <dsfr-tags-group *ngIf=\"tags\" [tags]=\"tags\"></dsfr-tags-group>\n        <dsfr-badges-group *ngIf=\"badges && !badgesOnMedia\" [badges]=\"badges\"></dsfr-badges-group>\n        <p *ngIf=\"detail || detailIcon\" class=\"fr-card__detail\" [ngClass]=\"detailIcon\">\n          {{ detail }}\n        </p>\n      </div>\n\n      <!-- Description -->\n      <p *ngIf=\"description\" class=\"fr-card__desc\" [innerHTML]=\"description\"></p>\n\n      <!-- Détail du bas -->\n      <div *ngIf=\"detailBottom || detailBottomIcon || downloadAssessFile\" class=\"fr-card__end\">\n        <p class=\"fr-card__detail\" [ngClass]=\"detailBottomIcon\">\n          {{ detailBottom }}\n        </p>\n      </div>\n    </div>\n\n    <!-- Card footer -->\n    <div *ngIf=\"hasFooter\" class=\"fr-card__footer\">\n      <ng-content select=\"[footer]\"></ng-content>\n    </div>\n  </div>\n  <!-- Card header -->\n  <div *ngIf=\"imagePath\" class=\"fr-card__header\">\n    <div class=\"fr-card__img\">\n      <img\n        *ngIf=\"imageType === 'img'\"\n        [src]=\"imagePath\"\n        class=\"fr-responsive-img\"\n        [ngClass]=\"{\n          'fr-ratio-32x9': imageRatio === '16:9/2',\n          'fr-ratio-16x9': imageRatio === '16:9',\n          'fr-ratio-3x2': imageRatio === '3:2',\n          'fr-ratio-4x3': imageRatio === '4:3',\n          'fr-ratio-1x1': imageRatio === '1:1',\n          'fr-ratio-3x4': imageRatio === '3:4',\n          'fr-ratio-2x3': imageRatio === '2:3'\n        }\"\n        [ngStyle]=\"{ 'object-fit': imageFit }\"\n        [attr.alt]=\"imageAlt\" />\n      <!-- L’alternative de l’image (attribut alt) doit toujours être présente, sa valeur peut-être vide (image n’apportant pas de sens supplémentaire au contexte) ou non (porteuse de texte ou apportant du sens) selon votre contexte -->\n      <edu-svg-icon *ngIf=\"imageType === 'svg'\" [iconPath]=\"imagePath\"></edu-svg-icon>\n    </div>\n    <dsfr-badges-group *ngIf=\"badges && badgesOnMedia\" [badges]=\"badges\"></dsfr-badges-group>\n  </div>\n</div>\n\n<ng-template #dsfrCardHeading>\n  <ng-container [ngSwitch]=\"headingLevel\">\n    <h2 *ngSwitchCase=\"'H2'\" class=\"fr-card__title\">\n      <ng-container *ngTemplateOutlet=\"headingTemplate\"></ng-container>\n    </h2>\n    <h3 *ngSwitchDefault class=\"fr-card__title\">\n      <ng-container *ngTemplateOutlet=\"headingTemplate\"></ng-container>\n    </h3>\n    <h4 *ngSwitchCase=\"'H4'\" class=\"fr-card__title\">\n      <ng-container *ngTemplateOutlet=\"headingTemplate\"></ng-container>\n    </h4>\n    <h5 *ngSwitchCase=\"'H5'\" class=\"fr-card__title\">\n      <ng-container *ngTemplateOutlet=\"headingTemplate\"></ng-container>\n    </h5>\n    <h6 *ngSwitchCase=\"'H6'\" class=\"fr-card__title\">\n      <ng-container *ngTemplateOutlet=\"headingTemplate\"></ng-container>\n    </h6>\n  </ng-container>\n</ng-template>\n\n<ng-template #headingTemplate>\n  <span *ngIf=\"!hasLink()\" [innerHTML]=\"heading\"></span>\n  <dsfr-link\n    *ngIf=\"hasLink() && !download\"\n    [customClass]=\"disabled ? '' : 'fr-card__title'\"\n    [ariaLabel]=\"ariaLabel ?? ''\"\n    [disabled]=\"disabled\"\n    [label]=\"heading\"\n    [link]=\"link\"\n    [linkTarget]=\"linkTarget\"\n    [route]=\"route\"\n    [routePath]=\"routePath\"\n    [routerLinkActive]=\"routerLinkActive ?? ''\"\n    [routerLinkExtras]=\"routerLinkExtras\"\n    (linkSelect)=\"onLinkSelect()\"></dsfr-link>\n  <!-- Lien de telechargement -->\n  <edu-link-download\n    *ngIf=\"download\"\n    [item]=\"itemLink\"\n    [downloadDirect]=\"downloadDirect\"\n    [downloadAssessFile]=\"downloadAssessFile\"\n    [langCode]=\"downloadLangCode\"\n    (linkSelect)=\"onLinkSelect()\"></edu-link-download>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { LinkDownloadComponent, SvgIconModule } from '../../shared';\nimport { DsfrBadgesGroupModule } from '../badges-group';\nimport { DsfrLinkModule } from '../link';\nimport { DsfrTagsGroupModule } from '../tags-group';\nimport { DsfrCardComponent } from './card.component';\n\n@NgModule({\n  declarations: [DsfrCardComponent],\n  exports: [DsfrCardComponent],\n  imports: [\n    CommonModule,\n    DsfrBadgesGroupModule,\n    DsfrTagsGroupModule,\n    SvgIconModule,\n    DsfrLinkModule,\n    LinkDownloadComponent,\n  ],\n})\nexport class DsfrCardModule {}\n","// -- Background -------------------------------------------------------------------------------------------------------\n\nimport { DsfrPanelBackground, DsfrPanelBackgroundConst, DsfrPanelBorder } from './base-panel.model';\n\n/** @deprecated @since 1.5.0 use DsfrPanelBackgroundConst instead */\nexport namespace DsfrCardBackgroundConst {\n  export const DEFAULT = 'default';\n  export const GREY = 'grey';\n  export const TRANSPARENT = 'transparent';\n}\n\n/** @deprecated @since 1.5.0 use DsfrPanelBackground instead */\nexport type DsfrCardBackground = DsfrPanelBackground;\n\n// -- Border -----------------------------------------------------------------------------------------------------------\n\n/** @deprecated @since 1.5.0 use DsfrPanelBorderConst instead */\nexport namespace DsfrCardBorderConst {\n  export const DEFAULT = 'default';\n  export const NO_BORDER = 'no-border';\n  export const SHADOW = 'shadow';\n}\n\n/** @deprecated @since 1.5.0 use DsfrPanelBorder instead */\nexport type DsfrCardBorder = DsfrPanelBorder;\n\n// -- Image Fit --------------------------------------------------------------------------------------------------------\n\nexport namespace DsfrImageFitConst {\n  export const FILL = 'fill';\n  export const CONTAIN = 'contain';\n  export const COVER = 'cover';\n  export const NONE = 'none';\n  export const SCALE_DOWN = 'scale-down';\n}\ntype TypeImageFit = typeof DsfrImageFitConst;\n\nexport type DsfrImageFit = TypeImageFit[keyof TypeImageFit];\n\n// -- Image Ratio ------------------------------------------------------------------------------------------------------\n\nexport namespace DsfrImageRatioConst {\n  export const RATIO_32_9 = '16:9/2';\n  export const RATIO_16_9 = '16:9';\n  export const RATIO_3_2 = '3:2';\n  export const RATIO_4_3 = '4:3';\n  export const RATIO_1_1 = '1:1';\n  export const RATIO_3_4 = '3:4';\n  export const RATIO_2_3 = '2:3';\n}\ntype TypeRatio = typeof DsfrImageRatioConst;\n\nexport type DsfrImageRatio = TypeRatio[keyof TypeRatio];\n\n// -- Image Type ------------------------------------------------------------------------------------------------------\n\nexport namespace DsfrImageTypeConst {\n  export const IMG = 'img';\n  export const SVG = 'svg';\n}\n\ntype K = typeof DsfrImageTypeConst;\n\nexport type DsfrImageType = K[keyof K];\n","import { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { I18nService } from '../../../../shared';\nimport { DsfrFinality, DsfrSubFinality } from '../../consent-banner.model';\n\n@Component({\n  selector: 'edu-consent-service',\n  templateUrl: './consent-service.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class ConsentServiceComponent implements OnInit {\n  /**\n   * Le modèle de présentation.\n   */\n  @Input() finality: DsfrFinality;\n  /**\n   * L'index de la finalité au sein du panneau de gestion.\n   */\n  @Input() idxFinality: number;\n  /**\n   * Émis lors l'utilisateur accepte/refuse la finalité.\n   */\n  @Output() finalityChange = new EventEmitter<DsfrFinality>(); // changement accept/refuse d'une finalité ou sous-finalité\n\n  _acceptAll: boolean | undefined;\n  fieldsetLabelledBy: string;\n  buttonDescribedBy = 'finality-{{idxFinality}}-legend';\n  buttonControls = 'finality-{{idxFinality}}-collapse';\n\n  constructor(public i18n: I18nService) {}\n\n  /**\n   * Au changement utilisateur accepter tout / refuser tout, mettre a jour la finalité et finalités enfants\n   * Pas de mise à jour si la finalité est en disabled ou exempt (toujours accept=true)\n   * @param value true (accept all), false (refuse all), undefined (pas de sélection)\n   */\n  @Input() set acceptAll(value: boolean | undefined) {\n    this._acceptAll = value;\n    if (this._acceptAll !== undefined && !this.finality.disabled && !this.finality.exempt) {\n      this.finality.accept = this._acceptAll;\n      this.finality.subFinalities?.map((f) => (f.accept = this._acceptAll));\n    }\n  }\n\n  ngOnInit() {\n    const index = this.idxFinality;\n    this.fieldsetLabelledBy = `finality-${index}-legend finality-${index}}-desc`;\n    this.buttonDescribedBy = `finality-${index}-legend`;\n    this.buttonControls = `finality-${index}-collapse`;\n    if (this.finality.exempt || this.finality.disabled) {\n      this.finality.accept = true;\n    }\n  }\n\n  /**\n   * Changement accept/refuse de la finalité, mettre a jour les sous-finalités enfant\n   * @param subFinality sous-finalité concernée\n   */\n  onFinalityRadioChange() {\n    if (this.finality.subFinalities) {\n      this.finality.subFinalities.map((f: DsfrSubFinality) => (f.accept = this.finality.accept));\n    }\n    this.finalityChange.emit(this.finality);\n  }\n\n  /**\n   * Changement accept/refuse d'une sous finalité, remettre la finalité parente en accept undefined si necessaire\n   * @param subFinality sous-finalité concernée\n   */\n  onSubFinalityRadioChange(subFinality: DsfrSubFinality) {\n    if (\n      (this.finality.accept && subFinality.accept === false) ||\n      (this.finality.accept === false && subFinality.accept)\n    ) {\n      this.finality.accept = undefined;\n    }\n\n    this.finalityChange.emit(this.finality);\n  }\n}\n","<div class=\"fr-consent-service\">\n  <fieldset\n    class=\"fr-fieldset\"\n    [attr.role]=\"finality.description ? 'group' : null\"\n    [attr.aria-labelledby]=\"finality.description ? fieldsetLabelledBy : null\">\n    <legend class=\"fr-consent-service__title\">{{ finality.name }}</legend>\n    <div class=\"fr-consent-service__radios\">\n      <div *ngIf=\"!finality.exempt\" class=\"fr-radio-group\">\n        <input\n          (change)=\"onFinalityRadioChange()\"\n          [value]=\"true\"\n          [(ngModel)]=\"finality.accept\"\n          [disabled]=\"finality.disabled ? true : false\"\n          type=\"radio\"\n          id=\"consent-finality-{{ idxFinality }}-accept\"\n          name=\"consent-finality-{{ idxFinality }}\" />\n        <label class=\"fr-label\" for=\"consent-finality-{{ idxFinality }}-accept\"> {{ i18n.t('commons.accept') }} </label>\n      </div>\n      <div *ngIf=\"!finality.exempt\" class=\"fr-radio-group\">\n        <input\n          [value]=\"false\"\n          [(ngModel)]=\"finality.accept\"\n          [disabled]=\"finality.disabled ? true : false\"\n          (change)=\"onFinalityRadioChange()\"\n          type=\"radio\"\n          id=\"consent-finality-{{ idxFinality }}-refuse\"\n          name=\"consent-finality-{{ idxFinality }}\" />\n        <label class=\"fr-label\" for=\"consent-finality-{{ idxFinality }}-refuse\"> {{ i18n.t('commons.refuse') }} </label>\n      </div>\n      <p *ngIf=\"finality.exempt\">{{ i18n.t('consent.manager.finalityExempt') }}</p>\n    </div>\n    <p *ngIf=\"finality.description\" id=\"finality-{{ idxFinality }}-desc\" class=\"fr-consent-service__desc\">\n      {{ finality.description }}\n    </p>\n    <div *ngIf=\"finality.subFinalities\" class=\"fr-consent-service__collapse\">\n      <button\n        type=\"button\"\n        class=\"fr-consent-service__collapse-btn\"\n        aria-expanded=\"false\"\n        [attr.aria-describedby]=\"buttonDescribedBy\"\n        [attr.aria-controls]=\"buttonControls\">\n        {{ i18n.t('consent.manager.showDetails') }}\n      </button>\n    </div>\n    <div class=\"fr-consent-services fr-collapse\" id=\"finality-{{ idxFinality }}-collapse\">\n      <!-- Sous finalités -->\n      <div *ngFor=\"let subfinality of finality.subFinalities; let idx_sub = index\" class=\"fr-consent-service\">\n        <fieldset class=\"fr-fieldset fr-fieldset--inline\">\n          <legend id=\"finality-{{ idxFinality }}-sub-{{ idx_sub }}-legend\" class=\"fr-consent-service__title\">\n            {{ subfinality.name }}\n          </legend>\n          <div class=\"fr-consent-service__radios fr-fieldset--inline\">\n            <div class=\"fr-radio-group\">\n              <input\n                [(ngModel)]=\"subfinality.accept\"\n                type=\"radio\"\n                (change)=\"onSubFinalityRadioChange(subfinality)\"\n                [value]=\"true\"\n                id=\"consent-finality-{{ idxFinality }}-sub-{{ idx_sub }}-accept\"\n                name=\"consent-finality-{{ idxFinality }}-sub-{{ idx_sub }}-\" />\n              <label class=\"fr-label\" for=\"consent-finality-{{ idxFinality }}-sub-{{ idx_sub }}-accept\">\n                {{ i18n.t('commons.accept') }}\n              </label>\n            </div>\n            <div class=\"fr-radio-group\">\n              <input\n                (change)=\"onSubFinalityRadioChange(subfinality)\"\n                type=\"radio\"\n                [value]=\"false\"\n                [(ngModel)]=\"subfinality.accept\"\n                id=\"consent-finality-{{ idxFinality }}-sub-{{ idx_sub }}-refuse\"\n                name=\"consent-finality-{{ idxFinality }}-sub-{{ idx_sub }}-\" />\n              <label class=\"fr-label\" for=\"consent-finality-{{ idxFinality }}-sub-{{ idx_sub }}-refuse\">\n                {{ i18n.t('commons.refuse') }}\n              </label>\n            </div>\n          </div>\n        </fieldset>\n      </div>\n    </div>\n  </fieldset>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { DsfrNavigation, I18nService } from '../../../shared';\nimport { DsfrFinality } from '../consent-banner.model';\n\nexport const CONSENT_MODAL_ID = 'consent-modal-id';\n\n@Component({\n  selector: 'edu-consent-manager',\n  templateUrl: './consent-manager.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class ConsentManagerComponent implements OnInit {\n  /** URL de présentation des données personnelles. */\n  @Input() rgpdNavigation: DsfrNavigation;\n\n  /** Modèle de présentation : liste de finalités. */\n  @Input() finalities: DsfrFinality[];\n\n  /** Confirmation de la personnalisation des finalités. */\n  @Output() confirmSelect = new EventEmitter<DsfrFinality[]>();\n\n  /** Changement selection accept/refuse d'une finalité ou sous-finalité. */\n  @Output() finalityChange = new EventEmitter<DsfrFinality>();\n\n  /** @since 1.7 Signale quand la route rgdp est sélectionnée. */\n  @Output() rgpdRouteSelect = new EventEmitter<string>();\n\n  /** internal */ modalId: string;\n  /** internal */ titleId: string;\n\n  acceptAll: boolean | undefined;\n\n  constructor(public i18n: I18nService) {}\n\n  ngOnInit(): void {\n    this.acceptAll = undefined;\n    this.modalId = CONSENT_MODAL_ID;\n    this.titleId = this.modalId + '-title';\n  }\n\n  /**\n   * Changemennt selection accept/refuse d'une finalité ou sous-finalité\n   * @param finality\n   */\n  onFinalityChange(finality: DsfrFinality): void {\n    this.finalityChange.emit(finality);\n  }\n\n  /**\n   * Confirmation de la sélection\n   */\n  onConfirm(): void {\n    this.confirmSelect.emit(this.finalities);\n  }\n\n  /** @since 1.7 */\n  onRgpdSelect(): void {\n    // Signale quand la route rgdp est sélectionnée\n    const route = this.rgpdNavigation.route;\n    if (route) this.rgpdRouteSelect.emit(route);\n  }\n}\n","<dialog [id]=\"modalId\" class=\"fr-modal\" role=\"dialog\" [attr.aria-labelledby]=\"titleId\">\n  <div class=\"fr-container fr-container--fluid fr-container-md\">\n    <div class=\"fr-grid-row fr-grid-row--center\">\n      <div class=\"fr-col-12 fr-col-md-10 fr-col-lg-8\">\n        <div class=\"fr-modal__body\">\n          <div class=\"fr-modal__header\">\n            <button\n              type=\"button\"\n              class=\"fr-btn--close fr-btn\"\n              [attr.aria-controls]=\"modalId\"\n              [attr.aria-label]=\"i18n.t('modal.ariaLabel')\">\n              {{ i18n.t('commons.close') }}\n            </button>\n          </div>\n          <div class=\"fr-modal__content\">\n            <h1 [id]=\"titleId\" class=\"fr-modal__title\">{{ i18n.t('consent.manager.title') }}</h1>\n            <!-- BUG: Classe 'fr-consent-manager' inconnue en DSFR 1.9.3 -->\n            <div class=\"fr-consent-manager\">\n              <!-- Finalités -->\n              <div class=\"fr-consent-service fr-consent-manager__header\">\n                <fieldset class=\"fr-fieldset\">\n                  <legend id=\"finality-legend\" class=\"fr-consent-service__title\">\n                    {{ i18n.t('consent.manager.preferences') }}\n                    <dsfr-link\n                      [link]=\"rgpdNavigation.link ?? ''\"\n                      [linkTarget]=\"rgpdNavigation.linkTarget\"\n                      [route]=\"rgpdNavigation.route ?? ''\"\n                      [routePath]=\"rgpdNavigation.routerLink ?? ''\"\n                      [routerLinkActive]=\"rgpdNavigation.routerLinkActive ?? ''\"\n                      [routerLinkExtras]=\"rgpdNavigation.routerLinkExtras\"\n                      [label]=\"i18n.t('consent.manager.personalData')\"\n                      (linkSelect)=\"onRgpdSelect()\"></dsfr-link>\n                  </legend>\n                  <div class=\"fr-consent-service__radios\">\n                    <div class=\"fr-radio-group\">\n                      <input\n                        [(ngModel)]=\"acceptAll\"\n                        [value]=\"true\"\n                        type=\"radio\"\n                        id=\"consent-all-accept\"\n                        name=\"consent-all\" />\n                      <label class=\"fr-label\" for=\"consent-all-accept\"> {{ i18n.t('consent.acceptAll') }} </label>\n                    </div>\n                    <div class=\"fr-radio-group\">\n                      <input\n                        [(ngModel)]=\"acceptAll\"\n                        [value]=\"false\"\n                        type=\"radio\"\n                        id=\"consent-all-refuse\"\n                        name=\"refuse-all\" />\n                      <label class=\"fr-label\" for=\"consent-all-refuse\"> {{ i18n.t('consent.refuseAll') }} </label>\n                    </div>\n                  </div>\n                </fieldset>\n              </div>\n\n              <edu-consent-service\n                *ngFor=\"let finality of finalities; let i = index\"\n                [finality]=\"finality\"\n                [idxFinality]=\"i\"\n                [acceptAll]=\"acceptAll\"\n                (finalityChange)=\"onFinalityChange(finality)\"></edu-consent-service>\n\n              <!-- Bouton de confirmation/fermeture -->\n              <ul class=\"fr-consent-manager__buttons fr-btns-group fr-btns-group--right fr-btns-group--inline-sm\">\n                <li>\n                  <button type=\"button\" (click)=\"onConfirm()\" [attr.aria-controls]=\"modalId\" class=\"fr-btn\">\n                    {{ i18n.t('consent.manager.confirmChoices') }}\n                  </button>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</dialog>\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { NavigationExtras } from '@angular/router';\nimport { DsfrLinkTarget, I18nService } from '../../shared';\nimport { DsfrFinality } from './consent-banner.model';\nimport { CONSENT_MODAL_ID } from './consent-manager/consent-manager.component';\n\n@Component({\n  selector: 'dsfr-consent-banner',\n  templateUrl: './consent-banner.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrConsentBannerComponent {\n  /**\n   * URL de présentation des données personnelles. Utilisé si welcome n'est pas renseigné\n   * RGPD : Règlement Général sur la Protection des Données\n   */\n  @Input() rgpdLink = 'https://www.transformation.gouv.fr/donnees-personnelles-et-cookies';\n\n  /** @since 1.7 Target du lien. Target par défaut de l'application si la propriété est non renseignée. */\n  @Input() rgpdLinkTarget?: DsfrLinkTarget | undefined;\n\n  /** @since 1.7 Path interne. Exclusif avec link et routerLink */\n  @Input() rgpdRoute?: string;\n\n  /** @since 1.7 Path angular géré en tant que directive routerLink. Exclusif avec link et route. */\n  @Input() rgpdRouterLink?: string | string[];\n\n  /** @since 1.7 RouterLink : classe utilisée pour la directive routerLink active. */\n  @Input() rgpdRouterLinkActive?: string | string[];\n\n  /** @since 1.7 RouterLink : valeurs additionnelles de navigation pour le routerLink (queryParams, state etc.) */\n  @Input() rgpdRouterLinkExtras?: NavigationExtras;\n\n  /** Titre de la bannière */\n  @Input() heading: string;\n\n  /**\n   * Modèle de présentation des finalités.\n   */\n  @Input() finalities: DsfrFinality[];\n\n  /** Sélection bouton Tout accepter*/\n  @Output() acceptAllSelect = new EventEmitter<void>();\n\n  /** Sélection bouton Tout refuser */\n  @Output() refuseAllSelect = new EventEmitter<void>();\n\n  /** Sélection bouton Personnaliser */\n  @Output() customizeSelect = new EventEmitter<void>();\n\n  /** Validation de la personnalisation */\n  @Output() confirmCustomizeSelect = new EventEmitter<DsfrFinality[]>();\n\n  /** Sélection de Accepter ou Refuser pour une finalité */\n  @Output() finalityChange = new EventEmitter<DsfrFinality>();\n\n  /** @since 1.7 Signale quand la route rgdp est sélectionnée. */\n  @Output() rgpdRouteSelect = new EventEmitter<string>();\n\n  /** Description de bienvenue. Utilisation du texte par défaut si non renseigné */\n  @Input() welcome: string;\n\n  /** @internal */ modalId = CONSENT_MODAL_ID;\n\n  /** @internal */\n  constructor(public i18n: I18nService) {}\n\n  /** @deprecated (@since 1.7) utiliser `rgdpLink` à la place. */\n  get rgpdUrl(): string {\n    return this.rgpdLink;\n  }\n\n  /** @deprecated (@since 1.7) utiliser 'heading' à la place. */\n  get title(): string {\n    return this.heading;\n  }\n\n  /** @deprecated (@since 1.7) utiliser `rgdpLink` à la place. */\n  @Input() set rgpdUrl(value: string) {\n    this.rgpdLink = value;\n  }\n\n  /** @deprecated (@since 1.7) utiliser `heading` à la place. */\n  @Input() set title(value: string) {\n    this.heading = value;\n  }\n\n  /**\n   * Accepter tout\n   * @internal\n   */\n  onAcceptAll(): void {\n    this.acceptAllSelect.emit();\n  }\n\n  /**\n   * Refuser tout\n   * @internal\n   */\n  onRefuseAll(): void {\n    this.refuseAllSelect.emit();\n  }\n\n  /**\n   * Changement de sélection accept/refuse d'une finalité ou sous-finalité.\n   * @internal\n   */\n  onFinalityChange(finality: DsfrFinality): void {\n    this.finalityChange.emit(finality);\n  }\n\n  /**\n   * Ouverture du panneau de personnalisation des finalités.\n   * @internal\n   */\n  onCustomizeSelect(): void {\n    this.customizeSelect.emit();\n  }\n\n  /**\n   * Confirmation de la personnalisation des finalités.\n   * @param finalities liste des finalités\n   * @internal\n   */\n  onConfirmCustomize(finalities: DsfrFinality[]): void {\n    this.confirmCustomizeSelect.emit(finalities);\n  }\n\n  /** @since 1.7 Emet un événement lors de la sélection du lien RGPD si l'accès aux RGPD est fait via la propriété 'route'. */\n  /** @internal */\n  onRgpdSelect(): void {\n    // Relais. Signale quand la route rgdp est sélectionnée\n    if (this.rgpdRoute) this.rgpdRouteSelect.emit(this.rgpdRoute);\n  }\n}\n","<div class=\"fr-consent-banner\">\n  <h2 class=\"fr-h6\" *ngIf=\"title\">{{ title }}</h2>\n  <!-- BUG: Classe 'fr-consent-banner__content' inconnue en DSFR 1.9.3 -->\n  <div class=\"fr-consent-banner__content\">\n    <p *ngIf=\"welcome\" class=\"fr-text--sm\" [innerHtml]=\"welcome\"></p>\n    <p *ngIf=\"!welcome\" class=\"fr-text--sm\">\n      {{ i18n.t('consent.welcome[0]') }}\n      <dsfr-link\n        [link]=\"rgpdLink\"\n        [linkTarget]=\"rgpdLinkTarget\"\n        [route]=\"rgpdRoute ?? ''\"\n        [routePath]=\"rgpdRouterLink ?? ''\"\n        [routerLinkActive]=\"rgpdRouterLinkActive ?? ''\"\n        [routerLinkExtras]=\"rgpdRouterLinkExtras\"\n        [label]=\"i18n.t('consent.welcome[1]')\"\n        (linkSelect)=\"onRgpdSelect()\"></dsfr-link\n      >{{ i18n.t('consent.welcome[2]') }}\n    </p>\n  </div>\n  <ul\n    class=\"fr-consent-banner__buttons fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-sm\">\n    <li>\n      <button type=\"button\" (click)=\"onAcceptAll()\" class=\"fr-btn\" title=\"{{ i18n.t('consent.allowAllCookies') }}\">\n        {{ i18n.t('consent.acceptAll') }}\n      </button>\n    </li>\n    <li>\n      <button type=\"button\" (click)=\"onRefuseAll()\" class=\"fr-btn\" title=\"{{ i18n.t('consent.refuseAllCookies') }}\">\n        {{ i18n.t('consent.refuseAll') }}\n      </button>\n    </li>\n    <li>\n      <button\n        type=\"button\"\n        class=\"fr-btn fr-btn--secondary\"\n        (click)=\"onCustomizeSelect()\"\n        data-fr-opened=\"false\"\n        [attr.aria-controls]=\"modalId\"\n        title=\"{{ i18n.t('consent.customizeCookies') }}\">\n        {{ i18n.t('consent.customize') }}\n      </button>\n    </li>\n  </ul>\n</div>\n\n<edu-consent-manager\n  [rgpdNavigation]=\"{\n    link: rgpdLink,\n    linkTarget: rgpdLinkTarget,\n    route: rgpdRoute,\n    routerLink: rgpdRouterLink,\n    routerLinkActive: rgpdRouterLinkActive,\n    routerLinkExtras: rgpdRouterLinkExtras\n  }\"\n  [finalities]=\"finalities\"\n  (finalityChange)=\"onFinalityChange($event)\"\n  (confirmSelect)=\"onConfirmCustomize(finalities)\"\n  (rgpdRouteSelect)=\"onRgpdSelect()\"></edu-consent-manager>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DsfrLinkModule } from '../../link';\nimport { ConsentManagerComponent } from './consent-manager.component';\nimport { ConsentServiceComponent } from './consent-service/consent-service.component';\n\n@NgModule({\n  declarations: [ConsentManagerComponent, ConsentServiceComponent],\n  exports: [ConsentManagerComponent],\n  imports: [CommonModule, FormsModule, DsfrLinkModule],\n})\nexport class DsfrConsentManagerModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DsfrLinkModule } from '../link';\nimport { DsfrConsentBannerComponent } from './consent-banner.component';\nimport { DsfrConsentManagerModule } from './consent-manager/consent-manager.module';\n\n@NgModule({\n  declarations: [DsfrConsentBannerComponent],\n  exports: [DsfrConsentBannerComponent],\n  imports: [CommonModule, FormsModule, DsfrConsentManagerModule, DsfrLinkModule],\n})\nexport class DsfrConsentBannerModule {}\n","import { CommonModule } from '@angular/common';\nimport { AfterContentInit, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { I18nService, newUniqueId } from '../../shared';\n\n@Component({\n  selector: 'dsfr-transcription',\n  templateUrl: './transcription.component.html',\n  encapsulation: ViewEncapsulation.None,\n  standalone: true,\n  imports: [CommonModule],\n})\nexport class DsfrTranscriptionComponent implements AfterContentInit {\n  /**\n   * Contenu de la transcription, prioritaire sur le slot <ng-content /> sans sélecteur.\n   * Le slot permet d'avoir un contenu plus riche.\n   */\n  @Input() content: string;\n\n  /** Titre du média de niveau h1. */\n  @Input() heading: string;\n\n  /** @internal */ collapseId: string;\n  /** @internal */ dialogId: string;\n  /** @internal */ titleId: string;\n  /** @internal */ roleDialog = false;\n\n  constructor(public i18n: I18nService) {}\n\n  ngAfterContentInit(): void {\n    this.collapseId = newUniqueId();\n    this.dialogId = newUniqueId();\n    this.titleId = newUniqueId();\n  }\n\n  /** @internal */\n  enlargeScript() {\n    this.roleDialog = !this.roleDialog;\n  }\n}\n","<div class=\"fr-transcription\">\n  <button class=\"fr-transcription__btn\" aria-expanded=\"false\" [attr.aria-controls]=\"collapseId\">\n    {{ i18n.t('transcription.button') }}\n  </button>\n  <div class=\"fr-collapse\" [id]=\"collapseId\">\n    <div class=\"fr-transcription__footer\">\n      <div class=\"fr-transcription__actions-group\">\n        <button\n            class=\"fr-btn fr-btn--fullscreen\"\n            [attr.aria-controls]=\"dialogId\"\n            [attr.aria-label]=\"i18n.t('transcription.ariaLabel')\"\n            data-fr-opened=\"false\">\n          {{ i18n.t('commons.enlarge') }}\n        </button>\n      </div>\n    </div>\n    <div [id]=\"dialogId\" class=\"fr-modal\" [attr.role]=\"roleDialog ? 'dialog' : null\" [attr.aria-labelledby]=\"titleId\">\n      <!-- Suppression de \"fr-container fr-container-md\" -->\n      <div class=\"fr-container--fluid\">\n        <div class=\"fr-grid-row fr-grid-row--center\">\n          <!-- Suppression de \"fr-col-12 fr-col-md-10 fr-col-lg-8\" -->\n          <div class=\"\">\n            <div class=\"fr-modal__body\">\n              <div class=\"fr-modal__header\">\n                <button class=\"fr-btn--close fr-btn\" [attr.aria-controls]=\"dialogId\" [title]=\"i18n.t('commons.close')\">\n                  {{ i18n.t('commons.close') }}\n                </button>\n              </div>\n              <div class=\"fr-modal__content\">\n                <h1 [id]=\"titleId\" class=\"fr-modal__title\">\n                  {{ heading }}\n                </h1>\n                <div *ngIf=\"content\" [outerHTML]=\"content\"></div>\n                <ng-content *ngIf=\"!content\"></ng-content>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { NavigationExtras } from '@angular/router';\nimport { DsfrLinkTarget, DsfrNavigation, DsfrSize, DsfrSizeConst } from '../../shared';\nimport { DsfrMedia } from './media';\n\n// https://www.systeme-de-design.gouv.fr/elements-d-interface/fondamentaux-techniques/medias/\ntype RatioImage = '16:9/2' | '16:9' | '3:2' | '4:3' | '1:1' | '3:4' | '2:3';\ntype RatioVideo = '16:9' | '4:3' | '1:1';\n\n@Component({\n  selector: 'dsfr-content',\n  templateUrl: './content.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrContentComponent implements DsfrNavigation {\n  // -- Commun images / vidéos -----------------------------------------------------------------------------------------\n\n  /** Type du média 'image' | 'video', 'image' par défaut. */\n  @Input() type: DsfrMedia = 'image';\n\n  /** Légende, optionnelle */\n  @Input() legend: string | undefined;\n\n  /** Le format conseillé par défaut est le 16:9. */\n  @Input() ratio: RatioImage | RatioVideo = '16:9';\n\n  /** @requires media, image, vidéo ou audio, obligatoire */\n  @Input() source: string;\n\n  // -- Lien de transcription sous le media (optionnel) ----------------------------------------------------------------\n\n  /**\n   * @since 1.6 remplace 'transcriptionLabel'.\n   * Label du lien (de transcription), optionnel.\n   */\n  @Input() linkLabel: string;\n\n  /** Lien de transcription (ou autre), optionnel. */\n  @Input() link: string;\n\n  /** Target du lien. Target par défaut de l'application si la propriété est non renseignée. */\n  @Input() linkTarget: DsfrLinkTarget;\n\n  /** Path interne. Exclusif avec link et routePath */\n  @Input() route: string;\n\n  /** Path angular géré en tant que directive routerLink. Exclusif avec link et route. */\n  @Input() routePath: string | string[];\n\n  /** RouterLink : classe utilisée pour la directive routerLink active. */\n  @Input() routerLinkActive: string | string[] | undefined;\n\n  /** RouterLink : valeurs additionnelles de navigation pour le routerLink (queryParams, state, etc.) */\n  @Input() routerLinkExtras: NavigationExtras;\n\n  /** Message du tooltip du média. */\n  @Input() tooltipMessage: string;\n\n  // -- Modal de transcription (optionnel) -----------------------------------------------------------------------------\n\n  /**\n   * @since 1.6 remplace 'transcription'.\n   * Contenu, simple, optionnel de la modale de transcription.\n   */\n  @Input() transcriptionContent: string;\n\n  /**\n   * @since 1.6 Titre du média (image ou vidéo), de niveau h1.\n   */\n  @Input() transcriptionHeading: string;\n\n  // -- Images ---------------------------------------------------------------------------------------------------------\n\n  /**\n   * Spécifique aux images.\n   * Alternative d'une image (attribut alt), doit toujours être présente, sa valeur peut être vide (image n’apportant\n   * pas de sens supplémentaire au contexte) ou non (porteuse de texte ou apportant du sens) selon votre contexte.\n   */\n  @Input() alternate: string;\n\n  // -------------------------------------------------------------------------------------------------------------------\n\n  /**\n   * Si une route est spécifiée, émet un événement avec la route comme valeur, sinon n'émet rien.\n   */\n  @Output() linkSelect = new EventEmitter<string>();\n\n  private _size: DsfrSize = DsfrSizeConst.MD;\n\n  constructor(private sanitizer: DomSanitizer) {}\n\n  get size(): DsfrSize {\n    return this._size;\n  }\n\n  /** @deprecated (@since 1.6) utiliser `transcriptionContent` à la place */\n  get transcription(): string {\n    return this.transcriptionContent;\n  }\n\n  /** @deprecated (@since 1.6) utiliser `transcriptionLinkLabel` à la place  */\n  get transcriptionLabel(): string {\n    return this.linkLabel;\n  }\n\n  /** @deprecated (@since 1.6) utiliser `transcriptionContent` à la place  */\n  @Input() set transcription(value: string) {\n    this.transcriptionContent = value;\n  }\n\n  /** @deprecated (@since 1.6) utiliser `transcriptionLinkLabel` à la place  */\n  @Input() set transcriptionLabel(value: string) {\n    this.linkLabel = value;\n  }\n\n  /** Redimensionnement du composant : `LG` : 125%, `MD` : 100% (défault), `SM` : 75%. */\n  @Input() set size(value: DsfrSize) {\n    this._size = <DsfrSize>value?.toUpperCase();\n  }\n\n  /**\n   * @deprecated (@since 1.11.5) utiliser `routePath` à la place.\n   * routerLink provoque un bug accessibilité sur la navigation au clavier (ajout d'un tabindex=0)\n   **/\n  @Input() set routerLink(value: string | string[] | undefined) {\n    if (value) this.routePath = value;\n  }\n\n  /** @internal */\n  onLinkSelect() {\n    if (this.route) {\n      this.linkSelect.emit(this.route);\n    }\n  }\n\n  /**\n   * @internal\n   */\n  sanitizedSource() {\n    return this.sanitizer.bypassSecurityTrustResourceUrl(this.source);\n  }\n\n  /** @internal */\n  hasTranscriptionLink(): boolean {\n    return !!this.linkLabel;\n  }\n}\n","<figure\n  class=\"fr-content-media\"\n  [class.fr-content-media--lg]=\"size === 'LG'\"\n  [class.fr-content-media--sm]=\"size === 'SM'\"\n  role=\"group\"\n  [attr.aria-label]=\"legend\">\n  <div *ngIf=\"type === 'image'\" class=\"fr-content-media__img\">\n    <img\n      *ngIf=\"source\"\n      class=\"fr-responsive-img\"\n      [attr.title]=\"tooltipMessage || null\"\n      [ngClass]=\"{\n        'fr-ratio-32x9': ratio === '16:9/2',\n        'fr-ratio-16x9': ratio === '16:9',\n        'fr-ratio-3x2': ratio === '3:2',\n        'fr-ratio-4x3': ratio === '4:3',\n        'fr-ratio-1x1': ratio === '1:1',\n        'fr-ratio-3x4': ratio === '3:4',\n        'fr-ratio-2x3': ratio === '2:3'\n      }\"\n      [src]=\"source\"\n      [alt]=\"alternate\" />\n\n    <!-- @since 1.6 slot par défaut déprécié -->\n    <ng-content></ng-content>\n    <!-- @since 1.6 ajout du slot 'svg' -->\n    <ng-content select=\"[svg]\"></ng-content>\n  </div>\n\n  <iframe\n    *ngIf=\"type === 'video'\"\n    [attr.title]=\"tooltipMessage || null\"\n    class=\"fr-responsive-vid\"\n    [class.fr-ratio-16x9]=\"ratio === '16:9'\"\n    [class.fr-ratio-4x3]=\"ratio === '4:3'\"\n    [class.fr-ratio-1x1]=\"ratio === '1:1'\"\n    [src]=\"sanitizedSource()\"\n    allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\"\n    allowfullscreen></iframe>\n\n  <figcaption *ngIf=\"legend || linkLabel\" class=\"fr-content-media__caption\">\n    {{ legend }}\n    <dsfr-link\n      *ngIf=\"linkLabel\"\n      [label]=\"linkLabel\"\n      [link]=\"link\"\n      [linkTarget]=\"linkTarget\"\n      [route]=\"route\"\n      [routePath]=\"routePath\"\n      [routerLinkActive]=\"routerLinkActive ?? ''\"\n      [routerLinkExtras]=\"routerLinkExtras\"\n      (linkSelect)=\"onLinkSelect()\"></dsfr-link>\n  </figcaption>\n\n  <dsfr-transcription\n    *ngIf=\"transcriptionContent\"\n    [heading]=\"transcriptionHeading\"\n    [content]=\"transcriptionContent\"></dsfr-transcription>\n  <!-- @since 1.6 ajout du slot 'transcription' -->\n  <ng-content *ngIf=\"!transcriptionContent\" select=\"[transcription]\"></ng-content>\n</figure>\n","import { CommonModule, NgOptimizedImage } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DsfrLinkModule } from '../link';\nimport { DsfrTranscriptionComponent } from '../transcription';\nimport { DsfrContentComponent } from './content.component';\n\n@NgModule({\n  declarations: [DsfrContentComponent],\n  exports: [DsfrContentComponent],\n  imports: [CommonModule, DsfrTranscriptionComponent, DsfrLinkModule, NgOptimizedImage],\n})\nexport class DsfrContentModule {}\n","export type DsfrMedia = 'image' | 'video';\n\nexport namespace DsfrMediaConst {\n  export const IMAGE = 'image';\n  export const VIDEO = 'video';\n}\n","import { Component, ElementRef, EventEmitter, Inject, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { I18nService, LocalStorage, StorageEnum, isOnBrowser } from '../../shared';\nimport { DSFR_CONFIG_TOKEN } from '../../shared/config/config-token';\nimport { DsfrConfig } from '../../shared/config/config.model';\n\nexport const DISPLAY_MODAL_ID = 'theme-modal-id';\n\ntype DisplayTheme = 'light' | 'dark' | 'system';\n\n@Component({\n  selector: 'dsfr-display',\n  templateUrl: './display.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrDisplayComponent implements OnInit {\n  /**\n   * l'identifiant de la modale portant les paramètres d'affichage.\n   */\n  @Input() displayId = DISPLAY_MODAL_ID;\n\n  /**\n   * Chemin vers le répertoire exposant les pictogrammes illustratifs DSFR.\n   */\n  @Input() artworkDirPath: string;\n\n  /**\n   * Événement émis lorsque le thème change avec la valeur du nouveau thème : `light`, `dark` ou `system`.\n   */\n  @Output() displayChange = new EventEmitter<string>();\n\n  /**\n   * Thème courant du composant.\n   *\n   * @internal\n   */\n  currentTheme: DisplayTheme;\n\n  /** @internal */\n  readonly themes = {\n    light: {\n      id: 'theme-light',\n      value: 'light',\n      label: this.i18n.t('display.light.label'),\n      img: 'sun.svg',\n      link: '/pictograms/environment/sun.svg',\n      deprecatedLink: '/sun.svg',\n    },\n    dark: {\n      id: 'theme-dark',\n      value: 'dark',\n      label: this.i18n.t('display.dark.label'),\n      img: 'moon.svg',\n      link: '/pictograms/environment/moon.svg',\n      deprecatedLink: '/moon.svg',\n    },\n    system: {\n      id: 'theme-system',\n      value: 'system',\n      label: this.i18n.t('display.system.label'),\n      hint: this.i18n.t('display.system.hint'),\n      img: 'system.svg',\n      link: '/pictograms/system/system.svg',\n      deprecatedLink: '/system.svg',\n    },\n  };\n\n  /** @internal */ readonly closeI18n = this.i18n.t('commons.close');\n  /** @internal */ name = 'radios-theme';\n  /** @internal */ themeValues = Object.values(this.themes);\n  /** @internal */ _svgRootPath: string;\n\n  private _useDeprecatedLink = false;\n\n  /** @internal */\n  constructor(\n    @Inject(DSFR_CONFIG_TOKEN) private config: DsfrConfig,\n    public i18n: I18nService,\n    private elementRef: ElementRef,\n  ) {}\n\n  get pictoPath(): string {\n    return this.artworkDirPath;\n  }\n\n  /**\n   * Chemin des pictogrammes (du composant display) renseigné par le développeur.\n   *\n   * Note: ce chemin doit permettre de récupérer directement les fichiers SVG suivants : moon.svg, sun.svg, system.svg\n   *\n   * @deprecated Use `artworkDirPath` instead.\n   */\n  @Input() set pictoPath(path: string) {\n    this.artworkDirPath = path;\n    this._useDeprecatedLink = true;\n  }\n\n  ngOnInit(): void {\n    this.initDisplayTheme();\n    if (this.artworkDirPath === undefined) {\n      this.artworkDirPath = this.config.artworkDirPath;\n    }\n  }\n\n  /** @internal */\n  onChange() {\n    this.setHtmlSchemeAttribute(this.currentTheme);\n    this.displayChange.emit(this.currentTheme);\n  }\n\n  /** @internal */\n  buildSvgPath(theme: any, sprite: string) {\n    return this.artworkDirPath + (this._useDeprecatedLink ? theme.deprecatedLink : theme.link) + sprite;\n  }\n\n  private initDisplayTheme(): void {\n    if (!isOnBrowser()) return;\n\n    // Si l’utilisateur effectue une modification, son choix est conservé (dans le local storage) pour les visites ultérieures.\n    let savedTheme = <DisplayTheme>LocalStorage.get(StorageEnum.SCHEME);\n    if (savedTheme) {\n      this.setHtmlSchemeAttribute(savedTheme);\n    }\n\n    // Sinon on prend le theme de la balise HTML\n    else {\n      const nativeElt = this.elementRef?.nativeElement;\n      const html = nativeElt?.ownerDocument?.documentElement;\n      savedTheme = html?.getAttribute('data-fr-scheme');\n    }\n\n    this.currentTheme = savedTheme || 'system';\n  }\n\n  private setHtmlSchemeAttribute(value: DisplayTheme) {\n    const nativeElt = this.elementRef?.nativeElement;\n    const html = nativeElt?.ownerDocument?.documentElement;\n    html?.setAttribute('data-fr-scheme', value);\n  }\n}\n","<dialog [id]=\"displayId\" class=\"fr-modal\" role=\"dialog\" [attr.aria-labelledby]=\"displayId + '-title'\">\n  <div class=\"fr-container fr-container--fluid fr-container-md\">\n    <div class=\"fr-grid-row fr-grid-row--center\">\n      <div class=\"fr-col-12 fr-col-md-6 fr-col-lg-4\">\n        <div class=\"fr-modal__body\">\n          <div class=\"fr-modal__header\">\n            <button type=\"button\" class=\"fr-btn--close fr-btn\" [attr.aria-controls]=\"displayId\" [title]=\"closeI18n\">\n              {{ closeI18n }}\n            </button>\n          </div>\n          <div class=\"fr-modal__content\">\n            <h1 [id]=\"displayId + '-title'\" class=\"fr-modal__title\">{{ i18n.t('display.heading') }}</h1>\n            <!-- BUG: classe fr-display inexistante côté DSFR 1.11 mais utilisé dans leur template -->\n            <div [id]=\"displayId + '-fr-display'\" class=\"fr-display\">\n              <fieldset class=\"fr-fieldset\" [id]=\"displayId + '-display-fieldset'\">\n                <legend\n                  class=\"fr-fieldset__legend--regular fr-fieldset__legend\"\n                  [id]=\"displayId + '-display-fieldset-legend'\">\n                  {{ i18n.t('display.hint') }}\n                </legend>\n                <!-- Groupe radios ------------------------------------------------------------------------------------>\n                <!-- TODO A mutualiser avec les radios rich quand on pourra -->\n                <div *ngFor=\"let radio of themeValues\" class=\"fr-fieldset__element\">\n                  <div class=\"fr-radio-group fr-radio-rich\">\n                    <input\n                      type=\"radio\"\n                      [id]=\"radio.id\"\n                      [name]=\"name\"\n                      [value]=\"radio.value\"\n                      [(ngModel)]=\"currentTheme\"\n                      (ngModelChange)=\"onChange()\" />\n                    <label class=\"fr-label\" [for]=\"radio.id\">{{ radio.label }}</label>\n                    <div class=\"fr-radio-rich__img\">\n                      <svg aria-hidden=\"true\" class=\"fr-artwork\" viewBox=\"0 0 80 80\" width=\"80px\" height=\"80px\">\n                        <use\n                          class=\"fr-artwork-decorative\"\n                          [attr.href]=\"buildSvgPath(radio, '#artwork-decorative')\"></use>\n                        <use class=\"fr-artwork-minor\" [attr.href]=\"buildSvgPath(radio, '#artwork-minor')\"></use>\n                        <use class=\"fr-artwork-major\" [attr.href]=\"buildSvgPath(radio, '#artwork-major')\"></use>\n                      </svg>\n                    </div>\n                  </div>\n                </div>\n                <!----------------------------------------------------------------------------------------------------->\n              </fieldset>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</dialog>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DsfrDisplayComponent } from './display.component';\n\n@NgModule({\n  declarations: [DsfrDisplayComponent],\n  exports: [DsfrDisplayComponent],\n  imports: [CommonModule, FormsModule],\n})\nexport class DsfrDisplayModule {}\n","/**\n * Constantes correspondant aux différentes variantes du composant download.\n */\nexport namespace DsfrDownloadVariantConst {\n  export const LINK = 'link';\n  export const BLOCK = 'block';\n}\n\n/**\n * Les variantes du composant download exportées en tant que type.\n */\nexport type DsfrDownloadVariant = (typeof DsfrDownloadVariantConst)[keyof typeof DsfrDownloadVariantConst];\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { DsfrFileSizeUnit, I18nService, LangService, downloadDetail } from '../../shared';\nimport { DsfrDownloadVariant, DsfrDownloadVariantConst } from './download-variant';\nimport { DsfrDownload } from './download.model';\n\n@Component({\n  selector: 'dsfr-download',\n  templateUrl: './download.component.html',\n  styleUrls: ['./download.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrDownloadComponent implements DsfrDownload {\n  /**\n   * Obligatoire si le document n'est pas du même langage que la page courante.\n   * Ex : langCode=\"en\".\n   */\n  @Input() langCode: string;\n\n  /**\n   * Equivalent à l'attribut html natif 'download'.\n   * Si == 'true', télécharge directement le fichier sans l'ouvrir, 'false' par défaut.\n   * Peut prendre le nom du fichier à télécharger si on souhaite renommer ce fichier.\n   */\n  @Input() directDownload: boolean | string = false;\n\n  /**\n   * Lien de téléchargement du fichier.\n   * Si cette propriété n'est pas renseignée, un bouton remplace l'ancre et l'événement (click) du bouton doit être intercepté.\n   */\n  @Input() link: string;\n\n  /** Format du fichier - obligatoire. Cf. DsfrMimeType */\n  @Input() mimeType: string;\n\n  /** Nom du ficher - obligatoire. */\n  @Input() fileName: string;\n\n  /** Poids du fichier en octets. Obligatoire dans le Dsfr mais peut être renseigné ultérieurement. */\n  @Input() sizeBytes: number | undefined;\n\n  /** Permet de basculer la présentation en card. */\n  @Input() variant: DsfrDownloadVariant = DsfrDownloadVariantConst.LINK;\n\n  /** Description du fichier (uniquement en mode bloc). */\n  @Input() description: string;\n\n  /**\n   * Indique que les métadonnées du fichier seront positionnées automatiquement par le script DSFR. Les propriétés\n   * fileMimeType, fileSizeBytes, hreflang sont alors ignorées. Si la propriété est positionnée à false alors ce sont\n   * les valeurs des propriétés fileMimeType, fileSizeBytes, hreflang qui seront utlisées.\n   */\n  @Input() assessFile = true;\n\n  /** cf. accesseurs. */\n  private _sizeUnit: DsfrFileSizeUnit;\n\n  constructor(\n    private langService: LangService,\n    /** @internal */ public i18n: I18nService,\n  ) {}\n\n  get currentLang(): string {\n    return this.langService.lang;\n  }\n\n  /**\n   * Retourne l'affichage des détails dans cas précis, sinon retourne '' et laisse calculer l'affichage par le script DSFR.\n   */\n  get detail(): string {\n    return downloadDetail(this.mimeType, this.sizeBytes, this.sizeUnit);\n  }\n\n  get sizeUnit(): DsfrFileSizeUnit {\n    return this._sizeUnit ? this._sizeUnit : this.langService.lang === 'fr' ? 'octets' : 'bytes';\n  }\n\n  /**\n   * Permet d'afficher la taille soit en bytes (KB, MB, ...) soit en octets (Ko, Mo, ...). Par défaut, l'unité est\n   * en octets lorsque la langue courante est 'fr', 'bytes' dans les autres cas.\n   */\n  @Input() set sizeUnit(value: DsfrFileSizeUnit) {\n    this._sizeUnit = value;\n  }\n\n  /**\n   * Retourne vrai si on affiche un bouton à la place d'une ancre.\n   * @internal\n   */\n  hasButtonMarkup(): boolean {\n    return !this.link;\n  }\n\n  /**\n   * Si === 'true', télécharge directement le fichier sans l'ouvrir, 'false' par défaut.\n   * @internal\n   */\n  isDirectDownload(): boolean {\n    return this.directDownload !== false;\n  }\n\n  /** @internal */\n  getNewFileName(): string {\n    return typeof this.directDownload === 'string' ? this.directDownload : '';\n  }\n\n  /** @internal */\n  isBlockMode() {\n    return this.variant === DsfrDownloadVariantConst.BLOCK;\n  }\n}\n","<div\n  class=\"fr-download\"\n  [ngClass]=\"{\n    'fr-enlarge-link fr-download--card': isBlockMode(),\n    'edu-cardWithButton': hasButtonMarkup()\n  }\"\n  [attr.lang]=\"currentLang || null\">\n  <p>\n    <!-- Téléchargement avec une ancre -->\n    <a\n      *ngIf=\"!hasButtonMarkup()\"\n      [href]=\"link\"\n      [attr.download]=\"!isDirectDownload() ? null : getNewFileName()\"\n      [attr.hreflang]=\"langCode ? langCode : null\"\n      class=\"fr-download__link\"\n      [attr.data-fr-assess-file]=\"assessFile && sizeBytes ? sizeUnit : null\">\n      {{ i18n.t('commons.download') }} {{ fileName }}\n      <span class=\"fr-download__detail\">{{ detail }}</span>\n    </a>\n\n    <!-- Téléchargement avec un bouton (sans métadata) -->\n    <button *ngIf=\"hasButtonMarkup()\" type=\"button\" class=\"fr-download__link\">\n      {{ i18n.t('commons.download') }} {{ fileName }}\n      <span class=\"fr-download__detail\">{{ detail }}</span>\n    </button>\n  </p>\n  <p *ngIf=\"description && isBlockMode()\" class=\"fr-download__desc\">{{ description }}</p>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DsfrDownloadComponent } from './download.component';\n\n@NgModule({\n  declarations: [DsfrDownloadComponent],\n  exports: [DsfrDownloadComponent],\n  imports: [CommonModule],\n})\nexport class DsfrDownloadModule {}\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { DsfrDownload } from '../download';\n\n@Component({\n  selector: 'dsfr-downloads-group',\n  templateUrl: './downloads-group.component.html',\n  styleUrls: ['./downloads-group.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n})\n/**\n * Ce composant permet de proposer une liste de plusieurs téléchargements. Les téléchargements sont des liens\n * présentés sous forme de liste avec des puces. Un lien ne peut pas être un bloc. La description des liens est faite\n * sous forme de tableau.\n */\nexport class DsfrDownloadsGroupComponent {\n  /** Titre du groupe de fichiers (facultatif). */\n  @Input() heading: string;\n\n  /** Niveau de titre, '<h4>' par défaut. */\n  @Input() headingLevel: string;\n\n  /** Tableau des fichiers à lister. */\n  @Input() downloads: DsfrDownload[] = [];\n}\n","<div class=\"fr-downloads-group fr-downloads-group--bordered\">\n  <ng-container [ngSwitch]=\"headingLevel\">\n    <h2 class=\"fr-downloads-group__title\" *ngSwitchCase=\"'H2'\">{{ heading }}</h2>\n    <h3 class=\"fr-downloads-group__title\" *ngSwitchCase=\"'H3'\">{{ heading }}</h3>\n    <h5 class=\"fr-downloads-group__title\" *ngSwitchCase=\"'H5'\">{{ heading }}</h5>\n    <h6 class=\"fr-downloads-group__title\" *ngSwitchCase=\"'H6'\">{{ heading }}</h6>\n    <h4 class=\"fr-downloads-group__title\" *ngSwitchDefault>{{ heading }}</h4>\n  </ng-container>\n\n  <ul>\n    <ng-container *ngFor=\"let item of downloads\">\n      <li>\n        <dsfr-download\n          [fileName]=\"item.fileName\"\n          [link]=\"item.link\"\n          [mimeType]=\"item.mimeType\"\n          [sizeBytes]=\"item.sizeBytes ?? 0\"\n          [langCode]=\"item.langCode ?? 'fr'\"\n          [directDownload]=\"item.directDownload ?? false\"></dsfr-download>\n      </li>\n    </ng-container>\n  </ul>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DsfrDownloadModule } from '../download';\nimport { DsfrDownloadsGroupComponent } from './downloads-group.component';\n\n@NgModule({\n  declarations: [DsfrDownloadsGroupComponent],\n  exports: [DsfrDownloadsGroupComponent],\n  imports: [CommonModule, DsfrDownloadModule],\n})\nexport class DsfrDownloadsGroupModule {}\n","import { Component, EventEmitter, Inject, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { DsfrLink, DsfrLinkTarget, I18nService } from '../../shared';\nimport { DSFR_CONFIG_TOKEN } from '../../shared/config/config-token';\nimport { DsfrConfig } from '../../shared/config/config.model';\nimport { DISPLAY_MODAL_ID } from '../display';\nimport { DsfrAccessibility } from './accessibility.type';\nimport { DsfrFooterReboundLinks } from './footer-rebound-links.model';\nimport { DsfrLogo } from './logo.model';\nimport { DsfrPartner } from './partner.model';\n\n@Component({\n  selector: 'dsfr-footer',\n  templateUrl: './footer.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrFooterComponent implements OnInit {\n  /** Liens institutionnels */\n  /** @internal */\n  static readonly DEF_INSTITUTIONAL_LINKS: DsfrLink[] = [\n    { label: 'legifrance.gouv.fr', link: 'https://legifrance.gouv.fr' },\n    { label: 'info.gouv.fr', link: 'https://info.gouv.fr' },\n    { label: 'service-public.fr', link: 'https://service-public.fr' },\n    { label: 'data.gouv.fr', link: 'https://data.gouv.fr' },\n  ];\n\n  /** Liens réglementaires obligatoires */\n  /** @internal */\n  static readonly DEF_MANDATORY_LINKS: DsfrLink[] = [\n    {\n      label: 'Accessibilité : ',\n      link: 'https://www.info.gouv.fr/accessibilite',\n      linkTarget: '_blank',\n    },\n    { label: 'Mentions légales', link: '#' },\n    {\n      label: 'Données personnelles',\n      link: 'https://www.info.gouv.fr/donnees-personnelles-et-cookies',\n      linkTarget: '_blank',\n    },\n    {\n      label: 'Gestion des cookies',\n      link: 'https://www.info.gouv.fr/donnees-personnelles-et-cookies',\n      linkTarget: '_blank',\n    },\n  ];\n\n  /**\n   * Affichage du lien 'Paramètre d'affichage' pour gérer les modes clair/sombre.\n   */\n  @Input() display: boolean;\n\n  /**\n   * Chemin vers le répertoire exposant les pictogrammes illustratifs DSFR.\n   */\n  @Input() artworkDirPath: string;\n\n  /** Bloc marque de la marianne */\n  @Input() logo: DsfrLogo = {\n    label: 'République<br/>Française',\n    link: '',\n    tooltipMessage:\n      \"Accueil - [À MODIFIER - texte alternatif de l’image : nom de l'opérateur ou du site serviciel] - République Française\",\n    imagePath: '',\n    imageAlt: '',\n  };\n\n  /** Texte de présentation (html possible). */\n  @Input() presentation: string;\n\n  /** Tableau des liens institutionnels - obligatoires. Initialisé par défaut. */\n  @Input() institutionalLinks = DsfrFooterComponent.DEF_INSTITUTIONAL_LINKS;\n\n  /**\n   * Liens d'obligations légales. Cette liste doit être définie en fonction du site, toutefois les liens & contenus suivants\n   * sont obligatoires : “accessibilité : non/partiellement/totalement conforme”, mentions légales, données personnelles et gestion des cookies. - obligatoire.\n   */\n  @Input() mandatoryLinks = DsfrFooterComponent.DEF_MANDATORY_LINKS;\n\n  /** Logo partenaire principal. */\n  @Input() partnerMain: DsfrPartner;\n\n  /** Listes des logos partenaires. */\n  @Input() partnersSub: DsfrPartner[];\n\n  /** Liste de liens de rebond catégorisé. */\n  @Input() reboundLinks: DsfrFooterReboundLinks[];\n\n  /** Mention de licence. */\n  @Input() license = 'Emplacement de la mention de licence - OBLIGATOIRE.';\n\n  /**Indique le lien mandatory séléctionné. */\n  @Output() mandatoryLinkSelect = new EventEmitter<string>();\n\n  /**\n   * @internal\n   */\n  _useDeprecatedPictoPath = false;\n\n  /** @internal */\n  constructor(\n    @Inject(DSFR_CONFIG_TOKEN) private config: DsfrConfig,\n    public i18n: I18nService,\n  ) {}\n\n  get pictoPath(): string {\n    return this.artworkDirPath;\n  }\n\n  get displayModalId() {\n    return DISPLAY_MODAL_ID;\n  }\n\n  /**\n   * Chemin des pictogrammes (du composant display) renseigné par le développeur.\n   *\n   * Note: ce chemin doit permettre de récupérer directement les fichiers SVG suivants : moon.svg, sun.svg, system.svg\n   *\n   * @deprecated Use `artworkDirPath` instead.\n   */\n  @Input() set pictoPath(path: string) {\n    this.artworkDirPath = path;\n    this._useDeprecatedPictoPath = true;\n  }\n\n  /** Mention légale de la conformité d'accessibilité (none / partially / fully-compliant) */\n  @Input() set accessibility(accessibility: DsfrAccessibility) {\n    let labelAccessibility: string = 'Accessibilité : non conforme';\n    switch (accessibility) {\n      case 'fully-compliant':\n        labelAccessibility = 'Accessibilité : totalement conforme';\n        break;\n      case 'partially':\n        labelAccessibility = 'Accessibilité : partiellement conforme';\n        break;\n    }\n\n    DsfrFooterComponent.DEF_MANDATORY_LINKS[0].label = labelAccessibility;\n  }\n\n  ngOnInit(): void {\n    if (this.artworkDirPath === undefined) {\n      this.artworkDirPath = this.config.artworkDirPath;\n    }\n  }\n\n  /** @internal */\n  getLinkTarget(item: DsfrLink): DsfrLinkTarget | undefined {\n    return item.target ?? item.linkTarget;\n  }\n\n  /** @internal */\n  onMandatoryLinkSelect(link: string) {\n    this.mandatoryLinkSelect.emit(link);\n  }\n}\n","<footer class=\"fr-footer\" role=\"contentinfo\" id=\"footer\">\n  <!-- ReboundLinks -->\n  <div *ngIf=\"reboundLinks && reboundLinks.length >= 1\" class=\"fr-footer__top\">\n    <div class=\"fr-container\">\n      <!-- BUG: Classe 'fr-grid-row--start' inconnue en DSFR 1.9.3 -->\n      <div class=\"fr-grid-row fr-grid-row--start fr-grid-row--gutters\">\n        <div *ngFor=\"let item of reboundLinks\" class=\"fr-col-12 fr-col-sm-3 fr-col-md-2\">\n          <h3 class=\"fr-footer__top-cat\">{{ item.title }}</h3>\n          <ul class=\"fr-footer__top-list\">\n            <li *ngFor=\"let link of item.links\">\n              <edu-item-link [item]=\"link\" customClass=\"fr-footer__top-link\"></edu-item-link>\n            </li>\n          </ul>\n        </div>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"fr-container\">\n    <div class=\"fr-footer__body\">\n      <div class=\"fr-footer__brand fr-enlarge-link\">\n        <!--Bloc avec logo opérateur-->\n        <ng-container *ngIf=\"logo.imagePath\"\n          ><p class=\"fr-logo\" [innerHTML]=\"logo.label\"></p>\n          <a\n            class=\"fr-footer__brand-link\"\n            [href]=\"logo.link\"\n            [attr.title]=\"logo?.tooltipMessage ? logo.tooltipMessage : null\"\n            ><img class=\"fr-footer__logo\" style=\"width: 3.5rem\" [src]=\"logo.imagePath\" [attr.alt]=\"logo.imageAlt\" /> </a\n        ></ng-container>\n        <!--Bloc sans logo opérateur-->\n        <ng-container *ngIf=\"!logo.imagePath\">\n          <a [href]=\"logo.link\" [attr.title]=\"logo?.tooltipMessage ? logo.tooltipMessage : null\">\n            <p class=\"fr-logo\" [innerHTML]=\"logo.label\"></p>\n          </a>\n        </ng-container>\n      </div>\n      <div class=\"fr-footer__content\">\n        <p *ngIf=\"presentation\" class=\"fr-footer__content-desc\" [innerHtml]=\"presentation\"></p>\n        <ul class=\"fr-footer__content-list\">\n          <!-- BUG: Classe 'fr-footer__content-item' inconnue en DSFR 1.9.3 -->\n          <li *ngFor=\"let item of institutionalLinks\" class=\"fr-footer__content-item\">\n            <a\n              class=\"fr-footer__content-link\"\n              [attr.target]=\"getLinkTarget(item) ?? null\"\n              [href]=\"item.route ? item.route : item.link\">\n              {{ item.label }}</a\n            >\n          </li>\n        </ul>\n      </div>\n    </div>\n    <!--Bloc avec partenaires-->\n    <div *ngIf=\"partnerMain\" class=\"fr-footer__partners\">\n      <h2 class=\"fr-footer__partners-title\">{{ i18n.t('footer.partners.title') }}</h2>\n      <div class=\"fr-footer__partners-logos\">\n        <div class=\"fr-footer__partners-main\">\n          <a class=\"fr-footer__partners-link\" [href]=\"partnerMain.link\">\n            <img\n              class=\"fr-footer__logo\"\n              [ngStyle]=\"{\n                height: partnerMain.customHeight ? partnerMain.customHeight : '5.625rem'\n              }\"\n              [src]=\"partnerMain.imagePath\"\n              [attr.alt]=\"partnerMain.imageAlt\" />\n          </a>\n        </div>\n        <div *ngIf=\"partnersSub\" class=\"fr-footer__partners-sub\">\n          <ul>\n            <li *ngFor=\"let item of partnersSub\">\n              <a class=\"fr-footer__partners-link\" [href]=\"item.link\">\n                <img\n                  class=\"fr-footer__logo\"\n                  [ngStyle]=\"{ height: item.customHeight ? item.customHeight : '5.625rem' }\"\n                  [src]=\"item.imagePath\"\n                  [attr.alt]=\"item.imageAlt\" />\n              </a>\n            </li>\n          </ul>\n        </div>\n      </div>\n    </div>\n    <!-- Bottom ------------------------------------------------------------------------------------------------------->\n    <div class=\"fr-footer__bottom\">\n      <ul class=\"fr-footer__bottom-list\">\n        <li *ngFor=\"let item of mandatoryLinks\" class=\"fr-footer__bottom-item\">\n          <edu-item-link\n            [item]=\"item\"\n            customClass=\"fr-footer__bottom-link\"\n            (linkSelect)=\"onMandatoryLinkSelect($event)\"></edu-item-link>\n        </li>\n        <li *ngIf=\"display\" class=\"fr-footer__bottom-item\">\n          <button\n            type=\"button\"\n            class=\"fr-footer__bottom-link fr-fi-theme-fill fr-link--icon-left\"\n            [attr.aria-controls]=\"displayModalId\"\n            data-fr-opened=\"false\">\n            Paramètres d'affichage\n          </button>\n        </li>\n      </ul>\n      <div class=\"fr-footer__bottom-copy\">\n        <p [innerHTML]=\"license\"></p>\n      </div>\n    </div>\n  </div>\n</footer>\n\n<dsfr-display *ngIf=\"display && _useDeprecatedPictoPath\" [pictoPath]=\"artworkDirPath\"></dsfr-display>\n<dsfr-display *ngIf=\"display && !_useDeprecatedPictoPath\" [artworkDirPath]=\"artworkDirPath\"></dsfr-display>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { DsfrDisplayModule } from '../display';\nimport { ItemLinkComponent } from '../link/item-link.component';\nimport { DsfrFooterComponent } from './footer.component';\n\n@NgModule({\n  declarations: [DsfrFooterComponent],\n  exports: [DsfrFooterComponent],\n  imports: [CommonModule, RouterModule, ItemLinkComponent, DsfrDisplayModule],\n})\nexport class DsfrFooterModule {}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { I18nService } from '../../shared';\n\n@Component({\n  selector: 'dsfr-franceconnect',\n  templateUrl: './franceconnect.component.html',\n  encapsulation: ViewEncapsulation.None,\n  standalone: true,\n  imports: [CommonModule],\n})\nexport class DsfrFranceConnectComponent {\n  /** Utilisation de FranceConnect+ (qui est plus sécurisé). */\n  @Input() secure: boolean;\n\n  /** Demande de connexion par FranceConnect */\n  @Output() franceConnectSelect = new EventEmitter<boolean>();\n\n  /** @internal */\n  constructor(public i18n: I18nService) {}\n\n  /** @internal */\n  onConnect() {\n    this.franceConnectSelect.emit(this.secure);\n  }\n}\n","<div class=\"fr-connect-group\">\n  <button\n    type=\"button\"\n    [ngClass]=\"{\n      'fr-connect': true,\n      'fr-connect--plus': secure\n    }\"\n    (click)=\"onConnect()\">\n    <span class=\"fr-connect__login\">{{ i18n.t('franceConnect.title') }}</span>\n    <span class=\"fr-connect__brand\">FranceConnect</span>\n  </button>\n  <p>\n    <a\n      [href]=\"secure ? 'https://franceconnect.gouv.fr/france-connect-plus' : 'https://franceconnect.gouv.fr/'\"\n      target=\"_blank\"\n      rel=\"noopener\"\n      [title]=\"i18n.t('franceConnect.link.tooltip')\"\n      >{{ i18n.t('franceConnect.link.label') }}{{ secure ? '+' : '' }} ?</a\n    >\n  </p>\n</div>\n","import { AfterContentInit, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { I18nService, newUniqueId } from '../../shared';\n\n@Component({\n  selector: 'dsfr-search-bar',\n  templateUrl: './search-bar.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrSearchBarComponent implements AfterContentInit {\n  /**\n   * Attribut 'id' du champ de recherche, généré automatiquement par défaut.\n   */\n  @Input() inputId: string | undefined;\n\n  /** Texte du bouton  */\n  @Input() buttonText: string;\n\n  /** Label (pour les lecteurs d'écrans). */\n  @Input() label: string;\n\n  /** Bascule le composant dans sa version large. */\n  @Input() large: boolean = false;\n\n  /** Emet le texte lors de l'évènement keyup sur l'input de recherche.  */\n  @Output() searchChange = new EventEmitter<string>();\n\n  /** Emet le texte lors du clic sur le bouton \"rechercher\".  */\n  @Output() searchSelect: EventEmitter<string> = new EventEmitter<string>();\n\n  /** Le texte à rechercher. */\n  text: string;\n\n  private _id: string | undefined;\n\n  constructor(/** @internal */ public i18n: I18nService) {\n    const searchLabel = i18n.t('commons.search');\n    this.buttonText = searchLabel;\n    this.label = searchLabel;\n  }\n\n  get formId() {\n    return 'search-form-' + this.inputId;\n  }\n\n  /**\n   * @deprecated utiliser inputId\n   * @since 1.5\n   * * Cet attribut doit être utilisé en tant que propriété et non en attribut, ex. [id]=\"'monid'\"\n   */\n  @Input() set id(value: string | undefined) {\n    if (value) {\n      this._id = value;\n      this.inputId ??= this._id;\n    }\n  }\n\n  ngAfterContentInit() {\n    if (!this.inputId) this.inputId = newUniqueId();\n  }\n\n  /** @internal */\n  onSearch() {\n    this.searchChange.emit(this.text);\n  }\n\n  /** @internal */\n  onSearchClick() {\n    this.searchSelect.emit(this.text);\n  }\n\n  /**\n   * Si le libellé du bouton est identique au libellé potentiel du tooltip, il ne faut pas positionner de tooltip.\n   *\n   * @internal\n   */\n  getButtonTitleValue() {\n    return this.buttonText === this.i18n.t('commons.search') ? null : this.i18n.t('commons.search');\n  }\n}\n","<div [ngClass]=\"{ 'fr-search-bar--lg': large }\" class=\"fr-search-bar\" [id]=\"formId\" role=\"search\">\n  <label class=\"fr-label\" for=\"{{ inputId }}\"> {{ label }} </label>\n  <input\n    type=\"search\"\n    class=\"fr-input\"\n    placeholder=\"{{ i18n.t('commons.search') }}\"\n    (keyup)=\"onSearch()\"\n    [id]=\"inputId\"\n    name=\"{{ inputId || null }}\"\n    [attr.aria-describedby]=\"inputId + '-input-messages'\"\n    [(ngModel)]=\"text\" />\n  <div class=\"fr-messages-group\" id=\"{{ inputId }}-input-messages\" aria-live=\"polite\"></div>\n  <button\n    class=\"fr-btn\"\n    id=\"search-btn-{{ inputId }}\"\n    type=\"button\"\n    (click)=\"onSearchClick()\"\n    [attr.title]=\"getButtonTitleValue()\">\n    {{ buttonText }}\n  </button>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DsfrSearchBarComponent } from './search-bar.component';\n\n@NgModule({\n  declarations: [DsfrSearchBarComponent],\n  exports: [DsfrSearchBarComponent],\n  imports: [CommonModule, FormsModule],\n})\nexport class DsfrSearchBarModule {}\n","import { DOCUMENT } from '@angular/common';\nimport { Component, ElementRef, EventEmitter, Inject, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { I18nService, LangService, newUniqueId } from '../../shared';\nimport { DsfrLang } from './lang.model';\n\n@Component({\n  selector: 'dsfr-translate',\n  templateUrl: './translate.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\n/** Composant de sélection de la langue. */\nexport class DsfrTranslateComponent implements OnInit {\n  /** Liste des langues proposées à l'utilisateur. */\n  @Input() languages: DsfrLang[] = [];\n\n  /** Sans bordure si 'false' */\n  @Input() outline = true;\n\n  /** Événement émit uniquement si la langue sélectionnée ne contient pas de href. Il contient le code de la langue. */\n  @Output() langChange = new EventEmitter<string>();\n\n  /** @internal */\n  collapseId: string;\n\n  /** @internal */\n  constructor(\n    private langService: LangService,\n    public i18n: I18nService,\n    private elementRef: ElementRef,\n    @Inject(DOCUMENT) private readonly document: Document,\n  ) {}\n\n  get currentLangCode(): string {\n    return this.langService.lang;\n  }\n\n  get currentLabel(): string {\n    let label = '';\n    const language = this.getCurrentLang();\n    if (language && language.label) {\n      label = language.label;\n    }\n\n    return label;\n  }\n\n  /** Force la langue courante. */\n  @Input() set currentLangCode(value: string) {\n    this.langService.lang = value; // Informe le service\n    this.setDocLang(value); // Positionne la langue dans le document html\n  }\n\n  /** @internal */\n  ngOnInit() {\n    this.collapseId = newUniqueId();\n  }\n\n  /** @internal */\n  onClick(event: Event, lang: DsfrLang) {\n    this.currentLangCode = lang.value;\n\n    if (!lang.link) {\n      event.preventDefault();\n      // Si on ne déclenche pas le href, on est obligé de fermer manuellement le composant\n      this.collapse();\n      this.langChange.emit(lang.value);\n    }\n  }\n\n  private getCurrentLang(): DsfrLang | undefined {\n    return this.languages.find((l) => l.value === this.currentLangCode);\n  }\n\n  private collapse() {\n    const nativeElt = this.elementRef.nativeElement;\n    const buttonElt = nativeElt.querySelector('button');\n    if (buttonElt) {\n      buttonElt.setAttribute('aria-expanded', 'false');\n      buttonElt.setAttribute('data-fr-js-collapse-button', true);\n    }\n  }\n\n  /** Positionne l'attribut lang dans la balise html, ex : lang=\"fr\" */\n  private setDocLang(codeLang: string) {\n    this.document?.documentElement.setAttribute('lang', codeLang);\n  }\n}\n","<nav role=\"navigation\" class=\"fr-translate fr-nav\">\n  <div class=\"fr-nav__item\">\n    <button\n      type=\"button\"\n      [ngClass]=\"{\n        'fr-translate__btn': true,\n        'fr-btn fr-btn--tertiary': outline,\n        'fr-btn--tertiary-no-outline': !outline\n      }\"\n      [attr.aria-controls]=\"collapseId\"\n      aria-expanded=\"false\"\n      title=\"{{ i18n.t('translate.tooltip') }}\">\n      {{ currentLangCode?.toUpperCase() }}<span class=\"fr-hidden-lg\">&nbsp;- {{ currentLabel }}</span>\n    </button>\n    <div class=\"fr-collapse fr-translate__menu fr-menu\" [id]=\"collapseId\">\n      <ul class=\"fr-menu__list\">\n        <li *ngFor=\"let lang of languages\">\n          <a\n            class=\"fr-translate__language fr-nav__link\"\n            hreflang=\"{{ lang.value }}\"\n            lang=\"{{ lang.value }}\"\n            [href]=\"lang.link ? lang.link : lang.value\"\n            [attr.aria-current]=\"lang.value === currentLangCode ? true : null\"\n            (click)=\"onClick($event, lang)\">\n            {{ lang.value.toUpperCase() }} - {{ lang.label }}\n          </a>\n        </li>\n      </ul>\n    </div>\n  </div>\n</nav>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DsfrTranslateComponent } from './translate.component';\n\n@NgModule({\n  declarations: [DsfrTranslateComponent],\n  exports: [DsfrTranslateComponent],\n  imports: [CommonModule, FormsModule],\n})\nexport class DsfrTranslateModule {}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DsfrLink, I18nService } from '../../../shared';\nimport { DsfrLinkModule } from '../../link';\nimport { ItemLinkComponent } from '../../link/item-link.component';\nimport { DsfrMegaMenu } from './mega-menu.model';\n\n@Component({\n  selector: 'dsfr-mega-menu',\n  templateUrl: './mega-menu.component.html',\n  styleUrls: ['./mega-menu.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  imports: [CommonModule, FormsModule, ItemLinkComponent, DsfrLinkModule],\n  standalone: true,\n})\nexport class DsfrMegaMenuComponent {\n  @Input() megaMenu: DsfrMegaMenu;\n  @Input() idMenu: number;\n\n  /**Emet l'évènement Event du DOM à la sélection d'un lien */\n  @Output() linkSelect = new EventEmitter<DsfrLink>();\n\n  /**Emet l'évènement Event du DOM à la fermeture du méga menu */\n  @Output() closeSelect = new EventEmitter<Event>();\n\n  constructor(public i18n: I18nService) {}\n\n  onLink(event: DsfrLink) {\n    this.linkSelect.emit(event);\n  }\n\n  onClose() {\n    this.closeSelect.emit();\n  }\n}\n","<div class=\"fr-container fr-container--fluid fr-container-lg\">\n  <div class=\"fr-grid-row fr-grid-row-lg--gutters\">\n    <div class=\"fr-col-12 fr-mb-n3v\">\n      <button\n        type=\"button\"\n        (click)=\"onClose()\"\n        class=\"fr-btn--close fr-btn\"\n        [title]=\"i18n.t('commons.close')\"\n        [attr.aria-controls]=\"'mega-menu-' + idMenu\">\n        {{ i18n.t('commons.close') }}\n      </button>\n    </div>\n    <div *ngIf=\"megaMenu.leader\" class=\"fr-col-12 fr-col-lg-8 fr-col-offset-lg-4--right\">\n      <div class=\"fr-mega-menu__leader\">\n        <h4 class=\"fr-h4 fr-mb-2v\">{{ megaMenu.leader.title }}</h4>\n        <p *ngIf=\"megaMenu.leader.text\" class=\"fr-hidden fr-unhidden-lg\">{{ megaMenu.leader.text }}</p>\n        <edu-item-link\n          *ngIf=\"megaMenu.leader.link\"\n          [item]=\"megaMenu.leader.link\"\n          [icon]=\"'fr-icon-arrow-right-line'\"\n          (linkSelect)=\"onLink(megaMenu.leader.link)\"></edu-item-link>\n      </div>\n    </div>\n    <div *ngFor=\"let category of megaMenu.categories\" class=\"fr-col-12 fr-col-lg-3\">\n      <h5 *ngIf=\"category.label\" class=\"fr-mega-menu__category\">\n        <span *ngIf=\"!category.link\" class=\"fr-nav__link\">{{ category.label }}</span>\n        <dsfr-link\n          *ngIf=\"category.link\"\n          [customClass]=\"'fr-nav__link'\"\n          [label]=\"category.label!\"\n          [link]=\"category.link\"\n          linkTarget=\"_self\"></dsfr-link>\n      </h5>\n      <ul class=\"fr-mega-menu__list\">\n        <li *ngFor=\"let link of category.subItems\">\n          <edu-item-link\n            *ngIf=\"link\"\n            [item]=\"link\"\n            customClass=\"fr-nav__link\"\n            (linkSelect)=\"onLink(link)\"></edu-item-link>\n        </li>\n      </ul>\n    </div>\n  </div>\n</div>\n","import {\n  AfterViewInit,\n  Component,\n  ContentChild,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  OnInit,\n  Output,\n  Renderer2,\n  TemplateRef,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { DsfrLink, I18nService, newUniqueId } from '../../shared';\nimport { DSFR_CONFIG_TOKEN } from '../../shared/config/config-token';\nimport { DsfrConfig } from '../../shared/config/config.model';\nimport { DISPLAY_MODAL_ID } from '../display';\nimport { DsfrHeaderMenuItem, DsfrHeaderTranslate } from './header.model';\n\n@Component({\n  selector: 'dsfr-header',\n  templateUrl: './header.component.html',\n  styleUrls: ['./header.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrHeaderComponent implements OnInit, AfterViewInit {\n  /**@internal */\n  @ViewChild('toolLinksMobile') toolLinksMobile: ElementRef;\n  /**@internal */\n  @ViewChild('toolLinks') toolLinks: ElementRef;\n  /**@internal */\n  @ContentChild('headerTools', { static: true }) headerTools: TemplateRef<any>;\n  /**@internal */\n  @ContentChild('headerToolsMobile', { static: true }) headerToolsMobile: TemplateRef<any>;\n  /**@internal */\n  @ViewChild('translateComponent', { read: ElementRef }) translateComponent: ElementRef;\n\n  /**\n   * Boolean pour afficher le tag Beta (pour un site en beta).\n   */\n  @Input() beta = false;\n\n  /**\n   * Identifiant de la navigation principale, généré par défaut\n   */\n  @Input() navigationId: string;\n\n  /**\n   * Chemin vers le répertoire exposant les pictogrammes illustratifs DSFR.\n   */\n  @Input() artworkDirPath: string;\n\n  /**\n   * Label associé au bloc marque (Marianne). Respectez la structure avec les <br>.\n   * (Ministère, gouvernement, république française)\n   */\n  @Input() logoLabel = 'République<br/>Française';\n  /**\n   * Url du lien 'retour accueil' du logo de la Marianne.\n   */\n  //TODO: implémenter la totalité de l'interface DsfrNavigation\n  @Input() logoLink: string;\n  /**\n   * Url du lien 'retour accueil' du logo de la Marianne.\n   */\n  @Input() logoTooltipMessage: string;\n\n  /** Path pour src d'image d'illustration. */\n  @Input() operatorImagePath: string;\n  /**\n   * Text alternatif à utiliser uniquement si l'image à une information à passer.\n   */\n  @Input() operatorImageAlt: string;\n\n  /** Boolean pour passer le logo opérateur en mode vertical.  */\n  @Input() operatorImageVertical = false;\n\n  /** Nom du service. */\n  @Input() serviceTitle: string;\n\n  /** Tagline du service. */\n  @Input() serviceTagline: string;\n\n  /** Tableau d'items du menu. */\n  @Input() menu: DsfrHeaderMenuItem[] = [];\n\n  /**\n   * Permet d'afficher la barre de recherche.\n   */\n  @Input() searchBar = false;\n\n  /**\n   * Permet d'afficher le selecteur de langue pour l'internationalisation.\n   *\n   * @see DsfrHeaderTranslate\n   */\n  @Input() translate: DsfrHeaderTranslate;\n\n  /** Renvoi la valeur de l'input de la barre de recherche au changement.  */\n  @Output() readonly searchChange: EventEmitter<string> = new EventEmitter();\n\n  /** Renvoi la valeur de l'input de la barre de recherche au clic sur rechercher.  */\n  @Output() readonly searchSelect: EventEmitter<string> = new EventEmitter();\n\n  /**Emet l'évènement Event du DOM à la sélection d'un lien */\n  @Output() readonly linkSelect = new EventEmitter<DsfrLink>();\n\n  /** Evenement émis au changement de langue (si showTranslate). Il contient le code de la langue. */\n  @Output() readonly langChange = new EventEmitter<string>();\n\n  /** @internal */\n  public searchInputId = newUniqueId();\n\n  /**\n   * Nombre maximum de liens d'accès rapides (3)\n   *\n   * @internal\n   */\n  maxToolsLinks = 3;\n\n  /**\n   * @internal\n   */\n  _useDeprecatedPictoPath = false;\n\n  /**\n   * @internal\n   */\n  showDisplay: boolean;\n\n  private _headerToolsLinks: DsfrLink[]; // ne pas initialiser à [] pour StoryBook\n\n  /** @internal */\n  constructor(\n    @Inject(DSFR_CONFIG_TOKEN) private config: DsfrConfig,\n    public i18n: I18nService,\n    private renderer: Renderer2,\n  ) {}\n\n  get display(): boolean {\n    return this.showDisplay;\n  }\n\n  get headerToolsLinks(): DsfrLink[] {\n    return this._headerToolsLinks;\n  }\n\n  get displayModalId() {\n    return DISPLAY_MODAL_ID;\n  }\n\n  get pictoPath(): string {\n    return this.artworkDirPath;\n  }\n\n  /** Affichage du lien 'Paramètre d'affichage' pour gérer les modes clair/sombre. */\n  @Input() set display(value: boolean) {\n    this.showDisplay = value;\n    this.maxToolsLinks = this.showDisplay ? 2 : 3;\n  }\n\n  /**\n   * Tableau de lien d'accès rapide.\n   * Les icônes acceptés sont ceux du DSFR y compris ceux du tableau `DsfrBtnIcon`.\n   */\n  @Input() set headerToolsLinks(links: DsfrLink[]) {\n    if (links && links.length > this.maxToolsLinks) {\n      if (this.showDisplay) {\n        console.warn(\n          \"Avec l'utilisation du paramètre d'affichage, le nombre d'accès rapides (tools links) est limité à \" +\n            this.maxToolsLinks,\n        );\n      } else {\n        console.warn(\"Le nombre d'accès rapides (tools links) est limité à \" + this.maxToolsLinks);\n      }\n    }\n    this._headerToolsLinks = links;\n    this.duplicateToolsLinksMobile();\n  }\n\n  /**\n   * Chemin des pictogrammes (du composant display) renseigné par le développeur.\n   *\n   * Note: ce chemin doit permettre de récupérer directement les fichiers SVG suivants : moon.svg, sun.svg, system.svg\n   *\n   * @deprecated Use `artworkDirPath` instead.\n   */\n  @Input() set pictoPath(path: string) {\n    this.artworkDirPath = path;\n    this._useDeprecatedPictoPath = true;\n  }\n\n  /** internal */\n  ngOnInit(): void {\n    if (this.artworkDirPath === undefined) {\n      this.artworkDirPath = this.config.artworkDirPath;\n    }\n    this.navigationId ??= newUniqueId();\n  }\n\n  /** internal */\n  ngAfterViewInit(): void {\n    this.duplicateToolsLinksMobile();\n  }\n\n  /**\n   * Fix: evenements non dupliqués par le script DSFR pour les liens (toolslinks) version mobile\n   * On prend la main sur le clic de la div parente en cas de lien 'route' pour envoyer l'event linkSelect\n   * @param event element cliqué\n   * @internal\n   */\n  onSelectLinkMobile(event: Event) {\n    if (!this._headerToolsLinks) return;\n    const parent = (event.target as HTMLElement)?.parentElement;\n    const item = this._headerToolsLinks.find((l) => l.label === parent?.getAttribute('data-item'));\n    if (item && item.route && !item.routerLink) {\n      event.preventDefault();\n      this.linkSelect.emit(item);\n    }\n  }\n\n  /** @internal */\n  hasToolsLinks(): boolean {\n    return this.headerToolsLinks?.length > 0 || this.translate?.languages?.length > 0 || this.display;\n  }\n\n  /** @internal */\n  onLink(item: DsfrLink) {\n    this.linkSelect.emit(item);\n  }\n\n  /** @internal */\n  onSearchSubmit(text: string) {\n    this.searchSelect.emit(text);\n  }\n\n  /** @internal */\n  onSearchChange(text: string) {\n    this.searchChange.emit(text);\n  }\n\n  /** @internal */\n  onLanguageChange(codeLang: string) {\n    this.langChange.emit(codeLang);\n  }\n\n  /** @internal */\n  onMegaMenuClose(item: DsfrHeaderMenuItem) {\n    item.expanded = false;\n  }\n\n  /** @internal */\n  onMenuItemClick(item: DsfrHeaderMenuItem) {\n    this.menu.forEach((i) => (i.expanded = false));\n    item.expanded = true;\n  }\n\n  /** @internal */\n  getCustomClassHeaderToolsLink(item: DsfrLink) {\n    const customClass = ['fr-btn'];\n    if (item.icon) customClass.push(item.icon);\n    if (item.customClass) customClass.push(item.customClass);\n    return customClass.join(' ');\n  }\n\n  /**\n   * Dupliquer les liens toolsLinks pour le menu mobile\n   * /!\\ interaction script DSFR : le script copie les liens la premiere fois, mais n'écoute pas les changements\n   * Les liens à l'interieur de fr-header__tools-links sont dupliqués dans fr-header__menu-links\n   */\n  private duplicateToolsLinksMobile() {\n    if (this.toolLinksMobile?.nativeElement) {\n      // timeout pour laisser le temps du rendu des éléments  dans toolsLinks\n      setTimeout(() => {\n        const childElements: HTMLCollection = this.toolLinksMobile.nativeElement.children;\n        // suppression des noeuds précédent\n        Array.from(childElements).forEach((e) => {\n          this.renderer.removeChild(this.toolLinksMobile.nativeElement, e);\n        });\n        // copie des liens de menu\n        if (this.toolLinks?.nativeElement) {\n          this.renderer.appendChild(this.toolLinksMobile.nativeElement, this.toolLinks.nativeElement.cloneNode(true));\n        }\n        // Dupliquer le composant translate\n        if (this.translate) {\n          if (this.translateComponent) {\n            this.renderer.appendChild(this.toolLinksMobile.nativeElement, this.translateComponent.nativeElement);\n          }\n        }\n      });\n    }\n  }\n}\n","<header role=\"banner\" class=\"fr-header\">\n  <!-- BUG: Classe 'fr-header__body' inconnue en DSFR 1.9.3 -->\n  <div class=\"fr-header__body\">\n    <div class=\"fr-container\">\n      <div class=\"fr-header__body-row\">\n        <div class=\"fr-header__brand fr-enlarge-link\">\n          <div class=\"fr-header__brand-top\">\n            <div class=\"fr-header__logo\">\n              <!--Cas marianne sans titre ni image opérateur-->\n              <a\n                *ngIf=\"!serviceTitle && !operatorImagePath\"\n                [href]=\"logoLink\"\n                [attr.title]=\"logoTooltipMessage ? logoTooltipMessage : null\">\n                <p class=\"fr-logo\" [innerHTML]=\"logoLabel\"></p>\n              </a>\n              <!--Cas marianne avec titre et/ou image opérateur-->\n              <p *ngIf=\"serviceTitle || operatorImagePath\" class=\"fr-logo\" [innerHTML]=\"logoLabel\"></p>\n            </div>\n            <div *ngIf=\"operatorImagePath\" class=\"fr-header__operator\">\n              <!--Cas où il n'y a pas de titre avec l'image-->\n              <a *ngIf=\"!serviceTitle\" [href]=\"logoLink\" [attr.title]=\"logoTooltipMessage ? logoTooltipMessage : null\">\n                <img\n                  class=\"fr-responsive-img\"\n                  [style.width]=\"operatorImageVertical ? '3.5rem' : null\"\n                  [style.max-width]=\"!operatorImageVertical ? '9.0625rem' : null\"\n                  [src]=\"operatorImagePath\"\n                  [attr.alt]=\"operatorImageAlt\" />\n              </a>\n              <!--Cas où il y a un titre avec l'image-->\n              <img\n                *ngIf=\"serviceTitle\"\n                class=\"fr-responsive-img\"\n                [style.width]=\"operatorImageVertical ? '3.5rem' : null\"\n                [style.max-width]=\"!operatorImageVertical ? '9.0625rem' : null\"\n                [src]=\"operatorImagePath\"\n                [attr.alt]=\"operatorImageAlt\" />\n              <!-- L’alternative de l’image (attribut alt) doit impérativement être renseignée et reprendre le texte visible dans l’image -->\n            </div>\n            <div class=\"fr-header__navbar\">\n              <button\n                *ngIf=\"searchBar\"\n                type=\"button\"\n                class=\"fr-btn--search fr-btn\"\n                data-fr-opened=\"false\"\n                [attr.aria-controls]=\"navigationId + '-search'\"\n                id=\"{{ navigationId }}-button-search\"\n                [title]=\"i18n.t('commons.search')\">\n                {{ i18n.t('commons.search') }}\n              </button>\n              <button\n                type=\"button\"\n                class=\"fr-btn--menu fr-btn\"\n                data-fr-opened=\"false\"\n                [attr.aria-controls]=\"navigationId\"\n                id=\"{{ navigationId }}-button-menu\"\n                [title]=\"i18n.t('header.menu.label')\">\n                {{ i18n.t('header.menu.label') }}\n              </button>\n            </div>\n          </div>\n          <div *ngIf=\"serviceTitle || beta\" class=\"fr-header__service\">\n            <a *ngIf=\"logoLink\" [href]=\"logoLink\" [attr.title]=\"logoTooltipMessage ? logoTooltipMessage : null\">\n              <p class=\"fr-header__service-title\">\n                {{ serviceTitle }}<span *ngIf=\"beta\" class=\"fr-badge fr-badge--sm fr-badge--green-emeraude\">BETA</span>\n              </p>\n            </a>\n            <p *ngIf=\"!logoLink\" class=\"fr-header__service-title\">\n              {{ serviceTitle }}<span *ngIf=\"beta\" class=\"fr-badge fr-badge--sm fr-badge--green-emeraude\">BETA</span>\n            </p>\n            <!-- BUG Classe 'fr-header__service-tagline' inconnue en DSFR 1.9.3 -->\n            <p *ngIf=\"serviceTagline\" class=\"fr-header__service-tagline\">\n              {{ serviceTagline }}\n            </p>\n          </div>\n        </div>\n\n        <!-- Header tools --------------------------------------------------------------------------------------------->\n\n        <!-- Slot -->\n        <ng-container *ngIf=\"headerTools\">\n          <div class=\"fr-header__tools\"><ng-container *ngTemplateOutlet=\"headerTools\"></ng-container></div>\n        </ng-container>\n\n        <div *ngIf=\"hasToolsLinks() || searchBar\" class=\"fr-header__tools\">\n          <div *ngIf=\"hasToolsLinks()\" class=\"fr-header__tools-links\">\n            <ul #toolLinks *ngIf=\"headerToolsLinks || showDisplay\" class=\"fr-btns-group\">\n              <li *ngFor=\"let item of headerToolsLinks; let i = index\">\n                <edu-item-link\n                  *ngIf=\"i < maxToolsLinks\"\n                  [attr.data-item]=\"item.label\"\n                  [customClass]=\"getCustomClassHeaderToolsLink(item)\"\n                  [defaultIconPosition]=\"undefined\"\n                  (linkSelect)=\"onLink(item)\"\n                  [item]=\"item\">\n                </edu-item-link>\n              </li>\n              <li *ngIf=\"showDisplay\">\n                <button\n                  type=\"button\"\n                  class=\"fr-btn fr-icon-theme-fill\"\n                  [attr.aria-controls]=\"displayModalId\"\n                  data-fr-opened=\"false\">\n                  {{ i18n.t('display.heading') }}\n                </button>\n              </li>\n            </ul>\n\n            <ng-container *ngIf=\"translate\">\n              <dsfr-translate\n                (langChange)=\"onLanguageChange($event)\"\n                [languages]=\"translate.languages\"></dsfr-translate>\n            </ng-container>\n          </div>\n          <div\n            *ngIf=\"searchBar\"\n            [attr.aria-labelledby]=\"'search-btn-' + searchInputId\"\n            class=\"fr-header__search fr-modal\"\n            [id]=\"navigationId + '-search'\">\n            <div class=\"fr-container fr-container-lg--fluid\">\n              <button\n                type=\"button\"\n                class=\"fr-btn--close fr-btn\"\n                [attr.aria-controls]=\"navigationId + '-search'\"\n                title=\"{{ i18n.t('commons.close') }}\">\n                {{ i18n.t('commons.close') }}\n              </button>\n              <dsfr-search-bar\n                id=\"search-header\"\n                [inputId]=\"searchInputId\"\n                (searchChange)=\"onSearchChange($event)\"\n                (searchSelect)=\"onSearchSubmit($event)\"></dsfr-search-bar>\n            </div>\n          </div>\n        </div>\n        <!-- fin header tools ----------------------------------------------------------------------------------------->\n      </div>\n    </div>\n  </div>\n  <!-- Menu de navigation principale  --------------------------------------------------------------------------------->\n  <div\n    *ngIf=\"menu\"\n    class=\"fr-header__menu fr-modal\"\n    [id]=\"navigationId\"\n    [attr.aria-labelledby]=\"navigationId + '-button-menu'\">\n    <div class=\"fr-container\">\n      <button\n        type=\"button\"\n        class=\"fr-btn--close fr-btn\"\n        [attr.aria-controls]=\"navigationId\"\n        title=\" {{ i18n.t('commons.close') }}\">\n        {{ i18n.t('commons.close') }}\n      </button>\n      <div #toolLinksMobile (click)=\"onSelectLinkMobile($event)\" class=\"fr-header__menu-links\">\n        <ng-container *ngIf=\"headerToolsMobile\">\n          <ng-container *ngTemplateOutlet=\"headerToolsMobile\"></ng-container>\n        </ng-container>\n      </div>\n\n      <!-- Composant translate déplacé dans toolsLinksMobile -->\n      <dsfr-translate\n        *ngIf=\"translate\"\n        #translateComponent\n        (langChange)=\"onLanguageChange($event)\"\n        [languages]=\"translate.languages\"></dsfr-translate>\n\n      <nav class=\"fr-nav\" id=\"{{ navigationId }}-nav\" role=\"navigation\" [attr.aria-label]=\"i18n.t('header.mainMenu')\">\n        <ul class=\"fr-nav__list\">\n          <ng-container *ngFor=\"let item of menu; let i = index\">\n            <!-- Entrée de menu simple (lien direct) ------------------------------------------------------------------>\n            <li *ngIf=\"!item.subItems && !item.megaMenu\" class=\"fr-nav__item\">\n              <edu-item-link [item]=\"item\" customClass=\"fr-nav__link\" (linkSelect)=\"onLink(item)\"></edu-item-link>\n            </li>\n            <!-- Entrée de menu déroulant ----------------------------------------------------------------------------->\n            <li *ngIf=\"item.subItems\" class=\"fr-nav__item\">\n              <button\n                type=\"button\"\n                class=\"fr-nav__btn\"\n                (click)=\"onMenuItemClick(item)\"\n                [attr.aria-current]=\"item.active ? true : null\"\n                [attr.aria-expanded]=\"item.expanded ?? false\"\n                [attr.aria-controls]=\"'menu-' + i\">\n                {{ item.label }}\n              </button>\n              <div class=\"fr-collapse fr-menu\" id=\"menu-{{ i }}\">\n                <ul class=\"fr-menu__list\">\n                  <edu-item-link\n                    *ngFor=\"let subItem of item.subItems\"\n                    [item]=\"subItem\"\n                    customClass=\"fr-nav__link\"\n                    (linkSelect)=\"onLink(subItem)\"></edu-item-link>\n                </ul>\n              </div>\n            </li>\n            <!-- Entrée de méga menu ---------------------------------------------------------------------------------->\n            <li *ngIf=\"item.megaMenu\" class=\"fr-nav__item\">\n              <button\n                type=\"button\"\n                (click)=\"onMenuItemClick(item)\"\n                class=\"fr-nav__btn\"\n                [attr.aria-expanded]=\"item.expanded ?? false\"\n                [attr.aria-controls]=\"'mega-menu-' + i\"\n                [attr.aria-current]=\"item.active ? true : null\">\n                {{ item.label }}\n              </button>\n              <div\n                [ngClass]=\"{ 'fr-collapse--expanded': item.expanded }\"\n                class=\"fr-collapse fr-mega-menu\"\n                id=\"mega-menu-{{ i }}\"\n                tabindex=\"-1\">\n                <dsfr-mega-menu\n                  [megaMenu]=\"item.megaMenu\"\n                  [idMenu]=\"i\"\n                  (closeSelect)=\"onMegaMenuClose(item)\"\n                  (linkSelect)=\"onLink($event)\"></dsfr-mega-menu>\n              </div>\n            </li>\n          </ng-container>\n        </ul>\n      </nav>\n    </div>\n  </div>\n</header>\n\n<dsfr-display *ngIf=\"showDisplay && _useDeprecatedPictoPath\" [pictoPath]=\"artworkDirPath\"></dsfr-display>\n<dsfr-display *ngIf=\"showDisplay && !_useDeprecatedPictoPath\" [artworkDirPath]=\"artworkDirPath\"></dsfr-display>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { DsfrDisplayModule } from '../display';\nimport { DsfrLinkModule } from '../link';\nimport { ItemLinkComponent } from '../link/item-link.component';\nimport { DsfrSearchBarModule } from '../search-bar';\nimport { DsfrTranslateModule } from '../translate';\nimport { DsfrHeaderComponent } from './header.component';\nimport { DsfrMegaMenuComponent } from './mega-menu/mega-menu.component';\n\n@NgModule({\n  declarations: [DsfrHeaderComponent],\n  exports: [DsfrHeaderComponent],\n  imports: [\n    CommonModule,\n    FormsModule,\n    RouterModule,\n    DsfrMegaMenuComponent,\n    DsfrSearchBarModule,\n    ItemLinkComponent,\n    DsfrTranslateModule,\n    DsfrDisplayModule,\n    DsfrLinkModule,\n  ],\n})\nexport class DsfrHeaderModule {}\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { DsfrSize, DsfrSizeConst } from '../../shared';\n\n@Component({\n  selector: 'dsfr-highlight',\n  templateUrl: './highlight.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrHighlightComponent {\n  /** Contenu du composant, html accepté. */\n  @Input() text: string;\n\n  /** Choix de la taille du texte, medium par défaut. */\n  @Input() textSize: DsfrSize;\n\n  /**\n   * Permet de personnaliser la couleur.\n   * Il faut donner le nom de class exact (ex : fr-highlight--green-emeraude) que vous trouverez via ce [lien]\n   * (@link https://gouvfr.atlassian.net/wiki/spaces/DB/pages/223019199/Mise+en+exergue+-+Highlight#Couleurs-d%E2%80%99accent)\n   */\n  @Input() customClass: string;\n\n  /** @internal */\n  getClasses(): { [className: string]: boolean } {\n    return { 'fr-text--sm': this.textSize === DsfrSizeConst.SM, 'fr-text--lg': this.textSize === DsfrSizeConst.LG };\n  }\n}\n","<div class=\"fr-highlight\" [ngClass]=\"customClass ? customClass : ''\">\n  <p *ngIf=\"text\" [ngClass]=\"getClasses()\" [innerHtml]=\"text\"></p>\n  <p *ngIf=\"!text\" [ngClass]=\"getClasses()\">\n    <ng-content></ng-content>\n  </p>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DsfrHighlightComponent } from './highlight.component';\n\n@NgModule({\n  declarations: [DsfrHighlightComponent],\n  exports: [DsfrHighlightComponent],\n  imports: [CommonModule],\n})\nexport class DsfrHighlightModule {}\n","import { Component, Input } from '@angular/core';\nimport { DsfrSize } from '../../shared';\n\n@Component({\n  selector: 'dsfr-logo',\n  templateUrl: './logo.component.html',\n})\nexport class DsfrLogoComponent {\n  /** Taille du logo, MD par défaut si non spécifié. */\n  @Input() size: DsfrSize;\n\n  /** Intitulé officiel */\n  @Input() label: string;\n}\n","<p\n  [ngClass]=\"{\n    'fr-logo': true,\n    'fr-logo--sm': size === 'SM',\n    'fr-logo--lg': size === 'LG'\n  }\">\n  <span *ngIf=\"label\" [outerHTML]=\"label\"></span>\n  <ng-content *ngIf=\"!label\"></ng-content>\n</p>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DsfrLogoComponent } from './logo.component';\n\n@NgModule({\n  declarations: [DsfrLogoComponent],\n  imports: [CommonModule],\n})\nexport class DsfrLogoModule {}\n","import {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  Renderer2,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { DsfrHeadingLevel, DsfrSize, DsfrSizeConst, I18nService, newUniqueId } from '../../shared';\nimport { DsfrModalAction } from './modal-action.model';\n\ndeclare function dsfr(elem: HTMLElement): any;\n\n@Component({\n  selector: 'dsfr-modal',\n  templateUrl: './modal.component.html',\n  styleUrls: ['./modal.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrModalComponent implements AfterViewInit, OnInit, OnDestroy {\n  /** L'identifiant unique de l'élément <dialog>. */\n  @Input() dialogId: string;\n\n  /** Titre de la modal. */\n  // TODO heading ?\n  @Input() titleModal: string;\n\n  /**\n   * Le niveau de titre devant être utilisé (tag `h1` par défaut).\n   * Cette balise ne produit pas de style, mais de la structure.\n   */\n  @Input() headingLevel: DsfrHeadingLevel | undefined;\n\n  /** Le tableau des actions à positionner dans le dialogue modal. */\n  // TODO Ne faudrait-il pas homogénéiser avec les tuiles et les cartes ?\n  @Input() actions: DsfrModalAction[] = [];\n\n  /** Permet de ne pas fermer la modale automatiquement lorsqu'une action est exécutée. */\n  @Input() autoCloseOnAction = true;\n\n  /**\n   * Le mode de contrôle vous permet, le cas échéant,  de maintenir la capacité de la modale à être pilotée\n   * programmatiquement en absence de bouton de contrôle.\n   *\n   * @since 1.8.0\n   */\n  @Input() controlMode: 'button' | 'dynamic' = 'button';\n\n  /** Signale l'ouverture de la modal. */\n  @Output() disclose = new EventEmitter<void>();\n\n  /** Signale la fermeture de la modal. */\n  @Output() conceal = new EventEmitter<void>();\n\n  /** @internal */\n  @ViewChild('dsfrModal') dsfrModal: ElementRef;\n\n  /**\n   * L'identifiant unique de l'élément tenant titre descriptif du dialogue modal.\n   *\n   * @internal\n   */\n  titleElementId: string;\n\n  /** @internal */\n  sizeClasses: { [klass: string]: boolean };\n\n  private _size: DsfrSize = DsfrSizeConst.MD;\n\n  private _unlisten: { (): void }[] = [];\n\n  /** @internal */\n  constructor(\n    public i18n: I18nService,\n    private elemRef: ElementRef,\n    private renderer2: Renderer2,\n  ) {\n    this.updateSizeClasses();\n  }\n\n  get size(): DsfrSize {\n    return this._size;\n  }\n\n  /**\n   * La taille de la modale.\n   * Valeurs possibles : `SM` (pour small), `MD` (pour medium), `LG` (pour large).\n   */\n  @Input() set size(newSize: DsfrSize) {\n    this._size = newSize;\n    this.updateSizeClasses();\n  }\n\n  ngOnInit() {\n    this.dialogId ??= newUniqueId();\n    this.titleElementId = newUniqueId();\n  }\n\n  ngAfterViewInit() {\n    this._unlisten.push(\n      this.renderer2.listen(this.dsfrModal.nativeElement, 'dsfr.conceal', () => {\n        this.conceal.emit();\n      }),\n      this.renderer2.listen(this.dsfrModal.nativeElement, 'dsfr.disclose', () => {\n        this.disclose.emit();\n      }),\n    );\n  }\n\n  ngOnDestroy() {\n    this._unlisten.forEach((unlistenFunc) => unlistenFunc());\n  }\n\n  /**\n   * Permet de déclencher programmatiquement l'ouverture de la modale.\n   */\n  open() {\n    dsfr(this.dsfrModal.nativeElement).modal.disclose();\n  }\n\n  /**\n   * Permet de déclencher programmatiquement la fermeture de la modale.\n   */\n  close() {\n    dsfr(this.dsfrModal.nativeElement).modal.conceal();\n  }\n\n  /** @internal */\n  performAction(action: DsfrModalAction): void {\n    if (action.callback) {\n      action.callback();\n    }\n  }\n\n  private updateSizeClasses() {\n    this.sizeClasses = {\n      'fr-col-12': true,\n      'fr-col-md-4': this.size === DsfrSizeConst.SM,\n      'fr-col-md-8 fr-col-lg-6': this.size === DsfrSizeConst.MD,\n      'fr-col-md-8': this.size === DsfrSizeConst.LG,\n    };\n  }\n}\n","<button\n  *ngIf=\"controlMode === 'dynamic'\"\n  type=\"button\"\n  style=\"display: none\"\n  data-fr-opened=\"false\"\n  [attr.aria-controls]=\"dialogId\"\n  disabled\n  hidden></button>\n<dialog [attr.aria-labelledby]=\"titleElementId\" [id]=\"dialogId\" class=\"fr-modal\" #dsfrModal>\n  <div class=\"fr-container fr-container--fluid fr-container-md\">\n    <div class=\"fr-grid-row fr-grid-row--center\">\n      <div [ngClass]=\"sizeClasses\">\n        <div class=\"fr-modal__body\">\n          <div class=\"fr-modal__header\">\n            <button\n              type=\"button\"\n              class=\"fr-btn fr-btn--close\"\n              [title]=\"i18n.t('modal.ariaLabel')\"\n              [attr.aria-controls]=\"dialogId\">\n              {{ i18n.t('commons.close') }}\n            </button>\n          </div>\n          <div class=\"fr-modal__content\">\n            <!-- pas d'utilisation du composant edu-heading car H1 présent -->\n            <ng-container [ngSwitch]=\"headingLevel\">\n              <h1 *ngSwitchDefault [id]=\"titleElementId\" class=\"fr-modal__title\">\n                <span class=\"fr-icon-arrow-right-line fr-fi--lg\" aria-hidden=\"true\"></span>{{ titleModal }}\n              </h1>\n              <h2 *ngSwitchCase=\"'H2'\" [id]=\"titleElementId\" class=\"fr-modal__title\">\n                <span class=\"fr-icon-arrow-right-line fr-fi--lg\" aria-hidden=\"true\"></span>{{ titleModal }}\n              </h2>\n              <h3 *ngSwitchCase=\"'H3'\" [id]=\"titleElementId\" class=\"fr-modal__title\">\n                <span class=\"fr-icon-arrow-right-line fr-fi--lg\" aria-hidden=\"true\"></span>{{ titleModal }}\n              </h3>\n              <h4 *ngSwitchCase=\"'H4'\" [id]=\"titleElementId\" class=\"fr-modal__title\">\n                <span class=\"fr-icon-arrow-right-line fr-fi--lg\" aria-hidden=\"true\"></span>{{ titleModal }}\n              </h4>\n              <h5 *ngSwitchCase=\"'H5'\" [id]=\"titleElementId\" class=\"fr-modal__title\">\n                <span class=\"fr-icon-arrow-right-line fr-fi--lg\" aria-hidden=\"true\"></span>{{ titleModal }}\n              </h5>\n              <h6 *ngSwitchCase=\"'H6'\" [id]=\"titleElementId\" class=\"fr-modal__title\">\n                <span class=\"fr-icon-arrow-right-line fr-fi--lg\" aria-hidden=\"true\"></span>{{ titleModal }}\n              </h6>\n            </ng-container>\n            <ng-content></ng-content>\n          </div>\n          <div class=\"fr-modal__footer\" *ngIf=\"actions && actions.length > 0\">\n            <div\n              class=\"fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left\">\n              <dsfr-button\n                *ngFor=\"let action of actions\"\n                [ariaControls]=\"autoCloseOnAction ? dialogId : ''\"\n                [ariaLabel]=\"action.ariaLabel ?? ''\"\n                [icon]=\"action.icon\"\n                [label]=\"action.label\"\n                [type]=\"action.type ?? 'submit'\"\n                [tooltipMessage]=\"action.tooltipMessage ?? ''\"\n                [disabled]=\"action.disabled ?? false\"\n                [uppercase]=\"action.uppercase ?? false\"\n                [variant]=\"action.variant ?? 'primary'\"\n                (click)=\"performAction(action)\">\n              </dsfr-button>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</dialog>\n\n<ng-template #headingLevelTitle> </ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DsfrButtonModule } from '../button';\nimport { DsfrModalComponent } from './modal.component';\n\n@NgModule({\n  declarations: [DsfrModalComponent],\n  exports: [DsfrModalComponent],\n  imports: [CommonModule, DsfrButtonModule],\n})\nexport class DsfrModalModule {}\n","import { Component, ElementRef, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { I18nService } from '../../shared';\n\n@Component({\n  selector: 'dsfr-notice',\n  templateUrl: './notice.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrNoticeComponent {\n  /**\n   * Le message qui sera affiché dans le bandeau.\n   * Renseigner le message via l'input est prioritaire sur le slot.\n   */\n  @Input() message: string;\n\n  /**\n   * Permet d'afficher le bouton servant à fermer le bandeau d'information.<br>\n   * La valeur 'controlled' permet d'afficher le bouton de fermeture mais c'est vous qui devez contrôler l'action de\n   * fermeture du bandeau.\n   */\n  @Input() closable: boolean | 'controlled' = false;\n\n  /**\n   * Signale la fermeture manuelle du bandeau d'information.\n   */\n  @Output() readonly noticeClose = new EventEmitter<ElementRef>();\n\n  constructor(\n    /** @internal */ public i18n: I18nService,\n    private hostElement: ElementRef,\n  ) {}\n\n  /** @internal */\n  onClose() {\n    if (this.closable && this.closable !== 'controlled') {\n      this.hostElement.nativeElement.parentNode?.removeChild(this.hostElement.nativeElement);\n    }\n    this.noticeClose.emit(this.hostElement);\n  }\n}\n","<div class=\"fr-notice fr-notice--info\">\n  <div class=\"fr-container\">\n    <div class=\"fr-notice__body\">\n      <ng-container *ngIf=\"message\">\n        <p class=\"fr-notice__title\" [innerHTML]=\"message\"></p>\n      </ng-container>\n      <ng-container *ngIf=\"!message\">\n        <p class=\"fr-notice__title\">\n          <ng-content></ng-content>\n        </p>\n      </ng-container>\n      <ng-container *ngIf=\"closable\">\n        <button type=\"button\" class=\"fr-btn--close fr-btn\" title=\"{{ i18n.t('notice.close') }}\" (click)=\"onClose()\">\n          {{ i18n.t('notice.close') }}\n        </button>\n      </ng-container>\n    </div>\n  </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DsfrNoticeComponent } from './notice.component';\n\n@NgModule({\n  declarations: [DsfrNoticeComponent],\n  exports: [DsfrNoticeComponent],\n  imports: [CommonModule],\n})\nexport class DsfrNoticeModule {}\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'edu-page-link',\n  templateUrl: './page-link.component.html',\n  styleUrls: ['./page-link.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class EduPageLinkComponent {\n  @Input() active = false;\n  @Input() customClass: string;\n  @Input() disabled = false;\n  @Input() label: string;\n  @Input() labelCustomClass: string;\n  @Input() num: number;\n  @Output() pageSelectEvent = new EventEmitter<number>();\n  private _tooltipMessage: string;\n\n  get tooltipMessage(): string {\n    return this._tooltipMessage ? this._tooltipMessage : this.label;\n  }\n\n  @Input() set tooltipMessage(value: string) {\n    this._tooltipMessage = value;\n  }\n\n  onPage(event: Event, pageNum: number) {\n    event.preventDefault();\n    this.pageSelectEvent.emit(pageNum);\n  }\n}\n","<!-- ici on utilise des boutons a la place des liens pour l'accessibilité (pas de href) -->\n<button\n  class=\"fr-pagination__link\"\n  [ngClass]=\"customClass ? customClass : ''\"\n  [attr.aria-current]=\"active ? 'page' : null\"\n  [disabled]=\"disabled\"\n  [attr.aria-label]=\"tooltipMessage || null\"\n  (click)=\"onPage($event, num)\">\n  <span *ngIf=\"label\" [class]=\"labelCustomClass || null\">{{ label }}</span>\n</button>\n","export type Interval = [number, number];\n\n/**\n * si n <= 5   : [[1,n]],                 n=4 -> (1 2 3 4)\n *                                        n=5 -> (1 2 3 4 5)\n * si p <= 2   : [[1,3], [n, n]],    p=2, n=6 -> (1 2 3 ... 6)\n * si p >= n-3 : [min(p-1, n-2), n], p=3, n=6 -> (... 2 3 4 5 6)\n *                                   p=4, n=6 -> (... 3 4 5 6)\n *                                   p=5, n=6 -> (... 4 5 6)\n *                                   p=5, n=6 -> (... 4 5 6)\n * sinon [[p-1, p+1], [n, n]],       p=3, n=7 -> (... 2 3 4 ... 7)\n * @param p n° de la page courante, démarre à 1\n * @param n nombre de pages\n */\nexport function calcPages(p: number, n: number): Interval[] {\n  // n <= 5\n  if (n <= 5) return [[1, n]];\n\n  // p <= 2\n  if (p <= 2)\n    return [\n      [1, 3],\n      [n, n], // on affiche toujours la dernière page\n    ];\n\n  // p >= n-3\n  if (p >= n - 3) return [[Math.min(p - 1, n - 2), n]];\n\n  // sinon\n  return [\n    [p - 1, p + 1],\n    [n, n], // on affiche toujours la dernière page\n  ];\n}\n","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { I18nService } from '../../shared';\nimport { Interval, calcPages } from './pagination-calc';\n\n@Component({\n  selector: 'dsfr-pagination',\n  templateUrl: './pagination.component.html',\n  styleUrls: ['./pagination.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrPaginationComponent implements OnChanges {\n  /* Nombre de pages du composant. */\n  @Input() pageCount = 0;\n\n  /* N° de la page active, démarre à : 1 */\n  @Input() currentPage = 1;\n\n  /** @since 1.6 Affiche uniquement l'icône d'accès à la page précédement si vrai. */\n  @Input() previousOnly = false;\n\n  /** Attribut ariaLabel permettant de contextualiser la pagination */\n  @Input() ariaLabel: string;\n\n  /* Evènement de sélection d'une page, passe le n° de la page en paramètre. L'événement initial n'est pas propagé. */\n  @Output() pageSelect = new EventEmitter<number>();\n\n  /** @deprecated @since 1.6 utiliser `pageSelect` à la place. */\n  @Output() pageSelectEvent = new EventEmitter<number>();\n\n  /* Evènement page précédente. L'événement initial n'est pas propagé. */\n  @Output() backSelect = new EventEmitter<void>();\n\n  /** @deprecated @since 1.6 utiliser `backSelect` à la place. */\n  @Output() backEvent = new EventEmitter<void>();\n\n  /** @internal */ intervals: Interval[] = [];\n\n  /** @internal */\n  constructor(public i18n: I18nService) {\n    this.ariaLabel = i18n.t('pagination.ariaLabel');\n  }\n\n  get prevNum(): number {\n    return Math.max(1, this.currentPage - 1);\n  }\n\n  get nextNum(): number {\n    return Math.min(this.currentPage + 1, this.pageCount);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    //FIXME: RPA je me demande si la maj de this.intervals ne devrait pas être conditionnée à la détection de\n    // changement sur les inputs currentPage / pageCount\n    if (this.currentPage && this.pageCount) this.intervals = calcPages(this.currentPage, this.pageCount);\n  }\n\n  /** @internal */\n  onBack() {\n    this.backSelect.emit();\n    this.backEvent.emit();\n  }\n\n  /** @internal */\n  onPage(pageNum: number) {\n    this.pageSelect.emit(pageNum);\n    this.pageSelectEvent.emit(pageNum);\n  }\n\n  /** @internal */\n  previous(): number {\n    if (!this.isFirstPage()) this.onPage(this.currentPage - 1);\n    return this.currentPage;\n  }\n\n  next(): number {\n    if (!this.isLastPage()) this.onPage(this.currentPage + 1);\n    return this.currentPage;\n  }\n\n  /** @internal */\n  isFirstPage(): boolean {\n    return this.pageCount === 0 || this.currentPage == 1;\n  }\n\n  /** @internal */\n  isLastPage(): boolean {\n    return this.pageCount === 0 || this.currentPage == this.pageCount;\n  }\n\n  /** @internal */\n  pagesFrom(interval: Interval): number[] {\n    const firstPage = interval[0];\n    const lastPage = interval[1];\n    const count = lastPage - firstPage + 1;\n    return Array(count)\n      .fill(0)\n      .map((e, i) => i + firstPage);\n  }\n}\n","<!-- Page précédente seulement ---------------------------------------------------------------------------------------->\n\n<nav *ngIf=\"previousOnly\" class=\"fr-pagination\" [attr.role]=\"i18n.t('pagination.role')\" [attr.aria-label]=\"ariaLabel\">\n  <ul class=\"fr-pagination__list\">\n    <edu-page-link\n      customClass=\"fr-pagination__link--prev fr-pagination__link--lg-label\"\n      label=\"Page précédente\"\n      (pageSelectEvent)=\"onBack()\"></edu-page-link>\n  </ul>\n</nav>\n\n<!-- Pagination ------------------------------------------------------------------------------------------------------->\n\n<nav *ngIf=\"!previousOnly\" class=\"fr-pagination\" [attr.role]=\"i18n.t('pagination.role')\" [attr.aria-label]=\"ariaLabel\">\n  <ul class=\"fr-pagination__list\">\n    <!-- Première page -->\n    <li>\n      <edu-page-link\n        customClass=\"fr-pagination__link--first\"\n        [label]=\"i18n.t('pagination.firstPage')\"\n        labelCustomClass=\"label-sm\"\n        [tooltipMessage]=\"i18n.t('pagination.firstPage')\"\n        [num]=\"1\"\n        [disabled]=\"isFirstPage()\"\n        (pageSelectEvent)=\"onPage($event)\"></edu-page-link>\n    </li>\n    <!-- Lien vers 'Page précédente' -->\n    <li>\n      <edu-page-link\n        customClass=\"fr-pagination__link--prev fr-pagination__link--lg-label\"\n        [label]=\"i18n.t('pagination.previousPage')\"\n        labelCustomClass=\"label-sm\"\n        [tooltipMessage]=\"i18n.t('pagination.previousPage')\"\n        [num]=\"prevNum\"\n        [disabled]=\"isFirstPage()\"\n        (pageSelectEvent)=\"onPage($event)\"></edu-page-link>\n    </li>\n    <!-- Toutes les pages -->\n    <ng-container *ngFor=\"let interval of intervals\">\n      <li *ngIf=\"interval[0] !== 1\">\n        <edu-page-link customClass=\"fr-unhidden-lg\" label=\"…\" [disabled]=\"true\"></edu-page-link>\n      </li>\n      <li *ngFor=\"let pageNum of pagesFrom(interval); let index = index\">\n        <edu-page-link\n          [num]=\"pageNum\"\n          [label]=\"pageNum + ''\"\n          [tooltipMessage]=\"'Page ' + pageNum\"\n          [active]=\"pageNum === currentPage\"\n          (pageSelectEvent)=\"onPage($event)\"></edu-page-link>\n      </li>\n    </ng-container>\n\n    <!-- Lien vers 'Page suivante' -->\n    <li>\n      <edu-page-link\n        customClass=\"fr-pagination__link--next fr-pagination__link--lg-label\"\n        [label]=\"i18n.t('pagination.nextPage')\"\n        labelCustomClass=\"label-sm\"\n        [tooltipMessage]=\"i18n.t('pagination.nextPage')\"\n        [num]=\"nextNum\"\n        [disabled]=\"isLastPage()\"\n        (pageSelectEvent)=\"onPage($event)\"></edu-page-link>\n    </li>\n    <!-- Dernière page (non affichée sur mobile) -->\n    <li>\n      <edu-page-link\n        customClass=\"fr-pagination__link--last\"\n        [label]=\"i18n.t('pagination.lastPage')\"\n        labelCustomClass=\"label-sm\"\n        [tooltipMessage]=\"i18n.t('pagination.lastPage')\"\n        [num]=\"pageCount\"\n        [disabled]=\"isLastPage()\"\n        (pageSelectEvent)=\"onPage($event)\"></edu-page-link>\n    </li>\n  </ul>\n</nav>\n","import { Component, EventEmitter, Output, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'dsfr-previous-page',\n  templateUrl: './previous-page.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\n/** @deprecated @since 1.6 utiliser `dsfr-pagination` à la place. */\nexport class DsfrPreviousPageComponent {\n  /* Evènement page précédente. L'événement initial n'est pas propagé. */\n  @Output() backEvent = new EventEmitter();\n\n  onBack() {\n    this.backEvent.emit();\n  }\n}\n","<nav role=\"navigation\" class=\"fr-pagination\" aria-label=\"Pagination\">\n  <ul class=\"fr-pagination__list\">\n    <edu-page-link\n      customClass=\"fr-pagination__link--prev fr-pagination__link--lg-label\"\n      label=\"Page précédente\"\n      (pageSelectEvent)=\"onBack()\"></edu-page-link>\n  </ul>\n</nav>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { EduPageLinkComponent } from './page-link.component';\nimport { DsfrPaginationComponent } from './pagination.component';\nimport { DsfrPreviousPageComponent } from './previous-page/previous-page.component';\n\n@NgModule({\n  declarations: [DsfrPaginationComponent, EduPageLinkComponent, DsfrPreviousPageComponent],\n  exports: [DsfrPaginationComponent],\n  imports: [CommonModule, RouterModule],\n})\nexport class DsfrPaginationModule {}\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { DsfrTextSize, I18nService } from '../../shared';\n\nexport interface DsfrQuoteDetail {\n  text: string;\n  isTitle?: boolean;\n  sourceUrl?: string;\n}\n\n@Component({\n  selector: 'dsfr-quote',\n  templateUrl: './quote.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrQuoteComponent {\n  /**\n   * Texte de la citation.\n   */\n  @Input() text = '';\n\n  /**\n   * Taille du texte de la citation. XL par défaut si non précisé.\n   */\n  @Input() textSize: DsfrTextSize;\n\n  /**\n   * URL pour afficher une image d'illustration.\n   */\n  @Input() imagePath = '';\n\n  /**\n   * Texte alternatif à utiliser uniquement si l'image à une information à passer.\n   */\n  @Input() imageAlt = '';\n\n  /**\n   * Auteur de la citation.\n   */\n  @Input() author = '';\n\n  /**\n   * URL de la source de la citation.\n   */\n  @Input() sourceUrl = '';\n\n  /**\n   * Tableau des détails de la citation, sous la forme : detail=[{text:string, isTitle?:boolean, sourceURL?:string}]\n   *\n   * Se réferrer à la doc DSFR : https://gouvfr.atlassian.net/wiki/spaces/DB/pages/771358744/Citation+-+Quote\n   */\n  @Input() details: DsfrQuoteDetail[] = [];\n\n  /**\n   * Permet de personnaliser la couleur du tag. Il faut donner la class exact (ex : fr-quote--green-emeraude) que vous\n   * trouverez ici : https://gouvfr.atlassian.net/wiki/spaces/DB/pages/771358744/Citation+-+Quote#Personnalisation .\n   */\n  @Input() customClass = '';\n\n  constructor(public i18n: I18nService) {}\n}\n","<figure class=\"fr-quote\" [class]=\"customClass\" [ngClass]=\"{ 'fr-quote--column': imagePath ? true : false }\">\n  <blockquote [attr.cite]=\"sourceUrl?.length ? sourceUrl : null\">\n    <p\n      [class.fr-text--lg]=\"textSize === 'LG'\"\n      [class.fr-text--md]=\"textSize === 'MD'\"\n      [class.fr-text--sm]=\"textSize === 'SM'\"\n      [class.fr-text--xs]=\"textSize === 'XS'\"\n      [innerHTML]=\"text\"></p>\n  </blockquote>\n  <figcaption>\n    <p *ngIf=\"author\" class=\"fr-quote__author\" [innerHTML]=\"author\"></p>\n    <ng-container *ngTemplateOutlet=\"detailTemplate\"></ng-container>\n\n    <div *ngIf=\"imagePath\" class=\"fr-quote__image\">\n      <img [src]=\"imagePath\" class=\"fr-responsive-img\" [attr.alt]=\"imageAlt\" />\n      <!-- L’alternative de l’image (attribut alt) doit rester vide car l’image est illustrative et ne doit pas être restituée aux technologies d’assistance -->\n    </div>\n  </figcaption>\n</figure>\n\n<ng-template #detailTemplate>\n  <ng-container *ngIf=\"details.length\">\n    <ul *ngIf=\"details.length > 1\" class=\"fr-quote__source\">\n      <li *ngFor=\"let detail of details\">\n        <span *ngIf=\"!detail.isTitle && !detail.sourceUrl\" [outerHTML]=\"detail.text\"></span>\n        <cite *ngIf=\"detail.isTitle\">{{ detail.text }}</cite>\n        <a\n          *ngIf=\"detail.sourceUrl && !detail.isTitle\"\n          target=\"_blank\"\n          rel=\"noopener external\"\n          [title]=\"detail.text + ' - ' + i18n.t('link.newWindow')\"\n          [attr.href]=\"detail.sourceUrl\"\n          >{{ detail.text }}</a\n        >\n      </li>\n    </ul>\n    <div *ngIf=\"details.length === 1\" class=\"fr-quote__source\">\n      <span *ngIf=\"!details[0].isTitle && !details[0].sourceUrl\" [outerHTML]=\"details[0].text\"></span>\n      <cite *ngIf=\"details[0].isTitle\">{{ details[0].text }}</cite>\n      <a\n        *ngIf=\"details[0].sourceUrl && !details[0].isTitle\"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n        [attr.href]=\"details[0].sourceUrl\"\n        >{{ details[0].text }}</a\n      >\n    </div>\n  </ng-container>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DsfrQuoteComponent } from './quote.component';\n\n@NgModule({\n  declarations: [DsfrQuoteComponent],\n  exports: [DsfrQuoteComponent],\n  imports: [CommonModule],\n})\nexport class DsfrQuoteModule {}\n","import { CommonModule } from '@angular/common';\nimport { Component, forwardRef, Input, ViewEncapsulation } from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DefaultControlComponent, DsfrSize, DsfrSizeConst } from '../../shared';\n\n@Component({\n  selector: 'dsfr-range',\n  templateUrl: './range.component.html',\n  encapsulation: ViewEncapsulation.None,\n  imports: [CommonModule, FormsModule],\n  standalone: true,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => DsfrRangeComponent),\n      multi: true,\n    },\n  ],\n})\nexport class DsfrRangeComponent extends DefaultControlComponent<number | [number, number]> {\n  /** Valeur minimale possible */\n  @Input() min: number = 0;\n\n  /** Valeur max possible */\n  @Input() max: number = 100;\n\n  /** Ne pas afficher le minimum et le maximum  */\n  @Input() hideMinMax: boolean = false;\n\n  /** Incrément que doit suivre la valeur (1 par défaut)  */\n  // @Input() step: number | undefined;\n\n  /** Taille du curseur (SM et MD possibles, MD par défaut) */\n  @Input() size: DsfrSize;\n\n  /** Préfixe affiché avant les valeurs  */\n  @Input() prefix: string | undefined;\n\n  /** Suffixe affiché après les valeurs  */\n  @Input() suffix: string | undefined;\n\n  /** Désactiver le curseur */\n  @Input() disabled: boolean = false;\n\n  /** Affiche un message d'erreur  */\n  @Input() error: string | undefined;\n\n  /** @internal Curseur double  */\n  double: boolean = false;\n\n  constructor() {\n    super();\n  }\n\n  get hintId() {\n    return this.inputId + '-hint-text';\n  }\n\n  /**@internal */\n  isDouble(): boolean {\n    return Array.isArray(this.value);\n  }\n\n  /** @internal */\n  isSmall(): boolean {\n    return this.size == DsfrSizeConst.SM;\n  }\n\n  /** @internal */\n  getValue(index: number) {\n    return Array.isArray(this.value) ? this.value[index] : undefined;\n  }\n\n  /** @internal */\n  onInputChange(index: number, value: number) {\n    if (Array.isArray(this.value)) {\n      this.value[index] = value;\n    }\n  }\n}\n","<div\n  class=\"fr-range-group\"\n  id=\"{{ inputId }}-group\"\n  [ngClass]=\"{ 'fr-range-group--disabled': disabled, 'fr-range-group--error': error }\">\n  <label class=\"fr-label\">\n    <ng-container *ngIf=\"label\">{{ label }}</ng-container>\n    <ng-content *ngIf=\"!label\"></ng-content>\n    <span *ngIf=\"hint\" class=\"fr-hint-text\">{{ hint }}</span>\n  </label>\n  <div\n    class=\"fr-range\"\n    [attr.data-fr-prefix]=\"prefix\"\n    [attr.data-fr-suffix]=\"suffix\"\n    [ngClass]=\"{ 'fr-range--double': isDouble(), 'fr-range--sm': isSmall() }\">\n    <span class=\"fr-range__output\">{{ value }}</span>\n    <ng-container *ngIf=\"!isDouble()\">\n      <input\n        id=\"{{ inputId }}\"\n        name=\"{{ inputId }}\"\n        type=\"range\"\n        [attr.aria-labelledby]=\"inputId + '-label'\"\n        min=\"{{ min }}\"\n        max=\"{{ max }}\"\n        [disabled]=\"disabled ?? false\"\n        [attr.value]=\"value\"\n        [(ngModel)]=\"value\"\n        [attr.aria-describedby]=\"inputId + '-messages'\" />\n    </ng-container>\n    <ng-container *ngIf=\"isDouble()\">\n      <input\n        id=\"{{ inputId }}\"\n        name=\"{{ inputId }}\"\n        type=\"range\"\n        [attr.aria-labelledby]=\"inputId + '-label'\"\n        min=\"{{ min }}\"\n        max=\"{{ max }}\"\n        [disabled]=\"disabled ?? false\"\n        [attr.value]=\"getValue(0)\"\n        [ngModel]=\"getValue(0)\"\n        (ngModelChange)=\"onInputChange(0, $event)\"\n        [attr.aria-describedby]=\"inputId + '-messages'\" />\n      <input\n        id=\"{{ inputId }}-2\"\n        name=\"{{ inputId }}-2\"\n        type=\"range\"\n        [attr.aria-labelledby]=\"inputId + '-label'\"\n        max=\"{{ max }}\"\n        [disabled]=\"disabled ?? false\"\n        [attr.value]=\"getValue(1)\"\n        [ngModel]=\"getValue(1)\"\n        (ngModelChange)=\"onInputChange(1, $event)\"\n        [attr.aria-describedby]=\"inputId + '-messages'\" />\n    </ng-container>\n\n    <ng-container *ngIf=\"!hideMinMax\">\n      <span class=\"fr-range__min\" aria-hidden=\"true\">\n        {{ min }}\n      </span>\n      <span class=\"fr-range__max\" aria-hidden=\"true\">\n        {{ max }}\n      </span>\n    </ng-container>\n  </div>\n  <div class=\"fr-messages-group\" id=\"{{ inputId }}-messages\" aria-live=\"polite\">\n    <p *ngIf=\"error\" class=\"fr-message fr-message--error\" id=\"range-2310-message-error\">\n      {{ error }}\n    </p>\n  </div>\n</div>\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { DsfrSize, DsfrSizeConst, newUniqueId } from '../../shared';\nimport { DsfrSegmentedControl } from './segmented-control.model';\n\n@Component({\n  selector: 'dsfr-segmented-control',\n  templateUrl: './segmented-control.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrSegmentedControlComponent {\n  /**\n   * Liste des choix du contrôle segmenté.\n   */\n  @Input() segments: DsfrSegmentedControl[];\n\n  /**\n   * Légende du composant (obligatoire).\n   */\n  @Input() legend: string;\n\n  /**\n   * Cache la légende visuellement.\n   */\n  @Input() legendSrOnly = false;\n\n  /**\n   * Texte de description additionnel.\n   */\n  @Input() hint: string;\n\n  /** Taille du contrôle segmenté, existe en `SM` et `MD` uniquement. `MD` par défaut. */\n  @Input() size: DsfrSize = DsfrSizeConst.MD;\n\n  /**\n   * Contrôle segmenté avec légende en ligne\n   */\n  @Input() inline = false;\n\n  /**\n   * Renvoie la value du choix selectionné.\n   */\n  @Output() segmentedControlSelect = new EventEmitter<string>();\n\n  private _name: string;\n\n  get name() {\n    return this._name;\n  }\n\n  /**\n   * Valeur de l'attribut name des inputs du contrôle segmenté.\n   */\n  @Input() set name(value: string) {\n    if (!value.length) {\n      this._name = 'segmented-' + newUniqueId();\n    } else {\n      this._name = value;\n    }\n  }\n\n  /** @internal */\n  getClasses(): {} {\n    return {\n      'fr-segmented': true,\n      'fr-segmented--sm': this.size === DsfrSizeConst.SM,\n      'fr-segmented--no-legend': this.legendSrOnly,\n    };\n  }\n\n  /** @internal */\n  getSegmentedControlId(index: number): string {\n    return `${this._name}_${index + 1}`;\n  }\n\n  /**\n   * @internal\n   */\n  onSegmentSelect(value: string) {\n    this.segmentedControlSelect.emit(value);\n  }\n}\n","<fieldset [class]=\"getClasses()\">\n  <legend *ngIf=\"legend\" class=\"fr-segmented__legend\" [ngClass]=\"{ 'fr-segmented__legend--inline': inline && !hint }\">\n    {{ legend }}\n    <span *ngIf=\"hint\" class=\"fr-hint-text\">{{ hint }}</span>\n  </legend>\n  <div class=\"fr-segmented__elements\">\n    <ng-container *ngFor=\"let segment of segments; let i = index\">\n      <div class=\"fr-segmented__element\">\n        <input\n          [value]=\"segment.value\"\n          type=\"radio\"\n          [attr.checked]=\"segment.checked ? segment.checked : null\"\n          [attr.disabled]=\"segment.disabled\"\n          [attr.id]=\"getSegmentedControlId(i)\"\n          [name]=\"name\"\n          (click)=\"onSegmentSelect(segment.value)\" />\n        <label class=\"fr-label\" [ngClass]=\"segment.icon\" [for]=\"getSegmentedControlId(i)\">{{ segment.label }}</label>\n      </div>\n    </ng-container>\n  </div>\n</fieldset>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DsfrSegmentedControlComponent } from './segmented-control.component';\n\n@NgModule({\n  declarations: [DsfrSegmentedControlComponent],\n  exports: [DsfrSegmentedControlComponent],\n  imports: [CommonModule],\n})\nexport class DsfrSegmentedControlModule {}\n","export namespace DsfrShareNameConst {\n  export const FACEBOOK = 'facebook';\n  export const LINKEDIN = 'linkedin';\n  export const MAIL = 'mail';\n  export const MASTODON = 'mastodon';\n  export const TWITTER = 'twitter';\n  export const X = 'twitter-x';\n}\n\ntype T = typeof DsfrShareNameConst;\nexport type DsfrShareName = T[keyof T];\n","import { Component, Input } from '@angular/core';\nimport { DsfrLinkTarget, I18nService } from '../../../shared';\nimport { DsfrShareName, DsfrShareNameConst } from '../share.model';\n\n@Component({\n  selector: 'dsfr-share-link',\n  templateUrl: './share-link.component.html',\n})\nexport class DsfrShareLinkComponent {\n  /** Indique si le composant est disable ou non (le mail est toujours enable). */\n  @Input() disabled: boolean;\n\n  /** la propriété 'id' est optionnelle, à renseigner si nécessaire par le développeur utilisant la librairie.*/\n  @Input() id: string;\n\n  /** 'Partager <name>' par défaut, peut être personnalisé. */\n  @Input() label: string;\n\n  /** Lien obligatoire pour les réseaux sociaux et mailto. Optionnel pour le presse-papier. */\n  @Input() link: string;\n\n  /** L'attribut rel définit la relation entre une ressource liée et le document actuel.\n   * Cf. https://developer.mozilla.org/fr/docs/Web/HTML/Attributes/rel\n   */\n  @Input() rel: string;\n\n  /** Target optionnelle, target html par défaut si non renseigné. */\n  @Input() linkTarget: DsfrLinkTarget;\n\n  private _name: DsfrShareName;\n\n  constructor(public i18n: I18nService) {}\n\n  /** @deprecated (@since 1.8.0) use linkTarget instead. */\n  get target(): DsfrLinkTarget {\n    return this.linkTarget;\n  }\n\n  get name(): DsfrShareName {\n    return this._name;\n  }\n\n  /** @deprecated (@since 1.8.0) use linkTarget instead. */\n  @Input() set target(value: DsfrLinkTarget) {\n    this.linkTarget = value;\n  }\n\n  /** La propriété 'name' est obligatoire et doit être sélectionnée dans une liste énumérée. */\n  @Input() set name(value: DsfrShareName) {\n    if (value === DsfrShareNameConst.TWITTER) {\n      this._name = DsfrShareNameConst.X;\n    } else {\n      this._name = value;\n    }\n  }\n\n  /** @internal */\n  getClasses() {\n    return `fr-btn--${this.name} fr-btn`;\n  }\n}\n","<li>\n  <a\n    [class]=\"getClasses()\"\n    [title]=\"i18n.t('share.' + name + '.title')\"\n    [attr.id]=\"id || null\"\n    [attr.href]=\"!disabled ? link : null\"\n    [attr.target]=\"linkTarget || null\"\n    [attr.aria-disabled]=\"disabled || null\"\n    [attr.role]=\"disabled ? 'link' : null\"\n    [attr.rel]=\"rel || null\">\n    {{ i18n.t('share.' + name + '.label') }}\n  </a>\n</li>\n","import {\n  AfterViewInit,\n  Component,\n  ContentChildren,\n  EventEmitter,\n  Input,\n  OnChanges,\n  Output,\n  QueryList,\n  SimpleChanges,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { DsfrLinkTarget, I18nService } from '../../shared';\nimport { DsfrShareLinkComponent } from './share-link/share-link.component';\nimport { DsfrShareNameConst } from './share.model';\n\n@Component({\n  selector: 'dsfr-share',\n  templateUrl: './share.component.html',\n  styleUrls: ['./router-link.scss'],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrShareComponent implements OnChanges, AfterViewInit {\n  /** @internal */\n  @ContentChildren(DsfrShareLinkComponent) shareLinks!: QueryList<DsfrShareLinkComponent>;\n\n  /** Permet de fournir le lien affichant le gestionnaire de consentement (exclusif avec la route). */\n  @Input() consentManagerLink: string;\n\n  /** Target du lien. Target par défaut de l'application si la propriété est non renseignée. */\n  @Input() consentManagerLinkTarget?: DsfrLinkTarget | undefined;\n\n  /** Permet de fournir la route affichant le gestionnaire de consentement (prioritaire sur le lien). */\n  @Input() consentManagerRoute: string;\n\n  /** Permet d'indiquer si l'usage des cookies a été autorisé par l'utilisateur final. */\n  @Input() hasCookiePermissions = true;\n\n  /** Si route, événement avec la route en paramètre. */\n  @Output() readonly consentManagerSelect = new EventEmitter<string>();\n\n  /** @internal Message de copie dans le presse-papier. */\n  message: string;\n\n  /** @internal Texte du message de permission des cookies. */\n  cookiesText: any;\n\n  /** @internal */\n  constructor(public i18n: I18nService) {\n    this.cookiesText = i18n.t('share.cookiesText');\n  }\n\n  /** @internal */\n  ngAfterViewInit() {\n    this.setDisabled(!this.hasCookiePermissions);\n  }\n\n  /** @internal */\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes['hasCookiePermissions']) this.setDisabled(!this.hasCookiePermissions);\n  }\n\n  /** @internal */\n  onConsentLinkSelect() {\n    if (this.consentManagerRoute) {\n      this.consentManagerSelect.emit(this.consentManagerRoute);\n    }\n  }\n\n  /** @internal */\n  onCopy(event: Event): void {\n    event.preventDefault();\n    navigator.clipboard.writeText(window.location.href).then(() => {\n      this.message = 'Le lien a été copié dans le presse-papier.';\n      setTimeout((): string => (this.message = ''), 3000);\n    });\n  }\n\n  private setDisabled(disabled: boolean) {\n    this.shareLinks?.forEach((shareLink) => {\n      if (shareLink.name != DsfrShareNameConst.MAIL) shareLink.disabled = disabled;\n    });\n  }\n}\n","<div class=\"fr-share\">\n  <p class=\"fr-share__title\">{{ i18n.t('share.heading') }}</p>\n  <p *ngIf=\"!hasCookiePermissions\" class=\"fr-share__text\">\n    {{ cookiesText[0] }}\n    <dsfr-link\n      customClass=\"fr-share__text\"\n      [link]=\"consentManagerLink\"\n      [linkTarget]=\"consentManagerLinkTarget\"\n      [route]=\"consentManagerRoute\"\n      [label]=\"cookiesText[1]\"\n      (linkSelect)=\"onConsentLinkSelect()\"></dsfr-link>\n    {{ cookiesText[2] }}\n  </p>\n  <p *ngIf=\"message\" class=\"fr-share__text\">{{ message }}</p>\n  <ul class=\"fr-btns-group\">\n    <ng-content></ng-content>\n    <li>\n      <button\n        type=\"button\"\n        class=\"fr-share__link fr-share__link--copy\"\n        [title]=\"i18n.t('share.copy.title')\"\n        (click)=\"onCopy($event)\">\n        {{ i18n.t('share.copy.label') }}\n      </button>\n    </li>\n  </ul>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { DsfrLinkModule } from '../link';\nimport { DsfrShareLinkComponent } from './share-link/share-link.component';\nimport { DsfrShareComponent } from './share.component';\n\n@NgModule({\n  declarations: [DsfrShareComponent, DsfrShareLinkComponent],\n  exports: [DsfrShareComponent, DsfrShareLinkComponent],\n  imports: [CommonModule, RouterModule, DsfrLinkModule],\n})\nexport class DsfrShareModule {}\n","import {\n  AfterContentInit,\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  Output,\n  SimpleChanges,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { DsfrPosition, DsfrPositionConst, newUniqueId } from '../../shared';\nimport { DsfrMenu, DsfrMenuItem } from './menu.model';\n\n@Component({\n  selector: 'dsfr-sidemenu',\n  templateUrl: './sidemenu.component.html',\n  styleUrls: ['./sidemenu.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrSidemenuComponent implements OnChanges, AfterContentInit {\n  /** Attribut aria-label du menu latéral.  */\n  @Input() ariaLabel = 'Menu latéral';\n\n  /** Id du menu, généré par défaut si non affecté. */\n  @Input() controlId: string;\n\n  /** Modèle de donnée du menu. */\n  //FIXME: RPA les items de menu fournis par le client peuvent muter sur la prop active, il serait préférable de\n  // dissocier le modèle du client (immutable) des données de présentation.\n  @Input() menu: DsfrMenu;\n\n  /** Affiche le menu latéral en version fixe  */\n  @Input() sticky = false;\n\n  /** Affiche le menu latéral en version fixe sur 100% de la hauteur de la page. */\n  @Input() stickyFullHeight = false;\n\n  /** Le menu latéral est affiché à gauche par défaut mais il est possible de l'afficher à droite. */\n  @Input() position: DsfrPosition = DsfrPositionConst.LEFT;\n\n  /** Activer l'item sélectionné */\n  @Input() autoActive = true;\n\n  /** Evénement émis suite à la sélection d'un item avec lien `a` ou `routerLink`. */\n  @Output() itemSelect = new EventEmitter<DsfrMenuItem>();\n\n  /** Pointeur sur le dernier item sélctionné (permet de le désélectionner lors d'une nouvelle sélection). */\n  //FIXME: RPA cette approche ne fonctionne pas : il peut y avoir plusieurs items sélectionnés dans le menu hiérachique\n  // du coup un algo qui désactiverait tout puis activerait l'item sélectionné ainsi que ses ascendants serait plus\n  // simple et fournirait le comporetement attendu avec la la propriété autoActive\n  private _prevItemSelected: DsfrMenuItem | undefined;\n\n  ngOnChanges({ menu }: SimpleChanges): void {\n    if (menu) {\n      this._prevItemSelected = this.findItemActive(this.menu.items);\n      // Ajout des controlIds\n      this.checkControlId(this.menu?.items);\n    }\n  }\n\n  ngAfterContentInit() {\n    if (!this.controlId) this.controlId = newUniqueId();\n    this.checkControlId(this.menu?.items);\n  }\n\n  /** @internal */\n  onSelectItem(item: DsfrMenuItem): void {\n    if (this.autoActive) {\n      this.selectItem(item);\n    }\n\n    this.itemSelect.emit(item);\n  }\n\n  private findItemActive(items: DsfrMenuItem[]): DsfrMenuItem | undefined {\n    if (!items) return undefined;\n\n    for (let i = 0; i < items.length; i++) {\n      const item = items[i];\n      let active = item.active ? item : undefined;\n      if (!active && item.subItems) active = this.findItemActive(item.subItems);\n      if (active) return active;\n    }\n    return undefined;\n  }\n\n  private selectItem(item: DsfrMenuItem): void {\n    if (this._prevItemSelected) {\n      this._prevItemSelected.active = false;\n    }\n    item.active = true;\n    this._prevItemSelected = item;\n  }\n\n  private checkControlId(menuItems: DsfrMenuItem[]): void {\n    if (!menuItems) return;\n\n    menuItems.forEach((menuItem) => {\n      if (menuItem.subItems) {\n        if (!menuItem.controlId) menuItem.controlId = newUniqueId();\n        this.checkControlId(menuItem.subItems);\n      }\n    });\n  }\n}\n","<nav\n  class=\"fr-sidemenu\"\n  [ngClass]=\"{\n    'fr-sidemenu--sticky': sticky,\n    'fr-sidemenu--sticky-full-height': stickyFullHeight,\n    'fr-sidemenu--right': position === 'right'\n  }\"\n  role=\"navigation\"\n  [attr.aria-label]=\"ariaLabel\">\n  <div class=\"fr-sidemenu__inner\">\n    <button type=\"button\" class=\"fr-sidemenu__btn\" [attr.aria-controls]=\"controlId\" aria-expanded=\"false\">\n      Dans cette rubrique\n    </button>\n    <div class=\"fr-collapse\" [id]=\"controlId\">\n      <!--Titre de rubrique optionnel-->\n      <ng-container *ngIf=\"menu?.title\">\n        <div class=\"fr-sidemenu__title\">{{ menu.title }}</div>\n      </ng-container>\n      <!--Niveau 1-->\n      <ul class=\"fr-sidemenu__list\">\n        <ng-container *ngFor=\"let item1 of menu.items\">\n          <li *ngIf=\"!item1.subItems\" class=\"fr-sidemenu__item\">\n            <edu-item-link\n              [item]=\"item1\"\n              customClass=\"fr-sidemenu__link\"\n              (linkSelect)=\"onSelectItem(item1)\"\n              [attr.aria-current]=\"item1.active ? 'page' : null\"></edu-item-link>\n          </li>\n          <li *ngIf=\"item1.subItems\" class=\"fr-sidemenu__item\">\n            <!--Niveau 2-->\n            <button\n              type=\"button\"\n              class=\"fr-sidemenu__btn\"\n              aria-expanded=\"false\"\n              [attr.aria-controls]=\"item1.controlId\"\n              [attr.aria-current]=\"item1.active ? true : null\">\n              <i *ngIf=\"item1.icon\" class=\"edu-item-icon\" [class]=\"item1.icon\" aria-hidden=\"true\"></i>\n              {{ item1.label }}\n            </button>\n            <div class=\"fr-collapse\" [id]=\"item1.controlId\">\n              <!--Titre de rubrique optionnel-->\n              <ng-container *ngIf=\"item1.title\">\n                <div class=\"fr-sidemenu__title\">{{ item1.title }}</div>\n              </ng-container>\n              <ul class=\"fr-sidemenu__list\">\n                <ng-container *ngFor=\"let item2 of item1.subItems\">\n                  <li *ngIf=\"!item2.subItems\" class=\"fr-sidemenu__item\">\n                    <edu-item-link\n                      [item]=\"item2\"\n                      customClass=\"fr-sidemenu__link\"\n                      (linkSelect)=\"onSelectItem(item2)\"\n                      [attr.aria-current]=\"item2.active ? 'page' : null\"></edu-item-link>\n                  </li>\n                  <li *ngIf=\"item2.subItems\" class=\"fr-sidemenu__item\">\n                    <button\n                      type=\"button\"\n                      class=\"fr-sidemenu__btn\"\n                      aria-expanded=\"false\"\n                      [attr.aria-controls]=\"item2.controlId\"\n                      [attr.aria-current]=\"item1.active ? true : null\">\n                      <i *ngIf=\"item2.icon\" class=\"edu-item-icon\" [class]=\"item2.icon\" aria-hidden=\"true\"></i>\n                      {{ item2.label }}\n                    </button>\n                    <div class=\"fr-collapse\" [id]=\"item2.controlId\">\n                      <ng-container *ngIf=\"item2.title\">\n                        <div class=\"fr-sidemenu__title\">{{ item2.title }}</div>\n                      </ng-container>\n                      <!--Niveau 3-->\n                      <ul class=\"fr-sidemenu__list\">\n                        <li\n                          *ngFor=\"let item3 of item2.subItems\"\n                          class=\"fr-sidemenu__item\"\n                          [attr.aria-current]=\"item3.active ? 'page' : null\">\n                          <edu-item-link\n                            [item]=\"item3\"\n                            customClass=\"fr-sidemenu__link\"\n                            (linkSelect)=\"onSelectItem(item3)\"\n                            [attr.aria-current]=\"item3.active ? 'page' : null\"></edu-item-link>\n                        </li>\n                      </ul>\n                    </div>\n                  </li>\n                </ng-container>\n              </ul>\n            </div>\n          </li>\n        </ng-container>\n      </ul>\n    </div>\n  </div>\n</nav>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { ItemLinkComponent } from '../link/item-link.component';\nimport { DsfrSidemenuComponent } from './sidemenu.component';\n\n@NgModule({\n  declarations: [DsfrSidemenuComponent],\n  exports: [DsfrSidemenuComponent],\n  imports: [CommonModule, RouterModule, ItemLinkComponent],\n})\nexport class DsfrSidemenuModule {}\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { DsfrAnchorLink } from '../../shared';\n\n@Component({\n  selector: 'dsfr-skiplinks',\n  templateUrl: './skiplinks.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrSkipLinksComponent {\n  /**\n   * Tableau des liens.\n   */\n  @Input() links: DsfrAnchorLink[];\n\n  /**\n   * Permet la gestion programmatique d'une navigation initiée au click sur le lien si l'input 'route' est valorisé.\n   * La valeur de la propriété 'route' sera transmise.\n   */\n  @Output() linkSelect = new EventEmitter<string>();\n\n  /**\n   * Dans le cas d'une route, un événement `(routeSelect)` est émis avec la valeur de la route et\n   * l'événement initial n'est pas propagé.\n   *\n   * @internal\n   */\n  onSkiplinkSelect(event: Event, route: string | undefined) {\n    if (route) {\n      event.preventDefault();\n      this.linkSelect.emit(route);\n    }\n  }\n}\n","<div class=\"fr-skiplinks\">\n  <nav class=\"fr-container\" role=\"navigation\" aria-label=\"Accès rapide\">\n    <ul class=\"fr-skiplinks__list\">\n      <ng-container *ngFor=\"let item of links\">\n        <li>\n          <a\n            *ngIf=\"!item.fragment\"\n            class=\"fr-link\"\n            [href]=\"item.route || item.link\"\n            (click)=\"onSkiplinkSelect($event, item.route)\"\n            >{{ item.label }}</a\n          >\n          <a *ngIf=\"item.fragment\" class=\"fr-link\" [routerLink]=\"'.'\" [fragment]=\"item.fragment\"> {{ item.label }}</a>\n        </li>\n      </ng-container>\n    </ul>\n  </nav>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { DsfrSkipLinksComponent } from './skiplinks.component';\n\n@NgModule({\n  declarations: [DsfrSkipLinksComponent],\n  exports: [DsfrSkipLinksComponent],\n  imports: [CommonModule, RouterModule],\n})\nexport class DsfrSkiplinksModule {}\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'dsfr-stepper',\n  templateUrl: './stepper.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrStepperComponent {\n  /** Nombre total d'étapes. */\n  @Input() totalSteps = 1;\n\n  /** Index de l'étape courante. */\n  @Input() currentStep = 1;\n\n  /** Titre de l'étape courante. */\n  @Input() currentStepTitle: string;\n\n  /** Titre de l'étape suivante. */\n  @Input() nextStepTitle: string;\n}\n","<div class=\"fr-stepper\">\n  <h2 class=\"fr-stepper__title\">\n    {{ currentStepTitle }}\n    <span class=\"fr-stepper__state\">Étape {{ currentStep }} sur {{ totalSteps }}</span>\n  </h2>\n  <div class=\"fr-stepper__steps\" [attr.data-fr-current-step]=\"currentStep\" [attr.data-fr-steps]=\"totalSteps\"></div>\n  <p class=\"fr-stepper__details\"><span class=\"fr-text--bold\">Étape suivante :</span> {{ nextStepTitle }}</p>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DsfrStepperComponent } from './stepper.component';\n\n@NgModule({\n  declarations: [DsfrStepperComponent],\n  exports: [DsfrStepperComponent],\n  imports: [CommonModule],\n})\nexport class DsfrStepperModule {}\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { DsfrHeadingLevel, newUniqueId } from '../../shared';\nimport { DsfrSummary, DsfrSummaryLink } from './summary.model';\n\n@Component({\n  selector: 'dsfr-summary',\n  templateUrl: './summary.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrSummaryComponent {\n  /** Le titre du composant. */\n  @Input() heading: string;\n\n  /** Le niveau de titre devant être utilisé, une balise `p` sera utilisée si la propriété n'est pas renseignée. */\n  @Input() headingLevel: DsfrHeadingLevel;\n\n  /** Les entrées du sommaire (required) */\n  @Input() entries: DsfrSummary = [];\n\n  /** Événement sur lien avec la valeur de l'ancre. */\n  @Output() entrySelect = new EventEmitter<string>();\n\n  /** @internal */ headingId = newUniqueId();\n\n  /**\n   * Emission de la valeur de l'ancre (fragment ou link) au clic sur un lien\n   * @internal\n   */\n  /** @internal */\n  onLinkSelect(entry: DsfrSummaryLink): void {\n    // on propage l'output, pas besoin de gérer ici le preventDefault, c'est géré en amont\n    if (entry.route) {\n      this.entrySelect.emit(entry.route);\n    }\n  }\n}\n","<nav class=\"fr-summary\" role=\"navigation\" [attr.aria-labelledby]=\"headingId\">\n  <edu-heading\n    [headingId]=\"headingId\"\n    customClass=\"fr-summary__title\"\n    [heading]=\"heading\"\n    [level]=\"headingLevel\"\n    defaultLevel=\"P\"></edu-heading>\n  <!-- TODO defaultLevel=\"H2\" en 2.0 pour être compatible avec le DSFR 1.9, 1.10, ... -->\n  <ng-container [ngTemplateOutlet]=\"summaryTemplate\" [ngTemplateOutletContext]=\"{ summary: entries }\"></ng-container>\n</nav>\n\n<ng-template #summaryTemplate let-summary=\"summary\">\n  <ol>\n    <li *ngFor=\"let entry of summary\">\n      <edu-item-link [item]=\"entry\" customClass=\"fr-summary__link\" (linkSelect)=\"onLinkSelect(entry)\"></edu-item-link>\n      <ng-container\n        *ngIf=\"entry.subEntries?.length > 0\"\n        [ngTemplateOutlet]=\"summaryTemplate\"\n        [ngTemplateOutletContext]=\"{ summary: entry.subEntries }\"></ng-container>\n    </li>\n  </ol>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { HeadingModule } from '../../shared';\nimport { ItemLinkComponent } from '../link/item-link.component';\nimport { DsfrSummaryComponent } from './summary.component';\n\n@NgModule({\n  declarations: [DsfrSummaryComponent],\n  exports: [DsfrSummaryComponent],\n  imports: [CommonModule, RouterModule, HeadingModule, ItemLinkComponent],\n})\nexport class DsfrSummaryModule {}\n","import { KeyValue, KeyValuePipe } from '@angular/common';\n\n/**\n * Modèle de présentation d'une colonne.\n */\nexport interface DsfrTableColumn {\n  /**\n   * La clé permettant la mise en correspondance avec les champs des lignes de données.\n   */\n  key: string;\n\n  /**\n   * Le libellé d'entête de la colonne.\n   */\n  heading: string;\n}\n\n/**\n * Modèle de présentation du composant Table.\n */\nexport interface DsfrDataTable {\n  /**\n   * @deprecated Depuis 1.9.0, utiliser la propriété `columns` à la place.\n   */\n  titles?: {};\n\n  /**\n   * En-têtes des colonnes [{key: key1, title: title1}, {key: key2, title: title2}, ...]\n   */\n  columns?: DsfrTableColumn[];\n\n  /**\n   * Lignes de données correspondant aux collonnes  [{key1: data1-1, key2: data1-2,…}, ...]\n   */\n  rows: any[];\n}\n\n/**\n * Modèle de présentation INTERNE du composant table.\n *\n * @internal\n */\nexport class EduTableModel {\n  columns: DsfrTableColumn[];\n  rows: any[];\n\n  constructor(data: DsfrDataTable, keyValuePipe: KeyValuePipe) {\n    this.rows = data.rows;\n    if (data.columns) {\n      this.columns = data.columns;\n    } else {\n      this.columns = keyValuePipe.transform(new Map(Object.entries(data.titles ?? {}))).map(\n        (t: KeyValue<any, any>) =>\n          <DsfrTableColumn>{\n            key: t.key,\n            heading: t.value,\n          },\n      );\n    }\n  }\n}\n","import { KeyValuePipe } from '@angular/common';\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { I18nService } from '../../shared';\nimport { DsfrDataTable, EduTableModel } from './data-table.model';\n\n@Component({\n  selector: 'dsfr-table',\n  templateUrl: './table.component.html',\n  styleUrls: ['./table.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrTableComponent {\n  /** Message si aucune donnée. */\n  @Input() noDataMessage: string;\n\n  /**\n   * Permet d'empêcher le scroll horizontal. Si le tableau no-scroll comporte trop de colonnes le tableau est coupé\n   * sur la droite (overflow hidden).\n   */\n  @Input() noScroll = false;\n\n  /**\n   * Permet de désactiver le scroll en fixant la largeur des colonnes du tableau. Les colonnes sont alors toutes de\n   * la même taille quelque soit leur contenu.\n   */\n  @Input() fixedLayout = false;\n\n  /** Titre au-dessus du tableau. */\n  @Input() caption: string;\n\n  /** Permet de masquer (visuellement) le caption afin de l’utiliser uniquement dans le cadre de l’accessibilité. */\n  @Input() noCaption = false;\n\n  /** Permet de placer le caption en dessous du tableau plutôt qu’en haut. */\n  @Input() captionBottom = false;\n\n  /**\n   * Classes de personnalisation du tableau (ex : `fr-table--green-emeraude`).\n   *\n   * @link https://gouvfr.atlassian.net/wiki/spaces/DB/pages/312016971/Tableau+-+Table#Personnalisation\n   */\n  @Input() customClass: string;\n\n  /** Classe(s) de personnalisation de l'entête. */\n  @Input() headerCustomClass: string;\n\n  /** Permet d'ajouter des bordures aux lignes du tableau.  */\n  @Input() bordered = false;\n\n  /** @internal */\n  dataModel: EduTableModel = { columns: [], rows: [] };\n\n  constructor(\n    private i18n: I18nService,\n    private keyValuePipe: KeyValuePipe,\n  ) {\n    this.noDataMessage = this.i18n.t('table.noData');\n  }\n\n  /** Modèle de données.  */\n  @Input()\n  public set data(data: DsfrDataTable) {\n    this.dataModel = new EduTableModel(data, this.keyValuePipe);\n  }\n\n  /** @internal */\n  hasRows(): boolean {\n    return !!this.dataModel && !!this.dataModel.rows && this.dataModel.rows.length > 0;\n  }\n}\n","<div\n  #dsfrTable\n  [class]=\"customClass\"\n  *ngIf=\"dataModel.columns !== [] && dataModel.rows !== []\"\n  [ngClass]=\"{\n    'fr-table': true,\n    'fr-table--bordered': bordered,\n    'fr-table--no-scroll': noScroll,\n    'fr-table--layout-fixed': fixedLayout,\n    'fr-table--no-caption': noCaption,\n    'fr-table--caption-bottom': captionBottom\n  }\">\n  <table>\n    <caption *ngIf=\"caption\">\n      {{\n        caption\n      }}\n    </caption>\n    <caption *ngIf=\"!caption\">\n      <ng-content select=\"[caption]\"></ng-content>\n    </caption>\n    <thead [ngClass]=\"headerCustomClass ? headerCustomClass : null\">\n      <tr>\n        <th scope=\"col\" *ngFor=\"let column of dataModel.columns\">{{ column.heading }}</th>\n      </tr>\n    </thead>\n    <tbody>\n      <tr *ngFor=\"let row of dataModel.rows\">\n        <td *ngFor=\"let column of dataModel.columns\">{{ row[column.key] }}</td>\n      </tr>\n      <tr *ngIf=\"!hasRows() && noDataMessage\">\n        <td class=\"edu-td__nodata\" [attr.colspan]=\"dataModel.columns.length\">{{ noDataMessage }}</td>\n      </tr>\n    </tbody>\n  </table>\n</div>\n","import { CommonModule, KeyValuePipe } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DsfrTableComponent } from './table.component';\n\n@NgModule({\n  declarations: [DsfrTableComponent],\n  exports: [DsfrTableComponent],\n  imports: [CommonModule],\n  providers: [KeyValuePipe],\n})\nexport class DsfrTableModule {}\n","import { IsActiveMatchOptions, NavigationExtras } from '@angular/router';\n\nexport const BUTTON_TAB_ID_PREFIX = 'buttontab-';\n\n/**\n * Description d'un onglet du composant.\n */\nexport interface EduTabHeader {\n  /**\n   * Label de l'onglet, obligatoire\n   */\n  label: string;\n\n  /**\n   * Lien composant vers onglet. Permet de sélectionner un onglet lorsqu'on sélectionne le path correspondant.\n   */\n  tabId: string;\n\n  /**\n   * Icône optionnelle de l'onglet.\n   */\n  icon?: string;\n}\n\n/**\n * Description d'un onglet du composant.\n */\nexport interface DsfrTabRoute extends EduTabHeader {\n  /**\n   * Lien onglet vers composant. Path invoqué lorsque l'on clique sur un onglet.\n   */\n  path: string;\n\n  /** Options additionnelles de navigation pour le routerLink (queryParams, state etc.). */\n  routerLinkExtras?: NavigationExtras;\n\n  /** RouterLink : options qui déterminent si le lien est actif en cas de directive routerLink. */\n  routerLinkActiveOptions?: { exact: boolean } | IsActiveMatchOptions;\n}\n","import { Component, HostBinding, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { newUniqueId } from '../../shared';\nimport { BUTTON_TAB_ID_PREFIX, EduTabHeader } from './tabs.model';\n\nexport const DSFR_TAB_SELECTORS = 'dsfr-tab-panel, dsfr-tab';\n\n@Component({\n  selector: DSFR_TAB_SELECTORS,\n  templateUrl: './tab.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrTabComponent implements OnInit, Required<EduTabHeader> {\n  /** Identifiant de l'onglet, obligatoire, généré si non fourni. */\n  @Input() tabId: string;\n\n  /** Titre de l'onglet, obligatoire. */\n  @Input() label: string;\n\n  /** Nom de l'icône, l'icône est à gauche du libellé, optionnel. */\n  @Input() icon: string;\n\n  /** @internal*/\n  buttonId: string;\n\n  @HostBinding('id') get id() {\n    return this.tabId;\n  }\n\n  @HostBinding('attr.role') get attrRole() {\n    return 'tabpanel';\n  }\n\n  @HostBinding('attr.aria-labelledby') get attrLabelledBy() {\n    return this.buttonId;\n  }\n\n  @HostBinding('attr.tabindex') get attrTabindex() {\n    return '0';\n  }\n\n  @HostBinding('attr.data-tabid') get attrTabId() {\n    return this.tabId;\n  }\n\n  @HostBinding('attr.data-label') get attrLabel() {\n    return this.label;\n  }\n\n  @HostBinding('attr.data-iconClass') get attrIconClass() {\n    return this.icon || null;\n  }\n\n  @HostBinding('class') get class() {\n    return 'fr-tabs__panel';\n  }\n\n  /** @internal */\n  ngOnInit() {\n    this.tabId ??= newUniqueId();\n    this.buttonId = BUTTON_TAB_ID_PREFIX + this.tabId;\n  }\n}\n","<ng-content></ng-content>\n","import {\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  Input,\n  Optional,\n  Output,\n  QueryList,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { ActivatedRoute, NavigationExtras, Router } from '@angular/router';\nimport { newUniqueId } from '../../shared';\nimport { DsfrTabComponent } from './tab.component';\nimport { BUTTON_TAB_ID_PREFIX, DsfrTabRoute, EduTabHeader } from './tabs.model';\n\n@Component({\n  selector: 'dsfr-tabs',\n  templateUrl: './tabs.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrTabsComponent {\n  /**\n   * Attribut aria-label de la liste d'onglets.\n   */\n  @Input() tabsAriaLabel = \"Système d'onglets\";\n\n  /**\n   * Onglet sélectionné (commence à 0).\n   * Ne peut pas être utilisé quand on utilise l'input `routes`.\n   */\n  @Input() selectedTabIndex = 0;\n\n  /**\n   * Permet de positionner la largeur du viewport à 100% en mobile.\n   */\n  @Input() fullViewport = false;\n\n  /**\n   * Définition des routes si l'on souhaite utiliser `<router-outlet>`.\n   *\n   * @since 1.9.0\n   */\n  @Input() routes!: DsfrTabRoute[];\n\n  /**\n   * Émis lors de la sélection d'un onglet. La valeur émise correspond au `tabId` de l'onglet sélectionné.\n   */\n  @Output() tabSelect = new EventEmitter<string>();\n\n  /** @internal */\n  @ContentChildren(DsfrTabComponent) tabComponents!: QueryList<DsfrTabComponent>;\n\n  /** @internal */\n  routerTabId: string;\n\n  constructor(\n    @Optional() private router: Router,\n    @Optional() private activatedRoute: ActivatedRoute,\n    private elRef: ElementRef,\n  ) {\n    this.routerTabId = newUniqueId();\n  }\n\n  get headers(): EduTabHeader[] {\n    return this.routes || this.tabComponents?.toArray();\n  }\n\n  private get tabsCount(): number {\n    return this.routes ? this.routes.length : this.tabComponents ? this.tabComponents.length : 0;\n  }\n\n  /** @internal */\n  getHeaderValue(header: EduTabHeader, key: string): any {\n    return header[<never>key];\n  }\n\n  asRoute(header: EduTabHeader): DsfrTabRoute {\n    return <DsfrTabRoute>header;\n  }\n\n  /** @internal */\n  getIconClasses(tabHeader: EduTabHeader): string {\n    return !tabHeader.icon ? '' : `${tabHeader.icon} fr-tabs__tab--icon-left`;\n  }\n\n  /**\n   * [mode routes] Retourne l'identifiant unique du bouton de contrôle de l'onglet passé en paramètre.\n   *\n   * @internal\n   */\n  getButtonTabId(header: EduTabHeader) {\n    return BUTTON_TAB_ID_PREFIX + header.tabId;\n  }\n\n  /**\n   * [mode routes] Retourne l'identifiant unique du bouton de contrôle de l'onglet courant.\n   *\n   * @internal\n   */\n  getCurrentButtonTabId() {\n    return this.selectedTabIndex >= 0 ? BUTTON_TAB_ID_PREFIX + this.routes[this.selectedTabIndex].tabId : null;\n  }\n\n  /** @internal */\n  onSelect(event: MouseEvent, index: number) {\n    event.preventDefault();\n    event.stopPropagation();\n    this.selectedTabIndex = index;\n    this.tabSelect.emit(this.headers[this.selectedTabIndex].tabId);\n  }\n\n  /** @internal */\n  onRouterLinkActive(isActive: boolean, tabIndex: number) {\n    if (isActive) {\n      this.selectedTabIndex = tabIndex;\n    }\n  }\n\n  /**\n   * Gestion de la navigation au clavier en mode routes.\n   *\n   *  @internal\n   */\n  onButtonTabKeydown(event: KeyboardEvent, index: number): void {\n    // just in case\n    if (this.selectedTabIndex !== index) return;\n\n    let newIndex = -1;\n\n    switch (event.code) {\n      case 'ArrowLeft':\n        newIndex = this.isFirstTab(index) ? this.tabsCount - 1 : index - 1;\n        break;\n\n      case 'ArrowRight':\n        newIndex = this.isLastTab(index) ? 0 : index + 1;\n        break;\n\n      case 'Home':\n        newIndex = 0;\n        break;\n\n      case 'End':\n        newIndex = this.tabsCount - 1;\n        break;\n\n      default:\n        break;\n    }\n\n    if (newIndex > -1) {\n      this.performKeyAction(newIndex);\n    }\n  }\n\n  private isFirstTab(index: number): boolean {\n    return index === 0;\n  }\n\n  private isLastTab(index: number): boolean {\n    return index === this.tabsCount - 1;\n  }\n\n  private performKeyAction(newIndex: number) {\n    const route = this.routes[newIndex];\n    const extras: NavigationExtras = route.routerLinkExtras || { relativeTo: this.activatedRoute };\n    this.router.navigate([route.path], extras);\n    this.elRef.nativeElement.querySelector('#' + this.getButtonTabId(route))?.focus();\n  }\n}\n","<div class=\"fr-tabs\" [class.fr-tabs--viewport-width]=\"fullViewport\">\n  <ul class=\"fr-tabs__list\" role=\"tablist\" [attr.aria-label]=\"tabsAriaLabel\">\n    <li role=\"presentation\" *ngFor=\"let header of headers; let index = index\">\n      <button\n        *ngIf=\"!routes\"\n        [attr.id]=\"getHeaderValue(header, 'buttonId') || null\"\n        type=\"button\"\n        role=\"tab\"\n        class=\"fr-tabs__tab\"\n        [class]=\"getIconClasses(header) || null\"\n        [attr.tabindex]=\"index === selectedTabIndex ? 0 : -1\"\n        [attr.aria-controls]=\"header?.tabId || null\"\n        [attr.aria-selected]=\"index === selectedTabIndex\"\n        (click)=\"onSelect($event, index)\">\n        {{ header.label }}\n      </button>\n      <button\n        *ngIf=\"routes\"\n        [attr.id]=\"getButtonTabId(header)\"\n        type=\"button\"\n        role=\"tab\"\n        class=\"fr-tabs__tab\"\n        [class]=\"getIconClasses(header) || null\"\n        [attr.tabindex]=\"rla.isActive ? 0 : -1\"\n        [attr.aria-controls]=\"rla.isActive ? routerTabId : null\"\n        [attr.aria-selected]=\"rla.isActive\"\n        [routerLink]=\"asRoute(header).path || null\"\n        routerLinkActive\n        [routerLinkActiveOptions]=\"asRoute(header).routerLinkActiveOptions ?? { exact: false }\"\n        [queryParams]=\"asRoute(header).routerLinkExtras?.queryParams\"\n        [fragment]=\"asRoute(header).routerLinkExtras?.fragment\"\n        [queryParamsHandling]=\"asRoute(header).routerLinkExtras?.queryParamsHandling\"\n        [preserveFragment]=\"asRoute(header).routerLinkExtras?.preserveFragment\"\n        [skipLocationChange]=\"asRoute(header).routerLinkExtras?.skipLocationChange\"\n        [replaceUrl]=\"asRoute(header).routerLinkExtras?.replaceUrl\"\n        [state]=\"asRoute(header).routerLinkExtras?.state\"\n        (isActiveChange)=\"onRouterLinkActive($event, index)\"\n        #rla=\"routerLinkActive\"\n        (click)=\"onSelect($event, index)\"\n        (keydown)=\"onButtonTabKeydown($event, index)\">\n        {{ header.label }}\n      </button>\n    </li>\n  </ul>\n  <ng-content *ngIf=\"!routes\"></ng-content>\n  <ng-container *ngIf=\"routes\">\n    <div\n      [attr.id]=\"routerTabId\"\n      role=\"tabpanel\"\n      class=\"fr-tabs__panel fr-tabs__panel--selected\"\n      tabindex=\"0\"\n      [attr.aria-labelledby]=\"getCurrentButtonTabId()\">\n      <router-outlet></router-outlet>\n    </div>\n    <div ngFor=\"let header of headers; let index = index\" [attr.aria-labelledby]=\"getCurrentButtonTabId()\"></div>\n  </ng-container>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { DsfrTabComponent } from './tab.component';\nimport { DsfrTabsComponent } from './tabs.component';\n\n@NgModule({\n  imports: [CommonModule, RouterModule],\n  declarations: [DsfrTabComponent, DsfrTabsComponent],\n  exports: [DsfrTabComponent, DsfrTabsComponent],\n})\nexport class DsfrTabsModule {}\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { LangService } from '../../shared';\nimport { DsfrPanelBackgroundConst, DsfrPanelBorderConst } from '../card';\nimport { BasePanelComponent } from '../card/base-panel.component';\n\n@Component({\n  selector: 'dsfr-tile',\n  templateUrl: './tile.component.html',\n  styleUrls: ['./tile.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrTileComponent extends BasePanelComponent {\n  /**\n   * Chemin vers le répertoire racine contenant les pictogrammes illustratifs DSFR.\n   */\n  @Input() artworkDirPath = 'artwork';\n\n  /**\n   * Chemin relatif à artworkDirPath dénotant le fichier d'illustration à utiliser.\n   */\n  @Input() artworkFilePath: string;\n\n  /** @deprecated (@since 1.5.0) */\n  @Input() imageAlt: string;\n\n  /** @deprecated (@since 1.5.0) utiliser `artworkFilePath`. Path pour src d'image d'illustration. */\n  @Input() imagePath: string;\n\n  /**\n   * Ce boolean permet de ne pas afficher d'icône (flèche).\n   */\n  @Input() noIcon = false;\n\n  /**\n   * Rotation d'une tuile verticale sur breakpoint 'MD' ou 'LG' (au redimensionnement du contenu)\n   */\n  @Input() rotateOn: 'MD' | 'LG' | undefined = undefined;\n\n  /** @deprecated utiliser `customBackground`. Active le fond de la tuile en gris clair. */\n  @Input() useGreyBackground: boolean = false;\n\n  /**\n   * Permet la gestion programmatique d'une navigation initiée au click sur le tile si l'input 'route' est valorisé.\n   * La valeur de la propriété 'route' sera transmise.\n   */\n  @Output() tileSelect = new EventEmitter<string>();\n\n  constructor(langService: LangService) {\n    super(langService);\n  }\n\n  /** @deprecated (@since 1.9.0) utiliser `detailBottom` à la place */\n  @Input() set detail(value: string) {\n    this.detailBottom = value;\n  }\n\n  /** @internal */\n  getClasses(): {} {\n    return {\n      'fr-tile': true,\n      'fr-enlarge-link': this.enlargeLink,\n      'fr-tile--download': this.download,\n      'fr-tile--grey': this.customBackground === DsfrPanelBackgroundConst.GREY || this.useGreyBackground,\n      'fr-tile--horizontal': this.horizontal,\n      'fr-tile--no-background': this.customBackground === DsfrPanelBackgroundConst.TRANSPARENT,\n      'fr-tile--no-border': this.customBorder === DsfrPanelBorderConst.NO_BORDER,\n      'fr-tile--no-icon': this.noIcon,\n      'fr-tile--shadow': this.customBorder === DsfrPanelBorderConst.SHADOW,\n      'fr-tile--sm': this.size === 'SM',\n      'fr-tile--vertical@md': this.rotateOn === 'MD',\n      'fr-tile--vertical@lg': this.rotateOn === 'LG',\n    };\n  }\n\n  /**\n   * Dans le cas d'une route, un événement `(routeSelect)` est émis avec la valeur de la route et\n   * l'événement initial n'est pas propagé.\n   *\n   * @internal\n   */\n  onLinkSelect() {\n    // on propage l'output, pas besoin de gérer ici un éventuel preventDefault si usage de route, c'est géré en amont\n    if (this.route) {\n      this.tileSelect.emit(this.route);\n    }\n  }\n}\n","<div [ngClass]=\"getClasses()\">\n  <div class=\"fr-tile__body\">\n    <div class=\"fr-tile__content\">\n      <ng-container *ngTemplateOutlet=\"titleTemplate\"></ng-container>\n\n      <p class=\"fr-tile__desc\">\n        <ng-container *ngIf=\"description\">{{ description }}</ng-container>\n        <ng-content *ngIf=\"!description\" select=\"[desc]\"></ng-content>\n      </p>\n\n      <p class=\"fr-tile__detail\">\n        <ng-container *ngIf=\"detailBottom\">{{ detailBottom }}</ng-container>\n        <ng-content *ngIf=\"!detailBottom\" select=\"[detail]\"></ng-content>\n      </p>\n\n      <div *ngIf=\"badges || tags\" class=\"fr-tile__start\">\n        <dsfr-badges-group *ngIf=\"badges\" [badges]=\"badges\"></dsfr-badges-group>\n        <dsfr-tags-group *ngIf=\"tags && !badges.length\" [tags]=\"tags\"></dsfr-tags-group>\n      </div>\n    </div>\n  </div>\n\n  <!--TODO : Deprecated image à retirer à termes-->\n  <div *ngIf=\"imagePath && !artworkFilePath && !download\" class=\"fr-tile__img\">\n    <img [src]=\"imagePath\" class=\"fr-responsive-img\" [attr.alt]=\"imageAlt\" />\n    <!-- L'alternative de l'image (attribut alt) doit à priori rester vide car l'image est illustrative et ne doit pas être restituée aux technologies d’assistance. Vous pouvez toutefois remplir l'alternative si vous estimer qu'elle apporte une information essentielle à la compréhension du contenu non présente dans le texte -->\n  </div>\n\n  <!-- Header --------------------------------------------------------------------------------------------------------->\n  <div class=\"fr-tile__header\" *ngIf=\"artworkFilePath || download\">\n    <div class=\"fr-tile__pictogram\">\n      <edu-pictogram\n        [artworkDirPath]=\"artworkDirPath\"\n        [artworkFilePath]=\"artworkFilePath\"\n        [download]=\"download\"></edu-pictogram>\n    </div>\n  </div>\n</div>\n\n<!-- Template : Titre d'une tuile ----------------------------------------------------------------------->\n<ng-template #titleTemplate>\n  <!-- FIXME on peut encore simplifier car on peut passer disabled à DsfrLink -->\n  <!--Tuile clickable-->\n  <ng-container *ngIf=\"hasLink() || disabled\" [ngSwitch]=\"headingLevel\">\n    <h2 class=\"fr-tile__title\" *ngSwitchCase=\"'H2'\">\n      <ng-container *ngTemplateOutlet=\"linkTitleTemplate\"></ng-container>\n    </h2>\n    <h3 class=\"fr-tile__title\" *ngSwitchDefault>\n      <ng-container *ngTemplateOutlet=\"linkTitleTemplate\"></ng-container>\n    </h3>\n    <h4 class=\"fr-tile__title\" *ngSwitchCase=\"'H4'\">\n      <ng-container *ngTemplateOutlet=\"linkTitleTemplate\"></ng-container>\n    </h4>\n    <h5 class=\"fr-tile__title\" *ngSwitchCase=\"'H5'\">\n      <ng-container *ngTemplateOutlet=\"linkTitleTemplate\"></ng-container>\n    </h5>\n    <h6 class=\"fr-tile__title\" *ngSwitchCase=\"'H6'\">\n      <ng-container *ngTemplateOutlet=\"linkTitleTemplate\"></ng-container>\n    </h6>\n  </ng-container>\n\n  <!-- Tuile non cliquable -->\n  <ng-container *ngIf=\"!hasLink() && !disabled\" [ngSwitch]=\"headingLevel\">\n    <h2 class=\"fr-tile__title\" *ngSwitchCase=\"'H2'\">\n      <ng-container *ngTemplateOutlet=\"noLinkTitleTemplate\"></ng-container>\n    </h2>\n    <h3 class=\"fr-tile__title\" *ngSwitchDefault>\n      <ng-container *ngTemplateOutlet=\"noLinkTitleTemplate\"></ng-container>\n    </h3>\n    <h4 class=\"fr-tile__title\" *ngSwitchCase=\"'H4'\">\n      <ng-container *ngTemplateOutlet=\"noLinkTitleTemplate\"></ng-container>\n    </h4>\n    <h5 class=\"fr-tile__title\" *ngSwitchCase=\"'H5'\">\n      <ng-container *ngTemplateOutlet=\"noLinkTitleTemplate\"></ng-container>\n    </h5>\n    <h6 class=\"fr-tile__title\" *ngSwitchCase=\"'H6'\">\n      <ng-container *ngTemplateOutlet=\"noLinkTitleTemplate\"></ng-container>\n    </h6>\n  </ng-container>\n</ng-template>\n\n<!-- Template : Titre d'une tuile non cliquable ----------------------------------------------------------------------->\n<ng-template #noLinkTitleTemplate>\n  <ng-container *ngIf=\"heading\">{{ heading }}</ng-container>\n  <ng-container *ngIf=\"!heading\">\n    <ng-template *ngTemplateOutlet=\"headingSlot\"></ng-template>\n  </ng-container>\n</ng-template>\n\n<!-- Template : Titre d'une tuile cliquable --------------------------------------------------------------------------->\n<ng-template #linkTitleTemplate>\n  <dsfr-link\n    *ngIf=\"!download\"\n    [label]=\"heading ? heading : ''\"\n    [ariaLabel]=\"ariaLabel ? ariaLabel : ''\"\n    [disabled]=\"disabled\"\n    [link]=\"link\"\n    [targetLink]=\"linkTarget\"\n    [route]=\"route\"\n    [routePath]=\"routePath\"\n    [routerLinkActive]=\"routerLinkActive ?? ''\"\n    [routerLinkExtras]=\"routerLinkExtras\"\n    (linkSelect)=\"onLinkSelect()\">\n    <ng-template *ngTemplateOutlet=\"headingSlot\"></ng-template>\n  </dsfr-link>\n  <!-- Lien de téléchargement -->\n  <edu-link-download\n    *ngIf=\"download\"\n    [item]=\"itemLink\"\n    [downloadDirect]=\"downloadDirect\"\n    [downloadAssessFile]=\"downloadAssessFile\"\n    [langCode]=\"downloadLangCode\"\n    (linkSelect)=\"onLinkSelect()\">\n  </edu-link-download>\n</ng-template>\n\n<!-- Template : Titre dans un slot ------------------------------------------------------------------------------------>\n<ng-template #headingSlot>\n  <ng-content select=\"[heading]\"></ng-content>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { LinkDownloadComponent, PictogramModule } from '../../shared';\nimport { DsfrBadgesGroupModule } from '../badges-group';\nimport { DsfrLinkModule } from '../link';\nimport { DsfrTagsGroupModule } from '../tags-group';\nimport { DsfrTileComponent } from './tile.component';\n\n@NgModule({\n  declarations: [DsfrTileComponent],\n  exports: [DsfrTileComponent],\n  imports: [\n    CommonModule,\n    DsfrBadgesGroupModule,\n    DsfrTagsGroupModule,\n    DsfrLinkModule,\n    LinkDownloadComponent,\n    PictogramModule,\n  ],\n})\nexport class DsfrTileModule {}\n","import { CommonModule } from '@angular/common';\nimport { Component, Directive, ElementRef, Input, ViewContainerRef } from '@angular/core';\nimport { ComponentRef } from 'react';\nimport { newUniqueId } from '../../shared';\n\n@Component({\n  selector: 'edu-tooltip',\n  template: `<span class=\"fr-tooltip fr-placement\" [id]=\"tooltipId\" role=\"tooltip\" [innerHTML]=\"message\"></span>`,\n  standalone: true,\n  imports: [CommonModule],\n})\nclass TooltipComponent {\n  message: string;\n  tooltipId = newUniqueId();\n}\n\n@Directive({\n  selector: '[tooltip]',\n  standalone: true,\n})\nexport class DsfrTooltipDirective {\n  private tooltipComponent: TooltipComponent;\n\n  constructor(\n    private elementRef: ElementRef,\n    private viewContainer: ViewContainerRef,\n  ) {\n    // Composant\n    const tooltipRef = this.viewContainer.createComponent<TooltipComponent>(TooltipComponent);\n    // @ts-ignore\n    this.tooltipComponent = (<ComponentRef<TooltipComponent>>tooltipRef).instance;\n\n    // Tooltip id\n    const nativeElt = this.elementRef.nativeElement;\n    nativeElt.setAttribute('aria-describedby', this.tooltipComponent.tooltipId);\n\n    // Message textuel\n    const message = nativeElt.getAttribute('tooltip');\n    if (message) this.tooltip = message;\n  }\n\n  @Input() set tooltip(value: string) {\n    this.tooltipComponent.message = value;\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { I18nService, newUniqueId } from '../../shared';\n\n@Component({\n  selector: 'dsfr-tooltip-button',\n  templateUrl: './tooltip-button.component.html',\n  encapsulation: ViewEncapsulation.None,\n  standalone: true,\n  imports: [CommonModule],\n})\nexport class DsfrTooltipButtonComponent {\n  /**\n   * La valeur du tooltip.\n   */\n  @Input() tooltip: string;\n\n  /** @internal */\n  tooltipId = newUniqueId();\n\n  constructor(/** @internal */ public i18n: I18nService) {}\n}\n","<button class=\"fr-btn--tooltip fr-btn\" [attr.aria-describedby]=\"tooltipId\">{{ i18n.t('tooltip.button.label') }}</button>\n<span class=\"fr-tooltip fr-placement\" [id]=\"tooltipId\" role=\"tooltip\" [innerHTML]=\"tooltip\"></span>\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n/**\n * Directive structurelle permettant au composant parent d'identifier les composants devant être encapsulés au sein\n * d'une structure HTML complémentaire.\n */\n@Directive({\n  selector: '[fieldsetElement]',\n})\nexport class DsfrFormFieldsetElementDirective {\n  /**\n   * Permet d'indiquer des classes CSS additionnelles à ajouter à l'élément de fielset.\n   */\n  @Input() fieldsetElement: string;\n\n  /**\n   * On injecte le templateRef de manière à pouvoir le rendre accessible au contexte parent.\n   * Le composant parent pourra référencer ce templateRef au sein d'une directive ngTemplateOutlet\n   * de façon à projeter le contenu à l'endroit adéquat.\n   */\n  constructor(public templateRef: TemplateRef<unknown>) {}\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { newUniqueId } from '../../shared';\n\n@Component({ template: '' })\nexport abstract class BaseFieldsetComponent implements OnInit {\n  /**\n   * L'identifiant du fieldset - Optionnel (sera généré si non fourni).\n   */\n  @Input() id: string | undefined;\n\n  /**\n   * La légende du fieldset. Peut être indiquée via cet input ou via un slot [legend].\n   */\n  @Input() legend: string;\n\n  /**\n   * Permet de rétablir une graisse standard sur la légende.\n   */\n  @Input() legendRegular = false;\n\n  /**\n   * Permet de masquer la légende en la préservant pour les lecteurs d'écran.\n   */\n  @Input() legendSrOnly = false;\n\n  /**\n   * Texte de description additionnel.\n   */\n  @Input() hint: string;\n\n  /**\n   * Permet de désactiver l'ensemble des champs du fieldset.\n   */\n  @Input() disabled = false;\n\n  /**\n   * Le(s) message(s) d'erreur à afficher le cas échéant.\n   */\n  @Input() error: string | string[] | undefined;\n\n  /**\n   * Le message de validation à afficher le cas échéant.\n   */\n  @Input() valid: string;\n\n  /** @internal */ legendId: string;\n  /** @internal */ messagesId: string;\n\n  /**\n   * Retourne les erreurs sous forme de tableau même si on a juste un string\n   * @return type compatible avec la propriété error, c.-à-d. undefined si non renseigné\n   * @internal\n   */\n  get errors(): string[] | undefined {\n    return this.error ? (Array.isArray(this.error) ? this.error : [this.error]) : undefined;\n  }\n\n  ngOnInit() {\n    this.id ??= newUniqueId();\n    this.legendId = this.id + '-legend';\n    this.messagesId = this.id + '-messages';\n  }\n\n  // @since 1.8 sinon même en erreur avec la valeur []\n  /** @internal */\n  hasErrors(): boolean {\n    const errors = this.errors;\n    return errors !== undefined && errors.length > 0;\n  }\n\n  /** @internal */\n  isLegendRegular(): boolean {\n    return this.legendRegular || this.hasErrors() || !!this.valid;\n  }\n}\n","import { Component, ContentChildren, Input, QueryList, ViewEncapsulation } from '@angular/core';\nimport { BaseFieldsetComponent } from './base-fieldset.component';\nimport { DsfrFormFieldsetElementDirective } from './form-fieldset-element.directive';\n\n@Component({\n  selector: 'dsfr-fieldset, dsfr-form-fieldset',\n  templateUrl: './form-fieldset.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrFormFieldsetComponent extends BaseFieldsetComponent {\n  /**\n   * Ensemble des champs de formulaire sur une même ligne.\n   */\n  @Input() inline = false;\n\n  /**\n   * Les champs composant le formulaire.\n   * @internal\n   */\n  @ContentChildren(DsfrFormFieldsetElementDirective) elements!: QueryList<DsfrFormFieldsetElementDirective>;\n\n  /**\n   * Retourne les erreurs sous forme de tableau même si on a juste un string\n   * @return type compatible avec la propriété error, c.-à-d. undefined si non renseigné\n   * @internal\n   */\n  get errors(): string[] | undefined {\n    return this.error ? (Array.isArray(this.error) ? this.error : [this.error]) : undefined;\n  }\n\n  /** @internal */\n  getFieldsetElementClass(elem: DsfrFormFieldsetElementDirective): string[] {\n    const classes = ['fr-fieldset__element'];\n    if (this.inline) {\n      classes.push('fr-fieldset__element--inline');\n    }\n    if (elem.fieldsetElement) {\n      const elemClasses: string[] = elem.fieldsetElement.split(/\\s+/g);\n      elemClasses.forEach((c) => classes.push(c));\n    }\n\n    return classes;\n  }\n}\n","<fieldset\n  id=\"{{ id }}\"\n  [ngClass]=\"{\n      'fr-fieldset': true,\n      'fr-fieldset--error': this.hasErrors(),\n      'fr-fieldset--valid': this.valid,\n    }\"\n  [attr.role]=\"error || valid ? 'group' : null\"\n  [attr.aria-labelledby]=\"legendId + ' ' + messagesId\"\n  [disabled]=\"disabled || null\">\n  <legend\n    id=\"{{ legendId }}\"\n    [ngClass]=\"{\n      'fr-fieldset__legend': true,\n      'fr-fieldset__legend--regular': this.isLegendRegular(),\n      'fr-sr-only': this.legendSrOnly,\n    }\">\n    <ng-container *ngIf=\"legend\">{{ legend }}</ng-container>\n    <ng-content *ngIf=\"!legend\" select=\"[legend]\"></ng-content>\n    <span *ngIf=\"hint\" class=\"fr-hint-text\">{{ hint }}</span>\n  </legend>\n  <ng-container *ngFor=\"let elem of elements\">\n    <div [class]=\"getFieldsetElementClass(elem)\">\n      <ng-container *ngTemplateOutlet=\"elem.templateRef\"></ng-container>\n    </div>\n  </ng-container>\n  <div class=\"fr-messages-group\" id=\"{{ messagesId }}\" aria-live=\"polite\">\n    <p *ngFor=\"let err of errors\" class=\"fr-message fr-message--error\">{{ err }}</p>\n    <p *ngIf=\"valid\" class=\"fr-message fr-message--valid\">{{ valid }}</p>\n  </div>\n</fieldset>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DsfrFormFieldsetElementDirective } from './form-fieldset-element.directive';\nimport { DsfrFormFieldsetComponent } from './form-fieldset.component';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [DsfrFormFieldsetComponent, DsfrFormFieldsetElementDirective],\n  exports: [DsfrFormFieldsetComponent, DsfrFormFieldsetElementDirective],\n})\nexport class DsfrFormFieldsetModule {}\n","import { Component, ElementRef, forwardRef, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DefaultControlComponent } from '../../shared';\n\n@Component({\n  selector: 'dsfr-form-checkbox',\n  templateUrl: './form-checkbox.component.html',\n  styleUrls: ['./form-checkbox.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => DsfrFormCheckboxComponent),\n      multi: true,\n    },\n  ],\n})\n/*\n * - fix 1.6 : La div messages est toujours présente même dans un groupe (cf. DSFR 1.9)\n */\nexport class DsfrFormCheckboxComponent extends DefaultControlComponent<boolean> implements OnInit {\n  /**\n   * Message d'erreur, quand il est présent les couleurs du contrôle changent.\n   */\n  @Input() error: string;\n\n  /**\n   * Message de validation, quand il est présent les couleurs du contrôle changent.\n   */\n  @Input() valid: string;\n\n  /**\n   * Donne une taille de 16px au lieu de 24px.\n   */\n  @Input() small = false;\n\n  /** @internal */ defaultChecked: boolean; // Initialisé à la première valeur de 'value'. Permet de positionner l'attribut 'checked'\n  /** @internal */ messagesGroupId: string;\n\n  constructor(private elementRef: ElementRef) {\n    super();\n    this.value = false;\n  }\n\n  /** @since 1.5 */\n  get checked(): boolean {\n    return this.value ?? false;\n  }\n\n  /** @since 1.5 */\n  get indeterminateState(): boolean {\n    const nativeElt = this.elementRef.nativeElement;\n    const checkbox = nativeElt.querySelector('input');\n    return checkbox.indeterminate;\n  }\n\n  /** @since 1.4 */\n  @Input() set indeterminate(value: boolean) {\n    const nativeElt = this.elementRef.nativeElement;\n    const checkbox = nativeElt.querySelector('input');\n    if (value === true || value === false) {\n      checkbox.indeterminate = value;\n    }\n  }\n\n  /** @internal */\n  ngOnInit() {\n    super.ngOnInit();\n    this.defaultChecked = super.value ?? false;\n    this.messagesGroupId = `${this.inputId}-messages`;\n  }\n}\n","<div\n  class=\"fr-checkbox-group\"\n  [ngClass]=\"{\n    'fr-checkbox-group--error': error,\n    'fr-checkbox-group--valid': valid,\n    'fr-checkbox-group--sm': small\n  }\">\n  <input\n    [attr.aria-describedby]=\"messagesGroupId\"\n    type=\"checkbox\"\n    [id]=\"inputId\"\n    [attr.name]=\"name || null\"\n    [disabled]=\"disabled ?? false\"\n    [attr.checked]=\"defaultChecked || null\"\n    [(ngModel)]=\"value\" />\n  <label class=\"fr-label\" [for]=\"inputId\">\n    <ng-container *ngIf=\"label\">{{ label }}</ng-container>\n    <ng-content *ngIf=\"!label\" select=\"[label]\"></ng-content>\n    <span *ngIf=\"hint\" class=\"fr-hint-text\">{{ hint }}</span>\n  </label>\n  <div class=\"fr-messages-group\" [id]=\"messagesGroupId\" aria-live=\"polite\">\n    <p *ngIf=\"error\" class=\"fr-message fr-message--error\">{{ error }}</p>\n    <p *ngIf=\"valid\" class=\"fr-message fr-message--valid\">{{ valid }}</p>\n  </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DsfrFormCheckboxComponent } from './form-checkbox.component';\n\n@NgModule({\n  declarations: [DsfrFormCheckboxComponent],\n  exports: [DsfrFormCheckboxComponent],\n  imports: [CommonModule, FormsModule],\n})\nexport class DsfrFormCheckboxModule {}\n","// TODO: créer des tickets pour type decimal, url,  et tous les autres (un ticket par type à intégrer)\nexport namespace DsfrInputTypeConst {\n  export const DATE = 'date';\n  export const DATE_TIME_LOCAL = 'datetime-local';\n  export const EMAIL = 'email';\n  export const NUMBER = 'number';\n  export const PASSWORD = 'password';\n  export const SEARCH = 'search';\n  export const TEL = 'tel';\n  export const TEXT = 'text';\n  export const TEXTAREA = 'textarea';\n  export const TIME = 'time';\n}\n\n/**\n * Types des inputs supportés par le DSFR.\n */\ntype Types = typeof DsfrInputTypeConst;\nexport type DsfrInputType = Types[keyof Types];\n\n/**\n * L'attribut universel 'inputmode' est un attribut à valeur contrainte qui fournit une indication au navigateur quant\n * au type de donnée qui peut être saisi par l'utilisateur lors de l'édition de l'élément ou de son contenu.\n * Lorsque cet attribut n'est pas explicitement défini, sa valeur par défaut est \"text\", ce qui indique que c'est du\n * texte qui sera saisi et qu'un clavier standard devrait être utilisé.\n * Cf. https://developer.mozilla.org/fr/docs/Web/HTML/Global_attributes/inputmode\n */\nexport namespace DsfrInputModeConst {\n  /** Aucun clavier virtuel ne doit être affiché. Cette valeur s'avère utile lorsque l'application ou le site web implémente son propre outil de saisie. */\n  export const NONE = 'none';\n  /** C'est du texte qui sera saisi et un clavier dans la locale de l'utilisateur pourra être affiché. */\n  export const TEXT = 'text';\n  /**\n   * C'est un nombre décimal qui sera saisi. Le clavier affiché peut contenir des chiffres et le séparateur décimal\n   * de la locale de l'utilisateur. Attention, selon les appareils, le signe moins (-) peut ne pas être présent.\n   */\n  export const DECIMAL = 'decimal';\n\n  /**\n   * C'est un nombre entier qui sera saisi. Le clavier affiché peut contenir les chiffres de 0 à 9. Attention, selon\n   * les appareils, le signe moins (-) peut ne pas être présent.\n   */\n  export const NUMERIC = 'numeric';\n\n  /**\n   * C'est un numéro de téléphone qui sera saisi. Le clavier affiché pourra être celui d'un téléphone avec les chiffres\n   * allant de 0 à 9, l'astérisque et le dièse. Pour les champs de formulaire où il faut saisir un numéro de téléphone,\n   * on utilisera plutôt <input type=\"tel\">.\n   */\n  export const TEL = 'tel';\n\n  /**\n   * L'élément éditable sert à la recherche. Le clavier affiché sera optimisé pour une recherche (par exemple, la\n   * touche Entrée pourra être indiquée avec le mot-clé « Rechercher »).\n   */\n  export const SEARCH = 'search';\n\n  /**\n   * C'est une adresse électronique qui sera saisie. Le clavier affiché pourra être optimisé pour la saisie d'adresses\n   * email (généralement, on aura le caractère @ et d'autres éléments). Pour les champs de formulaire où il faut saisir\n   * une adresse électronique, on utilisera plutôt <input type=\"email\">.\n   */\n  export const EMAIL = 'email';\n  /**\n   * C'est une URL qui sera saisie. Le clavier affiché pourra être optimisé pour la saisie d'URL. Ainsi, la touche pour\n   * la barre oblique pourra être plus accessible, le clavier pourra proposer un accès à l'historique des URL utilisées,\n   * etc. Pour les champs de formulaire où il faut saisir une URL, on utilisera plutôt <input type=\"url\">.\n   */\n  export const URL = 'url';\n}\ntype Modes = typeof DsfrInputModeConst;\nexport type DsfrInputMode = Modes[keyof Modes];\n","import { Component, EventEmitter, HostListener, Input, Output } from '@angular/core';\nimport { DefaultControlComponent, DsfrSeverity, DsfrSeverityConst, newUniqueId } from '../../shared';\nimport { DsfrInputMode, DsfrInputType, DsfrInputTypeConst } from './form-input.model';\n\nconst INPUT_TYPE_TO_MODE = {\n  'date': '',\n  'datetime-local': '',\n  'email': 'email',\n  'number': 'numeric',\n  'password': '',\n  'search': 'search',\n  'tel': 'tel',\n  'text': '',\n  'textarea': '',\n  'time': '',\n};\n\n/**\n * BaseInputComponent n'embarque que les propriétés d'un input Html\n */\n@Component({ template: '' })\nexport abstract class BaseInputComponent extends DefaultControlComponent<string> {\n  /**\n   * L'attribut HTML de saisie semi-automatique permet aux développeurs Web de spécifier l'éventuelle autorisation\n   * dont dispose l'agent utilisateur pour fournir une assistance automatisée dans le remplissage des valeurs des\n   * champs du formulaire, ainsi que des conseils au navigateur quant au type d'informations attendues dans le champ.\n   * Ex : email, name, etc.\n   */\n  @Input() autocomplete: string | undefined;\n\n  /**\n   * 👓 Correspond à l'attribut `aria-autocomplete`.<br />\n   * L'attribut `aria-autocomplete` indique si la saisie de texte peut déclencher l'affichage d'une ou plusieurs\n   * prédictions de la valeur prévue par l'utilisateur pour une zone de liste déroulante, une zone de recherche ou\n   * une zone de texte et spécifie comment les prédictions seront présentées si elles sont effectuées.\n   * Ex : `ariaAutocomplete=\"list\"` lorsque la saisie d'une valeur fait apparaitre une liste de suggestions.<br />\n   * Valeur par défaut : `undefined` (n'apparait pas comme attribut dans l'html).\n   * @since 1.4\n   */\n  @Input() ariaAutocomplete: string;\n\n  /**\n   * 👓 Correspond à l'attribut `aria-expanded`.<br />\n   * L'attribut `aria-expanded` est défini sur un élément pour indiquer si un contrôle est développé ou réduit,\n   * et si les éléments contrôlés sont affichés ou masqués. <br />\n   * Valeur par défaut : `undefined` (n'apparait pas comme attribut dans l'html).\n   * @since 1.4\n   */\n  @Input() ariaExpanded: boolean | undefined;\n\n  /**\n   * 👓 Correspond à l'attribut `aria-label`.<br />\n   * L'attribut `aria-label` est utilisé pour définir une légende non visible associée à un élément HTML dont le\n   * sens est transmis uniquement par le visuel.<br />\n   * Valeur par défaut : `undefined` (n'apparait pas comme attribut dans l'html).\n   */\n  @Input() ariaLabel: string;\n\n  /**\n   * 👓 Les [rôles ARIA](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles) fournissent une\n   * signification sémantique au contenu, permettant aux lecteurs d'écran et à d'autres outils de présenter et\n   * de prendre en charge l'interaction avec un objet d'une manière cohérente avec les attentes des utilisateurs\n   * concernant ce type d'objet. Les rôles ARIA peuvent être utilisés pour décrire des éléments qui n'existent\n   * pas nativement en HTML ou qui existent, mais ne bénéficient pas encore d'une prise en charge complète par\n   * le navigateur. Ex : `toolbar`, `tabpanel`, etc.<br />\n   * Valeur par défaut : `undefined` (n'apparait pas comme attribut dans l'html).\n   * @since 1.4\n   */\n  @Input() role: string;\n\n  /**\n   * Une chaîne de caractères, on ou off, qui indique si la correction automatique est activée.\n   * [Safari uniquement](https://developer.mozilla.org/fr/docs/Web/HTML/Element/input#autocorrect).\n   * @since 1.6\n   */\n  @Input() autoCorrect = true;\n\n  /**\n   * Indique si le champ est obligatoire ou non, faux par défaut.\n   */\n  @Input() required = false;\n\n  /**\n   * Placeholder de l'input.\n   */\n  @Input() placeholder: string;\n\n  /**\n   * Attribut min de l'input.\n   */\n  @Input() min: string;\n\n  /**\n   * Attribut max de l'input.\n   */\n  @Input() max: string;\n\n  /**\n   * Attribut minLength de l'input.\n   */\n  @Input() minLength: number;\n\n  /**\n   * Attribut maxLength de l'input.\n   */\n  @Input() maxLength: number;\n\n  /** Désactive la correction orthographique sur les champs relatifs au nom et aux prénoms. */\n  @Input() spellCheck = true;\n\n  /**\n   * Ajoute un icon à droite dans le champ de saisie.\n   */\n  @Input() icon: string;\n\n  /**\n   * Pattern de l'input.\n   */\n  @Input() pattern: string;\n\n  /**\n   * Ajout d'un style spécifique, permet par exemple de la limiter la largeur d'un input.\n   */\n  @Input() customClass: string;\n\n  /**\n   * Change la mise en page d'un input accompagné d'un bouton.\n   */\n  @Input() inputWrapMode: 'addon' | 'action' = 'addon';\n\n  /**\n   * Message d'information lié au composant\n   */\n  @Input() message: string | undefined = undefined;\n\n  /**\n   * Représente la sévérité du message. 🔥 `WARNING` n'est pas géré dans cette version.\n   */\n  @Input() severity: DsfrSeverity;\n\n  /**\n   * Émet un événement, si la propriété `pattern` est définie, à chaque changement de la valeur de l'input avec\n   * une valeur booléenne indiquant si le `pattern` est validé ou non.\n   */\n  @Output() patternValueChange = new EventEmitter<boolean>();\n\n  /**\n   * L'input mode est initialisé par défaut en fonction du type de l'input, 'decimal', 'url' ne sont pas traité pour\n   * l'instant.\n   * @internal\n   */\n  inputMode: DsfrInputMode;\n\n  /**\n   * Id de la div affichant les messages d'erreur ou de validation.\n   * @internal\n   */\n  readonly messagesGroupId = newUniqueId();\n\n  private _type: DsfrInputType = DsfrInputTypeConst.TEXT;\n\n  get type(): DsfrInputType {\n    return this._type;\n  }\n\n  /** @deprecated since 1.11.0 use placeholder instead (all lowercase) */\n  get placeHolder(): string {\n    return this.placeholder;\n  }\n\n  /**\n   * Permet de récupérer le message d'erreur s'il existe\n   * @since 1.11\n   */\n  get error(): string | undefined {\n    return this.severity === DsfrSeverityConst.ERROR ? this.message : undefined;\n  }\n\n  /**\n   * Permet de récupérer le message de validation s'il existe\n   * @since 1.11\n   */\n  get valid(): string | undefined {\n    return this.severity === DsfrSeverityConst.SUCCESS ? this.message : undefined;\n  }\n\n  /**\n   * Type de l'input, 'text' par défaut.\n   */\n  @Input() set type(value: DsfrInputType) {\n    this._type = value;\n    this.inputMode = <DsfrInputMode>INPUT_TYPE_TO_MODE[this._type] || undefined;\n    // TODO 2.0 A Supprimer le pattern par défaut\n    if (this._type === DsfrInputTypeConst.NUMBER && !this.pattern) {\n      this.pattern = '[0-9]*';\n    }\n  }\n\n  /**\n   * Positionne un message d'erreur\n   * @since 1.11\n   */\n  @Input() set error(value: string | undefined) {\n    this.message = value;\n    this.severity = DsfrSeverityConst.ERROR;\n  }\n\n  /**\n   * Positionne un message de validation\n   * @since 1.11\n   */\n  @Input() set valid(value: string | undefined) {\n    this.message = value;\n    this.severity = DsfrSeverityConst.SUCCESS;\n  }\n\n  /** @deprecated since 1.11.0 use placeholder instead (all lowercase) */\n  @Input() set placeHolder(value: string) {\n    this.placeholder = value;\n  }\n\n  /**\n   * À l'écoute de la valeur afin d'émettre un événement dans le cas où on a un pattern.\n   * @internal\n   */\n  @HostListener('input')\n  onPatternValueChange() {\n    if (!this.pattern) return;\n    const isValid = new RegExp('^' + this.pattern + '$').test(this.value!);\n    this.patternValueChange.emit(isValid);\n  }\n\n  /** @internal */\n  isNumber() {\n    return this.type === DsfrInputTypeConst.NUMBER;\n  }\n\n  /** @internal */\n  hasMessages(): boolean {\n    return !!this.message && this.severity !== undefined;\n  }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { DsfrButtonType, DsfrButtonVariant, isStringEmptyOrNull } from '../../shared';\nimport { BaseInputComponent } from './base-input.component';\n\n/**\n * BaseInputComboComponent ajoute la possibilité d'avoir un bouton sur le côté de l'input\n */\n@Component({ template: '' })\nexport abstract class BaseInputComboComponent extends BaseInputComponent {\n  /** [accessibilité] Spécifie le libellé qui sera retranscrit par les narrateurs d'écran. */\n  @Input() buttonAriaLabel: string;\n\n  /**\n   * Permet de désactiver le bouton d'action, 'false' par défaut.\n   */\n  @Input() buttonDisabled = false;\n\n  /**\n   * Crée un combo champ + bouton si buttonIcon est renseigné\n   */\n  @Input() buttonIcon: string | undefined; // undefined car peut être créé à partir de DsfrButton (composant name par exemple)\n\n  /**\n   * Crée un combo champ + bouton si buttonLabel est renseigné\n   */\n  @Input() buttonLabel: string;\n\n  /**\n   * Tooltip message sur le bouton s'il y a lieu.\n   */\n  @Input() buttonTooltipMessage: string;\n\n  /**\n   * Type du button,'submit' par défaut.\n   */\n  @Input() buttonType: DsfrButtonType;\n\n  /** Style du bouton, 'primary' par défaut. */\n  @Input() buttonVariant: DsfrButtonVariant = 'primary';\n\n  /**\n   * Emission de l'événement si le type du bouton est != de `submit`.\n   */\n  @Output() buttonSelect = new EventEmitter<Event>();\n\n  /** @internal */\n  hasButton(): boolean {\n    return !isStringEmptyOrNull(this.buttonLabel) || this.buttonIcon !== undefined;\n  }\n}\n","import { Component, forwardRef, Input, ViewEncapsulation } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { isStringEmptyOrNull } from '../../shared';\nimport { BaseInputComboComponent } from './base-input-combo.component';\nimport { DsfrInputTypeConst } from './form-input.model';\n\n@Component({\n  selector: 'dsfr-form-input',\n  templateUrl: './form-input.component.html',\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => DsfrFormInputComponent),\n      multi: true,\n    },\n  ],\n})\nexport class DsfrFormInputComponent extends BaseInputComboComponent {\n  /**\n   * Type 'textarea' : nombre de lignes.\n   */\n  @Input() rows: number;\n\n  /**\n   * @deprecated (since 1.2) utiliser `customClass` à la place.\n   * Largeur de l'input, `'100%'` par défaut, `'10rem'` par défaut pour un type date.\n   */\n  @Input() width: string;\n\n  /** @deprecated since 1.2 use `type` instead. */\n  get textarea(): boolean {\n    return this.isTextArea();\n  }\n\n  /** @deprecated (@since 1.2) utiliser `type` à la place. */\n  @Input() set textarea(value: boolean) {\n    this.type = value ? DsfrInputTypeConst.TEXTAREA : DsfrInputTypeConst.TEXT;\n  }\n\n  /** @internal */\n  isTextArea() {\n    return this.type === DsfrInputTypeConst.TEXTAREA;\n  }\n\n  /** @internal */\n  hasInputWrap(): boolean {\n    return this.hasButton() || !isStringEmptyOrNull(this.icon);\n  }\n\n  /** @internal */\n  getWrapClasses(): string[] {\n    let classes = ['fr-input-wrap'];\n    if (this.hasButton() && this.inputWrapMode === 'addon') classes.push('fr-input-wrap--addon');\n    if (this.hasButton() && this.inputWrapMode === 'action') classes.push('fr-input-wrap--action');\n    if (this.icon) classes.push(this.icon);\n\n    return classes;\n  }\n\n  /** @internal */\n  onButtonClick(event: Event) {\n    if (this.buttonType != 'submit') this.buttonSelect.emit(event);\n  }\n}\n","<edu-input-group\n  [inputId]=\"inputId\"\n  [label]=\"label\"\n  [hint]=\"hint\"\n  [messagesGroupId]=\"messagesGroupId\"\n  [disabled]=\"disabled\"\n  [message]=\"message\"\n  [severity]=\"severity\">\n  <label class=\"fr-label\" [for]=\"inputId\">\n    <ng-container *ngIf=\"label\">{{ label }}</ng-container>\n    <ng-content *ngIf=\"!label\" select=\"[label]\"></ng-content>\n    <span *ngIf=\"hint\" class=\"fr-hint-text\">{{ hint }}</span>\n  </label>\n  <ng-container *ngIf=\"!isTextArea(); else textareaTemplate\">\n    <ng-container *ngIf=\"!hasInputWrap(); else inputWrapTemplate\" [ngTemplateOutlet]=\"inputTemplate\"></ng-container>\n  </ng-container>\n</edu-input-group>\n\n<!-- Templates -------------------------------------------------------------------------------------------------------->\n\n<!-- Template input -->\n<ng-template #inputTemplate>\n  <input\n    class=\"fr-input\"\n    [ngClass]=\"customClass || null\"\n    [attr.autocomplete]=\"autocomplete || null\"\n    [attr.aria-autocomplete]=\"ariaAutocomplete || null\"\n    [attr.aria-describedby]=\"messagesGroupId\"\n    [attr.aria-disabled]=\"disabled || null\"\n    [attr.aria-expanded]=\"ariaExpanded !== undefined ? ariaExpanded : null\"\n    [attr.aria-label]=\"ariaLabel || null\"\n    [attr.aria-required]=\"required || null\"\n    [attr.role]=\"role || null\"\n    [attr.inputmode]=\"inputMode || null\"\n    [attr.autocorrect]=\"autoCorrect ? null : 'off'\"\n    [(ngModel)]=\"value\"\n    [id]=\"inputId\"\n    [attr.name]=\"name || null\"\n    [attr.type]=\"type || null\"\n    [disabled]=\"disabled ?? false\"\n    [required]=\"required ?? false\"\n    [attr.pattern]=\"pattern || null\"\n    [attr.placeholder]=\"placeHolder || null\"\n    [attr.min]=\"min || null\"\n    [attr.max]=\"max || null\"\n    [attr.maxLength]=\"maxLength || null\"\n    [attr.minLength]=\"minLength || null\"\n    [attr.spellcheck]=\"spellCheck || null\"\n    [ngStyle]=\"width ? { width: width } : {}\" />\n</ng-template>\n\n<!-- Template input wrap -->\n<ng-template #inputWrapTemplate>\n  <div [ngClass]=\"getWrapClasses()\">\n    <ng-container *ngTemplateOutlet=\"inputTemplate\"></ng-container>\n    <dsfr-button\n      *ngIf=\"hasButton()\"\n      [ariaLabel]=\"buttonAriaLabel\"\n      [disabled]=\"buttonDisabled\"\n      [icon]=\"buttonIcon\"\n      [label]=\"buttonLabel\"\n      [tooltipMessage]=\"buttonTooltipMessage\"\n      [type]=\"buttonType\"\n      [variant]=\"buttonVariant\"\n      (click)=\"onButtonClick($event)\"></dsfr-button>\n  </div>\n</ng-template>\n\n<!-- Template textarea -->\n<ng-template #textareaTemplate>\n  <textarea\n    class=\"fr-input\"\n    [ngClass]=\"customClass || null\"\n    [id]=\"inputId\"\n    [attr.name]=\"name || null\"\n    [disabled]=\"disabled ?? false\"\n    [attr.required]=\"required || null\"\n    [attr.placeholder]=\"placeHolder || null\"\n    [attr.min]=\"min || null\"\n    [attr.max]=\"max || null\"\n    [attr.maxLength]=\"maxLength || null\"\n    [attr.minLength]=\"minLength || null\"\n    [attr.autocomplete]=\"autocomplete || null\"\n    [attr.aria-describedby]=\"messagesGroupId\"\n    [(ngModel)]=\"value\"\n    [ngStyle]=\"width ? { width: width } : {}\"\n    [attr.rows]=\"rows || null\"></textarea>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DsfrButtonModule } from '../../components';\nimport { InputGroupComponent } from '../../shared';\nimport { DsfrFormInputComponent } from './form-input.component';\n\n@NgModule({\n  declarations: [DsfrFormInputComponent],\n  exports: [DsfrFormInputComponent],\n  imports: [CommonModule, FormsModule, DsfrButtonModule, InputGroupComponent],\n})\nexport class DsfrFormInputModule {}\n","const PATTERN_EMAIL = '^[\\\\w\\\\d._%+-]+@[\\\\w\\\\d.-]+\\\\.[\\\\w]{2,4}$'; // https://www.abstractapi.com/guides/angular-email-validation + majuscules\n\nexport function isEmailValid(value: string | undefined, pattern?: string): boolean {\n  if (!value) return false;\n\n  const regexp = new RegExp(pattern ? pattern : PATTERN_EMAIL);\n  return regexp.test(value);\n}\n","import { Component, forwardRef, HostListener, OnInit, ViewEncapsulation } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { I18nService } from '../../shared';\nimport { DsfrFormInputComponent, DsfrInputTypeConst } from '../form-input';\nimport { isEmailValid } from './email-utils';\n\n@Component({\n  selector: 'dsfr-form-email',\n  templateUrl: '../form-input/form-input.component.html',\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => DsfrFormEmailComponent),\n      multi: true,\n    },\n  ],\n})\n/*\n * Saisie d'une adresse email, si la valeur est validée en sortie de champ, elle est passée en minuscules.\n */\nexport class DsfrFormEmailComponent extends DsfrFormInputComponent implements OnInit {\n  /** @internal */ readonly errorMessage = this.i18n.t('email.error');\n\n  private _isValid: boolean;\n\n  /** @internal */\n  constructor(private i18n: I18nService) {\n    super();\n  }\n\n  /**\n   * Au fil de la saisie, on ne vérifie le mail que s'il y avait déjà une erreur\n   */\n  /** @internal */\n  @HostListener('input')\n  onValueChange() {\n    if (this.error) this.validate();\n  }\n\n  /**\n   * Vérification quand on sort du champ\n   */\n  /** @internal */\n  @HostListener('change')\n  onFocusOut() {\n    if (this.validate()) this.value = this.value?.toLowerCase();\n  }\n\n  /**\n   * Vrai si l'email est validé.\n   */\n  /** @internal */\n  isValid(): boolean {\n    this._isValid ??= this.validate();\n    return this._isValid;\n  }\n\n  /** @internal*/\n  ngOnInit() {\n    super.ngOnInit();\n    this.type = DsfrInputTypeConst.EMAIL;\n    this.spellCheck = false;\n    this.label ??= this.i18n.t('email.label');\n    this.hint ??= this.i18n.t('email.hint');\n    this.autocomplete = 'email'; // @since 1.6\n    this.autoCorrect = false; // @since 1.6\n  }\n\n  /**\n   * Méthode validation, positionne la propriété error s'il y a lieu.\n   */\n  private validate(): boolean {\n    // Validators.email ne marche pas très bien dans la version 14, en effet 'nom@d' est validé\n    // TODO Vérifier le validator d'email d'Angular 15\n    this._isValid = isEmailValid(this.value, this.pattern);\n    this.error = this._isValid ? '' : this.errorMessage;\n    return this._isValid;\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DsfrButtonModule } from '../../components';\nimport { InputGroupComponent } from '../../shared';\nimport { DsfrFormEmailComponent } from './form-email.component';\n\n@NgModule({\n  declarations: [DsfrFormEmailComponent],\n  exports: [DsfrFormEmailComponent],\n  imports: [CommonModule, FormsModule, InputGroupComponent, DsfrButtonModule],\n})\nexport class DsfrFormEmailModule {}\n","import { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NavigationExtras } from '@angular/router';\nimport { DefaultControlComponent, DsfrLinkTarget, I18nService, newUniqueId } from '../../shared';\nimport { DsfrFormPasswordValidationRule } from './form-password.model';\n\n@Component({\n  selector: 'dsfr-form-password',\n  templateUrl: './form-password.component.html',\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: DsfrFormPasswordComponent,\n      multi: true,\n    },\n  ],\n})\nexport class DsfrFormPasswordComponent extends DefaultControlComponent<string> implements OnInit {\n  /** @since 1.6 'current-password' par défaut */\n  @Input() autocomplete = 'current-password';\n\n  /**\n   * Liste des règles de sécurisation du mot de passe, valides ou en erreur - Optionnel.\n   * Sous la forme [{message: '', onError: false}]\n   */\n  // TODO A discuter renommer validationRules en rules et DsfrFormPasswordValidationRule en DsfrPasswordRule\n  @Input() validationRules: DsfrFormPasswordValidationRule[];\n\n  /** Url de récupération du mot de passe (optionnel) */\n  @Input() recoveryLink: string;\n\n  /** Target du lien. Target par défaut de l'application si la propriété est non renseignée. */\n  @Input() recoveryTargetLink: DsfrLinkTarget;\n\n  /** Path angular géré en tant que directive routerLink. Exclusif avec link et route. Prioritaire sur route. */\n  @Input() recoveryRouterLink: string | string[];\n\n  /** RouterLink: classe utilisée pour la directive routerLink active. */\n  @Input() recoveryRouterLinkActive: string | string[] | undefined;\n\n  /** RouterLink: valeurs additionnelles de navigation pour le routerLink (queryParams, state etc.) */\n  @Input() recoveryRouterLinkExtras: NavigationExtras;\n\n  /** Path interne. Exclusif avec link et routerLink */\n  @Input() recoveryRoute: string;\n\n  /** Propage l'évènement Event du DOM à la sélection d'un lien. */\n  @Output() recoveryRouteSelect = new EventEmitter<string>();\n\n  /** @internal */ checkboxId: string;\n  /** @internal */ messagesGroupId: string;\n\n  /** @internal */\n  constructor(public i18n: I18nService) {\n    super();\n    this.label = i18n.t('password.label');\n  }\n\n  /** @internal */\n  ngOnInit() {\n    super.ngOnInit();\n    this.checkboxId = newUniqueId();\n    this.messagesGroupId = newUniqueId();\n  }\n\n  /** @internal */\n  getIdRule(rule: DsfrFormPasswordValidationRule, i: number): string {\n    let status: string = 'info';\n    if (rule.onError === false) {\n      status = 'error';\n    } else if (rule.onError === true) {\n      status = 'error';\n    }\n\n    return `password-${this.inputId}-input-message-${status}-${i}`;\n  }\n\n  /** @internal */\n  hasRecovery() {\n    return this.recoveryLink || this.recoveryRoute || this.recoveryRouterLink;\n  }\n\n  /** @internal */\n  onRecovery(route: string) {\n    if (this.recoveryRoute) {\n      this.recoveryRouteSelect.emit(this.recoveryRoute);\n    }\n  }\n\n  /** @internal */\n  hasMessages(): boolean {\n    return this.validationRules && this.validationRules.length > 0;\n  }\n}\n","<div class=\"fr-password\">\n  <label class=\"fr-label\" [for]=\"inputId\">\n    {{ label }}\n    <span *ngIf=\"hint\" class=\"fr-hint-text\">{{ hint }}</span>\n  </label>\n\n  <div class=\"fr-input-wrap\">\n    <input\n      class=\"fr-password__input fr-input\"\n      autocapitalize=\"off\"\n      autocorrect=\"off\"\n      [attr.aria-describedby]=\"hasMessages() ? messagesGroupId : null\"\n      aria-required=\"true\"\n      [(ngModel)]=\"value\"\n      [disabled]=\"disabled ?? false\"\n      [attr.name]=\"name || null\"\n      [autocomplete]=\"autocomplete\"\n      [id]=\"inputId\"\n      type=\"password\" />\n  </div>\n\n  <div *ngIf=\"hasMessages()\" class=\"fr-messages-group\" [id]=\"messagesGroupId\" aria-live=\"polite\">\n    <p class=\"fr-message\">{{ i18n.t('password.message') }}</p>\n    <p\n      class=\"fr-message\"\n      [id]=\"getIdRule(rule, i)\"\n      [ngClass]=\"{\n        'fr-message--error': rule.onError,\n        'fr-message--info': rule.onError === undefined,\n        'fr-message--valid': rule.onError === false\n      }\"\n      *ngFor=\"let rule of validationRules; let i = index\">\n      {{ rule.message }}\n    </p>\n  </div>\n\n  <div class=\"fr-password__checkbox fr-checkbox-group fr-checkbox-group--sm\">\n    <input [attr.aria-label]=\"i18n.t('password.aria.label')\" [id]=\"checkboxId\" type=\"checkbox\" />\n    <label class=\"fr-password__checkbox fr-label\" [for]=\"checkboxId\"> {{ i18n.t('password.show') }} </label>\n  </div>\n\n  <p *ngIf=\"hasRecovery()\">\n    <dsfr-link\n      [label]=\"i18n.t('password.forgotPassword')\"\n      [link]=\"recoveryLink\"\n      [targetLink]=\"recoveryTargetLink\"\n      [route]=\"recoveryRoute\"\n      [routePath]=\"recoveryRouterLink\"\n      [routerLinkActive]=\"recoveryRouterLinkActive ?? ''\"\n      [routerLinkExtras]=\"recoveryRouterLinkExtras\"\n      (linkSelect)=\"onRecovery($event)\"></dsfr-link>\n  </p>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DsfrLinkModule } from '../../components';\nimport { DsfrFormPasswordComponent } from './form-password.component';\n\n@NgModule({\n  declarations: [DsfrFormPasswordComponent],\n  exports: [DsfrFormPasswordComponent],\n  imports: [CommonModule, FormsModule, DsfrLinkModule],\n})\nexport class DsfrFormPasswordModule {}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { DefaultControlComponent, newUniqueId } from '../shared';\n\n@Component({ template: '' })\nexport abstract class DefaultRadioComponent extends DefaultControlComponent<any> implements OnInit {\n  /*** Bascule l'affichage des radio-buttons en ligne. */\n  @Input() inline = false;\n\n  /** Message d'erreur, quand il est présent les couleurs changent. */\n  @Input() error: string;\n\n  /** Message de validation, quand il est présent les couleurs changent. */\n  @Input() valid: string;\n\n  /** Attribut required du radio-button. */\n  @Input() required = false;\n\n  /** Permet de rétablir une graisse standard sur la légende. */\n  @Input() legendRegular = false;\n\n  get fieldsetLabelledBy(): string {\n    return this.legendId + ' ' + this.inputId + '-messages';\n  }\n\n  get hintId(): string {\n    return this.inputId + '-hint';\n  }\n\n  get legendId(): string {\n    return this.inputId + '-legend';\n  }\n\n  /** Légende du groupe de boutons radios (alias sur la propriété label). */\n  @Input() set legend(legend: string) {\n    this.label = legend;\n  }\n\n  ngOnInit(): void {\n    super.ngOnInit();\n    this.name ??= newUniqueId();\n  }\n\n  /** @internal */\n  getRadioId(index: number): string {\n    return `${this.name}_${index + 1}`;\n  }\n}\n","import { Component, forwardRef, Input, ViewEncapsulation } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DefaultRadioComponent } from '../default-radio.component';\nimport { DsfrRadio } from './form-radio.model';\n\n@Component({\n  selector: 'dsfr-form-radio',\n  templateUrl: './form-radio.component.html',\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => DsfrFormRadioComponent),\n      multi: true,\n    },\n  ],\n})\nexport class DsfrFormRadioComponent extends DefaultRadioComponent {\n  /**\n   * Le modèle de présentation permettant de transmettre la liste des radios.\n   */\n  @Input() options: DsfrRadio[];\n\n  /**\n   * Réduit la taille du radio à 16px (au lieu de 24px).\n   */\n  @Input() small = false;\n\n  /**\n   * @deprecated (@since 1.1.0), utiliser la propriété options à la place.\n   */\n  @Input() set radios(options: DsfrRadio[]) {\n    this.options = options;\n  }\n}\n","<dsfr-fieldset\n  [id]=\"inputId\"\n  [legend]=\"label ?? ''\"\n  [legendRegular]=\"legendRegular\"\n  [hint]=\"hint ?? ''\"\n  [inline]=\"inline\"\n  [disabled]=\"disabled\"\n  [error]=\"error\"\n  [valid]=\"valid\">\n  <ng-container *ngIf=\"!label\" legend>\n    <ng-content select=\"[legend]\"></ng-content>\n  </ng-container>\n  <ng-container *ngFor=\"let radio of options; let i = index\">\n    <div *fieldsetElement class=\"fr-radio-group\" [ngClass]=\"{ 'fr-radio-group--sm': small }\">\n      <!--\n        On bind à la fois la propriété et l'attribut 'name' pour contourner le bug suivant: https://github.com/angular/angular/issues/11757 \n        cf. issue#360\n      -->\n      <input\n        type=\"radio\"\n        [attr.id]=\"getRadioId(i)\"\n        [name]=\"name!\"\n        [value]=\"radio.value\"\n        [(ngModel)]=\"value\"\n        [disabled]=\"disabled\"\n        [attr.name]=\"name\"\n        [attr.required]=\"required\" />\n      <label class=\"fr-label\" [for]=\"getRadioId(i)\">\n        <div [outerHTML]=\"radio.label\"></div>\n        <span *ngIf=\"radio.hint\" class=\"fr-hint-text\">{{ radio.hint }}</span>\n      </label>\n    </div>\n  </ng-container>\n</dsfr-fieldset>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DsfrFormFieldsetModule } from '../fieldset';\nimport { DsfrFormRadioComponent } from './form-radio.component';\n\n@NgModule({\n  declarations: [DsfrFormRadioComponent],\n  exports: [DsfrFormRadioComponent],\n  imports: [CommonModule, FormsModule, DsfrFormFieldsetModule],\n})\nexport class DsfrFormRadioModule {}\n","import { Component, forwardRef, Input, ViewEncapsulation } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DefaultRadioComponent } from '../default-radio.component';\nimport { DsfrRadioRich } from './form-radio-rich.model';\n\n@Component({\n  selector: 'dsfr-form-radio-rich',\n  templateUrl: './form-radio-rich.component.html',\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => DsfrFormRadioRichComponent),\n      multi: true,\n    },\n  ],\n})\nexport class DsfrFormRadioRichComponent extends DefaultRadioComponent {\n  /**\n   * Le modèle de présentation permettant de transmettre la liste des radios.\n   */\n  @Input() options: DsfrRadioRich[];\n\n  /**\n   * @deprecated (@since 1.1.0) utiliser la propriété options à la place.\n   */\n  @Input() set radioRich(options: DsfrRadioRich[]) {\n    this.options = options;\n  }\n}\n","<dsfr-fieldset\n  [id]=\"inputId\"\n  [legend]=\"label ?? ''\"\n  [legendRegular]=\"legendRegular\"\n  [disabled]=\"disabled\"\n  [hint]=\"hint ?? ''\"\n  [inline]=\"inline\"\n  [error]=\"error\"\n  [valid]=\"valid\">\n  <ng-container *ngIf=\"!label\" legend>\n    <ng-content select=\"[legend]\"></ng-content>\n  </ng-container>\n  <ng-container *ngFor=\"let radio of options; let i = index\">\n    <div *fieldsetElement class=\"fr-radio-group fr-radio-rich\">\n      <input\n        type=\"radio\"\n        [attr.id]=\"getRadioId(i)\"\n        [name]=\"name!\"\n        [attr.name]=\"name\"\n        [value]=\"radio.value\"\n        [(ngModel)]=\"value\"\n        [attr.required]=\"required\" />\n      <label class=\"fr-label\" [for]=\"getRadioId(i)\">\n        <span [innerHTML]=\"radio.label\"></span>\n        <span *ngIf=\"radio.hint\" class=\"fr-hint-text\">{{ radio.hint }}</span>\n      </label>\n      <div\n        [ngClass]=\"{\n          'fr-radio-rich__img': radio.imagePath,\n          'fr-radio-rich__pictogram': !radio.imagePath && radio.artworkFilePath\n        }\">\n        <img *ngIf=\"radio.imagePath\" [src]=\"radio.imagePath\" [attr.alt]=\"radio.imageAlt\" />\n        <edu-pictogram\n          *ngIf=\"radio.artworkFilePath && !radio.imagePath\"\n          [artworkFilePath]=\"radio.artworkFilePath\"></edu-pictogram>\n      </div>\n    </div>\n  </ng-container>\n</dsfr-fieldset>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { PictogramModule } from '../../shared';\nimport { DsfrFormFieldsetModule } from '../fieldset/form-fieldset.module';\nimport { DsfrFormRadioRichComponent } from './form-radio-rich.component';\n\n@NgModule({\n  declarations: [DsfrFormRadioRichComponent],\n  exports: [DsfrFormRadioRichComponent],\n  imports: [CommonModule, FormsModule, DsfrFormFieldsetModule, PictogramModule],\n})\nexport class DsfrFormRadioRichModule {}\n","import {\n  Component,\n  EventEmitter,\n  forwardRef,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DefaultControlComponent, I18nService } from '../../shared';\nimport { DsfrSelectOption } from './form-select.model';\n\n@Component({\n  selector: 'dsfr-form-select',\n  templateUrl: './form-select.component.html',\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => DsfrFormSelectComponent),\n      multi: true,\n    },\n  ],\n})\nexport class DsfrFormSelectComponent extends DefaultControlComponent<any> implements OnInit, OnChanges {\n  /**\n   * Permet de personnaliser la première option (non sélectionnable). Cette propriété est positionnée à une valeur par\n   * défaut (ex : Sélectionnez une option) internationalisée.\n   */\n  @Input() placeholder: string;\n\n  /**\n   * Le modèle de présentation permettant de transmettre la liste des options.\n   */\n  @Input() options: DsfrSelectOption[];\n\n  /**\n   * Indique que le champ est obligatoire, nécessaire du point de vue de l'accessibilité.\n   */\n  @Input() required = false;\n\n  /**\n   * Permet d'ajouter un attribut 'aria-label' sur le champ de formulaire en cas de besoin.\n   */\n  @Input() ariaLabel: string;\n\n  /**\n   * Message d'erreur, quand il est présent les couleurs du contrôle changent.\n   */\n  @Input() error: string;\n\n  /**\n   * Message de validation, quand il est présent les couleurs du contrôle changent.\n   */\n  @Input() valid: string;\n\n  /**\n   * Output équivalent de (ngModelChange) si celui n'est pas disponible.\n   */\n  @Output() selectChange = new EventEmitter<any>();\n\n  /** @internal */ messagesGroupId: string;\n\n  /**\n   * @internal\n   * https://github.com/angular/angular/issues/50233 : issue performance with ng-container/ng-template inside select for Firefox\n   * Dans le cas ou il n'y a pas de groupe, supprimer le ng-container avec ngFor côté template\n   * fixme: vérifier/améliorer le fix lors du passage à angular 17.\n   */\n  noGroup: boolean = true;\n\n  /** @internal fonction de comparaison */\n  compareFn: (o1: any, o2: any) => boolean = Object.is;\n\n  /** @internal */\n  constructor(private i18n: I18nService) {\n    super();\n  }\n\n  /**\n   * @deprecated since 1.2, utiliser `placeholder` à la place (sans H majuscule).\n   */\n  get placeHolder(): string {\n    return this.placeholder;\n  }\n\n  /**\n   * @deprecated since 1.2, utiliser `placeholder` à la place (sans H majuscule).\n   */\n  @Input() set placeHolder(value: string) {\n    this.placeholder = value;\n  }\n\n  /** Personnalisation de la comparaison. CompareWith est une fonction qui a deux arguments: valeur option1 et valeur option2.\n  Si compareWith est fournie, sélection de l'option en fonction du retour de la fonction. */\n  @Input()\n  set compareWith(fn: (o1: any, o2: any) => boolean) {\n    if (typeof fn !== 'function') {\n      throw Error('`compareWith` must be a function.');\n    }\n\n    this.compareFn = fn;\n  }\n\n  /** @internal */\n  ngOnInit() {\n    if (this.options && this.options.length && this.options.find((o) => o.options)) {\n      this.noGroup = false;\n    }\n    super.ngOnInit();\n    this.messagesGroupId = `${this.inputId}-messages`;\n    this.placeholder ??= this.i18n.t('select.placeholder');\n  }\n\n  ngOnChanges({ value }: SimpleChanges): void {\n    if (value && this.value && this.options?.length) {\n      if (!this.findOption(this.value, this.options)) {\n        this.value = undefined;\n      }\n    }\n  }\n\n  /** @internal */\n  onChange() {\n    // Comme on a le double binding, la valeur est déjà à jour\n    // this.value = (<HTMLSelectElement>event?.target)?.value;\n    this.selectChange.emit(this.value);\n  }\n\n  trackByIndex = (index: number): number => {\n    return index;\n  };\n\n  private findOption(value: any, options: DsfrSelectOption[]): any {\n    return options?.find(\n      (option) =>\n        this.compareFn(value, option.value) ||\n        option.value === value ||\n        (option.options && this.findOption(value, option.options)),\n    );\n  }\n}\n","<div\n  [ngClass]=\"{\n    'fr-select-group': true,\n    'fr-select-group--error': error,\n    'fr-select-group--valid': valid,\n    'fr-select-group--disabled': disabled\n  }\">\n  <label class=\"fr-label\" [for]=\"inputId\">\n    <ng-container *ngIf=\"label\">{{ label }}</ng-container>\n    <ng-content *ngIf=\"!label\" select=\"[label]\"></ng-content>\n    <span *ngIf=\"hint\" class=\"fr-hint-text\">{{ hint }}</span>\n  </label>\n\n  <!-- Select sans groupes. Duplication du select pour pb perf. affichage d'options sur firefox si utilisation d'un ng-container -->\n  <select\n    *ngIf=\"noGroup\"\n    class=\"fr-select\"\n    [id]=\"inputId\"\n    [attr.name]=\"name || null\"\n    [(ngModel)]=\"value\"\n    [attr.aria-describedby]=\"messagesGroupId\"\n    [attr.aria-label]=\"ariaLabel\"\n    [disabled]=\"disabled\"\n    [attr.required]=\"required || null\"\n    [compareWith]=\"compareFn\"\n    (change)=\"onChange()\">\n    <option *ngIf=\"!value\" [value]=\"value\" selected hidden disabled>{{ placeholder }}</option>\n    <option\n      *ngFor=\"let option of options; trackBy: trackByIndex\"\n      [ngValue]=\"option.value\"\n      [attr.aria-selected]=\"compareFn(option.value, value)\"\n      [disabled]=\"option.disabled || null\">\n      {{ option.label }}\n    </option>\n  </select>\n\n  <!-- Select avec groupes. Ne sera pas optimisé pour FF, voir pour un fix avec angular 17 -->\n  <select\n    *ngIf=\"!noGroup\"\n    class=\"fr-select\"\n    [id]=\"inputId\"\n    [attr.name]=\"name || null\"\n    [(ngModel)]=\"value\"\n    [attr.aria-describedby]=\"messagesGroupId\"\n    [attr.aria-label]=\"ariaLabel\"\n    [disabled]=\"disabled\"\n    [attr.required]=\"required || null\"\n    [compareWith]=\"compareFn\"\n    (change)=\"onChange()\">\n    <option *ngIf=\"!value\" [value]=\"value\" selected hidden disabled>{{ placeholder }}</option>\n    <ng-container *ngFor=\"let option of options; trackBy: trackByIndex\">\n      <option\n        *ngIf=\"!option.options\"\n        [ngValue]=\"option.value\"\n        [attr.aria-selected]=\"compareFn(option.value, value)\"\n        [disabled]=\"option.disabled || null\">\n        {{ option.label }}\n      </option>\n    </ng-container>\n    <ng-container *ngFor=\"let option of options; trackBy: trackByIndex\">\n      <optgroup *ngIf=\"option.options\" [label]=\"option.label\">\n        <option\n          *ngFor=\"let option of option.options; trackBy: trackByIndex\"\n          [ngValue]=\"option.value\"\n          [attr.aria-selected]=\"compareFn(option.value, value)\"\n          [disabled]=\"option.disabled || null\">\n          {{ option.label }}\n        </option>\n      </optgroup>\n    </ng-container>\n  </select>\n\n  <div [id]=\"messagesGroupId\" class=\"fr-messages-group\" aria-live=\"polite\">\n    <p *ngIf=\"error\" class=\"fr-message fr-message--error\">{{ error }}</p>\n    <p *ngIf=\"valid\" class=\"fr-message fr-message--valid\">{{ valid }}</p>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { DsfrFormSelectComponent } from './form-select.component';\n\n@NgModule({\n  declarations: [DsfrFormSelectComponent],\n  exports: [DsfrFormSelectComponent],\n  imports: [CommonModule, FormsModule],\n})\nexport class DsfrFormSelectModule {}\n","const REGEXP_PHONE_NUMBER = /^\\(?(\\+\\d{2})?\\)?\\s?0?(\\d(\\s?\\d{2}){4})$/;\n\n/**\n * Teste si le numéro de téléphone correspond au pattern (soit celui de l'input, soit un pattern par défaut)\n */\nexport function isPhoneNumberValid(value: string | undefined, pattern?: string): boolean {\n  if (!value) return false;\n\n  const regexp = pattern ? new RegExp(pattern) : REGEXP_PHONE_NUMBER;\n  const matchArr = regexp.exec(value);\n  return matchArr ? true : false;\n}\n\n/**\n * Formatage du n° de téléphone.\n * Le formatage ne se fait que dans le cas où on utilise le pattern par défaut\n */\nexport function formatPhoneNumber(value: string | undefined, pattern?: string): string {\n  if (!value) return '';\n  if (pattern) return value;\n\n  const regexp = REGEXP_PHONE_NUMBER;\n  const matchArr = regexp.exec(value);\n  if (!matchArr) return value;\n\n  let num = value;\n  let country = matchArr[1];\n  num = matchArr[2].replace(/ /g, '');\n  num = num.replace(/(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})/, '$1 $2 $3 $4 $5');\n  num = country ? `(${country}) ${num}` : `0${num}`;\n  return num;\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, forwardRef, HostListener, OnInit } from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DsfrButtonModule } from '../../components';\nimport { I18nService, InputGroupComponent } from '../../shared';\nimport { DsfrFormInputComponent } from '../form-input';\nimport { DsfrInputTypeConst } from '../form-input/form-input.model';\nimport { formatPhoneNumber, isPhoneNumberValid } from './phone-number-utils';\n\n@Component({\n  selector: 'dsfr-form-tel',\n  templateUrl: '../form-input/form-input.component.html',\n  standalone: true,\n  imports: [CommonModule, FormsModule, InputGroupComponent, DsfrButtonModule],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => DsfrFormTelComponent),\n      multi: true,\n    },\n  ],\n})\n/**\n * Saisie d'un n° de téléphone et reformatage (sauf dans le cas d'utilisation d'un pattern)\n * @since 1.3.0\n */\nexport class DsfrFormTelComponent extends DsfrFormInputComponent implements OnInit {\n  /** @internal */ readonly errorMessage = this.i18n.t('tel.error');\n\n  /** @internal */\n  constructor(private i18n: I18nService) {\n    super();\n  }\n\n  /**\n   * Au fil de la saisie, on ne vérifie le n° de téléphone que s'il y avait déjà une erreur\n   */\n  @HostListener('input') onValueChange() {\n    if (this.error) this.validate();\n  }\n\n  /**\n   * Vérification quand on sort du champ\n   */\n  @HostListener('change') onFocusOut() {\n    if (!this.pattern && this.validate()) this.value = formatPhoneNumber(this.value);\n  }\n\n  /** @internal*/\n  ngOnInit() {\n    super.ngOnInit();\n    this.type = DsfrInputTypeConst.TEL;\n    this.spellCheck = false;\n    this.label ??= this.i18n.t('tel.label');\n    this.hint ??= this.i18n.t('tel.hint');\n  }\n\n  /**\n   * Méthode validation, positionne la propriété error s'il y a lieu.\n   */\n  private validate(): boolean {\n    const isValid = isPhoneNumberValid(this.value, this.pattern);\n    this.error = isValid ? '' : this.errorMessage;\n    return isValid;\n  }\n}\n","import { Component, forwardRef, Input, ViewEncapsulation } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DefaultControlComponent, DsfrPosition, DsfrPositionConst, I18nService } from '../../shared';\n\n@Component({\n  selector: 'dsfr-form-toggle',\n  templateUrl: './form-toggle.component.html',\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => DsfrFormToggleComponent),\n      multi: true,\n    },\n  ],\n})\nexport class DsfrFormToggleComponent extends DefaultControlComponent<boolean> {\n  /** Position du libellé, à droite par défaut. */\n  @Input() labelPosition: DsfrPosition = DsfrPositionConst.RIGHT;\n\n  /**\n   * Permet d'afficher le libellé, court, décrivant l'état de l’interrupteur (activé / désactivé), placé en dessous du\n   * switch. Il est affiché par défaut, il est conseillé de le mettre afin de faciliter la compréhension de\n   * l’utilisateur - Optionnel.\n   */\n  @Input() showCheckedHint = true;\n\n  /**\n   * Propriété permettant de surcharger le libellé, court, dénotant l'état checked du toggle, sans avoir à passer\n   * par le fichier d'internationalisation.\n   */\n  @Input() checkedHintLabel: string;\n\n  /**\n   * Propriété permettant de surcharger le libellé court dénotant l'état checked du toggle, sans avoir à passer\n   * par le fichier d'internationalisation.\n   */\n  @Input() uncheckedHintLabel: string;\n\n  /**\n   * Affiche un séparateur horizontal sous le composant.\n   * Ne devrait être utilisé que dans le cadre d'un toggles-group.\n   */\n  @Input() showSeparator: boolean;\n\n  /**\n   * Symbolise l'erreur du toggle\n   */\n  @Input() error: boolean;\n\n  /**\n   * Symbolise le succès du toggle\n   */\n  @Input() valid: boolean;\n\n  constructor(private i18n: I18nService) {\n    super();\n  }\n\n  get hintId() {\n    return this.inputId + '-hint-text';\n  }\n\n  /**\n   * Permet d'initialiser de forcer la valeur initiale à une valeur booléenne\n   * @internal\n   */\n  writeValue(value: boolean | undefined) {\n    super.writeValue(value ?? false);\n  }\n\n  /**\n   * @ignore\n   */\n  getDataLabelChecked(): string {\n    return this.showCheckedHint ? this.checkedHintLabel || this.i18n.t('toggle.dataLabelChecked') : '';\n  }\n\n  /**\n   * @ignore\n   */\n  getDataLabelUnchecked(): string {\n    return this.showCheckedHint ? this.uncheckedHintLabel || this.i18n.t('toggle.dataLabelUnchecked') : '';\n  }\n}\n","<div\n  class=\"fr-toggle\"\n  [ngClass]=\"{\n    'fr-toggle--label-left': labelPosition === 'left',\n    'fr-toggle--border-bottom': showSeparator,\n    'fr-toggle--valid': valid && !error,\n    'fr-toggle--error': error\n  }\">\n  <input\n    type=\"checkbox\"\n    class=\"fr-toggle__input\"\n    [id]=\"inputId\"\n    [attr.name]=\"name ? name : null\"\n    [attr.aria-describedby]=\"hint ? hintId : null\"\n    [disabled]=\"disabled ?? false\"\n    [attr.checked]=\"value ? true : null\"\n    [(ngModel)]=\"value\" />\n  <label\n    class=\"fr-toggle__label\"\n    [attr.for]=\"inputId\"\n    [attr.data-fr-checked-label]=\"getDataLabelChecked()\"\n    [attr.data-fr-unchecked-label]=\"getDataLabelUnchecked()\">\n    <ng-container *ngIf=\"label\">{{ label }}</ng-container>\n    <ng-content *ngIf=\"!label\"></ng-content>\n  </label>\n  <p *ngIf=\"hint\" [id]=\"hintId\" class=\"fr-hint-text\">{{ hint }}</p>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DsfrFormToggleComponent } from './form-toggle.component';\n\n@NgModule({\n  declarations: [DsfrFormToggleComponent],\n  exports: [DsfrFormToggleComponent],\n  imports: [CommonModule, FormsModule],\n})\nexport class DsfrFormToggleModule {}\n","import {\n  AfterViewInit,\n  Component,\n  ContentChildren,\n  ElementRef,\n  Input,\n  QueryList,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { DomUtils } from '../../shared';\nimport { BaseFieldsetComponent } from '../fieldset/base-fieldset.component';\nimport { DsfrFormToggleComponent } from '../form-toggle';\n\n@Component({\n  selector: 'dsfr-form-toggles-group',\n  templateUrl: './form-toggles-group.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrFormTogglesGroupComponent extends BaseFieldsetComponent implements AfterViewInit {\n  /** @internal */\n  @ContentChildren(DsfrFormToggleComponent) toggles: QueryList<DsfrFormToggleComponent>;\n\n  private _showSeparators = true;\n\n  constructor(private _elementRef: ElementRef) {\n    super();\n  }\n\n  get showSeparators(): boolean {\n    return this._showSeparators;\n  }\n\n  /** Permet de masquer la bordure horizontale séparant les toggles dans le groupe. */\n  @Input() set showSeparators(value: boolean) {\n    this._showSeparators = value;\n    this.updateTogglesBorderBottom();\n  }\n\n  ngAfterViewInit() {\n    // Ajoute des tags <li> autour des toggles\n    DomUtils.surroundChildWithli(this._elementRef, 'dsfr-form-toggle');\n\n    // Gestion des bordures de séparation\n    this.updateTogglesBorderBottom();\n  }\n\n  private updateTogglesBorderBottom() {\n    if (this.toggles) {\n      this.toggles.forEach((toggle) => (toggle.showSeparator = this.showSeparators));\n    }\n  }\n}\n","<fieldset\n  id=\"{{ id }}\"\n  [ngClass]=\"{\n      'fr-fieldset': true,\n      'fr-fieldset--error': this.hasErrors(),\n      'fr-fieldset--valid': this.valid,\n    }\"\n  [attr.role]=\"error || valid ? 'group' : null\"\n  [attr.aria-labelledby]=\"legendId + ' ' + messagesId\"\n  [disabled]=\"disabled ?? null\">\n  <legend\n    id=\"{{ legendId }}\"\n    [ngClass]=\"{\n      'fr-fieldset__legend': true,\n      'fr-fieldset__legend--regular': this.isLegendRegular(),\n      'fr-sr-only': this.legendSrOnly,\n    }\">\n    <ng-container *ngIf=\"legend\">{{ legend }}</ng-container>\n    <span *ngIf=\"hint\" class=\"fr-hint-text\">{{ hint }}</span>\n  </legend>\n  <!-- Content -->\n  <div class=\"fr-fieldset__element\">\n    <ul class=\"fr-toggle__list\">\n      <ng-content></ng-content>\n    </ul>\n  </div>\n  <!-- -->\n  <div class=\"fr-messages-group\" id=\"{{ messagesId }}\" aria-live=\"polite\">\n    <p *ngFor=\"let err of errors\" class=\"fr-message fr-message--error\">{{ err }}</p>\n    <p *ngIf=\"valid\" class=\"fr-message fr-message--valid\">{{ valid }}</p>\n  </div>\n</fieldset>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DsfrFormToggleModule } from '../form-toggle';\nimport { DsfrFormTogglesGroupComponent } from './form-toggles-group.component';\n\n@NgModule({\n  declarations: [DsfrFormTogglesGroupComponent],\n  exports: [DsfrFormTogglesGroupComponent],\n  imports: [CommonModule, DsfrFormToggleModule],\n})\nexport class DsfrFormTogglesGroupModule {}\n","import {\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  Renderer2,\n  SimpleChanges,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DefaultControlComponent, I18nService, newUniqueId } from '../../shared';\n\n@Component({\n  selector: 'dsfr-form-upload, dsfr-upload',\n  templateUrl: './upload.component.html',\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => DsfrUploadComponent),\n      multi: true,\n    },\n  ],\n})\nexport class DsfrUploadComponent extends DefaultControlComponent<any> implements OnInit, OnChanges {\n  /** @internal */\n  @ViewChild('inputFile', { static: true })\n  inputFile: ElementRef;\n\n  /** Texte d'erreur. */\n  @Input() error: string;\n\n  /** Permet l'ajout de plusieurs fichiers à la fois. */\n  @Input() multiple = false;\n\n  /** Spécifie un filtre pour les types de fichiers que l'utilisateur peut sélectionner (`@since 1.9.0`). */\n  @Input() accept: string;\n\n  /** Evénement émis à la sélection d'un ou plusieurs fichiers. */\n  @Output()\n  fileSelect = new EventEmitter<FileList>();\n\n  /** Evénement émis lorsque l'utilisateur annule la sélection. */\n  @Output()\n  fileCancel = new EventEmitter<FileList>();\n\n  /** @internal */\n  messagesGroupId: string;\n\n  constructor(\n    private readonly _renderer: Renderer2,\n    private readonly _elementRef: ElementRef,\n    private readonly i18n: I18nService,\n  ) {\n    super();\n  }\n\n  /** @deprecated (@since 1.4.0) utiliser hint à la place. */\n  get description(): string | undefined {\n    return this.hint;\n  }\n\n  /**\n   * Description pour l'upload (précise les contraintes au niveau du ou des fichiers attendus : format, poids attendus, nombre de fichiers possible…).\n   *\n   * @deprecated (@since 1.4.0) utiliser hint à la place.\n   *\n   * @internal\n   */\n  @Input() set description(value: string | undefined) {\n    this.hint = value;\n  }\n\n  /**\n   * Surcharge permettant de gérer la mise à jour du DOM.\n   *\n   * @internal\n   */\n  override writeValue(value: any | undefined): void {\n    // afin de se prémunir des initialisations avec une chaîne de caractères (vide ou pas) il faut s'assurer du type\n    // d'argument transmis en entrée et forcer la chaîne vide le cas échéant\n    const isTypeFileList = Object.prototype.toString.call(value).includes(FileList.name);\n    if (!isTypeFileList) {\n      value = '';\n    }\n    super.writeValue(value);\n    if (this.inputFile) {\n      if (isTypeFileList && value?.length) {\n        this._renderer.setProperty(this.inputFile.nativeElement, 'files', value);\n      } else {\n        this._renderer.setProperty(this.inputFile.nativeElement, 'value', '');\n        this._renderer.setProperty(this.inputFile.nativeElement, 'files', null);\n      }\n    }\n  }\n\n  /** @internal */\n  ngOnInit() {\n    super.ngOnInit();\n    this.name ??= 'file-upload'; // 'file-upload' est la valeur statique jusqu'en 1.3\n    this.messagesGroupId = newUniqueId();\n  }\n\n  /** @internal */\n  ngOnChanges(changes: SimpleChanges) {\n    if ([changes['label']]) this.label ||= this.i18n.t('upload.label'); // default\n    if ([changes['hint']]) this.hint ||= this.i18n.t('upload.hint'); // default\n  }\n\n  /**\n   * Permet de programmatiquement réinitialiser le champ après une sélection de fichier(s).\n   */\n  reset() {\n    this.inputFile.nativeElement.value = '';\n  }\n\n  /** @internal */\n  onCancel() {\n    this.fileCancel.emit();\n  }\n\n  /** @internal */\n  onFileChange(event: Event) {\n    const target = <HTMLInputElement>event.target;\n    this.value = target.files ?? undefined;\n    if (this.value) this.fileSelect.emit(this.value);\n  }\n\n  /** @internal */\n  hasMessages(): boolean {\n    return !!this.error;\n  }\n}\n","<div class=\"fr-upload-group\" [ngClass]=\"{ 'fr-input-group--error': error, 'fr-input-group--disabled': disabled }\">\n  <label class=\"fr-label\" [for]=\"inputId\"\n    >{{ label }}\n    <span class=\"fr-hint-text\">{{ hint }}</span>\n  </label>\n  <input\n    #inputFile\n    class=\"fr-upload\"\n    type=\"file\"\n    [id]=\"inputId || null\"\n    [name]=\"name || null\"\n    [multiple]=\"multiple\"\n    [attr.accept]=\"accept || null\"\n    [disabled]=\"disabled\"\n    [attr.aria-describedby]=\"hasMessages() ? messagesGroupId : null\"\n    (change)=\"onFileChange($event)\"\n    (cancel)=\"onCancel()\" />\n  <p *ngIf=\"hasMessages()\" [id]=\"messagesGroupId\" class=\"fr-error-text\">\n    {{ error }}\n  </p>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DsfrUploadComponent } from './upload.component';\n\n@NgModule({\n  declarations: [DsfrUploadComponent],\n  exports: [DsfrUploadComponent],\n  imports: [CommonModule, FormsModule],\n})\nexport class DsfrUploadModule {}\n","export namespace DsfrFollowNameConst {\n  export const DAILYMOTION = 'dailymotion';\n  export const FACEBOOK = 'facebook';\n  export const GITHUB = 'github';\n  export const INSTAGRAM = 'instagram';\n  export const LINKEDIN = 'linkedin';\n  export const MASTODON = 'mastodon';\n  export const SNAPCHAT = 'snapchat';\n  export const TELEGRAM = 'telegram';\n  export const TIKTOK = 'tiktok';\n  export const TWITCH = 'twitch';\n  export const TWITTER = 'twitter';\n  export const X = 'twitter-x';\n  export const VIMEO = 'vimeo';\n  export const YOUTUBE = 'youtube';\n}\n\ntype Names = typeof DsfrFollowNameConst;\nexport type DsfrFollowName = Names[keyof Names];\n\nexport namespace DsfrFollowTypeConst {\n  export const NETWORKS = 'networks';\n  export const NEWSLETTER = 'newsletter';\n  export const NEWSLETTER_MAIL = 'newsletter-mail';\n  export const NEWSLETTER_NETWORKS = 'newsletter-networks';\n  export const NEWSLETTER_NETWORKS_MAIL = 'newsletter-networks-mail';\n}\n\ntype Types = typeof DsfrFollowTypeConst;\nexport type DsfrFollowType = Types[keyof Types];\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { DsfrLinkTarget, I18nService } from '../../../shared';\nimport { DsfrFollowName, DsfrFollowNameConst } from '../follow.model';\n\n@Component({\n  selector: 'dsfr-follow-link',\n  templateUrl: './follow-link.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrFollowLinkComponent {\n  /** Lien obligatoire. */\n  @Input() link: string;\n\n  /** Target optionnelle, target html par défaut si non renseigné. */\n  @Input() target?: DsfrLinkTarget;\n\n  private _name: DsfrFollowName;\n\n  constructor(public i18n: I18nService) {}\n\n  get name(): DsfrFollowName {\n    return this._name;\n  }\n\n  /** La propriété 'name' est obligatoire et doit être sélectionnée dans une liste énumérée. */\n  @Input() set name(value: DsfrFollowName) {\n    if (value === DsfrFollowNameConst.TWITTER) {\n      this._name = DsfrFollowNameConst.X;\n    } else {\n      this._name = value;\n    }\n  }\n}\n","<li>\n  <a\n    [class]=\"'fr-btn--' + name.toLowerCase() + ' fr-btn'\"\n    [href]=\"link\"\n    [attr.target]=\"target || null\"\n    [title]=\"(name + ' - ' + i18n.t('follow.newWindow')).toLowerCase()\">\n    {{ name }}\n  </a>\n</li>\n","import { Component, EventEmitter, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { DsfrFormEmailComponent } from '../../forms';\nimport { DsfrHeadingLevel, DsfrHeadingLevelConst, I18nService } from '../../shared';\nimport { DsfrFollowType, DsfrFollowTypeConst } from './follow.model';\n\n@Component({\n  selector: 'dsfr-follow',\n  templateUrl: './follow.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrFollowComponent {\n  /** @internal */\n  @ViewChild(DsfrFormEmailComponent) emailComponent: DsfrFormEmailComponent;\n\n  /**\n   * Niveau du titre, h2 par défaut\n   */\n  @Input() headingLevel: DsfrHeadingLevel = DsfrHeadingLevelConst.H2;\n\n  /** Description (pour certains types seulement) optionnelle. */\n  @Input() description = '';\n\n  /** Email par défaut. */\n  @Input() email = '';\n\n  /** Message d'erreur concernant l'email. */\n  @Input() emailError = '';\n\n  /** Indique que l'inscription a bien été prise en compte. */\n  @Input() registered = false;\n\n  /** Type du composant, réseaux sociaux seuls par défaut  */\n  @Input() type: DsfrFollowType = DsfrFollowTypeConst.NETWORKS;\n\n  /** Abonnement si l'adresse est valide. */\n  @Output() subscribe = new EventEmitter<string>();\n\n  /* Tous les types possibles du composant. */\n  /** @internal */ followType = DsfrFollowTypeConst;\n\n  /* Les entêtes. */\n  /** @internal */ readonly headingNetworks = this.i18n.t('follow.networks.heading');\n  /** @internal */ readonly headingNewsletter = this.i18n.t('follow.newsletter.heading');\n\n  /* Les données du champ email. */\n  /** @internal*/ readonly inputPlaceholder = this.i18n.t('follow.newsletter.input.placeholder');\n  /** @internal*/ readonly inputHint = this.i18n.t('follow.newsletter.input.hint');\n  /** @internal */ readonly buttonLabel = this.i18n.t('follow.newsletter.button.label');\n  /** @internal */ readonly buttonTitle = this.i18n.t('follow.newsletter.button.title');\n\n  /** @internal */\n  constructor(public i18n: I18nService) {\n    this.type = DsfrFollowTypeConst.NETWORKS;\n  }\n\n  /** @internal */\n  onSubscribe(email: string) {\n    if (this.emailComponent?.isValid()) {\n      this.subscribe.emit(email);\n    }\n  }\n}\n","<div class=\"fr-follow\">\n  <div class=\"fr-container\">\n    <div class=\"fr-grid-row\">\n      <ng-container [ngSwitch]=\"type\">\n        <div *ngSwitchCase=\"followType.NETWORKS\" class=\"fr-col-12\">\n          <ng-container [ngTemplateOutlet]=\"networksTemplate\"></ng-container>\n        </div>\n        <div *ngSwitchCase=\"followType.NEWSLETTER\" class=\"fr-col-12\">\n          <ng-container [ngTemplateOutlet]=\"newsletterTemplate\"></ng-container>\n        </div>\n        <div *ngSwitchCase=\"followType.NEWSLETTER_MAIL\" class=\"fr-col-12\">\n          <ng-container [ngTemplateOutlet]=\"newsletterWithMailTemplate\"></ng-container>\n        </div>\n        <ng-container\n          *ngSwitchCase=\"followType.NEWSLETTER_NETWORKS\"\n          [ngTemplateOutlet]=\"newsletterAndNetworksTemplate\"></ng-container>\n        <ng-container\n          *ngSwitchCase=\"followType.NEWSLETTER_NETWORKS_MAIL\"\n          [ngTemplateOutlet]=\"networksAndNewsletterWithMailTemplate\"></ng-container>\n      </ng-container>\n    </div>\n  </div>\n</div>\n\n<!-- Réseaux sociaux seuls -->\n<ng-template #networksTemplate>\n  <div class=\"fr-follow__social\">\n    <ng-container [ngTemplateOutlet]=\"heading\" [ngTemplateOutletContext]=\"{ heading: headingNetworks }\"></ng-container>\n    <ul class=\"fr-btns-group\">\n      <ng-content></ng-content>\n    </ul>\n  </div>\n</ng-template>\n\n<!-- Lettre d'info seule -->\n<ng-template #newsletterTemplate>\n  <div class=\"fr-follow__newsletter\">\n    <div>\n      <ng-container\n        [ngTemplateOutlet]=\"heading\"\n        [ngTemplateOutletContext]=\"{ heading: headingNewsletter }\"></ng-container>\n      <p *ngIf=\"description\" class=\"fr-text--sm\" [innerHTML]=\"description\"></p>\n    </div>\n    <div>\n      <ul class=\"fr-btns-group fr-btns-group--inline-md\">\n        <li>\n          <button type=\"button\" class=\"fr-btn\" [title]=\"buttonTitle\">{{ buttonLabel }}</button>\n        </li>\n      </ul>\n    </div>\n  </div>\n</ng-template>\n\n<!-- Lettre d'info seule avec formulaire -->\n<ng-template #newsletterWithMailTemplate>\n  <div class=\"fr-follow__newsletter\">\n    <div>\n      <ng-container\n        [ngTemplateOutlet]=\"heading\"\n        [ngTemplateOutletContext]=\"{ heading: headingNewsletter }\"></ng-container>\n      <p *ngIf=\"description\" class=\"fr-text--sm\" [innerHTML]=\"description\"></p>\n    </div>\n    <div>\n      <ng-container *ngIf=\"registered\">\n        <div class=\"fr-alert fr-alert--success\">\n          <p>{{ i18n.t('follow.newsletter.registration.success') }}</p>\n        </div>\n      </ng-container>\n      <ng-container *ngIf=\"!registered\">\n        <dsfr-form-email\n          [value]=\"email\"\n          [buttonLabel]=\"buttonLabel\"\n          [buttonTooltipMessage]=\"buttonTitle\"\n          buttonType=\"button\"\n          [placeholder]=\"inputPlaceholder\"\n          [title]=\"inputPlaceholder\"\n          [error]=\"emailError\"\n          (buttonSelect)=\"onSubscribe(email)\"></dsfr-form-email>\n        <p class=\"fr-hint-text\" [innerHTML]=\"inputHint\"></p>\n      </ng-container>\n    </div>\n  </div>\n</ng-template>\n\n<!-- Réseaux sociaux et Lettre d'info mise en avant -->\n<ng-template #newsletterAndNetworksTemplate>\n  <div class=\"fr-col-12 fr-col-md-8\">\n    <ng-container *ngTemplateOutlet=\"newsletterTemplate\"></ng-container>\n  </div>\n  <div class=\"fr-col-12 fr-col-md-4\">\n    <ng-container *ngTemplateOutlet=\"networksTemplate\"></ng-container>\n  </div>\n</ng-template>\n\n<!-- Réseaux sociaux et Lettre d'info avec formulaire -->\n<ng-template #networksAndNewsletterWithMailTemplate>\n  <div class=\"fr-col-12 fr-col-md-8\">\n    <ng-container *ngTemplateOutlet=\"newsletterWithMailTemplate\"></ng-container>\n  </div>\n  <div class=\"fr-col-12 fr-col-md-4\">\n    <ng-container *ngTemplateOutlet=\"networksTemplate\"></ng-container>\n  </div>\n</ng-template>\n\n<!-- Heading -->\n<ng-template #heading let-heading=\"heading\">\n  <ng-container [ngSwitch]=\"headingLevel\">\n    <h3 *ngSwitchCase=\"'H3'\" class=\"fr-h5\" [innerHtml]=\"heading\"></h3>\n    <h4 *ngSwitchCase=\"'H4'\" class=\"fr-h5\" [innerHtml]=\"heading\"></h4>\n    <h5 *ngSwitchCase=\"'H5'\" class=\"fr-h5\" [innerHtml]=\"heading\"></h5>\n    <h6 *ngSwitchCase=\"'H6'\" class=\"fr-h5\" [innerHtml]=\"heading\"></h6>\n    <h2 *ngSwitchDefault class=\"fr-h5\" [innerHtml]=\"heading\"></h2>\n  </ng-container>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DsfrFormEmailModule } from '../../forms';\nimport { InputGroupComponent } from '../../shared';\nimport { DsfrFollowLinkComponent } from './follow-link/follow-link.component';\nimport { DsfrFollowComponent } from './follow.component';\n\n@NgModule({\n  declarations: [DsfrFollowComponent, DsfrFollowLinkComponent],\n  exports: [DsfrFollowComponent, DsfrFollowLinkComponent],\n  imports: [CommonModule, FormsModule, DsfrFormEmailModule, InputGroupComponent],\n})\nexport class DsfrFollowModule {}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { NavigationExtras } from '@angular/router';\nimport {\n  DsfrAlertModule,\n  DsfrButtonModule,\n  DsfrButtonsGroupModule,\n  DsfrFranceConnectComponent,\n} from '../../components';\nimport {\n  DsfrFormCheckboxModule,\n  DsfrFormEmailComponent,\n  DsfrFormEmailModule,\n  DsfrFormFieldsetModule,\n  DsfrFormPasswordModule,\n} from '../../forms';\nimport { I18nService, LocalStorage, StorageEnum, isOnBrowser } from '../../shared';\nimport { DsfrLogin } from './login.model';\n\n@Component({\n  selector: 'dsfr-login',\n  templateUrl: './login.component.html',\n  standalone: true,\n  imports: [\n    CommonModule,\n    ReactiveFormsModule,\n    DsfrFranceConnectComponent,\n    DsfrFormEmailModule,\n    DsfrFormPasswordModule,\n    DsfrFormFieldsetModule,\n    DsfrFormCheckboxModule,\n    DsfrButtonModule,\n    DsfrButtonsGroupModule,\n    DsfrAlertModule,\n  ],\n})\nexport class DsfrLoginComponent implements OnInit {\n  /** @internal */ @ViewChild(DsfrFormEmailComponent) emailComponent: DsfrFormEmailComponent;\n\n  /**\n   * Indique une erreur de connexion. Message de l'erreur.\n   */\n  @Input() error: string;\n\n  /** Url de récupération du mot de passe (optionnel) */\n  @Input() recoveryLink: string;\n\n  /** Path interne. Exclusif avec link et routerLink */\n  @Input() recoveryRoute: string;\n\n  /** Path angular géré en tant que directive routerLink. */\n  @Input() recoveryRouterLink: string | string[];\n\n  /** RouterLink : classe utilisée pour la directive routerLink active. */\n  @Input() recoveryRouterLinkActive: string | string[];\n\n  /** RouterLink : valeurs additionnelles de navigation pour le routerLink (queryParams, state, etc.) */\n  @Input() recoveryRouterLinkExtras: NavigationExtras;\n\n  /** Se souvenir de l'utilisateur. */\n  @Input() rememberMe = false;\n\n  /** Utilisation de FranceConnect+ (qui est plus sécurisé). */\n  @Input() secure: false;\n\n  /** Nom du service. */\n  @Input() service: string;\n\n  /** Demande de connexion via FranceConnect. */\n  @Output() franceConnectSelect: EventEmitter<void> = new EventEmitter<void>();\n\n  /** Evénement lorsque le mot de passe change. */\n  @Output() passwordChange: EventEmitter<string> = new EventEmitter<string>();\n\n  /** Emission de `recoveryRoute` s'il y a lieu. */\n  @Output() recoveryRouteSelect: EventEmitter<string> = new EventEmitter<string>();\n\n  /** Demande de connexion avec en paramètre : '{login : string ; password : string}'. */\n  @Output() signinSelect: EventEmitter<DsfrLogin> = new EventEmitter<DsfrLogin>();\n\n  /** Demande de création de compte */\n  @Output() signupSelect: EventEmitter<void> = new EventEmitter<void>();\n\n  /** @internal */ password: string; // Password de l'utilisateur.\n  /** @internal */ login: string; // Email de l'utilisateur.\n  /** @internal */ loginFormGroup: FormGroup;\n\n  /** @internal */\n  constructor(\n    public i18n: I18nService,\n    private fb: FormBuilder,\n  ) {\n    this.loginFormGroup = this.fb.group({\n      login: ['', Validators.required],\n      password: ['', Validators.required],\n      rememberMe: false,\n    });\n  }\n\n  /** @internal */\n  ngOnInit(): void {\n    if (isOnBrowser()) {\n      this.rememberMe ??= Boolean(LocalStorage.get(StorageEnum.REMEMBER_ME));\n      if (this.rememberMe) this.login ??= LocalStorage.get(StorageEnum.LOGIN) ?? '';\n    }\n\n    this.setControlValue('login', this.login);\n    this.setControlValue('password', this.password);\n    this.setControlValue('rememberMe', this.rememberMe);\n  }\n\n  /** @internal */\n  onFranceConnect() {\n    this.franceConnectSelect.emit();\n  }\n\n  /**\n   * Inscription, on laisse le développeur faire ce qu'il veut dans ce cas.\n   * @internal\n   */\n  onSignUp() {\n    this.signupSelect.emit();\n  }\n\n  /** Connexion */\n  /** @internal */\n  onSignIn() {\n    if (!this.isFormLoginValid()) return; // Ce qui ne peut pas arriver\n\n    const login = this.getControlValue('login');\n    const password = this.getControlValue('password');\n    const rememberMe = this.getControlValue('rememberMe');\n\n    // localStorage\n    this.saveToLocalStorage(rememberMe, login);\n\n    // Event\n    this.signinSelect.emit({ login: login, password: password, rememberMe: rememberMe });\n  }\n\n  /** @internal */\n  onPasswordChange(value: string) {\n    this.passwordChange.emit(value);\n  }\n\n  /** @internal */\n  onRecoveryRouteSelect(route: string) {\n    this.recoveryRouteSelect.emit(route);\n  }\n\n  /** @internal */\n  isFormLoginValid() {\n    return this.loginFormGroup.valid && this.emailComponent.isValid();\n  }\n\n  private setControlValue(name: string, value: any): void {\n    this.loginFormGroup.controls[name]?.setValue(value);\n  }\n\n  private getControlValue(name: string): any {\n    return this.loginFormGroup.controls[name]?.value;\n  }\n\n  private saveToLocalStorage(rememberMe: boolean, login: string): void {\n    if (this.rememberMe) {\n      LocalStorage.set(StorageEnum.REMEMBER_ME, String(rememberMe));\n      LocalStorage.set(StorageEnum.LOGIN, login);\n    } else {\n      LocalStorage.remove(StorageEnum.REMEMBER_ME);\n      LocalStorage.remove(StorageEnum.LOGIN);\n    }\n  }\n}\n","<div class=\"fr-container fr-container--fluid fr-mb-md-14v\">\n  <div class=\"fr-grid-row fr-grid-row--gutters fr-grid-row--center\">\n    <div class=\"fr-col-12 fr-col-md-8 fr-col-lg-6\">\n      <!-- BUG: classe fr-background-alt--grey inexistante côté DSFR 1.11 mais utilisé dans leur template -->\n      <div class=\"fr-container fr-background-alt--grey fr-px-md-0 fr-pt-10v fr-pt-md-14v fr-pb-6v fr-pb-md-10v\">\n        <div class=\"fr-grid-row fr-grid-row--gutters fr-grid-row--center\">\n          <div class=\"fr-col-12 fr-col-md-9 fr-col-lg-8\">\n            <!-- Heading h4 ------------------------------------------------------------------------------------------->\n            <h1 class=\"fr-h4\">{{ i18n.t('login.heading') + service }}</h1>\n            <!-- France Connect h5 ------------------------------------------------------------------------------------>\n            <div class=\"fr-mb-6v\">\n              <h2 class=\"fr-h5\">{{ i18n.t('login.franceConnect.heading') }}</h2>\n              <dsfr-franceconnect [secure]=\"secure\" (franceConnectSelect)=\"onFranceConnect()\"></dsfr-franceconnect>\n            </div>\n            <p class=\"fr-hr-or\">{{ i18n.t('login.or') }}</p>\n            <!-- Formulaire de login h5 ------------------------------------------------------------------------------->\n            <div>\n              <form [formGroup]=\"loginFormGroup\" (ngSubmit)=\"onSignIn()\">\n                <dsfr-fieldset>\n                  <h2 class=\"fr-h5\" legend>{{ i18n.t('login.account.heading') }}</h2>\n                  <dsfr-fieldset\n                    *fieldsetElement\n                    [legend]=\"i18n.t('login.account.srOnly.label')\"\n                    [legendSrOnly]=\"true\"\n                    [error]=\"error\">\n                    <ng-container *ngIf=\"error\">\n                      <dsfr-alert *fieldsetElement severity=\"error\" size=\"SM\" [message]=\"error\"></dsfr-alert>\n                    </ng-container>\n                    <!-- Email ---------------------------------------------------------------------------------------->\n                    <dsfr-form-email\n                      *fieldsetElement\n                      formControlName=\"login\"\n                      autofocus\n                      [required]=\"true\"\n                      [label]=\"i18n.t('login.account.email.label')\"></dsfr-form-email>\n                    <!-- Password ------------------------------------------------------------------------------------->\n                    <dsfr-form-password\n                      *fieldsetElement\n                      formControlName=\"password\"\n                      [recoveryLink]=\"recoveryLink\"\n                      [recoveryRoute]=\"recoveryRoute\"\n                      [recoveryRouterLink]=\"recoveryRouterLink\"\n                      [recoveryRouterLinkActive]=\"recoveryRouterLinkActive\"\n                      [recoveryRouterLinkExtras]=\"recoveryRouterLinkExtras\"\n                      (ngModelChange)=\"onPasswordChange($event)\"\n                      (recoveryRouteSelect)=\"onRecoveryRouteSelect($event)\"></dsfr-form-password>\n                  </dsfr-fieldset>\n                  <!-- Remember Me ------------------------------------------------------------------------------------>\n                  <dsfr-form-checkbox\n                    *fieldsetElement\n                    formControlName=\"rememberMe\"\n                    [small]=\"true\"\n                    [label]=\"i18n.t('login.account.rememberMe.label')\"></dsfr-form-checkbox>\n                  <!-- Bouton de login -------------------------------------------------------------------------------->\n                  <dsfr-buttons-group *fieldsetElement>\n                    <dsfr-button\n                      customClass=\"fr-mt-2v\"\n                      [label]=\"i18n.t('login.account.button.label')\"\n                      [disabled]=\"!isFormLoginValid()\"></dsfr-button>\n                  </dsfr-buttons-group>\n                </dsfr-fieldset>\n              </form>\n            </div>\n            <hr />\n            <!-- Création de compte h5 -------------------------------------------------------------------------------->\n            <h2 class=\"fr-h5\">{{ i18n.t('login.noAccount.heading') }}</h2>\n            <dsfr-buttons-group>\n              <dsfr-button\n                variant=\"secondary\"\n                [label]=\"i18n.t('login.noAccount.button.label')\"\n                (click)=\"onSignUp()\"></dsfr-button>\n            </dsfr-buttons-group>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Component, EventEmitter, Inject, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { DsfrHeadingLevel, I18nService } from '../../shared';\nimport { DSFR_CONFIG_TOKEN } from '../../shared/config/config-token';\nimport { DsfrConfig } from '../../shared/config/config.model';\n\n@Component({\n  selector: 'dsfr-response',\n  templateUrl: './response.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrResponseComponent implements OnInit {\n  /**\n   * Titre de la page (par défaut : 'Erreur inattendue').\n   */\n  @Input() heading = this.i18n.t('pageResponse.heading');\n\n  /** Le niveau de titre devant être utilisé. */\n  @Input() headingLevel: DsfrHeadingLevel;\n\n  /**\n   * Type d'erreur (404, 500,...).\n   */\n  @Input() error = 500;\n\n  /**\n   * Description de la page (par défaut: 'Essayez de rafraichir la page ou bien ressayez plus tard.').\n   */\n  @Input() description = this.i18n.t('pageResponse.description');\n\n  /**\n   * Détail de la page (par défaut : 'Désolé, le service rencontre un problème, nous travaillons pour le résoudre le plus rapidement possible.').\n   */\n  @Input() detail = this.i18n.t('pageResponse.detail');\n\n  /**\n   * Conditionne l'affichage du bouton contactez-nous.\n   */\n  @Input() showContact = true;\n  /**\n   * Conditionne l'affichage du bouton page d'accueil'.\n   */\n  @Input() showBackToHome = false;\n\n  /**\n   * Chemin vers le répertoire exposant les pictogrammes illustratifs DSFR.\n   */\n  @Input() artworkDirPath: string;\n\n  /**\n   * Indique que le bouton contact est cliqué.\n   */\n  @Output() contactSelect: EventEmitter<string> = new EventEmitter();\n  /**\n   * Indique que le bouton page d'accueil est cliqué.\n   */\n  @Output() backToHomeSelect: EventEmitter<string> = new EventEmitter();\n\n  /** @internal */ noFirstNameModel: boolean;\n\n  /** @internal */\n  constructor(\n    @Inject(DSFR_CONFIG_TOKEN) private config: DsfrConfig,\n    public i18n: I18nService,\n  ) {}\n\n  get pictoPath(): string {\n    return this.artworkDirPath;\n  }\n\n  /**\n   * Chemin des pictogrammes (du composant display) renseigné par le développeur.\n   *\n   * Note: ce chemin doit permettre de récupérer directement les fichiers SVG suivants : moon.svg, sun.svg, system.svg\n   *\n   * @deprecated Use `artworkDirPath` instead.\n   */\n  @Input() set pictoPath(path: string) {\n    this.artworkDirPath = path;\n  }\n\n  ngOnInit(): void {\n    if (this.artworkDirPath === undefined) {\n      this.artworkDirPath = this.config.artworkDirPath;\n    }\n  }\n\n  /** @internal */\n  onContact(): void {\n    this.contactSelect.emit();\n  }\n\n  /** @internal */\n  onHome(): void {\n    this.backToHomeSelect.emit();\n  }\n}\n\n/**\n * @deprecated use DsfrResponseComponent instead\n */\n@Component({\n  selector: 'dsfr-page-response',\n  templateUrl: './response.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrPageResponseComponent extends DsfrResponseComponent {}\n","<div class=\"fr-container\">\n  <div\n    class=\"fr-my-7w fr-mt-md-12w fr-mb-md-10w fr-grid-row fr-grid-row--gutters fr-grid-row--middle fr-grid-row--center\">\n    <div class=\"fr-py-0 fr-col-12 fr-col-md-6\">\n      <!-- Titre du contenu -->\n      <ng-container>\n        <ng-container *ngTemplateOutlet=\"dsfrPageResponseHeading\"></ng-container>\n      </ng-container>\n      <p class=\"fr-text--sm fr-mb-3w\">Erreur {{ error }}</p>\n      <p class=\"fr-text--lead fr-mb-3w\">\n        {{ description }}\n      </p>\n      <p class=\"fr-text--sm fr-mb-5w\">\n        {{ detail }}\n      </p>\n      <dsfr-buttons-group *ngIf=\"showBackToHome || showContact\" inline=\"always\">\n        <dsfr-button\n          type=\"button\"\n          *ngIf=\"showBackToHome\"\n          label=\"Page d'accueil\"\n          variant=\"primary\"\n          (click)=\"onHome()\"></dsfr-button>\n        <dsfr-button\n          type=\"button\"\n          *ngIf=\"showContact\"\n          [label]=\"i18n.t('response.contactUs')\"\n          variant=\"secondary\"\n          (click)=\"onContact()\"></dsfr-button>\n      </dsfr-buttons-group>\n    </div>\n    <div class=\"fr-col-12 fr-col-md-3 fr-col-offset-md-1 fr-px-6w fr-px-md-0 fr-py-0\">\n      <svg\n        xmlns=\"http://www.w3.org/2000/svg\"\n        class=\"fr-responsive-img fr-artwork\"\n        aria-hidden=\"true\"\n        width=\"160\"\n        height=\"200\"\n        viewBox=\"0 0 160 200\"\n        data-fr-js-ratio=\"true\">\n        <use class=\"fr-artwork-motif\" [attr.href]=\"pictoPath + '/background/ovoid.svg#artwork-motif'\"></use>\n        <use class=\"fr-artwork-motif\" [attr.href]=\"pictoPath + '/background/ovoid.svg#artwork-background'\"></use>\n        <g transform=\"translate(40, 60)\">\n          <use\n            class=\"fr-artwork-decorative\"\n            [attr.href]=\"pictoPath + '/pictograms/system/technical-error.svg#artwork-decorative'\"></use>\n          <use\n            class=\"fr-artwork-minor\"\n            [attr.href]=\"pictoPath + '/pictograms/system/technical-error.svg#artwork-minor'\"></use>\n          <use\n            class=\"fr-artwork-major\"\n            [attr.href]=\"pictoPath + '/pictograms/system/technical-error.svg#artwork-major'\"></use>\n        </g>\n      </svg>\n    </div>\n  </div>\n</div>\n\n<ng-template #dsfrPageResponseHeading>\n  <ng-container [ngSwitch]=\"headingLevel\">\n    <h1 *ngSwitchDefault>{{ heading }}</h1>\n    <h2 *ngSwitchCase=\"'H2'\">{{ heading }}</h2>\n    <h3 *ngSwitchCase=\"'H3'\">{{ heading }}</h3>\n    <h4 *ngSwitchCase=\"'H4'\">{{ heading }}</h4>\n    <h5 *ngSwitchCase=\"'H5'\">{{ heading }}</h5>\n    <h6 *ngSwitchCase=\"'H6'\">{{ heading }}</h6>\n  </ng-container>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DsfrButtonModule } from '../../components/button';\nimport { DsfrButtonsGroupModule } from '../../components/buttons-group';\nimport { DsfrPageResponseComponent, DsfrResponseComponent } from './response.component';\n\n@NgModule({\n  declarations: [DsfrResponseComponent],\n  exports: [DsfrResponseComponent],\n  imports: [CommonModule, DsfrButtonModule, DsfrButtonsGroupModule],\n})\nexport class DsfrResponseModule {}\n\n/**\n * @deprecated use DsfrResponseModule instead\n */\n@NgModule({\n  declarations: [DsfrPageResponseComponent],\n  exports: [DsfrPageResponseComponent],\n  imports: [CommonModule, DsfrButtonModule, DsfrButtonsGroupModule],\n})\nexport class DsfrPageResponseModule {}\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { DsfrInputText } from '../../shared/models/input.model';\n\nexport interface DsfrAddressDetails {\n  /** Data du champs \"numéro\" */\n  number?: DsfrInputText;\n  /** Data du champs \"voie\" */\n  street?: DsfrInputText;\n  /** Data du champs \"Bâtiment\" */\n  building?: DsfrInputText;\n  /** Data du champs \"Immeuble\" */\n  block?: DsfrInputText;\n  /** Data du champs \"Escalier\" */\n  stare?: DsfrInputText;\n  /** Data du champs \"numéro d'appartement\" */\n  apartment?: DsfrInputText;\n}\n\n@Component({\n  selector: 'dsfr-address',\n  templateUrl: './address.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrAddressComponent {\n  /**\n   * Légende du fieldset.\n   */\n  @Input() legend = 'Adresse postale';\n\n  /**\n   * Data du champs adresse.\n   */\n  @Input({ required: true }) address: DsfrInputText;\n\n  /**\n   * Data du champs complément d'adresse (optionnel).\n   */\n  @Input() addressSupplement: DsfrInputText;\n\n  /**\n   * Data des champs complément d'adresse (\"Numéro\", \"Voie\", \"Bâtiment\", \"Immeuble\", \"Escalier\", \"Numéro d'appartement\").\n   */\n  @Input() addressDetails: DsfrAddressDetails;\n  /**\n   * Data du champs code postal.\n   */\n  @Input({ required: true }) zipCode: DsfrInputText;\n  /**\n   * Data du champs ville.\n   */\n  @Input({ required: true }) city: DsfrInputText;\n  /**\n   * Data du champs lieux-dit/commune déléguée ou boîte postale.\n   */\n  @Input() locality: DsfrInputText;\n}\n","<dsfr-fieldset [legend]=\"legend\" [legendSrOnly]=\"true\">\n  <ng-container *ngIf=\"!addressDetails\">\n    <dsfr-form-input\n      *fieldsetElement\n      [name]=\"address.name || 'address-line1'\"\n      [label]=\"address.label || 'Adresse'\"\n      [hint]=\"address.hint || 'Indication : numéro et voie'\"\n      [autocomplete]=\"address.autoComplete ?? ''\"\n      [valid]=\"address.valid ?? ''\"\n      [error]=\"address.error ?? ''\"\n      [required]=\"address.required ?? false\"\n      [id]=\"address.id ?? ''\"\n      [disabled]=\"address.disabled ?? false\"\n      [(ngModel)]=\"address.value\"></dsfr-form-input>\n    <ng-container *ngIf=\"addressSupplement\">\n      <dsfr-form-input\n        *fieldsetElement\n        [name]=\"addressSupplement.name || 'address-line2'\"\n        [label]=\"addressSupplement.label || 'Complément d\\'adresse (optionnel)'\"\n        [hint]=\"addressSupplement.hint || 'Indication : bâtiment, immeuble, escalier et numéro d\\’appartement'\"\n        [autocomplete]=\"addressSupplement.autoComplete ?? ''\"\n        [valid]=\"addressSupplement.valid ?? ''\"\n        [error]=\"addressSupplement.error ?? ''\"\n        [required]=\"addressSupplement.required ?? false\"\n        [id]=\"addressSupplement.id ?? ''\"\n        [disabled]=\"addressSupplement.disabled ?? false\"\n        [(ngModel)]=\"addressSupplement.value\"></dsfr-form-input>\n    </ng-container>\n  </ng-container>\n  <ng-container *ngIf=\"addressDetails\">\n    <ng-container *ngIf=\"addressDetails.number\">\n      <dsfr-form-input\n        *fieldsetElement=\"'fr-fieldset__element--inline fr-fieldset__element--inline-grow fr-fieldset__element--number'\"\n        [name]=\"addressDetails.number.name || 'number'\"\n        [label]=\"addressDetails.number.label || 'Numéro'\"\n        [hint]=\"addressDetails.number.hint\"\n        [autocomplete]=\"addressDetails.number.autoComplete ?? ''\"\n        [valid]=\"addressDetails.number.valid ?? ''\"\n        [error]=\"addressDetails.number.error ?? ''\"\n        [required]=\"addressDetails.number.required ?? false\"\n        [id]=\"addressDetails.number.id ?? ''\"\n        [disabled]=\"addressDetails.number.disabled ?? false\"\n        [(ngModel)]=\"addressDetails.number.value\"></dsfr-form-input>\n    </ng-container>\n    <ng-container *ngIf=\"addressDetails.street\">\n      <dsfr-form-input\n        *fieldsetElement=\"'fr-fieldset__element--inline fr-fieldset__element--inline-grow'\"\n        [name]=\"addressDetails.street.name || 'street'\"\n        [label]=\"addressDetails.street.label || 'Voie'\"\n        [hint]=\"addressDetails.street.hint\"\n        [autocomplete]=\"addressDetails.street.autoComplete ?? ''\"\n        [valid]=\"addressDetails.street.valid ?? ''\"\n        [error]=\"addressDetails.street.error ?? ''\"\n        [required]=\"addressDetails.street.required ?? false\"\n        [id]=\"addressDetails.street.id ?? ''\"\n        [disabled]=\"addressDetails.street.disabled ?? false\"\n        [(ngModel)]=\"addressDetails.street.value\"></dsfr-form-input>\n    </ng-container>\n    <ng-container *ngIf=\"addressDetails.building\">\n      <dsfr-form-input\n        *fieldsetElement\n        [name]=\"addressDetails.building.name || 'building'\"\n        [label]=\"addressDetails.building.label || 'Bâtiment'\"\n        [hint]=\"addressDetails.building.hint\"\n        [autocomplete]=\"addressDetails.building.autoComplete ?? ''\"\n        [valid]=\"addressDetails.building.valid ?? ''\"\n        [error]=\"addressDetails.building.error ?? ''\"\n        [required]=\"addressDetails.building.required ?? false\"\n        [id]=\"addressDetails.building.id ?? ''\"\n        [disabled]=\"addressDetails.building.disabled ?? false\"\n        [(ngModel)]=\"addressDetails.building.value\"></dsfr-form-input>\n    </ng-container>\n    <ng-container *ngIf=\"addressDetails.block\">\n      <dsfr-form-input\n        *fieldsetElement\n        [name]=\"addressDetails.block.name || 'block'\"\n        [label]=\"addressDetails.block.label || 'Immeuble'\"\n        [hint]=\"addressDetails.block.hint\"\n        [autocomplete]=\"addressDetails.block.autoComplete ?? ''\"\n        [valid]=\"addressDetails.block.valid ?? ''\"\n        [error]=\"addressDetails.block.error ?? ''\"\n        [required]=\"addressDetails.block.required ?? false\"\n        [id]=\"addressDetails.block.id ?? ''\"\n        [disabled]=\"addressDetails.block.disabled ?? false\"\n        [(ngModel)]=\"addressDetails.block.value\"></dsfr-form-input>\n    </ng-container>\n    <ng-container *ngIf=\"addressDetails.stare\">\n      <dsfr-form-input\n        *fieldsetElement\n        [name]=\"addressDetails.stare.name || 'stare'\"\n        [label]=\"addressDetails.stare.label || 'Escalier'\"\n        [hint]=\"addressDetails.stare.hint\"\n        [autocomplete]=\"addressDetails.stare.autoComplete ?? ''\"\n        [valid]=\"addressDetails.stare.valid ?? ''\"\n        [error]=\"addressDetails.stare.error ?? ''\"\n        [required]=\"addressDetails.stare.required ?? false\"\n        [id]=\"addressDetails.stare.id ?? ''\"\n        [disabled]=\"addressDetails.stare.disabled ?? false\"\n        [(ngModel)]=\"addressDetails.stare.value\"></dsfr-form-input>\n    </ng-container>\n    <ng-container *ngIf=\"addressDetails.apartment\">\n      <dsfr-form-input\n        *fieldsetElement\n        [name]=\"addressDetails.apartment.name || 'apartment'\"\n        [label]=\"addressDetails.apartment.label || 'Numéro d\\'appartement'\"\n        [hint]=\"addressDetails.apartment.hint\"\n        [autocomplete]=\"addressDetails.apartment.autoComplete ?? ''\"\n        [valid]=\"addressDetails.apartment.valid ?? ''\"\n        [error]=\"addressDetails.apartment.error ?? ''\"\n        [required]=\"addressDetails.apartment.required ?? false\"\n        [id]=\"addressDetails.apartment.id ?? ''\"\n        [disabled]=\"addressDetails.apartment.disabled ?? false\"\n        [(ngModel)]=\"addressDetails.apartment.value\"></dsfr-form-input>\n    </ng-container>\n  </ng-container>\n  <ng-container *ngIf=\"locality\">\n    <dsfr-form-input\n      *fieldsetElement\n      [name]=\"locality.name || 'address-level3'\"\n      [label]=\"locality.label || 'Lieu-dit, commune déléguée ou boîte postale'\"\n      [hint]=\"locality.hint\"\n      [autocomplete]=\"locality.autoComplete ?? ''\"\n      [valid]=\"locality.valid ?? ''\"\n      [error]=\"locality.error ?? ''\"\n      [required]=\"locality.required ?? false\"\n      [id]=\"locality.id ?? ''\"\n      [disabled]=\"locality.disabled ?? false\"\n      [(ngModel)]=\"locality.value\"></dsfr-form-input>\n  </ng-container>\n  <ng-container *ngIf=\"!addressDetails\">\n    <dsfr-form-input\n      *fieldsetElement=\"'fr-fieldset__element--inline fr-fieldset__element--postal'\"\n      [name]=\"zipCode.name || 'postal-code'\"\n      [label]=\"zipCode.label || 'Code postal'\"\n      [hint]=\"zipCode.hint || 'Format attendu : 5 chiffres'\"\n      [autocomplete]=\"zipCode.autoComplete ?? ''\"\n      [valid]=\"zipCode.valid ?? ''\"\n      [error]=\"zipCode.error ?? ''\"\n      [required]=\"zipCode.required ?? false\"\n      [id]=\"zipCode.id ?? ''\"\n      [disabled]=\"zipCode.disabled ?? false\"\n      [(ngModel)]=\"zipCode.value\"></dsfr-form-input>\n    <!-- BUG Classe 'fr-fieldset__element--inline@md' inconnue en DSFR 1.10.0 -->\n    <dsfr-form-input\n      *fieldsetElement=\"'fr-fieldset__element--inline@md fr-fieldset__element--inline-grow'\"\n      [name]=\"city.name || 'address-level2'\"\n      [label]=\"city.label || 'Ville ou commune'\"\n      [hint]=\"city.hint || 'Exemple : Montpellier'\"\n      [autocomplete]=\"city.autoComplete ?? ''\"\n      [valid]=\"city.valid ?? ''\"\n      [error]=\"city.error ?? ''\"\n      [required]=\"city.required ?? false\"\n      [id]=\"city.id ?? ''\"\n      [disabled]=\"city.disabled ?? false\"\n      [(ngModel)]=\"city.value\"></dsfr-form-input>\n  </ng-container>\n</dsfr-fieldset>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DsfrFormInputModule } from '../../forms';\nimport { DsfrFormFieldsetModule } from '../../forms/fieldset';\nimport { DsfrAddressComponent } from './address.component';\n\n@NgModule({\n  declarations: [DsfrAddressComponent],\n  exports: [DsfrAddressComponent],\n  imports: [CommonModule, DsfrFormFieldsetModule, DsfrFormInputModule, FormsModule],\n})\nexport class DsfrAddressModule {}\n","/**\n * @author pfontanet\n * @since 0.7\n */\nexport class DateUtils {\n  private constructor() {}\n\n  /**\n   * Transforme un string représentant une date au format `'dd/mm/yyyy'` en objet `Date`.\n   * Le siècle peut-être sur 2 digits, dans ce cas, cela correspond à `'19yy'`.\n   * @returns Date ou undefined\n   */\n  static parseDateFr(dateStr: string): Date | undefined {\n    const regexp = /^(?<day>3[01]|0?[1-9]|[12][0-9])\\/(?<month>1[0-2]|0?[1-9])\\/(?<year>[0-9]{4})$/;\n    return DateUtils.parseDate(dateStr, regexp);\n  }\n\n  /**\n   * Transforme un string représentant une date au format ISO 8601 en objet `Date`.\n   * @returns Date ou undefined\n   */\n  static parseDateIso(dateStr: string): Date | undefined {\n    // https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch04s07.html\n    const regexp =\n      /^(?<year>-?(?:[1-9][0-9]*)?[0-9]{4})-(?<month>1[0-2]|0[1-9])-(?<day>3[01]|0[1-9]|[12][0-9])(T(?<hour>2[0-4]|[01][0-9]):(?<minute>[0-5][0-9]):(?<second>[0-5][0-9])(?<ms>\\.[0-9]+)?(?<timezone>Z|[+-](?:2[0-3]|[01][0-9]):[0-5][0-9])?)?$/;\n\n    return DateUtils.parseDate(dateStr, regexp);\n  }\n\n  /**\n   * Retourne une Date UTC, sans heure, minute seconde, à partir d'une date\n   * @param date\n   */\n  static date2Utc(date: Date): Date {\n    return new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));\n  }\n\n  /**\n   * Retourne une Date UTC, sans heure, minute seconde, selon plusieurs formats en entrée\n   * @param value\n   */\n  static dateUtcOf(value: Date | string | number | undefined | null): Date | undefined {\n    let date: Date | undefined = undefined;\n\n    if (typeof value === 'string') date = DateUtils.parseDateIso(value);\n    else if (typeof value === 'number') date = DateUtils.numberToDateUtc(value);\n    else if (value) date = DateUtils.date2Utc(value);\n\n    return date;\n  }\n\n  private static parseDate(dateStr: string, regexp: RegExp): Date | undefined {\n    if (!dateStr) return undefined;\n\n    const execArr = regexp.exec(dateStr);\n    const groups = execArr?.groups;\n    const valid = !!groups && !!groups['year'] && !!groups['month'] && !!groups['day'];\n\n    return !valid\n      ? undefined\n      : new Date(Date.UTC(Number(groups['year']), Number(groups['month']) - 1, Number(groups['day'])));\n  }\n\n  private static numberToDateUtc(n: number): Date {\n    const d = new Date(n);\n    return new Date(Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate()));\n  }\n}\n","import { LoggerService } from '../../shared/services/logger.service';\nimport { DateUtils } from '../../shared/utils/date-utils';\n\nexport const DATE_ERROR = {\n  INVALID_FORMAT: 'err_invalid_format',\n  INVALID_DAY: 'err_invalid_day',\n  INVALID_MONTH: 'err_invalid_month',\n  INVALID_DATE: 'err_invalid_date',\n  REQUIRED: 'err_required',\n};\n\n/**\n * Cette classe représente les valeurs saisies par un utilisateur sur 3 champs distincts, jour, mois année.\n * 🔥 Bien que ces propriétés soient en théorie des nombres, à l'exécution, on reçoit des strings.\n * - Chaque valeur est initialisée à `undefined` mais peut aussi avoir la valeur \"\" (chaine vide).\n * 👆 Par défaut la date est une date UTC.\n * L'objectif de la classe est de :\n * - Gérer des dates saisies par l'utilisateur, potentiellement avec des valeurs `undefined` ou \"\"\n * - Manipuler les mois de 1 à 12 (et non de 0 à 11)\n * - D'encapsuler l'api [Date](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Date) et plus tard l'API Temporal\n */\nexport class DateModel {\n  // Une date est le nombre de millisecondes écoulées depuis le premier janvier 1970 sur l'échelle UTC (idem epoch UNIX)\n  // On distingue les dates relatives au temps universal coordonné (UTC) du temps de la machine de l'utilisateur.\n  fullYear: number | undefined;\n  monthNum: number | undefined;\n  dayNum: number | undefined;\n  private isDateUtc = true;\n\n  constructor(fullYear?: number, monthNum?: number, dayNum?: number) {\n    this.fullYear = fullYear;\n    this.monthNum = monthNum;\n    this.dayNum = dayNum;\n\n    // Les valeurs de 0 à 99 correspondent aux années 1900 à 1999 [MDN](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Date/Date)\n    if (this.fullYear && 0 <= this.fullYear && this.fullYear < 100) this.fullYear += 1900;\n  }\n\n  private get month(): number {\n    return this.monthNum ? this.monthNum - 1 : -1;\n  }\n\n  /**\n   * @param value : 3 formes basiques pour utiliser la méthode\n   * - string : Une chaîne de caractères qui représente une date, selon le format reconnu par la méthode `Date.parse()`\n   * - number : Une valeur entière qui représente le nombre de millisecondes depuis le premier janvier 1970\n   */\n  static of(value: string | number | Date | undefined | null, loggerService: LoggerService): DateModel {\n    const date = DateUtils.dateUtcOf(value);\n    if (!date && typeof value === 'string') loggerService.warn(`La date '${value}' n'est pas valide`);\n    return !date ? new DateModel() : new DateModel(date.getUTCFullYear(), date.getUTCMonth() + 1, date.getUTCDate());\n  }\n\n  isValid(): boolean {\n    return this.toDate() !== undefined;\n  }\n\n  toDate(): Date | undefined {\n    let date = undefined;\n    let fullYear = Number(this.fullYear);\n    let monthNum = Number(this.monthNum);\n    let dayNum = Number(this.dayNum);\n    // on vérifie quand même qu'on a bien affaire à des nombres\n    if (\n      fullYear &&\n      monthNum &&\n      dayNum &&\n      !isNaN(fullYear) &&\n      !isNaN(monthNum) &&\n      !isNaN(dayNum) &&\n      1 <= monthNum &&\n      monthNum <= 12 &&\n      1 <= dayNum &&\n      dayNum <= 31\n    ) {\n      date = this.isDateUtc ? new Date(Date.UTC(fullYear, this.month, dayNum)) : new Date(fullYear, this.month, dayNum);\n\n      // Date inexistante\n      if (date.getFullYear() !== fullYear || date.getMonth() !== this.month || date.getDate() !== dayNum)\n        date = undefined;\n    }\n    return date;\n  }\n\n  /**\n   * Valide le model.\n   * @param required indique si la date est requise ou non\n   * @return une liste de codes d'erreur ou tableau vide\n   */\n  validate(required = false): string[] {\n    const errors = [];\n    const dayNum = this.dayNum;\n    const monthNum = this.monthNum;\n    const fullYear = this.fullYear;\n\n    // Format\n    if (!this.isNumber(dayNum) || !this.isNumber(monthNum) || !this.isNumber(fullYear)) {\n      errors.push(DATE_ERROR.INVALID_FORMAT);\n    }\n\n    // Erreur sur le jour, le mois\n    else {\n      if (dayNum && (dayNum < 1 || dayNum > 31)) errors.push(DATE_ERROR.INVALID_DAY);\n      if (monthNum && (monthNum < 1 || monthNum > 12)) errors.push(DATE_ERROR.INVALID_MONTH);\n    }\n\n    // All touched : erreur sur la date elle-même\n    if (errors.length === 0 && this.allTouched()) {\n      // Tous les champs sont remplis, on vérifie la date\n      if (this.allFilled()) {\n        const value = this.toDate();\n        if (!value) errors.push(DATE_ERROR.INVALID_DATE);\n      }\n      // Au moins 1 champ n'est pas rempli\n      else {\n        if (required) errors.push(DATE_ERROR.REQUIRED);\n      }\n    }\n\n    return errors;\n  }\n\n  private allTouched(): boolean {\n    return this.fullYear !== undefined && this.monthNum !== undefined && this.dayNum !== undefined;\n  }\n\n  private allFilled(): boolean {\n    return !!this.dayNum && !!this.monthNum && !!this.fullYear;\n  }\n\n  /** @return true si undefined ou number */\n  private isNumber(value: any) {\n    return value === undefined || !isNaN(value);\n  }\n}\n","import { Component, EventEmitter, forwardRef, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator } from '@angular/forms';\nimport { DefaultValueAccessorComponent, I18nService } from '../../shared';\nimport { LoggerService } from '../../shared/services/logger.service';\nimport { DateModel } from './date.model';\n\nconst PATH_ERR_I18N = {\n  err_invalid_format: 'date.error.invalid.format',\n  err_invalid_day: 'date.error.invalid.day',\n  err_invalid_month: 'date.error.invalid.month',\n  err_invalid_date: 'date.error.invalid.date',\n  err_required: 'date.error.required',\n};\n\n@Component({\n  selector: 'dsfr-date',\n  templateUrl: './date.component.html',\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => DsfrDateComponent),\n      multi: true,\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => DsfrDateComponent),\n      multi: true,\n    },\n  ],\n})\nexport class DsfrDateComponent extends DefaultValueAccessorComponent<Date> implements Validator {\n  /**\n   * Indique si les champs de saisie doivent être auto-complétés à partir de la date de naissance de l'utilisateur.\n   */\n  @Input() autocomplete = false;\n\n  /**\n   * Modèle de présentation de données internes.\n   */\n  @Input() error: string | string[];\n\n  /**\n   * Texte de description additionnel du fieldset.\n   */\n  @Input() hint: string;\n\n  /**\n   * Légende du fieldset.\n   */\n  @Input() legend: string;\n\n  /**\n   * Indique si la date est obligatoire.\n   */\n  @Input() required = false;\n\n  /**\n   * Texte de succès.\n   */\n  @Input() valid: string;\n\n  /**\n   * Signale le changement de date.\n   */\n  // Certainement inutile vs ngModelChange, à voir !\n  @Output() dateChange: EventEmitter<Date> = new EventEmitter();\n\n  /** @internal */ dateModel = new DateModel(); // View-Model\n  /** @internal */ validationErrors: ValidationErrors | null = null;\n\n  /** @internal */\n  constructor(\n    public i18n: I18nService,\n    private logger: LoggerService,\n  ) {\n    super();\n  }\n\n  get errors(): string | string[] {\n    const internalError =\n      this.validationErrors === null ? [] : this.validationErrors.map((err: {}) => Object.values(err)[0]);\n    return internalError.length > 0 ? internalError : this.error;\n  }\n\n  // Sur changement de la date, on réécrit jour mois année\n  /** @internal */\n  writeValue(value: Date | undefined) {\n    // Bien que la value soit de type date, le développeur peut, à notre insu, nous envoyer une chaine ou un nombre (comme Storybook), ex : Date.now()\n    this.dateModel = DateModel.of(value, this.logger);\n    super.writeValue(this.dateModel.toDate());\n    this.dateChange.emit(this.value);\n  }\n\n  // Sur changement du modèle, c.-à-d. jour, mois ou année, on récrit la date\n  /** @internal */\n  onFocusOut() {\n    this.validationErrors = this.internalValidate();\n    this.value = this.dateModel.toDate();\n    this.dateChange.emit(this.value);\n  }\n\n  /** @internal */\n  registerOnValidatorChange(fn: () => void): void {\n    this.fnOnValidatorChange = fn;\n  }\n\n  /** @internal */\n  validate(control: AbstractControl): ValidationErrors | null {\n    return this.internalValidate();\n  }\n\n  /** Permet de stocker la fonction pouvant être appelée pour forcer une revalidation. */\n  private fnOnValidatorChange = () => {};\n\n  /**\n   * Valide le composant et retourne ValidationErrors\n   */\n  private internalValidate(): ValidationErrors | null {\n    const errors = this.dateModel.validate(this.required);\n\n    // Pas d'erreur, on retourne null\n    if (errors.length === 0) return null;\n\n    // On transforme la liste des codes d'erreur en ValidationErrors\n    return errors.map((codeErr) => {\n      // @ts-ignore\n      const pathErr = PATH_ERR_I18N[codeErr];\n      const labelErr = this.i18n.t(pathErr);\n      const validationErr = {};\n      // @ts-ignore\n      validationErr[codeErr] = labelErr;\n      return validationErr;\n    });\n  }\n}\n","<dsfr-fieldset [legend]=\"legend\" [hint]=\"hint\" [error]=\"errors\" [valid]=\"valid\">\n  <!-- Day -->\n  <dsfr-form-input\n    *fieldsetElement=\"'fr-fieldset__element--inline fr-fieldset__element--number'\"\n    [label]=\"i18n.t('date.day.label')\"\n    [maxLength]=\"2\"\n    [hint]=\"i18n.t('date.day.hint')\"\n    [autocomplete]=\"autocomplete ? 'bday-day' : undefined\"\n    [required]=\"required\"\n    [disabled]=\"disabled\"\n    [(ngModel)]=\"dateModel.dayNum\"\n    (focusout)=\"onFocusOut()\"></dsfr-form-input>\n  <!-- Month -->\n  <dsfr-form-input\n    *fieldsetElement=\"'fr-fieldset__element--inline fr-fieldset__element--number'\"\n    [label]=\"i18n.t('date.month.label')\"\n    [maxLength]=\"2\"\n    [hint]=\"i18n.t('date.month.hint')\"\n    [autocomplete]=\"autocomplete ? 'bday-month' : undefined\"\n    [required]=\"required\"\n    [disabled]=\"disabled\"\n    [(ngModel)]=\"dateModel.monthNum\"\n    (focusout)=\"onFocusOut()\"></dsfr-form-input>\n  <!-- Year -->\n  <dsfr-form-input\n    *fieldsetElement=\"'fr-fieldset__element--inline fr-fieldset__element--inline-grow fr-fieldset__element--year'\"\n    [label]=\"i18n.t('date.year.label')\"\n    [maxLength]=\"4\"\n    [hint]=\"i18n.t('date.year.hint')\"\n    [autocomplete]=\"autocomplete ? 'bday-year' : undefined\"\n    [required]=\"required\"\n    [disabled]=\"disabled\"\n    [(ngModel)]=\"dateModel.fullYear\"\n    (focusout)=\"onFocusOut()\"></dsfr-form-input>\n</dsfr-fieldset>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DsfrFormInputModule } from '../../forms';\nimport { DsfrFormFieldsetModule } from '../../forms/fieldset';\nimport { DsfrDateComponent } from './date.component';\n\n@NgModule({\n  declarations: [DsfrDateComponent],\n  exports: [DsfrDateComponent],\n  imports: [CommonModule, FormsModule, DsfrFormFieldsetModule, DsfrFormInputModule],\n})\nexport class DsfrDateModule {}\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { DsfrInputText } from '../../shared/models/input.model';\nimport { DsfrSelect } from '../../shared/models/select.model';\n\n@Component({\n  selector: 'dsfr-name',\n  templateUrl: './name.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DsfrNameComponent {\n  /**\n   * Légende du fieldset.\n   */\n  @Input() legend: string;\n\n  /**\n   * Data du champ name.\n   */\n  @Input({ required: true }) lastName: DsfrInputText;\n\n  /**\n   * Permet d'indiquer un nom d'usage (optionnel).\n   */\n  @Input() usualName: DsfrInputText;\n\n  /**\n   * Data du champ firstname.\n   */\n  @Input({ required: true }) firstNames: DsfrInputText[];\n\n  /**\n   * Permet d'afficher l'option \"Je n'ai pas de prénom\".\n   */\n  @Input() noFirstName = false;\n\n  /**\n   * Permet d'afficher un bouton qui ajoute un nouveau champ de de saisi pour un prénom additionnel.\n   */\n  @Input() addFirstName = false;\n\n  /**\n   * Data du selecteur de pays (optionnel).\n   */\n  @Input() country: DsfrSelect;\n\n  /**\n   * Notifie que l'utilisateur a cliqué sur le bouton d'ajout de prénom.\n   */\n  @Output() addFirstNameSelect: EventEmitter<string> = new EventEmitter();\n\n  /**\n   * Notifie la suppression d'un prénom additionnel (le tableau 'firstnames' devrait être mis à jour en conséquence).\n   */\n  @Output() deleteFirstNameSelect: EventEmitter<number> = new EventEmitter();\n\n  /** @internal */\n  noFirstNameModel: boolean;\n\n  /** @internal */\n  onAddFirstNameInput(): void {\n    this.addFirstNameSelect.emit();\n  }\n\n  /** @internal */\n  onDeleteFirstNameInput(index: number): void {\n    this.deleteFirstNameSelect.emit(index);\n  }\n}\n","<dsfr-fieldset legend=\"Nom\" [legendSrOnly]=\"true\">\n  <ng-container *ngIf=\"country\">\n    <dsfr-form-select\n      *fieldsetElement\n      [label]=\"country.label || 'Pays'\"\n      [placeHolder]=\"country.placeHolder || 'Sélectionner une option'\"\n      [options]=\"country.options ?? []\"\n      [(ngModel)]=\"country.value\"></dsfr-form-select>\n  </ng-container>\n  <dsfr-form-input\n    *fieldsetElement\n    [name]=\"lastName.name || 'family-name'\"\n    [spellcheck]=\"false\"\n    [label]=\"lastName.label || 'Nom'\"\n    [autocomplete]=\"'family-name'\"\n    [(ngModel)]=\"lastName.value\"></dsfr-form-input>\n  <ng-container *ngIf=\"usualName\">\n    <dsfr-form-input\n      *fieldsetElement\n      [name]=\"usualName.name || 'married-name'\"\n      [spellcheck]=\"false\"\n      [autocomplete]=\"'family-name'\"\n      [label]=\"usualName.label || 'Nom d\\'usage'\"\n      [hint]=\"usualName.hint || 'Ancien nom...'\"\n      [(ngModel)]=\"usualName.value\"></dsfr-form-input>\n  </ng-container>\n  <ng-container *ngIf=\"!noFirstName\">\n    <ng-container *ngFor=\"let item of firstNames; let index = index\">\n      <dsfr-form-input\n        *fieldsetElement\n        [name]=\"item.name || 'given-name' + index\"\n        [spellcheck]=\"false\"\n        [autocomplete]=\"'given-name'\"\n        [label]=\"item.label || 'Prénom'\"\n        [(ngModel)]=\"item.value\"></dsfr-form-input>\n    </ng-container>\n  </ng-container>\n  <ng-container *ngIf=\"noFirstName\">\n    <dsfr-fieldset *fieldsetElement legend=\"Prénom(s)\" [legendSrOnly]=\"true\">\n      <ng-container *ngFor=\"let item of firstNames; let index = index\">\n        <ng-container *ngIf=\"index === 0\">\n          <dsfr-form-input\n            *fieldsetElement\n            [disabled]=\"item.disabled || noFirstNameModel === true\"\n            [name]=\"item.name || 'given-name' + index\"\n            [spellcheck]=\"false\"\n            [autocomplete]=\"'given-name'\"\n            [label]=\"item.label || 'Prénom'\"\n            [(ngModel)]=\"item.value\"></dsfr-form-input>\n        </ng-container>\n        <ng-container *ngIf=\"index > 0\">\n          <dsfr-form-input\n            *fieldsetElement\n            [disabled]=\"item.disabled || noFirstNameModel === true\"\n            [name]=\"item.name || 'given-name' + index\"\n            [spellcheck]=\"false\"\n            [autocomplete]=\"'given-name'\"\n            [label]=\"item.label || 'Prénom'\"\n            inputWrapMode=\"action\"\n            [buttonIcon]=\"index !== 0 ? 'fr-icon-delete-line' : undefined\"\n            buttonVariant=\"tertiary\"\n            (buttonSelect)=\"onDeleteFirstNameInput(index)\"\n            [(ngModel)]=\"item.value\"></dsfr-form-input>\n        </ng-container>\n      </ng-container>\n\n      <ng-container *ngIf=\"addFirstName\">\n        <dsfr-button\n          *fieldsetElement\n          label=\"Ajouter un prénom\"\n          iconPosition=\"left\"\n          variant=\"tertiary\"\n          size=\"SM\"\n          icon=\"fr-icon-add-line\"\n          [disabled]=\"noFirstNameModel === true\"\n          (click)=\"onAddFirstNameInput()\"></dsfr-button>\n      </ng-container>\n\n      <dsfr-form-checkbox\n        *fieldsetElement\n        [small]=\"true\"\n        name=\"firstname-disabled\"\n        label=\"Je n'ai pas de prénom\"\n        [(ngModel)]=\"noFirstNameModel\"></dsfr-form-checkbox>\n    </dsfr-fieldset>\n  </ng-container>\n</dsfr-fieldset>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DsfrFormCheckboxModule, DsfrFormInputModule, DsfrFormSelectModule } from '../../forms';\nimport { DsfrButtonModule } from '../../components/button';\nimport { DsfrFormFieldsetModule } from '../../forms/fieldset';\nimport { DsfrNameComponent } from './name.component';\n\n@NgModule({\n  declarations: [DsfrNameComponent],\n  exports: [DsfrNameComponent],\n  imports: [\n    CommonModule,\n    DsfrFormFieldsetModule,\n    DsfrFormInputModule,\n    DsfrFormCheckboxModule,\n    DsfrButtonModule,\n    DsfrFormSelectModule,\n    FormsModule,\n  ],\n})\nexport class DsfrNameModule {}\n","/* Public API Surface of ngx-dsfr */\nexport * from './lib/components';\nexport * from './lib/components/follow'; // Ici afin d'éviter une erreur de dépendances cycliques pendant la compilation\nexport * from './lib/forms';\nexport * from './lib/pages';\nexport * from './lib/patterns';\n\n// shared\nexport * from './lib/shared/config';\nexport * from './lib/shared/directives';\nexport * from './lib/shared/models';\n\n// Utilisé par les extensions (en plus des modèles)\nexport * from './lib/shared/components/default-control.component';\nexport * from './lib/shared/components/default-value-accessor.component';\nexport * from './lib/shared/components/input-group';\n\nexport * from './lib/shared/services/base-i18n.service';\nexport * from './lib/shared/services/lang.service';\nexport * from './lib/shared/services/logger.service';\n\nexport * from './lib/shared/utils/json-utils';\nexport * from './lib/shared/utils/uuid-utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["uuidv4","i1","i1.LoggerService","i2.LangService","i2.HeadingComponent","i3.WatchAttrDirective","i1.I18nService","i2.DsfrBadgeComponent","i3","i2","i3.ItemLinkComponent","i3.DsfrLinkComponent","i2.DsfrTagComponent","i1.LangService","i3.DsfrBadgesGroupComponent","i4.DsfrTagsGroupComponent","i5.SvgIconComponent","i6.DsfrLinkComponent","i7.LinkDownloadComponent","i4.DsfrLinkComponent","i5.ConsentServiceComponent","i3.ConsentManagerComponent","i3.DsfrTranscriptionComponent","i2.DsfrDownloadComponent","i4.DsfrDisplayComponent","i3.DsfrMegaMenuComponent","i4.DsfrSearchBarComponent","i5.ItemLinkComponent","i6.DsfrTranslateComponent","i7.DsfrDisplayComponent","i3.DsfrButtonComponent","i3.EduPageLinkComponent","i1.EduPageLinkComponent","i2.ItemLinkComponent","i5.DsfrLinkComponent","i6.LinkDownloadComponent","i7.PictogramComponent","i4.InputGroupComponent","i5.DsfrButtonComponent","i3.DsfrFormFieldsetComponent","i4.DsfrFormFieldsetElementDirective","i5.PictogramComponent","i4.DsfrButtonComponent","i3.DsfrFormEmailComponent","i4.DsfrFormEmailComponent","i5.DsfrFormPasswordComponent","i6.DsfrFormFieldsetComponent","i7.DsfrFormFieldsetElementDirective","i9.DsfrButtonComponent","i10.DsfrButtonsGroupComponent","i11.DsfrAlertComponent","i4.DsfrButtonsGroupComponent","i2.DsfrFormFieldsetComponent","i3.DsfrFormFieldsetElementDirective","i4.DsfrFormInputComponent","i5","i2.LoggerService","i4.DsfrFormFieldsetComponent","i5.DsfrFormFieldsetElementDirective","i6.DsfrFormInputComponent","i5.DsfrFormCheckboxComponent","i6.DsfrButtonComponent","i7.DsfrFormSelectComponent","i8"],"mappings":"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"}