@dsivd/prestations-ng 17.0.0-beta.3 → 17.0.0-beta.5

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 (221) hide show
  1. package/CHANGELOG.md +30 -1
  2. package/UPGRADING_V17.md +30 -21
  3. package/dsivd-prestations-ng-17.0.0-beta.5.tgz +0 -0
  4. package/esm2022/abstract-page-component.mjs +10 -6
  5. package/esm2022/directives/currency-formatter.directive.mjs +3 -3
  6. package/esm2022/directives/formatter.module.mjs +4 -4
  7. package/esm2022/directives/iban-formatter.directive.mjs +3 -3
  8. package/esm2022/directives/ide-formatter.directive.mjs +3 -3
  9. package/esm2022/directives/ndc-formatter.directive.mjs +3 -3
  10. package/esm2022/foehn-address/foehn-address.module.mjs +4 -4
  11. package/esm2022/foehn-address/foehn-display-address.component.mjs +3 -3
  12. package/esm2022/foehn-address/foehn-input-address.component.mjs +9 -5
  13. package/esm2022/foehn-address/foehn-input-foreign-locality.component.mjs +3 -3
  14. package/esm2022/foehn-address/foehn-input-foreign-street.component.mjs +3 -3
  15. package/esm2022/foehn-agenda/foehn-agenda-navigation/foehn-agenda-navigation.component.mjs +3 -3
  16. package/esm2022/foehn-agenda/foehn-agenda-timeslot-panel/foehn-agenda-timeslot-panel.component.mjs +3 -3
  17. package/esm2022/foehn-agenda/foehn-agenda.component.mjs +3 -3
  18. package/esm2022/foehn-agenda/foehn-agenda.module.mjs +4 -4
  19. package/esm2022/foehn-autocomplete/foehn-autocomplete.component.mjs +3 -3
  20. package/esm2022/foehn-autocomplete/foehn-autocomplete.module.mjs +4 -4
  21. package/esm2022/foehn-boolean/foehn-boolean-checkbox.component.mjs +3 -3
  22. package/esm2022/foehn-boolean/foehn-boolean-radio.component.mjs +3 -3
  23. package/esm2022/foehn-boolean/foehn-boolean.module.mjs +4 -4
  24. package/esm2022/foehn-breadcrumb/breadcrumb-event.service.mjs +24 -17
  25. package/esm2022/foehn-breadcrumb/foehn-breadcrumb.component.mjs +3 -3
  26. package/esm2022/foehn-breadcrumb/foehn-breadcrumb.module.mjs +4 -4
  27. package/esm2022/foehn-checkables/foehn-checkable-group.component.mjs +3 -3
  28. package/esm2022/foehn-checkables/foehn-checkables.module.mjs +4 -4
  29. package/esm2022/foehn-checkables/foehn-checkbox.component.mjs +3 -3
  30. package/esm2022/foehn-checkables/foehn-radio.component.mjs +3 -3
  31. package/esm2022/foehn-checkables/foehn-select.component.mjs +3 -3
  32. package/esm2022/foehn-confirm-modal/foehn-confirm-modal.component.mjs +3 -3
  33. package/esm2022/foehn-confirm-modal/foehn-confirm-modal.module.mjs +4 -4
  34. package/esm2022/foehn-confirm-modal/foehn-confirm-modal.service.mjs +3 -3
  35. package/esm2022/foehn-date-picker/foehn-date-picker.component.mjs +3 -3
  36. package/esm2022/foehn-date-picker/foehn-date-picker.module.mjs +4 -4
  37. package/esm2022/foehn-date-picker-button/foehn-date-picker-button.component.mjs +3 -3
  38. package/esm2022/foehn-date-picker-button/foehn-date-picker-button.module.mjs +4 -4
  39. package/esm2022/foehn-debug-summary/foehn-debug-summary.component.mjs +3 -3
  40. package/esm2022/foehn-debug-summary/foehn-debug-summary.component.module.mjs +4 -4
  41. package/esm2022/foehn-decision-electronique/foehn-decision-electronique.component.mjs +3 -3
  42. package/esm2022/foehn-decision-electronique/foehn-decision-electronique.module.mjs +4 -4
  43. package/esm2022/foehn-dropdown-menu/foehn-dropdown-menu.component.mjs +3 -3
  44. package/esm2022/foehn-dropdown-menu/foehn-dropdown-menu.module.mjs +4 -4
  45. package/esm2022/foehn-footer/foehn-footer.component.mjs +3 -3
  46. package/esm2022/foehn-footer/foehn-footer.module.mjs +4 -4
  47. package/esm2022/foehn-form/foehn-form.component.mjs +3 -3
  48. package/esm2022/foehn-form/foehn-form.module.mjs +4 -4
  49. package/esm2022/foehn-form/register-ng-model.service.mjs +3 -3
  50. package/esm2022/foehn-growl/foehn-growl.component.mjs +3 -3
  51. package/esm2022/foehn-growl/foehn-growl.module.mjs +4 -4
  52. package/esm2022/foehn-growl/growl-broker.service.mjs +3 -3
  53. package/esm2022/foehn-header/foehn-header.component.mjs +3 -3
  54. package/esm2022/foehn-header/foehn-header.module.mjs +4 -4
  55. package/esm2022/foehn-header/foehn-skip-link.component.mjs +3 -3
  56. package/esm2022/foehn-help-modal/foehn-help-modal.component.mjs +3 -3
  57. package/esm2022/foehn-help-modal/foehn-help-modal.module.mjs +4 -4
  58. package/esm2022/foehn-icons/abstract-icon-component.mjs +3 -3
  59. package/esm2022/foehn-icons/foehn-icon-calendar.component.mjs +3 -3
  60. package/esm2022/foehn-icons/foehn-icon-check-square-o.component.mjs +3 -3
  61. package/esm2022/foehn-icons/foehn-icon-check.component.mjs +3 -3
  62. package/esm2022/foehn-icons/foehn-icon-chevron-down.component.mjs +3 -3
  63. package/esm2022/foehn-icons/foehn-icon-chevron-left.component.mjs +3 -3
  64. package/esm2022/foehn-icons/foehn-icon-chevron-right.component.mjs +3 -3
  65. package/esm2022/foehn-icons/foehn-icon-chevron-up.component.mjs +3 -3
  66. package/esm2022/foehn-icons/foehn-icon-clock.component.mjs +3 -3
  67. package/esm2022/foehn-icons/foehn-icon-comment-dots.component.mjs +3 -3
  68. package/esm2022/foehn-icons/foehn-icon-edit.component.mjs +3 -3
  69. package/esm2022/foehn-icons/foehn-icon-external-link-alt.component.mjs +3 -3
  70. package/esm2022/foehn-icons/foehn-icon-file-pdf.component.mjs +3 -3
  71. package/esm2022/foehn-icons/foehn-icon-info-circle.component.mjs +3 -3
  72. package/esm2022/foehn-icons/foehn-icon-lock.component.mjs +3 -3
  73. package/esm2022/foehn-icons/foehn-icon-map-marker.component.mjs +3 -3
  74. package/esm2022/foehn-icons/foehn-icon-minus-circle.component.mjs +3 -3
  75. package/esm2022/foehn-icons/foehn-icon-pencil.component.mjs +3 -3
  76. package/esm2022/foehn-icons/foehn-icon-plus-circle.component.mjs +3 -3
  77. package/esm2022/foehn-icons/foehn-icon-plus-square.component.mjs +3 -3
  78. package/esm2022/foehn-icons/foehn-icon-search.component.mjs +3 -3
  79. package/esm2022/foehn-icons/foehn-icon-times.component.mjs +3 -3
  80. package/esm2022/foehn-icons/foehn-icon-trash-alt.component.mjs +3 -3
  81. package/esm2022/foehn-icons/foehn-icon-unlock-alt.component.mjs +3 -3
  82. package/esm2022/foehn-icons/foehn-icon-user.component.mjs +3 -3
  83. package/esm2022/foehn-icons/foehn-icons.module.mjs +4 -4
  84. package/esm2022/foehn-input/foehn-input-email.component.mjs +3 -3
  85. package/esm2022/foehn-input/foehn-input-hidden.component.mjs +3 -3
  86. package/esm2022/foehn-input/foehn-input-number.component.mjs +3 -3
  87. package/esm2022/foehn-input/foehn-input-password.component.mjs +3 -3
  88. package/esm2022/foehn-input/foehn-input-phone.component.mjs +3 -3
  89. package/esm2022/foehn-input/foehn-input-prefixed-text.component.mjs +3 -3
  90. package/esm2022/foehn-input/foehn-input-string.component.mjs +3 -3
  91. package/esm2022/foehn-input/foehn-input-text.component.mjs +3 -3
  92. package/esm2022/foehn-input/foehn-input-textarea.component.mjs +3 -3
  93. package/esm2022/foehn-input/foehn-input.component.mjs +3 -3
  94. package/esm2022/foehn-input/foehn-input.module.mjs +4 -4
  95. package/esm2022/foehn-input-date/foehn-input-date.component.mjs +3 -3
  96. package/esm2022/foehn-input-date-time/foehn-input-date-time.component.mjs +3 -3
  97. package/esm2022/foehn-input-time/foehn-input-time.component.mjs +6 -6
  98. package/esm2022/foehn-list/foehn-list.component.mjs +3 -3
  99. package/esm2022/foehn-list/foehn-list.module.mjs +4 -4
  100. package/esm2022/foehn-menu-prestation/abstract-list-item-detail-page.component.mjs +3 -3
  101. package/esm2022/foehn-menu-prestation/abstract-menu-page.component.mjs +3 -3
  102. package/esm2022/foehn-menu-prestation/abstract-page-from-menu.component.mjs +3 -3
  103. package/esm2022/foehn-menu-prestation/foehn-error-pill/foehn-error-pill.component.mjs +3 -3
  104. package/esm2022/foehn-menu-prestation/foehn-list-summary/foehn-list-summary.component.mjs +3 -3
  105. package/esm2022/foehn-menu-prestation/foehn-menu-items/foehn-menu-item/foehn-menu-item.component.mjs +3 -3
  106. package/esm2022/foehn-menu-prestation/foehn-menu-items/foehn-menu-item-transmit/foehn-menu-item-transmit.component.mjs +3 -3
  107. package/esm2022/foehn-menu-prestation/foehn-menu-prestation.module.mjs +4 -4
  108. package/esm2022/foehn-misc/foehn-abbr.component.mjs +3 -3
  109. package/esm2022/foehn-misc/foehn-misc.module.mjs +4 -4
  110. package/esm2022/foehn-modal/foehn-modal.component.mjs +3 -3
  111. package/esm2022/foehn-modal/foehn-modal.module.mjs +4 -4
  112. package/esm2022/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.component.mjs +3 -3
  113. package/esm2022/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.module.mjs +4 -4
  114. package/esm2022/foehn-nav13/foehn-input-nav13.component.mjs +3 -3
  115. package/esm2022/foehn-nav13/foehn-input-nav13.module.mjs +4 -4
  116. package/esm2022/foehn-navigation/abstract-foehn-navigation.component.mjs +3 -3
  117. package/esm2022/foehn-navigation/foehn-navigation/foehn-navigation.component.mjs +3 -3
  118. package/esm2022/foehn-navigation/foehn-navigation.module.mjs +4 -4
  119. package/esm2022/foehn-navigation/foehn-navigation.service.mjs +3 -3
  120. package/esm2022/foehn-navigation/foehn-simple-navigation/foehn-simple-navigation.component.mjs +3 -3
  121. package/esm2022/foehn-notfound/foehn-notfound.component.mjs +3 -3
  122. package/esm2022/foehn-notfound/foehn-notfound.module.mjs +4 -4
  123. package/esm2022/foehn-page/foehn-page-counter.component.mjs +3 -3
  124. package/esm2022/foehn-page/foehn-page-expiration-timer/demande-expiration-interceptor.mjs +3 -3
  125. package/esm2022/foehn-page/foehn-page-expiration-timer/demande-expiration.service.mjs +3 -3
  126. package/esm2022/foehn-page/foehn-page-expiration-timer/foehn-page-expiration-timer.component.mjs +3 -3
  127. package/esm2022/foehn-page/foehn-page-modal.component.mjs +3 -3
  128. package/esm2022/foehn-page/foehn-page-modal.service.mjs +3 -3
  129. package/esm2022/foehn-page/foehn-page.component.mjs +3 -3
  130. package/esm2022/foehn-page/foehn-page.module.mjs +4 -4
  131. package/esm2022/foehn-page/foehn-page.service.mjs +3 -3
  132. package/esm2022/foehn-page/foehn-transmit-waiting-modal/demande-transmit-interceptor.mjs +3 -3
  133. package/esm2022/foehn-page/foehn-transmit-waiting-modal/foehn-transmit-waiting-modal.component.mjs +3 -3
  134. package/esm2022/foehn-page/foehn-transmit-waiting-modal/foehn-transmit-waiting-modal.service.mjs +3 -3
  135. package/esm2022/foehn-recap-section/foehn-recap-section.component.mjs +3 -3
  136. package/esm2022/foehn-recap-section/foehn-recap-section.module.mjs +4 -4
  137. package/esm2022/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.component.mjs +3 -3
  138. package/esm2022/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.module.mjs +4 -4
  139. package/esm2022/foehn-status-progress-bar/foehn-status-progress-bar.component.mjs +3 -3
  140. package/esm2022/foehn-status-progress-bar/foehn-status-progress-bar.module.mjs +4 -4
  141. package/esm2022/foehn-table/foehn-table.component.mjs +3 -3
  142. package/esm2022/foehn-table/foehn-table.module.mjs +4 -4
  143. package/esm2022/foehn-upload/abstract-foehn-uploader.component.mjs +3 -3
  144. package/esm2022/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.service.mjs +3 -3
  145. package/esm2022/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.component.mjs +3 -3
  146. package/esm2022/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.module.mjs +4 -4
  147. package/esm2022/foehn-upload/foehn-multi-upload/foehn-multi-upload.component.mjs +3 -3
  148. package/esm2022/foehn-upload/foehn-multi-upload/foehn-multi-upload.module.mjs +4 -4
  149. package/esm2022/foehn-upload/foehn-multi-upload/multi-upload.service.mjs +3 -3
  150. package/esm2022/foehn-upload/foehn-multi-upload/pending-upload.service.mjs +8 -6
  151. package/esm2022/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.mjs +3 -3
  152. package/esm2022/foehn-upload/foehn-picture-upload/foehn-picture-upload.module.mjs +4 -4
  153. package/esm2022/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.component.mjs +3 -3
  154. package/esm2022/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.module.mjs +4 -4
  155. package/esm2022/foehn-upload/foehn-upload-progress-bar/upload-progress.service.mjs +3 -3
  156. package/esm2022/foehn-upload/page-upload-limit.service.mjs +3 -3
  157. package/esm2022/foehn-user-connected-as/foehn-user-connected-as.component.mjs +3 -3
  158. package/esm2022/foehn-user-connected-as/foehn-user-connected-as.module.mjs +4 -4
  159. package/esm2022/foehn-validation-alert-summary/foehn-validation-alert-summary.component.mjs +3 -3
  160. package/esm2022/foehn-validation-alert-summary/foehn-validation-alert-summary.module.mjs +4 -4
  161. package/esm2022/foehn-validation-alerts/foehn-validation-alerts.component.mjs +3 -3
  162. package/esm2022/foehn-validation-alerts/foehn-validation-alerts.module.mjs +4 -4
  163. package/esm2022/gesdem/gesdem-error-handler.service.mjs +5 -4
  164. package/esm2022/gesdem/gesdem-event.service.mjs +3 -3
  165. package/esm2022/gesdem/gesdem-handler.service.mjs +11 -5
  166. package/esm2022/gesdem-action-recovery/gesdem-action-recovery-login/gesdem-action-recovery-login.component.mjs +3 -3
  167. package/esm2022/gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component.mjs +3 -3
  168. package/esm2022/gesdem-action-recovery/gesdem-action-recovery.module.mjs +4 -4
  169. package/esm2022/gesdem-action-recovery/gesdem-action-recovery.service.mjs +3 -3
  170. package/esm2022/gesdem-confirmation/gesdem-confirmation.component.mjs +17 -13
  171. package/esm2022/gesdem-confirmation/gesdem-confirmation.module.mjs +4 -4
  172. package/esm2022/gesdem-error/gesdem-error.component.mjs +8 -6
  173. package/esm2022/gesdem-error/gesdem-error.module.mjs +4 -4
  174. package/esm2022/pipes/currency.pipe.mjs +3 -3
  175. package/esm2022/pipes/date.pipe.mjs +3 -3
  176. package/esm2022/pipes/formatIde.pipe.mjs +3 -3
  177. package/esm2022/pipes/pipes.module.mjs +4 -4
  178. package/esm2022/prestations-ng-core.module.mjs +4 -4
  179. package/esm2022/sdk-appinfo/application-info.mjs +7 -1
  180. package/esm2022/sdk-appinfo/application-info.service.mjs +24 -6
  181. package/esm2022/sdk-currency/currency.helper.mjs +3 -3
  182. package/esm2022/sdk-date/date.helper.mjs +3 -3
  183. package/esm2022/sdk-dictionary/default-dictionary.mjs +6 -3
  184. package/esm2022/sdk-dictionary/sdk-dictionary.module.mjs +4 -4
  185. package/esm2022/sdk-dictionary/sdk-dictionary.pipe.mjs +3 -3
  186. package/esm2022/sdk-dictionary/sdk-dictionary.service.mjs +3 -3
  187. package/esm2022/sdk-drafts/drafts-container.component.mjs +3 -3
  188. package/esm2022/sdk-drafts/drafts.module.mjs +4 -4
  189. package/esm2022/sdk-drafts/drafts.service.mjs +3 -3
  190. package/esm2022/sdk-epayment/sdk-epayment.component.mjs +3 -3
  191. package/esm2022/sdk-epayment/sdk-epayment.module.mjs +4 -4
  192. package/esm2022/sdk-epayment/sdk-epayment.service.mjs +3 -3
  193. package/esm2022/sdk-events-logger/sdk-events-logger.service.mjs +3 -3
  194. package/esm2022/sdk-recaptcha/grecaptcha/grecaptcha.component.mjs +3 -3
  195. package/esm2022/sdk-recaptcha/recaptcha.service.mjs +3 -3
  196. package/esm2022/sdk-recaptcha/sdk-recaptcha.component.mjs +3 -3
  197. package/esm2022/sdk-recaptcha/sdk-recaptcha.module.mjs +4 -4
  198. package/esm2022/sdk-redirect/iam-expired-interceptor.service.mjs +7 -9
  199. package/esm2022/sdk-redirect/redirect.component.mjs +27 -16
  200. package/esm2022/sdk-redirect/sdk-redirect.module.mjs +4 -4
  201. package/esm2022/sdk-session-info/session-info-with-application.service.mjs +3 -3
  202. package/esm2022/sdk-session-info/session-info.service.mjs +3 -3
  203. package/esm2022/sdk-statistics/sdk-statistics.service.mjs +3 -3
  204. package/esm2022/sdk-support-alert/support-alert-container.component.mjs +3 -3
  205. package/esm2022/sdk-support-alert/support-alert.component.mjs +3 -3
  206. package/esm2022/sdk-support-alert/support-alert.module.mjs +4 -4
  207. package/esm2022/sdk-support-alert/support-alert.service.mjs +3 -3
  208. package/esm2022/supported-browser.mjs +2 -2
  209. package/esm2022/validation/validation-handler.service.mjs +3 -3
  210. package/fesm2022/dsivd-prestations-ng.mjs +958 -896
  211. package/fesm2022/dsivd-prestations-ng.mjs.map +1 -1
  212. package/foehn-address/foehn-input-address.component.d.ts +2 -1
  213. package/foehn-breadcrumb/breadcrumb-event.service.d.ts +3 -1
  214. package/gesdem/gesdem-error-handler.service.d.ts +1 -0
  215. package/gesdem/gesdem-handler.service.d.ts +1 -1
  216. package/gesdem-confirmation/gesdem-confirmation.component.d.ts +2 -0
  217. package/gesdem-error/gesdem-error.component.d.ts +1 -0
  218. package/package.json +1 -1
  219. package/sdk-appinfo/application-info.d.ts +3 -2
  220. package/sdk-redirect/redirect.component.d.ts +4 -2
  221. package/dsivd-prestations-ng-17.0.0-beta.3.tgz +0 -0
