@edugouvfr/ngx-dsfr
Version:
NgxDsfr est un portage Angular des éléments d'interface du Système de Design de l'État Français (DSFR).
1 lines • 1.02 MB
Source Map (JSON)
{"version":3,"file":"edugouvfr-ngx-dsfr.mjs","sources":["../../../projects/ngx-dsfr-components/src/lib/shared/utils/date-utils.ts","../../../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/button.model.ts","../../../projects/ngx-dsfr-components/src/lib/shared/models/heading-level.model.ts","../../../projects/ngx-dsfr-components/src/lib/shared/models/link-target.model.ts","../../../projects/ngx-dsfr-components/src/lib/shared/models/position.model.ts","../../../projects/ngx-dsfr-components/src/lib/shared/models/severity.model.ts","../../../projects/ngx-dsfr-components/src/lib/shared/models/size.model.ts","../../../projects/ngx-dsfr-components/src/lib/shared/models/text-size.model.ts","../../../projects/ngx-dsfr-components/src/lib/shared/directives/message-severity.directive.ts","../../../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/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/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/disable-router-link.directive.ts","../../../projects/ngx-dsfr-components/src/lib/shared/i18n/i18n-labels-bundle-en.ts","../../../projects/ngx-dsfr-components/src/lib/shared/i18n/i18n-labels-bundle-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/language.enum.ts","../../../projects/ngx-dsfr-components/src/lib/shared/i18n/i18n.service.ts","../../../projects/ngx-dsfr-components/src/lib/shared/i18n/i18n.pipe.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.model.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/link/link.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/link/link.component.html","../../../projects/ngx-dsfr-components/src/lib/components/link/link.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.model.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/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/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.model.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/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-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/content.model.ts","../../../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/default-radio.component.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/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.model.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/header/component/mega-menu.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/header/component/mega-menu.component.html","../../../projects/ngx-dsfr-components/src/lib/components/header/component/tool-link.component.ts","../../../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/shared/directives/wrap-li.directive.ts","../../../projects/ngx-dsfr-components/src/lib/components/header/component/tools-links.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/header/component/tools-links.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/links-group/links-group.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/links-group/links-group.component.html","../../../projects/ngx-dsfr-components/src/lib/components/links-group/links-group.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.model.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/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/components/table/component/table-footer.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/table/component/table-footer.component.html","../../../projects/ngx-dsfr-components/src/lib/components/table/table.utils.ts","../../../projects/ngx-dsfr-components/src/lib/components/table/service/datatable.service.ts","../../../projects/ngx-dsfr-components/src/lib/components/table/component/paginated-table.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/table/component/table-header.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/table/component/table-header.component.html","../../../projects/ngx-dsfr-components/src/lib/components/table/directive/cell.directive.ts","../../../projects/ngx-dsfr-components/src/lib/components/table/directive/column.directive.ts","../../../projects/ngx-dsfr-components/src/lib/components/table/component/cell-checkbox.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/table/directive/header-select.directive.ts","../../../projects/ngx-dsfr-components/src/lib/components/table/directive/row-select.directive.ts","../../../projects/ngx-dsfr-components/src/lib/components/table/component/sort-button.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/table/directive/sort-column.directive.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.model.ts","../../../projects/ngx-dsfr-components/src/lib/components/table/datatable.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/usermenu/component/tool-link-menu.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/usermenu/component/tool-link-menu.component.html","../../../projects/ngx-dsfr-components/src/lib/components/usermenu/usermenu.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/usermenu/usermenu.component.html","../../../projects/ngx-dsfr-components/src/lib/components/table-legacy/table-legacy.model.ts","../../../projects/ngx-dsfr-components/src/lib/components/table-legacy/table-legacy.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/table-legacy/table-legacy.component.html","../../../projects/ngx-dsfr-components/src/lib/components/table-legacy/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/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/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/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-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-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/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/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/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":["/**\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, withHours = false): 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, withHours);\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, withHours = false): Date {\n if (withHours) {\n return this.createDate(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours());\n } else {\n return this.createDate(date.getFullYear(), date.getMonth(), date.getDate());\n }\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 /**\n * Retourne une Date UTC, sans minute et seconde, selon plusieurs formats en entrée\n * @param value\n */\n static dateUtcOfWithHours(value: Date | string | number | undefined | null): Date | undefined {\n let date: Date | undefined = undefined;\n\n if (typeof value === 'string') date = DateUtils.parseDateIso(value, true);\n else if (typeof value === 'number') date = DateUtils.numberToDateUtc(value, true);\n else if (value) date = DateUtils.date2Utc(value, true);\n\n return date;\n }\n\n static isTwoDigitsYear(year: number): boolean {\n return year >= 0 && year < 100;\n }\n\n /**\n * Permet de créer une date avec un année contenant seulement un ou deux digits (i.e: année 27)\n *\n * @param year Année, possiblement négative.\n * @param month Mois\n * @param day Jour\n * @param hour Heure\n * @param needsOffsetting Défini si la date créée à besoin d'être basculée à minuit, heure locale\n * @returns La date correspondant aux paramètres d'entrée\n */\n static createDate(year: number, month: number, day: number, hour: number = 0, needsOffsetting = true): Date {\n const date = needsOffsetting ? new Date(Date.UTC(year, month, day, hour)) : new Date(year, month, day, hour);\n\n if (this.isTwoDigitsYear(year)) {\n date.setFullYear(year);\n }\n\n return date;\n }\n\n private static parseDate(dateStr: string, regexp: RegExp, withHours = false): 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 if (!valid) {\n return undefined;\n } else if (withHours) {\n const offset = groups['timezone'] === 'Z' ? 0 : Number(groups['timezone'].split(':')[0]);\n\n return this.createDate(\n Number(groups['year']),\n Number(groups['month']) - 1,\n Number(groups['day']),\n Number(groups['hour']) + offset,\n );\n } else {\n return this.createDate(Number(groups['year']), Number(groups['month']) - 1, Number(groups['day']));\n }\n }\n\n private static numberToDateUtc(n: number, withHours = false): Date {\n const d = new Date(n);\n\n if (withHours) {\n return this.createDate(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours());\n } else {\n return this.createDate(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate());\n }\n }\n}\n","import { ElementRef } from '@angular/core';\n\nexport class DomUtils {\n private constructor() {}\n\n static surroundElementsWithLi(container: ElementRef<any>, elements: readonly ElementRef<any>[]): void {\n DomUtils.removeEmptyLi(container);\n\n for (const elem of elements) {\n if (elem.nativeElement?.parentElement?.tagName !== 'LI') {\n DomUtils.insertNodeInLi(elem.nativeElement);\n }\n }\n }\n\n static surroundNativeElementsWithLi(container: ElementRef<any>, elements: readonly Element[]): void {\n DomUtils.removeEmptyLi(container);\n\n for (const elem of elements) {\n if (elem?.parentElement?.tagName !== 'LI' && elem?.tagName !== 'LI') {\n DomUtils.insertNodeInLi(elem);\n }\n }\n }\n\n private static removeEmptyLi({ nativeElement }: ElementRef<HTMLElement>): void {\n const nonProgrammaticLiElements = nativeElement.querySelectorAll('li[data-ngx-dsfr-li]');\n\n nonProgrammaticLiElements.forEach((li) => {\n if (li.childElementCount === 0) {\n li.remove();\n }\n });\n }\n\n private static insertNodeInLi(child: Element): void {\n const li = document.createElement('li');\n li.setAttribute('data-ngx-dsfr-li', 'true');\n child.replaceWith(li); // Ne remplace pas l'élément en lui même mais modifie la Node parent de l'élément: https://developer.mozilla.org/fr/docs/Web/API/Element/replaceWith\n li.appendChild(child);\n }\n}\n","/**\n * Les types MIME de fichiers supportés par le composant.\n *\n * @see https://developer.mozilla.org/fr/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\n */\nexport enum DsfrMimeTypeConst {\n // TEXT\n TEXT_CSS = 'text/css',\n TEXT_CSV = 'text/csv',\n TEXT_HTML = 'text/html',\n TEXT_CALENDAR = 'text/calendar',\n TEXT_PLAIN = 'text/plain',\n TEXT_XML = 'text/xml',\n\n // FONT\n FONT_OTF = 'font/otf',\n FONT_TTF = 'font/ttf',\n FONT_WOFF = 'font/woff',\n FONT_WOFF2 = 'font/woff2',\n\n // IMAGE\n IMAGE_BMP = 'image/bmp',\n IMAGE_GIF = 'image/gif',\n IMAGE_ICON = 'image/x-icon',\n IMAGE_JPEG = 'image/jpeg',\n IMAGE_PNG = 'image/png',\n IMAGE_SVG = 'image/svg+xml',\n IMAGE_TIFF = 'image/tiff',\n IMAGE_WEBP = 'image/webp',\n\n // AUDIO\n AUDIO_3GPP = 'audio/3gpp',\n AUDIO_3GPP2 = 'audio/3gpp2',\n AUDIO_ACC = 'audio/aac',\n AUDIO_OGG = 'audio/ogg',\n AUDIO_MIDI = 'audio/midi',\n AUDIO_WAV = 'audio/x-wav',\n AUDIO_WEBM = 'audio/webm',\n\n // VIDEO\n VIDEO_3GPP = 'video/3gpp',\n VIDEO_3GPP2 = 'video/3gpp2',\n VIDEO_MPEG = 'video/mpeg',\n VIDEO_OGG = 'video/ogg',\n VIDEO_WEBM = 'video/webm',\n\n // APPLICATION\n APPLICATION_ABIWORD = 'application/x-abiword',\n APPLICATION_CSH = 'application/x-csh',\n APPLICATION_EPUB = 'application/epub+zip',\n APPLICATION_FLASH = 'application/x-shockwave-flash',\n APPLICATION_FORM_URLENCODED = 'application/x-www-form-urlencoded',\n APPLICATION_JAVASCRIPT = 'application/javascript',\n APPLICATION_JSON = 'application/json',\n APPLICATION_OCTET_STREAM = 'application/octet-stream',\n APPLICATION_OGG = 'application/ogg',\n APPLICATION_PDF = 'application/pdf',\n APPLICATION_RTF = 'application/rtf',\n APPLICATION_TYPESCRIPT = 'application/typescript',\n APPLICATION_XML = 'application/xml',\n APPLICATION_XML_ATOM = 'application/atom+xml',\n APPLICATION_XML_SVG = 'application/svg+xml',\n APPLICATION_XML_XHTML = 'application/xhtml+xml',\n APPLICATION_XML_XUL = 'application/vnd.mozilla.xul+xml',\n\n // ARCHIVE\n ARCHIVE_7Z_COMPRESSED = 'application/x-7z-compressed',\n ARCHIVE_BZIP = 'application/x-bzip',\n ARCHIVE_BZIP2 = 'application/x-bzip2',\n ARCHIVE_JAVA = 'application/java-archive',\n ARCHIVE_GZIP = 'application/gzip',\n ARCHIVE_RAR_COMPRESSED = 'application/x-rar-compressed',\n ARCHIVE_TAR = 'application/x-tar',\n ARCHIVE_RAR = 'application/vnd.rar',\n ARCHIVE_ZIP = 'application/zip',\n ARCHIVE_ZIP_COMPRESSED = 'application/x-zip-compressed',\n\n // MICROSOFT\n MS_FONT_OBJECT = 'application/vnd.ms-fontobject',\n MS_EXCEL = 'application/vnd.ms-excel',\n MS_EXCEL_XML = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n MS_POWERPOINT = 'application/vnd.ms-powerpoint',\n MS_POWERPOINT_XML = 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n MS_VIDEO = 'video/x-msvideo',\n MS_VISIO = 'application/vnd.visio',\n MS_WORD = 'application/msword',\n MS_WORD_XML = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n\n // Autres\n MULTIPART_FORM_DATA = 'multipart/form-data',\n SCRIPT_SHELL = 'application/x-sh',\n OPEN_PRESENTATION = 'application/vnd.oasis.opendocument.presentation',\n OPEN_SPREADSHEET = 'application/vnd.oasis.opendocument.spreadsheet',\n OPEN_TEXT = 'application/vnd.oasis.opendocument.text',\n}\n\n/**\n * Type union correspondant aux valeurs de l'enum {@link DsfrMimeTypeConst}.\n */\n//TODO: (RPA) Ce type n'est pas utilisé pour typer `DsfrDownloadComponent#mimeType` ni `BasePanelComponent#downloadMimeType`\nexport type DsfrMimeType = `${DsfrMimeTypeConst}`;\n\n/**\n * Fonction utilitaire\n *\n * @ignore\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\n/**\n * @ignore\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\n/**\n * @ignore\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 */\nexport function 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\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 enum DsfrFileSizeUnitConst {\n BYTES = 'bytes',\n OCTETS = 'octets',\n}\n\nexport type DsfrFileSizeUnit = `${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 ou undefined si le path est erroné\n */\nexport function jsonPath2Value(obj: any, path: string): any {\n const keys = path.split('.');\n // value est soit un objet JSON, soit une valeur terminale\n let value = obj;\n const breakException = {};\n try {\n keys.forEach((key) => {\n if (!value) throw breakException;\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 } catch (e) {\n // console.error(`Le chemin '${path}' ne correspond pas à une valeur`);\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 }\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 /** @internal */\n onBlur() {\n this.fnOnTouched();\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 { CommonModule } from '@angular/common';\nimport { 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 standalone: true,\n imports: [CommonModule],\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 libellé du titre. */\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","@switch (getLevel()) {\n @case ('H2') {\n <h2 [attr.id]=\"headingId || null\" [class]=\"customClass\">\n <ng-container *ngTemplateOutlet=\"headingTemplate\"></ng-container>\n </h2>\n }\n @case ('H3') {\n <h3 [attr.id]=\"headingId || null\" [class]=\"customClass\">\n <ng-container *ngTemplateOutlet=\"headingTemplate\"></ng-container>\n </h3>\n }\n @case ('H4') {\n <h4 [attr.id]=\"headingId || null\" [class]=\"customClass\">\n <ng-container *ngTemplateOutlet=\"headingTemplate\"></ng-container>\n </h4>\n }\n @case ('H5') {\n <h5 [attr.id]=\"headingId || null\" [class