@dsivd/prestations-ng 15.5.13 → 16.0.0-beta2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +666 -1
- package/CONTRIBUTING.md +32 -1
- package/ESLINT_MIGRATION_GUIDE.md +35 -7
- package/README.md +6 -0
- package/UPGRADING_V12.md +0 -15
- package/UPGRADING_V13.md +0 -15
- package/UPGRADING_V14.md +8 -26
- package/UPGRADING_V15.md +113 -0
- package/UPGRADING_V16.md +56 -0
- package/abstract-page-component.d.ts +8 -8
- package/directives/currency-formatter.directive.d.ts +4 -1
- package/directives/iban-formatter.directive.d.ts +1 -1
- package/directives/ide-formatter.directive.d.ts +1 -1
- package/directives/ndc-formatter.directive.d.ts +1 -1
- package/dsivd-prestations-ng-v16.0.0-beta2.tgz +0 -0
- package/esm2020/abstract-page-component.mjs +223 -0
- package/esm2020/directives/currency-formatter.directive.mjs +143 -0
- package/{esm2015/directives/formatter.module.js → esm2020/directives/formatter.module.mjs} +8 -8
- package/{esm2015/directives/iban-formatter.directive.js → esm2020/directives/iban-formatter.directive.mjs} +4 -4
- package/{esm2015/directives/ide-formatter.directive.js → esm2020/directives/ide-formatter.directive.mjs} +4 -4
- package/{esm2015/directives/ndc-formatter.directive.js → esm2020/directives/ndc-formatter.directive.mjs} +4 -4
- package/{esm2015/dsivd-prestations-ng.js → esm2020/dsivd-prestations-ng.mjs} +0 -0
- package/{esm2015/foehn-address/address.type.js → esm2020/foehn-address/address.type.mjs} +1 -1
- package/esm2020/foehn-address/foehn-address.module.mjs +55 -0
- package/{esm2015/foehn-address/foehn-display-address.component.js → esm2020/foehn-address/foehn-display-address.component.mjs} +5 -9
- package/esm2020/foehn-address/foehn-input-address.component.mjs +406 -0
- package/esm2020/foehn-address/foehn-input-foreign-locality.component.mjs +66 -0
- package/esm2020/foehn-address/foehn-input-foreign-street.component.mjs +55 -0
- package/esm2020/foehn-agenda/calendar.type.mjs +3 -0
- package/esm2020/foehn-agenda/current-week.type.mjs +4 -0
- package/esm2020/foehn-agenda/day-slots.type.mjs +3 -0
- package/esm2020/foehn-agenda/foehn-agenda-navigation/foehn-agenda-navigation.component.mjs +74 -0
- package/esm2020/foehn-agenda/foehn-agenda-timeslot-panel/foehn-agenda-timeslot-panel.component.mjs +242 -0
- package/esm2020/foehn-agenda/foehn-agenda.component.mjs +95 -0
- package/esm2020/foehn-agenda/foehn-agenda.module.mjs +62 -0
- package/esm2020/foehn-agenda/pagination-week.type.mjs +3 -0
- package/esm2020/foehn-agenda/selected-slot.type.mjs +3 -0
- package/esm2020/foehn-autocomplete/foehn-autocomplete.component.mjs +608 -0
- package/esm2020/foehn-autocomplete/foehn-autocomplete.module.mjs +40 -0
- package/esm2020/foehn-boolean/foehn-boolean-checkbox.component.mjs +28 -0
- package/esm2020/foehn-boolean/foehn-boolean-radio.component.mjs +40 -0
- package/esm2020/foehn-boolean/foehn-boolean.module.mjs +33 -0
- package/esm2020/foehn-breadcrumb/breadcrumb-event.service.mjs +181 -0
- package/{esm2015/foehn-breadcrumb/breadcrumb.js → esm2020/foehn-breadcrumb/breadcrumb.mjs} +0 -0
- package/esm2020/foehn-breadcrumb/foehn-breadcrumb.component.mjs +80 -0
- package/esm2020/foehn-breadcrumb/foehn-breadcrumb.module.mjs +19 -0
- package/esm2020/foehn-checkables/foehn-checkable-group.component.mjs +298 -0
- package/esm2020/foehn-checkables/foehn-checkables.module.mjs +68 -0
- package/esm2020/foehn-checkables/foehn-checkbox.component.mjs +37 -0
- package/esm2020/foehn-checkables/foehn-radio.component.mjs +64 -0
- package/esm2020/foehn-checkables/foehn-select.component.mjs +53 -0
- package/{esm2015/foehn-checkables/form-select-option-group.js → esm2020/foehn-checkables/form-select-option-group.mjs} +0 -0
- package/{esm2015/foehn-checkables/form-select-option.js → esm2020/foehn-checkables/form-select-option.mjs} +0 -0
- package/{esm2015/foehn-confirm-modal/foehn-confirm-modal-content.js → esm2020/foehn-confirm-modal/foehn-confirm-modal-content.mjs} +1 -1
- package/esm2020/foehn-confirm-modal/foehn-confirm-modal.component.mjs +40 -0
- package/esm2020/foehn-confirm-modal/foehn-confirm-modal.module.mjs +19 -0
- package/{esm2015/foehn-confirm-modal/foehn-confirm-modal.service.js → esm2020/foehn-confirm-modal/foehn-confirm-modal.service.mjs} +4 -4
- package/esm2020/foehn-date-picker/date-picker-navigation.helper.mjs +167 -0
- package/esm2020/foehn-date-picker/date-picker.helper.mjs +132 -0
- package/{esm2015/foehn-date-picker/day-month.type.js → esm2020/foehn-date-picker/day-month.type.mjs} +0 -0
- package/{esm2015/foehn-date-picker/focused-day.type.js → esm2020/foehn-date-picker/focused-day.type.mjs} +0 -0
- package/esm2020/foehn-date-picker/foehn-date-picker.component.mjs +389 -0
- package/esm2020/foehn-date-picker/foehn-date-picker.module.mjs +40 -0
- package/{esm2015/foehn-date-picker/month-year.type.js → esm2020/foehn-date-picker/month-year.type.mjs} +0 -0
- package/esm2020/foehn-date-picker-button/foehn-date-picker-button.component.mjs +97 -0
- package/esm2020/foehn-date-picker-button/foehn-date-picker-button.module.mjs +36 -0
- package/esm2020/foehn-debug-summary/foehn-debug-summary.component.mjs +67 -0
- package/{esm2015/foehn-debug-summary/foehn-debug-summary.component.module.js → esm2020/foehn-debug-summary/foehn-debug-summary.component.module.mjs} +7 -7
- package/esm2020/foehn-decision-electronique/foehn-decision-electronique.component.mjs +37 -0
- package/esm2020/foehn-decision-electronique/foehn-decision-electronique.module.mjs +32 -0
- package/esm2020/foehn-footer/foehn-footer.component.mjs +130 -0
- package/{esm2015/foehn-footer/foehn-footer.module.js → esm2020/foehn-footer/foehn-footer.module.mjs} +6 -6
- package/{esm2015/foehn-footer/footer-link.type.js → esm2020/foehn-footer/footer-link.type.mjs} +0 -0
- package/esm2020/foehn-form/foehn-form.component.mjs +135 -0
- package/esm2020/foehn-form/foehn-form.module.mjs +32 -0
- package/esm2020/foehn-form/register-ng-model.service.mjs +23 -0
- package/esm2020/foehn-growl/foehn-growl.component.mjs +44 -0
- package/{esm2015/foehn-growl/foehn-growl.module.js → esm2020/foehn-growl/foehn-growl.module.mjs} +6 -6
- package/{esm2015/foehn-growl/growl-broker.service.js → esm2020/foehn-growl/growl-broker.service.mjs} +5 -5
- package/{esm2015/foehn-growl/growl-message.js → esm2020/foehn-growl/growl-message.mjs} +1 -1
- package/{esm2015/foehn-growl/growl-types.js → esm2020/foehn-growl/growl-types.mjs} +0 -0
- package/esm2020/foehn-header/foehn-header.component.mjs +68 -0
- package/esm2020/foehn-header/foehn-header.module.mjs +21 -0
- package/{esm2015/foehn-header/foehn-skip-link.component.js → esm2020/foehn-header/foehn-skip-link.component.mjs} +5 -8
- package/esm2020/foehn-help-modal/foehn-help-modal.component.mjs +44 -0
- package/esm2020/foehn-help-modal/foehn-help-modal.module.mjs +20 -0
- package/esm2020/foehn-help-modal/foehn-help-modal.type.mjs +2 -0
- package/{esm2015/foehn-icons/abstract-icon-component.js → esm2020/foehn-icons/abstract-icon-component.mjs} +5 -5
- package/esm2020/foehn-icons/foehn-icon-calendar.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-check-square-o.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-check.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-chevron-down.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-chevron-left.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-chevron-right.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-chevron-up.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-clock.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-comment-dots.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-edit.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-external-link-alt.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-file-pdf.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-info-circle.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-lock.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-map-marker.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-minus-circle.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-plus-circle.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-plus-square.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-search.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-times.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-trash-alt.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-unlock-alt.component.mjs +19 -0
- package/{esm2015/foehn-icons/foehn-icons.module.js → esm2020/foehn-icons/foehn-icons.module.mjs} +20 -20
- package/esm2020/foehn-input/foehn-input-email.component.mjs +59 -0
- package/esm2020/foehn-input/foehn-input-hidden.component.mjs +55 -0
- package/esm2020/foehn-input/foehn-input-number.component.mjs +276 -0
- package/esm2020/foehn-input/foehn-input-password.component.mjs +52 -0
- package/esm2020/foehn-input/foehn-input-phone.component.mjs +92 -0
- package/{esm2015/foehn-input/foehn-input-string.component.js → esm2020/foehn-input/foehn-input-string.component.mjs} +5 -5
- package/esm2020/foehn-input/foehn-input-text.component.mjs +76 -0
- package/esm2020/foehn-input/foehn-input-textarea.component.mjs +109 -0
- package/esm2020/foehn-input/foehn-input.component.mjs +390 -0
- package/esm2020/foehn-input/foehn-input.module.mjs +93 -0
- package/{esm2015/foehn-input/pattern.const.js → esm2020/foehn-input/pattern.const.mjs} +0 -0
- package/esm2020/foehn-input-date/foehn-input-date.component.mjs +118 -0
- package/esm2020/foehn-input-date-time/foehn-input-date-time.component.mjs +143 -0
- package/esm2020/foehn-input-time/foehn-input-time.component.mjs +74 -0
- package/esm2020/foehn-list/foehn-list.component.mjs +128 -0
- package/esm2020/foehn-list/foehn-list.module.mjs +19 -0
- package/{esm2015/foehn-list/page-change-event.js → esm2020/foehn-list/page-change-event.mjs} +0 -0
- package/esm2020/foehn-menu-prestation/abstract-list-item-detail-page.component.mjs +122 -0
- package/{esm2015/foehn-menu-prestation/abstract-menu-page.component.js → esm2020/foehn-menu-prestation/abstract-menu-page.component.mjs} +4 -4
- package/{esm2015/foehn-menu-prestation/abstract-page-from-menu.component.js → esm2020/foehn-menu-prestation/abstract-page-from-menu.component.mjs} +4 -4
- package/esm2020/foehn-menu-prestation/foehn-error-pill/foehn-error-pill.component.mjs +23 -0
- package/{esm2015/foehn-menu-prestation/foehn-list-summary/foehn-list-item-description.js → esm2020/foehn-menu-prestation/foehn-list-summary/foehn-list-item-description.mjs} +0 -0
- package/{esm2015/foehn-menu-prestation/foehn-list-summary/foehn-list-item.js → esm2020/foehn-menu-prestation/foehn-list-summary/foehn-list-item.mjs} +0 -0
- package/esm2020/foehn-menu-prestation/foehn-list-summary/foehn-list-summary.component.mjs +71 -0
- package/esm2020/foehn-menu-prestation/foehn-menu-items/foehn-menu-item/foehn-menu-item.component.mjs +35 -0
- package/esm2020/foehn-menu-prestation/foehn-menu-items/foehn-menu-item-transmit/foehn-menu-item-transmit.component.mjs +51 -0
- package/esm2020/foehn-menu-prestation/foehn-menu-prestation.module.mjs +59 -0
- package/{esm2015/foehn-misc/foehn-abbr.component.js → esm2020/foehn-misc/foehn-abbr.component.mjs} +5 -9
- package/{esm2015/foehn-misc/foehn-misc.module.js → esm2020/foehn-misc/foehn-misc.module.mjs} +5 -5
- package/esm2020/foehn-modal/foehn-modal.component.mjs +94 -0
- package/esm2020/foehn-modal/foehn-modal.module.mjs +21 -0
- package/esm2020/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.component.mjs +268 -0
- package/esm2020/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.module.mjs +40 -0
- package/esm2020/foehn-nav13/foehn-input-nav13.component.mjs +114 -0
- package/esm2020/foehn-nav13/foehn-input-nav13.module.mjs +32 -0
- package/esm2020/foehn-navigation/foehn-navigation.component.mjs +94 -0
- package/esm2020/foehn-navigation/foehn-navigation.module.mjs +32 -0
- package/esm2020/foehn-navigation/foehn-navigation.service.mjs +303 -0
- package/{esm2015/foehn-notfound/foehn-notfound.component.js → esm2020/foehn-notfound/foehn-notfound.component.mjs} +7 -10
- package/esm2020/foehn-notfound/foehn-notfound.module.mjs +20 -0
- package/{esm2015/foehn-page/foehn-page-counter.component.js → esm2020/foehn-page/foehn-page-counter.component.mjs} +5 -8
- package/esm2020/foehn-page/foehn-page-modal.component.mjs +53 -0
- package/{esm2015/foehn-page/foehn-page-modal.service.js → esm2020/foehn-page/foehn-page-modal.service.mjs} +4 -4
- package/esm2020/foehn-page/foehn-page.component.mjs +218 -0
- package/esm2020/foehn-page/foehn-page.module.mjs +78 -0
- package/{esm2015/foehn-page/foehn-page.service.js → esm2020/foehn-page/foehn-page.service.mjs} +4 -4
- package/esm2020/foehn-recap-section/foehn-recap-section.component.mjs +88 -0
- package/esm2020/foehn-recap-section/foehn-recap-section.module.mjs +20 -0
- package/{esm2015/foehn-recap-section/foehn-recap-section.type.js → esm2020/foehn-recap-section/foehn-recap-section.type.mjs} +0 -0
- package/{esm2015/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.component.js → esm2020/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.component.mjs} +5 -9
- package/{esm2015/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.module.js → esm2020/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.module.mjs} +6 -6
- package/esm2020/foehn-status-progress-bar/foehn-status-progress-bar.component.mjs +56 -0
- package/esm2020/foehn-status-progress-bar/foehn-status-progress-bar.module.mjs +20 -0
- package/esm2020/foehn-table/foehn-table-column-configuration.mjs +3 -0
- package/esm2020/foehn-table/foehn-table-page-change-event.mjs +3 -0
- package/esm2020/foehn-table/foehn-table.component.mjs +148 -0
- package/esm2020/foehn-table/foehn-table.module.mjs +32 -0
- package/esm2020/foehn-table/tableSort.mjs +3 -0
- package/esm2020/foehn-upload/abstract-foehn-uploader.component.mjs +192 -0
- package/{esm2015/foehn-upload/document-reference.js → esm2020/foehn-upload/document-reference.mjs} +0 -0
- package/esm2020/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.service.mjs +71 -0
- package/{esm2015/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.type.js → esm2020/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.type.mjs} +0 -0
- package/esm2020/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.component.mjs +174 -0
- package/esm2020/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.module.mjs +40 -0
- package/esm2020/foehn-upload/foehn-multi-upload/foehn-multi-upload.component.mjs +224 -0
- package/esm2020/foehn-upload/foehn-multi-upload/foehn-multi-upload.module.mjs +40 -0
- package/esm2020/foehn-upload/foehn-multi-upload/multi-upload.service.mjs +83 -0
- package/{esm2015/foehn-upload/foehn-multi-upload/multi-upload.type.js → esm2020/foehn-upload/foehn-multi-upload/multi-upload.type.mjs} +0 -0
- package/esm2020/foehn-upload/foehn-multi-upload/pending-upload.service.mjs +158 -0
- package/esm2020/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.mjs +202 -0
- package/esm2020/foehn-upload/foehn-picture-upload/foehn-picture-upload.module.mjs +44 -0
- package/esm2020/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.component.mjs +75 -0
- package/esm2020/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.module.mjs +21 -0
- package/esm2020/foehn-upload/foehn-upload-progress-bar/upload-progress.service.mjs +62 -0
- package/esm2020/foehn-upload/foehn-upload-progress-bar/upload-progress.type.mjs +3 -0
- package/{esm2015/foehn-upload/pending-upload.type.js → esm2020/foehn-upload/pending-upload.type.mjs} +1 -1
- package/esm2020/foehn-upload/uploader.helper.mjs +327 -0
- package/{esm2015/foehn-user-connected-as/foehn-user-connected-as.component.js → esm2020/foehn-user-connected-as/foehn-user-connected-as.component.mjs} +5 -8
- package/{esm2015/foehn-user-connected-as/foehn-user-connected-as.module.js → esm2020/foehn-user-connected-as/foehn-user-connected-as.module.mjs} +6 -6
- package/esm2020/foehn-validation-alert-summary/foehn-validation-alert-summary.component.mjs +96 -0
- package/esm2020/foehn-validation-alert-summary/foehn-validation-alert-summary.module.mjs +19 -0
- package/esm2020/foehn-validation-alerts/foehn-validation-alerts.component.mjs +29 -0
- package/{esm2015/foehn-validation-alerts/foehn-validation-alerts.module.js → esm2020/foehn-validation-alerts/foehn-validation-alerts.module.mjs} +6 -6
- package/esm2020/form-error.mjs +2 -0
- package/esm2020/form-post-response.mjs +10 -0
- package/{esm2015/gesdem/gesdem-error-handler.service.js → esm2020/gesdem/gesdem-error-handler.service.mjs} +4 -4
- package/esm2020/gesdem/gesdem-event.service.mjs +38 -0
- package/esm2020/gesdem/gesdem-handler.service.mjs +160 -0
- package/esm2020/gesdem/gesdem-loader.guard.mjs +41 -0
- package/{esm2015/gesdem/gesdem-statut-utils.js → esm2020/gesdem/gesdem-statut-utils.mjs} +0 -0
- package/esm2020/gesdem-action-recovery/gesdem-action-recovery-login/gesdem-action-recovery-login.component.mjs +101 -0
- package/esm2020/gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component.mjs +130 -0
- package/esm2020/gesdem-action-recovery/gesdem-action-recovery.module.mjs +50 -0
- package/esm2020/gesdem-action-recovery/gesdem-action-recovery.service.mjs +82 -0
- package/{esm2015/gesdem-action-recovery/reprise-info.js → esm2020/gesdem-action-recovery/reprise-info.mjs} +0 -0
- package/esm2020/gesdem-confirmation/gesdem-confirmation.component.mjs +201 -0
- package/esm2020/gesdem-confirmation/gesdem-confirmation.module.mjs +32 -0
- package/esm2020/gesdem-error/gesdem-error.component.mjs +87 -0
- package/esm2020/gesdem-error/gesdem-error.module.mjs +36 -0
- package/esm2020/global.const.mjs +5 -0
- package/esm2020/helpers/object.helper.mjs +89 -0
- package/{esm2015/i18n-form.js → esm2020/i18n-form.mjs} +0 -0
- package/esm2020/index.mjs +263 -0
- package/{esm2015/pipes/currency.pipe.js → esm2020/pipes/currency.pipe.mjs} +4 -4
- package/{esm2015/pipes/date.pipe.js → esm2020/pipes/date.pipe.mjs} +4 -4
- package/{esm2015/pipes/formatIde.pipe.js → esm2020/pipes/formatIde.pipe.mjs} +3 -3
- package/{esm2015/pipes/pipes.module.js → esm2020/pipes/pipes.module.mjs} +7 -7
- package/{esm2015/prestations-ng-core.module.js → esm2020/prestations-ng-core.module.mjs} +7 -7
- package/esm2020/refinf/model/address-type-light.mjs +3 -0
- package/esm2020/refinf/model/canton.mjs +3 -0
- package/esm2020/refinf/model/district.mjs +3 -0
- package/esm2020/refinf/model/municipality.mjs +3 -0
- package/esm2020/refinf/model/place-of-origin.mjs +3 -0
- package/esm2020/refinf/model/postal-locality.mjs +3 -0
- package/esm2020/sdk-appinfo/application-info.mjs +14 -0
- package/esm2020/sdk-appinfo/application-info.service.mjs +104 -0
- package/{esm2015/sdk-currency/currency.helper.js → esm2020/sdk-currency/currency.helper.mjs} +3 -3
- package/esm2020/sdk-date/date.helper.mjs +100 -0
- package/esm2020/sdk-dictionary/default-dictionary.mjs +166 -0
- package/{esm2015/sdk-dictionary/sdk-dictionary.module.js → esm2020/sdk-dictionary/sdk-dictionary.module.mjs} +5 -5
- package/{esm2015/sdk-dictionary/sdk-dictionary.pipe.js → esm2020/sdk-dictionary/sdk-dictionary.pipe.mjs} +6 -6
- package/esm2020/sdk-dictionary/sdk-dictionary.service.mjs +111 -0
- package/{esm2015/sdk-epayment/model/EPaymentParameters.js → esm2020/sdk-epayment/model/EPaymentParameters.mjs} +0 -0
- package/esm2020/sdk-epayment/sdk-epayment.component.mjs +81 -0
- package/esm2020/sdk-epayment/sdk-epayment.module.mjs +21 -0
- package/esm2020/sdk-epayment/sdk-epayment.service.mjs +52 -0
- package/{esm2015/sdk-recaptcha/grecaptcha/grecaptcha.component.js → esm2020/sdk-recaptcha/grecaptcha/grecaptcha.component.mjs} +6 -10
- package/esm2020/sdk-recaptcha/recaptcha.service.mjs +162 -0
- package/esm2020/sdk-recaptcha/sdk-recaptcha.component.mjs +69 -0
- package/esm2020/sdk-recaptcha/sdk-recaptcha.module.mjs +19 -0
- package/esm2020/sdk-redirect/iam-expired-interceptor.service.mjs +58 -0
- package/esm2020/sdk-redirect/redirect.component.mjs +35 -0
- package/esm2020/sdk-redirect/sdk-redirect.module.mjs +19 -0
- package/{esm2015/sdk-session-info/session-info-data.js → esm2020/sdk-session-info/session-info-data.mjs} +1 -1
- package/{esm2015/sdk-session-info/session-info-with-application.service.js → esm2020/sdk-session-info/session-info-with-application.service.mjs} +5 -5
- package/esm2020/sdk-session-info/session-info.service.mjs +50 -0
- package/esm2020/sdk-statistics/sdk-statistics.service.mjs +70 -0
- package/esm2020/sdk-support-alert/support-alert-container.component.mjs +49 -0
- package/esm2020/sdk-support-alert/support-alert.component.mjs +34 -0
- package/{esm2015/sdk-support-alert/support-alert.model.js → esm2020/sdk-support-alert/support-alert.model.mjs} +0 -0
- package/esm2020/sdk-support-alert/support-alert.module.mjs +21 -0
- package/esm2020/sdk-support-alert/support-alert.service.mjs +117 -0
- package/{esm2015/service-locator.js → esm2020/service-locator.mjs} +0 -0
- package/esm2020/supported-browser.mjs +2 -0
- package/esm2020/validation/validation-handler.service.mjs +44 -0
- package/fesm2015/dsivd-prestations-ng.mjs +13399 -0
- package/fesm2015/dsivd-prestations-ng.mjs.map +1 -0
- package/fesm2020/dsivd-prestations-ng.mjs +13374 -0
- package/fesm2020/dsivd-prestations-ng.mjs.map +1 -0
- package/foehn-address/address.type.d.ts +3 -3
- package/foehn-address/foehn-display-address.component.d.ts +1 -1
- package/foehn-address/foehn-input-address.component.d.ts +18 -8
- package/foehn-address/foehn-input-foreign-locality.component.d.ts +1 -1
- package/foehn-address/foehn-input-foreign-street.component.d.ts +1 -1
- package/foehn-agenda/calendar.type.d.ts +9 -0
- package/foehn-agenda/current-week.type.d.ts +5 -0
- package/foehn-agenda/day-slots.type.d.ts +5 -0
- package/foehn-agenda/foehn-agenda-navigation/foehn-agenda-navigation.component.d.ts +21 -0
- package/foehn-agenda/foehn-agenda-timeslot-panel/foehn-agenda-timeslot-panel.component.d.ts +51 -0
- package/foehn-agenda/foehn-agenda.component.d.ts +29 -0
- package/foehn-agenda/foehn-agenda.module.d.ts +17 -0
- package/foehn-agenda/pagination-week.type.d.ts +5 -0
- package/foehn-agenda/selected-slot.type.d.ts +7 -0
- package/foehn-autocomplete/foehn-autocomplete.component.d.ts +22 -6
- package/foehn-boolean/foehn-boolean-checkbox.component.d.ts +1 -1
- package/foehn-boolean/foehn-boolean-radio.component.d.ts +2 -1
- package/foehn-breadcrumb/breadcrumb-event.service.d.ts +2 -2
- package/foehn-breadcrumb/foehn-breadcrumb.component.d.ts +6 -5
- package/foehn-checkables/foehn-checkable-group.component.d.ts +8 -8
- package/foehn-checkables/foehn-checkables.module.d.ts +3 -1
- package/foehn-checkables/foehn-checkbox.component.d.ts +1 -1
- package/foehn-checkables/foehn-radio.component.d.ts +1 -1
- package/foehn-checkables/foehn-select.component.d.ts +2 -10
- package/foehn-confirm-modal/foehn-confirm-modal-content.d.ts +1 -0
- package/foehn-confirm-modal/foehn-confirm-modal.component.d.ts +2 -2
- package/foehn-date-picker/date-picker-navigation.helper.d.ts +7 -1
- package/foehn-date-picker/date-picker.helper.d.ts +3 -2
- package/foehn-date-picker/foehn-date-picker.component.d.ts +21 -10
- package/foehn-date-picker-button/foehn-date-picker-button.component.d.ts +13 -5
- package/foehn-debug-summary/foehn-debug-summary.component.d.ts +7 -5
- package/foehn-decision-electronique/foehn-decision-electronique.component.d.ts +2 -2
- package/foehn-decision-electronique/foehn-decision-electronique.module.d.ts +2 -1
- package/foehn-footer/foehn-footer.component.d.ts +4 -4
- package/foehn-form/foehn-form.component.d.ts +7 -4
- package/foehn-form/register-ng-model.service.d.ts +9 -0
- package/foehn-growl/foehn-growl.component.d.ts +3 -3
- package/foehn-growl/growl-broker.service.d.ts +1 -1
- package/foehn-header/foehn-header.component.d.ts +7 -7
- package/foehn-header/foehn-skip-link.component.d.ts +2 -2
- package/foehn-help-modal/foehn-help-modal.component.d.ts +1 -1
- package/foehn-help-modal/foehn-help-modal.type.d.ts +4 -0
- package/foehn-icons/abstract-icon-component.d.ts +1 -1
- package/foehn-icons/foehn-icon-calendar.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-check-square-o.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-check.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-chevron-down.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-chevron-left.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-chevron-right.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-chevron-up.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-clock.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-comment-dots.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-edit.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-external-link-alt.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-file-pdf.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-info-circle.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-lock.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-map-marker.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-minus-circle.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-plus-circle.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-plus-square.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-search.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-times.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-trash-alt.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-unlock-alt.component.d.ts +1 -1
- package/foehn-input/foehn-input-email.component.d.ts +4 -2
- package/foehn-input/foehn-input-hidden.component.d.ts +1 -1
- package/foehn-input/foehn-input-number.component.d.ts +16 -6
- package/foehn-input/foehn-input-password.component.d.ts +1 -1
- package/foehn-input/foehn-input-phone.component.d.ts +1 -1
- package/foehn-input/foehn-input-string.component.d.ts +1 -1
- package/foehn-input/foehn-input-text.component.d.ts +1 -1
- package/foehn-input/foehn-input-textarea.component.d.ts +5 -2
- package/foehn-input/foehn-input.component.d.ts +25 -9
- package/foehn-input/foehn-input.module.d.ts +9 -6
- package/foehn-input-date/foehn-input-date.component.d.ts +10 -3
- package/foehn-input-date-time/foehn-input-date-time.component.d.ts +29 -0
- package/foehn-input-time/foehn-input-time.component.d.ts +1 -1
- package/foehn-list/foehn-list.component.d.ts +2 -3
- package/foehn-menu-prestation/abstract-list-item-detail-page.component.d.ts +5 -5
- package/foehn-menu-prestation/abstract-menu-page.component.d.ts +1 -1
- package/foehn-menu-prestation/abstract-page-from-menu.component.d.ts +1 -1
- package/foehn-menu-prestation/foehn-error-pill/foehn-error-pill.component.d.ts +1 -1
- package/foehn-menu-prestation/foehn-list-summary/foehn-list-summary.component.d.ts +3 -3
- package/foehn-menu-prestation/foehn-menu-items/foehn-menu-item/foehn-menu-item.component.d.ts +1 -1
- package/foehn-menu-prestation/foehn-menu-items/foehn-menu-item-transmit/foehn-menu-item-transmit.component.d.ts +2 -2
- package/foehn-misc/foehn-abbr.component.d.ts +1 -1
- package/foehn-modal/foehn-modal.component.d.ts +2 -3
- package/foehn-modal/foehn-modal.module.d.ts +3 -1
- package/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.component.d.ts +51 -0
- package/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.module.d.ts +13 -0
- package/foehn-nav13/foehn-input-nav13.component.d.ts +2 -1
- package/foehn-navigation/foehn-navigation.component.d.ts +2 -2
- package/foehn-navigation/foehn-navigation.service.d.ts +4 -3
- package/foehn-notfound/foehn-notfound.component.d.ts +1 -1
- package/foehn-page/foehn-page-counter.component.d.ts +1 -1
- package/foehn-page/foehn-page-modal.component.d.ts +1 -1
- package/foehn-page/foehn-page-modal.service.d.ts +1 -1
- package/foehn-page/foehn-page.component.d.ts +15 -12
- package/foehn-page/foehn-page.module.d.ts +2 -1
- package/foehn-page/foehn-page.service.d.ts +2 -2
- package/foehn-recap-section/foehn-recap-section.component.d.ts +3 -1
- package/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.component.d.ts +1 -1
- package/foehn-status-progress-bar/foehn-status-progress-bar.component.d.ts +23 -0
- package/foehn-status-progress-bar/foehn-status-progress-bar.module.d.ts +10 -0
- package/foehn-table/foehn-table-column-configuration.d.ts +18 -0
- package/foehn-table/foehn-table-page-change-event.d.ts +5 -0
- package/foehn-table/foehn-table.component.d.ts +33 -0
- package/foehn-table/foehn-table.module.d.ts +11 -0
- package/foehn-table/tableSort.d.ts +4 -0
- package/foehn-upload/abstract-foehn-uploader.component.d.ts +7 -7
- package/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.service.d.ts +6 -4
- package/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.component.d.ts +6 -5
- package/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.module.d.ts +2 -1
- package/foehn-upload/foehn-multi-upload/foehn-multi-upload.component.d.ts +9 -8
- package/foehn-upload/foehn-multi-upload/foehn-multi-upload.module.d.ts +2 -1
- package/foehn-upload/foehn-multi-upload/multi-upload.service.d.ts +6 -4
- package/foehn-upload/foehn-multi-upload/pending-upload.service.d.ts +3 -3
- package/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.d.ts +7 -4
- package/foehn-upload/foehn-picture-upload/foehn-picture-upload.module.d.ts +2 -1
- package/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.component.d.ts +19 -0
- package/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.module.d.ts +11 -0
- package/foehn-upload/foehn-upload-progress-bar/upload-progress.service.d.ts +19 -0
- package/foehn-upload/foehn-upload-progress-bar/upload-progress.type.d.ts +4 -0
- package/foehn-upload/pending-upload.type.d.ts +1 -0
- package/foehn-upload/uploader.helper.d.ts +13 -13
- package/foehn-user-connected-as/foehn-user-connected-as.component.d.ts +2 -2
- package/foehn-validation-alert-summary/foehn-validation-alert-summary.component.d.ts +2 -2
- package/foehn-validation-alerts/foehn-validation-alerts.component.d.ts +4 -4
- package/{error-template.d.ts → form-error.d.ts} +1 -1
- package/form-post-response.d.ts +17 -0
- package/gesdem/gesdem-error-handler.service.d.ts +2 -2
- package/gesdem/gesdem-event.service.d.ts +7 -7
- package/gesdem/gesdem-handler.service.d.ts +8 -6
- package/gesdem/gesdem-loader.guard.d.ts +1 -1
- package/gesdem-action-recovery/gesdem-action-recovery-login/gesdem-action-recovery-login.component.d.ts +5 -5
- package/gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component.d.ts +7 -7
- package/gesdem-action-recovery/gesdem-action-recovery.service.d.ts +3 -3
- package/gesdem-confirmation/gesdem-confirmation.component.d.ts +10 -9
- package/gesdem-error/gesdem-error.component.d.ts +10 -3
- package/gesdem-error/gesdem-error.module.d.ts +2 -1
- package/global.const.d.ts +1 -0
- package/index.d.ts +102 -70
- package/package.json +36 -22
- package/pipes/currency.pipe.d.ts +1 -1
- package/pipes/date.pipe.d.ts +1 -1
- package/pipes/formatIde.pipe.d.ts +1 -1
- package/refinf/model/address-type-light.d.ts +5 -0
- package/refinf/model/canton.d.ts +4 -0
- package/refinf/model/district.d.ts +7 -0
- package/refinf/model/municipality.d.ts +8 -0
- package/refinf/model/place-of-origin.d.ts +9 -0
- package/refinf/model/postal-locality.d.ts +11 -0
- package/schematics/ng-add/index.js +10 -10
- package/schematics/ng-update/migrations/update-13_1_0/index.js +2 -2
- package/schematics/ng-update/migrations/update-13_2_0/index.js +3 -3
- package/schematics/ng-update/migrations/update-13_5_1/index.js +3 -3
- package/schematics/ng-update/migrations/update-14_5_0/index.js +2 -2
- package/schematics/update-karma-config/index.js +2 -2
- package/schematics/utility/migrate-to-karma-coverage.js +3 -3
- package/sdk-appinfo/application-info.d.ts +1 -0
- package/sdk-appinfo/application-info.service.d.ts +4 -4
- package/sdk-dictionary/sdk-dictionary.pipe.d.ts +1 -1
- package/sdk-dictionary/sdk-dictionary.service.d.ts +9 -0
- package/sdk-epayment/sdk-epayment.component.d.ts +6 -16
- package/sdk-epayment/sdk-epayment.service.d.ts +3 -6
- package/sdk-recaptcha/grecaptcha/grecaptcha.component.d.ts +2 -2
- package/sdk-recaptcha/recaptcha.service.d.ts +5 -5
- package/sdk-recaptcha/sdk-recaptcha.component.d.ts +4 -4
- package/sdk-redirect/iam-expired-interceptor.service.d.ts +3 -3
- package/sdk-redirect/redirect.component.d.ts +3 -9
- package/sdk-session-info/session-info-data.d.ts +0 -1
- package/sdk-session-info/session-info.service.d.ts +4 -4
- package/sdk-statistics/sdk-statistics.service.d.ts +22 -0
- package/sdk-support-alert/support-alert-container.component.d.ts +3 -3
- package/sdk-support-alert/support-alert.component.d.ts +1 -1
- package/sdk-support-alert/support-alert.service.d.ts +5 -4
- package/validation/validation-handler.service.d.ts +4 -4
- package/backend-response.d.ts +0 -18
- package/bundles/dsivd-prestations-ng.umd.js +0 -13188
- package/bundles/dsivd-prestations-ng.umd.js.map +0 -1
- package/dsivd-prestations-ng-v15.5.13.tgz +0 -0
- package/dsivd-prestations-ng.d.ts +0 -5
- package/esm2015/abstract-page-component.js +0 -224
- package/esm2015/backend-response.js +0 -10
- package/esm2015/directives/currency-formatter.directive.js +0 -116
- package/esm2015/error-template.js +0 -2
- package/esm2015/foehn-address/foehn-address.module.js +0 -57
- package/esm2015/foehn-address/foehn-input-address.component.js +0 -365
- package/esm2015/foehn-address/foehn-input-foreign-locality.component.js +0 -71
- package/esm2015/foehn-address/foehn-input-foreign-street.component.js +0 -60
- package/esm2015/foehn-autocomplete/foehn-autocomplete.component.js +0 -556
- package/esm2015/foehn-autocomplete/foehn-autocomplete.module.js +0 -42
- package/esm2015/foehn-boolean/foehn-boolean-checkbox.component.js +0 -32
- package/esm2015/foehn-boolean/foehn-boolean-radio.component.js +0 -41
- package/esm2015/foehn-boolean/foehn-boolean.module.js +0 -35
- package/esm2015/foehn-breadcrumb/breadcrumb-event.service.js +0 -182
- package/esm2015/foehn-breadcrumb/foehn-breadcrumb.component.js +0 -85
- package/esm2015/foehn-breadcrumb/foehn-breadcrumb.module.js +0 -19
- package/esm2015/foehn-checkables/foehn-checkable-group.component.js +0 -294
- package/esm2015/foehn-checkables/foehn-checkables.module.js +0 -62
- package/esm2015/foehn-checkables/foehn-checkbox.component.js +0 -40
- package/esm2015/foehn-checkables/foehn-radio.component.js +0 -67
- package/esm2015/foehn-checkables/foehn-select.component.js +0 -66
- package/esm2015/foehn-confirm-modal/foehn-confirm-modal.component.js +0 -42
- package/esm2015/foehn-confirm-modal/foehn-confirm-modal.module.js +0 -19
- package/esm2015/foehn-date-picker/date-picker-navigation.helper.js +0 -117
- package/esm2015/foehn-date-picker/date-picker.helper.js +0 -126
- package/esm2015/foehn-date-picker/foehn-date-picker.component.js +0 -300
- package/esm2015/foehn-date-picker/foehn-date-picker.module.js +0 -42
- package/esm2015/foehn-date-picker-button/foehn-date-picker-button.component.js +0 -74
- package/esm2015/foehn-date-picker-button/foehn-date-picker-button.module.js +0 -38
- package/esm2015/foehn-debug-summary/foehn-debug-summary.component.js +0 -61
- package/esm2015/foehn-decision-electronique/foehn-decision-electronique.component.js +0 -40
- package/esm2015/foehn-decision-electronique/foehn-decision-electronique.module.js +0 -20
- package/esm2015/foehn-footer/foehn-footer.component.js +0 -132
- package/esm2015/foehn-form/foehn-form.component.js +0 -146
- package/esm2015/foehn-form/foehn-form.module.js +0 -20
- package/esm2015/foehn-growl/foehn-growl.component.js +0 -47
- package/esm2015/foehn-header/foehn-header.component.js +0 -73
- package/esm2015/foehn-header/foehn-header.module.js +0 -21
- package/esm2015/foehn-help-modal/foehn-help-modal.component.js +0 -48
- package/esm2015/foehn-help-modal/foehn-help-modal.module.js +0 -20
- package/esm2015/foehn-help-modal/foehn-help-modal.type.js +0 -2
- package/esm2015/foehn-icons/foehn-icon-calendar.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-check-square-o.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-check.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-chevron-down.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-chevron-left.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-chevron-right.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-chevron-up.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-clock.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-comment-dots.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-edit.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-external-link-alt.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-file-pdf.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-info-circle.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-lock.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-map-marker.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-minus-circle.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-plus-circle.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-plus-square.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-search.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-times.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-trash-alt.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-unlock-alt.component.js +0 -22
- package/esm2015/foehn-input/foehn-input-email.component.js +0 -55
- package/esm2015/foehn-input/foehn-input-hidden.component.js +0 -57
- package/esm2015/foehn-input/foehn-input-number.component.js +0 -190
- package/esm2015/foehn-input/foehn-input-password.component.js +0 -55
- package/esm2015/foehn-input/foehn-input-phone.component.js +0 -96
- package/esm2015/foehn-input/foehn-input-text.component.js +0 -80
- package/esm2015/foehn-input/foehn-input-textarea.component.js +0 -104
- package/esm2015/foehn-input/foehn-input.component.js +0 -364
- package/esm2015/foehn-input/foehn-input.module.js +0 -82
- package/esm2015/foehn-input-date/foehn-input-date.component.js +0 -94
- package/esm2015/foehn-input-time/foehn-input-time.component.js +0 -79
- package/esm2015/foehn-list/foehn-list.component.js +0 -135
- package/esm2015/foehn-list/foehn-list.module.js +0 -19
- package/esm2015/foehn-menu-prestation/abstract-list-item-detail-page.component.js +0 -122
- package/esm2015/foehn-menu-prestation/foehn-error-pill/foehn-error-pill.component.js +0 -26
- package/esm2015/foehn-menu-prestation/foehn-list-summary/foehn-list-summary.component.js +0 -75
- package/esm2015/foehn-menu-prestation/foehn-menu-items/foehn-menu-item/foehn-menu-item.component.js +0 -38
- package/esm2015/foehn-menu-prestation/foehn-menu-items/foehn-menu-item-transmit/foehn-menu-item-transmit.component.js +0 -54
- package/esm2015/foehn-menu-prestation/foehn-menu-prestation.module.js +0 -61
- package/esm2015/foehn-modal/foehn-modal.component.js +0 -100
- package/esm2015/foehn-modal/foehn-modal.module.js +0 -19
- package/esm2015/foehn-nav13/foehn-input-nav13.component.js +0 -98
- package/esm2015/foehn-nav13/foehn-input-nav13.module.js +0 -34
- package/esm2015/foehn-navigation/foehn-navigation.component.js +0 -98
- package/esm2015/foehn-navigation/foehn-navigation.module.js +0 -34
- package/esm2015/foehn-navigation/foehn-navigation.service.js +0 -297
- package/esm2015/foehn-notfound/foehn-notfound.module.js +0 -20
- package/esm2015/foehn-page/foehn-page-modal.component.js +0 -55
- package/esm2015/foehn-page/foehn-page.component.js +0 -214
- package/esm2015/foehn-page/foehn-page.module.js +0 -76
- package/esm2015/foehn-recap-section/foehn-recap-section.component.js +0 -88
- package/esm2015/foehn-recap-section/foehn-recap-section.module.js +0 -20
- package/esm2015/foehn-upload/abstract-foehn-uploader.component.js +0 -192
- package/esm2015/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.service.js +0 -62
- package/esm2015/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.component.js +0 -168
- package/esm2015/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.module.js +0 -38
- package/esm2015/foehn-upload/foehn-multi-upload/foehn-multi-upload.component.js +0 -217
- package/esm2015/foehn-upload/foehn-multi-upload/foehn-multi-upload.module.js +0 -38
- package/esm2015/foehn-upload/foehn-multi-upload/multi-upload.service.js +0 -76
- package/esm2015/foehn-upload/foehn-multi-upload/pending-upload.service.js +0 -157
- package/esm2015/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.js +0 -164
- package/esm2015/foehn-upload/foehn-picture-upload/foehn-picture-upload.module.js +0 -42
- package/esm2015/foehn-upload/uploader.helper.js +0 -322
- package/esm2015/foehn-validation-alert-summary/foehn-validation-alert-summary.component.js +0 -88
- package/esm2015/foehn-validation-alert-summary/foehn-validation-alert-summary.module.js +0 -19
- package/esm2015/foehn-validation-alerts/foehn-validation-alerts.component.js +0 -32
- package/esm2015/gesdem/gesdem-event.service.js +0 -38
- package/esm2015/gesdem/gesdem-handler.service.js +0 -151
- package/esm2015/gesdem/gesdem-loader.guard.js +0 -40
- package/esm2015/gesdem-action-recovery/gesdem-action-recovery-login/gesdem-action-recovery-login.component.js +0 -103
- package/esm2015/gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component.js +0 -133
- package/esm2015/gesdem-action-recovery/gesdem-action-recovery.module.js +0 -52
- package/esm2015/gesdem-action-recovery/gesdem-action-recovery.service.js +0 -82
- package/esm2015/gesdem-confirmation/gesdem-confirmation.component.js +0 -194
- package/esm2015/gesdem-confirmation/gesdem-confirmation.module.js +0 -34
- package/esm2015/gesdem-error/gesdem-error.component.js +0 -70
- package/esm2015/gesdem-error/gesdem-error.module.js +0 -34
- package/esm2015/helpers/object.helper.js +0 -88
- package/esm2015/index.js +0 -224
- package/esm2015/sdk-appinfo/application-info.js +0 -14
- package/esm2015/sdk-appinfo/application-info.service.js +0 -111
- package/esm2015/sdk-date/date.helper.js +0 -90
- package/esm2015/sdk-dictionary/default-dictionary.js +0 -80
- package/esm2015/sdk-dictionary/sdk-dictionary.service.js +0 -96
- package/esm2015/sdk-epayment/model/EPaymentRequest.js +0 -3
- package/esm2015/sdk-epayment/sdk-epayment.component.js +0 -113
- package/esm2015/sdk-epayment/sdk-epayment.module.js +0 -21
- package/esm2015/sdk-epayment/sdk-epayment.service.js +0 -46
- package/esm2015/sdk-recaptcha/recaptcha.service.js +0 -162
- package/esm2015/sdk-recaptcha/sdk-recaptcha.component.js +0 -72
- package/esm2015/sdk-recaptcha/sdk-recaptcha.module.js +0 -19
- package/esm2015/sdk-redirect/iam-expired-interceptor.service.js +0 -48
- package/esm2015/sdk-redirect/redirect.component.js +0 -47
- package/esm2015/sdk-redirect/sdk-redirect.module.js +0 -19
- package/esm2015/sdk-session-info/session-info.service.js +0 -44
- package/esm2015/sdk-support-alert/support-alert-container.component.js +0 -53
- package/esm2015/sdk-support-alert/support-alert.component.js +0 -38
- package/esm2015/sdk-support-alert/support-alert.module.js +0 -21
- package/esm2015/sdk-support-alert/support-alert.service.js +0 -113
- package/esm2015/supported-browser.js +0 -2
- package/esm2015/validation/validation-handler.service.js +0 -44
- package/fesm2015/dsivd-prestations-ng.js +0 -11618
- package/fesm2015/dsivd-prestations-ng.js.map +0 -1
- package/sdk-epayment/model/EPaymentRequest.d.ts +0 -5
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dsivd-prestations-ng.umd.js","sources":["../../../projects/prestations-ng/src/sdk-redirect/iam-expired-interceptor.service.ts","../../../projects/prestations-ng/src/service-locator.ts","../../../projects/prestations-ng/src/prestations-ng-core.module.ts","../../../projects/prestations-ng/src/backend-response.ts","../../../projects/prestations-ng/src/foehn-growl/growl-types.ts","../../../projects/prestations-ng/src/foehn-growl/growl-message.ts","../../../projects/prestations-ng/src/foehn-growl/growl-broker.service.ts","../../../projects/prestations-ng/src/validation/validation-handler.service.ts","../../../node_modules/tslib/tslib.es6.js","../../../projects/prestations-ng/src/sdk-appinfo/application-info.ts","../../../projects/prestations-ng/src/gesdem/gesdem-statut-utils.ts","../../../projects/prestations-ng/src/foehn-page/foehn-page.service.ts","../../../projects/prestations-ng/src/sdk-appinfo/application-info.service.ts","../../../projects/prestations-ng/src/gesdem/gesdem-error-handler.service.ts","../../../projects/prestations-ng/src/sdk-session-info/session-info.service.ts","../../../projects/prestations-ng/src/gesdem/gesdem-handler.service.ts","../../../projects/prestations-ng/src/gesdem-action-recovery/gesdem-action-recovery.service.ts","../../../projects/prestations-ng/src/foehn-navigation/foehn-navigation.service.ts","../../../projects/prestations-ng/src/foehn-input/foehn-input.component.ts","../../../projects/prestations-ng/src/sdk-dictionary/default-dictionary.ts","../../../projects/prestations-ng/src/sdk-dictionary/sdk-dictionary.service.ts","../../../projects/prestations-ng/src/sdk-dictionary/sdk-dictionary.pipe.ts","../../../projects/prestations-ng/src/foehn-validation-alert-summary/foehn-validation-alert-summary.component.ts","../../../projects/prestations-ng/src/foehn-validation-alert-summary/foehn-validation-alert-summary.component.html","../../../projects/prestations-ng/src/foehn-form/foehn-form.component.ts","../../../projects/prestations-ng/src/foehn-form/foehn-form.component.html","../../../projects/prestations-ng/src/gesdem/gesdem-event.service.ts","../../../projects/prestations-ng/src/foehn-breadcrumb/breadcrumb.ts","../../../projects/prestations-ng/src/foehn-breadcrumb/breadcrumb-event.service.ts","../../../projects/prestations-ng/src/foehn-upload/pending-upload.type.ts","../../../projects/prestations-ng/src/foehn-upload/foehn-multi-upload/multi-upload.type.ts","../../../projects/prestations-ng/src/foehn-upload/document-reference.ts","../../../projects/prestations-ng/src/foehn-upload/uploader.helper.ts","../../../projects/prestations-ng/src/foehn-upload/foehn-multi-upload/multi-upload.service.ts","../../../projects/prestations-ng/src/foehn-upload/foehn-multi-upload/pending-upload.service.ts","../../../projects/prestations-ng/src/abstract-page-component.ts","../../../projects/prestations-ng/src/i18n-form.ts","../../../projects/prestations-ng/src/sdk-support-alert/support-alert.service.ts","../../../projects/prestations-ng/src/foehn-address/foehn-display-address.component.ts","../../../projects/prestations-ng/src/foehn-address/foehn-display-address.component.html","../../../projects/prestations-ng/src/foehn-recap-section/foehn-recap-section.component.ts","../../../projects/prestations-ng/src/foehn-recap-section/foehn-recap-section.component.html","../../../projects/prestations-ng/src/foehn-debug-summary/foehn-debug-summary.component.ts","../../../projects/prestations-ng/src/foehn-debug-summary/foehn-debug-summary.component.html","../../../projects/prestations-ng/src/foehn-input/foehn-input-string.component.ts","../../../projects/prestations-ng/src/foehn-validation-alerts/foehn-validation-alerts.component.ts","../../../projects/prestations-ng/src/foehn-validation-alerts/foehn-validation-alerts.component.html","../../../projects/prestations-ng/src/foehn-icons/abstract-icon-component.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icon-times.component.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icon.component.html","../../../projects/prestations-ng/src/foehn-input/foehn-input-text.component.ts","../../../projects/prestations-ng/src/foehn-input/foehn-input.component.html","../../../projects/prestations-ng/src/gesdem-action-recovery/gesdem-action-recovery-login/gesdem-action-recovery-login.component.ts","../../../projects/prestations-ng/src/gesdem-action-recovery/gesdem-action-recovery-login/gesdem-action-recovery-login.component.html","../../../projects/prestations-ng/src/gesdem-error/gesdem-error.component.ts","../../../projects/prestations-ng/src/gesdem-error/gesdem-error.component.html","../../../projects/prestations-ng/src/foehn-notfound/foehn-notfound.component.ts","../../../projects/prestations-ng/src/foehn-notfound/foehn-notfound.component.html","../../../projects/prestations-ng/src/gesdem/gesdem-loader.guard.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icon-info-circle.component.ts","../../../projects/prestations-ng/src/gesdem-confirmation/gesdem-confirmation.component.ts","../../../projects/prestations-ng/src/gesdem-confirmation/gesdem-confirmation.component.html","../../../projects/prestations-ng/src/sdk-session-info/session-info-data.ts","../../../projects/prestations-ng/src/sdk-session-info/session-info-with-application.service.ts","../../../projects/prestations-ng/src/supported-browser.ts","../../../projects/prestations-ng/src/foehn-page/foehn-page-modal.service.ts","../../../projects/prestations-ng/src/foehn-header/foehn-skip-link.component.ts","../../../projects/prestations-ng/src/foehn-header/foehn-skip-link.component.html","../../../projects/prestations-ng/src/foehn-checkables/form-select-option-group.ts","../../../projects/prestations-ng/src/foehn-checkables/foehn-checkable-group.component.ts","../../../projects/prestations-ng/src/helpers/object.helper.ts","../../../projects/prestations-ng/src/foehn-checkables/foehn-select.component.ts","../../../projects/prestations-ng/src/foehn-checkables/foehn-select.component.html","../../../projects/prestations-ng/src/foehn-header/foehn-header.component.ts","../../../projects/prestations-ng/src/foehn-header/foehn-header.component.html","../../../projects/prestations-ng/src/foehn-growl/foehn-growl.component.ts","../../../projects/prestations-ng/src/foehn-growl/foehn-growl.component.html","../../../projects/prestations-ng/src/foehn-confirm-modal/foehn-confirm-modal.service.ts","../../../projects/prestations-ng/src/foehn-breadcrumb/foehn-breadcrumb.component.ts","../../../projects/prestations-ng/src/foehn-breadcrumb/foehn-breadcrumb.component.html","../../../projects/prestations-ng/src/foehn-icons/foehn-icon-external-link-alt.component.ts","../../../projects/prestations-ng/src/sdk-support-alert/support-alert.model.ts","../../../projects/prestations-ng/src/sdk-support-alert/support-alert.component.ts","../../../projects/prestations-ng/src/sdk-support-alert/support-alert.component.html","../../../projects/prestations-ng/src/sdk-support-alert/support-alert-container.component.ts","../../../projects/prestations-ng/src/sdk-support-alert/support-alert-container.component.html","../../../projects/prestations-ng/src/foehn-user-connected-as/foehn-user-connected-as.component.ts","../../../projects/prestations-ng/src/foehn-user-connected-as/foehn-user-connected-as.component.html","../../../projects/prestations-ng/src/foehn-icons/foehn-icon-chevron-up.component.ts","../../../projects/prestations-ng/src/foehn-footer/foehn-footer.component.ts","../../../projects/prestations-ng/src/foehn-footer/foehn-footer.component.html","../../../projects/prestations-ng/src/foehn-modal/foehn-modal.component.ts","../../../projects/prestations-ng/src/foehn-modal/foehn-modal.component.html","../../../projects/prestations-ng/src/foehn-page/foehn-page-modal.component.ts","../../../projects/prestations-ng/src/foehn-page/foehn-page-modal.component.html","../../../projects/prestations-ng/src/foehn-confirm-modal/foehn-confirm-modal.component.ts","../../../projects/prestations-ng/src/foehn-confirm-modal/foehn-confirm-modal.component.html","../../../projects/prestations-ng/src/foehn-page/foehn-page.component.ts","../../../projects/prestations-ng/src/foehn-page/foehn-page.component.html","../../../projects/prestations-ng/src/foehn-breadcrumb/foehn-breadcrumb.module.ts","../../../projects/prestations-ng/src/foehn-growl/foehn-growl.module.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icon-check-square-o.component.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icon-check.component.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icon-chevron-down.component.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icon-lock.component.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icon-map-marker.component.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icon-search.component.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icon-unlock-alt.component.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icon-minus-circle.component.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icon-plus-circle.component.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icon-trash-alt.component.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icon-plus-square.component.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icon-chevron-left.component.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icon-chevron-right.component.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icon-edit.component.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icon-comment-dots.component.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icon-file-pdf.component.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icon-clock.component.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icon-calendar.component.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icons.module.ts","../../../projects/prestations-ng/src/foehn-checkables/foehn-checkbox.component.ts","../../../projects/prestations-ng/src/foehn-checkables/foehn-checkbox.component.html","../../../projects/prestations-ng/src/foehn-checkables/foehn-radio.component.ts","../../../projects/prestations-ng/src/foehn-checkables/foehn-radio.component.html","../../../projects/prestations-ng/src/foehn-validation-alerts/foehn-validation-alerts.module.ts","../../../projects/prestations-ng/src/foehn-autocomplete/foehn-autocomplete.component.ts","../../../projects/prestations-ng/src/foehn-autocomplete/foehn-autocomplete.component.html","../../../projects/prestations-ng/src/sdk-dictionary/sdk-dictionary.module.ts","../../../projects/prestations-ng/src/foehn-autocomplete/foehn-autocomplete.module.ts","../../../projects/prestations-ng/src/foehn-checkables/foehn-checkables.module.ts","../../../projects/prestations-ng/src/foehn-header/foehn-header.module.ts","../../../projects/prestations-ng/src/foehn-footer/foehn-footer.module.ts","../../../projects/prestations-ng/src/sdk-support-alert/support-alert.module.ts","../../../projects/prestations-ng/src/foehn-page/foehn-page-counter.component.ts","../../../projects/prestations-ng/src/foehn-page/foehn-page-counter.component.html","../../../projects/prestations-ng/src/foehn-modal/foehn-modal.module.ts","../../../projects/prestations-ng/src/foehn-user-connected-as/foehn-user-connected-as.module.ts","../../../projects/prestations-ng/src/foehn-confirm-modal/foehn-confirm-modal.module.ts","../../../projects/prestations-ng/src/foehn-page/foehn-page.module.ts","../../../projects/prestations-ng/src/foehn-footer/footer-link.type.ts","../../../projects/prestations-ng/src/foehn-input/pattern.const.ts","../../../projects/prestations-ng/src/sdk-currency/currency.helper.ts","../../../projects/prestations-ng/src/foehn-input/foehn-input-number.component.ts","../../../projects/prestations-ng/src/foehn-input/foehn-input-email.component.ts","../../../projects/prestations-ng/src/foehn-input/foehn-input-hidden.component.ts","../../../projects/prestations-ng/src/foehn-input/foehn-input-password.component.ts","../../../projects/prestations-ng/src/foehn-input/foehn-input-textarea.component.ts","../../../projects/prestations-ng/src/foehn-input/foehn-input-textarea.component.html","../../../projects/prestations-ng/src/foehn-input-date/foehn-input-date.component.ts","../../../projects/prestations-ng/src/foehn-input-date/foehn-input-date.component.html","../../../projects/prestations-ng/src/foehn-input-time/foehn-input-time.component.ts","../../../projects/prestations-ng/src/foehn-input-time/foehn-input-time.component.html","../../../projects/prestations-ng/src/foehn-input/foehn-input-phone.component.ts","../../../projects/prestations-ng/src/foehn-input/foehn-input.module.ts","../../../projects/prestations-ng/src/foehn-address/foehn-input-foreign-locality.component.ts","../../../projects/prestations-ng/src/foehn-address/foehn-input-foreign-locality.component.html","../../../projects/prestations-ng/src/foehn-address/foehn-input-foreign-street.component.ts","../../../projects/prestations-ng/src/foehn-address/foehn-input-foreign-street.component.html","../../../projects/prestations-ng/src/foehn-address/foehn-input-address.component.ts","../../../projects/prestations-ng/src/foehn-address/foehn-input-address.component.html","../../../projects/prestations-ng/src/foehn-address/foehn-address.module.ts","../../../projects/prestations-ng/src/foehn-address/address.type.ts","../../../projects/prestations-ng/src/foehn-checkables/form-select-option.ts","../../../projects/prestations-ng/src/foehn-nav13/foehn-input-nav13.component.ts","../../../projects/prestations-ng/src/foehn-nav13/foehn-input-nav13.component.html","../../../projects/prestations-ng/src/foehn-nav13/foehn-input-nav13.module.ts","../../../projects/prestations-ng/src/foehn-boolean/foehn-boolean-checkbox.component.ts","../../../projects/prestations-ng/src/foehn-boolean/foehn-boolean-checkbox.component.html","../../../projects/prestations-ng/src/foehn-boolean/foehn-boolean-radio.component.ts","../../../projects/prestations-ng/src/foehn-boolean/foehn-boolean-radio.component.html","../../../projects/prestations-ng/src/foehn-boolean/foehn-boolean.module.ts","../../../projects/prestations-ng/src/pipes/formatIde.pipe.ts","../../../projects/prestations-ng/src/sdk-date/date.helper.ts","../../../projects/prestations-ng/src/pipes/date.pipe.ts","../../../projects/prestations-ng/src/pipes/currency.pipe.ts","../../../projects/prestations-ng/src/pipes/pipes.module.ts","../../../projects/prestations-ng/src/gesdem-action-recovery/reprise-info.ts","../../../projects/prestations-ng/src/gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component.ts","../../../projects/prestations-ng/src/gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component.html","../../../projects/prestations-ng/src/foehn-navigation/foehn-navigation.component.ts","../../../projects/prestations-ng/src/foehn-navigation/foehn-navigation.component.html","../../../projects/prestations-ng/src/foehn-validation-alert-summary/foehn-validation-alert-summary.module.ts","../../../projects/prestations-ng/src/foehn-form/foehn-form.module.ts","../../../projects/prestations-ng/src/gesdem-action-recovery/gesdem-action-recovery.module.ts","../../../projects/prestations-ng/src/foehn-navigation/foehn-navigation.module.ts","../../../projects/prestations-ng/src/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.component.ts","../../../projects/prestations-ng/src/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.component.html","../../../projects/prestations-ng/src/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.module.ts","../../../projects/prestations-ng/src/foehn-list/foehn-list.component.ts","../../../projects/prestations-ng/src/foehn-list/foehn-list.component.html","../../../projects/prestations-ng/src/foehn-list/foehn-list.module.ts","../../../projects/prestations-ng/src/foehn-list/page-change-event.ts","../../../projects/prestations-ng/src/sdk-redirect/redirect.component.ts","../../../projects/prestations-ng/src/sdk-redirect/redirect.component.html","../../../projects/prestations-ng/src/sdk-redirect/sdk-redirect.module.ts","../../../projects/prestations-ng/src/sdk-recaptcha/grecaptcha/grecaptcha.component.ts","../../../projects/prestations-ng/src/sdk-recaptcha/grecaptcha/grecaptcha.component.html","../../../projects/prestations-ng/src/sdk-recaptcha/recaptcha.service.ts","../../../projects/prestations-ng/src/sdk-recaptcha/sdk-recaptcha.component.ts","../../../projects/prestations-ng/src/sdk-recaptcha/sdk-recaptcha.component.html","../../../projects/prestations-ng/src/sdk-recaptcha/sdk-recaptcha.module.ts","../../../projects/prestations-ng/src/foehn-recap-section/foehn-recap-section.module.ts","../../../projects/prestations-ng/src/foehn-debug-summary/foehn-debug-summary.component.module.ts","../../../projects/prestations-ng/src/gesdem-error/gesdem-error.module.ts","../../../projects/prestations-ng/src/gesdem-confirmation/gesdem-confirmation.module.ts","../../../projects/prestations-ng/src/foehn-notfound/foehn-notfound.module.ts","../../../projects/prestations-ng/src/foehn-upload/abstract-foehn-uploader.component.ts","../../../projects/prestations-ng/src/foehn-upload/foehn-multi-upload/foehn-multi-upload.component.ts","../../../projects/prestations-ng/src/foehn-upload/foehn-multi-upload/foehn-multi-upload.component.html","../../../projects/prestations-ng/src/foehn-upload/foehn-multi-upload/foehn-multi-upload.module.ts","../../../projects/prestations-ng/src/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.service.ts","../../../projects/prestations-ng/src/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.component.ts","../../../projects/prestations-ng/src/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.component.html","../../../projects/prestations-ng/src/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.module.ts","../../../projects/prestations-ng/src/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.type.ts","../../../projects/prestations-ng/src/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.ts","../../../projects/prestations-ng/src/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.html","../../../projects/prestations-ng/src/foehn-upload/foehn-picture-upload/foehn-picture-upload.module.ts","../../../projects/prestations-ng/src/sdk-epayment/model/EPaymentRequest.ts","../../../projects/prestations-ng/src/sdk-epayment/sdk-epayment.service.ts","../../../projects/prestations-ng/src/sdk-epayment/sdk-epayment.component.ts","../../../projects/prestations-ng/src/sdk-epayment/sdk-epayment.component.html","../../../projects/prestations-ng/src/sdk-epayment/sdk-epayment.module.ts","../../../projects/prestations-ng/src/foehn-help-modal/foehn-help-modal.component.ts","../../../projects/prestations-ng/src/foehn-help-modal/foehn-help-modal.component.html","../../../projects/prestations-ng/src/foehn-help-modal/foehn-help-modal.module.ts","../../../projects/prestations-ng/src/foehn-confirm-modal/foehn-confirm-modal-content.ts","../../../projects/prestations-ng/src/directives/currency-formatter.directive.ts","../../../projects/prestations-ng/src/directives/ndc-formatter.directive.ts","../../../projects/prestations-ng/src/directives/ide-formatter.directive.ts","../../../projects/prestations-ng/src/directives/iban-formatter.directive.ts","../../../projects/prestations-ng/src/directives/formatter.module.ts","../../../projects/prestations-ng/src/foehn-misc/foehn-abbr.component.ts","../../../projects/prestations-ng/src/foehn-misc/foehn-abbr.component.html","../../../projects/prestations-ng/src/foehn-misc/foehn-misc.module.ts","../../../projects/prestations-ng/src/foehn-menu-prestation/foehn-error-pill/foehn-error-pill.component.ts","../../../projects/prestations-ng/src/foehn-menu-prestation/foehn-error-pill/foehn-error-pill.component.html","../../../projects/prestations-ng/src/foehn-menu-prestation/foehn-menu-items/foehn-menu-item/foehn-menu-item.component.ts","../../../projects/prestations-ng/src/foehn-menu-prestation/foehn-menu-items/foehn-menu-item/foehn-menu-item.component.html","../../../projects/prestations-ng/src/foehn-menu-prestation/foehn-menu-items/foehn-menu-item-transmit/foehn-menu-item-transmit.component.ts","../../../projects/prestations-ng/src/foehn-menu-prestation/foehn-menu-items/foehn-menu-item-transmit/foehn-menu-item-transmit.component.html","../../../projects/prestations-ng/src/foehn-menu-prestation/foehn-list-summary/foehn-list-summary.component.ts","../../../projects/prestations-ng/src/foehn-menu-prestation/foehn-list-summary/foehn-list-summary.component.html","../../../projects/prestations-ng/src/foehn-menu-prestation/foehn-menu-prestation.module.ts","../../../projects/prestations-ng/src/foehn-menu-prestation/abstract-menu-page.component.ts","../../../projects/prestations-ng/src/foehn-menu-prestation/abstract-page-from-menu.component.ts","../../../projects/prestations-ng/src/foehn-menu-prestation/abstract-list-item-detail-page.component.ts","../../../projects/prestations-ng/src/foehn-menu-prestation/foehn-list-summary/foehn-list-item.ts","../../../projects/prestations-ng/src/foehn-date-picker/date-picker.helper.ts","../../../projects/prestations-ng/src/foehn-date-picker/date-picker-navigation.helper.ts","../../../projects/prestations-ng/src/foehn-date-picker/foehn-date-picker.component.ts","../../../projects/prestations-ng/src/foehn-date-picker/foehn-date-picker.component.html","../../../projects/prestations-ng/src/foehn-date-picker/foehn-date-picker.module.ts","../../../projects/prestations-ng/src/foehn-date-picker/day-month.type.ts","../../../projects/prestations-ng/src/foehn-date-picker/month-year.type.ts","../../../projects/prestations-ng/src/foehn-date-picker/focused-day.type.ts","../../../projects/prestations-ng/src/foehn-date-picker-button/foehn-date-picker-button.component.ts","../../../projects/prestations-ng/src/foehn-date-picker-button/foehn-date-picker-button.component.html","../../../projects/prestations-ng/src/foehn-date-picker-button/foehn-date-picker-button.module.ts","../../../projects/prestations-ng/src/foehn-decision-electronique/foehn-decision-electronique.component.ts","../../../projects/prestations-ng/src/foehn-decision-electronique/foehn-decision-electronique.component.html","../../../projects/prestations-ng/src/foehn-decision-electronique/foehn-decision-electronique.module.ts","../../../projects/prestations-ng/src/index.ts","../../../projects/prestations-ng/src/dsivd-prestations-ng.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { throwError as observableThrowError, Observable, Subject } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport {\n HttpErrorResponse,\n HttpEvent,\n HttpHandler,\n HttpInterceptor,\n HttpRequest,\n HttpResponse\n} from '@angular/common/http';\nimport { catchError, map } from 'rxjs/operators';\n\nconst IAM_SESSION_EXPIRED_HEADER = 'iam-session-expired';\nconst LOGIN_PATH = '/100018/login';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class IamExpiredInterceptorService implements HttpInterceptor {\n private _iamExpirationHeaderPresence: Subject<boolean> = new Subject<boolean>();\n\n get iamExpirationHeaderPresence(): Observable<boolean> {\n return this._iamExpirationHeaderPresence.asObservable();\n }\n\n intercept(\n req: HttpRequest<any>,\n next: HttpHandler\n ): Observable<HttpEvent<any> | any> {\n return next.handle(req).pipe(\n map(event => {\n if (event instanceof HttpResponse) {\n // either we have the header 'iam-session-expired'\n const iamExpiredHeader = event.headers.get(\n IAM_SESSION_EXPIRED_HEADER\n );\n if (null !== iamExpiredHeader) {\n this._iamExpirationHeaderPresence.next(true);\n }\n }\n\n return event;\n }),\n catchError(this.handleError.bind(this))\n );\n }\n\n private handleError(\n err: HttpErrorResponse | HttpEvent<any>\n ): Observable<HttpEvent<any>> {\n if (err instanceof HttpErrorResponse) {\n if (err.status === 200) {\n const isLogin = err.url.indexOf(LOGIN_PATH) > 0;\n if (isLogin) {\n this._iamExpirationHeaderPresence.next(true);\n }\n }\n }\n\n return observableThrowError(err);\n }\n}\n","import { Injector } from '@angular/core';\n\nexport class ServiceLocator {\n static injector: Injector = null;\n}\n","import { Injector, NgModule } from '@angular/core';\nimport { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';\nimport { IamExpiredInterceptorService } from './sdk-redirect/iam-expired-interceptor.service';\nimport { ServiceLocator } from './service-locator';\nimport { RouterModule } from '@angular/router';\n\nconst IamInterceptorServiceExistingProvider = {\n provide: HTTP_INTERCEPTORS,\n useExisting: IamExpiredInterceptorService,\n multi: true\n};\n\n@NgModule({\n imports: [HttpClientModule, RouterModule],\n providers: [IamInterceptorServiceExistingProvider]\n})\nexport class PrestationsNgCoreModule {\n constructor(private injector: Injector) {\n ServiceLocator.injector = injector;\n }\n}\n","import { ErrorTemplate } from './error-template';\nimport { I18nForm } from './i18n-form';\n\n// eslint-disable max-classes-per-file\nexport class GesdemMeta {\n reference: string;\n currentAction: number;\n referenceInterne: string;\n critical: boolean;\n initialisationDate: string;\n initialisationDateTime: string;\n transfertDate: string;\n transfertDateTime: string;\n statut: string;\n}\n\nexport class BackendResponse<T extends I18nForm> {\n form: T;\n errors: ErrorTemplate[] = [];\n meta = new GesdemMeta();\n}\n","export const GrowlType = {\n SUCCESS: 'alert-success',\n INFO: 'alert-info',\n WARNING: 'alert-warning',\n DANGER: 'alert-danger'\n};\n","import { GrowlType } from './growl-types';\nexport class GrowlMessage {\n type: string = GrowlType.DANGER;\n content: string;\n isCloseable = true;\n isVisible = true;\n timeToDisplayInSeconds: number;\n}\n","import { Injectable } from '@angular/core';\nimport { GrowlMessage } from './growl-message';\nimport { Observable, BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GrowlBrokerService {\n private _messageAddedSubject: BehaviorSubject<GrowlMessage> = new BehaviorSubject<GrowlMessage>(\n null\n );\n\n get messageAddedSubject(): Observable<GrowlMessage> {\n return this._messageAddedSubject.asObservable();\n }\n\n addMessage(message: GrowlMessage): void {\n this._messageAddedSubject.next(message);\n }\n\n addWithType(type: string, content: string): void {\n const message = new GrowlMessage();\n message.type = type;\n message.content = content;\n this._messageAddedSubject.next(message);\n }\n\n addWithTypeAndTimeToDisplayInSeconds(\n type: string,\n content: string,\n timeToDisplayInSeconds: number\n ): void {\n const message = new GrowlMessage();\n message.type = type;\n message.content = content;\n message.timeToDisplayInSeconds = timeToDisplayInSeconds;\n this._messageAddedSubject.next(message);\n }\n}\n","import { ErrorTemplate } from '../error-template';\nimport { Subject, Observable, BehaviorSubject } from 'rxjs';\nimport { Injectable } from '@angular/core';\n// eslint-disable-next-line import/no-cycle\nimport { FoehnInputComponent } from '../foehn-input/foehn-input.component';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ValidationHandlerService {\n private _validationErrorsSubject: Subject<\n ErrorTemplate[]\n > = new BehaviorSubject<ErrorTemplate[]>([]);\n private _validationDisplaySubject: Subject<boolean> = new BehaviorSubject<boolean>(\n true\n );\n\n get validationErrorsSubject(): Observable<ErrorTemplate[]> {\n return this._validationErrorsSubject.asObservable();\n }\n\n updateErrors(errors: ErrorTemplate[]): void {\n this._validationErrorsSubject.next(errors);\n }\n\n get validationDisplaySubject(): Observable<boolean> {\n return this._validationDisplaySubject.asObservable();\n }\n\n shouldDisplayErrors(display: boolean): void {\n this._validationDisplaySubject.next(display);\n }\n\n getMessage(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n component: FoehnInputComponent<any>,\n error: ErrorTemplate\n ): string {\n // For template custom message\n if (component.customErrors[error.code]) {\n return component.customErrors[error.code];\n }\n // For custom validators & backend\n if (!!error.message) {\n return error.message;\n }\n // For undescribed errors\n return `Erreur de type \"${error.code}\" sur le champ`;\n }\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","// eslint-disable max-classes-per-file\nexport class ApplicationInfo {\n version: string;\n buildtime: string;\n contextPath: string;\n environment: string;\n environmentLabel: string;\n appProperties: { [key: string]: string };\n etapeInfos: { [key: string]: EtapeInfo };\n configuration?: Configuration;\n}\n\nexport class EtapeInfo {\n titreEtape: string;\n idMetierEtape: string;\n reprisePossible: boolean;\n titrePrestation: string;\n idMetierPrestation: string;\n publicCible: string[];\n decisionElectroniqueAvailable: boolean;\n deployeeCyber: boolean;\n}\n\nexport class Configuration {\n captcha?: Captcha;\n portail?: Portail;\n document?: Document;\n}\n\nexport class Document {\n maxFileSizeInMo: string;\n maxFileNameLength: string;\n fileExtensions: string;\n illegalCharacters: string;\n}\n\nexport class Captcha {\n publickey?: string;\n}\n\nexport class Portail {\n cyberLoginUrl?: string;\n supportFormUrl?: string;\n espaceSecuriseUrl?: string;\n portailTitlesByPrestaCode?: { [key: string]: string };\n}\n","export enum ActionStatut {\n DRAFT = 'DRAFT',\n INITIAL = 'INITIAL',\n PENDING_PAYMENT = 'PENDING_PAYMENT',\n TRANSFERRED = 'TRANSFERRED',\n ABANDONED = 'ABANDONED',\n REOPENED = 'REOPENED'\n}\n\nexport class GesdemStatutUtils {\n static isFinal(actionStatut: ActionStatut): boolean {\n if (!actionStatut) {\n return false;\n }\n\n return (\n actionStatut === ActionStatut.TRANSFERRED ||\n actionStatut === ActionStatut.ABANDONED\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { ActionStatut, GesdemStatutUtils } from '../gesdem/gesdem-statut-utils';\nimport { BackendResponse } from '../backend-response';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FoehnPageService {\n private _foehnPageSubject: Subject<string> = new Subject<string>();\n\n private _saveFormRequestSubject: Subject<void> = new Subject<void>();\n\n private _currentEtapeId: Subject<string> = new BehaviorSubject<string>(\n null\n );\n\n private currentEtapeIdObs: Observable<string>;\n\n constructor() {\n this.currentEtapeIdObs = this._currentEtapeId.asObservable();\n }\n\n foehnPageObservable(): Observable<string> {\n return this._foehnPageSubject.asObservable();\n }\n\n setPageTitle(title: string): void {\n this._foehnPageSubject.next(title);\n }\n\n requestFormSave(): void {\n this._saveFormRequestSubject.next();\n }\n\n saveFormRequest(): Observable<void> {\n return this._saveFormRequestSubject.asObservable();\n }\n\n setCurrentEtapeId(etapeId: string): void {\n this._currentEtapeId.next(etapeId);\n }\n\n onEtapeIdChange(): Observable<string> {\n return this._currentEtapeId\n .asObservable()\n .pipe(filter(etapeInfo => !!etapeInfo));\n }\n\n isUserCategoryVisible(\n isFirstPage: boolean,\n isLastPage: boolean,\n isUserCategoryEnabled: boolean,\n isInitialStep: boolean,\n isUserNeverConnected: boolean,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n backendResponse: BackendResponse<any>,\n isCurrentRouteDefined: boolean\n ): boolean {\n const isStatusFinal =\n backendResponse &&\n GesdemStatutUtils.isFinal(\n ActionStatut[backendResponse.meta.statut as ActionStatut]\n );\n return (\n isCurrentRouteDefined &&\n !isStatusFinal &&\n !isUserNeverConnected &&\n isUserCategoryEnabled &&\n isInitialStep &&\n (isFirstPage || isLastPage)\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { combineLatest, Observable } from 'rxjs';\nimport { filter, map, shareReplay } from 'rxjs/operators';\nimport { ApplicationInfo, EtapeInfo } from './application-info';\nimport { FoehnPageService } from '../foehn-page/foehn-page.service';\n\nexport const APP_INFO_API_URL = 'api/applicationInfo';\nexport const PORTAIL_BASE_URL_INT = 'https://int-prestations.vd.ch/';\nexport const FORM_SUPPORT_CYBER_TITLE_FALLBACK =\n \"Demander de l'aide pour l'utilisation du portail sécurisé\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ApplicationInfoService {\n private applicationInfo: ApplicationInfo = new ApplicationInfo();\n private pulling_: Observable<ApplicationInfo>;\n private firstEtapeInfo_: Observable<EtapeInfo>;\n private currentEtapeInfo_: Observable<EtapeInfo>;\n\n constructor(\n private http: HttpClient,\n private foehnPageService: FoehnPageService\n ) {\n this.pulling_ = this.http\n .get<ApplicationInfo>(APP_INFO_API_URL)\n .pipe(shareReplay(1));\n\n // In most prestation, we're interested in the first etape info.\n this.firstEtapeInfo_ = this.pulling_.pipe(\n filter(appInfo => !!appInfo && !!appInfo.etapeInfos),\n map(({ etapeInfos }) => {\n // Checks whether the server returns a first key, otherwise fails the\n // observable to ensure that client applications don't try to use this value\n // and are able to implement fallback strategies.\n const firstKey = Object.keys(etapeInfos)[0];\n\n if (!firstKey) {\n throw new Error(\n 'There must be at least one key in the etapeInfos'\n );\n }\n\n return etapeInfos[firstKey];\n })\n );\n\n this.currentEtapeInfo_ = combineLatest([\n this.foehnPageService.onEtapeIdChange(),\n this.pulling_\n ]).pipe(\n map(\n ([etapeId, applicationInfo]) =>\n applicationInfo.etapeInfos[etapeId]\n ),\n shareReplay(1)\n );\n\n this.pulling_.subscribe((ai: ApplicationInfo) =>\n this.setApplicationInfo(ai)\n );\n }\n\n get data(): Observable<ApplicationInfo> {\n return this.pulling_;\n }\n\n getSafeCyberLoginUrl(): Observable<string> {\n return this.data.pipe(\n map(\n appInfo =>\n appInfo.configuration?.portail?.cyberLoginUrl ||\n `${this.getPortailBaseUrl(appInfo)}100018/`\n )\n );\n }\n\n getSafeSupportFormUrl(): Observable<string> {\n return this.data.pipe(\n map(\n appInfo =>\n appInfo.configuration?.portail?.supportFormUrl ||\n `${this.getPortailBaseUrl(appInfo)}pub/101098/`\n )\n );\n }\n\n getSafeSupportFormTitle(): Observable<string> {\n return this.data.pipe(\n map(appInfo => {\n const title =\n appInfo.configuration?.portail\n ?.portailTitlesByPrestaCode?.[101098];\n return title && title.length\n ? title\n : FORM_SUPPORT_CYBER_TITLE_FALLBACK;\n })\n );\n }\n\n getSafeEspacesSecuriseUrl(): Observable<string> {\n return this.data.pipe(\n map(\n appInfo =>\n appInfo.configuration?.portail?.espaceSecuriseUrl ||\n `${this.getPortailBaseUrl(appInfo)}100002/`\n )\n );\n }\n\n get firstEtapeInfo(): Observable<EtapeInfo> {\n return this.firstEtapeInfo_;\n }\n\n get currentEtapeInfo(): Observable<EtapeInfo> {\n return this.currentEtapeInfo_;\n }\n\n private setApplicationInfo(applicationInfo: ApplicationInfo): void {\n this.applicationInfo = applicationInfo;\n if (this.applicationInfo) {\n switch (this.applicationInfo.environment) {\n case 'CO': {\n this.applicationInfo.environmentLabel = 'développement';\n break;\n }\n case 'IN': {\n this.applicationInfo.environmentLabel = 'intégration';\n break;\n }\n case 'VA': {\n this.applicationInfo.environmentLabel = 'validation';\n break;\n }\n default: {\n // Nothing to do\n }\n }\n }\n }\n\n private getPortailBaseUrl(appInfo: ApplicationInfo): string {\n return appInfo.environment === 'CO'\n ? PORTAIL_BASE_URL_INT\n : `${window.location.origin}/`;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, throwError } from 'rxjs';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Params, Router } from '@angular/router';\nimport { ApplicationInfoService } from '../sdk-appinfo/application-info.service';\nimport { mergeMap } from 'rxjs/operators';\nimport { GrowlBrokerService } from '../foehn-growl/growl-broker.service';\nimport { GrowlType } from '../foehn-growl/growl-types';\n\nexport const SESSION_EXPIRED = 'SESSION_EXPIRED';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GesdemErrorHandlerService {\n constructor(\n private growlService: GrowlBrokerService,\n private applicationInfoService: ApplicationInfoService,\n private router: Router\n ) {}\n\n handleGesdemError(\n prefix: string,\n reference: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n response: HttpErrorResponse | any\n ): Observable<never> {\n const isBeneficiaryRequired =\n response.status === 401 &&\n response.error &&\n response.error.code === 'BENEFICIARY_REQUIRED';\n\n const isPdfGenerationError =\n response.status === 500 &&\n response.error &&\n response.error.code === 'PDF_GENERATION_ERROR';\n\n const isSessionExpired =\n response.status === 401 &&\n response.error &&\n response.error.code === 'Unauthorized';\n\n const errorCode = isSessionExpired\n ? SESSION_EXPIRED\n : response.error\n ? response.error.code\n : null;\n\n if (isBeneficiaryRequired) {\n return this.onBeneficiaryRequired(response.error.code);\n }\n if (isPdfGenerationError) {\n return this.onPdfGenerationError(response.error.message);\n }\n return this.onOtherError(prefix, reference, errorCode);\n }\n\n navigateTo(url: string): void {\n window.location.assign(url);\n }\n\n private onBeneficiaryRequired(redirectReason: string): Observable<never> {\n // redirect to Cyberlogin\n return this.applicationInfoService.getSafeCyberLoginUrl().pipe(\n mergeMap(cyberLoginUrl => {\n const currentUrl = window.location.href;\n this.navigateTo(\n `${cyberLoginUrl}?redirectReason=${redirectReason}&goto=${currentUrl}`\n );\n return throwError(true);\n })\n );\n }\n\n private onPdfGenerationError(message: string): Observable<never> {\n this.growlService.addWithType(GrowlType.DANGER, message);\n return throwError(true);\n }\n\n private onOtherError(\n prefix: string,\n reference: string,\n errorCode: string\n ): Observable<never> {\n // redirect to error page while preserving reference in URL\n const commands: string[] = [];\n if (prefix) {\n commands.push(prefix);\n }\n if (reference) {\n commands.push(reference);\n }\n commands.push('erreur');\n\n let params: Params = null;\n if (errorCode) {\n params = { errorCode };\n }\n\n this.router.navigate(commands, {\n replaceUrl: true,\n queryParams: params\n });\n\n return throwError(true);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, of } from 'rxjs';\nimport { SessionInfoData } from './session-info-data';\nimport { map, shareReplay } from 'rxjs/operators';\n\nexport const SESSION_INFO_API_URL = 'api/sessionInfo/data';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SessionInfo {\n private sessionData: SessionInfoData;\n private pulling_: Observable<SessionInfoData>;\n private neverConnected_: boolean;\n\n constructor(private http: HttpClient) {}\n\n get data(): Observable<SessionInfoData> {\n if (this.neverConnected_) {\n return of(null);\n } else {\n if (!this.pulling_) {\n this.pulling_ = this.http\n .get<SessionInfoData>(SESSION_INFO_API_URL)\n .pipe(\n map((r: SessionInfoData) => {\n if (r) {\n return (this.sessionData = r);\n }\n return null;\n }),\n shareReplay(1)\n );\n }\n return this.pulling_;\n }\n }\n\n set neverConnected(neverConnected: boolean) {\n this.neverConnected_ = neverConnected;\n }\n\n get neverConnected(): boolean {\n return this.neverConnected_;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, of, Subject } from 'rxjs';\nimport {\n HttpClient,\n HttpErrorResponse,\n HttpParams\n} from '@angular/common/http';\nimport { BackendResponse } from '../backend-response';\nimport { GrowlBrokerService } from '../foehn-growl/growl-broker.service';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ValidationHandlerService } from '../validation/validation-handler.service';\nimport { catchError, map, switchMap, tap } from 'rxjs/operators';\nimport { GesdemErrorHandlerService } from './gesdem-error-handler.service';\nimport { SessionInfo } from '../sdk-session-info/session-info.service';\nimport { GrowlType } from '../foehn-growl/growl-types';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GesdemHandlerService {\n _prefix: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _updateFormDataSubject: Subject<any> = new Subject<any>();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _lastResponse: BackendResponse<any>;\n private _captchaToken: string;\n\n constructor(\n private http: HttpClient,\n private growlService: GrowlBrokerService,\n private validationHandlerService: ValidationHandlerService,\n private router: Router,\n private route: ActivatedRoute,\n private errorHandlerService: GesdemErrorHandlerService,\n private sessionInfo: SessionInfo\n ) {}\n\n get prefix(): string {\n return this._prefix;\n }\n\n set prefix(prefix: string) {\n this._prefix = prefix;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get lastResponse(): BackendResponse<any> {\n return this._lastResponse;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get updateFormDataSubject(): Observable<any> {\n return this._updateFormDataSubject.asObservable();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types\n save(form: any): Observable<any> {\n let url = 'api/validated';\n if (this.prefix) {\n url = `api/${this.prefix}/validated`;\n }\n\n return this.postToUrl(form, url);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types\n pdf(form: any): Observable<any> {\n let url = 'api/pdf';\n if (this.prefix) {\n url = `api/${this.prefix}/pdf`;\n }\n\n return this.postToUrl(form, url);\n }\n\n setCaptchaToken(token: string): void {\n this._captchaToken = token;\n }\n\n /**\n *\n * @param reference de la demande\n * @param forceRefreshIfNew allows to force the cleaning if reference is null\n * @returns Observable\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n require(reference?: string, forceRefreshIfNew?: boolean): Observable<any> {\n const isNewReference =\n !!reference &&\n !!this._lastResponse &&\n !!this._lastResponse.meta &&\n this._lastResponse.meta.reference !== reference;\n\n const refreshOnNoReference = !!forceRefreshIfNew && !reference;\n if (isNewReference || refreshOnNoReference) {\n this._lastResponse = null;\n }\n if (reference && !this._lastResponse) {\n return this.retrieve(reference);\n }\n if (this._lastResponse) {\n this.emitResponse(this._lastResponse);\n }\n return of(true);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n transmit(): Observable<any> {\n let url = 'api/transmission';\n if (this.prefix) {\n url = `api/${this.prefix}/transmission`;\n }\n if (this._lastResponse) {\n url += `?reference=${this._lastResponse.meta.reference}`;\n }\n return this.http.post(url, null).pipe(\n tap(this.emitResponse.bind(this)),\n map(() => true),\n catchError((response: unknown) =>\n this.handleGesdemError(null, response)\n )\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types\n retrieve(reference: any): Observable<any> {\n let url = 'api';\n if (this.prefix) {\n url = `api/${this.prefix}`;\n }\n url = `${url}/validated/${reference}`;\n return this.http.get(url).pipe(\n tap(this.emitResponse.bind(this)),\n map(() => true),\n catchError((response: unknown) =>\n this.handleGesdemError(reference, response)\n )\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private postToUrl(form: any, url: string): Observable<any> {\n if (this._lastResponse && this._lastResponse.meta.reference) {\n url += `?reference=${this._lastResponse.meta.reference}`;\n } else if (this._captchaToken) {\n url += `?reCaptchaToken=${this._captchaToken}`;\n }\n\n const params = !!this.route.snapshot.queryParams.reCaptchaByPassUUID\n ? new HttpParams().set(\n 'reCaptchaByPassUUID',\n this.route.snapshot.queryParams.reCaptchaByPassUUID\n )\n : null;\n\n return this.http.post(url, form, { params }).pipe(\n tap(this.emitResponse.bind(this)),\n catchError((response: unknown) =>\n this.handleGesdemError(null, response)\n ),\n switchMap(() => this.sessionInfo.data.pipe(map(data => !!data))),\n tap(isConnected => {\n // If the user is connected, display a message to make clear that\n // nothing is lost!\n if (isConnected) {\n this.growlService.addWithType(\n GrowlType.SUCCESS,\n 'Vos données ont été sauvegardées'\n );\n }\n }),\n map(() => true)\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private emitResponse(response: BackendResponse<any>): void {\n if (!response.meta.critical) {\n this._lastResponse = response;\n this._updateFormDataSubject.next(response.form);\n } else {\n this._lastResponse = new BackendResponse();\n this._lastResponse.meta.critical = true;\n }\n this.validationHandlerService.updateErrors(response.errors);\n }\n\n private handleGesdemError(\n requestedReference: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n response: HttpErrorResponse | any\n ): Observable<never> {\n const reference = this._lastResponse\n ? this._lastResponse.meta.reference\n : requestedReference;\n\n return this.errorHandlerService.handleGesdemError(\n this.prefix,\n reference,\n response\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, throwError } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport { GrowlBrokerService } from '../foehn-growl/growl-broker.service';\nimport { catchError, map } from 'rxjs/operators';\nimport { GrowlType } from '../foehn-growl/growl-types';\nimport { RepriseInfo } from './reprise-info';\nimport { ErrorTemplate } from '../error-template';\n\n/**\n * @param value where space will be removed\n * @returns string\n */\nconst removeSpace = (value: string): string => {\n if (!value) {\n return null;\n }\n\n return value.replace(/\\s/g, '');\n};\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GesdemActionRecoveryService {\n _prefix: string;\n\n constructor(\n private http: HttpClient,\n private growlService: GrowlBrokerService\n ) {}\n\n set prefix(prefix: string) {\n this._prefix = prefix;\n }\n\n registerForRecovery(\n reference: string,\n info: RepriseInfo\n ): Observable<ErrorTemplate[]> {\n let url = 'api';\n if (this._prefix) {\n url = `api/${this._prefix}`;\n }\n url += `/registerForRecovery/${reference}`;\n\n const normalizedRepriseInfo: RepriseInfo = {\n email: removeSpace(info.email),\n mobile: removeSpace(info.mobile)\n };\n\n return this.http.post<ErrorTemplate[]>(url, normalizedRepriseInfo).pipe(\n catchError((e: unknown) => {\n this.growlService.addWithType(\n GrowlType.DANGER,\n 'Une erreur est survenue, veuillez réessayer plus tard.'\n );\n return throwError(e);\n })\n );\n }\n\n getDefaultRecoveryValue(reference: string): Observable<RepriseInfo> {\n let url = 'api';\n if (this._prefix) {\n url = `api/${this._prefix}`;\n }\n url += `/defaultRecoveryValue/${reference}`;\n\n return this.http.get<RepriseInfo>(url).pipe(\n catchError((e: unknown) => {\n this.growlService.addWithType(\n GrowlType.WARNING,\n 'Valeurs par défaut non remontées. Veuillez remplir le formulaire!'\n );\n return throwError(e);\n })\n );\n }\n\n startRecovery(reference: string): Observable<string> {\n let url = 'api';\n if (this._prefix) {\n url = `api/${this._prefix}`;\n }\n url += `/startRecovery/${reference}`;\n\n return this.http.put(url, null, {\n responseType: 'text'\n }) as Observable<string>;\n }\n\n checkRecoveryPassword(reference: string, otp: string): Observable<boolean> {\n let url = 'api';\n if (this._prefix) {\n url = `api/${this._prefix}`;\n }\n url += `/checkRecoveryPassword/${reference}/otp/${otp}/check`;\n\n return this.http.get(url, { responseType: 'text' }).pipe(\n map(result => result === 'true'),\n catchError(() => {\n this.growlService.addWithType(\n GrowlType.DANGER,\n 'Impossible de vérifier le mot de passe, veuillez réessayer plus tard.'\n );\n return throwError(true);\n })\n );\n }\n}\n","import {\n ActivatedRoute,\n ActivatedRouteSnapshot,\n CanActivate,\n Params,\n Route,\n Router\n} from '@angular/router';\nimport { Injectable } from '@angular/core';\nimport { GesdemHandlerService } from '../gesdem/gesdem-handler.service';\nimport { ServiceLocator } from '../service-locator';\nimport { Location } from '@angular/common';\nimport { GesdemActionRecoveryService } from '../gesdem-action-recovery/gesdem-action-recovery.service';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nexport enum NavigationDirection {\n FORWARD = +1,\n BACKWARD = -1\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FoehnNavigationService {\n currentRouteOrder: number;\n orderedRoutes: Route[];\n private _activatedRoute: ActivatedRoute;\n private isInit = false;\n private initializedAndRouteActivated: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(\n false\n );\n private linearRouting = true;\n\n constructor(\n private router: Router,\n private gesdemService: GesdemHandlerService,\n private gesdemActionRecoveryService: GesdemActionRecoveryService,\n private route: ActivatedRoute,\n private location: Location\n ) {}\n\n static getRootRouteRecursive(route: ActivatedRouteSnapshot): Route {\n if (route) {\n if (\n route.routeConfig &&\n route.routeConfig.data &&\n route.routeConfig.data.root\n ) {\n return route.routeConfig;\n }\n return this.getRootRouteRecursive(route.parent);\n }\n return null;\n }\n\n initRoute(route: Route): void {\n if (route) {\n this.orderedRoutes = this.indexRoutesByOrder(route);\n\n // By default the prefix should be the path of the route. (e.g. in /validation/123123-12321/page1,\n // the prefix is \"validation\"). However, if the application is code-splitted with the routing defined\n // in a module, this won't work. In this case, you can specify the path in $.data.basePath so the GesDem\n // service knows where to send the request to the backend.\n const prefix = route.data.basePath || route.path;\n this.gesdemService.prefix = prefix;\n this.gesdemActionRecoveryService.prefix = prefix;\n this.linearRouting = route.data.linearRouting !== false;\n }\n this.throwIfNotInit();\n }\n\n throwIfNotInit(): void {\n if (!this.isInit) {\n throw new TypeError(\n \"No route is identified as 'root'. Have you called initRoute() ?\"\n );\n }\n }\n\n updateRouteInformations(): void {\n this.throwIfNotInit();\n const currentRoute = this._activatedRoute.routeConfig;\n\n let currentRouteOrder = 1;\n\n if (\n !!currentRoute &&\n !!currentRoute.data &&\n !!currentRoute.data.order\n ) {\n currentRouteOrder = currentRoute.data.order;\n }\n this.currentRouteOrder = currentRouteOrder;\n }\n\n set activatedRoute(value: ActivatedRoute) {\n this.throwIfNotInit();\n this._activatedRoute = value;\n this.initializedAndRouteActivated.next(true);\n }\n\n getFirstRoute(): Route {\n return this.orderedRoutes[1];\n }\n\n current(): Promise<boolean> {\n this.throwIfNotInit();\n if (!this.gesdemService.lastResponse) {\n return Promise.reject('Erreur navigationService#current');\n }\n const currentRoute = this.orderedRoutes[this.currentRouteOrder];\n\n const prefix = this.gesdemService.prefix;\n const commands: string[] = [];\n if (prefix) {\n commands.push(prefix);\n }\n\n if (this.gesdemService.lastResponse.meta.reference) {\n commands.push(\n this.gesdemService.lastResponse.meta.reference,\n currentRoute.path\n );\n\n const tree = this.router.createUrlTree(commands);\n const url =\n this.router.serializeUrl(tree) +\n this.getQueryParamsToForwardAsString();\n this.location.replaceState(url);\n }\n\n return Promise.resolve(true);\n }\n\n hasBeenInitialized(): Observable<boolean> {\n return this.initializedAndRouteActivated.asObservable();\n }\n\n getQueryParamsToForwardAsString(): string {\n const params = this.getQueryParamsToForward() || [];\n let stringParams = '';\n for (const key of Object.keys(params)) {\n const value = params[key];\n stringParams += stringParams ? '&' : '?';\n stringParams += `${key}=${value}`;\n }\n return stringParams;\n }\n\n getQueryParamsToForward(): Params {\n const reCaptchaByPassUUID = this.route.snapshot.queryParams\n .reCaptchaByPassUUID;\n const scrollTo = this.route.snapshot.queryParams.scrollTo;\n if (!!reCaptchaByPassUUID || !!scrollTo) {\n const params: Params = {};\n if (!!reCaptchaByPassUUID) {\n params.reCaptchaByPassUUID = reCaptchaByPassUUID;\n }\n if (!!scrollTo) {\n params.scrollTo = scrollTo;\n }\n return params;\n }\n return null;\n }\n\n next(): Promise<boolean> {\n this.throwIfNotInit();\n return this.redirectToAvailableRoute(NavigationDirection.FORWARD);\n }\n\n previous(): Promise<boolean> {\n this.throwIfNotInit();\n return this.redirectToAvailableRoute(NavigationDirection.BACKWARD);\n }\n\n last(): Promise<boolean> {\n this.throwIfNotInit();\n const route = this.getAvailableRoutes();\n const nextRoutePath = route[route.length - 1].path;\n return this.redirect(nextRoutePath);\n }\n\n redirect(newPath: string): Promise<boolean> {\n const routes = [];\n if (this.gesdemService.prefix) {\n routes.push(this.gesdemService.prefix);\n }\n routes.push(this.gesdemService.lastResponse.meta.reference, newPath);\n\n return this.router\n .navigate(routes, {\n queryParams: this.getQueryParamsToForward()\n })\n .then(success => {\n if (success) {\n this.setFocusOnPageTitle();\n }\n return success;\n });\n }\n\n getAvailableRoutes(): Route[] {\n return this.orderedRoutes.filter(route => this.isRouteAvailable(route));\n }\n\n getCurrentRouteIndex(): number {\n // This evaluates all the guards\n const availableRoutes = this.getAvailableRoutes();\n\n const currentRoute = availableRoutes.find(\n route => route.data.order === this.currentRouteOrder\n );\n\n if (!currentRoute) {\n return null;\n }\n\n return availableRoutes.indexOf(currentRoute);\n }\n\n getTotalRoutesSize(): number {\n return this.getAvailableRoutes().length;\n }\n\n getLastRouteOrder(): number {\n const routes = this.getAvailableRoutes();\n return routes[routes.length - 1].data.order;\n }\n\n getNextAvailableRoute(direction: NavigationDirection): Route {\n // This evaluates all the guards\n const availableRoutes = this.getAvailableRoutes();\n\n // Assumes that the next or previous route is the next or previous on the array of available routes.\n const currentRoute = this.getCurrentRoute(availableRoutes);\n if (!currentRoute) {\n throw new Error(\n 'Invalid routing, at least one route must be available'\n );\n }\n\n const currentRouteIndex = availableRoutes.indexOf(currentRoute);\n const targetRoute = availableRoutes[currentRouteIndex + direction];\n if (!targetRoute) {\n return null;\n }\n\n // The display index isn't always the route order as we support guards on available routes.\n // The display index is 1-based.\n targetRoute.data.displayIndex =\n availableRoutes.indexOf(targetRoute) + 1;\n return targetRoute;\n }\n\n isFirstFormPage(): boolean {\n if (!this.getCurrentRoute(this.getAvailableRoutes())) {\n return true;\n }\n return (\n this.getNextAvailableRoute(NavigationDirection.BACKWARD) === null\n );\n }\n\n isLastFormPage(): boolean {\n if (!this.getCurrentRoute(this.getAvailableRoutes())) {\n return true;\n }\n const nextRoute = this.getNextAvailableRoute(\n NavigationDirection.FORWARD\n );\n if (!nextRoute) {\n return true;\n }\n\n return nextRoute.data.order === this.getLastRouteOrder();\n }\n\n getNextRouteIndex(): number {\n const nextRoute = this.getNextAvailableRoute(\n NavigationDirection.FORWARD\n );\n if (!nextRoute) {\n return null;\n }\n\n return nextRoute.data.displayIndex;\n }\n\n getPreviousRouteIndex(): number {\n const previousRoute = this.getNextAvailableRoute(\n NavigationDirection.BACKWARD\n );\n if (!previousRoute) {\n return null;\n }\n\n return previousRoute.data.displayIndex;\n }\n\n isLinearRouting(): boolean {\n return this.linearRouting;\n }\n\n private getCurrentRoute(availableRoutes: Route[]): Route {\n return availableRoutes.find(\n route => route.data.order === this.currentRouteOrder\n );\n }\n\n private redirectToAvailableRoute(\n direction: NavigationDirection\n ): Promise<boolean> {\n const route = this.getNextAvailableRoute(direction);\n return this.redirect(route.path);\n }\n\n private isRouteAvailable(route: Route): boolean {\n const { canActivate } = route;\n if (!canActivate || !canActivate.length) {\n return true;\n }\n\n // All the guards must be evaluated to true\n return !canActivate.some(guardType => !this.evaluateGuard(guardType));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private evaluateGuard(guardType: any): boolean {\n const guard: CanActivate = ServiceLocator.injector.get<CanActivate>(\n guardType\n );\n const guardResult = guard.canActivate(this.route.snapshot, null);\n\n if (typeof guardResult !== 'boolean') {\n throw new Error(\n 'Not implemented: Dynamic routing guards only support boolean results'\n );\n }\n\n return guardResult;\n }\n\n /**\n * reindexe les routes par \"order\"\n *\n * @param applicationRoute as route\n * @returns Route[]\n */\n private indexRoutesByOrder(applicationRoute: Route): Route[] {\n this.isInit = false;\n\n const routesToCrawl = applicationRoute.children;\n if (!routesToCrawl.length) {\n return [];\n }\n\n const result = this.flattenRoutes(routesToCrawl);\n\n if (result.length > 0) {\n this.isInit = true;\n }\n\n return result;\n }\n\n private flattenRoutes(\n routesToCrawl: Route[],\n result: Route[] = []\n ): Route[] {\n routesToCrawl.forEach(value => {\n if (value.children && value.children.length) {\n this.flattenRoutes(value.children, result);\n }\n\n if (!!value.data && !!value.data.order) {\n result[value.data.order] = value;\n }\n\n return result;\n });\n\n return result;\n }\n\n private setFocusOnPageTitle(): void {\n // Ensures that the focus is properly set after the page is updated.\n setTimeout(() => {\n const title = document.getElementById('page-title');\n if (title) {\n title.focus();\n }\n }, 0);\n }\n}\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n ViewChild,\n ViewChildren\n} from '@angular/core';\nimport { NgModel } from '@angular/forms';\nimport { ErrorTemplate } from '../error-template';\nimport { ServiceLocator } from '../service-locator';\nimport { combineLatest, Observable, Subject, Subscription } from 'rxjs';\n// eslint-disable-next-line import/no-cycle\nimport { ValidationHandlerService } from '../validation/validation-handler.service';\nimport { debounceTime, map } from 'rxjs/operators';\n\nexport const GESDEM_MAX_DATA_LENGTH = 10000;\n\n@Directive()\nexport abstract class FoehnInputComponent<T> implements OnInit, OnDestroy {\n @Input()\n id: string;\n\n @Input()\n required: boolean;\n\n @Input()\n label: string;\n\n /**\n * When TRUE, adds class 'sr-only' (only for screen readers) on tag <label> or <legend>\n * depending on component extending this class\n */\n @Input()\n isLabelSrOnly: boolean;\n\n @Input()\n helpText: string;\n\n @Input()\n name: string;\n\n @Input()\n pattern: string;\n\n @Input()\n labelStyleModifier: string;\n\n @Input()\n customErrors: { [key: string]: string } = {};\n\n @Input()\n maxlength: number;\n\n @Input()\n overrideGesdemMaxlength = false;\n\n @Input()\n min: number;\n\n @Input()\n max: number;\n\n @Input()\n autocomplete: string;\n\n @Input()\n disabled: boolean;\n\n @Input()\n preventPaste = false;\n\n @Input()\n clearButton = false;\n\n /**\n * Exclude the component from the error summary if the component has an error.\n */\n @Input()\n excludeFromErrorSummary = false;\n\n /**\n * Hide the 'facultatif' extra label.\n */\n @Input()\n hideNotRequiredExtraLabel = false;\n\n @Input()\n isErrorInherited = false;\n\n /**\n * When set to TRUE: Shows error even if input is disabled\n */\n @Input()\n showErrorWhenDisabled = false;\n\n @ViewChildren(NgModel)\n inputModelList: QueryList<NgModel>;\n\n @ViewChild('entryComponent')\n inputElement: ElementRef;\n\n @ViewChildren(FoehnInputComponent)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n subComponents: QueryList<FoehnInputComponent<any>>;\n\n /**\n * Fired when the model changes for any reason\n */\n @Output()\n modelChange = new EventEmitter<T>();\n\n /**\n * Fired when the user changes a value, after the model is updated.\n */\n @Output()\n userInput = new EventEmitter<T>();\n\n // eslint-disable-next-line @angular-eslint/no-output-native,@angular-eslint/no-output-rename\n @Output('blur')\n blurHandler = new EventEmitter<FocusEvent>();\n\n // eslint-disable-next-line @angular-eslint/no-output-native,@angular-eslint/no-output-rename\n @Output('focus')\n focusHandler = new EventEmitter<FocusEvent>();\n\n @HostBinding('attr.id')\n hostId: string;\n\n type: string;\n\n validationHandlerService: ValidationHandlerService;\n\n model_: T;\n\n private _errors: ErrorTemplate[];\n\n private validationErrorsSubjectSubscription: Subscription;\n\n private showClearButton: Observable<boolean>;\n private userInputObservable = new Subject<T>();\n private userInputSubscription: Subscription;\n\n constructor() {\n this.validationHandlerService = ServiceLocator.injector.get(\n ValidationHandlerService\n );\n this.required = false;\n\n this.validationErrorsSubjectSubscription = combineLatest([\n this.validationHandlerService.validationErrorsSubject,\n this.validationHandlerService.validationDisplaySubject\n ]).subscribe(values => {\n this.refreshErrors(values);\n });\n }\n\n ngOnInit(): void {\n // Ensures that the host has an Id for instrumentalization of the DOM by automated tests.\n this.hostId = this.buildId();\n\n this.showClearButton = this.modelChange\n .asObservable()\n .pipe(map(model => this.clearButton && !!model && !this.disabled));\n\n this.userInputSubscription = this.userInputObservable\n .pipe(\n // This is used to ensure that we only catch the latest of multiple\n // quick updates, and to make sure the userInput is fired when\n // the component is done updating.\n debounceTime(0)\n )\n .subscribe(value => {\n this.userInput.emit(value);\n });\n }\n\n ngOnDestroy(): void {\n if (this.validationErrorsSubjectSubscription) {\n this.validationErrorsSubjectSubscription.unsubscribe();\n }\n\n if (this.userInputSubscription) {\n this.userInputSubscription.unsubscribe();\n }\n }\n\n @Input()\n set model(value: T) {\n this.onModelChange(value);\n }\n\n get model(): T {\n return this.model_;\n }\n\n onModelChange(value: T): void {\n this.updateNgModel(value);\n }\n\n handleChange(value: T): void {\n this.triggerUserInput(value);\n }\n\n updateNgModel(value: T): void {\n this.model_ = value;\n this.modelChange.emit(value);\n }\n\n hasErrorsToDisplay(): boolean {\n return (\n this.hasErrors() && (!this.disabled || this.showErrorWhenDisabled)\n );\n }\n\n hasErrors(): boolean {\n return this._errors && this._errors.length > 0 && this.isPristine();\n }\n\n hasInheritErrorFromParent(): boolean {\n return this.isErrorInherited;\n }\n\n isPristine(): boolean {\n return (\n this.inputModelList.filter(m => !m.pristine).length === 0 &&\n this.subComponents.filter(c => !c.isPristine()).length === 0\n );\n }\n\n markAsDirty(): void {\n this.inputModelList.forEach(ngModel => {\n ngModel.control.markAsDirty();\n });\n }\n\n markAsPristine(): void {\n this.inputModelList.forEach(ngModel => {\n ngModel.control.markAsPristine();\n });\n }\n\n getNativeInputList(): NgModel[] {\n let result: NgModel[] = this.inputModelList.toArray();\n this.subComponents.forEach(c => {\n result = result.concat(c.getNativeInputList());\n });\n return result;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getMeAndSubComponents(): FoehnInputComponent<any>[] {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let result: FoehnInputComponent<any>[] = [this];\n if (this.subComponents) {\n this.subComponents.forEach(c => {\n result = result.concat(c.getMeAndSubComponents());\n });\n }\n return result;\n }\n\n get errors(): ErrorTemplate[] {\n return this._errors;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n refreshErrors(results: any[]): void {\n const errors: ErrorTemplate[] = results[0];\n const shouldDisplayErrors: boolean = results[1];\n if (shouldDisplayErrors) {\n this._errors = errors.filter(e => e.name === this.name);\n }\n }\n\n focus(): void {\n let elementContainer;\n if (this.inputElement && this.inputElement.nativeElement) {\n elementContainer = document.getElementById(\n this.buildId('Container')\n );\n if (elementContainer) {\n // Scroll in view should be done on input container\n elementContainer.scrollIntoView();\n }\n // Focus should be on the input itself\n this.inputElement.nativeElement.focus();\n } else if (\n this.subComponents &&\n this.getFirstInputComponentEnabled(this.subComponents)\n ) {\n const inputComponent = this.getFirstInputComponentEnabled(\n this.subComponents\n );\n elementContainer = document.getElementById(\n inputComponent.buildId('Container')\n );\n if (elementContainer) {\n // Scroll in view should be done on input container\n elementContainer.scrollIntoView();\n }\n // Focus should be on the input itself\n inputComponent.inputElement.nativeElement.focus();\n } else {\n // Case for component who do not have any '#entryComponent' in their html template (i.e. foehn-radio, foehn-checkbox,...)\n elementContainer = document.getElementById(\n this.buildId('Container')\n );\n if (elementContainer) {\n // Scroll in view should be done on input container\n elementContainer.scrollIntoView();\n }\n const elementNodeListOf = elementContainer.querySelectorAll(\n `input[id^=\"${this.name}\"]`\n );\n if (elementNodeListOf && elementNodeListOf.length > 0) {\n const inputElement = this.findFirstHtmlInputElementEnabled(\n elementNodeListOf\n );\n if (inputElement) {\n // Focus should be on the input itself\n inputElement.focus();\n }\n }\n }\n }\n\n getMaxLength(): number {\n if (!this.maxlength) {\n return GESDEM_MAX_DATA_LENGTH;\n }\n\n if (\n this.maxlength > GESDEM_MAX_DATA_LENGTH &&\n !this.overrideGesdemMaxlength\n ) {\n console.log(\n `maxLength in ${this.name} cannot be more than ${GESDEM_MAX_DATA_LENGTH} !`\n );\n return GESDEM_MAX_DATA_LENGTH;\n }\n\n return this.maxlength;\n }\n\n buildId(suffix: string = ''): string {\n // The baseId is either an id given by the user or the value of the name.\n // For integration purposes, the container foehn-* must have an Id.\n const baseId = this.id || this.name;\n if (!baseId) {\n return null;\n }\n\n return `${baseId}${suffix}`;\n }\n\n buildChildId(suffix: string = ''): string {\n return this.buildId(`Child${suffix}`);\n }\n\n buildChildName(suffix: string = ''): string {\n return `${this.name}Child${suffix}`;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onKeydown(key: KeyboardEvent): void {\n // Do nothing, overriden by subcomponent\n }\n\n reset(): void {\n this.updateNgModel(null);\n }\n\n onPaste(e: ClipboardEvent): void {\n if (this.preventPaste === true) {\n e.preventDefault();\n }\n }\n\n onBlur(e: FocusEvent): void {\n this.blurHandler.emit(e);\n }\n\n onFocus(e: FocusEvent): void {\n this.focusHandler.emit(e);\n }\n\n onClear(): void {\n this.updateNgModel(null);\n this.handleChange(null);\n this.focus();\n }\n\n displayClearButton(): Observable<boolean> {\n // This has to be an observable to react to the change of model value.\n return this.showClearButton;\n }\n\n getDescribedBy(): string {\n const helpTextId = this.helpText ? `${this.buildChildId()}Help` : null;\n const errorId = this.hasErrorsToDisplay()\n ? `${this.buildId()}ErrorsContainer`\n : null;\n\n // aria-describedby can be linked to multiple Ids separated by a comma.\n return [helpTextId, errorId].filter(id => !!id).join(',') || null;\n }\n\n getAutoComplete(): string {\n // retro compatibility (autocomplete used to be a boolean)\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (this.autocomplete === false) {\n return 'off';\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (this.autocomplete === true) {\n return '';\n }\n\n return this.autocomplete;\n }\n\n protected getFirstInputComponentEnabled(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n subComponents: QueryList<FoehnInputComponent<any>>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): FoehnInputComponent<any> {\n const foehnInputComponents = subComponents.filter(\n item => item.inputElement && !item.disabled\n );\n\n if (!!foehnInputComponents && foehnInputComponents.length) {\n return foehnInputComponents[0];\n }\n\n return null;\n }\n\n protected findFirstHtmlInputElementEnabled(\n elementNodeListOf: NodeListOf<Element>\n ): HTMLInputElement {\n for (let i = 0; i < elementNodeListOf.length; i++) {\n const htmlInputElement = elementNodeListOf.item(\n i\n ) as HTMLInputElement;\n if (!htmlInputElement.disabled) {\n return htmlInputElement;\n }\n }\n return null;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types\n protected isEmpty(data: any): boolean {\n return data === null || data === undefined || data === '';\n }\n\n protected triggerUserInput(value: T): void {\n if (\n // If the callback is defined\n !!this.userInput &&\n // If the value is actually something (T or null)\n typeof value !== 'undefined'\n ) {\n this.userInputObservable.next(value);\n }\n }\n}\n","// eslint-disable-next-line import/no-cycle\nimport { DictionaryType } from './sdk-dictionary.service';\n\nexport const DEFAULT_DICTIONARY: DictionaryType = {\n 'foehn-input.optional': '(facultatif)',\n 'foehn-input-date.day.label': 'Jour',\n 'foehn-input-date.month.label': 'Mois',\n 'foehn-input-date.year.label': 'Année',\n 'foehn-input-time.hours.label': 'Heure',\n 'foehn-input-time.minutes.label': 'Minutes',\n 'foehn-input-address.country.label': 'Pays',\n 'foehn-input-address.locality.label': 'NPA, Localité',\n 'foehn-input-address.street.help-text': 'Exemple : Avenue de la Sallaz',\n 'foehn-input-address.street.label': 'Rue',\n 'foehn-input-address.houseNumber.label': 'Numéro de rue',\n 'foehn-input-address.houseNumber.help-text':\n \"Exemple : 40 pour une adresse à l'Avenue de la Sallaz 40\",\n 'foehn-input-address.postOfficeBoxText.label': 'Case postale',\n 'foehn-input-address.postOfficeBoxText.help-text':\n 'Exemple : Case postale 122 ou CP122 ou CP 122',\n 'foehn-input-address.addressLine1.label': 'c/o',\n 'foehn-input-address.addressLine2.label': \"Complément d'adresse\",\n 'foehn-input-foreign-locality.zipCode.label': 'Code postal',\n 'foehn-input-foreign-locality.locality.label': 'Localité',\n 'foehn-navigation.next.label': 'Suivant',\n 'foehn-navigation.previous.label': 'Précédent',\n 'foehn-navigation.transmit.label': 'Transmettre',\n 'foehn-navigation.continue-later.label': 'Finir la demande plus tard',\n 'foehn-navigation.route.index.separator': 'sur',\n 'foehn-page-counter.label': 'Page {currentPage} de {pageCount}',\n 'gesdem-confirmation.title': 'Confirmation',\n 'gesdem-confirmation.success-label': 'Demande transmise',\n 'gesdem-confirmation.next-step.success-label': 'Réponse transmise',\n 'gesdem-confirmation.abort-label': 'Demande abandonnée',\n 'gesdem-confirmation.reference-title.label': 'Votre numéro de référence',\n 'gesdem-confirmation.mail-sent.label':\n 'Vous recevrez un email de confirmation dans quelques instants.',\n 'gesdem-confirmation.download-pdf-recap-button':\n 'Télécharger la demande (pdf)',\n 'gesdem-confirmation.exit-button': 'Terminer',\n 'gesdem-confirmation.extra-content': ' ',\n 'foehn-date-picker-button.icon-title': 'Afficher le calendrier',\n 'foehn-date-picker-button.screen-reader.selected-date':\n 'Date sélectionnée :',\n 'foehn-date-picker.container.aria-label': 'Calendrier',\n 'foehn-date-picker.close-button.aria-label': 'Fermer le calendrier',\n 'foehn-date-picker.previous-month-button.title': 'Mois précédent',\n 'foehn-date-picker.next-month-button.title': 'Mois suivant',\n 'foehn-date-picker.screen-reader.actual-month-displayed':\n 'Mois actuellement affiché :',\n 'foehn-date-picker.screen-reader.month-input.label': 'Sélectionner un mois',\n 'foehn-date-picker.screen-reader.year-input.label':\n 'Sélectionner une année',\n 'errors.FILENAME_TOO_LONG':\n 'Votre pièce jointe %1$s a un nom du fichier qui excède le maximum autorisé : %2$s caractères',\n 'errors.FILE_TOO_SMALL':\n 'Votre pièce jointe %1$s a une taille inférieure au minimum exigé : %2$s bytes',\n 'errors.PDF_PASSWORD_LOCKED':\n 'Votre pièce jointe %1$s est verrouillée par un mot de passe',\n 'errors.PDF_CONTAINS_SCRIPT': 'Votre pièce jointe %1$s contient un script',\n 'errors.PDF_HAS_ATTACHMENTS':\n 'Votre pièce jointe %1$s contient un fichier attaché',\n 'errors.EMPTY_PDF': 'Votre pièce jointe %1$s est vide',\n 'errors.PDF_GENERAL_PROBLEM': 'Votre pièce jointe %1$s est illisible',\n 'errors.PDF_HAS_RESTRICTIONS':\n 'Votre pièce jointe %1$s est protégée. Veuillez enlever toutes les protections avant de joindre ce fichier.',\n 'errors.FILENAME_SHOULD_NOT_CONTAIN':\n 'Le nom de votre pièce jointe %1$s contient des caractères interdits.',\n 'errors.406':\n 'Votre pièce jointe %1$s ne correspond pas au type de contenu autorisé',\n 'errors.413':\n 'Votre pièce jointe %1$s a une taille supérieure ou égale à la limite autorisée : %2$s Mo',\n 'errors.415':\n 'Le type de votre pièce jointe %1$s ne figure pas parmi ceux qui sont autorisés : \"%2$s\"',\n 'errors.422': 'Echec de la sauvegarde de la pièce jointe %1$s',\n 'errors.500':\n 'Echec de la sauvegarde de la pièce jointe %1$s. Veuillez réessayer avec un autre fichier.',\n 'errors.summary.title': 'Il y a un problème',\n 'foehn-uploader.choose-button-label': 'Choisissez un document',\n 'foehn-uploader.choose-button-label-multiple':\n 'Choisissez un ou plusieurs documents',\n 'foehn-uploader.drop-zone-label': 'Déposez un document ou cliquez ici',\n 'foehn-uploader.drop-zone-label-multiple':\n 'Déposez un ou plusieurs documents ou cliquez ici',\n 'foehn-uploader.delete-confirmation-message':\n 'Êtes-vous sûr de vouloir supprimer ce fichier ?',\n 'foehn-uploader.abbr-megaoctet': 'Mo',\n 'foehn-uploader.abbr-megaoctet-title': 'Megaoctet',\n 'foehn-uploader.delete-icon-title': 'Supprimer {docName}',\n 'use-login.text.decision-electronique-available':\n 'Pour obtenir la notification de la décision sous forme électronique ' +\n '(fichier au format pdf), vous devez demander la prestation en étant connecté au portail sécurisé.',\n 'use-login.text':\n \"Cette prestation est aussi utilisable au travers de l'espace sécurisé qui vous \" +\n \"permet de pré-remplir le formulaire et de suivre l'avancement de traitement de la demande.\",\n 'use-login.button.text': 'Connectez-vous',\n 'foehn-picture-upload.choose-button-label': 'Choisissez une photo',\n 'foehn-picture-upload.loading-label': 'Chargement...',\n 'foehn-picture-upload.loading-failure-label':\n 'Impossible de charger la photo sélectionnée',\n 'foehn-picture-upload.validate-selection-label': 'Valider la sélection',\n 'foehn-picture-upload.cancel-selection-label': 'Annuler',\n 'foehn-picture-upload.selection-not-validated-label':\n 'Merci de valider votre sélection',\n 'foehn-picture-upload.delete-picture-label': 'Supprimer'\n};\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { BehaviorSubject, Observable, of } from 'rxjs';\nimport { catchError, map, mergeMap, shareReplay, tap } from 'rxjs/operators';\nimport { GrowlBrokerService } from '../foehn-growl/growl-broker.service';\nimport { GrowlType } from '../foehn-growl/growl-types';\n// eslint-disable-next-line import/no-cycle\nimport { DEFAULT_DICTIONARY } from './default-dictionary';\n\nexport const DICTIONARY_BASE_URL = 'api/dictionary';\n\nexport interface PlaceholderType {\n [key: string]: string;\n}\n\nexport interface DictionaryType {\n [key: string]: string;\n}\n\nexport interface Language {\n code: string;\n label: string;\n}\n\n/**\n * @param value to search in\n * @param placeholders to be replaced\n * @returns string\n */\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions\nfunction replaceAll(value: string, placeholders?: PlaceholderType): string {\n if (!placeholders) {\n return value;\n }\n\n return Object.keys(placeholders).reduce((result, key) => {\n const valueToReplace = placeholders[key];\n return result.replace(new RegExp(`{${key}}`, 'g'), valueToReplace);\n }, value);\n}\n\n/**\n * @param dictionary holding all keys\n * @param key from dictionary\n * @param placeholders to be replaced\n * @returns string\n */\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions\nfunction getKeyOrDefault(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dictionary: any,\n key: string,\n placeholders?: PlaceholderType\n): string {\n return replaceAll(\n dictionary[key] || DEFAULT_DICTIONARY[key] || key,\n placeholders\n );\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SdkDictionaryService {\n private dictionary: DictionaryType;\n private readonly dictionaryObservable: Observable<DictionaryType>;\n private readonly availableLanguagesObservable: Observable<Language[]>;\n private readonly languageCodeSubject = new BehaviorSubject<string>('fr');\n\n constructor(\n private httpClient: HttpClient,\n private growlService: GrowlBrokerService\n ) {\n this.dictionaryObservable = this.languageCodeSubject\n .asObservable()\n .pipe(\n mergeMap(languageCode => {\n const url =\n DICTIONARY_BASE_URL +\n (!!languageCode ? `/${languageCode}` : '');\n return this.httpClient.get<DictionaryType>(url).pipe(\n catchError((e: unknown) => {\n console.error(e);\n growlService.addWithType(\n GrowlType.DANGER,\n 'Impossible de récupérer les valeurs du dictionnaire'\n );\n return of({});\n }),\n tap(dictionary => {\n this.dictionary = dictionary;\n })\n );\n }),\n shareReplay(1)\n );\n\n this.availableLanguagesObservable = this.httpClient\n .get<Language[]>(`${DICTIONARY_BASE_URL}/languages`)\n .pipe(\n catchError((e: unknown) => {\n console.error(e);\n growlService.addWithType(\n GrowlType.DANGER,\n 'Impossible de récupérer les langues disponibles'\n );\n return of([]);\n }),\n shareReplay(1)\n );\n }\n\n getDictionary(): Observable<DictionaryType> {\n return this.dictionaryObservable;\n }\n\n getAvailableLanguages(): Observable<Language[]> {\n return this.availableLanguagesObservable;\n }\n\n getKey(key: string, placeholders?: PlaceholderType): Observable<string> {\n return this.dictionaryObservable.pipe(\n map(dictionary => getKeyOrDefault(dictionary, key, placeholders))\n );\n }\n\n getKeySync(key: string, placeholders?: PlaceholderType): string {\n if (!this.dictionary) {\n throw new Error('Dictionary not initialized.');\n }\n\n return getKeyOrDefault(this.dictionary, key, placeholders);\n }\n\n changeLanguage(code: string): void {\n if (!!code && this.languageCodeSubject.getValue() !== code) {\n this.languageCodeSubject.next(code);\n }\n }\n\n getCurrentLanguageCode(): Observable<string> {\n return this.languageCodeSubject.asObservable();\n }\n}\n","import { ChangeDetectorRef, Pipe, PipeTransform } from '@angular/core';\nimport { AsyncPipe } from '@angular/common';\n\nimport {\n PlaceholderType,\n SdkDictionaryService\n} from './sdk-dictionary.service';\n\n@Pipe({\n name: 'fromDictionary',\n pure: false\n})\nexport class SdkDictionaryPipe implements PipeTransform {\n private asyncPipe: AsyncPipe;\n\n constructor(\n private dictionaryService: SdkDictionaryService,\n private ref: ChangeDetectorRef\n ) {\n this.asyncPipe = new AsyncPipe(ref);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types\n transform(key: any, placeHolderType?: PlaceholderType): any {\n if (!key) {\n return key;\n }\n\n return this.asyncPipe.transform(\n this.dictionaryService.getKey(key, placeHolderType)\n );\n }\n}\n","import { Component, Input } from '@angular/core';\nimport type { FoehnFormComponent } from '../foehn-form/foehn-form.component';\nimport { ValidationHandlerService } from '../validation/validation-handler.service';\n\n// eslint-disable max-classes-per-file\n@Component({\n selector: 'foehn-validation-alert-summary',\n templateUrl: './foehn-validation-alert-summary.component.html',\n styleUrls: ['./foehn-validation-alert-summary.component.css']\n})\nexport class FoehnValidationAlertSummaryComponent {\n @Input()\n form: FoehnFormComponent;\n\n constructor(private validationHandlerService: ValidationHandlerService) {}\n\n get shouldDisplayAlertSummary(): boolean {\n return !!this.form && this.form.shouldDisplayAlertSummary;\n }\n\n get errors(): ComponentError[] {\n const errors: ComponentError[] = [];\n const components = this.form.getAllComponents();\n components.forEach(component => {\n if (\n component.hasErrorsToDisplay() &&\n !component.excludeFromErrorSummary\n ) {\n component.errors.forEach(error => {\n errors.push({\n name: error.name,\n message: this.validationHandlerService.getMessage(\n component,\n error\n ),\n componentLabel: component.label\n ? `${component.label} : `\n : ''\n });\n });\n }\n });\n\n return errors;\n }\n\n scrollToError(event: Event, errorId: string): void {\n event.preventDefault();\n const elementContainer = document.getElementById(`${errorId}Container`);\n if (!elementContainer) {\n console.warn(\n `\"${\n errorId\n // eslint-disable-next-line max-len\n }\" error cannot be scrolled to nor focused. Please make sure that your HTML Foehn element tag attributs \"id\" and \"name\" are identical.`\n );\n return;\n }\n // Scroll in view should be done on input container\n elementContainer.scrollIntoView();\n\n const elementChild = document.getElementById(`${errorId}Child`);\n if (elementChild) {\n // Focus should be on the input itself\n elementChild.focus();\n } else {\n // For more complex components such as foehn-input-date, foehn-input-time, foehn-nav13, foehn-radio, foehn-checkbox,...\n const elementNodeListOf = elementContainer.querySelectorAll(\n `input[id^=\"${errorId}\"]`\n );\n if (elementNodeListOf && elementNodeListOf.length > 0) {\n const inputElement = this.findFirstHtmlInputElementEnabled(\n elementNodeListOf\n );\n if (inputElement) {\n // Focus should be on the input itself\n inputElement.focus();\n }\n }\n }\n }\n\n trackByError(e: ComponentError): string {\n return e.name;\n }\n\n protected findFirstHtmlInputElementEnabled(\n elementNodeListOf: NodeListOf<Element>\n ): HTMLInputElement {\n for (let i = 0; i < elementNodeListOf.length; i++) {\n const htmlInputElement = elementNodeListOf.item(\n i\n ) as HTMLInputElement;\n if (!htmlInputElement.disabled) {\n return htmlInputElement;\n }\n }\n return null;\n }\n}\n\nexport class ComponentError {\n name: string;\n message: string;\n componentLabel: string;\n}\n","<div\n aria-labelledby=\"error-summary-title\"\n id=\"error-summary\"\n class=\"vd-error-summary\"\n *ngIf=\"shouldDisplayAlertSummary && errors.length\"\n role=\"alert\"\n tabindex=\"-1\"\n>\n <h2 id=\"error-summary-title\">\n {{ 'errors.summary.title' | fromDictionary }}\n </h2>\n <ul>\n <li *ngFor=\"let error of errors; trackBy: trackByError; let i = index\">\n <a\n class=\"text-danger\"\n href=\"\"\n [id]=\"'foehn-error-summary-list-item-' + i\"\n (click)=\"scrollToError($event, error.name)\"\n >\n <span [innerHTML]=\"error.componentLabel\"></span>\n <span [innerHTML]=\"error.message\"></span>\n </a>\n </li>\n </ul>\n</div>\n","import {\n AfterViewInit,\n Component,\n ContentChildren,\n Input,\n QueryList,\n ViewChild\n} from '@angular/core';\nimport { NgForm, NgModel } from '@angular/forms';\nimport { FoehnInputComponent } from '../foehn-input/foehn-input.component';\n\n@Component({\n selector: 'foehn-form',\n templateUrl: './foehn-form.component.html'\n})\nexport class FoehnFormComponent implements AfterViewInit {\n @Input()\n shouldDisplayAlertSummary = true;\n\n @ViewChild(NgForm, { static: true })\n ngFormComponent: NgForm;\n\n @ContentChildren(FoehnInputComponent, { descendants: true })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private childrenInputComponents: QueryList<FoehnInputComponent<any>>;\n\n private registeredNgModels: NgModel[] = [];\n\n reset(resetChildrenValues: boolean = false): void {\n if (resetChildrenValues) {\n for (const c of this.getAllComponents()) {\n c.reset();\n }\n }\n this.ngFormComponent.form.markAsUntouched();\n this.ngFormComponent.form.markAsPristine();\n }\n\n ngAfterViewInit(): void {\n this.updateRegisteredNgModels();\n this.childrenInputComponents.changes.subscribe(component => {\n this.updateRegisteredNgModels();\n if (component.inputModelList) {\n component.inputModelList.changes.subscribe(() => {\n this.updateRegisteredNgModels();\n });\n }\n this.registerSubcomponentsNgModel();\n });\n this.registerSubcomponentsNgModel();\n }\n\n updateRegisteredNgModels(): void {\n const currentNgModels = this.getAllNativeModels();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const toBeRegistered: any[] = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const toBeDeleted: any[] = [];\n\n this.registeredNgModels.forEach(ng => {\n if (!currentNgModels.includes(ng)) {\n toBeDeleted.push(ng);\n }\n });\n currentNgModels.forEach(ng => {\n if (!this.registeredNgModels.includes(ng)) {\n toBeRegistered.push(ng);\n }\n });\n\n toBeDeleted.forEach(ng => this.deleteNgModel(ng));\n toBeRegistered.forEach(ng => this.registerNgModel(ng));\n }\n\n getAllNativeModels(): NgModel[] {\n const models: NgModel[] = [];\n this.childrenInputComponents.forEach(c => {\n c.getNativeInputList().forEach(m => {\n models.push(m);\n });\n });\n return models;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getAllComponents(): FoehnInputComponent<any>[] {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let result: FoehnInputComponent<any>[] = [];\n if (this.childrenInputComponents) {\n this.childrenInputComponents.forEach(c => {\n result = result.concat(c.getMeAndSubComponents());\n });\n }\n return result;\n }\n\n isValid(): boolean {\n return !this.getAllComponents().some(i => i.hasErrors());\n }\n\n focusFirstInError(): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const allComponents: FoehnInputComponent<any>[] = this.getAllComponents();\n\n if (allComponents && allComponents.length > 0) {\n const firstComponentInError = allComponents.find(component =>\n component.hasErrors()\n );\n if (firstComponentInError) {\n firstComponentInError.focus();\n }\n }\n }\n\n focusFirst(): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const allComponents: FoehnInputComponent<any>[] = this.getAllComponents();\n\n if (allComponents && allComponents.length > 0) {\n allComponents[0].focus();\n }\n }\n\n focusErrorSummary(): void {\n // setTimeout to improve the compatibility with some screen readers.\n setTimeout(() => {\n const errorSummary = document.getElementById('error-summary');\n\n if (errorSummary) {\n errorSummary.scrollIntoView();\n errorSummary.focus();\n } else {\n // If there is no error summary, or if the error summary doesn't contain any compatible error.\n this.focusFirstInError();\n }\n }, 0);\n }\n\n private registerNgModel(ng: NgModel): void {\n this.registeredNgModels.push(ng);\n this.ngFormComponent.addControl(ng);\n }\n\n private deleteNgModel(ng: NgModel): void {\n const index = this.registeredNgModels.indexOf(ng);\n if (index > -1) {\n this.registeredNgModels.splice(index, 1);\n }\n this.ngFormComponent.removeControl(ng);\n }\n\n private registerSubcomponentsNgModel(): void {\n this.childrenInputComponents.forEach(component =>\n component.subComponents.changes.subscribe(subComponent => {\n this.updateRegisteredNgModels();\n if (subComponent.inputModelList) {\n subComponent.inputModelList.changes.subscribe(() => {\n this.updateRegisteredNgModels();\n });\n }\n })\n );\n }\n}\n","<form id=\"foehn_formContainer\">\n <foehn-validation-alert-summary\n [form]=\"this\"\n ></foehn-validation-alert-summary>\n\n <ng-content></ng-content>\n</form>\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Injectable } from '@angular/core';\nimport { Subject, Observable } from 'rxjs';\nimport { BackendResponse } from '../backend-response';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GesdemEventService {\n private _formInitializationSubject: Subject<any> = new Subject<any>();\n private _formTransmittedSubject: Subject<\n BackendResponse<any>\n > = new Subject<BackendResponse<any>>();\n private _formSentSubject: Subject<BackendResponse<any>> = new Subject<\n BackendResponse<any>\n >();\n\n formInitializationObservable(): Observable<any> {\n return this._formInitializationSubject.asObservable();\n }\n\n get formInitializationSubject(): Subject<any> {\n return this._formInitializationSubject;\n }\n\n formTransmittedObservable(): Observable<BackendResponse<any>> {\n return this._formTransmittedSubject.asObservable();\n }\n\n get formTransmittedSubject(): Subject<BackendResponse<any>> {\n return this._formTransmittedSubject;\n }\n\n formSentObservable(): Observable<BackendResponse<any>> {\n return this._formSentSubject.asObservable();\n }\n\n get formSentSubject(): Subject<BackendResponse<any>> {\n return this._formSentSubject;\n }\n}\n","// eslint-disable max-classes-per-file\nexport class BreadcrumbItem {\n url: string;\n routerLink: string;\n label: string;\n skipLeavingAlert?: boolean;\n}\n\nexport class Breadcrumb {\n breadcrumbItems: BreadcrumbItem[];\n current: BreadcrumbItem;\n}\n\nexport interface BreadcrumbConfiguration {\n prestationCode?: string;\n vdChUrl?: string;\n descriptionPageBaseUrl?: string;\n espaceSecuriseUrl?: string;\n allPrestationsUrl?: string;\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, combineLatest, Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { SessionInfo } from '../sdk-session-info/session-info.service';\nimport {\n Breadcrumb,\n BreadcrumbConfiguration,\n BreadcrumbItem\n} from './breadcrumb';\nimport { SessionInfoData } from '../sdk-session-info/session-info-data';\n\nconst DEFAULT_VALUES: BreadcrumbConfiguration = {\n espaceSecuriseUrl: '/100002/accueil',\n allPrestationsUrl: '/100002/prestations',\n vdChUrl: 'https://www.vd.ch/',\n descriptionPageBaseUrl: 'https://www.vd.ch/go.to?prestation=',\n // It's better to not display the breadcrumb item if the prestation doesn't give its code.\n prestationCode: null\n};\n\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions,jsdoc/require-jsdoc\nfunction getNotConnectedBreadcrumb({\n vdChUrl = DEFAULT_VALUES.vdChUrl,\n descriptionPageBaseUrl = DEFAULT_VALUES.descriptionPageBaseUrl,\n prestationCode = DEFAULT_VALUES.prestationCode\n}: BreadcrumbConfiguration): BreadcrumbItem[] {\n const rootElement: BreadcrumbItem = {\n url: vdChUrl,\n routerLink: null,\n label: 'vd.ch'\n };\n\n // Do not display the second element if the prestation code is not there so we have\n // a chance to realize that something's missing rather than having a link that doesn't\n // point to something meaningful.\n if (!prestationCode) {\n return [rootElement];\n }\n\n return [\n rootElement,\n {\n // e.g. https://www.vd.ch/go.to?prestation=101016\n url: `${descriptionPageBaseUrl}${prestationCode}`,\n routerLink: null,\n label: 'Description de la prestation'\n }\n ];\n}\n\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions,jsdoc/require-jsdoc\nfunction getConnectedBreadcrumb(\n {\n espaceSecuriseUrl = DEFAULT_VALUES.espaceSecuriseUrl,\n allPrestationsUrl = DEFAULT_VALUES.allPrestationsUrl\n }: BreadcrumbConfiguration,\n sessionInfoData: SessionInfoData\n): BreadcrumbItem[] {\n return [\n {\n url: espaceSecuriseUrl,\n routerLink: null,\n label: sessionInfoData.espaceLabel\n },\n {\n url: allPrestationsUrl,\n routerLink: null,\n label: 'Accéder aux prestations'\n }\n ];\n}\n\n/**\n * Get the breadcrumb depending on the state of the user.\n *\n * Example:\n *\n * Mon espace > Accéder aux prestations\n * vd.ch > Description de la prestation\n *\n * @param sessionInfoData data info on session\n * @param configuration as breadcrumb config.\n * @param currentItem as breadcrumb current item\n * @returns Breadcrumb\n */\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions\nfunction getBreadcrumb(\n sessionInfoData: SessionInfoData,\n configuration: BreadcrumbConfiguration,\n currentItem: BreadcrumbItem\n): Breadcrumb {\n // Whether the user has a context we consider it as connected.\n const isConnectedCyber = !!sessionInfoData && !!sessionInfoData.context;\n\n const breadcrumb = new Breadcrumb();\n\n // Depending on whether the user is connected, the content of the items change.\n breadcrumb.breadcrumbItems = isConnectedCyber\n ? getConnectedBreadcrumb(configuration, sessionInfoData)\n : getNotConnectedBreadcrumb(configuration);\n\n // Optionally set the current item.\n breadcrumb.current = currentItem;\n\n return breadcrumb;\n}\n\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions,jsdoc/require-jsdoc\nfunction mapBreadcrumb([\n override,\n configuration,\n currentItem,\n sessionInfoData\n]: [\n Breadcrumb,\n BreadcrumbConfiguration,\n BreadcrumbItem,\n SessionInfoData\n]): Breadcrumb {\n // Take the override if it exists\n if (override) {\n // Although there's an override, we do want to assign the current item\n // so each page dans set its own name rather than letting the override\n // handle this.\n if (currentItem) {\n override.current = currentItem;\n }\n return override;\n }\n\n // Otherwise get a breadcrumb based on the configuration\n if (configuration) {\n return getBreadcrumb(sessionInfoData, configuration, currentItem);\n }\n\n // Only output a breadcrumb of there's a configuration or an override\n return null;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BreadcrumbEventService {\n private _breadcrumbOverride = new BehaviorSubject<Breadcrumb>(null);\n private _breadcrumbConfiguration = new BehaviorSubject<BreadcrumbConfiguration>(\n null\n );\n private _currentBreadcrumbItem = new BehaviorSubject<BreadcrumbItem>(null);\n private readonly _breadcrumbObservable: Observable<Breadcrumb>;\n private readonly _neverConnectedBreadcrumbObservable: Observable<Breadcrumb>;\n\n private _skipLeavingAlertBecauseDemandIsTransmitted = false;\n\n constructor(private sessionInfo: SessionInfo) {\n // When the user might be connected\n this._breadcrumbObservable = combineLatest([\n this._breadcrumbOverride,\n this._breadcrumbConfiguration,\n this._currentBreadcrumbItem,\n this.sessionInfo.data\n ]).pipe(\n // Put together the breadcrumb, or just take the override if it exists.\n map(mapBreadcrumb)\n );\n\n // If the user is NEVER connected (for instance in cyberlogin)\n this._neverConnectedBreadcrumbObservable = combineLatest([\n this._breadcrumbOverride,\n this._breadcrumbConfiguration,\n this._currentBreadcrumbItem,\n of(null)\n ]).pipe(\n // Put together the breadcrumb, or just take the override if it exists.\n map(mapBreadcrumb)\n );\n }\n\n /**\n * Set the breadcrumb. This value will override any configuration injected with\n * `setConfiguration`. Only use if you want to handle the breadcrumb manually.\n *\n * @param breadcrumb as Breadcrumb\n */\n setBreadcrumb(breadcrumb: Breadcrumb): void {\n this._breadcrumbOverride.next(breadcrumb);\n }\n\n set skipLeavingAlertBecauseDemandIsTransmitted(value: boolean) {\n this._skipLeavingAlertBecauseDemandIsTransmitted = value;\n }\n\n get skipLeavingAlertBecauseDemandIsTransmitted(): boolean {\n return this._skipLeavingAlertBecauseDemandIsTransmitted;\n }\n\n /**\n * The breadcrumb value.\n *\n * @returns Observable<Breadcrumb>\n */\n breadcrumbObservable(): Observable<Breadcrumb> {\n return this._breadcrumbObservable;\n }\n\n /**\n * The breadcrumb value if never connected.\n *\n * @returns Observable<Breadcrumb>\n */\n neverConnectedBreadcrumbObservable(): Observable<Breadcrumb> {\n return this._neverConnectedBreadcrumbObservable;\n }\n\n /**\n * Set the current item. Used for accessibility purposes.\n *\n * @param currentItem as BreadcrumbItem\n */\n setCurrentBreadcrumb(currentItem: BreadcrumbItem): void {\n this._currentBreadcrumbItem.next(currentItem);\n }\n\n /**\n * Set the current breadcrumb configuration.\n *\n * Set to `null` to disable the breadcrumb.\n *\n * @param configuration as BreadcrumbConfiguration\n */\n setConfiguration(configuration: BreadcrumbConfiguration): void {\n this._breadcrumbConfiguration.next(configuration);\n }\n}\n","export class PendingFiles {\n url: string;\n formKey: string;\n label: string;\n files: File[];\n key: string;\n isMultiple: boolean;\n}\n","import { DocumentReference } from '../document-reference';\n\n// eslint-disable max-classes-per-file\nexport class DocumentError {\n key: string;\n label: string;\n formKey: string;\n errorCode: string;\n}\n\nexport class DocumentsWithErrors {\n documents: DocumentReference[];\n errors: DocumentError[];\n}\n","// eslint-disable max-classes-per-file\nexport class DocumentReference {\n reference: string;\n filename: string;\n key: string;\n label: string;\n mimeType: string;\n fileSize: number;\n}\n\nexport class DocumentReferenceWithFile extends DocumentReference {\n file: File;\n}\n","import { ErrorTemplate } from '../error-template';\nimport { SdkDictionaryService } from '../sdk-dictionary/sdk-dictionary.service';\nimport { ApplicationInfoService } from '../sdk-appinfo/application-info.service';\nimport { ApplicationInfo } from '../sdk-appinfo/application-info';\nimport { DocumentReferenceWithFile } from './document-reference';\n\nexport class UploaderHelper {\n get fileMinSizeInBytes(): number {\n return this._fileMinSizeInBytes;\n }\n\n set fileMinSizeInBytes(value: number) {\n this._fileMinSizeInBytes = value;\n }\n\n get illegalCharacters(): string {\n return this._illegalCharacters;\n }\n\n set illegalCharacters(value: string) {\n this._illegalCharacters = value;\n }\n\n get maxFileNameLength(): number {\n return this._maxFileNameLength;\n }\n\n set maxFileNameLength(value: number) {\n this._maxFileNameLength = value;\n }\n\n get maxSizeInMo(): number {\n return this._maxSizeInMo;\n }\n\n set maxSizeInMo(value: number) {\n this._maxSizeInMo = value;\n }\n\n get accept(): string {\n return this._accept;\n }\n\n set accept(value: string) {\n this._accept = value;\n }\n\n private _accept = '.pdf';\n private _maxSizeInMo = 1;\n private _maxFileNameLength = 64;\n private _illegalCharacters = '/,\\\\,?,%,*,:,|,\",<,>,°';\n private _fileMinSizeInBytes = 20;\n\n private readonly CHAR_TO_REPLACE = new RegExp('[^a-zA-Z0-9]', 'g');\n\n constructor(\n private dictionaryService: SdkDictionaryService,\n private applicationInfoService: ApplicationInfoService\n ) {\n this.applicationInfoService.data.subscribe(\n (appInfo: ApplicationInfo) => {\n if (appInfo.configuration.document) {\n this.accept = appInfo.configuration.document.fileExtensions;\n this.maxFileNameLength = Number(\n appInfo.configuration.document.maxFileNameLength\n );\n this.maxSizeInMo = Number(\n appInfo.configuration.document.maxFileSizeInMo\n );\n this.illegalCharacters =\n appInfo.configuration.document.illegalCharacters;\n }\n }\n );\n }\n\n isFileTooBig(\n fileSizeInBytes: number,\n overrideMaxSizeInMo: number\n ): boolean {\n if (!!overrideMaxSizeInMo) {\n return this.isTooBig(fileSizeInBytes, overrideMaxSizeInMo);\n }\n if (!this.maxSizeInMo) {\n return false;\n }\n return this.isTooBig(fileSizeInBytes, this.maxSizeInMo);\n }\n\n isFileTooSmall(fileSizeInBytes: number): boolean {\n if (!this.fileMinSizeInBytes) {\n return false;\n }\n return fileSizeInBytes < this.fileMinSizeInBytes;\n }\n\n isFileNameLengthValid(\n filename: string,\n overrideMaxFileNameLength: number\n ): boolean {\n const maxFileLenght = !!overrideMaxFileNameLength\n ? overrideMaxFileNameLength\n : this.maxFileNameLength;\n\n return filename.length <= maxFileLenght;\n }\n\n isFileNameNameValid(\n filename: string,\n overrideIllegalCharacters: string\n ): boolean {\n const illegalCharacters = !!overrideIllegalCharacters\n ? overrideIllegalCharacters.split(',')\n : this.illegalCharacters.split(',');\n\n let isValid = true;\n for (const illegalCharacter of illegalCharacters) {\n if (filename.includes(illegalCharacter)) {\n isValid = false;\n break;\n }\n }\n\n return isValid;\n }\n\n getFileExtension(filename: string): string {\n return `.${filename.split('.').pop()}`;\n }\n\n isFileExtensionValid(\n fileExtension: string,\n overrideAcceptedExtensions: string\n ): boolean {\n const acceptedExtensions = !!overrideAcceptedExtensions\n ? overrideAcceptedExtensions\n : this.accept;\n\n return (\n !!fileExtension &&\n acceptedExtensions\n .toUpperCase()\n .split(',')\n .includes(fileExtension.toUpperCase())\n );\n }\n\n getUniqueErrorByCode(\n name: string,\n errorCode: string,\n fileName: string,\n customErrors: { [key: string]: string },\n overrideMaxSizeInMo: number,\n overrideAcceptedExtensions: string,\n overrideMaxFileNameLength: number,\n overrideIllegalCharacters: string\n ): ErrorTemplate {\n const uniqSuffix = new Date().getTime();\n return {\n name,\n code: `${errorCode}_${uniqSuffix}`,\n message: this.replaceErrorMessageKeys(\n customErrors[errorCode],\n fileName,\n errorCode,\n overrideMaxSizeInMo,\n overrideAcceptedExtensions,\n overrideMaxFileNameLength,\n overrideIllegalCharacters\n )\n };\n }\n\n addCustomErrorOrDefault(\n name: string,\n destinationErrors: ErrorTemplate[],\n errorCode: string,\n fileName: string,\n customErrors: { [key: string]: string },\n overrideMaxSizeInMo: number,\n overrideAcceptedExtensions: string,\n overrideMaxFileNameLength: number,\n overrideIllegalCharacters: string\n ): void {\n // Check if we have a custom error to manage\n if (customErrors[errorCode]) {\n // Need to create unique error to ensure ability to display multiple error messages\n destinationErrors.push(\n this.getUniqueErrorByCode(\n name,\n errorCode,\n fileName,\n customErrors,\n overrideMaxSizeInMo,\n overrideAcceptedExtensions,\n overrideMaxFileNameLength,\n overrideIllegalCharacters\n )\n );\n } else {\n destinationErrors.push({\n name,\n code: errorCode,\n message: this.getDefaultUnknownErrorMessage(fileName)\n });\n }\n }\n\n createDefaultCustomErrors(customErrors: { [key: string]: string }): void {\n customErrors.FILENAME_TOO_LONG = this.dictionaryService.getKeySync(\n 'errors.FILENAME_TOO_LONG'\n );\n customErrors.FILE_TOO_SMALL = this.dictionaryService.getKeySync(\n 'errors.FILE_TOO_SMALL'\n );\n customErrors.PDF_PASSWORD_LOCKED = this.dictionaryService.getKeySync(\n 'errors.PDF_PASSWORD_LOCKED'\n );\n customErrors.PDF_CONTAINS_SCRIPT = this.dictionaryService.getKeySync(\n 'errors.PDF_CONTAINS_SCRIPT'\n );\n customErrors.PDF_HAS_ATTACHMENTS = this.dictionaryService.getKeySync(\n 'errors.PDF_HAS_ATTACHMENTS'\n );\n customErrors.EMPTY_PDF = this.dictionaryService.getKeySync(\n 'errors.EMPTY_PDF'\n );\n customErrors.PDF_GENERAL_PROBLEM = this.dictionaryService.getKeySync(\n 'errors.PDF_GENERAL_PROBLEM'\n );\n customErrors.PDF_HAS_RESTRICTIONS = this.dictionaryService.getKeySync(\n 'errors.PDF_HAS_RESTRICTIONS'\n );\n customErrors.FILENAME_SHOULD_NOT_CONTAIN = this.dictionaryService.getKeySync(\n 'errors.FILENAME_SHOULD_NOT_CONTAIN'\n );\n customErrors['406'] = this.dictionaryService.getKeySync('errors.406');\n customErrors['413'] = this.dictionaryService.getKeySync('errors.413');\n customErrors['415'] = this.dictionaryService.getKeySync('errors.415');\n customErrors['422'] = this.dictionaryService.getKeySync('errors.422');\n customErrors['500'] = this.dictionaryService.getKeySync('errors.500');\n\n // MultiPartException from Zuul returns HTTP 0\n customErrors['0'] = customErrors['413'];\n }\n\n getLocalErrors(\n name: string,\n files: File[],\n customErrors: { [key: string]: string },\n overrideMaxSizeInMo: number,\n overrideAcceptedExtensions: string,\n overrideMaxFileNameLength: number,\n overrideIllegalCharacters: string\n ): ErrorTemplate[] {\n const errors: ErrorTemplate[] = [];\n\n files.forEach(file => {\n // File bad extension\n const fileExtension = this.getFileExtension(file.name);\n if (\n !this.isFileExtensionValid(\n fileExtension,\n overrideAcceptedExtensions\n )\n ) {\n // Default custom error 415 exist (see function 'createDefaultCustomErrors')\n // Need to create unique error to ensure ability to display multiple error messages\n errors.push(\n this.getUniqueErrorByCode(\n name,\n '415',\n file.name,\n customErrors,\n overrideMaxSizeInMo,\n overrideAcceptedExtensions,\n overrideMaxFileNameLength,\n overrideIllegalCharacters\n )\n );\n }\n // File name contains illegal characters\n if (\n !this.isFileNameNameValid(file.name, overrideIllegalCharacters)\n ) {\n // Default custom error FILENAME_SHOULD_NOT_CONTAIN exist (see function 'createDefaultCustomErrors')\n // Need to create unique error to ensure ability to display multiple error messages\n errors.push(\n this.getUniqueErrorByCode(\n name,\n 'FILENAME_SHOULD_NOT_CONTAIN',\n file.name,\n customErrors,\n overrideMaxSizeInMo,\n overrideAcceptedExtensions,\n overrideMaxFileNameLength,\n overrideIllegalCharacters\n )\n );\n }\n // Files too big\n if (this.isFileTooBig(file.size, overrideMaxSizeInMo)) {\n // Default custom error 413 exist (see function 'createDefaultCustomErrors')\n // Need to create unique error to ensure ability to display multiple error messages\n errors.push(\n this.getUniqueErrorByCode(\n name,\n '413',\n file.name,\n customErrors,\n overrideMaxSizeInMo,\n overrideAcceptedExtensions,\n overrideMaxFileNameLength,\n overrideIllegalCharacters\n )\n );\n }\n if (this.isFileTooSmall(file.size)) {\n // Default custom error FILE_TOO_SMALL exist (see function 'createDefaultCustomErrors')\n // Need to create unique error to ensure ability to display multiple error messages\n errors.push(\n this.getUniqueErrorByCode(\n name,\n 'FILE_TOO_SMALL',\n file.name,\n customErrors,\n overrideMaxSizeInMo,\n overrideAcceptedExtensions,\n overrideMaxFileNameLength,\n overrideIllegalCharacters\n )\n );\n }\n // File name too long (64 chars max)\n if (\n !this.isFileNameLengthValid(\n file.name,\n overrideMaxFileNameLength\n )\n ) {\n // Default custom error FILENAME_TOO_LONG exist (see function 'createDefaultCustomErrors')\n // Need to create unique error to ensure ability to display multiple error messages\n errors.push(\n this.getUniqueErrorByCode(\n name,\n 'FILENAME_TOO_LONG',\n file.name,\n customErrors,\n overrideMaxSizeInMo,\n overrideAcceptedExtensions,\n overrideMaxFileNameLength,\n overrideIllegalCharacters\n )\n );\n }\n });\n\n return errors;\n }\n\n hasLiveUploadErrors(errors: ErrorTemplate[]): boolean {\n return (\n !!errors &&\n !!(errors as ErrorTemplate[]).find(\n e =>\n e.code.startsWith('413') ||\n e.code.startsWith('415') ||\n e.code.startsWith('PDF_PASSWORD_LOCKED') ||\n e.code.startsWith('PDF_CONTAINS_SCRIPT') ||\n e.code.startsWith('PDF_HAS_ATTACHMENTS') ||\n e.code.startsWith('EMPTY_PDF') ||\n e.code.startsWith('PDF_GENERAL_PROBLEM') ||\n e.code.startsWith('PDF_HAS_RESTRICTIONS') ||\n e.code.startsWith('FILENAME_TOO_LONG') ||\n e.code.startsWith('FILE_TOO_SMALL') ||\n e.code.startsWith('FILENAME_SHOULD_NOT_CONTAIN')\n )\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types,@typescript-eslint/no-explicit-any\n preventAndStop(event: any): void {\n event.preventDefault();\n event.stopPropagation();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types\n getAllFilesCount(data: any): string {\n if (!data) {\n return null;\n }\n\n return `${data.length}`;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types\n getAllFilesSizeInMo(data: any): string {\n if (!data) {\n return null;\n }\n\n const fileSizeInBytes = data.reduce(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (totalDocSize: number, document: any) => {\n if (document.hasOwnProperty('fileSize')) {\n return totalDocSize + document.fileSize;\n }\n return totalDocSize + document.size;\n },\n 0\n );\n\n return this.toMegaOctets(fileSizeInBytes);\n }\n\n toMegaOctets(size: number): string {\n return `${(size / (1024 * 1024)).toFixed(2)}`;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types\n getTransfer(event: any): FileList {\n if (!!event.dataTransfer) {\n return event.dataTransfer.files;\n }\n return null;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types\n getGlobalInfos(data: any): string {\n return `${this.getAllFilesCount(\n data\n )} fichiers pour un total de ${this.getAllFilesSizeInMo(\n data\n )} <abbr title=\"Megaoctet\">Mo</abbr>`;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types\n showGlobalInfos(data: any, hideGlobalInfos: boolean): boolean {\n return !hideGlobalInfos && !!data && !!data.length && data.length > 1;\n }\n\n mapToDocumentReference(\n file: File,\n label: string,\n key: string,\n isMultiple: boolean,\n uniqPrefix: number,\n globalSequence: number\n ): DocumentReferenceWithFile {\n const document = new DocumentReferenceWithFile();\n\n if (isMultiple) {\n // Override key to ensures that GesDem can accept the document key (length of 64 char. max.)\n key = `doc${uniqPrefix}${globalSequence}`;\n document.key = this.normalizeKey(key);\n }\n\n document.key = key;\n document.filename = file.name;\n document.mimeType = file.type;\n document.fileSize = file.size;\n document.label = label;\n document.file = file;\n\n return document;\n }\n\n mapToFormData(\n documents: DocumentReferenceWithFile[],\n formKey: string,\n language: string\n ): FormData {\n const formData = new FormData();\n\n documents.forEach(({ file, key, label }) => {\n formData.append('keys', key);\n formData.append('labels', this.removeCommasInLabel(label));\n formData.append('files', file, file.name);\n });\n\n formData.append('formKey', formKey);\n formData.append('language', language);\n\n return formData;\n }\n\n /**\n * Commas are removed to avoid a wrong interpretation as an array of string in formData.\n *\n * @param label to be cleaned from comma\n * @returns string\n */\n removeCommasInLabel(label: string): string {\n return label.split(',').join('');\n }\n\n private isTooBig(fileSizeInBytes: number, limitInMo: number): boolean {\n return fileSizeInBytes / (1024 * 1024) > limitInMo;\n }\n\n private replaceErrorMessageKeys(\n errorMsg: string,\n fileName: string,\n errorCode: string,\n overrideMaxSizeInMo: number,\n overrideAcceptedExtensions: string,\n overrideMaxFileNameLength: number,\n overrideIllegalCharacters: string\n ): string {\n const formattedErrorMsg = errorMsg.replace('%1$s', fileName);\n\n if (errorCode.startsWith('413')) {\n // REQUEST_ENTITY_TOO_LARGE_ERROR_MSG\n const fileMaxSize = (overrideMaxSizeInMo\n ? overrideMaxSizeInMo\n : this.maxSizeInMo\n ).toString();\n return formattedErrorMsg.replace('%2$s', fileMaxSize);\n }\n if (errorCode.startsWith('415')) {\n // UNSUPPORTED_MEDIA_TYPE_ERROR_MSG\n const fileExtensions = (overrideAcceptedExtensions\n ? overrideAcceptedExtensions\n : this.accept\n )\n .toUpperCase()\n .replace(/,/g, ' ou ');\n return formattedErrorMsg.replace('%2$s', fileExtensions);\n }\n if (errorCode.startsWith('FILENAME_TOO_LONG')) {\n const maxFileNameLength = (overrideMaxFileNameLength\n ? overrideMaxFileNameLength\n : this.maxFileNameLength\n ).toString();\n return formattedErrorMsg.replace('%2$s', maxFileNameLength);\n }\n if (errorCode.startsWith('FILE_TOO_SMALL')) {\n return formattedErrorMsg.replace(\n '%2$s',\n this.fileMinSizeInBytes.toString()\n );\n }\n if (errorCode.startsWith('FILENAME_SHOULD_NOT_CONTAIN')) {\n const fileNameIllegalCharacters = (overrideIllegalCharacters\n ? overrideIllegalCharacters\n : this.illegalCharacters\n ).replace(/,/g, '');\n return formattedErrorMsg.replace('%2$s', fileNameIllegalCharacters);\n }\n return formattedErrorMsg;\n }\n\n private getDefaultUnknownErrorMessage(fileName: string): string {\n const msg = 'Impossible de transmettre le fichier';\n if (!!fileName && !!fileName.length) {\n return `${msg} ${fileName}.`;\n }\n return `${msg}.`;\n }\n\n /**\n * @param key to be normalized\n * @returns string\n */\n private normalizeKey(key: string): string {\n return key ? key.toLowerCase().replace(this.CHAR_TO_REPLACE, '') : null;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { catchError, map, tap } from 'rxjs/operators';\nimport { EMPTY, Observable, throwError } from 'rxjs';\nimport { DocumentsWithErrors } from './multi-upload.type';\nimport { GrowlType } from '../../foehn-growl/growl-types';\nimport { GrowlBrokerService } from '../../foehn-growl/growl-broker.service';\nimport { GesdemEventService } from '../../gesdem/gesdem-event.service';\nimport { GesdemHandlerService } from '../../gesdem/gesdem-handler.service';\nimport { DocumentReference } from '../document-reference';\nimport { ApplicationInfoService } from '../../sdk-appinfo/application-info.service';\nimport { SdkDictionaryService } from '../../sdk-dictionary/sdk-dictionary.service';\nimport { UploaderHelper } from '../uploader.helper';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MultiUploadService {\n private reference: string;\n\n // A way to have a unique Id per file\n private globalSequence = 0;\n private uniqPrefix = new Date().getTime();\n private uploaderHelper: UploaderHelper;\n\n constructor(\n private httpClient: HttpClient,\n private growlService: GrowlBrokerService,\n private gesdemEventService: GesdemEventService,\n private gesdemHandlerService: GesdemHandlerService,\n private applicationInfoService: ApplicationInfoService,\n private dictionaryService: SdkDictionaryService\n ) {\n this.gesdemEventService.formInitializationObservable().subscribe(() => {\n this.reference = this.gesdemHandlerService.lastResponse.meta.reference;\n });\n this.uploaderHelper = new UploaderHelper(\n dictionaryService,\n applicationInfoService\n );\n }\n\n uploadDocuments(\n baseUrl: string,\n formKey: string,\n label: string,\n files: File[],\n key: string,\n isMultiple: boolean,\n language: string\n ): Observable<DocumentsWithErrors> {\n if (this.reference) {\n const documents = files.map(file =>\n this.uploaderHelper.mapToDocumentReference(\n file,\n label,\n key,\n isMultiple,\n this.uniqPrefix,\n this.globalSequence++\n )\n );\n const formData = this.uploaderHelper.mapToFormData(\n documents,\n formKey,\n language\n );\n const url = `${baseUrl}/upload/${this.reference}`;\n return this.httpClient\n .post<DocumentsWithErrors>(url, formData)\n .pipe(\n tap(result => {\n const successfulDocumentsCount =\n result.documents && result.documents.length;\n if (successfulDocumentsCount) {\n const message = `${successfulDocumentsCount} fichier(s) sauvegardé(s) avec succès`;\n this.growlService.addWithType(\n GrowlType.SUCCESS,\n message\n );\n }\n }),\n catchError((e: unknown) => {\n const message =\n 'Une erreur est survenue lors de la transmission de vos documents';\n this.growlService.addWithType(\n GrowlType.DANGER,\n message\n );\n return throwError(e);\n })\n );\n }\n\n return EMPTY;\n }\n\n deleteDocument(\n baseUrl: string,\n document: DocumentReference\n ): Observable<DocumentReference> {\n const { reference } = this.gesdemHandlerService.lastResponse.meta;\n const url = `${baseUrl}/delete/${reference}/doc/${document.reference}`;\n\n return this.httpClient.delete(url).pipe(\n // Reflect the document once the update is done to ease chaining observables.\n map(() => document),\n tap(() => {\n const message = `Suppression du fichier ${document.filename} réussie`;\n this.growlService.addWithType(GrowlType.SUCCESS, message);\n }),\n catchError((e: unknown) => {\n const message =\n 'Une erreur est survenue lors de la suppression de votre document';\n this.growlService.addWithType(GrowlType.DANGER, message);\n return throwError(e);\n })\n );\n }\n\n getDownloadUrl(baseUrl: string, document: DocumentReference): string {\n return `${baseUrl}/download/${this.reference}/doc/${document.reference}`;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { PendingFiles } from '../pending-upload.type';\nimport { MultiUploadService } from './multi-upload.service';\nimport { filter, map } from 'rxjs/operators';\nimport { GesdemHandlerService } from '../../gesdem/gesdem-handler.service';\nimport { GesdemEventService } from '../../gesdem/gesdem-event.service';\nimport { DocumentsWithErrors } from './multi-upload.type';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PendingUploadService {\n private pendingFilesByFormKey = new Map<string, PendingFiles>();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private attachmentsUploadedSubject = new Subject<any>();\n private pendingUploadedErrorsSubject = new Subject<DocumentsWithErrors>();\n\n constructor(\n private multiUploadService: MultiUploadService,\n private gesdemService: GesdemHandlerService,\n private gesdemEventService: GesdemEventService\n ) {\n this.gesdemEventService.formInitializationSubject\n .pipe(\n // Get the current reference\n map(form => [\n form,\n this.gesdemService.lastResponse.meta.reference\n ]),\n // We only want to upload the documents if there is now a reference\n filter(reference => !!reference),\n // It only makes sense to upload the document if there are pending documents.\n filter(() => !!this.pendingFilesByFormKey.size)\n )\n .subscribe(([form]) => {\n this.uploadPendingFilesAndSaveForm(form);\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get attachmentsUploaded(): Observable<any> {\n return this.attachmentsUploadedSubject.asObservable();\n }\n\n get pendingUploadedErrors(): Observable<DocumentsWithErrors> {\n return this.pendingUploadedErrorsSubject.asObservable();\n }\n\n getPendingFiles(formKey: string): File[] {\n if (this.pendingFilesByFormKey.get(formKey)) {\n return this.pendingFilesByFormKey.get(formKey).files;\n }\n return [];\n }\n\n hasPendingFiles(formKey: string = null): boolean {\n // No formKey, we return global size of pending files\n if (!formKey) {\n return !!this.pendingFilesByFormKey.size;\n }\n // Check if we have something on formKey and associated files\n if (\n !this.pendingFilesByFormKey.get(formKey) ||\n !this.pendingFilesByFormKey.get(formKey).files\n ) {\n return false;\n }\n // Return true if at least one files for a given formKey exist\n return !!this.pendingFilesByFormKey.get(formKey).files.length;\n }\n\n addPendingFiles(\n baseUrl: string,\n formKey: string,\n label: string,\n files: File[],\n key: string,\n isMultiple: boolean\n ): void {\n // Initialize pending files by formKey\n if (!this.hasPendingFiles(formKey)) {\n this.pendingFilesByFormKey.set(formKey, new PendingFiles());\n this.pendingFilesByFormKey.get(formKey).files = [];\n }\n // Set pending informations\n this.pendingFilesByFormKey.get(formKey).url = baseUrl;\n this.pendingFilesByFormKey.get(formKey).formKey = formKey;\n this.pendingFilesByFormKey.get(formKey).label = label;\n this.pendingFilesByFormKey.get(formKey).files = [\n ...this.pendingFilesByFormKey.get(formKey).files,\n ...files\n ];\n this.pendingFilesByFormKey.get(formKey).key = key;\n this.pendingFilesByFormKey.get(formKey).isMultiple = isMultiple;\n }\n\n removePendingFile(file: File, formKey: string): void {\n if (this.hasPendingFiles(formKey)) {\n const index = this.pendingFilesByFormKey\n .get(formKey)\n .files.indexOf(file);\n this.pendingFilesByFormKey.get(formKey).files.splice(index, 1);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private uploadPendingFilesAndSaveForm(form: any): void {\n const filesToUpload = new Map(this.pendingFilesByFormKey);\n const mergedResponse: DocumentsWithErrors = new DocumentsWithErrors();\n\n filesToUpload.forEach((pendingFiles, formKey) => {\n this.multiUploadService\n .uploadDocuments(\n pendingFiles.url,\n formKey,\n pendingFiles.label,\n pendingFiles.files,\n pendingFiles.key,\n pendingFiles.isMultiple,\n form.language\n )\n .subscribe(\n (response: DocumentsWithErrors) => {\n // Merge all uploads response\n this.mergePendingUploadedServerResult(\n mergedResponse,\n response\n );\n // set the document in the form\n this.setNestedValue(\n form,\n pendingFiles.formKey,\n response.documents\n );\n this.pendingFilesByFormKey.delete(formKey);\n // save the form when every document has been uploaded\n if (this.pendingFilesByFormKey.size === 0) {\n // eslint-disable-next-line rxjs/no-nested-subscribe\n this.gesdemService.save(form).subscribe(() => {\n this.attachmentsUploadedSubject.next(form);\n // Dispatch errors coming from server\n if (!!mergedResponse.errors.length) {\n this.pendingUploadedErrorsSubject.next(\n mergedResponse\n );\n }\n });\n }\n },\n () => {\n this.pendingFilesByFormKey.delete(formKey);\n }\n );\n });\n }\n\n private mergePendingUploadedServerResult(\n mergedResponse: DocumentsWithErrors,\n serverResponse: DocumentsWithErrors\n ): void {\n // Initialize arrays when needed\n if (!mergedResponse.documents) {\n mergedResponse.documents = [];\n }\n // Initialize arrays when needed\n if (!mergedResponse.errors) {\n mergedResponse.errors = [];\n }\n\n // Merge all uploads response\n mergedResponse.documents = [\n ...mergedResponse.documents,\n ...(serverResponse.documents || [])\n ];\n mergedResponse.errors = [\n ...mergedResponse.errors,\n ...(serverResponse.errors || [])\n ];\n }\n\n private setNestedValue(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n obj: any,\n path: string | string[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: any\n ): void {\n if (typeof path === 'string') {\n path = path.split('.');\n }\n if (path.length > 1) {\n this.setNestedValue(obj[path.shift()], path, value);\n } else {\n obj[path[0]] = value;\n }\n }\n}\n","import {\n AfterViewInit,\n Directive,\n OnDestroy,\n OnInit,\n ViewChild\n} from '@angular/core';\nimport { GesdemHandlerService } from './gesdem/gesdem-handler.service';\nimport { FoehnNavigationService } from './foehn-navigation/foehn-navigation.service';\nimport { FoehnFormComponent } from './foehn-form/foehn-form.component';\nimport { Observable, of, Subscription } from 'rxjs';\nimport { ServiceLocator } from './service-locator';\nimport { ActivatedRoute } from '@angular/router';\nimport { GrowlBrokerService } from './foehn-growl/growl-broker.service';\nimport { ValidationHandlerService } from './validation/validation-handler.service';\nimport { GesdemEventService } from './gesdem/gesdem-event.service';\nimport { BreadcrumbEventService } from './foehn-breadcrumb/breadcrumb-event.service';\nimport { FoehnPageService } from './foehn-page/foehn-page.service';\nimport { mergeMap, share, throttleTime } from 'rxjs/operators';\nimport { ActionStatut, GesdemStatutUtils } from './gesdem/gesdem-statut-utils';\nimport { PendingUploadService } from './foehn-upload/foehn-multi-upload/pending-upload.service';\nimport { I18nForm } from './i18n-form';\nimport { SdkDictionaryService } from './sdk-dictionary/sdk-dictionary.service';\n\n/**\n * Ensures that a call is only subscribed and send one at the time.\n *\n * @param fn function to be called as concurrent safe\n * @returns Observable\n */\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions\nfunction getConcurrentSafeCall<T>(fn: () => Observable<T>): Observable<T> {\n return of(true).pipe(\n // To guard from double-click\n throttleTime(200),\n // flatmap(fn, 1) ensures that only one query is ran at the same time\n mergeMap(fn, 1),\n // As this observable is used as a Promise (with subscribe), this ensures that\n // the operators above can be shared between each subscribe.\n share()\n );\n}\n\n@Directive()\nexport abstract class AbstractPageComponent<T extends I18nForm>\n implements OnInit, OnDestroy, AfterViewInit {\n @ViewChild(FoehnFormComponent, { static: true })\n foehnFormComponent: FoehnFormComponent;\n\n form: T;\n reference: string;\n\n protected pageTitleSubscription: Subscription;\n protected updateFormDataSubjectSubscription: Subscription;\n protected attachmentsSingleUploadedSubscription: Subscription;\n protected attachmentsMultiUploadedSubscription: Subscription;\n protected saveFormRequestSubscription: Subscription;\n protected _gesdemService: GesdemHandlerService;\n protected _gesdemEventService: GesdemEventService;\n protected _navigation: FoehnNavigationService;\n protected _activatedRoute: ActivatedRoute;\n protected _growlService: GrowlBrokerService;\n protected _validationHandlerService: ValidationHandlerService;\n protected _breadcrumbEventService: BreadcrumbEventService;\n protected _foehnPageService: FoehnPageService;\n protected _dictionaryService: SdkDictionaryService;\n\n private _pendingUploadService: PendingUploadService;\n private _formInitSubscription: Subscription;\n private _currentLangSubscription: Subscription;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private sendForFormConcurrentSafe: Observable<any>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private transmitConcurrentSafe: Observable<any>;\n\n constructor(protected activatedRoute: ActivatedRoute) {\n this._gesdemService = ServiceLocator.injector.get(GesdemHandlerService);\n this._gesdemEventService = ServiceLocator.injector.get(\n GesdemEventService\n );\n this._navigation = ServiceLocator.injector.get(FoehnNavigationService);\n this._activatedRoute = ServiceLocator.injector.get(ActivatedRoute);\n this._growlService = ServiceLocator.injector.get(GrowlBrokerService);\n this._validationHandlerService = ServiceLocator.injector.get(\n ValidationHandlerService\n );\n this._pendingUploadService = ServiceLocator.injector.get(\n PendingUploadService\n );\n this._breadcrumbEventService = ServiceLocator.injector.get(\n BreadcrumbEventService\n );\n this._foehnPageService = ServiceLocator.injector.get(FoehnPageService);\n\n this._dictionaryService = ServiceLocator.injector.get(\n SdkDictionaryService\n );\n\n this._currentLangSubscription = this._dictionaryService\n .getCurrentLanguageCode()\n .subscribe(languageCode => {\n if (this.form) {\n this.form.language = languageCode;\n }\n });\n\n const route = FoehnNavigationService.getRootRouteRecursive(\n activatedRoute.snapshot\n );\n this._navigation.initRoute(route);\n this._formInitSubscription = this._gesdemEventService\n .formInitializationObservable()\n .subscribe(() => {\n this.reference =\n this._gesdemService.lastResponse &&\n this._gesdemService.lastResponse.meta.reference;\n const statut =\n this._gesdemService.lastResponse &&\n this._gesdemService.lastResponse.meta.statut;\n const shouldPreventNavigationToLast =\n activatedRoute.snapshot.data\n .preventNavigationToLastOnTransferred === true;\n\n const languageCode =\n this._gesdemService.lastResponse &&\n this._gesdemService.lastResponse.form &&\n this._gesdemService.lastResponse.form.language;\n\n this._dictionaryService.changeLanguage(languageCode);\n\n if (\n !shouldPreventNavigationToLast &&\n this.reference &&\n GesdemStatutUtils.isFinal(\n ActionStatut[statut as ActionStatut]\n )\n ) {\n this._navigation.last();\n }\n });\n\n // Protects the save method on the GesdemService from concurrent access.\n this.sendForFormConcurrentSafe = getConcurrentSafeCall(() =>\n this._gesdemService.save(this.form)\n );\n\n // Protects the transmit method on the GesdemService from concurrent access.\n this.transmitConcurrentSafe = getConcurrentSafeCall(() =>\n this._gesdemService.transmit()\n );\n }\n\n ngOnInit(): void {\n this.gotToTop();\n this.form = this.newForm();\n\n this._validationHandlerService.shouldDisplayErrors(false);\n\n this.updateFormDataSubjectSubscription = this._gesdemService.updateFormDataSubject.subscribe(\n form => {\n this.form = form;\n this._gesdemEventService.formInitializationSubject.next(form);\n }\n );\n\n this.attachmentsMultiUploadedSubscription = this._pendingUploadService.attachmentsUploaded.subscribe(\n form => {\n this.form = form;\n // PRESTAKIT-309: set back shouldDisplayErrors to true once files have been uploaded\n this._validationHandlerService.shouldDisplayErrors(true);\n this.onFormSent(true);\n }\n );\n\n this.saveFormRequestSubscription = this._foehnPageService\n .saveFormRequest()\n .subscribe(() => this.send(false));\n }\n\n ngAfterViewInit(): void {\n // @see https://github.com/angular/angular/issues/17572#issuecomment-323465737\n Promise.resolve(null).then(() => {\n this._gesdemService.require().subscribe();\n });\n }\n\n ngOnDestroy(): void {\n if (this._currentLangSubscription) {\n this._currentLangSubscription.unsubscribe();\n }\n\n if (this.pageTitleSubscription) {\n this.pageTitleSubscription.unsubscribe();\n }\n\n if (this.updateFormDataSubjectSubscription) {\n this.updateFormDataSubjectSubscription.unsubscribe();\n }\n\n if (this.attachmentsSingleUploadedSubscription) {\n this.attachmentsSingleUploadedSubscription.unsubscribe();\n }\n\n if (this.attachmentsMultiUploadedSubscription) {\n this.attachmentsMultiUploadedSubscription.unsubscribe();\n }\n\n if (this._formInitSubscription) {\n this._formInitSubscription.unsubscribe();\n }\n\n if (this.saveFormRequestSubscription) {\n this.saveFormRequestSubscription.unsubscribe();\n }\n }\n\n send(goToNextPage: boolean = true): void {\n if (this._pendingUploadService.hasPendingFiles()) {\n goToNextPage = false;\n // PRESTAKIT-309: shouldDisplayErrors will be set back to true in 'attachmentsUploaded' subscription\n } else {\n this._validationHandlerService.shouldDisplayErrors(true);\n }\n this.sendForFormConcurrentSafe.subscribe(() =>\n this.onFormSent(goToNextPage)\n );\n }\n\n transmit(): void {\n this._validationHandlerService.shouldDisplayErrors(true);\n this.transmitConcurrentSafe.subscribe(() => {\n if (!this._gesdemService.lastResponse.errors.length) {\n this._gesdemEventService.formTransmittedSubject.next(\n this._gesdemService.lastResponse\n );\n this._navigation.next();\n }\n }, console.error);\n }\n\n sendAndTransmit(): void {\n const sentSubscription: Subscription = this._gesdemEventService\n .formSentObservable()\n .subscribe(\n response => {\n if (!response.errors.length && !response.meta.critical) {\n if (!this.checkHasPendingsFilesBeforeTransmit()) {\n this.transmit();\n }\n }\n sentSubscription.unsubscribe();\n },\n () => sentSubscription.unsubscribe()\n );\n\n this.send(false);\n }\n\n previous(): void {\n this._navigation.previous();\n }\n\n protected setPageTitle(pageTitle: string): void {\n this._foehnPageService.setPageTitle(pageTitle);\n this._breadcrumbEventService.setCurrentBreadcrumb({\n url: null,\n routerLink: null,\n label: pageTitle\n });\n }\n\n protected setPageTitleAsync(pageTitle: Observable<string>): void {\n if (this.pageTitleSubscription) {\n this.pageTitleSubscription.unsubscribe();\n }\n this.pageTitleSubscription = pageTitle.subscribe(title =>\n this.setPageTitle(title)\n );\n }\n\n protected onFormSent(goToNextPage: boolean): void {\n if (this.foehnFormComponent) {\n // Some pages don't have a form.\n this.foehnFormComponent.reset();\n }\n\n this._navigation.current().then(() => {\n const isValid =\n // Some pages don't have a form.\n this.foehnFormComponent &&\n this.foehnFormComponent.isValid() &&\n !this._gesdemService.lastResponse.meta.critical;\n\n if (isValid) {\n this._validationHandlerService.shouldDisplayErrors(false);\n }\n\n this._gesdemEventService.formSentSubject.next(\n this._gesdemService.lastResponse\n );\n\n if (isValid && goToNextPage) {\n this._navigation.next();\n } else if (!isValid && this.foehnFormComponent) {\n this.foehnFormComponent.focusErrorSummary();\n }\n }, console.error);\n }\n\n private checkHasPendingsFilesBeforeTransmit(): boolean {\n if (this._pendingUploadService.hasPendingFiles()) {\n const multiUploadAttachmentSubscription = this._pendingUploadService.attachmentsUploaded.subscribe(\n () => {\n multiUploadAttachmentSubscription.unsubscribe();\n this.transmit();\n }\n );\n return true;\n }\n return false;\n }\n\n private gotToTop(): void {\n window.scrollTo(0, 0);\n }\n\n abstract newForm(): T;\n}\n","export class I18nForm {\n language = 'fr';\n acceptDecisionElectronique: boolean;\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { SupportAlert } from './support-alert.model';\nimport {\n BehaviorSubject,\n combineLatest,\n interval,\n merge,\n Observable,\n Subscription\n} from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport { filter, map, shareReplay, switchMap } from 'rxjs/operators';\n\nconst ALERTS_REFRESH_SECONDS = 5 * 60;\n\n// Shared between prestations.\nconst STORAGE_KEY = 'hidden-alerts';\n\n/**\n * @param ids alert ids to be dismissed\n */\nconst persistDismissedAlertIds = (ids: number[]): void => {\n try {\n localStorage.setItem(STORAGE_KEY, JSON.stringify(ids));\n } catch (e) {\n // Nothing in case the local storage fails.\n }\n};\n\n/**\n * @returns array\n */\nconst getPersistedDismissedAlertIds = (): number[] => {\n try {\n const storageValue = localStorage.getItem(STORAGE_KEY);\n if (!storageValue) {\n return [];\n }\n\n return JSON.parse(storageValue);\n } catch (e) {\n // In case the storage fails, we don't want to impact the user.\n return [];\n }\n};\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SupportAlertService implements OnDestroy {\n private readonly allAlerts: Observable<SupportAlert[]>;\n private readonly displayableAlerts: Observable<SupportAlert[]>;\n private readonly hasAlerts: Observable<boolean>;\n private readonly hasHiddenAlerts: Observable<boolean>;\n private readonly hasAtLeastOneBlockingAlert: Observable<boolean>;\n private readonly hiddenAlertIds = new BehaviorSubject<number[]>(\n getPersistedDismissedAlertIds()\n );\n private readonly hiddenAlertIdsSubscriptions: Subscription;\n private readonly refreshTrigger = new BehaviorSubject<boolean>(true);\n private readonly refreshInterval = interval(ALERTS_REFRESH_SECONDS * 1000);\n\n private supportAlertUrl = new BehaviorSubject<string>('');\n\n constructor(private http: HttpClient) {\n // This ensures that we load the alerts when the page loads and at every configured interval.\n const refreshAlertsTriggerAndTimer = merge(\n this.refreshTrigger,\n this.refreshInterval\n );\n\n this.allAlerts = combineLatest([\n this.supportAlertUrl,\n refreshAlertsTriggerAndTimer\n ]).pipe(\n // Only if an url is defined\n filter(([url]) => !!url),\n // Load the alerts from the server.\n switchMap(([url]) => this.http.get<SupportAlert[]>(url)),\n map(supportAlerts => (!!supportAlerts ? supportAlerts : [])),\n // Ensures that observables that depend on this one don't re-trigger an http call.\n shareReplay(1)\n );\n\n this.hasAlerts = this.allAlerts.pipe(map(alerts => !!alerts.length));\n\n this.hasAtLeastOneBlockingAlert = this.allAlerts.pipe(\n map(alerts => alerts.some(alert => alert.blocking))\n );\n\n this.displayableAlerts = combineLatest([\n this.allAlerts,\n this.hiddenAlertIds\n ]).pipe(\n // Filter the alerts that are hidden by the user, per Id.\n map(([alerts, hiddenAlertsId]) =>\n // Always display the blocking alerts, in case the alert is hidden but edited.\n alerts.filter(\n alert =>\n alert.blocking || !hiddenAlertsId.includes(alert.id)\n )\n )\n );\n\n this.hasHiddenAlerts = combineLatest([\n this.allAlerts,\n this.displayableAlerts\n ]).pipe(\n map(\n ([allAlerts, displayableAlerts]) =>\n allAlerts.length !== displayableAlerts.length\n )\n );\n\n // Persist the ids that are dismissed.\n this.hiddenAlertIdsSubscriptions = this.hiddenAlertIds.subscribe(\n persistDismissedAlertIds\n );\n }\n\n ngOnDestroy(): void {\n this.hiddenAlertIdsSubscriptions.unsubscribe();\n }\n\n setSupportAlertUrl(supportAlertUrl: string): void {\n this.supportAlertUrl.next(supportAlertUrl);\n }\n\n hideAlert(alert: SupportAlert): void {\n if (!alert.blocking) {\n this.hiddenAlertIds.next([\n alert.id,\n ...this.hiddenAlertIds.getValue()\n ]);\n }\n }\n\n restoreAllAlerts(): void {\n this.hiddenAlertIds.next([]);\n }\n\n refreshAlerts(): void {\n this.refreshTrigger.next(true);\n }\n\n getDisplayableAlerts(): Observable<SupportAlert[]> {\n return this.displayableAlerts;\n }\n\n getHasAlerts(): Observable<boolean> {\n return this.hasAlerts;\n }\n\n getHasHiddenAlerts(): Observable<boolean> {\n return this.hasHiddenAlerts;\n }\n\n getHasAtLeastOneBlockingAlert(): Observable<boolean> {\n return this.hasAtLeastOneBlockingAlert;\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { Address } from './address.type';\n\n@Component({\n selector: 'foehn-display-address',\n templateUrl: './foehn-display-address.component.html',\n styleUrls: ['./foehn-display-address.component.css']\n})\nexport class FoehnDisplayAddressComponent {\n @Input()\n address: Address;\n\n /**\n * Get the address lines formatted.\n *\n * ref. https://portail.etat-de-vaud.ch/outils/dsiwiki/display/Cyberadministration/Gestion+des+adresses+dans+ES\n * Model Address explication: https://portail.etat-de-vaud.ch/outils/dsiwiki/pages/viewpage.action?pageId=747765834\n *\n * @param address as Address\n * @returns any[]\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getLines(address: Address): any[] {\n if (!address) {\n return [];\n }\n\n const {\n addressLine1,\n addressLine2,\n postOfficeBoxText,\n postOfficeBoxNumber,\n street,\n houseNumber,\n dwellingNumber,\n locality,\n country\n } = address;\n\n const lines = [];\n\n if (addressLine1) {\n lines.push(addressLine1);\n }\n\n if (addressLine2) {\n lines.push(addressLine2);\n }\n\n if (street && street.longName) {\n let streetLine = `${street.longName}`;\n if (!!houseNumber && houseNumber.length) {\n streetLine += ` ${houseNumber}`;\n }\n if (!!dwellingNumber && dwellingNumber.length) {\n streetLine += ` ${dwellingNumber}`;\n }\n lines.push(streetLine);\n }\n\n if (postOfficeBoxText || postOfficeBoxNumber) {\n const postOfficeBoxLine = `${postOfficeBoxText || ''} ${\n postOfficeBoxNumber || ''\n }`.trim();\n if (postOfficeBoxLine.length) {\n lines.push(postOfficeBoxLine);\n }\n }\n\n if (locality && (locality.zipCode || locality.longName)) {\n const zipCodeStr = locality.zipCode;\n const longNameStr = locality.longName;\n let localityStr = '';\n\n if (zipCodeStr) {\n localityStr += zipCodeStr;\n }\n\n if (longNameStr) {\n localityStr +=\n localityStr.length > 0 ? ` ${longNameStr}` : longNameStr;\n }\n lines.push(`${localityStr}`);\n }\n\n if (country && country.shortNameFr) {\n lines.push(country.shortNameFr);\n }\n\n return lines;\n }\n}\n","<address class=\"foehn-address\" *ngIf=\"address\">\n <div *ngFor=\"let addressLine of getLines(address)\">{{ addressLine }}</div>\n</address>\n","import { Component, Input } from '@angular/core';\nimport {\n FoehnRecapSection,\n FoehnRecapSectionElement\n} from './foehn-recap-section.type';\nimport { Address } from '../foehn-address/address.type';\n\n@Component({\n selector: 'foehn-recap-section',\n templateUrl: './foehn-recap-section.component.html'\n})\nexport class FoehnRecapSectionComponent {\n @Input()\n data: FoehnRecapSection;\n\n @Input()\n acceptEmptyValues = false;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n cleanValue(element: FoehnRecapSectionElement): any {\n return this.fixLineBreaks(this.formatEmptyValue(element));\n }\n\n atLeastOneElementHasContent(data: FoehnRecapSection): boolean {\n if (!data) {\n return false;\n }\n\n return data.elements.some(element => this.hasContent(element));\n }\n\n hasContent(element: FoehnRecapSectionElement): boolean {\n return (\n !!element &&\n (this.acceptEmptyValues ||\n element.acceptEmptyValue ||\n this.isSet(element.value))\n );\n }\n\n buildId(element: FoehnRecapSectionElement): string {\n if (!element) {\n return null;\n }\n\n // To instrument the DOM for automated testing, an ID is required\n // on the value (dd).\n return element.id || `${this.data.titleKey || ''}.${element.key || ''}`;\n }\n\n isAddress(element: FoehnRecapSectionElement): boolean {\n if (!element) {\n return null;\n }\n\n // instanceof work only with interface\n // (See https://stackoverflow.com/questions/45964008/typescript-instanceof-not-working/47204039#47204039).\n // But we can check if value is object and has properties mandatory for an address\n if (!!element.value && typeof element.value === 'object') {\n return (\n element.value.hasOwnProperty('country') &&\n element.value.hasOwnProperty('locality') &&\n element.value.hasOwnProperty('street')\n );\n }\n\n return false;\n }\n\n private formatEmptyValue(\n element: FoehnRecapSectionElement\n ): string | number | Address {\n if (\n (this.acceptEmptyValues || element.acceptEmptyValue) &&\n !this.isSet(element.value)\n ) {\n return '-';\n }\n\n if (element.value === true) {\n return 'Oui';\n } else if (element.value === false) {\n return 'Non';\n } else {\n return element.value;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private fixLineBreaks(value: any): any {\n if (!value || typeof value.replace !== 'function') {\n return value;\n }\n\n return value.replace(/\\r?\\n|\\r/g, '<br/>');\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private isSet(value: any): boolean {\n return !!value || value === 0 || value === false;\n }\n}\n","<section class=\"mb-3 p-1 bg-light\" *ngIf=\"atLeastOneElementHasContent(data)\">\n <h2 class=\"h4 mb-3 pl-1\" [innerHTML]=\"data.titleKey | fromDictionary\"></h2>\n <dl class=\"medium row mr-0 ml-0 pl-3 pr-3\">\n <ng-container *ngFor=\"let element of data.elements\">\n <dt\n *ngIf=\"hasContent(element)\"\n class=\"col-md-4 font-weight-light border-top border-grey p-1 text-break\"\n [innerHTML]=\"element.key | fromDictionary\"\n ></dt>\n <dd\n [id]=\"buildId(element)\"\n *ngIf=\"!isAddress(element) && hasContent(element)\"\n class=\"col-md-8 font-weight-light border-top border-grey p-1 text-break\"\n [innerHTML]=\"cleanValue(element)\"\n ></dd>\n <dd\n [id]=\"buildId(element)\"\n *ngIf=\"isAddress(element) && hasContent(element)\"\n class=\"col-md-8 font-weight-light border-top border-grey p-1 text-break\"\n >\n <foehn-display-address\n [address]=\"element.value\"\n ></foehn-display-address>\n </dd>\n </ng-container>\n </dl>\n</section>\n","import { AfterViewInit, Component } from '@angular/core';\nimport { combineLatest, Observable } from 'rxjs';\nimport { ApplicationInfoService } from '../sdk-appinfo/application-info.service';\nimport { SessionInfo } from '../sdk-session-info/session-info.service';\nimport { first, map } from 'rxjs/operators';\nimport { FoehnRecapSectionElement } from '../foehn-recap-section/foehn-recap-section.type';\nimport { DatePipe } from '@angular/common';\n\nconst DATE_TIME_FORMAT = 'dd.MM.yyyy HH:mm:ss';\n\n@Component({\n selector: 'foehn-debug-summary',\n templateUrl: './foehn-debug-summary.component.html'\n})\nexport class FoehnDebugSummaryComponent implements AfterViewInit {\n debugInfos: Observable<FoehnRecapSectionElement[]>;\n initDate: Date = new Date();\n\n constructor(\n private applicationInfoService: ApplicationInfoService,\n private sessioninfo: SessionInfo,\n private datePipe: DatePipe\n ) {\n this.debugInfos = combineLatest([\n this.applicationInfoService.data.pipe(first()),\n this.sessioninfo.data.pipe(first())\n ]).pipe(\n map(([appInfo, sessionInfo]) => {\n const debugInfos: FoehnRecapSectionElement[] = [];\n\n debugInfos.push({\n key: 'Environnement',\n value: appInfo.environment\n });\n debugInfos.push({ key: 'Version', value: appInfo.version });\n debugInfos.push({\n key: 'User-Agent',\n value: navigator.userAgent\n });\n\n if (!!sessionInfo) {\n debugInfos.push({\n key: 'Context',\n value: sessionInfo.context\n });\n }\n\n return debugInfos;\n })\n );\n }\n\n ngAfterViewInit(): void {\n this.initDate = new Date();\n }\n\n get elements(): Observable<FoehnRecapSectionElement[]> {\n return this.debugInfos.pipe(\n map(debugInfos => {\n debugInfos.unshift({\n key: 'Horodatage',\n value: this.datePipe.transform(\n this.initDate,\n DATE_TIME_FORMAT\n )\n });\n return debugInfos;\n })\n );\n }\n}\n","<foehn-recap-section\n *ngIf=\"elements | async as el\"\n [data]=\"{ titleKey: 'Informations pour le support', elements: el }\"\n></foehn-recap-section>\n","import { FoehnInputComponent } from './foehn-input.component';\nimport { Input, Directive } from '@angular/core';\n\n@Directive()\nexport abstract class FoehnInputStringComponent extends FoehnInputComponent<string> {\n @Input()\n trimOnBlur = true;\n\n onBlur(e: FocusEvent): void {\n if (this.trimOnBlur && this.model) {\n this.model = this.model.trim();\n }\n super.onBlur(e);\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { FoehnInputComponent } from '../foehn-input/foehn-input.component';\nimport { ErrorTemplate } from '../error-template';\nimport { ValidationHandlerService } from '../validation/validation-handler.service';\n\n@Component({\n selector: 'foehn-validation-alerts',\n templateUrl: './foehn-validation-alerts.component.html'\n})\nexport class FoehnValidationAlertsComponent {\n @Input()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n component: FoehnInputComponent<any>;\n\n @Input()\n shouldErrorsBeLive = false;\n\n constructor(private validationHandlerService: ValidationHandlerService) {}\n\n get errorMessages(): ErrorTemplate[] {\n return this.component.errors;\n }\n\n getMessage(error: ErrorTemplate): string {\n return this.validationHandlerService.getMessage(this.component, error);\n }\n}\n","<div\n [attr.id]=\"component.buildId() + 'ErrorsContainer'\"\n class=\"form-control-feedback text-danger\"\n [attr.role]=\"shouldErrorsBeLive ? 'alert' : null\"\n [attr.aria-live]=\"shouldErrorsBeLive ? 'assertive' : null\"\n [attr.aria-atomic]=\"shouldErrorsBeLive ? 'true' : null\"\n>\n <div\n *ngIf=\"component.hasErrorsToDisplay()\"\n [id]=\"component.buildId() + 'Errors'\"\n >\n <p *ngFor=\"let error of errorMessages\">\n <span class=\"sr-only\">Erreur:</span>\n <span [innerHTML]=\"getMessage(error)\"></span>\n </p>\n </div>\n</div>\n","import { Input, Directive } from '@angular/core';\nimport { IconDefinition } from '@fortawesome/fontawesome-common-types';\n\n@Directive()\nexport abstract class AbstractIconComponent {\n @Input()\n title: string;\n\n abstract iconName: IconDefinition;\n abstract defaultTitle: string;\n}\n","import { Component } from '@angular/core';\nimport { AbstractIconComponent } from './abstract-icon-component';\nimport { faTimes } from '@fortawesome/free-solid-svg-icons';\n\n@Component({\n selector: 'foehn-icon-times',\n templateUrl: './foehn-icon.component.html'\n})\nexport class FoehnIconTimesComponent extends AbstractIconComponent {\n iconName = faTimes;\n defaultTitle = 'Croix';\n}\n","<fa-icon\n aria-hidden=\"true\"\n [title]=\"title ? title : defaultTitle\"\n [icon]=\"iconName\"\n></fa-icon>\n<span class=\"sr-only\">{{ title ? title : defaultTitle }}</span>\n","import { Component, forwardRef, Input } from '@angular/core';\nimport { FoehnInputStringComponent } from './foehn-input-string.component';\nimport { FoehnInputComponent } from './foehn-input.component';\n\n@Component({\n selector: 'foehn-input-text',\n templateUrl: './foehn-input.component.html',\n styleUrls: ['./foehn-input.component.css'],\n providers: [\n {\n provide: FoehnInputComponent,\n useExisting: forwardRef(() => FoehnInputTextComponent),\n multi: true\n }\n ]\n})\nexport class FoehnInputTextComponent extends FoehnInputStringComponent {\n @Input()\n numberOnly: boolean;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n timeoutReference: any;\n\n onKeydown(event: KeyboardEvent): void {\n if (this.numberOnly && !this.acceptedKeysForNumber(event)) {\n event.preventDefault();\n }\n }\n\n onModelChange(value: string): void {\n clearTimeout(this.timeoutReference);\n if (value === undefined || value === null || !!value) {\n this.updateNgModel(value);\n } else {\n this.timeoutReference = setTimeout(() => {\n this.updateNgModel(null);\n }, 0);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private getKeyCode(event: KeyboardEvent): any {\n // TODO: Check if we still need to support IE11 and if not, use event.key\n let keyCode = event.keyCode || event.which;\n if (keyCode >= 96 && keyCode <= 105) {\n // Numpad keys\n keyCode -= 48;\n }\n return keyCode;\n }\n\n private acceptedKeysForNumber(event: KeyboardEvent): boolean {\n const keyCode = this.getKeyCode(event);\n // Allow: delete, backspace, tab, escape, enter, decimal point, period\n return (\n [46, 8, 9, 27, 13, 110, 190].includes(keyCode) ||\n // Allow: Ctrl+A\n (keyCode === 65 && (event.ctrlKey || event.metaKey)) ||\n // Allow: Ctrl+C\n (keyCode === 67 && (event.ctrlKey || event.metaKey)) ||\n // Allow: Ctrl+V\n (keyCode === 86 && (event.ctrlKey || event.metaKey)) ||\n // Allow: Ctrl+X\n (keyCode === 88 && (event.ctrlKey || event.metaKey)) ||\n // Allow: home, end, left, right\n (keyCode >= 35 && keyCode <= 39) ||\n // Allow: numbers [0-9]\n (keyCode >= 48 && keyCode <= 57)\n );\n }\n}\n","<div\n class=\"form-group clearable-input-form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <label\n [attr.for]=\"buildChildId()\"\n *ngIf=\"label && type !== 'hidden'\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : labelStyleModifier\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </label>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText && type !== 'hidden'\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <input\n [class.is-invalid]=\"hasErrorsToDisplay() || hasInheritErrorFromParent()\"\n [class.clearable-input]=\"displayClearButton() | async\"\n class=\"form-control\"\n [name]=\"name || label\"\n [attr.maxlength]=\"getMaxLength()\"\n [attr.autocomplete]=\"getAutoComplete()\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.type]=\"type\"\n [attr.pattern]=\"pattern\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.id]=\"buildChildId()\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-required]=\"required || null\"\n [ngModel]=\"model\"\n (paste)=\"onPaste($event)\"\n (ngModelChange)=\"updateNgModel($event)\"\n (input)=\"handleChange(entryComponent.value)\"\n (keydown)=\"onKeydown($event)\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n #entryComponent\n />\n\n <button\n type=\"button\"\n [id]=\"buildChildId() + 'ClearButton'\"\n *ngIf=\"displayClearButton() | async\"\n class=\"clearable-input-clear-button btn\"\n (click)=\"onClear()\"\n >\n <foehn-icon-times\n class=\"clearable-input-clear-button-icon\"\n title=\"Réinitialiser le champs\"\n ></foehn-icon-times>\n </button>\n</div>\n","import { Component, Input, OnInit, ViewChild } from '@angular/core';\nimport { catchError, finalize, tap } from 'rxjs/operators';\nimport { GrowlType } from '../../foehn-growl/growl-types';\nimport { throwError } from 'rxjs';\nimport { GesdemActionRecoveryService } from '../gesdem-action-recovery.service';\nimport { GrowlBrokerService } from '../../foehn-growl/growl-broker.service';\nimport { FoehnFormComponent } from '../../foehn-form/foehn-form.component';\nimport { ValidationHandlerService } from '../../validation/validation-handler.service';\nimport { ApplicationInfoService } from '../../sdk-appinfo/application-info.service';\nimport { Router } from '@angular/router';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'gesdem-action-recovery-login',\n templateUrl: './gesdem-action-recovery-login.component.html',\n styleUrls: ['./gesdem-action-recovery-login.component.css']\n})\nexport class GesdemActionRecoveryLoginComponent implements OnInit {\n @Input()\n reference: string;\n\n @Input()\n redirectTarget: string;\n\n @ViewChild(FoehnFormComponent)\n loginForm: FoehnFormComponent;\n\n missingRecoveryInfos = false;\n alreadyTransferred = false;\n otpRecipient: string;\n otp: string;\n\n constructor(\n private recoveryService: GesdemActionRecoveryService,\n private growlService: GrowlBrokerService,\n private validationHandler: ValidationHandlerService,\n private applicationInfoService: ApplicationInfoService,\n private router: Router\n ) {}\n\n ngOnInit(): void {\n this.otpRecipient = null;\n this.missingRecoveryInfos = false;\n this.applicationInfoService.currentEtapeInfo\n .pipe(\n tap(currentEtape => {\n if (currentEtape.reprisePossible) {\n this.startRecovery();\n } else {\n this.growlService.addWithType(\n GrowlType.DANGER,\n 'Votre session a expiré, veuillez recommencer votre saisie'\n );\n // redirect to prestation's home\n this.router.navigateByUrl('/');\n }\n })\n )\n .subscribe();\n }\n\n validateOtp(): void {\n this.recoveryService\n .checkRecoveryPassword(this.reference, this.otp)\n .pipe(finalize(() => (this.otp = null)))\n .subscribe(isPasswordValid => {\n const errors = [];\n if (isPasswordValid) {\n window.location.href = this.redirectTarget;\n } else {\n errors.push({\n name: 'otp',\n code: 'INVALIDOTP',\n message: \"Le mot de passe saisi n'est pas valide\"\n });\n this.loginForm.reset();\n this.validationHandler.shouldDisplayErrors(true);\n this.validationHandler.updateErrors(errors);\n }\n });\n }\n\n private startRecovery(): void {\n this.recoveryService\n .startRecovery(this.reference)\n .pipe(\n catchError((response: unknown) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const { error, status }: any = response;\n this.missingRecoveryInfos =\n status === 404 &&\n error &&\n JSON.parse(error).code === 'ACTION_RECOVERY_NOT_FOUND';\n\n this.alreadyTransferred =\n status === 409 &&\n error &&\n JSON.parse(error).code === 'ACTION_ALREADY_TRANSFERRED';\n\n if (\n !this.missingRecoveryInfos &&\n !this.alreadyTransferred\n ) {\n this.growlService.addWithType(\n GrowlType.DANGER,\n 'Impossible de générer un mot de passe, veuillez réessayer plus tard.'\n );\n }\n\n return throwError(true);\n })\n )\n .subscribe(otpRecipient => (this.otpRecipient = otpRecipient));\n }\n}\n","<div class=\"container mt-5\">\n <div class=\"alert alert-danger\" *ngIf=\"missingRecoveryInfos\">\n Vous n'avez pas indiqué d'informations de contact pour la reprise de\n cette demande, merci de contacter le support.\n </div>\n <div class=\"alert alert-danger\" *ngIf=\"alreadyTransferred\">\n La demande que vous essayez de reprendre a déjà été transmise, elle\n n'est plus modifiable.\n </div>\n\n <foehn-form [shouldDisplayAlertSummary]=\"false\" *ngIf=\"otpRecipient\">\n <div class=\"row\">\n <div class=\"col-md-8\">\n <foehn-input-text\n [label]=\"\n 'Veuillez saisir le code envoyé par SMS au numéro ' +\n otpRecipient\n \"\n [(model)]=\"otp\"\n name=\"otp\"\n [required]=\"true\"\n ></foehn-input-text>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-md-8\">\n Pour obtenir un nouveau code, vous devez recliquer sur le\n <a [href]=\"redirectTarget\">lien</a>\n de reprise de la demande\n </div>\n </div>\n\n <br />\n\n <div class=\"row\">\n <div class=\"col-md-8\">\n <button\n id=\"nextButton\"\n type=\"submit\"\n class=\"btn btn-dark float-right\"\n (click)=\"validateOtp()\"\n >\n Suivant\n </button>\n </div>\n </div>\n </foehn-form>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ActivatedRoute, Route } from '@angular/router';\nimport { FoehnNavigationService } from '../foehn-navigation/foehn-navigation.service';\nimport { GesdemHandlerService } from '../gesdem/gesdem-handler.service';\nimport { FoehnPageService } from '../foehn-page/foehn-page.service';\nimport { SupportAlertService } from '../sdk-support-alert/support-alert.service';\nimport { SESSION_EXPIRED } from '../gesdem/gesdem-error-handler.service';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'gesdem-error',\n templateUrl: './gesdem-error.component.html'\n})\nexport class GesdemErrorComponent implements OnInit {\n @Input()\n setPageTitle = true;\n\n link: string;\n reference: string;\n hasSessionExpired = false;\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private navigation: FoehnNavigationService,\n private gesdemService: GesdemHandlerService,\n private foehnPageService: FoehnPageService,\n private supportAlertService: SupportAlertService\n ) {\n const route = FoehnNavigationService.getRootRouteRecursive(\n activatedRoute.snapshot\n );\n navigation.initRoute(route);\n this.link = this.getBasePath();\n }\n\n ngOnInit(): void {\n this.reference = this.activatedRoute.snapshot.params.reference;\n if (this.reference) {\n const firstPage = this.getFirstPage();\n if (this.gesdemService.prefix) {\n this.link += `${this.gesdemService.prefix}/`;\n }\n\n this.link += `${this.reference}/${firstPage.path}`;\n\n const errorCode = this.activatedRoute.snapshot.queryParamMap.get(\n 'errorCode'\n );\n this.hasSessionExpired = errorCode === SESSION_EXPIRED;\n }\n\n // The error might have been caused by an issue with the prestation that has been identified\n // whilst the user is using the prestation. This ensures that if any alert is added by the\n // administrator, the user will at least see them if an error is shown.\n this.supportAlertService.refreshAlerts();\n\n if (this.setPageTitle) {\n this.foehnPageService.setPageTitle(\n this.hasSessionExpired\n ? 'Reprise de la demande'\n : 'Erreur rencontrée'\n );\n }\n }\n\n private getFirstPage(): Route {\n return this.navigation.getFirstRoute();\n }\n\n private getBasePath(): string {\n const base = document.getElementsByTagName('base');\n if (base.length === 1) {\n return base[0].href;\n }\n return '/';\n }\n}\n","<div class=\"vd-card mb-3\" *ngIf=\"!hasSessionExpired\">\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-xs-8\">\n <div class=\"card-body\">\n <p class=\"card-text vd-card-text\">\n {{\n !!reference\n ? 'Vous pouvez essayer de reprendre votre demande en cliquant sur le lien ci-dessous'\n : 'Vous pouvez recommencer une demande en cliquant sur le lien ci-dessous'\n }}\n </p>\n <ul class=\"vd-list-links\">\n <li>\n <a [href]=\"link\">\n {{\n !!reference\n ? 'Reprendre ma demande'\n : 'Recommencer'\n }}\n </a>\n </li>\n </ul>\n <foehn-debug-summary></foehn-debug-summary>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<gesdem-action-recovery-login\n *ngIf=\"hasSessionExpired\"\n [reference]=\"reference\"\n [redirectTarget]=\"link\"\n></gesdem-action-recovery-login>\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { FoehnPageService } from '../foehn-page/foehn-page.service';\n\n@Component({\n selector: 'foehn-notfound',\n templateUrl: './foehn-notfound.component.html'\n})\nexport class FoehnNotfoundComponent implements OnInit, OnDestroy {\n @Input()\n setPageTitle = true;\n\n @Input()\n shouldRedirect = true;\n\n seconds = 10;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private intervalId: any;\n\n constructor(\n private router: Router,\n private foehnPageService: FoehnPageService\n ) {}\n\n ngOnInit(): void {\n const closure = (): void => {\n let isDead = false;\n this.intervalId = setInterval(() => {\n if (isDead) {\n // A more secure way of destroying the interval, based on a closure.\n this.cancelSetInterval();\n return;\n }\n\n if (this.seconds <= 0) {\n isDead = true;\n this.redirect();\n return;\n }\n\n this.seconds -= 1;\n }, 1000);\n };\n\n closure();\n\n if (this.setPageTitle) {\n this.foehnPageService.setPageTitle('Ressource inexistante');\n }\n }\n\n ngOnDestroy(): void {\n this.cancelSetInterval();\n }\n\n private redirect(): void {\n if (this.shouldRedirect) {\n this.router.navigateByUrl('/', { replaceUrl: true });\n }\n }\n\n private cancelSetInterval(): void {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n }\n }\n}\n","<div class=\"container mt-5\">\n <div class=\"alert alert-danger text-center\">\n <p class=\"h2\">Erreur</p>\n <p>Ressource inexistante</p>\n <p class=\"h2\">\n Vous allez être redirigé dans {{ seconds }}\n <span *ngIf=\"seconds > 1\">secondes</span>\n <span *ngIf=\"seconds <= 1\">seconde</span>\n </p>\n </div>\n\n <foehn-debug-summary></foehn-debug-summary>\n</div>\n","import { Injectable } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n CanActivate,\n RouterStateSnapshot\n} from '@angular/router';\nimport { Observable, of } from 'rxjs';\nimport { GesdemHandlerService } from './gesdem-handler.service';\nimport { FoehnNavigationService } from '../foehn-navigation/foehn-navigation.service';\nimport { catchError } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GesdemLoaderGuard implements CanActivate {\n constructor(\n private gesdemService: GesdemHandlerService,\n private nav: FoehnNavigationService\n ) {}\n\n canActivate(\n next: ActivatedRouteSnapshot,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n state: RouterStateSnapshot\n ): Observable<boolean> {\n const route = FoehnNavigationService.getRootRouteRecursive(next);\n this.nav.initRoute(route);\n\n /*\n * Do not call require on gesdemService since it could be that call\n * that triggers a redirection to GesdemErrorComponent on path /erreur\n */\n if (\n next.firstChild &&\n next.firstChild.routeConfig &&\n next.firstChild.routeConfig.path === 'erreur'\n ) {\n return of(true);\n }\n\n return this.gesdemService\n .require(next.params.reference, true)\n .pipe(catchError(() => of(true)));\n }\n}\n","import { Component } from '@angular/core';\nimport { AbstractIconComponent } from './abstract-icon-component';\nimport { faInfoCircle } from '@fortawesome/free-solid-svg-icons';\n\n@Component({\n selector: 'foehn-icon-info-circle',\n templateUrl: './foehn-icon.component.html'\n})\nexport class FoehnIconInfoCircleComponent extends AbstractIconComponent {\n iconName = faInfoCircle;\n defaultTitle = 'Info';\n}\n","import {\n Component,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChange,\n SimpleChanges\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\nimport { first, map } from 'rxjs/operators';\n\nimport { GesdemHandlerService } from '../gesdem/gesdem-handler.service';\nimport { BreadcrumbEventService } from '../foehn-breadcrumb/breadcrumb-event.service';\nimport { FoehnPageService } from '../foehn-page/foehn-page.service';\nimport { ServiceLocator } from '../service-locator';\nimport { SessionInfo } from '../sdk-session-info/session-info.service';\nimport { FoehnNavigationService } from '../foehn-navigation/foehn-navigation.service';\nimport { ActionStatut, GesdemStatutUtils } from '../gesdem/gesdem-statut-utils';\nimport { SdkDictionaryService } from '../sdk-dictionary/sdk-dictionary.service';\nimport { Location } from '@angular/common';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'gesdem-confirmation',\n templateUrl: './gesdem-confirmation.component.html'\n})\nexport class GesdemConfirmationComponent\n implements OnInit, OnDestroy, OnChanges {\n @Input()\n reference: string;\n\n @Input()\n setPageTitle = true;\n\n @Input()\n hasEmailSent = false;\n\n @Input()\n closeHref: string;\n\n @Input()\n showDownloadPdfRecapButton = true;\n\n @Input()\n showLinkToMyDemandes = true;\n\n @Input()\n demandeIsClosedOnTransmit = false;\n\n @Input()\n actionStatut = ActionStatut.TRANSFERRED;\n\n @Input()\n connectedConfirmationMessage =\n 'Vous avez effectué la première étape de votre démarche avec succès !';\n\n @Input()\n connectedConfirmationMessageIfAbandoned =\n \"La demande à laquelle vous essayez d'accéder a été abandonnée.\";\n\n @Input()\n downloadPdfRecapButtonText: string;\n\n @Input()\n closeButtonText: string;\n\n @Input()\n baseUrlPdf = 'api/document/pdf/';\n\n isConnectedCyber: Observable<boolean>;\n firstPageLink = '/';\n urlPdf: string;\n closeLink = new BehaviorSubject<string>(null);\n\n protected _breadcrumbEventService: BreadcrumbEventService;\n protected _foehnPageService: FoehnPageService;\n protected _sessionInfo: SessionInfo;\n protected _navigation: FoehnNavigationService;\n\n private dataSubscription: Subscription;\n private pageTitleSubscription: Subscription;\n\n constructor(\n protected gesdemService: GesdemHandlerService,\n protected foehnPageService: FoehnPageService,\n protected activatedRoute: ActivatedRoute,\n protected dictionaryService: SdkDictionaryService,\n protected location: Location\n ) {\n this._breadcrumbEventService = ServiceLocator.injector.get(\n BreadcrumbEventService\n );\n this._foehnPageService = ServiceLocator.injector.get(FoehnPageService);\n this._sessionInfo = ServiceLocator.injector.get(SessionInfo);\n this._navigation = ServiceLocator.injector.get(FoehnNavigationService);\n\n const route = FoehnNavigationService.getRootRouteRecursive(\n activatedRoute.snapshot\n );\n this._navigation.initRoute(route);\n\n // Override from the routing.\n this.dataSubscription = this.activatedRoute.data.subscribe(\n routeData => {\n this.hasEmailSent = routeData.hasEmailSent || this.hasEmailSent;\n this.closeLink.next(\n routeData.closeHref || this.closeLink.getValue()\n );\n this.connectedConfirmationMessage =\n routeData.connectedConfirmationMessage ||\n this.connectedConfirmationMessage;\n this.connectedConfirmationMessageIfAbandoned =\n routeData.connectedConfirmationMessageIfAbandoned ||\n this.connectedConfirmationMessageIfAbandoned;\n this.showDownloadPdfRecapButton =\n routeData.showDownloadPdfRecapButton ||\n this.showDownloadPdfRecapButton;\n this.showLinkToMyDemandes =\n routeData.showLinkToMyDemandes || this.showLinkToMyDemandes;\n this.demandeIsClosedOnTransmit =\n routeData.demandeIsClosedOnTransmit ||\n this.demandeIsClosedOnTransmit;\n this.downloadPdfRecapButtonText =\n routeData.downloadPdfRecapButtonText ||\n this.downloadPdfRecapButtonText ||\n 'gesdem-confirmation.download-pdf-recap-button';\n this.baseUrlPdf = routeData.baseUrlPdf || this.baseUrlPdf;\n this.closeButtonText =\n routeData.closeButtonText ||\n this.closeButtonText ||\n 'gesdem-confirmation.exit-button';\n\n // default closeLink if not by @Input and not by route data\n this.foehnPageService\n .onEtapeIdChange()\n .pipe(first())\n // eslint-disable-next-line rxjs/no-nested-subscribe\n .subscribe(etapeId => {\n if (!this.closeLink.getValue()) {\n this.closeLink.next(\n `https://www.vd.ch/go.to?prestation=${etapeId}`\n );\n }\n });\n }\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const change: SimpleChange = changes.closeHref;\n if (change && change.currentValue) {\n this.closeLink.next(change.currentValue);\n }\n }\n\n ngOnInit(): void {\n const lastResponse = this.gesdemService.lastResponse;\n if (lastResponse) {\n this.reference = lastResponse.meta.reference;\n this.actionStatut =\n ActionStatut[lastResponse.meta.statut as ActionStatut];\n this.urlPdf = this.baseUrlPdf + this.reference;\n const currentAction = lastResponse.meta.currentAction;\n if (!!currentAction) {\n this.urlPdf += `-${currentAction}`;\n if (this.location.path().includes(`/${this.reference}/`)) {\n const fullReferenceUrl = this.location\n .path()\n .replace(\n this.reference,\n `${this.reference}-${currentAction}`\n );\n this.location.replaceState(fullReferenceUrl);\n }\n }\n\n const languageCode = lastResponse.form.language;\n this.dictionaryService.changeLanguage(languageCode);\n }\n\n // Whether the user has a context we consider it as connected.\n this.isConnectedCyber = this._sessionInfo.data.pipe(\n map(userInfo => !!userInfo && !!userInfo.context)\n );\n\n if (this.setPageTitle) {\n this.pageTitleSubscription = this.dictionaryService\n .getKey('gesdem-confirmation.title')\n .subscribe(title => this._foehnPageService.setPageTitle(title));\n }\n\n this.firstPageLink = this.getFirstPageLink();\n\n this._breadcrumbEventService.skipLeavingAlertBecauseDemandIsTransmitted = true;\n }\n\n ngOnDestroy(): void {\n if (this.dataSubscription) {\n this.dataSubscription.unsubscribe();\n }\n if (this.pageTitleSubscription) {\n this.pageTitleSubscription.unsubscribe();\n }\n }\n\n hasConnectedContent(): boolean {\n const hasConfMessage =\n this.isTransferred && !!this.connectedConfirmationMessage;\n const hasAbandonedConfMessage =\n !this.isTransferred &&\n !!this.connectedConfirmationMessageIfAbandoned;\n\n return (\n hasConfMessage ||\n hasAbandonedConfMessage ||\n !!this.showLinkToMyDemandes\n );\n }\n\n get isTransferred(): boolean {\n return (\n this.actionStatut && this.actionStatut === ActionStatut.TRANSFERRED\n );\n }\n\n get isAbandoned(): boolean {\n return (\n this.actionStatut && this.actionStatut === ActionStatut.ABANDONED\n );\n }\n\n get isInProgress(): boolean {\n return !GesdemStatutUtils.isFinal(this.actionStatut);\n }\n\n get successLabelDicoKey(): string {\n const isFirstAction =\n this.gesdemService.lastResponse?.meta?.currentAction === 1;\n return isFirstAction\n ? 'gesdem-confirmation.success-label'\n : 'gesdem-confirmation.next-step.success-label';\n }\n\n private getFirstPageLink(): string {\n let link = '/';\n const firstPage = this._navigation.getFirstRoute();\n if (this.gesdemService.prefix) {\n link += `${this.gesdemService.prefix}/`;\n }\n\n return `${link + this.reference}/${firstPage.path}`;\n }\n}\n","<div class=\"container mt-5\" *ngIf=\"reference && !isInProgress\">\n <div\n class=\"alert text-center mb-2\"\n [ngClass]=\"isTransferred ? 'alert-success' : 'alert-danger'\"\n >\n <p class=\"h2\">\n {{\n isTransferred\n ? (successLabelDicoKey | fromDictionary)\n : ('gesdem-confirmation.abort-label' | fromDictionary)\n }}\n </p>\n <dl>\n <dt class=\"font-weight-light\">\n {{\n 'gesdem-confirmation.reference-title.label' | fromDictionary\n }}\n </dt>\n <dd id=\"numDemande\" class=\"h4 d-block mt-3\">{{ reference }}</dd>\n </dl>\n <p *ngIf=\"hasEmailSent && !(isConnectedCyber | async)\">\n {{ 'gesdem-confirmation.mail-sent.label' | fromDictionary }}\n </p>\n </div>\n\n <span\n [innerHTML]=\"'gesdem-confirmation.extra-content' | fromDictionary\"\n ></span>\n\n <ng-content></ng-content>\n\n <div\n class=\"col-md-12 vd-highlight\"\n *ngIf=\"(isConnectedCyber | async) && hasConnectedContent()\"\n >\n <span class=\"sr-only\">\n Information suite à la transmission de votre demande\n </span>\n <div class=\"row\">\n <div class=\"col-md-1\">\n <foehn-icon-info-circle class=\"h3\"></foehn-icon-info-circle>\n </div>\n <div class=\"col-md-11\">\n <p\n [innerHTML]=\"\n isTransferred\n ? connectedConfirmationMessage\n : connectedConfirmationMessageIfAbandoned\n \"\n ></p>\n <p\n *ngIf=\"\n showLinkToMyDemandes &&\n (demandeIsClosedOnTransmit || isAbandoned)\n \"\n >\n Vous pouvez consulter votre demande en cliquant sur :\n <a href=\"/100002/demandes/search/MINE/TREATED\">\n Mes nouvelles demandes traitées\n </a>\n .\n </p>\n <p\n *ngIf=\"\n showLinkToMyDemandes &&\n !demandeIsClosedOnTransmit &&\n !isAbandoned\n \"\n >\n Vous pouvez suivre l'avancement du traitement de votre\n demande en cliquant sur :\n <a href=\"/100002/demandes/search/MINE/IN_PROGRESS\">\n Mes demandes en cours de traitement\n </a>\n .\n </p>\n </div>\n </div>\n </div>\n\n <div\n class=\"col-md-12 list-unstyled d-md-flex p-0 mt-4\"\n *ngIf=\"!(isConnectedCyber | async)\"\n >\n <div class=\"ml-0 mr-md-auto mr-md-2 mb-2 mt-2\">\n <a\n *ngIf=\"showDownloadPdfRecapButton\"\n [href]=\"urlPdf\"\n id=\"telechargerBtn\"\n class=\"btn btn-secondary w-100\"\n title=\"Télécharger le PDF\"\n >\n {{ downloadPdfRecapButtonText | fromDictionary }}\n </a>\n </div>\n\n <div\n class=\"mr-0 ml-md-auto mb-2 mt-2\"\n *ngIf=\"closeLink | async as link\"\n >\n <a\n [href]=\"link\"\n id=\"terminerBtn\"\n class=\"btn btn-primary w-100\"\n title=\"Terminer\"\n >\n {{ closeButtonText | fromDictionary }}\n </a>\n </div>\n </div>\n</div>\n\n<div class=\"container mt-5\" *ngIf=\"reference && isInProgress\">\n <div class=\"alert alert-info text-center mb-2\">\n <p class=\"h2\">Demande en cours</p>\n <dl>\n <dt class=\"font-weight-light\">\n {{\n 'gesdem-confirmation.reference-title.label' | fromDictionary\n }}\n </dt>\n <dd id=\"numDemandeEnCours\" class=\"h4 d-block mt-3\">\n {{ reference }}\n </dd>\n </dl>\n </div>\n\n <div class=\"col-md-12 vd-highlight\">\n <div class=\"row\">\n <div class=\"col-md-1\">\n <foehn-icon-info-circle class=\"h3\"></foehn-icon-info-circle>\n </div>\n <div class=\"col-md-11\">\n <p>\n Vous pouvez reprendre votre demande en cliquant sur le lien\n ci-dessous\n </p>\n <p>\n <a [routerLink]=\"firstPageLink\">Reprendre ma demande</a>\n </p>\n </div>\n </div>\n </div>\n</div>\n","import { Address } from '../foehn-address/address.type';\n\n// eslint-disable max-classes-per-file\nexport class SessionInfoData {\n lastLogin: number[];\n context: string;\n iup: string;\n gender: string;\n firstName: string;\n fullFirstNames: string;\n lastName: string;\n birthDate: string;\n birthDateAsLocalDate: number[];\n email: string;\n espaceId: string;\n espaceLabel: string;\n businessId: string;\n categories: string[];\n type: string;\n prestationsRoles: string[];\n preferences: Preferences;\n sessionTimeout: number;\n}\n\nexport class Preferences {\n email: string;\n phone: string;\n adresseCourrier: Address;\n adresseFacturation: Address;\n adresseLivraison: Address;\n}\n","import { combineLatest, merge, Observable, of } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { debounceTime, filter, first, map } from 'rxjs/operators';\nimport { GesdemEventService } from '../gesdem/gesdem-event.service';\nimport { GesdemHandlerService } from '../gesdem/gesdem-handler.service';\nimport { SessionInfo } from './session-info.service';\nimport { SessionInfoData } from './session-info-data';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SessionInfoWithApplicationService {\n private sessionInfoWithNoReference: Observable<SessionInfoData>;\n private referenceObservable: Observable<string>;\n\n constructor(\n private sessionInfo: SessionInfo,\n private gesdemEventService: GesdemEventService,\n private gesdemService: GesdemHandlerService\n ) {\n this.initSessionInfo();\n }\n\n get isUserConnected(): Observable<boolean> {\n return this.sessionInfo.data.pipe(\n map(userInfo => !!userInfo && !!userInfo.context)\n );\n }\n\n get isReady(): Observable<boolean> {\n return merge(\n // If the reference is set\n this.referenceObservable,\n // If there's no reference, sessionInfo data will fire with a session or none\n this.sessionInfo.data\n ).pipe(\n // Always true if either of the two observables yield a value.\n map(() => true)\n );\n }\n\n initSessionInfo(): void {\n this.referenceObservable = this.gesdemEventService\n .formInitializationObservable()\n .pipe(map(() => this.gesdemService.lastResponse.meta.reference));\n\n // We want a default value if there's no reference.\n const optionalReference = merge(of(''), this.referenceObservable).pipe(\n // It's critical to use the debounce as the gesdemService fires way too often when the page\n // loads or when the user goes back in the navigation.\n debounceTime(0)\n );\n\n this.sessionInfoWithNoReference = combineLatest([\n this.sessionInfo.data,\n optionalReference\n ]).pipe(\n // Don't emit a value there is no session info data.\n filter(([info]) => !!info),\n // We only want to pre-load the data if there's no reference as the user might have\n // modified the data, including removing information.\n filter(([, reference]) => !reference),\n // We're only interested to pass the session info data down the observable chain.\n map(([info]) => info)\n );\n }\n\n prefillForm(\n mappingFunction?: (info: SessionInfoData) => void\n ): Observable<SessionInfoData> {\n if (mappingFunction) {\n this.sessionInfoWithNoReference\n .pipe(\n // Only take ONE value from the observable. This removes the need to\n // handle the unsubscribe.\n first()\n )\n .subscribe(mappingFunction);\n }\n\n return this.sessionInfoWithNoReference;\n }\n}\n","export const supportedBrowsers = /((CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS)[ +]+(13[_\\.]3|13[_\\.]([4-9]|\\d{2,})|13[_\\.]7|13[_\\.]([8-9]|\\d{2,})|(1[4-9]|[2-9]\\d|\\d{3,})[_\\.]\\d+|14[_\\.]0|14[_\\.]([1-9]|\\d{2,})|14[_\\.]4|14[_\\.]([5-9]|\\d{2,})|14[_\\.]7|14[_\\.]([8-9]|\\d{2,})|(1[5-9]|[2-9]\\d|\\d{3,})[_\\.]\\d+)(?:[_\\.]\\d+)?)|(CFNetwork\\/8.* Darwin\\/16\\.5\\.\\d+)|(CFNetwork\\/8.* Darwin\\/16\\.6\\.\\d+)|(CFNetwork\\/8.* Darwin\\/16\\.7\\.\\d+)|(OperaMini(?:\\/att)?\\/?(\\d+)?(?:\\.\\d+)?(?:\\.\\d+)?)|(Opera\\/.+Opera Mobi.+Version\\/(64\\.0|64\\.([1-9]|\\d{2,})|(6[5-9]|[7-9]\\d|\\d{3,})\\.\\d+))|(Opera\\/(64\\.0|64\\.([1-9]|\\d{2,})|(6[5-9]|[7-9]\\d|\\d{3,})\\.\\d+).+Opera Mobi)|(Opera Mobi.+Opera(?:\\/|\\s+)(64\\.0|64\\.([1-9]|\\d{2,})|(6[5-9]|[7-9]\\d|\\d{3,})\\.\\d+))|(SamsungBrowser\\/(13\\.0|13\\.([1-9]|\\d{2,})|(1[4-9]|[2-9]\\d|\\d{3,})\\.\\d+))|(Edge\\/(85(?:\\.0)?|85(?:\\.([1-9]|\\d{2,}))?|(8[6-9]|9\\d|\\d{3,})(?:\\.\\d+)?))|(HeadlessChrome((?:\\/85\\.0\\.\\d+)?|(?:\\/85\\.([1-9]|\\d{2,})\\.\\d+)?|(?:\\/(8[6-9]|9\\d|\\d{3,})\\.\\d+\\.\\d+)?))|((Chromium|Chrome)\\/(85\\.0|85\\.([1-9]|\\d{2,})|(8[6-9]|9\\d|\\d{3,})\\.\\d+)(?:\\.\\d+)?)|(Version\\/(13\\.1|13\\.([2-9]|\\d{2,})|(1[4-9]|[2-9]\\d|\\d{3,})\\.\\d+|14\\.0|14\\.([1-9]|\\d{2,})|(1[5-9]|[2-9]\\d|\\d{3,})\\.\\d+)(?:\\.\\d+)?.*Safari\\/)|(Firefox\\/(68\\.0|68\\.([1-9]|\\d{2,})|(69|[7-9]\\d|\\d{3,})\\.\\d+|78\\.0|78\\.([1-9]|\\d{2,})|(79|[8-9]\\d|\\d{3,})\\.\\d+|80\\.0|80\\.([1-9]|\\d{2,})|(8[1-9]|9\\d|\\d{3,})\\.\\d+)\\.\\d+)|(Firefox\\/(68\\.0|68\\.([1-9]|\\d{2,})|(69|[7-9]\\d|\\d{3,})\\.\\d+|78\\.0|78\\.([1-9]|\\d{2,})|(79|[8-9]\\d|\\d{3,})\\.\\d+|80\\.0|80\\.([1-9]|\\d{2,})|(8[1-9]|9\\d|\\d{3,})\\.\\d+)(pre|[ab]\\d+[a-z]*)?)/;\n","import { Injectable } from '@angular/core';\nimport { ApplicationInfoService } from '../sdk-appinfo/application-info.service';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FoehnPageModalService {\n constructor(private applicationInfoService: ApplicationInfoService) {}\n\n toQuotedTitleCaseStringArray(items: string[]): string[] {\n if (items && items.length > 0) {\n return items.map(pc => {\n const item = pc.toLowerCase().replace('_', ' ');\n return `«${item.charAt(0).toUpperCase()}${item.slice(1)}»`;\n });\n }\n return ['« Non défini »'];\n }\n\n toQuotedTitleCaseString(input: string): string {\n if (input) {\n return `«${input.charAt(0).toUpperCase()}${input.slice(1)}»`;\n }\n\n return '« Non défini »';\n }\n\n buildSelfRedirectionThroughCyberLogin(): Observable<string> {\n return this.applicationInfoService\n .getSafeCyberLoginUrl()\n .pipe(\n map(\n cyberloginUrl =>\n `${cyberloginUrl}?goto=${window.location.href}`\n )\n );\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { merge, Observable, of } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { PlatformLocation } from '@angular/common';\n\nconst ANCHOR_SEPARATOR = '#';\nconst EMPTY_STRING = '';\n\n@Component({\n selector: 'foehn-skip-link',\n templateUrl: './foehn-skip-link.component.html'\n})\nexport class FoehnSkipLinkComponent implements OnInit {\n @Input()\n accesskey: string;\n\n @Input()\n targetAnchor: string;\n\n @Input()\n title: string;\n\n @Input()\n content: string;\n\n /**\n * The skip link path MUST take the router into account, otherwise the user is send back to\n * the first page when the skip link is activated.\n */\n skipLinkPath: Observable<string>;\n\n constructor(\n private platformLocation: PlatformLocation,\n private router: Router\n ) {}\n\n ngOnInit(): void {\n if (!this.targetAnchor) {\n return;\n }\n\n // Must update the URL when the route is updated.\n const routeUpdated = this.router.events.pipe(\n filter(event => event instanceof NavigationEnd),\n map((event: NavigationEnd) =>\n this.computeUrl(event.urlAfterRedirects)\n )\n );\n\n // The NavigationEnd event isn't triggered on the initial load.\n const initialValue = of(this.computeUrl(this.router.url));\n\n this.skipLinkPath = merge(initialValue, routeUpdated);\n }\n\n private computeUrl(routeUrl: string): string {\n // Base path not handled by the router.\n const basePath =\n this.platformLocation.getBaseHrefFromDOM() || EMPTY_STRING;\n\n // Ignore any pre-existing anchors.\n const [urlWithoutAnchor] = routeUrl.split(ANCHOR_SEPARATOR);\n\n // In case customers set the target anchor with the # in it.\n const sanitizedTargetAnchor = this.targetAnchor.replace(\n ANCHOR_SEPARATOR,\n EMPTY_STRING\n );\n\n const newUrl = `${basePath}${urlWithoutAnchor}${ANCHOR_SEPARATOR}${sanitizedTargetAnchor}`;\n\n // Replace potentially double slashes depending on the value of baseHref.\n return newUrl.replace('//', '/');\n }\n}\n","<a\n class=\"sr-only sr-only-focusable btn btn-dark pt-0\"\n [attr.accesskey]=\"accesskey\"\n [href]=\"skipLinkPath | async\"\n [title]=\"title\"\n>\n {{ content }}\n</a>\n","export class FormSelectOptionGroup {\n groupTitle: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n elements: any;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n Input,\n NgZone,\n OnChanges,\n OnInit,\n SimpleChange,\n SimpleChanges,\n Directive\n} from '@angular/core';\nimport { FoehnInputComponent } from '../foehn-input/foehn-input.component';\nimport { HttpClient } from '@angular/common/http';\nimport { ServiceLocator } from '../service-locator';\nimport { Observable, of, Subject } from 'rxjs';\nimport { first, map, shareReplay } from 'rxjs/operators';\nimport { FormSelectOptionGroup } from './form-select-option-group';\n\n@Directive()\nexport abstract class FoehnCheckableGroupComponent\n extends FoehnInputComponent<any>\n implements OnInit, OnChanges {\n @Input()\n elements: any;\n\n @Input()\n elementsUrl: string;\n\n /**\n * The value in the object. Can be a string or a function.\n * Defaults to `value`\n */\n @Input()\n elementValue: any = 'value';\n\n /**\n * The label in the object. Can be a string or a function\n * Defaults to `label`\n */\n @Input()\n elementLabel: any = 'label';\n\n /**\n * The identify value to match the value to the list of elements.\n * By default `x => x`\n */\n @Input()\n elementValueIdentity: (element: any) => any;\n\n @Input()\n elementDisabled: any = 'disabled';\n\n @Input()\n allElementDisabled = false;\n\n @Input()\n elementGroup: any;\n\n @Input()\n set defaultElementValue(val: string) {\n this.defaultElementValue_ = val;\n if (!this.elementsUrl) {\n this.onElementsRetrieved();\n }\n }\n\n get defaultElementValue(): string {\n return this.defaultElementValue_;\n }\n\n groupedElements: FormSelectOptionGroup[];\n\n httpClient: HttpClient;\n\n protected multiple = false;\n private pulling_: Observable<any>;\n private _onInitSubject: Subject<any> = new Subject<any>();\n private defaultElementValue_: string;\n\n get onInitSubject(): Subject<any> {\n return this._onInitSubject;\n }\n\n constructor(private ngZone: NgZone) {\n super();\n this.httpClient = ServiceLocator.injector.get(HttpClient);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n if (this.elementsUrl) {\n this.fetchElementsFromUrl();\n } else if (this.elements) {\n this.onElementsRetrieved();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n // Handle a change in the elements Input.\n this.onElementsChange(changes.elements);\n\n // Handle a change in the elementsUrl Input.\n this.onElementsUrlChange(changes.elementsUrl);\n }\n\n getElements(): Observable<any> {\n if (!!this.elementsUrl) {\n return this.pulling_;\n }\n\n return of(this.elements);\n }\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n getGroup(element: any): string {\n if (!element || !this.elementGroup) {\n return null;\n }\n\n if (typeof this.elementGroup === 'string') {\n return this.getNestedProperty(element, this.elementGroup);\n }\n return this.elementGroup(element);\n }\n\n setElements(elements: any[]): void {\n this.elements = elements;\n this.onElementsRetrieved();\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n getValue(element: any): string {\n if (!element) {\n return null;\n }\n\n if (typeof this.elementValue === 'string') {\n return this.getNestedProperty(element, this.elementValue);\n }\n return this.elementValue(element);\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n getLabel(element: any): string {\n if (typeof this.elementLabel === 'string') {\n return this.getNestedProperty(element, this.elementLabel);\n }\n return this.elementLabel(element);\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n getDisabled(element: any): string {\n if (this.allElementDisabled) {\n return 'disabled';\n }\n\n if (typeof this.elementDisabled === 'string') {\n return this.getNestedProperty(element, this.elementDisabled);\n }\n return this.elementDisabled(element);\n }\n\n onCheck(\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n element: any,\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n selectEvent: any,\n fireModelChange: boolean = true\n ): void {\n const value = this.getValue(element);\n if (this.multiple) {\n if (!this.model) {\n this.model = [];\n }\n const modelArray = this.model as string[];\n if (!!selectEvent) {\n if (this.findIndexInModel(value) < 0) {\n modelArray.push(value);\n }\n } else {\n const indexInModel = this.findIndexInModel(value);\n if (indexInModel >= 0) {\n modelArray.splice(indexInModel, 1);\n }\n }\n if (fireModelChange) {\n this.model = [...modelArray];\n }\n } else {\n if (!!selectEvent) {\n this.model = value;\n } else {\n if (this.areValuesEquals(this.model, value)) {\n this.model = null;\n }\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n isElementSelected(element: any): boolean {\n const value = this.getValue(element);\n if (this.multiple) {\n return this.model && this.findIndexInModel(value) >= 0;\n }\n\n return this.areValuesEquals(this.model, value);\n }\n\n reset(): void {\n if (!!this.defaultElementValue) {\n this.updateNgModel(this.defaultElementValue);\n } else {\n super.reset();\n }\n }\n\n refreshElementsUrl(): void {\n if (this.elementsUrl) {\n this.fetchElementsFromUrl();\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n protected findIndexInModel(value: any): number {\n if (this.multiple) {\n return (this.model as any[]).findIndex(modelValue =>\n this.areValuesEquals(value, modelValue)\n );\n }\n throw new Error(\n 'findIndexInModel cannot be used when this.multiple is false !'\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n protected areValuesEquals(value1: any, value2: any): boolean {\n // Get an option way to compare the value from the model.\n // This allows us to properly use an object as the model rather\n // than a string.\n const identityFn = this.getValueIdentityFunction();\n return identityFn(value1) === identityFn(value2);\n }\n\n protected onElementsRetrieved(): void {\n if (!this.model && this.defaultElementValue) {\n this.ngZone.onMicrotaskEmpty.pipe(first()).subscribe(() => {\n this.updateNgModel(this.defaultElementValue);\n });\n } else if (this.model) {\n this.ngZone.onMicrotaskEmpty.pipe(first()).subscribe(() => {\n this.updateNgModel(this.model_);\n });\n }\n this.groupedElements = this.getGroupedElements();\n }\n\n private getGroupedElements(): FormSelectOptionGroup[] {\n if (!this.elements) {\n return [];\n }\n if (!this.elementGroup) {\n return [{ groupTitle: null, elements: this.elements }];\n }\n\n const elementsByGroup: Map<string, any[]> = new Map<string, any[]>();\n\n const emptyGroup = new FormSelectOptionGroup();\n emptyGroup.elements = [];\n\n for (const element of this.elements) {\n const groupId = this.getGroup(element);\n if (!!groupId) {\n let elementsOfGroup: any[] = elementsByGroup.get(groupId);\n if (!elementsOfGroup) {\n elementsOfGroup = [];\n elementsByGroup.set(groupId, elementsOfGroup);\n }\n elementsOfGroup.push(element);\n } else {\n emptyGroup.elements.push(element);\n }\n }\n\n const formSelectOptionsGroup: FormSelectOptionGroup[] = [];\n\n if (emptyGroup.elements.length > 0) {\n formSelectOptionsGroup.push(emptyGroup);\n }\n elementsByGroup.forEach((value, key) => {\n formSelectOptionsGroup.push({ groupTitle: key, elements: value });\n });\n\n return formSelectOptionsGroup;\n }\n\n private getNestedProperty(obj: any, key: string): any {\n for (const property in obj) {\n if (obj.hasOwnProperty(property)) {\n // in case it is an object\n if (typeof obj[property] === 'object') {\n const result = this.getNestedProperty(\n obj[property],\n key.split('.').slice(1).join('.')\n );\n\n if (typeof result !== 'undefined') {\n return result;\n }\n } else if (property === key) {\n return obj[key]; // returns the value\n }\n }\n }\n }\n\n private getValueIdentityFunction(): any {\n return typeof this.elementValueIdentity === 'function'\n ? this.elementValueIdentity\n : (x: any) => x;\n }\n\n private fetchData(): Observable<any> {\n return this.httpClient.get(this.elementsUrl).pipe(\n map(r => {\n const elements: any = r;\n this.setElements(elements);\n return elements;\n }),\n shareReplay(1)\n );\n }\n\n private fetchElementsFromUrl(): void {\n this.pulling_ = this.fetchData();\n this.pulling_.subscribe(() => {\n this.onInitSubject.next();\n });\n }\n\n private onElementsChange(change: SimpleChange): void {\n if (change && !change.firstChange) {\n // When elements are deferred from ngOnInit (i.e. pipe async is used)\n this.onElementsRetrieved();\n // Hack to refresh the display value\n this.updateNgModel(this.model_);\n }\n }\n\n private onElementsUrlChange(change: SimpleChange): void {\n if (change && !change.firstChange) {\n this.fetchElementsFromUrl();\n }\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types */\nexport class ObjectHelper {\n /**\n * Angular uses object identity to select option. It's possible for the identities of items to change while the data does not.\n * This can happen, for example, if the items are produced from an RPC to the server, and that RPC is re-run.\n * Even if the data hasn't changed, the second response will produce objects with different identities.\n * (see: https://angular.io/api/forms/SelectControlValueAccessor#customizing-option-selection)\n *\n * @param value1 as first value to compare to\n * @param value2 as value to be compared to\n * @returns boolean\n */\n static isEqual(value1: unknown, value2: unknown): boolean {\n if (\n value1 &&\n value2 &&\n typeof value1 === 'object' &&\n typeof value2 === 'object'\n ) {\n const matches = (obj: any, source: any): boolean =>\n Object.keys(source).every(key => {\n if (obj.hasOwnProperty(key)) {\n if (\n obj[key] &&\n source[key] &&\n typeof obj[key] === 'object' &&\n typeof source[key] === 'object'\n ) {\n return matches(obj[key], source[key]);\n }\n return obj[key] === source[key];\n }\n return false;\n });\n\n return matches(value1, value2);\n }\n return value1 === value2;\n }\n\n static hasAnyValue(value: any): boolean {\n // do not simplify with an inline variable result due to compilation error\n const result = Object.keys(value).some(key => {\n if (value[key] && typeof value[key] === 'object') {\n return ObjectHelper.hasAnyValue(value[key]);\n }\n return !!value[key];\n });\n return result;\n }\n\n static isEmpty(value: any): boolean {\n return !ObjectHelper.hasAnyValue(value);\n }\n\n /**\n * Deep copy is a true copy for nested objects\n * Often, shallow copy is good enough and you will not need a deep copy.\n * A shallow copy means the first level is copied, deeper levels are referenced.\n *\n * Examples of shallow copy :\n * const shallowClone = { ...nestedObject };\n * const shallowClone = Object.assign({}, nestedObject);\n *\n * @param obj is the object to copied\n * @returns obj\n */\n static deepCopy(obj: any): any {\n if (!obj || typeof obj !== 'object') {\n return obj;\n }\n\n let copy: any;\n\n if (obj instanceof Date) {\n copy = new Date();\n copy.setTime(obj.getTime());\n return copy;\n }\n\n if (obj instanceof Array) {\n copy = [];\n for (let i = 0, len = obj.length; i < len; i++) {\n copy[i] = ObjectHelper.deepCopy(obj[i]);\n }\n return copy;\n }\n\n if (obj instanceof Object) {\n copy = {};\n for (const attr in obj) {\n if (obj.hasOwnProperty(attr)) {\n copy[attr] = ObjectHelper.deepCopy(obj[attr]);\n }\n }\n return copy;\n }\n\n throw new Error('Unable to copy obj! Type not supported.');\n }\n}\n","import { Component, forwardRef, Input, NgZone, OnInit } from '@angular/core';\nimport { FoehnCheckableGroupComponent } from './foehn-checkable-group.component';\nimport { FoehnInputComponent } from '../foehn-input/foehn-input.component';\nimport { ObjectHelper } from '../helpers/object.helper';\n\n@Component({\n selector: 'foehn-select',\n templateUrl: './foehn-select.component.html',\n providers: [\n {\n provide: FoehnInputComponent,\n useExisting: forwardRef(() => FoehnSelectComponent),\n multi: true\n }\n ]\n})\nexport class FoehnSelectComponent\n extends FoehnCheckableGroupComponent\n implements OnInit {\n @Input()\n multiple: boolean;\n\n constructor(private zone: NgZone) {\n super(zone);\n }\n\n /**\n * Angular uses object identity to select option. It's possible for the identities of items to change while the data does not.\n * This can happen, for example, if the items are produced from an RPC to the server, and that RPC is re-run.\n * Even if the data hasn't changed, the second response will produce objects with different identities.\n * (see: https://angular.io/api/forms/SelectControlValueAccessor#customizing-option-selection)\n *\n * @param value1 as first value to compare to\n * @param value2 as value to be compared to\n * @returns boolean\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types\n compareFn(value1: any, value2: any): boolean {\n return ObjectHelper.isEqual(value1, value2);\n }\n\n /**\n * We override areValuesEquals from FoehnCheckableGroupComponent so we keep only one way of comparing objects\n * So there is no need to use 'elementValueIdentity' anymore\n *\n * @param value1 to be compared to\n * @param value2 to be compared to\n * @returns boolean\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types\n protected areValuesEquals(value1: any, value2: any): boolean {\n return ObjectHelper.isEqual(value1, value2);\n }\n}\n","<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <label\n [attr.for]=\"buildChildId()\"\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : labelStyleModifier\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </label>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <div *ngIf=\"!elements\">Chargement...</div>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <select\n *ngIf=\"!multiple\"\n [class.is-invalid]=\"hasErrorsToDisplay() || hasInheritErrorFromParent()\"\n class=\"form-control\"\n [name]=\"name || label\"\n [attr.id]=\"buildChildId()\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-required]=\"required || null\"\n [ngModel]=\"model\"\n (ngModelChange)=\"updateNgModel($event)\"\n [compareWith]=\"compareFn\"\n (change)=\"handleChange(model)\"\n #entryComponent\n ngDefaultControl\n >\n <option *ngIf=\"!required\" [ngValue]=\"null\">-</option>\n <option\n *ngFor=\"let element of elements\"\n [ngValue]=\"getValue(element)\"\n [attr.selected]=\"isElementSelected(element) ? 'selected' : null\"\n [attr.disabled]=\"getDisabled(element) ? 'disabled' : null\"\n [innerHTML]=\"getLabel(element)\"\n ></option>\n </select>\n <select\n *ngIf=\"multiple\"\n multiple\n [attr.aria-multiselectable]=\"true\"\n [class.is-invalid]=\"hasErrorsToDisplay() || hasInheritErrorFromParent()\"\n class=\"form-control\"\n [name]=\"name || label\"\n [attr.id]=\"buildChildId()\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-required]=\"required || null\"\n [ngModel]=\"model\"\n (ngModelChange)=\"updateNgModel($event)\"\n [compareWith]=\"compareFn\"\n (change)=\"handleChange(model)\"\n #entryComponent\n ngDefaultControl\n >\n <option\n *ngFor=\"let element of elements\"\n [ngValue]=\"getValue(element)\"\n [attr.selected]=\"isElementSelected(element) ? 'selected' : null\"\n [attr.aria-selected]=\"isElementSelected(element)\"\n >\n {{ getLabel(element) }}\n </option>\n </select>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { SessionInfo } from '../sdk-session-info/session-info.service';\nimport { SessionInfoData } from '../sdk-session-info/session-info-data';\nimport { ApplicationInfoService } from '../sdk-appinfo/application-info.service';\nimport { filter, map } from 'rxjs/operators';\nimport { Observable } from 'rxjs';\nimport { ApplicationInfo } from '../sdk-appinfo/application-info';\nimport {\n Language,\n SdkDictionaryService\n} from '../sdk-dictionary/sdk-dictionary.service';\n\n@Component({\n selector: 'foehn-header',\n templateUrl: './foehn-header.component.html',\n styleUrls: ['./foehn-header.component.css']\n})\nexport class FoehnHeaderComponent implements OnInit {\n @Input()\n userInfo: SessionInfoData;\n\n @Input()\n title: string;\n\n @Input()\n neverConnected: boolean;\n\n isProduction: Observable<boolean>;\n availableLanguages: Observable<Language[]>;\n currentLanguageCode: Observable<string>;\n\n applicationInfoService: ApplicationInfoService;\n\n private readonly ENV_PROD = 'PR';\n\n constructor(\n private sessionInfo: SessionInfo,\n applicationInfoService: ApplicationInfoService,\n private dictionaryService: SdkDictionaryService\n ) {\n this.applicationInfoService = applicationInfoService;\n }\n\n ngOnInit(): void {\n this.sessionInfo.neverConnected = this.neverConnected;\n this.sessionInfo.data.pipe(filter(info => !!info)).subscribe(info => {\n this.userInfo = info;\n });\n this.isProduction = this.applicationInfoService.data.pipe(\n map(appInfo => appInfo.environment === this.ENV_PROD)\n );\n this.availableLanguages = this.dictionaryService.getAvailableLanguages();\n this.currentLanguageCode = this.dictionaryService.getCurrentLanguageCode();\n }\n\n getEnvironmentLabel(info: ApplicationInfo): string {\n if (info.environmentLabel) {\n return info.environmentLabel;\n }\n return info.environment;\n }\n\n get isConnected(): boolean {\n return !!this.userInfo;\n }\n\n get prenom(): string {\n return this.userInfo.firstName;\n }\n\n get nom(): string {\n return this.userInfo.lastName;\n }\n\n get beneficiaire(): string {\n return this.userInfo.espaceLabel;\n }\n\n get isIamCyber(): boolean {\n return this.isConnected && !!this.userInfo.context;\n }\n\n get isIamAcv(): boolean {\n return this.isConnected && !this.userInfo.context;\n }\n\n isParticulier(): boolean {\n return this.userInfo.type === 'avs';\n }\n\n languageChanged(languageCode: string): void {\n this.dictionaryService.changeLanguage(languageCode);\n }\n}\n","<header id=\"foehn_headerContainer\" class=\"header pb-2\" role=\"banner\">\n <ng-container *ngIf=\"!(isProduction | async)\">\n <div\n *ngIf=\"applicationInfoService.data | async as info\"\n class=\"environment {{ info.environment?.toLowerCase() }}\"\n >\n <span class=\"content\">{{ getEnvironmentLabel(info) }}</span>\n </div>\n </ng-container>\n\n <nav\n class=\"container fixed-top access-nav d-print-none\"\n aria-label=\"menu accessibilité\"\n >\n <ul class=\"list-unstyled mt-3\">\n <li>\n <foehn-skip-link\n accesskey=\"0\"\n title=\"[Alt+0] Début du contenu de la page\"\n content=\"Début du contenu de la page\"\n targetAnchor=\"main\"\n ></foehn-skip-link>\n </li>\n </ul>\n </nav>\n\n <div class=\"container\">\n <div class=\"d-flex flex-wrap\">\n <a\n class=\"vd-logo\"\n href=\"https://www.vd.ch\"\n title=\"Aller à la page d'accueil du Site du Canton de Vaud\"\n >\n <!-- Copied from @dsivd/foehn/dist/assets/svg/ETATVAUD-alt.svg -->\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n id=\"vecteurs\"\n version=\"1.1\"\n width=\"208.8\"\n height=\"35.3\"\n >\n <style id=\"style2\">\n .st0 {\n fill: #9f3;\n }\n\n .st1 {\n fill: #40d940;\n }\n\n .st2 {\n fill: #fff;\n }\n\n .st3 {\n fill: #d5dee3;\n }\n\n .st4 {\n fill: #546674;\n }\n\n .st5 {\n fill: #1f5e03;\n }\n </style>\n <path\n class=\"st0\"\n d=\"M0 30.2h5v5.1H0z\"\n id=\"path4\"\n fill=\"#9f3\"\n />\n <path\n class=\"st1\"\n d=\"M5 30.2h5v5.1H5z\"\n id=\"path6\"\n fill=\"#40d940\"\n />\n <path\n class=\"st2\"\n d=\"M10 30.2h5v5.1h-5z\"\n id=\"path8\"\n fill=\"#fff\"\n />\n <path\n class=\"st1\"\n d=\"M14.9 30.2h5v5.1h-5z\"\n id=\"path10\"\n fill=\"#40d940\"\n />\n <path\n class=\"st2\"\n d=\"M19.9 30.2h5v5.1h-5z\"\n id=\"path12\"\n fill=\"#fff\"\n />\n <path\n class=\"st1\"\n d=\"M24.8 30.2h5v5.1h-5z\"\n id=\"path14\"\n fill=\"#40d940\"\n />\n <path\n class=\"st3\"\n d=\"M29.8 30.2h5v5.1h-5z\"\n id=\"path16\"\n fill=\"#d5dee3\"\n />\n <path\n class=\"st1\"\n d=\"M34.7 30.2h5v5.1h-5z\"\n id=\"path18\"\n fill=\"#40d940\"\n />\n <path\n class=\"st3\"\n d=\"M39.7 30.2h5v5.1h-5z\"\n id=\"path20\"\n fill=\"#d5dee3\"\n />\n <path\n class=\"st1\"\n d=\"M44.6 30.2h5v5.1h-5z\"\n id=\"path22\"\n fill=\"#40d940\"\n />\n <path\n class=\"st3\"\n d=\"M49.6 30.2h5v5.1h-5z\"\n id=\"path24\"\n fill=\"#d5dee3\"\n />\n <path\n class=\"st0\"\n d=\"M54.5 30.2h5v5.1h-5z\"\n id=\"path26\"\n fill=\"#9f3\"\n />\n <path\n class=\"st2\"\n d=\"M59.5 30.2h5v5.1h-5z\"\n id=\"path28\"\n fill=\"#fff\"\n />\n <path\n class=\"st0\"\n d=\"M64.5 30.2h5v5.1h-5z\"\n id=\"path30\"\n fill=\"#9f3\"\n />\n <path\n class=\"st2\"\n d=\"M69.4 30.2h5v5.1h-5z\"\n id=\"path32\"\n fill=\"#fff\"\n />\n <path\n class=\"st4\"\n d=\"M74.4 30.2h5v5.1h-5z\"\n id=\"path34\"\n fill=\"#546674\"\n />\n <path\n class=\"st2\"\n d=\"M79.3 30.2h5v5.1h-5z\"\n id=\"path36\"\n fill=\"#fff\"\n />\n <path\n class=\"st4\"\n d=\"M84.3 30.2h5v5.1h-5z\"\n id=\"path38\"\n fill=\"#546674\"\n />\n <path\n class=\"st0\"\n d=\"M89.2 30.2h5v5.1h-5z\"\n id=\"path40\"\n fill=\"#9f3\"\n />\n <path\n class=\"st4\"\n d=\"M94.2 30.2h5v5.1h-5z\"\n id=\"path42\"\n fill=\"#546674\"\n />\n <path\n class=\"st0\"\n d=\"M99.1 30.2h5v5.1h-5z\"\n id=\"path44\"\n fill=\"#9f3\"\n />\n <path\n class=\"st4\"\n d=\"M104.1 30.2h5v5.1h-5z\"\n id=\"path46\"\n fill=\"#546674\"\n />\n <path\n class=\"st0\"\n d=\"M109 30.2h5v5.1h-5z\"\n id=\"path48\"\n fill=\"#9f3\"\n />\n <path\n class=\"st1\"\n d=\"M114 30.2h5v5.1h-5z\"\n id=\"path50\"\n fill=\"#40d940\"\n />\n <path\n class=\"st5\"\n d=\"M119 30.2h5v5.1h-5z\"\n id=\"path52\"\n fill=\"#1f5e03\"\n />\n <path\n class=\"st1\"\n d=\"M123.9 30.2h5v5.1h-5z\"\n id=\"path54\"\n fill=\"#40d940\"\n />\n <path\n class=\"st5\"\n d=\"M128.9 30.2h5v5.1h-5z\"\n id=\"path56\"\n fill=\"#1f5e03\"\n />\n <path\n class=\"st2\"\n d=\"M133.8 30.2h5v5.1h-5z\"\n id=\"path58\"\n fill=\"#fff\"\n />\n <path\n class=\"st5\"\n d=\"M138.8 30.2h5v5.1h-5z\"\n id=\"path60\"\n fill=\"#1f5e03\"\n />\n <path\n class=\"st1\"\n d=\"M143.7 30.2h5v5.1h-5z\"\n id=\"path62\"\n fill=\"#40d940\"\n />\n <path d=\"M148.7 30.2h5v5.1h-5z\" id=\"path64\" />\n <path\n class=\"st1\"\n d=\"M153.6 30.2h5v5.1h-5z\"\n id=\"path66\"\n fill=\"#40d940\"\n />\n <path d=\"M158.6 30.2h5v5.1h-5z\" id=\"path68\" />\n <path\n class=\"st1\"\n d=\"M163.5 30.2h5v5.1h-5z\"\n id=\"path70\"\n fill=\"#40d940\"\n />\n <path d=\"M168.5 30.2h5v5.1h-5z\" id=\"path72\" />\n <path\n class=\"st1\"\n d=\"M173.5 30.2h5v5.1h-5z\"\n id=\"path74\"\n fill=\"#40d940\"\n />\n <path\n class=\"st2\"\n d=\"M178.4 30.2h5v5.1h-5z\"\n id=\"path76\"\n fill=\"#fff\"\n />\n <path\n class=\"st1\"\n d=\"M183.4 30.2h5v5.1h-5z\"\n id=\"path78\"\n fill=\"#40d940\"\n />\n <path\n class=\"st3\"\n d=\"M188.3 30.2h5v5.1h-5z\"\n id=\"path80\"\n fill=\"#d5dee3\"\n />\n <path\n class=\"st0\"\n d=\"M193.3 30.2h5v5.1h-5z\"\n id=\"path82\"\n fill=\"#9f3\"\n />\n <path\n class=\"st1\"\n d=\"M198.2 30.2h5v5.1h-5z\"\n id=\"path84\"\n fill=\"#40d940\"\n />\n <path\n class=\"st0\"\n d=\"M203.2 30.2h5v5.1h-5z\"\n id=\"path86\"\n fill=\"#9f3\"\n />\n <g id=\"g90\" transform=\"translate(-444.8 -502.9)\">\n <path\n d=\"M444.8 508.5h14.1v3.8h-9.2v5h7.4v3.6h-7.4v5.4h9.7v3.8h-14.6zm7-5.6h4.7l-3 4.2h-3.3zm16.2 9.4h-5.8v-3.8h16.6v3.8H473v17.8h-5zm17.2-3.8h6.4l7 21.6h-5.1l-1.5-4.8h-7.8l-1.5 4.8h-4.6zm0 13.3h5.7l-2.8-9.3zm18.9-9.5h-5.8v-3.8h16.6v3.8H509v17.8h-4.9zm20.9-3.8h7.1c7.6 0 11.3 4.1 11.3 10.6v.2c0 6.5-3.8 10.8-11.4 10.8h-7zm6.9 17.8c4.3 0 6.4-2.4 6.4-6.9v-.2c0-4.4-1.9-6.8-6.5-6.8h-1.9v14h2zm15.5-17.8h14.1v3.8h-9.2v5h7.4v3.6h-7.4v5.4h9.7v3.8h-14.6zm23.7 0h5.2l5.1 16.6 5.1-16.6h4.6l-7.2 21.6h-5.6zm26.2 0h6.4l7 21.6h-5.1l-1.5-4.8h-7.8l-1.5 4.8h-4.6zm0 13.3h5.7l-2.8-9.3zm15.2-.1v-13.2h4.9v12.9c0 3.6 1.1 5.2 4 5.2s4.2-1.4 4.2-5.3v-12.7h4.9v13c0 5.9-3.3 8.9-9.1 8.9-5.6-.1-8.9-3.1-8.9-8.8zm22.7-13.2h7.1c7.6 0 11.3 4.1 11.3 10.6v.2c0 6.5-3.8 10.8-11.4 10.8h-7zm6.9 17.8c4.3 0 6.4-2.4 6.4-6.9v-.2c0-4.4-1.9-6.8-6.5-6.8h-1.9v14h2z\"\n id=\"path88\"\n fill=\"#231f20\"\n />\n </g>\n </svg>\n </a>\n <section class=\"mb-3 ml-auto\" *ngIf=\"isIamCyber\">\n <h2 class=\"sr-only\">Votre identité</h2>\n <div class=\"d-flex flex-wrap\">\n <dl class=\"align-self-center text-right mr-1\">\n <p class=\"mb-0\">\n <span\n id=\"header-connectedEsSrLabel\"\n class=\"sr-only\"\n >\n Espace sécurisé:\n </span>\n <a id=\"header-connectedEs\" href=\"/100002/\">\n {{ beneficiaire }}\n </a>\n </p>\n\n <p class=\"mb-0 small\" *ngIf=\"!isParticulier()\">\n <span\n id=\"header-connectedUserSrLabel\"\n class=\"sr-only\"\n >\n Personne connectée:\n </span>\n <span id=\"header-connectedUser\">\n {{ prenom }} {{ nom }}\n </span>\n </p>\n <ul class=\"mb-0 small list-inline\">\n <li class=\"list-inline-item\">\n <a href=\"/100013/\">Paramètres de connexion</a>\n </li>\n <li class=\"list-inline-item\">\n <a href=\"/100018/logout\">Se déconnecter</a>\n </li>\n </ul>\n </dl>\n <figure class=\"m-0 ml-auto vd-avatar\">\n <img\n class=\"vd-avatar__image\"\n [alt]=\"'Logo de ' + beneficiaire\"\n src=\"api/sessionInfo/beneficiary-info/logo\"\n />\n </figure>\n </div>\n </section>\n\n <section class=\"mb-3 ml-auto\" *ngIf=\"isIamAcv\">\n <h2 class=\"sr-only\">Votre identité</h2>\n <div class=\"d-flex flex-wrap\">\n <dl class=\"align-self-center text-right mr-1\">\n <p class=\"mb-0\">\n <span\n id=\"header-connectedUser-acvSrLabel\"\n class=\"sr-only\"\n >\n Personne connectée:\n </span>\n <span id=\"header-connectedUser-acv\">\n {{ prenom }} {{ nom }}\n </span>\n </p>\n <ul class=\"mb-0 small list-inline\">\n <li class=\"list-inline-item\">\n <a href=\"logout\">Quitter l'application</a>\n </li>\n </ul>\n </dl>\n </div>\n </section>\n </div>\n\n <div class=\"row\">\n <div class=\"col-md-10\">\n <span id=\"app-title\" class=\"h3 mt-1 vd-heading-light\">\n {{ title }}\n </span>\n </div>\n <div\n class=\"col-md-2\"\n *ngIf=\"availableLanguages | async as languages\"\n >\n <foehn-select\n name=\"languageSelector\"\n label=\"Sélection de la langue\"\n isLabelSrOnly=\"true\"\n *ngIf=\"languages.length > 1\"\n [elements]=\"languages\"\n [elementValue]=\"'code'\"\n [model]=\"currentLanguageCode | async\"\n (userInput)=\"languageChanged($event)\"\n [required]=\"true\"\n ></foehn-select>\n </div>\n </div>\n </div>\n</header>\n","import { Component, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { GrowlMessage } from './growl-message';\nimport { GrowlBrokerService } from './growl-broker.service';\n\nconst DEFAULT_DISPLAY_TIME = 3000;\n\n@Component({\n selector: 'foehn-growl',\n templateUrl: './foehn-growl.component.html',\n styleUrls: ['./foehn-growl.component.css']\n})\nexport class FoehnGrowlComponent implements OnDestroy {\n private addMessageObserver: Subscription;\n private _messages: GrowlMessage[] = [];\n\n constructor(private growlService: GrowlBrokerService) {\n this.addMessageObserver = this.growlService.messageAddedSubject.subscribe(\n message => {\n if (message) {\n this._messages.push(message);\n setTimeout(\n () => this.hideMessage(message),\n !!message.timeToDisplayInSeconds\n ? message.timeToDisplayInSeconds * 1000\n : DEFAULT_DISPLAY_TIME\n );\n }\n }\n );\n }\n\n ngOnDestroy(): void {\n this.addMessageObserver.unsubscribe();\n }\n\n get messages(): GrowlMessage[] {\n return this._messages;\n }\n\n hideMessage(message: GrowlMessage): void {\n message.isVisible = false;\n }\n\n removeMessage(message: GrowlMessage): void {\n if (this.messages.includes(message)) {\n this.messages.splice(this.messages.indexOf(message), 1);\n }\n }\n\n cssTransitionEnd(message: GrowlMessage): void {\n this.removeMessage(message);\n }\n}\n","<div id=\"foehn_growlContainer\" class=\"container fixed-top\">\n <div\n class=\"alert\"\n role=\"alert\"\n *ngFor=\"let message of messages\"\n [ngClass]=\"message.type\"\n [class.hidden]=\"!message.isVisible\"\n (transitionend)=\"cssTransitionEnd(message)\"\n [innerHTML]=\"message.content\"\n ></div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { FoehnConfirmModalContent } from './foehn-confirm-modal-content';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FoehnConfirmModalService {\n private content = new BehaviorSubject<FoehnConfirmModalContent>(null);\n private readonly visible: Observable<boolean>;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private resolveCallback: (...args: any[]) => void = null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private rejectCallback: (...args: any[]) => void = null;\n\n constructor() {\n this.visible = this.content.pipe(map(data => !!data));\n }\n\n getIsVisible(): Observable<boolean> {\n return this.visible;\n }\n\n getContent(): Observable<FoehnConfirmModalContent> {\n return this.content.asObservable();\n }\n\n close(): void {\n if (this.rejectCallback) {\n this.rejectCallback();\n }\n\n this.reset();\n }\n\n ok(): void {\n if (this.resolveCallback) {\n this.resolveCallback();\n }\n\n this.reset();\n }\n\n openConfirmModal(content: FoehnConfirmModalContent): Promise<boolean> {\n this.content.next(content);\n\n return new Promise((resolve, reject) => {\n this.resolveCallback = resolve;\n this.rejectCallback = reject;\n });\n }\n\n private reset(): void {\n this.content.next(null);\n this.resolveCallback = null;\n this.rejectCallback = null;\n }\n}\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { BreadcrumbEventService } from './breadcrumb-event.service';\nimport { Breadcrumb, BreadcrumbItem } from './breadcrumb';\nimport { Router } from '@angular/router';\nimport { FoehnConfirmModalService } from '../foehn-confirm-modal/foehn-confirm-modal.service';\nimport { FoehnConfirmModalContent } from '../foehn-confirm-modal/foehn-confirm-modal-content';\n\n@Component({\n selector: 'foehn-breadcrumb',\n templateUrl: './foehn-breadcrumb.component.html',\n styleUrls: ['./foehn-breadcrumb.component.css']\n})\nexport class FoehnBreadcrumbComponent implements OnInit, OnDestroy {\n @Input()\n breadcrumbItems: BreadcrumbItem[] = [];\n\n @Input()\n currentNav: string;\n\n @Input()\n neverConnected: boolean;\n\n @Input()\n confirmLeavingAlert: FoehnConfirmModalContent;\n\n private breadcrumbSubscription: Subscription;\n\n constructor(\n private breadcrumbService: BreadcrumbEventService,\n private router: Router,\n private foehnConfirmModalService: FoehnConfirmModalService\n ) {}\n\n reset(): void {\n this.breadcrumbItems = [];\n this.currentNav = null;\n }\n\n ngOnInit(): void {\n const breadcrumbObservable = this.neverConnected\n ? this.breadcrumbService.neverConnectedBreadcrumbObservable()\n : this.breadcrumbService.breadcrumbObservable();\n\n this.breadcrumbSubscription = breadcrumbObservable.subscribe(\n (bc: Breadcrumb) => {\n if (bc && bc.breadcrumbItems && bc.breadcrumbItems.length > 0) {\n this.breadcrumbItems = bc.breadcrumbItems;\n this.currentNav = bc.current ? bc.current.label : null;\n } else {\n this.reset();\n }\n }\n );\n }\n\n ngOnDestroy(): void {\n if (this.breadcrumbSubscription) {\n this.breadcrumbSubscription.unsubscribe();\n this.breadcrumbSubscription = null;\n }\n }\n\n confirmAndLeave(item: BreadcrumbItem): void {\n if (\n !this.breadcrumbService.skipLeavingAlertBecauseDemandIsTransmitted\n ) {\n if (item.skipLeavingAlert !== false) {\n this.navigate(item);\n } else {\n this.foehnConfirmModalService\n .openConfirmModal(this.confirmLeavingAlert)\n .then(\n () => this.navigate(item),\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n () => {}\n );\n }\n } else {\n this.navigate(item);\n }\n }\n\n redirect(item: BreadcrumbItem): void {\n window.location.href = item.url;\n }\n\n private navigate(item: BreadcrumbItem): void {\n if (item.routerLink) {\n this.router.navigate([item.routerLink]);\n } else if (item.url) {\n this.redirect(item);\n }\n }\n}\n","<nav\n id=\"page-breadcrumb\"\n aria-label=\"Fil d'Ariane\"\n *ngIf=\"breadcrumbItems.length > 0\"\n>\n <h2 class=\"sr-only\">Fil d'Ariane</h2>\n <ol class=\"breadcrumb breadcrumb--override\">\n <li class=\"breadcrumb-item\" *ngFor=\"let item of breadcrumbItems\">\n <a\n *ngIf=\"item.url || item.routerLink\"\n (click)=\"$event.preventDefault(); confirmAndLeave(item)\"\n href=\"#\"\n >\n {{ item.label }}\n </a>\n <ng-container *ngIf=\"!item.url && !item.routerLink\">\n {{ item.label }}\n </ng-container>\n </li>\n <li class=\"sr-only\" aria-current=\"page\" *ngIf=\"currentNav\">\n {{ currentNav }}\n </li>\n </ol>\n</nav>\n","import { Component } from '@angular/core';\nimport { AbstractIconComponent } from './abstract-icon-component';\nimport { faExternalLinkAlt } from '@fortawesome/free-solid-svg-icons';\n\n@Component({\n selector: 'foehn-icon-external-link-alt',\n templateUrl: './foehn-icon.component.html'\n})\nexport class FoehnIconExternalLinkAltComponent extends AbstractIconComponent {\n iconName = faExternalLinkAlt;\n defaultTitle = 'Lien externe (nouvel onglet)';\n}\n","export enum SupportAlertLevel {\n INFO = 'INFO',\n WARNING = 'WARNING',\n IMPORTANT = 'IMPORTANT'\n}\n\nexport interface SupportAlert {\n id?: number;\n messageTitle?: string;\n messageBody?: string;\n level?: SupportAlertLevel;\n blocking?: boolean;\n}\n","import { Component, Input } from '@angular/core';\nimport { SupportAlert, SupportAlertLevel } from './support-alert.model';\nimport { SupportAlertService } from './support-alert.service';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'sdk-support-alert',\n templateUrl: './support-alert.component.html'\n})\nexport class SupportAlertComponent {\n @Input()\n alert: SupportAlert;\n\n constructor(private supportAlertService: SupportAlertService) {}\n\n hideAlert(alert: SupportAlert): void {\n this.supportAlertService.hideAlert(alert);\n }\n\n getAlertClass(alert: SupportAlert): string {\n switch (alert.level) {\n case SupportAlertLevel.INFO:\n return 'alert-info';\n case SupportAlertLevel.WARNING:\n return 'alert-warning';\n case SupportAlertLevel.IMPORTANT:\n return 'alert-danger';\n default:\n return 'alert-info';\n }\n }\n}\n","<section\n [class]=\"'alert alert-dismissible fade show ' + getAlertClass(alert)\"\n role=\"alert\"\n *ngIf=\"!!alert\"\n>\n <h3\n class=\"alert-heading mt-0 h5\"\n *ngIf=\"alert.messageTitle && alert.messageTitle.length > 0\"\n [innerHtml]=\"alert.messageTitle\"\n ></h3>\n\n <div [innerHtml]=\"alert.messageBody\"></div>\n\n <button\n *ngIf=\"!alert.blocking\"\n type=\"button\"\n class=\"close\"\n aria-label=\"Cacher ce message\"\n title=\"Cacher ce message\"\n (click)=\"hideAlert(alert)\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n</section>\n","import {\n Component,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges\n} from '@angular/core';\nimport { SupportAlertService } from './support-alert.service';\nimport { SupportAlert } from './support-alert.model';\nimport { Observable } from 'rxjs';\n\nconst DEFAULT_SUPPORT_ALERT_URL = 'api/support-alert/{etapeId}';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'sdk-support-alert-container',\n templateUrl: './support-alert-container.component.html'\n})\nexport class SupportAlertContainerComponent implements OnInit, OnChanges {\n @Input()\n etapeId: string;\n\n // Some prestation have their own backend to handle alerts, such as ES.\n @Input()\n supportAlertUrl: string;\n\n alertsToDisplay: Observable<SupportAlert[]>;\n hasAlerts: Observable<boolean>;\n hasHiddenAlerts: Observable<boolean>;\n\n constructor(private supportAlertService: SupportAlertService) {}\n\n ngOnInit(): void {\n this.alertsToDisplay = this.supportAlertService.getDisplayableAlerts();\n this.hasAlerts = this.supportAlertService.getHasAlerts();\n this.hasHiddenAlerts = this.supportAlertService.getHasHiddenAlerts();\n }\n\n restoreAllAlerts(): void {\n this.supportAlertService.restoreAllAlerts();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const etapeIdChange = changes.etapeId;\n if (etapeIdChange && etapeIdChange.currentValue) {\n // Change the URL of the alerts when the etapeId is set.\n this.supportAlertService.setSupportAlertUrl(\n this.formatUrl(etapeIdChange.currentValue)\n );\n return;\n }\n\n // We want to support the use-case wheter the etapeId isn't defined.\n const supportAlertUrl = changes.supportAlertUrl;\n if (supportAlertUrl && supportAlertUrl.currentValue) {\n // Change the URL of the alerts when the etapeId is set.\n this.supportAlertService.setSupportAlertUrl(\n supportAlertUrl.currentValue\n );\n return;\n }\n }\n\n private formatUrl(etapeId: string): string {\n const url = this.supportAlertUrl || DEFAULT_SUPPORT_ALERT_URL;\n return url.replace('{etapeId}', etapeId);\n }\n}\n","<div class=\"d-flex flex-column container mt-2\" *ngIf=\"hasAlerts | async\">\n <h2 class=\"sr-only\">Messages de support</h2>\n <div class=\"mb-2 mt-2\" *ngIf=\"hasHiddenAlerts | async\">\n <button class=\"btn btn-link pr-0 pl-0\" (click)=\"restoreAllAlerts()\">\n Afficher tous les messages\n </button>\n </div>\n <sdk-support-alert\n *ngFor=\"let alert of alertsToDisplay | async\"\n [alert]=\"alert\"\n ></sdk-support-alert>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { SessionInfoData } from '../sdk-session-info/session-info-data';\nimport { filter, map } from 'rxjs/operators';\nimport { SessionInfo } from '../sdk-session-info/session-info.service';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'foehn-user-connected-as',\n templateUrl: './foehn-user-connected-as.component.html'\n})\nexport class FoehnUserConnectedAsComponent implements OnInit {\n connectedAs: Observable<string>;\n\n constructor(private sessionInfo: SessionInfo) {}\n\n ngOnInit(): void {\n this.connectedAs = this.sessionInfo.data.pipe(\n filter(userInfo => !!userInfo),\n map((userInfo: SessionInfoData) => userInfo.espaceLabel)\n );\n }\n}\n","<!-- prettier-ignore -->\n<p\n *ngIf=\"(connectedAs | async) as userConnectedAs\"\n class=\"h2\"\n>\n La demande sera effectuée pour <em>«{{ userConnectedAs }}»</em>\n</p>\n","import { Component } from '@angular/core';\nimport { AbstractIconComponent } from './abstract-icon-component';\nimport { faChevronUp } from '@fortawesome/free-solid-svg-icons';\n\n@Component({\n selector: 'foehn-icon-chevron-up',\n templateUrl: './foehn-icon.component.html'\n})\nexport class FoehnIconChevronUpComponent extends AbstractIconComponent {\n iconName = faChevronUp;\n defaultTitle = 'Flèche vers le haut';\n}\n","import { Component, Input, OnChanges, OnInit } from '@angular/core';\nimport { FooterLink } from './footer-link.type';\nimport { ApplicationInfoService } from '../sdk-appinfo/application-info.service';\nimport { BehaviorSubject, combineLatest, merge, Observable, of } from 'rxjs';\nimport { ApplicationInfo } from '../sdk-appinfo/application-info';\nimport { GesdemEventService } from '../gesdem/gesdem-event.service';\nimport { GesdemHandlerService } from '../gesdem/gesdem-handler.service';\nimport { map } from 'rxjs/operators';\n\nconst GUIDE_URL = 'https://www.vd.ch/index.php?id=67827';\nconst TERM_OF_USE_URL = 'https://www.vd.ch/index.php?id=2015321';\nconst SECURITY_BEST_PRACTICE_URL = 'https://www.vd.ch/index.php?id=2015320';\n\n@Component({\n selector: 'foehn-footer',\n templateUrl: './foehn-footer.component.html'\n})\nexport class FoehnFooterComponent implements OnInit, OnChanges {\n @Input()\n links: FooterLink[];\n\n /**\n * If set to 'false', hide the default Contact link.\n */\n @Input()\n showDefaultContactLink = true;\n\n /**\n * If set to 'false', hide the default Guide link.\n */\n @Input()\n showDefaultGuideLink = true;\n\n /**\n * If set to 'false', hide the default Terms of use link.\n */\n @Input()\n showDefaultTermOfUseLink = true;\n\n /**\n * If set to 'false', hide the default Security Best Practice link.\n */\n @Input()\n showDefaultSecurityBestPracticeLink = true;\n\n applicationInfo: Observable<ApplicationInfo>;\n allLinks: Observable<FooterLink[]>;\n\n readonly applicationInfoService: ApplicationInfoService;\n readonly gesdemEventService: GesdemEventService;\n readonly gesdemService: GesdemHandlerService;\n\n private inputChanged = new BehaviorSubject<number>(0);\n\n constructor(\n applicationInfoService: ApplicationInfoService,\n gesdemEventService: GesdemEventService,\n gesdemService: GesdemHandlerService\n ) {\n this.gesdemService = gesdemService;\n this.gesdemEventService = gesdemEventService;\n this.applicationInfoService = applicationInfoService;\n }\n\n ngOnInit(): void {\n this.applicationInfo = this.applicationInfoService.data;\n\n const referenceObservable = this.gesdemEventService\n .formInitializationObservable()\n .pipe(\n map(\n () =>\n this.gesdemService.lastResponse &&\n this.gesdemService.lastResponse.meta.reference\n )\n );\n\n combineLatest([\n this.applicationInfoService.getSafeSupportFormUrl(),\n this.applicationInfoService.getSafeSupportFormTitle()\n ]).subscribe(([url, title]) => {\n this.allLinks = combineLatest([\n merge(of(null), referenceObservable),\n this.inputChanged\n ]).pipe(\n map(([reference]) => [\n ...this.getDefaultLinks(title, url, reference),\n ...(this.links || [])\n ])\n );\n });\n }\n\n ngOnChanges(): void {\n this.inputChanged.next(this.inputChanged.getValue() + 1);\n }\n\n gotToTop(e: Event): void {\n if (e) {\n e.preventDefault();\n }\n window.scrollTo(0, 0);\n }\n\n private getDefaultLinks(\n contactFormTitle: string,\n contactFormUrl: string,\n reference: string\n ): FooterLink[] {\n return [\n this.getContactLink(contactFormTitle, contactFormUrl, reference),\n this.getGuideLink(),\n this.getTermOfUseLink(),\n this.getSecurityBestPracticeLink()\n ].filter(value => !!value);\n }\n\n private getContactLink(\n contactFormTitle: string,\n contactFormUrl: string,\n reference: string\n ): FooterLink | null {\n if (!this.showDefaultContactLink) {\n return null;\n }\n\n const referenceQueryParam = !!reference\n ? `?concernedReference=${reference}`\n : '';\n const fullSupportAppUrl = contactFormUrl + referenceQueryParam;\n return {\n label: contactFormTitle,\n url: fullSupportAppUrl\n };\n }\n\n private getGuideLink(): FooterLink | null {\n if (!this.showDefaultGuideLink) {\n return null;\n }\n\n return {\n label: \"Guide d'utilisation du portail sécurisé\",\n url: GUIDE_URL\n };\n }\n\n private getTermOfUseLink(): FooterLink | null {\n if (!this.showDefaultTermOfUseLink) {\n return null;\n }\n\n return {\n label: \"Conditions d'utilisation\",\n url: TERM_OF_USE_URL\n };\n }\n\n private getSecurityBestPracticeLink(): FooterLink | null {\n if (!this.showDefaultSecurityBestPracticeLink) {\n return null;\n }\n\n return {\n label:\n 'Bonnes pratiques en matière de sécurité informatique et de protection des données personnelles',\n url: SECURITY_BEST_PRACTICE_URL\n };\n }\n}\n","<footer id=\"foehn_footerContainer\" class=\"mt-5\">\n <div class=\"container\">\n <div class=\"text-right\">\n <a\n href=\"\"\n class=\"btn btn-sm btn-dark\"\n title=\"Retour vers le haut de la page\"\n (click)=\"gotToTop($event)\"\n >\n Haut \n <foehn-icon-chevron-up></foehn-icon-chevron-up>\n </a>\n </div>\n </div>\n\n <div class=\"footer\">\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-xs-10\" *ngIf=\"allLinks | async as links\">\n <nav\n class=\"row\"\n aria-label=\"pied de page\"\n *ngIf=\"!!links && !!links.length\"\n >\n <div class=\"col-sm\">\n <ul class=\"list-unstyled\">\n <li *ngFor=\"let link of links\">\n <a\n class=\"footer-link\"\n target=\"_blank\"\n [href]=\"link.url\"\n >\n {{ link.label }}\n </a>\n </li>\n </ul>\n </div>\n </nav>\n </div>\n <div class=\"col-xs-2\">\n <div class=\"d-flex align-items-end flex-column h-100\">\n <div class=\"mt-auto w-100 text-right\">\n <a href=\"https://www.vd.ch\" class=\"d-inline-block\">\n <span class=\"sr-only\">\n Retour à la page d'accueil\n </span>\n <img\n aria-hidden=\"true\"\n class=\"img-fluid footer-logo\"\n src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAIKCAMAAACTCbS+AAADAFBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8HPQsIAAAA/3RSTlMAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1O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\"\n alt=\"Canton de Vaud\"\n />\n </a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- Numéros de version de l'appli -->\n <!-- On les met en hidden pour tous pour éviter des problèmes d'accessibilité -->\n <span\n id=\"appinfo\"\n aria-hidden=\"true\"\n class=\"d-none\"\n *ngIf=\"applicationInfo | async as appInfo\"\n >\n <span id=\"environment\" aria-hidden=\"true\" class=\"d-none\">\n {{ appInfo.environment }}\n </span>\n <span id=\"version\" aria-hidden=\"true\" class=\"d-none\">\n {{ appInfo.version }}\n </span>\n <span id=\"buildtime\" aria-hidden=\"true\" class=\"d-none\">\n {{ appInfo.buildtime }}\n </span>\n <span id=\"contextPath\" aria-hidden=\"true\" class=\"d-none\">\n {{ appInfo.contextPath }}\n </span>\n </span>\n</footer>\n","import {\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n Output,\n ViewChild\n} from '@angular/core';\n\n@Component({\n selector: 'foehn-modal',\n templateUrl: './foehn-modal.component.html',\n styleUrls: ['./foehn-modal.component.css']\n})\nexport class FoehnModalComponent {\n @Input()\n id: string;\n\n @Input()\n name: string;\n\n @Input()\n modalSize: string;\n\n @Input()\n modalBodyText: string;\n\n @Input()\n modalHeaderText: string;\n\n @Input()\n modalFooterText = \"L'Administration Cantonale Vaudoise\";\n\n @Input()\n closeable = true;\n\n @Input()\n modalTriggerHtmlElement: HTMLElement;\n\n @Output()\n isModalVisibleChange = new EventEmitter();\n\n @ViewChild('modalBody')\n modalBody: ElementRef;\n\n @ViewChild('modalTitle')\n modalTitle: ElementRef;\n\n @ViewChild('specificfooter')\n specificfooter: ElementRef;\n\n @ViewChild('modalDefaultCloseBtn')\n modalDefaultCloseBtn: ElementRef;\n\n private isVisible = false;\n\n @HostListener('keyup', ['$event'])\n handleKeyboardEvent(event: KeyboardEvent): void {\n if (this.closeable && event.key === 'Escape') {\n this.isModalVisible = false;\n }\n }\n\n @Input()\n get isModalVisible(): boolean {\n return this.isVisible;\n }\n\n set isModalVisible(val: boolean) {\n // Store the previous value to handle transitions from one state to another.\n const wasOpen = this.isVisible;\n\n this.isVisible = val;\n this.isModalVisibleChange.emit(this.isVisible);\n this.focusOnContainer(val);\n this.focusOnModalTrigger(wasOpen, val);\n }\n\n private focusOnContainer(isVisible: boolean): void {\n // Has to be a setTimeout as we're affecting the DOM outside of the Angular lifecycle.\n setTimeout(() => {\n if (isVisible) {\n if (this.modalDefaultCloseBtn) {\n this.modalDefaultCloseBtn.nativeElement.focus();\n } else if (this.modalBody) {\n this.modalBody.nativeElement.focus();\n }\n // this condition is useless because this.modalTitle should always be here when \"isVisible\"\n // but not in tests, so we keep it for now\n if (this.modalTitle) {\n this.modalTitle.nativeElement.scrollIntoView();\n }\n }\n });\n }\n\n private focusOnModalTrigger(wasOpen: boolean, isVisible: boolean): void {\n // Focus back on the trigger. No need for a setTimeout as the trigger should still be in the DOM.\n // Only does it when the modal is closed from a open state to avoid to set\n // the focus when the page loads.\n if (wasOpen && !isVisible && this.modalTriggerHtmlElement) {\n this.modalTriggerHtmlElement.focus();\n }\n }\n}\n","<div\n class=\"modal\"\n [id]=\"id || name\"\n role=\"dialog\"\n aria-labelledby=\"modalTitle\"\n aria-describedby=\"modalBody\"\n style=\"display: block\"\n *ngIf=\"isModalVisible\"\n cdkTrapFocus\n>\n <div class=\"modal-dialog modal-dialog-centered\" [ngClass]=\"modalSize\">\n <div class=\"modal-content\">\n <div class=\"modal-header d-flex flex-row-reverse\">\n <button\n *ngIf=\"closeable\"\n (click)=\"isModalVisible = false\"\n type=\"button\"\n class=\"btn close\"\n aria-label=\"Fermer la boite de dialogue\"\n id=\"closeButton\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h2\n class=\"modal-title h5\"\n id=\"modalTitle\"\n #modalTitle\n [innerHTML]=\"modalHeaderText\"\n ></h2>\n </div>\n <div class=\"modal-body\" id=\"modalBody\" #modalBody tabindex=\"-1\">\n <div *ngIf=\"modalBodyText\" [innerHTML]=\"modalBodyText\"></div>\n <ng-content></ng-content>\n </div>\n <div class=\"modal-footer w-100 d-block\">\n <div #specificfooter id=\"specificfooter\">\n <ng-content select=\"[modal-footer]\"></ng-content>\n </div>\n <ng-container *ngIf=\"!specificfooter.innerHTML.trim()\">\n <div modal-footer class=\"w-100\">\n <div class=\"d-md-flex\">\n <div class=\"ml-md-auto mr-md-2 mb-2 mt-2\">\n <button\n (click)=\"isModalVisible = false\"\n class=\"btn btn-secondary w-100\"\n data-dismiss=\"modal\"\n aria-label=\"Fermer la boite de dialogue\"\n #modalDefaultCloseBtn\n >\n Fermer\n </button>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { combineLatest, Observable } from 'rxjs';\nimport { filter, first } from 'rxjs/operators';\nimport { ApplicationInfoService } from '../sdk-appinfo/application-info.service';\nimport { SessionInfo } from '../sdk-session-info/session-info.service';\nimport { FoehnPageModalService } from './foehn-page-modal.service';\n\n@Component({\n selector: 'foehn-page-modal',\n templateUrl: './foehn-page-modal.component.html'\n})\nexport class FoehnPageModalComponent implements OnInit {\n wrongPublicModalVisible = false;\n\n formattedPublicsCibles: string[];\n\n private userCategories: string[];\n\n private publicsCibles: string[];\n\n constructor(\n private sessionInfo: SessionInfo,\n private applicationInfoService: ApplicationInfoService,\n private foehnPageModalService: FoehnPageModalService\n ) {}\n\n ngOnInit(): void {\n combineLatest([\n this.applicationInfoService.currentEtapeInfo,\n this.sessionInfo.data\n ])\n .pipe(\n filter(([etapeInfo, data]) => !!etapeInfo && !!data),\n first()\n )\n .subscribe(([etapeInfo, sessionInfoData]) => {\n this.publicsCibles = etapeInfo.publicCible.map(p =>\n p.toUpperCase()\n );\n this.userCategories = sessionInfoData.categories.map(c =>\n c.toUpperCase()\n );\n\n this.wrongPublicModalVisible = !this.publicsCibles.some(cat =>\n this.userCategories.includes(cat)\n );\n\n this.formattedPublicsCibles = this.foehnPageModalService.toQuotedTitleCaseStringArray(\n this.publicsCibles\n );\n });\n }\n\n getFullLoginUrl(): Observable<string> {\n return this.foehnPageModalService.buildSelfRedirectionThroughCyberLogin();\n }\n\n getAbortUrl(): Observable<string> {\n return this.applicationInfoService.getSafeEspacesSecuriseUrl();\n }\n\n getUserCategory(): string {\n return this.foehnPageModalService\n .toQuotedTitleCaseStringArray(this.userCategories)\n .join(', ');\n }\n\n updateVisibilityStatus(status: boolean): void {\n // In case the modal is closed by another mean such as the Escape key.\n this.wrongPublicModalVisible = status;\n }\n}\n","<foehn-modal\n modalHeaderText=\"Accès non autorisé\"\n modalSize=\"modal-lg\"\n [isModalVisible]=\"wrongPublicModalVisible\"\n (isModalVisibleChange)=\"updateVisibilityStatus($event)\"\n [closeable]=\"false\"\n>\n <div class=\"modal-body\">\n Vous êtes connecté pour le compte d’un usager de type\n {{ getUserCategory() }}, or cette prestation est destinée aux usagers de\n type :\n <ul>\n <li *ngFor=\"let pubCible of formattedPublicsCibles\">\n {{ pubCible }}\n </li>\n </ul>\n </div>\n <div class=\"modal-body\">\n Vous pouvez choisir de vous reconnecter et de continuer, ou bien\n d'abandonner.\n </div>\n\n <div modal-footer class=\"w-100\">\n <div class=\"d-md-flex\">\n <div class=\"ml-md-auto mr-md-2 mb-2 mt-2\">\n <a\n class=\"btn btn-primary w-100\"\n [href]=\"getFullLoginUrl() | async\"\n >\n Se reconnecter\n </a>\n </div>\n <div class=\"ml-md-0 mr-md-2 mb-2 mt-2\">\n <a class=\"btn btn-primary w-100\" [href]=\"getAbortUrl() | async\">\n Abandonner\n </a>\n </div>\n </div>\n </div>\n</foehn-modal>\n","import { Component, OnInit } from '@angular/core';\n\nimport { Observable } from 'rxjs';\nimport { FoehnConfirmModalService } from './foehn-confirm-modal.service';\nimport { FoehnConfirmModalContent } from './foehn-confirm-modal-content';\n\n@Component({\n selector: 'foehn-confirm-modal',\n templateUrl: './foehn-confirm-modal.component.html'\n})\nexport class FoehnConfirmModalComponent implements OnInit {\n isVisible = false;\n\n constructor(private confirmModalService: FoehnConfirmModalService) {\n // This need to be done as we're passing these functions to another component.\n this.cancel = this.cancel.bind(this);\n this.ok = this.ok.bind(this);\n }\n\n ngOnInit(): void {\n this.confirmModalService\n .getIsVisible()\n .subscribe(isVisible => (this.isVisible = isVisible));\n }\n\n get content(): Observable<FoehnConfirmModalContent> {\n return this.confirmModalService.getContent();\n }\n\n cancel(): void {\n this.confirmModalService.close();\n }\n\n ok(): void {\n this.confirmModalService.ok();\n }\n\n updateVisibilityStatus(status: boolean): void {\n // In case the modal is closed by another mean such as the Escape key.\n this.isVisible = status;\n }\n}\n","<foehn-modal\n [modalHeaderText]=\"modalContent.title || 'Confirmation'\"\n modalSize=\"modal-md\"\n [isModalVisible]=\"isVisible\"\n (isModalVisibleChange)=\"updateVisibilityStatus($event)\"\n *ngIf=\"content | async as modalContent\"\n>\n <p [innerHTML]=\"modalContent.htmlContent\"></p>\n\n <div modal-footer>\n <div class=\"d-flex justify-content-end mr-2 mb-2 mt-2\">\n <button\n id=\"confirmButton\"\n class=\"btn btn-secondary\"\n (click)=\"cancel()\"\n >\n {{ modalContent.cancelButtonLabel || 'Annuler' }}\n </button>\n <button\n id=\"cancelButton\"\n class=\"btn btn-primary ml-3\"\n (click)=\"ok()\"\n >\n {{ modalContent.okButtonLabel || 'Confirmer' }}\n </button>\n </div>\n </div>\n</foehn-modal>\n","import {\n Component,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges\n} from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { FooterLink } from '../foehn-footer/footer-link.type';\nimport { Title } from '@angular/platform-browser';\nimport { FoehnPageService } from './foehn-page.service';\nimport { SupportAlertService } from '../sdk-support-alert/support-alert.service';\nimport { combineLatest, merge, Observable, of, Subscription } from 'rxjs';\nimport { FoehnNavigationService } from '../foehn-navigation/foehn-navigation.service';\nimport { ApplicationInfoService } from '../sdk-appinfo/application-info.service';\nimport { debounceTime, filter, map } from 'rxjs/operators';\nimport { EtapeInfo } from '../sdk-appinfo/application-info';\nimport { GesdemEventService } from '../gesdem/gesdem-event.service';\nimport { FoehnConfirmModalContent } from '../foehn-confirm-modal/foehn-confirm-modal-content';\nimport { BreadcrumbEventService } from '../foehn-breadcrumb/breadcrumb-event.service';\nimport { supportedBrowsers } from '../supported-browser';\nimport { SessionInfo } from '../sdk-session-info/session-info.service';\nimport { FoehnPageModalService } from '../foehn-page/foehn-page-modal.service';\nimport { SdkDictionaryService } from '../sdk-dictionary/sdk-dictionary.service';\n\nconst LEAVING_ALERT_CONTENT =\n 'Ce changement de page entraine une perte des données non sauvegardées.<br/>Souhaitez-vous quand même continuer ?';\nconst LEAVING_ALERT_OK = 'Poursuivre sans sauvegarder';\nconst LEAVING_ALERT_CANCEL = 'Retourner à la prestation';\n\n@Component({\n selector: 'foehn-page',\n templateUrl: './foehn-page.component.html'\n})\nexport class FoehnPageComponent implements OnDestroy, OnChanges, OnInit {\n @Input()\n appTitle: string;\n\n @Input()\n footerLinks: FooterLink[];\n\n @Input()\n neverConnected: boolean;\n\n @Input()\n supportAlertEnabled = true;\n\n @Input()\n supportAlertUrl: string;\n\n @Input()\n etapeId: string;\n\n @Input()\n userConnectedAsDisplayed = true;\n\n @Input()\n confirmLeavingAlert: FoehnConfirmModalContent = {\n htmlContent: LEAVING_ALERT_CONTENT,\n okButtonLabel: LEAVING_ALERT_OK,\n cancelButtonLabel: LEAVING_ALERT_CANCEL\n };\n\n /**\n * If set to 'false', hide the default Contact link in the footer.\n */\n @Input()\n showDefaultContactFooterLink = true;\n\n /**\n * If set to 'false', hide the default Guide link in the footer.\n */\n @Input()\n showDefaultGuideFooterLink = true;\n\n /**\n * If set to 'false', hide the default Terms of use link.\n */\n @Input()\n showDefaultTermOfUseLink = true;\n\n /**\n * If set to 'false', hide the default Security Best Practice link.\n */\n @Input()\n showDefaultSecurityBestPracticeLink = true;\n\n pageTitle: string;\n\n hasBlockingSupportAlert: Observable<boolean>;\n\n displayUserCategory: Observable<boolean>;\n\n displayLoginMessages: Observable<DisplayLoginMessagesData>;\n\n isBrowserSupported: boolean;\n\n isApplePlatform: boolean;\n\n browserLinkTitlePrefix =\n 'Lien pour le téléchargement du navigateur internet';\n\n browserNotSupportedBypass = false;\n\n private readonly blockedSubscription: Subscription;\n\n constructor(\n private _titleService: Title,\n private foehnPageService: FoehnPageService,\n private supportAlertService: SupportAlertService,\n private foehnNavigationService: FoehnNavigationService,\n private applicationInfoService: ApplicationInfoService,\n private gesdemEventService: GesdemEventService,\n private breadcrumbService: BreadcrumbEventService,\n private router: Router,\n private sessionInfo: SessionInfo,\n private foehnPageModalService: FoehnPageModalService,\n private sdkDictionaryService: SdkDictionaryService\n ) {\n this.hasBlockingSupportAlert = supportAlertService.getHasAtLeastOneBlockingAlert();\n\n this.blockedSubscription = combineLatest([\n this.foehnPageService.foehnPageObservable(),\n // Ensures there is at least one value in the observable.\n merge(of(false), this.hasBlockingSupportAlert)\n ]).subscribe(([title, blocked]) => {\n if (blocked) {\n this.setPageTitle('Prestation indisponible');\n } else if (title) {\n this.setPageTitle(title);\n }\n });\n this.isBrowserSupported = supportedBrowsers.test(navigator.userAgent);\n this.isApplePlatform = /(Mac|iPhone|iPod|iPad)/i.test(\n navigator.platform\n );\n }\n\n ngOnInit(): void {\n if (!this.isBrowserSupported) {\n const pageTitle = 'Navigateur non supporté';\n this.foehnPageService.setPageTitle(pageTitle);\n this.breadcrumbService.setCurrentBreadcrumb({\n url: null,\n routerLink: null,\n label: pageTitle\n });\n }\n\n const isInitialStep = this.applicationInfoService.currentEtapeInfo.pipe(\n map(\n (currentEtapeInfo: EtapeInfo) =>\n currentEtapeInfo &&\n currentEtapeInfo.idMetierEtape ===\n currentEtapeInfo.idMetierPrestation\n )\n );\n\n // const navigationUpdate: Observable<any> = of (true)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const navigationUpdate: Observable<any> = this.router.events.pipe(\n filter(event => event instanceof NavigationEnd)\n );\n\n // Ensures there is at least one value in the observable.\n const navigationAndInit = merge(of(true), navigationUpdate);\n const formTransmitted = merge(\n of(undefined),\n this.gesdemEventService.formTransmittedObservable()\n );\n\n this.displayUserCategory = combineLatest([\n isInitialStep,\n this.foehnNavigationService.hasBeenInitialized(),\n formTransmitted,\n navigationAndInit\n ]).pipe(\n debounceTime(0), // without debounceTime, the outcome is less effective...\n map(([initialStep, navServiceInitialized, backendResponse]) => {\n if (navServiceInitialized) {\n const isFirstPage = this.foehnNavigationService.isFirstFormPage();\n const isLastPage = this.foehnNavigationService.isLastFormPage();\n const isCurrentRouteDefined =\n this.foehnNavigationService.getCurrentRouteIndex() !==\n null;\n return this.foehnPageService.isUserCategoryVisible(\n isFirstPage,\n isLastPage,\n this.userConnectedAsDisplayed,\n initialStep,\n this.neverConnected,\n backendResponse,\n isCurrentRouteDefined\n );\n }\n return false;\n })\n );\n\n const formInitializationObservable = merge(\n of(undefined),\n this.gesdemEventService.formInitializationObservable()\n );\n\n if (this.neverConnected) {\n this.displayLoginMessages = of(\n new DisplayLoginMessagesData(false, false)\n );\n } else {\n this.displayLoginMessages = combineLatest([\n formInitializationObservable,\n this.sessionInfo.data,\n this.applicationInfoService.currentEtapeInfo\n ]).pipe(\n debounceTime(0), // without debounceTime, the outcome is less effective...\n map(\n ([\n formInitialization,\n sessionInfoData,\n currentEtapeInfo\n ]) => {\n const isConnectedCyberOrIam = !!sessionInfoData;\n const isLastPage = this.foehnNavigationService.isLastFormPage();\n if (\n isConnectedCyberOrIam ||\n !currentEtapeInfo.deployeeCyber ||\n !!formInitialization ||\n isLastPage\n ) {\n return new DisplayLoginMessagesData(false, false);\n }\n\n return new DisplayLoginMessagesData(\n currentEtapeInfo?.decisionElectroniqueAvailable,\n true\n );\n }\n )\n );\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const etapeIdChange = changes.etapeId;\n if (etapeIdChange && etapeIdChange.currentValue) {\n this.foehnPageService.setCurrentEtapeId(etapeIdChange.currentValue);\n }\n\n const appTitleChange = changes.appTitle;\n if (appTitleChange) {\n this._titleService.setTitle(appTitleChange.currentValue);\n }\n }\n\n ngOnDestroy(): void {\n if (this.blockedSubscription) {\n this.blockedSubscription.unsubscribe();\n }\n }\n\n getFullLoginUrl(): Observable<string> {\n return this.foehnPageModalService.buildSelfRedirectionThroughCyberLogin();\n }\n\n getFullLoginMessage(\n decisionElectroniqueAvailable: boolean\n ): Observable<string> {\n if (decisionElectroniqueAvailable) {\n return combineLatest([\n this.sdkDictionaryService.getKey('use-login.text'),\n this.sdkDictionaryService.getKey(\n 'use-login.text.decision-electronique-available'\n )\n ]).pipe(\n map(\n ([loginMsg, decisionElectroniqueAvailableMsg]) =>\n `${loginMsg}<br/><br/>${decisionElectroniqueAvailableMsg}`\n )\n );\n }\n return this.sdkDictionaryService.getKey('use-login.text');\n }\n\n private setPageTitle(title: string): void {\n this.pageTitle = title;\n }\n}\n\nexport class DisplayLoginMessagesData {\n decisionElectroniqueAvailable: boolean;\n displayShouldLoginMessage: boolean;\n\n constructor(\n decisionElectroniqueAvailable: boolean,\n displayShouldLoginMessage: boolean\n ) {\n this.decisionElectroniqueAvailable = decisionElectroniqueAvailable;\n this.displayShouldLoginMessage = displayShouldLoginMessage;\n }\n}\n","<foehn-header\n id=\"foehn_header\"\n [title]=\"appTitle\"\n [neverConnected]=\"neverConnected\"\n></foehn-header>\n<foehn-growl id=\"foehn_growl\"></foehn-growl>\n<div class=\"vd-bg-pattern-gray\">\n <div class=\"container\">\n <foehn-breadcrumb\n [neverConnected]=\"neverConnected\"\n [confirmLeavingAlert]=\"confirmLeavingAlert\"\n ></foehn-breadcrumb>\n </div>\n</div>\n<main id=\"main\">\n <div class=\"vd-bg-pattern-gray\">\n <div class=\"container\">\n <!-- Fix annoying flickering when the page loads -->\n <div class=\"h1 mt-0\" *ngIf=\"!pageTitle\"> </div>\n <h1\n [tabIndex]=\"-1\"\n class=\"mt-0\"\n id=\"page-title\"\n *ngIf=\"!!pageTitle\"\n [innerHTML]=\"pageTitle\"\n ></h1>\n </div>\n </div>\n\n <section\n *ngIf=\"!isBrowserSupported\"\n class=\"container alert alert-danger\"\n id=\"browser_not_supported_block\"\n role=\"alert\"\n >\n <p class=\"alert-heading\">\n <strong>\n Cette prestation n’est pas compatible avec votre navigateur.\n </strong>\n </p>\n <p class=\"mb-0\">\n Nous vous invitons à utiliser une version récente de\n <ng-container *ngIf=\"!isApplePlatform\">\n <a\n [title]=\"browserLinkTitlePrefix + ' Edge'\"\n href=\"https://www.microsoft.com/fr-ch/windows/microsoft-edge\"\n target=\"_blank\"\n >\n Edge\n <span class=\"sr-only\">(lien externe)</span>\n <span aria-hidden=\"true\">\n <foehn-icon-external-link-alt></foehn-icon-external-link-alt>\n </span>\n </a>\n ,\n </ng-container>\n <ng-container *ngIf=\"isApplePlatform\">\n <a\n [title]=\"browserLinkTitlePrefix + ' Safari'\"\n href=\"https://support.apple.com/downloads/safari\"\n target=\"_blank\"\n >\n Safari\n <span class=\"sr-only\">(lien externe)</span>\n <span aria-hidden=\"true\">\n <foehn-icon-external-link-alt></foehn-icon-external-link-alt>\n </span>\n </a>\n ,\n </ng-container>\n <a\n [title]=\"browserLinkTitlePrefix + ' Firefox'\"\n href=\"https://www.mozilla.org/fr/firefox/\"\n target=\"_blank\"\n >\n Firefox\n <span class=\"sr-only\">(lien externe)</span>\n <span aria-hidden=\"true\">\n <foehn-icon-external-link-alt></foehn-icon-external-link-alt>\n </span>\n </a>\n ou\n <a\n [title]=\"browserLinkTitlePrefix + ' Chrome'\"\n href=\"https://www.google.com/intl/fr/chrome/\"\n target=\"_blank\"\n >\n Chrome\n <span class=\"sr-only\">(lien externe)</span>\n <span aria-hidden=\"true\">\n <foehn-icon-external-link-alt></foehn-icon-external-link-alt>\n </span>\n </a>\n .\n </p>\n <div class=\"row mt-3\">\n <div class=\"col-md-12\">\n <button\n id=\"browser_not_supported_bypass\"\n class=\"float-right btn btn-danger\"\n *ngIf=\"!browserNotSupportedBypass\"\n (click)=\"browserNotSupportedBypass = true\"\n >\n Continuer avec ce navigateur\n </button>\n </div>\n </div>\n </section>\n\n <sdk-support-alert-container\n *ngIf=\"supportAlertEnabled\"\n [etapeId]=\"etapeId\"\n [supportAlertUrl]=\"supportAlertUrl\"\n ></sdk-support-alert-container>\n <ng-container\n *ngIf=\"\n !(hasBlockingSupportAlert | async) &&\n (isBrowserSupported || browserNotSupportedBypass)\n \"\n >\n <div class=\"container mt-5\" id=\"page_content\">\n <foehn-user-connected-as\n *ngIf=\"displayUserCategory | async\"\n ></foehn-user-connected-as>\n <ng-container\n *ngIf=\"displayLoginMessages | async as displayLoginMessagesData\"\n >\n <div\n *ngIf=\"displayLoginMessagesData.displayShouldLoginMessage\"\n class=\"alert alert-info\"\n id=\"displayLoginMessage\"\n >\n <p\n [innerHTML]=\"\n getFullLoginMessage(\n displayLoginMessagesData.decisionElectroniqueAvailable\n ) | async\n \"\n ></p>\n <div class=\"d-flex justify-content-start mr-2 mb-2 mt-2\">\n <a\n class=\"btn btn-primary\"\n [href]=\"getFullLoginUrl() | async\"\n >\n {{ 'use-login.button.text' | fromDictionary }}\n </a>\n </div>\n </div>\n </ng-container>\n </div>\n <ng-content></ng-content>\n </ng-container>\n</main>\n<foehn-footer\n id=\"foehn_footer\"\n [links]=\"footerLinks\"\n [showDefaultContactLink]=\"showDefaultContactFooterLink\"\n [showDefaultGuideLink]=\"showDefaultGuideFooterLink\"\n [showDefaultTermOfUseLink]=\"showDefaultTermOfUseLink\"\n [showDefaultSecurityBestPracticeLink]=\"showDefaultSecurityBestPracticeLink\"\n></foehn-footer>\n<foehn-page-modal></foehn-page-modal>\n<foehn-confirm-modal></foehn-confirm-modal>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FoehnBreadcrumbComponent } from './foehn-breadcrumb.component';\nimport { RouterModule } from '@angular/router';\n\n@NgModule({\n imports: [CommonModule, RouterModule],\n declarations: [FoehnBreadcrumbComponent],\n exports: [FoehnBreadcrumbComponent]\n})\nexport class FoehnBreadcrumbModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FoehnGrowlComponent } from './foehn-growl.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [FoehnGrowlComponent],\n exports: [FoehnGrowlComponent]\n})\nexport class FoehnGrowlModule {}\n","import { Component } from '@angular/core';\nimport { AbstractIconComponent } from './abstract-icon-component';\nimport { faCheckSquare } from '@fortawesome/free-solid-svg-icons';\n\n@Component({\n selector: 'foehn-icon-check-square-o',\n templateUrl: './foehn-icon.component.html'\n})\nexport class FoehnIconCheckSquareOComponent extends AbstractIconComponent {\n iconName = faCheckSquare;\n defaultTitle = 'Carré coché';\n}\n","import { Component } from '@angular/core';\nimport { AbstractIconComponent } from './abstract-icon-component';\nimport { faCheck } from '@fortawesome/free-solid-svg-icons';\n\n@Component({\n selector: 'foehn-icon-check',\n templateUrl: './foehn-icon.component.html'\n})\nexport class FoehnIconCheckComponent extends AbstractIconComponent {\n iconName = faCheck;\n defaultTitle = 'Check ok';\n}\n","import { Component } from '@angular/core';\nimport { AbstractIconComponent } from './abstract-icon-component';\nimport { faChevronDown } from '@fortawesome/free-solid-svg-icons';\n\n@Component({\n selector: 'foehn-icon-chevron-down',\n templateUrl: './foehn-icon.component.html'\n})\nexport class FoehnIconChevronDownComponent extends AbstractIconComponent {\n iconName = faChevronDown;\n defaultTitle = 'Flèche vers le bas';\n}\n","import { Component } from '@angular/core';\nimport { AbstractIconComponent } from './abstract-icon-component';\nimport { faLock } from '@fortawesome/free-solid-svg-icons';\n\n@Component({\n selector: 'foehn-icon-lock',\n templateUrl: './foehn-icon.component.html'\n})\nexport class FoehnIconLockComponent extends AbstractIconComponent {\n iconName = faLock;\n defaultTitle = 'Cadenas fermé';\n}\n","import { Component } from '@angular/core';\nimport { AbstractIconComponent } from './abstract-icon-component';\nimport { faMapMarkerAlt } from '@fortawesome/free-solid-svg-icons';\n\n@Component({\n selector: 'foehn-icon-map-marker',\n templateUrl: './foehn-icon.component.html'\n})\nexport class FoehnIconMapMarkerComponent extends AbstractIconComponent {\n iconName = faMapMarkerAlt;\n defaultTitle = 'Marqueur de carte';\n}\n","import { Component } from '@angular/core';\nimport { AbstractIconComponent } from './abstract-icon-component';\nimport { faSearch } from '@fortawesome/free-solid-svg-icons';\n\n@Component({\n selector: 'foehn-icon-search',\n templateUrl: './foehn-icon.component.html'\n})\nexport class FoehnIconSearchComponent extends AbstractIconComponent {\n iconName = faSearch;\n defaultTitle = 'Loupe';\n}\n","import { Component } from '@angular/core';\nimport { AbstractIconComponent } from './abstract-icon-component';\nimport { faUnlockAlt } from '@fortawesome/free-solid-svg-icons';\n\n@Component({\n selector: 'foehn-icon-unlock-alt',\n templateUrl: './foehn-icon.component.html'\n})\nexport class FoehnIconUnlockAltComponent extends AbstractIconComponent {\n iconName = faUnlockAlt;\n defaultTitle = 'Cadenas ouvert';\n}\n","import { Component } from '@angular/core';\nimport { AbstractIconComponent } from './abstract-icon-component';\nimport { faMinusCircle } from '@fortawesome/free-solid-svg-icons';\n\n@Component({\n selector: 'foehn-icon-minus-circle',\n templateUrl: './foehn-icon.component.html'\n})\nexport class FoehnIconMinusCircleComponent extends AbstractIconComponent {\n iconName = faMinusCircle;\n defaultTitle = 'Icône supprimer';\n}\n","import { Component } from '@angular/core';\nimport { AbstractIconComponent } from './abstract-icon-component';\nimport { faPlusCircle } from '@fortawesome/free-solid-svg-icons';\n\n@Component({\n selector: 'foehn-icon-plus-circle',\n templateUrl: './foehn-icon.component.html'\n})\nexport class FoehnIconPlusCircleComponent extends AbstractIconComponent {\n iconName = faPlusCircle;\n defaultTitle = 'Icône ajouter';\n}\n","import { Component } from '@angular/core';\nimport { AbstractIconComponent } from './abstract-icon-component';\nimport { faTrashAlt } from '@fortawesome/free-solid-svg-icons';\n\n@Component({\n selector: 'foehn-icon-trash-alt',\n templateUrl: './foehn-icon.component.html'\n})\nexport class FoehnIconTrashAltComponent extends AbstractIconComponent {\n iconName = faTrashAlt;\n defaultTitle = 'Supprimer';\n}\n","import { Component } from '@angular/core';\nimport { AbstractIconComponent } from './abstract-icon-component';\nimport { faPlusSquare } from '@fortawesome/free-solid-svg-icons';\n\n@Component({\n selector: 'foehn-icon-plus-square',\n templateUrl: './foehn-icon.component.html'\n})\nexport class FoehnIconPlusSquareComponent extends AbstractIconComponent {\n iconName = faPlusSquare;\n defaultTitle = 'Icône ajouter';\n}\n","import { Component } from '@angular/core';\nimport { AbstractIconComponent } from './abstract-icon-component';\nimport { faChevronLeft } from '@fortawesome/free-solid-svg-icons';\n\n@Component({\n selector: 'foehn-icon-chevron-left',\n templateUrl: './foehn-icon.component.html'\n})\nexport class FoehnIconChevronLeftComponent extends AbstractIconComponent {\n iconName = faChevronLeft;\n defaultTitle = 'Flèche vers la gauche';\n}\n","import { Component } from '@angular/core';\nimport { AbstractIconComponent } from './abstract-icon-component';\nimport { faChevronRight } from '@fortawesome/free-solid-svg-icons';\n\n@Component({\n selector: 'foehn-icon-chevron-right',\n templateUrl: './foehn-icon.component.html'\n})\nexport class FoehnIconChevronRightComponent extends AbstractIconComponent {\n iconName = faChevronRight;\n defaultTitle = 'Flèche vers la droite';\n}\n","import { Component } from '@angular/core';\nimport { AbstractIconComponent } from './abstract-icon-component';\nimport { faEdit } from '@fortawesome/free-solid-svg-icons';\n\n@Component({\n selector: 'foehn-icon-edit',\n templateUrl: './foehn-icon.component.html'\n})\nexport class FoehnIconEditComponent extends AbstractIconComponent {\n iconName = faEdit;\n defaultTitle = 'Edition';\n}\n","import { Component } from '@angular/core';\nimport { AbstractIconComponent } from './abstract-icon-component';\nimport { faCommentDots } from '@fortawesome/free-solid-svg-icons';\n\n@Component({\n selector: 'foehn-icon-comment-dots',\n templateUrl: './foehn-icon.component.html'\n})\nexport class FoehnIconCommentDotsComponent extends AbstractIconComponent {\n iconName = faCommentDots;\n defaultTitle = 'Commentaire';\n}\n","import { Component } from '@angular/core';\nimport { AbstractIconComponent } from './abstract-icon-component';\nimport { faFilePdf } from '@fortawesome/free-regular-svg-icons';\n\n@Component({\n selector: 'foehn-icon-file-pdf',\n templateUrl: './foehn-icon.component.html'\n})\nexport class FoehnIconFilePdfComponent extends AbstractIconComponent {\n iconName = faFilePdf;\n defaultTitle = 'PDF (nouvel onglet)';\n}\n","import { Component } from '@angular/core';\nimport { AbstractIconComponent } from './abstract-icon-component';\nimport { faClock } from '@fortawesome/free-regular-svg-icons';\n\n@Component({\n selector: 'foehn-icon-clock',\n templateUrl: './foehn-icon.component.html'\n})\nexport class FoehnIconClockComponent extends AbstractIconComponent {\n iconName = faClock;\n defaultTitle = 'Historique';\n}\n","import { Component } from '@angular/core';\nimport { AbstractIconComponent } from './abstract-icon-component';\nimport { faCalendarAlt } from '@fortawesome/free-regular-svg-icons';\n\n@Component({\n selector: 'foehn-icon-calendar',\n templateUrl: './foehn-icon.component.html'\n})\nexport class FoehnIconCalendarComponent extends AbstractIconComponent {\n iconName = faCalendarAlt;\n defaultTitle = 'Calendrier';\n}\n","import { NgModule } from '@angular/core';\nimport { FoehnIconCheckSquareOComponent } from './foehn-icon-check-square-o.component';\nimport { FoehnIconCheckComponent } from './foehn-icon-check.component';\nimport { FoehnIconChevronDownComponent } from './foehn-icon-chevron-down.component';\nimport { FoehnIconInfoCircleComponent } from './foehn-icon-info-circle.component';\nimport { FoehnIconLockComponent } from './foehn-icon-lock.component';\nimport { FoehnIconMapMarkerComponent } from './foehn-icon-map-marker.component';\nimport { FoehnIconSearchComponent } from './foehn-icon-search.component';\nimport { FoehnIconTimesComponent } from './foehn-icon-times.component';\nimport { FoehnIconUnlockAltComponent } from './foehn-icon-unlock-alt.component';\nimport { FoehnIconMinusCircleComponent } from './foehn-icon-minus-circle.component';\nimport { FoehnIconPlusCircleComponent } from './foehn-icon-plus-circle.component';\nimport { FoehnIconChevronUpComponent } from './foehn-icon-chevron-up.component';\nimport { FoehnIconTrashAltComponent } from './foehn-icon-trash-alt.component';\nimport { FoehnIconPlusSquareComponent } from './foehn-icon-plus-square.component';\nimport { FoehnIconChevronLeftComponent } from './foehn-icon-chevron-left.component';\nimport { FoehnIconChevronRightComponent } from './foehn-icon-chevron-right.component';\nimport { FoehnIconEditComponent } from './foehn-icon-edit.component';\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\nimport { FoehnIconCommentDotsComponent } from './foehn-icon-comment-dots.component';\nimport { FoehnIconFilePdfComponent } from './foehn-icon-file-pdf.component';\nimport { FoehnIconExternalLinkAltComponent } from './foehn-icon-external-link-alt.component';\nimport { FoehnIconClockComponent } from './foehn-icon-clock.component';\nimport { FoehnIconCalendarComponent } from './foehn-icon-calendar.component';\n\n@NgModule({\n imports: [FontAwesomeModule],\n declarations: [\n FoehnIconCheckSquareOComponent,\n FoehnIconCheckComponent,\n FoehnIconChevronDownComponent,\n FoehnIconInfoCircleComponent,\n FoehnIconLockComponent,\n FoehnIconEditComponent,\n FoehnIconMapMarkerComponent,\n FoehnIconSearchComponent,\n FoehnIconTimesComponent,\n FoehnIconUnlockAltComponent,\n FoehnIconMinusCircleComponent,\n FoehnIconPlusCircleComponent,\n FoehnIconChevronUpComponent,\n FoehnIconTrashAltComponent,\n FoehnIconPlusSquareComponent,\n FoehnIconChevronLeftComponent,\n FoehnIconChevronRightComponent,\n FoehnIconCommentDotsComponent,\n FoehnIconFilePdfComponent,\n FoehnIconExternalLinkAltComponent,\n FoehnIconClockComponent,\n FoehnIconCalendarComponent\n ],\n exports: [\n FoehnIconCheckSquareOComponent,\n FoehnIconCheckComponent,\n FoehnIconChevronDownComponent,\n FoehnIconInfoCircleComponent,\n FoehnIconLockComponent,\n FoehnIconEditComponent,\n FoehnIconMapMarkerComponent,\n FoehnIconSearchComponent,\n FoehnIconTimesComponent,\n FoehnIconUnlockAltComponent,\n FoehnIconMinusCircleComponent,\n FoehnIconPlusCircleComponent,\n FoehnIconChevronUpComponent,\n FoehnIconTrashAltComponent,\n FoehnIconPlusSquareComponent,\n FontAwesomeModule,\n FoehnIconChevronLeftComponent,\n FoehnIconChevronRightComponent,\n FoehnIconCommentDotsComponent,\n FoehnIconFilePdfComponent,\n FoehnIconExternalLinkAltComponent,\n FoehnIconClockComponent,\n FoehnIconCalendarComponent\n ]\n})\nexport class FoehnIconsModule {}\n","import { Component, forwardRef, NgZone, OnInit } from '@angular/core';\nimport { FoehnCheckableGroupComponent } from './foehn-checkable-group.component';\nimport { FoehnInputComponent } from '../foehn-input/foehn-input.component';\n\n@Component({\n selector: 'foehn-checkbox',\n templateUrl: './foehn-checkbox.component.html',\n providers: [\n {\n provide: FoehnInputComponent,\n useExisting: forwardRef(() => FoehnCheckboxComponent),\n multi: true\n }\n ]\n})\nexport class FoehnCheckboxComponent\n extends FoehnCheckableGroupComponent\n implements OnInit {\n constructor(zone: NgZone) {\n super(zone);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.multiple = true;\n }\n}\n","<div\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <fieldset class=\"form-group\" [attr.aria-describedby]=\"getDescribedBy()\">\n <legend *ngIf=\"!!label\" [ngClass]=\"isLabelSrOnly ? 'sr-only' : 'vd-p'\">\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </legend>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <div *ngIf=\"!elements\">Chargement...</div>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <div\n *ngFor=\"\n let elementsGroup of groupedElements;\n let groupIndex = index\n \"\n >\n <!-- TODO remove aria-hidden and make this accessible -->\n <div\n *ngIf=\"!!elementsGroup.groupTitle\"\n class=\"pt-2 font-weight-bold\"\n [attr.id]=\"'checkGroup_' + groupIndex\"\n aria-hidden=\"true\"\n >\n {{ elementsGroup.groupTitle | fromDictionary }}\n </div>\n\n <div\n *ngFor=\"let element of elementsGroup.elements; let i = index\"\n [class.disabled]=\"getDisabled(element)\"\n class=\"form-check\"\n >\n <input\n class=\"form-check-input\"\n type=\"checkbox\"\n [value]=\"getValue(element)\"\n [ngModel]=\"isElementSelected(element)\"\n (ngModelChange)=\"onCheck(element, $event)\"\n [name]=\"buildChildName('' + groupIndex + '_' + i)\"\n [attr.name]=\"buildChildName('' + groupIndex + '_' + i)\"\n [attr.id]=\"buildChildId() + groupIndex + '_' + i\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.disabled]=\"getDisabled(element) ? 'disabled' : null\"\n (change)=\"handleChange(model)\"\n />\n <label\n class=\"form-check-label\"\n [for]=\"buildChildId() + groupIndex + '_' + i\"\n [innerHTML]=\"getLabel(element)\"\n ></label>\n </div>\n </div>\n </fieldset>\n</div>\n","import { Component, forwardRef, NgZone, OnInit } from '@angular/core';\nimport { FoehnCheckableGroupComponent } from './foehn-checkable-group.component';\nimport { FoehnInputComponent } from '../foehn-input/foehn-input.component';\n\n@Component({\n selector: 'foehn-radio',\n templateUrl: './foehn-radio.component.html',\n providers: [\n {\n provide: FoehnInputComponent,\n useExisting: forwardRef(() => FoehnRadioComponent),\n multi: true\n }\n ]\n})\nexport class FoehnRadioComponent\n extends FoehnCheckableGroupComponent\n implements OnInit {\n inputValue: string;\n\n constructor(zone: NgZone) {\n super(zone);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n\n // Re-assign the model once the @Input have been set. This is mandatory\n // otherwise the component doesn't display the initial value when\n // used with an object as the value.\n this.onModelChange(this.model);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types\n onModelChange(value: any): void {\n this.inputValue = this.getValueOrObject(value);\n super.onModelChange(value);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types\n getValueOrObject(element: any): string {\n if (typeof element === 'undefined') {\n return element;\n }\n\n // If the element is already a string or a number, it's probably the one we want.\n if (typeof element === 'string' || typeof element === 'number') {\n return element.toString();\n }\n\n // Nested object support.\n if (\n typeof this.elementValue === 'function' &&\n typeof this.elementValueIdentity === 'function'\n ) {\n // In this case, we need to use the identify function\n // as we can't store the actual object in the \"value\" HTML attribute\n // on the \"option\" element.\n return this.elementValueIdentity(this.elementValue(element));\n }\n\n return this.getValue(element);\n }\n}\n","<div\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <fieldset class=\"form-group\" [attr.aria-describedby]=\"getDescribedBy()\">\n <legend *ngIf=\"!!label\" [ngClass]=\"isLabelSrOnly ? 'sr-only' : 'vd-p'\">\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </legend>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <div *ngIf=\"!elements\">Chargement...</div>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n <div\n *ngFor=\"\n let elementsGroup of groupedElements;\n let groupIndex = index\n \"\n >\n <!-- TODO remove aria-hidden and make this accessible -->\n <div\n *ngIf=\"!!elementsGroup.groupTitle\"\n class=\"pt-2 font-weight-bold\"\n [attr.id]=\"'checkGroup_' + groupIndex\"\n aria-hidden=\"true\"\n >\n {{ elementsGroup.groupTitle | fromDictionary }}\n </div>\n <div\n *ngFor=\"let element of elementsGroup.elements; let i = index\"\n [class.disabled]=\"getDisabled(element)\"\n class=\"form-check\"\n >\n <input\n class=\"form-check-input\"\n type=\"radio\"\n [value]=\"getValueOrObject(element)\"\n [ngModel]=\"inputValue\"\n (ngModelChange)=\"onCheck(element, $event)\"\n [name]=\"buildChildName('' + groupIndex + '_' + i)\"\n [attr.name]=\"buildChildName('' + groupIndex + '_' + i)\"\n [attr.id]=\"buildChildId() + groupIndex + '_' + i\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.disabled]=\"getDisabled(element) ? 'disabled' : null\"\n (change)=\"handleChange(getValue(element))\"\n />\n <label\n class=\"form-check-label\"\n [for]=\"buildChildId() + groupIndex + '_' + i\"\n [innerHTML]=\"getLabel(element)\"\n ></label>\n </div>\n </div>\n </fieldset>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FoehnValidationAlertsComponent } from './foehn-validation-alerts.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [FoehnValidationAlertsComponent],\n exports: [FoehnValidationAlertsComponent]\n})\nexport class FoehnValidationAlertsModule {}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n Component,\n forwardRef,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n ViewChild\n} from '@angular/core';\nimport { FoehnCheckableGroupComponent } from '../foehn-checkables/foehn-checkable-group.component';\nimport { FoehnInputComponent } from '../foehn-input/foehn-input.component';\nimport { Observable, of, Subject, Subscription } from 'rxjs';\nimport { debounceTime, filter } from 'rxjs/operators';\n// This component uses some ES7 features that are not polyfilled by Angular.\nimport 'core-js/modules/es.array.includes';\nimport { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\n\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions,jsdoc/require-jsdoc\nfunction normalizeUtf8(value: string): string {\n // Some browsers such as IE11 don't support the feature. Add the polyfill if you want it.\n if (typeof value.normalize !== 'function') {\n return value;\n }\n\n // Remove accents\n return value.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n}\n\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions,jsdoc/require-jsdoc\nfunction normalizeSearch(value: string): string {\n if (!value) {\n return value;\n }\n\n return normalizeUtf8(value.toLocaleLowerCase());\n}\n\n@Component({\n selector: 'foehn-autocomplete',\n templateUrl: './foehn-autocomplete.component.html',\n styleUrls: ['./foehn-autocomplete.component.css'],\n providers: [\n {\n provide: FoehnInputComponent,\n useExisting: forwardRef(() => FoehnAutocompleteComponent),\n multi: true\n }\n ]\n})\nexport class FoehnAutocompleteComponent\n extends FoehnCheckableGroupComponent\n implements OnInit, OnDestroy {\n @ViewChild(CdkVirtualScrollViewport)\n virtualScrollViewport: CdkVirtualScrollViewport;\n\n @ViewChild('suggestionsList')\n suggestionsList: any;\n\n @ViewChild('entryComponent', { static: true })\n inputElement: any;\n\n @Input()\n searchValueMinCharsCount = 0;\n\n /**\n * Allow to provide custom values to the autocomplete.\n *\n * A custom value is a value that is not in the `elements` set.\n */\n @Input()\n allowCustomValue = false;\n\n /**\n * Allow to provide a generator to create the model with custom values.\n *\n * This is useful when the type of the model is an object and not just\n * a string. Use this is `allowCustomValue` is true and `elementValue`\n * is a function.\n */\n @Input()\n customValueModelGenerator: (input: string) => any;\n\n inputValue: string;\n searchValue: string;\n inputHasFocus: boolean;\n hideSuggestions = true;\n currentBlurTimer: any;\n placeholder: string;\n\n VIEW_PORT_HEIGHT: number;\n readonly ITEM_CALCULATED_HEIGHT = 40;\n\n displayedElements: any[];\n notificationMessageUpdated: boolean;\n\n private currentItemGlobalIndex = -1;\n private readonly NB_ITEMS_VISIBLE = 5;\n\n private filterSubject = new Subject<any>();\n private filterSubcription: Subscription;\n private listHasFocus: boolean;\n private activeDescendantId: string;\n\n private onInitSubscription: Subscription;\n private modelChangeSubscription: Subscription;\n\n private SUGGESTION_SELECTED_CLASS = 'suggestion-selected';\n\n constructor(zone: NgZone) {\n super(zone);\n this.filterSubcription = this.filterSubject\n .pipe(debounceTime(200))\n .subscribe(this.filterElements.bind(this));\n\n this.VIEW_PORT_HEIGHT =\n this.ITEM_CALCULATED_HEIGHT * this.NB_ITEMS_VISIBLE;\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n\n if (this.searchValueMinCharsCount === 0) {\n this.getElements().subscribe(() => {\n this.setDisplayedElements(this.elements);\n });\n }\n\n if (this.searchValueMinCharsCount > 0) {\n this.placeholder = `Saisissez au moins ${\n this.searchValueMinCharsCount\n } caractère${this.searchValueMinCharsCount > 1 ? 's' : ''}`;\n }\n\n this.onInitSubscription = this.onInitSubject\n .asObservable()\n .subscribe(() => {\n // Hack to refresh the data once the list is downloaded.\n this.updateNgModel(this.model_);\n });\n\n // When the model changes, select the right value to display.\n this.modelChangeSubscription = this.modelChange.subscribe(\n (value: any) => {\n this.getElements()\n .pipe(filter((elements: any) => !!elements))\n // eslint-disable-next-line rxjs/no-nested-subscribe\n .subscribe((elements: any) => {\n if (value === null) {\n // Clear the value.\n this.inputValue = null;\n this.filterElements(true);\n return;\n }\n\n const elemToCompare = value\n ? value\n : this.defaultElementValue;\n\n if (elemToCompare) {\n this.inputValue = this.getMatchingValue(\n elements,\n elemToCompare\n );\n this.filterElements(true);\n }\n });\n }\n );\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this.filterSubcription.unsubscribe();\n\n if (this.onInitSubscription) {\n this.onInitSubscription.unsubscribe();\n }\n\n if (this.modelChangeSubscription) {\n this.modelChangeSubscription.unsubscribe();\n }\n }\n\n onInputFocus(): void {\n this.filterSubject.next();\n this.inputHasFocus = true;\n if (\n (this.isEmpty(this.searchValue) &&\n this.searchValueMinCharsCount === 0) ||\n (!this.isEmpty(this.searchValue) &&\n this.searchValueMinCharsCount <= this.searchValue.length)\n ) {\n this.hideSuggestions = false;\n this.clearOnBlurTimeout();\n }\n }\n\n // Workaround for IE11 that loses focus on input when scrollbar is clicked\n // --> put back focus on input and cancel suggestions hiding timer\n setFocusOnInput(): void {\n this.inputElement.nativeElement.focus();\n this.clearOnBlurTimeout();\n }\n\n onInputBlur(): void {\n // This method is called before onClickSuggestion. Setting inputHasFocus to false makes suggestions disappeared\n // and onClickSuggestion is never called. Setting a timeout here avoid this problem.\n this.currentBlurTimer = setTimeout(() => {\n // Don't close the list if the list has the focus. This is done to allow VoiceOver users on iOS to\n // select an option with their finger. Same if focus is set on list scroll bar\n if (\n !this.listHasFocus &&\n document.activeElement.className !==\n 'form-group autocomplete-form-group'\n ) {\n this.inputHasFocus = false;\n this.hideSuggestions = true;\n this.checkAndSetInputValue();\n }\n });\n }\n\n onKeyDown(keyEvent: KeyboardEvent): boolean {\n // The input might not be marked as focused in case the user selects a value from the list.\n this.inputHasFocus = true;\n const propagate = this.onKeyDownInner(keyEvent);\n if (propagate) {\n this.filterSubject.next();\n }\n return propagate;\n }\n\n onKeyDownInner(keyEvent: KeyboardEvent): boolean {\n // IE doesn't support keyEvent.code, and has different values\n // in keyEvent.key (Down instead of ArrowDown for instance), hence the multi-support.\n const ie11CompatibleCode = keyEvent.code || keyEvent.key;\n switch (ie11CompatibleCode) {\n case 'Down':\n case 'ArrowDown':\n if (!this.suggestionsDisplayed()) {\n this.hideSuggestions = false;\n break;\n }\n this.selectNextElement(true);\n break;\n case 'Up':\n case 'ArrowUp':\n this.selectNextElement(false);\n break;\n case 'Space':\n case 'Spacebar':\n if (this.getSelectedElement()) {\n this.setSelectedElement();\n break;\n }\n return true;\n case 'Enter':\n if (!this.getSelectedElement()) {\n const value = this.getFirstSuggestion();\n if (!value) {\n // Just before form submit, calls checkAndSetInputValue because focusout is called too late\n // (new value is already lost).\n this.checkAndSetInputValue();\n return true;\n }\n // autocomplete without need to select it manually\n this.setInputValue(value);\n this.checkAndSetInputValue();\n return false;\n }\n this.setSelectedElement();\n this.checkAndSetInputValue();\n return false;\n case 'Tab':\n case 'Right':\n case 'ArrowRight':\n if (!this.getSelectedElement()) {\n return true;\n }\n this.setSelectedElement();\n this.checkAndSetInputValue();\n return false;\n\n case 'Escape':\n if (this.suggestionsDisplayed()) {\n this.hideSuggestions = true;\n return false;\n }\n return true;\n default:\n return true;\n }\n\n keyEvent.stopPropagation();\n return false;\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n onListOptionMouseDown(event: any): void {\n // Safari triggers focusOut before click, but if you\n // preventDefault on mouseDown, you can stop that from happening.\n // If this is removed, clicking on an option in Safari will trigger\n // `handleOptionBlur`, which closes the menu, and the click will\n // trigger on the element underneath instead.\n event.preventDefault();\n }\n\n onListOptionFocus(): void {\n this.listHasFocus = true;\n }\n\n onListOptionBlur(): void {\n this.listHasFocus = false;\n }\n\n filterElements(hideSuggestions: boolean = false): void {\n this.searchValue = this.inputValue;\n\n if (!this.elements) {\n return;\n }\n\n if (\n this.isEmpty(this.searchValue) ||\n this.searchValue.length < this.searchValueMinCharsCount\n ) {\n if (this.searchValueMinCharsCount === 0) {\n this.setDisplayedElements(this.elements);\n } else {\n this.setSuggestionsDisplayed(true, []);\n }\n } else {\n this.setSuggestionsDisplayed(\n hideSuggestions,\n this.elements.filter((e: any) => this.matchResult(e))\n );\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n getLabelWithEmphasis(elem: any): string {\n let label = this.getLabel(elem);\n\n if (!this.isEmpty(this.searchValue)) {\n const startIndex = normalizeSearch(label).indexOf(\n normalizeSearch(this.searchValue)\n );\n if (startIndex !== -1) {\n label = `${\n startIndex > 0 ? label.substr(0, startIndex) : ''\n }<b>${label.substr(startIndex, this.searchValue.length)}</b>${\n label.length > startIndex + this.searchValue.length\n ? label.substr(\n startIndex + this.searchValue.length,\n label.length\n )\n : ''\n }`;\n }\n }\n\n return label;\n }\n\n onClear(): void {\n super.onClear();\n this.inputValue = null;\n this.inputElement.nativeElement.focus();\n this.hideSuggestions = false;\n this.filterElements();\n }\n\n displayClearButton(): Observable<boolean> {\n return of(!!this.inputValue && !this.disabled);\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n onClickSuggestion(element: any): void {\n this.setInputValue(this.getLabel(element));\n this.checkAndSetInputValue();\n\n // Force the focus on the input to ensure that VoiceOver doesn't set the focus on another field on the page.\n setTimeout(() => {\n this.setFocusOnInput();\n // The input shouldn't be marked as focused as we don't want to display the list.\n this.inputHasFocus = false;\n }, 0);\n }\n\n reset(): void {\n this.setInputValue(null);\n this.checkAndSetInputValue();\n }\n\n shouldDisplayListbox(): boolean {\n const isVisible =\n this.inputHasFocus &&\n !this.hideSuggestions &&\n this.displayedElements &&\n this.displayedElements.length > 0;\n if (!isVisible) {\n this.currentItemGlobalIndex = -1;\n }\n return isVisible;\n }\n\n getActiveDescendantId(): string {\n return this.shouldDisplayListbox() && this.activeDescendantId\n ? this.activeDescendantId\n : null;\n }\n\n showSuggestionsWhenInputHasFocusAndIsEmpty(val: string): void {\n if (!val && this.inputHasFocus) {\n this.hideSuggestions = false;\n this.filterElements();\n }\n }\n\n private clearOnBlurTimeout(): void {\n if (this.currentBlurTimer) {\n clearTimeout(this.currentBlurTimer);\n this.currentBlurTimer = null;\n }\n }\n\n private setSelectedElement(): void {\n this.setInputValue(this.getSelectedElement());\n }\n\n private setInputValue(\n value: string,\n hideSuggestions: boolean = true\n ): void {\n if (hideSuggestions) {\n const event = document.createEvent('Event');\n event.initEvent('input', true, true);\n this.inputElement.nativeElement.dispatchEvent(event);\n }\n this.inputValue = value;\n this.searchValue = value;\n this.hideSuggestions = hideSuggestions;\n }\n\n /**\n * Verifies if value in input matches a value from suggestions. If not, empty the input if the custom value\n * option is not set.\n */\n private checkAndSetInputValue(): void {\n if (!!this.inputValue) {\n const matchingElement = this.elements.filter(\n (a: any) => this.getLabel(a) === this.inputValue\n );\n\n if (matchingElement.length) {\n const newValue = this.getValue(matchingElement[0]);\n this.manuallyUpdateValue(newValue);\n return;\n }\n\n if (this.allowCustomValue) {\n const newModel = this.getCustomValue(this.inputValue);\n this.manuallyUpdateValue(newModel);\n return;\n }\n }\n\n this.manuallyUpdateValue(null);\n this.inputValue = null;\n this.searchValue = null;\n }\n\n private setSuggestionsDisplayed(\n hideSuggestions: boolean,\n displayedElements: any[]\n ): void {\n this.setDisplayedElements(displayedElements);\n this.hideSuggestions = hideSuggestions;\n this.notifyScreenReaderUsers();\n }\n\n private setDisplayedElements(filteredElements: any): void {\n this.activeDescendantId = null;\n this.displayedElements = filteredElements;\n\n this.resizeDisplayViewPort(filteredElements);\n }\n\n private resizeDisplayViewPort(filteredElements: any): void {\n if (!!filteredElements) {\n if (filteredElements.length < this.NB_ITEMS_VISIBLE) {\n this.VIEW_PORT_HEIGHT =\n this.ITEM_CALCULATED_HEIGHT * filteredElements.length;\n if (!!this.virtualScrollViewport) {\n this.virtualScrollViewport.checkViewportSize();\n }\n } else {\n const MAX_HEIGHT =\n this.NB_ITEMS_VISIBLE * this.ITEM_CALCULATED_HEIGHT;\n if (this.VIEW_PORT_HEIGHT < MAX_HEIGHT) {\n this.VIEW_PORT_HEIGHT = MAX_HEIGHT;\n if (!!this.virtualScrollViewport) {\n this.virtualScrollViewport.checkViewportSize();\n }\n }\n }\n }\n }\n\n private getSelectedElement(): string {\n if (this.suggestionsList) {\n const suggestions = this.getSuggestionList();\n for (const indexStr in suggestions) {\n if (suggestions.hasOwnProperty(indexStr)) {\n const index = parseInt(indexStr, 10);\n if (!isNaN(index)) {\n const item = suggestions[index];\n if (\n item.className.includes(\n this.SUGGESTION_SELECTED_CLASS\n )\n ) {\n return item.innerText;\n }\n }\n }\n }\n }\n return null;\n }\n\n private selectNextElement(down: boolean): void {\n if (this.suggestionsDisplayed()) {\n const suggestions = this.getSuggestionList();\n let newItemSelected = null;\n const step = down ? 1 : -1;\n\n for (const indexStr in suggestions) {\n if (suggestions.hasOwnProperty(indexStr)) {\n const index = parseInt(indexStr, 10);\n if (!isNaN(index)) {\n const item = suggestions[index];\n const nextIndex: number = index + step;\n const isCurrentItemSelected = item.className.includes(\n this.SUGGESTION_SELECTED_CLASS\n );\n this.unselectItem(item);\n if (isCurrentItemSelected && nextIndex >= 0) {\n this.selectItem(\n (newItemSelected =\n nextIndex < suggestions.length\n ? suggestions[nextIndex]\n : suggestions[suggestions.length - 1])\n );\n break;\n }\n }\n }\n }\n\n // If no item was selected before, select first one\n if (!newItemSelected && suggestions.length > 0) {\n this.currentItemGlobalIndex = 0;\n this.selectItem((newItemSelected = suggestions[0]));\n } else {\n // Manage global item selected index\n const MAX_INDEX = this.displayedElements.length - 1;\n this.currentItemGlobalIndex += step;\n if (this.currentItemGlobalIndex > MAX_INDEX) {\n this.currentItemGlobalIndex = MAX_INDEX;\n }\n if (this.currentItemGlobalIndex < 0) {\n this.currentItemGlobalIndex = 0;\n }\n }\n\n // Scrolls down or up if newItemSelected is not visible\n const suggestionsNativeElement = this.virtualScrollViewport\n .elementRef.nativeElement;\n if (!this.isVisible(suggestionsNativeElement, newItemSelected)) {\n this.virtualScrollViewport.scrollToIndex(\n this.currentItemGlobalIndex\n );\n }\n }\n }\n\n private getSuggestionList(): HTMLElement[] {\n const suggestionsNativeElement = this.suggestionsList.nativeElement;\n // Converts the suggestions to an array to work consistently across browsers.\n return Array.prototype.slice.call(suggestionsNativeElement.children);\n }\n\n private unselectItem(item: any): void {\n item.className = item.className.replace(\n ` ${this.SUGGESTION_SELECTED_CLASS}`,\n ''\n );\n item.attributes['aria-selected'] = false;\n }\n\n private selectItem(item: any): void {\n if (!item.className.includes(this.SUGGESTION_SELECTED_CLASS)) {\n item.className += ` ${this.SUGGESTION_SELECTED_CLASS}`;\n }\n\n item.attributes['aria-selected'] = true;\n\n this.activeDescendantId = item.id;\n }\n\n private isVisible(parent: any, element: any): boolean {\n const elementOffsetTop =\n element.offsetTop +\n this.virtualScrollViewport.getOffsetToRenderedContentStart();\n // element is below visible area\n const isBelow =\n elementOffsetTop < parent.offsetHeight + parent.scrollTop;\n // element is above visible area\n const isAbove = elementOffsetTop > parent.scrollTop;\n return isBelow && isAbove;\n }\n\n private suggestionsDisplayed(): boolean {\n return (\n this.suggestionsList &&\n this.suggestionsList.nativeElement.children.length > 0\n );\n }\n\n private getFirstSuggestion(): string {\n if (\n this.suggestionsList &&\n this.suggestionsList.nativeElement.children.length === 1\n ) {\n return this.suggestionsList.nativeElement.children[0].innerText;\n }\n return null;\n }\n\n private notifyScreenReaderUsers(): void {\n // Forces NVDA to re-read the content of the sc-only notification.\n this.notificationMessageUpdated = !this.notificationMessageUpdated;\n }\n\n private getMatchingValue(elements: any, elemToCompare: string): string {\n // Look for a potential matching value in the set\n const matchingElement = elements.filter((element: any) => {\n const value = this.getValue(element);\n return (\n value &&\n (this.areValuesEquals(value, elemToCompare) ||\n value.toString() === elemToCompare)\n );\n });\n\n // Map with the label.\n const matchingValueLabel = this.getLabel(matchingElement[0]);\n\n // Don't override the value if custom values are allowed and there's no match.\n return this.allowCustomValue\n ? matchingValueLabel || this.getModelValueDisplayValue()\n : matchingValueLabel;\n }\n\n private matchResult<T>(element: T): boolean {\n const searchValue = normalizeSearch(this.searchValue);\n const label = normalizeSearch(this.getLabel(element));\n if (!label) {\n return false;\n }\n\n return label.includes(searchValue);\n }\n\n private manuallyUpdateValue(newValue: string | null): void {\n if (\n !newValue ||\n !this.model ||\n !this.areValuesEquals(newValue, this.model)\n ) {\n // This is important to do on top of the updateNgModel as\n // updateNgModel can be triggered from other sources.\n this.handleChange(newValue);\n }\n\n this.updateNgModel(newValue);\n }\n\n private getCustomValue(value: string): any {\n if (!this.customValueModelGenerator || typeof value !== 'string') {\n return value;\n }\n\n return this.customValueModelGenerator(value);\n }\n\n private getModelValueDisplayValue(): string {\n return typeof this.model === 'string'\n ? this.model\n : this.getLabel(this.model);\n }\n}\n","<!--\n Accessible autocomplete widget following the listbox combobox pattern.\n ref: https://www.w3.org/TR/wai-aria-practices-1.1/examples/combobox/aria1.1pattern/listbox-combo.html\n-->\n<div\n class=\"form-group autocomplete-form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.aria-expanded]=\"shouldDisplayListbox()\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <label\n [attr.for]=\"buildChildId()\"\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : labelStyleModifier\"\n [attr.id]=\"buildChildId() + 'Label'\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </label>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <div *ngIf=\"!elements\">Chargement...</div>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <div class=\"sr-only\">\n Utilisez les flèches haut et bas pour naviguer dans la liste, puis la\n touche Entrer pour sélectionner une option.\n </div>\n\n <!-- Give screen reader users the total of results when then input changes. -->\n <div\n class=\"sr-only\"\n aria-live=\"polite\"\n role=\"status\"\n aria-atomic=\"true\"\n *ngIf=\"displayedElements && shouldDisplayListbox()\"\n >\n Nombre de résultats: {{ displayedElements.length }}\n <!-- Trick to have NVDA re-reading this properly -->\n <span>{{ notificationMessageUpdated ? ',' : ',,' }}</span>\n </div>\n\n <input\n [class.is-invalid]=\"hasErrorsToDisplay()\"\n class=\"form-control autocomplete\"\n type=\"text\"\n role=\"textbox\"\n [name]=\"name || label\"\n [attr.id]=\"buildChildId()\"\n [attr.placeholder]=\"placeholder || null\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-required]=\"required || null\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.autocomplete]=\"'off'\"\n [attr.aria-activedescendant]=\"getActiveDescendantId()\"\n [attr.aria-owns]=\"\n shouldDisplayListbox() ? buildChildId() + 'Listbox' : null\n \"\n [attr.list]=\"buildChildId() + 'list'\"\n [(ngModel)]=\"inputValue\"\n (ngModelChange)=\"showSuggestionsWhenInputHasFocusAndIsEmpty($event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"onInputFocus()\"\n (blur)=\"onInputBlur()\"\n (keydown)=\"onKeyDown($event)\"\n autocomplete=\"off\"\n #entryComponent\n />\n\n <button\n type=\"button\"\n *ngIf=\"displayClearButton() | async\"\n class=\"autocomplete-clear-button btn\"\n (click)=\"onClear()\"\n [id]=\"buildChildId() + 'Clear'\"\n >\n <foehn-icon-times\n class=\"autocomplete-clear-button-icon\"\n title=\"Réinitialiser le champ\"\n ></foehn-icon-times>\n </button>\n\n <div\n class=\"form-group suggestions-list-container\"\n *ngIf=\"shouldDisplayListbox()\"\n >\n <cdk-virtual-scroll-viewport\n [itemSize]=\"ITEM_CALCULATED_HEIGHT\"\n [style.height.px]=\"VIEW_PORT_HEIGHT\"\n >\n <ul\n [attr.id]=\"buildChildId() + 'Listbox'\"\n [attr.aria-labelledby]=\"buildChildId() + 'Label'\"\n role=\"listbox\"\n class=\"suggestions-list\"\n #suggestionsList\n >\n <li\n tabindex=\"-1\"\n role=\"option\"\n class=\"suggestion\"\n *cdkVirtualFor=\"\n let element of displayedElements;\n index as i\n \"\n [attr.id]=\"buildChildId() + 'Option' + i\"\n (click)=\"onClickSuggestion(element)\"\n (mousedown)=\"onListOptionMouseDown($event)\"\n (focus)=\"onListOptionFocus()\"\n (blur)=\"onListOptionBlur()\"\n >\n <!-- Ensures that screen readers don't consider any spaces around the emphasis -->\n <span [innerHtml]=\"getLabelWithEmphasis(element)\"></span>\n </li>\n </ul>\n </cdk-virtual-scroll-viewport>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { SdkDictionaryPipe } from './sdk-dictionary.pipe';\n\n@NgModule({\n declarations: [SdkDictionaryPipe],\n exports: [SdkDictionaryPipe]\n})\nexport class SdkDictionaryModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FoehnAutocompleteComponent } from './foehn-autocomplete.component';\nimport { FoehnIconsModule } from '../foehn-icons/foehn-icons.module';\nimport { FoehnValidationAlertsModule } from '../foehn-validation-alerts/foehn-validation-alerts.module';\nimport { FormsModule } from '@angular/forms';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';\n\n@NgModule({\n imports: [\n CommonModule,\n FoehnIconsModule,\n FoehnValidationAlertsModule,\n FormsModule,\n ScrollingModule,\n SdkDictionaryModule\n ],\n declarations: [FoehnAutocompleteComponent],\n exports: [FoehnAutocompleteComponent]\n})\nexport class FoehnAutocompleteModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { HttpClientModule } from '@angular/common/http';\n\nimport { FoehnCheckboxComponent } from './foehn-checkbox.component';\nimport { FoehnRadioComponent } from './foehn-radio.component';\nimport { FoehnSelectComponent } from './foehn-select.component';\nimport { FoehnIconsModule } from '../foehn-icons/foehn-icons.module';\nimport { FoehnValidationAlertsModule } from '../foehn-validation-alerts/foehn-validation-alerts.module';\nimport { FoehnAutocompleteModule } from '../foehn-autocomplete/foehn-autocomplete.module';\nimport { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n FoehnIconsModule,\n HttpClientModule,\n FoehnValidationAlertsModule,\n FoehnAutocompleteModule,\n SdkDictionaryModule\n ],\n declarations: [\n FoehnCheckboxComponent,\n FoehnRadioComponent,\n FoehnSelectComponent\n ],\n exports: [\n FoehnCheckboxComponent,\n FoehnRadioComponent,\n FoehnSelectComponent,\n FoehnAutocompleteModule\n ]\n})\nexport class FoehnCheckablesModule {}\n","import { NgModule } from '@angular/core';\nimport { FoehnHeaderComponent } from './foehn-header.component';\nimport { FoehnSkipLinkComponent } from './foehn-skip-link.component';\nimport { CommonModule } from '@angular/common';\nimport { FoehnIconsModule } from '../foehn-icons/foehn-icons.module';\nimport { FoehnCheckablesModule } from '../foehn-checkables/foehn-checkables.module';\n\n@NgModule({\n imports: [CommonModule, FoehnIconsModule, FoehnCheckablesModule],\n declarations: [FoehnHeaderComponent, FoehnSkipLinkComponent],\n exports: [FoehnHeaderComponent, FoehnSkipLinkComponent]\n})\nexport class FoehnHeaderModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FoehnIconsModule } from '../foehn-icons/foehn-icons.module';\nimport { FoehnFooterComponent } from './foehn-footer.component';\n\n@NgModule({\n imports: [CommonModule, FoehnIconsModule],\n declarations: [FoehnFooterComponent],\n exports: [FoehnFooterComponent]\n})\nexport class FoehnFooterModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SupportAlertContainerComponent } from './support-alert-container.component';\nimport { SupportAlertComponent } from './support-alert.component';\nimport { HttpClientModule } from '@angular/common/http';\nimport { FoehnIconsModule } from '../foehn-icons/foehn-icons.module';\n\n@NgModule({\n imports: [CommonModule, HttpClientModule, FoehnIconsModule],\n declarations: [SupportAlertContainerComponent, SupportAlertComponent],\n exports: [SupportAlertContainerComponent]\n})\nexport class SupportAlertModule {}\n","import { Component, Input, NgZone } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { FoehnNavigationService } from '../foehn-navigation/foehn-navigation.service';\nimport { PlaceholderType } from '../sdk-dictionary/sdk-dictionary.service';\nimport { first, map } from 'rxjs/operators';\n\n@Component({\n selector: 'foehn-page-counter',\n templateUrl: './foehn-page-counter.component.html'\n})\nexport class FoehnPageCounterComponent {\n @Input()\n textTemplate = 'foehn-page-counter.label';\n\n isStable: Observable<boolean>;\n\n constructor(\n private foehnNavigationService: FoehnNavigationService,\n private ngZone: NgZone\n ) {\n this.isStable = this.ngZone.onStable.pipe(\n first(),\n map(() => true)\n );\n }\n\n get placeholders(): PlaceholderType {\n const currentPage =\n this.foehnNavigationService.getCurrentRouteIndex() + 1;\n const pageCount = this.foehnNavigationService.getTotalRoutesSize() - 1;\n\n return {\n currentPage: currentPage.toString(),\n pageCount: pageCount.toString()\n };\n }\n}\n","<p class=\"h3 text-muted\" *ngIf=\"isStable | async\">\n {{ textTemplate | fromDictionary: placeholders }}\n</p>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FoehnModalComponent } from './foehn-modal.component';\nimport { A11yModule } from '@angular/cdk/a11y';\n\n@NgModule({\n imports: [CommonModule, A11yModule],\n declarations: [FoehnModalComponent],\n exports: [FoehnModalComponent]\n})\nexport class FoehnModalModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FoehnUserConnectedAsComponent } from './foehn-user-connected-as.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [FoehnUserConnectedAsComponent],\n exports: [FoehnUserConnectedAsComponent]\n})\nexport class FoehnUserConnectedAsModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FoehnConfirmModalComponent } from './foehn-confirm-modal.component';\nimport { FoehnModalModule } from '../foehn-modal/foehn-modal.module';\n\n@NgModule({\n imports: [CommonModule, FoehnModalModule],\n declarations: [FoehnConfirmModalComponent],\n exports: [FoehnConfirmModalComponent]\n})\nexport class FoehnConfirmModalModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FoehnPageComponent } from './foehn-page.component';\nimport { FoehnBreadcrumbModule } from '../foehn-breadcrumb/foehn-breadcrumb.module';\nimport { FoehnGrowlModule } from '../foehn-growl/foehn-growl.module';\nimport { FoehnHeaderModule } from '../foehn-header/foehn-header.module';\nimport { FoehnFooterModule } from '../foehn-footer/foehn-footer.module';\nimport { SupportAlertModule } from '../sdk-support-alert/support-alert.module';\nimport { FoehnPageCounterComponent } from './foehn-page-counter.component';\nimport { FoehnModalModule } from '../foehn-modal/foehn-modal.module';\nimport { FoehnPageModalComponent } from './foehn-page-modal.component';\nimport { FoehnUserConnectedAsModule } from '../foehn-user-connected-as/foehn-user-connected-as.module';\nimport { FoehnConfirmModalModule } from '../foehn-confirm-modal/foehn-confirm-modal.module';\nimport { FoehnIconsModule } from '../foehn-icons/foehn-icons.module';\nimport { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';\n\n@NgModule({\n imports: [\n CommonModule,\n FoehnBreadcrumbModule,\n FoehnGrowlModule,\n FoehnHeaderModule,\n FoehnModalModule,\n FoehnFooterModule,\n FoehnUserConnectedAsModule,\n SupportAlertModule,\n FoehnConfirmModalModule,\n FoehnIconsModule,\n SdkDictionaryModule\n ],\n declarations: [\n FoehnPageComponent,\n FoehnPageCounterComponent,\n FoehnPageModalComponent\n ],\n exports: [\n FoehnPageComponent,\n FoehnPageCounterComponent,\n FoehnPageModalComponent\n ]\n})\nexport class FoehnPageModule {}\n","export class FooterLink {\n url: string;\n label: string;\n}\n","// Patterns for HTML so iOS dans display the proper keyboard\nexport const HTML_NO_DECIMAL_PATTERN = '[0-9]*';\nexport const HTML_DECIMAL_PATTERN = '[0-9\\\\.,]*';\nexport const HTML_PHONE_PATTERN = '[0-9\\\\.\\\\-()+]*';\n\n// Validation patterns for the field\nexport const NUMBERS_PATTERN = /^[0-9]*$/;\nexport const DECIMAL_NUMBERS_PATTERN = /^([0-9]+\\.?)?[0-9]*$/;\nexport const NEGATIVE_NUMBERS_PATTERN = /^-?[0-9]*$/;\nexport const NEGATIVE_AND_DECIMAL_NUMBERS_PATTERN = /^-?([0-9]+\\.?)?[0-9]*$/;\n\n// When cleaning values, we sanitize the input because we don't know how to handle\n// invalid input without blocking the value.\nexport const CLEAN_NUMBERS_PATTERN = /[^0-9]/g;\nexport const CLEAN_DECIMAL_NUMBERS_PATTERN = /[^0-9\\.]/g;\nexport const CLEAN_NEGATIVE_NUMBERS_PATTERN = /[^0-9\\-]/g;\nexport const CLEAN_NEGATIVE_AND_DECIMAL_NUMBERS_PATTERN = /[^0-9\\-\\.]/g;\n","import { Injectable } from '@angular/core';\n\nexport const CURRENCY_REGEXP = /\\B(?=(\\d{3})+(?!\\d))/g;\nexport const THOUSANDS_SEPARATOR = \"'\";\nexport const DECIMALS_SEPARATOR = '.';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CurrencyHelper {\n formatCurrency(\n value: number | string,\n currency: string = 'CHF',\n fixedDecimalCount: number = null,\n showZero: boolean = false\n ): string {\n if (!value && value !== 0) {\n return '';\n }\n\n if (value === 0 && !showZero) {\n return '';\n }\n\n let integer = value === 0 ? value.toString() : (value || '').toString();\n\n if (fixedDecimalCount && !isNaN(Number(integer))) {\n integer = Number(integer).toFixed(fixedDecimalCount);\n }\n\n const splitOnDecimal = integer.split(DECIMALS_SEPARATOR);\n splitOnDecimal[0] = splitOnDecimal[0].replace(\n CURRENCY_REGEXP,\n THOUSANDS_SEPARATOR\n );\n\n const formattedValue = splitOnDecimal.join(DECIMALS_SEPARATOR);\n return !!formattedValue\n ? formattedValue + (currency ? ` ${currency}` : '')\n : null;\n }\n}\n","import { Component, forwardRef, Input, OnInit } from '@angular/core';\nimport {\n CLEAN_DECIMAL_NUMBERS_PATTERN,\n CLEAN_NEGATIVE_AND_DECIMAL_NUMBERS_PATTERN,\n CLEAN_NEGATIVE_NUMBERS_PATTERN,\n CLEAN_NUMBERS_PATTERN,\n DECIMAL_NUMBERS_PATTERN,\n HTML_DECIMAL_PATTERN,\n HTML_NO_DECIMAL_PATTERN,\n NEGATIVE_AND_DECIMAL_NUMBERS_PATTERN,\n NEGATIVE_NUMBERS_PATTERN,\n NUMBERS_PATTERN\n} from './pattern.const';\nimport { FoehnInputStringComponent } from './foehn-input-string.component';\nimport { FoehnInputComponent } from './foehn-input.component';\nimport { DECIMALS_SEPARATOR } from '../sdk-currency/currency.helper';\n\n@Component({\n selector: 'foehn-input-number',\n templateUrl: './foehn-input.component.html',\n styleUrls: ['./foehn-input.component.css'],\n providers: [\n {\n provide: FoehnInputComponent,\n useExisting: forwardRef(() => FoehnInputNumberComponent),\n multi: true\n }\n ]\n})\nexport class FoehnInputNumberComponent\n extends FoehnInputStringComponent\n implements OnInit {\n @Input()\n allowDecimal: boolean;\n\n @Input()\n allowNegative: boolean;\n\n @Input()\n maxDecimalCount = 2;\n\n @Input()\n set model(value: string) {\n // This doesn't trigger the component's version of updateNgModel strait away as this might\n // be called before allowDecimal or allowNegative are properly set (before the init lifecycle\n // of the component). This is critical to not re-format the input before the OnInit, otherwise\n // we might end up with invalid value displayed to the user. this.updateNgModel is called implicitly\n // as super.updateNgModel will emit a change on this.modelChange.\n // FIXME this is a hack and should be refactored.\n super.updateNgModel(value);\n }\n\n get model(): string {\n // If the setter is overridden, it's critical to override the getter too.\n return this.model_;\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n\n this.type = 'text';\n\n // Pattern used only for numpad trigger on mobile phones\n this.pattern = this.allowDecimal\n ? HTML_DECIMAL_PATTERN\n : HTML_NO_DECIMAL_PATTERN;\n }\n\n updateNgModel(value: string): void {\n if (this.isEmpty(value)) {\n this.setToEmpty(value);\n return;\n }\n\n let cleanNumber = this.getCleanNumber(value.toString());\n const isModelValid = this.isModelValid(cleanNumber);\n if (!isModelValid) {\n cleanNumber = this.model;\n }\n\n super.updateNgModel(cleanNumber);\n\n // Need to update HTML input value because we let user input what he wants and then we clean model\n this.updateInputElementValue(cleanNumber);\n }\n\n /**\n * To be used for post-formatting by directives.\n *\n * @param value of model\n */\n forceUpdateNgModel(value: string): void {\n this.model_ = value;\n this.updateInputElementValue(value);\n }\n\n private isValueInRange(value: string): boolean {\n if (this.allowNegative && value === '-') {\n return true;\n }\n\n const valueAsNumber = this.toNumber(value);\n if (!this.isEmpty(this.min) || !this.isEmpty(this.max)) {\n if (isNaN(valueAsNumber)) {\n return false;\n }\n\n if (!this.isEmpty(this.min) && !this.isEmpty(this.max)) {\n return valueAsNumber >= this.min && valueAsNumber <= this.max;\n }\n\n if (!this.isEmpty(this.min)) {\n return valueAsNumber >= this.min;\n }\n\n if (!this.isEmpty(this.max)) {\n return valueAsNumber <= this.max;\n }\n }\n return true;\n }\n\n private toNumber(value: string): number {\n return this.allowDecimal ? parseFloat(value) : parseInt(value, 10);\n }\n\n private isStringAValidNumber(value: string): boolean {\n return this.getValidationRegex().test(value);\n }\n\n private isModelValid(value: string): boolean {\n return this.isStringAValidNumber(value) && this.isValueInRange(value);\n }\n\n private getValidationRegex(isForClean: boolean = false): RegExp {\n if (this.allowDecimal || this.allowNegative) {\n // Allow decimal and negative\n if (this.allowDecimal && this.allowNegative) {\n return !isForClean\n ? NEGATIVE_AND_DECIMAL_NUMBERS_PATTERN\n : CLEAN_NEGATIVE_AND_DECIMAL_NUMBERS_PATTERN;\n }\n // Allow decimal\n if (this.allowDecimal) {\n return !isForClean\n ? DECIMAL_NUMBERS_PATTERN\n : CLEAN_DECIMAL_NUMBERS_PATTERN;\n }\n // Allow negative\n return !isForClean\n ? NEGATIVE_NUMBERS_PATTERN\n : CLEAN_NEGATIVE_NUMBERS_PATTERN;\n }\n return !isForClean ? NUMBERS_PATTERN : CLEAN_NUMBERS_PATTERN;\n }\n\n private replaceCommaWithDot(value: string): string {\n return value && typeof value === 'string'\n ? value.replace(new RegExp(',', 'g'), DECIMALS_SEPARATOR)\n : value;\n }\n\n private removeNonNumericCharacters(value: string): string {\n return value && typeof value === 'string'\n ? value.replace(this.getValidationRegex(true), '')\n : value;\n }\n\n private cleanDecimals(\n value: string,\n separator: string = DECIMALS_SEPARATOR\n ): string {\n if (!value || !this.allowDecimal || !value.includes(separator)) {\n return value;\n }\n\n const [intg, dec] = value.split(separator);\n const cleanDec = dec.substring(0, this.maxDecimalCount);\n\n return intg + separator + cleanDec;\n }\n\n private getCleanNumber(value: string): string {\n const noCommaString = this.replaceCommaWithDot(value);\n const cleanDecimals = this.cleanDecimals(noCommaString);\n const cleanNumber = this.removeNonNumericCharacters(cleanDecimals);\n\n if (cleanNumber && cleanNumber.length) {\n return cleanNumber.substring(0, this.getMaxLength());\n }\n\n return cleanNumber;\n }\n\n private updateInputElementValue(cleanNumber: string): void {\n if (!this.inputElement) {\n // No need to update the native element if it doesn't yet exist.\n return;\n }\n\n const inputElemValue = this.inputElement.nativeElement.value;\n if (inputElemValue !== cleanNumber) {\n // Need to update HTML input value because we let user input what he wants and then we clean model\n this.inputElement.nativeElement.value = cleanNumber;\n }\n }\n\n private setToEmpty(value: string): void {\n // Empty means null, otherwise the backend doesn't handle numbers properly. We have to keep 'undefined'\n // if 'undefined' otherwise Angular complains about the value of the model being changed without updating\n // the view.\n const emptyValue = value === '' ? null : value;\n super.updateNgModel(emptyValue);\n this.updateInputElementValue(emptyValue);\n }\n}\n","import { Component, forwardRef, NgZone, OnInit } from '@angular/core';\nimport { FoehnInputStringComponent } from './foehn-input-string.component';\nimport { FoehnInputComponent } from './foehn-input.component';\nimport { first } from 'rxjs/operators';\n\n@Component({\n selector: 'foehn-input-email',\n templateUrl: './foehn-input.component.html',\n styleUrls: ['./foehn-input.component.css'],\n providers: [\n {\n provide: FoehnInputComponent,\n useExisting: forwardRef(() => FoehnInputEmailComponent),\n multi: true\n }\n ]\n})\nexport class FoehnInputEmailComponent\n extends FoehnInputStringComponent\n implements OnInit {\n constructor(private ngZone: NgZone) {\n super();\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.type = 'email';\n this.autocomplete = 'email';\n }\n\n onModelChange(value: string): void {\n if (value === undefined || !!value) {\n this.updateNgModel(value);\n } else {\n this.ngZone.onMicrotaskEmpty.pipe(first()).subscribe(() => {\n this.updateNgModel(null);\n });\n }\n }\n}\n","import { Component, forwardRef, NgZone, OnInit } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { FoehnInputStringComponent } from './foehn-input-string.component';\nimport { FoehnInputComponent } from './foehn-input.component';\nimport { first } from 'rxjs/operators';\n\n@Component({\n selector: 'foehn-input-hidden',\n templateUrl: './foehn-input.component.html',\n providers: [\n {\n provide: FoehnInputComponent,\n useExisting: forwardRef(() => FoehnInputHiddenComponent),\n multi: true\n }\n ]\n})\nexport class FoehnInputHiddenComponent\n extends FoehnInputStringComponent\n implements OnInit {\n constructor(private ngZone: NgZone) {\n super();\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.type = 'hidden';\n }\n\n onModelChange(value: string): void {\n if (value === undefined || !!value) {\n this.updateNgModel(value);\n } else {\n this.ngZone.onMicrotaskEmpty.pipe(first()).subscribe(() => {\n this.updateNgModel(null);\n });\n }\n }\n\n displayClearButton(): Observable<boolean> {\n return of(false);\n }\n}\n","import { Component, forwardRef, NgZone, OnInit } from '@angular/core';\nimport { FoehnInputStringComponent } from './foehn-input-string.component';\nimport { FoehnInputComponent } from './foehn-input.component';\nimport { first } from 'rxjs/operators';\n\n@Component({\n selector: 'foehn-input-password',\n templateUrl: './foehn-input.component.html',\n styleUrls: ['./foehn-input.component.css'],\n providers: [\n {\n provide: FoehnInputComponent,\n useExisting: forwardRef(() => FoehnInputPasswordComponent),\n multi: true\n }\n ]\n})\nexport class FoehnInputPasswordComponent\n extends FoehnInputStringComponent\n implements OnInit {\n constructor(private ngZone: NgZone) {\n super();\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.type = 'password';\n this.autocomplete = 'current-password';\n }\n\n onModelChange(value: string): void {\n if (value === undefined || !!value) {\n this.updateNgModel(value);\n } else {\n this.ngZone.onMicrotaskEmpty.pipe(first()).subscribe(() => {\n this.updateNgModel(null);\n });\n }\n }\n}\n","import { Component, forwardRef, Input, NgZone, OnInit } from '@angular/core';\nimport { FoehnInputStringComponent } from './foehn-input-string.component';\nimport { FoehnInputComponent } from './foehn-input.component';\nimport { first } from 'rxjs/operators';\n\n@Component({\n selector: 'foehn-input-textarea',\n templateUrl: './foehn-input-textarea.component.html',\n styleUrls: ['./foehn-input.component.css'],\n providers: [\n {\n provide: FoehnInputComponent,\n useExisting: forwardRef(() => FoehnInputTextareaComponent),\n multi: true\n }\n ]\n})\nexport class FoehnInputTextareaComponent\n extends FoehnInputStringComponent\n implements OnInit {\n @Input()\n rows = 3;\n\n @Input()\n displayCharCount: boolean;\n\n isCharCountExceeded = false;\n charCountLeft: number;\n charCountLabel: string;\n ariaLiveStatus = 'off';\n\n constructor(private ngZone: NgZone) {\n super();\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n\n if (this.displayCharCount) {\n this.countCharLeft();\n }\n }\n\n onModelChange(value: string): void {\n if (value === undefined || !!value) {\n this.updateNgModel(value);\n } else {\n this.ngZone.onMicrotaskEmpty.pipe(first()).subscribe(() => {\n this.updateNgModel(null);\n });\n }\n\n if (this.displayCharCount) {\n this.checkCharCountExceeded();\n this.countCharLeft();\n }\n }\n\n countCharLeft(): void {\n if (!this.max) {\n return;\n }\n\n if (this.model !== null && this.model !== undefined && this.max) {\n this.charCountLeft = this.max - this.model.length;\n if (this.charCountLeft > 0) {\n const plural = this.charCountLeft === 1 ? '' : 's';\n this.charCountLabel = `${this.charCountLeft} caractère${plural} restant${plural}`;\n if (this.charCountLeft <= 10 && this.charCountLeft >= 1) {\n this.ariaLiveStatus = 'assertive';\n } else {\n this.ariaLiveStatus = 'off';\n }\n } else if (this.charCountLeft === 0) {\n this.ariaLiveStatus = 'assertive';\n this.charCountLabel =\n 'Vous avez atteint le nombre de caractère autorisé!';\n } else {\n this.ariaLiveStatus = 'assertive';\n this.charCountLabel = `Vous avez dépassé le nombre de caractères autorisés de ${\n this.charCountLeft * -1\n }`;\n }\n } else {\n this.charCountLeft = this.max;\n const plural = this.charCountLeft === 1 ? '' : 's';\n this.charCountLabel = `${this.charCountLeft} caractère${plural} restant${plural}`;\n this.ariaLiveStatus = 'off';\n }\n }\n\n checkCharCountExceeded(): void {\n if (this.model && this.max) {\n this.isCharCountExceeded = this.model.length > this.max;\n }\n }\n}\n","<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <label\n [attr.for]=\"buildChildId()\"\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : labelStyleModifier\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </label>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <textarea\n [class.is-invalid]=\"hasErrorsToDisplay()\"\n class=\"form-control\"\n [name]=\"name || label\"\n [attr.maxlength]=\"getMaxLength()\"\n [attr.autocomplete]=\"getAutoComplete()\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.type]=\"type\"\n [attr.pattern]=\"pattern\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.id]=\"buildChildId()\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"\n hasErrorsToDisplay() || null || isCharCountExceeded\n \"\n [attr.aria-required]=\"required || null\"\n [ngModel]=\"model\"\n (ngModelChange)=\"updateNgModel($event)\"\n [rows]=\"rows\"\n (paste)=\"onPaste($event)\"\n (input)=\"handleChange(entryComponent.value)\"\n (keydown)=\"onKeydown($event)\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n #entryComponent\n ></textarea>\n\n <div\n *ngIf=\"displayCharCount && max\"\n [innerHTML]=\"charCountLabel\"\n id=\"chars-remaining\"\n class=\"chars-remaining\"\n [class.char-count-exceeded]=\"isCharCountExceeded\"\n [attr.aria-live]=\"ariaLiveStatus\"\n ></div>\n</div>\n","import { Component, forwardRef, Input } from '@angular/core';\nimport { FoehnInputComponent } from '../foehn-input/foehn-input.component';\nimport { Observable, of } from 'rxjs';\n\n@Component({\n selector: 'foehn-input-date',\n templateUrl: './foehn-input-date.component.html',\n providers: [\n {\n provide: FoehnInputComponent,\n useExisting: forwardRef(() => FoehnDateComponent),\n multi: true\n }\n ]\n})\nexport class FoehnDateComponent extends FoehnInputComponent<number[]> {\n @Input()\n disableDay = false;\n\n @Input()\n disableMonth = false;\n\n @Input()\n disableYear = false;\n\n day: string;\n month: string;\n year: string;\n\n updateDate(): void {\n const validValue = this.getValidValue();\n if (typeof validValue !== 'undefined') {\n this.updateNgModel(validValue);\n }\n }\n\n handleUserInput(): void {\n const validValue = this.getValidValue();\n if (typeof validValue !== 'undefined') {\n this.handleChange(validValue);\n }\n }\n\n onModelChange(value: number[]): void {\n if (value && value.length > 2) {\n this.year = this.toString(value[0]);\n this.month = this.toString(value[1]);\n this.day = this.toString(value[2]);\n } else if (!value) {\n this.year = null;\n this.month = null;\n this.day = null;\n }\n }\n\n displayClearButton(): Observable<boolean> {\n // Override the clear button fonction not worry about the model at this stage.\n return of(this.clearButton);\n }\n\n private getValidValue(): number[] | null | undefined {\n if (\n this.isEmpty(this.day) &&\n this.isEmpty(this.month) &&\n this.isEmpty(this.year)\n ) {\n if (this.model_ !== undefined) {\n return null;\n }\n\n return undefined;\n }\n return [\n this.toNumber(this.year),\n this.toNumber(this.month),\n this.toNumber(this.day)\n ];\n }\n\n private toNumber(str: string): number {\n return str ? Number(str) : null;\n }\n\n private toString(num: number): string {\n return num ? num.toString() : null;\n }\n}\n","<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <fieldset\n class=\"mb-3\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n >\n <legend *ngIf=\"!!label\" [ngClass]=\"isLabelSrOnly ? 'sr-only' : 'vd-p'\">\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </legend>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildId() + 'Help'\"\n class=\"text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <div class=\"vd-form-flex\">\n <div\n [ngClass]=\"{\n 'vd-form-flex__item--3-char-width':\n displayClearButton() | async,\n 'vd-form-flex__item--2-char-width': !(\n displayClearButton() | async\n )\n }\"\n class=\"vd-form-flex__item\"\n >\n <foehn-input-number\n [id]=\"buildId() + '_day'\"\n [name]=\"name + '_day'\"\n [label]=\"'foehn-input-date.day.label' | fromDictionary\"\n [(model)]=\"day\"\n (modelChange)=\"updateDate()\"\n [disabled]=\"disabled || disableDay\"\n [maxlength]=\"2\"\n [allowNegative]=\"false\"\n [max]=\"31\"\n [clearButton]=\"displayClearButton() | async\"\n [required]=\"required\"\n [hideNotRequiredExtraLabel]=\"true\"\n (userInput)=\"handleUserInput()\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n #entryComponent\n ></foehn-input-number>\n </div>\n <div\n [ngClass]=\"{\n 'vd-form-flex__item--3-char-width':\n displayClearButton() | async,\n 'vd-form-flex__item--2-char-width': !(\n displayClearButton() | async\n )\n }\"\n class=\"vd-form-flex__item\"\n >\n <foehn-input-number\n [id]=\"buildId() + '_month'\"\n [name]=\"name + '_month'\"\n [label]=\"'foehn-input-date.month.label' | fromDictionary\"\n [(model)]=\"month\"\n (modelChange)=\"updateDate()\"\n [disabled]=\"disabled || disableMonth\"\n [maxlength]=\"2\"\n [clearButton]=\"displayClearButton() | async\"\n [allowNegative]=\"false\"\n [max]=\"12\"\n [required]=\"required\"\n [hideNotRequiredExtraLabel]=\"true\"\n (userInput)=\"handleUserInput()\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n ></foehn-input-number>\n </div>\n <div class=\"vd-form-flex__item vd-form-flex__item--4-char-width\">\n <foehn-input-number\n [id]=\"buildId() + '_year'\"\n [name]=\"name + '_year'\"\n [label]=\"'foehn-input-date.year.label' | fromDictionary\"\n [(model)]=\"year\"\n (modelChange)=\"updateDate()\"\n [disabled]=\"disabled || disableYear\"\n [allowNegative]=\"false\"\n [maxlength]=\"4\"\n [clearButton]=\"displayClearButton() | async\"\n [required]=\"required\"\n [hideNotRequiredExtraLabel]=\"true\"\n (userInput)=\"handleUserInput()\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n ></foehn-input-number>\n </div>\n <ng-content select=\"[date-picker-button]\"></ng-content>\n </div>\n </fieldset>\n</div>\n","import { Component, forwardRef } from '@angular/core';\nimport { FoehnInputStringComponent } from '../foehn-input/foehn-input-string.component';\nimport { FoehnInputComponent } from '../foehn-input/foehn-input.component';\n\n/**\n * @param num as string\n * @returns string\n */\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions\nfunction leftPad(num: string): string {\n if (num === undefined || num === null) {\n return '';\n }\n if (num.length < 2) {\n return `0${num}`;\n }\n return num;\n}\n\n@Component({\n selector: 'foehn-input-time',\n templateUrl: './foehn-input-time.component.html',\n providers: [\n {\n provide: FoehnInputComponent,\n useExisting: forwardRef(() => FoehnTimeComponent),\n multi: true\n }\n ]\n})\nexport class FoehnTimeComponent extends FoehnInputStringComponent {\n hour: string;\n minute: string;\n\n updateTime(): void {\n const validValue = this.getValidValue();\n if (typeof validValue !== 'undefined') {\n this.updateNgModel(validValue);\n }\n }\n\n handleUserInput(): void {\n const validValue = this.getValidValue();\n if (typeof validValue !== 'undefined') {\n this.handleChange(validValue);\n }\n }\n\n onModelChange(value: string): void {\n const timeParts = !!value ? value.split(':') : null;\n if (timeParts && timeParts.length >= 2) {\n this.hour = timeParts[0];\n this.minute = timeParts[1];\n } else if (!value) {\n this.hour = null;\n this.minute = null;\n }\n }\n\n private getValidValue(): string | null | undefined {\n if (!this.hour || !this.minute) {\n if (this.model_ !== undefined) {\n return null;\n }\n\n return undefined;\n }\n return `${leftPad(this.hour)}:${leftPad(this.minute)}`;\n }\n}\n","<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <fieldset\n class=\"mb-3\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n >\n <legend *ngIf=\"!!label\" [ngClass]=\"isLabelSrOnly ? 'sr-only' : 'vd-p'\">\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </legend>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildId() + 'Help'\"\n class=\"text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <div class=\"vd-form-flex\">\n <div\n [ngClass]=\"{\n 'vd-form-flex__item--3-char-width':\n displayClearButton() | async,\n 'vd-form-flex__item--2-char-width': !(\n displayClearButton() | async\n )\n }\"\n class=\"vd-form-flex__item\"\n >\n <foehn-input-number\n [id]=\"buildId() + '_hours'\"\n [name]=\"name + '_hours'\"\n [label]=\"'foehn-input-time.hours.label' | fromDictionary\"\n [maxlength]=\"2\"\n [max]=\"24\"\n [(model)]=\"hour\"\n (focusout)=\"updateTime()\"\n [required]=\"required\"\n [hideNotRequiredExtraLabel]=\"true\"\n (userInput)=\"handleUserInput()\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n [disabled]=\"disabled\"\n #entryComponent\n ></foehn-input-number>\n </div>\n <div\n [ngClass]=\"{\n 'vd-form-flex__item--3-char-width':\n displayClearButton() | async,\n 'vd-form-flex__item--2-char-width': !(\n displayClearButton() | async\n )\n }\"\n class=\"vd-form-flex__item\"\n >\n <foehn-input-number\n [id]=\"buildId() + '_minutes'\"\n [name]=\"name + '_minutes'\"\n [label]=\"'foehn-input-time.minutes.label' | fromDictionary\"\n [maxlength]=\"2\"\n [max]=\"59\"\n [(model)]=\"minute\"\n (focusout)=\"updateTime()\"\n [required]=\"required\"\n [hideNotRequiredExtraLabel]=\"true\"\n (userInput)=\"handleUserInput()\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n [disabled]=\"disabled\"\n ></foehn-input-number>\n </div>\n </div>\n </fieldset>\n</div>\n","import { Component, forwardRef, Input, OnInit } from '@angular/core';\nimport { FoehnInputStringComponent } from './foehn-input-string.component';\nimport { FoehnInputComponent } from './foehn-input.component';\nimport { HTML_PHONE_PATTERN } from './pattern.const';\n\nexport const DEFAULT_INTERNATIONAL_AND_NO_SWISS =\n \"Préfixer avec l'indicatif de votre pays (ex : <ul class='sameLine-list'>\" +\n '<li>+33612345678,</li><li>+49 123 456 78 901 ou</li><li>+39 312 345 6789</li></ul>)';\nexport const DEFAULT_INTERNATIONAL_AND_NO_SWISS_PHONE =\n \"Préfixer avec l'indicatif de votre pays (ex : <ul class='sameLine-list'>\" +\n '<li>+41791234567,</li><li>0041 78 123 45 56 ou</li><li>+33 6 12 34 56 78</li></ul>)';\nexport const DEFAULT_INTERNATIONAL_AND_NO_SWISS_MOBILE =\n \"Préfixer avec l'indicatif de votre pays (ex : <ul class='sameLine-list'>\" +\n '<li>+41211234567,</li><li>0041 21 123 45 56 ou</li><li>+33 6 12 34 56 78</li></ul>)';\nexport const DEFAULT_INTERNATIONAL_HELP_TEXT =\n \"Préfixer avec l'indicatif de votre pays (ex : <ul class='sameLine-list'>\" +\n '<li>+41791234567,</li><li>+41 22 012 34 56,</li><li>0041 79 012 34 56</li><li>ou +33612345678</li></ul>)';\nexport const DEFAULT_SWISS_HELP_TEXT =\n \"ex : <ul class='sameLine-list'><li>079 123 45 67,</li><li>0211234567,</li><li>+41 79 123 45 67 ou</li><li>+41211234567</li></ul>\";\nexport const DEFAULT_SWISS_PHONE_HELP_TEXT =\n \"ex : <ul class='sameLine-list'><li>0211234567,</li><li>021 123 45 67,</li><li>+41211234567 ou</li><li>+41 21 123 45 67</li></ul>\";\nexport const DEFAULT_SWISS_MOBILE_PHONE_HELP_TEXT =\n \"ex : <ul class='sameLine-list'><li>0791234567,</li><li>079 123 45 67,</li><li>+41791234567 ou</li><li>+41 79 123 45 67</li></ul>\";\n\nexport const BAD_PARAMS_HELP_TEXT =\n 'Mauvais paramétrage du composant. Un téléphone est soit international, mobile, fixe ou les deux mais pas rien';\n\n@Component({\n selector: 'foehn-input-phone',\n templateUrl: './foehn-input.component.html',\n styleUrls: ['./foehn-input.component.css'],\n providers: [\n {\n provide: FoehnInputComponent,\n useExisting: forwardRef(() => FoehnInputPhoneComponent),\n multi: true\n }\n ]\n})\nexport class FoehnInputPhoneComponent\n extends FoehnInputStringComponent\n implements OnInit {\n @Input()\n acceptInternational = false;\n\n @Input()\n acceptMobilePhone = true;\n\n @Input()\n acceptPhone = true;\n\n ngOnInit(): void {\n super.ngOnInit();\n this.type = 'tel';\n this.autocomplete = 'tel';\n // Pattern used only for numpad trigger on mobile phones\n this.pattern = HTML_PHONE_PATTERN;\n\n if (!this.helpText || !this.helpText.length) {\n this.helpText = this.getHelpText();\n }\n }\n\n private getHelpText(): string {\n if (\n this.acceptInternational &&\n !this.acceptPhone &&\n !this.acceptMobilePhone\n ) {\n return DEFAULT_INTERNATIONAL_AND_NO_SWISS;\n }\n if (this.acceptInternational && !this.acceptPhone) {\n return DEFAULT_INTERNATIONAL_AND_NO_SWISS_PHONE;\n }\n if (this.acceptInternational && !this.acceptMobilePhone) {\n return DEFAULT_INTERNATIONAL_AND_NO_SWISS_MOBILE;\n }\n if (this.acceptInternational) {\n return DEFAULT_INTERNATIONAL_HELP_TEXT;\n }\n if (this.acceptMobilePhone && this.acceptPhone) {\n return DEFAULT_SWISS_HELP_TEXT;\n }\n if (this.acceptPhone) {\n return DEFAULT_SWISS_PHONE_HELP_TEXT;\n }\n if (this.acceptMobilePhone) {\n return DEFAULT_SWISS_MOBILE_PHONE_HELP_TEXT;\n }\n return BAD_PARAMS_HELP_TEXT;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { FoehnInputTextComponent } from './foehn-input-text.component';\nimport { FoehnInputNumberComponent } from './foehn-input-number.component';\nimport { FoehnIconsModule } from '../foehn-icons/foehn-icons.module';\nimport { FoehnValidationAlertsModule } from '../foehn-validation-alerts/foehn-validation-alerts.module';\nimport { FoehnInputEmailComponent } from './foehn-input-email.component';\nimport { FoehnInputHiddenComponent } from './foehn-input-hidden.component';\nimport { FoehnInputPasswordComponent } from './foehn-input-password.component';\nimport { FoehnInputTextareaComponent } from './foehn-input-textarea.component';\nimport { FoehnDateComponent } from '../foehn-input-date/foehn-input-date.component';\nimport { FoehnTimeComponent } from '../foehn-input-time/foehn-input-time.component';\nimport { FoehnInputPhoneComponent } from './foehn-input-phone.component';\nimport { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';\n\n@NgModule({\n imports: [\n FoehnIconsModule,\n CommonModule,\n FormsModule,\n FoehnValidationAlertsModule,\n SdkDictionaryModule\n ],\n declarations: [\n FoehnInputTextComponent,\n FoehnInputNumberComponent,\n FoehnInputEmailComponent,\n FoehnInputHiddenComponent,\n FoehnInputPasswordComponent,\n FoehnInputTextareaComponent,\n FoehnDateComponent,\n FoehnTimeComponent,\n FoehnInputPhoneComponent\n ],\n exports: [\n FoehnInputTextComponent,\n FoehnInputNumberComponent,\n FoehnInputEmailComponent,\n FoehnInputHiddenComponent,\n FoehnInputPasswordComponent,\n FoehnInputTextareaComponent,\n FoehnDateComponent,\n FoehnTimeComponent,\n FoehnInputPhoneComponent\n ]\n})\nexport class FoehnInputModule {}\n","import { Component, forwardRef, Input } from '@angular/core';\nimport { FoehnInputComponent } from '../foehn-input/foehn-input.component';\nimport { Locality } from './address.type';\n\n@Component({\n selector: 'foehn-input-foreign-locality',\n templateUrl: './foehn-input-foreign-locality.component.html',\n styleUrls: ['./foehn-input-foreign-locality.component.css'],\n providers: [\n {\n provide: FoehnInputComponent,\n useExisting: forwardRef(() => FoehnInputForeignLocalityComponent),\n multi: true\n }\n ]\n})\nexport class FoehnInputForeignLocalityComponent extends FoehnInputComponent<Locality> {\n @Input()\n localityRequired: boolean;\n\n @Input()\n zipCodeRequired: boolean;\n\n zipCode: string;\n longName: string;\n\n updateLocality(): void {\n const validValue = this.getValidValue();\n if (typeof validValue !== 'undefined') {\n this.updateNgModel(validValue);\n }\n }\n\n handleUserInput(): void {\n const validValue = this.getValidValue();\n if (typeof validValue !== 'undefined') {\n this.handleChange(validValue);\n }\n }\n\n onModelChange(value: Locality): void {\n if (value) {\n this.zipCode = value.zipCode;\n this.longName = value.longName;\n } else if (!value) {\n this.zipCode = null;\n this.longName = null;\n }\n }\n\n isRequired(): boolean {\n return this.required || this.zipCodeRequired || this.localityRequired;\n }\n\n private getValidValue(): Locality | null | undefined {\n if (this.isEmpty(this.zipCode) && this.isEmpty(this.longName)) {\n if (this.model_ !== undefined) {\n return null;\n }\n\n return undefined;\n }\n return { zipCode: this.zipCode, longName: this.longName };\n }\n}\n","<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <fieldset\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n >\n <legend *ngIf=\"!!label\" [ngClass]=\"isLabelSrOnly ? 'sr-only' : 'vd-p'\">\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!isRequired() && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </legend>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildId() + 'Help'\"\n class=\"text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <foehn-input-text\n [name]=\"name + '.zipCode'\"\n [label]=\"\n 'foehn-input-foreign-locality.zipCode.label' | fromDictionary\n \"\n [(model)]=\"zipCode\"\n (modelChange)=\"updateLocality()\"\n [required]=\"zipCodeRequired\"\n (userInput)=\"handleUserInput()\"\n [disabled]=\"disabled\"\n [autocomplete]=\"'postal-code'\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n ></foehn-input-text>\n\n <foehn-input-text\n [name]=\"name + '.longName'\"\n [label]=\"\n 'foehn-input-foreign-locality.locality.label' | fromDictionary\n \"\n [(model)]=\"longName\"\n (modelChange)=\"updateLocality()\"\n [required]=\"localityRequired\"\n (userInput)=\"handleUserInput()\"\n [disabled]=\"disabled\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n ></foehn-input-text>\n </fieldset>\n</div>\n","import { Component, forwardRef } from '@angular/core';\nimport { FoehnInputComponent } from '../foehn-input/foehn-input.component';\nimport { Street } from './address.type';\n\n@Component({\n selector: 'foehn-input-foreign-street',\n templateUrl: './foehn-input-foreign-street.component.html',\n styleUrls: ['./foehn-input-foreign-street.component.css'],\n providers: [\n {\n provide: FoehnInputComponent,\n useExisting: forwardRef(() => FoehnInputForeignStreetComponent),\n multi: true\n }\n ]\n})\nexport class FoehnInputForeignStreetComponent extends FoehnInputComponent<Street> {\n longName: string;\n\n updateStreet(): void {\n const validValue = this.getValidValue();\n if (typeof validValue !== 'undefined') {\n this.updateNgModel(validValue);\n }\n }\n\n handleUserInput(): void {\n const validValue = this.getValidValue();\n if (typeof validValue !== 'undefined') {\n this.handleChange(validValue);\n }\n }\n\n onModelChange(value: Street): void {\n if (value) {\n this.longName = value.longName;\n } else if (!value) {\n this.longName = null;\n }\n }\n\n private getValidValue(): Street | null | undefined {\n if (this.isEmpty(this.longName)) {\n if (this.model_ !== undefined) {\n return null;\n }\n\n return undefined;\n }\n return { estrid: null, longName: this.longName };\n }\n}\n","<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <fieldset\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n >\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <foehn-input-text\n [label]=\"label\"\n [name]=\"name + '.longName'\"\n [(model)]=\"longName\"\n (modelChange)=\"updateStreet()\"\n [required]=\"required\"\n [helpText]=\"helpText\"\n (userInput)=\"handleUserInput()\"\n [disabled]=\"disabled\"\n [isLabelSrOnly]=\"isLabelSrOnly\"\n [autocomplete]=\"'address-line1'\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n >\n <ng-content></ng-content>\n </foehn-input-text>\n </fieldset>\n</div>\n","import {\n Component,\n forwardRef,\n Input,\n NgZone,\n OnInit,\n ViewChild\n} from '@angular/core';\nimport { FoehnInputComponent } from '../foehn-input/foehn-input.component';\nimport { Address, Country, Locality, Street } from './address.type';\nimport { HttpClient } from '@angular/common/http';\nimport { BehaviorSubject, combineLatest, Observable, of } from 'rxjs';\nimport {\n debounceTime,\n distinctUntilChanged,\n first,\n map,\n shareReplay,\n switchMap\n} from 'rxjs/operators';\nimport { FoehnInputForeignLocalityComponent } from './foehn-input-foreign-locality.component';\nimport { FoehnInputForeignStreetComponent } from './foehn-input-foreign-street.component';\nimport { FoehnInputTextComponent } from '../foehn-input/foehn-input-text.component';\n\n// eslint-disable max-classes-per-file\nexport const SWISS_ISO_ID = 'CH';\n\nexport class StreetNumber {\n name: string;\n}\n\n@Component({\n selector: 'foehn-input-address',\n templateUrl: './foehn-input-address.component.html',\n providers: [\n {\n provide: FoehnInputComponent,\n useExisting: forwardRef(() => FoehnInputAddressComponent),\n multi: true\n }\n ]\n})\nexport class FoehnInputAddressComponent\n extends FoehnInputComponent<Address>\n implements OnInit {\n @ViewChild(FoehnInputForeignLocalityComponent, { static: false })\n foreignLocalityComponent: FoehnInputForeignLocalityComponent;\n\n @ViewChild(FoehnInputForeignStreetComponent, { static: false })\n foreignStreetComponent: FoehnInputForeignStreetComponent;\n\n @ViewChild('foreignHouseNumber', { static: false })\n foreignHouseNumber: FoehnInputTextComponent;\n\n @Input()\n countriesUrl = 'api/refinf/countries';\n\n @Input()\n isOnlySwiss = true;\n\n @Input()\n showPostOfficeBoxText = false;\n\n @Input()\n showAdressLines = true;\n\n @Input()\n showAdressLine1 = true;\n\n @Input()\n showAdressLine2 = true;\n\n @Input()\n specifiedCanton: string;\n\n @Input()\n countryRequired = true;\n\n @Input()\n swissNpaLocalityRequired = true;\n\n @Input()\n streetRequired = true;\n\n @Input()\n streetNumberRequired = false;\n\n @Input()\n foreignZipCodeRequired = true;\n\n @Input()\n foreignLocalityRequired = true;\n\n @Input()\n foreignStreetRequired = true;\n\n @Input()\n foreignStreetNumberRequired = false;\n\n @Input()\n postOfficeBoxTextRequired = false;\n\n @Input()\n addressLine1Required = false;\n\n @Input()\n addressLine2Required = false;\n\n @Input()\n withCompanyLocalities = false;\n\n country: Country;\n locality: Locality;\n street: Street;\n houseNumber: string;\n postOfficeBoxText: string;\n addressLine1: string;\n addressLine2: string;\n\n countries: Observable<Country[]>;\n localities: Observable<Locality[]>;\n streets: Observable<Street[]>;\n streetNumbers: Observable<StreetNumber[]>;\n\n private iso2IdSubject = new BehaviorSubject<string>(null);\n private zipCodeIdSubject = new BehaviorSubject<number>(null);\n private estrIdSubject = new BehaviorSubject<number>(null);\n\n constructor(private httpClient: HttpClient, private ngZone: NgZone) {\n super();\n }\n\n identity = <T>(n: T): T => n;\n countryIdentity = (country: Country): string => country.iso2Id;\n localityIdentity = (loc: Locality): number => loc.postalLocalityHistoryId;\n streetIdentity = (street: Street): number => street.estrid;\n streetGenerator = (longName: string): Street => ({\n estrid: null,\n longName\n });\n\n ngOnInit(): void {\n super.ngOnInit();\n\n this.countries = this.getCountries();\n\n this.localities = this.iso2IdSubject.pipe(\n distinctUntilChanged(),\n // The list of localities, or an empty array as the default value.\n switchMap(iso2Id => this.getLocalities(iso2Id)),\n shareReplay(1)\n );\n\n this.streets = combineLatest([\n this.zipCodeIdSubject,\n this.localities\n ]).pipe(\n // The zipCodeId when locality changes or match locality (postalLocalityHistoryId) from model\n map(\n ([zipCodeId, localities]) =>\n zipCodeId ||\n this.extractLocalityZipCodeId(localities, this.locality)\n ),\n debounceTime(0),\n distinctUntilChanged(),\n // The list of streets or a default value to an empty array\n switchMap(zipCodeId => this.getStreetsFor(zipCodeId)),\n shareReplay(1)\n );\n\n this.streetNumbers = combineLatest([\n this.estrIdSubject,\n this.streets\n ]).pipe(\n // The estrid when street changes or match street (longName) from model\n map(\n ([estrid, streets]) =>\n estrid || this.extractStreetEstrid(streets, this.street)\n ),\n debounceTime(0),\n distinctUntilChanged(),\n // The list of streets or a default value to an empty array\n switchMap(estrid => this.getStreetNumberFor(estrid)),\n // Some street might not have an name, RefInf sometimes returns weird data.\n map(values => values.filter(streetNumber => !!streetNumber.name)),\n map(values => {\n const collator = new Intl.Collator(undefined, {\n numeric: true,\n sensitivity: 'base'\n });\n return values.sort((a, b) => collator.compare(a.name, b.name));\n }),\n shareReplay(1)\n );\n\n this.ngZone.onMicrotaskEmpty.pipe(first()).subscribe(() => {\n setTimeout(() => {\n this.clearAutocompletesWhenCountryIsUnappropriatedToComponentConfiguration();\n this.setDefaultCountry();\n });\n });\n }\n\n updateAddress(): void {\n const validValue = this.getValidValue();\n if (typeof validValue !== 'undefined') {\n this.updateNgModel(validValue);\n }\n }\n\n handleUserInput(): void {\n const validValue = this.getValidValue();\n if (typeof validValue !== 'undefined') {\n this.handleChange(validValue);\n }\n }\n\n onModelChange(value: Address): void {\n if (value) {\n this.country = value.country;\n this.locality = value.locality;\n this.street = value.street;\n this.houseNumber = value.houseNumber;\n this.postOfficeBoxText = value.postOfficeBoxText;\n this.addressLine1 = value.addressLine1;\n this.addressLine2 = value.addressLine2;\n } else if (!value) {\n this.locality = null;\n this.street = null;\n this.houseNumber = null;\n this.postOfficeBoxText = null;\n this.addressLine1 = null;\n this.addressLine2 = null;\n }\n }\n\n isSwiss(): boolean {\n return !!(\n this.isOnlySwiss ||\n (this.country && this.country.iso2Id === SWISS_ISO_ID)\n );\n }\n\n userInputCountryOrLocality(emptyLocality: boolean): void {\n if (emptyLocality) {\n this.locality = null;\n this.postOfficeBoxText = null;\n this.addressLine1 = null;\n this.addressLine2 = null;\n // subcomponents will be enabled but should not display errors yet\n this.foreignLocalityComponent\n ?.getNativeInputList()\n .forEach(ngModel => ngModel.control.markAsDirty());\n this.foreignStreetComponent\n ?.getNativeInputList()\n .forEach(ngModel => ngModel.control.markAsDirty());\n this.foreignHouseNumber\n ?.getNativeInputList()\n .forEach(ngModel => ngModel.control.markAsDirty());\n }\n\n this.street = null;\n this.houseNumber = null;\n\n this.updateAddress();\n this.handleUserInput();\n }\n\n countryUpdated(country: Country): void {\n // No double-binding on country in view to ensure we update properly model\n this.country = country;\n this.updateAddress();\n\n if (!country) {\n return;\n }\n\n const { iso2Id } = country;\n this.iso2IdSubject.next(iso2Id);\n }\n\n getLocalityDisplayedName(locality: Locality): string | void {\n if (!locality) {\n return;\n }\n\n return `${locality.zipCode} ${locality.longName}`;\n }\n\n localityUpdated(locality: Locality): void {\n // No double-binding on locality in view to ensure we update properly model\n this.locality = locality;\n this.updateAddress();\n\n if (!locality) {\n return;\n }\n\n const { zipCodeId } = locality;\n this.zipCodeIdSubject.next(zipCodeId);\n }\n\n streetUpdated(street: Street): void {\n // No double-binding on street in view to ensure we update properly model\n this.street = street;\n this.updateAddress();\n\n if (!street) {\n return;\n }\n\n const { estrid } = street;\n this.estrIdSubject.next(estrid);\n }\n\n private getCountries(): Observable<Country[]> {\n return this.httpClient.get<Country[]>(this.countriesUrl);\n }\n\n private getLocalities(iso2Id: string): Observable<Locality[]> {\n if (iso2Id !== SWISS_ISO_ID) {\n return of([]);\n }\n\n const queryParams = !!this.withCompanyLocalities\n ? '?withCompanyLocalities=true'\n : '';\n\n if (!!this.specifiedCanton) {\n return this.httpClient.get<Locality[]>(\n `api/refinf/locality/${this.specifiedCanton}${queryParams}`\n );\n } else {\n return this.httpClient.get<Locality[]>(\n `api/refinf/locality/all${queryParams}`\n );\n }\n }\n\n private getStreetNumberFor(estrid: number): Observable<StreetNumber[]> {\n if (!estrid) {\n return of([]);\n }\n\n const url = `api/refinf/addresses/${estrid}`;\n return this.httpClient.get<StreetNumber[]>(url);\n }\n\n private getStreetsFor(zipCodeId: number): Observable<Street[]> {\n if (!zipCodeId) {\n return of([]);\n }\n\n const url = `api/refinf/streets/${zipCodeId}`;\n return this.httpClient.get<Street[]>(url);\n }\n\n private clearAutocompletesWhenCountryIsUnappropriatedToComponentConfiguration(): void {\n if (this.isModelEmpty()) {\n return;\n }\n\n if (\n this.isOnlySwiss &&\n this.country &&\n this.country.iso2Id !== SWISS_ISO_ID\n ) {\n // Do not remove this warning. Needed for debugging at all time.\n console.warn(\n // eslint-disable-next-line max-len\n `Country address was '${this.country.iso2Id}'. Only swiss is asked in component 'foehn-input-address' configuration. Address model resetted.`\n );\n this.clearAutocompletes();\n }\n }\n\n private setDefaultCountry(): void {\n if (this.isOnlySwiss || !this.country || !this.country.iso2Id) {\n this.country = {\n iso2Id: SWISS_ISO_ID,\n shortNameFr: 'Suisse'\n };\n this.iso2IdSubject.next(SWISS_ISO_ID);\n\n this.updateAddress();\n }\n }\n\n private clearAutocompletes(): void {\n this.country = null;\n this.street = null;\n this.locality = null;\n this.houseNumber = null;\n // No updateAddress() here because done in setDefaultCountry()\n }\n\n private extractLocalityZipCodeId(\n localities: Locality[],\n localityToMatch: Locality\n ): number {\n if (localityToMatch && localityToMatch.postalLocalityHistoryId) {\n const matched = localities.find(\n (locality: Locality) =>\n locality.postalLocalityHistoryId ===\n localityToMatch.postalLocalityHistoryId\n );\n if (matched) {\n return matched.zipCodeId;\n }\n }\n\n return null;\n }\n\n private extractStreetEstrid(\n streets: Street[],\n streetToMatch: Street\n ): number {\n if (streetToMatch && streetToMatch.longName) {\n const matched = streets.find(\n (street: Street) => street.longName === streetToMatch.longName\n );\n if (matched) {\n return matched.estrid;\n }\n }\n\n return null;\n }\n\n private getValidValue(): Address | null | undefined {\n if (this.isModelEmpty()) {\n if (this.model_ !== undefined) {\n return null;\n }\n\n return undefined;\n }\n return {\n country: this.country,\n locality: this.getValidLocality(this.locality),\n street: this.street,\n houseNumber: this.houseNumber,\n postOfficeBoxText: this.postOfficeBoxText,\n addressLine1: this.addressLine1,\n addressLine2: this.addressLine2\n };\n }\n\n private getValidLocality(value: Locality): Locality {\n // PRESTAKIT-352: Need a fake 'postalLocalityHistoryId' for individual errors on 'zipCode' and 'longName'\n if (!this.isSwiss() && !value) {\n return { postalLocalityHistoryId: -1 };\n }\n\n return value;\n }\n\n private isModelEmpty(): boolean {\n return (\n this.isEmpty(this.country) &&\n this.isEmpty(this.locality) &&\n this.isEmpty(this.street) &&\n this.isEmpty(this.houseNumber) &&\n this.isEmpty(this.postOfficeBoxText) &&\n this.isEmpty(this.addressLine1) &&\n this.isEmpty(this.addressLine2)\n );\n }\n}\n","<div\n [attr.id]=\"buildId() + 'Container'\"\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [tabIndex]=\"-1\"\n>\n <fieldset\n class=\"mb-3\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n >\n <legend *ngIf=\"!!label\" [ngClass]=\"isLabelSrOnly ? 'sr-only' : 'vd-p'\">\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </legend>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildId() + 'Help'\"\n class=\"text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <foehn-autocomplete\n *ngIf=\"!isOnlySwiss\"\n [label]=\"'foehn-input-address.country.label' | fromDictionary\"\n [elements]=\"countries | async\"\n elementLabel=\"shortNameFr\"\n [elementValue]=\"identity\"\n [elementValueIdentity]=\"countryIdentity\"\n (modelChange)=\"countryUpdated($event)\"\n (userInput)=\"userInputCountryOrLocality(true)\"\n [model]=\"country\"\n [name]=\"name + '.country'\"\n [required]=\"countryRequired\"\n [disabled]=\"disabled\"\n ></foehn-autocomplete>\n\n <ng-container *ngIf=\"isSwiss()\">\n <foehn-autocomplete\n [label]=\"'foehn-input-address.locality.label' | fromDictionary\"\n [elements]=\"localities | async\"\n [elementLabel]=\"getLocalityDisplayedName\"\n [elementValue]=\"identity\"\n [elementValueIdentity]=\"localityIdentity\"\n (modelChange)=\"localityUpdated($event)\"\n (userInput)=\"userInputCountryOrLocality(false)\"\n [model]=\"locality\"\n [name]=\"name + '.locality'\"\n [required]=\"swissNpaLocalityRequired\"\n [allElementDisabled]=\"!country\"\n [disabled]=\"disabled\"\n ></foehn-autocomplete>\n\n <foehn-autocomplete\n [label]=\"'foehn-input-address.street.label' | fromDictionary\"\n [elements]=\"streets | async\"\n elementLabel=\"longName\"\n [elementValue]=\"identity\"\n [elementValueIdentity]=\"streetIdentity\"\n (modelChange)=\"streetUpdated($event)\"\n [model]=\"street\"\n [name]=\"name + '.street'\"\n [allowCustomValue]=\"true\"\n [customValueModelGenerator]=\"streetGenerator\"\n [required]=\"streetRequired\"\n [helpText]=\"\n 'foehn-input-address.street.help-text' | fromDictionary\n \"\n [allElementDisabled]=\"!country\"\n (userInput)=\"handleUserInput()\"\n [disabled]=\"disabled\"\n ></foehn-autocomplete>\n\n <foehn-autocomplete\n [label]=\"\n 'foehn-input-address.houseNumber.label' | fromDictionary\n \"\n [elements]=\"streetNumbers | async\"\n elementLabel=\"name\"\n elementValue=\"name\"\n [(model)]=\"houseNumber\"\n [name]=\"name + '.houseNumber'\"\n [allowCustomValue]=\"true\"\n [helpText]=\"\n 'foehn-input-address.houseNumber.help-text' | fromDictionary\n \"\n [allElementDisabled]=\"!country\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n [required]=\"streetNumberRequired\"\n [disabled]=\"disabled\"\n ></foehn-autocomplete>\n </ng-container>\n\n <ng-container *ngIf=\"!isSwiss()\">\n <!--\n Component <foehn-input-foreign-locality> is special because we use the same model when swiss or foreigner.\n To do so, we need:\n - Errors will be bind on 'locality' when NULL or on 'zipCode' and 'longName' model inside component when EMPTY\n - Hide label from component because we need label from children to be displayed (isLabelSrOnly: true)\n - required and disabled params are transmitted to children\n -->\n <foehn-input-foreign-locality\n [label]=\"'foehn-input-address.locality.label' | fromDictionary\"\n [name]=\"name + '.locality'\"\n [(model)]=\"locality\"\n [zipCodeRequired]=\"foreignZipCodeRequired\"\n [localityRequired]=\"foreignLocalityRequired\"\n [isLabelSrOnly]=\"true\"\n [disabled]=\"!country || disabled\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n ></foehn-input-foreign-locality>\n <!--\n Component <foehn-input-foreign-street> is special because we use the same model when swiss or foreigner.\n To do so, we need:\n - Errors will be bind on 'street' when NULL or on 'longName' model inside component when EMPTY\n - required, helpText, isLabelSrOnly and disabled params are transmitted to children\n -->\n <foehn-input-foreign-street\n [label]=\"'foehn-input-address.street.label' | fromDictionary\"\n [name]=\"name + '.street'\"\n [(model)]=\"street\"\n [required]=\"foreignStreetRequired\"\n [helpText]=\"\n 'foehn-input-address.street.help-text' | fromDictionary\n \"\n [disabled]=\"!country || disabled\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n ></foehn-input-foreign-street>\n\n <foehn-input-text\n #foreignHouseNumber\n [label]=\"\n 'foehn-input-address.houseNumber.label' | fromDictionary\n \"\n [name]=\"name + '.houseNumber'\"\n [(model)]=\"houseNumber\"\n [helpText]=\"\n 'foehn-input-address.houseNumber.help-text' | fromDictionary\n \"\n [disabled]=\"!country || disabled\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n [required]=\"foreignStreetNumberRequired\"\n ></foehn-input-text>\n </ng-container>\n\n <foehn-input-text\n *ngIf=\"showPostOfficeBoxText\"\n [(model)]=\"postOfficeBoxText\"\n [helpText]=\"\n 'foehn-input-address.postOfficeBoxText.help-text'\n | fromDictionary\n \"\n [label]=\"\n 'foehn-input-address.postOfficeBoxText.label' | fromDictionary\n \"\n [name]=\"name + '.postOfficeBoxText'\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n [required]=\"postOfficeBoxTextRequired\"\n [disabled]=\"disabled\"\n ></foehn-input-text>\n\n <foehn-input-text\n *ngIf=\"showAdressLines && showAdressLine1\"\n [(model)]=\"addressLine1\"\n [label]=\"'foehn-input-address.addressLine1.label' | fromDictionary\"\n [name]=\"name + '.addressLine1'\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n [required]=\"addressLine1Required\"\n [autocomplete]=\"'address-line2'\"\n [disabled]=\"disabled\"\n ></foehn-input-text>\n\n <foehn-input-text\n *ngIf=\"showAdressLines && showAdressLine2\"\n [(model)]=\"addressLine2\"\n [label]=\"'foehn-input-address.addressLine2.label' | fromDictionary\"\n [name]=\"name + '.addressLine2'\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n [required]=\"addressLine2Required\"\n [autocomplete]=\"'address-line3'\"\n [disabled]=\"disabled\"\n ></foehn-input-text>\n </fieldset>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';\nimport { FoehnAutocompleteModule } from '../foehn-autocomplete/foehn-autocomplete.module';\nimport { FoehnInputModule } from '../foehn-input/foehn-input.module';\nimport { FoehnInputAddressComponent } from './foehn-input-address.component';\nimport { FoehnDisplayAddressComponent } from './foehn-display-address.component';\nimport { FoehnInputForeignLocalityComponent } from './foehn-input-foreign-locality.component';\nimport { FoehnInputForeignStreetComponent } from './foehn-input-foreign-street.component';\nimport { FoehnValidationAlertsModule } from '../foehn-validation-alerts/foehn-validation-alerts.module';\n\n@NgModule({\n imports: [\n CommonModule,\n SdkDictionaryModule,\n FoehnAutocompleteModule,\n FoehnInputModule,\n FoehnValidationAlertsModule\n ],\n declarations: [\n FoehnInputAddressComponent,\n FoehnDisplayAddressComponent,\n FoehnInputForeignLocalityComponent,\n FoehnInputForeignStreetComponent\n ],\n exports: [\n FoehnInputAddressComponent,\n FoehnDisplayAddressComponent,\n FoehnInputForeignLocalityComponent,\n FoehnInputForeignStreetComponent\n ]\n})\nexport class FoehnAddressModule {}\n","// eslint-disable max-classes-per-file\nexport class Street {\n estrid?: number;\n longName: string;\n}\n\nexport class Locality {\n postalLocalityHistoryId?: number;\n zipCode?: string; // zipCode is a string and not a Long because foreign zip code can be anything\n longName?: string;\n zipCodeId?: number;\n}\n\nexport class Country {\n iso2Id: string;\n shortNameFr: string;\n}\n\nexport class Address {\n addressLine1?: string;\n addressLine2?: string;\n postOfficeBoxText?: string;\n postOfficeBoxNumber?: string;\n street?: Street;\n houseNumber?: string;\n dwellingNumber?: string;\n locality?: Locality;\n country?: Country;\n}\n","export class FormSelectOption {\n label: string;\n value: string;\n disabled?: boolean;\n}\n","import { Component, forwardRef, OnInit } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { FoehnInputStringComponent } from '../foehn-input/foehn-input-string.component';\nimport { FoehnInputComponent } from '../foehn-input/foehn-input.component';\n\n@Component({\n selector: 'foehn-input-nav13',\n templateUrl: './foehn-input-nav13.component.html',\n providers: [\n {\n provide: FoehnInputComponent,\n useExisting: forwardRef(() => FoehnInputNav13Component),\n multi: true\n }\n ]\n})\nexport class FoehnInputNav13Component\n extends FoehnInputStringComponent\n implements OnInit {\n PREFIX_NAVS = '756';\n part2: string;\n part3: string;\n part4: string;\n\n ngOnInit(): void {\n super.ngOnInit();\n if (!this.helpText) {\n this.helpText = 'Par exemple, 756 1234 5678 97';\n }\n if (!this.label) {\n this.label = 'Votre numéro <abbr title=\"Numéro AVS\">AVS</abbr>';\n }\n }\n\n updateNavs(): void {\n const validValue = this.getValidValue();\n if (typeof validValue !== 'undefined') {\n this.updateNgModel(validValue);\n }\n }\n\n handleUserInput(): void {\n const validValue = this.getValidValue();\n if (typeof validValue !== 'undefined') {\n this.handleChange(validValue);\n }\n }\n\n onModelChange(value: string): void {\n if (!!value) {\n this.splitValue(value);\n } else {\n this.part2 = null;\n this.part3 = null;\n this.part4 = null;\n }\n }\n\n displayClearButton(): Observable<boolean> {\n // Override the clear button fonction not worry about the model at this stage.\n return of(this.clearButton);\n }\n\n private splitValue(value: string): void {\n if (value.length === 13 && !value.includes('.')) {\n this.part2 = value.substr(3, 4);\n this.part3 = value.substr(7, 4);\n this.part4 = value.substr(11, 2);\n } else {\n const splitted = value.split('.');\n this.part2 = splitted[1];\n this.part3 = splitted[2];\n this.part4 = splitted[3];\n }\n }\n\n private getValidValue(): string | null | undefined {\n if (!this.part2 && !this.part3 && !this.part4) {\n if (this.model_ !== undefined) {\n return null;\n }\n\n return undefined;\n }\n this.part2 = this.part2 || '';\n this.part3 = this.part3 || '';\n this.part4 = this.part4 || '';\n return `${this.PREFIX_NAVS}.${this.part2}.${this.part3}.${this.part4}`;\n }\n}\n","<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <fieldset\n class=\"mb-3\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n >\n <legend\n [attr.for]=\"buildChildId()\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : 'vd-p'\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </legend>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <div class=\"vd-form-flex\">\n <div\n [ngClass]=\"{\n 'vd-form-flex__item--4-char-width':\n displayClearButton() | async,\n 'vd-form-flex__item--3-char-width': !(\n displayClearButton() | async\n )\n }\"\n class=\"vd-form-flex__item\"\n >\n <div class=\"form-group\">\n <label\n [attr.for]=\"buildId() + '_part1Child'\"\n class=\"sr-only\"\n >\n Code du pays\n </label>\n <small\n [id]=\"buildId() + '_part1ChildHelp'\"\n class=\"form-text text-secondary\"\n >\n <span class=\"sr-only\">\n Etant obligatoirement un numéro AVS suisse, ce\n champs est prérempli\n </span>\n </small>\n\n <foehn-input-number\n [name]=\"name + '_part1'\"\n [id]=\"buildId() + '_part1'\"\n [model]=\"PREFIX_NAVS\"\n [maxlength]=\"3\"\n [autocomplete]=\"'off'\"\n [clearButton]=\"displayClearButton() | async\"\n [disabled]=\"true\"\n ></foehn-input-number>\n </div>\n </div>\n\n <div class=\"vd-form-flex__item vd-form-flex__item--4-char-width\">\n <div class=\"form-group\">\n <label\n [attr.for]=\"buildId() + '_part2Child'\"\n class=\"sr-only\"\n >\n Premiers chiffres aléatoires et anonymes\n </label>\n <small\n [id]=\"buildId() + '_part2ChildHelp'\"\n class=\"form-text text-secondary\"\n >\n <span class=\"sr-only\">\n Saisir quatres chiffres :\n <abbr title=\"Exemple\">Ex.</abbr>\n : 1234\n </span>\n </small>\n\n <foehn-input-number\n [name]=\"name + '_part2'\"\n [id]=\"buildId() + '_part2'\"\n [(model)]=\"part2\"\n (modelChange)=\"updateNavs()\"\n [maxlength]=\"4\"\n [autocomplete]=\"'off'\"\n [clearButton]=\"displayClearButton() | async\"\n (userInput)=\"handleUserInput()\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n [disabled]=\"disabled\"\n #entryComponent\n ></foehn-input-number>\n </div>\n </div>\n\n <div class=\"vd-form-flex__item vd-form-flex__item--4-char-width\">\n <div class=\"form-group\">\n <label\n [attr.for]=\"buildId() + '_part3Child'\"\n class=\"sr-only\"\n >\n Deuxièmes chiffres aléatoires et anonymes\n </label>\n <small\n [id]=\"buildId() + '_part3ChildHelp'\"\n class=\"form-text text-secondary\"\n >\n <span class=\"sr-only\">\n Saisir quatres chiffres :\n <abbr title=\"Exemple\">Ex.</abbr>\n : 5678\n </span>\n </small>\n\n <foehn-input-number\n [name]=\"name + '_part3'\"\n [id]=\"buildId() + '_part3'\"\n [(model)]=\"part3\"\n (modelChange)=\"updateNavs()\"\n [maxlength]=\"4\"\n [autocomplete]=\"'off'\"\n [clearButton]=\"displayClearButton() | async\"\n (userInput)=\"handleUserInput()\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n [disabled]=\"disabled\"\n ></foehn-input-number>\n </div>\n </div>\n\n <div\n [ngClass]=\"{\n 'vd-form-flex__item--3-char-width':\n displayClearButton() | async,\n 'vd-form-flex__item--2-char-width': !(\n displayClearButton() | async\n )\n }\"\n class=\"vd-form-flex__item vd-form-flex__item--3-char-width\"\n >\n <div class=\"form-group\">\n <label\n [attr.for]=\"buildId() + '_part4Child'\"\n class=\"sr-only\"\n >\n Chiffre aléatoire et anonyme et numéro de contrôle\n </label>\n <small\n [id]=\"buildId() + '_part4ChildHelp'\"\n class=\"form-text text-secondary\"\n >\n <span class=\"sr-only\">\n Saisir deux chiffres :\n <abbr title=\"Exemple\">Ex.</abbr>\n : 97\n </span>\n </small>\n\n <foehn-input-number\n [name]=\"name + '_part4'\"\n [id]=\"buildId() + '_part4'\"\n [(model)]=\"part4\"\n (modelChange)=\"updateNavs()\"\n [maxlength]=\"2\"\n [autocomplete]=\"'off'\"\n [clearButton]=\"displayClearButton() | async\"\n (userInput)=\"handleUserInput()\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n [disabled]=\"disabled\"\n ></foehn-input-number>\n </div>\n </div>\n </div>\n </fieldset>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FoehnInputNav13Component } from './foehn-input-nav13.component';\nimport { FoehnValidationAlertsModule } from '../foehn-validation-alerts/foehn-validation-alerts.module';\nimport { FoehnInputModule } from '../foehn-input/foehn-input.module';\nimport { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';\n\n@NgModule({\n imports: [\n CommonModule,\n FoehnValidationAlertsModule,\n FoehnInputModule,\n SdkDictionaryModule\n ],\n declarations: [FoehnInputNav13Component],\n exports: [FoehnInputNav13Component]\n})\nexport class FoehnInputNav13Module {}\n","import { Component, forwardRef } from '@angular/core';\nimport { FoehnInputComponent } from '../foehn-input/foehn-input.component';\n\n@Component({\n selector: 'foehn-boolean-checkbox',\n templateUrl: './foehn-boolean-checkbox.component.html',\n providers: [\n {\n provide: FoehnInputComponent,\n useExisting: forwardRef(() => FoehnBooleanCheckboxComponent),\n multi: true\n }\n ]\n})\nexport class FoehnBooleanCheckboxComponent extends FoehnInputComponent<boolean> {}\n","<div\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n class=\"form-group\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <div class=\"form-check\">\n <input\n type=\"checkbox\"\n class=\"form-check-input\"\n [ngModel]=\"model\"\n (ngModelChange)=\"updateNgModel($event)\"\n [name]=\"buildChildName()\"\n [attr.name]=\"buildChildName()\"\n [attr.id]=\"buildChildId()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n (change)=\"handleChange(model)\"\n #entryComponent\n />\n <label class=\"form-check-label\" [for]=\"buildChildId()\">\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </label>\n </div>\n</div>\n","import { Component, forwardRef, Input } from '@angular/core';\nimport { FoehnInputComponent } from '../foehn-input/foehn-input.component';\n\n@Component({\n selector: 'foehn-boolean-radio',\n templateUrl: './foehn-boolean-radio.component.html',\n providers: [\n {\n provide: FoehnInputComponent,\n useExisting: forwardRef(() => FoehnBooleanRadioComponent),\n multi: true\n }\n ]\n})\nexport class FoehnBooleanRadioComponent extends FoehnInputComponent<boolean> {\n @Input()\n trueLabel = 'Oui';\n\n @Input()\n falseLabel = 'Non';\n}\n","<div\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n class=\"form-group\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <fieldset [attr.aria-describedby]=\"getDescribedBy()\">\n <legend *ngIf=\"!!label\" [ngClass]=\"isLabelSrOnly ? 'sr-only' : 'vd-p'\">\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </legend>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <div class=\"d-flex\">\n <div class=\"form-check\">\n <input\n type=\"radio\"\n class=\"form-check-input\"\n [ngModel]=\"model\"\n (ngModelChange)=\"updateNgModel($event)\"\n [name]=\"buildChildName('True')\"\n [attr.name]=\"buildChildName('True')\"\n [value]=\"true\"\n [attr.id]=\"buildChildId('True')\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n (change)=\"handleChange(true)\"\n #entryComponent\n />\n <label\n class=\"form-check-label\"\n [for]=\"buildChildId('True')\"\n [innerHTML]=\"trueLabel\"\n ></label>\n </div>\n\n <div class=\"form-check ml-2\">\n <input\n type=\"radio\"\n class=\"form-check-input\"\n [ngModel]=\"model\"\n (ngModelChange)=\"updateNgModel($event)\"\n [name]=\"buildChildName('False')\"\n [attr.name]=\"buildChildName('False')\"\n [value]=\"false\"\n [attr.id]=\"buildChildId('False')\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n (change)=\"handleChange(false)\"\n />\n <label\n class=\"form-check-label\"\n [for]=\"buildChildId('False')\"\n [innerHTML]=\"falseLabel\"\n ></label>\n </div>\n </div>\n </fieldset>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { FoehnBooleanCheckboxComponent } from './foehn-boolean-checkbox.component';\nimport { FoehnValidationAlertsModule } from '../foehn-validation-alerts/foehn-validation-alerts.module';\nimport { FoehnBooleanRadioComponent } from './foehn-boolean-radio.component';\nimport { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';\n\n@NgModule({\n imports: [\n CommonModule,\n FoehnValidationAlertsModule,\n FormsModule,\n SdkDictionaryModule\n ],\n declarations: [FoehnBooleanCheckboxComponent, FoehnBooleanRadioComponent],\n exports: [FoehnBooleanCheckboxComponent, FoehnBooleanRadioComponent]\n})\nexport class FoehnBooleanModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'formatIde' })\nexport class FormatIdePipe implements PipeTransform {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n transform(value: string, args: string[]): string {\n if (!value) {\n return '-';\n }\n\n const trimmedValue = value.replace('-', '').replace('.', '');\n\n if (trimmedValue.length !== 12) {\n return value;\n }\n\n return `${trimmedValue.substring(0, 3)}-${trimmedValue.substring(\n 3,\n 6\n )}.${trimmedValue.substring(6, 9)}.${trimmedValue.substring(9, 12)}`;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { DatePipe, registerLocaleData } from '@angular/common';\n\nimport localeFr from '@angular/common/locales/fr';\nimport dayjs from 'dayjs';\nimport isToday from 'dayjs/plugin/isToday';\n\ndayjs.extend(isToday);\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DateHelper {\n private locale = 'fr-CH';\n private dateFormat = 'dd.MM.yyyy';\n private dateTimeFormat = 'dd.MM.yyyy HH:mm:ss';\n private datePipe: DatePipe;\n\n constructor() {\n registerLocaleData(localeFr, 'fr-CH');\n this.datePipe = new DatePipe(this.locale);\n }\n\n private static isValidArray(value: number[]): boolean {\n return (\n !!value &&\n value.length > 2 &&\n !!value[0] &&\n !!value[1] &&\n !!value[2]\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types\n mapToDateFromNumberArray(object: any, ...fieldsNames: string[]): any {\n if (object) {\n fieldsNames.forEach(fieldPath => {\n object[fieldPath] = this.toDateFromNumberArray(\n object[fieldPath]\n );\n });\n }\n return object;\n }\n\n mapAllToDateFromNumberArray(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n objects: any[],\n ...fieldsNames: string[]\n ): // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any[] {\n if (objects) {\n objects.forEach(object => {\n this.mapToDateFromNumberArray(object, ...fieldsNames);\n });\n }\n return objects;\n }\n\n toDateFromNumberArray(dateInArray: number[]): Date {\n if (dateInArray) {\n if (dateInArray.length === 3) {\n return new Date(\n dateInArray[0],\n dateInArray[1] - 1,\n dateInArray[2]\n );\n } else if (dateInArray.length === 5) {\n // because when time is 00:00:00 the array does not contain the seconds.\n return new Date(\n dateInArray[0],\n dateInArray[1] - 1,\n dateInArray[2],\n dateInArray[3],\n dateInArray[4]\n );\n } else if (dateInArray.length >= 6) {\n return new Date(\n dateInArray[0],\n dateInArray[1] - 1,\n dateInArray[2],\n dateInArray[3],\n dateInArray[4],\n dateInArray[5]\n );\n }\n throw new Error(\n `Date in number[] format has wrong number of numbers : ${dateInArray.length}`\n );\n }\n return null;\n }\n\n arrayToDisplayDateDMY(d: number[], showTime: boolean): string | null {\n if (showTime) {\n return this.datePipe.transform(\n this.toDateFromNumberArray(d),\n this.dateTimeFormat\n );\n } else {\n return this.datePipe.transform(\n this.toDateFromNumberArray(d),\n this.dateFormat\n );\n }\n }\n\n toDayjsFromNumberArray(value: number[]): dayjs.Dayjs {\n if (DateHelper.isValidArray(value)) {\n const dateAsString = `${value[0]}-${value[1]}-${value[2]}`;\n return dayjs(dateAsString);\n }\n\n return null;\n }\n\n isValid(value: number[]): boolean {\n return (\n DateHelper.isValidArray(value) &&\n this.toDayjsFromNumberArray(value).isValid()\n );\n }\n\n isToday(value: number[]): boolean {\n return (\n DateHelper.isValidArray(value) &&\n this.toDayjsFromNumberArray(value).isToday()\n );\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DateHelper } from '../sdk-date/date.helper';\n\nconst DATE_LOCALE = 'fr-CH';\n\n@Pipe({ name: 'displayDate' })\nexport class DisplayDatePipe implements PipeTransform {\n constructor(private dateHelper: DateHelper) {}\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n transform(value: Date | number[], showTime: boolean = true): any {\n if (!value) {\n return value;\n }\n\n const isDate = value instanceof Date;\n if (!isDate) {\n return this.transformFromArray(value as number[], showTime);\n }\n\n return this.transformFromDate(value as Date, showTime);\n }\n\n private transformFromDate(value: Date, showTime: boolean): string {\n if (showTime) {\n return value.toLocaleString(DATE_LOCALE);\n } else {\n return value.toLocaleDateString(DATE_LOCALE);\n }\n }\n\n private transformFromArray(value: number[], showTime: boolean): string {\n const date = this.dateHelper.toDateFromNumberArray(value);\n if (value.length === 3 || !showTime) {\n // We only display the date part if the hours and below are not defined.\n return date.toLocaleDateString(DATE_LOCALE);\n }\n\n return date.toLocaleString(DATE_LOCALE);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { CurrencyHelper } from '../sdk-currency/currency.helper';\n\n@Pipe({ name: 'displayCurrency' })\nexport class DisplayCurrencyPipe implements PipeTransform {\n constructor(private currencyHelper: CurrencyHelper) {}\n\n transform(\n value: number | string,\n currency: string = 'CHF',\n fixedDecimalCount: number = null,\n showZero: boolean = true\n ): string {\n return this.currencyHelper.formatCurrency(\n value,\n currency,\n fixedDecimalCount,\n showZero\n );\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { FormatIdePipe } from './formatIde.pipe';\nimport { DisplayDatePipe } from './date.pipe';\nimport { DisplayCurrencyPipe } from './currency.pipe';\n\n@NgModule({\n declarations: [DisplayDatePipe, FormatIdePipe, DisplayCurrencyPipe],\n exports: [DisplayDatePipe, FormatIdePipe, DisplayCurrencyPipe]\n})\nexport class PipeModule {}\n","export class RepriseInfo {\n mobile: string;\n email: string;\n}\n","import { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\nimport { RepriseInfo } from '../reprise-info';\nimport { GesdemActionRecoveryService } from '../gesdem-action-recovery.service';\nimport { filter, first, map, switchMap, tap } from 'rxjs/operators';\nimport { ValidationHandlerService } from '../../validation/validation-handler.service';\nimport { FoehnFormComponent } from '../../foehn-form/foehn-form.component';\nimport { FoehnPageService } from '../../foehn-page/foehn-page.service';\nimport { GesdemEventService } from '../../gesdem/gesdem-event.service';\nimport { GesdemHandlerService } from '../../gesdem/gesdem-handler.service';\nimport { combineLatest, Observable } from 'rxjs';\nimport { ApplicationInfoService } from '../../sdk-appinfo/application-info.service';\nimport { SessionInfo } from '../../sdk-session-info/session-info.service';\nimport { EtapeInfo } from '../../sdk-appinfo/application-info';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'gesdem-action-recovery-registration',\n templateUrl: './gesdem-action-recovery-registration.component.html',\n styleUrls: ['./gesdem-action-recovery-registration.component.css']\n})\nexport class GesdemActionRecoveryRegistrationComponent implements OnInit {\n @Input()\n continueLaterLabel: string;\n\n @ViewChild('modalTrigger')\n modalTrigger: ElementRef;\n\n @ViewChild(FoehnFormComponent)\n form: FoehnFormComponent;\n\n model = new RepriseInfo();\n mailSent = false;\n\n canContinueLater: Observable<boolean>;\n isConnectedCyber: Observable<boolean>;\n\n private isVisible = false;\n\n constructor(\n private actionRecoveryService: GesdemActionRecoveryService,\n private validationHandler: ValidationHandlerService,\n private foehnPageService: FoehnPageService,\n private gesdemEventService: GesdemEventService,\n private gesdemService: GesdemHandlerService,\n private appInfoService: ApplicationInfoService,\n private sessionInfoService: SessionInfo\n ) {}\n\n ngOnInit(): void {\n this.isConnectedCyber = this.sessionInfoService.data.pipe(\n map(sessionInfo => !!sessionInfo && !!sessionInfo.context)\n );\n\n const isConnectedIamAcv = this.sessionInfoService.data.pipe(\n map(sessionInfo => !!sessionInfo && !sessionInfo.context)\n );\n\n this.canContinueLater = combineLatest([\n this.appInfoService.currentEtapeInfo,\n this.isConnectedCyber,\n isConnectedIamAcv\n ]).pipe(\n map(([currentEtapeInfo, isConnectedCyber, connectedIamAcv]) =>\n this.canContinueLaterForEtape(\n currentEtapeInfo,\n isConnectedCyber,\n connectedIamAcv\n )\n )\n );\n }\n\n get isModalVisible(): boolean {\n return this.isVisible;\n }\n\n open(): void {\n this.gesdemEventService\n .formSentObservable()\n .pipe(\n first(),\n filter(resp => !!resp.meta.reference),\n switchMap(() => this.isConnectedCyber)\n )\n .subscribe(isConnectedCyber => {\n this.mailSent = false;\n this.isVisible = true;\n if (!isConnectedCyber) {\n this.actionRecoveryService\n .getDefaultRecoveryValue(this.reference)\n // eslint-disable-next-line rxjs/no-nested-subscribe\n .subscribe(repriseInfo => (this.model = repriseInfo));\n } else {\n this.model = null;\n }\n });\n\n this.foehnPageService.requestFormSave();\n }\n\n close(): void {\n this.updateVisibilityStatus(false);\n }\n\n sendAndClose(): void {\n this.actionRecoveryService\n .registerForRecovery(this.reference, this.model)\n .pipe(\n tap(err => {\n this.form.reset();\n this.validationHandler.shouldDisplayErrors(true);\n this.validationHandler.updateErrors([\n ...err,\n ...this.gesdemService.lastResponse.errors\n ]);\n this.form.focusFirstInError();\n this.mailSent = !err.length;\n })\n )\n .subscribe();\n }\n\n updateVisibilityStatus(status: boolean): void {\n // Store the previous value to handle transitions from one state to another.\n const wasOpen = this.isVisible;\n\n // In case the modal is closed by another mean.\n this.isVisible = status;\n\n // Focus back on the trigger. No need for a setTimeout as the trigger should still be in the DOM.\n // Only does it when the modal is closed from a open state to avoid to set\n // the focus when the page loads.\n if (wasOpen && !this.isVisible && this.modalTrigger) {\n this.modalTrigger.nativeElement.focus();\n }\n }\n\n get reference(): string {\n return this.gesdemService.lastResponse\n ? this.gesdemService.lastResponse.meta.reference\n : null;\n }\n\n private canContinueLaterForEtape(\n currentEtapeInfo: EtapeInfo,\n isConnectedCyber: boolean,\n isConnectedIamAcv: boolean\n ): boolean {\n if (isConnectedIamAcv) {\n return false;\n }\n\n // If not connected, take the \"reprisePossible\" flag from CatPrest\n // into account.\n if (!isConnectedCyber) {\n return currentEtapeInfo && currentEtapeInfo.reprisePossible;\n }\n\n // If connected, only display the button if the current step if the initial\n // step.\n return (\n currentEtapeInfo &&\n currentEtapeInfo.idMetierEtape ===\n currentEtapeInfo.idMetierPrestation\n );\n }\n}\n","<button\n type=\"button\"\n id=\"continueLaterButton\"\n class=\"btn btn-link pr-0 pl-0 no-text-transform\"\n *ngIf=\"canContinueLater | async\"\n (click)=\"open()\"\n #modalTrigger\n>\n {{ continueLaterLabel }}\n</button>\n\n<foehn-modal\n id=\"action-recovery-registration-modal\"\n [modalHeaderText]=\"'Informations pour la reprise de la demande'\"\n [isModalVisible]=\"isModalVisible\"\n (isModalVisibleChange)=\"updateVisibilityStatus($event)\"\n>\n <ng-container *ngIf=\"isConnectedCyber | async; else notConnectedContent\">\n <p>\n Vos données ont été sauvegardées, vous pouvez accéder à cette\n demande dans la liste de\n <a href=\"/100002/demandes/search/MINE/INITIAL\">\n vos demandes en brouillon\n </a>\n .\n </p>\n </ng-container>\n <ng-template #notConnectedContent>\n <div class=\"alert alert-info\">\n <p *ngIf=\"!mailSent\">\n Les informations demandées sont uniquement utilisées pour vous\n permettre d'effectuer la reprise de demande.\n </p>\n\n <div *ngIf=\"mailSent\">\n <p>\n Un message contenant le lien de reprise de la demande a été\n envoyé à votre email.\n </p>\n <p>\n Vous pouvez cliquer sur ce lien pour reprendre la demande en\n saisissant le code qui sera envoyé à votre téléphone.\n </p>\n </div>\n </div>\n\n <foehn-form *ngIf=\"!mailSent\" [shouldDisplayAlertSummary]=\"false\">\n <foehn-input-text\n label=\"Email\"\n helpText=\"Par exemple, john@doe.ch\"\n [(model)]=\"model.email\"\n name=\"email\"\n required=\"true\"\n ></foehn-input-text>\n\n <foehn-input-phone\n label=\"Numéro de téléphone mobile\"\n [acceptInternational]=\"true\"\n [acceptMobilePhone]=\"true\"\n [acceptPhone]=\"false\"\n [(model)]=\"model.mobile\"\n name=\"mobile\"\n required=\"true\"\n ></foehn-input-phone>\n </foehn-form>\n </ng-template>\n\n <div modal-footer class=\"w-100\">\n <div class=\"d-md-flex\">\n <div class=\"ml-md-auto mr-md-2 mb-2 mt-2\">\n <button (click)=\"close()\" class=\"btn btn-secondary w-100\">\n Fermer\n </button>\n </div>\n <div\n *ngIf=\"!(isConnectedCyber | async)\"\n class=\"ml-md-0 mr-md-2 mb-2 mt-2\"\n >\n <button\n type=\"submit\"\n (click)=\"sendAndClose()\"\n class=\"btn btn-success w-100\"\n *ngIf=\"!mailSent\"\n >\n Sauvegarder\n </button>\n </div>\n </div>\n </div>\n</foehn-modal>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FoehnNavigationService } from './foehn-navigation.service';\nimport { ActivatedRoute } from '@angular/router';\n\n@Component({\n selector: 'foehn-navigation',\n templateUrl: './foehn-navigation.component.html',\n styleUrls: ['./foehn-navigation.component.css']\n})\nexport class FoehnNavigationComponent implements OnInit {\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onNext = new EventEmitter<void>();\n\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onPrevious = new EventEmitter<void>();\n\n @Input()\n nextLabel = 'foehn-navigation.next.label';\n\n @Input()\n prevLabel = 'foehn-navigation.previous.label';\n\n @Input()\n transmitLabel = 'foehn-navigation.transmit.label';\n\n @Input()\n continueLaterLabel = 'foehn-navigation.continue-later.label';\n\n @Input()\n showContinueLaterButton = true;\n\n @Input()\n showNextButton = true;\n\n constructor(\n private navigationService: FoehnNavigationService,\n private activatedRoute: ActivatedRoute\n ) {}\n\n ngOnInit(): void {\n this.navigationService.activatedRoute = this.activatedRoute;\n this.navigationService.updateRouteInformations();\n }\n\n goToNext(): void {\n this.onNext.emit();\n }\n\n goToPrevious(): void {\n this.onPrevious.emit();\n }\n\n canShowNextButton(): boolean {\n if (!this.showNextButton) {\n // In case the user explicitly disable the next button, for validation or error purposes.\n return false;\n }\n\n const nextRouteIndex = this.getNextRouteIndex();\n if (nextRouteIndex === null) {\n return false;\n }\n\n // This assumes that the route orders are lower than the last one. For instance the last one being the confirmation page,\n // its order must be greater than all the other orders.\n return nextRouteIndex <= this.navigationService.getLastRouteOrder();\n }\n\n canShowPreviousButton(): boolean {\n return !this.navigationService.isFirstFormPage();\n }\n\n isLastFormPage(): boolean {\n return this.navigationService.isLastFormPage();\n }\n\n getNextRouteIndex(): number {\n return this.navigationService.getNextRouteIndex();\n }\n\n getPreviousRouteIndex(): number {\n return this.navigationService.getPreviousRouteIndex();\n }\n\n getTotalRoutesSize(): number {\n // Assumes that last route is the confirmation page and thus isn't considered as a step.\n return this.navigationService.getTotalRoutesSize() - 1;\n }\n\n isLinearRouting(): boolean {\n return this.navigationService.isLinearRouting();\n }\n}\n","<gesdem-action-recovery-registration\n *ngIf=\"showContinueLaterButton\"\n [continueLaterLabel]=\"continueLaterLabel | fromDictionary\"\n></gesdem-action-recovery-registration>\n\n<nav class=\"vd-pagination\" id=\"foehn_navContainer\" aria-label=\"Pagination\">\n <ul class=\"vd-pagination__list\">\n <li\n class=\"vd-pagination__item vd-pagination__item--previous\"\n *ngIf=\"canShowPreviousButton()\"\n >\n <button\n id=\"prevButton\"\n type=\"button\"\n class=\"btn-link vd-pagination__link vd-pagination__link-reset\"\n (click)=\"$event.preventDefault(); goToPrevious()\"\n >\n <span class=\"vd-pagination__title\">\n <foehn-icon-chevron-left\n class=\"mr-1\"\n aria-hidden=\"true\"\n ></foehn-icon-chevron-left>\n {{ prevLabel | fromDictionary }}\n </span>\n <span class=\"sr-only\" *ngIf=\"isLinearRouting()\">:</span>\n <span class=\"vd-pagination__label\" *ngIf=\"isLinearRouting()\">\n {{ getPreviousRouteIndex() }}\n {{\n 'foehn-navigation.route.index.separator'\n | fromDictionary\n }}\n {{ getTotalRoutesSize() }}\n </span>\n </button>\n </li>\n <li\n class=\"vd-pagination__item vd-pagination__item--next\"\n *ngIf=\"!isLastFormPage() && canShowNextButton()\"\n >\n <button\n id=\"nextButton\"\n type=\"submit\"\n class=\"btn-link vd-pagination__link vd-pagination__link-reset\"\n (click)=\"$event.preventDefault(); goToNext()\"\n >\n <span class=\"vd-pagination__title\">\n {{ nextLabel | fromDictionary }}\n <foehn-icon-chevron-right\n class=\"ml-1\"\n aria-hidden=\"true\"\n ></foehn-icon-chevron-right>\n </span>\n <span class=\"sr-only\" *ngIf=\"isLinearRouting()\">:</span>\n <span class=\"vd-pagination__label\" *ngIf=\"isLinearRouting()\">\n {{ getNextRouteIndex() }}\n {{\n 'foehn-navigation.route.index.separator'\n | fromDictionary\n }}\n {{ getTotalRoutesSize() }}\n </span>\n </button>\n </li>\n <li\n class=\"vd-pagination__item vd-pagination__item--next\"\n *ngIf=\"isLastFormPage() && canShowNextButton()\"\n >\n <button\n *ngIf=\"isLastFormPage() && canShowNextButton()\"\n type=\"submit\"\n id=\"transmitButton\"\n (click)=\"goToNext()\"\n class=\"btn btn-success vd-btn-pagination-submit\"\n >\n {{ transmitLabel | fromDictionary }}\n </button>\n </li>\n </ul>\n</nav>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FoehnValidationAlertSummaryComponent } from './foehn-validation-alert-summary.component';\nimport { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';\n\n@NgModule({\n imports: [CommonModule, SdkDictionaryModule],\n declarations: [FoehnValidationAlertSummaryComponent],\n exports: [FoehnValidationAlertSummaryComponent]\n})\nexport class FoehnValidationAlertSummaryModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FoehnFormComponent } from './foehn-form.component';\nimport { FoehnValidationAlertSummaryModule } from '../foehn-validation-alert-summary/foehn-validation-alert-summary.module';\nimport { FormsModule } from '@angular/forms';\n\n@NgModule({\n imports: [CommonModule, FoehnValidationAlertSummaryModule, FormsModule],\n declarations: [FoehnFormComponent],\n exports: [FoehnFormComponent]\n})\nexport class FoehnFormModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { FoehnInputModule } from '../foehn-input/foehn-input.module';\nimport { FoehnIconsModule } from '../foehn-icons/foehn-icons.module';\nimport { FoehnFormModule } from '../foehn-form/foehn-form.module';\nimport { GesdemActionRecoveryLoginComponent } from './gesdem-action-recovery-login/gesdem-action-recovery-login.component';\n// eslint-disable-next-line max-len\nimport { GesdemActionRecoveryRegistrationComponent } from './gesdem-action-recovery-registration/gesdem-action-recovery-registration.component';\nimport { FoehnModalModule } from '../foehn-modal/foehn-modal.module';\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n FoehnInputModule,\n FoehnIconsModule,\n FoehnFormModule,\n FoehnModalModule\n ],\n declarations: [\n GesdemActionRecoveryLoginComponent,\n GesdemActionRecoveryRegistrationComponent\n ],\n exports: [\n GesdemActionRecoveryLoginComponent,\n GesdemActionRecoveryRegistrationComponent\n ]\n})\nexport class GesdemActionRecoveryModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FoehnNavigationComponent } from './foehn-navigation.component';\nimport { FoehnIconsModule } from '../foehn-icons/foehn-icons.module';\nimport { GesdemActionRecoveryModule } from '../gesdem-action-recovery/gesdem-action-recovery.module';\nimport { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';\n\n@NgModule({\n imports: [\n CommonModule,\n FoehnIconsModule,\n GesdemActionRecoveryModule,\n SdkDictionaryModule\n ],\n declarations: [FoehnNavigationComponent],\n exports: [FoehnNavigationComponent]\n})\nexport class FoehnNavigationModule {}\n","import { Component, Input } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { GesdemHandlerService } from '../gesdem/gesdem-handler.service';\nimport { map } from 'rxjs/operators';\n\n@Component({\n selector: 'foehn-remaining-alerts-summary',\n templateUrl: './foehn-remaining-alerts-summary.component.html',\n styleUrls: ['./foehn-remaining-alerts-summary.component.css']\n})\nexport class FoehnRemainingAlertsSummaryComponent {\n @Input()\n remainingErrorsLabel =\n '<p>Il reste des erreurs, le formulaire ne peut pas être transmis.</p>' +\n '<p>Merci de revenir en arrière ou de réessayer plus tard.</p>';\n\n hasRemainingErrors: Observable<boolean> = of(false);\n\n constructor(private gesdemService: GesdemHandlerService) {\n this.hasRemainingErrors = this.gesdemService.updateFormDataSubject.pipe(\n map(() => !!this.gesdemService.lastResponse.errors.length)\n );\n }\n}\n","<div\n class=\"alert alert-danger\"\n *ngIf=\"hasRemainingErrors | async\"\n [innerHTML]=\"remainingErrorsLabel\"\n></div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FoehnRemainingAlertsSummaryComponent } from './foehn-remaining-alerts-summary.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [FoehnRemainingAlertsSummaryComponent],\n exports: [FoehnRemainingAlertsSummaryComponent]\n})\nexport class FoehnRemainingAlertsSummaryModule {}\n","import {\n Component,\n ContentChild,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChange,\n SimpleChanges,\n TemplateRef\n} from '@angular/core';\nimport { PageChangeEvent } from './page-change-event';\n\n@Component({\n selector: 'foehn-list',\n templateUrl: './foehn-list.component.html',\n styleUrls: ['./foehn-list.component.css']\n})\nexport class FoehnListComponent implements OnChanges {\n @ContentChild(TemplateRef)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n templateVariable: TemplateRef<any>;\n\n @Input()\n itemsPerPage = 10;\n\n @Input()\n id = 'foehn-list';\n\n @Input()\n previousLabel = 'Précédent';\n\n @Input()\n nextLabel = 'Suivant';\n\n @Input()\n fixedPageCount: number;\n\n @Output()\n pageChange = new EventEmitter<PageChangeEvent>();\n\n currentPage = 1;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n filteredList: any[] = [];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _list: any[];\n\n @Input()\n // eslint-disable-next-line max-len\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/no-unused-vars,@typescript-eslint/explicit-module-boundary-types\n trackByFn = (index: number, item: any): number => index;\n\n @Input()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n set list(list: any[]) {\n this._list = list;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const itemsPerPageChange: SimpleChange = changes.itemsPerPage;\n const listChange: SimpleChange = changes.list;\n const fixedPageCountChange: SimpleChange = changes.fixedPageCount;\n\n if (\n !this.hasInputChanged(itemsPerPageChange) &&\n !this.hasInputChanged(listChange) &&\n !this.hasInputChanged(fixedPageCountChange)\n ) {\n return;\n }\n\n this.buildFilteredList();\n }\n\n previousPage(): void {\n this.currentPage = this.currentPage - 1;\n this.buildFilteredList();\n this.pageChange.next({\n previousPage: this.currentPage + 1,\n currentPage: this.currentPage,\n pageCount: this.pagesCount()\n });\n }\n\n hasPreviousPage(): boolean {\n return this.currentPage > 1;\n }\n\n nextPage(): void {\n this.currentPage = this.currentPage + 1;\n this.buildFilteredList();\n\n this.pageChange.next({\n previousPage: this.currentPage - 1,\n currentPage: this.currentPage,\n pageCount: this.pagesCount()\n });\n }\n\n hasNextPage(): boolean {\n return this.currentPage < this.pagesCount();\n }\n\n showPage(page: number, emitPageChangeEvent: boolean = false): void {\n if (this.currentPage === page) {\n return;\n }\n\n const previousPage = this.currentPage;\n this.currentPage = page;\n this.buildFilteredList();\n\n if (emitPageChangeEvent) {\n this.pageChange.next({\n previousPage,\n currentPage: this.currentPage,\n pageCount: this.pagesCount()\n });\n }\n }\n\n pagesCount(): number {\n if (!!this.fixedPageCount) {\n return this.fixedPageCount;\n }\n\n return this._list\n ? Math.ceil(this._list.length / this.itemsPerPage)\n : 0;\n }\n\n private buildFilteredList(): void {\n if (!!this.fixedPageCount) {\n this.filteredList = this._list;\n return;\n }\n\n const currentPageExists =\n (this.currentPage - 1) * this.itemsPerPage <= this._list.length;\n if (!currentPageExists) {\n this.currentPage = 1;\n }\n const start = (this.currentPage - 1) * this.itemsPerPage;\n this.filteredList = this._list\n ? this._list.slice(start, start + this.itemsPerPage)\n : [];\n }\n\n private hasInputChanged(change: SimpleChange): boolean {\n return !(\n !change ||\n !change.currentValue ||\n change.previousValue === change.currentValue\n );\n }\n}\n","<div class=\"row\" [id]=\"id\">\n <div class=\"col-lg-12 col-md-12 col-sm-12 col-xs-12\">\n <ul class=\"list-unstyled\">\n <li\n *ngFor=\"\n let item of filteredList;\n let index = index;\n trackBy: trackByFn\n \"\n >\n <ng-template\n [ngTemplateOutlet]=\"templateVariable\"\n [ngTemplateOutletContext]=\"{ item: item, index: index }\"\n ></ng-template>\n </li>\n </ul>\n\n <div class=\"row d-flex justify-content-between p-1\">\n <div class=\"col-lg-3 col-md-3 col-sm-6 col-xs-6\">\n <nav\n class=\"vd-pagination\"\n aria-label=\"Pagination\"\n *ngIf=\"hasPreviousPage()\"\n >\n <ul class=\"vd-pagination__list\">\n <li\n class=\"vd-pagination__item vd-pagination__item--previous\"\n >\n <button\n class=\"btn-link vd-pagination__link btn-no-extra vd-pagination__link-reset\"\n (click)=\"previousPage()\"\n >\n <span class=\"vd-pagination__title\">\n <foehn-icon-chevron-left></foehn-icon-chevron-left>\n {{ previousLabel }}\n </span>\n <span class=\"sr-only\">:</span>\n <span class=\"vd-pagination__label\">\n {{ currentPage - 1 }} sur {{ pagesCount() }}\n </span>\n </button>\n </li>\n </ul>\n </nav>\n </div>\n\n <div class=\"col-lg-3 col-md-3 col-sm-6 col-xs-6\">\n <nav\n class=\"vd-pagination\"\n aria-label=\"Pagination\"\n *ngIf=\"hasNextPage()\"\n >\n <ul class=\"vd-pagination__list\">\n <li\n class=\"vd-pagination__item vd-pagination__item--next\"\n >\n <button\n class=\"btn-link vd-pagination__link btn-no-extra vd-pagination__link-reset\"\n (click)=\"nextPage()\"\n >\n <span class=\"vd-pagination__title\">\n {{ nextLabel }}\n <foehn-icon-chevron-right></foehn-icon-chevron-right>\n </span>\n <span class=\"sr-only\">:</span>\n <span class=\"vd-pagination__label\">\n {{ currentPage + 1 }} sur {{ pagesCount() }}\n </span>\n </button>\n </li>\n </ul>\n </nav>\n </div>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FoehnListComponent } from './foehn-list.component';\nimport { FoehnIconsModule } from '../foehn-icons/foehn-icons.module';\n\n@NgModule({\n imports: [CommonModule, FoehnIconsModule],\n declarations: [FoehnListComponent],\n exports: [FoehnListComponent]\n})\nexport class FoehnListModule {}\n","export class PageChangeEvent {\n previousPage: number;\n currentPage: number;\n pageCount: number;\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { IamExpiredInterceptorService } from './iam-expired-interceptor.service';\nimport { Subscription } from 'rxjs';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'redirector',\n templateUrl: './redirect.component.html'\n})\nexport class RedirectComponent implements OnDestroy, OnInit {\n isModalVisible: boolean;\n modalHeaderText: string;\n modalBodyText: string;\n counter: number;\n\n private subscription: Subscription;\n\n constructor(private iamInterceptor: IamExpiredInterceptorService) {\n this.subscription = this.iamInterceptor.iamExpirationHeaderPresence.subscribe(\n () => {\n this.showModal();\n }\n );\n }\n\n ngOnInit(): void {\n this.modalHeaderText = 'Information';\n this.modalBodyText = `<p>Votre session a expiré.</p>\n <p>Vous pouvez vous connecter à nouveau pour continuer à utiliser nos services.</p>`;\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n private redirect(): void {\n // feels dirty...\n // @todo replace with router.navigateToUrl\n window.location.href = '/iam/accueil';\n }\n\n private showModal(): void {\n this.counter = 10;\n this.isModalVisible = true;\n setInterval(() => {\n if (0 === this.counter) {\n this.redirect();\n return;\n }\n this.counter--;\n }, 1000);\n }\n}\n","<foehn-modal\n [modalBodyText]=\"modalBodyText\"\n [isModalVisible]=\"isModalVisible\"\n [modalHeaderText]=\"modalHeaderText\"\n [modalFooterText]=\"'Vous allez être redirigé dans ' + this.counter + ' s.'\"\n></foehn-modal>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RedirectComponent } from './redirect.component';\nimport { FoehnModalModule } from '../foehn-modal/foehn-modal.module';\n\n@NgModule({\n imports: [CommonModule, FoehnModalModule],\n declarations: [RedirectComponent],\n exports: [RedirectComponent]\n})\nexport class SdkRedirectModule {}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild\n} from '@angular/core';\n\nexport const RECAPTCHA_URL =\n 'https://www.google.com/recaptcha/api.js?onload=reCaptchaLoad&render=explicit';\nexport const SCRIPT_ID = 'prestations-ng-captcha-script';\n\ndeclare global {\n interface Window {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n grecaptcha: any;\n reCaptchaLoad: () => void;\n }\n}\n\n/**\n * Integration with Google Recaptcha.\n *\n * All the quirks and weirdness of this integration should be done in this\n * component.\n *\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'app-grecaptcha',\n templateUrl: './grecaptcha.component.html'\n})\nexport class GrecaptchaComponent implements OnInit, OnDestroy {\n @Input()\n siteKey: string;\n\n @Output()\n loaded = new EventEmitter<boolean>();\n\n @Output()\n scriptError = new EventEmitter<boolean>();\n\n @Output()\n tokenOnSuccess = new EventEmitter<string | null>();\n\n @Output()\n destroyed = new EventEmitter<boolean>();\n\n @ViewChild('recaptchaContainer', { static: true })\n recaptchaContainer: ElementRef;\n\n @ViewChild('recaptchaScriptContainer', { static: true })\n recaptchaScriptContainer: ElementRef;\n\n private widgetId: number;\n\n ngOnInit(): void {\n // If the component is in the component tree, load the captcha regardless.\n this.loadCaptcha();\n }\n\n ngOnDestroy(): void {\n this.destroyed.emit(true);\n this.removeScript();\n }\n\n reset(): void {\n this.safeCaptchaReset();\n\n this.tokenOnSuccess.emit(null);\n }\n\n private renderCaptcha(): void {\n if (!this.siteKey) {\n throw new Error('Missing siteKey on the component');\n }\n\n if (!window.grecaptcha) {\n throw new Error('The captcha has not been loaded properly');\n }\n\n const config = {\n sitekey: this.siteKey,\n callback: (token: string) => this.tokenOnSuccess.emit(token),\n 'expired-callback': () => this.reset()\n };\n\n this.widgetId = window.grecaptcha.render(\n this.recaptchaContainer.nativeElement,\n config\n );\n\n this.loaded.emit(true);\n }\n\n private appendScriptTag(): void {\n const script = document.createElement('script');\n script.id = SCRIPT_ID;\n script.src = RECAPTCHA_URL;\n script.async = true;\n script.defer = true;\n script.onerror = () => this.scriptError.emit(true);\n this.recaptchaScriptContainer.nativeElement.appendChild(script);\n }\n\n private removeScript(): void {\n this.scriptError.emit(false);\n\n window.reCaptchaLoad = null;\n }\n\n private loadCaptcha(): void {\n this.loaded.emit(false);\n\n // In case the script is already loaded.\n const existingTag = document.getElementById(SCRIPT_ID);\n if (existingTag) {\n this.renderCaptcha();\n return;\n }\n\n // This will be called if the captcha loads.\n window.reCaptchaLoad = () => {\n this.renderCaptcha();\n };\n\n // Add the script with the `reCaptchaLoad` function as a callback.\n this.appendScriptTag();\n }\n\n private safeCaptchaReset(): void {\n try {\n if (!!window.grecaptcha) {\n window.grecaptcha.reset(this.widgetId);\n }\n } catch (e) {\n // In case the reset of the Google Captcha throws an error.\n console.error(e);\n }\n }\n}\n","<div #recaptchaScriptContainer></div>\n<div #recaptchaContainer></div>\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { BehaviorSubject, combineLatest, merge, Observable, of } from 'rxjs';\nimport { SessionInfo } from '../sdk-session-info/session-info.service';\nimport { ActivatedRoute } from '@angular/router';\nimport { debounceTime, map } from 'rxjs/operators';\nimport { ErrorTemplate } from '../error-template';\nimport { ValidationHandlerService } from '../validation/validation-handler.service';\nimport { GesdemEventService } from '../gesdem/gesdem-event.service';\nimport { GesdemHandlerService } from '../gesdem/gesdem-handler.service';\nimport { ApplicationInfoService } from '../sdk-appinfo/application-info.service';\nimport { ApplicationInfo } from '../sdk-appinfo/application-info';\n\nexport const RECAPTCHA_API_URL = 'api/recaptcha';\nexport const CAPTCHA_ERROR_NAME = 'recaptcha';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RecaptchaService {\n private readonly errors: Observable<ErrorTemplate[]>;\n private readonly errorsSubject = new BehaviorSubject<ErrorTemplate[]>([]);\n private readonly shouldDisplay: Observable<boolean>;\n private readonly publicKey: Observable<string>;\n private token: string;\n\n constructor(\n private http: HttpClient,\n private sessionInfo: SessionInfo,\n private route: ActivatedRoute,\n private validationHandlerService: ValidationHandlerService,\n private gesdemService: GesdemHandlerService,\n private gesdemEventService: GesdemEventService,\n private applicationInfoService: ApplicationInfoService\n ) {\n this.shouldDisplay = this.initShouldDisplayObservable();\n this.errors = this.initErrorObservable();\n this.publicKey = this.initPublicKeyObservable();\n }\n\n onSuccess(token: string): void {\n // To be accessed by the gesdem service and to avoid to have a circular\n // dependency between the gesdemHandlerService and the captcha service.\n this.gesdemService.setCaptchaToken(token);\n\n this.token = token;\n\n if (!!this.token) {\n this.clearErrors();\n this.http.post(RECAPTCHA_API_URL, { token: this.token }).subscribe(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (data: any) => {\n const success = !!data.success;\n if (success) {\n // Clear any potential errors from the server. We can do\n // that because this should be the only error in the set as\n // the captcha must be valid to have at least one form error.\n this.validationHandlerService.updateErrors([]);\n } else {\n // If this is thrown, that's pretty bad because it means\n // that Google couldn't verify the captcha key. This is\n // either an attack or a misconfiguration.\n this.addError('Votre captcha est invalide');\n }\n },\n (e: unknown) => {\n console.error(e);\n\n // 404, timeout or network issue. Could happen.\n this.addError(\n 'Une erreur est survenue lors de la validation du captcha.'\n );\n }\n );\n }\n }\n\n addError(message: string): void {\n const existingErrors = this.errorsSubject.getValue();\n const newError = {\n name: CAPTCHA_ERROR_NAME,\n code: CAPTCHA_ERROR_NAME,\n message\n };\n\n this.errorsSubject.next([newError, ...existingErrors]);\n }\n\n clearErrors(): void {\n this.errorsSubject.next([]);\n }\n\n getErrors(): Observable<ErrorTemplate[]> {\n return this.errors;\n }\n\n getShouldDisplay(): Observable<boolean> {\n return this.shouldDisplay;\n }\n\n getPublicKey(): Observable<string> {\n return this.publicKey;\n }\n\n getToken(): string {\n return this.token;\n }\n\n private initErrorObservable(): Observable<ErrorTemplate[]> {\n const matchingGesdemErrors = merge(\n // Ensures that there's an initial value\n of([]),\n // Read from the gesdem service all errors.\n this.validationHandlerService.validationErrorsSubject\n ).pipe(\n // Errors from GesDem, or nothing\n map(errors => errors.filter(ex => CAPTCHA_ERROR_NAME === ex.code))\n );\n\n // Bind errors to the component, either from the backend of from this component\n return combineLatest([\n // Errors from gesdem matching the name of the captcha.\n matchingGesdemErrors,\n // Manual errors\n this.errorsSubject\n ]).pipe(\n // Merge the two errors sets\n map(([gesdemErrors, localErrors]) => [\n ...gesdemErrors,\n ...localErrors\n ])\n );\n }\n\n private initShouldDisplayObservable(): Observable<boolean> {\n const isConnectedObservable = this.sessionInfo.data.pipe(\n map(data => !this.sessionInfo.neverConnected && !!data)\n );\n\n const hasBypassEnabledObservable = this.checkBypassProperty().pipe(\n map(bypass => !!bypass.value)\n );\n\n const hasReferenceObservable = merge(\n // To have an initial value. Can be null if there is no form.\n of(this.gesdemService.lastResponse),\n // Read the form from GesDem\n this.gesdemEventService.formInitializationObservable()\n ).pipe(\n map(\n form =>\n !!form &&\n !!this.gesdemService.lastResponse &&\n !!this.gesdemService.lastResponse.meta &&\n !!this.gesdemService.lastResponse.meta.reference\n )\n );\n\n return combineLatest([\n isConnectedObservable,\n hasBypassEnabledObservable,\n hasReferenceObservable\n ]).pipe(\n // To work around rapidly changing observables, such as the form\n // when the page loads.\n debounceTime(0),\n map(\n ([isConnected, hasBypassEnabled, hasReference]) =>\n // Do not display the captcha if the user is connected, the application\n // already has a reference or if the bypass is enabled.\n !isConnected && !hasBypassEnabled && !hasReference\n )\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private checkBypassProperty(): Observable<any> {\n const params = !!this.route.snapshot.queryParams.reCaptchaByPassUUID\n ? new HttpParams().set(\n 'reCaptchaByPassUUID',\n this.route.snapshot.queryParams.reCaptchaByPassUUID\n )\n : null;\n\n return this.http.get(`${RECAPTCHA_API_URL}/bypass`, { params });\n }\n\n private initPublicKeyObservable(): Observable<string> {\n return this.applicationInfoService.data.pipe(\n map(applicationInfo => this.getPublicKeyOrNull(applicationInfo))\n );\n }\n\n private getPublicKeyOrNull(\n applicationInfo: ApplicationInfo\n ): string | null {\n // Replace this whole shenanigan with applicationInfo?.configuration?.captcha?.publickey when\n // Typescript supports it.\n if (!applicationInfo) {\n return null;\n }\n\n const { configuration } = applicationInfo;\n\n if (!configuration) {\n return null;\n }\n const { captcha } = configuration;\n\n if (!captcha) {\n return null;\n }\n\n return captcha.publickey || null;\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n OnDestroy,\n OnInit,\n ViewChild\n} from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\nimport { RecaptchaService } from './recaptcha.service';\nimport { ErrorTemplate } from '../error-template';\nimport { GrecaptchaComponent } from './grecaptcha/grecaptcha.component';\nimport { debounceTime } from 'rxjs/operators';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'captcha',\n templateUrl: './sdk-recaptcha.component.html'\n})\nexport class SdkRecaptchaComponent implements OnInit, OnDestroy {\n @ViewChild(GrecaptchaComponent)\n grecaptcha: GrecaptchaComponent;\n\n shouldDisplay: Observable<boolean>;\n isLoaded: boolean;\n hasLoadingError = false;\n errors: Observable<ErrorTemplate[]>;\n publicKey: Observable<string>;\n\n private errorsSubscription: Subscription;\n private forceDetectChange: () => void;\n\n constructor(\n private recaptchaService: RecaptchaService,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit(): void {\n this.recaptchaService.clearErrors();\n this.shouldDisplay = this.recaptchaService.getShouldDisplay();\n this.errors = this.recaptchaService.getErrors();\n this.publicKey = this.recaptchaService.getPublicKey();\n\n this.errorsSubscription = this.errors\n .pipe(debounceTime(500))\n .subscribe(errors => {\n // Hack because the captcha confuses Angular detection change.\n if (this.forceDetectChange) {\n this.forceDetectChange();\n }\n // In case of errors, reset the captcha for a better user\n // experience.\n if (errors.length && this.grecaptcha) {\n this.grecaptcha.reset();\n }\n });\n\n this.forceDetectChange = () => this.cdr.detectChanges();\n }\n\n ngOnDestroy(): void {\n if (this.errorsSubscription) {\n this.errorsSubscription.unsubscribe();\n }\n\n // Avoid cdr on destroyed components.\n this.forceDetectChange = null;\n }\n\n setIsLoaded(isLoaded: boolean): void {\n this.isLoaded = isLoaded;\n\n // Angular doesn't detect the change properly\n if (this.forceDetectChange) {\n this.forceDetectChange();\n }\n }\n\n setScriptError(scriptError: boolean): void {\n this.hasLoadingError = scriptError;\n\n // Angular doesn't detect the change properly\n if (this.forceDetectChange) {\n this.forceDetectChange();\n }\n }\n\n tokenOnSuccess(token: string): void {\n this.recaptchaService.onSuccess(token);\n }\n}\n","<!-- Only display the content if the captcha should be displayed (user not connected for instance) -->\n<div id=\"foehn_recaptchaContainer\" *ngIf=\"shouldDisplay | async\">\n <!-- Manual error handling because errors can come from multiple sources -->\n <ng-container *ngIf=\"errors | async as err\">\n <div\n class=\"form-control-feedback text-danger\"\n *ngIf=\"err && err.length\"\n >\n <p *ngFor=\"let error of err\">{{ error.message }}</p>\n </div>\n </ng-container>\n\n <!-- While the captcha is being loaded -->\n <div class=\"alert alert-info\" *ngIf=\"!isLoaded && !hasLoadingError\">\n Chargement du captcha\n </div>\n\n <!-- In case google.com cannot be reached for instance -->\n <div class=\"alert alert-danger\" *ngIf=\"hasLoadingError\">\n <div class=\"mt-0 alert-heading h4\">\n Une erreur est survenue lors du chargement du captcha.\n </div>\n <p>\n Merci de vérifier que votre navigateur peut accéder à\n <a href=\"http://google.com\" target=\"_blank\">google.com</a>\n .\n </p>\n </div>\n\n <ng-container *ngIf=\"publicKey | async as key\">\n <!-- The captcha itself is in a different container not to confused Angular change detection -->\n <app-grecaptcha\n [siteKey]=\"key\"\n (loaded)=\"setIsLoaded($event)\"\n (scriptError)=\"setScriptError($event)\"\n (tokenOnSuccess)=\"tokenOnSuccess($event)\"\n ></app-grecaptcha>\n </ng-container>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SdkRecaptchaComponent } from './sdk-recaptcha.component';\nimport { GrecaptchaComponent } from './grecaptcha/grecaptcha.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [SdkRecaptchaComponent, GrecaptchaComponent],\n exports: [SdkRecaptchaComponent]\n})\nexport class SdkRecaptchaModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FoehnRecapSectionComponent } from './foehn-recap-section.component';\nimport { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';\nimport { FoehnAddressModule } from '../foehn-address/foehn-address.module';\n\n@NgModule({\n declarations: [FoehnRecapSectionComponent],\n imports: [CommonModule, SdkDictionaryModule, FoehnAddressModule],\n exports: [FoehnRecapSectionComponent]\n})\nexport class FoehnRecapSectionModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { FoehnDebugSummaryComponent } from './foehn-debug-summary.component';\nimport { FoehnRecapSectionModule } from '../foehn-recap-section/foehn-recap-section.module';\n\n@NgModule({\n imports: [CommonModule, FoehnRecapSectionModule],\n declarations: [FoehnDebugSummaryComponent],\n exports: [FoehnDebugSummaryComponent],\n providers: [DatePipe]\n})\nexport class FoehnDebugSummaryComponentModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { GesdemErrorComponent } from './gesdem-error.component';\nimport { RouterModule } from '@angular/router';\nimport { GesdemActionRecoveryModule } from '../gesdem-action-recovery/gesdem-action-recovery.module';\nimport { FoehnDebugSummaryComponentModule } from '../foehn-debug-summary/foehn-debug-summary.component.module';\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n GesdemActionRecoveryModule,\n FoehnDebugSummaryComponentModule\n ],\n declarations: [GesdemErrorComponent],\n exports: [GesdemErrorComponent]\n})\nexport class GesdemErrorModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { GesdemConfirmationComponent } from './gesdem-confirmation.component';\nimport { FoehnIconsModule } from '../foehn-icons/foehn-icons.module';\nimport { RouterModule } from '@angular/router';\nimport { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';\n\n@NgModule({\n imports: [\n CommonModule,\n FoehnIconsModule,\n RouterModule,\n SdkDictionaryModule\n ],\n declarations: [GesdemConfirmationComponent],\n exports: [GesdemConfirmationComponent]\n})\nexport class GesdemConfirmationModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FoehnNotfoundComponent } from './foehn-notfound.component';\nimport { FoehnPageModule } from '../foehn-page/foehn-page.module';\nimport { FoehnDebugSummaryComponentModule } from '../foehn-debug-summary/foehn-debug-summary.component.module';\n\n@NgModule({\n imports: [CommonModule, FoehnPageModule, FoehnDebugSummaryComponentModule],\n declarations: [FoehnNotfoundComponent],\n exports: [FoehnNotfoundComponent]\n})\nexport class FoehnNotFoundModule {}\n","import {\n Directive,\n HostListener,\n Input,\n OnDestroy,\n OnInit\n} from '@angular/core';\nimport { FoehnInputComponent } from '../foehn-input/foehn-input.component';\nimport { BehaviorSubject, Subscription } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { UploaderHelper } from './uploader.helper';\nimport { ApplicationInfoService } from '../sdk-appinfo/application-info.service';\nimport { FoehnConfirmModalService } from '../foehn-confirm-modal/foehn-confirm-modal.service';\nimport { SdkDictionaryService } from '../sdk-dictionary/sdk-dictionary.service';\nimport { DocumentReference } from './document-reference';\nimport { ErrorTemplate } from '../error-template';\n\n@Directive()\nexport abstract class AbstractFoehnUploaderComponent<T>\n extends FoehnInputComponent<T>\n implements OnInit, OnDestroy {\n @Input()\n required: boolean;\n\n @Input()\n dragAndDrop = true;\n\n @Input()\n showUploadButton = true;\n\n @Input()\n readonly = false;\n\n @Input()\n hideGlobalInfos = false;\n\n @Input()\n multiple = true;\n\n @Input()\n key: string;\n\n @Input()\n chooseButtonLabel: string;\n\n @Input()\n chooseButtonLabelMultiple: string;\n\n @Input()\n dropZoneLabel: string;\n\n @Input()\n dropZoneLabelMultiple: string;\n\n @Input()\n overrideAcceptedExtensions: string;\n\n @Input()\n overrideMaxSizeInMo: number;\n\n @Input()\n overrideMaxFileNameLength: number;\n\n @Input()\n overrideIllegalCharacters: string;\n\n @Input()\n showDeleteConfirmationMessage = false;\n\n @Input()\n deleteConfirmationMessage: string;\n\n uploaderHelper: UploaderHelper;\n\n showDropZone = false;\n\n protected deleteDocumentSubject = new BehaviorSubject<DocumentReference>(\n null\n );\n protected deleteDocumentSubscription: Subscription;\n\n protected uploadFilesSubject = new BehaviorSubject<File[]>(null);\n protected uploadFilesSubscription: Subscription;\n protected currentLanguageSubscription: Subscription;\n protected currentLanguage: string;\n\n protected constructor(\n protected applicationInfoService: ApplicationInfoService,\n protected confirmModalService: FoehnConfirmModalService,\n protected dictionaryService: SdkDictionaryService\n ) {\n super();\n this.uploaderHelper = new UploaderHelper(\n dictionaryService,\n applicationInfoService\n );\n this.chooseButtonLabel = this.dictionaryService.getKeySync(\n 'foehn-uploader.choose-button-label'\n );\n this.chooseButtonLabelMultiple = this.dictionaryService.getKeySync(\n 'foehn-uploader.choose-button-label-multiple'\n );\n this.dropZoneLabel = this.dictionaryService.getKeySync(\n 'foehn-uploader.drop-zone-label'\n );\n this.dropZoneLabelMultiple = this.dictionaryService.getKeySync(\n 'foehn-uploader.drop-zone-label-multiple'\n );\n this.deleteConfirmationMessage = this.dictionaryService.getKeySync(\n 'foehn-uploader.delete-confirmation-message'\n );\n }\n\n @HostListener('window:dragover', ['$event'])\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types\n onDocumentDragOver(event: any): void {\n this.uploaderHelper.preventAndStop(event);\n if (this.dragAndDrop) {\n this.showDropZone = true;\n }\n }\n\n @HostListener('window:dragleave', ['$event'])\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types\n onDocumentDragLeave(event: any): void {\n this.uploaderHelper.preventAndStop(event);\n if (this.dragAndDrop) {\n this.showDropZone = false;\n }\n }\n\n @HostListener('window:drop', ['$event'])\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types\n onDocumentDrop(event: any): void {\n this.uploaderHelper.preventAndStop(event);\n if (this.dragAndDrop) {\n this.showDropZone = false;\n }\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n\n this.currentLanguageSubscription = this.dictionaryService\n .getCurrentLanguageCode()\n .pipe(distinctUntilChanged())\n .subscribe(language => {\n this.currentLanguage = language;\n this.uploaderHelper.createDefaultCustomErrors(\n this.customErrors\n );\n });\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n\n if (!!this.deleteDocumentSubscription) {\n this.deleteDocumentSubscription.unsubscribe();\n }\n\n if (!!this.uploadFilesSubscription) {\n this.uploadFilesSubscription.unsubscribe();\n }\n\n if (!!this.currentLanguageSubscription) {\n this.currentLanguageSubscription.unsubscribe();\n }\n }\n\n trackByDocument(document: DocumentReference): string {\n return document.key;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types\n removeFile(document: any): void {\n if (this.showDeleteConfirmationMessage) {\n this.confirmModalService\n .openConfirmModal({\n htmlContent: this.deleteConfirmationMessage\n })\n .then(\n () => this.removeFileOnConfirmation(document),\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n () => {}\n );\n } else {\n this.removeFileOnConfirmation(document);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types\n showGlobalInfos(data: any): boolean {\n return this.uploaderHelper.showGlobalInfos(data, this.hideGlobalInfos);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types\n getGlobalInfos(data: any): string {\n return this.uploaderHelper.getGlobalInfos(data);\n }\n\n toMegaOctets(size: number): string {\n return this.uploaderHelper.toMegaOctets(size);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types\n onDragenter(event: any): void {\n this.uploaderHelper.preventAndStop(event);\n if (this.dragAndDrop) {\n this.showDropZone = true; // need to override onDocumentDragLeave function\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types\n onDragleave(event: any): void {\n this.uploaderHelper.preventAndStop(event);\n if (this.dragAndDrop) {\n this.showDropZone = false; // in case we leave without onDocumentDragLeave\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types\n onDragover(event: any): void {\n this.uploaderHelper.preventAndStop(event);\n if (this.dragAndDrop) {\n this.showDropZone = true; // need to override onDocumentDragLeave function\n }\n }\n\n hasLiveUploadErrors(): boolean {\n return this.uploaderHelper.hasLiveUploadErrors(this.errors);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types\n protected removeFileOnConfirmation(document: any): void {\n this.deleteDocumentSubject.next(document);\n }\n\n protected displayLocalErrors(files: File[]): ErrorTemplate[] {\n const errors = this.uploaderHelper.getLocalErrors(\n this.name,\n files,\n this.customErrors,\n this.overrideMaxSizeInMo,\n this.overrideAcceptedExtensions,\n this.overrideMaxFileNameLength,\n this.overrideIllegalCharacters\n );\n\n this.refreshErrors([errors, true]);\n return errors;\n }\n}\n","import { Component, forwardRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport { MultiUploadService } from './multi-upload.service';\nimport { ErrorTemplate } from '../../error-template';\nimport { DocumentError, DocumentsWithErrors } from './multi-upload.type';\nimport { DocumentReference } from '../document-reference';\nimport { PendingUploadService } from './pending-upload.service';\nimport { Subscription } from 'rxjs';\nimport { ApplicationInfoService } from '../../sdk-appinfo/application-info.service';\nimport { filter, mergeMap, tap, throttleTime } from 'rxjs/operators';\nimport { FoehnConfirmModalService } from '../../foehn-confirm-modal/foehn-confirm-modal.service';\nimport { SdkDictionaryService } from '../../sdk-dictionary/sdk-dictionary.service';\nimport { AbstractFoehnUploaderComponent } from '../abstract-foehn-uploader.component';\nimport { FoehnInputComponent } from '../../foehn-input/foehn-input.component';\n\n@Component({\n selector: 'foehn-multi-upload',\n templateUrl: './foehn-multi-upload.component.html',\n styleUrls: ['../foehn-upload.component.css'],\n providers: [\n {\n provide: FoehnInputComponent,\n useExisting: forwardRef(() => FoehnMultiUploadComponent),\n multi: true\n }\n ]\n})\nexport class FoehnMultiUploadComponent\n extends AbstractFoehnUploaderComponent<DocumentReference[]>\n implements OnInit, OnDestroy {\n @Input()\n url = 'api/document';\n\n @Input()\n reference: string;\n\n multiUploadService: MultiUploadService;\n pendingUploadService: PendingUploadService;\n\n private pendingUploadedErrorsSubscription: Subscription;\n\n constructor(\n multiUploadService: MultiUploadService,\n pendingUploadService: PendingUploadService,\n protected applicationInfoService: ApplicationInfoService,\n protected confirmModalService: FoehnConfirmModalService,\n protected dictionaryService: SdkDictionaryService\n ) {\n super(applicationInfoService, confirmModalService, dictionaryService);\n this.pendingUploadService = pendingUploadService;\n this.multiUploadService = multiUploadService;\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n\n this.pendingUploadedErrorsSubscription = this.pendingUploadService.pendingUploadedErrors.subscribe(\n (response: DocumentsWithErrors) => {\n this.displayPendingUploadedErrorsFromServerByFormKey(\n response.errors,\n this.name\n );\n }\n );\n\n // Add files logic\n this.uploadFilesSubscription = this.uploadFilesSubject\n .pipe(\n filter(files => !!files),\n // Only one call every 300ms to stop concurrent access\n throttleTime(300),\n // Only one concurrent call at the time\n mergeMap(\n files =>\n this.multiUploadService.uploadDocuments(\n this.url,\n this.name,\n this.label,\n files,\n this.key,\n this.multiple,\n this.currentLanguage\n ),\n 1\n )\n )\n .subscribe(\n ({ documents, errors }) => {\n this.displayResultFromServer(documents, errors);\n },\n (error: unknown) => {\n const errors: ErrorTemplate[] = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const { status }: any = error;\n this.uploaderHelper.addCustomErrorOrDefault(\n this.name,\n errors,\n `${status}`,\n '',\n this.customErrors,\n this.overrideMaxSizeInMo,\n this.overrideAcceptedExtensions,\n this.overrideMaxFileNameLength,\n this.overrideIllegalCharacters\n );\n this.refreshErrors([errors, true]);\n }\n );\n\n // Delete document logic\n this.deleteDocumentSubscription = this.deleteDocumentSubject\n .pipe(\n filter(document => !!document),\n // Only one call every 300 ms to stop concurrent access\n throttleTime(300),\n // Only one concurrent call at the time\n mergeMap(\n document =>\n this.multiUploadService.deleteDocument(\n this.url,\n document\n ),\n 1\n ),\n // Side effect once the document has been deleted.\n tap(document => this.removeDocumentFromModel(document))\n )\n .subscribe();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n\n if (!!this.pendingUploadedErrorsSubscription) {\n this.pendingUploadedErrorsSubscription.unsubscribe();\n }\n }\n\n get pendingFiles(): File[] {\n return this.pendingUploadService.getPendingFiles(this.name);\n }\n\n trackByPending(pending: File): number {\n return pending.lastModified;\n }\n\n canAddMoreFiles(): boolean {\n if (this.readonly) {\n return false;\n }\n\n if (this.multiple) {\n return true;\n }\n\n if (this.model && !!this.model.length) {\n return false;\n }\n\n return !this.pendingUploadService.hasPendingFiles(this.name);\n }\n\n onFileChange(event: EventTarget): void {\n // PRESTAKIT-309: Mark as pristine so errors can be shown directly to user when uploading file\n this.markAsPristine();\n\n const eventObj: MSInputMethodContext = event as MSInputMethodContext;\n const target: HTMLInputElement = eventObj.target as HTMLInputElement;\n this.populateFileItemList(target.files);\n target.value = null; // reset hidden file input values\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types\n onDrop(event: any): void {\n this.uploaderHelper.preventAndStop(event);\n if (this.dragAndDrop) {\n const fileList: FileList = this.uploaderHelper.getTransfer(event);\n if (fileList) {\n this.populateFileItemList(fileList);\n }\n this.showDropZone = false;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types\n protected removeFileOnConfirmation(document: any): void {\n if (!!this.reference) {\n super.removeFileOnConfirmation(document);\n } else {\n // The document hasn't been uploaded.\n this.pendingUploadService.removePendingFile(document, this.name);\n }\n }\n\n private populateFileItemList(fileList: FileList): void {\n let files = Array.from(fileList);\n\n if (!files.length) {\n return;\n }\n\n // When drag/drop and asked for single upload, we ensure we store only one file for upload\n if (this.dragAndDrop && !this.multiple) {\n files = this.manageSingleFile(files);\n }\n\n // Display local errors and stop processing\n const filesErrors = this.displayLocalErrors(files);\n if (filesErrors.length) {\n return;\n }\n\n // Initialize model if empty\n if (!this.model || !this.model.length) {\n this.model = [];\n }\n\n if (!!this.reference) {\n // When we have a reference, we send files to server\n this.uploadFilesSubject.next(files);\n } else {\n // PRESTAKIT-309: Simulate user interaction with component\n // only when no error so isPristine is set to false for validation purpose\n this.markAsDirty();\n\n // Otherwise, we store files in pending storage\n this.pendingUploadService.addPendingFiles(\n this.url,\n this.name,\n this.label,\n files,\n this.key,\n this.multiple\n );\n }\n }\n\n private displayPendingUploadedErrorsFromServerByFormKey(\n errors: DocumentError[],\n formKey: string\n ): void {\n const errorsByFormKey = errors.filter(\n (error: DocumentError) => error.formKey === formKey\n );\n this.displayErrorsFromServer(errorsByFormKey);\n }\n\n private displayResultFromServer(\n documents: DocumentReference[],\n errors: DocumentError[]\n ): void {\n this.displayErrorsFromServer(errors);\n this.model = [...this.model, ...(documents || [])];\n this.triggerUserInput(this.model);\n }\n\n private removeDocumentFromModel(document: DocumentReference): void {\n const index = this.model.indexOf(document);\n if (index > -1) {\n this.model.splice(index, 1);\n this.model = [...this.model];\n this.triggerUserInput(this.model);\n }\n }\n\n private displayErrorsFromServer(errors: DocumentError[]): void {\n if (!errors || !errors.length) {\n // PRESTAKIT-309: Simulate user interaction with component\n // only when no error so isPristine is set to false for validation purpose\n this.markAsDirty();\n return;\n }\n\n const newErrors: ErrorTemplate[] = [];\n errors.forEach(error =>\n this.uploaderHelper.addCustomErrorOrDefault(\n this.name,\n newErrors,\n `${error.errorCode}`,\n error.label,\n this.customErrors,\n this.overrideMaxSizeInMo,\n this.overrideAcceptedExtensions,\n this.overrideMaxFileNameLength,\n this.overrideIllegalCharacters\n )\n );\n\n this.refreshErrors([newErrors, true]);\n }\n\n private manageSingleFile(files: File[]): File[] {\n // Edge browser lets you drop files from dialog box when selecting a file.\n // We need to make sure we only keep last selected file from user\n if (!!this.reference) {\n if (this.model && this.model.length > 0) {\n const currentModelFiles = [...this.model];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n currentModelFiles.forEach((doc: any) =>\n this.removeFileOnConfirmation(doc)\n );\n }\n } else {\n const currentPendingFiles = [...this.pendingFiles];\n if (currentPendingFiles.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n currentPendingFiles.forEach((doc: any) =>\n this.removeFileOnConfirmation(doc)\n );\n }\n }\n // Then we ensure we take only one file from current selection\n return files.slice(0, 1);\n }\n}\n","<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [class.drop-zone-highlight]=\"showDropZone\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n (drop)=\"onDrop($event)\"\n (dragenter)=\"onDragenter($event)\"\n (dragleave)=\"onDragleave($event)\"\n (dragover)=\"onDragover($event)\"\n>\n <label\n [attr.for]=\"buildChildId()\"\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : labelStyleModifier\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </label>\n\n <foehn-validation-alerts\n [component]=\"this\"\n [shouldErrorsBeLive]=\"hasLiveUploadErrors()\"\n ></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <!-- PRESTAKIT-309: Fake input with NgModel to be registered into Form controls -->\n <input type=\"hidden\" [name]=\"name || label\" [ngModel]=\"model\" />\n\n <ng-content></ng-content>\n\n <ng-container *ngIf=\"reference\">\n <div\n *ngFor=\"let document of model; trackBy: trackByDocument\"\n class=\"file file-uploaded\"\n >\n <a [href]=\"multiUploadService.getDownloadUrl(url, document)\">\n {{ document.filename }}\n </a>\n <span class=\"ml-1 mr-1\">\n ({{ toMegaOctets(document.fileSize) }}\n <abbr title=\"Megaoctet\">Mo</abbr>\n )\n </span>\n <button\n *ngIf=\"!readonly\"\n type=\"button\"\n class=\"btn icon-button delete-uploaded\"\n (click)=\"removeFile(document)\"\n >\n <foehn-icon-times\n title=\"Supprimer {{ document.filename }}\"\n ></foehn-icon-times>\n </button>\n </div>\n\n <small\n class=\"form-text text-secondary uploaded-global-info\"\n *ngIf=\"showGlobalInfos(model)\"\n [innerHTML]=\"getGlobalInfos(model)\"\n ></small>\n </ng-container>\n\n <ng-container *ngIf=\"!reference\">\n <div\n *ngFor=\"let pending of pendingFiles; trackBy: trackByPending\"\n class=\"file file-pending\"\n >\n <span>{{ pending.name }}</span>\n <span class=\"ml-1 mr-1\">\n ({{ toMegaOctets(pending.size) }}\n <abbr title=\"Megaoctet\">Mo</abbr>\n )\n </span>\n <button\n *ngIf=\"!readonly\"\n type=\"button\"\n class=\"btn icon-button delete-pending\"\n (click)=\"removeFile(pending)\"\n >\n <foehn-icon-times\n title=\"Supprimer {{ pending.name }}\"\n ></foehn-icon-times>\n </button>\n </div>\n\n <small\n class=\"form-text text-secondary pending-global-info\"\n *ngIf=\"showGlobalInfos(pendingFiles)\"\n [innerHTML]=\"getGlobalInfos(pendingFiles)\"\n ></small>\n </ng-container>\n\n <ng-container *ngIf=\"canAddMoreFiles()\">\n <input\n class=\"form-control-file actual-input\"\n type=\"file\"\n [name]=\"name || label\"\n [multiple]=\"multiple\"\n [attr.accept]=\"\n overrideAcceptedExtensions\n ? overrideAcceptedExtensions\n : uploaderHelper.accept\n ? uploaderHelper.accept\n : null\n \"\n (change)=\"onFileChange($event)\"\n #inputFile\n />\n\n <button\n type=\"button\"\n class=\"btn btn-primary\"\n [ngClass]=\"{ 'sr-only': !showUploadButton }\"\n [attr.id]=\"buildChildId()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-describedby]=\"buildId('ErrorsContainer')\"\n (click)=\"inputFile.click()\"\n #entryComponent\n >\n {{ multiple ? chooseButtonLabelMultiple : chooseButtonLabel }}\n </button>\n\n <div\n *ngIf=\"dragAndDrop\"\n aria-hidden=\"true\"\n class=\"dropfile\"\n [class.dropfile-border-transparent]=\"showDropZone\"\n (click)=\"inputFile.click()\"\n >\n {{ multiple ? dropZoneLabelMultiple : dropZoneLabel }}\n </div>\n </ng-container>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FoehnIconsModule } from '../../foehn-icons/foehn-icons.module';\nimport { FoehnValidationAlertsModule } from '../../foehn-validation-alerts/foehn-validation-alerts.module';\nimport { FoehnMultiUploadComponent } from './foehn-multi-upload.component';\nimport { SdkDictionaryModule } from '../../sdk-dictionary/sdk-dictionary.module';\nimport { FormsModule } from '@angular/forms';\n\n@NgModule({\n imports: [\n CommonModule,\n FoehnIconsModule,\n FoehnValidationAlertsModule,\n SdkDictionaryModule,\n FormsModule\n ],\n declarations: [FoehnMultiUploadComponent],\n exports: [FoehnMultiUploadComponent]\n})\nexport class FoehnMultiUploadModule {}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { catchError, map, tap } from 'rxjs/operators';\nimport { Observable, throwError } from 'rxjs';\nimport { BoDocumentsWithErrors } from './bo-multi-upload.type';\nimport { GrowlType } from '../../foehn-growl/growl-types';\nimport { GrowlBrokerService } from '../../foehn-growl/growl-broker.service';\nimport { DocumentReference } from '../document-reference';\nimport { ApplicationInfoService } from '../../sdk-appinfo/application-info.service';\nimport { SdkDictionaryService } from '../../sdk-dictionary/sdk-dictionary.service';\nimport { UploaderHelper } from '../uploader.helper';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BoMultiUploadService {\n // A way to have a unique Id per file\n private globalSequence = 0;\n private uniqPrefix = new Date().getTime();\n private uploaderHelper: UploaderHelper;\n\n constructor(\n private httpClient: HttpClient,\n private growlService: GrowlBrokerService,\n private applicationInfoService: ApplicationInfoService,\n private dictionaryService: SdkDictionaryService\n ) {\n this.uploaderHelper = new UploaderHelper(\n dictionaryService,\n applicationInfoService\n );\n }\n\n uploadDocuments(\n url: string,\n formKey: string,\n label: string,\n files: File[],\n key: string,\n isMultiple: boolean,\n language: string\n ): Observable<BoDocumentsWithErrors> {\n const documents = files.map(file =>\n this.uploaderHelper.mapToDocumentReference(\n file,\n label,\n key,\n isMultiple,\n this.uniqPrefix,\n this.globalSequence++\n )\n );\n const formData = this.uploaderHelper.mapToFormData(\n documents,\n formKey,\n language\n );\n return this.httpClient.post<BoDocumentsWithErrors>(url, formData).pipe(\n tap(result => {\n const successfulDocumentsCount =\n result.documents && result.documents.length;\n if (successfulDocumentsCount) {\n const message = `${successfulDocumentsCount} fichier(s) sauvegardé(s) avec succès`;\n this.growlService.addWithType(GrowlType.SUCCESS, message);\n }\n }),\n catchError((e: unknown) => {\n const message =\n 'Une erreur est survenue lors de la transmission de vos documents';\n this.growlService.addWithType(GrowlType.DANGER, message);\n return throwError(e);\n })\n );\n }\n\n deleteDocument(\n baseUrl: string,\n document: DocumentReference\n ): Observable<DocumentReference> {\n const url = `${baseUrl}/${document.reference}`;\n\n return this.httpClient.delete(url).pipe(\n // Reflect the document once the update is done to ease chaining observables.\n map(() => document),\n tap(() => {\n const message = `Suppression du fichier ${document.filename} réussie`;\n this.growlService.addWithType(GrowlType.SUCCESS, message);\n }),\n catchError((e: unknown) => {\n const message =\n 'Une erreur est survenue lors de la suppression de votre document';\n this.growlService.addWithType(GrowlType.DANGER, message);\n return throwError(e);\n })\n );\n }\n\n getDownloadUrl(baseUrl: string, document: DocumentReference): string {\n return `${baseUrl}/${document.reference}`;\n }\n}\n","import {\n Component,\n EventEmitter,\n forwardRef,\n Input,\n OnDestroy,\n OnInit,\n Output\n} from '@angular/core';\nimport { filter, mergeMap, tap, throttleTime } from 'rxjs/operators';\nimport { BoMultiUploadService } from './bo-multi-upload.service';\nimport { DocumentReference } from '../document-reference';\nimport { ApplicationInfoService } from '../../sdk-appinfo/application-info.service';\nimport { FoehnConfirmModalService } from '../../foehn-confirm-modal/foehn-confirm-modal.service';\nimport { SdkDictionaryService } from '../../sdk-dictionary/sdk-dictionary.service';\nimport { ErrorTemplate } from '../../error-template';\nimport { BoDocumentError } from './bo-multi-upload.type';\nimport { AbstractFoehnUploaderComponent } from '../abstract-foehn-uploader.component';\nimport { FoehnInputComponent } from '../../foehn-input/foehn-input.component';\n\n@Component({\n selector: 'foehn-bo-multi-upload',\n templateUrl: './foehn-bo-multi-upload.component.html',\n styleUrls: ['../foehn-upload.component.css'],\n providers: [\n {\n provide: FoehnInputComponent,\n useExisting: forwardRef(() => FoehnBoMultiUploadComponent),\n multi: true\n }\n ]\n})\nexport class FoehnBoMultiUploadComponent\n extends AbstractFoehnUploaderComponent<DocumentReference[]>\n implements OnInit, OnDestroy {\n @Input()\n uploadUrl: string;\n\n @Input()\n deleteUrl: string;\n\n @Input()\n downloadUrl: string;\n\n @Output()\n documentDeleted = new EventEmitter<DocumentReference>();\n\n boMultiUploadService: BoMultiUploadService;\n\n constructor(\n boMultiUploadService: BoMultiUploadService,\n protected applicationInfoService: ApplicationInfoService,\n protected confirmModalService: FoehnConfirmModalService,\n protected dictionaryService: SdkDictionaryService\n ) {\n super(applicationInfoService, confirmModalService, dictionaryService);\n this.boMultiUploadService = boMultiUploadService;\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n\n // Add files logic\n this.uploadFilesSubscription = this.uploadFilesSubject\n .pipe(\n filter(files => !!files),\n // Only one call every 300ms to stop concurrent access\n throttleTime(300),\n // Only one concurrent call at the time\n mergeMap(\n files =>\n this.boMultiUploadService.uploadDocuments(\n this.uploadUrl,\n this.name,\n this.label,\n files,\n this.key,\n this.multiple,\n this.currentLanguage\n ),\n 1\n )\n )\n .subscribe(\n ({ documents, errors }) => {\n this.displayResultFromServer(documents, errors);\n },\n (error: unknown) => {\n const errors: ErrorTemplate[] = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const { status }: any = error;\n this.uploaderHelper.addCustomErrorOrDefault(\n this.name,\n errors,\n `${status}`,\n '',\n this.customErrors,\n this.overrideMaxSizeInMo,\n this.overrideAcceptedExtensions,\n this.overrideMaxFileNameLength,\n this.overrideIllegalCharacters\n );\n this.refreshErrors([errors, true]);\n }\n );\n\n // Delete document logic\n this.deleteDocumentSubscription = this.deleteDocumentSubject\n .pipe(\n filter(document => !!document),\n // Only one call every 300 ms to stop concurrent access\n throttleTime(300),\n // Only one concurrent call at the time\n mergeMap(\n document =>\n this.boMultiUploadService.deleteDocument(\n this.deleteUrl,\n document\n ),\n 1\n ),\n // Side effect once the document has been deleted.\n tap(document => this.documentDeleted.next(document)),\n tap(document => this.removeDocumentFromModel(document))\n )\n .subscribe();\n }\n\n canAddMoreFiles(): boolean {\n if (this.readonly) {\n return false;\n }\n\n if (this.multiple) {\n return true;\n }\n\n return !(this.model && !!this.model.length);\n }\n\n onFileChange(event: EventTarget): void {\n // PRESTAKIT-309: Mark as pristine so errors can be shown directly to user when uploading file\n this.markAsPristine();\n\n const eventObj: MSInputMethodContext = event as MSInputMethodContext;\n const target: HTMLInputElement = eventObj.target as HTMLInputElement;\n this.populateFileItemList(target.files);\n target.value = null; // reset hidden file input values\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types\n onDrop(event: any): void {\n this.uploaderHelper.preventAndStop(event);\n if (this.dragAndDrop) {\n const fileList: FileList = this.uploaderHelper.getTransfer(event);\n if (fileList) {\n this.populateFileItemList(fileList);\n }\n }\n }\n\n private populateFileItemList(fileList: FileList): void {\n let files = Array.from(fileList);\n\n if (!files.length) {\n return;\n }\n\n // When drag/drop and asked for single upload, we ensure we store only one file for upload\n if (this.dragAndDrop && !this.multiple) {\n files = this.manageSingleFile(files);\n }\n\n // Display local errors and stop processing\n const filesErrors = this.displayLocalErrors(files);\n if (filesErrors.length) {\n return;\n }\n\n // Initialize model if empty\n if (!this.model || !this.model.length) {\n this.model = [];\n }\n\n // we send files to server\n this.uploadFilesSubject.next(files);\n }\n\n private displayResultFromServer(\n documents: DocumentReference[],\n errors: BoDocumentError[]\n ): void {\n this.displayErrorsFromServer(errors);\n this.model = [...this.model, ...(documents || [])];\n this.triggerUserInput(this.model);\n }\n\n private displayErrorsFromServer(errors: BoDocumentError[]): void {\n if (!errors || !errors.length) {\n // PRESTAKIT-309: Simulate user interaction with component\n // only when no error so isPristine is set to false for validation purpose\n this.markAsDirty();\n return;\n }\n\n const newErrors: ErrorTemplate[] = [];\n errors.forEach(error =>\n this.uploaderHelper.addCustomErrorOrDefault(\n this.name,\n newErrors,\n `${error.errorCode}`,\n error.label,\n this.customErrors,\n this.overrideMaxSizeInMo,\n this.overrideAcceptedExtensions,\n this.overrideMaxFileNameLength,\n this.overrideIllegalCharacters\n )\n );\n\n this.refreshErrors([newErrors, true]);\n }\n\n private removeDocumentFromModel(document: DocumentReference): void {\n const index = this.model.indexOf(document);\n if (index > -1) {\n this.model.splice(index, 1);\n this.model = [...this.model];\n this.triggerUserInput(this.model);\n }\n }\n\n private manageSingleFile(files: File[]): File[] {\n // Edge browser lets you drop files from dialog box when selecting a file.\n // We need to make sure we only keep last selected file from user\n if (this.model && this.model.length > 0) {\n const currentModelFiles = [...this.model];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n currentModelFiles.forEach((doc: any) =>\n this.removeFileOnConfirmation(doc)\n );\n }\n // Then we ensure we take only one file from current selection\n return files.slice(0, 1);\n }\n}\n","<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [class.drop-zone-highlight]=\"showDropZone\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n (drop)=\"onDrop($event)\"\n (dragenter)=\"onDragenter($event)\"\n (dragleave)=\"onDragleave($event)\"\n (dragover)=\"onDragover($event)\"\n>\n <label\n [attr.for]=\"buildChildId()\"\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : labelStyleModifier\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </label>\n\n <foehn-validation-alerts\n [component]=\"this\"\n [shouldErrorsBeLive]=\"hasLiveUploadErrors()\"\n ></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <!-- PRESTAKIT-309: Fake input with NgModel to be registered into Form controls -->\n <input type=\"hidden\" [name]=\"name || label\" [ngModel]=\"model\" />\n\n <ng-content></ng-content>\n\n <div\n *ngFor=\"let document of model; trackBy: trackByDocument\"\n class=\"file file-uploaded\"\n >\n <a [href]=\"boMultiUploadService.getDownloadUrl(downloadUrl, document)\">\n {{ document.filename }}\n </a>\n <span class=\"ml-1 mr-1\">\n ({{ toMegaOctets(document.fileSize) }}\n <abbr\n [title]=\"'foehn-uploader.abbr-megaoctet-title' | fromDictionary\"\n >\n {{ 'foehn-uploader.abbr-megaoctet' | fromDictionary }}\n </abbr>\n )\n </span>\n <button\n *ngIf=\"!readonly\"\n type=\"button\"\n class=\"btn icon-button delete-uploaded\"\n (click)=\"removeFile(document)\"\n >\n <foehn-icon-times\n [title]=\"\n 'foehn-uploader.delete-icon-title'\n | fromDictionary: { docName: document.filename }\n \"\n ></foehn-icon-times>\n </button>\n </div>\n\n <small\n class=\"form-text text-secondary uploaded-global-info\"\n *ngIf=\"showGlobalInfos(model)\"\n [innerHTML]=\"getGlobalInfos(model)\"\n ></small>\n\n <ng-container *ngIf=\"canAddMoreFiles()\">\n <input\n class=\"form-control-file actual-input\"\n type=\"file\"\n [name]=\"name || label\"\n [multiple]=\"multiple\"\n [attr.accept]=\"\n overrideAcceptedExtensions\n ? overrideAcceptedExtensions\n : uploaderHelper.accept\n ? uploaderHelper.accept\n : null\n \"\n (change)=\"onFileChange($event)\"\n #inputFile\n />\n\n <button\n type=\"button\"\n class=\"btn btn-primary\"\n [ngClass]=\"{ 'sr-only': !showUploadButton }\"\n [attr.id]=\"buildChildId()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-describedby]=\"buildId('ErrorsContainer')\"\n (click)=\"inputFile.click()\"\n #entryComponent\n >\n {{ multiple ? chooseButtonLabelMultiple : chooseButtonLabel }}\n </button>\n\n <div\n *ngIf=\"dragAndDrop\"\n aria-hidden=\"true\"\n class=\"dropfile\"\n [class.dropfile-border-transparent]=\"showDropZone\"\n (click)=\"inputFile.click()\"\n >\n {{ multiple ? dropZoneLabelMultiple : dropZoneLabel }}\n </div>\n </ng-container>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FoehnIconsModule } from '../../foehn-icons/foehn-icons.module';\nimport { FoehnValidationAlertsModule } from '../../foehn-validation-alerts/foehn-validation-alerts.module';\nimport { FoehnBoMultiUploadComponent } from './foehn-bo-multi-upload.component';\nimport { SdkDictionaryModule } from '../../sdk-dictionary/sdk-dictionary.module';\nimport { FormsModule } from '@angular/forms';\n\n@NgModule({\n imports: [\n CommonModule,\n FoehnIconsModule,\n FoehnValidationAlertsModule,\n SdkDictionaryModule,\n FormsModule\n ],\n declarations: [FoehnBoMultiUploadComponent],\n exports: [FoehnBoMultiUploadComponent]\n})\nexport class FoehnBoMultiUploadModule {}\n","import { DocumentReference } from '../document-reference';\n\n// eslint-disable max-classes-per-file\nexport class BoDocumentError {\n key: string;\n label: string;\n formKey: string;\n errorCode: string;\n}\n\nexport class BoDocumentsWithErrors {\n documents: DocumentReference[];\n errors: BoDocumentError[];\n}\n","import { Component, forwardRef, Input, OnInit } from '@angular/core';\nimport { distinctUntilChanged, filter } from 'rxjs/operators';\n\nimport { Subscription } from 'rxjs';\nimport { FoehnInputComponent } from '../../foehn-input/foehn-input.component';\nimport { DocumentReference } from '../../foehn-upload/document-reference';\nimport { GrowlBrokerService } from '../../foehn-growl/growl-broker.service';\nimport { MultiUploadService } from '../../foehn-upload/foehn-multi-upload/multi-upload.service';\nimport { SdkDictionaryService } from '../../sdk-dictionary/sdk-dictionary.service';\nimport { ErrorTemplate } from '../../error-template';\nimport { ImageCroppedEvent } from 'ngx-image-cropper';\n\nconst blobToFile = (blobData: Blob, fileName: string): File => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const blob: any = blobData;\n blob.name = fileName;\n return blob as File;\n};\n\nconst convertBase64UrlToFile = (\n croppedImageasBase64Url: string,\n filename: string\n): File => {\n const arr = croppedImageasBase64Url.split(',');\n const mime = arr[0].match(/:(.*?);/)[1];\n const bstr = atob(arr[1]);\n let n = bstr.length;\n const u8arr = new Uint8Array(n);\n while (n--) {\n u8arr[n] = bstr.charCodeAt(n);\n }\n\n if (!navigator.msSaveBlob) {\n // detect if not Edge\n return new File([u8arr], filename, { type: mime });\n } else {\n // Edge support the FileAPI but not the File constructor.\n return blobToFile(new Blob([u8arr], { type: mime }), filename);\n }\n};\n\n@Component({\n selector: 'foehn-picture-upload',\n templateUrl: './foehn-picture-upload.component.html',\n providers: [\n {\n provide: FoehnInputComponent,\n useExisting: forwardRef(() => FoehnPictureUploadComponent),\n multi: true\n }\n ]\n})\nexport class FoehnPictureUploadComponent\n extends FoehnInputComponent<DocumentReference[]>\n implements OnInit {\n @Input()\n name: string;\n\n @Input()\n key: string;\n\n @Input()\n label: string;\n\n @Input()\n baseUrl = 'api/document';\n\n @Input()\n croppedPictureFilename = 'photo.png';\n\n @Input()\n resizeToWidth = 300;\n\n @Input()\n resizeToHeight = 0;\n\n pictureToCrop: Event;\n croppedPictureAsBase64Url: string;\n loading = false;\n\n protected currentLanguageSubscription: Subscription;\n protected currentLanguage: string;\n\n constructor(\n private growlService: GrowlBrokerService,\n private uploadService: MultiUploadService,\n private dictionaryService: SdkDictionaryService\n ) {\n super();\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.currentLanguageSubscription = this.dictionaryService\n .getCurrentLanguageCode()\n .pipe(distinctUntilChanged())\n .subscribe(language => {\n this.currentLanguage = language;\n });\n }\n\n onPictureSelection(imgEvent: Event): void {\n this.refreshErrors([[], true]);\n this.pictureToCrop = imgEvent;\n this.loading = true;\n }\n\n onPictureSelectionFailed(): void {\n const errors = [\n {\n name: this.name,\n code: 'LoadingFailure',\n message: this.dictionaryService.getKeySync(\n 'foehn-picture-upload.loading-failure-label'\n )\n }\n ];\n this.refreshErrors([errors, true]);\n this.resetPictureSelection();\n }\n\n onImageCropped(croppedEvent: ImageCroppedEvent): void {\n this.croppedPictureAsBase64Url = croppedEvent.base64;\n }\n\n resetPictureSelection(): void {\n this.croppedPictureAsBase64Url = null;\n this.pictureToCrop = null;\n this.loading = false;\n }\n\n savePicture(): void {\n this.markAsPristine();\n\n const photo = convertBase64UrlToFile(\n this.croppedPictureAsBase64Url,\n this.croppedPictureFilename\n );\n\n this.uploadService\n .uploadDocuments(\n this.baseUrl,\n this.name,\n this.label,\n [photo],\n this.key,\n false,\n this.currentLanguage\n )\n .pipe(filter(result => !!result))\n .subscribe(({ documents, errors }) => {\n this.resetPictureSelection();\n if (!!documents.length) {\n this.markAsDirty();\n this.model = documents;\n this.refreshErrors([[], true]);\n } else {\n this.model = [];\n this.refreshErrors([errors, true]);\n }\n });\n }\n\n deleteFile(): void {\n this.uploadService\n .deleteDocument(this.baseUrl, this.model[0])\n .subscribe(() => {\n this.model = [];\n this.resetPictureSelection();\n });\n }\n\n getDownloadUrl(): string {\n return this.uploadService.getDownloadUrl(this.baseUrl, this.model[0]);\n }\n\n get hasPicture(): boolean {\n return this.model && this.model.length && !!this.model[0].reference;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n refreshErrors(results: any[]): void {\n const errors: ErrorTemplate[] = results[0];\n\n const isInSelectionMode =\n !this.hasPicture && !!this.croppedPictureAsBase64Url;\n if (isInSelectionMode) {\n const notNullError = errors.find(\n e => e.name === this.name && e.code === 'NotEmpty'\n );\n if (notNullError) {\n notNullError.message = this.dictionaryService.getKeySync(\n 'foehn-picture-upload.selection-not-validated-label'\n );\n }\n }\n\n super.refreshErrors(results);\n }\n}\n","<div\n [attr.id]=\"buildId('Container')\"\n [class.has-danger]=\"hasErrors()\"\n [class.vd-form-group-danger]=\"hasErrors()\"\n class=\"form-group clearable-input-form-group\"\n tabindex=\"-1\"\n>\n <label\n [attr.for]=\"buildChildId()\"\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : labelStyleModifier\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </label>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <input type=\"hidden\" [name]=\"name || label\" [ngModel]=\"model\" />\n\n <ng-content></ng-content>\n\n <div *ngIf=\"hasPicture\" class=\"row\">\n <div class=\"col-md-6\">\n <img\n [id]=\"buildChildId('Picture')\"\n [attr.alt]=\"label\"\n [src]=\"getDownloadUrl()\"\n />\n </div>\n <div class=\"col-md-4\">\n <button\n type=\"button\"\n class=\"btn btn-danger w-100\"\n [attr.id]=\"buildChildId('DeleteButton')\"\n (click)=\"deleteFile()\"\n >\n {{\n 'foehn-picture-upload.delete-picture-label' | fromDictionary\n }}\n </button>\n </div>\n </div>\n\n <div *ngIf=\"!hasPicture && !croppedPictureAsBase64Url\">\n <input\n #inputFile\n type=\"file\"\n class=\"form-control-file d-none\"\n [attr.id]=\"name\"\n [attr.accept]=\"'.jpeg,.jpg,.png'\"\n [multiple]=\"false\"\n [name]=\"name\"\n (change)=\"onPictureSelection($event)\"\n />\n\n <button\n type=\"button\"\n class=\"btn btn-primary my-2\"\n [attr.id]=\"buildChildId('ChooseButton')\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-describedby]=\"buildId('ErrorsContainer')\"\n (click)=\"inputFile.click()\"\n [disabled]=\"loading\"\n >\n {{ 'foehn-picture-upload.choose-button-label' | fromDictionary }}\n </button>\n </div>\n\n <div *ngIf=\"loading\">\n {{ 'foehn-picture-upload.loading-label' | fromDictionary }}\n </div>\n\n <div *ngIf=\"!hasPicture\" class=\"row\">\n <div class=\"col-md-6\">\n <image-cropper\n [id]=\"buildChildId('Cropper')\"\n (cropperReady)=\"loading = false\"\n (imageCropped)=\"onImageCropped($event)\"\n (loadImageFailed)=\"onPictureSelectionFailed()\"\n [aspectRatio]=\"3 / 4\"\n [imageChangedEvent]=\"pictureToCrop\"\n [maintainAspectRatio]=\"true\"\n [resizeToWidth]=\"resizeToWidth\"\n [resizeToHeight]=\"resizeToHeight\"\n [onlyScaleDown]=\"true\"\n format=\"png\"\n ></image-cropper>\n </div>\n\n <div *ngIf=\"!hasPicture\" class=\"col-md-4\">\n <div class=\"row mb-3\">\n <button\n *ngIf=\"croppedPictureAsBase64Url\"\n type=\"button\"\n class=\"btn btn-primary w-100\"\n [attr.id]=\"buildChildId('SaveButton')\"\n (click)=\"savePicture()\"\n >\n {{\n 'foehn-picture-upload.validate-selection-label'\n | fromDictionary\n }}\n </button>\n </div>\n <div class=\"row\">\n <button\n *ngIf=\"croppedPictureAsBase64Url\"\n type=\"button\"\n class=\"btn btn-secondary w-100\"\n [attr.id]=\"buildChildId('CancelButton')\"\n (click)=\"resetPictureSelection()\"\n >\n {{\n 'foehn-picture-upload.cancel-selection-label'\n | fromDictionary\n }}\n </button>\n </div>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FoehnIconsModule } from '../../foehn-icons/foehn-icons.module';\nimport { FoehnValidationAlertsModule } from '../../foehn-validation-alerts/foehn-validation-alerts.module';\nimport { SdkDictionaryModule } from '../../sdk-dictionary/sdk-dictionary.module';\nimport { FormsModule } from '@angular/forms';\nimport { FoehnPictureUploadComponent } from './foehn-picture-upload.component';\nimport { ImageCropperModule } from 'ngx-image-cropper';\n\n@NgModule({\n imports: [\n CommonModule,\n FoehnIconsModule,\n FoehnValidationAlertsModule,\n SdkDictionaryModule,\n FormsModule,\n ImageCropperModule\n ],\n declarations: [FoehnPictureUploadComponent],\n exports: [FoehnPictureUploadComponent]\n})\nexport class FoehnPictureUploadModule {}\n","export class EPaymentRequest {\n firstName: string;\n lastName: string;\n address: string;\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { catchError, filter } from 'rxjs/operators';\nimport { EPaymentRequest } from './model/EPaymentRequest';\nimport { GrowlType } from '../foehn-growl/growl-types';\nimport { GrowlBrokerService } from '../foehn-growl/growl-broker.service';\nimport { EPaymentParameters } from './model/EPaymentParameters';\nimport { Observable, of } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EPaymentService {\n constructor(\n private http: HttpClient,\n private growlService: GrowlBrokerService\n ) {}\n\n /**\n * Effectuer une requête de préparation du paiement auprès du backend, et obtenir les paramètres de formulaire\n * en vue du passage sur la plateforme de paiement électronique.\n *\n * @param ref La référence de la demande en cours\n * @param req Les paramètres de préparation\n * @param baseUrl L'url de base (optionnelle)\n * @returns Les paramètres de paiement électronique à utiliser sur la plateforme pour ce paiement.\n */\n createPendingPayment(\n ref: string,\n req: EPaymentRequest,\n baseUrl: string\n ): Observable<EPaymentParameters> {\n const url = `${baseUrl}epayment/prepare/${ref}`;\n return this.http.post<EPaymentParameters>(url, req).pipe(\n catchError(() => this.handleError()),\n filter(value => !!value)\n );\n }\n\n cancelPendingPayment(ref: string, baseUrl: string): void {\n const url = `${baseUrl}epayment/cancel/${ref}`;\n this.http\n .post(url, null)\n .pipe(catchError(() => this.handleError()))\n .subscribe();\n }\n\n private handleError(): Observable<EPaymentParameters> {\n this.growlService.addWithType(\n GrowlType.DANGER,\n 'Une erreur de transmission est survenue. Merci de réessayer plus tard.'\n );\n return of(null);\n }\n}\n","import { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\nimport { EPaymentService } from './sdk-epayment.service';\nimport { EPaymentRequest } from './model/EPaymentRequest';\nimport { ActivatedRoute } from '@angular/router';\nimport { GesdemHandlerService } from '../gesdem/gesdem-handler.service';\nimport { GesdemEventService } from '../gesdem/gesdem-event.service';\nimport { first } from 'rxjs/operators';\n\n/**\n * Composant invisible à insérer dans une page SDK permettant d'effectuer des paiement sur la plateforme de paiement de\n * Postfinance. La méthode payNow() déclenche le paiement.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'epayment-form',\n templateUrl: './sdk-epayment.component.html',\n styleUrls: ['./sdk-epayment.component.css']\n})\nexport class SdkEpaymentComponent implements OnInit {\n @ViewChild('ePaymentForm', { static: true })\n ePaymentForm: ElementRef;\n\n @Input()\n baseUrl = 'api/';\n\n platformFailureMessage =\n 'Un problème non identifié est survenu lors du paiement électronique.';\n modalDisplayed = false;\n\n private platformFailureReason: string;\n\n private failureDetails = new Map([\n ['back', 'Vous avez abandonné le paiement électronique.'],\n ['cancel', 'Vous avez abandonné le paiement électronique.'],\n [\n 'refused',\n 'Le paiement a été refusé par le fournisseur de paiement électronique.'\n ],\n [\n 'error',\n 'Une erreur est survenue lors du paiement. Veuillez réessayer ou choisir un autre mode de paiement si disponible.'\n ]\n ]);\n\n constructor(\n private ePaymentService: EPaymentService,\n private readonly route: ActivatedRoute,\n private readonly gesDemService: GesdemHandlerService,\n private readonly gesdemEventService: GesdemEventService\n ) {}\n\n ngOnInit(): void {\n // En cas d'échec, la plateforme nous renvoie dans la page avec une raison.\n this.platformFailureReason = this.route.snapshot.queryParams.REASON;\n if (this.platformFailureReason) {\n this.handleFailure();\n }\n }\n\n /**\n * Déclenche le processus de paiement électronique. Le paiement est d'abord préparé avec GesDem, puis on navigue\n * vers la plateforme de paiement.\n *\n * @param ref La référence de la demande en cours\n * @param prenom Le prénom du payeur\n * @param nom Le nom de famille du payeur\n * @param adresse L'adresse postale du payeur\n */\n payNow(ref: string, prenom: string, nom: string, adresse: string): void {\n const req = new EPaymentRequest();\n req.firstName = prenom;\n req.lastName = nom;\n req.address = adresse;\n\n this.ePaymentService\n .createPendingPayment(ref, req, this.baseUrl)\n .subscribe(parameter => this.jumpToPlatform(parameter));\n }\n\n private handleFailure(): void {\n const message = this.failureDetails.get(this.platformFailureReason);\n if (message) {\n this.platformFailureMessage = message;\n }\n this.gesdemEventService\n .formInitializationObservable()\n .pipe(first())\n .subscribe(() => {\n const reference = this.gesDemService.lastResponse.meta\n .reference;\n this.ePaymentService.cancelPendingPayment(\n reference,\n this.baseUrl\n );\n });\n\n this.modalDisplayed = true;\n }\n\n /**\n * Prépare et soumet le formulaire HTML permettant de naviguer vers la plateforme de paiement électronique.\n *\n * @param param Objet retourné par GesDem contenant tous les paramètres nécessaires à la plateforme.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private jumpToPlatform(param: any): void {\n // Assembler les champs du formulaire à soumettre à la plateforme\n Object.keys(param).forEach(key => {\n const input = document.createElement('input');\n input.type = 'hidden';\n input.name = key.toUpperCase();\n input.value = param[key];\n this.ePaymentForm.nativeElement.appendChild(input);\n });\n\n // Remplissage du formulaire\n this.ePaymentForm.nativeElement.setAttribute(\n 'action',\n param.postFinanceUrl\n );\n\n // Soumettre le formulaire\n this.ePaymentForm.nativeElement.submit();\n }\n}\n","<foehn-modal\n [isModalVisible]=\"this.modalDisplayed\"\n [modalBodyText]=\"this.platformFailureMessage\"\n modalHeaderText=\"Le paiement n'a pu être effectué\"\n modalFooterText=\"L'Administration Cantonale Vaudoise\"\n (click)=\"this.modalDisplayed = false\"\n></foehn-modal>\n<form #ePaymentForm ngNoForm method=\"post\" hidden></form>\n","import { NgModule } from '@angular/core';\nimport { SdkEpaymentComponent } from './sdk-epayment.component';\nimport { CommonModule } from '@angular/common';\nimport { FoehnModalModule } from '../foehn-modal/foehn-modal.module';\nimport { GrowlBrokerService } from '../foehn-growl/growl-broker.service';\n\n@NgModule({\n imports: [CommonModule, FoehnModalModule],\n declarations: [SdkEpaymentComponent],\n providers: [GrowlBrokerService],\n exports: [SdkEpaymentComponent]\n})\nexport class SdkEpaymentModule {}\n","import { Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport { HelpModal } from './foehn-help-modal.type';\n\n@Component({\n selector: 'foehn-help-modal',\n templateUrl: './foehn-help-modal.component.html',\n styleUrls: ['./foehn-help-modal.component.css']\n})\nexport class FoehnHelpModalComponent {\n @Input()\n modalContent: HelpModal;\n\n @ViewChild('modalTrigger', { static: true })\n modalTrigger: ElementRef;\n\n @ViewChild('content', { static: true })\n content: ElementRef;\n\n private isVisible = false;\n\n get isModalVisible(): boolean {\n return !!this.modalContent && this.isVisible;\n }\n\n get currentModalTitle(): string {\n return this.modalContent && this.modalContent.title;\n }\n\n open(): void {\n this.isVisible = true;\n }\n\n close(): void {\n this.updateVisibilityStatus(false);\n }\n\n updateVisibilityStatus(status: boolean): void {\n // In case the modal is closed by another mean.\n this.isVisible = status;\n }\n\n hasContent(): boolean {\n return this.content && !!this.content.nativeElement.innerHTML.trim();\n }\n}\n","<button\n type=\"button\"\n class=\"clear-button btn d-flex\"\n (click)=\"open()\"\n #modalTrigger\n>\n <foehn-icon-info-circle\n [class.mr-1]=\"hasContent()\"\n title=\" \"\n ></foehn-icon-info-circle>\n\n <span class=\"sr-only button-help-text\" *ngIf=\"!hasContent()\">\n Aide: {{ modalContent.title }}\n </span>\n\n <span #content>\n <ng-content></ng-content>\n </span>\n</button>\n<foehn-modal\n id=\"help-modal\"\n modalSize=\"modal-lg\"\n [modalHeaderText]=\"currentModalTitle\"\n [isModalVisible]=\"isModalVisible\"\n (isModalVisibleChange)=\"updateVisibilityStatus($event)\"\n (click)=\"close()\"\n [modalTriggerHtmlElement]=\"modalTrigger\"\n>\n <ng-container *ngIf=\"modalContent\">\n <div *ngIf=\"!!modalContent.body\" [innerHtml]=\"modalContent.body\"></div>\n <img\n *ngFor=\"let image of modalContent.images\"\n [src]=\"image.src\"\n [alt]=\"image.alt\"\n class=\"mt-2\"\n width=\"100%\"\n height=\"auto\"\n />\n </ng-container>\n</foehn-modal>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FoehnHelpModalComponent } from './foehn-help-modal.component';\nimport { FoehnModalModule } from '../foehn-modal/foehn-modal.module';\nimport { FoehnIconsModule } from '../foehn-icons/foehn-icons.module';\n\n@NgModule({\n imports: [CommonModule, FoehnModalModule, FoehnIconsModule],\n declarations: [FoehnHelpModalComponent],\n exports: [FoehnHelpModalComponent]\n})\nexport class FoehnHelpModalModule {}\n","export class FoehnConfirmModalContent {\n title?: string;\n htmlContent: string;\n okButtonLabel?: string;\n cancelButtonLabel?: string;\n}\n","import { Directive, HostListener, NgZone, OnInit } from '@angular/core';\nimport { FoehnInputNumberComponent } from '../foehn-input/foehn-input-number.component';\nimport { first } from 'rxjs/operators';\nimport {\n CURRENCY_REGEXP,\n DECIMALS_SEPARATOR,\n THOUSANDS_SEPARATOR\n} from '../sdk-currency/currency.helper';\n\n// eslint-disable max-classes-per-file\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions,jsdoc/require-jsdoc\nfunction removeFormatting(value: string): string {\n if (value === undefined || value === null) {\n // It's important to return null as the backend will consider this as no value.\n return null;\n }\n\n return value\n .toString()\n .trim()\n .replace(new RegExp(THOUSANDS_SEPARATOR, 'g'), '');\n}\n\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions,jsdoc/require-jsdoc\nfunction formatWithThousandSeparators(value: string): string {\n return value.replace(CURRENCY_REGEXP, THOUSANDS_SEPARATOR);\n}\n\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions,jsdoc/require-jsdoc\nfunction formatDecimalCurrency(\n value: string,\n maxDecimalCount: number,\n maxLength: number\n): string {\n if (value === undefined || value === null || value === '') {\n return null;\n }\n\n const [intg, dec] = removeFormatting(value).split(DECIMALS_SEPARATOR);\n\n if (maxDecimalCount === 0) {\n return formatWithThousandSeparators(intg);\n }\n const validEmptyEnd = '0'.repeat(maxDecimalCount);\n\n let newEnd = dec ? dec + validEmptyEnd : validEmptyEnd;\n if (newEnd && newEnd.length >= maxDecimalCount) {\n newEnd = newEnd.substring(0, maxDecimalCount);\n }\n\n let newDecimal = intg + DECIMALS_SEPARATOR + newEnd;\n if (newDecimal.length > maxLength) {\n newDecimal = newDecimal.substring(0, maxLength);\n }\n\n [, newEnd] = newDecimal.split(DECIMALS_SEPARATOR);\n if (!newEnd) {\n return formatWithThousandSeparators(intg);\n }\n\n return formatWithThousandSeparators(intg) + DECIMALS_SEPARATOR + newEnd;\n}\n\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions,jsdoc/require-jsdoc\nfunction formatNonDecimalCurrency(value: string): string {\n if (value === undefined || value === null) {\n return null;\n }\n\n return formatWithThousandSeparators(removeFormatting(value));\n}\n\n// eslint-disable-next-line @angular-eslint/directive-selector\n@Directive({ selector: '[numberCurrencyFormatter]' })\nexport class NumberCurrencyFormatterDirective implements OnInit {\n private hasFocus = false;\n\n constructor(\n private host: FoehnInputNumberComponent,\n private ngZone: NgZone\n ) {}\n\n @HostListener('blur', ['$event.target.value'])\n onBlur(value: string): void {\n this.hasFocus = false;\n this.setFormatting(value);\n }\n\n @HostListener('focus', ['$event.target.value'])\n onFocus(value: string): void {\n this.hasFocus = true;\n this.host.forceUpdateNgModel(removeFormatting(value));\n }\n\n @HostListener('modelChange', ['$event'])\n onModelChange(value: string): void {\n if (!!value && !this.hasFocus) {\n this.setFormatting(value);\n }\n }\n\n ngOnInit(): void {\n // sometimes, when the view is \"simple\" and doesn't require lot a processing\n // we arrive in this method with this.host.model not already initialized, so the formatting is not working\n this.ngZone.onMicrotaskEmpty.pipe(first()).subscribe(() => {\n this.setFormatting(this.host.model);\n });\n }\n\n private setFormatting(value: string): void {\n // Hooks on the inputs of the component to customize the behavior\n const formattedValue = this.host.allowDecimal\n ? formatDecimalCurrency(\n value,\n this.host.maxDecimalCount,\n this.host.maxlength\n )\n : formatNonDecimalCurrency(value);\n\n const newValueWithoutFormatting = removeFormatting(formattedValue);\n if (this.hasValueChanged(newValueWithoutFormatting)) {\n // Since we have altered the model (i.e. by removing some decimals), we have to update it\n this.host.updateNgModel(newValueWithoutFormatting);\n }\n\n // Due to ngModel being possibly updated, we need to wait for a micro task empty\n this.ngZone.onMicrotaskEmpty.pipe(first()).subscribe(() => {\n // We're injection non-decimal characters, hence the force.\n this.host.forceUpdateNgModel(formattedValue);\n });\n }\n\n private hasValueChanged(newValueWithoutFormatting: string): boolean {\n return (\n !this.host.model ||\n this.host.model.toString() !== newValueWithoutFormatting\n );\n }\n}\n","import { Directive, HostListener } from '@angular/core';\nimport { FoehnInputTextComponent } from '../foehn-input/foehn-input-text.component';\n\nconst NO_CONTRIB_PATTERN = '^((\\\\d\\\\.?){0,7})(\\\\d)$';\nconst NO_CONTRIB_PATTERN_WITH_NO_DOT = '^(\\\\d{1,2})$';\nconst NO_CONTRIB_PATTERN_WITH_ONE_DOT = '^(\\\\d{1,3})(\\\\d{2})$';\nconst NO_CONTRIB_PATTERN_WITH_TWO_DOTS = '^(\\\\d{1,3})(\\\\d{3})(\\\\d{2})$';\n\n// eslint-disable-next-line @angular-eslint/directive-selector\n@Directive({ selector: '[ndcFormatter]' })\nexport class NDCFormatterDirective {\n constructor(private host: FoehnInputTextComponent) {}\n\n @HostListener('blur', ['$event.target.value'])\n onBlur(value: string): void {\n this.host.updateNgModel(this.formatNDC(value));\n }\n\n /**\n * Format the tax payer number following this pattern:\n *\n * 1 – 9 => X\n * 10 - 99 => XX\n * 100 - 999 => X.XX\n * 1’000 - 9’999 => XX.XX\n * 10’000 - 99’999 => XXX.XX\n * 100'000 - 999'999 => X.XXX.XX\n * 1'000'000 - 9’999'999 => XX.XXX.XX\n * 10'000'000 - 99'999'999 => XXX.XXX.XX\n *\n * @param value as numero de contribuable\n * @returns string\n */\n private formatNDC(value: string): string {\n if (!value) {\n return '';\n }\n\n const trimmedValue = value.trim();\n if (!trimmedValue.match(NO_CONTRIB_PATTERN)) {\n return trimmedValue;\n }\n\n // Only get the digits.\n const digits = trimmedValue.replace(new RegExp('\\\\.', 'g'), '');\n\n /*\n * Handles\n * 1 – 9 => X\n * 10 - 99 => XX\n */\n if (digits.match(NO_CONTRIB_PATTERN_WITH_NO_DOT)) {\n return digits.replace(\n new RegExp(NO_CONTRIB_PATTERN_WITH_NO_DOT, 'g'),\n '$1'\n );\n }\n\n /*\n * Handles\n * 100 - 999 => X.XX\n * 1’000 - 9’999 => XX.XX\n * 10’000 - 99’999 => XXX.XX\n */\n if (digits.match(NO_CONTRIB_PATTERN_WITH_ONE_DOT)) {\n return digits.replace(\n new RegExp(NO_CONTRIB_PATTERN_WITH_ONE_DOT, 'g'),\n '$1.$2'\n );\n }\n\n /*\n * Handles\n * 100'000 - 999'999 => X.XXX.XX\n * 1'000'000 - 9’999'999 => XX.XXX.XX\n * 10'000'000 - 99'999'999 => XXX.XXX.XX\n */\n\n return digits.replace(\n new RegExp(NO_CONTRIB_PATTERN_WITH_TWO_DOTS, 'g'),\n '$1.$2.$3'\n );\n }\n}\n","import { Directive, HostListener } from '@angular/core';\nimport { FoehnInputTextComponent } from '../foehn-input/foehn-input-text.component';\n\nconst IDE_PATTERN = '^CHE-?(\\\\d{3})\\\\.?(\\\\d{3})\\\\.?(\\\\d{3})$';\n\n// eslint-disable-next-line @angular-eslint/directive-selector\n@Directive({ selector: '[ideFormatter]' })\nexport class IdeFormatterDirective {\n constructor(private host: FoehnInputTextComponent) {}\n\n @HostListener('blur', ['$event.target.value'])\n onBlur(value: string): void {\n this.host.updateNgModel(this.formatIde(value));\n }\n\n /**\n * Formats ide\n *\n * CHE123456789 >> CHE-123.456.789\n *\n * @param value as ide\n * @returns string\n */\n private formatIde(value: string): string {\n if (!value) {\n return '';\n }\n\n const trimmedValue = value.trim();\n\n return trimmedValue.replace(\n new RegExp(IDE_PATTERN, 'g'),\n 'CHE-$1.$2.$3'\n );\n }\n}\n","import { Directive, HostListener } from '@angular/core';\nimport { FoehnInputTextComponent } from '../foehn-input/foehn-input-text.component';\nimport * as iban from 'iban';\n\n// eslint-disable-next-line @angular-eslint/directive-selector\n@Directive({ selector: '[ibanFormatter]' })\nexport class IbanFormatterDirective {\n constructor(private host: FoehnInputTextComponent) {}\n\n @HostListener('blur', ['$event.target.value'])\n onBlur(value: string): void {\n this.host.updateNgModel(this.formatIban(value));\n }\n\n private formatIban(value: string): string {\n if (!value) {\n return value;\n }\n return iban.printFormat(value, ' ');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { NumberCurrencyFormatterDirective } from './currency-formatter.directive';\nimport { NDCFormatterDirective } from './ndc-formatter.directive';\nimport { FoehnInputModule } from '../foehn-input/foehn-input.module';\nimport { IdeFormatterDirective } from './ide-formatter.directive';\nimport { IbanFormatterDirective } from './iban-formatter.directive';\n\n@NgModule({\n imports: [FoehnInputModule],\n declarations: [\n NDCFormatterDirective,\n NumberCurrencyFormatterDirective,\n IdeFormatterDirective,\n IbanFormatterDirective\n ],\n exports: [\n NDCFormatterDirective,\n NumberCurrencyFormatterDirective,\n IdeFormatterDirective,\n IbanFormatterDirective\n ]\n})\nexport class FormatterModule {}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'foehn-abbr',\n templateUrl: './foehn-abbr.component.html',\n styleUrls: ['./foehn-abbr.component.css']\n})\nexport class FoehnAbbrComponent {\n @Input()\n title: string;\n\n @Input()\n text: string;\n}\n","<abbr aria-hidden=\"true\" [title]=\"title\">{{ text }}</abbr>\n<span class=\"sr-only\">{{ title }} ({{ text }})</span>\n","import { NgModule } from '@angular/core';\nimport { FoehnAbbrComponent } from './foehn-abbr.component';\n\n@NgModule({\n imports: [],\n declarations: [FoehnAbbrComponent],\n exports: [FoehnAbbrComponent]\n})\nexport class FoehnMiscModule {}\n","import { Component, Input } from '@angular/core';\n\nimport { map } from 'rxjs/operators';\nimport { Observable } from 'rxjs';\nimport { ValidationHandlerService } from '../../validation/validation-handler.service';\nimport { ErrorTemplate } from '../../error-template';\n\n@Component({\n selector: 'foehn-error-pill',\n templateUrl: './foehn-error-pill.component.html'\n})\nexport class FoehnErrorPillComponent {\n @Input()\n errorPrefix: string;\n\n @Input()\n incompleteIndicatorOnly = false;\n\n hasErrors: Observable<boolean>;\n\n constructor(private validationHandlerService: ValidationHandlerService) {\n this.hasErrors = this.validationHandlerService.validationErrorsSubject.pipe(\n map((errors: ErrorTemplate[]) =>\n errors.some(e => e.name.startsWith(this.errorPrefix))\n )\n );\n }\n}\n","<strong\n *ngIf=\"hasErrors | async\"\n class=\"align-self-baseline badge mt-2 badge-danger\"\n>\n Incomplet\n</strong>\n\n<strong\n *ngIf=\"!(hasErrors | async) && !incompleteIndicatorOnly\"\n class=\"align-self-baseline badge mt-2 badge-secondary\"\n>\n Renseigné\n</strong>\n","import { Component, Input } from '@angular/core';\nimport { PlaceholderType } from '../../../sdk-dictionary/sdk-dictionary.service';\n\n@Component({\n selector: 'foehn-menu-item',\n templateUrl: './foehn-menu-item.component.html'\n})\nexport class FoehnMenuItemComponent {\n @Input()\n labelDicoKey: string;\n\n @Input()\n dicoLabelPlaceHolders: PlaceholderType;\n\n @Input()\n linkId: string;\n\n @Input()\n rLink: string;\n\n @Input()\n errorPrefix: string;\n\n @Input()\n showErrorPill = true;\n\n @Input()\n listLength: number;\n\n @Input()\n applicable = true;\n}\n","<li\n class=\"d-flex flex-column flex-md-row justify-content-between border-bottom pb-3\"\n *ngIf=\"applicable\"\n>\n <span class=\"align-self-baseline mt-2\">\n <a\n href=\"#\"\n (click)=\"$event.preventDefault()\"\n [id]=\"linkId\"\n [routerLink]=\"rLink\"\n [queryParams]=\"{ scrollTo: linkId }\"\n >\n {{ labelDicoKey | fromDictionary: dicoLabelPlaceHolders }}\n </a>\n <ng-container *ngIf=\"listLength\">\n <br />\n <small *ngIf=\"listLength > 1\" class=\"text-secondary\">\n {{ listLength }} éléments saisis\n </small>\n <small *ngIf=\"listLength === 1\" class=\"text-secondary\">\n {{ listLength }} élément saisi\n </small>\n </ng-container>\n </span>\n <foehn-error-pill\n *ngIf=\"showErrorPill\"\n [errorPrefix]=\"errorPrefix\"\n ></foehn-error-pill>\n</li>\n\n<li\n class=\"d-flex flex-column flex-md-row justify-content-between border-bottom pb-3\"\n *ngIf=\"!applicable\"\n>\n <span [id]=\"errorPrefix + 'NA'\" class=\"align-self-baseline mt-2\">\n {{ labelDicoKey | fromDictionary: dicoLabelPlaceHolders }}\n \n <span class=\"font-weight-bold\">(non applicable)</span>\n </span>\n</li>\n","import { Component, Input } from '@angular/core';\nimport { PlaceholderType } from '../../../sdk-dictionary/sdk-dictionary.service';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { GesdemHandlerService } from '../../../gesdem/gesdem-handler.service';\n\n@Component({\n selector: 'foehn-menu-item-transmit',\n templateUrl: './foehn-menu-item-transmit.component.html'\n})\nexport class FoehnMenuItemTransmitComponent {\n @Input()\n linkId = 'transmit';\n\n @Input()\n rLink: string;\n\n @Input()\n labelDicoKey: string;\n\n @Input()\n dicoLabelPlaceHolders: PlaceholderType;\n\n @Input()\n remainingErrorsAlertTitle = 'Demande incomplète';\n\n @Input()\n remainingErrorsAlertBody =\n 'Certains champs obligatoires de votre demande n’ont pas été renseignés.' +\n '<br/><br/' +\n '>Merci de compléter la saisie dans les formulaires portant la mention ';\n\n showRemainingErrorsAlert = false;\n\n constructor(\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private gesdemService: GesdemHandlerService\n ) {}\n\n transmit(): void {\n const hasFormError = this.gesdemService.lastResponse.errors.length;\n if (hasFormError) {\n this.showRemainingErrorsAlert = true;\n } else {\n this.router.navigate([this.rLink], {\n relativeTo: this.activatedRoute,\n queryParams: { scrollTo: this.linkId }\n });\n }\n }\n}\n","<li\n class=\"d-flex flex-column flex-md-row justify-content-between border-bottom pb-3\"\n>\n <span class=\"align-self-baseline mt-2\">\n <a\n href=\"#\"\n (click)=\"$event.preventDefault(); transmit()\"\n [id]=\"linkId\"\n #transmitLink\n >\n {{ labelDicoKey | fromDictionary: dicoLabelPlaceHolders }}\n </a>\n <foehn-modal\n [(isModalVisible)]=\"showRemainingErrorsAlert\"\n [modalHeaderText]=\"remainingErrorsAlertTitle\"\n [modalTriggerHtmlElement]=\"transmitLink\"\n >\n <p>\n <span [innerHTML]=\"remainingErrorsAlertBody\"></span>\n <foehn-error-pill [errorPrefix]=\"''\"></foehn-error-pill>\n </p>\n </foehn-modal>\n </span>\n</li>\n","import {\n Component,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n TrackByFunction\n} from '@angular/core';\nimport { FoehnListItem } from './foehn-list-item';\nimport { FoehnListItemDescription } from './foehn-list-item-description';\nimport { FoehnInputComponent } from '../../foehn-input/foehn-input.component';\nimport { FoehnConfirmModalService } from '../../foehn-confirm-modal/foehn-confirm-modal.service';\n\n@Component({\n selector: 'foehn-list-summary',\n templateUrl: './foehn-list-summary.component.html',\n providers: [\n {\n provide: FoehnInputComponent,\n useExisting: forwardRef(() => FoehnListSummaryComponent),\n multi: true\n }\n ]\n})\nexport class FoehnListSummaryComponent extends FoehnInputComponent<\n FoehnListItem[]\n> {\n @Input()\n list: FoehnListItem[];\n\n @Input()\n getListItemTitle: (item: FoehnListItem) => string;\n\n @Input()\n listItemDescriptions: FoehnListItemDescription[];\n\n @Output()\n itemRemoved = new EventEmitter<void>();\n\n @Output()\n itemEdit = new EventEmitter<number>();\n\n constructor(private confirmModalService: FoehnConfirmModalService) {\n super();\n }\n\n trackByTrackingIndex(): TrackByFunction<FoehnListItem> {\n return (index: number, item: FoehnListItem) => item.trackingIndex;\n }\n\n showLine(\n item: FoehnListItem,\n itemParam: FoehnListItemDescription\n ): boolean {\n const value = itemParam.getFormattedValue(item);\n const hideIfEmptyExists = !!itemParam.hideIfEmpty;\n if (value || !hideIfEmptyExists) {\n return true;\n } else {\n return itemParam.hideIfEmpty(item);\n }\n }\n\n editItem(index: number = null): void {\n this.itemEdit.next(index);\n }\n\n removeItem(index: number): void {\n this.confirmModalService\n .openConfirmModal({\n htmlContent: 'Souhaitez-vous vraiment supprimer cet élément ?'\n })\n .then(() => {\n this.list.splice(index, 1);\n this.itemRemoved.next();\n });\n }\n}\n","<section\n class=\"form-group clearable-input-form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <label\n [attr.for]=\"buildChildId()\"\n *ngIf=\"label && type !== 'hidden'\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : labelStyleModifier\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </label>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText && type !== 'hidden'\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <section>\n <ul class=\"list-unstyled\" aria-describedby=\"sommaire-help-alt\">\n <li\n [id]=\"'list-summary-' + item.trackingIndex\"\n class=\"mt-3 border-bottom\"\n *ngFor=\"\n let item of list;\n let itemIndex = index;\n trackBy: trackByTrackingIndex\n \"\n >\n <div class=\"d-flex align-items-baseline flex-wrap\">\n <h4 class=\"mt-0 mr-3\">{{ getListItemTitle(item) }}</h4>\n <span class=\"ml-auto\">\n <foehn-error-pill\n [incompleteIndicatorOnly]=\"true\"\n [errorPrefix]=\"name + '[' + itemIndex + ']'\"\n ></foehn-error-pill>\n </span>\n </div>\n <dl class=\"mb-0\">\n <ng-container\n *ngFor=\"let itemParam of listItemDescriptions\"\n >\n <div\n class=\"d-flex flex-wrap item-line\"\n *ngIf=\"showLine(item, itemParam)\"\n >\n <dt class=\"mr-1\">\n {{ itemParam.label }}\n </dt>\n <dd class=\"ml-auto text-right\">\n {{ itemParam.getFormattedValue(item) }}\n </dd>\n </div>\n </ng-container>\n </dl>\n <ul class=\"list-inline mb-3 mt-0\">\n <li class=\"list-inline-item\">\n <a\n [id]=\"'edit-link-' + item.trackingIndex\"\n href=\"#\"\n (click)=\"\n $event.preventDefault(); editItem(itemIndex)\n \"\n >\n Modifier\n </a>\n \n <span class=\"sr-only\">\n {{ getListItemTitle(item) }}\n </span>\n </li>\n <li class=\"list-inline-item\">\n <a\n href=\"#\"\n (click)=\"\n $event.preventDefault(); removeItem(itemIndex)\n \"\n >\n Supprimer\n <span class=\"sr-only\">\n {{ getListItemTitle(item) }}\n </span>\n </a>\n </li>\n </ul>\n </li>\n </ul>\n </section>\n\n <section class=\"mt-5\">\n <h2 class=\"sr-only\">Action</h2>\n <ul class=\"list-inline mb-3\">\n <li class=\"list-inline-item\">\n <button class=\"btn btn-primary\" (click)=\"editItem()\">\n Ajouter\n </button>\n </li>\n </ul>\n </section>\n</section>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { RouterModule } from '@angular/router';\nimport { FoehnErrorPillComponent } from './foehn-error-pill/foehn-error-pill.component';\nimport { FoehnMenuItemComponent } from './foehn-menu-items/foehn-menu-item/foehn-menu-item.component';\nimport { FoehnMenuItemTransmitComponent } from './foehn-menu-items/foehn-menu-item-transmit/foehn-menu-item-transmit.component';\nimport { FoehnListSummaryComponent } from './foehn-list-summary/foehn-list-summary.component';\nimport { FoehnInputModule } from '../foehn-input/foehn-input.module';\nimport { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';\nimport { FoehnModalModule } from '../foehn-modal/foehn-modal.module';\nimport { FoehnValidationAlertsModule } from '../foehn-validation-alerts/foehn-validation-alerts.module';\n\n@NgModule({\n declarations: [\n FoehnListSummaryComponent,\n FoehnErrorPillComponent,\n FoehnMenuItemComponent,\n FoehnMenuItemTransmitComponent\n ],\n imports: [\n CommonModule,\n RouterModule,\n FoehnInputModule,\n SdkDictionaryModule,\n FoehnModalModule,\n FoehnValidationAlertsModule\n ],\n exports: [\n FoehnListSummaryComponent,\n FoehnErrorPillComponent,\n FoehnMenuItemComponent,\n FoehnMenuItemTransmitComponent\n ]\n})\nexport class FoehnMenuPrestationModule {}\n","import { AfterViewInit, NgZone, Directive } from '@angular/core';\nimport { first } from 'rxjs/operators';\nimport { ActivatedRoute } from '@angular/router';\nimport { AbstractPageComponent } from '../abstract-page-component';\nimport { I18nForm } from '../i18n-form';\n\n@Directive()\nexport abstract class AbstractMenuPageComponent<T extends I18nForm>\n extends AbstractPageComponent<T>\n implements AfterViewInit {\n constructor(\n protected activatedRoute: ActivatedRoute,\n protected ngZone: NgZone\n ) {\n super(activatedRoute);\n }\n\n ngAfterViewInit(): void {\n super.ngAfterViewInit();\n\n this.ngZone.onMicrotaskEmpty.pipe(first()).subscribe(() => {\n const scrollTo = this.activatedRoute.snapshot.queryParamMap.get(\n 'scrollTo'\n );\n if (!!scrollTo) {\n const onElement = document.getElementById(scrollTo);\n if (!!onElement) {\n onElement.scrollIntoView();\n onElement.focus();\n }\n }\n });\n }\n}\n","import { Directive, OnInit } from '@angular/core';\nimport { first } from 'rxjs/operators';\nimport { ActivatedRoute } from '@angular/router';\nimport { AbstractPageComponent } from '../abstract-page-component';\nimport { FoehnConfirmModalService } from '../foehn-confirm-modal/foehn-confirm-modal.service';\nimport { I18nForm } from '../i18n-form';\n\n@Directive()\nexport abstract class AbstractPageFromMenuComponent<T extends I18nForm>\n extends AbstractPageComponent<T>\n implements OnInit {\n constructor(\n protected activatedRoute: ActivatedRoute,\n protected confirmModalService: FoehnConfirmModalService\n ) {\n super(activatedRoute);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.appendPageToBreadCrumb();\n }\n\n protected onFormSent(goToNextPage: boolean): void {\n if (this.foehnFormComponent) {\n // Some pages don't have a form.\n this.foehnFormComponent.reset();\n }\n\n const isValid =\n // Some pages don't have a form.\n !this.foehnFormComponent ||\n (this.foehnFormComponent &&\n this.foehnFormComponent.isValid() &&\n !this._gesdemService.lastResponse.meta.critical);\n\n this._gesdemEventService.formSentSubject.next(\n this._gesdemService.lastResponse\n );\n\n if (!goToNextPage) {\n return;\n }\n if (isValid) {\n this.returnToParent();\n } else {\n this.displayModalErrorConfirmation();\n }\n }\n\n protected returnToParent(): void {\n this._breadcrumbEventService\n .breadcrumbObservable()\n .pipe(first())\n .subscribe(breadCrumb => {\n breadCrumb.breadcrumbItems.pop();\n this._breadcrumbEventService.setBreadcrumb(breadCrumb);\n this._navigation.next();\n });\n }\n\n protected appendPageToBreadCrumb(): void {\n this._breadcrumbEventService\n .breadcrumbObservable()\n .pipe(first())\n .subscribe(breadCrumb => {\n const routerLink =\n this._gesdemService.lastResponse.meta.reference +\n this.getMenuPath();\n const hasCrumb = breadCrumb.breadcrumbItems.find(\n b => b.routerLink === routerLink\n );\n\n if (!hasCrumb) {\n breadCrumb.breadcrumbItems.push({\n url: null,\n routerLink,\n label: this.getMenuLabel(),\n skipLeavingAlert: true\n });\n this._breadcrumbEventService.setBreadcrumb(breadCrumb);\n }\n });\n }\n\n private displayModalErrorConfirmation(): void {\n this.confirmModalService\n .openConfirmModal({\n htmlContent:\n 'Vos données ont bien été sauvegardées. Cependant, il reste des erreurs.' +\n '<br><br>' +\n 'Souhaitez-vous quand même continuer ?',\n okButtonLabel: 'Poursuivre sans corriger',\n cancelButtonLabel: 'Corriger les erreurs'\n })\n .then(\n () => this.returnToParent(),\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n () => {}\n );\n }\n\n protected abstract getMenuPath(): string;\n\n protected abstract getMenuLabel(): string;\n}\n","import { Directive, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { first } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\nimport { Location } from '@angular/common';\nimport { AbstractPageFromMenuComponent } from './abstract-page-from-menu.component';\nimport { FoehnListItem } from './foehn-list-summary/foehn-list-item';\nimport { FoehnConfirmModalService } from '../foehn-confirm-modal/foehn-confirm-modal.service';\nimport { I18nForm } from '../i18n-form';\n\n@Directive()\nexport abstract class AbstractListDetailPageComponent<\n FORM_TYPE extends I18nForm,\n ITEM_TYPE extends FoehnListItem\n >\n extends AbstractPageFromMenuComponent<FORM_TYPE>\n implements OnInit, OnDestroy {\n list: ITEM_TYPE[];\n itemIndex: number = null;\n private formSub: Subscription;\n\n constructor(\n protected activatedRoute: ActivatedRoute,\n protected confirmModalService: FoehnConfirmModalService,\n protected router: Router,\n protected location: Location\n ) {\n super(activatedRoute, confirmModalService);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.formSub = this._gesdemEventService\n .formInitializationObservable()\n .pipe(first())\n .subscribe(() => {\n const indexParam = this.activatedRoute.snapshot.paramMap.get(\n 'index'\n );\n const showErrorsOnPageLoad = !!indexParam;\n\n this.list = this.getList();\n\n if (indexParam) {\n this.assignItemIndex(Number(indexParam));\n } else {\n this.loadNewItem();\n }\n\n this.scrollToSpecifiedElement();\n\n if (showErrorsOnPageLoad) {\n this.showErrors();\n }\n });\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n if (this.formSub) {\n this.formSub.unsubscribe();\n }\n this.resetBreadCrumb();\n }\n\n protected getNextTrackingIndex(): number {\n if (!this.list || !this.list.length) {\n return 1;\n }\n return this.list[this.list.length - 1].trackingIndex + 1;\n }\n\n protected returnToParent(): void {\n this.router.navigate([\n this._gesdemService.lastResponse.meta.reference,\n this.getListPagePath()\n ]);\n }\n\n protected resetBreadCrumb(): void {\n this._breadcrumbEventService\n .breadcrumbObservable()\n .pipe(first())\n .subscribe(breadCrumb => {\n breadCrumb.breadcrumbItems.pop();\n this._breadcrumbEventService.setBreadcrumb(breadCrumb);\n });\n }\n\n protected appendPageToBreadCrumb(): void {\n this._breadcrumbEventService\n .breadcrumbObservable()\n .pipe(first())\n .subscribe(breadCrumb => {\n breadCrumb.breadcrumbItems.push({\n url: null,\n routerLink: `${\n this._gesdemService.lastResponse.meta.reference\n }/${this.getListPagePath()}`,\n label: this.getListPageLabel(),\n skipLeavingAlert: true\n });\n this._breadcrumbEventService.setBreadcrumb(breadCrumb);\n });\n }\n\n private loadNewItem(): void {\n const newItem = this.getNewListItem();\n newItem.trackingIndex = this.getNextTrackingIndex();\n this.list.push(newItem);\n this.itemIndex = this.list.length - 1;\n\n const currentUrl = this.router\n .createUrlTree([], { relativeTo: this.activatedRoute })\n .toString();\n this.location.go(`${currentUrl}/${this.itemIndex}`);\n }\n\n private assignItemIndex(index: number): void {\n if (index >= this.list.length) {\n // index does not exist, return to list\n window.history.back();\n }\n this.itemIndex = index;\n }\n\n private scrollToSpecifiedElement(): void {\n if (this.activatedRoute.snapshot.queryParamMap.get('scrollTo')) {\n setTimeout(() => {\n const componentContainerId = `${this.activatedRoute.snapshot.queryParamMap.get(\n 'scrollTo'\n )}Container`;\n document.getElementById(componentContainerId).scrollIntoView();\n document.getElementById(componentContainerId).focus();\n });\n }\n }\n\n private showErrors(): void {\n setTimeout(() => {\n this.foehnFormComponent.reset();\n this._validationHandlerService.shouldDisplayErrors(true);\n this._validationHandlerService.updateErrors(\n this._gesdemService.lastResponse.errors\n );\n });\n }\n\n get itemToEdit(): ITEM_TYPE {\n return this.getList()[this.itemIndex];\n }\n\n abstract getList(): ITEM_TYPE[];\n\n abstract getNewListItem(): ITEM_TYPE;\n\n abstract getListPagePath(): string;\n\n abstract getListPageLabel(): string;\n}\n","export class FoehnListItem {\n trackingIndex: number;\n}\n","import { DayMonth } from './day-month.type';\nimport { MonthYear } from './month-year.type';\nimport dayjs from 'dayjs';\nimport localeData from 'dayjs/plugin/localeData';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\ndayjs.extend(localeData);\n\nexport class DatePickerHelper {\n initialMonth: string;\n initialYear: string;\n initialDay: string;\n\n readonly YEAR_STRING_FORMAT = 'YYYY';\n readonly MONTH_STRING_NUMBER_FORMAT = 'M';\n readonly DAY_STRING_NUMBER_FORMAT = 'D';\n\n private readonly NB_DAYS_IN_WEEK = 7;\n private readonly DATE_STRING_FORMAT = 'YYYY-MM-DD';\n private readonly DATE_READABLE_FORMAT = 'D MMMM YYYY';\n\n private _displayedMonthYear = new BehaviorSubject<MonthYear>(null);\n\n private static getWeekday(date: string): number {\n const dayOfWeek = dayjs(date).format('dddd');\n const weekDays = dayjs.weekdays();\n\n return weekDays.indexOf(dayOfWeek);\n }\n\n private static getNumberOfDaysInMonth(year: string, month: string): number {\n return dayjs(`${year}-${month}-01`).daysInMonth();\n }\n\n private static getPreviousMonth(year: string, month: string): dayjs.Dayjs {\n return dayjs(`${year}-${month}-01`).subtract(1, 'month');\n }\n\n private static getNextMonth(year: string, month: string): dayjs.Dayjs {\n return dayjs(`${year}-${month}-01`).add(1, 'month');\n }\n\n loadLocale = (language: string): Promise<unknown> =>\n import(`dayjs/locale/${language}`).then(() => dayjs.locale(language));\n\n get displayedMonthYear(): Observable<MonthYear> {\n return this._displayedMonthYear.asObservable();\n }\n\n getWeekDays(): string[] {\n const weekDays = [...dayjs.weekdays()];\n // we need Lundi as first day of the week\n weekDays.push(weekDays.shift());\n\n return weekDays;\n }\n\n getWeeksOfMonth(\n initialYear: string,\n initialMonth: string,\n initialDay?: string\n ): DayMonth[][] {\n this.initialYear = initialYear;\n this.initialMonth = initialMonth;\n this.initialDay = initialDay ? initialDay : '1';\n\n const currentMonthDays = this.createDaysForCurrentMonth(\n initialYear,\n initialMonth\n );\n const previousMonthDays = this.createDaysForPreviousMonth(\n initialYear,\n initialMonth,\n currentMonthDays\n );\n const nextMonthDays = this.createDaysForNextMonth(\n initialYear,\n initialMonth,\n currentMonthDays\n );\n const days = [\n ...previousMonthDays,\n ...currentMonthDays,\n ...nextMonthDays\n ];\n\n this._displayedMonthYear.next({\n year: currentMonthDays[0].date.year().toString(),\n month: currentMonthDays[0].date.month().toString()\n });\n\n return this.buildWeeksOfMonth(days);\n }\n\n getNextWeeksOfMonth(): DayMonth[][] {\n const nextMonth = DatePickerHelper.getNextMonth(\n this.initialYear,\n this.initialMonth\n );\n\n return this.getWeeksOfMonth(\n nextMonth.format(this.YEAR_STRING_FORMAT),\n nextMonth.format(this.MONTH_STRING_NUMBER_FORMAT)\n );\n }\n\n getPreviousWeeksOfMonth(): DayMonth[][] {\n const previousMonth = DatePickerHelper.getPreviousMonth(\n this.initialYear,\n this.initialMonth\n );\n\n return this.getWeeksOfMonth(\n previousMonth.format(this.YEAR_STRING_FORMAT),\n previousMonth.format(this.MONTH_STRING_NUMBER_FORMAT)\n );\n }\n\n private createDaysForCurrentMonth(year: string, month: string): DayMonth[] {\n return [\n ...Array(DatePickerHelper.getNumberOfDaysInMonth(year, month))\n ].map((day, index) => {\n const date = dayjs(`${year}-${month}-${index + 1}`);\n return {\n date,\n dateAsString: date.format(this.DATE_STRING_FORMAT),\n dateAsReadable: date.format(this.DATE_READABLE_FORMAT),\n dayOfMonth: index + 1,\n isCurrentMonth: true\n };\n });\n }\n\n private createDaysForPreviousMonth(\n year: string,\n month: string,\n currentMonthDays: DayMonth[]\n ): DayMonth[] {\n const firstDayOfTheMonthWeekday = DatePickerHelper.getWeekday(\n currentMonthDays[0].dateAsString\n );\n const previousMonth = DatePickerHelper.getPreviousMonth(year, month);\n\n // Cover first day of the month being sunday\n const visibleNumberOfDaysFromPreviousMonth = firstDayOfTheMonthWeekday\n ? firstDayOfTheMonthWeekday - 1\n : 6;\n\n const previousMonthLastMondayDayOfMonth = dayjs(\n currentMonthDays[0].dateAsString\n )\n .subtract(visibleNumberOfDaysFromPreviousMonth, 'day')\n .date();\n\n return [...Array(visibleNumberOfDaysFromPreviousMonth)].map(\n (day, index) => {\n const date = dayjs(\n `${previousMonth.year()}-${previousMonth.month() + 1}-${\n previousMonthLastMondayDayOfMonth + index\n }`\n );\n return {\n date,\n dateAsString: date.format(this.DATE_STRING_FORMAT),\n dateAsReadable: date.format(this.DATE_READABLE_FORMAT),\n dayOfMonth: previousMonthLastMondayDayOfMonth + index,\n isCurrentMonth: false\n };\n }\n );\n }\n\n private createDaysForNextMonth(\n year: string,\n month: string,\n currentMonthDays: DayMonth[]\n ): DayMonth[] {\n const lastDayOfTheMonthWeekday = DatePickerHelper.getWeekday(\n `${year}-${month}-${currentMonthDays.length}`\n );\n const nextMonth = DatePickerHelper.getNextMonth(year, month);\n\n const visibleNumberOfDaysFromNextMonth = lastDayOfTheMonthWeekday\n ? 7 - lastDayOfTheMonthWeekday\n : 0;\n\n return [...Array(visibleNumberOfDaysFromNextMonth)].map(\n (day, index) => {\n const date = dayjs(\n `${nextMonth.year()}-${nextMonth.month() + 1}-${index + 1}`\n );\n return {\n date,\n dateAsString: date.format(this.DATE_STRING_FORMAT),\n dateAsReadable: date.format(this.DATE_READABLE_FORMAT),\n dayOfMonth: index + 1,\n isCurrentMonth: false\n };\n }\n );\n }\n\n private buildWeeksOfMonth(days: DayMonth[]): DayMonth[][] {\n const nbWeeks = days.length / this.NB_DAYS_IN_WEEK;\n const weeks = [];\n\n for (let i = 0; i < nbWeeks; i++) {\n weeks.push(\n days.slice(\n i * this.NB_DAYS_IN_WEEK,\n (i + 1) * this.NB_DAYS_IN_WEEK\n )\n );\n }\n\n return weeks;\n }\n}\n","import { ElementRef, QueryList } from '@angular/core';\nimport { FocusedDay } from './focused-day.type';\nimport { Observable, Subject } from 'rxjs';\nimport { first } from 'rxjs/operators';\n\nexport class DatePickerNavigationHelper {\n private _currentFocusedElement: FocusedDay;\n private _daysButtonsElemRef: QueryList<ElementRef>;\n\n private _displayNextMonth = new Subject<void>();\n private _displayPreviousMonth = new Subject<void>();\n\n get displayNextMonth(): Observable<void> {\n return this._displayNextMonth.asObservable();\n }\n\n get displayPreviousMonth(): Observable<void> {\n return this._displayPreviousMonth.asObservable();\n }\n\n private static convertElementToFocusedDay(elem: Element): FocusedDay {\n if (!elem) {\n return null;\n }\n return {\n disabled: elem.getAttribute('disabled') !== null,\n indexDay: +elem.getAttribute('day-number') - 1,\n indexRow: +elem.getAttribute('data-row-index'),\n indexColumn: +elem.getAttribute('data-column-index')\n };\n }\n\n set currentFocusedElement(elem: Element) {\n this._currentFocusedElement = DatePickerNavigationHelper.convertElementToFocusedDay(\n elem\n );\n }\n\n set daysButtonsElemRef(elems: QueryList<ElementRef>) {\n this._daysButtonsElemRef = elems;\n }\n\n focusDefaultDay(hasSelectedDay: boolean): void {\n const daysInWeek = this.getEnabledDaysOfWeek();\n if (hasSelectedDay) {\n const selectedDay = daysInWeek.filter(\n value =>\n value.nativeElement.getAttribute('data-is-selected') ===\n 'true'\n );\n if (selectedDay.length) {\n selectedDay[0].nativeElement.focus();\n }\n } else {\n const hasToday = daysInWeek.filter(\n value =>\n value.nativeElement.getAttribute('data-is-today') === 'true'\n );\n if (hasToday.length) {\n hasToday[0].nativeElement.focus();\n }\n }\n }\n\n focusNextDay(): void {\n const daysInWeek = this.getEnabledDaysOfWeek();\n const nextIndex = this._currentFocusedElement.indexDay + 1;\n if (nextIndex >= daysInWeek.length) {\n this._daysButtonsElemRef.changes.pipe(first()).subscribe(() => {\n const newDaysInWeek = this.getEnabledDaysOfWeek();\n newDaysInWeek[0].nativeElement.focus();\n });\n this._displayNextMonth.next();\n return;\n }\n daysInWeek[nextIndex].nativeElement.focus();\n }\n\n focusPreviousDay(): void {\n const daysInWeek = this.getEnabledDaysOfWeek();\n const previousIndex = this._currentFocusedElement.indexDay - 1;\n if (previousIndex < 0) {\n this._daysButtonsElemRef.changes.pipe(first()).subscribe(() => {\n const newDaysInWeek = this.getEnabledDaysOfWeek();\n newDaysInWeek[newDaysInWeek.length - 1].nativeElement.focus();\n });\n this._displayPreviousMonth.next();\n return;\n }\n daysInWeek[previousIndex].nativeElement.focus();\n }\n\n focusNextWeekDay(): void {\n const daysInColumn = this.getAllDaysInColumn(\n this._currentFocusedElement.indexColumn\n );\n const nextRowIndex = this._currentFocusedElement.indexRow + 1;\n if (\n nextRowIndex >= daysInColumn.length ||\n daysInColumn[nextRowIndex].nativeElement.getAttribute(\n 'disabled'\n ) !== null\n ) {\n this._daysButtonsElemRef.changes.pipe(first()).subscribe(() => {\n const newDaysInColumn = this.getAllDaysInColumn(\n this._currentFocusedElement.indexColumn\n );\n let newRowIndex = 0;\n if (\n newDaysInColumn[newRowIndex].nativeElement.getAttribute(\n 'disabled'\n ) !== null\n ) {\n newRowIndex++;\n }\n newDaysInColumn[newRowIndex].nativeElement.focus();\n });\n this._displayNextMonth.next();\n return;\n }\n daysInColumn[nextRowIndex].nativeElement.focus();\n }\n\n focusPreviousWeekDay(): void {\n const daysInColumn = this.getAllDaysInColumn(\n this._currentFocusedElement.indexColumn\n );\n const previousRowIndex = this._currentFocusedElement.indexRow - 1;\n if (\n previousRowIndex < 0 ||\n daysInColumn[previousRowIndex].nativeElement.getAttribute(\n 'disabled'\n ) !== null\n ) {\n this._daysButtonsElemRef.changes.pipe(first()).subscribe(() => {\n const newDaysInColumn = this.getAllDaysInColumn(\n this._currentFocusedElement.indexColumn\n );\n let newRowIndex = newDaysInColumn.length - 1;\n if (\n newDaysInColumn[newRowIndex].nativeElement.getAttribute(\n 'disabled'\n ) !== null\n ) {\n newRowIndex--;\n }\n newDaysInColumn[newRowIndex].nativeElement.focus();\n });\n this._displayPreviousMonth.next();\n return;\n }\n daysInColumn[previousRowIndex].nativeElement.focus();\n }\n\n private getEnabledDaysOfWeek(): ElementRef[] {\n return [...this._daysButtonsElemRef.toArray()].filter(\n value => value.nativeElement.getAttribute('disabled') === null\n );\n }\n\n private getAllDaysInColumn(indexColumn: number): ElementRef[] {\n return [...this._daysButtonsElemRef.toArray()].filter(\n value =>\n +value.nativeElement.getAttribute('data-column-index') ===\n indexColumn\n );\n }\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n ViewChildren\n} from '@angular/core';\nimport { DayMonth } from './day-month.type';\nimport { MonthYear } from './month-year.type';\nimport { DatePickerHelper } from './date-picker.helper';\nimport { SdkDictionaryService } from '../sdk-dictionary/sdk-dictionary.service';\nimport { Observable, Subscription } from 'rxjs';\nimport { distinctUntilChanged, first } from 'rxjs/operators';\nimport { FormSelectOption } from '../foehn-checkables/form-select-option';\n\nimport dayjs from 'dayjs';\nimport isToday from 'dayjs/plugin/isToday';\nimport { DatePickerNavigationHelper } from './date-picker-navigation.helper';\n\ndayjs.extend(isToday);\n\n@Component({\n selector: 'foehn-date-picker',\n templateUrl: './foehn-date-picker.component.html',\n styleUrls: ['./foehn-date-picker.component.css']\n})\nexport class FoehnDatePickerComponent\n implements OnInit, OnDestroy, AfterViewInit {\n @Input()\n minYear = dayjs().year() - 100;\n\n @Input()\n maxYear = dayjs().year() + 10;\n\n @Input()\n datepickerTriggerHtmlElement: HTMLElement;\n\n @Input()\n closeable = true;\n\n @Output()\n modelChange = new EventEmitter<number[]>();\n\n @Output()\n userInput = new EventEmitter<number[]>();\n\n @Output()\n isDatepickerVisibleChange = new EventEmitter();\n\n @ViewChildren('dayButtonElemRef')\n daysButtonsElemRef: QueryList<ElementRef>;\n\n weekDays: string[] = [];\n weeks: DayMonth[][];\n\n selectedDate: dayjs.Dayjs;\n currentMonthYear: Observable<MonthYear>;\n\n model_: number[];\n monthListItem: FormSelectOption[] = [];\n yearListItem: FormSelectOption[] = [];\n\n private isVisible = false;\n private keyboardNavigationAllowed = false;\n private currentLanguageCodeSubscription: Subscription;\n private datePickerHelper = new DatePickerHelper();\n private datePickerNavigationHelper = new DatePickerNavigationHelper();\n\n private readonly displayNextMonthSubscription: Subscription;\n private readonly displayPreviousMonthSubscription: Subscription;\n\n constructor(\n private dictionary: SdkDictionaryService,\n private ngZone: NgZone\n ) {\n this.currentMonthYear = this.datePickerHelper.displayedMonthYear;\n this.displayNextMonthSubscription = this.datePickerNavigationHelper.displayNextMonth.subscribe(\n () => this.nextMonth()\n );\n this.displayPreviousMonthSubscription = this.datePickerNavigationHelper.displayPreviousMonth.subscribe(\n () => this.previousMonth()\n );\n }\n\n @HostListener('keyup', ['$event'])\n handleKeyboardUpEvent(event: KeyboardEvent): void {\n if (this.closeable && event.key === 'Escape') {\n this.isDatepickerVisible = false;\n }\n }\n\n @HostListener('keydown', ['$event'])\n handleKeyboardDownEvent(event: KeyboardEvent): void {\n if (this.keyboardNavigationAllowed) {\n this.onKeyDownInner(event);\n }\n }\n\n @Input()\n get isDatepickerVisible(): boolean {\n return this.isVisible;\n }\n\n set isDatepickerVisible(val: boolean) {\n // Store the previous value to handle transitions from one state to another.\n const wasOpen = this.isVisible;\n\n // Ensure we always initialize date picker depending on it's model\n if (!wasOpen && this.closeable) {\n this.onModelChange(this.model);\n }\n\n this.isVisible = val;\n this.isDatepickerVisibleChange.emit(this.isVisible);\n\n this.focusDefaultDay();\n this.focusOnDatepickerTrigger(wasOpen, val);\n }\n\n @Input()\n set model(value: number[]) {\n this.onModelChange(value);\n }\n\n get model(): number[] {\n return this.model_;\n }\n\n ngOnInit(): void {\n this.currentLanguageCodeSubscription = this.dictionary\n .getCurrentLanguageCode()\n .pipe(distinctUntilChanged())\n .subscribe((code: string) => {\n this.datePickerHelper\n .loadLocale(code)\n .catch(() => {\n console.warn(\n `locale '${code}' does not exist. Fallback to 'en.'`\n );\n })\n .then(() => {\n this.initializeDatepicker();\n });\n });\n }\n\n ngAfterViewInit(): void {\n this.daysButtonsElemRef.changes.subscribe(() => {\n this.datePickerNavigationHelper.daysButtonsElemRef = this.daysButtonsElemRef;\n });\n }\n\n ngOnDestroy(): void {\n if (!!this.currentLanguageCodeSubscription) {\n this.currentLanguageCodeSubscription.unsubscribe();\n }\n if (!!this.displayNextMonthSubscription) {\n this.displayNextMonthSubscription.unsubscribe();\n }\n if (!!this.displayPreviousMonthSubscription) {\n this.displayPreviousMonthSubscription.unsubscribe();\n }\n }\n\n onModelChange(value: number[]): void {\n if (\n !!value &&\n value.length > 2 &&\n !!value[0] &&\n value[0] >= this.minYear &&\n !!value[1] &&\n !!value[2]\n ) {\n const dateAsString = `${value[0]}-${value[1]}-${value[2]}`;\n if (dayjs(dateAsString).isValid()) {\n this.setDate(dayjs(dateAsString));\n }\n } else if (this.selectedDate) {\n this.setDate(null);\n }\n this.updateNgModel(value);\n }\n\n updateNgModel(value: number[]): void {\n this.model_ = value;\n this.modelChange.emit(value);\n }\n\n isToday(date: dayjs.Dayjs): boolean {\n return date.isToday();\n }\n\n isSelected(date: dayjs.Dayjs): boolean {\n if (!this.selectedDate) {\n return false;\n }\n return date.isSame(this.selectedDate);\n }\n\n handleUserInput(date: dayjs.Dayjs): void {\n const dateAsArray = this.getDateAsArray(date);\n\n this.userInput.next(dateAsArray);\n this.updateNgModel(dateAsArray);\n }\n\n previousMonth(): void {\n this.weeks = this.datePickerHelper.getPreviousWeeksOfMonth();\n }\n\n nextMonth(): void {\n this.weeks = this.datePickerHelper.getNextWeeksOfMonth();\n }\n\n userInputMonth(month: string): void {\n this.weeks = this.datePickerHelper.getWeeksOfMonth(\n this.datePickerHelper.initialYear,\n (+month + 1).toString(),\n this.datePickerHelper.initialDay\n );\n }\n\n userInputYear(year: string): void {\n this.weeks = this.datePickerHelper.getWeeksOfMonth(\n year,\n this.datePickerHelper.initialMonth,\n this.datePickerHelper.initialDay\n );\n }\n\n getMonthAsReadable(monthIndex: string): string {\n return this.monthListItem.find(elem => elem.value === monthIndex).label;\n }\n\n onDaysFocusin(): void {\n this.keyboardNavigationAllowed = true;\n this.datePickerNavigationHelper.currentFocusedElement =\n document.activeElement;\n }\n\n onDaysFocusout(): void {\n this.keyboardNavigationAllowed = false;\n }\n\n getDayTabIndex(day: DayMonth): number {\n if (\n this.selectedDate &&\n this.selectedDate.month() === day.date.month() &&\n this.selectedDate.year() === day.date.year()\n ) {\n if (this.selectedDate.date() === day.date.date()) {\n return 0;\n }\n return -1;\n } else if (this.isToday(day.date)) {\n return 0;\n } else if (\n day.isCurrentMonth &&\n day.dayOfMonth === 1 &&\n (day.date.month() !== dayjs().month() ||\n day.date.year() !== dayjs().year())\n ) {\n return 0;\n }\n return -1;\n }\n\n focusDefaultDay(): void {\n // Have to wait for a micro task empty as we're affecting the DOM outside of the Angular lifecycle.\n this.ngZone.onMicrotaskEmpty.pipe(first()).subscribe(() => {\n if (this.isVisible && this.datepickerTriggerHtmlElement) {\n this.datePickerNavigationHelper.focusDefaultDay(\n !!this.selectedDate\n );\n }\n });\n }\n\n private initializeDatepicker(): void {\n this.populateMonthList();\n this.populateYearList();\n this.weekDays = this.datePickerHelper.getWeekDays();\n this.weeks = this.datePickerHelper.getWeeksOfMonth(\n dayjs().format(this.datePickerHelper.YEAR_STRING_FORMAT),\n dayjs().format(this.datePickerHelper.MONTH_STRING_NUMBER_FORMAT)\n );\n }\n\n private setDate(date: dayjs.Dayjs): void {\n this.selectedDate = date;\n\n // Either we have a date to set or we take today\n const dateToFormat = date ? date : dayjs();\n this.weeks = this.datePickerHelper.getWeeksOfMonth(\n dateToFormat.format(this.datePickerHelper.YEAR_STRING_FORMAT),\n dateToFormat.format(\n this.datePickerHelper.MONTH_STRING_NUMBER_FORMAT\n ),\n dateToFormat.format(this.datePickerHelper.DAY_STRING_NUMBER_FORMAT)\n );\n }\n\n private getDateAsArray(date: dayjs.Dayjs): number[] {\n return [\n +date.format(this.datePickerHelper.YEAR_STRING_FORMAT),\n +date.format(this.datePickerHelper.MONTH_STRING_NUMBER_FORMAT),\n +date.format(this.datePickerHelper.DAY_STRING_NUMBER_FORMAT)\n ];\n }\n\n private focusOnDatepickerTrigger(\n wasOpen: boolean,\n isVisible: boolean\n ): void {\n // Focus back on the trigger. No need for a setTimeout as the trigger should still be in the DOM.\n // Only does it when the modal is closed from a open state to avoid to set\n // the focus when the page loads.\n if (wasOpen && !isVisible && this.datepickerTriggerHtmlElement) {\n this.datepickerTriggerHtmlElement.focus();\n }\n }\n\n private populateMonthList(): void {\n this.monthListItem = dayjs()\n .localeData()\n .months()\n .map((month: string, index: number) => ({\n label: month,\n value: index.toString()\n }));\n }\n\n private populateYearList(): void {\n const range = (start: number, end: number): number[] =>\n Array.from({ length: end - start + 1 }, (v, k) => k + start);\n\n this.yearListItem = range(this.minYear, this.maxYear).map(\n (year: number) => ({\n label: year.toString(),\n value: year.toString()\n })\n );\n }\n\n private onKeyDownInner(keyEvent: KeyboardEvent): boolean {\n // IE doesn't support keyEvent.code, and has different values\n // in keyEvent.key (Down instead of ArrowDown for instance), hence the multi-support.\n const ie11CompatibleCode = keyEvent.code || keyEvent.key;\n switch (ie11CompatibleCode) {\n case 'Down':\n case 'ArrowDown':\n this.datePickerNavigationHelper.focusNextWeekDay();\n break;\n case 'Up':\n case 'ArrowUp':\n this.datePickerNavigationHelper.focusPreviousWeekDay();\n break;\n case 'Space':\n case 'Spacebar':\n case 'Enter':\n document.activeElement.dispatchEvent(new Event('click'));\n break;\n case 'Right':\n case 'ArrowRight':\n this.datePickerNavigationHelper.focusNextDay();\n break;\n case 'Left':\n case 'ArrowLeft':\n this.datePickerNavigationHelper.focusPreviousDay();\n break;\n default:\n return true;\n }\n\n keyEvent.preventDefault();\n keyEvent.stopPropagation();\n\n return false;\n }\n}\n","<div\n id=\"datepicker_wrapper\"\n *ngIf=\"isDatepickerVisible\"\n [cdkTrapFocus]=\"!!datepickerTriggerHtmlElement\"\n tabindex=\"-1\"\n role=\"application\"\n [attr.aria-label]=\"\n 'foehn-date-picker.container.aria-label' | fromDictionary\n \"\n>\n <button\n *ngIf=\"closeable\"\n (click)=\"isDatepickerVisible = false\"\n type=\"button\"\n class=\"btn close\"\n [attr.aria-label]=\"\n 'foehn-date-picker.close-button.aria-label' | fromDictionary\n \"\n id=\"closeButton\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <div id=\"datepicker_header\" class=\"d-flex justify-content-between\">\n <button\n id=\"previous-month\"\n class=\"btn btn-link\"\n (click)=\"previousMonth()\"\n >\n <foehn-icon-chevron-left\n [title]=\"\n 'foehn-date-picker.previous-month-button.title'\n | fromDictionary\n \"\n ></foehn-icon-chevron-left>\n </button>\n <ng-container *ngIf=\"currentMonthYear | async as monthYear\">\n <span id=\"month-year-label\" aria-live=\"polite\" class=\"sr-only\">\n {{\n 'foehn-date-picker.screen-reader.actual-month-displayed'\n | fromDictionary\n }}\n {{ getMonthAsReadable(monthYear.month) }} {{ monthYear.year }}\n </span>\n <foehn-select\n id=\"month-input\"\n class=\"align-self-center\"\n [label]=\"\n 'foehn-date-picker.screen-reader.month-input.label'\n | fromDictionary\n \"\n [isLabelSrOnly]=\"true\"\n [elements]=\"monthListItem\"\n [model]=\"monthYear.month\"\n [required]=\"false\"\n (userInput)=\"userInputMonth($event)\"\n ></foehn-select>\n <foehn-select\n id=\"year-input\"\n class=\"align-self-center\"\n [label]=\"\n 'foehn-date-picker.screen-reader.year-input.label'\n | fromDictionary\n \"\n [isLabelSrOnly]=\"true\"\n [elements]=\"yearListItem\"\n [model]=\"monthYear.year\"\n [required]=\"false\"\n (userInput)=\"userInputYear($event)\"\n ></foehn-select>\n </ng-container>\n <button id=\"next-month\" class=\"btn btn-link\" (click)=\"nextMonth()\">\n <foehn-icon-chevron-right\n [title]=\"\n 'foehn-date-picker.next-month-button.title' | fromDictionary\n \"\n ></foehn-icon-chevron-right>\n </button>\n </div>\n <table\n id=\"datepicker_table\"\n role=\"grid\"\n (focusin)=\"onDaysFocusin()\"\n (focusout)=\"onDaysFocusout()\"\n >\n <thead role=\"presentation\" aria-hidden=\"true\">\n <tr role=\"row\">\n <th\n scope=\"col\"\n role=\"columnheader\"\n *ngFor=\"let weekday of weekDays\"\n >\n <foehn-abbr\n [text]=\"weekday.substr(0, 2)\"\n [title]=\"weekday\"\n ></foehn-abbr>\n </th>\n </tr>\n </thead>\n <tbody role=\"presentation\">\n <tr role=\"row\" *ngFor=\"let week of weeks; let indexRow = index\">\n <td\n role=\"gridcell\"\n *ngFor=\"let dayOfWeek of week; let indexColumn = index\"\n >\n <button\n class=\"btn w-100\"\n #dayButtonElemRef\n [id]=\"'day_' + indexRow + '_' + indexColumn\"\n [tabindex]=\"getDayTabIndex(dayOfWeek)\"\n [class.btn-info]=\"!isToday(dayOfWeek.date)\"\n [class.btn-secondary]=\"isToday(dayOfWeek.date)\"\n [class.btn-danger]=\"isSelected(dayOfWeek.date)\"\n [attr.aria-label]=\"\n weekDays[indexColumn] +\n ' ' +\n dayOfWeek.dateAsReadable\n \"\n [attr.data-is-today]=\"isToday(dayOfWeek.date)\"\n [attr.data-is-selected]=\"isSelected(dayOfWeek.date)\"\n [attr.data-row-index]=\"indexRow\"\n [attr.data-column-index]=\"indexColumn\"\n [attr.day-number]=\"dayOfWeek.dayOfMonth\"\n [disabled]=\"!dayOfWeek.isCurrentMonth\"\n (click)=\"handleUserInput(dayOfWeek.date)\"\n >\n {{ dayOfWeek.dayOfMonth }}\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FoehnDatePickerComponent } from './foehn-date-picker.component';\nimport { FoehnIconsModule } from '../foehn-icons/foehn-icons.module';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { FoehnCheckablesModule } from '../foehn-checkables/foehn-checkables.module';\nimport { FoehnMiscModule } from '../foehn-misc/foehn-misc.module';\nimport { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';\n\n@NgModule({\n imports: [\n CommonModule,\n FoehnIconsModule,\n A11yModule,\n FoehnCheckablesModule,\n FoehnMiscModule,\n SdkDictionaryModule\n ],\n declarations: [FoehnDatePickerComponent],\n exports: [FoehnDatePickerComponent]\n})\nexport class FoehnDatePickerModule {}\n","import dayjs from 'dayjs';\n\nexport class DayMonth {\n date: dayjs.Dayjs;\n dateAsString: string;\n dateAsReadable: string;\n dayOfMonth: number;\n isCurrentMonth: boolean;\n}\n","export class MonthYear {\n year: string;\n month: string;\n}\n","export class FocusedDay {\n disabled: boolean;\n indexDay: number;\n indexRow: number;\n indexColumn: number;\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n ViewChild\n} from '@angular/core';\nimport dayjs from 'dayjs';\n\n@Component({\n selector: 'foehn-date-picker-button',\n templateUrl: './foehn-date-picker-button.component.html',\n styleUrls: ['./foehn-date-picker-button.component.css']\n})\nexport class FoehnDatePickerButtonComponent {\n @ViewChild('datepickerTrigger', { static: true })\n datepickerTrigger: ElementRef;\n\n @Input()\n minYear = dayjs().year() - 100;\n\n @Input()\n maxYear = dayjs().year() + 10;\n\n @Input()\n displaySelectedDate = true;\n\n @Output()\n modelChange = new EventEmitter<number[]>();\n\n @Output()\n userInput = new EventEmitter<number[]>();\n\n model_: number[];\n\n private isVisible = false;\n\n @Input()\n set model(value: number[]) {\n this.onModelChange(value);\n }\n\n get model(): number[] {\n return this.model_;\n }\n\n get isDatepickerVisible(): boolean {\n return this.isVisible;\n }\n\n open(): void {\n this.isVisible = true;\n }\n\n close(): void {\n this.updateVisibilityStatus(false);\n }\n\n updateVisibilityStatus(status: boolean): void {\n // In case the modal is closed by another mean.\n this.isVisible = status;\n }\n\n onModelChange(value: number[]): void {\n this.updateNgModel(value);\n }\n\n updateNgModel(value: number[]): void {\n this.model_ = value;\n this.modelChange.emit(value);\n }\n\n handleUserInput(date: number[]): void {\n this.userInput.next(date);\n this.updateVisibilityStatus(false);\n }\n}\n","<div id=\"datepickerbutton_wrapper\" tabindex=\"-1\">\n <button\n type=\"button\"\n class=\"clear-button btn d-flex\"\n (click)=\"open()\"\n #datepickerTrigger\n >\n <foehn-icon-calendar\n [title]=\"'foehn-date-picker-button.icon-title' | fromDictionary\"\n ></foehn-icon-calendar>\n <span\n *ngIf=\"model && model.length === 3\"\n id=\"selected-date-label\"\n aria-live=\"polite\"\n class=\"m-0 pl-2 font-weight-normal align-self-center\"\n [class.sr-only]=\"!displaySelectedDate\"\n >\n <span class=\"sr-only\">\n {{\n 'foehn-date-picker-button.screen-reader.selected-date'\n | fromDictionary\n }}\n </span>\n {{ model | displayDate }}\n </span>\n </button>\n\n <foehn-date-picker\n [(model)]=\"model\"\n [isDatepickerVisible]=\"isDatepickerVisible\"\n (isDatepickerVisibleChange)=\"updateVisibilityStatus($event)\"\n (userInput)=\"handleUserInput($event)\"\n [datepickerTriggerHtmlElement]=\"datepickerTrigger\"\n [minYear]=\"minYear\"\n [maxYear]=\"maxYear\"\n ></foehn-date-picker>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FoehnDatePickerButtonComponent } from './foehn-date-picker-button.component';\nimport { FoehnIconsModule } from '../foehn-icons/foehn-icons.module';\nimport { FoehnDatePickerModule } from '../foehn-date-picker/foehn-date-picker.module';\nimport { PipeModule } from '../pipes/pipes.module';\nimport { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';\n\n@NgModule({\n imports: [\n CommonModule,\n FoehnIconsModule,\n FoehnDatePickerModule,\n PipeModule,\n SdkDictionaryModule\n ],\n declarations: [FoehnDatePickerButtonComponent],\n exports: [FoehnDatePickerButtonComponent]\n})\nexport class FoehnDatePickerButtonModule {}\n","import { Component, forwardRef } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { SessionInfo } from '../sdk-session-info/session-info.service';\nimport { FoehnInputComponent } from '../foehn-input/foehn-input.component';\n\n@Component({\n selector: 'foehn-decision-electronique',\n templateUrl: './foehn-decision-electronique.component.html',\n providers: [\n {\n provide: FoehnInputComponent,\n useExisting: forwardRef(() => FoehnDecisionElectroniqueComponent),\n multi: true\n }\n ]\n})\nexport class FoehnDecisionElectroniqueComponent extends FoehnInputComponent<boolean> {\n isConnectedCyber: Observable<boolean>;\n\n constructor(private sessionInfo: SessionInfo) {\n super();\n this.name = 'acceptDecisionElectronique';\n this.id = this.name;\n this.isConnectedCyber = this.sessionInfo.data.pipe(\n map(userInfo => !!userInfo && !!userInfo.context)\n );\n }\n}\n","<section\n *ngIf=\"isConnectedCyber | async\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n class=\"mb-3 p-2 bg-light\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <h2 class=\"h5\">\n Autorisation de notification des décisions par voie électronique\n </h2>\n\n <p>\n Votre demande est sur le point d’être envoyée. Conformément à l’art. 44a\n LPA-VD, l’autorité peut notifier ses décisions par voie électronique aux\n parties qui ont donné leur accord explicite à cette communication.\n </p>\n\n <fieldset [attr.aria-describedby]=\"getDescribedBy()\">\n <legend class=\"vd-p\">\n <span>\n Acceptez-vous que l’autorité compétente pour le traitement de\n votre demande vous notifie ses décisions par voie électronique ?\n </span>\n </legend>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <div class=\"d-flex\">\n <label class=\"form-check-label m-2\" [for]=\"buildChildId('True')\">\n <input\n type=\"radio\"\n [ngModel]=\"model\"\n (ngModelChange)=\"updateNgModel($event)\"\n [name]=\"buildChildName('True')\"\n [attr.name]=\"buildChildName('True')\"\n [value]=\"true\"\n [attr.id]=\"buildChildId('True')\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n (change)=\"handleChange(true)\"\n #entryComponent\n />\n <span class=\"ml-1\">Oui</span>\n </label>\n\n <label class=\"form-check-label m-2\" [for]=\"buildChildId('False')\">\n <input\n type=\"radio\"\n [ngModel]=\"model\"\n (ngModelChange)=\"updateNgModel($event)\"\n [name]=\"buildChildName('False')\"\n [attr.name]=\"buildChildName('False')\"\n [value]=\"false\"\n [attr.id]=\"buildChildId('False')\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n (change)=\"handleChange(false)\"\n />\n <span class=\"ml-1\">Non</span>\n </label>\n </div>\n </fieldset>\n\n <p>\n Si vous cliquez sur « Oui », vous autorisez l’autorité à vous notifier\n ses décisions sur le portail sécurisé.\n <br />\n Si vous cliquez sur « Non », vous refusez la notification de décisions\n sur le portail sécurisé.\n </p>\n</section>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { FoehnDecisionElectroniqueComponent } from './foehn-decision-electronique.component';\nimport { FoehnValidationAlertsModule } from '../foehn-validation-alerts/foehn-validation-alerts.module';\n\n@NgModule({\n imports: [CommonModule, FormsModule, FoehnValidationAlertsModule],\n declarations: [FoehnDecisionElectroniqueComponent],\n exports: [FoehnDecisionElectroniqueComponent]\n})\nexport class FoehnDecisionElectroniqueModule {}\n","/*\n * Public API Surface of prestations-ng\n */\n\n// Core\nexport * from './prestations-ng-core.module';\nexport * from './abstract-page-component';\nexport * from './backend-response';\nexport * from './i18n-form';\nexport * from './gesdem-error/gesdem-error.component';\nexport * from './foehn-notfound/foehn-notfound.component';\nexport * from './gesdem/gesdem-loader.guard';\nexport * from './gesdem-confirmation/gesdem-confirmation.component';\nexport * from './sdk-session-info/session-info-data';\nexport * from './sdk-session-info/session-info.service';\nexport * from './sdk-session-info/session-info-with-application.service';\nexport * from './sdk-appinfo/application-info.service';\nexport * from './sdk-appinfo/application-info';\nexport * from './service-locator';\nexport * from './gesdem/gesdem-handler.service';\nexport * from './gesdem/gesdem-event.service';\n\n// Page\nexport * from './foehn-page/foehn-page.service';\nexport * from './foehn-page/foehn-page.component';\nexport * from './foehn-page/foehn-page.module';\nexport * from './foehn-page/foehn-page-counter.component';\n\n// Header\nexport * from './foehn-header/foehn-header.component';\nexport * from './foehn-header/foehn-header.module';\nexport * from './foehn-header/foehn-skip-link.component';\n\n// Footer\nexport * from './foehn-footer/footer-link.type';\n\n// Address\nexport * from './foehn-address/foehn-address.module';\nexport * from './foehn-address/foehn-input-address.component';\nexport * from './foehn-address/foehn-display-address.component';\nexport * from './foehn-address/address.type';\nexport * from './foehn-address/foehn-input-foreign-locality.component';\nexport * from './foehn-address/foehn-input-foreign-street.component';\n\n// Breadcrumb\nexport * from './foehn-breadcrumb/foehn-breadcrumb.component';\nexport * from './foehn-breadcrumb/foehn-breadcrumb.module';\nexport * from './foehn-breadcrumb/breadcrumb-event.service';\nexport * from './foehn-breadcrumb/breadcrumb';\n\n// Checkables\nexport * from './foehn-checkables/foehn-checkables.module';\nexport * from './foehn-checkables/foehn-checkable-group.component';\nexport * from './foehn-checkables/foehn-checkbox.component';\nexport * from './foehn-checkables/foehn-radio.component';\nexport * from './foehn-checkables/foehn-select.component';\nexport * from './foehn-checkables/form-select-option';\n\n// Autocomplete\nexport * from './foehn-autocomplete/foehn-autocomplete.component';\nexport * from './foehn-autocomplete/foehn-autocomplete.module';\n\n// Inputs\nexport * from './foehn-input/foehn-input.module';\nexport * from './foehn-input/foehn-input.component';\nexport * from './foehn-input/foehn-input-string.component';\nexport * from './foehn-input/foehn-input-text.component';\nexport * from './foehn-input/foehn-input-textarea.component';\nexport * from './foehn-input/foehn-input-number.component';\nexport * from './foehn-input/foehn-input-email.component';\nexport * from './foehn-input/foehn-input-password.component';\nexport * from './foehn-input/foehn-input-hidden.component';\nexport * from './foehn-input/foehn-input-phone.component';\nexport * from './foehn-input-date/foehn-input-date.component';\nexport * from './foehn-input-time/foehn-input-time.component';\n\n// NAVS 13\nexport * from './foehn-nav13/foehn-input-nav13.module';\nexport * from './foehn-nav13/foehn-input-nav13.component';\n\n// Booleans\nexport * from './foehn-boolean/foehn-boolean.module';\nexport * from './foehn-boolean/foehn-boolean-checkbox.component';\nexport * from './foehn-boolean/foehn-boolean-radio.component';\n\n// Pipes\nexport * from './pipes/pipes.module';\nexport * from './pipes/date.pipe';\nexport * from './pipes/formatIde.pipe';\nexport * from './pipes/currency.pipe';\n\n// Growl\nexport * from './foehn-growl/growl-broker.service';\nexport * from './foehn-growl/growl-message';\nexport * from './foehn-growl/growl-types';\n\n// Dictionary\nexport * from './sdk-dictionary/sdk-dictionary.service';\nexport * from './sdk-dictionary/sdk-dictionary.pipe';\nexport * from './sdk-dictionary/sdk-dictionary.module';\n\n// Navigation\nexport * from './foehn-navigation/foehn-navigation.component';\nexport * from './foehn-navigation/foehn-navigation.service';\nexport * from './foehn-navigation/foehn-navigation.module';\n\n// Validations\nexport * from './foehn-validation-alerts/foehn-validation-alerts.component';\nexport * from './foehn-validation-alerts/foehn-validation-alerts.module';\nexport * from './validation/validation-handler.service';\nexport * from './foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.module';\nexport * from './foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.component';\nexport * from './foehn-validation-alert-summary/foehn-validation-alert-summary.module';\nexport * from './foehn-validation-alert-summary/foehn-validation-alert-summary.component';\n\n// Icons\nexport * from './foehn-icons/foehn-icons.module';\nexport * from './foehn-icons/foehn-icon-calendar.component';\nexport * from './foehn-icons/foehn-icon-check.component';\nexport * from './foehn-icons/foehn-icon-check-square-o.component';\nexport * from './foehn-icons/foehn-icon-chevron-down.component';\nexport * from './foehn-icons/foehn-icon-chevron-left.component';\nexport * from './foehn-icons/foehn-icon-chevron-right.component';\nexport * from './foehn-icons/foehn-icon-chevron-up.component';\nexport * from './foehn-icons/foehn-icon-clock.component';\nexport * from './foehn-icons/foehn-icon-comment-dots.component';\nexport * from './foehn-icons/foehn-icon-edit.component';\nexport * from './foehn-icons/foehn-icon-external-link-alt.component';\nexport * from './foehn-icons/foehn-icon-file-pdf.component';\nexport * from './foehn-icons/foehn-icon-info-circle.component';\nexport * from './foehn-icons/foehn-icon-lock.component';\nexport * from './foehn-icons/foehn-icon-map-marker.component';\nexport * from './foehn-icons/foehn-icon-minus-circle.component';\nexport * from './foehn-icons/foehn-icon-plus-circle.component';\nexport * from './foehn-icons/foehn-icon-plus-square.component';\nexport * from './foehn-icons/foehn-icon-search.component';\nexport * from './foehn-icons/foehn-icon-times.component';\nexport * from './foehn-icons/foehn-icon-trash-alt.component';\nexport * from './foehn-icons/foehn-icon-unlock-alt.component';\n\n// List\nexport * from './foehn-list/foehn-list.module';\nexport * from './foehn-list/foehn-list.component';\nexport * from './foehn-list/page-change-event';\n\n// Misc\nexport * from './sdk-redirect/sdk-redirect.module';\nexport * from './sdk-redirect/redirect.component';\nexport * from './sdk-recaptcha/sdk-recaptcha.module';\nexport * from './sdk-recaptcha/sdk-recaptcha.component';\nexport * from './sdk-recaptcha/recaptcha.service';\nexport * from './gesdem-error/gesdem-error.module';\nexport * from './gesdem-confirmation/gesdem-confirmation.module';\nexport * from './foehn-notfound/foehn-notfound.module';\nexport * from './foehn-form/foehn-form.module';\nexport * from './foehn-form/foehn-form.component';\nexport * from './error-template';\nexport * from './foehn-user-connected-as/foehn-user-connected-as.component';\nexport * from './foehn-user-connected-as/foehn-user-connected-as.module';\n\n// Upload\nexport * from './foehn-upload/document-reference';\nexport * from './foehn-upload/pending-upload.type';\nexport * from './foehn-upload/uploader.helper';\nexport * from './foehn-upload/abstract-foehn-uploader.component';\n\n// Multiple upload\nexport * from './foehn-upload/foehn-multi-upload/foehn-multi-upload.module';\nexport * from './foehn-upload/foehn-multi-upload/foehn-multi-upload.component';\nexport * from './foehn-upload/foehn-multi-upload/multi-upload.service';\nexport * from './foehn-upload/foehn-multi-upload/multi-upload.type';\nexport * from './foehn-upload/foehn-multi-upload/pending-upload.service';\n\n// Bo Multiple upload\nexport * from './foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.module';\nexport * from './foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.component';\nexport * from './foehn-upload/foehn-bo-multi-upload/bo-multi-upload.service';\nexport * from './foehn-upload/foehn-bo-multi-upload/bo-multi-upload.type';\n\n// Picture upload\nexport * from './foehn-upload/foehn-picture-upload/foehn-picture-upload.module';\nexport * from './foehn-upload/foehn-picture-upload/foehn-picture-upload.component';\n\n// Payment\nexport * from './sdk-epayment/sdk-epayment.module';\nexport * from './sdk-epayment/sdk-epayment.component';\nexport * from './sdk-epayment/sdk-epayment.service';\n\n// Modal\nexport * from './foehn-modal/foehn-modal.module';\nexport * from './foehn-modal/foehn-modal.component';\nexport * from './foehn-help-modal/foehn-help-modal.component';\nexport * from './foehn-help-modal/foehn-help-modal.module';\nexport * from './foehn-help-modal/foehn-help-modal.type';\nexport * from './foehn-confirm-modal/foehn-confirm-modal.service';\nexport * from './foehn-confirm-modal/foehn-confirm-modal.module';\nexport * from './foehn-confirm-modal/foehn-confirm-modal.component';\nexport * from './foehn-confirm-modal/foehn-confirm-modal-content';\nexport * from './foehn-page/foehn-page-modal.component';\n\n// Date\nexport * from './sdk-date/date.helper';\n\n// Currency\nexport * from './sdk-currency/currency.helper';\n\n// Directives\nexport * from './directives/formatter.module';\nexport * from './directives/currency-formatter.directive';\nexport * from './directives/ndc-formatter.directive';\nexport * from './directives/ide-formatter.directive';\nexport * from './directives/iban-formatter.directive';\n\n// Recap Section\nexport * from './foehn-recap-section/foehn-recap-section.component';\nexport * from './foehn-recap-section/foehn-recap-section.module';\nexport * from './foehn-recap-section/foehn-recap-section.type';\n\n// Action statuts\nexport * from './gesdem/gesdem-statut-utils';\n\n// Recovery\nexport * from './gesdem-action-recovery/gesdem-action-recovery.module';\nexport * from './gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component';\nexport * from './gesdem-action-recovery/gesdem-action-recovery-login/gesdem-action-recovery-login.component';\n\n// Miscellaneous\nexport * from './foehn-misc/foehn-misc.module';\nexport * from './foehn-misc/foehn-abbr.component';\n\n// Menu Prestation\nexport * from './foehn-menu-prestation/foehn-menu-prestation.module';\nexport * from './foehn-menu-prestation/abstract-menu-page.component';\nexport * from './foehn-menu-prestation/abstract-page-from-menu.component';\nexport * from './foehn-menu-prestation/abstract-list-item-detail-page.component';\nexport * from './foehn-menu-prestation/foehn-error-pill/foehn-error-pill.component';\nexport * from './foehn-menu-prestation/foehn-menu-items/foehn-menu-item/foehn-menu-item.component';\nexport * from './foehn-menu-prestation/foehn-menu-items/foehn-menu-item-transmit/foehn-menu-item-transmit.component';\nexport * from './foehn-menu-prestation/foehn-list-summary/foehn-list-summary.component';\nexport * from './foehn-menu-prestation/foehn-list-summary/foehn-list-item';\nexport * from './foehn-menu-prestation/foehn-list-summary/foehn-list-item-description';\n\n// Date picker\nexport * from './foehn-date-picker/foehn-date-picker.module';\nexport * from './foehn-date-picker/foehn-date-picker.component';\nexport * from './foehn-date-picker/date-picker.helper';\nexport * from './foehn-date-picker/date-picker-navigation.helper';\nexport * from './foehn-date-picker/day-month.type';\nexport * from './foehn-date-picker/month-year.type';\nexport * from './foehn-date-picker/focused-day.type';\nexport * from './foehn-date-picker-button/foehn-date-picker-button.module';\nexport * from './foehn-date-picker-button/foehn-date-picker-button.component';\n\n// foehn-decision-electronique\nexport * from './foehn-decision-electronique/foehn-decision-electronique.module';\nexport * from './foehn-decision-electronique/foehn-decision-electronique.component';\n\n// helpers\nexport * from './helpers/object.helper';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["Subject","map","HttpResponse","catchError","HttpErrorResponse","observableThrowError","Injectable","HTTP_INTERCEPTORS","HttpClientModule","RouterModule","NgModule","BehaviorSubject","ActionStatut","filter","shareReplay","combineLatest","mergeMap","throwError","of","tap","HttpParams","switchMap","NavigationDirection","EventEmitter","debounceTime","NgModel","Directive","Input","ViewChildren","ViewChild","Output","HostBinding","AsyncPipe","Pipe","Component","NgForm","ContentChildren","EMPTY","throttleTime","share","ActivatedRoute","interval","merge","first","faTimes","forwardRef","finalize","faInfoCircle","NavigationEnd","HttpClient","faExternalLinkAlt","faChevronUp","HostListener","CommonModule","faCheckSquare","faCheck","faChevronDown","faLock","faMapMarkerAlt","faSearch","faUnlockAlt","faMinusCircle","faPlusCircle","faTrashAlt","faPlusSquare","faChevronLeft","faChevronRight","faEdit","faCommentDots","faFilePdf","faClock","faCalendarAlt","FontAwesomeModule","CdkVirtualScrollViewport","FormsModule","ScrollingModule","A11yModule","distinctUntilChanged","dayjs","isToday","registerLocaleData","localeFr","DatePipe","TemplateRef","ContentChild","ImageCropperModule","iban","localeData"],"mappings":"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"}
|