@@ -113,10 +113,10 @@ export class FoehnTableComponent {
113
113
  const start = (this.currentPage - 1) * this.itemsPerPage;
114
114
  this.filteredList = this._list.slice(start, start + this.itemsPerPage);
115
115
  }
116
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FoehnTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
117
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: FoehnTableComponent, selector: "foehn-table", inputs: { itemsPerPage: "itemsPerPage", id: "id", previousLabel: "previousLabel", nextLabel: "nextLabel", totalElements: "totalElements", fixedPageCount: "fixedPageCount", columnsConfiguration: "columnsConfiguration", sort: "sort", list: "list", trackByFn: "trackByFn" }, outputs: { pageChange: "pageChange", sortChange: "sortChange" }, usesOnChanges: true, ngImport: i0, template: "<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=\"\n let col of columnsConfiguration;\n trackBy: trackFoehnTableColumnConfiguration\n \"\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=\"ms-3\"\n *ngIf=\"sort.sortDirection === 'ASC'\"\n >\n <foehn-icon-chevron-up></foehn-icon-chevron-up>\n </span>\n <span\n class=\"ms-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=\"\n let col of columnsConfiguration;\n trackBy: trackFoehnTableColumnConfiguration\n \"\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: 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 me-2\"\n >\n <fa-icon\n aria-hidden=\"true\"\n [icon]=\"iconDef.icon\"\n [title]=\"iconDef.label\"\n ></fa-icon>\n <span class=\"visually-hidden\">\n {{ iconDef.label }}\n </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 <span\n [innerHTML]=\"col.valueGetter(item)\"\n class=\"cell-vertical-align-middle\"\n ></span>\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=\"visually-hidden\">:</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=\"visually-hidden\">:</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", styles: [".btn-no-extra{padding:0;border:none;font-weight:400;text-decoration-line:none}.vd-pagination__link-reset{background:none;border:none;font-weight:inherit;text-decoration-line:none;text-align:inherit;cursor:pointer}.vd-pagination__link-reset:focus{background-color:var(--vd-focus)}.cell-vertical-align-middle{vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.FoehnIconChevronDownComponent, selector: "foehn-icon-chevron-down" }, { kind: "component", type: i3.FoehnIconChevronUpComponent, selector: "foehn-icon-chevron-up" }, { kind: "component", type: i4.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "component", type: i5.FoehnIconChevronLeftComponent, selector: "foehn-icon-chevron-left" }, { kind: "component", type: i6.FoehnIconChevronRightComponent, selector: "foehn-icon-chevron-right" }, { kind: "pipe", type: i7.SdkDictionaryPipe, name: "fromDictionary" }] }); }
116
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FoehnTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
117
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: FoehnTableComponent, selector: "foehn-table", inputs: { itemsPerPage: "itemsPerPage", id: "id", previousLabel: "previousLabel", nextLabel: "nextLabel", totalElements: "totalElements", fixedPageCount: "fixedPageCount", columnsConfiguration: "columnsConfiguration", sort: "sort", list: "list", trackByFn: "trackByFn" }, outputs: { pageChange: "pageChange", sortChange: "sortChange" }, usesOnChanges: true, ngImport: i0, template: "<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=\"\n let col of columnsConfiguration;\n trackBy: trackFoehnTableColumnConfiguration\n \"\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=\"ms-3\"\n *ngIf=\"sort.sortDirection === 'ASC'\"\n >\n <foehn-icon-chevron-up></foehn-icon-chevron-up>\n </span>\n <span\n class=\"ms-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=\"\n let col of columnsConfiguration;\n trackBy: trackFoehnTableColumnConfiguration\n \"\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: 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 me-2\"\n >\n <fa-icon\n aria-hidden=\"true\"\n [icon]=\"iconDef.icon\"\n [title]=\"iconDef.label\"\n ></fa-icon>\n <span class=\"visually-hidden\">\n {{ iconDef.label }}\n </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 <span\n [innerHTML]=\"col.valueGetter(item)\"\n class=\"cell-vertical-align-middle\"\n ></span>\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=\"visually-hidden\">:</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=\"visually-hidden\">:</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", styles: [".btn-no-extra{padding:0;border:none;font-weight:400;text-decoration-line:none}.vd-pagination__link-reset{background:none;border:none;font-weight:inherit;text-decoration-line:none;text-align:inherit;cursor:pointer}.vd-pagination__link-reset:focus{background-color:var(--vd-focus)}.cell-vertical-align-middle{vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.FoehnIconChevronDownComponent, selector: "foehn-icon-chevron-down" }, { kind: "component", type: i3.FoehnIconChevronUpComponent, selector: "foehn-icon-chevron-up" }, { kind: "component", type: i4.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "component", type: i5.FoehnIconChevronLeftComponent, selector: "foehn-icon-chevron-left" }, { kind: "component", type: i6.FoehnIconChevronRightComponent, selector: "foehn-icon-chevron-right" }, { kind: "pipe", type: i7.SdkDictionaryPipe, name: "fromDictionary" }] }); }
118
118
  }
119
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FoehnTableComponent, decorators: [{
119
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FoehnTableComponent, decorators: [{
120
120
  type: Component,
121
121
  args: [{ selector: 'foehn-table', template: "<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=\"\n let col of columnsConfiguration;\n trackBy: trackFoehnTableColumnConfiguration\n \"\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=\"ms-3\"\n *ngIf=\"sort.sortDirection === 'ASC'\"\n >\n <foehn-icon-chevron-up></foehn-icon-chevron-up>\n </span>\n <span\n class=\"ms-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=\"\n let col of columnsConfiguration;\n trackBy: trackFoehnTableColumnConfiguration\n \"\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: 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 me-2\"\n >\n <fa-icon\n aria-hidden=\"true\"\n [icon]=\"iconDef.icon\"\n [title]=\"iconDef.label\"\n ></fa-icon>\n <span class=\"visually-hidden\">\n {{ iconDef.label }}\n </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 <span\n [innerHTML]=\"col.valueGetter(item)\"\n class=\"cell-vertical-align-middle\"\n ></span>\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=\"visually-hidden\">:</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=\"visually-hidden\">:</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", styles: [".btn-no-extra{padding:0;border:none;font-weight:400;text-decoration-line:none}.vd-pagination__link-reset{background:none;border:none;font-weight:inherit;text-decoration-line:none;text-align:inherit;cursor:pointer}.vd-pagination__link-reset:focus{background-color:var(--vd-focus)}.cell-vertical-align-middle{vertical-align:middle}\n"] }]
122
122
  }], propDecorators: { itemsPerPage: [{
@@ -6,17 +6,17 @@ import { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';
6
6
  import { FoehnTableComponent } from './foehn-table.component';
7
7
  import * as i0 from "@angular/core";
8
8
  export class FoehnTableModule {
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FoehnTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.1", ngImport: i0, type: FoehnTableModule, declarations: [FoehnTableComponent], imports: [CommonModule,
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FoehnTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.3", ngImport: i0, type: FoehnTableModule, declarations: [FoehnTableComponent], imports: [CommonModule,
11
11
  FoehnIconsModule,
12
12
  SdkDictionaryModule,
13
13
  RouterModule], exports: [FoehnTableComponent] }); }
14
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FoehnTableModule, imports: [CommonModule,
14
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FoehnTableModule, imports: [CommonModule,
15
15
  FoehnIconsModule,
16
16
  SdkDictionaryModule,
17
17
  RouterModule] }); }
18
18
  }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FoehnTableModule, decorators: [{
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FoehnTableModule, decorators: [{
20
20
  type: NgModule,
21
21
  args: [{
22
22
  imports: [
@@ -178,10 +178,10 @@ export class AbstractFoehnUploaderComponent extends FoehnInputComponent {
178
178
  }
179
179
  return false;
180
180
  }
181
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: AbstractFoehnUploaderComponent, deps: [{ token: i1.ApplicationInfoService }, { token: i2.FoehnConfirmModalService }, { token: i3.SdkDictionaryService }, { token: i4.GrowlBrokerService }], target: i0.ɵɵFactoryTarget.Directive }); }
182
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.1", type: AbstractFoehnUploaderComponent, inputs: { required: "required", dragAndDrop: "dragAndDrop", showUploadButton: "showUploadButton", readonly: "readonly", hideGlobalInfos: "hideGlobalInfos", multiple: "multiple", key: "key", chooseButtonLabel: "chooseButtonLabel", chooseButtonLabelMultiple: "chooseButtonLabelMultiple", dropZoneLabel: "dropZoneLabel", dropZoneLabelMultiple: "dropZoneLabelMultiple", overrideAcceptedExtensions: "overrideAcceptedExtensions", overrideMaxFileNameLength: "overrideMaxFileNameLength", overrideIllegalCharacters: "overrideIllegalCharacters", showDeleteConfirmationMessage: "showDeleteConfirmationMessage", deleteConfirmationMessage: "deleteConfirmationMessage", maxSimultaneousSelectedFiles: "maxSimultaneousSelectedFiles", shouldDisplayFileSavedConfirmation: "shouldDisplayFileSavedConfirmation", maxFilesCount: "maxFilesCount", maxFilesSizeInMo: "maxFilesSizeInMo" }, host: { listeners: { "window:dragover": "onDocumentDragOver($event)", "window:dragleave": "onDocumentDragLeave($event)", "window:drop": "onDocumentDrop($event)" } }, usesInheritance: true, ngImport: i0 }); }
181
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: AbstractFoehnUploaderComponent, deps: [{ token: i1.ApplicationInfoService }, { token: i2.FoehnConfirmModalService }, { token: i3.SdkDictionaryService }, { token: i4.GrowlBrokerService }], target: i0.ɵɵFactoryTarget.Directive }); }
182
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.3", type: AbstractFoehnUploaderComponent, inputs: { required: "required", dragAndDrop: "dragAndDrop", showUploadButton: "showUploadButton", readonly: "readonly", hideGlobalInfos: "hideGlobalInfos", multiple: "multiple", key: "key", chooseButtonLabel: "chooseButtonLabel", chooseButtonLabelMultiple: "chooseButtonLabelMultiple", dropZoneLabel: "dropZoneLabel", dropZoneLabelMultiple: "dropZoneLabelMultiple", overrideAcceptedExtensions: "overrideAcceptedExtensions", overrideMaxFileNameLength: "overrideMaxFileNameLength", overrideIllegalCharacters: "overrideIllegalCharacters", showDeleteConfirmationMessage: "showDeleteConfirmationMessage", deleteConfirmationMessage: "deleteConfirmationMessage", maxSimultaneousSelectedFiles: "maxSimultaneousSelectedFiles", shouldDisplayFileSavedConfirmation: "shouldDisplayFileSavedConfirmation", maxFilesCount: "maxFilesCount", maxFilesSizeInMo: "maxFilesSizeInMo" }, host: { listeners: { "window:dragover": "onDocumentDragOver($event)", "window:dragleave": "onDocumentDragLeave($event)", "window:drop": "onDocumentDrop($event)" } }, usesInheritance: true, ngImport: i0 }); }
183
183
  }
