@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.
Files changed (590) hide show
  1. package/CHANGELOG.md +666 -1
  2. package/CONTRIBUTING.md +32 -1
  3. package/ESLINT_MIGRATION_GUIDE.md +35 -7
  4. package/README.md +6 -0
  5. package/UPGRADING_V12.md +0 -15
  6. package/UPGRADING_V13.md +0 -15
  7. package/UPGRADING_V14.md +8 -26
  8. package/UPGRADING_V15.md +113 -0
  9. package/UPGRADING_V16.md +56 -0
  10. package/abstract-page-component.d.ts +8 -8
  11. package/directives/currency-formatter.directive.d.ts +4 -1
  12. package/directives/iban-formatter.directive.d.ts +1 -1
  13. package/directives/ide-formatter.directive.d.ts +1 -1
  14. package/directives/ndc-formatter.directive.d.ts +1 -1
  15. package/dsivd-prestations-ng-v16.0.0-beta2.tgz +0 -0
  16. package/esm2020/abstract-page-component.mjs +223 -0
  17. package/esm2020/directives/currency-formatter.directive.mjs +143 -0
  18. package/{esm2015/directives/formatter.module.js → esm2020/directives/formatter.module.mjs} +8 -8
  19. package/{esm2015/directives/iban-formatter.directive.js → esm2020/directives/iban-formatter.directive.mjs} +4 -4
  20. package/{esm2015/directives/ide-formatter.directive.js → esm2020/directives/ide-formatter.directive.mjs} +4 -4
  21. package/{esm2015/directives/ndc-formatter.directive.js → esm2020/directives/ndc-formatter.directive.mjs} +4 -4
  22. package/{esm2015/dsivd-prestations-ng.js → esm2020/dsivd-prestations-ng.mjs} +0 -0
  23. package/{esm2015/foehn-address/address.type.js → esm2020/foehn-address/address.type.mjs} +1 -1
  24. package/esm2020/foehn-address/foehn-address.module.mjs +55 -0
  25. package/{esm2015/foehn-address/foehn-display-address.component.js → esm2020/foehn-address/foehn-display-address.component.mjs} +5 -9
  26. package/esm2020/foehn-address/foehn-input-address.component.mjs +406 -0
  27. package/esm2020/foehn-address/foehn-input-foreign-locality.component.mjs +66 -0
  28. package/esm2020/foehn-address/foehn-input-foreign-street.component.mjs +55 -0
  29. package/esm2020/foehn-agenda/calendar.type.mjs +3 -0
  30. package/esm2020/foehn-agenda/current-week.type.mjs +4 -0
  31. package/esm2020/foehn-agenda/day-slots.type.mjs +3 -0
  32. package/esm2020/foehn-agenda/foehn-agenda-navigation/foehn-agenda-navigation.component.mjs +74 -0
  33. package/esm2020/foehn-agenda/foehn-agenda-timeslot-panel/foehn-agenda-timeslot-panel.component.mjs +242 -0
  34. package/esm2020/foehn-agenda/foehn-agenda.component.mjs +95 -0
  35. package/esm2020/foehn-agenda/foehn-agenda.module.mjs +62 -0
  36. package/esm2020/foehn-agenda/pagination-week.type.mjs +3 -0
  37. package/esm2020/foehn-agenda/selected-slot.type.mjs +3 -0
  38. package/esm2020/foehn-autocomplete/foehn-autocomplete.component.mjs +608 -0
  39. package/esm2020/foehn-autocomplete/foehn-autocomplete.module.mjs +40 -0
  40. package/esm2020/foehn-boolean/foehn-boolean-checkbox.component.mjs +28 -0
  41. package/esm2020/foehn-boolean/foehn-boolean-radio.component.mjs +40 -0
  42. package/esm2020/foehn-boolean/foehn-boolean.module.mjs +33 -0
  43. package/esm2020/foehn-breadcrumb/breadcrumb-event.service.mjs +181 -0
  44. package/{esm2015/foehn-breadcrumb/breadcrumb.js → esm2020/foehn-breadcrumb/breadcrumb.mjs} +0 -0
  45. package/esm2020/foehn-breadcrumb/foehn-breadcrumb.component.mjs +80 -0
  46. package/esm2020/foehn-breadcrumb/foehn-breadcrumb.module.mjs +19 -0
  47. package/esm2020/foehn-checkables/foehn-checkable-group.component.mjs +298 -0
  48. package/esm2020/foehn-checkables/foehn-checkables.module.mjs +68 -0
  49. package/esm2020/foehn-checkables/foehn-checkbox.component.mjs +37 -0
  50. package/esm2020/foehn-checkables/foehn-radio.component.mjs +64 -0
  51. package/esm2020/foehn-checkables/foehn-select.component.mjs +53 -0
  52. package/{esm2015/foehn-checkables/form-select-option-group.js → esm2020/foehn-checkables/form-select-option-group.mjs} +0 -0
  53. package/{esm2015/foehn-checkables/form-select-option.js → esm2020/foehn-checkables/form-select-option.mjs} +0 -0
  54. package/{esm2015/foehn-confirm-modal/foehn-confirm-modal-content.js → esm2020/foehn-confirm-modal/foehn-confirm-modal-content.mjs} +1 -1
  55. package/esm2020/foehn-confirm-modal/foehn-confirm-modal.component.mjs +40 -0
  56. package/esm2020/foehn-confirm-modal/foehn-confirm-modal.module.mjs +19 -0
  57. package/{esm2015/foehn-confirm-modal/foehn-confirm-modal.service.js → esm2020/foehn-confirm-modal/foehn-confirm-modal.service.mjs} +4 -4
  58. package/esm2020/foehn-date-picker/date-picker-navigation.helper.mjs +167 -0
  59. package/esm2020/foehn-date-picker/date-picker.helper.mjs +132 -0
  60. package/{esm2015/foehn-date-picker/day-month.type.js → esm2020/foehn-date-picker/day-month.type.mjs} +0 -0
  61. package/{esm2015/foehn-date-picker/focused-day.type.js → esm2020/foehn-date-picker/focused-day.type.mjs} +0 -0
  62. package/esm2020/foehn-date-picker/foehn-date-picker.component.mjs +389 -0
  63. package/esm2020/foehn-date-picker/foehn-date-picker.module.mjs +40 -0
  64. package/{esm2015/foehn-date-picker/month-year.type.js → esm2020/foehn-date-picker/month-year.type.mjs} +0 -0
  65. package/esm2020/foehn-date-picker-button/foehn-date-picker-button.component.mjs +97 -0
  66. package/esm2020/foehn-date-picker-button/foehn-date-picker-button.module.mjs +36 -0
  67. package/esm2020/foehn-debug-summary/foehn-debug-summary.component.mjs +67 -0
  68. package/{esm2015/foehn-debug-summary/foehn-debug-summary.component.module.js → esm2020/foehn-debug-summary/foehn-debug-summary.component.module.mjs} +7 -7
  69. package/esm2020/foehn-decision-electronique/foehn-decision-electronique.component.mjs +37 -0
  70. package/esm2020/foehn-decision-electronique/foehn-decision-electronique.module.mjs +32 -0
  71. package/esm2020/foehn-footer/foehn-footer.component.mjs +130 -0
  72. package/{esm2015/foehn-footer/foehn-footer.module.js → esm2020/foehn-footer/foehn-footer.module.mjs} +6 -6
  73. package/{esm2015/foehn-footer/footer-link.type.js → esm2020/foehn-footer/footer-link.type.mjs} +0 -0
  74. package/esm2020/foehn-form/foehn-form.component.mjs +135 -0
  75. package/esm2020/foehn-form/foehn-form.module.mjs +32 -0
  76. package/esm2020/foehn-form/register-ng-model.service.mjs +23 -0
  77. package/esm2020/foehn-growl/foehn-growl.component.mjs +44 -0
  78. package/{esm2015/foehn-growl/foehn-growl.module.js → esm2020/foehn-growl/foehn-growl.module.mjs} +6 -6
  79. package/{esm2015/foehn-growl/growl-broker.service.js → esm2020/foehn-growl/growl-broker.service.mjs} +5 -5
  80. package/{esm2015/foehn-growl/growl-message.js → esm2020/foehn-growl/growl-message.mjs} +1 -1
  81. package/{esm2015/foehn-growl/growl-types.js → esm2020/foehn-growl/growl-types.mjs} +0 -0
  82. package/esm2020/foehn-header/foehn-header.component.mjs +68 -0
  83. package/esm2020/foehn-header/foehn-header.module.mjs +21 -0
  84. package/{esm2015/foehn-header/foehn-skip-link.component.js → esm2020/foehn-header/foehn-skip-link.component.mjs} +5 -8
  85. package/esm2020/foehn-help-modal/foehn-help-modal.component.mjs +44 -0
  86. package/esm2020/foehn-help-modal/foehn-help-modal.module.mjs +20 -0
  87. package/esm2020/foehn-help-modal/foehn-help-modal.type.mjs +2 -0
  88. package/{esm2015/foehn-icons/abstract-icon-component.js → esm2020/foehn-icons/abstract-icon-component.mjs} +5 -5
  89. package/esm2020/foehn-icons/foehn-icon-calendar.component.mjs +19 -0
  90. package/esm2020/foehn-icons/foehn-icon-check-square-o.component.mjs +19 -0
  91. package/esm2020/foehn-icons/foehn-icon-check.component.mjs +19 -0
  92. package/esm2020/foehn-icons/foehn-icon-chevron-down.component.mjs +19 -0
  93. package/esm2020/foehn-icons/foehn-icon-chevron-left.component.mjs +19 -0
  94. package/esm2020/foehn-icons/foehn-icon-chevron-right.component.mjs +19 -0
  95. package/esm2020/foehn-icons/foehn-icon-chevron-up.component.mjs +19 -0
  96. package/esm2020/foehn-icons/foehn-icon-clock.component.mjs +19 -0
  97. package/esm2020/foehn-icons/foehn-icon-comment-dots.component.mjs +19 -0
  98. package/esm2020/foehn-icons/foehn-icon-edit.component.mjs +19 -0
  99. package/esm2020/foehn-icons/foehn-icon-external-link-alt.component.mjs +19 -0
  100. package/esm2020/foehn-icons/foehn-icon-file-pdf.component.mjs +19 -0
  101. package/esm2020/foehn-icons/foehn-icon-info-circle.component.mjs +19 -0
  102. package/esm2020/foehn-icons/foehn-icon-lock.component.mjs +19 -0
  103. package/esm2020/foehn-icons/foehn-icon-map-marker.component.mjs +19 -0
  104. package/esm2020/foehn-icons/foehn-icon-minus-circle.component.mjs +19 -0
  105. package/esm2020/foehn-icons/foehn-icon-plus-circle.component.mjs +19 -0
  106. package/esm2020/foehn-icons/foehn-icon-plus-square.component.mjs +19 -0
  107. package/esm2020/foehn-icons/foehn-icon-search.component.mjs +19 -0
  108. package/esm2020/foehn-icons/foehn-icon-times.component.mjs +19 -0
  109. package/esm2020/foehn-icons/foehn-icon-trash-alt.component.mjs +19 -0
  110. package/esm2020/foehn-icons/foehn-icon-unlock-alt.component.mjs +19 -0
  111. package/{esm2015/foehn-icons/foehn-icons.module.js → esm2020/foehn-icons/foehn-icons.module.mjs} +20 -20
  112. package/esm2020/foehn-input/foehn-input-email.component.mjs +59 -0
  113. package/esm2020/foehn-input/foehn-input-hidden.component.mjs +55 -0
  114. package/esm2020/foehn-input/foehn-input-number.component.mjs +276 -0
  115. package/esm2020/foehn-input/foehn-input-password.component.mjs +52 -0
  116. package/esm2020/foehn-input/foehn-input-phone.component.mjs +92 -0
  117. package/{esm2015/foehn-input/foehn-input-string.component.js → esm2020/foehn-input/foehn-input-string.component.mjs} +5 -5
  118. package/esm2020/foehn-input/foehn-input-text.component.mjs +76 -0
  119. package/esm2020/foehn-input/foehn-input-textarea.component.mjs +109 -0
  120. package/esm2020/foehn-input/foehn-input.component.mjs +390 -0
  121. package/esm2020/foehn-input/foehn-input.module.mjs +93 -0
  122. package/{esm2015/foehn-input/pattern.const.js → esm2020/foehn-input/pattern.const.mjs} +0 -0
  123. package/esm2020/foehn-input-date/foehn-input-date.component.mjs +118 -0
  124. package/esm2020/foehn-input-date-time/foehn-input-date-time.component.mjs +143 -0
  125. package/esm2020/foehn-input-time/foehn-input-time.component.mjs +74 -0
  126. package/esm2020/foehn-list/foehn-list.component.mjs +128 -0
  127. package/esm2020/foehn-list/foehn-list.module.mjs +19 -0
  128. package/{esm2015/foehn-list/page-change-event.js → esm2020/foehn-list/page-change-event.mjs} +0 -0
  129. package/esm2020/foehn-menu-prestation/abstract-list-item-detail-page.component.mjs +122 -0
  130. package/{esm2015/foehn-menu-prestation/abstract-menu-page.component.js → esm2020/foehn-menu-prestation/abstract-menu-page.component.mjs} +4 -4
  131. package/{esm2015/foehn-menu-prestation/abstract-page-from-menu.component.js → esm2020/foehn-menu-prestation/abstract-page-from-menu.component.mjs} +4 -4
  132. package/esm2020/foehn-menu-prestation/foehn-error-pill/foehn-error-pill.component.mjs +23 -0
  133. 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
  134. 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
  135. package/esm2020/foehn-menu-prestation/foehn-list-summary/foehn-list-summary.component.mjs +71 -0
  136. package/esm2020/foehn-menu-prestation/foehn-menu-items/foehn-menu-item/foehn-menu-item.component.mjs +35 -0
  137. package/esm2020/foehn-menu-prestation/foehn-menu-items/foehn-menu-item-transmit/foehn-menu-item-transmit.component.mjs +51 -0
  138. package/esm2020/foehn-menu-prestation/foehn-menu-prestation.module.mjs +59 -0
  139. package/{esm2015/foehn-misc/foehn-abbr.component.js → esm2020/foehn-misc/foehn-abbr.component.mjs} +5 -9
  140. package/{esm2015/foehn-misc/foehn-misc.module.js → esm2020/foehn-misc/foehn-misc.module.mjs} +5 -5
  141. package/esm2020/foehn-modal/foehn-modal.component.mjs +94 -0
  142. package/esm2020/foehn-modal/foehn-modal.module.mjs +21 -0
  143. package/esm2020/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.component.mjs +268 -0
  144. package/esm2020/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.module.mjs +40 -0
  145. package/esm2020/foehn-nav13/foehn-input-nav13.component.mjs +114 -0
  146. package/esm2020/foehn-nav13/foehn-input-nav13.module.mjs +32 -0
  147. package/esm2020/foehn-navigation/foehn-navigation.component.mjs +94 -0
  148. package/esm2020/foehn-navigation/foehn-navigation.module.mjs +32 -0
  149. package/esm2020/foehn-navigation/foehn-navigation.service.mjs +303 -0
  150. package/{esm2015/foehn-notfound/foehn-notfound.component.js → esm2020/foehn-notfound/foehn-notfound.component.mjs} +7 -10
  151. package/esm2020/foehn-notfound/foehn-notfound.module.mjs +20 -0
  152. package/{esm2015/foehn-page/foehn-page-counter.component.js → esm2020/foehn-page/foehn-page-counter.component.mjs} +5 -8
  153. package/esm2020/foehn-page/foehn-page-modal.component.mjs +53 -0
  154. package/{esm2015/foehn-page/foehn-page-modal.service.js → esm2020/foehn-page/foehn-page-modal.service.mjs} +4 -4
  155. package/esm2020/foehn-page/foehn-page.component.mjs +218 -0
  156. package/esm2020/foehn-page/foehn-page.module.mjs +78 -0
  157. package/{esm2015/foehn-page/foehn-page.service.js → esm2020/foehn-page/foehn-page.service.mjs} +4 -4
  158. package/esm2020/foehn-recap-section/foehn-recap-section.component.mjs +88 -0
  159. package/esm2020/foehn-recap-section/foehn-recap-section.module.mjs +20 -0
  160. package/{esm2015/foehn-recap-section/foehn-recap-section.type.js → esm2020/foehn-recap-section/foehn-recap-section.type.mjs} +0 -0
  161. 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
  162. 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
  163. package/esm2020/foehn-status-progress-bar/foehn-status-progress-bar.component.mjs +56 -0
  164. package/esm2020/foehn-status-progress-bar/foehn-status-progress-bar.module.mjs +20 -0
  165. package/esm2020/foehn-table/foehn-table-column-configuration.mjs +3 -0
  166. package/esm2020/foehn-table/foehn-table-page-change-event.mjs +3 -0
  167. package/esm2020/foehn-table/foehn-table.component.mjs +148 -0
  168. package/esm2020/foehn-table/foehn-table.module.mjs +32 -0
  169. package/esm2020/foehn-table/tableSort.mjs +3 -0
  170. package/esm2020/foehn-upload/abstract-foehn-uploader.component.mjs +192 -0
  171. package/{esm2015/foehn-upload/document-reference.js → esm2020/foehn-upload/document-reference.mjs} +0 -0
  172. package/esm2020/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.service.mjs +71 -0
  173. 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
  174. package/esm2020/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.component.mjs +174 -0
  175. package/esm2020/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.module.mjs +40 -0
  176. package/esm2020/foehn-upload/foehn-multi-upload/foehn-multi-upload.component.mjs +224 -0
  177. package/esm2020/foehn-upload/foehn-multi-upload/foehn-multi-upload.module.mjs +40 -0
  178. package/esm2020/foehn-upload/foehn-multi-upload/multi-upload.service.mjs +83 -0
  179. package/{esm2015/foehn-upload/foehn-multi-upload/multi-upload.type.js → esm2020/foehn-upload/foehn-multi-upload/multi-upload.type.mjs} +0 -0
  180. package/esm2020/foehn-upload/foehn-multi-upload/pending-upload.service.mjs +158 -0
  181. package/esm2020/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.mjs +202 -0
  182. package/esm2020/foehn-upload/foehn-picture-upload/foehn-picture-upload.module.mjs +44 -0
  183. package/esm2020/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.component.mjs +75 -0
  184. package/esm2020/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.module.mjs +21 -0
  185. package/esm2020/foehn-upload/foehn-upload-progress-bar/upload-progress.service.mjs +62 -0
  186. package/esm2020/foehn-upload/foehn-upload-progress-bar/upload-progress.type.mjs +3 -0
  187. package/{esm2015/foehn-upload/pending-upload.type.js → esm2020/foehn-upload/pending-upload.type.mjs} +1 -1
  188. package/esm2020/foehn-upload/uploader.helper.mjs +327 -0
  189. 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
  190. 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
  191. package/esm2020/foehn-validation-alert-summary/foehn-validation-alert-summary.component.mjs +96 -0
  192. package/esm2020/foehn-validation-alert-summary/foehn-validation-alert-summary.module.mjs +19 -0
  193. package/esm2020/foehn-validation-alerts/foehn-validation-alerts.component.mjs +29 -0
  194. package/{esm2015/foehn-validation-alerts/foehn-validation-alerts.module.js → esm2020/foehn-validation-alerts/foehn-validation-alerts.module.mjs} +6 -6
  195. package/esm2020/form-error.mjs +2 -0
  196. package/esm2020/form-post-response.mjs +10 -0
  197. package/{esm2015/gesdem/gesdem-error-handler.service.js → esm2020/gesdem/gesdem-error-handler.service.mjs} +4 -4
  198. package/esm2020/gesdem/gesdem-event.service.mjs +38 -0
  199. package/esm2020/gesdem/gesdem-handler.service.mjs +160 -0
  200. package/esm2020/gesdem/gesdem-loader.guard.mjs +41 -0
  201. package/{esm2015/gesdem/gesdem-statut-utils.js → esm2020/gesdem/gesdem-statut-utils.mjs} +0 -0
  202. package/esm2020/gesdem-action-recovery/gesdem-action-recovery-login/gesdem-action-recovery-login.component.mjs +101 -0
  203. package/esm2020/gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component.mjs +130 -0
  204. package/esm2020/gesdem-action-recovery/gesdem-action-recovery.module.mjs +50 -0
  205. package/esm2020/gesdem-action-recovery/gesdem-action-recovery.service.mjs +82 -0
  206. package/{esm2015/gesdem-action-recovery/reprise-info.js → esm2020/gesdem-action-recovery/reprise-info.mjs} +0 -0
  207. package/esm2020/gesdem-confirmation/gesdem-confirmation.component.mjs +201 -0
  208. package/esm2020/gesdem-confirmation/gesdem-confirmation.module.mjs +32 -0
  209. package/esm2020/gesdem-error/gesdem-error.component.mjs +87 -0
  210. package/esm2020/gesdem-error/gesdem-error.module.mjs +36 -0
  211. package/esm2020/global.const.mjs +5 -0
  212. package/esm2020/helpers/object.helper.mjs +89 -0
  213. package/{esm2015/i18n-form.js → esm2020/i18n-form.mjs} +0 -0
  214. package/esm2020/index.mjs +263 -0
  215. package/{esm2015/pipes/currency.pipe.js → esm2020/pipes/currency.pipe.mjs} +4 -4
  216. package/{esm2015/pipes/date.pipe.js → esm2020/pipes/date.pipe.mjs} +4 -4
  217. package/{esm2015/pipes/formatIde.pipe.js → esm2020/pipes/formatIde.pipe.mjs} +3 -3
  218. package/{esm2015/pipes/pipes.module.js → esm2020/pipes/pipes.module.mjs} +7 -7
  219. package/{esm2015/prestations-ng-core.module.js → esm2020/prestations-ng-core.module.mjs} +7 -7
  220. package/esm2020/refinf/model/address-type-light.mjs +3 -0
  221. package/esm2020/refinf/model/canton.mjs +3 -0
  222. package/esm2020/refinf/model/district.mjs +3 -0
  223. package/esm2020/refinf/model/municipality.mjs +3 -0
  224. package/esm2020/refinf/model/place-of-origin.mjs +3 -0
  225. package/esm2020/refinf/model/postal-locality.mjs +3 -0
  226. package/esm2020/sdk-appinfo/application-info.mjs +14 -0
  227. package/esm2020/sdk-appinfo/application-info.service.mjs +104 -0
  228. package/{esm2015/sdk-currency/currency.helper.js → esm2020/sdk-currency/currency.helper.mjs} +3 -3
  229. package/esm2020/sdk-date/date.helper.mjs +100 -0
  230. package/esm2020/sdk-dictionary/default-dictionary.mjs +166 -0
  231. package/{esm2015/sdk-dictionary/sdk-dictionary.module.js → esm2020/sdk-dictionary/sdk-dictionary.module.mjs} +5 -5
  232. package/{esm2015/sdk-dictionary/sdk-dictionary.pipe.js → esm2020/sdk-dictionary/sdk-dictionary.pipe.mjs} +6 -6
  233. package/esm2020/sdk-dictionary/sdk-dictionary.service.mjs +111 -0
  234. package/{esm2015/sdk-epayment/model/EPaymentParameters.js → esm2020/sdk-epayment/model/EPaymentParameters.mjs} +0 -0
  235. package/esm2020/sdk-epayment/sdk-epayment.component.mjs +81 -0
  236. package/esm2020/sdk-epayment/sdk-epayment.module.mjs +21 -0
  237. package/esm2020/sdk-epayment/sdk-epayment.service.mjs +52 -0
  238. package/{esm2015/sdk-recaptcha/grecaptcha/grecaptcha.component.js → esm2020/sdk-recaptcha/grecaptcha/grecaptcha.component.mjs} +6 -10
  239. package/esm2020/sdk-recaptcha/recaptcha.service.mjs +162 -0
  240. package/esm2020/sdk-recaptcha/sdk-recaptcha.component.mjs +69 -0
  241. package/esm2020/sdk-recaptcha/sdk-recaptcha.module.mjs +19 -0
  242. package/esm2020/sdk-redirect/iam-expired-interceptor.service.mjs +58 -0
  243. package/esm2020/sdk-redirect/redirect.component.mjs +35 -0
  244. package/esm2020/sdk-redirect/sdk-redirect.module.mjs +19 -0
  245. package/{esm2015/sdk-session-info/session-info-data.js → esm2020/sdk-session-info/session-info-data.mjs} +1 -1
  246. package/{esm2015/sdk-session-info/session-info-with-application.service.js → esm2020/sdk-session-info/session-info-with-application.service.mjs} +5 -5
  247. package/esm2020/sdk-session-info/session-info.service.mjs +50 -0
  248. package/esm2020/sdk-statistics/sdk-statistics.service.mjs +70 -0
  249. package/esm2020/sdk-support-alert/support-alert-container.component.mjs +49 -0
  250. package/esm2020/sdk-support-alert/support-alert.component.mjs +34 -0
  251. package/{esm2015/sdk-support-alert/support-alert.model.js → esm2020/sdk-support-alert/support-alert.model.mjs} +0 -0
  252. package/esm2020/sdk-support-alert/support-alert.module.mjs +21 -0
  253. package/esm2020/sdk-support-alert/support-alert.service.mjs +117 -0
  254. package/{esm2015/service-locator.js → esm2020/service-locator.mjs} +0 -0
  255. package/esm2020/supported-browser.mjs +2 -0
  256. package/esm2020/validation/validation-handler.service.mjs +44 -0
  257. package/fesm2015/dsivd-prestations-ng.mjs +13399 -0
  258. package/fesm2015/dsivd-prestations-ng.mjs.map +1 -0
  259. package/fesm2020/dsivd-prestations-ng.mjs +13374 -0
  260. package/fesm2020/dsivd-prestations-ng.mjs.map +1 -0
  261. package/foehn-address/address.type.d.ts +3 -3
  262. package/foehn-address/foehn-display-address.component.d.ts +1 -1
  263. package/foehn-address/foehn-input-address.component.d.ts +18 -8
  264. package/foehn-address/foehn-input-foreign-locality.component.d.ts +1 -1
  265. package/foehn-address/foehn-input-foreign-street.component.d.ts +1 -1
  266. package/foehn-agenda/calendar.type.d.ts +9 -0
  267. package/foehn-agenda/current-week.type.d.ts +5 -0
  268. package/foehn-agenda/day-slots.type.d.ts +5 -0
  269. package/foehn-agenda/foehn-agenda-navigation/foehn-agenda-navigation.component.d.ts +21 -0
  270. package/foehn-agenda/foehn-agenda-timeslot-panel/foehn-agenda-timeslot-panel.component.d.ts +51 -0
  271. package/foehn-agenda/foehn-agenda.component.d.ts +29 -0
  272. package/foehn-agenda/foehn-agenda.module.d.ts +17 -0
  273. package/foehn-agenda/pagination-week.type.d.ts +5 -0
  274. package/foehn-agenda/selected-slot.type.d.ts +7 -0
  275. package/foehn-autocomplete/foehn-autocomplete.component.d.ts +22 -6
  276. package/foehn-boolean/foehn-boolean-checkbox.component.d.ts +1 -1
  277. package/foehn-boolean/foehn-boolean-radio.component.d.ts +2 -1
  278. package/foehn-breadcrumb/breadcrumb-event.service.d.ts +2 -2
  279. package/foehn-breadcrumb/foehn-breadcrumb.component.d.ts +6 -5
  280. package/foehn-checkables/foehn-checkable-group.component.d.ts +8 -8
  281. package/foehn-checkables/foehn-checkables.module.d.ts +3 -1
  282. package/foehn-checkables/foehn-checkbox.component.d.ts +1 -1
  283. package/foehn-checkables/foehn-radio.component.d.ts +1 -1
  284. package/foehn-checkables/foehn-select.component.d.ts +2 -10
  285. package/foehn-confirm-modal/foehn-confirm-modal-content.d.ts +1 -0
  286. package/foehn-confirm-modal/foehn-confirm-modal.component.d.ts +2 -2
  287. package/foehn-date-picker/date-picker-navigation.helper.d.ts +7 -1
  288. package/foehn-date-picker/date-picker.helper.d.ts +3 -2
  289. package/foehn-date-picker/foehn-date-picker.component.d.ts +21 -10
  290. package/foehn-date-picker-button/foehn-date-picker-button.component.d.ts +13 -5
  291. package/foehn-debug-summary/foehn-debug-summary.component.d.ts +7 -5
  292. package/foehn-decision-electronique/foehn-decision-electronique.component.d.ts +2 -2
  293. package/foehn-decision-electronique/foehn-decision-electronique.module.d.ts +2 -1
  294. package/foehn-footer/foehn-footer.component.d.ts +4 -4
  295. package/foehn-form/foehn-form.component.d.ts +7 -4
  296. package/foehn-form/register-ng-model.service.d.ts +9 -0
  297. package/foehn-growl/foehn-growl.component.d.ts +3 -3
  298. package/foehn-growl/growl-broker.service.d.ts +1 -1
  299. package/foehn-header/foehn-header.component.d.ts +7 -7
  300. package/foehn-header/foehn-skip-link.component.d.ts +2 -2
  301. package/foehn-help-modal/foehn-help-modal.component.d.ts +1 -1
  302. package/foehn-help-modal/foehn-help-modal.type.d.ts +4 -0
  303. package/foehn-icons/abstract-icon-component.d.ts +1 -1
  304. package/foehn-icons/foehn-icon-calendar.component.d.ts +1 -1
  305. package/foehn-icons/foehn-icon-check-square-o.component.d.ts +1 -1
  306. package/foehn-icons/foehn-icon-check.component.d.ts +1 -1
  307. package/foehn-icons/foehn-icon-chevron-down.component.d.ts +1 -1
  308. package/foehn-icons/foehn-icon-chevron-left.component.d.ts +1 -1
  309. package/foehn-icons/foehn-icon-chevron-right.component.d.ts +1 -1
  310. package/foehn-icons/foehn-icon-chevron-up.component.d.ts +1 -1
  311. package/foehn-icons/foehn-icon-clock.component.d.ts +1 -1
  312. package/foehn-icons/foehn-icon-comment-dots.component.d.ts +1 -1
  313. package/foehn-icons/foehn-icon-edit.component.d.ts +1 -1
  314. package/foehn-icons/foehn-icon-external-link-alt.component.d.ts +1 -1
  315. package/foehn-icons/foehn-icon-file-pdf.component.d.ts +1 -1
  316. package/foehn-icons/foehn-icon-info-circle.component.d.ts +1 -1
  317. package/foehn-icons/foehn-icon-lock.component.d.ts +1 -1
  318. package/foehn-icons/foehn-icon-map-marker.component.d.ts +1 -1
  319. package/foehn-icons/foehn-icon-minus-circle.component.d.ts +1 -1
  320. package/foehn-icons/foehn-icon-plus-circle.component.d.ts +1 -1
  321. package/foehn-icons/foehn-icon-plus-square.component.d.ts +1 -1
  322. package/foehn-icons/foehn-icon-search.component.d.ts +1 -1
  323. package/foehn-icons/foehn-icon-times.component.d.ts +1 -1
  324. package/foehn-icons/foehn-icon-trash-alt.component.d.ts +1 -1
  325. package/foehn-icons/foehn-icon-unlock-alt.component.d.ts +1 -1
  326. package/foehn-input/foehn-input-email.component.d.ts +4 -2
  327. package/foehn-input/foehn-input-hidden.component.d.ts +1 -1
  328. package/foehn-input/foehn-input-number.component.d.ts +16 -6
  329. package/foehn-input/foehn-input-password.component.d.ts +1 -1
  330. package/foehn-input/foehn-input-phone.component.d.ts +1 -1
  331. package/foehn-input/foehn-input-string.component.d.ts +1 -1
  332. package/foehn-input/foehn-input-text.component.d.ts +1 -1
  333. package/foehn-input/foehn-input-textarea.component.d.ts +5 -2
  334. package/foehn-input/foehn-input.component.d.ts +25 -9
  335. package/foehn-input/foehn-input.module.d.ts +9 -6
  336. package/foehn-input-date/foehn-input-date.component.d.ts +10 -3
  337. package/foehn-input-date-time/foehn-input-date-time.component.d.ts +29 -0
  338. package/foehn-input-time/foehn-input-time.component.d.ts +1 -1
  339. package/foehn-list/foehn-list.component.d.ts +2 -3
  340. package/foehn-menu-prestation/abstract-list-item-detail-page.component.d.ts +5 -5
  341. package/foehn-menu-prestation/abstract-menu-page.component.d.ts +1 -1
  342. package/foehn-menu-prestation/abstract-page-from-menu.component.d.ts +1 -1
  343. package/foehn-menu-prestation/foehn-error-pill/foehn-error-pill.component.d.ts +1 -1
  344. package/foehn-menu-prestation/foehn-list-summary/foehn-list-summary.component.d.ts +3 -3
  345. package/foehn-menu-prestation/foehn-menu-items/foehn-menu-item/foehn-menu-item.component.d.ts +1 -1
  346. package/foehn-menu-prestation/foehn-menu-items/foehn-menu-item-transmit/foehn-menu-item-transmit.component.d.ts +2 -2
  347. package/foehn-misc/foehn-abbr.component.d.ts +1 -1
  348. package/foehn-modal/foehn-modal.component.d.ts +2 -3
  349. package/foehn-modal/foehn-modal.module.d.ts +3 -1
  350. package/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.component.d.ts +51 -0
  351. package/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.module.d.ts +13 -0
  352. package/foehn-nav13/foehn-input-nav13.component.d.ts +2 -1
  353. package/foehn-navigation/foehn-navigation.component.d.ts +2 -2
  354. package/foehn-navigation/foehn-navigation.service.d.ts +4 -3
  355. package/foehn-notfound/foehn-notfound.component.d.ts +1 -1
  356. package/foehn-page/foehn-page-counter.component.d.ts +1 -1
  357. package/foehn-page/foehn-page-modal.component.d.ts +1 -1
  358. package/foehn-page/foehn-page-modal.service.d.ts +1 -1
  359. package/foehn-page/foehn-page.component.d.ts +15 -12
  360. package/foehn-page/foehn-page.module.d.ts +2 -1
  361. package/foehn-page/foehn-page.service.d.ts +2 -2
  362. package/foehn-recap-section/foehn-recap-section.component.d.ts +3 -1
  363. package/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.component.d.ts +1 -1
  364. package/foehn-status-progress-bar/foehn-status-progress-bar.component.d.ts +23 -0
  365. package/foehn-status-progress-bar/foehn-status-progress-bar.module.d.ts +10 -0
  366. package/foehn-table/foehn-table-column-configuration.d.ts +18 -0
  367. package/foehn-table/foehn-table-page-change-event.d.ts +5 -0
  368. package/foehn-table/foehn-table.component.d.ts +33 -0
  369. package/foehn-table/foehn-table.module.d.ts +11 -0
  370. package/foehn-table/tableSort.d.ts +4 -0
  371. package/foehn-upload/abstract-foehn-uploader.component.d.ts +7 -7
  372. package/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.service.d.ts +6 -4
  373. package/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.component.d.ts +6 -5
  374. package/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.module.d.ts +2 -1
  375. package/foehn-upload/foehn-multi-upload/foehn-multi-upload.component.d.ts +9 -8
  376. package/foehn-upload/foehn-multi-upload/foehn-multi-upload.module.d.ts +2 -1
  377. package/foehn-upload/foehn-multi-upload/multi-upload.service.d.ts +6 -4
  378. package/foehn-upload/foehn-multi-upload/pending-upload.service.d.ts +3 -3
  379. package/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.d.ts +7 -4
  380. package/foehn-upload/foehn-picture-upload/foehn-picture-upload.module.d.ts +2 -1
  381. package/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.component.d.ts +19 -0
  382. package/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.module.d.ts +11 -0
  383. package/foehn-upload/foehn-upload-progress-bar/upload-progress.service.d.ts +19 -0
  384. package/foehn-upload/foehn-upload-progress-bar/upload-progress.type.d.ts +4 -0
  385. package/foehn-upload/pending-upload.type.d.ts +1 -0
  386. package/foehn-upload/uploader.helper.d.ts +13 -13
  387. package/foehn-user-connected-as/foehn-user-connected-as.component.d.ts +2 -2
  388. package/foehn-validation-alert-summary/foehn-validation-alert-summary.component.d.ts +2 -2
  389. package/foehn-validation-alerts/foehn-validation-alerts.component.d.ts +4 -4
  390. package/{error-template.d.ts → form-error.d.ts} +1 -1
  391. package/form-post-response.d.ts +17 -0
  392. package/gesdem/gesdem-error-handler.service.d.ts +2 -2
  393. package/gesdem/gesdem-event.service.d.ts +7 -7
  394. package/gesdem/gesdem-handler.service.d.ts +8 -6
  395. package/gesdem/gesdem-loader.guard.d.ts +1 -1
  396. package/gesdem-action-recovery/gesdem-action-recovery-login/gesdem-action-recovery-login.component.d.ts +5 -5
  397. package/gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component.d.ts +7 -7
  398. package/gesdem-action-recovery/gesdem-action-recovery.service.d.ts +3 -3
  399. package/gesdem-confirmation/gesdem-confirmation.component.d.ts +10 -9
  400. package/gesdem-error/gesdem-error.component.d.ts +10 -3
  401. package/gesdem-error/gesdem-error.module.d.ts +2 -1
  402. package/global.const.d.ts +1 -0
  403. package/index.d.ts +102 -70
  404. package/package.json +36 -22
  405. package/pipes/currency.pipe.d.ts +1 -1
  406. package/pipes/date.pipe.d.ts +1 -1
  407. package/pipes/formatIde.pipe.d.ts +1 -1
  408. package/refinf/model/address-type-light.d.ts +5 -0
  409. package/refinf/model/canton.d.ts +4 -0
  410. package/refinf/model/district.d.ts +7 -0
  411. package/refinf/model/municipality.d.ts +8 -0
  412. package/refinf/model/place-of-origin.d.ts +9 -0
  413. package/refinf/model/postal-locality.d.ts +11 -0
  414. package/schematics/ng-add/index.js +10 -10
  415. package/schematics/ng-update/migrations/update-13_1_0/index.js +2 -2
  416. package/schematics/ng-update/migrations/update-13_2_0/index.js +3 -3
  417. package/schematics/ng-update/migrations/update-13_5_1/index.js +3 -3
  418. package/schematics/ng-update/migrations/update-14_5_0/index.js +2 -2
  419. package/schematics/update-karma-config/index.js +2 -2
  420. package/schematics/utility/migrate-to-karma-coverage.js +3 -3
  421. package/sdk-appinfo/application-info.d.ts +1 -0
  422. package/sdk-appinfo/application-info.service.d.ts +4 -4
  423. package/sdk-dictionary/sdk-dictionary.pipe.d.ts +1 -1
  424. package/sdk-dictionary/sdk-dictionary.service.d.ts +9 -0
  425. package/sdk-epayment/sdk-epayment.component.d.ts +6 -16
  426. package/sdk-epayment/sdk-epayment.service.d.ts +3 -6
  427. package/sdk-recaptcha/grecaptcha/grecaptcha.component.d.ts +2 -2
  428. package/sdk-recaptcha/recaptcha.service.d.ts +5 -5
  429. package/sdk-recaptcha/sdk-recaptcha.component.d.ts +4 -4
  430. package/sdk-redirect/iam-expired-interceptor.service.d.ts +3 -3
  431. package/sdk-redirect/redirect.component.d.ts +3 -9
  432. package/sdk-session-info/session-info-data.d.ts +0 -1
  433. package/sdk-session-info/session-info.service.d.ts +4 -4
  434. package/sdk-statistics/sdk-statistics.service.d.ts +22 -0
  435. package/sdk-support-alert/support-alert-container.component.d.ts +3 -3
  436. package/sdk-support-alert/support-alert.component.d.ts +1 -1
  437. package/sdk-support-alert/support-alert.service.d.ts +5 -4
  438. package/validation/validation-handler.service.d.ts +4 -4
  439. package/backend-response.d.ts +0 -18
  440. package/bundles/dsivd-prestations-ng.umd.js +0 -13188
  441. package/bundles/dsivd-prestations-ng.umd.js.map +0 -1
  442. package/dsivd-prestations-ng-v15.5.13.tgz +0 -0
  443. package/dsivd-prestations-ng.d.ts +0 -5
  444. package/esm2015/abstract-page-component.js +0 -224
  445. package/esm2015/backend-response.js +0 -10
  446. package/esm2015/directives/currency-formatter.directive.js +0 -116
  447. package/esm2015/error-template.js +0 -2
  448. package/esm2015/foehn-address/foehn-address.module.js +0 -57
  449. package/esm2015/foehn-address/foehn-input-address.component.js +0 -365
  450. package/esm2015/foehn-address/foehn-input-foreign-locality.component.js +0 -71
  451. package/esm2015/foehn-address/foehn-input-foreign-street.component.js +0 -60
  452. package/esm2015/foehn-autocomplete/foehn-autocomplete.component.js +0 -556
  453. package/esm2015/foehn-autocomplete/foehn-autocomplete.module.js +0 -42
  454. package/esm2015/foehn-boolean/foehn-boolean-checkbox.component.js +0 -32
  455. package/esm2015/foehn-boolean/foehn-boolean-radio.component.js +0 -41
  456. package/esm2015/foehn-boolean/foehn-boolean.module.js +0 -35
  457. package/esm2015/foehn-breadcrumb/breadcrumb-event.service.js +0 -182
  458. package/esm2015/foehn-breadcrumb/foehn-breadcrumb.component.js +0 -85
  459. package/esm2015/foehn-breadcrumb/foehn-breadcrumb.module.js +0 -19
  460. package/esm2015/foehn-checkables/foehn-checkable-group.component.js +0 -294
  461. package/esm2015/foehn-checkables/foehn-checkables.module.js +0 -62
  462. package/esm2015/foehn-checkables/foehn-checkbox.component.js +0 -40
  463. package/esm2015/foehn-checkables/foehn-radio.component.js +0 -67
  464. package/esm2015/foehn-checkables/foehn-select.component.js +0 -66
  465. package/esm2015/foehn-confirm-modal/foehn-confirm-modal.component.js +0 -42
  466. package/esm2015/foehn-confirm-modal/foehn-confirm-modal.module.js +0 -19
  467. package/esm2015/foehn-date-picker/date-picker-navigation.helper.js +0 -117
  468. package/esm2015/foehn-date-picker/date-picker.helper.js +0 -126
  469. package/esm2015/foehn-date-picker/foehn-date-picker.component.js +0 -300
  470. package/esm2015/foehn-date-picker/foehn-date-picker.module.js +0 -42
  471. package/esm2015/foehn-date-picker-button/foehn-date-picker-button.component.js +0 -74
  472. package/esm2015/foehn-date-picker-button/foehn-date-picker-button.module.js +0 -38
  473. package/esm2015/foehn-debug-summary/foehn-debug-summary.component.js +0 -61
  474. package/esm2015/foehn-decision-electronique/foehn-decision-electronique.component.js +0 -40
  475. package/esm2015/foehn-decision-electronique/foehn-decision-electronique.module.js +0 -20
  476. package/esm2015/foehn-footer/foehn-footer.component.js +0 -132
  477. package/esm2015/foehn-form/foehn-form.component.js +0 -146
  478. package/esm2015/foehn-form/foehn-form.module.js +0 -20
  479. package/esm2015/foehn-growl/foehn-growl.component.js +0 -47
  480. package/esm2015/foehn-header/foehn-header.component.js +0 -73
  481. package/esm2015/foehn-header/foehn-header.module.js +0 -21
  482. package/esm2015/foehn-help-modal/foehn-help-modal.component.js +0 -48
  483. package/esm2015/foehn-help-modal/foehn-help-modal.module.js +0 -20
  484. package/esm2015/foehn-help-modal/foehn-help-modal.type.js +0 -2
  485. package/esm2015/foehn-icons/foehn-icon-calendar.component.js +0 -22
  486. package/esm2015/foehn-icons/foehn-icon-check-square-o.component.js +0 -22
  487. package/esm2015/foehn-icons/foehn-icon-check.component.js +0 -22
  488. package/esm2015/foehn-icons/foehn-icon-chevron-down.component.js +0 -22
  489. package/esm2015/foehn-icons/foehn-icon-chevron-left.component.js +0 -22
  490. package/esm2015/foehn-icons/foehn-icon-chevron-right.component.js +0 -22
  491. package/esm2015/foehn-icons/foehn-icon-chevron-up.component.js +0 -22
  492. package/esm2015/foehn-icons/foehn-icon-clock.component.js +0 -22
  493. package/esm2015/foehn-icons/foehn-icon-comment-dots.component.js +0 -22
  494. package/esm2015/foehn-icons/foehn-icon-edit.component.js +0 -22
  495. package/esm2015/foehn-icons/foehn-icon-external-link-alt.component.js +0 -22
  496. package/esm2015/foehn-icons/foehn-icon-file-pdf.component.js +0 -22
  497. package/esm2015/foehn-icons/foehn-icon-info-circle.component.js +0 -22
  498. package/esm2015/foehn-icons/foehn-icon-lock.component.js +0 -22
  499. package/esm2015/foehn-icons/foehn-icon-map-marker.component.js +0 -22
  500. package/esm2015/foehn-icons/foehn-icon-minus-circle.component.js +0 -22
  501. package/esm2015/foehn-icons/foehn-icon-plus-circle.component.js +0 -22
  502. package/esm2015/foehn-icons/foehn-icon-plus-square.component.js +0 -22
  503. package/esm2015/foehn-icons/foehn-icon-search.component.js +0 -22
  504. package/esm2015/foehn-icons/foehn-icon-times.component.js +0 -22
  505. package/esm2015/foehn-icons/foehn-icon-trash-alt.component.js +0 -22
  506. package/esm2015/foehn-icons/foehn-icon-unlock-alt.component.js +0 -22
  507. package/esm2015/foehn-input/foehn-input-email.component.js +0 -55
  508. package/esm2015/foehn-input/foehn-input-hidden.component.js +0 -57
  509. package/esm2015/foehn-input/foehn-input-number.component.js +0 -190
  510. package/esm2015/foehn-input/foehn-input-password.component.js +0 -55
  511. package/esm2015/foehn-input/foehn-input-phone.component.js +0 -96
  512. package/esm2015/foehn-input/foehn-input-text.component.js +0 -80
  513. package/esm2015/foehn-input/foehn-input-textarea.component.js +0 -104
  514. package/esm2015/foehn-input/foehn-input.component.js +0 -364
  515. package/esm2015/foehn-input/foehn-input.module.js +0 -82
  516. package/esm2015/foehn-input-date/foehn-input-date.component.js +0 -94
  517. package/esm2015/foehn-input-time/foehn-input-time.component.js +0 -79
  518. package/esm2015/foehn-list/foehn-list.component.js +0 -135
  519. package/esm2015/foehn-list/foehn-list.module.js +0 -19
  520. package/esm2015/foehn-menu-prestation/abstract-list-item-detail-page.component.js +0 -122
  521. package/esm2015/foehn-menu-prestation/foehn-error-pill/foehn-error-pill.component.js +0 -26
  522. package/esm2015/foehn-menu-prestation/foehn-list-summary/foehn-list-summary.component.js +0 -75
  523. package/esm2015/foehn-menu-prestation/foehn-menu-items/foehn-menu-item/foehn-menu-item.component.js +0 -38
  524. package/esm2015/foehn-menu-prestation/foehn-menu-items/foehn-menu-item-transmit/foehn-menu-item-transmit.component.js +0 -54
  525. package/esm2015/foehn-menu-prestation/foehn-menu-prestation.module.js +0 -61
  526. package/esm2015/foehn-modal/foehn-modal.component.js +0 -100
  527. package/esm2015/foehn-modal/foehn-modal.module.js +0 -19
  528. package/esm2015/foehn-nav13/foehn-input-nav13.component.js +0 -98
  529. package/esm2015/foehn-nav13/foehn-input-nav13.module.js +0 -34
  530. package/esm2015/foehn-navigation/foehn-navigation.component.js +0 -98
  531. package/esm2015/foehn-navigation/foehn-navigation.module.js +0 -34
  532. package/esm2015/foehn-navigation/foehn-navigation.service.js +0 -297
  533. package/esm2015/foehn-notfound/foehn-notfound.module.js +0 -20
  534. package/esm2015/foehn-page/foehn-page-modal.component.js +0 -55
  535. package/esm2015/foehn-page/foehn-page.component.js +0 -214
  536. package/esm2015/foehn-page/foehn-page.module.js +0 -76
  537. package/esm2015/foehn-recap-section/foehn-recap-section.component.js +0 -88
  538. package/esm2015/foehn-recap-section/foehn-recap-section.module.js +0 -20
  539. package/esm2015/foehn-upload/abstract-foehn-uploader.component.js +0 -192
  540. package/esm2015/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.service.js +0 -62
  541. package/esm2015/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.component.js +0 -168
  542. package/esm2015/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.module.js +0 -38
  543. package/esm2015/foehn-upload/foehn-multi-upload/foehn-multi-upload.component.js +0 -217
  544. package/esm2015/foehn-upload/foehn-multi-upload/foehn-multi-upload.module.js +0 -38
  545. package/esm2015/foehn-upload/foehn-multi-upload/multi-upload.service.js +0 -76
  546. package/esm2015/foehn-upload/foehn-multi-upload/pending-upload.service.js +0 -157
  547. package/esm2015/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.js +0 -164
  548. package/esm2015/foehn-upload/foehn-picture-upload/foehn-picture-upload.module.js +0 -42
  549. package/esm2015/foehn-upload/uploader.helper.js +0 -322
  550. package/esm2015/foehn-validation-alert-summary/foehn-validation-alert-summary.component.js +0 -88
  551. package/esm2015/foehn-validation-alert-summary/foehn-validation-alert-summary.module.js +0 -19
  552. package/esm2015/foehn-validation-alerts/foehn-validation-alerts.component.js +0 -32
  553. package/esm2015/gesdem/gesdem-event.service.js +0 -38
  554. package/esm2015/gesdem/gesdem-handler.service.js +0 -151
  555. package/esm2015/gesdem/gesdem-loader.guard.js +0 -40
  556. package/esm2015/gesdem-action-recovery/gesdem-action-recovery-login/gesdem-action-recovery-login.component.js +0 -103
  557. package/esm2015/gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component.js +0 -133
  558. package/esm2015/gesdem-action-recovery/gesdem-action-recovery.module.js +0 -52
  559. package/esm2015/gesdem-action-recovery/gesdem-action-recovery.service.js +0 -82
  560. package/esm2015/gesdem-confirmation/gesdem-confirmation.component.js +0 -194
  561. package/esm2015/gesdem-confirmation/gesdem-confirmation.module.js +0 -34
  562. package/esm2015/gesdem-error/gesdem-error.component.js +0 -70
  563. package/esm2015/gesdem-error/gesdem-error.module.js +0 -34
  564. package/esm2015/helpers/object.helper.js +0 -88
  565. package/esm2015/index.js +0 -224
  566. package/esm2015/sdk-appinfo/application-info.js +0 -14
  567. package/esm2015/sdk-appinfo/application-info.service.js +0 -111
  568. package/esm2015/sdk-date/date.helper.js +0 -90
  569. package/esm2015/sdk-dictionary/default-dictionary.js +0 -80
  570. package/esm2015/sdk-dictionary/sdk-dictionary.service.js +0 -96
  571. package/esm2015/sdk-epayment/model/EPaymentRequest.js +0 -3
  572. package/esm2015/sdk-epayment/sdk-epayment.component.js +0 -113
  573. package/esm2015/sdk-epayment/sdk-epayment.module.js +0 -21
  574. package/esm2015/sdk-epayment/sdk-epayment.service.js +0 -46
  575. package/esm2015/sdk-recaptcha/recaptcha.service.js +0 -162
  576. package/esm2015/sdk-recaptcha/sdk-recaptcha.component.js +0 -72
  577. package/esm2015/sdk-recaptcha/sdk-recaptcha.module.js +0 -19
  578. package/esm2015/sdk-redirect/iam-expired-interceptor.service.js +0 -48
  579. package/esm2015/sdk-redirect/redirect.component.js +0 -47
  580. package/esm2015/sdk-redirect/sdk-redirect.module.js +0 -19
  581. package/esm2015/sdk-session-info/session-info.service.js +0 -44
  582. package/esm2015/sdk-support-alert/support-alert-container.component.js +0 -53
  583. package/esm2015/sdk-support-alert/support-alert.component.js +0 -38
  584. package/esm2015/sdk-support-alert/support-alert.module.js +0 -21
  585. package/esm2015/sdk-support-alert/support-alert.service.js +0 -113
  586. package/esm2015/supported-browser.js +0 -2
  587. package/esm2015/validation/validation-handler.service.js +0 -44
  588. package/fesm2015/dsivd-prestations-ng.js +0 -11618
  589. package/fesm2015/dsivd-prestations-ng.js.map +0 -1
  590. package/sdk-epayment/model/EPaymentRequest.d.ts +0 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dsivd-prestations-ng.mjs","sources":["../../../projects/prestations-ng/src/foehn-breadcrumb/breadcrumb.ts","../../../projects/prestations-ng/src/sdk-session-info/session-info.service.ts","../../../projects/prestations-ng/src/foehn-breadcrumb/breadcrumb-event.service.ts","../../../projects/prestations-ng/src/foehn-form/register-ng-model.service.ts","../../../projects/prestations-ng/src/service-locator.ts","../../../projects/prestations-ng/src/validation/validation-handler.service.ts","../../../projects/prestations-ng/src/foehn-input/foehn-input.component.ts","../../../projects/prestations-ng/src/foehn-growl/growl-types.ts","../../../projects/prestations-ng/src/sdk-dictionary/default-dictionary.ts","../../../projects/prestations-ng/src/foehn-growl/growl-message.ts","../../../projects/prestations-ng/src/foehn-growl/growl-broker.service.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/form-post-response.ts","../../../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/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-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/gesdem/gesdem-event.service.ts","../../../projects/prestations-ng/src/foehn-upload/foehn-upload-progress-bar/upload-progress.service.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/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-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/abstract-icon-component.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icon-info-circle.component.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icon.component.html","../../../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-support-alert/support-alert.service.ts","../../../projects/prestations-ng/src/foehn-input/foehn-input-string.component.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icon-times.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-modal/foehn-modal.component.ts","../../../projects/prestations-ng/src/foehn-modal/foehn-modal.component.html","../../../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-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/i18n-form.ts","../../../projects/prestations-ng/src/sdk-redirect/iam-expired-interceptor.service.ts","../../../projects/prestations-ng/src/prestations-ng-core.module.ts","../../../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/sdk-statistics/sdk-statistics.service.ts","../../../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-growl/foehn-growl.component.ts","../../../projects/prestations-ng/src/foehn-growl/foehn-growl.component.html","../../../projects/prestations-ng/src/helpers/object.helper.ts","../../../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/foehn-checkables/foehn-select.component.ts","../../../projects/prestations-ng/src/foehn-checkables/foehn-select.component.html","../../../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-header/foehn-header.component.ts","../../../projects/prestations-ng/src/foehn-header/foehn-header.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-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/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-confirm-modal/foehn-confirm-modal.component.ts","../../../projects/prestations-ng/src/foehn-confirm-modal/foehn-confirm-modal.component.html","../../../projects/prestations-ng/src/foehn-icons/foehn-icon-lock.component.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icon-external-link-alt.component.ts","../../../projects/prestations-ng/src/foehn-status-progress-bar/foehn-status-progress-bar.component.ts","../../../projects/prestations-ng/src/foehn-status-progress-bar/foehn-status-progress-bar.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-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/sdk-currency/currency.helper.ts","../../../projects/prestations-ng/src/pipes/currency.pipe.ts","../../../projects/prestations-ng/src/sdk-date/date.helper.ts","../../../projects/prestations-ng/src/pipes/date.pipe.ts","../../../projects/prestations-ng/src/pipes/formatIde.pipe.ts","../../../projects/prestations-ng/src/pipes/pipes.module.ts","../../../projects/prestations-ng/src/sdk-dictionary/sdk-dictionary.module.ts","../../../projects/prestations-ng/src/foehn-modal/foehn-modal.module.ts","../../../projects/prestations-ng/src/foehn-confirm-modal/foehn-confirm-modal.module.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icon-calendar.component.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icon-check.component.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icon-check-square-o.component.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icon-chevron-down.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-clock.component.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icon-comment-dots.component.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icon-edit.component.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icon-file-pdf.component.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icon-map-marker.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-plus-square.component.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icon-search.component.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icon-trash-alt.component.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icon-unlock-alt.component.ts","../../../projects/prestations-ng/src/foehn-icons/foehn-icons.module.ts","../../../projects/prestations-ng/src/foehn-footer/foehn-footer.module.ts","../../../projects/prestations-ng/src/foehn-growl/foehn-growl.module.ts","../../../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/foehn-autocomplete/foehn-autocomplete.module.ts","../../../projects/prestations-ng/src/foehn-help-modal/foehn-help-modal.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-checkables/foehn-checkables.module.ts","../../../projects/prestations-ng/src/foehn-header/foehn-header.module.ts","../../../projects/prestations-ng/src/foehn-status-progress-bar/foehn-status-progress-bar.module.ts","../../../projects/prestations-ng/src/foehn-user-connected-as/foehn-user-connected-as.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-page/foehn-page.module.ts","../../../projects/prestations-ng/src/foehn-footer/footer-link.type.ts","../../../projects/prestations-ng/src/foehn-address/address.type.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-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-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/directives/currency-formatter.directive.ts","../../../projects/prestations-ng/src/foehn-input/pattern.const.ts","../../../projects/prestations-ng/src/foehn-input/foehn-input-number.component.ts","../../../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-date-time/foehn-input-date-time.component.ts","../../../projects/prestations-ng/src/foehn-input-date-time/foehn-input-date-time.component.html","../../../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-phone.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/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-checkables/form-select-option.ts","../../../projects/prestations-ng/src/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.component.ts","../../../projects/prestations-ng/src/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.component.html","../../../projects/prestations-ng/src/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.module.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/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/foehn-table/foehn-table.component.ts","../../../projects/prestations-ng/src/foehn-table/foehn-table.component.html","../../../projects/prestations-ng/src/foehn-table/foehn-table.module.ts","../../../projects/prestations-ng/src/foehn-table/foehn-table-column-configuration.ts","../../../projects/prestations-ng/src/foehn-table/foehn-table-page-change-event.ts","../../../projects/prestations-ng/src/foehn-table/tableSort.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/foehn-notfound/foehn-notfound.module.ts","../../../projects/prestations-ng/src/gesdem-confirmation/gesdem-confirmation.module.ts","../../../projects/prestations-ng/src/gesdem-error/gesdem-error.module.ts","../../../projects/prestations-ng/src/global.const.ts","../../../projects/prestations-ng/src/sdk-recaptcha/recaptcha.service.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/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/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/foehn-upload/abstract-foehn-uploader.component.ts","../../../projects/prestations-ng/src/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.component.ts","../../../projects/prestations-ng/src/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.component.html","../../../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-upload-progress-bar/foehn-upload-progress-bar.module.ts","../../../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/bo-multi-upload.type.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-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/foehn-upload/foehn-upload-progress-bar/upload-progress.type.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-confirm-modal/foehn-confirm-modal-content.ts","../../../projects/prestations-ng/src/directives/iban-formatter.directive.ts","../../../projects/prestations-ng/src/directives/ide-formatter.directive.ts","../../../projects/prestations-ng/src/directives/ndc-formatter.directive.ts","../../../projects/prestations-ng/src/directives/formatter.module.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/abstract-menu-page.component.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-list-summary/foehn-list-item.ts","../../../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-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-menu-prestation.module.ts","../../../projects/prestations-ng/src/foehn-date-picker/day-month.type.ts","../../../projects/prestations-ng/src/foehn-date-picker/focused-day.type.ts","../../../projects/prestations-ng/src/foehn-date-picker/month-year.type.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/refinf/model/address-type-light.ts","../../../projects/prestations-ng/src/refinf/model/canton.ts","../../../projects/prestations-ng/src/refinf/model/district.ts","../../../projects/prestations-ng/src/refinf/model/municipality.ts","../../../projects/prestations-ng/src/refinf/model/place-of-origin.ts","../../../projects/prestations-ng/src/refinf/model/postal-locality.ts","../../../projects/prestations-ng/src/foehn-agenda/calendar.type.ts","../../../projects/prestations-ng/src/foehn-agenda/pagination-week.type.ts","../../../projects/prestations-ng/src/foehn-agenda/current-week.type.ts","../../../projects/prestations-ng/src/foehn-agenda/day-slots.type.ts","../../../projects/prestations-ng/src/foehn-agenda/foehn-agenda-navigation/foehn-agenda-navigation.component.ts","../../../projects/prestations-ng/src/foehn-agenda/foehn-agenda-navigation/foehn-agenda-navigation.component.html","../../../projects/prestations-ng/src/foehn-agenda/foehn-agenda-timeslot-panel/foehn-agenda-timeslot-panel.component.ts","../../../projects/prestations-ng/src/foehn-agenda/foehn-agenda-timeslot-panel/foehn-agenda-timeslot-panel.component.html","../../../projects/prestations-ng/src/foehn-agenda/foehn-agenda.component.ts","../../../projects/prestations-ng/src/foehn-agenda/foehn-agenda.component.html","../../../projects/prestations-ng/src/foehn-agenda/foehn-agenda.module.ts","../../../projects/prestations-ng/src/foehn-agenda/selected-slot.type.ts","../../../projects/prestations-ng/src/index.ts","../../../projects/prestations-ng/src/dsivd-prestations-ng.ts"],"sourcesContent":["// 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 { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { map, shareReplay } from 'rxjs/operators';\n\nimport { SessionInfoData } from './session-info-data';\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\n constructor(\n private http: HttpClient,\n @Optional()\n @Inject('neverConnected')\n private neverConnected_: boolean = false\n ) {}\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 get neverConnected(): boolean {\n return this.neverConnected_;\n }\n\n set neverConnected(neverConnected: boolean) {\n this.neverConnected_ = neverConnected;\n }\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 { SessionInfoData } from '../sdk-session-info/session-info-data';\nimport {\n Breadcrumb,\n BreadcrumbConfiguration,\n BreadcrumbItem\n} from './breadcrumb';\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 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 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 */\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 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 get skipLeavingAlertBecauseDemandIsTransmitted(): boolean {\n return this._skipLeavingAlertBecauseDemandIsTransmitted;\n }\n\n set skipLeavingAlertBecauseDemandIsTransmitted(value: boolean) {\n this._skipLeavingAlertBecauseDemandIsTransmitted = value;\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 /**\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","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RegisterNgModelService {\n private _updateRegisteredNgModelsSubject: Subject<void> = new Subject<void>();\n\n get updateRegisteredNgModelsSubject(): Observable<void> {\n return this._updateRegisteredNgModelsSubject.asObservable();\n }\n\n updateRegisteredNgModels(): void {\n this._updateRegisteredNgModelsSubject.next();\n }\n}\n","import { Injector } from '@angular/core';\n\nexport class ServiceLocator {\n static injector: Injector = null;\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\n\n// eslint-disable-next-line import/no-cycle\nimport { FoehnInputComponent } from '../foehn-input/foehn-input.component';\nimport { FormError } from '../form-error';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ValidationHandlerService {\n private _validationErrorsSubject: Subject<\n FormError[]\n > = new BehaviorSubject<FormError[]>([]);\n private _validationDisplaySubject: Subject<boolean> = new BehaviorSubject<boolean>(\n true\n );\n\n get validationErrorsSubject(): Observable<FormError[]> {\n return this._validationErrorsSubject.asObservable();\n }\n\n get validationDisplaySubject(): Observable<boolean> {\n return this._validationDisplaySubject.asObservable();\n }\n\n updateErrors(errors: FormError[]): void {\n this._validationErrorsSubject.next(errors);\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: FormError\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","import {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\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 { combineLatest, Observable, Subject, Subscription } from 'rxjs';\nimport { debounceTime, map } from 'rxjs/operators';\n\nimport { RegisterNgModelService } from '../foehn-form/register-ng-model.service';\nimport { HelpModal } from '../foehn-help-modal/foehn-help-modal.type';\nimport { FormError } from '../form-error';\nimport { ServiceLocator } from '../service-locator';\n// eslint-disable-next-line import/no-cycle\nimport { ValidationHandlerService } from '../validation/validation-handler.service';\n\nexport const GESDEM_MAX_DATA_LENGTH = 10000;\n\n@Directive()\nexport abstract class FoehnInputComponent<T>\n implements OnInit, OnDestroy, AfterViewInit {\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 /**\n * The attribute must take one of the following values:\n * See https://developer.mozilla.org/fr/docs/Web/HTML/Attributes/autocomplete\n */\n @Input()\n autocomplete: string;\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 /**\n * The autocapitalize attribute never causes autocapitalization to be enabled for\n * an <input> element with a type attribute whose value is url, email, or password.\n * https://developer.mozilla.org/fr/docs/Web/HTML/Global_attributes/autocapitalize\n */\n @Input()\n autocapitalize: string;\n\n @Input()\n helpModal: HelpModal;\n\n @ViewChildren(NgModel)\n inputModelList: QueryList<NgModel>;\n\n @ViewChild('entryComponent')\n inputElement: ElementRef;\n\n @ViewChildren(forwardRef(() => 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: FormError[];\n\n private validationErrorsSubjectSubscription: Subscription;\n private registerNgModelService: RegisterNgModelService;\n\n private showClearButton: Observable<boolean>;\n private userInputSubject = new Subject<T>();\n private userInputSubscription: Subscription;\n\n private _disabled: boolean;\n\n constructor() {\n this.validationHandlerService = ServiceLocator.injector.get(\n ValidationHandlerService\n );\n this.registerNgModelService = ServiceLocator.injector.get(\n RegisterNgModelService\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 get errors(): FormError[] {\n return this._errors;\n }\n\n get model(): T {\n return this.model_;\n }\n\n @Input()\n set model(value: T) {\n this.onModelChange(value);\n }\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n get disabled(): boolean {\n return this._disabled;\n }\n\n @Input()\n set disabled(value: boolean) {\n this._disabled = value;\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.userInputSubject\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 ngAfterViewInit(): void {\n this.subComponents.changes.subscribe(() =>\n this.registerNgModelService.updateRegisteredNgModels()\n );\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 if (!this._disabled) {\n this.modelChange.emit(value);\n }\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 this.subComponents.forEach(c => {\n c.markAsDirty();\n });\n }\n\n markAsPristine(): void {\n this.inputModelList.forEach(ngModel => {\n ngModel.control.markAsPristine();\n });\n this.subComponents.forEach(c => {\n c.markAsDirty();\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n refreshErrors(results: any[]): void {\n const errors: FormError[] = 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\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 // If input isn't disabled\n !this._disabled\n ) {\n this.userInputSubject.next(value);\n }\n }\n}\n","export const GrowlType = {\n SUCCESS: 'alert-success',\n INFO: 'alert-info',\n WARNING: 'alert-warning',\n DANGER: 'alert-danger'\n};\n","// eslint-disable-next-line import/no-cycle\nimport { DictionaryType } from './sdk-dictionary.service';\n\nexport const DEFAULT_DICTIONARY: DictionaryType = {\n 'foehn-decision-electronique.title':\n 'Autorisation de notification des décisions par voie électronique',\n 'foehn-decision-electronique.info':\n 'Votre demande est sur le point d’être envoyée. ' +\n 'Conformément à l’art. 44a LPA-VD, l’autorité peut notifier ses décisions par voie électronique ' +\n 'aux parties qui ont donné leur accord explicite à cette communication.',\n 'foehn-decision-electronique.question':\n 'Acceptez-vous que l’autorité compétente pour le traitement de votre demande ' +\n 'vous notifie ses décisions par voie électronique ?',\n 'foehn-decision-electronique.answer.yes': 'Oui',\n 'foehn-decision-electronique.answer.no': 'Non',\n 'foehn-decision-electronique.answer.info':\n '' +\n 'Si vous cliquez sur « Oui », vous autorisez l’autorité à vous notifier ses décisions sur le portail sécurisé.' +\n '<br />' +\n 'Si vous cliquez sur « Non », vous refusez la notification de décisions sur le portail sécurisé.',\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-email.modal.title': 'Aide',\n 'foehn-input-email.modal.content':\n \"<p>Vous n'arrivez pas à saisir votre mail ?</p>\" +\n '<p>Merci d\\'écrire à <a href=\"mailto:info.cyber@vd.ch\">info.cyber@vd.ch</a></p>',\n 'foehn-input-time.hours.label': 'Heure',\n 'foehn-input-time.minutes.label': 'Minutes',\n 'foehn-input-number.standard-help-text.label':\n 'Saisir un nombre entre {minValue} et {maxValue}',\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':\n 'Le numéro de référence de votre demande est',\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.logout-button': 'Se déconnecter',\n 'gesdem-confirmation.extra-content': ' ',\n 'gesdem-confirmation.transmission-information.label':\n 'Information suite à la transmission de votre demande',\n 'gesdem-confirmation.demand-detail-link.label':\n 'Vous pouvez consulter votre demande en cliquant sur :',\n 'gesdem-confirmation.demand-processing-progress-link.label':\n \"Vous pouvez suivre l'avancement du traitement de votre demande \" +\n 'en cliquant sur :',\n 'gesdem-confirmation.demand-in-progress.title': 'Demande en cours',\n 'gesdem-confirmation.resume-my-demand.label':\n 'Vous pouvez reprendre votre demande en cliquant sur le lien ci-dessous',\n 'gesdem-confirmation.resume-my-demand.button': 'Reprendre ma demande',\n 'gesdem.download-pdf.button.title': 'Télécharger le PDF',\n 'foehn-date-picker-button.icon-title': 'Afficher le calendrier',\n 'foehn-date-picker-button.screen-reader.selected-date':\n 'Date sélectionnée : {selectedDate}',\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.IMAGE_NOT_READABLE':\n \"Votre pièce jointe %1$s n'est pas une image valide\",\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 également utilisable <strong>en se connectant</strong> au portail sécurisé de l’État de Vaud pour autant ' +\n 'que vous possédiez un accès au portail vaudois. Dans le cas contraire, veuillez utiliser le lien ' +\n '« continuer sans se connecter ».<br/>' +\n '<i>Nous vous encourageons à demander un accès au portail sécurisé pour vos démarches administratives futures. ' +\n 'Vous trouverez les informations sur le portail à cette page : ' +\n '<a target=\"_blank\" href=\"https://www.vd.ch/cyberadministration/\">https://www.vd.ch/cyberadministration/</a>.</i>',\n 'use-login.button.text': 'Se connecter et continuer',\n 'use-login.continue-without-login.button.text':\n 'Continuer sans se connecter',\n 'foehn-picture-upload.choose-button-label': 'Choisissez une photo',\n 'foehn-picture-upload.loading-label': 'Chargement...',\n 'foehn-picture-upload.invalid-file-type':\n 'Le type de votre pièce jointe {filename} ne figure pas parmi ceux qui sont autorisés : \"{acceptFormats}\"',\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 'foehn-table.totalElements': '{total} éléments trouvés',\n 'foehn-table.totalElements.1': '1 élément trouvé',\n 'foehn-table.totalElements.0': 'Aucun résultat',\n 'foehn-table.header.actions': 'Actions',\n 'foehn-status-progress-bar.step1': 'Saisie',\n 'foehn-status-progress-bar.step1.srOnly': 'Etape 1 sur 3, Saisie',\n 'foehn-status-progress-bar.step2': 'Vérification',\n 'foehn-status-progress-bar.step2.srOnly': 'Etape 2 sur 3, Vérification',\n 'foehn-status-progress-bar.step3': 'Transmission',\n 'foehn-status-progress-bar.step3.srOnly':\n 'Etape 3 sur 3, Demande transmise',\n 'foehn-multiselect-autocomplete.selected.delete':\n 'Supprimer {elementLabel}',\n 'foehn-multiselect-autocomplete.sr-announcement.deleted':\n '{elementLabel} a été supprimé,',\n 'foehn-multiselect-autocomplete.sr-announcement.added':\n '{elementLabel} a été ajouté,',\n 'foehn-multiselect-autocomplete.sr-default-focus.no-element-to-delete':\n 'Aucun élément dans la liste.',\n 'foehn-multiselect-autocomplete.sr-default-selected-element':\n '(sélection par défaut)',\n 'foehn-multiselect-autocomplete.autocomplete.empty-message':\n 'Tous les éléments de la liste de proposition ont déjà été ajoutés.',\n 'foehn-multiselect-autocomplete.autocomplete.screen-reader.label':\n 'Sélectionner un élément dans la liste de recherche' +\n \" ci-dessous pour l'ajouter à votre sélection.\",\n 'foehn-agenda.calendar-indisponible':\n 'Le calendrier des rendez-vous est actuellement indisponible.',\n 'foehn-agenda.pagination-anchor.first-part':\n 'Vous pouvez changer de semaine au moyen de',\n 'foehn-agenda.pagination-anchor.top-next-part': 'la pagination ci-dessous.',\n 'foehn-agenda.pagination-anchor.bottom-next-part':\n 'la pagination ci-dessus.',\n 'foehn-agenda.timeslot.selected': ' sélectionné',\n 'foehn-agenda-timeslot-panel.no-dispo': '(aucune disponibilité)',\n 'foehn-agenda-timeslot-panel.nbr-dispo': '{nbElements} disponibilités',\n 'foehn-agenda-timeslot-panel.selected-time':\n '{timeSelectedValue} sélectionné',\n 'foehn-agenda-timeslot-panel.show-more-sr-only':\n 'Afficher les {nbrElementsHidden} disponibilités masquées',\n 'foehn.agenda-timeslot-panel.show-more':\n 'Afficher plus ({nbrElementsHidden})',\n 'foehn-agenda-timeslot-panel.show-less': 'Afficher moins',\n 'foehn-agenda-navigation.previous-week': 'Semaine précédente',\n 'foehn-agenda-navigation.previous-week-sr-only':\n 'Semaine précédente : {previousWeek}',\n 'foehn-agenda-navigation.next-week': 'Semaine suivante',\n 'foehn-agenda-navigation.next-week-sr-only':\n 'Semaine suivante : {nextWeek}',\n 'foehn-agenda-navigation.nav.aria-label': 'Changer de semaine',\n 'foehn-agenda-navigation.date-picker-button.screen-reader.selected-date':\n 'Semaine du {selectedDate} sélectionnée',\n 'gesdem-demand-detail': 'Détail de la demande {reference}',\n 'gesdem-error.text.has-reference':\n 'Vous pouvez essayer de reprendre votre demande en cliquant sur le lien ci-dessous',\n 'gesdem-error.link.has-reference': 'Reprendre ma demande',\n 'gesdem-error.text.has-no-reference':\n 'Vous pouvez recommencer une demande en cliquant sur le lien ci-dessous',\n 'gesdem-error.link.has-no-reference': 'Recommencer',\n 'gesdem-error.text.pending-payment':\n '<p>Un problème est survenu lors de la transmission de votre demande.</p>' +\n '<p><strong>Merci de ne pas refaire une nouvelle demande tout de suite.</strong></p>' +\n \"<p>Sans confirmation de la transmission de votre demande dans un délai d'un jour, \" +\n 'nous vous prions de <a href=\"{supportLink}\" target=\"_blank\">contacter le support</a>.',\n 'foehn-modal.btn-close.aria-label': 'Fermer la boite de dialogue',\n 'foehn-modal.btn-close.title': 'Fermer',\n 'foehn-textarea.chars-remaining.plural':\n '{charCountLeft} caractères restants',\n 'foehn-textarea.chars-remaining.singular':\n '{charCountLeft} caractère restant',\n 'foehn-textarea.chars-remaining.zero':\n 'Vous avez atteint le nombre de caractères autorisés',\n 'foehn-textarea.chars-remaining.exceeded':\n 'Vous avez dépassé le nombre de caractères autorisés de {charCountLeft}',\n 'foehn-upload-progress-bar.title': 'Traitement de votre envoi',\n 'foehn-upload-progress-bar.upload': 'Enregistrement en cours...',\n 'foehn-upload-progress-bar.analysis':\n 'Analyse en cours... Merci de patienter.',\n 'errors.NotNull': 'Ce champ doit être rempli'\n};\n","import { GrowlType } from './growl-types';\n\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 { BehaviorSubject, Observable } from 'rxjs';\n\nimport { GrowlMessage } from './growl-message';\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 { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, combineLatest, Observable, of } from 'rxjs';\nimport { catchError, map, shareReplay, switchMap, tap } from 'rxjs/operators';\n\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 */\nexport const replaceAll = (\n value: string,\n placeholders?: PlaceholderType\n): 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 */\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 defaultLanguageCode = 'fr';\n private readonly dictionaryObservable: Observable<DictionaryType>;\n private readonly availableLanguagesObservable: Observable<Language[]>;\n private readonly languageCodeSubject = new BehaviorSubject<string>(\n this.getNavigatorLanguageCodeOrDefault()\n );\n\n constructor(\n private httpClient: HttpClient,\n private growlService: GrowlBrokerService\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 this.dictionaryObservable = this.getCurrentLanguageCode().pipe(\n switchMap(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\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 combineLatest([\n this.availableLanguagesObservable,\n this.languageCodeSubject.asObservable()\n ]).pipe(\n switchMap(([availableLanguageCodes, languageCode]) => {\n const matchedLanguage = availableLanguageCodes.find(\n lc => lc.code === languageCode\n );\n if (!!matchedLanguage && !!matchedLanguage.code) {\n return of(matchedLanguage.code);\n }\n return of(this.defaultLanguageCode);\n }),\n shareReplay(1)\n );\n }\n\n setDefaultLanguageCode(code: string): void {\n this.defaultLanguageCode = code;\n this.languageCodeSubject.next(this.getNavigatorLanguageCodeOrDefault());\n }\n\n private getNavigatorLanguageCodeOrDefault(): string {\n return !!navigator && !!navigator.language\n ? navigator.language.split('-')[0]\n : this.defaultLanguageCode;\n }\n}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectorRef, Pipe, PipeTransform } from '@angular/core';\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\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';\n\nimport type { FoehnFormComponent } from '../foehn-form/foehn-form.component';\nimport { ValidationHandlerService } from '../validation/validation-handler.service';\n\nconst isAllUpperCase = (value: string): boolean =>\n value.toUpperCase() === value;\n\nconst formatErrorMessage = (errorMessage: string): string => {\n if (!errorMessage?.length) {\n return '';\n }\n\n let firstWord = errorMessage.split(' ')[0];\n const nextWords = errorMessage.split(' ').slice(1).join(' ');\n if (!isAllUpperCase(firstWord)) {\n firstWord = firstWord.charAt(0).toLowerCase() + firstWord.slice(1);\n }\n\n return `${firstWord}${!!nextWords.length ? ` ${nextWords}` : ''}`;\n};\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: formatErrorMessage(\n this.validationHandlerService.getMessage(\n component,\n error\n )\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(index: number, 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 OnDestroy,\n QueryList,\n ViewChild\n} from '@angular/core';\nimport { NgForm, NgModel } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { RegisterNgModelService } from '../foehn-form/register-ng-model.service';\nimport { FoehnInputComponent } from '../foehn-input/foehn-input.component';\nimport { ServiceLocator } from '../service-locator';\n\n@Component({\n selector: 'foehn-form',\n templateUrl: './foehn-form.component.html'\n})\nexport class FoehnFormComponent implements AfterViewInit, OnDestroy {\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 private registerNgModelService: RegisterNgModelService;\n\n private readonly registerNgModelServiceSubscription: Subscription;\n\n constructor() {\n this.registerNgModelService = ServiceLocator.injector.get(\n RegisterNgModelService\n );\n // eslint-disable-next-line rxjs-angular/prefer-async-pipe\n this.registerNgModelServiceSubscription = this.registerNgModelService.updateRegisteredNgModelsSubject.subscribe(\n () => this.updateRegisteredNgModels()\n );\n }\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 ngOnDestroy(): void {\n if (this.registerNgModelServiceSubscription) {\n this.registerNgModelServiceSubscription.unsubscribe();\n }\n }\n\n ngAfterViewInit(): void {\n this.updateRegisteredNgModels();\n // eslint-disable-next-line rxjs-angular/prefer-async-pipe\n this.childrenInputComponents.changes.subscribe(() =>\n this.updateRegisteredNgModels()\n );\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","<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","import { FormError } from './form-error';\nimport { I18nForm } from './i18n-form';\n\n// eslint-disable max-classes-per-file\nexport class FormMetadata {\n reference: string;\n currentAction: number;\n referenceInterne: string;\n critical: boolean;\n initialisationDateTime: string;\n transfertDateTime: string;\n modificationDateTime: string;\n statut: string;\n}\n\nexport class FormPostResponse<T extends I18nForm> {\n form: T;\n errors: FormError[] = [];\n meta = new FormMetadata();\n}\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 mockedServices: string[];\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';\n\nimport { FormPostResponse } from '../form-post-response';\nimport { ActionStatut, GesdemStatutUtils } from '../gesdem/gesdem-statut-utils';\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: FormPostResponse<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 { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { combineLatest, Observable } from 'rxjs';\nimport { filter, map, shareReplay } from 'rxjs/operators';\n\nimport { FoehnPageService } from '../foehn-page/foehn-page.service';\nimport { ApplicationInfo, EtapeInfo } from './application-info';\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 get firstEtapeInfo(): Observable<EtapeInfo> {\n return this.firstEtapeInfo_;\n }\n\n get currentEtapeInfo(): Observable<EtapeInfo> {\n return this.currentEtapeInfo_;\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(reference?: string): Observable<string> {\n return this.data.pipe(\n map(\n appInfo =>\n appInfo.configuration?.portail?.supportFormUrl ||\n `${this.getPortailBaseUrl(appInfo)}pub/101098/`\n ),\n map(link =>\n !!reference?.length\n ? `${link}?concernedReference=${reference}`\n : link\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 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 { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Params, Router } from '@angular/router';\nimport { Observable, throwError } from 'rxjs';\nimport { mergeMap } from 'rxjs/operators';\n\nimport { GrowlBrokerService } from '../foehn-growl/growl-broker.service';\nimport { GrowlType } from '../foehn-growl/growl-types';\nimport { ApplicationInfoService } from '../sdk-appinfo/application-info.service';\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 {\n HttpClient,\n HttpErrorResponse,\n HttpParams\n} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Observable, of, Subject } from 'rxjs';\nimport { catchError, map, switchMap, tap } from 'rxjs/operators';\n\nimport { GrowlBrokerService } from '../foehn-growl/growl-broker.service';\nimport { GrowlType } from '../foehn-growl/growl-types';\nimport { FormPostResponse } from '../form-post-response';\nimport { ActionStatut } from '../gesdem/gesdem-statut-utils';\nimport { SessionInfo } from '../sdk-session-info/session-info.service';\nimport { ValidationHandlerService } from '../validation/validation-handler.service';\nimport { GesdemErrorHandlerService } from './gesdem-error-handler.service';\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: FormPostResponse<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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get lastResponse(): FormPostResponse<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 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 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\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\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 retrieveActionStatut(reference: any): Observable<ActionStatut> {\n let url = 'api';\n if (this.prefix) {\n url = `api/${this.prefix}`;\n }\n url = `${url}/${reference}/action-statut`;\n return this.http.get(url).pipe(\n map(status => status as ActionStatut),\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: FormPostResponse<any>): void {\n if (!response.meta.critical) {\n this._lastResponse = response;\n this._updateFormDataSubject.next(response.form);\n } else {\n this._lastResponse = new FormPostResponse();\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 { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\nimport { GrowlBrokerService } from '../foehn-growl/growl-broker.service';\nimport { GrowlType } from '../foehn-growl/growl-types';\nimport { FormError } from '../form-error';\nimport { RepriseInfo } from './reprise-info';\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<FormError[]> {\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<FormError[]>(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 { Location } from '@angular/common';\nimport { Injectable } from '@angular/core';\nimport {\n ActivatedRoute,\n ActivatedRouteSnapshot,\n CanActivate,\n Params,\n Route,\n Router\n} from '@angular/router';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { GesdemHandlerService } from '../gesdem/gesdem-handler.service';\nimport { GesdemActionRecoveryService } from '../gesdem-action-recovery/gesdem-action-recovery.service';\nimport { ServiceLocator } from '../service-locator';\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 get initialized(): boolean {\n return this.isInit;\n }\n\n set activatedRoute(value: ActivatedRoute) {\n this.throwIfNotInit();\n this._activatedRoute = value;\n this.initializedAndRouteActivated.next(true);\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 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.orderedRoutes?.length) {\n return false;\n }\n\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","export class PendingFiles {\n url: string;\n formKey: string;\n label: string;\n files: File[];\n key: string;\n isMultiple: boolean;\n shouldDisplayFileSavedConfirmation: 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 { FormError } from '../form-error';\nimport { ApplicationInfo } from '../sdk-appinfo/application-info';\nimport { ApplicationInfoService } from '../sdk-appinfo/application-info.service';\nimport { SdkDictionaryService } from '../sdk-dictionary/sdk-dictionary.service';\nimport { DocumentReferenceWithFile } from './document-reference';\n\nexport class UploaderHelper {\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 get fileMinSizeInBytes(): number {\n return this._fileMinSizeInBytes;\n }\n\n set fileMinSizeInBytes(value: number) {\n this._fileMinSizeInBytes = value;\n }\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n get illegalCharacters(): string {\n return this._illegalCharacters;\n }\n\n set illegalCharacters(value: string) {\n this._illegalCharacters = value;\n }\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n get maxFileNameLength(): number {\n return this._maxFileNameLength;\n }\n\n set maxFileNameLength(value: number) {\n this._maxFileNameLength = value;\n }\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n get maxSizeInMo(): number {\n return this._maxSizeInMo;\n }\n\n set maxSizeInMo(value: number) {\n this._maxSizeInMo = value;\n }\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n get accept(): string {\n return this._accept;\n }\n\n set accept(value: string) {\n this._accept = value;\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 ): FormError {\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: FormError[],\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.IMAGE_NOT_READABLE = this.dictionaryService.getKeySync(\n 'errors.IMAGE_NOT_READABLE'\n );\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 ): FormError[] {\n const errors: FormError[] = [];\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: FormError[]): boolean {\n return (\n !!errors &&\n !!(errors as FormError[]).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/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\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\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\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\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\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","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { FormPostResponse } from '../form-post-response';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GesdemEventService {\n private _formInitializationSubject: Subject<any> = new Subject<any>();\n private _formTransmittedSubject: Subject<\n FormPostResponse<any>\n > = new Subject<FormPostResponse<any>>();\n private _formSentSubject: Subject<FormPostResponse<any>> = new Subject<\n FormPostResponse<any>\n >();\n\n get formInitializationSubject(): Subject<any> {\n return this._formInitializationSubject;\n }\n\n get formTransmittedSubject(): Subject<FormPostResponse<any>> {\n return this._formTransmittedSubject;\n }\n\n get formSentSubject(): Subject<FormPostResponse<any>> {\n return this._formSentSubject;\n }\n\n formInitializationObservable(): Observable<any> {\n return this._formInitializationSubject.asObservable();\n }\n\n formTransmittedObservable(): Observable<FormPostResponse<any>> {\n return this._formTransmittedSubject.asObservable();\n }\n\n formSentObservable(): Observable<FormPostResponse<any>> {\n return this._formSentSubject.asObservable();\n }\n}\n","import { HttpEvent, HttpEventType } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\n\nimport { DocumentsWithErrors } from '../foehn-multi-upload/multi-upload.type';\nimport { UploadProgress } from './upload-progress.type';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UploadProgressService {\n private _uploadProgressSubject = new BehaviorSubject<UploadProgress>(null);\n\n private _analysisProgressSubject = new BehaviorSubject<boolean>(false);\n\n private _showProgress = new BehaviorSubject(false);\n\n get uploadProgress(): Subject<UploadProgress> {\n return this._uploadProgressSubject;\n }\n\n get uploadProgressSubject(): Observable<UploadProgress> {\n return this.uploadProgress.asObservable();\n }\n\n get analysisProgress(): Subject<boolean> {\n return this._analysisProgressSubject;\n }\n\n get analysisProgressSubject(): Observable<boolean> {\n return this.analysisProgress.asObservable();\n }\n\n get showProgress(): Subject<boolean> {\n return this._showProgress;\n }\n\n get showProgressSubject(): Observable<boolean> {\n return this.showProgress.asObservable();\n }\n\n manageUploadEventFilter(event: HttpEvent<DocumentsWithErrors>): boolean {\n switch (event.type) {\n case HttpEventType.Sent:\n this.showProgress.next(true);\n return false;\n\n case HttpEventType.UploadProgress:\n const progress: UploadProgress = {\n loaded: event.loaded,\n total: event.total\n };\n this.uploadProgress.next(progress);\n return false;\n\n case HttpEventType.DownloadProgress:\n case HttpEventType.ResponseHeader:\n // Possibility to do something here if we have to\n return false;\n\n case HttpEventType.Response:\n case HttpEventType.User:\n default:\n this.analysisProgress.next(false);\n this.showProgress.next(false);\n return true;\n }\n }\n}\n","import { HttpClient, HttpEvent, HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { EMPTY, Observable, throwError } from 'rxjs';\nimport { catchError, filter, map, tap } from 'rxjs/operators';\n\nimport { GrowlBrokerService } from '../../foehn-growl/growl-broker.service';\nimport { GrowlType } from '../../foehn-growl/growl-types';\nimport { GesdemEventService } from '../../gesdem/gesdem-event.service';\nimport { GesdemHandlerService } from '../../gesdem/gesdem-handler.service';\nimport { ApplicationInfoService } from '../../sdk-appinfo/application-info.service';\nimport { SdkDictionaryService } from '../../sdk-dictionary/sdk-dictionary.service';\nimport { DocumentReference } from '../document-reference';\nimport { UploadProgressService } from '../foehn-upload-progress-bar/upload-progress.service';\nimport { UploaderHelper } from '../uploader.helper';\nimport { DocumentsWithErrors } from './multi-upload.type';\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 private uploadProgressService: UploadProgressService\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 shouldDisplayFileSavedConfirmation: boolean\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 reportProgress: true,\n observe: 'events',\n responseType: 'json'\n })\n .pipe(\n filter((e: HttpEvent<DocumentsWithErrors>) =>\n this.uploadProgressService.manageUploadEventFilter(e)\n ),\n map(\n (e: HttpEvent<DocumentsWithErrors>) =>\n (e as HttpResponse<DocumentsWithErrors>).body\n ),\n tap(result => {\n const successfulDocumentsCount =\n result.documents && result.documents.length;\n if (\n successfulDocumentsCount &&\n shouldDisplayFileSavedConfirmation\n ) {\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 { filter, map } from 'rxjs/operators';\n\nimport { GesdemEventService } from '../../gesdem/gesdem-event.service';\nimport { GesdemHandlerService } from '../../gesdem/gesdem-handler.service';\nimport { PendingFiles } from '../pending-upload.type';\nimport { MultiUploadService } from './multi-upload.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 shouldDisplayFileSavedConfirmation: 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 this.pendingFilesByFormKey.get(\n formKey\n ).shouldDisplayFileSavedConfirmation = shouldDisplayFileSavedConfirmation;\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 pendingFiles.shouldDisplayFileSavedConfirmation\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 { ActivatedRoute } from '@angular/router';\nimport { Observable, of, Subscription } from 'rxjs';\nimport { mergeMap, share, throttleTime } from 'rxjs/operators';\n\nimport { BreadcrumbEventService } from './foehn-breadcrumb/breadcrumb-event.service';\nimport { FoehnFormComponent } from './foehn-form/foehn-form.component';\nimport { GrowlBrokerService } from './foehn-growl/growl-broker.service';\nimport { FoehnNavigationService } from './foehn-navigation/foehn-navigation.service';\nimport { FoehnPageService } from './foehn-page/foehn-page.service';\nimport { PendingUploadService } from './foehn-upload/foehn-multi-upload/pending-upload.service';\nimport { GesdemEventService } from './gesdem/gesdem-event.service';\nimport { GesdemHandlerService } from './gesdem/gesdem-handler.service';\nimport { ActionStatut, GesdemStatutUtils } from './gesdem/gesdem-statut-utils';\nimport { I18nForm } from './i18n-form';\nimport { SdkDictionaryService } from './sdk-dictionary/sdk-dictionary.service';\nimport { ServiceLocator } from './service-locator';\nimport { ValidationHandlerService } from './validation/validation-handler.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 */\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","import { Component, Input } from '@angular/core';\n\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';\n\nimport { Address } from '../foehn-address/address.type';\nimport {\n FoehnRecapSection,\n FoehnRecapSectionElement\n} from './foehn-recap-section.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 getAddressToDisplay(element: FoehnRecapSectionElement): Address {\n return element.value as Address;\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]=\"getAddressToDisplay(element)\"\n ></foehn-display-address>\n </dd>\n </ng-container>\n </dl>\n</section>\n","import { DatePipe } from '@angular/common';\nimport { AfterViewInit, Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { combineLatest, Observable } from 'rxjs';\nimport { first, map } from 'rxjs/operators';\n\nimport { FoehnRecapSectionElement } from '../foehn-recap-section/foehn-recap-section.type';\nimport { ApplicationInfoService } from '../sdk-appinfo/application-info.service';\nimport { SessionInfo } from '../sdk-session-info/session-info.service';\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 activatedRoute: ActivatedRoute,\n private datePipe: DatePipe\n ) {\n this.debugInfos = combineLatest([\n this.applicationInfoService.data.pipe(first()),\n this.sessioninfo.data.pipe(first()),\n this.activatedRoute.params.pipe(first())\n ]).pipe(\n map(([appInfo, sessionInfo, routeParams]) => {\n const debugInfos: FoehnRecapSectionElement[] = [];\n\n if (!!routeParams.reference) {\n debugInfos.push({\n key: 'Référence de la demande',\n value: routeParams.reference\n });\n }\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 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 ngAfterViewInit(): void {\n this.initDate = new Date();\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 { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\n\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 { catchError } from 'rxjs/operators';\n\nimport { FoehnNavigationService } from '../foehn-navigation/foehn-navigation.service';\nimport { GesdemHandlerService } from './gesdem-handler.service';\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 next.firstChild.routeConfig.path === '404')\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 { Directive, Input } 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 { faInfoCircle } from '@fortawesome/free-solid-svg-icons';\n\nimport { AbstractIconComponent } from './abstract-icon-component';\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","<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 { Location } from '@angular/common';\nimport {\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 { BreadcrumbEventService } from '../foehn-breadcrumb/breadcrumb-event.service';\nimport { FoehnNavigationService } from '../foehn-navigation/foehn-navigation.service';\nimport { FoehnPageService } from '../foehn-page/foehn-page.service';\nimport { GesdemHandlerService } from '../gesdem/gesdem-handler.service';\nimport { ActionStatut, GesdemStatutUtils } from '../gesdem/gesdem-statut-utils';\nimport { SdkDictionaryService } from '../sdk-dictionary/sdk-dictionary.service';\nimport { SessionInfo } from '../sdk-session-info/session-info.service';\nimport { ServiceLocator } from '../service-locator';\n\nconst isBooleanDefined = (value: boolean): boolean =>\n value === true || value === false;\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 @Input()\n hideReference = false;\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 // eslint-disable-next-line rxjs-angular/prefer-async-pipe\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 if (isBooleanDefined(routeData.showDownloadPdfRecapButton)) {\n this.showDownloadPdfRecapButton =\n routeData.showDownloadPdfRecapButton;\n }\n if (isBooleanDefined(routeData.showLinkToMyDemandes)) {\n this.showLinkToMyDemandes = routeData.showLinkToMyDemandes;\n }\n if (isBooleanDefined(routeData.demandeIsClosedOnTransmit)) {\n this.demandeIsClosedOnTransmit =\n routeData.demandeIsClosedOnTransmit;\n }\n if (isBooleanDefined(routeData.hideReference)) {\n this.hideReference = routeData.hideReference;\n }\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,rxjs-angular/prefer-async-pipe\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 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 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 // eslint-disable-next-line rxjs-angular/prefer-async-pipe\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 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 *ngIf=\"!hideReference\">\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\n class=\"sr-only\"\n [innerHTML]=\"\n 'gesdem-confirmation.transmission-information.label'\n | fromDictionary\n \"\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 id=\"linkToTreatedDemandes\"\n *ngIf=\"\n showLinkToMyDemandes &&\n (demandeIsClosedOnTransmit || isAbandoned)\n \"\n >\n {{\n 'gesdem-confirmation.demand-detail-link.label'\n | fromDictionary\n }}\n <a\n href=\"/100002/demandes/{{ reference }}\"\n [attr.aria-label]=\"\n 'gesdem-demand-detail'\n | fromDictionary: { reference: reference }\n \"\n [innerHTML]=\"reference\"\n ></a>\n .\n </p>\n <p\n id=\"linkToInProgressDemandes\"\n *ngIf=\"\n showLinkToMyDemandes &&\n !demandeIsClosedOnTransmit &&\n !isAbandoned\n \"\n >\n {{\n 'gesdem-confirmation.demand-processing-progress-link.label'\n | fromDictionary\n }}\n <a\n href=\"/100002/demandes/{{ reference }}\"\n [attr.aria-label]=\"\n 'gesdem-demand-detail'\n | fromDictionary: { reference: reference }\n \"\n [innerHTML]=\"reference\"\n ></a>\n .\n </p>\n </div>\n </div>\n </div>\n\n <div class=\"col-md-12 list-unstyled d-md-flex p-0 mt-4\">\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 [attr.aria-label]=\"\n 'gesdem.download-pdf.button.title' | fromDictionary\n \"\n >\n {{ downloadPdfRecapButtonText | fromDictionary }}\n </a>\n </div>\n\n <div\n class=\"mr-0 ml-md-auto mb-2 mt-2\"\n *ngIf=\"!(isConnectedCyber | async) && closeLink | async as link\"\n >\n <a [href]=\"link\" id=\"terminerBtn\" class=\"btn btn-primary w-100\">\n {{ closeButtonText | fromDictionary }}\n </a>\n </div>\n\n <div\n class=\"mr-0 ml-md-auto mb-2 mt-2\"\n *ngIf=\"!!(isConnectedCyber | async)\"\n >\n <a\n href=\"/100018/logout\"\n id=\"logoutBtn\"\n class=\"btn btn-primary w-100\"\n >\n {{ 'gesdem-confirmation.logout-button' | fromDictionary }}\n </a>\n </div>\n </div>\n</div>\n\n<div class=\"container mt-5\" *ngIf=\"!hideReference && reference && isInProgress\">\n <div class=\"alert alert-info text-center mb-2\">\n <p\n class=\"h2\"\n [innerHTML]=\"\n 'gesdem-confirmation.demand-in-progress.title' | 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=\"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 {{\n 'gesdem-confirmation.resume-my-demand.label'\n | fromDictionary\n }}\n </p>\n <p>\n <a [routerLink]=\"firstPageLink\">\n {{\n 'gesdem-confirmation.resume-my-demand.button'\n | fromDictionary\n }}\n </a>\n </p>\n </div>\n </div>\n </div>\n</div>\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, OnDestroy } from '@angular/core';\nimport { NavigationStart, Router } from '@angular/router';\nimport {\n BehaviorSubject,\n combineLatest,\n merge,\n Observable,\n of,\n Subscription\n} from 'rxjs';\nimport {\n catchError,\n filter,\n map,\n shareReplay,\n switchMap,\n throttleTime\n} from 'rxjs/operators';\n\nimport { SupportAlert } from './support-alert.model';\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\n private supportAlertUrl = new BehaviorSubject<string>('');\n\n constructor(private http: HttpClient, private router: Router) {\n const navigationTrigger = this.router.events.pipe(\n filter(e => e instanceof NavigationStart)\n );\n\n const refreshAlertsTriggerAndNavigation = merge(\n this.refreshTrigger,\n navigationTrigger\n ).pipe(throttleTime(3 * 60 * 1000));\n\n this.allAlerts = combineLatest([\n this.supportAlertUrl,\n refreshAlertsTriggerAndNavigation\n ]).pipe(\n // Only if an url is defined\n filter(([url]) => !!url),\n // Load the alerts from the server.\n switchMap(([url]) =>\n this.http.get<SupportAlert[]>(url).pipe(\n catchError((e: unknown) => {\n console.error(\n 'Unable to get support alerts, returning an empty array',\n e\n );\n return of([]);\n })\n )\n ),\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 { Directive, Input } from '@angular/core';\n\nimport { FoehnInputComponent } from './foehn-input.component';\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 } from '@angular/core';\nimport { faTimes } from '@fortawesome/free-solid-svg-icons';\n\nimport { AbstractIconComponent } from './abstract-icon-component';\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","import { Component, Input } from '@angular/core';\n\nimport { FoehnInputComponent } from '../foehn-input/foehn-input.component';\nimport { FormError } from '../form-error';\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(): FormError[] {\n return this.component.errors;\n }\n\n getMessage(error: FormError): 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 {\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 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 get isModalVisible(): boolean {\n return this.isVisible;\n }\n\n @Input()\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 @HostListener('keyup', ['$event'])\n handleKeyboardEvent(event: KeyboardEvent): void {\n if (this.closeable && event.key === 'Escape') {\n this.isModalVisible = false;\n }\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\n class=\"modal-header d-flex\"\n [ngClass]=\"{ 'flex-row-reverse': closeable }\"\n >\n <button\n *ngIf=\"closeable\"\n (click)=\"isModalVisible = false\"\n type=\"button\"\n class=\"btn close\"\n [attr.aria-label]=\"\n 'foehn-modal.btn-close.aria-label' | fromDictionary\n \"\n id=\"closeButton\"\n >\n <span aria-hidden=\"true\">&times;</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 [attr.aria-label]=\"\n 'foehn-modal.btn-close.aria-label'\n | fromDictionary\n \"\n #modalDefaultCloseBtn\n >\n {{\n 'foehn-modal.btn-close.title'\n | fromDictionary\n }}\n </button>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n","import { Component, ElementRef, Input, ViewChild } from '@angular/core';\n\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]=\"modalContent.buttonTitle || '&nbsp;'\"\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]=\"modalContent.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 [style]=\"\n 'width:' +\n (image.width || '100%') +\n '; ' +\n 'height: ' +\n (image.height || 'auto') +\n ';'\n \"\n />\n </ng-container>\n</foehn-modal>\n","import { Component, forwardRef, Input } from '@angular/core';\n\nimport { FoehnInputComponent } from './foehn-input.component';\nimport { FoehnInputStringComponent } from './foehn-input-string.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 <div class=\"d-flex justify-content-between\">\n <label\n style=\"display: inline-block\"\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-help-modal\n class=\"removePaddingButton\"\n *ngIf=\"!!helpModal\"\n [modalContent]=\"helpModal\"\n ></foehn-help-modal>\n </div>\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.autocapitalize]=\"autocapitalize\"\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 { Router } from '@angular/router';\nimport { throwError } from 'rxjs';\nimport { catchError, finalize, tap } from 'rxjs/operators';\n\nimport { FoehnFormComponent } from '../../foehn-form/foehn-form.component';\nimport { GrowlBrokerService } from '../../foehn-growl/growl-broker.service';\nimport { GrowlType } from '../../foehn-growl/growl-types';\nimport { ApplicationInfoService } from '../../sdk-appinfo/application-info.service';\nimport { ValidationHandlerService } from '../../validation/validation-handler.service';\nimport { GesdemActionRecoveryService } from '../gesdem-action-recovery.service';\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 // eslint-disable-next-line rxjs-angular/prefer-async-pipe\n .subscribe();\n }\n\n validateOtp(): void {\n this.recoveryService\n .checkRecoveryPassword(this.reference, this.otp)\n .pipe(finalize(() => (this.otp = null)))\n // eslint-disable-next-line rxjs-angular/prefer-async-pipe\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 // eslint-disable-next-line rxjs-angular/prefer-async-pipe\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 { Observable, of } from 'rxjs';\nimport { catchError, map, tap } from 'rxjs/operators';\n\nimport { FoehnNavigationService } from '../foehn-navigation/foehn-navigation.service';\nimport { FoehnPageService } from '../foehn-page/foehn-page.service';\nimport { SESSION_EXPIRED } from '../gesdem/gesdem-error-handler.service';\nimport { GesdemEventService } from '../gesdem/gesdem-event.service';\nimport { GesdemHandlerService } from '../gesdem/gesdem-handler.service';\nimport { ActionStatut, GesdemStatutUtils } from '../gesdem/gesdem-statut-utils';\nimport { ApplicationInfoService } from '../sdk-appinfo/application-info.service';\nimport { SupportAlertService } from '../sdk-support-alert/support-alert.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 supportLink: Observable<string>;\n hasSessionExpired = false;\n isPendingPayment: Observable<boolean>;\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private navigation: FoehnNavigationService,\n private gesdemService: GesdemHandlerService,\n private gesdemEventService: GesdemEventService,\n private foehnPageService: FoehnPageService,\n private supportAlertService: SupportAlertService,\n private applicationInfoService: ApplicationInfoService\n ) {\n const route = FoehnNavigationService.getRootRouteRecursive(\n activatedRoute.snapshot\n );\n navigation.initRoute(route);\n this.link = this.getBasePath();\n this.reference = this.activatedRoute.snapshot.params.reference;\n this.supportLink = this.applicationInfoService.getSafeSupportFormUrl(\n this.reference\n );\n if (!this.reference?.length) {\n this.isPendingPayment = of(false);\n } else {\n this.isPendingPayment = this.gesdemService\n .retrieveActionStatut(this.reference)\n .pipe(\n tap(statut => {\n if (GesdemStatutUtils.isFinal(statut)) {\n this.navigation.last();\n }\n }),\n map(statut => statut === ActionStatut.PENDING_PAYMENT),\n catchError(() => of(false))\n );\n }\n }\n\n ngOnInit(): void {\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 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 <ng-container *ngIf=\"(isPendingPayment | async) === true\">\n <p\n class=\"card-text vd-card-text alert alert-danger\"\n [innerHTML]=\"\n 'gesdem-error.text.pending-payment'\n | fromDictionary\n : {\n supportLink: (supportLink | async)\n }\n \"\n ></p>\n </ng-container>\n <ng-container *ngIf=\"(isPendingPayment | async) === false\">\n <p class=\"card-text vd-card-text\">\n {{\n (!!reference\n ? 'gesdem-error.text.has-reference'\n : 'gesdem-error.text.has-no-reference'\n ) | fromDictionary\n }}\n </p>\n <ul class=\"vd-list-links\">\n <li>\n <a [href]=\"link\">\n {{\n (!!reference\n ? 'gesdem-error.link.has-reference'\n : 'gesdem-error.link.has-no-reference'\n ) | fromDictionary\n }}\n </a>\n </li>\n </ul>\n </ng-container>\n\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","export class I18nForm {\n language = 'fr';\n acceptDecisionElectronique: boolean;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n HttpErrorResponse,\n HttpEvent,\n HttpHandler,\n HttpInterceptor,\n HttpRequest,\n HttpResponse,\n HttpStatusCode\n} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject, throwError } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\nconst IAM_SESSION_EXPIRED_HEADER = 'iam-session-expired';\nconst CYBER_LOGIN_PATH = '/100018/login';\nconst ACV_LOGIN_PATH = '/iamlogin';\n\nconst hasIamExpiredHeader = (event: HttpResponse<any>): boolean =>\n !!event.headers.get(IAM_SESSION_EXPIRED_HEADER);\n\nconst isRedirectionToLogin = (event: HttpResponse<any>): boolean => {\n const isRedirection = event.status === HttpStatusCode.Found;\n const locationHeader = event.headers.get('Location');\n\n const isLocationCyberLogin = locationHeader?.includes(CYBER_LOGIN_PATH);\n const isLocationAcvLogin = locationHeader?.includes(ACV_LOGIN_PATH);\n\n return isRedirection && (isLocationCyberLogin || isLocationAcvLogin);\n};\n\n@Injectable({\n providedIn: 'root'\n})\nexport class IamExpiredInterceptorService implements HttpInterceptor {\n private _isIamSessionExpired: Subject<boolean> = new Subject<boolean>();\n\n get isIamSessionExpired(): Observable<boolean> {\n return this._isIamSessionExpired.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 if (\n hasIamExpiredHeader(event) ||\n isRedirectionToLogin(event)\n ) {\n this._isIamSessionExpired.next(true);\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 // status is 200, but still an error since\n // login page is returned when xml/json is expected\n const isStatusOk = err.status === HttpStatusCode.Ok;\n const isUrlCyberLogin = err.url.includes(CYBER_LOGIN_PATH);\n const isUrlAcvLogin = err.url.includes(ACV_LOGIN_PATH);\n\n if (isStatusOk && (isUrlCyberLogin || isUrlAcvLogin)) {\n this._isIamSessionExpired.next(true);\n }\n }\n\n return throwError(err);\n }\n}\n","import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';\nimport { Injector, NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { IamExpiredInterceptorService } from './sdk-redirect/iam-expired-interceptor.service';\nimport { ServiceLocator } from './service-locator';\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 { 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 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 { Injectable } from '@angular/core';\nimport { combineLatest, merge, Observable, of } from 'rxjs';\nimport { debounceTime, filter, first, map } from 'rxjs/operators';\n\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)[ +]+(12[_\\.]2|12[_\\.]([3-9]|\\d{2,})|12[_\\.]5|12[_\\.]([6-9]|\\d{2,})|(1[3-9]|[2-9]\\d|\\d{3,})[_\\.]\\d+|14[_\\.]0|14[_\\.]([1-9]|\\d{2,})|14[_\\.]4|14[_\\.]([5-9]|\\d{2,})|14[_\\.]8|14[_\\.](9|\\d{2,})|(1[5-9]|[2-9]\\d|\\d{3,})[_\\.]\\d+|15[_\\.]0|15[_\\.]([1-9]|\\d{2,})|(1[6-9]|[2-9]\\d|\\d{3,})[_\\.]\\d+|16[_\\.]0|16[_\\.]([1-9]|\\d{2,})|(1[7-9]|[2-9]\\d|\\d{3,})[_\\.]\\d+)(?:[_\\.]\\d+)?)|(OperaMini(?:\\/att)?\\/?(\\d+)?(?:\\.\\d+)?(?:\\.\\d+)?)|(Opera\\/.+Opera Mobi.+Version\\/(72\\.0|72\\.([1-9]|\\d{2,})|(7[3-9]|[8-9]\\d|\\d{3,})\\.\\d+))|(Opera\\/(72\\.0|72\\.([1-9]|\\d{2,})|(7[3-9]|[8-9]\\d|\\d{3,})\\.\\d+).+Opera Mobi)|(Opera Mobi.+Opera(?:\\/|\\s+)(72\\.0|72\\.([1-9]|\\d{2,})|(7[3-9]|[8-9]\\d|\\d{3,})\\.\\d+))|(SamsungBrowser\\/(18\\.0|18\\.([1-9]|\\d{2,})|(19|[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\\/(14\\.0|14\\.([1-9]|\\d{2,})|(1[5-9]|[2-9]\\d|\\d{3,})\\.\\d+|15\\.0|15\\.([1-9]|\\d{2,})|(1[6-9]|[2-9]\\d|\\d{3,})\\.\\d+|16\\.0|16\\.([1-9]|\\d{2,})|(1[7-9]|[2-9]\\d|\\d{3,})\\.\\d+)(?:\\.\\d+)?.*Safari\\/)|(Firefox\\/(68\\.0|68\\.([1-9]|\\d{2,})|(69|[7-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+|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 { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { ApplicationInfoService } from '../sdk-appinfo/application-info.service';\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 { Injectable } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter, first } from 'rxjs/operators';\n\nimport { FoehnPageService } from '../foehn-page/foehn-page.service';\nimport { ApplicationInfoService } from '../sdk-appinfo/application-info.service';\n\ndeclare global {\n interface Window {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _paq: any;\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SdkStatisticsService {\n private _router: Router;\n private _applicationInfoService: ApplicationInfoService;\n private _foehnPageService: FoehnPageService;\n\n constructor(\n private router: Router,\n private applicationInfoService: ApplicationInfoService,\n private foehnPageService: FoehnPageService\n ) {\n this._router = router;\n this._applicationInfoService = applicationInfoService;\n this._foehnPageService = foehnPageService;\n }\n\n private static send(matomoUrl: string, matomoSiteId: string): void {\n const s = document.getElementsByTagName('script')[0];\n const sSrc = s.getAttribute('src');\n\n // Remove the script added before\n if (sSrc === `${matomoUrl}matomo.js`) {\n s.remove();\n }\n\n // Set variables\n const _paq = (window._paq = window._paq || []);\n _paq.push(['setCustomUrl', location.pathname]);\n _paq.push(['trackPageView']);\n\n _paq.push(['setTrackerUrl', `${matomoUrl}matomo.php`]);\n _paq.push(['setSiteId', matomoSiteId]);\n const dBis = document;\n const gBis = dBis.createElement('script');\n const sBis = dBis.getElementsByTagName('script')[0];\n gBis.type = 'text/javascript';\n gBis.async = true;\n gBis.src = `${matomoUrl}matomo.js`;\n sBis.parentNode.insertBefore(gBis, sBis);\n }\n\n track(): void {\n this._applicationInfoService.data.pipe(first()).subscribe(data => {\n // Get Matomo settings\n if (\n 'matomoUrl' in data.appProperties &&\n 'matomoSiteId' in data.appProperties &&\n !!data.appProperties.matomoUrl &&\n !!data.appProperties.matomoSiteId\n ) {\n let matomoUrl = data.appProperties.matomoUrl;\n const matomoSiteId = data.appProperties.matomoSiteId;\n\n // Complete url if '/' is missing at the end\n if (!matomoUrl.endsWith('/')) {\n matomoUrl = `${matomoUrl}/`;\n }\n\n SdkStatisticsService.send(matomoUrl, matomoSiteId);\n\n this._router.events\n .pipe(filter(event => event instanceof NavigationEnd))\n // eslint-disable-next-line rxjs/no-nested-subscribe\n .subscribe(() => {\n SdkStatisticsService.send(matomoUrl, matomoSiteId);\n });\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\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 { Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\n\nimport { FoehnConfirmModalService } from '../foehn-confirm-modal/foehn-confirm-modal.service';\nimport { FoehnConfirmModalContent } from '../foehn-confirm-modal/foehn-confirm-modal-content';\nimport { SessionInfo } from '../sdk-session-info/session-info.service';\nimport { Breadcrumb, BreadcrumbItem } from './breadcrumb';\nimport { BreadcrumbEventService } from './breadcrumb-event.service';\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 confirmLeavingAlert: FoehnConfirmModalContent;\n\n private breadcrumbSubscription: Subscription;\n\n constructor(\n private breadcrumbService: BreadcrumbEventService,\n private router: Router,\n private foehnConfirmModalService: FoehnConfirmModalService,\n private sessionInfo: SessionInfo\n ) {}\n\n reset(): void {\n this.breadcrumbItems = [];\n this.currentNav = null;\n }\n\n ngOnInit(): void {\n const breadcrumbObservable = this.sessionInfo.neverConnected\n ? this.breadcrumbService.neverConnectedBreadcrumbObservable()\n : this.breadcrumbService.breadcrumbObservable();\n\n // eslint-disable-next-line rxjs-angular/prefer-async-pipe\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 this.breadcrumbSubscription?.unsubscribe();\n this.breadcrumbSubscription = null;\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, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { GrowlBrokerService } from './growl-broker.service';\nimport { GrowlMessage } from './growl-message';\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 // eslint-disable-next-line rxjs-angular/prefer-async-pipe\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 get messages(): GrowlMessage[] {\n return this._messages;\n }\n\n ngOnDestroy(): void {\n this.addMessageObserver.unsubscribe();\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","/* eslint-disable @typescript-eslint/no-explicit-any */\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).length === Object.keys(obj).length &&\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","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 { HttpClient } from '@angular/common/http';\nimport {\n Directive,\n EventEmitter,\n Input,\n NgZone,\n OnChanges,\n OnInit,\n Output,\n SimpleChange,\n SimpleChanges\n} from '@angular/core';\nimport { Observable, of, Subject } from 'rxjs';\nimport { first, map, shareReplay } from 'rxjs/operators';\n\nimport { FoehnInputComponent } from '../foehn-input/foehn-input.component';\nimport { ObjectHelper } from '../helpers/object.helper';\nimport { ServiceLocator } from '../service-locator';\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 elementGroup: any;\n\n @Output()\n elementsLoaded = new EventEmitter<any>();\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 constructor(private ngZone: NgZone) {\n super();\n this.httpClient = ServiceLocator.injector.get(HttpClient);\n this.autocomplete = 'off';\n }\n\n get onInitSubject(): Subject<any> {\n return this._onInitSubject;\n }\n\n get defaultElementValue(): string {\n return this.defaultElementValue_;\n }\n\n @Input()\n set defaultElementValue(val: string) {\n this.defaultElementValue_ = val;\n if (!this.elementsUrl) {\n this.onElementsRetrieved();\n }\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\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.elementsLoaded.next(elements);\n this.onElementsRetrieved();\n }\n\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 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 getDisabled(element: any): string {\n if (this.disabled) {\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 element: any,\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 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 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 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 if (identityFn) {\n return identityFn(value1) === identityFn(value2);\n } else {\n return ObjectHelper.isEqual(value1, value2);\n }\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 protected 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 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 getValueIdentityFunction(): (element: any) => any {\n return typeof this.elementValueIdentity === 'function'\n ? this.elementValueIdentity\n : null;\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(null);\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 // When elements are deferred from ngOnInit (i.e. pipe async is used)\n // Need to fire again 'elementsLoaded' otherwise only 'null' value is sent\n this.elementsLoaded.next(change.currentValue);\n } else if (\n change &&\n !ObjectHelper.isEqual(change.currentValue, change.previousValue)\n ) {\n this.elementsLoaded.next(change.currentValue);\n }\n }\n\n private onElementsUrlChange(change: SimpleChange): void {\n if (change && !change.firstChange) {\n this.fetchElementsFromUrl();\n }\n }\n}\n","import { Component, forwardRef, Input, NgZone, OnInit } from '@angular/core';\n\nimport { FoehnInputComponent } from '../foehn-input/foehn-input.component';\nimport { FoehnCheckableGroupComponent } from './foehn-checkable-group.component';\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 @Input()\n noSelectionLabel = '-';\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\n compareFn(value1: any, value2: any): boolean {\n return this.areValuesEquals(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 <div class=\"d-flex justify-content-between\">\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 <foehn-help-modal\n class=\"removePaddingButton\"\n *ngIf=\"!!helpModal\"\n [modalContent]=\"helpModal\"\n ></foehn-help-modal>\n </div>\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 [attr.autocomplete]=\"getAutoComplete()\"\n [ngModel]=\"model\"\n (ngModelChange)=\"updateNgModel($event)\"\n [compareWith]=\"compareFn.bind(this)\"\n (change)=\"handleChange(model)\"\n #entryComponent\n ngDefaultControl\n >\n <option *ngIf=\"!required\" [ngValue]=\"null\">\n {{ noSelectionLabel }}\n </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 >\n {{ 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.bind(this)\"\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 { PlatformLocation } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { merge, Observable, of } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\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","import { Component, Input, OnInit } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\nimport { ApplicationInfo } from '../sdk-appinfo/application-info';\nimport { ApplicationInfoService } from '../sdk-appinfo/application-info.service';\nimport {\n Language,\n SdkDictionaryService\n} from '../sdk-dictionary/sdk-dictionary.service';\nimport { SessionInfo } from '../sdk-session-info/session-info.service';\nimport { SessionInfoData } from '../sdk-session-info/session-info-data';\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 isProduction: Observable<boolean>;\n mockedServices: Observable<string[]>;\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 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 ngOnInit(): void {\n // eslint-disable-next-line rxjs-angular/prefer-async-pipe\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.mockedServices = this.applicationInfoService.data.pipe(\n map(appInfo => appInfo.mockedServices)\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 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 <ng-container *ngIf=\"mockedServices | async as resolvedMockedServices\">\n <div\n class=\"alert alert-danger\"\n *ngIf=\"resolvedMockedServices.length > 0\"\n >\n <h2 class=\"my-0\">Il semble y avoir certains mocks actifs</h2>\n <ul>\n <li *ngFor=\"let mock of resolvedMockedServices\">\n {{ mock }}\n </li>\n </ul>\n </div>\n </ng-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 } from '@angular/core';\nimport { faChevronUp } from '@fortawesome/free-solid-svg-icons';\n\nimport { AbstractIconComponent } from './abstract-icon-component';\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 { BehaviorSubject, combineLatest, merge, Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { GesdemEventService } from '../gesdem/gesdem-event.service';\nimport { GesdemHandlerService } from '../gesdem/gesdem-handler.service';\nimport { ApplicationInfo } from '../sdk-appinfo/application-info';\nimport { ApplicationInfoService } from '../sdk-appinfo/application-info.service';\nimport { FooterLink } from './footer-link.type';\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 // eslint-disable-next-line rxjs-angular/prefer-async-pipe\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&nbsp;\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 { Component, OnInit } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\nimport { SessionInfo } from '../sdk-session-info/session-info.service';\nimport { SessionInfoData } from '../sdk-session-info/session-info-data';\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>&laquo;{{ userConnectedAs }}&raquo;</em>\n</p>\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';\n\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\">&times;</span>\n </button>\n</section>\n","import {\n Component,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges\n} from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { SupportAlert } from './support-alert.model';\nimport { SupportAlertService } from './support-alert.service';\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 { Observable } from 'rxjs';\n\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 get content(): Observable<FoehnConfirmModalContent> {\n return this.confirmModalService.getContent();\n }\n\n ngOnInit(): void {\n this.confirmModalService\n .getIsVisible()\n // eslint-disable-next-line rxjs-angular/prefer-async-pipe\n .subscribe(isVisible => (this.isVisible = isVisible));\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 [closeable]=\"\n modalContent.closeable !== null && modalContent.closeable !== undefined\n ? modalContent.closeable\n : true\n \"\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 { Component } from '@angular/core';\nimport { faLock } from '@fortawesome/free-solid-svg-icons';\n\nimport { AbstractIconComponent } from './abstract-icon-component';\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 { faExternalLinkAlt } from '@fortawesome/free-solid-svg-icons';\n\nimport { AbstractIconComponent } from './abstract-icon-component';\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","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { merge, of, Subscription } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\nimport { FoehnNavigationService } from '../foehn-navigation/foehn-navigation.service';\nimport { GesdemEventService } from '../gesdem/gesdem-event.service';\nimport { GesdemHandlerService } from '../gesdem/gesdem-handler.service';\nimport { ActionStatut, GesdemStatutUtils } from '../gesdem/gesdem-statut-utils';\n\n@Component({\n selector: 'foehn-status-progress-bar',\n templateUrl: './foehn-status-progress-bar.component.html',\n styleUrls: ['./foehn-status-progress-bar.component.css']\n})\nexport class FoehnStatusProgressBarComponent implements OnInit, OnDestroy {\n @Input()\n hidden: boolean;\n\n isTransmitted = false;\n isTransmittedSub: Subscription;\n\n constructor(\n protected activatedRoute: ActivatedRoute,\n private navigation: FoehnNavigationService,\n private gesdemEventService: GesdemEventService,\n private gesdemHand: GesdemHandlerService\n ) {}\n\n isEnabled(): boolean {\n return this.hidden !== true;\n }\n\n isStep2Active(): boolean {\n if (\n this.isTransmitted ||\n (this.navigation.initialized &&\n this.navigation.isLastFormPage() &&\n !this.navigation.isFirstFormPage())\n ) {\n return true;\n }\n\n const orderedRoutes = this.navigation.orderedRoutes;\n return (\n !!orderedRoutes &&\n !!orderedRoutes[this.navigation.currentRouteOrder]?.data?.isStep2\n );\n }\n\n ngOnInit(): void {\n this.isTransmittedSub = merge(\n of(this.gesdemHand.lastResponse?.meta),\n this.gesdemHand.updateFormDataSubject.pipe(\n map(() => this.gesdemHand.lastResponse.meta)\n )\n )\n .pipe(\n filter(meta => !!meta),\n map(meta => ActionStatut[meta.statut as ActionStatut]),\n map(statut => GesdemStatutUtils.isFinal(statut))\n )\n // eslint-disable-next-line rxjs-angular/prefer-async-pipe\n .subscribe(transmitted => {\n this.isTransmitted = transmitted;\n });\n }\n\n ngOnDestroy(): void {\n if (this.isTransmittedSub) {\n this.isTransmittedSub.unsubscribe();\n }\n }\n}\n","<div *ngIf=\"isEnabled()\">\n <div class=\"container\">\n <div class=\"row justify-content-center\">\n <div class=\"col\">\n <div\n class=\"sr-only\"\n aria-live=\"polite\"\n role=\"status\"\n aria-atomic=\"true\"\n tabindex=\"0\"\n >\n <span *ngIf=\"isTransmitted; else notTransmitted\">\n {{\n 'foehn-status-progress-bar.step3.srOnly'\n | fromDictionary\n }}\n </span>\n <ng-template #notTransmitted>\n <span *ngIf=\"isStep2Active()\">\n {{\n 'foehn-status-progress-bar.step2.srOnly'\n | fromDictionary\n }}\n </span>\n <span *ngIf=\"!isStep2Active()\">\n {{\n 'foehn-status-progress-bar.step1.srOnly'\n | fromDictionary\n }}\n </span>\n </ng-template>\n </div>\n\n <ul id=\"progressbar\" class=\"pl-0 mt-1\" aria-hidden=\"true\">\n <li class=\"active\" id=\"step1\">\n <strong>\n {{\n 'foehn-status-progress-bar.step1'\n | fromDictionary\n }}\n </strong>\n </li>\n <li\n id=\"step2\"\n [ngClass]=\"{\n active: isStep2Active()\n }\"\n >\n <strong>\n {{\n 'foehn-status-progress-bar.step2'\n | fromDictionary\n }}\n </strong>\n </li>\n\n <li id=\"step3\" [ngClass]=\"{ active: isTransmitted }\">\n <strong>\n {{\n 'foehn-status-progress-bar.step3'\n | fromDictionary\n }}\n </strong>\n </li>\n </ul>\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';\n\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 // eslint-disable-next-line rxjs-angular/prefer-async-pipe\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 {\n Component,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges\n} from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { combineLatest, merge, Observable, of, Subscription } from 'rxjs';\nimport { debounceTime, filter, map } from 'rxjs/operators';\n\nimport { BreadcrumbEventService } from '../foehn-breadcrumb/breadcrumb-event.service';\nimport { FoehnConfirmModalContent } from '../foehn-confirm-modal/foehn-confirm-modal-content';\nimport { FooterLink } from '../foehn-footer/footer-link.type';\nimport { FoehnNavigationService } from '../foehn-navigation/foehn-navigation.service';\nimport { FoehnPageModalService } from '../foehn-page/foehn-page-modal.service';\nimport { GesdemEventService } from '../gesdem/gesdem-event.service';\nimport { EtapeInfo } from '../sdk-appinfo/application-info';\nimport { ApplicationInfoService } from '../sdk-appinfo/application-info.service';\nimport { SdkDictionaryService } from '../sdk-dictionary/sdk-dictionary.service';\nimport { SessionInfo } from '../sdk-session-info/session-info.service';\nimport { SdkStatisticsService } from '../sdk-statistics/sdk-statistics.service';\nimport { SupportAlertService } from '../sdk-support-alert/support-alert.service';\nimport { supportedBrowsers } from '../supported-browser';\nimport { FoehnPageService } from './foehn-page.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 styleUrls: ['./foehn-page.component.css']\n})\nexport class FoehnPageComponent implements OnDestroy, OnChanges, OnInit {\n @Input()\n appTitle: string;\n\n @Input()\n footerLinks: FooterLink[];\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 statusProgressBarHidden: boolean;\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 loginMessagesHidden = false;\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 private statisticsService: SdkStatisticsService\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 // eslint-disable-next-line rxjs-angular/prefer-async-pipe\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 statisticsService.track();\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.sessionInfo.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.sessionInfo.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 id=\"foehn_header\" [title]=\"appTitle\"></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 [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\">&nbsp;</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 <foehn-status-progress-bar\n [hidden]=\"\n statusProgressBarHidden || !!(hasBlockingSupportAlert | async)\n \"\n ></foehn-status-progress-bar>\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 class=\"container\"\n *ngIf=\"\n displayLoginMessagesData.displayShouldLoginMessage &&\n !loginMessagesHidden\n \"\n >\n <div class=\"row\">\n <div\n class=\"alert alert-info col-md-8\"\n id=\"displayLoginMessage\"\n >\n <p\n [innerHTML]=\"\n getFullLoginMessage(\n displayLoginMessagesData.decisionElectroniqueAvailable\n ) | async\n \"\n ></p>\n\n <div class=\"d-md-flex\">\n <div class=\"ml-md-auto mr-md-2 mb-2 mt-2\">\n <a\n id=\"loginAndContinueButton\"\n class=\"btn btn-link\"\n [href]=\"getFullLoginUrl() | async\"\n >\n {{\n 'use-login.button.text'\n | fromDictionary\n }}\n <span class=\"ml-1\" aria-hidden=\"true\">\n <foehn-icon-lock\n [title]=\"\n 'use-login.button.text'\n | fromDictionary\n \"\n ></foehn-icon-lock>\n </span>\n </a>\n </div>\n <div class=\"ml-md-0 mr-md-2 mb-2 mt-2\">\n <button\n id=\"continueWithoutLoginButton\"\n class=\"btn btn-primary\"\n (click)=\"loginMessagesHidden = true\"\n >\n {{\n 'use-login.continue-without-login.button.text'\n | fromDictionary\n }}\n </button>\n </div>\n </div>\n </div>\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 { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { FoehnBreadcrumbComponent } from './foehn-breadcrumb.component';\n\n@NgModule({\n imports: [CommonModule, RouterModule],\n declarations: [FoehnBreadcrumbComponent],\n exports: [FoehnBreadcrumbComponent]\n})\nexport class FoehnBreadcrumbModule {}\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 { Pipe, PipeTransform } from '@angular/core';\n\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 { DatePipe, registerLocaleData } from '@angular/common';\nimport localeFr from '@angular/common/locales/fr';\nimport { Injectable } from '@angular/core';\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\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 // date is incomplete\n if (!DateHelper.isValidArray(value)) {\n return false;\n }\n\n // date cannot be parsed\n if (!this.toDayjsFromNumberArray(value)) {\n return false;\n }\n // date has not been shifted (i.e. 30.02.2021 -> 01.03.2021)\n const asString = `${value[0]}-${value[1]}-${value[2]}`;\n const asStringFromDayJS = this.toDayjsFromNumberArray(value).format(\n 'YYYY-M-D'\n );\n\n return asString === asStringFromDayJS;\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';\n\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';\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 { NgModule } from '@angular/core';\n\nimport { DisplayCurrencyPipe } from './currency.pipe';\nimport { DisplayDatePipe } from './date.pipe';\nimport { FormatIdePipe } from './formatIde.pipe';\n\n@NgModule({\n declarations: [DisplayDatePipe, FormatIdePipe, DisplayCurrencyPipe],\n exports: [DisplayDatePipe, FormatIdePipe, DisplayCurrencyPipe]\n})\nexport class PipeModule {}\n","import { NgModule } from '@angular/core';\n\nimport { SdkDictionaryPipe } from './sdk-dictionary.pipe';\n\n@NgModule({\n declarations: [SdkDictionaryPipe],\n exports: [SdkDictionaryPipe]\n})\nexport class SdkDictionaryModule {}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { PipeModule } from '../pipes/pipes.module';\nimport { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';\nimport { FoehnModalComponent } from './foehn-modal.component';\n\n@NgModule({\n imports: [CommonModule, A11yModule, PipeModule, SdkDictionaryModule],\n declarations: [FoehnModalComponent],\n exports: [FoehnModalComponent]\n})\nexport class FoehnModalModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { FoehnModalModule } from '../foehn-modal/foehn-modal.module';\nimport { FoehnConfirmModalComponent } from './foehn-confirm-modal.component';\n\n@NgModule({\n imports: [CommonModule, FoehnModalModule],\n declarations: [FoehnConfirmModalComponent],\n exports: [FoehnConfirmModalComponent]\n})\nexport class FoehnConfirmModalModule {}\n","import { Component } from '@angular/core';\nimport { faCalendarAlt } from '@fortawesome/free-regular-svg-icons';\n\nimport { AbstractIconComponent } from './abstract-icon-component';\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 { Component } from '@angular/core';\nimport { faCheck } from '@fortawesome/free-solid-svg-icons';\n\nimport { AbstractIconComponent } from './abstract-icon-component';\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 { faCheckSquare } from '@fortawesome/free-solid-svg-icons';\n\nimport { AbstractIconComponent } from './abstract-icon-component';\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 { faChevronDown } from '@fortawesome/free-solid-svg-icons';\n\nimport { AbstractIconComponent } from './abstract-icon-component';\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 { faChevronLeft } from '@fortawesome/free-solid-svg-icons';\n\nimport { AbstractIconComponent } from './abstract-icon-component';\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 { faChevronRight } from '@fortawesome/free-solid-svg-icons';\n\nimport { AbstractIconComponent } from './abstract-icon-component';\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 { faClock } from '@fortawesome/free-regular-svg-icons';\n\nimport { AbstractIconComponent } from './abstract-icon-component';\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 { faCommentDots } from '@fortawesome/free-solid-svg-icons';\n\nimport { AbstractIconComponent } from './abstract-icon-component';\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 { faEdit } from '@fortawesome/free-solid-svg-icons';\n\nimport { AbstractIconComponent } from './abstract-icon-component';\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 { faFilePdf } from '@fortawesome/free-regular-svg-icons';\n\nimport { AbstractIconComponent } from './abstract-icon-component';\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 { faMapMarkerAlt } from '@fortawesome/free-solid-svg-icons';\n\nimport { AbstractIconComponent } from './abstract-icon-component';\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 { faMinusCircle } from '@fortawesome/free-solid-svg-icons';\n\nimport { AbstractIconComponent } from './abstract-icon-component';\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 { faPlusCircle } from '@fortawesome/free-solid-svg-icons';\n\nimport { AbstractIconComponent } from './abstract-icon-component';\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 { faPlusSquare } from '@fortawesome/free-solid-svg-icons';\n\nimport { AbstractIconComponent } from './abstract-icon-component';\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 { faSearch } from '@fortawesome/free-solid-svg-icons';\n\nimport { AbstractIconComponent } from './abstract-icon-component';\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 { faTrashAlt } from '@fortawesome/free-solid-svg-icons';\n\nimport { AbstractIconComponent } from './abstract-icon-component';\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 { faUnlockAlt } from '@fortawesome/free-solid-svg-icons';\n\nimport { AbstractIconComponent } from './abstract-icon-component';\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 { NgModule } from '@angular/core';\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\n\nimport { FoehnIconCalendarComponent } from './foehn-icon-calendar.component';\nimport { FoehnIconCheckComponent } from './foehn-icon-check.component';\nimport { FoehnIconCheckSquareOComponent } from './foehn-icon-check-square-o.component';\nimport { FoehnIconChevronDownComponent } from './foehn-icon-chevron-down.component';\nimport { FoehnIconChevronLeftComponent } from './foehn-icon-chevron-left.component';\nimport { FoehnIconChevronRightComponent } from './foehn-icon-chevron-right.component';\nimport { FoehnIconChevronUpComponent } from './foehn-icon-chevron-up.component';\nimport { FoehnIconClockComponent } from './foehn-icon-clock.component';\nimport { FoehnIconCommentDotsComponent } from './foehn-icon-comment-dots.component';\nimport { FoehnIconEditComponent } from './foehn-icon-edit.component';\nimport { FoehnIconExternalLinkAltComponent } from './foehn-icon-external-link-alt.component';\nimport { FoehnIconFilePdfComponent } from './foehn-icon-file-pdf.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 { FoehnIconMinusCircleComponent } from './foehn-icon-minus-circle.component';\nimport { FoehnIconPlusCircleComponent } from './foehn-icon-plus-circle.component';\nimport { FoehnIconPlusSquareComponent } from './foehn-icon-plus-square.component';\nimport { FoehnIconSearchComponent } from './foehn-icon-search.component';\nimport { FoehnIconTimesComponent } from './foehn-icon-times.component';\nimport { FoehnIconTrashAltComponent } from './foehn-icon-trash-alt.component';\nimport { FoehnIconUnlockAltComponent } from './foehn-icon-unlock-alt.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 { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\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 { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { FoehnGrowlComponent } from './foehn-growl.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [FoehnGrowlComponent],\n exports: [FoehnGrowlComponent]\n})\nexport class FoehnGrowlModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\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 */\n// This component uses some ES7 features that are not polyfilled by Angular.\nimport 'core-js/modules/es.array.includes';\n\nimport { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport {\n Component,\n forwardRef,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n ViewChild\n} from '@angular/core';\nimport {\n BehaviorSubject,\n combineLatest,\n Observable,\n of,\n Subject,\n Subscription\n} from 'rxjs';\nimport { debounceTime, filter, map } from 'rxjs/operators';\n\nimport { FoehnCheckableGroupComponent } from '../foehn-checkables/foehn-checkable-group.component';\nimport { FoehnInputComponent } from '../foehn-input/foehn-input.component';\n\n// eslint-disable-next-line 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 jsdoc/require-jsdoc\nfunction normalizeSearch(value: string, caseSensitiveSearch: boolean): string {\n if (!value) {\n return value;\n }\n\n if (caseSensitiveSearch) {\n return normalizeUtf8(value);\n }\n return normalizeUtf8(value.toLocaleLowerCase());\n}\n\n// eslint-disable-next-line jsdoc/require-jsdoc\nfunction stripHtmlTags(value: string): string {\n return value.replace(/(<([^>]+)>)/gi, '');\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 @Input()\n itemHeightInSuggestionListInPx = 40;\n\n /**\n * The suggestion label used in the displayed list. Can be a string or a function\n * fallback on 'elementLabel'\n */\n @Input()\n elementSuggestionLabel: any;\n\n @Input()\n caseSensitiveSearch = false;\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\n displayedElements: any[];\n notificationMessageUpdated: boolean;\n\n disabledSubject: Observable<string>;\n\n private pendingDisabledSubject = new BehaviorSubject<boolean>(false);\n private elementsLoadedSubject = new BehaviorSubject<boolean>(false);\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 private elementsLoadedSubscription: Subscription;\n\n private readonly SUGGESTION_SELECTED_CLASS = 'suggestion-selected';\n private readonly EXCLUDE_HTML_TAGS_REGEX = '((?=[^>]*<)|(?![^<]*>))';\n private readonly SUGGESTION_CUSTOM_ATTRIBUTE_LABEL_VALUE = 'label-value';\n\n constructor(zone: NgZone) {\n super(zone);\n this.filterSubcription = this.filterSubject\n .pipe(debounceTime(200))\n // eslint-disable-next-line rxjs-angular/prefer-async-pipe\n .subscribe(this.filterElements.bind(this));\n\n // Need to subscribe on EventEmitter 'elementsLoaded' otherwise elements with HTML does not work...\n this.elementsLoadedSubscription = this.elementsLoaded\n .asObservable()\n .pipe(map(elems => !!elems))\n // eslint-disable-next-line rxjs-angular/prefer-async-pipe\n .subscribe(loaded => this.elementsLoadedSubject.next(loaded));\n\n this.disabledSubject = combineLatest([\n this.pendingDisabledSubject.asObservable(),\n this.elementsLoadedSubject.asObservable()\n ]).pipe(map(([disabled]) => (disabled ? 'disabled' : null)));\n\n this.VIEW_PORT_HEIGHT =\n this.itemHeightInSuggestionListInPx * this.NB_ITEMS_VISIBLE;\n }\n\n get disabled(): boolean {\n return this.pendingDisabledSubject.value;\n }\n\n @Input()\n set disabled(value: boolean) {\n this.pendingDisabledSubject.next(value);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n\n if (this.searchValueMinCharsCount === 0) {\n // eslint-disable-next-line rxjs-angular/prefer-async-pipe\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 // eslint-disable-next-line rxjs-angular/prefer-async-pipe\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 // eslint-disable-next-line rxjs-angular/prefer-async-pipe\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,rxjs-angular/prefer-async-pipe\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 if (this.elementsLoadedSubscription) {\n this.elementsLoadedSubscription.unsubscribe();\n }\n }\n\n onInputFocus(): void {\n this.filterSubject.next(null);\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 onInputClick(): void {\n if (this.hideSuggestions) {\n this.onInputFocus();\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(null);\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 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 getSuggestionLabel(element: any): string {\n if (!this.elementSuggestionLabel) {\n return this.getLabel(element);\n }\n if (typeof this.elementSuggestionLabel === 'string') {\n return this.getNestedProperty(element, this.elementSuggestionLabel);\n }\n return this.elementSuggestionLabel(element);\n }\n\n getLabelWithEmphasis(elem: any): string {\n let label = this.getSuggestionLabel(elem);\n\n if (!this.isEmpty(this.searchValue)) {\n const regexStr = `${normalizeSearch(\n this.searchValue,\n this.caseSensitiveSearch\n )}${this.EXCLUDE_HTML_TAGS_REGEX}`;\n const startIndex = normalizeSearch(\n label,\n this.caseSensitiveSearch\n ).search(regexStr);\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 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.itemHeightInSuggestionListInPx *\n filteredElements.length;\n if (!!this.virtualScrollViewport) {\n this.virtualScrollViewport.checkViewportSize();\n }\n } else {\n const MAX_HEIGHT =\n this.NB_ITEMS_VISIBLE * this.itemHeightInSuggestionListInPx;\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.getAttribute(\n this.SUGGESTION_CUSTOM_ATTRIBUTE_LABEL_VALUE\n );\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(\n this.searchValue,\n this.caseSensitiveSearch\n );\n let label = normalizeSearch(\n this.getLabel(element),\n this.caseSensitiveSearch\n );\n if (!label) {\n return false;\n }\n\n label = stripHtmlTags(label);\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]=\"disabledSubject | async\"\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 (click)=\"onInputClick()\"\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]=\"itemHeightInSuggestionListInPx\"\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 [style.height.px]=\"itemHeightInSuggestionListInPx\"\n [attr.label-value]=\"getLabel(element)\"\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 { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\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 { FoehnAutocompleteComponent } from './foehn-autocomplete.component';\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 { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { FoehnIconsModule } from '../foehn-icons/foehn-icons.module';\nimport { FoehnModalModule } from '../foehn-modal/foehn-modal.module';\nimport { FoehnHelpModalComponent } from './foehn-help-modal.component';\n\n@NgModule({\n imports: [CommonModule, FoehnModalModule, FoehnIconsModule],\n declarations: [FoehnHelpModalComponent],\n exports: [FoehnHelpModalComponent]\n})\nexport class FoehnHelpModalModule {}\n","import { Component, forwardRef, NgZone, OnInit } from '@angular/core';\n\nimport { FoehnInputComponent } from '../foehn-input/foehn-input.component';\nimport { FoehnCheckableGroupComponent } from './foehn-checkable-group.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 <div class=\"d-flex justify-content-between\">\n <legend\n *ngIf=\"!!label\"\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 <foehn-help-modal\n class=\"removePaddingButton\"\n *ngIf=\"!!helpModal\"\n [modalContent]=\"helpModal\"\n ></foehn-help-modal>\n </div>\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 [attr.autocomplete]=\"getAutoComplete()\"\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';\n\nimport { FoehnInputComponent } from '../foehn-input/foehn-input.component';\nimport { FoehnCheckableGroupComponent } from './foehn-checkable-group.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\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\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 <div class=\"d-flex justify-content-between\">\n <legend\n *ngIf=\"!!label\"\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 <foehn-help-modal\n class=\"removePaddingButton\"\n *ngIf=\"!!helpModal\"\n [modalContent]=\"helpModal\"\n ></foehn-help-modal>\n </div>\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 [attr.autocomplete]=\"getAutoComplete()\"\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 { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { FoehnAutocompleteModule } from '../foehn-autocomplete/foehn-autocomplete.module';\nimport { FoehnHelpModalModule } from '../foehn-help-modal/foehn-help-modal.module';\nimport { FoehnIconsModule } from '../foehn-icons/foehn-icons.module';\nimport { FoehnModalModule } from '../foehn-modal/foehn-modal.module';\nimport { FoehnValidationAlertsModule } from '../foehn-validation-alerts/foehn-validation-alerts.module';\nimport { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';\nimport { FoehnCheckboxComponent } from './foehn-checkbox.component';\nimport { FoehnRadioComponent } from './foehn-radio.component';\nimport { FoehnSelectComponent } from './foehn-select.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n FoehnIconsModule,\n HttpClientModule,\n FoehnValidationAlertsModule,\n FoehnAutocompleteModule,\n SdkDictionaryModule,\n FoehnHelpModalModule,\n FoehnModalModule\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 { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { FoehnCheckablesModule } from '../foehn-checkables/foehn-checkables.module';\nimport { FoehnIconsModule } from '../foehn-icons/foehn-icons.module';\nimport { FoehnHeaderComponent } from './foehn-header.component';\nimport { FoehnSkipLinkComponent } from './foehn-skip-link.component';\n\n@NgModule({\n imports: [CommonModule, FoehnIconsModule, FoehnCheckablesModule],\n declarations: [FoehnHeaderComponent, FoehnSkipLinkComponent],\n exports: [FoehnHeaderComponent, FoehnSkipLinkComponent]\n})\nexport class FoehnHeaderModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';\nimport { FoehnStatusProgressBarComponent } from './foehn-status-progress-bar.component';\n\n@NgModule({\n imports: [CommonModule, RouterModule, SdkDictionaryModule],\n declarations: [FoehnStatusProgressBarComponent],\n exports: [FoehnStatusProgressBarComponent]\n})\nexport class FoehnStatusProgressBarModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\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 { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\n\nimport { FoehnIconsModule } from '../foehn-icons/foehn-icons.module';\nimport { SupportAlertComponent } from './support-alert.component';\nimport { SupportAlertContainerComponent } from './support-alert-container.component';\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 { first, map } from 'rxjs/operators';\n\nimport { FoehnNavigationService } from '../foehn-navigation/foehn-navigation.service';\nimport { PlaceholderType } from '../sdk-dictionary/sdk-dictionary.service';\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 { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { FoehnBreadcrumbModule } from '../foehn-breadcrumb/foehn-breadcrumb.module';\nimport { FoehnConfirmModalModule } from '../foehn-confirm-modal/foehn-confirm-modal.module';\nimport { FoehnFooterModule } from '../foehn-footer/foehn-footer.module';\nimport { FoehnGrowlModule } from '../foehn-growl/foehn-growl.module';\nimport { FoehnHeaderModule } from '../foehn-header/foehn-header.module';\nimport { FoehnIconsModule } from '../foehn-icons/foehn-icons.module';\nimport { FoehnModalModule } from '../foehn-modal/foehn-modal.module';\nimport { FoehnStatusProgressBarModule } from '../foehn-status-progress-bar/foehn-status-progress-bar.module';\nimport { FoehnUserConnectedAsModule } from '../foehn-user-connected-as/foehn-user-connected-as.module';\nimport { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';\nimport { SupportAlertModule } from '../sdk-support-alert/support-alert.module';\nimport { FoehnPageComponent } from './foehn-page.component';\nimport { FoehnPageCounterComponent } from './foehn-page-counter.component';\nimport { FoehnPageModalComponent } from './foehn-page-modal.component';\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 FoehnStatusProgressBarModule\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","// eslint-disable max-classes-per-file\nexport class Street {\n estrid?: string;\n longName: string;\n}\n\nexport class Locality {\n postalLocalityHistoryId?: string;\n zipCode?: string; // zipCode is a string and not a Long because foreign zip code can be anything\n longName?: string;\n zipCodeId?: string;\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","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';\n\nimport { FoehnAbbrComponent } from './foehn-abbr.component';\n\n@NgModule({\n imports: [],\n declarations: [FoehnAbbrComponent],\n exports: [FoehnAbbrComponent]\n})\nexport class FoehnMiscModule {}\n","import dayjs from 'dayjs';\nimport localeData from 'dayjs/plugin/localeData';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { DayMonth } from './day-month.type';\nimport { MonthYear } from './month-year.type';\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 get displayedMonthYear(): Observable<MonthYear> {\n return this._displayedMonthYear.asObservable();\n }\n\n static getDateAsString(date: number[]): string {\n if (!!date && date.length === 3) {\n return `${date[0]}-${date[1]}-${date[2]}`;\n }\n return null;\n }\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 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 { Observable, Subject } from 'rxjs';\nimport { first } from 'rxjs/operators';\n\nimport { FocusedDay } from './focused-day.type';\n\nexport class DatePickerNavigationHelper {\n private _currentFocusedElement: FocusedDay;\n private _daysButtonsElemRef: QueryList<ElementRef>;\n private _hostId: string;\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 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 set hostId(id: string) {\n this._hostId = id;\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 private static focusPreviousMonthButton(hostId: string): void {\n const element = document.getElementById(`${hostId}previous-month`);\n if (element) {\n element.focus();\n }\n }\n\n private static focusNextMonthButton(hostId: string): void {\n const element = document.getElementById(`${hostId}next-month`);\n if (element) {\n element.focus();\n }\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 if (!!daysInWeek.length) {\n const indexSelected = this.getCurrentFocusedIndex(daysInWeek);\n const nextIndex = indexSelected + 1;\n if (nextIndex >= daysInWeek.length) {\n // Here we change week so we need to listen to new loaded day buttons to focus proper one\n this._daysButtonsElemRef.changes.pipe(first()).subscribe(() => {\n const newDaysInWeek = this.getEnabledDaysOfWeek();\n if (!newDaysInWeek.length) {\n DatePickerNavigationHelper.focusPreviousMonthButton(\n this._hostId\n );\n return;\n }\n newDaysInWeek[0].nativeElement.focus();\n });\n this._displayNextMonth.next();\n return;\n }\n daysInWeek[nextIndex].nativeElement.focus();\n }\n }\n\n focusPreviousDay(): void {\n const daysInWeek = this.getEnabledDaysOfWeek();\n if (!!daysInWeek.length) {\n const indexSelected = this.getCurrentFocusedIndex(daysInWeek);\n const previousIndex = indexSelected - 1;\n if (previousIndex < 0) {\n // Here we change week so we need to listen to new loaded day buttons to focus proper one\n this._daysButtonsElemRef.changes.pipe(first()).subscribe(() => {\n const newDaysInWeek = this.getEnabledDaysOfWeek();\n if (!newDaysInWeek.length) {\n DatePickerNavigationHelper.focusNextMonthButton(\n this._hostId\n );\n return;\n }\n newDaysInWeek[\n newDaysInWeek.length - 1\n ].nativeElement.focus();\n });\n this._displayPreviousMonth.next();\n return;\n }\n daysInWeek[previousIndex].nativeElement.focus();\n }\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 // Here we change week so we need to listen to new loaded day buttons to focus proper one\n this._daysButtonsElemRef.changes.pipe(first()).subscribe(() => {\n const enabledDaysInColumn = this.getEnabledDaysInColumn(\n this._currentFocusedElement.indexColumn\n );\n if (!enabledDaysInColumn.length) {\n DatePickerNavigationHelper.focusPreviousMonthButton(\n this._hostId\n );\n return;\n }\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 // Here we change week so we need to listen to new loaded day buttons to focus proper one\n this._daysButtonsElemRef.changes.pipe(first()).subscribe(() => {\n const enabledDaysInColumn = this.getEnabledDaysInColumn(\n this._currentFocusedElement.indexColumn\n );\n if (!enabledDaysInColumn.length) {\n DatePickerNavigationHelper.focusNextMonthButton(\n this._hostId\n );\n return;\n }\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 private getEnabledDaysInColumn(indexColumn: number): ElementRef[] {\n return this.getAllDaysInColumn(indexColumn).filter(\n value => value.nativeElement.getAttribute('disabled') === null\n );\n }\n\n private getCurrentFocusedIndex(daysInWeek: ElementRef[]): number {\n return daysInWeek.findIndex(\n item =>\n item.nativeElement.getAttribute('id') ===\n document.activeElement.getAttribute('id')\n );\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n ViewChildren\n} from '@angular/core';\nimport dayjs from 'dayjs';\nimport isToday from 'dayjs/plugin/isToday';\nimport { Observable, Subscription } from 'rxjs';\nimport { distinctUntilChanged, first } from 'rxjs/operators';\n\nimport { FormSelectOption } from '../foehn-checkables/form-select-option';\nimport { SdkDictionaryService } from '../sdk-dictionary/sdk-dictionary.service';\nimport { DatePickerHelper } from './date-picker.helper';\nimport { DatePickerNavigationHelper } from './date-picker-navigation.helper';\nimport { DayMonth } from './day-month.type';\nimport { MonthYear } from './month-year.type';\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 id: string;\n\n @Input()\n name: string;\n\n @Input()\n minYear = dayjs().year() - 100;\n\n @Input()\n maxYear = dayjs().year() + 10;\n\n @Input()\n minDate: number[];\n\n @Input()\n maxDate: number[];\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 @HostBinding('attr.id')\n hostId: string;\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 private changeDetector: ChangeDetectorRef\n ) {\n this.currentMonthYear = this.datePickerHelper.displayedMonthYear;\n // eslint-disable-next-line rxjs-angular/prefer-async-pipe\n this.displayNextMonthSubscription = this.datePickerNavigationHelper.displayNextMonth.subscribe(\n () => this.nextMonth()\n );\n // eslint-disable-next-line rxjs-angular/prefer-async-pipe\n this.displayPreviousMonthSubscription = this.datePickerNavigationHelper.displayPreviousMonth.subscribe(\n () => this.previousMonth()\n );\n }\n\n get isDatepickerVisible(): boolean {\n return this.isVisible;\n }\n\n @Input()\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 // eslint-disable-next-line @typescript-eslint/member-ordering\n get model(): number[] {\n return this.model_;\n }\n\n @Input()\n set model(value: number[]) {\n this.onModelChange(value);\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 ngOnInit(): void {\n // Ensures that the host has an Id for instrumentalization of the DOM by automated tests.\n this.hostId = this.buildId();\n this.datePickerNavigationHelper.hostId = this.hostId;\n\n this.currentLanguageCodeSubscription = this.dictionary\n .getCurrentLanguageCode()\n .pipe(distinctUntilChanged())\n // eslint-disable-next-line rxjs-angular/prefer-async-pipe\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 // eslint-disable-next-line rxjs-angular/prefer-async-pipe\n this.daysButtonsElemRef.changes.subscribe(() => {\n // For tests purpose, when setting component minDate, avoids having error:\n // \"NG0100: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked.\n // Previous value for 'tabindex': '-1'. Current value: '0'\"\n this.changeDetector.detectChanges();\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 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 !!suffix ? suffix : null;\n }\n\n return `${baseId}${suffix}`;\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 if (this.isDateInRange(date)) {\n const dateAsArray = this.getDateAsArray(date);\n\n this.userInput.next(dateAsArray);\n this.updateNgModel(dateAsArray);\n }\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 (!this.isDateInRange(day.date)) {\n return -1;\n }\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 }\n if (this.isToday(day.date)) {\n return 0;\n }\n const daysInWeek = [...this.daysButtonsElemRef.toArray()].filter(\n value => value.nativeElement.getAttribute('disabled') === null\n );\n if (\n !!daysInWeek.length &&\n day.isCurrentMonth &&\n day.dayOfMonth.toString() ===\n daysInWeek[0].nativeElement.getAttribute('day-number') &&\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 // eslint-disable-next-line rxjs-angular/prefer-async-pipe\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 getDayDisabledAttribute(dayOfWeek: DayMonth): string {\n if (!dayOfWeek.isCurrentMonth) {\n return 'disabled';\n }\n if (!this.isDateInRange(dayOfWeek.date)) {\n return 'disabled';\n }\n return null;\n }\n\n isPreviousMonthDisabled(monthYear: MonthYear): string {\n return monthYear.year === this.minYear.toString() &&\n monthYear.month === '0'\n ? 'disabled'\n : null;\n }\n\n isNextMonthDisabled(monthYear: MonthYear): string {\n return monthYear.year === this.maxYear.toString() &&\n monthYear.month === '11'\n ? 'disabled'\n : null;\n }\n\n private isDateInRange(date: dayjs.Dayjs): boolean {\n // Min year and date management\n const minDateAsString = DatePickerHelper.getDateAsString(this.minDate);\n if (minDateAsString) {\n const minDateAsDayjs = dayjs(minDateAsString);\n if (minDateAsDayjs.isValid() && date.isBefore(minDateAsDayjs)) {\n return false;\n }\n }\n if (date.year() < this.minYear) {\n return false;\n }\n // Max year and date management\n const maxDateAsString = DatePickerHelper.getDateAsString(this.maxDate);\n if (maxDateAsString) {\n const maxDateAsDayjs = dayjs(maxDateAsString);\n if (\n maxDateAsDayjs.isValid() &&\n date.isAfter(maxDateAsDayjs) &&\n date.year() <= maxDateAsDayjs.year()\n ) {\n return false;\n }\n }\n return date.year() <= this.maxYear;\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 if (!!this.minDate && !!this.minDate.length) {\n this.minYear = this.minDate[0];\n }\n if (!!this.maxDate && !!this.maxDate.length) {\n this.maxYear = this.maxDate[0];\n }\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]=\"buildId('datepicker_wrapper')\"\n class=\"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]=\"buildId('closeButton')\"\n >\n <span aria-hidden=\"true\">&times;</span>\n </button>\n <div\n [id]=\"buildId('datepicker_header')\"\n class=\"d-flex justify-content-between datepicker_header\"\n >\n <ng-container *ngIf=\"currentMonthYear | async as monthYear\">\n <button\n [id]=\"buildId('previous-month')\"\n class=\"btn btn-link datepicker-nav-month-btn\"\n (click)=\"previousMonth()\"\n [attr.disabled]=\"isPreviousMonthDisabled(monthYear)\"\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 <span\n [id]=\"buildId('month-year-label')\"\n aria-live=\"polite\"\n class=\"sr-only\"\n >\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]=\"buildId('month-input')\"\n class=\"align-self-center month-input\"\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]=\"true\"\n (userInput)=\"userInputMonth($event)\"\n ></foehn-select>\n <foehn-select\n [id]=\"buildId('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]=\"true\"\n (userInput)=\"userInputYear($event)\"\n ></foehn-select>\n <button\n [id]=\"buildId('next-month')\"\n class=\"btn btn-link datepicker-nav-month-btn\"\n (click)=\"nextMonth()\"\n [attr.disabled]=\"isNextMonthDisabled(monthYear)\"\n >\n <foehn-icon-chevron-right\n [title]=\"\n 'foehn-date-picker.next-month-button.title'\n | fromDictionary\n \"\n ></foehn-icon-chevron-right>\n </button>\n </ng-container>\n </div>\n <table\n [id]=\"buildId('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 [hidden]=\"!dayOfWeek.isCurrentMonth\"\n [id]=\"buildId('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 [attr.disabled]=\"getDayDisabledAttribute(dayOfWeek)\"\n (click)=\"handleUserInput(dayOfWeek.date)\"\n >\n {{ dayOfWeek.dayOfMonth }}\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { FoehnCheckablesModule } from '../foehn-checkables/foehn-checkables.module';\nimport { FoehnIconsModule } from '../foehn-icons/foehn-icons.module';\nimport { FoehnMiscModule } from '../foehn-misc/foehn-misc.module';\nimport { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';\nimport { FoehnDatePickerComponent } from './foehn-date-picker.component';\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 {\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnInit,\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 implements OnInit {\n @ViewChild('datepickerTrigger', { static: true })\n datepickerTrigger: ElementRef;\n\n @Input()\n id: string;\n\n @Input()\n name: string;\n\n @Input()\n minYear = dayjs().year() - 100;\n\n @Input()\n maxYear = dayjs().year() + 10;\n\n @Input()\n minDate: number[];\n\n @Input()\n maxDate: number[];\n\n @Input()\n displaySelectedDate = true;\n\n @Input()\n selectedDateSrOnlyLabelKey =\n 'foehn-date-picker-button.screen-reader.selected-date';\n\n @Output()\n modelChange = new EventEmitter<number[]>();\n\n @Output()\n userInput = new EventEmitter<number[]>();\n\n @HostBinding('attr.id')\n hostId: string;\n\n model_: number[];\n\n private isVisible = false;\n\n get isDatepickerVisible(): boolean {\n return this.isVisible;\n }\n\n get model(): number[] {\n return this.model_;\n }\n\n @Input()\n set model(value: number[]) {\n this.onModelChange(value);\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\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 !!suffix ? suffix : null;\n }\n\n return `${baseId}${suffix}`;\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\n [id]=\"buildId('datepickerbutton_wrapper')\"\n class=\"datepickerbutton_wrapper\"\n tabindex=\"-1\"\n>\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]=\"buildId('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 selectedDateSrOnlyLabelKey\n | fromDictionary: { selectedDate: model | displayDate }\n }}\n </span>\n <span aria-hidden=\"true\">{{ model | displayDate }}</span>\n </span>\n </button>\n\n <foehn-date-picker\n [id]=\"buildId()\"\n [(model)]=\"model\"\n [isDatepickerVisible]=\"isDatepickerVisible\"\n (isDatepickerVisibleChange)=\"updateVisibilityStatus($event)\"\n (userInput)=\"handleUserInput($event)\"\n [datepickerTriggerHtmlElement]=\"datepickerTrigger\"\n [minYear]=\"minYear\"\n [maxYear]=\"maxYear\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n ></foehn-date-picker>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { FoehnDatePickerModule } from '../foehn-date-picker/foehn-date-picker.module';\nimport { FoehnIconsModule } from '../foehn-icons/foehn-icons.module';\nimport { PipeModule } from '../pipes/pipes.module';\nimport { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';\nimport { FoehnDatePickerButtonComponent } from './foehn-date-picker-button.component';\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 { Directive, HostListener, NgZone, OnInit } from '@angular/core';\nimport { first } from 'rxjs/operators';\n\n// eslint-disable-next-line import/no-cycle\nimport { FoehnInputNumberComponent } from '../foehn-input/foehn-input-number.component';\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 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 jsdoc/require-jsdoc\nfunction formatWithThousandSeparators(value: string): string {\n return value.replace(CURRENCY_REGEXP, THOUSANDS_SEPARATOR);\n}\n\n// eslint-disable-next-line jsdoc/require-jsdoc\nexport function formatNumberAsGiven(value: string): 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 (!!dec?.length && dec !== undefined) {\n return formatWithThousandSeparators(intg) + DECIMALS_SEPARATOR + dec;\n } else {\n return formatWithThousandSeparators(intg);\n }\n}\n\n// eslint-disable-next-line jsdoc/require-jsdoc\nexport function formatDecimalCurrency(\n value: string,\n maxDecimalCount: number,\n maxLength: number,\n allowFreeInput: boolean\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 (allowFreeInput) {\n return (\n formatWithThousandSeparators(intg) +\n DECIMALS_SEPARATOR +\n (dec || '0').padEnd(maxDecimalCount, '0')\n );\n }\n\n if (maxDecimalCount === 0 || !maxDecimalCount) {\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 jsdoc/require-jsdoc\nexport function 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\n let formattedValue: string = null;\n if (this.host.allowFreeInput && !this.host.allowDecimal) {\n formattedValue = formatNumberAsGiven(value);\n } else {\n formattedValue = this.host.allowDecimal\n ? formatDecimalCurrency(\n value,\n this.host.maxDecimalCount,\n this.host.maxlength,\n this.host.allowFreeInput\n )\n : formatNonDecimalCurrency(value);\n }\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 if (this.host.model?.toString()?.trim() === '-') {\n return false;\n }\n return (\n !this.host.model ||\n this.host.model.toString() !== newValueWithoutFormatting\n );\n }\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 {\n Component,\n forwardRef,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges\n} from '@angular/core';\n\n// eslint-disable-next-line import/no-cycle\nimport {\n formatDecimalCurrency,\n formatNonDecimalCurrency,\n formatNumberAsGiven\n} from '../directives/currency-formatter.directive';\nimport {\n CurrencyHelper,\n DECIMALS_SEPARATOR\n} from '../sdk-currency/currency.helper';\nimport { SdkDictionaryService } from '../sdk-dictionary/sdk-dictionary.service';\nimport { FoehnInputComponent } from './foehn-input.component';\nimport { FoehnInputStringComponent } from './foehn-input-string.component';\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';\n\nconst isDefined = (value: number): boolean => value === 0 || !!value;\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, OnChanges {\n @Input()\n hideStandardHelpText = false;\n\n @Input()\n allowDecimal: boolean;\n\n @Input()\n allowNegative: boolean;\n\n @Input()\n maxDecimalCount = 2;\n\n @Input()\n allowFreeInput = false;\n\n private initialHelpText: string;\n\n constructor(\n private currencyHelper: CurrencyHelper,\n private dictionaryService: SdkDictionaryService\n ) {\n super();\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 @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 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 this.maxlength = !!this.maxlength ? this.maxlength : 9;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const hasChanges = Object.keys(changes)\n .filter(k => k !== 'model')\n .map(k => changes[k])\n .find(change => change.currentValue !== change.previousValue);\n\n const helpTextHasChanged =\n changes.helpText?.currentValue !== changes.helpText?.previousValue;\n\n if (helpTextHasChanged) {\n this.initialHelpText = changes.helpText.currentValue;\n }\n\n if (hasChanges) {\n this.manageHelpText();\n }\n }\n\n getMaxLength(): number {\n if (this.allowFreeInput) {\n return null;\n }\n return super.getMaxLength();\n }\n\n updateNgModel(value: string): void {\n if (this.isEmpty(value)) {\n this.setToEmpty(value);\n return;\n }\n const isDeleting = value.toString()?.length < this.model?.length;\n\n let cleanNumber;\n if (!this.allowFreeInput) {\n cleanNumber = this.getCleanNumber(value.toString());\n const isModelValid = this.isModelValid(cleanNumber);\n if (!isModelValid && !isDeleting) {\n cleanNumber = this.model;\n }\n } else {\n const noCommaString = this.replaceCommaWithDot(value);\n cleanNumber =\n noCommaString && typeof noCommaString === 'string'\n ? noCommaString.replace(\n CLEAN_NEGATIVE_AND_DECIMAL_NUMBERS_PATTERN,\n ''\n )\n : noCommaString;\n // check that it is a number in any of its possible form\n // to avoid -3.14-23--534\n if (\n !NEGATIVE_AND_DECIMAL_NUMBERS_PATTERN.test(cleanNumber) &&\n !isDeleting\n ) {\n cleanNumber = this.model;\n }\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 isStringAValidNumber(value: string): boolean {\n return this.getValidationRegex().test(value);\n }\n\n private isModelValid(value: string): boolean {\n return this.isStringAValidNumber(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 private manageHelpText(): void {\n if (!!this.hideStandardHelpText) {\n this.helpText = this.initialHelpText;\n return;\n }\n\n if (!this.allowFreeInput) {\n if (isDefined(this.min) && isDefined(this.max)) {\n if (!!this.initialHelpText?.length) {\n this.helpText = `${this.initialHelpText}<br/>`;\n } else {\n this.helpText = '';\n }\n this.helpText += this.dictionaryService.getKeySync(\n 'foehn-input-number.standard-help-text.label',\n {\n minValue: formatNumberAsGiven(this.min.toString()),\n maxValue: formatNumberAsGiven(this.max.toString())\n }\n );\n }\n return;\n }\n\n if (!!this.initialHelpText?.length) {\n this.helpText = `${this.initialHelpText}<br/>`;\n } else {\n this.helpText = '';\n }\n\n const maxIntegerCount = this.allowDecimal\n ? this.maxlength - this.maxDecimalCount - 1\n : this.maxlength;\n\n let maxAsString;\n if (!!this.max) {\n maxAsString = this.max;\n } else {\n maxAsString = '9'.repeat(maxIntegerCount);\n if (this.allowDecimal) {\n maxAsString += `.${'9'.repeat(this.maxDecimalCount)}`;\n }\n }\n\n let minAsString;\n if (this.min) {\n minAsString = this.min;\n } else {\n minAsString = this.allowNegative\n ? `-${'9'.repeat(maxIntegerCount - 1)}`\n : '0';\n if (this.allowDecimal) {\n minAsString += this.allowNegative\n ? `.${'9'.repeat(this.maxDecimalCount || 0)}`\n : `.${'0'.repeat(this.maxDecimalCount || 0)}`;\n }\n }\n\n this.helpText += this.dictionaryService.getKeySync(\n 'foehn-input-number.standard-help-text.label',\n {\n minValue: this.formatValue(minAsString),\n maxValue: this.formatValue(maxAsString)\n }\n );\n }\n\n private formatValue(value: string | number): string {\n if (this.allowDecimal) {\n return formatDecimalCurrency(\n value?.toString(),\n this.maxDecimalCount,\n this.maxlength,\n this.allowFreeInput\n );\n }\n return formatNonDecimalCurrency(value?.toString());\n }\n}\n","import { Component, forwardRef, Input } from '@angular/core';\nimport { Observable, of } from 'rxjs';\n\nimport { FoehnInputComponent } from '../foehn-input/foehn-input.component';\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 @Input()\n minDate: number[];\n\n @Input()\n maxDate: number[];\n\n @Input()\n hideDatePickerButton = false;\n\n day: string;\n month: string;\n year: string;\n datePickerModel: number[];\n\n updateDate(): void {\n const validValue = this.getValidValue();\n if (typeof validValue !== 'undefined') {\n this.updateNgModel(validValue);\n }\n }\n\n updateDateFromDatePicker(date: number[]): void {\n if (typeof date !== 'undefined') {\n this.updateNgModel(date);\n }\n }\n\n handleUserInput(): void {\n const validValue = this.getValidValue();\n if (typeof validValue !== 'undefined') {\n this.handleChange(validValue);\n }\n }\n\n handleDatePickerUserInput(date: number[]): void {\n if (typeof date !== 'undefined') {\n this.markAsDirty();\n this.handleChange(date);\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 this.datePickerModel = value;\n } else if (!value) {\n this.year = null;\n this.month = null;\n this.day = null;\n this.datePickerModel = 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 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 shouldDisplayDatePicker(): boolean {\n return (\n !this.hideDatePickerButton &&\n !this.disabled &&\n !this.disableYear &&\n !this.disableMonth &&\n !this.disableDay\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 [hideStandardHelpText]=\"true\"\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 [hideStandardHelpText]=\"true\"\n ></foehn-input-number>\n </div>\n <div\n class=\"vd-form-flex__item vd-form-flex__item--4-char-width\"\n [class.mr-0]=\"shouldDisplayDatePicker()\"\n >\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 [hideStandardHelpText]=\"true\"\n ></foehn-input-number>\n </div>\n <foehn-date-picker-button\n *ngIf=\"shouldDisplayDatePicker()\"\n [id]=\"buildId() + '_datePickerButton'\"\n [(model)]=\"datePickerModel\"\n (modelChange)=\"updateDateFromDatePicker($event)\"\n (userInput)=\"handleDatePickerUserInput($event)\"\n [displaySelectedDate]=\"false\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n class=\"align-self-center\"\n ></foehn-date-picker-button>\n </div>\n </fieldset>\n</div>\n","import { Component, forwardRef } from '@angular/core';\n\nimport { FoehnInputComponent } from '../foehn-input/foehn-input.component';\nimport { FoehnInputStringComponent } from '../foehn-input/foehn-input-string.component';\n\n/**\n * @param num as string\n * @returns string\n */\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 [hideStandardHelpText]=\"true\"\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 [hideStandardHelpText]=\"true\"\n ></foehn-input-number>\n </div>\n </div>\n </fieldset>\n</div>\n","import { Component, forwardRef, Input, OnDestroy } from '@angular/core';\nimport { combineLatest, Subject, Subscription } from 'rxjs';\nimport { debounceTime, filter } from 'rxjs/operators';\n\nimport { FoehnInputComponent } from '../foehn-input/foehn-input.component';\n\n/**\n * @param num as string\n * @returns string\n */\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-date-time',\n templateUrl: './foehn-input-date-time.component.html',\n providers: [\n {\n provide: FoehnInputComponent,\n useExisting: forwardRef(() => FoehnDateTimeComponent),\n multi: true\n }\n ]\n})\nexport class FoehnDateTimeComponent\n extends FoehnInputComponent<number[]>\n implements OnDestroy {\n @Input()\n disableDay = false;\n\n @Input()\n disableMonth = false;\n\n @Input()\n disableYear = false;\n\n @Input()\n minDate: number[];\n\n @Input()\n maxDate: number[];\n\n @Input()\n hideDatePickerButton = false;\n\n date: number[] = null;\n time: string = null;\n\n private userInputTimeSubject = new Subject<string>();\n private timeModelChangeSubject = new Subject<string>();\n\n private readonly userInputTimeSubscription: Subscription;\n\n constructor() {\n super();\n\n // We need to wait for foehn-input-time modelChange to be fired as it is done on 'focusOut'\n // otherwise userInput value and time model are not synchronized\n this.userInputTimeSubscription = combineLatest([\n this.userInputTimeSubject.asObservable(),\n this.timeModelChangeSubject.asObservable()\n ])\n .pipe(\n debounceTime(0),\n filter(\n ([userInputTime, timeModel]) => userInputTime === timeModel\n )\n )\n // eslint-disable-next-line rxjs-angular/prefer-async-pipe\n .subscribe(() => {\n this.handleUserInput();\n });\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n if (!!this.userInputTimeSubscription) {\n this.userInputTimeSubscription.unsubscribe();\n }\n }\n\n updateDateTime(): 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 timeModelChange(value: string): void {\n this.updateDateTime();\n this.timeModelChangeSubject.next(value);\n }\n\n handleUserInputTime(value: string): void {\n this.userInputTimeSubject.next(value);\n }\n\n handleUserInputDate(): void {\n this.updateDateTime();\n this.handleUserInput();\n }\n\n onModelChange(value: number[]): void {\n if (value && value.length >= 5) {\n this.date = value.slice(0, 3);\n this.time = `${leftPad(this.toString(value[3]))}:${leftPad(\n this.toString(value[4])\n )}`;\n } else if (!value) {\n this.date = null;\n this.time = null;\n }\n }\n\n getValidValue(): number[] | null | undefined {\n if (this.isEmpty(this.date) && this.isEmpty(this.time)) {\n if (this.model_ !== undefined) {\n return null;\n }\n\n return undefined;\n }\n const result: number[] = [null, null, null, null, null];\n if (!!this.date) {\n result[0] = this.date[0];\n result[1] = this.date[1];\n result[2] = this.date[2];\n }\n const timeParts = !!this.time ? this.time.split(':') : null;\n if (timeParts) {\n result[3] = this.toNumber(timeParts[0]);\n result[4] = this.toNumber(timeParts[1]);\n }\n return result;\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=\"row\">\n <div\n [attr.id]=\"buildId() + 'MainColumn'\"\n [ngClass]=\"\n hideDatePickerButton\n ? 'col-lg-7 col-md-9'\n : 'col-lg-8 col-md-10'\n \"\n >\n <div class=\"row\">\n <div\n [attr.id]=\"buildId() + 'DateColumn'\"\n class=\"col-sm-7 pr-sm-0\"\n >\n <foehn-input-date\n [id]=\"buildId() + '_date'\"\n [name]=\"name + '_date'\"\n [(model)]=\"date\"\n [disableDay]=\"disableDay\"\n [disableMonth]=\"disableMonth\"\n [disableYear]=\"disableYear\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [hideDatePickerButton]=\"hideDatePickerButton\"\n (userInput)=\"handleUserInputDate()\"\n [disabled]=\"disabled\"\n [hideNotRequiredExtraLabel]=\"true\"\n ></foehn-input-date>\n </div>\n <div\n [attr.id]=\"buildId() + 'TimeColumn'\"\n class=\"col-sm-5 pl-sm-0\"\n >\n <foehn-input-time\n [id]=\"buildId() + '_time'\"\n [name]=\"name + '_date'\"\n [(model)]=\"time\"\n (modelChange)=\"timeModelChange($event)\"\n (userInput)=\"handleUserInputTime($event)\"\n [disabled]=\"disabled\"\n [hideNotRequiredExtraLabel]=\"true\"\n ></foehn-input-time>\n </div>\n </div>\n </div>\n </div>\n </fieldset>\n</div>\n","import { Component, forwardRef, NgZone, OnInit } from '@angular/core';\nimport { first } from 'rxjs/operators';\n\nimport { SdkDictionaryService } from '../sdk-dictionary/sdk-dictionary.service';\nimport { FoehnInputComponent } from './foehn-input.component';\nimport { FoehnInputStringComponent } from './foehn-input-string.component';\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(\n private ngZone: NgZone,\n private dictionaryService: SdkDictionaryService\n ) {\n super();\n this.helpModal = {\n title: this.dictionaryService.getKeySync(\n 'foehn-input-email.modal.title'\n ),\n body: this.dictionaryService.getKeySync(\n 'foehn-input-email.modal.content'\n ),\n modalSize: 'modal-xs'\n };\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 // eslint-disable-next-line rxjs-angular/prefer-async-pipe\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 { first } from 'rxjs/operators';\n\nimport { FoehnInputComponent } from './foehn-input.component';\nimport { FoehnInputStringComponent } from './foehn-input-string.component';\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 // eslint-disable-next-line rxjs-angular/prefer-async-pipe\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 { first } from 'rxjs/operators';\n\nimport { FoehnInputComponent } from './foehn-input.component';\nimport { FoehnInputStringComponent } from './foehn-input-string.component';\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 // eslint-disable-next-line rxjs-angular/prefer-async-pipe\n this.ngZone.onMicrotaskEmpty.pipe(first()).subscribe(() => {\n this.updateNgModel(null);\n });\n }\n }\n}\n","import { Component, forwardRef, Input, OnInit } from '@angular/core';\n\nimport { FoehnInputComponent } from './foehn-input.component';\nimport { FoehnInputStringComponent } from './foehn-input-string.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 this.helpText = [this.helpText, this.getHelpText()]\n .filter(val => val)\n .join('<br/>');\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 { Component, forwardRef, Input, NgZone, OnInit } from '@angular/core';\nimport { first } from 'rxjs/operators';\n\nimport { SdkDictionaryService } from '../sdk-dictionary/sdk-dictionary.service';\nimport { FoehnInputComponent } from './foehn-input.component';\nimport { FoehnInputStringComponent } from './foehn-input-string.component';\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(\n private ngZone: NgZone,\n private dictionary: SdkDictionaryService\n ) {\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 if (this.displayCharCount) {\n this.checkCharCountExceeded();\n this.countCharLeft();\n }\n return;\n }\n\n // eslint-disable-next-line rxjs-angular/prefer-async-pipe\n this.ngZone.onMicrotaskEmpty.pipe(first()).subscribe(() => {\n this.updateNgModel(null);\n if (this.displayCharCount) {\n this.checkCharCountExceeded();\n this.countCharLeft();\n }\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 this.charCountLabel = this.getCharCountLabel(\n this.charCountLeft\n );\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 = this.dictionary.getKeySync(\n 'foehn-textarea.chars-remaining.zero'\n );\n } else {\n this.ariaLiveStatus = 'assertive';\n this.charCountLabel = this.dictionary.getKeySync(\n 'foehn-textarea.chars-remaining.exceeded',\n { charCountLeft: (this.charCountLeft * -1).toString() }\n );\n }\n } else {\n this.charCountLeft = this.max;\n this.charCountLabel = this.getCharCountLabel(this.charCountLeft);\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 return;\n }\n this.isCharCountExceeded = false;\n }\n\n private getCharCountLabel(nbRemaining: number): string {\n return this.charCountLeft === 1\n ? this.dictionary.getKeySync(\n 'foehn-textarea.chars-remaining.singular',\n { charCountLeft: nbRemaining.toString() }\n )\n : this.dictionary.getKeySync(\n 'foehn-textarea.chars-remaining.plural',\n { charCountLeft: nbRemaining.toString() }\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 { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { FoehnDatePickerButtonModule } from '../foehn-date-picker-button/foehn-date-picker-button.module';\nimport { FoehnHelpModalModule } from '../foehn-help-modal/foehn-help-modal.module';\nimport { FoehnIconsModule } from '../foehn-icons/foehn-icons.module';\nimport { FoehnDateComponent } from '../foehn-input-date/foehn-input-date.component';\nimport { FoehnDateTimeComponent } from '../foehn-input-date-time/foehn-input-date-time.component';\nimport { FoehnTimeComponent } from '../foehn-input-time/foehn-input-time.component';\nimport { FoehnValidationAlertsModule } from '../foehn-validation-alerts/foehn-validation-alerts.module';\nimport { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';\nimport { FoehnInputEmailComponent } from './foehn-input-email.component';\nimport { FoehnInputHiddenComponent } from './foehn-input-hidden.component';\nimport { FoehnInputNumberComponent } from './foehn-input-number.component';\nimport { FoehnInputPasswordComponent } from './foehn-input-password.component';\nimport { FoehnInputPhoneComponent } from './foehn-input-phone.component';\nimport { FoehnInputTextComponent } from './foehn-input-text.component';\nimport { FoehnInputTextareaComponent } from './foehn-input-textarea.component';\n\n@NgModule({\n imports: [\n FoehnIconsModule,\n CommonModule,\n FormsModule,\n FoehnValidationAlertsModule,\n SdkDictionaryModule,\n FoehnDatePickerButtonModule,\n FoehnHelpModalModule\n ],\n declarations: [\n FoehnInputTextComponent,\n FoehnInputNumberComponent,\n FoehnInputEmailComponent,\n FoehnInputHiddenComponent,\n FoehnInputPasswordComponent,\n FoehnInputTextareaComponent,\n FoehnDateComponent,\n FoehnTimeComponent,\n FoehnInputPhoneComponent,\n FoehnDateTimeComponent\n ],\n exports: [\n FoehnInputTextComponent,\n FoehnInputNumberComponent,\n FoehnInputEmailComponent,\n FoehnInputHiddenComponent,\n FoehnInputPasswordComponent,\n FoehnInputTextareaComponent,\n FoehnDateComponent,\n FoehnTimeComponent,\n FoehnInputPhoneComponent,\n FoehnDateTimeComponent\n ]\n})\nexport class FoehnInputModule {}\n","import { Component, forwardRef, Input } from '@angular/core';\n\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';\n\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 { HttpClient } from '@angular/common/http';\nimport {\n Component,\n forwardRef,\n Input,\n NgZone,\n OnInit,\n ViewChild\n} from '@angular/core';\nimport { BehaviorSubject, combineLatest, Observable, of } from 'rxjs';\nimport {\n debounceTime,\n distinctUntilChanged,\n first,\n map,\n shareReplay,\n switchMap\n} from 'rxjs/operators';\n\nimport { FoehnInputComponent } from '../foehn-input/foehn-input.component';\nimport { FoehnInputTextComponent } from '../foehn-input/foehn-input-text.component';\nimport { SdkDictionaryService } from '../sdk-dictionary/sdk-dictionary.service';\nimport { Address, Country, Locality, Street } from './address.type';\nimport { FoehnInputForeignLocalityComponent } from './foehn-input-foreign-locality.component';\nimport { FoehnInputForeignStreetComponent } from './foehn-input-foreign-street.component';\n\n// eslint-disable max-classes-per-file\nexport const SWISS_ISO_ID = 'CH';\n\nexport class StreetNumber {\n name: string;\n}\n\nconst isDefined = (value: boolean): boolean =>\n value === true || value === false;\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: boolean;\n\n @Input()\n streetNumberRequired = false;\n\n @Input()\n foreignZipCodeRequired = true;\n\n @Input()\n foreignLocalityRequired = true;\n\n @Input()\n foreignStreetRequired: boolean;\n\n @Input()\n foreignStreetNumberRequired = false;\n\n @Input()\n postOfficeBoxTextRequired: boolean;\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 streetCustomErrors: { [key: string]: string } = {};\n\n private iso2IdSubject = new BehaviorSubject<string>(null);\n private zipCodeIdSubject = new BehaviorSubject<string>(null);\n private estrIdSubject = new BehaviorSubject<string>(null);\n\n constructor(\n private httpClient: HttpClient,\n private ngZone: NgZone,\n private dictionaryService: SdkDictionaryService\n ) {\n super();\n }\n\n identity = <T>(n: T): T => n;\n countryIdentity = (country: Country): string => country.iso2Id;\n localityIdentity = (loc: Locality): string => loc.postalLocalityHistoryId;\n streetIdentity = (street: Street): string => street.estrid;\n streetGenerator = (longName: string): Street => ({\n estrid: null,\n longName\n });\n\n ngOnInit(): void {\n super.ngOnInit();\n\n if (!this.showPostOfficeBoxText) {\n this.streetCustomErrors.AtLeastOneNotNull = this.dictionaryService.getKeySync(\n 'errors.NotNull'\n );\n }\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 // eslint-disable-next-line rxjs-angular/prefer-async-pipe\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 userInputCountry(): void {\n this.zipCodeIdSubject.next(null);\n this.estrIdSubject.next(null);\n\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 this.updateAddress();\n this.handleUserInput();\n }\n\n userInputLocality(locality: unknown): void {\n if (!locality) {\n this.zipCodeIdSubject.next(null);\n }\n // Always reset suggestion list of houseNumber when locality changes\n this.estrIdSubject.next(null);\n\n this.street = null;\n this.houseNumber = null;\n\n this.updateAddress();\n this.handleUserInput();\n }\n\n userInputStreet(street: unknown): void {\n if (!street) {\n this.estrIdSubject.next(null);\n }\n this.houseNumber = null;\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 isStreetRequired(): boolean {\n if (isDefined(this.streetRequired)) {\n // respect overriden value\n return this.streetRequired;\n }\n\n if (!this.showPostOfficeBoxText) {\n return true;\n }\n\n return !this.postOfficeBoxText || !!this.street;\n }\n\n isForeignStreetRequired(): boolean {\n if (isDefined(this.foreignStreetRequired)) {\n // respect overriden value\n return this.foreignStreetRequired;\n }\n\n if (!this.showPostOfficeBoxText) {\n return true;\n }\n\n return !this.postOfficeBoxText || !!this.street;\n }\n\n isPostOfficeBoxTextRequired(): boolean {\n if (isDefined(this.postOfficeBoxTextRequired)) {\n // respect overriden value\n return this.postOfficeBoxTextRequired;\n }\n return !this.street || !!this.postOfficeBoxText;\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: string): 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: string): 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 ): string {\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 ): string {\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)=\"userInputCountry()\"\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)=\"userInputLocality($event)\"\n [model]=\"locality\"\n [name]=\"name + '.locality'\"\n [allowCustomValue]=\"disabled\"\n [required]=\"swissNpaLocalityRequired\"\n [disabled]=\"!country || 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]=\"isStreetRequired()\"\n [helpText]=\"\n 'foehn-input-address.street.help-text' | fromDictionary\n \"\n [customErrors]=\"streetCustomErrors\"\n (userInput)=\"userInputStreet($event)\"\n [disabled]=\"!country || 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 (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n [required]=\"streetNumberRequired\"\n [disabled]=\"!country || 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]=\"isForeignStreetRequired()\"\n [helpText]=\"\n 'foehn-input-address.street.help-text' | fromDictionary\n \"\n [customErrors]=\"streetCustomErrors\"\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]=\"isPostOfficeBoxTextRequired()\"\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 { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { FoehnAutocompleteModule } from '../foehn-autocomplete/foehn-autocomplete.module';\nimport { FoehnInputModule } from '../foehn-input/foehn-input.module';\nimport { FoehnValidationAlertsModule } from '../foehn-validation-alerts/foehn-validation-alerts.module';\nimport { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';\nimport { FoehnDisplayAddressComponent } from './foehn-display-address.component';\nimport { FoehnInputAddressComponent } from './foehn-input-address.component';\nimport { FoehnInputForeignLocalityComponent } from './foehn-input-foreign-locality.component';\nimport { FoehnInputForeignStreetComponent } from './foehn-input-foreign-street.component';\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","export class FormSelectOption {\n label: string;\n value: string;\n disabled?: boolean;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n Component,\n ElementRef,\n forwardRef,\n HostBinding,\n Input,\n NgZone,\n OnInit,\n QueryList,\n ViewChild,\n ViewChildren\n} from '@angular/core';\nimport { first } from 'rxjs/operators';\n\nimport { FoehnAutocompleteComponent } from '../foehn-autocomplete/foehn-autocomplete.component';\nimport { FoehnInputComponent } from '../foehn-input/foehn-input.component';\nimport { ObjectHelper } from '../helpers/object.helper';\nimport { SdkDictionaryService } from '../sdk-dictionary/sdk-dictionary.service';\n\n@Component({\n selector: 'foehn-multiselect-autocomplete',\n templateUrl: './foehn-multiselect-autocomplete.component.html',\n styleUrls: ['./foehn-multiselect-autocomplete.component.css'],\n providers: [\n {\n provide: FoehnInputComponent,\n useExisting: forwardRef(\n () => FoehnMultiselectAutocompleteComponent\n ),\n multi: true\n }\n ]\n})\nexport class FoehnMultiselectAutocompleteComponent\n extends FoehnAutocompleteComponent\n implements OnInit {\n @HostBinding('attr.name')\n hostName: string;\n\n @ViewChild('autocompleteComponent')\n autocompleteComponent: FoehnAutocompleteComponent;\n\n @ViewChild('alertMessageContainer')\n alertMessageContainer: ElementRef;\n\n @ViewChildren('selectedElemRef')\n selectedElemRef: QueryList<ElementRef>;\n\n @ViewChildren('defaultElemRef')\n defaultElemRef: QueryList<ElementRef>;\n\n @ViewChild('defaultDeleteFocusArea')\n defaultDeleteFocusArea: ElementRef;\n\n /**\n * The label in the object. Can be a string or a function\n * Defaults to `label`\n */\n @Input()\n elementBadgeLabel: any = 'label';\n\n autocompleteInputValue: string;\n showEmptyListMessage = false;\n srAnnouncements = '';\n\n private defaultElementValues_: unknown[];\n private srAnnouncementClearTimer: any;\n private readonly SR_ANNOUNCEMENT_CLEAR_TIMEOUT_INTERVAL_MS = 2000;\n\n constructor(\n ngZone: NgZone,\n private dictionaryService: SdkDictionaryService\n ) {\n super(ngZone);\n }\n\n get defaultElementValues(): unknown[] {\n return this.defaultElementValues_;\n }\n\n @Input()\n set defaultElementValues(items: unknown[]) {\n this.defaultElementValues_ = [...items];\n if ((!this.model || !this.model.length) && items) {\n this.updateNgModel(items);\n }\n }\n\n @Input()\n set defaultElementValue(item: string) {\n this.defaultElementValues = [item];\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n // The host is not related to foehn error management but foehn-autocomplete is.\n this.hostId = this.buildId('ParentContainer');\n this.hostName = this.hostId;\n this.excludeFromErrorSummary = true;\n }\n\n hasErrorsToDisplay(): boolean {\n return !!this.autocompleteComponent\n ? this.autocompleteComponent.hasErrorsToDisplay()\n : false;\n }\n\n updateMultiselectAutocomplete(): 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 addItem(item: unknown): void {\n if (!!item) {\n if (!this.model) {\n this.model = [];\n }\n\n const index = this.model.indexOf(item);\n if (index === -1) {\n this.model.push(item);\n this.updateMultiselectAutocomplete();\n this.handleUserInput();\n this.manageSuggestionListAndFocusAfterAddingAnItem();\n this.manageScreenReaderAnnouncement(item, false);\n }\n }\n }\n\n removeItem(item: unknown, index: number): void {\n this.model.splice(index, 1);\n this.updateMultiselectAutocomplete();\n this.handleUserInput();\n this.manageSuggestionListAndFocusAfterRemovingAnItem(index);\n this.manageScreenReaderAnnouncement(item, true);\n this.autocompleteComponent.markAsDirty();\n }\n\n trackByFn(index: number): number {\n return index;\n }\n\n getLabel(value: any): string {\n const elem = this.findElementByModelItem(value);\n return super.getLabel(elem);\n }\n\n canBeDeleted(index: number): boolean {\n return (\n !this.disabled &&\n (!this.defaultElementValues ||\n !this.defaultElementValues.includes(this.model[index]))\n );\n }\n\n onAutocompleteElementsLoaded(elements: []): void {\n // Need to wait for childView to be loaded\n setTimeout(() => {\n if (!!this.autocompleteComponent) {\n this.autocompleteComponent.elements = this.filterAutocompleteElements(\n elements\n );\n if (\n !this.disabled &&\n !this.autocompleteComponent.elements.length\n ) {\n this.showAlertMessageAndHideAutocomplete();\n }\n }\n });\n }\n\n getDeleteButtonAriaLabel(element: unknown): string {\n return `${this.dictionaryService.getKeySync(\n 'foehn-multiselect-autocomplete.selected.delete',\n { elementLabel: this.getLabel(element) }\n )}`;\n }\n\n hasDefaultDeleteFocusArea(): boolean {\n return (\n !this.disabled &&\n (!this.defaultElementValues || !this.defaultElementValues.length) &&\n (!this.model || !this.model.length)\n );\n }\n\n getBadgeLabel(element: any): string {\n if (typeof this.elementBadgeLabel === 'string') {\n return this.getLabel(element);\n }\n return this.elementBadgeLabel(element);\n }\n\n private findElementByModelItem(item: unknown): unknown {\n if (!!this.elements && !!this.elements.length) {\n const itemValue: unknown =\n typeof item !== 'object' ? item : this.getValue(item);\n const elem = this.elements.find(\n (element: unknown) => this.getValue(element) === itemValue\n );\n if (!!elem) {\n return elem;\n }\n }\n return item;\n }\n\n private getValidValue(): number[] | null | undefined {\n if (!this.model || !this.model.length) {\n if (this.model_ !== undefined) {\n return null;\n }\n\n return undefined;\n }\n return this.model;\n }\n\n private focusNextAreaAfterDelete(removedIndex: number): void {\n // Adjust index depending on default elements that are not deletable\n if (!!this.defaultElementValues) {\n removedIndex -= this.defaultElementValues.length;\n }\n const closeButtonsElemRefArray = [...this.selectedElemRef.toArray()];\n // Need to find an element to focus on\n if (removedIndex === closeButtonsElemRefArray.length) {\n if (!!closeButtonsElemRefArray.length) {\n return closeButtonsElemRefArray[\n removedIndex - 1\n ].nativeElement.focus();\n }\n const defaultElemRefArray = [...this.defaultElemRef.toArray()];\n if (!!defaultElemRefArray.length) {\n return defaultElemRefArray[\n defaultElemRefArray.length - 1\n ].nativeElement.focus();\n }\n return this.defaultDeleteFocusArea.nativeElement.focus();\n }\n // Otherwise focus element by DOM replacement\n }\n\n private filterAutocompleteElements(elements: []): unknown {\n const filteredElements = ObjectHelper.deepCopy(elements);\n if (!!this.model && !!this.model.length) {\n this.model.forEach((selected: unknown) => {\n for (const [index, value] of filteredElements.entries()) {\n const elem = this.findElementByModelItem(selected);\n if (ObjectHelper.isEqual(elem, value)) {\n filteredElements.splice(index, 1);\n break;\n }\n }\n });\n }\n return filteredElements;\n }\n\n private manageSuggestionListAndFocusAfterAddingAnItem(): void {\n // Empty autocomplete input\n this.autocompleteInputValue = null;\n // Remove selected item from autocomplete suggestion list\n this.autocompleteComponent.elements = this.filterAutocompleteElements(\n this.elements\n );\n // Check if we still have suggestions to display\n if (!this.autocompleteComponent.elements.length) {\n this.showAlertMessageAndHideAutocomplete();\n // Need setTimeout to ensure alert message is on the DOM and can be focusable\n setTimeout(() => {\n const alertMessage: HTMLElement = this.alertMessageContainer.nativeElement.querySelector(\n 'p'\n );\n if (alertMessage) {\n alertMessage.focus();\n }\n });\n }\n }\n\n private manageSuggestionListAndFocusAfterRemovingAnItem(\n removedIndex: number\n ): void {\n // Hide message saying no more suggestions to display\n this.showEmptyListMessage = false;\n // Manually show autocomplete because there is at least one suggestions to display\n this.autocompleteComponent.inputElement.nativeElement.hidden = false;\n // Add back selected item to autocomplete suggestion list\n this.autocompleteComponent.elements = this.filterAutocompleteElements(\n this.elements\n );\n // When deleting a selected item, check were to set focus back when no more items to delete\n // eslint-disable-next-line rxjs-angular/prefer-async-pipe\n this.selectedElemRef.changes.pipe(first()).subscribe(() => {\n this.focusNextAreaAfterDelete(removedIndex);\n });\n }\n\n private showAlertMessageAndHideAutocomplete(): void {\n // Show a message to user indicating there is no more suggestions to display\n this.showEmptyListMessage = true;\n // Manually reset and hide autocomplete because there is no more suggestions to display\n this.autocompleteInputValue = null;\n this.autocompleteComponent.inputElement.nativeElement.hidden = true;\n }\n\n private manageScreenReaderAnnouncement(\n element: unknown,\n isDelete: boolean\n ): void {\n clearTimeout(this.srAnnouncementClearTimer);\n if (isDelete) {\n this.srAnnouncements += `${this.dictionaryService.getKeySync(\n 'foehn-multiselect-autocomplete.sr-announcement.deleted',\n { elementLabel: this.getLabel(element) }\n )}`;\n } else {\n this.srAnnouncements += `${this.dictionaryService.getKeySync(\n 'foehn-multiselect-autocomplete.sr-announcement.added',\n { elementLabel: this.getLabel(element) }\n )}`;\n }\n this.srAnnouncementClearTimer = setTimeout(() => {\n this.srAnnouncements = '';\n }, this.SR_ANNOUNCEMENT_CLEAR_TIMEOUT_INTERVAL_MS);\n }\n}\n","<foehn-autocomplete\n #autocompleteComponent\n [name]=\"name\"\n [label]=\"label\"\n [elements]=\"elements\"\n [elementsUrl]=\"elementsUrl\"\n [elementValue]=\"elementValue\"\n [elementLabel]=\"elementLabel\"\n [elementSuggestionLabel]=\"elementSuggestionLabel\"\n [elementValueIdentity]=\"elementValueIdentity\"\n [elementDisabled]=\"elementDisabled\"\n [elementGroup]=\"elementGroup\"\n [allowCustomValue]=\"false\"\n [searchValueMinCharsCount]=\"searchValueMinCharsCount\"\n [customValueModelGenerator]=\"customValueModelGenerator\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n (userInput)=\"addItem($event)\"\n [(model)]=\"autocompleteInputValue\"\n (elementsLoaded)=\"onAutocompleteElementsLoaded($event)\"\n [showErrorWhenDisabled]=\"showErrorWhenDisabled\"\n [hideNotRequiredExtraLabel]=\"hideNotRequiredExtraLabel\"\n [itemHeightInSuggestionListInPx]=\"itemHeightInSuggestionListInPx\"\n [caseSensitiveSearch]=\"caseSensitiveSearch\"\n>\n <small\n *ngIf=\"!showEmptyListMessage\"\n [attr.id]=\"buildChildId('Help')\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"\n helpText\n ? helpText\n : ('foehn-multiselect-autocomplete.autocomplete.screen-reader.label'\n | fromDictionary)\n \"\n ></small>\n\n <ng-content></ng-content>\n\n <div\n [id]=\"buildChildId('AlertMessageContainer')\"\n role=\"status\"\n #alertMessageContainer\n >\n <p\n *ngIf=\"showEmptyListMessage\"\n class=\"alert alert-info mb-0\"\n tabindex=\"0\"\n >\n {{\n 'foehn-multiselect-autocomplete.autocomplete.empty-message'\n | fromDictionary\n }}\n </p>\n </div>\n</foehn-autocomplete>\n\n<p class=\"sr-only\" aria-live=\"polite\" aria-atomic=\"true\">\n {{ srAnnouncements }}\n</p>\n\n<div\n class=\"form-group selected-list-container d-flex align-content-stretch flex-wrap\"\n [ngClass]=\"!!model && !!model.length ? 'pt-2' : 'pt-0'\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n tabindex=\"-1\"\n>\n <span\n *ngIf=\"hasDefaultDeleteFocusArea()\"\n class=\"sr-only\"\n [tabindex]=\"0\"\n [innerHTML]=\"\n 'foehn-multiselect-autocomplete.sr-default-focus.no-element-to-delete'\n | fromDictionary\n \"\n #defaultDeleteFocusArea\n ></span>\n <ng-container\n *ngFor=\"let element of model; let index = index; trackBy: trackByFn\"\n >\n <span\n *ngIf=\"!canBeDeleted(index)\"\n class=\"badge badge-pill badge-secondary mr-1 mb-1 py-2 px-3 d-flex align-items-center\"\n [tabindex]=\"disabled ? -1 : 0\"\n [attr.aria-describedby]=\"buildChildId('Label')\"\n #defaultElemRef\n >\n {{ getBadgeLabel(element) }}\n <span class=\"sr-only\">\n {{\n 'foehn-multiselect-autocomplete.sr-default-selected-element'\n | fromDictionary\n }}\n </span>\n </span>\n <button\n *ngIf=\"canBeDeleted(index)\"\n class=\"btn btn-danger badge badge-pill mr-1 mb-1 py-2 px-3 d-flex align-items-center\"\n [tabindex]=\"0\"\n [attr.aria-label]=\"getDeleteButtonAriaLabel(element)\"\n [attr.aria-describedby]=\"buildChildId('Label')\"\n [title]=\"getDeleteButtonAriaLabel(element)\"\n (click)=\"removeItem(element, index)\"\n #selectedElemRef\n >\n {{ getBadgeLabel(element) }}\n <foehn-icon-times\n aria-hidden=\"true\"\n class=\"ml-2\"\n [title]=\"getDeleteButtonAriaLabel(element)\"\n ></foehn-icon-times>\n </button>\n </ng-container>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { FoehnAutocompleteModule } from '../foehn-autocomplete/foehn-autocomplete.module';\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 { FoehnMultiselectAutocompleteComponent } from './foehn-multiselect-autocomplete.component';\n\n@NgModule({\n imports: [\n FoehnAutocompleteModule,\n SdkDictionaryModule,\n FoehnValidationAlertsModule,\n CommonModule,\n FoehnIconsModule,\n FormsModule\n ],\n declarations: [FoehnMultiselectAutocompleteComponent],\n exports: [FoehnMultiselectAutocompleteComponent]\n})\nexport class FoehnMultiselectAutocompleteModule {}\n","import { Component, forwardRef, OnInit } from '@angular/core';\nimport { Observable, of } from 'rxjs';\n\nimport { FoehnInputComponent } from '../foehn-input/foehn-input.component';\nimport { FoehnInputStringComponent } from '../foehn-input/foehn-input-string.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 onPaste(event: ClipboardEvent): void {\n if (this.preventPaste === true) {\n event.preventDefault();\n }\n\n const pastedValue = event.clipboardData\n .getData('text')\n ?.replace(/\\D/g, '');\n\n const isPastedValueMoreThanOneAvsBlock = pastedValue?.length > 4;\n\n if (isPastedValueMoreThanOneAvsBlock) {\n let valueToPaste = pastedValue;\n if (!pastedValue.startsWith(this.PREFIX_NAVS)) {\n valueToPaste = pastedValue.includes('.')\n ? `${this.PREFIX_NAVS}.${pastedValue}`\n : this.PREFIX_NAVS + pastedValue;\n }\n\n this.onModelChange(valueToPaste);\n this.handleUserInput();\n event.preventDefault();\n }\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 [hideStandardHelpText]=\"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 (paste)=\"onPaste($event)\"\n [hideStandardHelpText]=\"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() + '_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 [hideStandardHelpText]=\"true\"\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 [hideStandardHelpText]=\"true\"\n ></foehn-input-number>\n </div>\n </div>\n </div>\n </fieldset>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { FoehnInputModule } from '../foehn-input/foehn-input.module';\nimport { FoehnValidationAlertsModule } from '../foehn-validation-alerts/foehn-validation-alerts.module';\nimport { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';\nimport { FoehnInputNav13Component } from './foehn-input-nav13.component';\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';\n\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\n [ngClass]=\"\n isLabelSrOnly\n ? 'form-check-label sr-only'\n : 'form-check-label vd-p'\n \"\n [for]=\"buildChildId()\"\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 </div>\n</div>\n","import { Component, forwardRef, Input } from '@angular/core';\n\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 @Input()\n verticalDisplay = false;\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\n class=\"d-flex\"\n [ngClass]=\"verticalDisplay ? 'flex-column' : 'flex-row'\"\n >\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\" [ngClass]=\"verticalDisplay ? '' : '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 { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { FoehnValidationAlertsModule } from '../foehn-validation-alerts/foehn-validation-alerts.module';\nimport { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';\nimport { FoehnBooleanCheckboxComponent } from './foehn-boolean-checkbox.component';\nimport { FoehnBooleanRadioComponent } from './foehn-boolean-radio.component';\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","export class RepriseInfo {\n mobile: string;\n email: string;\n}\n","import { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\nimport { combineLatest, Observable } from 'rxjs';\nimport { filter, first, map, switchMap, tap } from 'rxjs/operators';\n\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 { EtapeInfo } from '../../sdk-appinfo/application-info';\nimport { ApplicationInfoService } from '../../sdk-appinfo/application-info.service';\nimport { SessionInfo } from '../../sdk-session-info/session-info.service';\nimport { ValidationHandlerService } from '../../validation/validation-handler.service';\nimport { GesdemActionRecoveryService } from '../gesdem-action-recovery.service';\nimport { RepriseInfo } from '../reprise-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 get isModalVisible(): boolean {\n return this.isVisible;\n }\n\n get reference(): string {\n return this.gesdemService.lastResponse\n ? this.gesdemService.lastResponse.meta.reference\n : null;\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 open(): void {\n this.gesdemEventService\n .formSentObservable()\n .pipe(\n first(),\n filter(resp => !!resp.meta.reference),\n switchMap(() => this.isConnectedCyber)\n )\n // eslint-disable-next-line rxjs-angular/prefer-async-pipe\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,rxjs-angular/prefer-async-pipe\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 // eslint-disable-next-line rxjs-angular/prefer-async-pipe\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 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 { ActivatedRoute } from '@angular/router';\n\nimport { FoehnNavigationService } from './foehn-navigation.service';\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 { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';\nimport { FoehnValidationAlertSummaryComponent } from './foehn-validation-alert-summary.component';\n\n@NgModule({\n imports: [CommonModule, SdkDictionaryModule],\n declarations: [FoehnValidationAlertSummaryComponent],\n exports: [FoehnValidationAlertSummaryComponent]\n})\nexport class FoehnValidationAlertSummaryModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { FoehnValidationAlertSummaryModule } from '../foehn-validation-alert-summary/foehn-validation-alert-summary.module';\nimport { FoehnFormComponent } from './foehn-form.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FoehnValidationAlertSummaryModule,\n FormsModule.withConfig({\n callSetDisabledState: 'whenDisabledForLegacyCode'\n })\n ],\n declarations: [FoehnFormComponent],\n exports: [FoehnFormComponent]\n})\nexport class FoehnFormModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { FoehnFormModule } from '../foehn-form/foehn-form.module';\nimport { FoehnIconsModule } from '../foehn-icons/foehn-icons.module';\nimport { FoehnInputModule } from '../foehn-input/foehn-input.module';\nimport { FoehnModalModule } from '../foehn-modal/foehn-modal.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';\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 { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\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';\nimport { FoehnNavigationComponent } from './foehn-navigation.component';\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 { map } from 'rxjs/operators';\n\nimport { GesdemHandlerService } from '../gesdem/gesdem-handler.service';\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 { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\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';\n\nimport { ObjectHelper } from '../helpers/object.helper';\nimport { PageChangeEvent } from './page-change-event';\n\nconst hasInputChanged = (change: SimpleChange): boolean =>\n change && !ObjectHelper.isEqual(change.previousValue, change.currentValue);\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 @typescript-eslint/no-explicit-any\n set list(list: any[]) {\n this._list = list;\n }\n\n @Input()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/no-unused-vars\n trackByFn = (index: number, item: any): number => index;\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 !hasInputChanged(itemsPerPageChange) &&\n !hasInputChanged(listChange) &&\n !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._list) {\n this.filteredList = [];\n return;\n }\n\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.slice(start, start + this.itemsPerPage);\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 { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { FoehnIconsModule } from '../foehn-icons/foehn-icons.module';\nimport { FoehnListComponent } from './foehn-list.component';\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 {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChange,\n SimpleChanges\n} from '@angular/core';\n\nimport { ObjectHelper } from '../helpers/object.helper';\nimport { FoehnTableColumnConfiguration } from './foehn-table-column-configuration';\nimport { FoehnTablePageChangeEvent } from './foehn-table-page-change-event';\nimport { TableSort } from './tableSort';\n\nconst hasInputChanged = (change: SimpleChange): boolean =>\n change && !ObjectHelper.isEqual(change.previousValue, change.currentValue);\n\n@Component({\n selector: 'foehn-table',\n templateUrl: './foehn-table.component.html',\n styleUrls: ['./foehn-table.component.css']\n})\nexport class FoehnTableComponent implements OnChanges {\n @Input()\n itemsPerPage = 10;\n\n @Input()\n id = 'foehn-table';\n\n @Input()\n previousLabel = 'Précédent';\n\n @Input()\n nextLabel = 'Suivant';\n\n @Input()\n totalElements: number;\n\n @Input()\n fixedPageCount: number;\n\n @Input()\n columnsConfiguration: FoehnTableColumnConfiguration<unknown>[];\n\n @Output()\n pageChange = new EventEmitter<FoehnTablePageChangeEvent>();\n\n @Input()\n sort: TableSort;\n\n @Output()\n sortChange = new EventEmitter<TableSort>();\n\n currentPage = 1;\n\n filteredList: unknown[] = [];\n\n private _list: unknown[];\n\n @Input()\n set list(list: unknown[]) {\n this._list = list;\n }\n\n @Input()\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n trackByFn = (index: number, item: unknown): number => index;\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 const sortInputChange: SimpleChange = changes.sort;\n\n if (\n !hasInputChanged(itemsPerPageChange) &&\n !hasInputChanged(listChange) &&\n !hasInputChanged(fixedPageCountChange) &&\n !hasInputChanged(sortInputChange)\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 triggerSort(sortAttribute: string): void {\n let sortDirection: 'DESC' | 'ASC' = 'DESC';\n if (this.sort.sortAttribute === sortAttribute) {\n sortDirection = this.sort.sortDirection === 'DESC' ? 'ASC' : 'DESC';\n }\n\n this.sortChange.next({\n sortDirection,\n sortAttribute\n });\n }\n\n private buildFilteredList(): void {\n if (!this._list) {\n this.filteredList = [];\n return;\n }\n\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.slice(start, start + this.itemsPerPage);\n }\n}\n","<div class=\"row\" [id]=\"id\">\n <div class=\"col-12\">\n <h4 *ngIf=\"!!totalElements && totalElements === 1\">\n {{ 'foehn-table.totalElements.1' | fromDictionary }}\n </h4>\n <h4 *ngIf=\"!!totalElements && totalElements !== 1\">\n {{\n 'foehn-table.totalElements'\n | fromDictionary: { total: totalElements.toString() }\n }}\n </h4>\n </div>\n\n <div class=\"col-12 table-responsive\">\n <table class=\"table table-hover\">\n <thead class=\"vd-bg-pattern-bars-gray\">\n <tr>\n <th\n scope=\"col\"\n *ngFor=\"let col of columnsConfiguration\"\n [id]=\"col.id\"\n >\n <ng-container\n *ngIf=\"!filteredList.length || !col.sortAttribute\"\n >\n <span\n [innerHTML]=\"\n col.columnLabelKey | fromDictionary\n \"\n ></span>\n </ng-container>\n\n <ng-container\n *ngIf=\"!!filteredList.length && !!col.sortAttribute\"\n >\n <a\n href=\"#\"\n class=\"vd-text-thin\"\n (click)=\"\n $event.preventDefault();\n triggerSort(col.sortAttribute)\n \"\n [title]=\"\n 'Trier par ' +\n (col.columnLabelKey | fromDictionary)\n \"\n >\n <span\n [innerHTML]=\"\n col.columnLabelKey | fromDictionary\n \"\n ></span>\n <ng-container\n *ngIf=\"\n sort.sortAttribute === col.sortAttribute\n \"\n >\n <span\n class=\"ml-3\"\n *ngIf=\"sort.sortDirection === 'ASC'\"\n >\n <foehn-icon-chevron-up></foehn-icon-chevron-up>\n </span>\n <span\n class=\"ml-3\"\n *ngIf=\"sort.sortDirection === 'DESC'\"\n >\n <foehn-icon-chevron-down></foehn-icon-chevron-down>\n </span>\n </ng-container>\n </a>\n </ng-container>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"\n let item of filteredList;\n let index = index;\n trackBy: trackByFn\n \"\n >\n <td\n *ngFor=\"let col of columnsConfiguration\"\n [id]=\"col.id + '-' + index\"\n >\n <ng-container *ngIf=\"!!col.isImportant\">\n <span\n *ngIf=\"col.isImportant(item)\"\n class=\"cell-vertical-align-middle\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"30\"\n height=\"30\"\n style=\"color: var(--red)\"\n fill=\"currentColor\"\n class=\"bi bi-exclamation\"\n viewBox=\"0 0 16 16\"\n >\n <path\n d=\"M7.002 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0zM7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.553.553 0 0 1-1.1 0L7.1 4.995z\"\n />\n </svg>\n </span>\n </ng-container>\n\n <ng-container *ngIf=\"!!col.iconGetter\">\n <span\n *ngIf=\"col.iconGetter(item) as iconDef\"\n class=\"cell-vertical-align-middle mr-2\"\n >\n <fa-icon\n aria-hidden=\"true\"\n [icon]=\"iconDef.icon\"\n [title]=\"iconDef.label\"\n ></fa-icon>\n <span class=\"sr-only\">{{ iconDef.label }}</span>\n </span>\n </ng-container>\n\n <ng-container *ngIf=\"!!col.template\">\n <ng-template\n [ngTemplateOutlet]=\"col.template\"\n [ngTemplateOutletContext]=\"{\n item: item,\n index: index\n }\"\n ></ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"!col.template\">\n <ng-container *ngIf=\"!col.routerLinkGetter\">\n <span\n [innerHTML]=\"col.valueGetter(item)\"\n class=\"cell-vertical-align-middle\"\n ></span>\n </ng-container>\n\n <ng-container *ngIf=\"!!col.routerLinkGetter\">\n <a\n [routerLink]=\"col.routerLinkGetter(item)\"\n queryParamsHandling=\"merge\"\n class=\"cell-vertical-align-middle\"\n >\n <span\n [innerHTML]=\"col.valueGetter(item)\"\n ></span>\n </a>\n </ng-container>\n </ng-container>\n </td>\n </tr>\n <tr *ngIf=\"!!columnsConfiguration && !filteredList.length\">\n <td [colSpan]=\"columnsConfiguration.length\">\n <div class=\"w-100 text-center\">\n {{ 'foehn-table.totalElements.0' | fromDictionary }}\n </div>\n </td>\n </tr>\n </tbody>\n </table>\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 { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { FoehnIconsModule } from '../foehn-icons/foehn-icons.module';\nimport { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';\nimport { FoehnTableComponent } from './foehn-table.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FoehnIconsModule,\n SdkDictionaryModule,\n RouterModule\n ],\n declarations: [FoehnTableComponent],\n exports: [FoehnTableComponent]\n})\nexport class FoehnTableModule {}\n","import { TemplateRef } from '@angular/core';\nimport { IconDefinition } from '@fortawesome/fontawesome-common-types';\n\nexport class FoehnTableColumnConfiguration<T> {\n id: string;\n columnLabelKey: string;\n isImportant?: (item: T) => boolean;\n iconGetter?: (\n item: T\n ) => {\n icon: IconDefinition;\n label: string;\n };\n valueGetter?: (item: T) => string;\n template?: TemplateRef<unknown>;\n /**\n * @deprecated The method should not be used\n */\n routerLinkGetter?: (item: T) => string;\n sortAttribute?: string;\n}\n","export class FoehnTablePageChangeEvent {\n previousPage: number;\n currentPage: number;\n pageCount: number;\n}\n","export class TableSort {\n sortDirection: 'DESC' | 'ASC';\n sortAttribute?: string;\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { FoehnAddressModule } from '../foehn-address/foehn-address.module';\nimport { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';\nimport { FoehnRecapSectionComponent } from './foehn-recap-section.component';\n\n@NgModule({\n declarations: [FoehnRecapSectionComponent],\n imports: [CommonModule, SdkDictionaryModule, FoehnAddressModule],\n exports: [FoehnRecapSectionComponent]\n})\nexport class FoehnRecapSectionModule {}\n","import { CommonModule, DatePipe } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { FoehnRecapSectionModule } from '../foehn-recap-section/foehn-recap-section.module';\nimport { FoehnDebugSummaryComponent } from './foehn-debug-summary.component';\n\n@NgModule({\n imports: [CommonModule, FoehnRecapSectionModule],\n declarations: [FoehnDebugSummaryComponent],\n exports: [FoehnDebugSummaryComponent],\n providers: [DatePipe]\n})\nexport class FoehnDebugSummaryComponentModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { FoehnDebugSummaryComponentModule } from '../foehn-debug-summary/foehn-debug-summary.component.module';\nimport { FoehnPageModule } from '../foehn-page/foehn-page.module';\nimport { FoehnNotfoundComponent } from './foehn-notfound.component';\n\n@NgModule({\n imports: [CommonModule, FoehnPageModule, FoehnDebugSummaryComponentModule],\n declarations: [FoehnNotfoundComponent],\n exports: [FoehnNotfoundComponent]\n})\nexport class FoehnNotFoundModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { FoehnIconsModule } from '../foehn-icons/foehn-icons.module';\nimport { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';\nimport { GesdemConfirmationComponent } from './gesdem-confirmation.component';\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 { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { FoehnDebugSummaryComponentModule } from '../foehn-debug-summary/foehn-debug-summary.component.module';\nimport { GesdemActionRecoveryModule } from '../gesdem-action-recovery/gesdem-action-recovery.module';\nimport { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';\nimport { GesdemErrorComponent } from './gesdem-error.component';\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n GesdemActionRecoveryModule,\n FoehnDebugSummaryComponentModule,\n SdkDictionaryModule\n ],\n declarations: [GesdemErrorComponent],\n exports: [GesdemErrorComponent]\n})\nexport class GesdemErrorModule {}\n","export const HTTP_LOADER_FILTERED_URL: string[] = [\n 'api/support-alert',\n '(api\\\\/document(\\\\/([a-zA-Z0-9])+)*\\\\/upload)'\n];\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { BehaviorSubject, combineLatest, merge, Observable, of } from 'rxjs';\nimport { debounceTime, map } from 'rxjs/operators';\n\nimport { FormError } from '../form-error';\nimport { GesdemEventService } from '../gesdem/gesdem-event.service';\nimport { GesdemHandlerService } from '../gesdem/gesdem-handler.service';\nimport { ApplicationInfo } from '../sdk-appinfo/application-info';\nimport { ApplicationInfoService } from '../sdk-appinfo/application-info.service';\nimport { SessionInfo } from '../sdk-session-info/session-info.service';\nimport { ValidationHandlerService } from '../validation/validation-handler.service';\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<FormError[]>;\n private readonly errorsSubject = new BehaviorSubject<FormError[]>([]);\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<FormError[]> {\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<FormError[]> {\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 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.recaptcha.net/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 {\n ChangeDetectorRef,\n Component,\n OnDestroy,\n OnInit,\n ViewChild\n} from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { FormError } from '../form-error';\nimport { GrecaptchaComponent } from './grecaptcha/grecaptcha.component';\nimport { RecaptchaService } from './recaptcha.service';\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<FormError[]>;\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 // eslint-disable-next-line rxjs-angular/prefer-async-pipe\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 { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { GrecaptchaComponent } from './grecaptcha/grecaptcha.component';\nimport { SdkRecaptchaComponent } from './sdk-recaptcha.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [SdkRecaptchaComponent, GrecaptchaComponent],\n exports: [SdkRecaptchaComponent]\n})\nexport class SdkRecaptchaModule {}\n","import { Component } from '@angular/core';\nimport { first } from 'rxjs/operators';\n\nimport { IamExpiredInterceptorService } from './iam-expired-interceptor.service';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'redirector',\n templateUrl: './redirect.component.html'\n})\nexport class RedirectComponent {\n isModalVisible: boolean;\n counter: number;\n\n constructor(private iamInterceptor: IamExpiredInterceptorService) {\n this.iamInterceptor.isIamSessionExpired\n .pipe(first())\n // eslint-disable-next-line rxjs-angular/prefer-async-pipe\n .subscribe(() => this.showModal());\n }\n\n reloadPage(): void {\n window.location.reload();\n }\n\n private showModal(): void {\n this.counter = 10;\n this.isModalVisible = true;\n setInterval(() => {\n if (0 === this.counter) {\n this.reloadPage();\n return;\n }\n this.counter--;\n }, 1000);\n }\n}\n","<foehn-modal\n [modalHeaderText]=\"'Information'\"\n [isModalVisible]=\"isModalVisible\"\n [closeable]=\"false\"\n>\n <p>Votre session a expiré.</p>\n <p>\n Vous pouvez\n <a href=\"#\" (click)=\"$event.preventDefault(); reloadPage()\">\n vous connecter\n </a>\n à nouveau pour continuer à utiliser nos services.\n </p>\n\n <div modal-footer class=\"w-100 text-right font-weight-bold\">\n Vous allez être redirigé dans {{ counter }} s.\n </div>\n</foehn-modal>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { FoehnModalModule } from '../foehn-modal/foehn-modal.module';\nimport { RedirectComponent } from './redirect.component';\n\n@NgModule({\n imports: [CommonModule, FoehnModalModule],\n declarations: [RedirectComponent],\n exports: [RedirectComponent]\n})\nexport class SdkRedirectModule {}\n","import {\n Directive,\n HostListener,\n Input,\n OnDestroy,\n OnInit\n} from '@angular/core';\nimport { BehaviorSubject, Subscription } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\nimport { FoehnConfirmModalService } from '../foehn-confirm-modal/foehn-confirm-modal.service';\nimport { FoehnInputComponent } from '../foehn-input/foehn-input.component';\nimport { FormError } from '../form-error';\nimport { ApplicationInfoService } from '../sdk-appinfo/application-info.service';\nimport { SdkDictionaryService } from '../sdk-dictionary/sdk-dictionary.service';\nimport { DocumentReference } from './document-reference';\nimport { UploaderHelper } from './uploader.helper';\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\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\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\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(index: number, document: DocumentReference): string {\n return document.key;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\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\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\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\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\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\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\n protected removeFileOnConfirmation(document: any): void {\n this.deleteDocumentSubject.next(document);\n }\n\n protected displayLocalErrors(files: File[]): FormError[] {\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 {\n Component,\n ElementRef,\n Input,\n OnDestroy,\n ViewChild\n} from '@angular/core';\nimport { combineLatest, map, Observable, Subscription } from 'rxjs';\nimport { shareReplay, tap } from 'rxjs/operators';\n\nimport { UploadProgressService } from './upload-progress.service';\nimport { UploadProgress } from './upload-progress.type';\n\n@Component({\n selector: 'foehn-upload-progress-bar',\n templateUrl: './foehn-upload-progress-bar.component.html',\n styleUrls: ['./foehn-upload-progress-bar.component.css']\n})\nexport class FoehnUploadProgressBarComponent implements OnDestroy {\n @Input()\n progressBarTriggerHtmlElement: HTMLElement;\n\n @ViewChild('progressBarPanel', { static: false })\n progressBarPanel: ElementRef;\n\n showProgress: Observable<boolean>;\n analysisProgress: Observable<boolean>;\n currentUploadPercentage: Observable<number>;\n\n private readonly progressBarTriggerSubscription: Subscription;\n\n constructor(private uploadProgressService: UploadProgressService) {\n this.showProgress = this.uploadProgressService.showProgressSubject.pipe(\n tap(showProgress => {\n if (showProgress) {\n this.focusOnContainer();\n }\n }),\n shareReplay(1)\n );\n this.analysisProgress = this.uploadProgressService.analysisProgressSubject.pipe(\n shareReplay(1)\n );\n this.currentUploadPercentage = this.uploadProgressService.uploadProgressSubject.pipe(\n map((progress: UploadProgress) =>\n this.calculateProgressPercentage(progress)\n ),\n shareReplay(1)\n );\n this.progressBarTriggerSubscription = combineLatest([\n this.showProgress,\n this.analysisProgress,\n this.currentUploadPercentage\n ])\n .pipe(\n tap(\n ([\n showProgress,\n analysisProgress,\n currentUploadPercentage\n ]) => {\n if (\n !showProgress &&\n !analysisProgress &&\n currentUploadPercentage === 100\n ) {\n // Reset progress for next upload\n this.uploadProgressService.uploadProgress.next(\n null\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 progress bar is hidden, analysis is finished and upload is a 100%\n if (this.progressBarTriggerHtmlElement) {\n this.progressBarTriggerHtmlElement.focus();\n }\n }\n }\n )\n )\n // eslint-disable-next-line rxjs-angular/prefer-async-pipe\n .subscribe();\n }\n\n ngOnDestroy(): void {\n if (this.progressBarTriggerSubscription) {\n this.progressBarTriggerSubscription.unsubscribe();\n }\n }\n\n private calculateProgressPercentage(progress: UploadProgress): number {\n if (!progress) {\n return 0;\n }\n const percent = Math.round((progress.loaded * 100) / progress.total);\n if (percent === 100) {\n this.uploadProgressService.analysisProgress.next(true);\n }\n return percent;\n }\n\n private focusOnContainer(): void {\n // Has to be a setTimeout as we're affecting the DOM outside of the Angular lifecycle.\n setTimeout(() => {\n if (this.progressBarPanel) {\n this.progressBarPanel.nativeElement.focus();\n }\n });\n }\n}\n","<div\n *ngIf=\"(showProgress | async) === true\"\n role=\"dialog\"\n class=\"progress-bar-container d-flex justify-content-center\"\n tabindex=\"-1\"\n cdkTrapFocus\n>\n <div\n class=\"progress-bar-panel d-flex flex-column align-self-center\"\n tabindex=\"-1\"\n #progressBarPanel\n >\n <div class=\"progress-bar-panel-title py-2 px-3\">\n <h2\n class=\"h5\"\n [innerHTML]=\"'foehn-upload-progress-bar.title' | fromDictionary\"\n ></h2>\n </div>\n <div class=\"progress-bar-panel-body p-3\">\n <p\n *ngIf=\"(analysisProgress | async) === false\"\n [innerHTML]=\"\n 'foehn-upload-progress-bar.upload' | fromDictionary\n \"\n ></p>\n <p\n *ngIf=\"(analysisProgress | async) === true\"\n [innerHTML]=\"\n 'foehn-upload-progress-bar.analysis' | fromDictionary\n \"\n ></p>\n <!-- Need to add a tabindex=\"0\" (here on progress) otherwise cdkTrapFocus will not work -->\n <div class=\"progress\" tabindex=\"0\">\n <div\n *ngIf=\"currentUploadPercentage | async as progress\"\n role=\"progressbar\"\n class=\"progress-bar bg-success\"\n [class.progress-bar-animated]=\"\n (analysisProgress | async) === true\n \"\n [class.progress-bar-striped]=\"\n (analysisProgress | async) === true\n \"\n [style.width]=\"progress + '%'\"\n [attr.aria-valuenow]=\"progress\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n >\n <ng-container *ngIf=\"(analysisProgress | async) === false\">\n {{ progress + '%' }}\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { Component, forwardRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { filter, mergeMap, tap, throttleTime } from 'rxjs/operators';\n\nimport { FoehnConfirmModalService } from '../../foehn-confirm-modal/foehn-confirm-modal.service';\nimport { FoehnInputComponent } from '../../foehn-input/foehn-input.component';\nimport { FormError } from '../../form-error';\nimport { ApplicationInfoService } from '../../sdk-appinfo/application-info.service';\nimport { SdkDictionaryService } from '../../sdk-dictionary/sdk-dictionary.service';\nimport { AbstractFoehnUploaderComponent } from '../abstract-foehn-uploader.component';\nimport { DocumentReference } from '../document-reference';\nimport { UploadProgressService } from '../foehn-upload-progress-bar/upload-progress.service';\nimport { MultiUploadService } from './multi-upload.service';\nimport { DocumentError, DocumentsWithErrors } from './multi-upload.type';\nimport { PendingUploadService } from './pending-upload.service';\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 { provide: MultiUploadService, useClass: MultiUploadService },\n { provide: UploadProgressService, useClass: UploadProgressService }\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 @Input()\n shouldDisplayFileSavedConfirmation = true;\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 get pendingFiles(): File[] {\n return this.pendingUploadService.getPendingFiles(this.name);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n\n // eslint-disable-next-line rxjs-angular/prefer-async-pipe\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 this.shouldDisplayFileSavedConfirmation\n ),\n 1\n )\n )\n // eslint-disable-next-line rxjs-angular/prefer-async-pipe\n .subscribe(\n ({ documents, errors }) => {\n this.displayResultFromServer(documents, errors);\n },\n (error: unknown) => {\n const errors: FormError[] = [];\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 // eslint-disable-next-line rxjs-angular/prefer-async-pipe\n .subscribe();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n\n if (!!this.pendingUploadedErrorsSubscription) {\n this.pendingUploadedErrorsSubscription.unsubscribe();\n }\n }\n\n trackByPending(index: number, 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: Event): void {\n // PRESTAKIT-309: Mark as pristine so errors can be shown directly to user when uploading file\n this.markAsPristine();\n\n const target: HTMLInputElement = event.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\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\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 this.shouldDisplayFileSavedConfirmation\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: FormError[] = [];\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 #fallBackTrigger\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 <!-- prettier-ignore -->\n <a [href]=\"multiUploadService.getDownloadUrl(url, document)\">{{ document.filename }}</a>\n <span class=\"ml-1 mr-1\">\n ({{ toMegaOctets(document.fileSize) }}\n <abbr\n [title]=\"\n 'foehn-uploader.abbr-megaoctet-title' | fromDictionary\n \"\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 </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\n [title]=\"\n 'foehn-uploader.abbr-megaoctet-title' | fromDictionary\n \"\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-pending\"\n (click)=\"removeFile(pending)\"\n >\n <foehn-icon-times\n [title]=\"\n 'foehn-uploader.delete-icon-title'\n | fromDictionary: { docName: pending.name }\n \"\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\n <foehn-upload-progress-bar\n *ngIf=\"reference\"\n [progressBarTriggerHtmlElement]=\"\n inputElement?.nativeElement || fallBackTrigger\n \"\n ></foehn-upload-progress-bar>\n</div>\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { PipeModule } from '../../pipes/pipes.module';\nimport { SdkDictionaryModule } from '../../sdk-dictionary/sdk-dictionary.module';\nimport { FoehnUploadProgressBarComponent } from './foehn-upload-progress-bar.component';\n\n@NgModule({\n imports: [CommonModule, A11yModule, PipeModule, SdkDictionaryModule],\n declarations: [FoehnUploadProgressBarComponent],\n exports: [FoehnUploadProgressBarComponent]\n})\nexport class FoehnUploadProgressBarModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\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 { FoehnUploadProgressBarModule } from '../foehn-upload-progress-bar/foehn-upload-progress-bar.module';\nimport { FoehnMultiUploadComponent } from './foehn-multi-upload.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FoehnIconsModule,\n FoehnValidationAlertsModule,\n SdkDictionaryModule,\n FormsModule,\n FoehnUploadProgressBarModule\n ],\n declarations: [FoehnMultiUploadComponent],\n exports: [FoehnMultiUploadComponent]\n})\nexport class FoehnMultiUploadModule {}\n","import { HttpClient, HttpEvent, HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError, filter, map, tap } from 'rxjs/operators';\n\nimport { GrowlBrokerService } from '../../foehn-growl/growl-broker.service';\nimport { GrowlType } from '../../foehn-growl/growl-types';\nimport { ApplicationInfoService } from '../../sdk-appinfo/application-info.service';\nimport { SdkDictionaryService } from '../../sdk-dictionary/sdk-dictionary.service';\nimport { DocumentReference } from '../document-reference';\nimport { UploadProgressService } from '../foehn-upload-progress-bar/upload-progress.service';\nimport { UploaderHelper } from '../uploader.helper';\nimport { BoDocumentsWithErrors } from './bo-multi-upload.type';\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 private uploadProgressService: UploadProgressService\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 shouldDisplayFileSavedConfirmation: boolean\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\n .post<BoDocumentsWithErrors>(url, formData, {\n reportProgress: true,\n observe: 'events',\n responseType: 'json'\n })\n .pipe(\n filter((e: HttpEvent<BoDocumentsWithErrors>) =>\n this.uploadProgressService.manageUploadEventFilter(e)\n ),\n map(\n (e: HttpEvent<BoDocumentsWithErrors>) =>\n (e as HttpResponse<BoDocumentsWithErrors>).body\n ),\n tap(result => {\n const successfulDocumentsCount =\n result.documents && result.documents.length;\n if (\n successfulDocumentsCount &&\n shouldDisplayFileSavedConfirmation\n ) {\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(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 { 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 {\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';\n\nimport { FoehnConfirmModalService } from '../../foehn-confirm-modal/foehn-confirm-modal.service';\nimport { FoehnInputComponent } from '../../foehn-input/foehn-input.component';\nimport { FormError } from '../../form-error';\nimport { ApplicationInfoService } from '../../sdk-appinfo/application-info.service';\nimport { SdkDictionaryService } from '../../sdk-dictionary/sdk-dictionary.service';\nimport { AbstractFoehnUploaderComponent } from '../abstract-foehn-uploader.component';\nimport { DocumentReference } from '../document-reference';\nimport { UploadProgressService } from '../foehn-upload-progress-bar/upload-progress.service';\nimport { BoMultiUploadService } from './bo-multi-upload.service';\nimport { BoDocumentError } from './bo-multi-upload.type';\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 { provide: BoMultiUploadService, useClass: BoMultiUploadService },\n { provide: UploadProgressService, useClass: UploadProgressService }\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 @Input()\n shouldDisplayFileSavedConfirmation = true;\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 this.shouldDisplayFileSavedConfirmation\n ),\n 1\n )\n )\n // eslint-disable-next-line rxjs-angular/prefer-async-pipe\n .subscribe(\n ({ documents, errors }) => {\n this.displayResultFromServer(documents, errors);\n },\n (error: unknown) => {\n const errors: FormError[] = [];\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 // eslint-disable-next-line rxjs-angular/prefer-async-pipe\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: Event): void {\n // PRESTAKIT-309: Mark as pristine so errors can be shown directly to user when uploading file\n this.markAsPristine();\n\n const target: HTMLInputElement = event.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\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: FormError[] = [];\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 #fallBackTrigger\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 <!-- prettier-ignore -->\n <a [href]=\"boMultiUploadService.getDownloadUrl(downloadUrl, document)\">{{ document.filename }}</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\n <foehn-upload-progress-bar\n [progressBarTriggerHtmlElement]=\"\n inputElement?.nativeElement || fallBackTrigger\n \"\n ></foehn-upload-progress-bar>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\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 { FoehnUploadProgressBarModule } from '../foehn-upload-progress-bar/foehn-upload-progress-bar.module';\nimport { FoehnBoMultiUploadComponent } from './foehn-bo-multi-upload.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FoehnIconsModule,\n FoehnValidationAlertsModule,\n SdkDictionaryModule,\n FormsModule,\n FoehnUploadProgressBarModule\n ],\n declarations: [FoehnBoMultiUploadComponent],\n exports: [FoehnBoMultiUploadComponent]\n})\nexport class FoehnBoMultiUploadModule {}\n","import { Component, forwardRef, Input, OnInit } from '@angular/core';\nimport { ImageCroppedEvent } from 'ngx-image-cropper';\nimport { Subscription } from 'rxjs';\nimport { distinctUntilChanged, filter } from 'rxjs/operators';\n\nimport { GrowlBrokerService } from '../../foehn-growl/growl-broker.service';\nimport { FoehnInputComponent } from '../../foehn-input/foehn-input.component';\nimport { DocumentReference } from '../../foehn-upload/document-reference';\nimport { MultiUploadService } from '../../foehn-upload/foehn-multi-upload/multi-upload.service';\nimport { FormError } from '../../form-error';\nimport { SdkDictionaryService } from '../../sdk-dictionary/sdk-dictionary.service';\nimport { UploadProgressService } from '../foehn-upload-progress-bar/upload-progress.service';\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.userAgent.includes('Edge')) {\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 { provide: MultiUploadService, useClass: MultiUploadService },\n { provide: UploadProgressService, useClass: UploadProgressService }\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 @Input()\n shouldDisplayFileSavedConfirmation = true;\n\n readonly acceptFormats = '.jpeg,.jpg,.png';\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 get hasPicture(): boolean {\n return this.model && this.model.length && !!this.model[0].reference;\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.currentLanguageSubscription = this.dictionaryService\n .getCurrentLanguageCode()\n .pipe(distinctUntilChanged())\n // eslint-disable-next-line rxjs-angular/prefer-async-pipe\n .subscribe(language => {\n this.currentLanguage = language;\n });\n }\n\n onPictureSelection(imgEvent: Event): void {\n const targetInput = imgEvent.target as HTMLInputElement;\n if (!targetInput?.files?.length || !targetInput.files[0]) {\n return;\n }\n const file = targetInput.files[0];\n\n if (this.isValidFileType(file.name)) {\n this.refreshErrors([[], true]);\n this.pictureToCrop = imgEvent;\n this.loading = true;\n } else {\n const errors = [\n {\n name: this.name,\n code: 'InvalidFileType',\n message: this.dictionaryService.getKeySync(\n 'foehn-picture-upload.invalid-file-type',\n {\n filename: file.name,\n acceptFormats: this.acceptFormats\n }\n )\n }\n ];\n this.refreshErrors([errors, true]);\n this.resetPictureSelection();\n }\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 this.shouldDisplayFileSavedConfirmation\n )\n .pipe(filter(result => !!result))\n // eslint-disable-next-line rxjs-angular/prefer-async-pipe\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 // eslint-disable-next-line rxjs-angular/prefer-async-pipe\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n refreshErrors(results: any[]): void {\n const errors: FormError[] = results[0];\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 private isValidFileType(filename: string): boolean {\n const acceptedFormats = this.acceptFormats\n .split(',')\n .map(ext => ext.toLowerCase());\n const fileExtension = `.${filename.split('.').pop()}`.toLowerCase();\n return acceptedFormats.includes(fileExtension);\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 #fallBackTrigger\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]=\"acceptFormats\"\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 [attr.disabled]=\"loading ? 'disabled' : null\"\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\n <foehn-upload-progress-bar\n [progressBarTriggerHtmlElement]=\"\n inputElement?.nativeElement || fallBackTrigger\n \"\n ></foehn-upload-progress-bar>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ImageCropperModule } from 'ngx-image-cropper';\n\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 { FoehnUploadProgressBarModule } from '../foehn-upload-progress-bar/foehn-upload-progress-bar.module';\nimport { FoehnPictureUploadComponent } from './foehn-picture-upload.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FoehnIconsModule,\n FoehnValidationAlertsModule,\n SdkDictionaryModule,\n FormsModule,\n ImageCropperModule,\n FoehnUploadProgressBarModule\n ],\n declarations: [FoehnPictureUploadComponent],\n exports: [FoehnPictureUploadComponent]\n})\nexport class FoehnPictureUploadModule {}\n","export class UploadProgress {\n loaded: number;\n total: number;\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\nimport { GrowlBrokerService } from '../foehn-growl/growl-broker.service';\nimport { GrowlType } from '../foehn-growl/growl-types';\nimport { EPaymentParameters } from './model/EPaymentParameters';\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 baseUrl L'url de base (optionnelle)\n * @returns la page de paiement sur laquelle rediriger l'utilisateur\n */\n createPendingPayment(ref: string, baseUrl: string): Observable<string> {\n return this.http\n .post(`${baseUrl}epayment/prepare/${ref}`, null, {\n responseType: 'text' as const\n })\n .pipe(\n catchError(() => {\n this.growlService.addWithType(\n GrowlType.DANGER,\n 'Une erreur de transmission est survenue. Merci de réessayer plus tard.'\n );\n this.cancelPendingPayment(ref, baseUrl);\n throw new Error();\n })\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, Input, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { first } from 'rxjs/operators';\n\nimport { GesdemEventService } from '../gesdem/gesdem-event.service';\nimport { GesdemHandlerService } from '../gesdem/gesdem-handler.service';\nimport { EPaymentService } from './sdk-epayment.service';\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 @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 reference La référence de la demande en cours\n */\n payNow(reference: string): void {\n this.ePaymentService\n .createPendingPayment(reference, this.baseUrl)\n // eslint-disable-next-line rxjs-angular/prefer-async-pipe\n .subscribe(redirectUrl => {\n window.location.href = redirectUrl;\n });\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 // eslint-disable-next-line rxjs-angular/prefer-async-pipe\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","<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","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { GrowlBrokerService } from '../foehn-growl/growl-broker.service';\nimport { FoehnModalModule } from '../foehn-modal/foehn-modal.module';\nimport { SdkEpaymentComponent } from './sdk-epayment.component';\n\n@NgModule({\n imports: [CommonModule, FoehnModalModule],\n declarations: [SdkEpaymentComponent],\n providers: [GrowlBrokerService],\n exports: [SdkEpaymentComponent]\n})\nexport class SdkEpaymentModule {}\n","export class FoehnConfirmModalContent {\n title?: string;\n htmlContent: string;\n okButtonLabel?: string;\n cancelButtonLabel?: string;\n closeable?: boolean;\n}\n","import { Directive, HostListener } from '@angular/core';\nimport * as iban from 'iban';\n\nimport { FoehnInputTextComponent } from '../foehn-input/foehn-input-text.component';\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 { Directive, HostListener } from '@angular/core';\n\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';\n\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 { NgModule } from '@angular/core';\n\nimport { FoehnInputModule } from '../foehn-input/foehn-input.module';\nimport { NumberCurrencyFormatterDirective } from './currency-formatter.directive';\nimport { IbanFormatterDirective } from './iban-formatter.directive';\nimport { IdeFormatterDirective } from './ide-formatter.directive';\nimport { NDCFormatterDirective } from './ndc-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 { Directive, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { first } from 'rxjs/operators';\n\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 { Location } from '@angular/common';\nimport { Directive, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { first } from 'rxjs/operators';\n\nimport { FoehnConfirmModalService } from '../foehn-confirm-modal/foehn-confirm-modal.service';\nimport { I18nForm } from '../i18n-form';\nimport { AbstractPageFromMenuComponent } from './abstract-page-from-menu.component';\nimport { FoehnListItem } from './foehn-list-summary/foehn-list-item';\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 get itemToEdit(): ITEM_TYPE {\n return this.getList()[this.itemIndex];\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 abstract getList(): ITEM_TYPE[];\n\n abstract getNewListItem(): ITEM_TYPE;\n\n abstract getListPagePath(): string;\n\n abstract getListPageLabel(): string;\n}\n","import { AfterViewInit, Directive, NgZone } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { first } from 'rxjs/operators';\n\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 { Component, Input } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { FormError } from '../../form-error';\nimport { ValidationHandlerService } from '../../validation/validation-handler.service';\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: FormError[]) =>\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","export class FoehnListItem {\n trackingIndex: number;\n}\n","import {\n Component,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n TrackByFunction\n} from '@angular/core';\n\nimport { FoehnConfirmModalService } from '../../foehn-confirm-modal/foehn-confirm-modal.service';\nimport { FoehnInputComponent } from '../../foehn-input/foehn-input.component';\nimport { FoehnListItem } from './foehn-list-item';\nimport { FoehnListItemDescription } from './foehn-list-item-description';\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 &nbsp;\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 { Component, Input } from '@angular/core';\n\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 &nbsp;\n <span class=\"font-weight-bold\">(non applicable)</span>\n </span>\n</li>\n","import { Component, Input } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { GesdemHandlerService } from '../../../gesdem/gesdem-handler.service';\nimport { PlaceholderType } from '../../../sdk-dictionary/sdk-dictionary.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 { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { FoehnInputModule } from '../foehn-input/foehn-input.module';\nimport { FoehnModalModule } from '../foehn-modal/foehn-modal.module';\nimport { FoehnValidationAlertsModule } from '../foehn-validation-alerts/foehn-validation-alerts.module';\nimport { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';\nimport { FoehnErrorPillComponent } from './foehn-error-pill/foehn-error-pill.component';\nimport { FoehnListSummaryComponent } from './foehn-list-summary/foehn-list-summary.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';\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 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 FocusedDay {\n disabled: boolean;\n indexDay: number;\n indexRow: number;\n indexColumn: number;\n}\n","export class MonthYear {\n year: string;\n month: string;\n}\n","import { Component, forwardRef } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { FoehnInputComponent } from '../foehn-input/foehn-input.component';\nimport { SessionInfo } from '../sdk-session-info/session-info.service';\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\n class=\"h5\"\n [innerHTML]=\"'foehn-decision-electronique.title' | fromDictionary\"\n ></h2>\n\n <p [innerHTML]=\"'foehn-decision-electronique.info' | fromDictionary\"></p>\n\n <fieldset [attr.aria-describedby]=\"getDescribedBy()\">\n <legend class=\"vd-p\">\n <span\n [innerHTML]=\"\n 'foehn-decision-electronique.question' | fromDictionary\n \"\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\n class=\"ml-1\"\n [innerHTML]=\"\n 'foehn-decision-electronique.answer.yes'\n | fromDictionary\n \"\n ></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\n class=\"ml-1\"\n [innerHTML]=\"\n 'foehn-decision-electronique.answer.no' | fromDictionary\n \"\n ></span>\n </label>\n </div>\n </fieldset>\n\n <p\n [innerHTML]=\"'foehn-decision-electronique.answer.info' | fromDictionary\"\n ></p>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { FoehnValidationAlertsModule } from '../foehn-validation-alerts/foehn-validation-alerts.module';\nimport { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';\nimport { FoehnDecisionElectroniqueComponent } from './foehn-decision-electronique.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n FoehnValidationAlertsModule,\n SdkDictionaryModule\n ],\n declarations: [FoehnDecisionElectroniqueComponent],\n exports: [FoehnDecisionElectroniqueComponent]\n})\nexport class FoehnDecisionElectroniqueModule {}\n","export class AddressTypeLight {\n id: string;\n egid: string;\n number: string;\n}\n","export class Canton {\n code: string;\n label: string;\n}\n","export class District {\n districtHistId: string;\n cantonId: string;\n districtId: string;\n districtLongName: string;\n districtShortName: string;\n}\n","export class Municipality {\n id: number;\n name: string;\n canton: string;\n districtHistId: string;\n historyMunicipalityId: string;\n municipalityEntryMode: string;\n}\n","export class PlaceOfOrigin {\n canton: string;\n historyMunicipalityId: number;\n placeOfOriginId: string;\n name: string;\n successorId: string;\n validFrom: number[];\n validTo: number[];\n}\n","import { Canton } from './canton';\n\nexport class PostalLocality {\n id: string;\n zipCode: string;\n zipCodeAddOn: string;\n zipCodeId: number;\n name: string;\n municipalityId: number;\n canton: Canton;\n zipCodeType: string;\n}\n","import { CurrentWeek } from './current-week.type';\nimport { PaginationWeek } from './pagination-week.type';\n\nexport class Calendar {\n previousWeek: PaginationWeek;\n currentWeek: CurrentWeek;\n nextWeek: PaginationWeek;\n minAvailableDate: number[];\n maxAvailableDate: number[];\n}\n","export class PaginationWeek {\n label: string;\n weekNumber: number;\n year: number;\n}\n","import { DaySlots } from './day-slots.type';\nimport { PaginationWeek } from './pagination-week.type';\n\nexport class CurrentWeek extends PaginationWeek {\n week: DaySlots[];\n}\n","export class DaySlots {\n day: string;\n date: number[];\n timeSlots: string[];\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChange,\n SimpleChanges\n} from '@angular/core';\nimport dayjs from 'dayjs';\nimport weekOfYear from 'dayjs/plugin/weekOfYear';\n\nimport { Calendar } from '../calendar.type';\nimport { PaginationWeek } from '../pagination-week.type';\n\ndayjs.extend(weekOfYear);\n\n@Component({\n selector: 'foehn-agenda-navigation',\n templateUrl: './foehn-agenda-navigation.component.html',\n styleUrls: ['./foehn-agenda-navigation.component.css']\n})\nexport class FoehnAgendaNavigationComponent implements OnChanges {\n @Input()\n id: string;\n\n @Input()\n calendar: Calendar;\n\n @Input()\n isSrOnly = false;\n\n @Input()\n minDate: number[];\n\n @Input()\n maxDate: number[];\n\n @Output()\n paginationChange = new EventEmitter<PaginationWeek>();\n\n currentDay: number[];\n\n private overrideWithCalendarDate = true;\n\n private static getCurrentDateAsArray(): number[] {\n const now = dayjs();\n return [now.year(), now.month() + 1, now.date()];\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.onCalendarChange(changes.calendar);\n }\n\n paginate(paginationWeek: PaginationWeek): void {\n this.paginationChange.next(paginationWeek);\n }\n\n datePickerUserInput(selectedDate: number[]): void {\n this.overrideWithCalendarDate = false;\n const dateAsString = `${selectedDate[0]}-${selectedDate[1]}-${selectedDate[2]}`;\n const selectedDayjs = dayjs(dateAsString);\n const numberWeek = selectedDayjs.week();\n const paginationWeek: PaginationWeek = {\n label: null,\n weekNumber: numberWeek,\n year: selectedDayjs.year()\n };\n this.paginationChange.next(paginationWeek);\n }\n\n private onCalendarChange(change: SimpleChange): void {\n if (change) {\n const calendar = change.currentValue;\n if (!this.overrideWithCalendarDate) {\n this.overrideWithCalendarDate = true;\n return;\n }\n if (\n !calendar ||\n !calendar.currentWeek.week ||\n !calendar.currentWeek.week.length\n ) {\n this.currentDay = FoehnAgendaNavigationComponent.getCurrentDateAsArray();\n return;\n }\n this.currentDay = calendar.currentWeek.week[0].date;\n }\n }\n}\n","<div class=\"row mb-3\" *ngIf=\"!!calendar\">\n <div class=\"col-12\">\n <nav\n class=\"vd-pagination calendar-week-navigation\"\n [attr.id]=\"id\"\n [attr.aria-label]=\"\n 'foehn-agenda-navigation.nav.aria-label' | fromDictionary\n \"\n >\n <ul class=\"vd-pagination__list\">\n <li\n class=\"vd-pagination__item vd-pagination__item--previous col-4\"\n *ngIf=\"!!calendar.previousWeek\"\n >\n <button\n [id]=\"id + 'ButtonPreviousWeek'\"\n class=\"btn-link vd-pagination__link vd-pagination__link-reset\"\n (click)=\"paginate(calendar.previousWeek)\"\n type=\"button\"\n >\n <span class=\"d-flex align-items-center\">\n <foehn-icon-chevron-left\n class=\"vd-pagination__title\"\n [title]=\"\n 'foehn-agenda-navigation.previous-week'\n | fromDictionary\n \"\n aria-hidden=\"true\"\n ></foehn-icon-chevron-left>\n <span\n class=\"vd-pagination__title ml-2 d-xs-none d-sm-block\"\n aria-hidden=\"true\"\n >\n {{\n 'foehn-agenda-navigation.previous-week'\n | fromDictionary\n }}\n </span>\n <span\n [id]=\"id + 'NavigationPreviousSrOnly'\"\n class=\"sr-only\"\n >\n {{\n 'foehn-agenda-navigation.previous-week-sr-only'\n | fromDictionary\n : {\n previousWeek:\n calendar.previousWeek\n .label\n }\n }}\n </span>\n </span>\n </button>\n </li>\n <li\n class=\"vd-pagination__item vd-pagination__item--previous col-4\"\n *ngIf=\"!calendar.previousWeek && !isSrOnly\"\n >\n <div\n [id]=\"id + 'NavigationPreviousDisabled'\"\n class=\"d-flex align-items-center link-week-disabled\"\n >\n <foehn-icon-chevron-left\n class=\"vd-pagination__title\"\n [title]=\"\n 'foehn-agenda-navigation.previous-week'\n | fromDictionary\n \"\n ></foehn-icon-chevron-left>\n <span\n class=\"vd-pagination__title ml-2 d-xs-none d-sm-block\"\n >\n {{\n 'foehn-agenda-navigation.previous-week'\n | fromDictionary\n }}\n </span>\n </div>\n </li>\n\n <li\n class=\"vd-pagination__item d-flex justify-content-center col-4\"\n *ngIf=\"!isSrOnly\"\n >\n <foehn-date-picker-button\n [model]=\"currentDay\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [selectedDateSrOnlyLabelKey]=\"\n 'foehn-agenda-navigation.date-picker-button.screen-reader.selected-date'\n \"\n (userInput)=\"datePickerUserInput($event)\"\n ></foehn-date-picker-button>\n </li>\n\n <li\n class=\"vd-pagination__item vd-pagination__item--next col-4 d-flex justify-content-end\"\n *ngIf=\"!!calendar.nextWeek\"\n >\n <button\n [id]=\"id + 'ButtonNextWeek'\"\n class=\"btn-link vd-pagination__link vd-pagination__link-reset\"\n (click)=\"paginate(calendar.nextWeek)\"\n type=\"button\"\n >\n <span class=\"d-flex align-items-center\">\n <span\n aria-hidden=\"true\"\n class=\"vd-pagination__title d-xs-none d-sm-block\"\n >\n {{\n 'foehn-agenda-navigation.next-week'\n | fromDictionary\n }}\n </span>\n <span\n [id]=\"id + 'NavigationNextSrOnly'\"\n class=\"sr-only\"\n >\n {{\n 'foehn-agenda-navigation.next-week-sr-only'\n | fromDictionary\n : {\n nextWeek:\n calendar.nextWeek.label\n }\n }}\n </span>\n <foehn-icon-chevron-right\n class=\"vd-pagination__title ml-2\"\n [title]=\"\n 'foehn-agenda-navigation.next-week'\n | fromDictionary\n \"\n aria-hidden=\"true\"\n ></foehn-icon-chevron-right>\n </span>\n </button>\n </li>\n <li\n class=\"vd-pagination__item vd-pagination__item--next col-4 d-flex justify-content-end\"\n *ngIf=\"!calendar.nextWeek && !isSrOnly\"\n >\n <div\n [id]=\"id + 'NavigationNextDisabled'\"\n class=\"d-flex align-items-center link-week-disabled\"\n >\n <span class=\"vd-pagination__title d-xs-none d-sm-block\">\n {{\n 'foehn-agenda-navigation.next-week'\n | fromDictionary\n }}\n </span>\n <foehn-icon-chevron-right\n class=\"vd-pagination__title ml-2\"\n [title]=\"\n 'foehn-agenda-navigation.next-week'\n | fromDictionary\n \"\n ></foehn-icon-chevron-right>\n </div>\n </li>\n </ul>\n </nav>\n </div>\n</div>\n","import {\n Component,\n ElementRef,\n forwardRef,\n HostListener,\n Input,\n OnChanges,\n QueryList,\n SimpleChange,\n SimpleChanges,\n ViewChildren\n} from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { FoehnInputComponent } from '../../foehn-input/foehn-input.component';\nimport { SdkDictionaryService } from '../../sdk-dictionary/sdk-dictionary.service';\nimport { Calendar } from '../calendar.type';\nimport { DaySlots } from '../day-slots.type';\nimport { SelectedSlot } from '../selected-slot.type';\n\n@Component({\n selector: 'foehn-agenda-timeslot-panel',\n templateUrl: './foehn-agenda-timeslot-panel.component.html',\n styleUrls: ['./foehn-agenda-timeslot-panel.component.css'],\n providers: [\n {\n provide: FoehnInputComponent,\n useExisting: forwardRef(() => FoehnAgendaTimeslotPanelComponent),\n multi: true\n }\n ]\n})\nexport class FoehnAgendaTimeslotPanelComponent\n extends FoehnInputComponent<SelectedSlot>\n implements OnChanges {\n @ViewChildren('timeSlotButtonsElemRef')\n timeSlotButtonsElemRef: QueryList<ElementRef>;\n\n @Input()\n calendar: Observable<Calendar>;\n\n @Input()\n nbVisibleElements: number;\n\n selectedTimeSlot: string;\n timeSlots: string[];\n isClosed = true;\n timeslotRemaining: number;\n timeInputValue: string;\n canClose = true;\n\n readonly DEFAULT_NB_VISISBLE_ELEMENTS = 22;\n\n private currentWeek_: DaySlots;\n private dayInputValue: string;\n private keyboardNavigationAllowed = false;\n private currentActiveElement: Element;\n private hasSelectedSlotInPanel = false;\n\n constructor(private dictionaryService: SdkDictionaryService) {\n super();\n this.nbVisibleElements = this.DEFAULT_NB_VISISBLE_ELEMENTS;\n }\n\n get currentWeek(): DaySlots {\n return this.currentWeek_;\n }\n\n @Input()\n set currentWeek(value: DaySlots) {\n this.currentWeek_ = value;\n this.sliceNbVisibleElements();\n }\n\n @HostListener('keydown', ['$event'])\n handleKeyboardDownEvent(event: KeyboardEvent): void {\n if (this.keyboardNavigationAllowed) {\n this.onKeyDownInner(event);\n }\n }\n\n focus(): void {\n const timeSlotButtonsElemRefArray = [\n ...this.timeSlotButtonsElemRef.toArray()\n ];\n if (!!timeSlotButtonsElemRefArray.length) {\n timeSlotButtonsElemRefArray[0].nativeElement.focus();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.onNbVisibleElementsChange(changes.nbVisibleElements);\n }\n\n capitalCaseFirstLetter(s: string): string {\n if (!s) {\n return s;\n }\n if (s.length === 1) {\n return s.toUpperCase();\n }\n return `${s.charAt(0).toUpperCase()}${s.slice(1)}`;\n }\n\n handleUserInput(\n day: string,\n date: number[],\n time: string,\n calendar: Calendar\n ): void {\n const validValue = this.getValidValue(day, date, time, calendar);\n if (typeof validValue !== 'undefined') {\n this.userInput.next(validValue);\n this.updateNgModel(validValue);\n }\n }\n\n togglePanel(): void {\n this.isClosed = !this.isClosed;\n if (this.isClosed) {\n this.sliceNbVisibleElements();\n } else {\n // Need setTimeout because we are outside angular cycle when reloading page\n setTimeout(() => {\n this.timeSlots = this.currentWeek.timeSlots;\n });\n }\n }\n\n onModelChange(value: SelectedSlot): void {\n if (value) {\n this.selectedTimeSlot = `${value.day}-${value.time}`;\n this.timeInputValue = value.time;\n this.dayInputValue = value.day;\n } else if (!value) {\n this.selectedTimeSlot = null;\n this.timeInputValue = null;\n this.dayInputValue = null;\n }\n this.searchTimeValueInTimeSlot();\n }\n\n getTimeInputValue(s: string): string {\n if (!!s) {\n const valueSplit = s.split('-');\n if (valueSplit.length >= 2) {\n return valueSplit[1];\n }\n }\n return s;\n }\n\n searchTimeValueInTimeSlot(): void {\n const positionValue = this.currentWeek.timeSlots.findIndex(\n x =>\n x === this.timeInputValue &&\n this.currentWeek.day === this.dayInputValue\n );\n if (positionValue !== -1 && !!this.selectedTimeSlot) {\n this.hasSelectedSlotInPanel = true;\n if (this.isClosed && positionValue >= this.nbVisibleElements) {\n this.togglePanel();\n }\n } else {\n this.hasSelectedSlotInPanel = false;\n }\n this.canClose = positionValue < this.nbVisibleElements;\n }\n\n onTimeFocusin(): void {\n this.keyboardNavigationAllowed = true;\n this.currentActiveElement = document.activeElement;\n }\n\n onTimeFocusout(): void {\n this.keyboardNavigationAllowed = false;\n }\n\n isSelected(timeSlot: string): boolean {\n if (!this.selectedTimeSlot) {\n return false;\n }\n return (\n timeSlot === this.timeInputValue &&\n this.currentWeek.day === this.dayInputValue\n );\n }\n\n getButtonTimeSlotAriaLabel(day: string, timeSlot: string): string {\n let result = `${day} ${timeSlot}`;\n if (this.isSelected(timeSlot)) {\n result += this.dictionaryService.getKeySync(\n 'foehn-agenda.timeslot.selected'\n );\n }\n return result;\n }\n\n getTimeSlotTabIndex(timeSlot: string, index: number): number {\n if (this.isSelected(timeSlot)) {\n return 0;\n }\n if (!index && !this.hasSelectedSlotInPanel) {\n return 0;\n }\n return -1;\n }\n\n cleanIdForQuerySelector(s: string): string {\n s = s.replace(new RegExp(' ', 'g'), '_');\n return s.replace(new RegExp(':', 'g'), '_');\n }\n\n private sliceNbVisibleElements(): void {\n if (!this.nbVisibleElements) {\n this.nbVisibleElements = this.DEFAULT_NB_VISISBLE_ELEMENTS;\n }\n this.timeSlots = this.currentWeek.timeSlots.slice(\n 0,\n this.nbVisibleElements\n );\n this.timeslotRemaining =\n this.currentWeek.timeSlots.length - this.nbVisibleElements;\n }\n\n private getValidValue(\n day: string,\n date: number[],\n time: string,\n calendar: Calendar\n ): SelectedSlot | null | undefined {\n if (!day || !time) {\n if (this.model_ !== undefined) {\n return null;\n }\n return undefined;\n }\n return {\n day,\n time,\n year: calendar.currentWeek.year,\n weekNumber: calendar.currentWeek.weekNumber,\n date\n };\n }\n\n private onNbVisibleElementsChange(change: SimpleChange): void {\n if (change) {\n this.sliceNbVisibleElements();\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 case 'Right':\n case 'ArrowRight':\n this.focusTimeSlot(1);\n break;\n case 'Up':\n case 'ArrowUp':\n case 'Left':\n case 'ArrowLeft':\n this.focusTimeSlot(-1);\n break;\n case 'Space':\n case 'Spacebar':\n case 'Enter':\n document.activeElement.dispatchEvent(new Event('click'));\n break;\n default:\n return true;\n }\n\n keyEvent.preventDefault();\n keyEvent.stopPropagation();\n\n return false;\n }\n\n private focusTimeSlot(inc: number): void {\n const buttonsArray = [...this.timeSlotButtonsElemRef.toArray()];\n const indexselected = buttonsArray.findIndex(\n item =>\n item.nativeElement.getAttribute('id') ===\n this.currentActiveElement.getAttribute('id')\n );\n const newIndex = indexselected + inc;\n if (newIndex >= buttonsArray.length) {\n buttonsArray[0].nativeElement.focus();\n } else if (newIndex < 0) {\n buttonsArray[buttonsArray.length - 1].nativeElement.focus();\n } else {\n buttonsArray[newIndex].nativeElement.focus();\n }\n }\n}\n","<section\n *ngIf=\"calendar | async as loadedCalendar\"\n class=\"panel panel-default mb-3\"\n>\n <div class=\"panel-heading mt-2 mb-2 py-2 d-flex align-items-baseline\">\n <h3 class=\"h5 ml-3 mt-0 mb-0\">\n {{ capitalCaseFirstLetter(currentWeek.day) }}\n <span class=\"sr-only\" *ngIf=\"!!isSelected(timeInputValue)\">\n &nbsp;{{\n 'foehn-agenda-timeslot-panel.selected-time'\n | fromDictionary: { timeSelectedValue: timeInputValue }\n }}\n </span>\n </h3>\n <small *ngIf=\"!!currentWeek.timeSlots.length\" class=\"sr-only\">\n {{\n 'foehn-agenda-timeslot-panel.nbr-dispo'\n | fromDictionary\n : {\n nbElements: currentWeek.timeSlots.length.toString()\n }\n }}\n </small>\n <small\n *ngIf=\"!currentWeek.timeSlots.length\"\n class=\"font-italic align-self-end ml-2\"\n >\n {{ 'foehn-agenda-timeslot-panel.no-dispo' | fromDictionary }}\n </small>\n </div>\n\n <div\n *ngIf=\"!!currentWeek.timeSlots.length\"\n class=\"panel-body row d-flex flex-wrap ml-auto mr-auto pl-3\"\n (focusin)=\"onTimeFocusin()\"\n (focusout)=\"onTimeFocusout()\"\n role=\"application\"\n >\n <button\n *ngFor=\"let timeSlot of timeSlots; let index = index\"\n class=\"btn btn-info mr-2 mb-2\"\n #timeSlotButtonsElemRef\n [attr.id]=\"\n cleanIdForQuerySelector(currentWeek.day + '-' + timeSlot)\n \"\n [tabindex]=\"getTimeSlotTabIndex(timeSlot, index)\"\n [class.btn-danger]=\"isSelected(timeSlot)\"\n (click)=\"\n handleUserInput(\n currentWeek.day,\n currentWeek.date,\n timeSlot,\n loadedCalendar\n )\n \"\n [attr.aria-label]=\"\n getButtonTimeSlotAriaLabel(currentWeek.day, timeSlot)\n \"\n >\n {{ timeSlot }}\n </button>\n <div\n class=\"col-12 d-flex justify-content-end mb-1\"\n *ngIf=\"currentWeek.timeSlots.length > nbVisibleElements && canClose\"\n >\n <button\n class=\"btn btn-link show-more\"\n #timeSlotButtonsElemRef\n (click)=\"togglePanel()\"\n [attr.aria-label]=\"\n (isClosed\n ? 'foehn-agenda-timeslot-panel.show-more-sr-only'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden: timeslotRemaining.toString()\n }\n \"\n >\n {{\n (isClosed\n ? 'foehn.agenda-timeslot-panel.show-more'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden: timeslotRemaining.toString()\n }\n }}\n </button>\n </div>\n </div>\n</section>\n","import {\n Component,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n QueryList,\n ViewChildren\n} from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { FoehnInputComponent } from '../foehn-input/foehn-input.component';\nimport { SdkDictionaryService } from '../sdk-dictionary/sdk-dictionary.service';\nimport { Calendar } from './calendar.type';\nimport { FoehnAgendaTimeslotPanelComponent } from './foehn-agenda-timeslot-panel/foehn-agenda-timeslot-panel.component';\nimport { PaginationWeek } from './pagination-week.type';\nimport { SelectedSlot } from './selected-slot.type';\n\n@Component({\n selector: 'foehn-agenda',\n templateUrl: './foehn-agenda.component.html',\n providers: [\n {\n provide: FoehnInputComponent,\n useExisting: forwardRef(() => FoehnAgendaComponent),\n multi: true\n }\n ]\n})\nexport class FoehnAgendaComponent extends FoehnInputComponent<SelectedSlot> {\n @Input()\n calendar: Observable<Calendar>;\n\n @Input()\n nbVisibleElements: number;\n\n @Output()\n paginationChange = new EventEmitter<PaginationWeek>();\n\n @ViewChildren('timeSlotPanelElemRef')\n timeSlotPanelsElemRef: QueryList<FoehnAgendaTimeslotPanelComponent>;\n\n srAnnouncements = '';\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private srAnnouncementClearTimer: any;\n private readonly SR_ANNOUNCEMENT_CLEAR_TIMEOUT_INTERVAL_MS = 1000;\n\n constructor(private dictionaryService: SdkDictionaryService) {\n super();\n }\n\n private static cleanIdForQuerySelector(s: string): string {\n return s.replace(new RegExp('\\\\.', 'g'), '\\\\.');\n }\n\n focus(): void {\n const timeSlotPanelsElemRefArray = [\n ...this.timeSlotPanelsElemRef.toArray()\n ];\n if (!!timeSlotPanelsElemRefArray.length) {\n const timeSlotPanel = timeSlotPanelsElemRefArray.find(\n elem => !!elem.timeSlots && !!elem.timeSlots.length\n );\n if (!!timeSlotPanel) {\n timeSlotPanel.focus();\n }\n }\n }\n\n paginate(paginationWeek: PaginationWeek): void {\n this.paginationChange.next(paginationWeek);\n }\n\n handleUserInput(selectedTimeSlot: SelectedSlot): void {\n // markAsDirty hides error by simulating the control on ngModel as dirty\n this.markAsDirty();\n this.manageScreenReaderAnnouncement(\n `${selectedTimeSlot.day} ${\n selectedTimeSlot.time\n } ${this.dictionaryService.getKeySync(\n 'foehn-agenda.timeslot.selected'\n )}`\n );\n }\n\n scrollToNavigation(isTop: boolean): void {\n let navigationId = `#${FoehnAgendaComponent.cleanIdForQuerySelector(\n this.buildChildId('week-pagination')\n )}`;\n navigationId += isTop ? '-bottom' : '-top';\n const navigationElement = document.querySelector(navigationId);\n if (navigationElement) {\n navigationElement.scrollIntoView();\n }\n const navigationLinkId = `${navigationId} .vd-pagination__link`;\n const navigationLink: HTMLElement = document.querySelector(\n navigationLinkId\n );\n if (navigationLink) {\n navigationLink.focus();\n }\n }\n\n extractDayTime(selected: SelectedSlot): string {\n if (!selected) {\n return '';\n }\n return `${selected.day} ${selected.time}`;\n }\n\n private manageScreenReaderAnnouncement(msg: string): void {\n clearTimeout(this.srAnnouncementClearTimer);\n this.srAnnouncements = msg;\n this.srAnnouncementClearTimer = setTimeout(() => {\n this.srAnnouncements = '';\n }, this.SR_ANNOUNCEMENT_CLEAR_TIMEOUT_INTERVAL_MS);\n }\n}\n","<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrors()\"\n [class.vd-form-group-danger]=\"hasErrors()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <p\n [attr.id]=\"buildChildId() + 'Label'\"\n [attr.for]=\"buildChildId()\"\n *ngIf=\"label && type !== 'hidden'\"\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 </p>\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-container *ngIf=\"!(calendar | async)\">\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n <p class=\"alert alert-warning\">\n {{ 'foehn-agenda.calendar-indisponible' | fromDictionary }}\n </p>\n </ng-container>\n\n <!-- Fake input with NgModel to be registered into Form controls -->\n <input type=\"hidden\" [name]=\"name || label\" [ngModel]=\"model\" />\n\n <p\n [id]=\"buildChildId('srOnlyAnnouncements')\"\n class=\"sr-only\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n {{ srAnnouncements }}\n </p>\n\n <ng-content></ng-content>\n\n <ng-container *ngIf=\"calendar | async as loadedCalendar\">\n <section\n class=\"mb-3\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrors() || null\"\n >\n <h2 class=\"h3 mt-3\">\n <span aria-live=\"polite\" role=\"status\" aria-atomic=\"true\">\n {{ loadedCalendar.currentWeek.label }}\n </span>\n </h2>\n\n <!-- Rappel de l'heure actuellement sélectionnée -->\n <p [id]=\"buildChildId('timeSlotSelectedSrOnly')\" class=\"sr-only\">\n {{ extractDayTime(model) }}\n </p>\n\n <!-- Navigation top hidden from screen reader-->\n <foehn-agenda-navigation\n [id]=\"buildChildId() + 'week-pagination-top'\"\n [calendar]=\"loadedCalendar\"\n [minDate]=\"loadedCalendar.minAvailableDate\"\n [maxDate]=\"loadedCalendar.maxAvailableDate\"\n (paginationChange)=\"paginate($event)\"\n aria-hidden=\"true\"\n ></foehn-agenda-navigation>\n\n <!-- Link to navigation bottom only for screen reader -->\n <p [id]=\"buildChildId('navigationBottomAnchor')\" class=\"sr-only\">\n {{\n 'foehn-agenda.pagination-anchor.first-part' | fromDictionary\n }}\n <a\n href=\"#\"\n (click)=\"$event.preventDefault(); scrollToNavigation(true)\"\n >\n {{\n 'foehn-agenda.pagination-anchor.top-next-part'\n | fromDictionary\n }}\n </a>\n </p>\n\n <foehn-validation-alerts\n [component]=\"this\"\n ></foehn-validation-alerts>\n\n <div\n class=\"row\"\n [tabIndex]=\"hasErrors() ? 0 : -1\"\n [attr.id]=\"buildChildId()\"\n #entryComponent\n >\n <foehn-agenda-timeslot-panel\n *ngFor=\"let currentWeek of loadedCalendar.currentWeek.week\"\n class=\"col-12\"\n #timeSlotPanelElemRef\n [currentWeek]=\"currentWeek\"\n [calendar]=\"calendar\"\n [nbVisibleElements]=\"nbVisibleElements\"\n [(model)]=\"model\"\n (userInput)=\"handleUserInput($event)\"\n ></foehn-agenda-timeslot-panel>\n </div>\n </section>\n\n <!-- Navigation bottom used for screen reader only -->\n <foehn-agenda-navigation\n class=\"sr-only\"\n [id]=\"buildChildId() + 'week-pagination-bottom'\"\n [calendar]=\"loadedCalendar\"\n [isSrOnly]=\"true\"\n [minDate]=\"loadedCalendar.minAvailableDate\"\n [maxDate]=\"loadedCalendar.maxAvailableDate\"\n (paginationChange)=\"paginate($event)\"\n ></foehn-agenda-navigation>\n\n <!-- Link to navigation top hidden from screen reader -->\n <p [id]=\"buildChildId('navigationTopAnchor')\" aria-hidden=\"true\">\n {{ 'foehn-agenda.pagination-anchor.first-part' | fromDictionary }}\n <a\n href=\"#\"\n (click)=\"$event.preventDefault(); scrollToNavigation(false)\"\n >\n {{\n 'foehn-agenda.pagination-anchor.bottom-next-part'\n | fromDictionary\n }}\n </a>\n </p>\n </ng-container>\n</div>\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { FoehnDatePickerButtonModule } from '../foehn-date-picker-button/foehn-date-picker-button.module';\nimport { FoehnIconsModule } from '../foehn-icons/foehn-icons.module';\nimport { FoehnMiscModule } from '../foehn-misc/foehn-misc.module';\nimport { FoehnValidationAlertsModule } from '../foehn-validation-alerts/foehn-validation-alerts.module';\nimport { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';\nimport { FoehnAgendaComponent } from './foehn-agenda.component';\nimport { FoehnAgendaNavigationComponent } from './foehn-agenda-navigation/foehn-agenda-navigation.component';\nimport { FoehnAgendaTimeslotPanelComponent } from './foehn-agenda-timeslot-panel/foehn-agenda-timeslot-panel.component';\n\n@NgModule({\n imports: [\n CommonModule,\n A11yModule,\n FoehnMiscModule,\n SdkDictionaryModule,\n FoehnIconsModule,\n FoehnDatePickerButtonModule,\n FoehnValidationAlertsModule,\n FormsModule\n ],\n declarations: [\n FoehnAgendaComponent,\n FoehnAgendaNavigationComponent,\n FoehnAgendaTimeslotPanelComponent\n ],\n exports: [\n FoehnAgendaComponent,\n FoehnAgendaNavigationComponent,\n FoehnAgendaTimeslotPanelComponent\n ]\n})\nexport class FoehnAgendaModule {}\n","export class SelectedSlot {\n day: string;\n time: string;\n year: number;\n weekNumber: number;\n date: number[];\n}\n","/*\n * Public API Surface of prestations-ng\n */\n\n// Core\nexport * from './abstract-page-component';\nexport * from './foehn-notfound/foehn-notfound.component';\nexport * from './form-post-response';\nexport * from './gesdem/gesdem-event.service';\nexport * from './gesdem/gesdem-handler.service';\nexport * from './gesdem/gesdem-loader.guard';\nexport * from './gesdem-confirmation/gesdem-confirmation.component';\nexport * from './gesdem-error/gesdem-error.component';\nexport * from './i18n-form';\nexport * from './prestations-ng-core.module';\nexport * from './sdk-appinfo/application-info';\nexport * from './sdk-appinfo/application-info.service';\nexport * from './sdk-session-info/session-info.service';\nexport * from './sdk-session-info/session-info-data';\nexport * from './sdk-session-info/session-info-with-application.service';\nexport * from './service-locator';\n\n// Page\nexport * from './foehn-page/foehn-page.component';\nexport * from './foehn-page/foehn-page.module';\nexport * from './foehn-page/foehn-page.service';\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// Progress bar\nexport * from './foehn-status-progress-bar/foehn-status-progress-bar.component';\nexport * from './foehn-status-progress-bar/foehn-status-progress-bar.module';\n\n// Statistics\nexport * from './sdk-statistics/sdk-statistics.service';\n\n// Address\nexport * from './foehn-address/address.type';\nexport * from './foehn-address/foehn-address.module';\nexport * from './foehn-address/foehn-display-address.component';\nexport * from './foehn-address/foehn-input-address.component';\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/breadcrumb';\nexport * from './foehn-breadcrumb/breadcrumb-event.service';\nexport * from './foehn-breadcrumb/foehn-breadcrumb.component';\nexport * from './foehn-breadcrumb/foehn-breadcrumb.module';\n\n// Checkables\nexport * from './foehn-checkables/foehn-checkable-group.component';\nexport * from './foehn-checkables/foehn-checkables.module';\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// Mutliselect Autocomplete\nexport * from './foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.component';\nexport * from './foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.module';\n\n// Inputs\nexport * from './foehn-input/foehn-input.component';\nexport * from './foehn-input/foehn-input.module';\nexport * from './foehn-input/foehn-input-email.component';\nexport * from './foehn-input/foehn-input-hidden.component';\nexport * from './foehn-input/foehn-input-number.component';\nexport * from './foehn-input/foehn-input-password.component';\nexport * from './foehn-input/foehn-input-phone.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-date/foehn-input-date.component';\nexport * from './foehn-input-date-time/foehn-input-date-time.component';\nexport * from './foehn-input-time/foehn-input-time.component';\n\n// NAVS 13\nexport * from './foehn-nav13/foehn-input-nav13.component';\nexport * from './foehn-nav13/foehn-input-nav13.module';\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/currency.pipe';\nexport * from './pipes/date.pipe';\nexport * from './pipes/formatIde.pipe';\nexport * from './pipes/pipes.module';\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.module';\nexport * from './sdk-dictionary/sdk-dictionary.pipe';\nexport * from './sdk-dictionary/sdk-dictionary.service';\n\n// Navigation\nexport * from './foehn-navigation/foehn-navigation.component';\nexport * from './foehn-navigation/foehn-navigation.module';\nexport * from './foehn-navigation/foehn-navigation.service';\n\n// Validations\nexport * from './foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.component';\nexport * from './foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.module';\nexport * from './foehn-validation-alert-summary/foehn-validation-alert-summary.component';\nexport * from './foehn-validation-alert-summary/foehn-validation-alert-summary.module';\nexport * from './foehn-validation-alerts/foehn-validation-alerts.component';\nexport * from './foehn-validation-alerts/foehn-validation-alerts.module';\nexport * from './validation/validation-handler.service';\n\n// Icons\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';\nexport * from './foehn-icons/foehn-icons.module';\n\n// List\nexport * from './foehn-list/foehn-list.component';\nexport * from './foehn-list/foehn-list.module';\nexport * from './foehn-list/page-change-event';\n\n// Table\nexport * from './foehn-table/foehn-table.component';\nexport * from './foehn-table/foehn-table.module';\nexport * from './foehn-table/foehn-table-column-configuration';\nexport * from './foehn-table/foehn-table-page-change-event';\nexport * from './foehn-table/tableSort';\n\n// Misc\nexport * from './foehn-form/foehn-form.component';\nexport * from './foehn-form/foehn-form.module';\nexport * from './foehn-form/register-ng-model.service';\nexport * from './foehn-notfound/foehn-notfound.module';\nexport * from './foehn-user-connected-as/foehn-user-connected-as.component';\nexport * from './foehn-user-connected-as/foehn-user-connected-as.module';\nexport * from './form-error';\nexport * from './gesdem-confirmation/gesdem-confirmation.module';\nexport * from './gesdem-error/gesdem-error.module';\nexport * from './global.const';\nexport * from './sdk-recaptcha/recaptcha.service';\nexport * from './sdk-recaptcha/sdk-recaptcha.component';\nexport * from './sdk-recaptcha/sdk-recaptcha.module';\nexport * from './sdk-redirect/redirect.component';\nexport * from './sdk-redirect/sdk-redirect.module';\n\n// Upload\nexport * from './foehn-upload/abstract-foehn-uploader.component';\nexport * from './foehn-upload/document-reference';\nexport * from './foehn-upload/pending-upload.type';\nexport * from './foehn-upload/uploader.helper';\n\n// Multiple upload\nexport * from './foehn-upload/foehn-multi-upload/foehn-multi-upload.component';\nexport * from './foehn-upload/foehn-multi-upload/foehn-multi-upload.module';\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/bo-multi-upload.service';\nexport * from './foehn-upload/foehn-bo-multi-upload/bo-multi-upload.type';\nexport * from './foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.component';\nexport * from './foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.module';\n\n// Picture upload\nexport * from './foehn-upload/foehn-picture-upload/foehn-picture-upload.component';\nexport * from './foehn-upload/foehn-picture-upload/foehn-picture-upload.module';\n\n// Upload progress bar\nexport * from './foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.component';\nexport * from './foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.module';\nexport * from './foehn-upload/foehn-upload-progress-bar/upload-progress.service';\nexport * from './foehn-upload/foehn-upload-progress-bar/upload-progress.type';\n\n// Payment\nexport * from './sdk-epayment/sdk-epayment.component';\nexport * from './sdk-epayment/sdk-epayment.module';\nexport * from './sdk-epayment/sdk-epayment.service';\n\n// Modal\nexport * from './foehn-confirm-modal/foehn-confirm-modal.component';\nexport * from './foehn-confirm-modal/foehn-confirm-modal.module';\nexport * from './foehn-confirm-modal/foehn-confirm-modal.service';\nexport * from './foehn-confirm-modal/foehn-confirm-modal-content';\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-modal/foehn-modal.component';\nexport * from './foehn-modal/foehn-modal.module';\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/currency-formatter.directive';\nexport * from './directives/formatter.module';\nexport * from './directives/iban-formatter.directive';\nexport * from './directives/ide-formatter.directive';\nexport * from './directives/ndc-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-login/gesdem-action-recovery-login.component';\nexport * from './gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component';\n\n// Miscellaneous\nexport * from './foehn-misc/foehn-abbr.component';\nexport * from './foehn-misc/foehn-misc.module';\n\n// Menu Prestation\nexport * from './foehn-menu-prestation/abstract-list-item-detail-page.component';\nexport * from './foehn-menu-prestation/abstract-menu-page.component';\nexport * from './foehn-menu-prestation/abstract-page-from-menu.component';\nexport * from './foehn-menu-prestation/foehn-error-pill/foehn-error-pill.component';\nexport * from './foehn-menu-prestation/foehn-list-summary/foehn-list-item';\nexport * from './foehn-menu-prestation/foehn-list-summary/foehn-list-item-description';\nexport * from './foehn-menu-prestation/foehn-list-summary/foehn-list-summary.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-menu-prestation.module';\n\n// Date picker\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/focused-day.type';\nexport * from './foehn-date-picker/foehn-date-picker.component';\nexport * from './foehn-date-picker/foehn-date-picker.module';\nexport * from './foehn-date-picker/month-year.type';\nexport * from './foehn-date-picker-button/foehn-date-picker-button.component';\nexport * from './foehn-date-picker-button/foehn-date-picker-button.module';\n\n// foehn-decision-electronique\nexport * from './foehn-decision-electronique/foehn-decision-electronique.component';\nexport * from './foehn-decision-electronique/foehn-decision-electronique.module';\n\n// helpers\nexport * from './helpers/object.helper';\n\n// Refinf\nexport * from './refinf/model/address-type-light';\nexport * from './refinf/model/canton';\nexport * from './refinf/model/district';\nexport * from './refinf/model/municipality';\nexport * from './refinf/model/place-of-origin';\nexport * from './refinf/model/postal-locality';\n\n// Agenda\nexport * from './foehn-agenda/calendar.type';\nexport * from './foehn-agenda/current-week.type';\nexport * from './foehn-agenda/day-slots.type';\nexport * from './foehn-agenda/foehn-agenda.component';\nexport * from './foehn-agenda/foehn-agenda.module';\nexport * from './foehn-agenda/foehn-agenda-navigation/foehn-agenda-navigation.component';\nexport * from './foehn-agenda/foehn-agenda-timeslot-panel/foehn-agenda-timeslot-panel.component';\nexport * from './foehn-agenda/pagination-week.type';\nexport * from './foehn-agenda/selected-slot.type';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.SessionInfo","i2.GrowlBrokerService","i1.SdkDictionaryService","i1.ValidationHandlerService","i3.SdkDictionaryPipe","i1.FoehnValidationAlertSummaryComponent","i2","i2.FoehnPageService","i1.GrowlBrokerService","i2.ApplicationInfoService","i3","i3.ValidationHandlerService","i4","i5.GesdemErrorHandlerService","i6.SessionInfo","i1","i2.GesdemHandlerService","i3.GesdemActionRecoveryService","i3.GesdemEventService","i4.GesdemHandlerService","i5.ApplicationInfoService","i6.SdkDictionaryService","i7.UploadProgressService","i1.MultiUploadService","i2.FoehnDisplayAddressComponent","i1.ApplicationInfoService","i2.SessionInfo","i5.FoehnRecapSectionComponent","i4.FoehnDebugSummaryComponent","i1.GesdemHandlerService","i2.FoehnNavigationService","i4.SdkDictionaryService","i5","i6.FoehnIconInfoCircleComponent","i7.SdkDictionaryPipe","i2.FoehnModalComponent","i3.FoehnIconInfoCircleComponent","i1.FoehnIconTimesComponent","i4.FoehnValidationAlertsComponent","i5.FoehnHelpModalComponent","i6.SdkDictionaryPipe","i1.GesdemActionRecoveryService","i4.ApplicationInfoService","i6","i7.FoehnInputTextComponent","i8.FoehnFormComponent","i3.GesdemHandlerService","i4.GesdemEventService","i5.FoehnPageService","i6.SupportAlertService","i7.ApplicationInfoService","i8","i9.GesdemActionRecoveryLoginComponent","i10.FoehnDebugSummaryComponent","i11.SdkDictionaryPipe","i2.GesdemEventService","i3.FoehnPageService","i1.BreadcrumbEventService","i3.FoehnConfirmModalService","i4.SessionInfo","i3.FoehnValidationAlertsComponent","i4.FoehnHelpModalComponent","i5.SdkDictionaryPipe","i3.SdkDictionaryService","i5.FoehnSelectComponent","i6.FoehnSkipLinkComponent","i5.FoehnIconChevronUpComponent","i1.SupportAlertService","i3.SupportAlertComponent","i1.FoehnConfirmModalService","i3.FoehnModalComponent","i3.FoehnPageModalService","i5.FoehnModalComponent","i3.SupportAlertService","i4.FoehnNavigationService","i6.GesdemEventService","i7.BreadcrumbEventService","i9.SessionInfo","i10.FoehnPageModalService","i11.SdkDictionaryService","i12.SdkStatisticsService","i13","i14.FoehnBreadcrumbComponent","i15.FoehnGrowlComponent","i16.FoehnHeaderComponent","i17.FoehnFooterComponent","i18.FoehnUserConnectedAsComponent","i19.SupportAlertContainerComponent","i20.FoehnConfirmModalComponent","i21.FoehnIconLockComponent","i22.FoehnIconExternalLinkAltComponent","i23.FoehnStatusProgressBarComponent","i24.FoehnPageModalComponent","i25.SdkDictionaryPipe","i1.CurrencyHelper","i1.DateHelper","i2.FoehnIconTimesComponent","i1.FoehnNavigationService","i3.FoehnIconChevronLeftComponent","i4.FoehnIconChevronRightComponent","i6.FoehnSelectComponent","i7.FoehnAbbrComponent","i8.SdkDictionaryPipe","i2.FoehnIconCalendarComponent","i3.FoehnDatePickerComponent","i4.DisplayDatePipe","i1.FoehnInputNumberComponent","isDefined","i2.SdkDictionaryService","i3.FoehnIconTimesComponent","i6.FoehnValidationAlertsComponent","i7.FoehnHelpModalComponent","i2.FoehnValidationAlertsComponent","i3.FoehnDatePickerButtonComponent","i4.FoehnInputNumberComponent","leftPad","i3.FoehnInputNumberComponent","i4.SdkDictionaryPipe","i3.FoehnDateComponent","i4.FoehnTimeComponent","i5.FoehnValidationAlertsComponent","i6.FoehnHelpModalComponent","i2.FoehnInputTextComponent","i1.FoehnInputTextComponent","i4.FoehnAutocompleteComponent","i5.FoehnInputTextComponent","i7.FoehnInputForeignLocalityComponent","i8.FoehnInputForeignStreetComponent","i9.SdkDictionaryPipe","i2.FoehnAutocompleteComponent","i4.FoehnIconTimesComponent","i2.ValidationHandlerService","i5.GesdemHandlerService","i6.ApplicationInfoService","i7.SessionInfo","i9.FoehnInputTextComponent","i10.FoehnInputPhoneComponent","i11.FoehnFormComponent","i12.FoehnModalComponent","i4.FoehnIconChevronLeftComponent","i5.FoehnIconChevronRightComponent","i6.GesdemActionRecoveryRegistrationComponent","hasInputChanged","i2.FoehnIconChevronLeftComponent","i3.FoehnIconChevronRightComponent","i2.FoehnIconChevronDownComponent","i3.FoehnIconChevronUpComponent","i5.FoehnIconChevronLeftComponent","i6.FoehnIconChevronRightComponent","i7","i4.ValidationHandlerService","i1.RecaptchaService","i3.GrecaptchaComponent","i1.IamExpiredInterceptorService","i2.FoehnConfirmModalService","map","i1.UploadProgressService","i2.PendingUploadService","i3.ApplicationInfoService","i4.FoehnConfirmModalService","i5.SdkDictionaryService","i7.FoehnIconTimesComponent","i8.FoehnValidationAlertsComponent","i9","i10.FoehnUploadProgressBarComponent","i5.UploadProgressService","i1.BoMultiUploadService","i6.FoehnIconTimesComponent","i7.FoehnValidationAlertsComponent","i9.FoehnUploadProgressBarComponent","i10.SdkDictionaryPipe","i2.MultiUploadService","i8.FoehnUploadProgressBarComponent","i1.EPaymentService","i4.FoehnErrorPillComponent","i3.FoehnErrorPillComponent","i4.FoehnDatePickerButtonComponent","i5.FoehnAgendaNavigationComponent","i6.FoehnAgendaTimeslotPanelComponent"],"mappings":"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"}