184
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: AbstractFoehnUploaderComponent, decorators: [{
184
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: AbstractFoehnUploaderComponent, decorators: [{
185
185
  type: Directive
186
186
  }], ctorParameters: () => [{ type: i1.ApplicationInfoService }, { type: i2.FoehnConfirmModalService }, { type: i3.SdkDictionaryService }, { type: i4.GrowlBrokerService }], propDecorators: { required: [{
187
187
  type: Input
@@ -112,10 +112,10 @@ export class BoMultiUploadService {
112
112
  }
113
113
  }
114
114
  }
115
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: BoMultiUploadService, deps: [{ token: i1.HttpClient }, { token: i2.GrowlBrokerService }, { token: i3.ApplicationInfoService }, { token: i4.SdkDictionaryService }, { token: i5.UploadProgressService }, { token: i6.IamExpiredInterceptorService }], target: i0.ɵɵFactoryTarget.Injectable }); }
116
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: BoMultiUploadService, providedIn: 'root' }); }
115
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: BoMultiUploadService, deps: [{ token: i1.HttpClient }, { token: i2.GrowlBrokerService }, { token: i3.ApplicationInfoService }, { token: i4.SdkDictionaryService }, { token: i5.UploadProgressService }, { token: i6.IamExpiredInterceptorService }], target: i0.ɵɵFactoryTarget.Injectable }); }
116
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: BoMultiUploadService, providedIn: 'root' }); }
117
117
  }
118
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: BoMultiUploadService, decorators: [{
118
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: BoMultiUploadService, decorators: [{
119
119
  type: Injectable,
120
120
  args: [{
121
121
  providedIn: 'root'
@@ -161,8 +161,8 @@ export class FoehnBoMultiUploadComponent extends AbstractFoehnUploaderComponent
161
161
  // Then we ensure we take only one file from current selection
162
162
  return files.slice(0, 1);
163
163
  }
164
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FoehnBoMultiUploadComponent, deps: [{ token: i1.BoMultiUploadService }, { token: i2.ApplicationInfoService }, { token: i3.FoehnConfirmModalService }, { token: i4.SdkDictionaryService }, { token: i5.GrowlBrokerService }, { token: i6.PageUploadLimitService }], target: i0.ɵɵFactoryTarget.Component }); }
165
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: FoehnBoMultiUploadComponent, selector: "foehn-bo-multi-upload", inputs: { uploadUrl: "uploadUrl", deleteUrl: "deleteUrl", downloadUrl: "downloadUrl" }, outputs: { documentDeleted: "documentDeleted" }, providers: [
164
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FoehnBoMultiUploadComponent, deps: [{ token: i1.BoMultiUploadService }, { token: i2.ApplicationInfoService }, { token: i3.FoehnConfirmModalService }, { token: i4.SdkDictionaryService }, { token: i5.GrowlBrokerService }, { token: i6.PageUploadLimitService }], target: i0.ɵɵFactoryTarget.Component }); }
165
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: FoehnBoMultiUploadComponent, selector: "foehn-bo-multi-upload", inputs: { uploadUrl: "uploadUrl", deleteUrl: "deleteUrl", downloadUrl: "downloadUrl" }, outputs: { documentDeleted: "documentDeleted" }, providers: [
166
166
  {
167
167
  provide: FoehnInputComponent,
168
168
  useExisting: forwardRef(() => FoehnBoMultiUploadComponent),
@@ -172,7 +172,7 @@ export class FoehnBoMultiUploadComponent extends AbstractFoehnUploaderComponent
172
172
  { provide: UploadProgressService, useClass: UploadProgressService }
173
173
  ], usesInheritance: true, ngImport: i0, template: "<div\n class=\"form-group container-box\"\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 class=\"form-label\"\n [attr.for]=\"buildChildId()\"\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'visually-hidden' : 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=\"ms-1 me-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 [attr.disabled]=\"disabled ? 'disabled' : null\"\n type=\"button\"\n class=\"btn btn-link 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 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 [attr.disabled]=\"disabled ? 'disabled' : null\"\n [ngClass]=\"{ 'visually-hidden': !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 && !disabled\"\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", styles: [".dropfile{width:300px;border:3px dashed #bbb;text-align:center;margin-top:10px;cursor:pointer;padding:15px 3px}.dropfile-border-transparent{border-color:#fff}.actual-input{display:none}.file-list{margin-top:20px}.icon-button{border:0}.icon-button:hover{cursor:pointer}:host ::ng-deep .svg-inline--fa{color:#000!important}.drop-zone-highlight{outline:3px dashed #bbb}.container-box{border:1px solid #ededed;background-color:#fbfbfb;padding:.5rem}.container-box.vd-form-group-danger{border-left:5px solid var(--vd-danger);padding-left:1rem}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.FoehnIconTimesComponent, selector: "foehn-icon-times" }, { kind: "component", type: i9.FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { kind: "directive", type: i10.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i11.FoehnUploadProgressBarComponent, selector: "foehn-upload-progress-bar", inputs: ["progressBarTriggerHtmlElement"] }, { kind: "pipe", type: i12.SdkDictionaryPipe, name: "fromDictionary" }] }); }
174
174
  }
175
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FoehnBoMultiUploadComponent, decorators: [{
175
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FoehnBoMultiUploadComponent, decorators: [{
176
176
  type: Component,
177
177
  args: [{ selector: 'foehn-bo-multi-upload', providers: [
178
178
  {
@@ -8,21 +8,21 @@ import { FoehnUploadProgressBarModule } from '../foehn-upload-progress-bar/foehn
8
8
  import { FoehnBoMultiUploadComponent } from './foehn-bo-multi-upload.component';
9
9
  import * as i0 from "@angular/core";
10
10
  export class FoehnBoMultiUploadModule {
11
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FoehnBoMultiUploadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
12
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.1", ngImport: i0, type: FoehnBoMultiUploadModule, declarations: [FoehnBoMultiUploadComponent], imports: [CommonModule,
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FoehnBoMultiUploadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
12
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.3", ngImport: i0, type: FoehnBoMultiUploadModule, declarations: [FoehnBoMultiUploadComponent], imports: [CommonModule,
13
13
  FoehnIconsModule,
14
14
  FoehnValidationAlertsModule,
15
15
  SdkDictionaryModule,
16
16
  FormsModule,
17
17
  FoehnUploadProgressBarModule], exports: [FoehnBoMultiUploadComponent] }); }
18
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FoehnBoMultiUploadModule, imports: [CommonModule,
18
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FoehnBoMultiUploadModule, imports: [CommonModule,
19
19
  FoehnIconsModule,
20
20
  FoehnValidationAlertsModule,
21
21
  SdkDictionaryModule,
22
22
  FormsModule,
23
23
  FoehnUploadProgressBarModule] }); }
24
24
  }
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FoehnBoMultiUploadModule, decorators: [{
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FoehnBoMultiUploadModule, decorators: [{
26
26
  type: NgModule,
27
27
  args: [{
28
28
  imports: [
@@ -217,8 +217,8 @@ export class FoehnMultiUploadComponent extends AbstractFoehnUploaderComponent {
217
217
  // Then we ensure we take only one file from current selection
218
218
  return files.slice(0, 1);
219
219
  }
220
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FoehnMultiUploadComponent, deps: [{ token: i1.MultiUploadService }, { token: i2.PendingUploadService }, { token: i3.ApplicationInfoService }, { token: i4.FoehnConfirmModalService }, { token: i5.SdkDictionaryService }, { token: i6.GrowlBrokerService }, { token: i7.PageUploadLimitService }], target: i0.ɵɵFactoryTarget.Component }); }
221
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: FoehnMultiUploadComponent, selector: "foehn-multi-upload", inputs: { url: "url", reference: "reference" }, providers: [
220
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FoehnMultiUploadComponent, deps: [{ token: i1.MultiUploadService }, { token: i2.PendingUploadService }, { token: i3.ApplicationInfoService }, { token: i4.FoehnConfirmModalService }, { token: i5.SdkDictionaryService }, { token: i6.GrowlBrokerService }, { token: i7.PageUploadLimitService }], target: i0.ɵɵFactoryTarget.Component }); }
221
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: FoehnMultiUploadComponent, selector: "foehn-multi-upload", inputs: { url: "url", reference: "reference" }, providers: [
222
222
  {
223
223
  provide: FoehnInputComponent,
224
224
  useExisting: forwardRef(() => FoehnMultiUploadComponent),
@@ -228,7 +228,7 @@ export class FoehnMultiUploadComponent extends AbstractFoehnUploaderComponent {
228
228
  { provide: UploadProgressService, useClass: UploadProgressService }
229
229
  ], usesInheritance: true, ngImport: i0, template: "<div\n class=\"form-group container-box\"\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 class=\"form-label\"\n [attr.for]=\"buildChildId()\"\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'visually-hidden' : 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=\"ms-1 me-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 [attr.disabled]=\"disabled ? 'disabled' : null\"\n type=\"button\"\n class=\"btn btn-link 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=\"ms-1 me-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 [attr.disabled]=\"disabled ? 'disabled' : null\"\n type=\"button\"\n class=\"btn btn-link 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 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]=\"{ 'visually-hidden': !showUploadButton }\"\n [attr.id]=\"buildChildId()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-describedby]=\"buildId('ErrorsContainer')\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n (click)=\"inputFile.click()\"\n #entryComponent\n >\n {{ multiple ? chooseButtonLabelMultiple : chooseButtonLabel }}\n </button>\n\n <div\n *ngIf=\"dragAndDrop && !disabled\"\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", styles: [".dropfile{width:300px;border:3px dashed #bbb;text-align:center;margin-top:10px;cursor:pointer;padding:15px 3px}.dropfile-border-transparent{border-color:#fff}.actual-input{display:none}.file-list{margin-top:20px}.icon-button{border:0}.icon-button:hover{cursor:pointer}:host ::ng-deep .svg-inline--fa{color:#000!important}.drop-zone-highlight{outline:3px dashed #bbb}.container-box{border:1px solid #ededed;background-color:#fbfbfb;padding:.5rem}.container-box.vd-form-group-danger{border-left:5px solid var(--vd-danger);padding-left:1rem}\n"], dependencies: [{ kind: "directive", type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i9.FoehnIconTimesComponent, selector: "foehn-icon-times" }, { kind: "component", type: i10.FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { kind: "directive", type: i11.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i11.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i11.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i12.FoehnUploadProgressBarComponent, selector: "foehn-upload-progress-bar", inputs: ["progressBarTriggerHtmlElement"] }, { kind: "pipe", type: i13.SdkDictionaryPipe, name: "fromDictionary" }] }); }
230
230
  }
231
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FoehnMultiUploadComponent, decorators: [{
231
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FoehnMultiUploadComponent, decorators: [{
232
232
  type: Component,
233
233
  args: [{ selector: 'foehn-multi-upload', providers: [
234
234
  {
@@ -8,21 +8,21 @@ import { FoehnUploadProgressBarModule } from '../foehn-upload-progress-bar/foehn
8
8
  import { FoehnMultiUploadComponent } from './foehn-multi-upload.component';
9
9
  import * as i0 from "@angular/core";
10
10
  export class FoehnMultiUploadModule {
11
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FoehnMultiUploadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
12
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.1", ngImport: i0, type: FoehnMultiUploadModule, declarations: [FoehnMultiUploadComponent], imports: [CommonModule,
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FoehnMultiUploadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
12
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.3", ngImport: i0, type: FoehnMultiUploadModule, declarations: [FoehnMultiUploadComponent], imports: [CommonModule,
13
13
  FoehnIconsModule,
14
14
  FoehnValidationAlertsModule,
15
15
  SdkDictionaryModule,
16
16
  FormsModule,
17
17
  FoehnUploadProgressBarModule], exports: [FoehnMultiUploadComponent] }); }
18
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FoehnMultiUploadModule, imports: [CommonModule,
18
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FoehnMultiUploadModule, imports: [CommonModule,
19
19
  FoehnIconsModule,
20
20
  FoehnValidationAlertsModule,
21
21
  SdkDictionaryModule,
22
22
  FormsModule,
23
23
  FoehnUploadProgressBarModule] }); }
24
24
  }
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FoehnMultiUploadModule, decorators: [{
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FoehnMultiUploadModule, decorators: [{
26
26
  type: NgModule,
27
27
  args: [{
28
28
  imports: [
@@ -121,10 +121,10 @@ export class MultiUploadService {
121
121
  }
122
122
  }
123
123
  }
124
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: MultiUploadService, deps: [{ token: i1.HttpClient }, { token: i2.GrowlBrokerService }, { token: i3.GesdemHandlerService }, { token: i4.ApplicationInfoService }, { token: i5.SdkDictionaryService }, { token: i6.UploadProgressService }, { token: i7.IamExpiredInterceptorService }], target: i0.ɵɵFactoryTarget.Injectable }); }
125
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: MultiUploadService, providedIn: 'root' }); }
124
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: MultiUploadService, deps: [{ token: i1.HttpClient }, { token: i2.GrowlBrokerService }, { token: i3.GesdemHandlerService }, { token: i4.ApplicationInfoService }, { token: i5.SdkDictionaryService }, { token: i6.UploadProgressService }, { token: i7.IamExpiredInterceptorService }], target: i0.ɵɵFactoryTarget.Injectable }); }
125
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: MultiUploadService, providedIn: 'root' }); }
126
126
  }
127
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: MultiUploadService, decorators: [{
127
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: MultiUploadService, decorators: [{
128
128
  type: Injectable,
129
129
  args: [{
130
130
  providedIn: 'root'
@@ -103,8 +103,10 @@ export class PendingUploadService {
103
103
  this.pendingFilesByFormKey.delete(formKey);
104
104
  // save the form when every document has been uploaded
105
105
  if (this.pendingFilesByFormKey.size === 0) {
106
- // eslint-disable-next-line rxjs/no-nested-subscribe
107
- this.gesdemService.save(form, false).subscribe(() => {
106
+ this.gesdemService
107
+ .save(form, false, false)
108
+ // eslint-disable-next-line rxjs/no-nested-subscribe
109
+ .subscribe(() => {
108
110
  this.attachmentsUploadedSubject.next(form);
109
111
  // Dispatch errors coming from server
110
112
  if (!!mergedResponse.errors.length) {
@@ -149,13 +151,13 @@ export class PendingUploadService {
149
151
  obj[path[0]] = value;
150
152
  }
151
153
  }
152
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: PendingUploadService, deps: [{ token: i1.MultiUploadService }, { token: i2.GesdemHandlerService }, { token: i3.GesdemEventService }], target: i0.ɵɵFactoryTarget.Injectable }); }
153
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: PendingUploadService, providedIn: 'root' }); }
154
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: PendingUploadService, deps: [{ token: i1.MultiUploadService }, { token: i2.GesdemHandlerService }, { token: i3.GesdemEventService }], target: i0.ɵɵFactoryTarget.Injectable }); }
155
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: PendingUploadService, providedIn: 'root' }); }
154
156
  }
155
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: PendingUploadService, decorators: [{
157
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: PendingUploadService, decorators: [{
156
158
  type: Injectable,
157
159
  args: [{
158
160
  providedIn: 'root'
159
161
  }]
160
162
  }], ctorParameters: () => [{ type: i1.MultiUploadService }, { type: i2.GesdemHandlerService }, { type: i3.GesdemEventService }] });
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVuZGluZy11cGxvYWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi11cGxvYWQvZm9laG4tbXVsdGktdXBsb2FkL3BlbmRpbmctdXBsb2FkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUl6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7O0FBSzFELE1BQU0sT0FBTyxvQkFBb0I7SUFNN0IsWUFDWSxrQkFBc0MsRUFDdEMsYUFBbUMsRUFDbkMsa0JBQXNDO1FBRnRDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsa0JBQWEsR0FBYixhQUFhLENBQXNCO1FBQ25DLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFSMUMsMEJBQXFCLEdBQUcsSUFBSSxHQUFHLEVBQXdCLENBQUM7UUFDaEUsOERBQThEO1FBQ3RELCtCQUEwQixHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7UUFDaEQsaUNBQTRCLEdBQUcsSUFBSSxPQUFPLEVBQXVCLENBQUM7UUFPdEUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHlCQUF5QjthQUM1QyxJQUFJO1FBQ0QsNEJBQTRCO1FBQzVCLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ1IsSUFBSTtZQUNKLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTO1NBQ2pELENBQUM7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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFTVBUWSwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEdlc2RlbUV2ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2dlc2RlbS9nZXNkZW0tZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBHZXNkZW1IYW5kbGVyU2VydmljZSB9IGZyb20gJy4uLy4uL2dlc2RlbS9nZXNkZW0taGFuZGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IFBlbmRpbmdGaWxlcyB9IGZyb20gJy4uL3BlbmRpbmctdXBsb2FkLnR5cGUnO1xuaW1wb3J0IHsgTXVsdGlVcGxvYWRTZXJ2aWNlIH0gZnJvbSAnLi9tdWx0aS11cGxvYWQuc2VydmljZSc7XG5pbXBvcnQgeyBEb2N1bWVudHNXaXRoRXJyb3JzIH0gZnJvbSAnLi9tdWx0aS11cGxvYWQudHlwZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUGVuZGluZ1VwbG9hZFNlcnZpY2Uge1xuICAgIHByaXZhdGUgcGVuZGluZ0ZpbGVzQnlGb3JtS2V5ID0gbmV3IE1hcDxzdHJpbmcsIFBlbmRpbmdGaWxlcz4oKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHByaXZhdGUgYXR0YWNobWVudHNVcGxvYWRlZFN1YmplY3QgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gICAgcHJpdmF0ZSBwZW5kaW5nVXBsb2FkZWRFcnJvcnNTdWJqZWN0ID0gbmV3IFN1YmplY3Q8RG9jdW1lbnRzV2l0aEVycm9ycz4oKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIG11bHRpVXBsb2FkU2VydmljZTogTXVsdGlVcGxvYWRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGdlc2RlbVNlcnZpY2U6IEdlc2RlbUhhbmRsZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGdlc2RlbUV2ZW50U2VydmljZTogR2VzZGVtRXZlbnRTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHRoaXMuZ2VzZGVtRXZlbnRTZXJ2aWNlLmZvcm1Jbml0aWFsaXphdGlvblN1YmplY3RcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIC8vIEdldCB0aGUgY3VycmVudCByZWZlcmVuY2VcbiAgICAgICAgICAgICAgICBtYXAoZm9ybSA9PiBbXG4gICAgICAgICAgICAgICAgICAgIGZvcm0sXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VzZGVtU2VydmljZS5sYXN0UmVzcG9uc2UubWV0YS5yZWZlcmVuY2VcbiAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IHdhbnQgdG8gdXBsb2FkIHRoZSBkb2N1bWVudHMgaWYgdGhlcmUgaXMgbm93IGEgcmVmZXJlbmNlXG4gICAgICAgICAgICAgICAgZmlsdGVyKHJlZmVyZW5jZSA9PiAhIXJlZmVyZW5jZSksXG4gICAgICAgICAgICAgICAgLy8gSXQgb25seSBtYWtlcyBzZW5zZSB0byB1cGxvYWQgdGhlIGRvY3VtZW50IGlmIHRoZXJlIGFyZSBwZW5kaW5nIGRvY3VtZW50cy5cbiAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4gISF0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5zaXplKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoW2Zvcm1dKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRQZW5kaW5nRmlsZXNBbmRTYXZlRm9ybShmb3JtKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgZ2V0IGF0dGFjaG1lbnRzVXBsb2FkZWQoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXR0YWNobWVudHNVcGxvYWRlZFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgZ2V0IHBlbmRpbmdVcGxvYWRlZEVycm9ycygpOiBPYnNlcnZhYmxlPERvY3VtZW50c1dpdGhFcnJvcnM+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGVuZGluZ1VwbG9hZGVkRXJyb3JzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBnZXRQZW5kaW5nRmlsZXMoZm9ybUtleTogc3RyaW5nKTogRmlsZVtdIHtcbiAgICAgICAgaWYgKHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChmb3JtS2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChmb3JtS2V5KS5maWxlcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgaGFzUGVuZGluZ0ZpbGVzKGZvcm1LZXk6IHN0cmluZyA9IG51bGwpOiBib29sZWFuIHtcbiAgICAgICAgLy8gTm8gZm9ybUtleSwgd2UgcmV0dXJuIGdsb2JhbCBzaXplIG9mIHBlbmRpbmcgZmlsZXNcbiAgICAgICAgaWYgKCFmb3JtS2V5KSB7XG4gICAgICAgICAgICByZXR1cm4gISF0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5zaXplO1xuICAgICAgICB9XG4gICAgICAgIC8vIENoZWNrIGlmIHdlIGhhdmUgc29tZXRoaW5nIG9uIGZvcm1LZXkgYW5kIGFzc29jaWF0ZWQgZmlsZXNcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIXRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChmb3JtS2V5KSB8fFxuICAgICAgICAgICAgIXRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChmb3JtS2V5KS5maWxlc1xuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiBhdCBsZWFzdCBvbmUgZmlsZXMgZm9yIGEgZ2l2ZW4gZm9ybUtleSBleGlzdFxuICAgICAgICByZXR1cm4gISF0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5nZXQoZm9ybUtleSkuZmlsZXMubGVuZ3RoO1xuICAgIH1cblxuICAgIGFkZFBlbmRpbmdGaWxlcyhcbiAgICAgICAgYmFzZVVybDogc3RyaW5nLFxuICAgICAgICBmb3JtS2V5OiBzdHJpbmcsXG4gICAgICAgIGxhYmVsOiBzdHJpbmcsXG4gICAgICAgIGZpbGVzOiBGaWxlW10sXG4gICAgICAgIGtleTogc3RyaW5nLFxuICAgICAgICBpc011bHRpcGxlOiBib29sZWFuLFxuICAgICAgICBzaG91bGREaXNwbGF5RmlsZVNhdmVkQ29uZmlybWF0aW9uOiBib29sZWFuXG4gICAgKTogdm9pZCB7XG4gICAgICAgIC8vIEluaXRpYWxpemUgcGVuZGluZyBmaWxlcyBieSBmb3JtS2V5XG4gICAgICAgIGlmICghdGhpcy5oYXNQZW5kaW5nRmlsZXMoZm9ybUtleSkpIHtcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LnNldChmb3JtS2V5LCBuZXcgUGVuZGluZ0ZpbGVzKCkpO1xuICAgICAgICAgICAgdGhpcy5wZW5kaW5nRmlsZXNCeUZvcm1LZXkuZ2V0KGZvcm1LZXkpLmZpbGVzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgLy8gU2V0IHBlbmRpbmcgaW5mb3JtYXRpb25zXG4gICAgICAgIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChmb3JtS2V5KS51cmwgPSBiYXNlVXJsO1xuICAgICAgICB0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5nZXQoZm9ybUtleSkuZm9ybUtleSA9IGZvcm1LZXk7XG4gICAgICAgIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChmb3JtS2V5KS5sYWJlbCA9IGxhYmVsO1xuICAgICAgICB0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5nZXQoZm9ybUtleSkuZmlsZXMgPSBbXG4gICAgICAgICAgICAuLi50aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5nZXQoZm9ybUtleSkuZmlsZXMsXG4gICAgICAgICAgICAuLi5maWxlc1xuICAgICAgICBdO1xuICAgICAgICB0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5nZXQoZm9ybUtleSkua2V5ID0ga2V5O1xuICAgICAgICB0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5nZXQoZm9ybUtleSkuaXNNdWx0aXBsZSA9IGlzTXVsdGlwbGU7XG4gICAgICAgIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChcbiAgICAgICAgICAgIGZvcm1LZXlcbiAgICAgICAgKS5zaG91bGREaXNwbGF5RmlsZVNhdmVkQ29uZmlybWF0aW9uID1cbiAgICAgICAgICAgIHNob3VsZERpc3BsYXlGaWxlU2F2ZWRDb25maXJtYXRpb247XG4gICAgfVxuXG4gICAgcmVtb3ZlUGVuZGluZ0ZpbGUoZmlsZTogRmlsZSwgZm9ybUtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmhhc1BlbmRpbmdGaWxlcyhmb3JtS2V5KSkge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleVxuICAgICAgICAgICAgICAgIC5nZXQoZm9ybUtleSlcbiAgICAgICAgICAgICAgICAuZmlsZXMuaW5kZXhPZihmaWxlKTtcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChmb3JtS2V5KS5maWxlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcml2YXRlIHVwbG9hZFBlbmRpbmdGaWxlc0FuZFNhdmVGb3JtKGZvcm06IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCBmaWxlc1RvVXBsb2FkID0gbmV3IE1hcCh0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleSk7XG4gICAgICAgIGNvbnN0IG1lcmdlZFJlc3BvbnNlOiBEb2N1bWVudHNXaXRoRXJyb3JzID0gbmV3IERvY3VtZW50c1dpdGhFcnJvcnMoKTtcblxuICAgICAgICBmaWxlc1RvVXBsb2FkLmZvckVhY2goKHBlbmRpbmdGaWxlcywgZm9ybUtleSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5tdWx0aVVwbG9hZFNlcnZpY2VcbiAgICAgICAgICAgICAgICAudXBsb2FkRG9jdW1lbnRzKFxuICAgICAgICAgICAgICAgICAgICBwZW5kaW5nRmlsZXMudXJsLFxuICAgICAgICAgICAgICAgICAgICBmb3JtS2V5LFxuICAgICAgICAgICAgICAgICAgICBwZW5kaW5nRmlsZXMubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgIHBlbmRpbmdGaWxlcy5maWxlcyxcbiAgICAgICAgICAgICAgICAgICAgcGVuZGluZ0ZpbGVzLmtleSxcbiAgICAgICAgICAgICAgICAgICAgcGVuZGluZ0ZpbGVzLmlzTXVsdGlwbGUsXG4gICAgICAgICAgICAgICAgICAgIGZvcm0ubGFuZ3VhZ2UsXG4gICAgICAgICAgICAgICAgICAgIHBlbmRpbmdGaWxlcy5zaG91bGREaXNwbGF5RmlsZVNhdmVkQ29uZmlybWF0aW9uXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmRlbGV0ZShmb3JtS2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IERvY3VtZW50c1dpdGhFcnJvcnMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTWVyZ2UgYWxsIHVwbG9hZHMgcmVzcG9uc2VcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tZXJnZVBlbmRpbmdVcGxvYWRlZFNlcnZlclJlc3VsdChcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZFJlc3BvbnNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRoZSBkb2N1bWVudCBpbiB0aGUgZm9ybVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldE5lc3RlZFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlbmRpbmdGaWxlcy5mb3JtS2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZG9jdW1lbnRzXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmRlbGV0ZShmb3JtS2V5KTtcbiAgICAgICAgICAgICAgICAgICAgLy8gc2F2ZSB0aGUgZm9ybSB3aGVuIGV2ZXJ5IGRvY3VtZW50IGhhcyBiZWVuIHVwbG9hZGVkXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5zaXplID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcnhqcy9uby1uZXN0ZWQtc3Vic2NyaWJlXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdlc2RlbVNlcnZpY2Uuc2F2ZShmb3JtLCBmYWxzZSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmF0dGFjaG1lbnRzVXBsb2FkZWRTdWJqZWN0Lm5leHQoZm9ybSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGlzcGF0Y2ggZXJyb3JzIGNvbWluZyBmcm9tIHNlcnZlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIW1lcmdlZFJlc3BvbnNlLmVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nVXBsb2FkZWRFcnJvcnNTdWJqZWN0Lm5leHQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRSZXNwb25zZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWVyZ2VQZW5kaW5nVXBsb2FkZWRTZXJ2ZXJSZXN1bHQoXG4gICAgICAgIG1lcmdlZFJlc3BvbnNlOiBEb2N1bWVudHNXaXRoRXJyb3JzLFxuICAgICAgICBzZXJ2ZXJSZXNwb25zZTogRG9jdW1lbnRzV2l0aEVycm9yc1xuICAgICk6IHZvaWQge1xuICAgICAgICAvLyBJbml0aWFsaXplIGFycmF5cyB3aGVuIG5lZWRlZFxuICAgICAgICBpZiAoIW1lcmdlZFJlc3BvbnNlLmRvY3VtZW50cykge1xuICAgICAgICAgICAgbWVyZ2VkUmVzcG9uc2UuZG9jdW1lbnRzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgLy8gSW5pdGlhbGl6ZSBhcnJheXMgd2hlbiBuZWVkZWRcbiAgICAgICAgaWYgKCFtZXJnZWRSZXNwb25zZS5lcnJvcnMpIHtcbiAgICAgICAgICAgIG1lcmdlZFJlc3BvbnNlLmVycm9ycyA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTWVyZ2UgYWxsIHVwbG9hZHMgcmVzcG9uc2VcbiAgICAgICAgbWVyZ2VkUmVzcG9uc2UuZG9jdW1lbnRzID0gW1xuICAgICAgICAgICAgLi4ubWVyZ2VkUmVzcG9uc2UuZG9jdW1lbnRzLFxuICAgICAgICAgICAgLi4uKHNlcnZlclJlc3BvbnNlLmRvY3VtZW50cyB8fCBbXSlcbiAgICAgICAgXTtcbiAgICAgICAgbWVyZ2VkUmVzcG9uc2UuZXJyb3JzID0gW1xuICAgICAgICAgICAgLi4ubWVyZ2VkUmVzcG9uc2UuZXJyb3JzLFxuICAgICAgICAgICAgLi4uKHNlcnZlclJlc3BvbnNlLmVycm9ycyB8fCBbXSlcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldE5lc3RlZFZhbHVlKFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICBvYmo6IGFueSxcbiAgICAgICAgcGF0aDogc3RyaW5nIHwgc3RyaW5nW10sXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIHZhbHVlOiBhbnlcbiAgICApOiB2b2lkIHtcbiAgICAgICAgaWYgKHR5cGVvZiBwYXRoID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcGF0aCA9IHBhdGguc3BsaXQoJy4nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGF0aC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICB0aGlzLnNldE5lc3RlZFZhbHVlKG9ialtwYXRoLnNoaWZ0KCldLCBwYXRoLCB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvYmpbcGF0aFswXV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVuZGluZy11cGxvYWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi11cGxvYWQvZm9laG4tbXVsdGktdXBsb2FkL3BlbmRpbmctdXBsb2FkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUl6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7O0FBSzFELE1BQU0sT0FBTyxvQkFBb0I7SUFNN0IsWUFDWSxrQkFBc0MsRUFDdEMsYUFBbUMsRUFDbkMsa0JBQXNDO1FBRnRDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsa0JBQWEsR0FBYixhQUFhLENBQXNCO1FBQ25DLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFSMUMsMEJBQXFCLEdBQUcsSUFBSSxHQUFHLEVBQXdCLENBQUM7UUFDaEUsOERBQThEO1FBQ3RELCtCQUEwQixHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7UUFDaEQsaUNBQTRCLEdBQUcsSUFBSSxPQUFPLEVBQXVCLENBQUM7UUFPdEUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHlCQUF5QjthQUM1QyxJQUFJO1FBQ0QsNEJBQTRCO1FBQzVCLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ1IsSUFBSTtZQUNKLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTO1NBQ2pELENBQUM7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TTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFTVBUWSwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEdlc2RlbUV2ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2dlc2RlbS9nZXNkZW0tZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBHZXNkZW1IYW5kbGVyU2VydmljZSB9IGZyb20gJy4uLy4uL2dlc2RlbS9nZXNkZW0taGFuZGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IFBlbmRpbmdGaWxlcyB9IGZyb20gJy4uL3BlbmRpbmctdXBsb2FkLnR5cGUnO1xuaW1wb3J0IHsgTXVsdGlVcGxvYWRTZXJ2aWNlIH0gZnJvbSAnLi9tdWx0aS11cGxvYWQuc2VydmljZSc7XG5pbXBvcnQgeyBEb2N1bWVudHNXaXRoRXJyb3JzIH0gZnJvbSAnLi9tdWx0aS11cGxvYWQudHlwZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUGVuZGluZ1VwbG9hZFNlcnZpY2Uge1xuICAgIHByaXZhdGUgcGVuZGluZ0ZpbGVzQnlGb3JtS2V5ID0gbmV3IE1hcDxzdHJpbmcsIFBlbmRpbmdGaWxlcz4oKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHByaXZhdGUgYXR0YWNobWVudHNVcGxvYWRlZFN1YmplY3QgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gICAgcHJpdmF0ZSBwZW5kaW5nVXBsb2FkZWRFcnJvcnNTdWJqZWN0ID0gbmV3IFN1YmplY3Q8RG9jdW1lbnRzV2l0aEVycm9ycz4oKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIG11bHRpVXBsb2FkU2VydmljZTogTXVsdGlVcGxvYWRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGdlc2RlbVNlcnZpY2U6IEdlc2RlbUhhbmRsZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGdlc2RlbUV2ZW50U2VydmljZTogR2VzZGVtRXZlbnRTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHRoaXMuZ2VzZGVtRXZlbnRTZXJ2aWNlLmZvcm1Jbml0aWFsaXphdGlvblN1YmplY3RcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIC8vIEdldCB0aGUgY3VycmVudCByZWZlcmVuY2VcbiAgICAgICAgICAgICAgICBtYXAoZm9ybSA9PiBbXG4gICAgICAgICAgICAgICAgICAgIGZvcm0sXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VzZGVtU2VydmljZS5sYXN0UmVzcG9uc2UubWV0YS5yZWZlcmVuY2VcbiAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IHdhbnQgdG8gdXBsb2FkIHRoZSBkb2N1bWVudHMgaWYgdGhlcmUgaXMgbm93IGEgcmVmZXJlbmNlXG4gICAgICAgICAgICAgICAgZmlsdGVyKHJlZmVyZW5jZSA9PiAhIXJlZmVyZW5jZSksXG4gICAgICAgICAgICAgICAgLy8gSXQgb25seSBtYWtlcyBzZW5zZSB0byB1cGxvYWQgdGhlIGRvY3VtZW50IGlmIHRoZXJlIGFyZSBwZW5kaW5nIGRvY3VtZW50cy5cbiAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4gISF0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5zaXplKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoW2Zvcm1dKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRQZW5kaW5nRmlsZXNBbmRTYXZlRm9ybShmb3JtKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgZ2V0IGF0dGFjaG1lbnRzVXBsb2FkZWQoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXR0YWNobWVudHNVcGxvYWRlZFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgZ2V0IHBlbmRpbmdVcGxvYWRlZEVycm9ycygpOiBPYnNlcnZhYmxlPERvY3VtZW50c1dpdGhFcnJvcnM+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGVuZGluZ1VwbG9hZGVkRXJyb3JzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBnZXRQZW5kaW5nRmlsZXMoZm9ybUtleTogc3RyaW5nKTogRmlsZVtdIHtcbiAgICAgICAgaWYgKHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChmb3JtS2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChmb3JtS2V5KS5maWxlcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgaGFzUGVuZGluZ0ZpbGVzKGZvcm1LZXk6IHN0cmluZyA9IG51bGwpOiBib29sZWFuIHtcbiAgICAgICAgLy8gTm8gZm9ybUtleSwgd2UgcmV0dXJuIGdsb2JhbCBzaXplIG9mIHBlbmRpbmcgZmlsZXNcbiAgICAgICAgaWYgKCFmb3JtS2V5KSB7XG4gICAgICAgICAgICByZXR1cm4gISF0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5zaXplO1xuICAgICAgICB9XG4gICAgICAgIC8vIENoZWNrIGlmIHdlIGhhdmUgc29tZXRoaW5nIG9uIGZvcm1LZXkgYW5kIGFzc29jaWF0ZWQgZmlsZXNcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIXRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChmb3JtS2V5KSB8fFxuICAgICAgICAgICAgIXRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChmb3JtS2V5KS5maWxlc1xuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiBhdCBsZWFzdCBvbmUgZmlsZXMgZm9yIGEgZ2l2ZW4gZm9ybUtleSBleGlzdFxuICAgICAgICByZXR1cm4gISF0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5nZXQoZm9ybUtleSkuZmlsZXMubGVuZ3RoO1xuICAgIH1cblxuICAgIGFkZFBlbmRpbmdGaWxlcyhcbiAgICAgICAgYmFzZVVybDogc3RyaW5nLFxuICAgICAgICBmb3JtS2V5OiBzdHJpbmcsXG4gICAgICAgIGxhYmVsOiBzdHJpbmcsXG4gICAgICAgIGZpbGVzOiBGaWxlW10sXG4gICAgICAgIGtleTogc3RyaW5nLFxuICAgICAgICBpc011bHRpcGxlOiBib29sZWFuLFxuICAgICAgICBzaG91bGREaXNwbGF5RmlsZVNhdmVkQ29uZmlybWF0aW9uOiBib29sZWFuXG4gICAgKTogdm9pZCB7XG4gICAgICAgIC8vIEluaXRpYWxpemUgcGVuZGluZyBmaWxlcyBieSBmb3JtS2V5XG4gICAgICAgIGlmICghdGhpcy5oYXNQZW5kaW5nRmlsZXMoZm9ybUtleSkpIHtcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LnNldChmb3JtS2V5LCBuZXcgUGVuZGluZ0ZpbGVzKCkpO1xuICAgICAgICAgICAgdGhpcy5wZW5kaW5nRmlsZXNCeUZvcm1LZXkuZ2V0KGZvcm1LZXkpLmZpbGVzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgLy8gU2V0IHBlbmRpbmcgaW5mb3JtYXRpb25zXG4gICAgICAgIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChmb3JtS2V5KS51cmwgPSBiYXNlVXJsO1xuICAgICAgICB0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5nZXQoZm9ybUtleSkuZm9ybUtleSA9IGZvcm1LZXk7XG4gICAgICAgIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChmb3JtS2V5KS5sYWJlbCA9IGxhYmVsO1xuICAgICAgICB0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5nZXQoZm9ybUtleSkuZmlsZXMgPSBbXG4gICAgICAgICAgICAuLi50aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5nZXQoZm9ybUtleSkuZmlsZXMsXG4gICAgICAgICAgICAuLi5maWxlc1xuICAgICAgICBdO1xuICAgICAgICB0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5nZXQoZm9ybUtleSkua2V5ID0ga2V5O1xuICAgICAgICB0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5nZXQoZm9ybUtleSkuaXNNdWx0aXBsZSA9IGlzTXVsdGlwbGU7XG4gICAgICAgIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChcbiAgICAgICAgICAgIGZvcm1LZXlcbiAgICAgICAgKS5zaG91bGREaXNwbGF5RmlsZVNhdmVkQ29uZmlybWF0aW9uID1cbiAgICAgICAgICAgIHNob3VsZERpc3BsYXlGaWxlU2F2ZWRDb25maXJtYXRpb247XG4gICAgfVxuXG4gICAgcmVtb3ZlUGVuZGluZ0ZpbGUoZmlsZTogRmlsZSwgZm9ybUtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmhhc1BlbmRpbmdGaWxlcyhmb3JtS2V5KSkge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleVxuICAgICAgICAgICAgICAgIC5nZXQoZm9ybUtleSlcbiAgICAgICAgICAgICAgICAuZmlsZXMuaW5kZXhPZihmaWxlKTtcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmdldChmb3JtS2V5KS5maWxlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcml2YXRlIHVwbG9hZFBlbmRpbmdGaWxlc0FuZFNhdmVGb3JtKGZvcm06IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCBmaWxlc1RvVXBsb2FkID0gbmV3IE1hcCh0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleSk7XG4gICAgICAgIGNvbnN0IG1lcmdlZFJlc3BvbnNlOiBEb2N1bWVudHNXaXRoRXJyb3JzID0gbmV3IERvY3VtZW50c1dpdGhFcnJvcnMoKTtcblxuICAgICAgICBmaWxlc1RvVXBsb2FkLmZvckVhY2goKHBlbmRpbmdGaWxlcywgZm9ybUtleSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5tdWx0aVVwbG9hZFNlcnZpY2VcbiAgICAgICAgICAgICAgICAudXBsb2FkRG9jdW1lbnRzKFxuICAgICAgICAgICAgICAgICAgICBwZW5kaW5nRmlsZXMudXJsLFxuICAgICAgICAgICAgICAgICAgICBmb3JtS2V5LFxuICAgICAgICAgICAgICAgICAgICBwZW5kaW5nRmlsZXMubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgIHBlbmRpbmdGaWxlcy5maWxlcyxcbiAgICAgICAgICAgICAgICAgICAgcGVuZGluZ0ZpbGVzLmtleSxcbiAgICAgICAgICAgICAgICAgICAgcGVuZGluZ0ZpbGVzLmlzTXVsdGlwbGUsXG4gICAgICAgICAgICAgICAgICAgIGZvcm0ubGFuZ3VhZ2UsXG4gICAgICAgICAgICAgICAgICAgIHBlbmRpbmdGaWxlcy5zaG91bGREaXNwbGF5RmlsZVNhdmVkQ29uZmlybWF0aW9uXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmRlbGV0ZShmb3JtS2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IERvY3VtZW50c1dpdGhFcnJvcnMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTWVyZ2UgYWxsIHVwbG9hZHMgcmVzcG9uc2VcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tZXJnZVBlbmRpbmdVcGxvYWRlZFNlcnZlclJlc3VsdChcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZFJlc3BvbnNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRoZSBkb2N1bWVudCBpbiB0aGUgZm9ybVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldE5lc3RlZFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlbmRpbmdGaWxlcy5mb3JtS2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZG9jdW1lbnRzXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZ0ZpbGVzQnlGb3JtS2V5LmRlbGV0ZShmb3JtS2V5KTtcbiAgICAgICAgICAgICAgICAgICAgLy8gc2F2ZSB0aGUgZm9ybSB3aGVuIGV2ZXJ5IGRvY3VtZW50IGhhcyBiZWVuIHVwbG9hZGVkXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnBlbmRpbmdGaWxlc0J5Rm9ybUtleS5zaXplID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdlc2RlbVNlcnZpY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2F2ZShmb3JtLCBmYWxzZSwgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMvbm8tbmVzdGVkLXN1YnNjcmliZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmF0dGFjaG1lbnRzVXBsb2FkZWRTdWJqZWN0Lm5leHQoZm9ybSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERpc3BhdGNoIGVycm9ycyBjb21pbmcgZnJvbSBzZXJ2ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhbWVyZ2VkUmVzcG9uc2UuZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nVXBsb2FkZWRFcnJvcnNTdWJqZWN0Lm5leHQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkUmVzcG9uc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1lcmdlUGVuZGluZ1VwbG9hZGVkU2VydmVyUmVzdWx0KFxuICAgICAgICBtZXJnZWRSZXNwb25zZTogRG9jdW1lbnRzV2l0aEVycm9ycyxcbiAgICAgICAgc2VydmVyUmVzcG9uc2U6IERvY3VtZW50c1dpdGhFcnJvcnNcbiAgICApOiB2b2lkIHtcbiAgICAgICAgLy8gSW5pdGlhbGl6ZSBhcnJheXMgd2hlbiBuZWVkZWRcbiAgICAgICAgaWYgKCFtZXJnZWRSZXNwb25zZS5kb2N1bWVudHMpIHtcbiAgICAgICAgICAgIG1lcmdlZFJlc3BvbnNlLmRvY3VtZW50cyA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIC8vIEluaXRpYWxpemUgYXJyYXlzIHdoZW4gbmVlZGVkXG4gICAgICAgIGlmICghbWVyZ2VkUmVzcG9uc2UuZXJyb3JzKSB7XG4gICAgICAgICAgICBtZXJnZWRSZXNwb25zZS5lcnJvcnMgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE1lcmdlIGFsbCB1cGxvYWRzIHJlc3BvbnNlXG4gICAgICAgIG1lcmdlZFJlc3BvbnNlLmRvY3VtZW50cyA9IFtcbiAgICAgICAgICAgIC4uLm1lcmdlZFJlc3BvbnNlLmRvY3VtZW50cyxcbiAgICAgICAgICAgIC4uLihzZXJ2ZXJSZXNwb25zZS5kb2N1bWVudHMgfHwgW10pXG4gICAgICAgIF07XG4gICAgICAgIG1lcmdlZFJlc3BvbnNlLmVycm9ycyA9IFtcbiAgICAgICAgICAgIC4uLm1lcmdlZFJlc3BvbnNlLmVycm9ycyxcbiAgICAgICAgICAgIC4uLihzZXJ2ZXJSZXNwb25zZS5lcnJvcnMgfHwgW10pXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXROZXN0ZWRWYWx1ZShcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgb2JqOiBhbnksXG4gICAgICAgIHBhdGg6IHN0cmluZyB8IHN0cmluZ1tdLFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICB2YWx1ZTogYW55XG4gICAgKTogdm9pZCB7XG4gICAgICAgIGlmICh0eXBlb2YgcGF0aCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHBhdGggPSBwYXRoLnNwbGl0KCcuJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhdGgubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgdGhpcy5zZXROZXN0ZWRWYWx1ZShvYmpbcGF0aC5zaGlmdCgpXSwgcGF0aCwgdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb2JqW3BhdGhbMF1dID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -161,8 +161,8 @@ export class FoehnPictureUploadComponent extends FoehnInputComponent {
161
161
  const fileExtension = `.${filename.split('.').pop()}`.toLowerCase();
162
162
  return acceptedFormats.includes(fileExtension);
163
163
  }
164
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FoehnPictureUploadComponent, deps: [{ token: i1.GrowlBrokerService }, { token: i2.MultiUploadService }, { token: i3.SdkDictionaryService }], target: i0.ɵɵFactoryTarget.Component }); }
165
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: FoehnPictureUploadComponent, selector: "foehn-picture-upload", inputs: { name: "name", key: "key", label: "label", baseUrl: "baseUrl", croppedPictureFilename: "croppedPictureFilename", resizeToWidth: "resizeToWidth", resizeToHeight: "resizeToHeight", shouldDisplayFileSavedConfirmation: "shouldDisplayFileSavedConfirmation" }, providers: [
164
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FoehnPictureUploadComponent, deps: [{ token: i1.GrowlBrokerService }, { token: i2.MultiUploadService }, { token: i3.SdkDictionaryService }], target: i0.ɵɵFactoryTarget.Component }); }
165
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: FoehnPictureUploadComponent, selector: "foehn-picture-upload", inputs: { name: "name", key: "key", label: "label", baseUrl: "baseUrl", croppedPictureFilename: "croppedPictureFilename", resizeToWidth: "resizeToWidth", resizeToHeight: "resizeToHeight", shouldDisplayFileSavedConfirmation: "shouldDisplayFileSavedConfirmation" }, providers: [
166
166
  {
167
167
  provide: FoehnInputComponent,
168
168
  useExisting: forwardRef(() => FoehnPictureUploadComponent),
@@ -172,7 +172,7 @@ export class FoehnPictureUploadComponent extends FoehnInputComponent {
172
172
  { provide: UploadProgressService, useClass: UploadProgressService }
173
173
  ], usesInheritance: true, ngImport: i0, template: "<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 class=\"form-label\"\n [attr.for]=\"buildChildId()\"\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'visually-hidden' : 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 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", dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.ImageCropperComponent, selector: "image-cropper", inputs: ["imageChangedEvent", "imageURL", "imageBase64", "imageFile", "imageAltText", "cropperFrameAriaLabel", "output", "format", "transform", "maintainAspectRatio", "aspectRatio", "resetCropOnAspectRatioChange", "resizeToWidth", "resizeToHeight", "cropperMinWidth", "cropperMinHeight", "cropperMaxHeight", "cropperMaxWidth", "cropperStaticWidth", "cropperStaticHeight", "canvasRotation", "initialStepSize", "roundCropper", "onlyScaleDown", "imageQuality", "autoCrop", "backgroundColor", "containWithinAspectRatio", "hideResizeSquares", "allowMoveImage", "cropper", "alignImage", "disabled", "hidden"], outputs: ["imageCropped", "startCropImage", "imageLoaded", "cropperReady", "loadImageFailed", "transformChange"] }, { kind: "component", type: i8.FoehnUploadProgressBarComponent, selector: "foehn-upload-progress-bar", inputs: ["progressBarTriggerHtmlElement"] }, { kind: "pipe", type: i9.SdkDictionaryPipe, name: "fromDictionary" }] }); }
174
174
  }
175
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FoehnPictureUploadComponent, decorators: [{
175
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FoehnPictureUploadComponent, decorators: [{
176
176
  type: Component,
177
177
  args: [{ selector: 'foehn-picture-upload', providers: [
178
178
  {
@@ -9,15 +9,15 @@ import { FoehnUploadProgressBarModule } from '../foehn-upload-progress-bar/foehn
9
9
  import { FoehnPictureUploadComponent } from './foehn-picture-upload.component';
10
10
  import * as i0 from "@angular/core";
11
11
  export class FoehnPictureUploadModule {
12
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FoehnPictureUploadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
13
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.1", ngImport: i0, type: FoehnPictureUploadModule, declarations: [FoehnPictureUploadComponent], imports: [CommonModule,
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FoehnPictureUploadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
13
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.3", ngImport: i0, type: FoehnPictureUploadModule, declarations: [FoehnPictureUploadComponent], imports: [CommonModule,
14
14
  FoehnIconsModule,
15
15
  FoehnValidationAlertsModule,
16
16
  SdkDictionaryModule,
17
17
  FormsModule,
18
18
  ImageCropperModule,
19
19
  FoehnUploadProgressBarModule], exports: [FoehnPictureUploadComponent] }); }
20
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FoehnPictureUploadModule, imports: [CommonModule,
20
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FoehnPictureUploadModule, imports: [CommonModule,
21
21
  FoehnIconsModule,
22
22
  FoehnValidationAlertsModule,
23
23
  SdkDictionaryModule,
@@ -25,7 +25,7 @@ export class FoehnPictureUploadModule {
25
25
  ImageCropperModule,
26
26
  FoehnUploadProgressBarModule] }); }
27
27
  }
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FoehnPictureUploadModule, decorators: [{
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FoehnPictureUploadModule, decorators: [{
29
29
  type: NgModule,
30
30
  args: [{
31
31
  imports: [
@@ -68,10 +68,10 @@ export class FoehnUploadProgressBarComponent {
68
68
  }
69
69
  });
70
70
  }
71
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FoehnUploadProgressBarComponent, deps: [{ token: i1.UploadProgressService }], target: i0.ɵɵFactoryTarget.Component }); }
72
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: FoehnUploadProgressBarComponent, selector: "foehn-upload-progress-bar", inputs: { progressBarTriggerHtmlElement: "progressBarTriggerHtmlElement" }, viewQueries: [{ propertyName: "progressBarPanel", first: true, predicate: ["progressBarPanel"], descendants: true }], ngImport: i0, template: "<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 mb-0 py-1\"\n [innerHTML]=\"'foehn-upload-progress-bar.title' | fromDictionary\"\n ></h2>\n </div>\n <div class=\"progress-bar-panel-body p-3\">\n <ng-container *ngIf=\"(hasUploadPackages | async) === false\">\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 </ng-container>\n <ng-container *ngIf=\"(hasUploadPackages | async) === true\">\n <ng-container *ngIf=\"(analysisProgress | async) === false\">\n <p\n *ngIf=\"uploadPackage | async as uploadPackage\"\n [innerHTML]=\"\n 'foehn-upload-progress-bar.group.upload'\n | fromDictionary\n : {\n packageIndex: (\n uploadPackage.packageIndex + 1\n ).toString(),\n nbPackages:\n uploadPackage.nbPackages.toString()\n }\n \"\n ></p>\n </ng-container>\n <ng-container *ngIf=\"(analysisProgress | async) === true\">\n <p\n *ngIf=\"uploadPackage | async as uploadPackage\"\n [innerHTML]=\"\n 'foehn-upload-progress-bar.group.analysis'\n | fromDictionary\n : {\n packageIndex: (\n uploadPackage.packageIndex + 1\n ).toString(),\n nbPackages:\n uploadPackage.nbPackages.toString()\n }\n \"\n ></p>\n </ng-container>\n </ng-container>\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 <small\n class=\"form-text text-secondary\"\n *ngIf=\"(hasUploadPackages | async) === true\"\n [innerHTML]=\"\n 'foehn-upload-progress-bar.group.info' | fromDictionary\n \"\n ></small>\n </div>\n </div>\n</div>\n", styles: [".progress-bar-container{top:0;left:0;height:100%;width:100%;position:fixed;z-index:10000;overflow:auto;background-color:#000;background-color:#0006}.progress-bar-panel{width:30%;background-color:#fff;box-shadow:0 .5rem 1rem #00000080}.progress-bar-panel-title{background-color:var(--vd-neutral-lighter)}.progress-bar-panel-title h2{margin-top:.5rem}.progress{width:100%;background-color:var(--vd-neutral-lighter);box-shadow:none}.progress:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.SdkDictionaryPipe, name: "fromDictionary" }] }); }
71
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FoehnUploadProgressBarComponent, deps: [{ token: i1.UploadProgressService }], target: i0.ɵɵFactoryTarget.Component }); }
72
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: FoehnUploadProgressBarComponent, selector: "foehn-upload-progress-bar", inputs: { progressBarTriggerHtmlElement: "progressBarTriggerHtmlElement" }, viewQueries: [{ propertyName: "progressBarPanel", first: true, predicate: ["progressBarPanel"], descendants: true }], ngImport: i0, template: "<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 mb-0 py-1\"\n [innerHTML]=\"'foehn-upload-progress-bar.title' | fromDictionary\"\n ></h2>\n </div>\n <div class=\"progress-bar-panel-body p-3\">\n <ng-container *ngIf=\"(hasUploadPackages | async) === false\">\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 </ng-container>\n <ng-container *ngIf=\"(hasUploadPackages | async) === true\">\n <ng-container *ngIf=\"(analysisProgress | async) === false\">\n <p\n *ngIf=\"uploadPackage | async as uploadPackage\"\n [innerHTML]=\"\n 'foehn-upload-progress-bar.group.upload'\n | fromDictionary\n : {\n packageIndex: (\n uploadPackage.packageIndex + 1\n ).toString(),\n nbPackages:\n uploadPackage.nbPackages.toString()\n }\n \"\n ></p>\n </ng-container>\n <ng-container *ngIf=\"(analysisProgress | async) === true\">\n <p\n *ngIf=\"uploadPackage | async as uploadPackage\"\n [innerHTML]=\"\n 'foehn-upload-progress-bar.group.analysis'\n | fromDictionary\n : {\n packageIndex: (\n uploadPackage.packageIndex + 1\n ).toString(),\n nbPackages:\n uploadPackage.nbPackages.toString()\n }\n \"\n ></p>\n </ng-container>\n </ng-container>\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 <small\n class=\"form-text text-secondary\"\n *ngIf=\"(hasUploadPackages | async) === true\"\n [innerHTML]=\"\n 'foehn-upload-progress-bar.group.info' | fromDictionary\n \"\n ></small>\n </div>\n </div>\n</div>\n", styles: [".progress-bar-container{top:0;left:0;height:100%;width:100%;position:fixed;z-index:10000;overflow:auto;background-color:#000;background-color:#0006}.progress-bar-panel{width:30%;background-color:#fff;box-shadow:0 .5rem 1rem #00000080}.progress-bar-panel-title{background-color:var(--vd-neutral-lighter)}.progress-bar-panel-title h2{margin-top:.5rem}.progress{width:100%;background-color:var(--vd-neutral-lighter);box-shadow:none}.progress:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.SdkDictionaryPipe, name: "fromDictionary" }] }); }
73
73
  }
74
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FoehnUploadProgressBarComponent, decorators: [{
74
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FoehnUploadProgressBarComponent, decorators: [{
75
75
  type: Component,
76
76
  args: [{ selector: 'foehn-upload-progress-bar', template: "<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 mb-0 py-1\"\n [innerHTML]=\"'foehn-upload-progress-bar.title' | fromDictionary\"\n ></h2>\n </div>\n <div class=\"progress-bar-panel-body p-3\">\n <ng-container *ngIf=\"(hasUploadPackages | async) === false\">\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 </ng-container>\n <ng-container *ngIf=\"(hasUploadPackages | async) === true\">\n <ng-container *ngIf=\"(analysisProgress | async) === false\">\n <p\n *ngIf=\"uploadPackage | async as uploadPackage\"\n [innerHTML]=\"\n 'foehn-upload-progress-bar.group.upload'\n | fromDictionary\n : {\n packageIndex: (\n uploadPackage.packageIndex + 1\n ).toString(),\n nbPackages:\n uploadPackage.nbPackages.toString()\n }\n \"\n ></p>\n </ng-container>\n <ng-container *ngIf=\"(analysisProgress | async) === true\">\n <p\n *ngIf=\"uploadPackage | async as uploadPackage\"\n [innerHTML]=\"\n 'foehn-upload-progress-bar.group.analysis'\n | fromDictionary\n : {\n packageIndex: (\n uploadPackage.packageIndex + 1\n ).toString(),\n nbPackages:\n uploadPackage.nbPackages.toString()\n }\n \"\n ></p>\n </ng-container>\n </ng-container>\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 <small\n class=\"form-text text-secondary\"\n *ngIf=\"(hasUploadPackages | async) === true\"\n [innerHTML]=\"\n 'foehn-upload-progress-bar.group.info' | fromDictionary\n \"\n ></small>\n </div>\n </div>\n</div>\n", styles: [".progress-bar-container{top:0;left:0;height:100%;width:100%;position:fixed;z-index:10000;overflow:auto;background-color:#000;background-color:#0006}.progress-bar-panel{width:30%;background-color:#fff;box-shadow:0 .5rem 1rem #00000080}.progress-bar-panel-title{background-color:var(--vd-neutral-lighter)}.progress-bar-panel-title h2{margin-top:.5rem}.progress{width:100%;background-color:var(--vd-neutral-lighter);box-shadow:none}.progress:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}\n"] }]
77
77
  }], ctorParameters: () => [{ type: i1.UploadProgressService }], propDecorators: { progressBarTriggerHtmlElement: [{