@qbs-origin/origin-form 0.5.0

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 (182) hide show
  1. package/README.md +24 -0
  2. package/esm2022/lib/action-step-handler.mjs +163 -0
  3. package/esm2022/lib/auth-client.service.mjs +69 -0
  4. package/esm2022/lib/enums/label.keys.mjs +721 -0
  5. package/esm2022/lib/form-css.helper.mjs +367 -0
  6. package/esm2022/lib/formly/baseFormlyControlComponent.mjs +52 -0
  7. package/esm2022/lib/formly/baseFormlyStepComponent.mjs +59 -0
  8. package/esm2022/lib/formly/custom-section-separator.component.mjs +32 -0
  9. package/esm2022/lib/formly/form-section-separator.component.mjs +36 -0
  10. package/esm2022/lib/formly/formly-action.mjs +56 -0
  11. package/esm2022/lib/formly/formly-checkbox/formly-checkbox.component.mjs +52 -0
  12. package/esm2022/lib/formly/formly-dictionary-dropdown-tree/formly-dictionary-dropdown-tree.component.mjs +261 -0
  13. package/esm2022/lib/formly/formly-download-documents/formly-download-documents.component.mjs +126 -0
  14. package/esm2022/lib/formly/formly-enrol-card/formly-enrol-card.component.mjs +120 -0
  15. package/esm2022/lib/formly/formly-field-stepper/formly-field-stepper.component.mjs +762 -0
  16. package/esm2022/lib/formly/formly-generate-documents/formly-generate-documents.component.mjs +57 -0
  17. package/esm2022/lib/formly/formly-identification.component.mjs +84 -0
  18. package/esm2022/lib/formly/formly-open-banking/formly-open-banking.component.mjs +590 -0
  19. package/esm2022/lib/formly/formly-paragraph/formly-paragraph.component.mjs +35 -0
  20. package/esm2022/lib/formly/formly-radio/formly-radio-component.mjs +49 -0
  21. package/esm2022/lib/formly/formly-row-fille.mjs +12 -0
  22. package/esm2022/lib/formly/formly-scan-id/formly-scan-id.component.mjs +284 -0
  23. package/esm2022/lib/formly/formly-sign/formly-sign.component.mjs +173 -0
  24. package/esm2022/lib/formly/formly-upload-documents/formly-upload-documents.component.mjs +198 -0
  25. package/esm2022/lib/formly/formly-validate-contact-info/formly-validate-contact-info.component.mjs +124 -0
  26. package/esm2022/lib/formly/formly-view-documents/formly-view-documents.component.mjs +245 -0
  27. package/esm2022/lib/formly/formly-view-offers/formly-view-offers.component.mjs +160 -0
  28. package/esm2022/lib/model-population.helper.mjs +265 -0
  29. package/esm2022/lib/models/application-type.model.mjs +12 -0
  30. package/esm2022/lib/models/application.model.mjs +30 -0
  31. package/esm2022/lib/models/auth/users.model.mjs +2 -0
  32. package/esm2022/lib/models/dictionary.model.mjs +20 -0
  33. package/esm2022/lib/models/flux.model.mjs +105 -0
  34. package/esm2022/lib/models/forms.model.mjs +572 -0
  35. package/esm2022/lib/models/label-info.model.mjs +2 -0
  36. package/esm2022/lib/models/label.model.mjs +2 -0
  37. package/esm2022/lib/models/language.model.mjs +3 -0
  38. package/esm2022/lib/models/list.model.mjs +2 -0
  39. package/esm2022/lib/models/partner.model.mjs +3 -0
  40. package/esm2022/lib/models/treeview.model.mjs +15 -0
  41. package/esm2022/lib/origin-form-auth.service.mjs +40 -0
  42. package/esm2022/lib/origin-form-config.model.mjs +2 -0
  43. package/esm2022/lib/origin-form-token.interceptor.mjs +35 -0
  44. package/esm2022/lib/origin-form.component.mjs +2391 -0
  45. package/esm2022/lib/origin-form.module.mjs +479 -0
  46. package/esm2022/lib/origin-form.service.mjs +14 -0
  47. package/esm2022/lib/others/check-list.database.mjs +55 -0
  48. package/esm2022/lib/others/config-service.mjs +42 -0
  49. package/esm2022/lib/others/dictionary-label-info.mjs +3 -0
  50. package/esm2022/lib/others/environment-type.mjs +21 -0
  51. package/esm2022/lib/others/external-link.directive.mjs +49 -0
  52. package/esm2022/lib/others/flux-helper.mjs +1397 -0
  53. package/esm2022/lib/others/picker.component.mjs +119 -0
  54. package/esm2022/lib/others/translation.pipe.mjs +21 -0
  55. package/esm2022/lib/others/translations-helper.mjs +258 -0
  56. package/esm2022/lib/others/utils.mjs +272 -0
  57. package/esm2022/lib/services/applicationData.service.mjs +145 -0
  58. package/esm2022/lib/services/auth-http.service.mjs +80 -0
  59. package/esm2022/lib/services/dialog.service.mjs +56 -0
  60. package/esm2022/lib/services/dictionary.service.mjs +198 -0
  61. package/esm2022/lib/services/forms.service.mjs +47 -0
  62. package/esm2022/lib/services/labels.service.mjs +29 -0
  63. package/esm2022/lib/services/language.service.mjs +24 -0
  64. package/esm2022/lib/services/open-banking.service.mjs +194 -0
  65. package/esm2022/lib/services/origin-form-signalr-handler.service.mjs +107 -0
  66. package/esm2022/lib/services/origin-form-signalr.service.mjs +105 -0
  67. package/esm2022/lib/services/otp.service.mjs +28 -0
  68. package/esm2022/lib/services/proxy.service.mjs +79 -0
  69. package/esm2022/lib/services/scroll-to-error.service.mjs +369 -0
  70. package/esm2022/lib/services/translation.service.mjs +27 -0
  71. package/esm2022/lib/shared-components/confirmation.component.mjs +34 -0
  72. package/esm2022/lib/shared-components/dictionaries-tree.component.mjs +301 -0
  73. package/esm2022/lib/shared-components/grid.component.mjs +241 -0
  74. package/esm2022/lib/shared-components/treeview/treeview.component.mjs +224 -0
  75. package/esm2022/lib/theme-css.mjs +2254 -0
  76. package/esm2022/lib/theme-injector.service.mjs +26 -0
  77. package/esm2022/public-api.mjs +4 -0
  78. package/esm2022/qbs-origin-origin-form.mjs +5 -0
  79. package/fesm2022/qbs-origin-origin-form.mjs +15215 -0
  80. package/fesm2022/qbs-origin-origin-form.mjs.map +1 -0
  81. package/index.d.ts +5 -0
  82. package/lib/action-step-handler.d.ts +49 -0
  83. package/lib/auth-client.service.d.ts +17 -0
  84. package/lib/enums/label.keys.d.ts +720 -0
  85. package/lib/form-css.helper.d.ts +28 -0
  86. package/lib/formly/baseFormlyControlComponent.d.ts +25 -0
  87. package/lib/formly/baseFormlyStepComponent.d.ts +29 -0
  88. package/lib/formly/custom-section-separator.component.d.ts +6 -0
  89. package/lib/formly/form-section-separator.component.d.ts +10 -0
  90. package/lib/formly/formly-action.d.ts +13 -0
  91. package/lib/formly/formly-checkbox/formly-checkbox.component.d.ts +15 -0
  92. package/lib/formly/formly-dictionary-dropdown-tree/formly-dictionary-dropdown-tree.component.d.ts +45 -0
  93. package/lib/formly/formly-download-documents/formly-download-documents.component.d.ts +22 -0
  94. package/lib/formly/formly-enrol-card/formly-enrol-card.component.d.ts +114 -0
  95. package/lib/formly/formly-field-stepper/formly-field-stepper.component.d.ts +79 -0
  96. package/lib/formly/formly-generate-documents/formly-generate-documents.component.d.ts +17 -0
  97. package/lib/formly/formly-identification.component.d.ts +19 -0
  98. package/lib/formly/formly-open-banking/formly-open-banking.component.d.ts +119 -0
  99. package/lib/formly/formly-paragraph/formly-paragraph.component.d.ts +10 -0
  100. package/lib/formly/formly-radio/formly-radio-component.d.ts +15 -0
  101. package/lib/formly/formly-row-fille.d.ts +6 -0
  102. package/lib/formly/formly-scan-id/formly-scan-id.component.d.ts +41 -0
  103. package/lib/formly/formly-sign/formly-sign.component.d.ts +36 -0
  104. package/lib/formly/formly-upload-documents/formly-upload-documents.component.d.ts +25 -0
  105. package/lib/formly/formly-validate-contact-info/formly-validate-contact-info.component.d.ts +79 -0
  106. package/lib/formly/formly-view-documents/formly-view-documents.component.d.ts +33 -0
  107. package/lib/formly/formly-view-offers/formly-view-offers.component.d.ts +23 -0
  108. package/lib/model-population.helper.d.ts +8 -0
  109. package/lib/models/application-type.model.d.ts +27 -0
  110. package/lib/models/application.model.d.ts +107 -0
  111. package/lib/models/auth/users.model.d.ts +20 -0
  112. package/lib/models/dictionary.model.d.ts +77 -0
  113. package/lib/models/flux.model.d.ts +101 -0
  114. package/lib/models/forms.model.d.ts +504 -0
  115. package/lib/models/label-info.model.d.ts +10 -0
  116. package/lib/models/label.model.d.ts +4 -0
  117. package/lib/models/language.model.d.ts +5 -0
  118. package/lib/models/list.model.d.ts +8 -0
  119. package/lib/models/partner.model.d.ts +12 -0
  120. package/lib/models/treeview.model.d.ts +17 -0
  121. package/lib/origin-form-auth.service.d.ts +15 -0
  122. package/lib/origin-form-config.model.d.ts +12 -0
  123. package/lib/origin-form-token.interceptor.d.ts +12 -0
  124. package/lib/origin-form.component.d.ts +231 -0
  125. package/lib/origin-form.module.d.ts +84 -0
  126. package/lib/origin-form.service.d.ts +6 -0
  127. package/lib/others/check-list.database.d.ts +16 -0
  128. package/lib/others/config-service.d.ts +22 -0
  129. package/lib/others/dictionary-label-info.d.ts +6 -0
  130. package/lib/others/environment-type.d.ts +8 -0
  131. package/lib/others/external-link.directive.d.ts +12 -0
  132. package/lib/others/flux-helper.d.ts +115 -0
  133. package/lib/others/picker.component.d.ts +36 -0
  134. package/lib/others/translation.pipe.d.ts +10 -0
  135. package/lib/others/translations-helper.d.ts +31 -0
  136. package/lib/others/utils.d.ts +37 -0
  137. package/lib/services/applicationData.service.d.ts +35 -0
  138. package/lib/services/auth-http.service.d.ts +21 -0
  139. package/lib/services/dialog.service.d.ts +20 -0
  140. package/lib/services/dictionary.service.d.ts +89 -0
  141. package/lib/services/forms.service.d.ts +17 -0
  142. package/lib/services/labels.service.d.ts +13 -0
  143. package/lib/services/language.service.d.ts +14 -0
  144. package/lib/services/open-banking.service.d.ts +137 -0
  145. package/lib/services/origin-form-signalr-handler.service.d.ts +29 -0
  146. package/lib/services/origin-form-signalr.service.d.ts +24 -0
  147. package/lib/services/otp.service.d.ts +22 -0
  148. package/lib/services/proxy.service.d.ts +29 -0
  149. package/lib/services/scroll-to-error.service.d.ts +54 -0
  150. package/lib/services/translation.service.d.ts +10 -0
  151. package/lib/shared-components/confirmation.component.d.ts +77 -0
  152. package/lib/shared-components/dictionaries-tree.component.d.ts +51 -0
  153. package/lib/shared-components/grid.component.d.ts +138 -0
  154. package/lib/shared-components/treeview/treeview.component.d.ts +121 -0
  155. package/lib/theme-css.d.ts +2 -0
  156. package/lib/theme-injector.service.d.ts +8 -0
  157. package/package.json +42 -0
  158. package/public-api.d.ts +3 -0
  159. package/schematics-compiled/collection.json +10 -0
  160. package/schematics-compiled/ng-add/index.d.ts +2 -0
  161. package/schematics-compiled/ng-add/index.js +67 -0
  162. package/schematics-compiled/ng-add/index.js.map +1 -0
  163. package/schematics-compiled/ng-add/schema.json +8 -0
  164. package/src/lib/assets/fonts/Figtree-Bold.ttf +0 -0
  165. package/src/lib/assets/fonts/Figtree-Light.ttf +0 -0
  166. package/src/lib/assets/fonts/Figtree-Regular.ttf +0 -0
  167. package/src/lib/assets/fonts/Sora-ExtraBold.ttf +0 -0
  168. package/src/lib/assets/fonts/Sora-Light.ttf +0 -0
  169. package/src/lib/assets/fonts/Sora-Regular.ttf +0 -0
  170. package/src/lib/assets/fonts/ttrounds-bold-webfont.woff +0 -0
  171. package/src/lib/assets/fonts/ttrounds-bold-webfont.woff2 +0 -0
  172. package/src/lib/assets/fonts/ttrounds-regular-webfont.woff +0 -0
  173. package/src/lib/assets/fonts/ttrounds-regular-webfont.woff2 +0 -0
  174. package/src/lib/assets/fonts/ttrounds-thin-webfont.woff +0 -0
  175. package/src/lib/assets/fonts/ttrounds-thin-webfont.woff2 +0 -0
  176. package/src/lib/assets/images/flag/icon-flag-de.svg +10 -0
  177. package/src/lib/assets/images/flag/icon-flag-en.svg +1 -0
  178. package/src/lib/assets/images/flag/icon-flag-es.svg +11 -0
  179. package/src/lib/assets/images/flag/icon-flag-fr.svg +1 -0
  180. package/src/lib/assets/images/flag/icon-flag-ro.svg +11 -0
  181. package/src/lib/assets/images/flag/origin-form/new-id-card.png +0 -0
  182. package/src/lib/assets/images/flag/origin-form/old-id-card.png +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qbs-origin-origin-form.mjs","sources":["../../../projects/origin-form/src/lib/formly/custom-section-separator.component.ts","../../../projects/origin-form/src/lib/formly/form-section-separator.component.ts","../../../projects/origin-form/src/lib/models/partner.model.ts","../../../projects/origin-form/src/lib/enums/label.keys.ts","../../../projects/origin-form/src/lib/models/flux.model.ts","../../../projects/origin-form/src/lib/others/translations-helper.ts","../../../projects/origin-form/src/lib/services/translation.service.ts","../../../projects/origin-form/src/lib/others/translation.pipe.ts","../../../projects/origin-form/src/lib/others/flux-helper.ts","../../../projects/origin-form/src/lib/models/forms.model.ts","../../../projects/origin-form/src/lib/others/utils.ts","../../../projects/origin-form/src/lib/formly/baseFormlyStepComponent.ts","../../../projects/origin-form/src/lib/formly/formly-action.ts","../../../projects/origin-form/src/lib/others/external-link.directive.ts","../../../projects/origin-form/src/lib/formly/formly-checkbox/formly-checkbox.component.ts","../../../projects/origin-form/src/lib/formly/formly-checkbox/formly-checkbox.component.html","../../../projects/origin-form/src/lib/others/environment-type.ts","../../../projects/origin-form/src/lib/others/config-service.ts","../../../projects/origin-form/src/lib/auth-client.service.ts","../../../projects/origin-form/src/lib/origin-form-auth.service.ts","../../../projects/origin-form/src/lib/services/auth-http.service.ts","../../../projects/origin-form/src/lib/services/dictionary.service.ts","../../../projects/origin-form/src/lib/models/treeview.model.ts","../../../projects/origin-form/src/lib/others/check-list.database.ts","../../../projects/origin-form/src/lib/shared-components/treeview/treeview.component.ts","../../../projects/origin-form/src/lib/shared-components/treeview/treeview.component.html","../../../projects/origin-form/src/lib/shared-components/dictionaries-tree.component.ts","../../../projects/origin-form/src/lib/shared-components/dictionaries-tree.component.html","../../../projects/origin-form/src/lib/formly/formly-dictionary-dropdown-tree/formly-dictionary-dropdown-tree.component.ts","../../../projects/origin-form/src/lib/formly/formly-dictionary-dropdown-tree/formly-dictionary-dropdown-tree.component.html","../../../projects/origin-form/src/lib/formly/baseFormlyControlComponent.ts","../../../projects/origin-form/src/lib/services/applicationData.service.ts","../../../projects/origin-form/src/lib/services/dialog.service.ts","../../../projects/origin-form/src/lib/formly/formly-download-documents/formly-download-documents.component.ts","../../../projects/origin-form/src/lib/formly/formly-download-documents/formly-download-documents.component.html","../../../projects/origin-form/src/lib/model-population.helper.ts","../../../projects/origin-form/src/lib/form-css.helper.ts","../../../projects/origin-form/src/lib/services/proxy.service.ts","../../../projects/origin-form/src/lib/services/labels.service.ts","../../../projects/origin-form/src/lib/services/language.service.ts","../../../projects/origin-form/src/lib/services/forms.service.ts","../../../projects/origin-form/src/lib/services/origin-form-signalr.service.ts","../../../projects/origin-form/src/lib/services/origin-form-signalr-handler.service.ts","../../../projects/origin-form/src/lib/action-step-handler.ts","../../../projects/origin-form/src/lib/services/scroll-to-error.service.ts","../../../projects/origin-form/src/lib/origin-form.component.ts","../../../projects/origin-form/src/lib/origin-form.component.html","../../../projects/origin-form/src/lib/formly/formly-field-stepper/formly-field-stepper.component.ts","../../../projects/origin-form/src/lib/formly/formly-field-stepper/formly-field-stepper.component.html","../../../projects/origin-form/src/lib/formly/formly-generate-documents/formly-generate-documents.component.ts","../../../projects/origin-form/src/lib/formly/formly-generate-documents/formly-generate-documents.component.html","../../../projects/origin-form/src/lib/formly/formly-identification.component.ts","../../../projects/origin-form/src/lib/formly/formly-paragraph/formly-paragraph.component.ts","../../../projects/origin-form/src/lib/formly/formly-paragraph/formly-paragraph.component.html","../../../projects/origin-form/src/lib/formly/formly-radio/formly-radio-component.ts","../../../projects/origin-form/src/lib/formly/formly-radio/formly-radio-component.html","../../../projects/origin-form/src/lib/formly/formly-row-fille.ts","../../../projects/origin-form/src/lib/formly/formly-scan-id/formly-scan-id.component.ts","../../../projects/origin-form/src/lib/formly/formly-scan-id/formly-scan-id.component.html","../../../projects/origin-form/src/lib/formly/formly-sign/formly-sign.component.ts","../../../projects/origin-form/src/lib/formly/formly-sign/formly-sign.component.html","../../../projects/origin-form/src/lib/models/application.model.ts","../../../projects/origin-form/src/lib/formly/formly-upload-documents/formly-upload-documents.component.ts","../../../projects/origin-form/src/lib/formly/formly-upload-documents/formly-upload-documents.component.html","../../../projects/origin-form/src/lib/services/otp.service.ts","../../../projects/origin-form/src/lib/formly/formly-validate-contact-info/formly-validate-contact-info.component.ts","../../../projects/origin-form/src/lib/formly/formly-validate-contact-info/formly-validate-contact-info.component.html","../../../projects/origin-form/src/lib/shared-components/confirmation.component.ts","../../../projects/origin-form/src/lib/shared-components/confirmation.component.html","../../../projects/origin-form/src/lib/shared-components/grid.component.ts","../../../projects/origin-form/src/lib/shared-components/grid.component.html","../../../projects/origin-form/src/lib/formly/formly-view-offers/formly-view-offers.component.ts","../../../projects/origin-form/src/lib/formly/formly-view-offers/formly-view-offers.component.html","../../../projects/origin-form/src/lib/origin-form.service.ts","../../../projects/origin-form/src/lib/others/picker.component.ts","../../../projects/origin-form/src/lib/others/picker.component.html","../../../projects/origin-form/src/lib/origin-form-token.interceptor.ts","../../../projects/origin-form/src/lib/formly/formly-enrol-card/formly-enrol-card.component.ts","../../../projects/origin-form/src/lib/formly/formly-enrol-card/formly-enrol-card.component.html","../../../projects/origin-form/src/lib/formly/formly-view-documents/formly-view-documents.component.ts","../../../projects/origin-form/src/lib/formly/formly-view-documents/formly-view-documents.component.html","../../../projects/origin-form/src/lib/services/open-banking.service.ts","../../../projects/origin-form/src/lib/formly/formly-open-banking/formly-open-banking.component.ts","../../../projects/origin-form/src/lib/formly/formly-open-banking/formly-open-banking.component.html","../../../projects/origin-form/src/lib/theme-css.ts","../../../projects/origin-form/src/lib/theme-injector.service.ts","../../../projects/origin-form/src/lib/origin-form.module.ts","../../../projects/origin-form/src/qbs-origin-origin-form.ts"],"sourcesContent":["import { Component } from '@angular/core';\nimport { FieldType } from '@ngx-formly/core';\n\n@Component({\n selector: 'formly-custom-section',\n template: `\n <div class=\"custom-section\">\n <ng-container *ngFor=\"let field of field.fieldGroup\">\n <formly-field\n [field]=\"field\"\n [ngClass]=\"field.className\"\n ></formly-field>\n </ng-container>\n </div>\n `,\n styles: [\n `\n .custom-section {\n display: grid;\n gap: 5px;\n margin-bottom: 5px;\n grid-template-columns: repeat(12, 1fr);\n }\n .full-width {\n grid-column: span 12;\n }\n .half-width {\n grid-column: span 6;\n }\n .quarter-width {\n grid-column: span 3;\n }\n `,\n ],\n})\nexport class CustomSectionComponent extends FieldType {}","import { Component, OnInit } from '@angular/core';\nimport { FieldType } from '@ngx-formly/core';\n\n@Component({\n selector: 'form-section-separator',\n template: `\n <div class=\"separator\" style=\"margin: 2% ;\">\n <h2 *ngIf=\"to && to['title']\" [ngStyle]=\"heading2Style\">\n {{ to['title'] }}\n </h2>\n <hr *ngIf=\"to && to['showSeparator']\" [ngStyle]=\"separatorStyle\" />\n </div>\n `,\n styles: [\n `\n .separator {\n margin: 2% 0;\n }\n `,\n ],\n})\nexport class FormSectionSeparatorComponent extends FieldType implements OnInit {\n heading2Style: [prop: string];\n separatorStyle: [prop: string];\n\n ngOnInit(): void {\n if (this.props['design']) {\n this.heading2Style = this.props['design']['.font-heading-2'];\n const separatorStyle = this.props['design']['.separator-section'];\n if (separatorStyle && separatorStyle['height'] !== '0px') {\n this.separatorStyle = separatorStyle;\n }\n }\n }\n}\n","export class Partner {\n id!: number;\n name!: string;\n taxIdentification!: string;\n address!: string;\n email!: string;\n phone!: string;\n contactPerson?: string;\n logo?: string;\n isActive!: boolean;\n inboundApiKey!: string;\n}\n","export class LabelKeys {\n static readonly errors = {\n ISE: 'ISE',\n BRE: 'BRE',\n UAT: 'UAT',\n FOR: 'FOR',\n NFE: 'NFE',\n };\n \n static readonly metadata = {\n applicationId: 'metadata.applicationId',\n applicationName: 'metadata.applicationName',\n user: 'metadata.user',\n };\n static readonly cardEnrolKeys = {\n failure:'cardenrol.failure',\n success:'cardenrol.success'\n };\n \n static readonly popMessages = {\n error: {\n failedOtpValidation: 'popMessages.error.failedOtpValidation',\n failedToLoadForm: 'popMessages.error.failedToLoadForm',\n failedToParseForm: 'popMessages.error.failedToParseForm',\n failedToSaveForm: 'popMessages.error.failedToSaveForm',\n failedToPublishDictionary: 'popMessages.error.failedToPublishDictionary',\n failedToLoadDictionary: 'popMessages.error.failedToLoadDictionary',\n failedValidation: 'popMessages.error.failedValidation',\n partnerFailed: 'popMessages.error.partnerFailed',\n documentFailed: 'popMessages.error.documentFailed',\n documentWithSameNameAlreadyAdded:\n 'popMessages.error.documentWithSameNameAlreadyAdded',\n mappingFailed: 'popMessages.error.mappingFailed',\n invalidValues: 'popMessages.error.invalidValues',\n atLeastOneValue: 'popMessages.error.atLeastOneValue',\n atLeastOneDependentValue:\n 'popMessages.failedNeedToSetAtLeastOneDependentValue',\n atLeastOneLanguage: 'popMessages.error.atLeastOneLanguage',\n mustSelectImageFormat: 'popMessages.error.mustSelectImageFormat',\n cannotDeleteDocWithVersions:\n 'popMessages.error.cannotDeleteDocWithVersions',\n cannotDeleteUsedDocs: 'popMessages.error.cannotDeleteUsedDocs',\n mustSelectDocFile: 'popMessages.error.mustSelectDocFile',\n insertValidFrom: 'popMessages.error.insertValidFrom',\n validFromOlderThan: 'popMessages.error.validFromOlderThan',\n validDateGreaterThan: 'popMessages.error.validDateGreaterThan',\n insertVersion: 'popMessages.error.insertVersion',\n insertName: 'popMessages.error.insertName',\n documentWithSameVersion: 'popMessages.error.documentWithSameVersion',\n documentVersionCannotBeLower:\n 'popMessages.error.documentVersionCannotBeLower',\n versionCannotBeDeleted: 'popMessages.error.versionCannotBeDeleted',\n saveAppBeforeAddingDoc: 'popMessages.error.saveAppBeforeAddingDoc',\n needToCompleteVersionEdit: 'popMessages.error.needToCompleteVersionEdit',\n selectedPartnerAlreadyAdded:\n 'popMessages.error.selectedPartnerAlreadyAdded',\n selectedMethodAlreadyAdded:\n 'popMessages.error.selectedMethodAlreadyAdded',\n selectedDocumentAlreadyAdded:\n 'popMessages.error.selectedDocumentAlreadyAdded',\n completeCurrentMappingFirst:\n 'popMessages.error.completeCurrentMappingFirst',\n selectApiMethod: 'popMessages.error.selectApiMethod',\n publishFail: 'popMessages.error.publishFail',\n selectMethodBeforeAdding: 'popMessages.error.selectMethodBeforeAdding',\n noStatusesAvailableToClean:\n 'popMessages.error.noStatusesAvailableToClean',\n dictionaryCannotBeDeleted: 'popMessages.error.dictionaryCannotBeDeleted',\n partnerUsedInActionStep: 'popMessages.error.partnerUsedInActionStep',\n methodCannotBeDeleted: 'popMessages.error.methodCannotBeDeleted',\n },\n success: {\n dictionarySaved: 'popMessages.success.dictionarySaved',\n succesfullyOtpValidation: 'popMessages.success.succesfullyOtpValidation',\n formSaved: 'popMessages.success.formSaved',\n partnerSuccesfulyAdded: 'popMessages.success.partnerSuccesfulyAdded',\n publishSuccess: 'popMessages.success.publishSuccess',\n },\n };\n \n static readonly validatorMessages = {\n applicationNameRequired: 'validatorMessages.applicationNameRequired',\n applicationTypeRequired: 'validatorMessages.applicationTypeRequired',\n applicationLanguageRequired:\n 'validatorMessages.applicationLanguageRequired',\n applicationDefaultLanguageRequired:\n 'validatorMessages.applicationDefaultLanguageRequired',\n sectionTranslationRequired: 'validatorMessages.sectionTranslationRequired',\n sectionTitleRequired: 'validatorMessages.sectionTitleRequired',\n duplicateSectionTitleFound: 'validatorMessages.duplicateSectionTitleFound',\n stepNameIsRequired: 'validatorMessages.stepNameIsRequired',\n duplicateStepNameFound: 'validatorMessages.duplicateStepNameFound',\n allTranslationsMustHaveValues:\n 'validatorMessages.allTranslationsMustHaveValues',\n controlTitleIsRequired: 'validatorMessages.controlTitleIsRequired',\n allControlTranslationsMustHaveValues:\n 'validatorMessages.allControlTranslationsMustHaveValues',\n controlTranslationsAreRequired:\n 'validatorMessages.controlTranslationsAreRequired',\n controlMaxChars: 'validatorMessages.controlMaxChars',\n duplicateControlTitleFound: 'validatorMessages.duplicateControlTitleFound',\n getMethodMustHaveName: 'validatorMessages.getMethodMustHaveName',\n sendMethodMustHaveName: 'validatorMessages.sendMethodMustHaveName',\n selectADictionary: 'validatorMessages.selectADictionary',\n methodMustHaveAName: 'validatorMessages.methodMustHaveAName',\n applicationMappingRequired: 'validatorMessages.applicationMappingRequired',\n missingDocuments: 'validatorMessages.missingDocuments',\n dictionaryMappingMissing: 'validatorMessages.dictionaryMappingMissing',\n dictionaryLanguageNotInApplication:\n 'validatorMessages.dictionaryLanguageNotInApplication',\n duplicateDocumentId:'validatorMessages.duplicateDocumentId',\n documentIdRequired:'validatorMessages.documentIdRequired'\n };\n \n static readonly confirmDialog = {\n partnerBody: {\n title: 'confirmDialog.partnerBody.title',\n },\n partnerMethodApi: {\n title: 'confirmDialog.partnerMethodApi.title',\n },\n common: {\n warningMessage: 'confirmDialog.common.warningMessage',\n },\n dialogButtons: {\n cancel: 'confirmDialog.dialogButtons.cancel',\n confirm: 'confirmDialog.dialogButtons.confirm',\n },\n };\n \n static readonly placeholders = {\n name: 'placeholders.name',\n choose: 'placeholders.choose',\n chooseLanguage: 'placeholders.chooseLanguage',\n chooseDocuments: 'placeholders.chooseDocuments',\n version: 'placeholders.version',\n keyName: 'placeholders.keyName',\n apiKey: 'placeholders.apiKey',\n headerKey: 'placeholders.headerKey',\n headerValue: 'placeholders.headerValue',\n valability: 'placeholders.valability',\n partnerField: 'placeholder.partnerField',\n enterStepName: 'placeholder.enterStepName',\n email: 'placeholders.email',\n password: 'placeholders.password',\n };\n \n static readonly common = {\n form: {\n email: 'common.form.email',\n cancel: 'common.form.cancel',\n },\n actions: {\n read: 'common.actions.read',\n create: 'common.actions.create',\n write: 'common.actions.write',\n view: 'common.actions.view',\n filter: 'common.actions.filter',\n includeInactive: 'commonKeys.actions.includeInactive',\n save: 'common.actions.save',\n confirm: 'common.actions.confirm',\n cancel: 'common.actions.cancel',\n back: 'common.actions.back',\n next: 'common.actions.next',\n submit: 'common.actions.submit',\n close: 'common.actions.close',\n add: 'common.actions.add',\n addValue: 'common.actions.addValue',\n edit: 'common.actions.edit',\n delete: 'common.actions.delete',\n check: 'common.actions.check',\n import: 'common.actions.import',\n export: 'common.actions.export',\n collapseAll: 'common.actions.collapse-all',\n logout: 'common.actions.logout',\n upload: 'common.actions.upload',\n },\n pagination: {\n noItems: 'common.pagination.noItems',\n perPage: 'common.pagination.perPage',\n of: 'common.pagination.of',\n },\n confirmation: {\n title: 'common.confirmation.title',\n delete: 'common.confirmation.delete',\n },\n api: {\n addMethod: 'common.api.addMethod',\n addField: 'common.api.addField',\n },\n components: {\n button: 'common.components.button',\n },\n others: {\n translation: 'common.others.translation',\n type: 'common.others.type',\n active: 'common.others.active',\n newItem: 'common.others.newItem',\n name: 'common.others.name',\n code: 'common.others.code',\n notifications: 'common.others.notifications',\n seeAllNotifications: 'common.others.seeAllNotifications',\n viewProfile: 'common.others.viewProfile',\n description: 'common.others.description',\n },\n };\n \n static readonly login = {\n form: {\n title: 'login.form.authentication-title',\n emailValidation: 'login.form.email-validation',\n password: 'login.form.password',\n passwordValidation: 'login.form.password-validation',\n submit: 'login.form.submit',\n passwordResetButton: 'login.form.password-reset',\n stayLoggedIn: 'login.form.stay-logged-in',\n },\n };\n \n static readonly register = {\n form: {\n title: 'register.form.register-title',\n poses: 'register.form.assigned-pos-list',\n role: 'register.form.role',\n submit: 'register.form.submit',\n successMessage: 'register.form.successMessage',\n errors: {\n emailRequired: 'register.form.errors.emailRequired',\n emailInvalid: 'register.form.errors.emailInvalid',\n roleRequired: 'register.form.errors.roleRequired',\n },\n },\n };\n \n static readonly roles = {\n title: 'role.title',\n viewButton: 'role.viewButton',\n editButton: 'role.editButton',\n createButton: 'role.createButton',\n view: {\n title: 'role.view.title',\n },\n edit: {\n title: 'role.edit.title',\n successMessage: 'role.edit.successMessage',\n },\n create: {\n successMessage: 'role.create.successMessage',\n },\n form: {\n title: 'role.form.title',\n name: 'role.form.name',\n permissions: 'role.form.permissions',\n submit: 'role.form.submit',\n },\n };\n \n static readonly profile = {\n title: 'profile.title',\n view: {\n title: 'profile.view.title',\n edit: 'profile.view.edit',\n name: 'profile.view.name',\n email: 'profile.view.email',\n phone: 'profile.view.phone',\n address: 'profile.view.address',\n },\n edit: {\n title: 'profile.edit.title',\n personal: {\n title: 'profile.edit.personal.title',\n browse: 'profile.edit.personal.browse',\n name: 'profile.edit.personal.name',\n namePlaceholder: 'profile.edit.personal.namePlaceholder',\n email: 'profile.edit.personal.email',\n emailPlaceholder: 'profile.edit.personal.emailPlaceholder',\n phone: 'profile.edit.personal.phone',\n phonePlaceholder: 'profile.edit.personal.phonePlaceholder',\n address: 'profile.edit.personal.address',\n addressPlaceholder: 'profile.edit.personal.addressPlaceholder',\n },\n password: {\n title: 'profile.edit.password.title',\n current: 'profile.edit.password.current',\n currentPlaceholder: 'profile.edit.password.currentPlaceholder',\n password: 'profile.edit.password.password',\n passwordPlaceholder: 'profile.edit.password.passwordPlaceholder',\n confirm: 'profile.edit.password.confirm',\n confirmPlaceholder: 'profile.edit.password.confirmPlaceholder',\n },\n save: 'profile.edit.save',\n cancel: 'profile.edit.cancel',\n successMessage: 'profile.edit.successMessage',\n errors: {\n selectImage: 'profile.edit.errors.selectImage',\n imageOnly: 'profile.edit.errors.imageOnly',\n currentPassword: 'profile.edit.errors.currentPassword',\n newPassword: 'profile.edit.errors.newPassword',\n passwordConfirmation: 'profile.edit.errors.passwordConfirmation',\n passwordsUnmatch: 'profile.edit.errors.passwordsUnmatch',\n },\n },\n };\n \n static readonly users = {\n title: 'users.title',\n grid: {\n create: 'users.grid.create',\n email: 'users.grid.email',\n name: 'users.grid.name',\n role: 'users.grid.role',\n active: 'users.grid.active',\n blocked: 'users.grid.blocked',\n },\n view: {\n title: 'users.view.title',\n id: 'users.view.id',\n phone: 'users.view.phone',\n address: 'users.view.address',\n profile: {\n title: 'users.view.profile.title',\n email: 'users.view.profile.email',\n emailPlaceholder: 'users.view.profile.emailPlaceholder',\n role: 'users.view.profile.role',\n rolePlaceholder: 'users.view.profile.rolePlaceholder',\n pos: 'users.view.profile.pos',\n posPlaceholder: 'users.view.profile.posPlaceholder',\n active: 'users.view.profile.active',\n blocked: 'users.view.profile.blocked',\n update: 'users.view.profile.update',\n successMessage: 'users.view.profile.successMessage',\n },\n sessions: {\n title: 'users.view.sessions.title',\n device: 'users.view.sessions.device',\n os: 'users.view.sessions.os',\n ip: 'users.view.sessions.ip',\n browser: 'users.view.sessions.browser',\n date: 'users.view.sessions.date',\n },\n logs: {\n title: 'users.view.logs.title',\n action: 'users.view.logs.action',\n status: 'users.view.logs.status',\n path: 'users.view.logs.path',\n date: 'users.view.logs.date',\n },\n },\n };\n \n static readonly dictionary = {\n title: 'dictionary.title',\n grid: {\n create: 'dictionary.grid.create',\n name: 'dictionary.grid.name',\n languages: 'dictionary.grid.languages',\n state: 'dictionary.grid.state',\n },\n deleteSuccess: 'dictionary.deleteSuccess',\n errors: {\n undeletable: 'dictionary.errors.undeletable',\n resetValues: 'dictionary.errors.resetValues',\n noDictionaryComponentDefined:\n 'dictionary.errors.noDictionaryComponentDefined',\n },\n others: {\n dictionaryValues: 'dictionary.others.dictionaryValues',\n dependentDictionary: 'dictionary.others.dependentDictionary',\n sourceDictionaries: 'dictionary.others.sourceDictionaries',\n active: 'dictionary.others.active',\n versions: 'dictionary.others.versions',\n },\n };\n \n static readonly applications = {\n title: 'applications.title',\n newApplication: 'applications.newApplication',\n create: 'applications.create',\n edit: 'applications.edit',\n grid: {\n create: 'applications.grid.create',\n name: 'applications.grid.name',\n date: 'applications.grid.date',\n },\n deleteSuccess: 'applications.deleteSuccess',\n errors: {\n undeletable: 'applications.errors.undeletable',\n },\n noDataAvailableForSelectedType:\n 'applications.noDataAvailableForSelectedType',\n };\n \n static readonly appConfigEdit = {\n history: {\n name: 'appConfigEdit.name',\n user: 'appConfigEdit.history.user',\n dateModified: 'appConfigEdit.history.dateModified',\n summary: 'appConfigEdit.history.summary',\n },\n generalData: {\n name: 'appConfigEdit.generalData.name',\n appType: 'appConfigEdit.generalData.appType',\n languages: 'appConfigEdit.generalData.languages',\n defaultLanguage: 'appConfigEdit.generalData.defaultLanguage',\n contentWithOffer: 'appConfigEdit.generalData.contentWithOffer',\n showCounterStep: 'appConfigEdit.generalData.showCounterStep',\n showNameStep: 'appConfigEdit.generalData.showNameStep',\n showAllSteps: 'appConfigEdit.generalData.showAllSteps',\n getTestVersion: 'appConfigEdit.generalData.getTestVersion',\n publishOnTest: 'appConfigEdit.generalData.publishOnTest',\n getProductionVersion: 'appConfigEdit.generalData.getProductionVersion',\n publishOnProduction: 'appConfigEdit.generalData.publishOnProduction',\n getTestConfirm: 'appConfigEdit.generalData.getTestConfirm',\n getProdConfirm: 'appConfigEdit.generalData.getProdConfirm',\n publishTestConfirm: 'appConfigEdit.generalData.publishTestConfirm',\n publishProdConfirm: 'appConfigEdit.generalData.publishProdConfirm',\n },\n design: {\n name: 'appConfigEdit.design.name',\n fonts: 'appConfigEdit.design.fonts',\n fontFamily: 'appConfigEdit.design.fontFamily',\n fontSize: 'appConfigEdit.design.fontSize',\n fontWeight: 'appConfigEdit.design.fontWeight',\n letterSpacing: 'appConfigEdit.design.letterSpacing',\n buttons: 'appConfigEdit.design.buttons',\n border: 'appConfigEdit.design.border',\n borderColor: 'appConfigEdit.design.borderColor',\n borderRadius: 'appConfigEdit.design.borderRadius',\n textAlign: 'appConfigEdit.design.textAlign',\n horizontalPosition: 'appConfigEdit.design.horizontalPosition',\n verticalPosition: 'appConfigEdit.design.verticalPosition',\n components: 'appConfigEdit.design.components',\n color: 'appConfigEdit.design.color',\n checkColor: 'appConfigEdit.design.checkColor',\n backgroundColor: 'appConfigEdit.design.backgroundColor',\n labelStyle: 'appConfigEdit.design.labelStyle',\n dimension: 'appConfigEdit.design.dimension',\n maxWidth: 'appConfigEdit.design.maxWidth',\n weight: 'appConfigEdit.design.weight',\n right: 'appConfigEdit.design.right',\n left: 'appConfigEdit.design.left',\n center: 'appConfigEdit.design.center',\n justify: 'appConfigEdit.design.justify',\n margins: 'appConfigEdit.design.margins',\n top: 'appConfigEdit.design.top',\n bottom: 'appConfigEdit.design.bottom',\n heading: 'appConfigEdit.design.heading',\n paragraph: 'appConfigEdit.design.paragraph',\n list: 'appConfigEdit.design.list',\n input: 'appConfigEdit.design.input',\n label: 'appConfigEdit.design.label',\n textField: 'appConfigEdit.design.textField',\n position: 'appConfigEdit.design.position',\n checkBox: 'appConfigEdit.design.checkbox',\n radio: 'appConfigEdit.design.radio',\n data: 'appConfigEdit.design.data',\n sectionSeparator: 'appConfigEdit.design.sectionSeparator',\n general: 'appConfigEdit.design.general',\n padding: 'appConfigEdit.design.padding',\n tables: 'appConfigEdit.design.tables',\n headers: 'appConfigEdit.design.headers',\n details: 'appConfigEdit.design.details',\n },\n flux: {\n newStep: 'appConfigEdit.flux.newStep',\n name: 'appConfigEdit.flux.name',\n systemSteps: 'appConfigEdit.flux.systemSteps',\n sign: 'appConfigEdit.flux.sign',\n addNewSection: 'appConfigEdit.flux.addNewSection',\n customStep: {\n dependent: 'appConfigEdit.flux.customStep.dependent',\n dictionary: 'appConfigEdit.flux.customStep.dictionary',\n type: 'appConfigEdit.flux.customStep.type',\n text: 'appConfigEdit.flux.customStep.text',\n showDictionaryAsRadioButtonsList:\n 'appConfigEdit.flux.customStep.showDictionaryAsRadioButtonsList',\n relatedDictionariesTranslation:\n 'appConfigEdit.flux.customStep.relatedDictionariesTranslation',\n },\n section: {\n newComponent: 'appConfigEdit.flux.section.newComponent',\n title: 'appConfigEdit.flux.section.title',\n type: 'appConfigEdit.flux.section.type',\n showSectionTitle: 'appConfigEdit.flux.section.showSectionTitle',\n showSectionSeparator: 'appConfigEdit.flux.section.showSectionSeparator',\n changeOrder: 'appConfigEdit.flux.section.changeOrder',\n addComponent: 'appConfigEdit.flux.section.addComponent',\n manualInput: 'appConfigEdit.flux.section.manualInput',\n paragraph: 'appConfigEdit.flux.section.paragraph',\n checkbox: 'appConfigEdit.flux.section.checkbox',\n buttons: 'appConfigEdit.flux.section.buttons',\n newRow: 'appConfigEdit.flux.section.newRow',\n newSection: 'appConfigEdit.flux.section.newSection',\n dictionaryComponent:\n 'appConfigEdit.flux.customStep.dictionaryComponent',\n presentationDownloadComponent:\n 'appConfigEdit.flux.section.presentationDownloadComponent',\n changeSectionType: 'appConfigEdit.flux.section.changeSectionType',\n },\n manualInputControl: {\n validations: 'appConfigEdit.flux.manualInputControl.validations',\n simple: 'appConfigEdit.flux.manualInputControl.simple',\n allowedCharacters:\n 'appConfigEdit.flux.manualInputControl.allowedCharacters',\n maxCharacters: 'appConfigEdit.flux.manualInputControl.maxCharacters',\n minValue: 'appConfigEdit.flux.manualInputControl.minValue',\n maxValue: 'appConfigEdit.flux.manualInputControl.maxValue',\n onlyPast: 'appConfigEdit.flux.manualInputControl.onlyPast',\n onlyFuture: 'appConfigEdit.flux.manualInputControl.onlyFuture',\n throughApi: 'appConfigEdit.flux.manualInputControl.throughApi',\n minValueShouldBe:\n 'appConfigEdit.flux.manualInputControl.minValueShouldBe',\n pickApiValidationMethod:\n 'appConfigEdit.flux.manualInputControl.pickApiValidationMethod',\n pickApiValidationPartner:\n 'appConfigEdit.flux.manualInputControl.pickApiValidationPartner',\n },\n },\n api: {\n name: 'appConfigEdit.api.name',\n sendData: 'appConfigEdit.api.sendData',\n getData: 'appConfigEdit.api.getData',\n validators: 'appConfigEdit.api.validators',\n },\n offer: {\n name: 'appConfigEdit.offer.name',\n customStep: 'appConfigEdit.offer.customStep',\n generateDocuments: 'appConfigEdit.offer.generateDocuments',\n showStepCounter: 'appConfigEdit.offer.showStepCounter',\n showStepName: 'appConfigEdit.offer.showStepName',\n showAllSteps: 'appConfigEdit.offer.showAllSteps',\n addNewSection: 'appConfigEdit.offer.addNewSection',\n },\n generatedDocuments: {\n documentsBookmarks: {\n bookmark:\n 'appConfigEdit.generatedDocuments.documentsBookmarks.bookmark',\n controlName:\n 'appConfigEdit.generatedDocuments.documentsBookmarks.controlName',\n bookmarkMappingValidation:\n 'appConfigEdit.generatedDocuments.documentsBookmarks.mapping.validation',\n },\n addDocument: 'appConfigEdit.generatedDocuments.addDocument',\n editDocument: 'appConfigEdit.generatedDocuments.editDocument',\n name: 'appConfigEdit.generatedDocuments.name',\n label: 'appConfigEdit.generatedDocuments.label',\n generated: 'appConfigEdit.generatedDocuments.generated',\n activ: 'appConfigEdit.generatedDocuments.activ',\n version: 'appConfigEdit.generatedDocuments.version',\n validFrom: 'appConfigEdit.generatedDocuments.validFrom',\n validTo: 'appConfigEdit.generatedDocuments.validTo',\n availableBookmarks: 'appConfigEdit.generatedDocuments.availableBookmarks',\n generatedByApp: 'appConfigEdit.generatedDocuments.generatedByApp',\n },\n partners: {\n methodApi: {\n name: 'appConfigEdit.partners.methodApi.name',\n selectMethod: 'appConfigEdit.partners.methodApi.selectMethod',\n selectMethodType: 'appConfigEdit.partners.methodApi.selectMethodType',\n selectCallType: 'appConfigEdit.partners.methodApi.selectCallType',\n authType: 'appConfigEdit.partners.methodApi.authType',\n addHeader: 'appConfigEdit.partners.methodApi.addHeader',\n addMapping: 'appConfigEdit.partners.methodApi.addMapping',\n addApiKey: 'appConfigEdit.partners.methodApi.addApiKey',\n action: 'appConfigEdit.partners.methodApi.action',\n loadJsonContent: 'appConfigEdit.partners.methodApi.loadJsonContent',\n loadUrlContent: 'appConfigEdit.partners.methodApi.loadUrlContent',\n urlContent: 'appConfigEdit.partners.methodApi.urlContent',\n urlSegment: 'appConfigEdit.partners.methodApi.urlSegment',\n urlParameter: 'appConfigEdit.partners.methodApi.urlParameter',\n value: 'appConfigEdit.partners.methodApi.value',\n delete: 'appConfigEdit.partners.methodApi.delete',\n contentType: 'appConfigEdit.partners.methodApi.contentType',\n partnerField: 'appConfigEdit.partners.methodApi.partnerField',\n fluxField: 'appConfigEdit.partners.methodApi.fluxField',\n methodField: 'appConfigEdit.partners.methodApi.methodField',\n fieldType: 'appConfigEdit.partners.methodApi.fieldType',\n },\n dictionaryMapping: {\n name: 'appConfigEdit.partners.dictionaryMapping.name',\n loadDictionaries:\n 'appConfigEdit.partners.dictionaryMapping.loadDictionaries',\n partnerValue: 'appConfigEdit.partners.dictionaryMapping.partnerValue',\n noValueFound: 'appConfigEdit.partners.dictionaryMapping.noValueFound',\n },\n documents: {\n name: 'appConfigEdit.partners.documents.name',\n add: 'appConfigEdit.partners.documents.add',\n selectMethodApi: 'appConfigEdit.partners.documents.selectMethodApi',\n },\n statuses: {\n name: 'appConfigEdit.partners.statuses.name',\n add: 'appConfigEdit.partners.statuses.addStatus',\n partnerStatus: 'appConfigEdit.partners.statuses.partnerStatus',\n appStatus: 'appConfigEdit.partners.statuses.appStatus',\n clearSelection: 'appConfigEdit.partners.statuses.clear',\n },\n generalSettings: {\n addNewOffer: 'appConfigEdit.partners.generalSettings.addNewOffer',\n name: 'appConfigEdit.partners.generalSettings.name',\n apiNethod: 'appConfigEdit.partners.generalSettings.apiMethod',\n identifier: 'appConfigEdit.partners.generalSettings.identifier',\n value: 'appConfigEdit.partners.generalSettings.value',\n acceptMultipleOffers:\n 'appConfigEdit.partners.generalSettings.acceptMultipleOffers',\n addNewAcceptedOffers:\n 'appConfigEdit.partners.generalSettings.addNewAcceptedOffers',\n choose: 'appConfigEdit.partners.generalSettings.choose',\n valabilityPeriod:\n 'appConfigEdit.partners.generalSettings.valabilityPeriod',\n hasCustomValability:\n 'appConfigEdit.partners.generalSettings.hasCustomValability',\n valability: 'appConfigEdit.partners.generalSettings.valability',\n requiredApiMethodValidation:\n 'appConfigEdit.partners.generalSettings.requiredApiMethodValidation',\n requiredIdentifierValidation:\n 'appConfigEdit.partners.generalSettings.requiredIdentifierValidation',\n requiredValueValidation:\n 'appConfigEdit.partners.generalSettings.requiredValueValidation',\n requiredMultipleOffersValidation:\n 'appConfigEdit.partners.generalSettings.requiredMultipleOffersValidation',\n requiredNumberOfOffersValidation:\n 'appConfigEdit.partners.generalSettings.requiredNumberOfOffersValidation',\n multipleSameOffersValidation:\n 'appConfigEdit.partners.generalSettings.multipleSameOffersValidation',\n },\n name: 'appConfigEdit.partners.name',\n add: 'partners.add',\n },\n statuses: {\n name: 'appConfigEdit.statuses.name',\n order: 'appConfigEdit.statuses.order',\n final: 'appConfigEdit.statuses.final',\n active: 'appConfigEdit.statuses.active',\n addStatus: 'appConfigEdit.statuses.addStatus',\n selectStatus: 'appConfigEdit.statuses.selectStatus',\n stepName: 'appConfigEdit.statuses.stepName',\n noStatus: 'appConfigEdit.statuses.noStatusFound',\n statusUsedIn: 'appConfigEdit.statuses.statusUsedIn',\n },\n displayMode: {\n name: 'appConfigEdit.displayMode.name',\n },\n errors: {\n applicationHas: 'appConfigEdit.errors.applicationHas',\n applicationErrors: 'appConfigEdit.errors.applicationErrors',\n },\n };\n \n static readonly application = {\n api: {\n getItems: {\n name: 'application.api.getItems.name',\n fields: 'application.api.getItems.fields',\n fieldName: 'application.api.getItems.fieldName',\n fieldType: 'application.api.getItems.fieldType',\n },\n validators: {\n name: 'application.api.validators.name',\n },\n sendItems: {\n name: 'application.api.sendItems.name',\n },\n },\n };\n \n static readonly applicationLaunch = {\n title: 'applicationLaunch.title',\n selectApplication: 'applicationLaunch.selectApplication',\n selectEnvironment: 'applicationLaunch.selectEnvironment',\n launchButton: 'applicationLaunch.launchButton',\n errorSelectApplication: 'applicationLaunch.errorSelectApplication',\n environments: {\n production: 'applicationLaunch.environments.production',\n staging: 'applicationLaunch.environments.staging',\n development: 'applicationLaunch.environments.development',\n },\n };\n \n static readonly stepControl = {\n title: 'stepControl.title',\n dimension: 'stepControl.dimension',\n auto: 'stepControl.auto',\n mandatory: 'stepControl.mandatory',\n translations: 'stepControl.translations',\n titleHyperlink: 'stepControl.titleHyperlink',\n };\n \n static readonly formly = {\n selectAnItem: 'formly.selectAnItem',\n };\n \n static readonly flux = {\n createStep: 'flux.createStep',\n customStep: 'flux.customStep',\n finalStep: 'flux.finalStep',\n identification: 'flux.identification',\n idScan: 'flux.idScan',\n verifyPhone: 'flux.verifyPhone',\n verifyEmail: 'flux.verifyEmail',\n sign: 'flux.sign',\n status: 'flux.status',\n pause: 'flux.pause',\n generateDocument: 'flux.generateDocument',\n downloadDocument: 'flux.downloadDocument',\n viewDocument: 'flux.viewDocument',\n action: 'flux.action',\n uploadDocument: 'flux.uploadDocument',\n viewDemo: 'flux.viewDemo',\n viewOffer: 'flux.viewOffer',\n netopia: 'flux.netopia',\n euPlatesc: 'flux.euplatesc',\n openBanking: 'flux.openBanking',\n stepInfo: {\n systemPhoneTitle: 'flux.stepInfo.systemPhoneTitle',\n systemEmailTitle: 'flux.stepInfo.systemEmailTitle',\n kycStatusTitle: 'flux.stepInfo.kycStatusTitle',\n kycPersonTitle: 'flux.stepInfo.kycPersonTitle',\n kycAddressTitle: 'flux.stepInfo.kycAddressTitle',\n kycValidationTitle: 'flux.stepInfo.kycValidationTitle',\n navigationSectionTitle: 'flux.stepInfo.navigationSectionTitle',\n systemStatusTitle: 'flux.stepInfo.systemStatusTitle',\n validationStatus: 'flux.stepInfo.validationStatus',\n fileMaxSize: 'flux.stepInfo.fileMaxSize',\n fileFormat: 'flux.stepInfo.fileFormat',\n showUploadFileButton: 'fluxt.stepInfo.showUploadFileButton',\n },\n components: {\n system: {\n validEmail: 'flux.components.system.validEmail',\n validPhone: 'flux.components.system.validPhone',\n },\n sign: {\n electronicly: 'flux.components.sign.electronicly',\n handwritten: 'flux.components.sign.handwritten',\n automated: 'flux.components.sign.automated',\n displayDocument: 'flux.components.sign.displayDocument',\n documentList: 'flux.components.sign.documentList',\n selectDocument: 'flux.components.sign.selectDocument',\n grid: {\n name: 'flux.components.sign.grid.name',\n individual: 'flux.components.sign.grid.individual',\n bulk: 'flux.components.sign.grid.bulk',\n },\n },\n phone: {\n collected: 'flux.components.phone.collected',\n selectComponent: 'flux.components.phone.selectComponent',\n phoneLabel: 'flux.components.phone.phoneLabel',\n phoneButtonLabel: 'flux.components.phone.phoneButtonLabel',\n otpLabel: 'flux.components.phone.otpLabel',\n otpButtonLabel: 'flux.components.phone.otpButtonLabel',\n phoneErrorLabel: 'flux.components.phone.phoneErrorLabel',\n otpErrorLabel: 'flux.components.phone.otpErrorLabel',\n },\n email: {\n collected: 'flux.components.email.collected',\n selectComponent: 'flux.components.email.selectComponent',\n emailLabel: 'flux.components.email.emailLabel',\n emailButtonLabel: 'flux.components.email.emailButtonLabel',\n otpLabel: 'flux.components.email.otpLabel',\n otpButtonLabel: 'flux.components.email.otpButtonLabel',\n emailErrorLabel: 'flux.components.email.emailErrorLabel',\n otpErrorLabel: 'flux.components.email.otpErrorLabel',\n },\n action: {\n pickApiMethod: 'flux.components.action.pickApiMethod',\n pickApiPartners: 'flux.components.action.pickApiPartners',\n },\n listOffer: {\n addColumn: 'flux.components.viewOffer.addColumn',\n selectComponent: 'flux.components.viewOffer.selectComponent',\n name: 'flux.components.viewOffer.name',\n order: 'flux.components.viewOffer.order',\n },\n },\n };\n }\n","import { LabelKeys } from \"../enums/label.keys\";\nimport { ButtonConfig, DimensionType, ErrorTranslations } from \"./forms.model\";\nimport { LabelInfo, TranslationInfo } from \"./label-info.model\";\n\nexport class DependentDictionaryData {\n isDictionaryDependent: boolean;\n dictionaryControlIdentifier: string;\n dependentValueIds: number[];\n configuringType?: 'step' | 'section' | 'component';\n configuringId?: string;\n}\n\nexport interface TranslationItem {\n languageId: number;\n languageIso: string;\n value: string;\n}\n\nexport class SectionData {\n identifier: string;\n title: string;\n type: number;\n controls: ControlData[];\n presentationControls?: PresentationControl[];\n isNavigationSection?: boolean;\n canDepend?: boolean;\n translations?: LabelInfo[];\n\n // UI Additions (optional)\n collapsed?: boolean;\n showSectionTitle?: boolean;\n showSectionSeparator?: boolean;\n dependentDictionary?: DependentDictionaryData;\n\n //display mode\n titleStyle?: string;\n}\n\nexport class BaseControl {\n title: string;\n identifier: string;\n translations: LabelInfo[];\n dimension: number;\n dimensionType: DimensionType;\n autoDimension: boolean;\n canEdit: boolean = true;\n specificControlData: any;\n isPresentationControl: boolean = false;\n}\n\nexport enum StepControlType {\n ManualInput = 0,\n Paragraph = 1,\n CheckBox = 2,\n Dictionary = 3,\n Buttons = 4,\n FluxInfo = 5,\n NewRow = 6,\n Metadata = 7,\n ApiMethodField = 8,\n DownloadDocuments = 9,\n ViewDocuments = 10,\n UploadDocuments = 11,\n}\nexport enum PresentationControlType {\n FluxComponent = 0,\n Download = 1,\n Paragraph = 2,\n View = 3,\n NewRow = 4,\n Status = 5,\n ApiMethod = 6,\n}\n\nexport class ControlData extends BaseControl {\n type: StepControlType;\n dependentDictionary: DependentDictionaryData;\n canDepend: boolean = false;\n isOnlyForConfig: boolean = false;\n isMandatory: boolean;\n errorsTranslations: ErrorTranslations[];\n}\n\nexport class PresentationControl extends BaseControl {\n type: PresentationControlType;\n collectionControlIdentifier?: string | undefined;\n apiMethodId?: string | undefined;\n apiMethodFieldId?: string | undefined;\n}\n\nexport interface StepData {\n // V1 properties\n identifier: string;\n name: string;\n type: number;\n sections: SectionData[];\n isVisible?: boolean;\n config?: any;\n translations: TranslationInfo[];\n panelOpenState?: boolean;\n buttons: ButtonConfig[];\n dependentDictionary?: DependentDictionaryData;\n errorsTranslations: ErrorTranslations[];\n hasNameAndDescription?: boolean;\n canDepend?: boolean;\n collapsed?: boolean;\n}\n\nexport const ComponentTypeDetails: Record<\n string,\n { icon: string; label: string }\n> = {\n ManualInput: {\n icon: 'input',\n label: LabelKeys.appConfigEdit.flux.section.manualInput,\n }, // 0\n Paragraph: {\n icon: 'segment',\n label: LabelKeys.appConfigEdit.flux.section.paragraph,\n }, // 1\n Checkbox: {\n icon: 'check_box',\n label: LabelKeys.appConfigEdit.flux.section.checkbox,\n }, // 2\n Dictionary: {\n icon: 'data_object',\n label: LabelKeys.appConfigEdit.flux.section.dictionaryComponent,\n }, // 3\n Buttons: {\n icon: 'smart_button',\n label: LabelKeys.appConfigEdit.flux.section.buttons,\n }, // 4\n NewRow: {\n icon: 'height',\n label: LabelKeys.appConfigEdit.flux.section.newRow,\n }, // 5\n // FluxComponent: { icon: 'dynamic_feed', label: LabelKeys.appConfigEdit.flux.section.fluxInfo }, // PresentationControlType 0 // TODO: Verify this key if needed, wasn't explicitly found\n Download: {\n icon: 'file_download',\n label: LabelKeys.appConfigEdit.flux.section.presentationDownloadComponent,\n }, // PresentationControlType 1\n Upload: {\n icon: 'file_upload',\n label: LabelKeys.flux.uploadDocument,\n }, // PresentationControlType 2\n View: { icon: 'visibility', label: LabelKeys.flux.viewDocument }, // PresentationControlType 3\n FluxComponent: { icon: 'visibility', label: LabelKeys.common.actions.view },\n ApiMethodField: { icon: 'visibility', label: 'appConfigEdit.partners.generalSettings.apiMethod' },\n};\n\nexport const StepTypeDetails: Record<string, { icon: string; label: string }> =\n{\n Custom: { icon: 'add_circle_outline', label: LabelKeys.flux.customStep }, // 5\n GenerateDocument: {\n icon: 'description',\n label: LabelKeys.flux.generateDocument,\n }, // 8\n Action: { icon: 'directions_run', label: LabelKeys.flux.action }, // 6\n ViewOffer: { icon: 'visibility', label: LabelKeys.flux.viewOffer }, // 9\n Sign: { icon: 'draw', label: LabelKeys.flux.sign }, // 11\n Email: { icon: 'email', label: LabelKeys.flux.verifyEmail }, // 12\n Phone: { icon: 'phone', label: LabelKeys.flux.verifyPhone }, // 13\n IdScan: { icon: 'badge', label: LabelKeys.flux.idScan }, // 15\n Kyc: { icon: 'person_search', label: LabelKeys.flux.identification }, // 16\n Status: { icon: 'check_circle_outline', label: LabelKeys.flux.status }, // 17\n Final: { icon: 'flag', label: LabelKeys.flux.finalStep }, // 18\n Pause: { icon: 'pause_circle_outline', label: LabelKeys.flux.pause }, // 19\n EUPLATESC: { icon: 'credit_card', label: LabelKeys.flux.euPlatesc }, // 20\n NETOPIA: { icon: 'payment', label: LabelKeys.flux.netopia }, // 21\n OpenBanking: { icon: 'account_balance', label: LabelKeys.flux.openBanking }, // 22\n // Add others if needed\n};\n","import { Injectable } from \"@angular/core\";\nimport { StepControlType } from \"../models/flux.model\";\nimport { ErrorTranslations } from \"../models/forms.model\";\nimport { TranslationInfo, LabelInfo } from \"../models/label-info.model\";\nimport { Language } from \"../models/language.model\";\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TranslationsHelper {\n\n public static createComponentErrorsTranslations(\n langs: Language[],\n componentType: StepControlType\n ): ErrorTranslations[] {\n switch (componentType) {\n case StepControlType.ManualInput: return this.createInputErrorsTranslations(langs);\n case StepControlType.CheckBox:\n case StepControlType.Dictionary: return this.createDefaultErrorsTranslations(langs);\n case StepControlType.DownloadDocuments: return this.createDownloadErrorsTranslations(langs);\n case StepControlType.UploadDocuments: return this.createUploadErrorsTranslations(langs);\n case StepControlType.ViewDocuments: return this.createViewErrorsTranslations(langs);\n }\n return [];\n }\n\n private static createDownloadErrorsTranslations(\n langs: Language[]\n ): ErrorTranslations[] {\n const tInfo: ErrorTranslations[] = [\n {\n code: 'failToDownload',\n translations: this.createLabelsInfo(langs, 'Failed to download.', 'Nu am reușit sa descarc.')\n },\n {\n code: 'noDocumentsToDownload',\n translations: this.createLabelsInfo(langs, 'No documents to download.', 'Nu sunt documente de descărcat.')\n },\n ];\n return tInfo;\n }\n\n private static createUploadErrorsTranslations(\n langs: Language[]\n ): ErrorTranslations[] {\n const tInfo: ErrorTranslations[] = [\n {\n code: 'invalidType',\n translations: this.createLabelsInfo(langs, 'Invalid type', 'Tip invalid')\n },\n {\n code: 'maxSize',\n translations: this.createLabelsInfo(langs, 'The item exceeds the maximum size of {0}.', 'Fișierul depașeste dimensiunea maxima de {0}.')\n },\n {\n code: 'isMandatory',\n translations: this.createLabelsInfo(langs, 'The item is mandatory.', 'Acest fișier este obligatoriu.')\n },\n {\n code: 'waitForUpload',\n translations: this.createLabelsInfo(langs, 'Please wait for upload to finish.', 'Vă rugam așteptați incărcarea fișierelor.')\n },\n ];\n\n return tInfo;\n }\n\n private static createViewErrorsTranslations(\n langs: Language[]\n ): ErrorTranslations[] {\n const tInfo: ErrorTranslations[] = [\n {\n code: 'failToView',\n translations: this.createLabelsInfo(langs, 'Failed to view', 'Nu am reușit sa vizualizez')\n },\n {\n code: 'noDocumentsToShow',\n translations: this.createLabelsInfo(langs, 'No documents to show', 'Nu sunt documente de afișat')\n },\n ];\n return tInfo;\n }\n\n private static createInputErrorsTranslations(\n langs: Language[]\n ): ErrorTranslations[] {\n const tInfo: ErrorTranslations[] = [\n {\n code: 'isMandatoryValidation',\n translations: this.createLabelsInfo(langs, 'This field is required.', 'Acest câmp este obligatoriu.')\n },\n {\n code: 'simpleValidation',\n translations: this.createLabelsInfo(langs, 'This field is invalid.', 'Acest câmp este invalid.')\n },\n {\n code: 'throughApiValidation',\n translations: this.createLabelsInfo(langs, 'This field is invalid.', 'Acest câmp este invalid.')\n },\n ];\n return tInfo;\n }\n\n private static createDefaultErrorsTranslations(\n langs: Language[]\n ): ErrorTranslations[] {\n const tInfo: ErrorTranslations[] = [\n {\n code: 'isMandatoryValidation',\n translations: this.createLabelsInfo(langs, 'This field is required.', 'Acest câmp este obligatoriu.')\n }\n ];\n return tInfo;\n }\n\n public static createCheckEmailTranslations(\n langs: Language[]\n ): TranslationInfo[] {\n const tInfo: TranslationInfo[] = [\n this.createTranslation(\n langs,\n 'name',\n 'common.others.name',\n 'Check email',\n 'Verifica email'\n ),\n this.createTranslation(\n langs,\n 'description',\n 'common.others.description',\n '',\n ''\n ),\n this.createTranslation(\n langs,\n 'emailLabel',\n 'flux.systemSteps.email.emailLabel',\n 'Email',\n 'Email'\n ),\n this.createTranslation(\n langs,\n 'emailButtonLabel',\n 'flux.systemSteps.email.emailButtonLabel',\n 'Send code',\n 'Trimite cod'\n ),\n this.createTranslation(\n langs,\n 'otpLabel',\n 'flux.systemSteps.email.otpLabel',\n 'Verification code',\n 'Cod de verificare'\n ),\n this.createTranslation(\n langs,\n 'otpButtonLabel',\n 'flux.systemSteps.email.otpButtonLabel',\n 'Verify',\n 'Verifică'\n ),\n this.createTranslation(\n langs,\n 'emailRequiredLabel',\n 'flux.components.email.emailRequiredLabel',\n 'Email is required',\n 'Email-ul este obligatoriu'\n ),\n this.createTranslation(\n langs,\n 'emailErrorLabel',\n 'flux.systemSteps.email.emailErrorLabel',\n 'Email is not valid',\n 'Email-ul nu este valid'\n ),\n this.createTranslation(\n langs,\n 'otpErrorLabel',\n 'flux.systemSteps.email.otpErrorLabel',\n 'Code verification error',\n 'Eroare la verificare cod'\n ),\n this.createTranslation(\n langs,\n 'otpSuccessLabel',\n 'flux.systemSteps.email.otpSuccessLabel',\n 'Code verification successful',\n 'Verificarea codului a fost realizată cu succes'\n ),\n ];\n return tInfo;\n }\n\n public static createCheckPhoneTranslations(\n langs: Language[]\n ): TranslationInfo[] {\n const tInfo: TranslationInfo[] = [\n this.createTranslation(\n langs,\n 'name',\n 'common.others.name',\n 'Check phone',\n 'Verifica telefon'\n ),\n this.createTranslation(\n langs,\n 'description',\n 'common.others.description',\n '',\n ''\n ),\n this.createTranslation(\n langs,\n 'phoneLabel',\n 'flux.systemSteps.phone.phoneLabel',\n 'Phone',\n 'Telefon'\n ),\n this.createTranslation(\n langs,\n 'phoneButtonLabel',\n 'flux.systemSteps.phone.phoneButtonLabel',\n 'Send code',\n 'Trimite cod'\n ),\n this.createTranslation(\n langs,\n 'otpLabel',\n 'flux.systemSteps.email.otpLabel',\n 'Verification code',\n 'Cod de verificare'\n ),\n this.createTranslation(\n langs,\n 'otpButtonLabel',\n 'flux.systemSteps.email.otpButtonLabel',\n 'Verify',\n 'Verifică'\n ),\n this.createTranslation(\n langs,\n 'phoneRequiredLabel',\n 'flux.components.phone.phoneRequiredLabel',\n 'Phone number is required',\n 'Numărul de telefon este obligatoriu'\n ),\n this.createTranslation(\n langs,\n 'phoneErrorLabel',\n 'flux.systemSteps.phone.phoneErrorLabel',\n 'Phone number is not valid',\n 'Numărul de telefon nu este valid'\n ),\n this.createTranslation(\n langs,\n 'otpErrorLabel',\n 'flux.systemSteps.email.otpErrorLabel',\n 'Code verification error',\n 'Eroare la verificare cod'\n ),\n this.createTranslation(\n langs,\n 'otpSuccessLabel',\n 'flux.systemSteps.email.otpSuccessLabel',\n 'Code verification successful',\n 'Verificarea codului a fost realizată cu succes'\n ),\n ];\n return tInfo;\n }\n\n public static createIdScanTranslations(langs: Language[]): TranslationInfo[] {\n const tInfo: TranslationInfo[] = [\n this.createTranslation(\n langs,\n 'name',\n 'common.others.name',\n 'Id scan',\n 'Scanare act identitate'\n ),\n this.createTranslation(\n langs,\n 'description',\n 'common.others.description',\n 'Step to scan id document',\n 'Pas pentru încarcarea documentului de identitate'\n ),\n this.createTranslation(\n langs,\n 'uploadFileButtonLabel',\n 'flux.systemSteps.idScan.uploadButtonTextLabel',\n 'Upload file',\n 'Încarcă fișier'\n ),\n this.createTranslation(\n langs,\n 'takePictureButtonLabel',\n 'flux.systemSteps.idScan.takePictureButtonTextLabel',\n 'Take picture',\n 'Realizează o fotografie'\n ),\n ];\n return tInfo;\n }\n\n public static createPauseTranslations(langs: Language[]): TranslationInfo[] {\n const tInfo: TranslationInfo[] = [\n this.createTranslation(\n langs,\n 'name',\n 'common.others.name',\n 'Pause',\n 'Pauză'\n ),\n this.createTranslation(\n langs,\n 'description',\n 'common.others.description',\n '',\n ''\n ),\n\n this.createTranslation(\n langs,\n 'offerReadyMessage',\n 'flux.systemSteps.pause.offerReadyMessageLabel',\n 'Your offer has been processed. Click on the link below to continue the flow.',\n 'Oferta dumneavoastra a fost procesata. Click pe link-ul de mai jos pentru a continua fluxul.'\n ),\n\n this.createTranslation(\n langs,\n 'continueOffersLinkMessageLabel',\n 'flux.systemSteps.pause.continueOffersLinkMessageLabel',\n 'Continue flow',\n 'Continuare flux'\n ),\n\n this.createTranslation(\n langs,\n 'offerReadySmsMessageLabel',\n 'flux.systemSteps.pause.offerReadySmsMessageLabel',\n 'Your offer has been processed. Click on the link below to continue the flow.',\n 'Oferta dumneavoastra a fost procesata. Click pe link-ul de mai jos pentru a continua fluxul.'\n ),\n ];\n return tInfo;\n }\n\n public static createActionTranslations(langs: Language[]): TranslationInfo[] {\n const tInfo: TranslationInfo[] = [\n this.createTranslation(\n langs,\n 'loadingMessageTranslations',\n 'appConfigEdit.flux.customStep.loadingMessage',\n 'Loading message',\n 'Mesaj de așteptare'\n ),\n ];\n return tInfo;\n }\n\n public static createStatusTranslations(langs: Language[]): TranslationInfo[] {\n const tInfo: TranslationInfo[] = [\n this.createTranslation(\n langs,\n 'loadingMessageTranslations',\n 'appConfigEdit.flux.customStep.loadingMessage',\n 'Loading message',\n 'Mesaj de așteptare'\n ),\n ];\n return tInfo;\n }\n\n public static createKycTranslations(langs: Language[]): TranslationInfo[] {\n const tInfo: TranslationInfo[] = [\n this.createTranslation(langs, 'name', 'common.others.name', 'KYC', 'KYC'),\n this.createTranslation(\n langs,\n 'description',\n 'common.others.description',\n '',\n ''\n ),\n this.createTranslation(\n langs,\n 'loadingMessageTranslations',\n 'appConfigEdit.flux.customStep.loadingMessage',\n 'Loading identification step...',\n 'Se încarcă pasul de identificare...'\n ),\n ];\n return tInfo;\n }\n\n public static createPaymentsTranslations(\n langs: Language[]\n ): TranslationInfo[] {\n const tInfo: TranslationInfo[] = [\n this.createTranslation(\n langs,\n 'name',\n 'common.others.name',\n 'Payment',\n 'Plată'\n ),\n this.createTranslation(\n langs,\n 'description',\n 'common.others.description',\n '',\n ''\n ),\n this.createTranslation(\n langs,\n 'cardenrolButtonLabel',\n 'cardenrol.cardenrolButtonLabel',\n 'Enrol card',\n 'Înrolează card'\n ),\n this.createTranslation(\n langs,\n 'cardenrolFailureLabel',\n 'cardenrol.cardenrolFailureLabel',\n 'Error enrolling card',\n 'Eroare la înrolare card'\n ),\n this.createTranslation(\n langs,\n 'cardenrolSuccessLabel',\n 'cardenrol.cardenrolSuccessLabel',\n 'Success enrolling card',\n 'Succes la înrolare card'\n ),\n ];\n return tInfo;\n }\n\n public static createOpenBankingTranslations(\n langs: Language[]\n ): TranslationInfo[] {\n const tInfo: TranslationInfo[] = [\n this.createTranslation(\n langs,\n 'name',\n 'common.others.name',\n 'Open Banking',\n 'Open Banking'\n ),\n this.createTranslation(\n langs,\n 'description',\n 'common.others.description',\n 'Connect your bank account',\n 'Conectați contul bancar'\n ),\n this.createTranslation(\n langs,\n 'initialMessageTranslations',\n 'flux.systemSteps.openBanking.initialMessage',\n 'To continue, we need to verify your bank account information. Click Next to proceed.',\n 'Pentru a continua, trebuie să verificăm informațiile contului dvs. bancar. Faceți clic pe Următorul pentru a continua.'\n ),\n this.createTranslation(\n langs,\n 'waitingMessageTranslations',\n 'flux.systemSteps.openBanking.waitingMessage',\n 'Please wait while we retrieve your account information...',\n 'Vă rugăm să așteptați până când preluăm informațiile contului dvs...'\n ),\n this.createTranslation(\n langs,\n 'consentErrorMessageTranslations',\n 'flux.systemSteps.openBanking.consentErrorMessage',\n 'You must provide consent to continue. Please try again.',\n 'Trebuie să oferiți consimțământul pentru a continua. Vă rugăm să încercați din nou.'\n ),\n this.createTranslation(\n langs,\n 'completionMessageTranslations',\n 'flux.systemSteps.openBanking.completionMessage',\n 'Account information successfully retrieved.',\n 'Informațiile contului au fost preluate cu succes.'\n ),\n this.createTranslation(\n langs,\n 'retryButtonLabelTranslations',\n 'flux.systemSteps.openBanking.retryButtonLabel',\n 'Retry',\n 'Reîncearcă'\n ),\n // Button translations\n this.createTranslation(\n langs,\n 'nextButtonTranslations',\n 'flux.systemSteps.openBanking.nextButton',\n 'Next',\n 'Următorul'\n ),\n this.createTranslation(\n langs,\n 'continueButtonTranslations',\n 'flux.systemSteps.openBanking.continueButton',\n 'Continue',\n 'Continuă'\n ),\n // UI labels\n this.createTranslation(\n langs,\n 'selectBankTranslations',\n 'flux.systemSteps.openBanking.selectBank',\n 'Select your bank',\n 'Selectați banca dvs.'\n ),\n this.createTranslation(\n langs,\n 'consentTitleTranslations',\n 'flux.systemSteps.openBanking.consentTitle',\n 'Bank Authorization',\n 'Autorizare bancară'\n ),\n this.createTranslation(\n langs,\n 'consentDescriptionTranslations',\n 'flux.systemSteps.openBanking.consentDescription',\n 'Please complete the authorization process with your bank',\n 'Vă rugăm să completați procesul de autorizare cu banca dvs.'\n ),\n this.createTranslation(\n langs,\n 'waitingForAuthorizationTranslations',\n 'flux.systemSteps.openBanking.waitingForAuthorization',\n 'Waiting for authorization...',\n 'Se așteaptă autorizarea...'\n ),\n this.createTranslation(\n langs,\n 'popupWindowMessageTranslations',\n 'flux.systemSteps.openBanking.popupWindowMessage',\n 'A new window has opened for bank authorization. Please complete the process there.',\n 'S-a deschis o fereastră nouă pentru autorizare bancară. Vă rugăm să completați procesul acolo.'\n ),\n this.createTranslation(\n langs,\n 'popupBlockerMessageTranslations',\n 'flux.systemSteps.openBanking.popupBlockerMessage',\n 'If the window didn\\'t open, please check your popup blocker settings.',\n 'Dacă fereastra nu s-a deschis, vă rugăm să verificați setările blocatorului de popup-uri.'\n ),\n this.createTranslation(\n langs,\n 'accountsRetrievedTranslations',\n 'flux.systemSteps.openBanking.accountsRetrieved',\n 'Accounts retrieved',\n 'Conturi preluate'\n ),\n this.createTranslation(\n langs,\n 'transactionsRetrievedTranslations',\n 'flux.systemSteps.openBanking.transactionsRetrieved',\n 'Transactions retrieved',\n 'Tranzacții preluate'\n ),\n this.createTranslation(\n langs,\n 'accountsFoundTranslations',\n 'flux.systemSteps.openBanking.accountsFound',\n '{0} account(s) found',\n '{0} cont(uri) găsite'\n ),\n this.createTranslation(\n langs,\n 'transactionsSummaryTranslations',\n 'flux.systemSteps.openBanking.transactionsSummary',\n '{0} transaction(s) retrieved for the last {1} month(s)',\n '{0} tranzacție(i) preluate pentru ultimele {1} lună(i)'\n ),\n ];\n return tInfo;\n }\n\n public static createCustomStepTranslations(\n langs: Language[]\n ): TranslationInfo[] {\n const tInfo: TranslationInfo[] = [\n this.createTranslation(\n langs,\n 'name',\n 'common.others.name',\n 'Custom step',\n 'Pas custom'\n ),\n this.createTranslation(\n langs,\n 'description',\n 'common.others.description',\n '',\n ''\n ),\n ];\n return tInfo;\n }\n\n public static createViewOfferStepTranslations(\n langs: Language[]\n ): TranslationInfo[] {\n const tInfo: TranslationInfo[] = [\n this.createTranslation(\n langs,\n 'name',\n 'common.others.name',\n 'View offer',\n 'Vizualizare ofertă'\n ),\n this.createTranslation(\n langs,\n 'description',\n 'common.others.description',\n 'View offer step',\n 'Pas pentru vizualizare ofertă'\n ),\n ];\n return tInfo;\n }\n\n public static createSignTranslations(langs: Language[]): TranslationInfo[] {\n const tInfo: TranslationInfo[] = [\n this.createTranslation(\n langs,\n 'name',\n 'common.others.name',\n 'Sign documents',\n 'Semnare documente'\n ),\n this.createTranslation(\n langs,\n 'description',\n 'common.others.description',\n 'Sign documents step',\n 'Pas pentru semnare documente'\n ),\n ];\n return tInfo;\n }\n\n public static createGenerateDocumentsTranslations(\n langs: Language[]\n ): TranslationInfo[] {\n const tInfo: TranslationInfo[] = [\n this.createTranslation(\n langs,\n 'name',\n 'common.others.name',\n 'Generate documents',\n 'Generare documente'\n ),\n this.createTranslation(\n langs,\n 'description',\n 'common.others.description',\n 'Generate documents step',\n 'Pas pentru generare documente'\n ),\n ];\n return tInfo;\n }\n\n private static createTranslation(\n langs: Language[],\n name: string,\n translationKey: string,\n enValue: string,\n roValue: string\n ): TranslationInfo {\n return {\n name: name,\n translationKey: translationKey,\n values: this.createLabelsInfo(langs, enValue, roValue),\n };\n }\n\n public static createLabelsInfo(supportedLanguages: Language[], enValue: string, roValue: string): LabelInfo[] {\n return this.createLabelsInfoCore(supportedLanguages, [\n { iso: 'en', value: enValue },\n { iso: 'ro', value: roValue },\n ]);\n }\n\n private static createLabelsInfoCore(\n supportedLanguages: Language[],\n values: { iso: string; value: string }[]\n ): LabelInfo[] {\n let list: LabelInfo[] = [];\n values.forEach((v) => {\n const langId = supportedLanguages.find((lang) => lang.iso === v.iso)?.id;\n if (langId && langId > 0) {\n list.push({\n languageId: langId,\n languageIso: v.iso,\n value: v.value,\n });\n }\n });\n return list;\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { Label } from \"../models/label.model\";\nimport { Utils } from \"../others/utils\";\n\n@Injectable({ providedIn: 'root' })\nexport class TranslationService {\n private dictionary: { [key: string]: string } = {};\n\n constructor() { }\n\n setLabels(labels: Label[]) {\n labels?.forEach((label) => {\n this.dictionary[label.labelName] = label.labelValue;\n });\n }\n\n translate(key: string, args?: any): string {\n var translated = this.dictionary[key] ?? key;\n if (args?.length > 0) {\n translated = Utils.formatString(\n translated,\n args\n );\n }\n return translated;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslationService } from '../services/translation.service';\n\n@Pipe({\n name: 'translate',\n pure: false,\n})\nexport class TranslatePipe implements PipeTransform {\n constructor(private translationService: TranslationService) { }\n\n transform(value: any, args?: any): any {\n return this.translationService.translate(value);\n }\n}\n","import { Language } from '../models/language.model';\nimport { LabelInfo } from '../models/label-info.model';\nimport {\n FluxType,\n StepControlType,\n ManualInputControlType,\n SectionType,\n AppDocument,\n DimensionType,\n FormModel,\n} from '../models/forms.model';\nimport { v4 as uuidv4 } from 'uuid';\nimport { Injectable } from '@angular/core';\nimport { TranslatePipe } from './translation.pipe';\nimport { LabelKeys } from '../enums/label.keys';\nimport { ControlData, StepData, SectionData } from '../models/flux.model';\nimport { TranslationsHelper } from './translations-helper';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FluxHelper {\n constructor(private translate: TranslatePipe) {}\n\n /**\n * Generate unique V1-compatible identifier\n */\n generateUniqueId(prefix: string): string {\n // Match FluxV1 pattern: prefix_UUID\n const uuid = uuidv4();\n return prefix ? uuid : uuid;\n }\n\n /**\n * Create translations only for supported languages\n */\n private createTranslationsIfSupported(\n supportedLanguages: Language[],\n values: { iso: string; value: string }[]\n ): LabelInfo[] {\n let list: LabelInfo[] = [];\n values.forEach((v) => {\n const langId = supportedLanguages.find((lang) => lang.iso === v.iso)?.id;\n if (langId && langId > 0) {\n list.push({\n languageId: langId,\n languageIso: v.iso,\n value: v.value,\n });\n }\n });\n return list;\n }\n\n /**\n * Create a manual input control\n */\n private createManualInputControl(\n name: string,\n identifier: string,\n type: ManualInputControlType,\n isMandatory: boolean = true,\n dimension: number = 50\n ): ControlData {\n return {\n identifier,\n type: StepControlType.ManualInput,\n title: name,\n canEdit: false,\n canDepend: false,\n isOnlyForConfig: false,\n isPresentationControl: false,\n dependentDictionary: {\n isDictionaryDependent: false,\n dictionaryControlIdentifier: '',\n dependentValueIds: [],\n },\n isMandatory: false,\n translations: [],\n dimension,\n dimensionType: DimensionType.Percentage,\n autoDimension: false,\n specificControlData: {\n type,\n isMandatory,\n allowedCharacters: '',\n maxCharacters: type === ManualInputControlType.Text ? 50 : undefined,\n minValue: type === ManualInputControlType.Numeric ? 0 : undefined,\n maxValue: type === ManualInputControlType.Numeric ? 9999999 : undefined,\n allowOnlyFuture: false,\n allowOnlyPast: false,\n isSimpleValidation: false,\n isApiValidation: false,\n },\n errorsTranslations: [],\n };\n }\n\n /**\n * Create a paragraph control\n */\n private createParagraphControl(\n text: string,\n identifier: string,\n showValidations: boolean = false,\n isMandatory: boolean = false\n ): ControlData {\n return {\n identifier,\n type: StepControlType.Paragraph,\n title: text,\n canEdit: false,\n canDepend: false,\n isMandatory: false,\n isPresentationControl: false,\n dependentDictionary: {\n isDictionaryDependent: false,\n dictionaryControlIdentifier: '',\n dependentValueIds: [],\n },\n translations: [],\n isOnlyForConfig: false,\n dimension: 100,\n dimensionType: DimensionType.Percentage,\n autoDimension: true,\n specificControlData: {\n descriptionTranslations: [],\n showValidations,\n isMandatory,\n isMandatoryTranslations: [],\n },\n errorsTranslations: [],\n };\n }\n\n /**\n * Create a new row control\n */\n private createNewRowControl(): ControlData {\n return {\n identifier: this.generateUniqueId('newrow'),\n type: StepControlType.NewRow,\n title: 'New Row',\n canEdit: false,\n canDepend: false,\n isOnlyForConfig: false,\n isPresentationControl: false,\n dependentDictionary: {\n isDictionaryDependent: false,\n dictionaryControlIdentifier: '',\n dependentValueIds: [],\n },\n isMandatory: false,\n translations: [],\n dimension: 100,\n dimensionType: DimensionType.Percentage,\n autoDimension: true,\n specificControlData: {},\n errorsTranslations: [],\n };\n }\n\n /**\n * Create KYC step with all default sections\n */\n createKycStep(supportedLanguages: Language[]): StepData {\n const stepName = this.translate.transform(LabelKeys.flux.identification);\n const step: StepData = {\n identifier: this.generateUniqueId(`${stepName} - KYC`),\n name: stepName,\n type: FluxType.Kyc,\n sections: [],\n isVisible: true,\n config: {},\n translations:\n TranslationsHelper.createKycTranslations(supportedLanguages),\n panelOpenState: true,\n buttons: [],\n dependentDictionary: {\n isDictionaryDependent: false,\n dictionaryControlIdentifier: '',\n dependentValueIds: [],\n },\n errorsTranslations: [],\n hasNameAndDescription: true,\n canDepend: true,\n collapsed: false,\n };\n\n // Section 1: KYC Status\n const statusSection: SectionData = {\n title: this.translate.transform(LabelKeys.flux.stepInfo.kycStatusTitle),\n type: SectionType.Presentation,\n controls: [\n {\n type: StepControlType.CheckBox,\n identifier: 'IdentityValidationStatus',\n title: this.translate.transform(\n LabelKeys.flux.stepInfo.validationStatus\n ),\n } as ControlData,\n ],\n identifier: this.generateUniqueId(\n this.translate.transform(LabelKeys.flux.stepInfo.kycStatusTitle)\n ),\n } as SectionData;\n\n // Section 2: Personal Information\n const personData = [\n 'CNP',\n 'IDSeries',\n 'IDNumber',\n 'FirstName',\n 'LastName',\n 'Nationality',\n 'IDExpirationDate',\n 'IDValidity',\n 'Address',\n 'PlaceOfBirth',\n 'DateOfBirth',\n ];\n const personControls: ControlData[] = personData.map((item) => {\n return {\n type: StepControlType.ManualInput,\n identifier: uuidv4(),\n title: item,\n specificControlData: {\n type: ManualInputControlType.Text,\n },\n } as ControlData;\n });\n\n const personalSection: SectionData = {\n title: this.translate.transform(LabelKeys.flux.stepInfo.kycPersonTitle),\n type: SectionType.Presentation,\n controls: personControls,\n identifier: this.generateUniqueId(\n this.translate.transform(LabelKeys.flux.stepInfo.kycPersonTitle)\n ),\n } as SectionData;\n\n // Section 3: Validation Data\n const validationSection: SectionData = {\n identifier: this.generateUniqueId(\n this.translate.transform(LabelKeys.flux.stepInfo.kycValidationTitle)\n ),\n title: this.translate.transform(\n LabelKeys.flux.stepInfo.kycValidationTitle\n ),\n controls: [\n {\n canEdit: true,\n canDepend: false,\n isOnlyForConfig: false,\n type: StepControlType.ManualInput,\n identifier: 'ClientPhoneNumber',\n title: 'ClientPhoneNumber',\n specificControlData: {\n type: ManualInputControlType.Phone,\n },\n } as ControlData,\n {\n canEdit: true,\n canDepend: false,\n isOnlyForConfig: false,\n type: StepControlType.ManualInput,\n identifier: 'IdSnapshot',\n title: 'IdSnapshot',\n specificControlData: {\n type: ManualInputControlType.Text,\n },\n } as ControlData,\n {\n canEdit: true,\n canDepend: false,\n isOnlyForConfig: false,\n type: StepControlType.ManualInput,\n identifier: 'FaceSnapshot',\n title: 'FaceSnapshot',\n specificControlData: {\n type: ManualInputControlType.Text,\n },\n } as ControlData,\n ],\n canDepend: true,\n } as SectionData;\n\n // Section 4: Address Information\n const addressData = [\n 'DistrictName',\n 'CityName',\n 'StreetName',\n 'StreetNo',\n 'FlatNo',\n 'StairNo',\n 'FloorNo',\n 'ApartmentNo',\n ];\n const addressControls: ControlData[] = addressData.map((item) => {\n return {\n type: StepControlType.ManualInput,\n identifier: uuidv4(),\n title: item,\n specificControlData: {\n type: ManualInputControlType.Text,\n },\n } as ControlData;\n });\n\n const addressSection: SectionData = {\n identifier: this.generateUniqueId(\n this.translate.transform(LabelKeys.flux.stepInfo.kycAddressTitle)\n ),\n title: this.translate.transform(LabelKeys.flux.stepInfo.kycAddressTitle),\n type: SectionType.Presentation,\n controls: addressControls,\n canDepend: true,\n } as SectionData;\n\n step.sections = [\n statusSection,\n personalSection,\n validationSection,\n addressSection,\n ];\n return step;\n }\n\n /**\n * Create Email Verification step\n */\n createCheckEmailStep(supportedLanguages: Language[]): StepData {\n const step: StepData = {\n identifier: this.generateUniqueId('step'),\n name: this.translate.transform(LabelKeys.flux.verifyEmail),\n type: FluxType.Email,\n sections: [],\n isVisible: true,\n config: {\n collected: false,\n componentCollected: '',\n },\n translations:\n TranslationsHelper.createCheckEmailTranslations(supportedLanguages),\n panelOpenState: true,\n buttons: [],\n dependentDictionary: {\n isDictionaryDependent: false,\n dictionaryControlIdentifier: '',\n dependentValueIds: [],\n },\n errorsTranslations: [],\n hasNameAndDescription: true,\n canDepend: true,\n collapsed: false,\n };\n\n // Add email verification section\n const section: SectionData = {\n identifier: `Sistem - Email_${this.generateUniqueId('sec')}`,\n title: 'Sistem - Email',\n type: SectionType.Presentation,\n controls: [\n {\n canEdit: true,\n canDepend: false,\n isOnlyForConfig: false,\n type: StepControlType.ManualInput,\n identifier: 'validated-email',\n title: 'Email Valid',\n specificControlData: {\n type: ManualInputControlType.Email,\n },\n } as ControlData,\n ],\n canDepend: true,\n } as SectionData;\n\n step.sections = [section];\n return step;\n }\n\n /**\n * Create Phone Verification step\n */\n createCheckPhoneStep(supportedLanguages: Language[]): StepData {\n const step: StepData = {\n identifier: this.generateUniqueId('step'),\n name: this.translate.transform(LabelKeys.flux.verifyPhone),\n type: FluxType.Phone,\n sections: [],\n isVisible: true,\n config: {\n collected: false,\n componentCollected: '',\n },\n translations:\n TranslationsHelper.createCheckPhoneTranslations(supportedLanguages),\n panelOpenState: true,\n buttons: [],\n dependentDictionary: {\n isDictionaryDependent: false,\n dictionaryControlIdentifier: '',\n dependentValueIds: [],\n },\n errorsTranslations: [],\n hasNameAndDescription: true,\n canDepend: true,\n collapsed: false,\n };\n\n // Add phone verification section\n const section: SectionData = {\n identifier: `Sistem - Tel_${this.generateUniqueId('sec')}`,\n title: 'Sistem - Tel',\n type: SectionType.Presentation,\n controls: [\n {\n canEdit: true,\n canDepend: false,\n isOnlyForConfig: false,\n type: StepControlType.ManualInput,\n identifier: 'validated-phone',\n title: 'Nr tel Valid',\n specificControlData: {\n type: ManualInputControlType.Phone,\n },\n } as ControlData,\n ],\n canDepend: true,\n } as SectionData;\n\n step.sections = [section];\n return step;\n }\n\n /**\n * Create ID Scan step\n */\n createScanStep(supportedLanguages: Language[]): StepData {\n const step: StepData = {\n identifier: this.generateUniqueId('step'),\n name: this.translate.transform(LabelKeys.flux.idScan),\n type: FluxType.IdScan,\n sections: [],\n isVisible: true,\n config: {\n showUploadFileButton: true,\n showTakePictureButton: true,\n fileMaxSize: 5000,\n fileFormats: '*.jpg,*.png',\n },\n translations:\n TranslationsHelper.createIdScanTranslations(supportedLanguages),\n panelOpenState: true,\n buttons: [],\n dependentDictionary: {\n isDictionaryDependent: false,\n dictionaryControlIdentifier: '',\n dependentValueIds: [],\n },\n errorsTranslations: [\n {\n code: 'invalidStatus',\n translations: this.createTranslationsIfSupported(supportedLanguages, [\n { iso: 'en', value: 'Invalid status response' },\n { iso: 'ro', value: 'Raspuns status invalid' },\n ]),\n },\n {\n code: 'invalidType',\n translations: this.createTranslationsIfSupported(supportedLanguages, [\n { iso: 'en', value: 'Invalid type. Allowed formats are {formats}' },\n { iso: 'ro', value: 'Tip invalid. Formatul permis este {formats}' },\n ]),\n },\n {\n code: 'maxSize',\n translations: this.createTranslationsIfSupported(supportedLanguages, [\n {\n iso: 'en',\n value: 'The selected file is too big. Max allowed size is {size}',\n },\n {\n iso: 'ro',\n value:\n 'Fișierul selectat este prea mare. Dimensiunea maximă este {size}',\n },\n ]),\n },\n {\n code: 'frontId',\n translations: this.createTranslationsIfSupported(supportedLanguages, [\n {\n iso: 'en',\n value: 'Please upload the front photo of your ID card.',\n },\n {\n iso: 'ro',\n value:\n 'Vă rugăm să urcați partea din față a documentului de identitate.',\n },\n ]),\n },\n {\n code: 'backId',\n translations: this.createTranslationsIfSupported(supportedLanguages, [\n {\n iso: 'en',\n value: 'Please upload the back photo of your ID card.',\n },\n {\n iso: 'ro',\n value:\n 'Vă rugăm să urcați partea din spate a documentului de identitate.',\n },\n ]),\n },\n ],\n hasNameAndDescription: true,\n canDepend: true,\n collapsed: false,\n };\n\n // Match V1 ID Scan sections exactly\n // Status section\n const statusSection: SectionData = {\n identifier: this.generateUniqueId('ID SCAN Status'),\n title: 'ID SCAN Status',\n type: SectionType.Presentation,\n controls: [\n {\n type: StepControlType.CheckBox,\n identifier: this.generateUniqueId('ID SCAN Validation Status'),\n title: 'ID SCAN Validation Status',\n } as ControlData,\n ],\n } as SectionData;\n\n // Person data section\n const personData = [\n 'CNP',\n 'IDSeries',\n 'IDNumber',\n 'FirstName',\n 'LastName',\n 'Nationality',\n 'IDExpirationDate',\n 'IDValidity',\n 'Address',\n 'PlaceOfBirth',\n ];\n const personControls: ControlData[] = personData.map((item) => {\n return {\n type: StepControlType.ManualInput,\n identifier: this.generateUniqueId(item),\n title: item,\n specificControlData: {\n type: ManualInputControlType.Text,\n },\n } as ControlData;\n });\n\n const personSection: SectionData = {\n identifier: this.generateUniqueId('ID SCAN Persoana'),\n title: 'ID SCAN Persoana',\n type: SectionType.Presentation,\n controls: personControls,\n } as SectionData;\n\n step.sections = [statusSection, personSection];\n return step;\n }\n\n /**\n * Create Sign step\n */\n createSignStep(supportedLanguages: Language[]): StepData {\n const step: StepData = {\n identifier: this.generateUniqueId('step'),\n name: this.translate.transform(LabelKeys.flux.sign),\n type: FluxType.Sign,\n sections: [],\n isVisible: true,\n config: {\n signatureType: 'Electronic',\n showConfirm: true,\n companySign: false,\n firstNameCollected: '',\n lastNameCollected: '',\n documents: [],\n docsToSign: [],\n },\n translations:\n TranslationsHelper.createSignTranslations(supportedLanguages),\n panelOpenState: true,\n buttons: [],\n dependentDictionary: {\n isDictionaryDependent: false,\n dictionaryControlIdentifier: '',\n dependentValueIds: [],\n },\n errorsTranslations: [],\n hasNameAndDescription: true,\n canDepend: true,\n collapsed: false,\n };\n\n // Add sign section\n const section: SectionData = {\n identifier: this.generateUniqueId('sec'),\n title: 'Document Signing',\n type: SectionType.Presentation,\n controls: [\n this.createParagraphControl(\n 'Please sign the following documents',\n 'sign-instruction',\n false,\n false\n ),\n {\n identifier: this.generateUniqueId('comp'),\n type: StepControlType.ViewDocuments,\n title: 'Documents to Sign',\n canEdit: false,\n canDepend: false,\n isOnlyForConfig: false,\n dimension: 100,\n dimensionType: DimensionType.Percentage,\n autoDimension: true,\n isPresentationControl: false,\n specificControlData: {\n documents: [],\n },\n errorsTranslations: [],\n dependentDictionary: {\n isDictionaryDependent: false,\n dictionaryControlIdentifier: '',\n dependentValueIds: [],\n },\n isMandatory: false,\n translations: [],\n },\n ],\n presentationControls: [],\n isNavigationSection: false,\n canDepend: false,\n translations: [],\n collapsed: false,\n showSectionTitle: true,\n showSectionSeparator: true,\n };\n\n step.sections = [section];\n return step;\n }\n\n /**\n * Create Generate Documents step\n */\n createGenerateDocumentsStep(supportedLanguages: Language[]): StepData {\n const step: StepData = {\n identifier: this.generateUniqueId('step'),\n name: this.translate.transform(LabelKeys.flux.generateDocument),\n type: FluxType.GenerateDocument,\n sections: [],\n isVisible: true,\n config: {\n generatedDocuments: [],\n },\n translations:\n TranslationsHelper.createGenerateDocumentsTranslations(\n supportedLanguages\n ),\n panelOpenState: true,\n buttons: [],\n dependentDictionary: {\n isDictionaryDependent: false,\n dictionaryControlIdentifier: '',\n dependentValueIds: [],\n },\n errorsTranslations: [],\n hasNameAndDescription: true,\n canDepend: true,\n collapsed: false,\n };\n\n // No default sections for generate documents\n return step;\n }\n\n /**\n * Create Pause step\n */\n createPauseStep(supportedLanguages: Language[]): StepData {\n const stepName = this.translate.transform(LabelKeys.flux.pause);\n const step: StepData = {\n identifier: this.generateUniqueId(`${stepName} - Pause`),\n name: stepName,\n type: FluxType.Pause,\n sections: [],\n isVisible: true,\n config: {},\n translations:\n TranslationsHelper.createPauseTranslations(supportedLanguages),\n panelOpenState: true,\n buttons: [],\n dependentDictionary: {\n isDictionaryDependent: false,\n dictionaryControlIdentifier: '',\n dependentValueIds: [],\n },\n errorsTranslations: [],\n hasNameAndDescription: true,\n canDepend: true,\n collapsed: false,\n };\n\n // Add pause message section\n const section: SectionData = {\n identifier: this.generateUniqueId('sec'),\n title: 'Flow Paused',\n type: SectionType.Presentation,\n controls: [\n this.createParagraphControl(\n 'The workflow has been paused',\n 'pause-message',\n false,\n false\n ),\n ],\n presentationControls: [],\n isNavigationSection: false,\n canDepend: false,\n translations: [],\n collapsed: false,\n showSectionTitle: true,\n showSectionSeparator: true,\n };\n\n step.sections = [section];\n return step;\n }\n\n /**\n * Create Action step\n */\n createActionStep(supportedLanguages: Language[]): StepData {\n const step: StepData = {\n identifier: this.generateUniqueId('step'),\n name: this.translate.transform(LabelKeys.flux.action),\n type: FluxType.Action,\n sections: [],\n isVisible: true,\n config: {\n apiMethod: '',\n apiPartners: [],\n },\n translations:\n TranslationsHelper.createActionTranslations(supportedLanguages),\n panelOpenState: true,\n buttons: [],\n dependentDictionary: {\n isDictionaryDependent: false,\n dictionaryControlIdentifier: '',\n dependentValueIds: [],\n },\n errorsTranslations: [],\n hasNameAndDescription: true,\n canDepend: true,\n collapsed: false,\n };\n\n // No default sections for action step\n return step;\n }\n\n /**\n * Create Status step with default section\n */\n createStatusStep(supportedLanguages: Language[]): StepData {\n const step: StepData = {\n identifier: this.generateUniqueId('step'),\n name: this.translate.transform(LabelKeys.flux.status),\n type: FluxType.Status,\n sections: [],\n isVisible: true,\n config: {},\n panelOpenState: true,\n buttons: [],\n translations:\n TranslationsHelper.createStatusTranslations(supportedLanguages),\n dependentDictionary: {\n isDictionaryDependent: false,\n dictionaryControlIdentifier: '',\n dependentValueIds: [],\n },\n errorsTranslations: [],\n hasNameAndDescription: true,\n canDepend: true,\n collapsed: false,\n };\n\n // Add status selection section\n const section: SectionData = {\n canDepend: true,\n title: 'Status Sistem',\n type: SectionType.Presentation,\n controls: [\n {\n canEdit: true,\n canDepend: false,\n isOnlyForConfig: false,\n type: StepControlType.NewRow,\n identifier: 'select-status',\n title: 'Flux',\n specificControlData: {\n type: ManualInputControlType.Text,\n },\n } as ControlData,\n ],\n identifier: `Status Sistem_${this.generateUniqueId('sec')}`,\n } as SectionData;\n\n step.sections = [section];\n return step;\n }\n\n /**\n * Create Upload Document step\n */\n createUploadDocumentStep(supportedLanguages: Language[]): StepData {\n const step: StepData = {\n identifier: this.generateUniqueId('step'),\n name: this.translate.transform(LabelKeys.flux.uploadDocument),\n type: FluxType.UploadDocument,\n sections: [],\n isVisible: true,\n config: {},\n panelOpenState: true,\n buttons: [],\n dependentDictionary: {\n isDictionaryDependent: false,\n dictionaryControlIdentifier: '',\n dependentValueIds: [],\n },\n translations: [],\n errorsTranslations: [],\n hasNameAndDescription: true,\n canDepend: true,\n collapsed: false,\n };\n\n // Add upload section\n const section: SectionData = {\n identifier: this.generateUniqueId('sec'),\n title: 'Upload Documents',\n type: SectionType.Collect,\n controls: [\n {\n identifier: this.generateUniqueId('comp'),\n type: StepControlType.UploadDocuments,\n title: this.translate.transform(LabelKeys.flux.uploadDocument),\n canEdit: false,\n canDepend: false,\n isOnlyForConfig: false,\n isPresentationControl: false,\n dimension: 100,\n dimensionType: DimensionType.Percentage,\n autoDimension: true,\n specificControlData: {\n documents: [],\n fileMaxSize: 10000,\n fileFormats: '*.pdf,*.jpg,*.png,*.doc,*.docx',\n isMandatory: true,\n },\n errorsTranslations: [],\n dependentDictionary: {\n isDictionaryDependent: false,\n dictionaryControlIdentifier: '',\n dependentValueIds: [],\n },\n isMandatory: false,\n translations: [],\n },\n ],\n presentationControls: [],\n isNavigationSection: false,\n canDepend: false,\n translations: [],\n collapsed: false,\n showSectionTitle: true,\n showSectionSeparator: true,\n };\n\n step.sections = [section];\n return step;\n }\n\n /**\n * Create Download Document step\n */\n createDownloadDocumentStep(supportedLanguages: Language[]): StepData {\n const step: StepData = {\n identifier: this.generateUniqueId('step'),\n name: this.translate.transform(LabelKeys.flux.downloadDocument),\n type: FluxType.DownloadDocument,\n sections: [],\n isVisible: true,\n config: {},\n panelOpenState: true,\n buttons: [],\n dependentDictionary: {\n isDictionaryDependent: false,\n dictionaryControlIdentifier: '',\n dependentValueIds: [],\n },\n translations: [],\n errorsTranslations: [],\n hasNameAndDescription: true,\n canDepend: true,\n collapsed: false,\n };\n\n // Add download section\n const section: SectionData = {\n identifier: this.generateUniqueId('sec'),\n title: 'Download Documents',\n type: SectionType.Presentation,\n controls: [\n {\n identifier: this.generateUniqueId('comp'),\n type: StepControlType.DownloadDocuments,\n title: this.translate.transform(LabelKeys.flux.downloadDocument),\n canEdit: false,\n canDepend: false,\n isOnlyForConfig: false,\n isPresentationControl: false,\n dimension: 100,\n dimensionType: DimensionType.Percentage,\n autoDimension: true,\n specificControlData: {\n documents: [],\n },\n errorsTranslations: [],\n dependentDictionary: {\n isDictionaryDependent: false,\n dictionaryControlIdentifier: '',\n dependentValueIds: [],\n },\n isMandatory: false,\n translations: [],\n },\n ],\n presentationControls: [],\n isNavigationSection: false,\n canDepend: false,\n translations: [],\n collapsed: false,\n showSectionTitle: true,\n showSectionSeparator: true,\n };\n\n step.sections = [section];\n return step;\n }\n\n /**\n * Create View Document step\n */\n createViewDocumentStep(supportedLanguages: Language[]): StepData {\n const step: StepData = {\n identifier: this.generateUniqueId('step'),\n name: this.translate.transform(LabelKeys.flux.viewDocument),\n type: FluxType.ViewDocument,\n sections: [],\n isVisible: true,\n config: {},\n panelOpenState: true,\n buttons: [],\n dependentDictionary: {\n isDictionaryDependent: false,\n dictionaryControlIdentifier: '',\n dependentValueIds: [],\n },\n translations: [],\n errorsTranslations: [],\n hasNameAndDescription: true,\n canDepend: true,\n collapsed: false,\n };\n\n // Add view section\n const section: SectionData = {\n identifier: this.generateUniqueId('sec'),\n title: 'View Documents',\n type: SectionType.Presentation,\n controls: [\n {\n identifier: this.generateUniqueId('comp'),\n type: StepControlType.ViewDocuments,\n title: this.translate.transform(LabelKeys.flux.viewDocument),\n canEdit: false,\n canDepend: false,\n isOnlyForConfig: false,\n isPresentationControl: false,\n dimension: 100,\n dimensionType: DimensionType.Percentage,\n autoDimension: true,\n specificControlData: {\n documents: [],\n },\n errorsTranslations: [],\n dependentDictionary: {\n isDictionaryDependent: false,\n dictionaryControlIdentifier: '',\n dependentValueIds: [],\n },\n isMandatory: false,\n translations: [],\n },\n ],\n presentationControls: [],\n isNavigationSection: false,\n canDepend: false,\n translations: [],\n collapsed: false,\n showSectionTitle: true,\n showSectionSeparator: true,\n };\n\n step.sections = [section];\n return step;\n }\n\n /**\n * Create View Offer step\n */\n createViewOfferStep(supportedLanguages: Language[]): StepData {\n const step: StepData = {\n identifier: this.generateUniqueId('step'),\n name: this.translate.transform(LabelKeys.flux.viewOffer),\n type: FluxType.ViewOffer,\n sections: [],\n isVisible: true,\n config: {},\n panelOpenState: true,\n buttons: [],\n dependentDictionary: {\n isDictionaryDependent: false,\n dictionaryControlIdentifier: '',\n dependentValueIds: [],\n },\n translations:\n TranslationsHelper.createViewOfferStepTranslations(supportedLanguages),\n errorsTranslations: [],\n hasNameAndDescription: true,\n canDepend: true,\n collapsed: false,\n };\n\n // No default sections for view offer\n return step;\n }\n\n /**\n * Create NETOPIA Payment step\n */\n createNetopiaStep(supportedLanguages: Language[]): StepData {\n const stepName = this.translate.transform(LabelKeys.flux.netopia);\n const step: StepData = {\n identifier: this.generateUniqueId(`${stepName} - NETOPIA`),\n name: stepName,\n type: FluxType.NETOPIA,\n sections: [],\n isVisible: true,\n config: {},\n panelOpenState: true,\n buttons: [],\n dependentDictionary: {\n isDictionaryDependent: false,\n dictionaryControlIdentifier: '',\n dependentValueIds: [],\n },\n translations:\n TranslationsHelper.createPaymentsTranslations(supportedLanguages),\n errorsTranslations: [],\n hasNameAndDescription: true,\n canDepend: true,\n collapsed: false,\n };\n\n const section: SectionData = {\n identifier: this.generateUniqueId('sec'),\n title: 'Netopia Payment',\n type: SectionType.Presentation,\n controls: [],\n presentationControls: [],\n isNavigationSection: false,\n canDepend: false,\n translations: [],\n collapsed: false,\n showSectionTitle: true,\n showSectionSeparator: true,\n };\n step.sections = [section];\n\n // No default sections for payment steps\n return step;\n }\n\n /**\n * Create EUPLATESC Payment step\n */\n createEuplatescStep(supportedLanguages: Language[]): StepData {\n const stepName = this.translate.transform(LabelKeys.flux.euPlatesc);\n const step: StepData = {\n identifier: this.generateUniqueId(`${stepName} - EUPLATESC`),\n name: stepName,\n type: FluxType.EUPLATESC,\n sections: [],\n isVisible: true,\n config: {},\n translations:\n TranslationsHelper.createPaymentsTranslations(supportedLanguages),\n panelOpenState: true,\n buttons: [],\n dependentDictionary: {\n isDictionaryDependent: false,\n dictionaryControlIdentifier: '',\n dependentValueIds: [],\n },\n errorsTranslations: [],\n hasNameAndDescription: true,\n canDepend: true,\n collapsed: false,\n };\n\n const section: SectionData = {\n identifier: this.generateUniqueId('sec'),\n title: 'EuPlatesc Payment',\n type: SectionType.Presentation,\n controls: [],\n presentationControls: [],\n isNavigationSection: false,\n canDepend: false,\n translations: [],\n collapsed: false,\n showSectionTitle: true,\n showSectionSeparator: true,\n };\n step.sections = [section];\n\n // No default sections for payment steps\n return step;\n }\n\n /**\n * Create Open Banking step with default sections and controls\n */\n createOpenBankingStep(supportedLanguages: Language[]): StepData {\n const stepName = this.translate.transform(LabelKeys.flux.openBanking);\n const step: StepData = {\n identifier: this.generateUniqueId('step'),\n name: stepName,\n type: FluxType.OpenBanking,\n sections: [],\n isVisible: true,\n config: {\n // Field mappings\n accountNumberCollected: '',\n accountHolderCollected: '',\n emailCollected: '',\n psuIntermediaryId: '',\n\n // Bank settings\n showAllBanks: true,\n extractBankFromIBAN: false,\n countryCode: 'RO',\n\n // Transaction settings\n transactionPeriodMonths: 3,\n periodOfValidity: 90,\n tcAcceptedByDefault: true,\n redirectUrl: '',\n\n // Messages - will be initialized with translations\n initialMessageTranslations: this.createTranslationsIfSupported(\n supportedLanguages,\n [\n {\n iso: 'en',\n value:\n 'To continue, we need to verify your bank account information. Click Next to proceed.',\n },\n {\n iso: 'ro',\n value:\n 'Pentru a continua, trebuie să verificăm informațiile contului dvs. bancar. Faceți clic pe Următorul pentru a continua.',\n },\n ]\n ),\n waitingMessageTranslations: this.createTranslationsIfSupported(\n supportedLanguages,\n [\n {\n iso: 'en',\n value:\n 'Please wait while we retrieve your account information...',\n },\n {\n iso: 'ro',\n value:\n 'Vă rugăm să așteptați până când preluăm informațiile contului dvs...',\n },\n ]\n ),\n consentErrorMessageTranslations: this.createTranslationsIfSupported(\n supportedLanguages,\n [\n {\n iso: 'en',\n value: 'You must provide consent to continue. Please try again.',\n },\n {\n iso: 'ro',\n value:\n 'Trebuie să oferiți consimțământul pentru a continua. Vă rugăm să încercați din nou.',\n },\n ]\n ),\n completionMessageTranslations: this.createTranslationsIfSupported(\n supportedLanguages,\n [\n { iso: 'en', value: 'Account information successfully retrieved.' },\n {\n iso: 'ro',\n value: 'Informațiile contului au fost preluate cu succes.',\n },\n ]\n ),\n retryButtonLabelTranslations: this.createTranslationsIfSupported(\n supportedLanguages,\n [\n { iso: 'en', value: 'Retry' },\n { iso: 'ro', value: 'Reîncearcă' },\n ]\n ),\n },\n translations:\n TranslationsHelper.createOpenBankingTranslations(supportedLanguages),\n panelOpenState: true,\n buttons: [],\n dependentDictionary: {\n isDictionaryDependent: false,\n dictionaryControlIdentifier: '',\n dependentValueIds: [],\n },\n errorsTranslations: [],\n hasNameAndDescription: true,\n canDepend: true,\n collapsed: false,\n };\n\n // Section 1: Consent Status\n const statusSection: SectionData = {\n title: 'Consent Status',\n type: SectionType.Presentation,\n controls: [\n {\n type: StepControlType.CheckBox,\n identifier: 'OpenBankingConsentStatus',\n title: 'Consent Validated',\n specificControlData: {},\n } as ControlData,\n ],\n identifier: this.generateUniqueId('Consent Status'),\n } as SectionData;\n\n // Section 2: Account Information\n const accountControls: ControlData[] = [\n {\n type: StepControlType.ManualInput,\n identifier: 'OpenBankingEmail',\n title: 'Email',\n specificControlData: {\n type: ManualInputControlType.Email,\n },\n },\n {\n type: StepControlType.ManualInput,\n identifier: 'OpenBankingAccountNumber',\n title: 'Account Number',\n specificControlData: {\n type: ManualInputControlType.Text,\n },\n },\n {\n type: StepControlType.ManualInput,\n identifier: 'OpenBankingAccountHolder',\n title: 'Account Holder Name',\n specificControlData: {\n type: ManualInputControlType.Text,\n },\n },\n {\n type: StepControlType.ManualInput,\n identifier: 'OpenBankingBankCode',\n title: 'Bank Code',\n specificControlData: {\n type: ManualInputControlType.Text,\n },\n },\n {\n type: StepControlType.ManualInput,\n identifier: 'OpenBankingConsentId',\n title: 'Consent ID',\n specificControlData: {\n type: ManualInputControlType.Text,\n },\n },\n ] as ControlData[];\n\n const accountSection: SectionData = {\n title: 'Account Information',\n type: SectionType.Presentation,\n controls: accountControls,\n identifier: this.generateUniqueId('Account Information'),\n } as SectionData;\n\n // Section 3: Accounts Retrieved\n const accountsDataControls: ControlData[] = [\n {\n type: StepControlType.ManualInput,\n identifier: 'OpenBankingAccountsCount',\n title: 'Number of Accounts',\n specificControlData: {\n type: ManualInputControlType.Numeric,\n },\n },\n {\n type: StepControlType.ManualInput,\n identifier: 'OpenBankingAccountsData',\n title: 'Accounts Data (JSON)',\n specificControlData: {\n type: ManualInputControlType.TextArea,\n },\n },\n {\n type: StepControlType.ManualInput,\n identifier: 'OpenBankingTotalBalance',\n title: 'Total Balance',\n specificControlData: {\n type: ManualInputControlType.Numeric,\n },\n },\n ] as ControlData[];\n\n const accountsDataSection: SectionData = {\n title: 'Retrieved Accounts',\n type: SectionType.Presentation,\n controls: accountsDataControls,\n identifier: this.generateUniqueId('Retrieved Accounts'),\n } as SectionData;\n\n // Section 4: Transactions Retrieved\n const transactionsControls: ControlData[] = [\n {\n type: StepControlType.ManualInput,\n identifier: 'OpenBankingTransactionsCount',\n title: 'Number of Transactions',\n specificControlData: {\n type: ManualInputControlType.Numeric,\n },\n },\n {\n type: StepControlType.ManualInput,\n identifier: 'OpenBankingTransactionsData',\n title: 'Transactions Data (JSON)',\n specificControlData: {\n type: ManualInputControlType.TextArea,\n },\n },\n {\n type: StepControlType.ManualInput,\n identifier: 'OpenBankingTransactionsPeriod',\n title: 'Period (months)',\n specificControlData: {\n type: ManualInputControlType.Numeric,\n },\n },\n ] as ControlData[];\n\n const transactionsSection: SectionData = {\n title: 'Retrieved Transactions',\n type: SectionType.Presentation,\n controls: transactionsControls,\n identifier: this.generateUniqueId('Retrieved Transactions'),\n } as SectionData;\n\n // Add all sections to the step\n step.sections = [\n statusSection,\n accountSection,\n accountsDataSection,\n transactionsSection,\n ];\n\n return step;\n }\n\n /**\n * Create Custom step with navigation section\n */\n createCustomStep(supportedLanguages: Language[]): StepData {\n const step: StepData = {\n identifier: this.generateUniqueId('step'),\n name: this.translate.transform(LabelKeys.flux.customStep),\n type: FluxType.Custom,\n sections: [],\n isVisible: true,\n config: {},\n translations:\n TranslationsHelper.createCustomStepTranslations(supportedLanguages),\n panelOpenState: true,\n buttons: [],\n dependentDictionary: {\n isDictionaryDependent: false,\n dictionaryControlIdentifier: '',\n dependentValueIds: [],\n },\n errorsTranslations: [],\n hasNameAndDescription: true,\n canDepend: true,\n collapsed: false,\n };\n\n // Add navigation section\n const navigationSection: SectionData = {\n canDepend: true,\n title: 'Secțiune de Navigare',\n type: SectionType.Presentation,\n controls: [\n {\n canEdit: true,\n canDepend: false,\n isOnlyForConfig: false,\n type: StepControlType.Buttons,\n } as ControlData,\n ],\n isNavigationSection: true,\n identifier: `Secțiune de Navigare_${this.generateUniqueId('sec')}`,\n } as SectionData;\n\n step.sections = [navigationSection];\n return step;\n }\n\n /**\n * Create Final step\n */\n createFinalStep(supportedLanguages: Language[]): StepData {\n const step: StepData = {\n identifier: this.generateUniqueId('step'),\n name: this.translate.transform(LabelKeys.flux.finalStep),\n type: FluxType.Final,\n sections: [],\n isVisible: true,\n config: {},\n translations: [],\n panelOpenState: true,\n buttons: [],\n dependentDictionary: {\n isDictionaryDependent: false,\n dictionaryControlIdentifier: '',\n dependentValueIds: [],\n },\n errorsTranslations: [],\n hasNameAndDescription: true,\n canDepend: true,\n collapsed: false,\n };\n\n // Final step is like custom but without navigation\n return step;\n }\n\n /**\n * Main factory method to create any step type\n */\n createFluxStep(\n type: FluxType,\n supportedLanguages: Language[]\n ): StepData | null {\n switch (type) {\n case FluxType.Kyc:\n return this.createKycStep(supportedLanguages);\n case FluxType.Email:\n return this.createCheckEmailStep(supportedLanguages);\n case FluxType.Phone:\n return this.createCheckPhoneStep(supportedLanguages);\n case FluxType.Sign:\n return this.createSignStep(supportedLanguages);\n case FluxType.Status:\n return this.createStatusStep(supportedLanguages);\n case FluxType.Custom:\n return this.createCustomStep(supportedLanguages);\n case FluxType.Pause:\n return this.createPauseStep(supportedLanguages);\n case FluxType.IdScan:\n return this.createScanStep(supportedLanguages);\n case FluxType.GenerateDocument:\n return this.createGenerateDocumentsStep(supportedLanguages);\n case FluxType.Action:\n return this.createActionStep(supportedLanguages);\n case FluxType.UploadDocument:\n return this.createUploadDocumentStep(supportedLanguages);\n case FluxType.DownloadDocument:\n return this.createDownloadDocumentStep(supportedLanguages);\n case FluxType.ViewDocument:\n return this.createViewDocumentStep(supportedLanguages);\n case FluxType.ViewOffer:\n return this.createViewOfferStep(supportedLanguages);\n case FluxType.Final:\n return this.createFinalStep(supportedLanguages);\n case FluxType.NETOPIA:\n return this.createNetopiaStep(supportedLanguages);\n case FluxType.EUPLATESC:\n return this.createEuplatescStep(supportedLanguages);\n case FluxType.OpenBanking:\n return this.createOpenBankingStep(supportedLanguages);\n default:\n console.error(`Unsupported FluxType: ${type}`);\n return null;\n }\n }\n\n /**\n * Get document name by ID from form model\n * Static method to match FluxHelper usage pattern in forms.model.ts\n * @param documentId - The document ID to search for\n * @param formModel - The form model containing documents array\n * @returns The document name or empty string if not found\n */\n static getDocumentNameById(documentId: string, formModel: FormModel): string {\n if (!formModel || !formModel.documents || !documentId) {\n return '';\n }\n\n const document = formModel.documents.find(\n (d: AppDocument) => d.id === documentId\n );\n return document?.name || '';\n }\n}\n","import { LabelInfo } from './label-info.model';\nimport { Partner } from './partner.model';\nimport { DictionaryLabelInfo } from '../others/dictionary-label-info';\nimport { ApplicationMappings } from './application-type.model';\nimport { CssRules } from '../others/utils';\nimport { FluxHelper } from '../others/flux-helper';\nimport { PresentationControl, SectionData, StepData } from './flux.model';\n\n\nexport class FormModel {\n applicationId: number;\n applicationUuid: string;\n generalData: GeneralDataModel;\n design: DesignModel;\n flux: StepData[];\n api: ApiData;\n partners: AppPartner[];\n documents: AppDocument[];\n statuses: StatusModel[];\n display: DisplayModel;\n generatedCss: CssRules;\n metadataFields: [];\n errors: { [tabName: string]: string[] };\n applicationMappings: ApplicationMappings;\n}\n\nexport class AppDataControl {\n controlId: string;\n fillValue: string;\n fillValueId: string;\n\n constructor(\n controlId: string = '',\n fillValue: string = '',\n fillValueId: string = ''\n ) {\n this.controlId = controlId || '';\n this.fillValue = fillValue || '';\n this.fillValueId = fillValueId || '';\n }\n}\n\nexport class AppDataSection {\n sectionId: string;\n controls: AppDataControl[];\n\n constructor(sectionId: string = '', controls: AppDataControl[] = []) {\n this.sectionId = sectionId || '';\n this.controls = controls || [];\n }\n}\n\nexport class AppDataStep {\n stepId: string;\n type: number;\n sections: AppDataSection[];\n\n constructor(\n stepId: string = '',\n type: number,\n sections: AppDataSection[] = []\n ) {\n this.stepId = stepId || '';\n this.type = type;\n this.sections = sections || [];\n }\n}\n\nexport class AppDataFill {\n metadata: {\n appDataId: string;\n configurationId: string;\n currentStepId: string;\n statusId: string;\n language: string;\n offerId: string;\n isSubmitted: boolean;\n };\n flux: AppDataStep[];\n\n constructor(\n appDataId: string = '',\n configurationId: string = '',\n currentStepId: string = '',\n statusId: string = '',\n language: string = '',\n flux: AppDataStep[] = [],\n offerId: string = '',\n isSubmitted: boolean = false\n ) {\n this.metadata = {\n appDataId: appDataId || '',\n configurationId: configurationId || '',\n currentStepId: currentStepId || '',\n statusId: statusId || '',\n language: language || '',\n offerId: offerId || '',\n isSubmitted: isSubmitted || false,\n };\n this.flux = flux || [];\n }\n}\n\nexport class AppData {\n id?: number;\n appDataId: string;\n appConfigurationId: number;\n fillData?: AppDataFill;\n withNextStep: boolean;\n blockPreviousStep: boolean;\n env: string;\n status: AppDataStatus;\n\n constructor(data: {\n id?: number;\n appDataId: string;\n appConfigurationId: number;\n fillData?: AppDataFill;\n withNextStep: boolean;\n blockPreviousStep: boolean;\n env: string;\n }) {\n (this.id = data.id ?? undefined), (this.appDataId = data.appDataId || '');\n this.appConfigurationId = data.appConfigurationId || 0;\n this.fillData = data.fillData;\n this.withNextStep = data.withNextStep;\n this.blockPreviousStep = data.blockPreviousStep;\n if (!data.env) {\n this.env = 'Config';\n } else {\n this.env = data.env;\n }\n }\n}\n\nexport class FormModelExtenxions {\n formModel: FormModel;\n\n constructor(model: FormModel) {\n this.formModel = model;\n }\n\n public fluxItems(\n untilStepIdentifier: string | undefined = undefined\n ): MethodField[] {\n let items: MethodField[] = [];\n\n if (this.formModel.metadataFields) {\n this.formModel.metadataFields.forEach((fieldValue) => {\n items.push({\n fieldName: fieldValue,\n fieldType: StepControlType.Metadata,\n id: `metadata.${fieldValue}`,\n });\n });\n }\n\n if (!this.formModel?.flux) {\n return items;\n }\n\n if (this.formModel.documents?.length > 0) {\n items = items.concat(this.extractDocumentsFluxItems(this.formModel.flux));\n }\n items = items.concat(\n this.extractSectionsFluxItems(this.formModel.flux, untilStepIdentifier)\n );\n\n return items;\n }\n private extractSectionsFluxItems(\n steps: StepData[],\n untilStepIdentifier: string | undefined = undefined\n ): MethodField[] {\n let items: MethodField[] = [];\n\n for (let step of steps) {\n if (step.sections) {\n if (untilStepIdentifier && step.identifier === untilStepIdentifier) {\n break;\n }\n step.sections.forEach((section) => {\n if (section.controls) {\n section.controls.forEach((control) => {\n if (\n [\n StepControlType.Buttons,\n StepControlType.NewRow,\n StepControlType.FluxInfo,\n StepControlType.Paragraph,\n ].includes(control.type) == false\n ) {\n items.push({\n fieldName: `${step.name} -> ${section.title} -> ${control.title}`,\n fieldType: control.type,\n manulInputControlType: control.specificControlData?.type,\n id: control.identifier,\n });\n }\n });\n }\n });\n }\n }\n\n return items;\n }\n\n private extractDocumentsFluxItems(stepData: StepData[]): MethodField[] {\n let items: MethodField[] = [];\n\n stepData?.forEach((step) => {\n if (step.type === FluxType.UploadDocument) {\n step.config?.documents?.forEach(\n (document: { documentId: string; name: string }) => {\n items.push({\n fieldName: `${step.name} -> ${\n FluxHelper.getDocumentNameById(\n document?.documentId,\n this.formModel\n ) || document.name\n }`,\n fieldType: step.type,\n id: document?.documentId\n ? `upload.${document.documentId}`\n : `${step.type}.${step.name}`,\n });\n }\n );\n } else if (step.type === FluxType.GenerateDocument) {\n step.config?.generatedDocuments?.forEach(\n (document: { id: string; name: string }) => {\n items.push({\n fieldName: `${step.name} -> ${\n FluxHelper.getDocumentNameById(document?.id, this.formModel) ||\n document.name\n }`,\n fieldType: step.type,\n id: document?.id\n ? `generate.${document.id}`\n : `${step.type}.${step.name}`,\n });\n }\n );\n } else if (step.type === FluxType.Sign) {\n if (step.config?.documents) {\n step.config?.documents.forEach(\n (document: { id: string; name: string }) => {\n items.push({\n fieldName: `${step.name} -> ${\n FluxHelper.getDocumentNameById(\n document?.id,\n this.formModel\n ) || document.name\n }`,\n fieldType: step.type,\n id: document?.id\n ? `sign.${document.id}`\n : `${step.type}.${step.name}`,\n });\n }\n );\n }\n\n if (step.config?.systemDocuments) {\n step.config?.systemDocuments.forEach(\n (document: { id: string; name: string }) => {\n items.push({\n fieldName: `${step.name} -> ${\n FluxHelper.getDocumentNameById(\n document?.id,\n this.formModel\n ) || document.name\n }`,\n fieldType: step.type,\n id: document?.id\n ? `system.${document.id}`\n : `${step.type}.${step.name}`,\n });\n }\n );\n }\n }\n });\n return items;\n }\n\n public fluxItemsWithGetApiMethods(\n excludedMethodId: string = ''\n ): MethodField[] {\n let items = this.fluxItems();\n this.formModel.api.getItems.forEach((apiMethod) => {\n if (apiMethod.id !== excludedMethodId) {\n apiMethod.fields?.forEach((f) => {\n items.push({\n fieldName: `${apiMethod.method} -> ${f.fieldName}`,\n fieldType: StepControlType.ApiMethodField,\n id: f.id,\n });\n });\n }\n });\n\n return items;\n }\n\n public offerMethodsItems(): MethodField[] {\n let items: MethodField[] = [];\n\n let offerMethodsIds: string[] = [];\n this.formModel.partners?.forEach((p) => {\n p.generalSettings.offers?.forEach((o) => {\n offerMethodsIds.push(o.apiMethodId);\n });\n });\n\n offerMethodsIds = [...new Set(offerMethodsIds)];\n\n const allApiItems = [\n ...this.formModel.api.getItems,\n ...this.formModel.api.validationItems,\n ...this.formModel.api.sendItems,\n ];\n\n offerMethodsIds.forEach((methodId) => {\n const apiMethod = allApiItems.find((item) => item.id === methodId);\n if (apiMethod) {\n apiMethod.fields?.forEach((f) => {\n items.push({\n fieldName: `${apiMethod.method} -> ${f.fieldName}`,\n fieldType: FluxType.ViewOffer,\n id: `api_${apiMethod.id} -> ${f.id}`,\n });\n });\n }\n });\n\n return items;\n }\n}\n\nexport class ApiData {\n getItems: GetApiItem[];\n validationItems: ApiItem[];\n sendItems: ApiItem[];\n}\n\nexport class ApiItem {\n id: string;\n method: string;\n fields: MethodField[];\n type: ApiMethodType;\n}\n\nexport class GetApiItem {\n id: string;\n method: string;\n fields: GetMethodField[];\n type: ApiMethodType;\n}\nexport class DesignModel {\n fonts: FontConfig[] = [];\n buttons: ButtonConfig[] = [];\n otpActionButtons: ButtonConfig[] = [];\n components: ComponentConfig[] = [];\n tables: TableConfig[] = [];\n backgroundColor: string;\n fontSize: string;\n buttonsHorizontalPosition: string;\n buttonsVerticalPosition: string;\n maxWidth: string;\n marginLeft: string;\n marginRight: string;\n marginTop: string;\n marginBottom: string;\n\n constructor(data?: any) {\n if (data) {\n if (data.fonts) {\n this.fonts = data.fonts.map((font: any) => new FontConfig(font));\n }\n\n if (data.buttons) {\n this.buttons = data.buttons.map(\n (button: any) => new ButtonConfig(button)\n );\n }\n\n if (data.components) {\n this.components = data.components.map(\n (component: any) => new ComponentConfig(component)\n );\n }\n\n if (data.tables) {\n this.tables = data.tables.map((table: any) => new TableConfig(table));\n }\n\n this.backgroundColor = data.backgroundColor;\n this.fontSize = data.fontSize;\n this.buttonsHorizontalPosition = data.horizontalPosition;\n this.buttonsVerticalPosition = data.verticalPosition;\n this.maxWidth = data.maxWidth;\n }\n }\n}\n\nexport class FontConfig {\n name: string;\n fontFamily: string;\n fontSize: string;\n color: string;\n fontWeight: string;\n textAlign: string;\n letterSpacing: string;\n\n constructor(data?: any) {\n if (data) {\n this.name = data.name;\n this.fontFamily = data.fontFamily;\n this.fontSize = data.fontSize;\n this.color = data.color;\n this.fontWeight = data.fontWeight;\n this.textAlign = data.textAlign;\n this.letterSpacing = data.letterSpacing;\n }\n }\n}\n\nexport class ButtonConfig {\n name: string;\n backgroundColor: string;\n color: string;\n border: string;\n borderColor: string;\n borderRadius: string;\n horizontalPadding: string;\n verticalPadding: string;\n fontFamily: string;\n fontSize: string;\n letterSpacing: string;\n width: string;\n height: string;\n minWidth: string;\n minHeight: string;\n maxWidth: string;\n maxHeight: string;\n horizontalPosition?: string;\n\n constructor(data?: any) {\n if (data) {\n this.name = data.name;\n this.backgroundColor = data.backgroundColor;\n this.color = data.color;\n this.border = data.border;\n this.borderColor = data.borderColor;\n this.borderRadius = data.borderRadius;\n this.horizontalPadding = data.horizontalPadding;\n this.verticalPadding = data.verticalPadding;\n this.fontFamily = data.fontFamily;\n this.fontSize = data.fontSize;\n this.letterSpacing = data.letterSpacing;\n this.width = data.width;\n this.height = data.height;\n this.minWidth = data.minWidth;\n this.minHeight = data.minHeight;\n this.maxWidth = data.maxWidth;\n this.maxHeight = data.maxHeight;\n this.horizontalPosition = data.horizontalPosition;\n }\n }\n}\n\nexport class TableConfig {\n headerConfig: HeaderConfig;\n detailConfig: DetailConfig;\n\n constructor(table?: any) {\n if (table) {\n this.headerConfig = table.headerConfig;\n this.detailConfig = table.detailConfig;\n }\n }\n}\n\nexport class HeaderConfig {\n name: string;\n backgroundColor: string;\n textColor: string;\n border: string;\n borderColor: string;\n textAlign: string;\n fontFamily: string;\n fontSize: string;\n letterSpacing: string;\n padding: string;\n borderCollapse: string;\n borderSpacing: string;\n verticalAlign: string;\n width: string;\n height: string;\n\n constructor(data?: any) {\n if (data) {\n this.name = data.name;\n this.backgroundColor = data.backgroundColor;\n this.textColor = data.color;\n this.border = data.border;\n this.textAlign = data.textAlign;\n this.fontFamily = data.fontFamily;\n this.fontSize = data.fontSize;\n this.letterSpacing = data.letterSpacing;\n this.padding = data.padding;\n this.borderCollapse = data.borderCollapse;\n this.borderSpacing = data.borderSpacing;\n this.verticalAlign = data.verticalAlign;\n this.width = data.width;\n this.height = data.height;\n }\n }\n}\n\nexport class DetailConfig {\n name: string;\n backgroundColor: string;\n textColor: string;\n textAlign: string;\n letterSpacing: string;\n padding: string;\n rowBorder: string;\n rowBorderColor: string;\n hoverBackgroundColor: string;\n verticalAlign: string;\n\n constructor(data?: any) {\n if (data) {\n this.name = data.name;\n this.backgroundColor = data.backgroundColor;\n this.textColor = data.color;\n this.textAlign = data.textAlign;\n this.letterSpacing = data.letterSpacing;\n this.padding = data.padding;\n this.rowBorder = data.rowBorder;\n this.hoverBackgroundColor = data.hoverBackgroundColor;\n this.verticalAlign = data.verticalAlign;\n }\n }\n}\n\nexport class ComponentConfig {\n name: string;\n backgroundColor: string;\n border: string;\n borderRadius: string;\n labelStyle: string;\n textAlign: string;\n color?: string | undefined;\n borderColor?: string | undefined;\n weight?: string | undefined;\n startColor?: string;\n endColor?: string;\n height?: string;\n\n constructor(data?: any) {\n if (data) {\n this.name = data.name;\n this.backgroundColor = data.backgroundColor;\n this.border = data.border;\n this.borderRadius = data.borderRadius;\n this.labelStyle = data.labelStyle;\n this.textAlign = data.textAlign;\n this.color = data.color;\n this.weight = data.weight;\n this.startColor = data.startColor;\n this.endColor = data.endColor;\n this.height = data.height;\n }\n }\n}\nexport class DisplayModel {\n sections: SectionData[];\n}\n\nexport class GeneralDataModel {\n name: string;\n applicationType: number;\n languages: string[];\n defaultLanguage: string;\n continueWithOffer: boolean;\n showCounterStep: boolean;\n showNameStep: boolean;\n showAllSteps: boolean;\n showProgressBar: boolean;\n}\n\nexport interface FormsState {\n data: FormModel;\n selectedTab: string;\n version: string;\n canGetFromProd: boolean;\n canGetFromTest: boolean;\n canPublishInProd: boolean;\n canPublishInTest: boolean;\n applicationUuid: string;\n}\n\nexport const initialFormulareState: FormsState = {\n data: {\n applicationId: 0,\n applicationUuid: '',\n generalData: {\n name: '',\n applicationType: 0,\n languages: [],\n defaultLanguage: '',\n continueWithOffer: false,\n showCounterStep: false,\n showNameStep: false,\n showAllSteps: false,\n showProgressBar: false,\n },\n design: {\n fonts: [],\n buttons: [],\n otpActionButtons: [],\n components: [],\n tables: [],\n backgroundColor: '',\n fontSize: '',\n buttonsHorizontalPosition: '',\n buttonsVerticalPosition: '',\n maxWidth: '',\n marginLeft: '',\n marginRight: '',\n marginTop: '',\n marginBottom: '',\n },\n flux: [],\n api: { getItems: [], validationItems: [], sendItems: [] },\n partners: [],\n documents: [],\n statuses: [],\n display: {\n sections: [],\n },\n generatedCss: {},\n metadataFields: [],\n errors: {},\n applicationMappings: {\n applicationTypeId: 0,\n columnMappings: [],\n },\n },\n selectedTab: 'Date generale',\n canGetFromProd: false,\n canGetFromTest: false,\n canPublishInProd: false,\n canPublishInTest: false,\n applicationUuid: '',\n version: '',\n};\n\nexport class PartnerDictionaryMapping {\n dictionaryId: string;\n dictionaryName: string;\n mappings: PartnerKeyValueItem[];\n}\n\nexport class PartnerSettings {\n partnerMethodsApi: PartnerMethodApi[] = [];\n}\n\nexport class PartnerMethodApi {\n methodId: string;\n methodType: string;\n callType: string;\n bodyConfiguration: PartnerMethodBody;\n responseConfiguration: PartnerMethodResponse;\n urlConfiguration: PartnerMethodUrl;\n authValue: PartnerMethodApiAuth;\n headers: PartnerKeyValueItem[];\n // INBOUND-specific properties\n inboundMethodType?: InboundMethodType; // Type of INBOUND method\n}\n\nexport enum InboundMethodType {\n Standard = 'Standard',\n StatusMethod = 'StatusMethod',\n}\n\nexport class PartnerMethodApiAuth {\n headerName: string | null;\n apiKey: string | null;\n authType: string;\n}\n\nexport class PartnerKeyValueItem {\n key: string;\n keyName: string | null;\n value: string;\n}\nexport class PartnerStatusMapping {\n partnerStatus: string;\n appStatus: string;\n}\n\nexport class PartnerMethodUrl {\n urlValue: string;\n timeout: number;\n testUrl: string;\n prodUrl: string;\n parameterMappings: UrlMapFields[];\n}\n\nexport class PartnerMethodResponse {\n contentType: string;\n jsonValue: string;\n responseMapFields: FieldsMapping[];\n}\n\nexport class UrlMapFields {\n urlParameter: string;\n fluxField: string;\n fluxFieldId: string;\n fieldType: string;\n}\n\nexport class PartnerMethodBody {\n contentType: string;\n jsonValue: string;\n bodyMapFields: FieldsMapping[];\n}\n\nexport class FieldsMapping {\n partnerField: string;\n fluxFieldId: string;\n methodFieldId: string;\n fieldType: string;\n}\n\nexport class MethodField {\n id: string;\n fieldName: string;\n fieldType: StepControlType | FluxType | string;\n manulInputControlType?: ManualInputControlType | undefined = undefined;\n}\n\nexport class GetMethodField {\n id: string;\n fieldName: string;\n fieldType: StepControlType | FluxType | string;\n documentId: string;\n}\n\nexport class ManualInputControlData {\n type: ManualInputControlType;\n isSimpleValidation: boolean;\n isApiValidation: boolean;\n apiValidationMethod?: string | null;\n apiValidationPartner?: string | null;\n allowedCharacters?: string;\n maxCharacters?: number;\n minValue?: number;\n maxValue?: number;\n allowOnlyPast?: boolean;\n allowOnlyFuture?: boolean;\n isMandatory: boolean;\n}\n\nexport class ParagraphControlData {\n descriptionTranslations: LabelInfo[];\n isMandatory: boolean;\n isMandatoryTranslations?: LabelInfo[];\n}\n\nexport class DictionaryControlData {\n dictionaryUUID: string;\n showAsRadioButtonsList: boolean;\n relatedDictionariesTranslations: DictionaryLabelInfo[];\n dictionaryDefaultValueId?: number | null;\n selectedRelatedDictionaries: string[];\n}\n\nexport enum FluxType {\n Kyc = 0,\n Email = 1,\n Phone = 2,\n Sign = 3,\n Status = 4,\n Custom = 5,\n Pause = 6,\n IdScan = 7,\n GenerateDocument = 8,\n Action = 9,\n UploadDocument = 10,\n DownloadDocument = 11,\n ViewOffer = 12,\n Final = 13,\n ViewDocument = 14,\n NETOPIA = 15,\n EUPLATESC = 16,\n OpenBanking = 17,\n}\n\nexport enum SectionType {\n Presentation,\n Collect,\n Display,\n}\n\nexport enum StepControlType {\n ManualInput = 0,\n Paragraph = 1,\n CheckBox = 2,\n Dictionary = 3,\n Buttons = 4,\n FluxInfo = 5,\n NewRow = 6,\n Metadata = 7,\n ApiMethodField = 8,\n DownloadDocuments = 9,\n ViewDocuments = 10,\n UploadDocuments = 11,\n}\n\nexport enum DimensionType {\n Percentage,\n Pixels,\n}\n\nexport enum ManualInputControlType {\n Text,\n Numeric,\n DateTime,\n Email,\n Phone,\n TextArea,\n}\n\nexport enum SignatureType {\n Electronic,\n Handwritten,\n Qualified,\n}\n\nexport enum ApiMethodType {\n GetData,\n SendData,\n Validation,\n}\n\nexport class StatusModel {\n id: string;\n name: string;\n order: number;\n final: boolean;\n isActive: boolean;\n actions: StatusAction[] = [];\n\n constructor(\n id: string,\n denumire: string,\n ordine: number,\n final: boolean,\n isActive: boolean,\n actions: StatusAction[]\n ) {\n this.id = id;\n this.name = denumire;\n this.order = ordine;\n this.final = final;\n this.isActive = isActive;\n this.actions = actions;\n }\n}\n\nexport class StatusAction {\n id?: string;\n actionTitle: string;\n apiMethodId: string;\n partnerIds: number[] = [];\n}\n\nexport class PresentationParagraphControl extends PresentationControl {\n descriptionTranslations: LabelInfo[];\n}\n\n\nexport class AppPartner extends Partner {\n documents?: AppPartnerDocuments[] = [];\n generalSettings: AppPartnerGeneralSettings;\n partnerSettings: PartnerSettings;\n partnerDictionaryMapping: PartnerDictionaryMapping[];\n partnerStatusMapping: PartnerStatusMapping[];\n}\n\nexport class AppPartnerGeneralSettings {\n acceptMultipleOffers: boolean;\n offers: AppPartnerGeneralSettingsOffer[] = [];\n receivedOffers: AppPartnerGeneralSettingsReceivedOffer[] = [];\n valability: number;\n hasCustomValability: boolean;\n statusWorkerSettings: AppStatusWorkerSettings;\n}\nexport class AppStatusWorkerSettings {\n maxRetries: number;\n loopInterval: number;\n}\nexport class AppPartnerGeneralSettingsOffer {\n id: string;\n name: string;\n apiMethodId: string;\n identifier: string;\n value: string;\n customValability?: number;\n apiMethodFields?: any[] = [];\n}\n\nexport class AppPartnerGeneralSettingsReceivedOffer {\n id: string;\n offers: AppPartnerGeneralSettingsOffer[];\n}\n\nexport class AppPartnerDocuments {\n id: string;\n documentId: string;\n documentName: string;\n apiMethodId: string;\n isEditMode: boolean;\n}\n\nexport class AppDocument {\n id: string;\n name: string;\n translations: LabelInfo[];\n generatedByApp: boolean;\n isStatic: boolean;\n isActive: boolean;\n versions: AppDocumentVersion[] = [];\n}\nexport class SignedDocument extends AppDocument {\n sourceDocuments: string[];\n}\n\nexport interface AppDocumentExtended extends AppDocument {\n isApiDocument?: boolean; \n}\n\nexport class AppDocumentVersion {\n id: number;\n applicationId: number;\n name: string;\n documentId: string;\n version: number;\n validFrom: Date;\n validTo: Date | undefined;\n isEditMode: boolean;\n data: string | null;\n fluxBookmarks: BookmarkMapping[];\n isTemporary: boolean;\n}\n\nexport class BookmarkMapping {\n bookmark: string;\n controlId: string;\n}\n\nexport class ErrorTranslations {\n code: string;\n translations: LabelInfo[];\n}\n\nexport class UploadDocument {\n documentId: string;\n fileName: string;\n fileData: string | undefined;\n}\n\nexport class UploadDocumentDetails extends UploadDocument {\n documentName: string;\n documentExtensions: string;\n documentMaxSize: number;\n isMandatory: boolean;\n isUploading: boolean;\n isUploadSuccess: boolean;\n}\n\nexport class StepsSettings {\n showCounter: boolean;\n showLabels: boolean;\n showAllSteps: boolean;\n showProgressBar: boolean;\n}\n\nexport enum AppDataStatus {\n new = 0,\n finished = 1,\n}\n","import { v4 as uuidv4 } from 'uuid';\nimport {\n ErrorTranslations,\n FormModel,\n FormModelExtenxions,\n} from '../models/forms.model';\nimport { LabelInfo, TranslationInfo } from '../models/label-info.model';\nimport { Md5 } from 'ts-md5';\nimport { TranslationDto } from '../models/dictionary.model';\nimport { Language } from '../models/language.model';\n\nexport type CssRules = {\n [key: string]: {\n [property: string]: string;\n };\n};\n\n\nexport class Utils {\n static bigInt: number = Number(BigInt('900719925'));\n\n static json2csv(items: any[]): string {\n const replacer = (_key: any, value: null) => (value === null ? '' : value);\n let header = Object.keys(items[0]);\n header = header.filter((h) => h !== 'locked' && h != 'active');\n const csv = [\n header.join(','),\n ...items.map((row: { [x: string]: any }) =>\n header\n .map((fieldName) => JSON.stringify(row[fieldName], replacer))\n .join(',')\n ),\n ].join('\\r\\n');\n return csv;\n }\n\n static csv2json(csv: string) {\n const lines = csv.split(/\\r?\\n/).filter((line) => line.trim() !== '');\n if (lines.length === 0) return [];\n\n const headers = Utils.parseCsvLine(lines[0]);\n const result = [];\n\n for (let i = 1; i < lines.length; i++) {\n const obj: any = {};\n const currentline = Utils.parseCsvLine(lines[i]);\n for (let j = 0; j < headers.length; j++) {\n const lineText = currentline[j];\n if (lineText !== undefined) {\n obj[headers[j]] = Utils.trim(lineText, '\"');\n }\n }\n result.push(obj);\n }\n\n return result;\n }\n\n static parseCsvLine(line: string): string[] {\n const result: string[] = [];\n let current = '';\n let inQuotes = false;\n\n for (let i = 0; i < line.length; i++) {\n const char = line[i];\n if (char === '\"' && (i === 0 || line[i - 1] !== '\\\\')) {\n inQuotes = !inQuotes;\n continue;\n }\n if (char === ',' && !inQuotes) {\n result.push(current);\n current = '';\n } else {\n current += char;\n }\n }\n result.push(current);\n return result;\n }\n\n static trim(str: string, ch: string) {\n var start = 0,\n end = str.length;\n while (start < end && str[start] === ch) ++start;\n while (end > start && str[end - 1] === ch) --end;\n return start > 0 || end < str.length ? str.substring(start, end) : str;\n }\n\n static download(blob: Blob, name: string): void {\n const anchor = document.createElement('a');\n anchor.download = name;\n anchor.href = (window.webkitURL || window.URL).createObjectURL(blob);\n anchor.click();\n }\n\n static generateUUID(): string {\n return uuidv4();\n }\n\n static copyProperties(sourceObj: any, destObj: any) {\n Object.keys(sourceObj).forEach((key) => (destObj[key] = sourceObj[key]));\n }\n\n static correctDate(date: Date) {\n return new Date(date.getTime() - date.getTimezoneOffset() * 60000);\n }\n\n static formatString(str: string, val: string[]) {\n for (let index = 0; index < val.length; index++) {\n str = str.replace(`{${index}}`, val[index]);\n }\n return str;\n }\n\n static removeNewLinesAndSpaces(str: string) {\n return str.replace(/(\\r\\n|\\n|\\r)/gm, '').replace(/\\s/g, '');\n }\n\n static removeNewLines(str: string) {\n return str.replace(/(\\r\\n|\\n|\\r)/gm, '');\n }\n\n static findTranslation(\n translations: LabelInfo[],\n langIso: string\n ): string | undefined {\n if (translations) {\n var tr = translations.find((t) => t.languageIso == langIso);\n if (tr && tr.value) {\n return tr.value;\n }\n }\n return '';\n }\n\n static findTranslationInfo(\n translationName: string,\n translations: TranslationInfo[],\n langIso: string\n ): string | undefined { \n if (translations) {\n var tr = translations.find((t) => t.name == translationName);\n if (tr) {\n return this.findTranslation(tr.values, langIso);\n }\n };\n return '';\n }\n\n static findLanguageIsoById(\n languages: Language[],\n languageId: number\n ): string {\n const match = languages.find((a) => a.id == languageId);\n if (match) {\n return match.iso;\n }\n return null as any;\n }\n\n static findLanguageIdByIso(languages: Language[], iso: string): number {\n const match = languages.find((a) => a.iso == iso);\n if (match) {\n return match.id;\n }\n return 0;\n }\n\n static findValueTranslation(\n translations: TranslationDto[],\n languageId: number\n ): string | undefined {\n if (translations) {\n var tr = translations.find((t) => t.languageId == languageId);\n if (tr) {\n return tr.value;\n }\n }\n return undefined;\n }\n\n static findErrorTranslationValueOrDefault(\n errorsTranslations: ErrorTranslations[],\n langIso: string,\n errorCode: string\n ): string {\n if (errorsTranslations) {\n const found = errorsTranslations.find((e) => e.code === errorCode);\n if (found) {\n return found.translations.find((t) => t.languageIso === langIso)?.value ?? 'N/A';\n }\n }\n return 'N/A';\n }\n\n static findErrorTranslationLabel(\n errorsTranslations: ErrorTranslations[],\n langIso: string,\n errorCode: string\n ): LabelInfo | undefined {\n if (errorsTranslations) {\n const found = errorsTranslations.find((e) => e.code === errorCode);\n if (found) {\n return found.translations.find((t) => t.languageIso === langIso);\n }\n }\n return undefined;\n }\n\n static createErrorTranslationMssageWithParameters(\n errorsTranslations: ErrorTranslations[],\n langIso: string,\n errorCode: string,\n params: string[]\n ) {\n const translation = Utils.findErrorTranslationLabel(\n errorsTranslations,\n langIso,\n errorCode\n );\n let errorMessage = 'An error has occured';\n if (translation && translation.value) {\n errorMessage = translation.value;\n if (params) {\n for (let i = 0; i < params.length; i++) {\n errorMessage = errorMessage.replace('{' + i + '}', params[i]);\n }\n }\n } else errorMessage = '';\n\n return errorMessage;\n }\n\n static objectsAreEqual(obj1: any, obj2: any) {\n if (obj1 && obj2) {\n const string = JSON.stringify(\n this.removeUndefinedAndSortProperties(obj1)\n );\n const string2 = JSON.stringify(\n this.removeUndefinedAndSortProperties(obj2)\n );\n let hash = Md5.hashStr(string);\n let hash2 = Md5.hashStr(string2);\n return hash === hash2;\n }\n if (obj1 && !obj2) {\n return false;\n }\n if (!obj1 && obj2) {\n return false;\n }\n return true;\n }\n\n static removeUndefinedAndSortProperties(obj: any) {\n if (typeof obj != 'object' || obj === null || obj === undefined) {\n return obj;\n }\n if (obj instanceof Array) {\n for (var i = 0; i < obj.length; i++) {\n obj[i] = Utils.removeUndefinedAndSortProperties(obj[i]);\n }\n return obj;\n }\n\n var keys = Object.keys(obj);\n keys.sort();\n let newObject: any = {};\n for (var i = 0; i < keys.length; i++) {\n var val = obj[keys[i]];\n if (val) {\n newObject[keys[i]] = Utils.removeUndefinedAndSortProperties(val);\n }\n }\n return newObject;\n }\n\n static getFileExtension(fileName: string): string | undefined {\n if (fileName) {\n const splitted = fileName.split('.');\n if (splitted.length > 1) {\n return splitted.pop();\n }\n }\n return undefined;\n }\n\n static getFieldsFromState(\n state: FormModel,\n selectedMethodId: string,\n returnOwnFields?: boolean\n ) {\n if (returnOwnFields) {\n let apiMethod = [\n ...(state.api?.getItems ?? []),\n ...(state.api?.sendItems ?? []),\n ].find((m) => m.id === selectedMethodId);\n return apiMethod?.fields ?? [];\n } else {\n if (!state) {\n return [];\n }\n let ext = new FormModelExtenxions(state);\n let fluxFields = ext.fluxItemsWithGetApiMethods(selectedMethodId);\n\n return fluxFields;\n }\n }\n\n static base64toBlob(b64Data: string, contentType = '', sliceSize = 512) {\n const byteCharacters = atob(b64Data);\n const byteArrays = [];\n\n for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {\n const slice = byteCharacters.slice(offset, offset + sliceSize);\n\n const byteNumbers = new Array(slice.length);\n for (let i = 0; i < slice.length; i++) {\n byteNumbers[i] = slice.charCodeAt(i);\n }\n\n const byteArray = new Uint8Array(byteNumbers);\n byteArrays.push(byteArray);\n }\n\n const blob = new Blob(byteArrays, { type: contentType });\n return blob;\n }\n\n static copyToClipboard(text: string): Promise<void> {\n if (navigator.clipboard && navigator.clipboard.writeText) {\n return navigator.clipboard.writeText(text);\n } else {\n // Fallback for unsupported browsers\n return new Promise((resolve, reject) => {\n const textarea = document.createElement('textarea');\n textarea.value = text;\n textarea.style.position = 'fixed';\n document.body.appendChild(textarea);\n textarea.focus();\n textarea.select();\n try {\n document.execCommand('copy');\n document.body.removeChild(textarea);\n resolve();\n } catch (err) {\n document.body.removeChild(textarea);\n reject(err);\n }\n });\n }\n }\n}\n","import { ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { FieldType } from '@ngx-formly/core';\nimport { StepsSettings } from '../models/forms.model';\nimport { Utils } from '../others/utils';\nimport { ControlData, StepData } from '../models/flux.model';\n\n@Component({\n selector: 'base-formly-component',\n template: '',\n})\nexport abstract class BaseFormlyStepComponent extends FieldType implements OnInit {\n langIso: string;\n stepData: StepData;\n controlData: ControlData;\n isLoading: boolean;\n isDisplayMode: boolean;\n env: string;\n appDataId: string;\n dataUrlId: string;\n appId: string;\n stepsSettings: StepsSettings;\n title: string | undefined;\n\n onInit() { }\n onPageSelected() { }\n async onPageSelectedAsync() { }\n canAdvance(): boolean {\n return true;\n }\n\n constructor(public cdr: ChangeDetectorRef) {\n super();\n }\n\n async ngOnInit() {\n this.props['cdr'] = this.cdr;\n this.props['component'] = this;\n this.env = this.props['env'];\n this.langIso = this.props['langIso'] as string;\n this.stepData = this.props['stepData'];\n this.controlData = this.props['controlData'];\n this.isDisplayMode = this.props['isDisplayMode'];\n this.appDataId = this.props['appDataId'];\n this.appId = this.props['appId'];\n this.stepsSettings = this.props['stepsSettings'];\n this.title = this.props['label'];\n this.dataUrlId = this.props['dataUrlId'];\n this.onInit();\n\n }\n\n onEvent(data: any) {\n if (this.props['event']) {\n this.props['event'](data);\n }\n }\n\n getErrorTranslationMessage(errorCode: string, ...params: string[]) {\n const translation = Utils.findErrorTranslationLabel(\n this.stepData.errorsTranslations,\n this.langIso,\n errorCode\n );\n let errorMessage = 'An error has occured';\n if (translation && translation.value) {\n errorMessage = translation.value;\n if (params) {\n for (let i = 0; i < params.length; i++) {\n errorMessage = errorMessage.replace('{' + i + '}', params[i]);\n }\n }\n }\n return errorMessage;\n }\n}\n","import {\n Component,\n OnInit,\n AfterViewInit,\n EventEmitter,\n Output,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport { BaseFormlyStepComponent } from './baseFormlyStepComponent';\n\n@Component({\n selector: 'formly-field-action',\n template: `\n <div class=\"loader-container\">\n <mat-spinner *ngIf=\"loading\" class=\"l-x-auto\"></mat-spinner>\n </div>\n <ng-container *ngIf=\"!loading\">\n <ng-template #fieldComponent></ng-template>\n </ng-container>\n `,\n styles: [\n `\n .loader-container {\n display: flex;\n justify-content: center;\n align-items: center;\n padding-top: 5vh;\n padding-bottom: 5vh;\n }\n `,\n ],\n})\nexport class FormlyActionComponent\n extends BaseFormlyStepComponent\n implements OnInit, AfterViewInit, OnChanges\n{\n @Output() actionCompleted: EventEmitter<void> = new EventEmitter<void>();\n loading: boolean = true;\n\n ngOnChanges(changes: SimpleChanges): void {\n this.loading = false;\n setTimeout(() => {\n this.cdr.detectChanges();\n }, 0);\n }\n\n ngAfterViewInit() {}\n\n override onPageSelected() {\n this.onActionCompleted();\n }\n\n onActionCompleted() {\n if (this.props['action']) {\n this.props['action']().subscribe(() => {\n this.loading = false;\n this.actionCompleted.emit();\n setTimeout(() => {\n this.cdr.detectChanges();\n }, 100);\n });\n }\n }\n}\n","import { Directive, ElementRef, AfterViewInit, OnDestroy } from '@angular/core';\n\n@Directive({\n selector: '[appExternalLink]',\n})\nexport class ExternalLinkDirective implements AfterViewInit, OnDestroy {\n private observer: MutationObserver | null = null;\n\n constructor(private elementRef: ElementRef) {}\n\n ngAfterViewInit(): void {\n // Set external links immediately\n this.setExternalLinks();\n\n // Watch for changes in the DOM to handle dynamically rendered content\n this.observer = new MutationObserver(() => {\n this.setExternalLinks();\n });\n\n this.observer.observe(this.elementRef.nativeElement, {\n childList: true,\n subtree: true,\n });\n }\n\n ngOnDestroy(): void {\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n\n private setExternalLinks(): void {\n const element = this.elementRef.nativeElement;\n const links = element.querySelectorAll('a[href]');\n\n links.forEach((link: HTMLAnchorElement) => {\n const href = link.getAttribute('href');\n\n if (href && !link.hasAttribute('data-external-processed')) {\n // Mark as processed to avoid duplicate processing\n link.setAttribute('data-external-processed', 'true');\n\n if (!link.hasAttribute('target')) {\n link.setAttribute('target', '_blank');\n link.setAttribute('rel', 'noopener noreferrer');\n }\n }\n });\n }\n}\n","import { Component, OnInit, ChangeDetectorRef } from '@angular/core';\nimport { FieldType } from '@ngx-formly/core';\nimport { FormControl, AbstractControl } from '@angular/forms';\n\n@Component({\n selector: 'formly-checkbox',\n templateUrl: './formly-checkbox.component.html',\n styleUrls: ['./formly-checkbox.component.scss'],\n})\nexport class FormlyCheckboxComponent extends FieldType implements OnInit {\n checkbox: FormControl;\n requiredMessage: any;\n\n constructor(private cd: ChangeDetectorRef) {\n super();\n }\n\n ngOnInit(): void {\n this.checkbox = this.form.get(this.field.key as string) as FormControl;\n\n if (this.props['checked'] !== undefined) {\n this.checkbox?.setValue(this.props['checked'], { emitEvent: false });\n this.checkbox?.updateValueAndValidity();\n }\n\n if (this.props['required']) {\n this.addCheckboxValidator();\n }\n }\n\n private addCheckboxValidator(): void {\n this.requiredMessage =\n this.field.validation?.messages?.['required'] || 'This field is required';\n\n this.field.validators = {\n ...this.field.validators,\n checkboxRequired: {\n expression: (control: AbstractControl) => {\n return control.value === true;\n },\n message: this.requiredMessage,\n },\n };\n this.options?.build?.(this.field);\n this.checkbox?.updateValueAndValidity();\n }\n\n updateValue(value: any): void {\n if (this.checkbox) {\n this.checkbox.setValue(value, { emitEvent: false });\n this.cd.detectChanges();\n }\n }\n}\n","<div class=\"mat-mdc-text-field-wrapper mdc-checkbox-field\" appExternalLink>\n <mat-checkbox [formControl]=\"checkbox\">\n <markdown [data]=\"props['label']\"></markdown>\n </mat-checkbox>\n\n <div *ngIf=\"showError\" class=\"text-error m-l-20\">\n {{ requiredMessage }}\n </div>\n</div>\n","export enum EnvironmentType {\n Config = \"Config\",\n Test = \"Test\",\n Prod = \"Prod\",\n}\n\nexport class EnvironmentTypeHelper {\n static getEnvironmentType(value: number): EnvironmentType {\n switch (value) {\n case 1:\n return EnvironmentType.Config;\n case 2:\n return EnvironmentType.Test;\n case 3:\n return EnvironmentType.Prod;\n default:\n throw new Error(\"Invalid env\");\n }\n }\n}","import { HttpBackend } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { InputConfig } from '../origin-form-config.model';\n\nexport interface AppConfig {\n baseUrlGateway: string;\n baseUrlAuthenticator: string;\n baseUrlInfrastructure: string;\n baseUrlPublicInfrastructure: string;\n baseUrlDocuments: string;\n baseUrlBusiness: string;\n baseUrlSmartAccounts: string;\n clientId: string;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ConfigService {\n private configuration: AppConfig = {\n baseUrlGateway: '',\n baseUrlAuthenticator: '',\n baseUrlInfrastructure: '',\n baseUrlPublicInfrastructure: '',\n baseUrlDocuments: '',\n baseUrlBusiness: '',\n baseUrlSmartAccounts: '',\n clientId: '',\n };\n\n constructor(private readonly httpHandler: HttpBackend) { }\n\n public updateConfigFromInput(input: InputConfig): void {\n this.configuration = {\n baseUrlGateway: input.BaseUrlGateway,\n baseUrlAuthenticator: input.BaseUrlAuthenticator,\n baseUrlInfrastructure: input.BaseUrlInfrastructure,\n baseUrlPublicInfrastructure: input.BaseUrlPublicInfrastructure,\n baseUrlDocuments: input.BaseUrlDocuments,\n baseUrlBusiness: input.BaseUrlBusiness,\n baseUrlSmartAccounts: input.BaseUrlSmartAccounts,\n clientId: input.ClientId,\n };\n }\n\n readConfig(): AppConfig {\n return this.configuration;\n }\n}\n\n","import {\n HttpClient,\n HttpErrorResponse,\n HttpHeaders,\n} from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Observable, catchError, throwError } from 'rxjs';\n\nimport { Router } from '@angular/router';\nimport { ConfigService } from './others/config-service';\nimport {\n AuthResponseDto,\n UserForAuthenticationDtoRefresh,\n} from './models/auth/users.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthenticationClient {\n private headers: HttpHeaders;\n\n configService = inject(ConfigService);\n\n constructor(private http: HttpClient, private router: Router) {\n this.headers = new HttpHeaders({\n 'Content-Type': 'application/x-www-form-urlencoded',\n });\n }\n\n // public login(\n // username: string,\n // password: string\n // ): Observable<AuthResponseDto> {\n // const formData: UserForAuthenticationDto = {\n // client_id: this.configService.readConfig().clientId,\n // client_secret: this.configService.readConfig().clientSecret,\n // grant_type: 'password',\n // username: username,\n // password: password,\n // scope: this.configService.readConfig().clientScope,\n // };\n\n // return this.http.post<AuthResponseDto>(\n // this.configService.readConfig().baseUrlGateway + '/connect/token',\n // this.urlEncodeFormData(formData),\n // { headers: this.headers }\n // );\n // }\n\n public refreshToken(refreshToken: string): Observable<AuthResponseDto> {\n var clientId = this.configService.readConfig().clientId;\n const formData: UserForAuthenticationDtoRefresh = {\n client_id: clientId,\n grant_type: 'refresh_token',\n refresh_token: refreshToken,\n };\n\n return this.http\n .post<AuthResponseDto>(\n this.configService.readConfig().baseUrlGateway + '/connect/token',\n this.urlEncodeFormData(formData),\n { headers: this.headers }\n )\n .pipe(\n catchError((error: HttpErrorResponse) => {\n if (error.status === 401 || error.status === 400) {\n this.router.navigate(['/login']);\n }\n return throwError(error);\n })\n );\n }\n\n private urlEncodeFormData(formData: any): string {\n const urlEncodedParams = new URLSearchParams();\n for (const key in formData) {\n if (Object.prototype.hasOwnProperty.call(formData, key)) {\n urlEncodedParams.append(key, formData[key]);\n }\n }\n return urlEncodedParams.toString();\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n BehaviorSubject,\n firstValueFrom,\n Observable,\n of,\n throwError,\n} from 'rxjs';\nimport { switchMap, catchError, tap } from 'rxjs/operators';\nimport { AuthenticationClient } from './auth-client.service';\nimport { AuthResponseDto } from './models/auth/users.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class OriginFormAuthService {\n private tokenSubject = new BehaviorSubject<string>('');\n private refreshTokenSubject = new BehaviorSubject<string>('');\n\n constructor(private authClient: AuthenticationClient) {}\n\n async setTokens(token: string, refreshToken: string) {\n this.tokenSubject.next(token);\n this.refreshTokenSubject.next(refreshToken);\n\n return await firstValueFrom(this.refreshToken());\n }\n\n getToken(): string {\n return this.tokenSubject.getValue();\n }\n\n refreshToken(): Observable<string> {\n const token = this.tokenSubject.getValue();\n const refreshToken = this.refreshTokenSubject.getValue();\n return this.authClient.refreshToken(refreshToken).pipe(\n tap((response: AuthResponseDto) => {\n this.tokenSubject.next(response.access_token);\n this.refreshTokenSubject.next(response.refresh_token);\n }),\n switchMap((response: AuthResponseDto) => of(response.access_token)),\n catchError((err) => throwError(() => err))\n );\n }\n\n tokenObservable(): Observable<string> {\n return this.tokenSubject.asObservable();\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n HttpClient,\n HttpErrorResponse,\n HttpEvent,\n HttpHeaders,\n HttpResponse,\n} from '@angular/common/http';\nimport { catchError, Observable, switchMap, throwError } from 'rxjs';\nimport { OriginFormAuthService } from '../origin-form-auth.service';\n\n@Injectable({\n providedIn: 'root', // Ensures it is available in the application using the library\n})\nexport class AuthHttpService {\n private isRefreshing = false;\n\n constructor(\n private http: HttpClient,\n private authService: OriginFormAuthService\n ) {}\n\n private getHeaders(): HttpHeaders {\n const token = this.authService.getToken();\n return new HttpHeaders({\n Authorization: `Bearer ${token}`,\n 'Content-Type': 'application/json',\n });\n }\n\n get<T>(url: string): Observable<T> {\n return this.http\n .get<T>(url, { headers: this.getHeaders() })\n .pipe(\n catchError((error) => this.handleError(error, () => this.get<T>(url)))\n );\n }\n\n getExtended<T>(url: string, options: any = {}): Observable<T | HttpEvent<T>> {\n return this.http\n .get<T>(url, { ...options, headers: this.getHeaders() })\n .pipe(\n catchError((error) =>\n this.handleError(error, () => this.getExtended<T>(url, options))\n )\n );\n }\n\n post<T>(url: string, body: any): Observable<T> {\n return this.http\n .post<T>(url, body, { headers: this.getHeaders() })\n .pipe(\n catchError((error) =>\n this.handleError(error, () => this.post<T>(url, body))\n )\n );\n }\n\n postExtended<T>(\n url: string,\n body: any,\n options: any | null = null\n ): Observable<T | HttpEvent<T>> {\n return this.http\n .post<T>(url, body, { ...options, headers: this.getHeaders() })\n .pipe(\n catchError((error) =>\n this.handleError(error, () =>\n this.postExtended<T>(url, body, options)\n )\n )\n );\n }\n\n put<T>(url: string, body: any): Observable<T> {\n return this.http\n .put<T>(url, body, { headers: this.getHeaders() })\n .pipe(\n catchError((error) =>\n this.handleError(error, () => this.put<T>(url, body))\n )\n );\n }\n\n delete<T>(url: string): Observable<T> {\n return this.http\n .delete<T>(url, { headers: this.getHeaders() })\n .pipe(\n catchError((error) =>\n this.handleError(error, () => this.delete<T>(url))\n )\n );\n }\n\n private handleError<T>(\n error: HttpErrorResponse,\n retryRequest: () => Observable<T>\n ): Observable<T> {\n if (error.status === 401) {\n return this.handle401Error(retryRequest);\n }\n return throwError(() => error);\n }\n\n private handle401Error<T>(retryRequest: () => Observable<T>): Observable<T> {\n if (!this.isRefreshing) {\n this.isRefreshing = true;\n\n return this.authService.refreshToken().pipe(\n switchMap((newToken) => {\n this.isRefreshing = false;\n return retryRequest(); // Retry the failed request with the new token\n }),\n catchError((err) => {\n this.isRefreshing = false;\n return throwError(() => err);\n })\n );\n } else {\n return retryRequest();\n }\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { catchError, finalize, forkJoin, map, Observable, of, shareReplay } from 'rxjs';\nimport {\n Dictionary,\n DictionaryAppDependencyDto,\n DictionaryDto,\n} from '../models/dictionary.model';\nimport { List } from '../models/list.model';\nimport { ConfigService } from '../others/config-service';\nimport { EnvironmentType } from '../others/environment-type';\nimport { AuthHttpService } from './auth-http.service';\nimport { HttpEvent } from '@angular/common/http';\n\n@Injectable()\nexport class DictionaryService {\n private activeDictionaryRequests = new Map<\n string,\n Observable<DictionaryDto>\n>();\nprivate supportsBatchLoad = true;\n constructor(private http: AuthHttpService) {}\n\n configService = inject(ConfigService);\n\n public getDictionaries(params: {\n page?: number;\n pageSize?: number;\n sort?: string;\n sortDirection?: string;\n filters?: string[];\n dictionaryIds?: number[];\n dictionaryUUIDs?: string[];\n languageIds?: number[];\n env: EnvironmentType;\n }): Observable<List<DictionaryDto>> {\n let url =\n this.configService.readConfig().baseUrlInfrastructure + '/dictionaries';\n\n let query = '';\n if (params.pageSize) {\n query += `&PageSize=${params.pageSize}`;\n }\n if (params.page) {\n query += `&PageNumber=${params.page}`;\n }\n if (params.sort) {\n query += `&Sort=${params.sort}`;\n }\n if (params.sortDirection) {\n query += `&SortDirection=${params.sortDirection}`;\n }\n if (params.languageIds && params.languageIds.length > 0) {\n query += `&LanguageIds=${params.languageIds.join('&LanguageIds=')}`;\n }\n if (params.dictionaryIds && params.dictionaryIds.length > 0) {\n query += `&DictionaryIds=${params.dictionaryIds.join('&DictionaryIds=')}`;\n }\n if (params.dictionaryUUIDs && params.dictionaryUUIDs.length > 0) {\n query += `&DictionaryUUIDs=${params.dictionaryUUIDs.join(\n '&DictionaryUUIDs='\n )}`;\n }\n if (params.filters && params.filters.length > 0) {\n query += `&Filter=${params.filters.join('&Filter=')}`;\n }\n\n const env = params.env || EnvironmentType.Config;\n query += `&Env=${env}`;\n\n if (query.length > 0) {\n url += '?' + query;\n }\n\n return this.http.get<List<DictionaryDto>>(url);\n }\n\n public getDictionariesLight(params: {\n page?: number;\n pageSize?: number;\n sort?: string;\n sortDirection?: string;\n filters: string[];\n languageIds?: number[];\n env: EnvironmentType;\n }): Observable<List<DictionaryDto>> {\n let url =\n this.configService.readConfig().baseUrlInfrastructure +\n '/dictionaries/light';\n\n let query = '';\n if (params.pageSize) {\n query += `&PageSize=${params.pageSize}`;\n }\n if (params.page) {\n query += `&PageNumber=${params.page}`;\n }\n if (params.sort) {\n query += `&Sort=${params.sort}`;\n }\n if (params.sortDirection) {\n query += `&SortDirection=${params.sortDirection}`;\n }\n if (params.languageIds && params.languageIds.length > 0) {\n query += `&LanguageIds=${params.languageIds.join('&LanguageIds=')}`;\n }\n if (params.filters && params.filters.length > 0) {\n query += `&Filter=${params.filters.join('&Filter=')}`;\n }\n const env = params.env || EnvironmentType.Config;\n query += `&Env=${env}`;\n\n if (query.length > 0) {\n url += '?' + query;\n }\n return this.http.get<List<DictionaryDto>>(url);\n }\n\n public delete(uuid: string, env: string): Observable<any> {\n const url =\n this.configService.readConfig().baseUrlInfrastructure +\n `/dictionaries/${uuid}/${env}`;\n return this.http.delete(url);\n }\n\n public getDictionary(\n id: string,\n env: EnvironmentType\n ): Observable<DictionaryDto> {\n const requestKey = `${id}_${env}`;\n if (this.activeDictionaryRequests.has(requestKey)) {\n return this.activeDictionaryRequests.get(requestKey)!;\n }\n\n const url =\n this.configService.readConfig().baseUrlInfrastructure +\n '/dictionaries/dictionary/' +\n id +\n '/' +\n env;\n\n const newRequest$ = this.http.get<DictionaryDto>(url).pipe(\n shareReplay(1),\n finalize(() => {\n this.activeDictionaryRequests.delete(requestKey);\n })\n );\n\n this.activeDictionaryRequests.set(requestKey, newRequest$);\n return newRequest$;\n }\n\n /**\n * Load multiple dictionaries in parallel\n * Reusable for any scenario that needs multiple dictionaries\n */\n public loadMultipleDictionaries(\n uuids: string[],\n env: EnvironmentType = EnvironmentType.Config\n ): Observable<Map<string, DictionaryDto>> {\n if (uuids.length === 0) {\n return of(new Map());\n }\n\n // Check if backend supports batch loading\n if (this.supportsBatchLoad) {\n return this.getBatchDictionaries(uuids, env);\n }\n\n // Fallback: Load all in parallel instead of sequential\n const requests = uuids.map((uuid) =>\n this.getDictionary(uuid, env).pipe(\n map((dict) => ({ uuid, dict })),\n catchError((error) => {\n console.warn(`Failed to load dictionary ${uuid}:`, error);\n return of({ uuid, dict: null });\n })\n )\n );\n\n return forkJoin(requests).pipe(\n map((results) => {\n const dictionaryMap = new Map<string, DictionaryDto>();\n results.forEach((result) => {\n if (result.dict) {\n dictionaryMap.set(result.uuid, result.dict);\n }\n });\n return dictionaryMap;\n })\n );\n }\n\n /**\n * Private method for batch loading (when backend supports it)\n */\n private getBatchDictionaries(\n uuids: string[],\n env: EnvironmentType\n ): Observable<Map<string, DictionaryDto>> {\n const url = `${\n this.configService.readConfig().baseUrlInfrastructure\n }/dictionaries/batch`;\n return this.http\n .post<{ [uuid: string]: DictionaryDto }>(url, { uuids, env })\n .pipe(map((response) => new Map(Object.entries(response))));\n }\n\n public getDependencies(id: number): Observable<DictionaryDto[]> {\n const url =\n this.configService.readConfig().baseUrlInfrastructure +\n '/dictionaries/dependencies/' +\n id;\n return this.http.get<DictionaryDto[]>(url);\n }\n\n public getAppDependencies(\n uuid: string,\n env: EnvironmentType\n ): Observable<DictionaryAppDependencyDto> {\n const url =\n this.configService.readConfig().baseUrlInfrastructure +\n '/dictionaries/app-dependencies/' +\n uuid +\n '/' +\n env;\n return this.http.get<DictionaryAppDependencyDto>(url);\n }\n\n public create(dictionary: Dictionary): Observable<string> {\n const createUrl =\n this.configService.readConfig().baseUrlInfrastructure + '/dictionaries';\n return this.http.post<string>(createUrl, dictionary);\n }\n\n updateDictionary(dictionary: Dictionary): Observable<Dictionary> {\n const updateUrl = `${\n this.configService.readConfig().baseUrlInfrastructure\n }/dictionaries`;\n return this.http.put<Dictionary>(updateUrl, dictionary);\n }\n\n publishDictionaryVersion(\n uuid: string,\n envFrom: EnvironmentType,\n envTo: EnvironmentType\n ): Observable<DictionaryDto> {\n const url =\n this.configService.readConfig().baseUrlInfrastructure +\n `/dictionaries/publish` +\n `?uuid=${uuid}&envFrom=${envFrom}&envTo=${envTo}`;\n return this.http.get<DictionaryDto>(url);\n }\n\n getDictionaryVersion(\n uuid: string,\n env: EnvironmentType\n ): Observable<DictionaryDto> {\n const url =\n this.configService.readConfig().baseUrlInfrastructure +\n `/dictionaries/dictionary/` +\n `${uuid}/${env}`;\n return this.http.get<DictionaryDto>(url);\n }\n\n public loadAppDictionaries(\n appUuid: string,\n env: EnvironmentType = EnvironmentType.Config\n ): Observable<AppDictionariesResponse> {\n const url = `${\n this.configService.readConfig().baseUrlInfrastructure\n }/dictionaries/app-dictionaries/${appUuid}?env=${env}`;\n\n return this.http.get<AppDictionariesResponse>(url);\n }\n\n /**\n * NEW: Get complete dictionary tree in a single API call\n * This replaces the need for multiple recursive calls to load child dictionaries\n */\n public getDictionaryTree(\n dictionaryId: string,\n params: {\n env: EnvironmentType;\n languageId?: number;\n valueIdsToShow?: number[];\n }\n ): Observable<DictionaryTreeResponseDto> {\n const baseUrl = this.configService.readConfig().baseUrlInfrastructure;\n let url = `${baseUrl}/dictionaries/${dictionaryId}/tree`;\n\n let queryParams: string[] = [];\n queryParams.push(`environmentType=${params.env}`);\n\n if (params.languageId) {\n queryParams.push(`languageId=${params.languageId}`);\n }\n\n if (params.valueIdsToShow && params.valueIdsToShow.length > 0) {\n queryParams.push(`valueIdsToShow=${params.valueIdsToShow.join(',')}`);\n }\n\n if (queryParams.length > 0) {\n url += '?' + queryParams.join('&');\n }\n\n return this.http.get<DictionaryTreeResponseDto>(url);\n }\n}\n\n// NEW: Response interface for dictionary tree endpoint\nexport interface DictionaryTreeResponseDto {\n mainDictionary: DictionaryDto;\n allDictionaries: DictionaryDto[];\n metadata: {\n totalDictionaries: number;\n maxDepth: number;\n loadedAt: string;\n };\n}\n\n// Response interface for the app dictionaries endpoint\nexport interface AppDictionariesResponse {\n dictionaries: { [uuid: string]: DictionaryDto };\n analysisStats: {\n appUuid: string;\n sectionsAnalyzed: number;\n controlsAnalyzed: number;\n presentationControlsAnalyzed: number;\n initialDictionariesFound: number;\n totalLoaded: number;\n dependencyRounds: number;\n loadingTimeMs: number;\n };\n success: boolean;\n errors?: string[];\n}\n","export class ItemNode {\n children: ItemNode[];\n name: string;\n canSelect: boolean = true;\n hideArrow: boolean = false;\n isSelected?: boolean = false;\n data?: any | null;\n}\nexport class ItemFlatNode {\n name: string;\n level: number;\n expandable: boolean;\n canSelect: boolean = true;\n hideArrow: boolean = false;\n isSelected?: boolean = false;\n data?: any | null;\n}\n","import { Injectable } from \"@angular/core\";\nimport { BehaviorSubject } from \"rxjs\";\nimport { cloneDeep } from \"lodash\";\nimport { ItemNode } from \"../models/treeview.model\";\n\n@Injectable()\nexport class ChecklistDatabase {\n dataChange = new BehaviorSubject<ItemNode[]>([]);\n initialData!: ItemNode[];\n\n get data(): ItemNode[] {\n return this.dataChange.value;\n }\n\n constructor() {\n }\n\n initialize(inputData: ItemNode[]) {\n this.initialData = inputData;\n this.dataChange.next(inputData);\n }\n\n insertItem(parent: ItemNode, name: string) {\n if (parent.children) {\n parent.children.push({ name: name } as ItemNode);\n this.dataChange.next(this.data);\n }\n }\n\n updateItem(node: ItemNode, name: string) {\n node.name = name;\n this.dataChange.next(this.data);\n }\n\n\n private filterData(array: ItemNode[], text: string) {\n const getChildren = (result: ItemNode[], object: ItemNode) => {\n if (object.name.toLowerCase().indexOf(text.toLowerCase()) >= 0) {\n result.push(object);\n return result;\n }\n if (Array.isArray(object.children)) {\n const children = object.children.reduce(getChildren, []);\n if (children.length) {\n result.push({ ...object, children });\n }\n }\n return result;\n };\n\n return array.reduce(getChildren, []);\n } \n\n public filter(filterText: string) {\n let filteredTreeData = cloneDeep(this.initialData);\n if (filterText) {\n filteredTreeData = this.filterData(filteredTreeData, filterText);\n }\n this.dataChange.next(filteredTreeData);\n }\n}\n","import { SelectionModel } from '@angular/cdk/collections';\nimport { FlatTreeControl } from '@angular/cdk/tree';\nimport {\n MatTreeFlatDataSource,\n MatTreeFlattener,\n} from '@angular/material/tree';\nimport {\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { LabelKeys } from '../../enums/label.keys';\nimport { ItemFlatNode, ItemNode } from '../../models/treeview.model';\nimport { ChecklistDatabase } from '../../others/check-list.database';\nimport { TranslatePipe } from '../../others/translation.pipe';\n\n@Component({\n selector: 'app-treeview',\n templateUrl: './treeview.component.html',\n styleUrl: './treeview.component.scss',\n providers: [ChecklistDatabase],\n})\nexport class AppTreeviewComponent {\n @Input() allowAddItems: boolean = false;\n @Input() autoSelectDescendants: boolean = true;\n @Input() allowCheckItems: boolean;\n @Input() allowFilter: boolean = false;\n @Output() selectionChanged: EventEmitter<any> = new EventEmitter();\n private isInit: boolean = true;\n private selectedNode: ItemFlatNode;\n /** Map from flat node to nested node. This helps us finding the nested node to be modified */\n flatNodeMap = new Map<ItemFlatNode, ItemNode>();\n /** Map from nested node to flattened node. This helps us to keep the same object for selection */\n nestedNodeMap = new Map<ItemNode, ItemFlatNode>();\n selectedParent: ItemFlatNode | null = null;\n newItemName = '';\n treeControl: FlatTreeControl<ItemFlatNode>;\n treeFlattener: MatTreeFlattener<ItemNode, ItemFlatNode>;\n dataSource: MatTreeFlatDataSource<ItemNode, ItemFlatNode>;\n checklistSelection = new SelectionModel<ItemFlatNode>(true);\n commonKeys = LabelKeys.common;\n constructor(\n private database: ChecklistDatabase,\n private translate: TranslatePipe\n ) {\n this.treeFlattener = new MatTreeFlattener(\n this.transformer,\n this.getLevel,\n this.isExpandable,\n this.getChildren\n );\n this.treeControl = new FlatTreeControl<ItemFlatNode>(\n this.getLevel,\n this.isExpandable\n );\n this.dataSource = new MatTreeFlatDataSource(\n this.treeControl,\n this.treeFlattener\n );\n\n database.dataChange.subscribe((data) => {\n this.dataSource.data = data;\n });\n\n this.checklistSelection.changed.subscribe((node) => {\n if (this.isInit === false) {\n this.selectionChanged.next(node);\n }\n });\n }\n\n getLevel = (node: ItemFlatNode) => node.level;\n isExpandable = (node: ItemFlatNode) => node.expandable;\n getChildren = (node: ItemNode): ItemNode[] => node.children;\n hasChild = (_: number, _nodeData: ItemFlatNode) => _nodeData.expandable;\n hasNoContent = (_: number, _nodeData: ItemFlatNode) => _nodeData.name === '';\n\n /**\n * Transformer to convert nested node to flat node. Record the nodes in maps for later use.\n */\n transformer = (node: ItemNode, level: number) => {\n this.isInit = true;\n\n const existingNode = this.nestedNodeMap.get(node);\n const flatNode =\n existingNode && existingNode.name === node.name\n ? existingNode\n : new ItemFlatNode();\n flatNode.name = node.name;\n flatNode.level = level;\n flatNode.canSelect = node.canSelect;\n flatNode.data = node.data;\n flatNode.isSelected = node.isSelected;\n flatNode.expandable = !!node.children?.length;\n flatNode.hideArrow = node.hideArrow;\n this.flatNodeMap.set(flatNode, node);\n this.nestedNodeMap.set(node, flatNode);\n\n if (flatNode.isSelected === true) {\n this.checklistSelection.select(flatNode);\n }\n this.isInit = false;\n return flatNode;\n };\n\n /** Whether all the descendants of the node are selected. */\n descendantsAllSelected(node: ItemFlatNode): boolean {\n const descendants = this.treeControl.getDescendants(node);\n const descAllSelected =\n descendants.length > 0 &&\n descendants.every((child) => {\n return this.checklistSelection.isSelected(child);\n });\n return descAllSelected;\n }\n\n /** Whether part of the descendants are selected */\n descendantsPartiallySelected(node: ItemFlatNode): boolean {\n const descendants = this.treeControl.getDescendants(node);\n const result = descendants.some((child) =>\n this.checklistSelection.isSelected(child)\n );\n return result && !this.descendantsAllSelected(node);\n }\n\n /** Toggle the to-do item selection. Select/deselect all the descendants node */\n selectionToggle(node: ItemFlatNode): void {\n if (!node.canSelect) {\n return;\n }\n this.checklistSelection.toggle(node);\n if (this.autoSelectDescendants) {\n const descendants = this.treeControl.getDescendants(node);\n if (this.checklistSelection.isSelected(node)) {\n this.checklistSelection.select(...descendants);\n } else {\n this.checklistSelection.deselect(...descendants);\n }\n this.checkAllParentsSelection(node);\n }\n }\n\n leafItemSelectionToggle(node: ItemFlatNode): void {\n if (!node.canSelect) {\n return;\n }\n if (!this.allowCheckItems) {\n this.selectedNode = node;\n this.selectionChanged.next(node);\n } else {\n this.checklistSelection.toggle(node);\n if (this.autoSelectDescendants) {\n this.checkAllParentsSelection(node);\n }\n }\n }\n\n /* Checks all the parents when a leaf node is selected/unselected */\n checkAllParentsSelection(node: ItemFlatNode): void {\n let parent: ItemFlatNode | null = this.getParentNode(node);\n while (parent) {\n this.checkRootNodeSelection(parent);\n parent = this.getParentNode(parent);\n }\n }\n\n /** Check root node checked state and change it accordingly */\n checkRootNodeSelection(node: ItemFlatNode): void {\n const nodeSelected = this.checklistSelection.isSelected(node);\n const descendants = this.treeControl.getDescendants(node);\n const descAllSelected =\n descendants.length > 0 &&\n descendants.every((child) => {\n return this.checklistSelection.isSelected(child);\n });\n if (nodeSelected && !descAllSelected) {\n this.checklistSelection.deselect(node);\n } else if (!nodeSelected && descAllSelected) {\n this.checklistSelection.select(node);\n }\n }\n\n /* Get the parent node of a node */\n getParentNode(node: ItemFlatNode): ItemFlatNode | null {\n const currentLevel = this.getLevel(node);\n\n if (currentLevel < 1) {\n return null;\n }\n\n const startIndex = this.treeControl.dataNodes.indexOf(node) - 1;\n\n for (let i = startIndex; i >= 0; i--) {\n const currentNode = this.treeControl.dataNodes[i];\n\n if (this.getLevel(currentNode) < currentLevel) {\n return currentNode;\n }\n }\n return null;\n }\n\n initialize(data: ItemNode[]) {\n this.database.initialize(data);\n }\n\n getSelectedNodes(): ItemFlatNode[] {\n let selectedNodes: ItemFlatNode[] = [];\n if (!this.allowCheckItems) {\n selectedNodes.push(this.selectedNode);\n } else {\n this.treeControl.dataNodes.forEach((n) => {\n if (this.checklistSelection.isSelected(n)) {\n n.isSelected = true;\n selectedNodes.push(n);\n }\n });\n }\n return selectedNodes;\n }\n\n /** Select the category so we can insert the new item. */\n addNewItem(node: ItemFlatNode) {\n const parentNode = this.flatNodeMap.get(node);\n this.database.insertItem(parentNode!, '');\n this.treeControl.expand(node);\n }\n\n /** Save the node to database */\n saveNode(node: ItemFlatNode, itemValue: string) {\n const nestedNode = this.flatNodeMap.get(node);\n this.database.updateItem(nestedNode!, itemValue);\n }\n\n filterText(text: string) {\n this.database.filter(text);\n this.expandAll();\n }\n\n expandAll() {\n this.treeControl.expandAll();\n }\n\n expandNode(nodeIndex: number) {\n if (\n this.treeControl.dataNodes &&\n this.treeControl.dataNodes.length > nodeIndex\n ) {\n this.treeControl.expand(this.treeControl.dataNodes[nodeIndex]);\n }\n }\n\n applyFilter(event: Event) {\n const filterValue = (event.target as HTMLInputElement).value;\n return this.filterText(filterValue);\n }\n}\n","<mat-form-field class=\"full-width p-10\"\n *ngIf=\"allowFilter\"\n appearance=\"outline\">\n <mat-label> {{ commonKeys.actions.filter | translate }}</mat-label>\n <input matInput\n minlength=\"1\"\n (keyup)=\"applyFilter($event)\"\n placeholder=\"{{ commonKeys.actions.filter }}\"\n #input />\n</mat-form-field>\n\n<!--<cdk-virtual-scroll-viewport itemSize=\"30\" class=\"dictionary-viewport\">-->\n<mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\n <!-- Leaf Nodes -->\n <mat-tree-node *matTreeNodeDef=\"let node\"\n matTreeNodePadding>\n <button mat-icon-button disabled></button>\n <!-- Node Content -->\n <ng-container>\n <!-- Checkbox for Selectable Nodes when checkboxes are allowed -->\n <ng-container *ngIf=\"node.canSelect && allowCheckItems\">\n <mat-checkbox class=\"checklist-leaf-node\"\n [checked]=\"checklistSelection.isSelected(node)\"\n (change)=\"leafItemSelectionToggle(node)\"\n color=\"primary\">\n {{ node.name }}\n </mat-checkbox>\n </ng-container>\n <!-- Clickable Label for Selectable Nodes when checkboxes are not allowed -->\n <ng-container *ngIf=\"node.canSelect && !allowCheckItems\">\n <mat-label class=\"mdc-label\"\n style=\"cursor: pointer\"\n (click)=\"leafItemSelectionToggle(node)\">\n {{ node.name }}\n </mat-label>\n </ng-container>\n <!-- Non-clickable Label for Non-selectable Nodes -->\n <ng-container *ngIf=\"!node.canSelect\">\n <mat-label class=\"mdc-label\">\n {{ node.name }}\n </mat-label>\n </ng-container>\n </ng-container>\n </mat-tree-node>\n\n <!-- Nodes with Children -->\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\"\n matTreeNodePadding>\n <!-- Expand/Collapse Button -->\n <button mat-icon-button\n matTreeNodeToggle\n [attr.aria-label]=\"'Toggle ' + node.name\"\n *ngIf=\"!node.hideArrow\">\n <mat-icon class=\"mat-icon-rtl-mirror\">\n {{ treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\n </mat-icon>\n </button>\n <!-- Node Content -->\n <ng-container>\n <!-- Checkbox for Selectable Nodes when checkboxes are allowed -->\n <ng-container *ngIf=\"node.canSelect && allowCheckItems\">\n <mat-checkbox [checked]=\"checklistSelection.isSelected(node)\"\n (change)=\"selectionToggle(node)\"\n color=\"primary\">\n {{ node.name }}\n </mat-checkbox>\n </ng-container>\n <!-- Clickable Label for Selectable Nodes when checkboxes are not allowed -->\n <ng-container *ngIf=\"node.canSelect && !allowCheckItems\">\n <mat-label class=\"mdc-label\"\n style=\"cursor: pointer\"\n (click)=\"leafItemSelectionToggle(node)\">\n {{ node.name }}\n </mat-label>\n </ng-container>\n <!-- Non-clickable Label for Non-selectable Nodes -->\n <ng-container *ngIf=\"!node.canSelect\">\n <mat-label class=\"mdc-label\">\n {{ node.name }}\n </mat-label>\n </ng-container>\n </ng-container>\n <!-- Add New Item Button -->\n <button mat-icon-button (click)=\"addNewItem(node)\" *ngIf=\"allowAddItems\">\n <mat-icon>add</mat-icon>\n </button>\n </mat-tree-node>\n</mat-tree>\n<!--</cdk-virtual-scroll-viewport>-->\n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { DictionaryValue, DictionaryDto, DictionaryValueDto } from '../models/dictionary.model';\nimport { EnvironmentType } from '../others/environment-type';\nimport { Utils } from '../others/utils';\nimport { DictionaryService, DictionaryTreeResponseDto } from '../services/dictionary.service';\nimport { ItemNode, ItemFlatNode } from '../models/treeview.model';\nimport { AppTreeviewComponent } from './treeview/treeview.component';\n\n\n@Component({\n selector: 'app-dictionaries-tree',\n templateUrl: './dictionaries-tree.component.html',\n styleUrl: './dictionaries-tree.component.scss',\n})\nexport class DictionariesTreeComponent\n implements OnInit, OnChanges, AfterViewInit\n{\n @ViewChild('treeView') treeViewControl: AppTreeviewComponent;\n @Input() dictionaryId: string;\n @Input() selectedValueIds: number[];\n @Input() allowCheckItems: boolean = true;\n @Input() allowFilter: boolean = false;\n @Input() drawReferenceDictionariesAsSeparateNode: boolean = true;\n @Input() drawChildDictionariesAsSeparateNode: boolean = true;\n @Input() drawRootNode: boolean = true;\n @Input() filterText: string;\n @Input() allowSelectNonLeafNodes: boolean = false;\n @Input() languageId: number;\n @Input() valuesIdsToShow: number[];\n @Input() hideParentArrow: boolean = false;\n\n // NEW: Accept preloaded dictionary data\n @Input() preloadedDictionary: DictionaryDto | null = null;\n @Input() preloadedDictionaries: Map<string, DictionaryDto> | null = null;\n @Input() usePreloadedData: boolean = false;\n\n @Output() selectedDictionaryValuesChanged: EventEmitter<DictionaryValue[]> =\n new EventEmitter<DictionaryValue[]>();\n\n allDictionaries: DictionaryDto[];\n mainDictionary: DictionaryDto;\n isLoading: boolean;\n\n constructor(private dictService: DictionaryService) {}\n\n ngOnInit(): void {\n // Only initialize if not already set\n if (!this.allDictionaries) {\n this.allDictionaries = [];\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['dictionaryId']) {\n const changed = changes['dictionaryId'];\n if (changed.currentValue !== changed.previousValue) {\n this.loadDictionary();\n }\n }\n\n // NEW: Handle preloaded data changes\n if (\n changes['preloadedDictionary'] ||\n changes['preloadedDictionaries'] ||\n changes['usePreloadedData']\n ) {\n if (this.usePreloadedData && this.preloadedDictionary) {\n this.loadFromPreloadedData();\n } else if (this.dictionaryId) {\n this.loadDictionary();\n }\n }\n\n if (changes['filterText'] && this.treeViewControl) {\n let text = changes['filterText'].currentValue as string;\n this.treeViewControl.filterText(text);\n }\n }\n\n ngAfterViewInit(): void {\n // If we have a main dictionary but haven't built the tree yet, build it now\n if (this.mainDictionary && this.treeViewControl) {\n this.rebuildTree();\n }\n\n // If we have a dictionaryId but haven't loaded the dictionary yet, load it now\n // This handles the case where the component is initialized with a pre-populated dictionaryId\n if (this.dictionaryId && !this.mainDictionary && !this.isLoading) {\n if (this.usePreloadedData && this.preloadedDictionary) {\n this.loadFromPreloadedData();\n } else {\n this.loadDictionary();\n }\n }\n }\n\n loadDictionary() {\n if (this.dictionaryId) {\n this.isLoading = true;\n\n const params = {\n env: EnvironmentType.Config, // TODO: retrieve correct environment\n languageId: this.languageId > 0 ? this.languageId : undefined,\n valueIdsToShow:\n this.valuesIdsToShow?.length > 0 ? this.valuesIdsToShow : undefined,\n };\n\n this.dictService.getDictionaryTree(this.dictionaryId, params).subscribe({\n next: (response: DictionaryTreeResponseDto) => {\n this.mainDictionary = response.mainDictionary;\n this.allDictionaries = response.allDictionaries;\n this.rebuildTree();\n this.isLoading = false;\n },\n error: (error) => {\n console.error('Failed to load dictionary tree:', error);\n this.isLoading = false;\n },\n });\n } else {\n this.clearTree();\n }\n }\n\n /**\n * NEW: Load dictionary from preloaded data instead of API calls\n */\n loadFromPreloadedData() {\n if (!this.preloadedDictionary) {\n console.warn(\n 'No preloaded dictionary data available, falling back to API'\n );\n this.loadDictionary();\n return;\n }\n\n this.isLoading = true;\n this.mainDictionary = { ...this.preloadedDictionary }; // Create a copy\n\n // Apply value filtering if needed\n if (this.valuesIdsToShow?.length > 0) {\n this.mainDictionary.values =\n this.mainDictionary.values?.filter((v) =>\n this.valuesIdsToShow.some((c) => c == v.id)\n ) || [];\n }\n\n // Use preloaded dictionaries for dependencies\n this.loadAllNeededDictionariesFromPreloaded(this.mainDictionary);\n this.isLoading = false;\n }\n\n /**\n * NEW: Load needed dictionaries from preloaded data instead of API calls\n */\n loadAllNeededDictionariesFromPreloaded(dictionary: DictionaryDto) {\n if (!this.preloadedDictionaries) {\n console.warn('No preloaded dictionaries map available');\n return;\n }\n\n // Initialize with all preloaded dictionaries - this ensures child dictionaries are available\n this.allDictionaries = Array.from(this.preloadedDictionaries.values());\n\n // Build the tree\n this.rebuildTree();\n }\n\n rebuildTree() {\n // Check if treeViewControl is available (ViewChild might not be initialized yet)\n if (!this.treeViewControl) {\n return;\n }\n\n let node = this.buildDictionaryTree(this.mainDictionary);\n if (this.drawRootNode) {\n this.treeViewControl.initialize([node]);\n } else {\n this.treeViewControl.initialize(node.children);\n }\n if (this.allowCheckItems) {\n if (this.selectedValueIds && this.selectedValueIds.length > 0) {\n this.treeViewControl.expandAll();\n } else {\n this.treeViewControl.expandNode(0);\n }\n }\n }\n\n clearTree() {\n // Check if treeViewControl is available\n if (!this.treeViewControl) {\n return;\n }\n\n let node = {} as ItemNode;\n this.treeViewControl.initialize([node]);\n }\n\n buildDictionaryTree(dictionary: DictionaryDto): ItemNode {\n let node = {\n name: dictionary.name,\n children: [],\n data: null,\n canSelect: false,\n hideArrow: false,\n } as ItemNode;\n\n // Build the tree recursively\n this.buildTreeChildren(dictionary, node);\n\n // Set canSelect for root node based on whether it has children\n if (!this.hideParentArrow) {\n node.canSelect = this.getCanSelect(node);\n } else {\n node.canSelect = false;\n node.hideArrow = true;\n }\n\n return node;\n }\n\n buildTreeChildren(dictionary: DictionaryDto, node: ItemNode): void {\n if (dictionary.values) {\n dictionary.values.forEach((v) => {\n let childrenNode = {\n name: v.name,\n children: [],\n data: v,\n isSelected: false,\n canSelect: false,\n hideArrow: false,\n } as ItemNode;\n if (this.languageId > 0) {\n const val = Utils.findValueTranslation(\n v.valueTranslations,\n this.languageId\n );\n if (val) {\n childrenNode.name = val;\n }\n }\n\n if (this.selectedValueIds && this.selectedValueIds.indexOf(v.id) >= 0) {\n childrenNode.isSelected = true;\n }\n\n // Recursively build child dictionaries if any\n if (v.childDictionaryId || v.childDictionaryUUID) {\n let dict: DictionaryDto | undefined;\n\n // Try UUID-based lookup first (for preloaded data)\n if (v.childDictionaryUUID) {\n dict = this.allDictionaries.find(\n (d) => d.uuid === v.childDictionaryUUID\n );\n }\n\n // Fallback to ID-based lookup (for API-loaded data)\n if (!dict && v.childDictionaryId) {\n dict = this.allDictionaries.find(\n (d) => d.id === v.childDictionaryId\n );\n }\n\n if (dict) {\n this.buildTreeChildren(dict, childrenNode);\n }\n }\n\n // Handle reference values\n if (\n v.referenceValues?.length > 0 &&\n this.drawReferenceDictionariesAsSeparateNode === true\n ) {\n // Try to find reference dictionary by UUID first, then by ID\n let refDict = this.allDictionaries.find((d) =>\n dictionary.referredInDictionariesUUIds?.includes(d.uuid || '')\n );\n\n if (!refDict) {\n refDict = this.allDictionaries.find(\n (d) => d.id === dictionary.referenceId\n );\n }\n\n v.referenceValues.forEach((rv) => {\n let referenceNode = {\n name: rv.name + ` (${refDict?.name})`,\n children: [],\n data: rv,\n isSelected: false,\n canSelect: true, // Reference values are leaf nodes and can be selected\n hideArrow: false,\n } as ItemNode;\n\n if (\n this.selectedValueIds &&\n this.selectedValueIds.indexOf(rv.id) >= 0\n ) {\n referenceNode.isSelected = true;\n }\n\n childrenNode.children.push(referenceNode);\n });\n }\n\n // Determine if the current node can be selected\n childrenNode.canSelect = this.getCanSelect(childrenNode);\n\n // Add the child node to the current node's children\n node.children.push(childrenNode);\n });\n }\n }\n\n // Helper method to determine if a node can be selected\n getCanSelect(node: ItemNode): boolean {\n const isLeaf = node.children.length === 0;\n return isLeaf || this.allowSelectNonLeafNodes;\n }\n\n onTreeSelectionChanged(node: ItemFlatNode) {\n var selectedNodes = this.treeViewControl.getSelectedNodes();\n var values = selectedNodes.map((n) => n.data) as DictionaryValueDto[];\n let dvs = this.createCopy(values);\n\n this.selectedDictionaryValuesChanged.next(dvs);\n }\n\n createCopy(objectToCopy: DictionaryValueDto[]): DictionaryValue[] {\n var s = JSON.stringify(objectToCopy);\n var news = s.replace(/\"valueTranslations\":/g, '\"translations\":');\n return JSON.parse(news) as DictionaryValue[];\n }\n}\n","<mat-spinner *ngIf=\"isLoading === true\" class=\"m-x-auto\"></mat-spinner>\n<app-treeview #treeView [autoSelectDescendants]=\"false\"\n [allowCheckItems]=\"allowCheckItems\"\n [allowFilter]=\"allowFilter\"\n (selectionChanged)=\"onTreeSelectionChanged($event)\">\n\n</app-treeview>\n","import {\n Component,\n ElementRef,\n Input,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n ChangeDetectorRef,\n} from '@angular/core';\nimport { MatAutocompleteTrigger } from '@angular/material/autocomplete';\nimport { FieldType } from '@ngx-formly/core';\nimport { take } from 'rxjs';\nimport { DictionaryValue, TranslationDto, Translation, DictionaryValueDto, DictionaryDto } from '../../models/dictionary.model';\nimport { Language } from '../../models/language.model';\nimport { EnvironmentType } from '../../others/environment-type';\nimport { DictionaryService } from '../../services/dictionary.service';\nimport { LabelKeys } from '../../enums/label.keys';\n\n\n@Component({\n selector: 'formly-dictionary-dropdown-tree',\n templateUrl: './formly-dictionary-dropdown-tree.component.html',\n styleUrls: ['./formly-dictionary-dropdown-tree.component.scss'],\n})\nexport class FormlyDictionaryDropdownTreeComponent\n extends FieldType\n implements OnInit\n{\n @ViewChild(MatAutocompleteTrigger)\n autocompleteTrigger: MatAutocompleteTrigger;\n @ViewChild('autoInput') autoInput: ElementRef;\n @Input() dictionaryId: string;\n @Output() selectedValue: DictionaryValue;\n filteredText: string;\n formlyKeys = LabelKeys.formly;\n label: string;\n currentLanguageIso: string;\n currentLanguageId: number;\n selectedValueText: string = '';\n labelStyle: any = {};\n selectedValueIds: number[] = [];\n valuesIdsToShow: number[] = [];\n selectedRelatedDictionaries: string[] = [];\n dictionaryLabels: { [key: string]: string } = {};\n\n // NEW: Properties for preloaded dictionary data\n preloadedDictionary: DictionaryDto | null = null;\n preloadedDictionaries: Map<string, DictionaryDto> | null = null;\n usePreloadedData: boolean = false;\n\n constructor(\n private dictionaryService: DictionaryService,\n private cdRef: ChangeDetectorRef\n ) {\n super();\n }\n\n ngOnInit(): void {\n if (this.props['dictionaryId']) {\n this.dictionaryId = this.props['dictionaryId'];\n }\n if (this.props['valuesIdsToShow']) {\n this.valuesIdsToShow = this.props['valuesIdsToShow'];\n }\n if (this.props['value']) {\n this.selectedValueText = this.props['value'];\n }\n if (this.props['selectedRelatedDictionaries']) {\n this.selectedRelatedDictionaries =\n this.props['selectedRelatedDictionaries'];\n }\n if (this.props['dictionaryLabels']) {\n this.dictionaryLabels = this.props['dictionaryLabels'];\n }\n\n // NEW: Initialize preloaded dictionary data\n if (this.props['dictionaryData']) {\n this.preloadedDictionary = this.props['dictionaryData'];\n this.usePreloadedData = true;\n }\n if (this.props['preloadedDictionaries']) {\n this.preloadedDictionaries = this.props['preloadedDictionaries'];\n }\n\n this.label = this.props['label'] as string;\n if (this.props.required) {\n this.label += ' *';\n }\n this.currentLanguageIso = this.props['currentLanguageIso'] as string;\n this.currentLanguageId = this.props['currentLanguageId'] as number;\n\n if (this.props['design']) {\n this.labelStyle = this.props['design']['.component-data-label'] || {};\n }\n if (\n this.props['selectedValueIds'] &&\n Array.isArray(this.props['selectedValueIds'])\n ) {\n this.selectedValueIds = this.props['selectedValueIds'];\n }\n\n const initialControlValue = this.formControl.value;\n const dictionaryDefaultValueId = this.props['dictionaryDefaultValueId'] as\n | number\n | null;\n\n if (\n initialControlValue == null &&\n dictionaryDefaultValueId != null &&\n this.dictionaryId\n ) {\n const dictionary = this.props['dictionaryData'];\n this.formControl.setValue(dictionaryDefaultValueId, {\n emitEvent: false,\n });\n\n if (dictionary) {\n const defaultValueDto = dictionary.values?.find(\n (v: DictionaryValueDto) => v.id === dictionaryDefaultValueId\n );\n if (defaultValueDto) {\n const valueToSet: DictionaryValue = {\n id: defaultValueDto.id,\n name: defaultValueDto.name,\n translations:\n defaultValueDto.valueTranslations?.map(\n (t: TranslationDto): Translation => {\n const languages = this.props['languages'] as\n | Language[]\n | undefined;\n const lang = languages?.find((l) => l.id === t.languageId);\n return {\n languageId: t.languageId,\n languageIso: lang?.iso ?? '',\n value: t.value,\n };\n }\n ) || [],\n active: defaultValueDto.active,\n locked: defaultValueDto.locked,\n childDictionaryId: defaultValueDto.childDictionaryId,\n childDictionaryUUID: defaultValueDto.childDictionaryUUID,\n referenceValues: [],\n };\n\n this.formControl.setValue(valueToSet, { emitEvent: false });\n this.selectedValueIds = [defaultValueDto.id];\n this.selectedValue = valueToSet;\n this.updateSelectedValueText();\n this.cdRef.markForCheck();\n } else {\n this.updateSelectedValueText();\n }\n } else {\n console.warn(\n 'Dictionary data not preloaded, falling back to API call for:',\n this.dictionaryId\n );\n\n this.dictionaryService\n .getDictionary(this.dictionaryId, EnvironmentType.Config)\n .pipe(take(1))\n .subscribe(\n (dto) => {\n const defaultValueDto = dto.values?.find(\n (v: DictionaryValueDto) => v.id === dictionaryDefaultValueId\n );\n if (defaultValueDto) {\n const valueToSet: DictionaryValue = {\n id: defaultValueDto.id,\n name: defaultValueDto.name,\n translations:\n defaultValueDto.valueTranslations?.map(\n (t: TranslationDto): Translation => {\n const languages = this.props['languages'] as\n | Language[]\n | undefined;\n const lang = languages?.find(\n (l) => l.id === t.languageId\n );\n return {\n languageId: t.languageId,\n languageIso: lang?.iso ?? '',\n value: t.value,\n };\n }\n ) || [],\n active: defaultValueDto.active,\n locked: defaultValueDto.locked,\n childDictionaryId: defaultValueDto.childDictionaryId,\n childDictionaryUUID: defaultValueDto.childDictionaryUUID,\n referenceValues: [],\n };\n\n this.formControl.setValue(valueToSet, { emitEvent: false });\n this.selectedValueIds = [defaultValueDto.id];\n this.selectedValue = valueToSet;\n this.updateSelectedValueText();\n this.cdRef.markForCheck();\n } else {\n this.updateSelectedValueText();\n }\n },\n (error) => {\n console.error(\n 'Formly Dict: Failed to fetch details for default value',\n error\n );\n this.updateSelectedValueText();\n }\n );\n }\n } else {\n this.updateSelectedValueText();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['model'] || changes['formControl']) {\n this.updateSelectedValueIds();\n }\n }\n\n updateSelectedValueIds(): void {\n const modelValue = this.formControl?.value;\n\n if (modelValue && Array.isArray(modelValue.selectedValueIds)) {\n this.selectedValueIds = modelValue.selectedValueIds;\n } else if (modelValue && modelValue.id) {\n this.selectedValueIds = [modelValue.id];\n }\n }\n\n onSelectedValueChanged(dictionaryValue: DictionaryValue) {\n if (this.props['onSelectedValueChanged']) {\n this.props['onSelectedValueChanged'](dictionaryValue);\n }\n this.updateSelectedValueText();\n }\n\n onSelectedDictionaryValuesChanged(values: DictionaryValue[]) {\n if (values && values.length > 0) {\n this.selectedValue = values[0];\n if (this.autocompleteTrigger) {\n this.autocompleteTrigger.closePanel();\n }\n this.onSelectedValueChanged(this.selectedValue);\n\n if (this.autoInput) {\n this.autoInput.nativeElement.value = this.filteredText = '';\n }\n }\n }\n\n filterChanged($event: any) {\n if ($event.target) {\n this.filteredText = $event.target.value;\n }\n }\n\n toggleAutocomplete(event: MouseEvent) {\n event.stopPropagation();\n if (this.autocompleteTrigger) {\n if (this.autocompleteTrigger.panelOpen) {\n this.autocompleteTrigger.closePanel();\n } else {\n this.autocompleteTrigger.openPanel();\n if (this.autoInput) {\n this.autoInput.nativeElement.focus();\n }\n }\n }\n }\n\n openAutocomplete() {\n if (this.autocompleteTrigger && !this.autocompleteTrigger.panelOpen) {\n this.autocompleteTrigger.openPanel();\n }\n }\n\n private updateSelectedValueText(): void {\n if (!this.selectedValue) {\n const formValue = this.formControl?.value;\n if (formValue && typeof formValue === 'object' && formValue.id) {\n this.selectedValue = formValue as DictionaryValue;\n } else {\n const specificData = this.props?.['specificData'];\n if (specificData && specificData.isMandatory !== true) {\n this.props['required'] = specificData.isMandatory;\n this.formControl.updateValueAndValidity();\n this.formControl.setErrors(null);\n }\n this.selectedValueText = '';\n return;\n }\n }\n\n const translation = this.selectedValue.translations?.find(\n (t) =>\n t.languageId === this.currentLanguageId ||\n t.languageIso === this.currentLanguageIso\n );\n if (translation) {\n this.selectedValueText = translation.value;\n } else {\n this.selectedValueText = this.selectedValue.name || '';\n }\n }\n\n getDictionaryLabel(dictionaryId: string): string {\n return this.dictionaryLabels[dictionaryId] || '';\n }\n}\n","<form>\n <mat-label class=\"component-data-label m-l-2\" [ngStyle]=\"labelStyle\">\n {{ label }}</mat-label\n >\n <mat-form-field class=\"full-width\">\n <input\n type=\"text\"\n placeholder=\"{{ selectedValueText }}\"\n #autoInput\n aria-label=\"Text\"\n matInput\n [matAutocomplete]=\"auto\"\n (input)=\"filterChanged($event)\"\n (focus)=\"openAutocomplete()\"\n />\n <mat-icon matSuffix (click)=\"toggleAutocomplete($event)\"\n >keyboard_arrow_down</mat-icon\n >\n <mat-autocomplete\n #matAutocomplete=\"matAutocomplete\"\n #auto=\"matAutocomplete\"\n autoActiveFirstOption\n (optionSelected)=\"\n onSelectedDictionaryValuesChanged([$event.option.value])\n \"\n >\n <mat-option disabled>{{\n formlyKeys.selectAnItem | translate\n }}</mat-option>\n <app-dictionaries-tree\n [allowCheckItems]=\"false\"\n [drawReferenceDictionariesAsSeparateNode]=\"false\"\n [drawChildDictionariesAsSeparateNode]=\"false\"\n [drawRootNode]=\"false\"\n [filterText]=\"filteredText\"\n [allowSelectNonLeafNodes]=\"true\"\n [selectedValueIds]=\"selectedValueIds\"\n [languageId]=\"currentLanguageId\"\n [valuesIdsToShow]=\"valuesIdsToShow\"\n [selectedRelatedDictionaries]=\"selectedRelatedDictionaries\"\n [dictionaryLabels]=\"dictionaryLabels\"\n [preloadedDictionary]=\"preloadedDictionary\"\n [preloadedDictionaries]=\"preloadedDictionaries\"\n [usePreloadedData]=\"usePreloadedData\"\n (selectedDictionaryValuesChanged)=\"\n onSelectedDictionaryValuesChanged($event)\n \"\n >\n </app-dictionaries-tree>\n </mat-autocomplete>\n </mat-form-field>\n\n <formly-validation-message *ngIf=\"showError\" [field]=\"field\">\n </formly-validation-message>\n</form>\n","import { Component, OnInit, ChangeDetectorRef } from \"@angular/core\";\nimport { FieldType } from \"@ngx-formly/core\";\nimport { Utils } from \"../others/utils\";\nimport { ControlData } from \"../models/flux.model\";\n\n@Component({\n selector: 'base-formly-component',\n template: '',\n})\nexport abstract class BaseFormlyControlComponent extends FieldType implements OnInit {\n langIso: string;\n controlData: ControlData;\n isLoading: boolean;\n isDisplayMode: boolean;\n env: string;\n appDataId: string;\n dataUrlId: string;\n appId: string;\n title: string | undefined;\n\n onInit() {}\n onPageSelected() {}\n async onPageSelectedAsync() {}\n canAdvance(): boolean {\n return true;\n }\n\n constructor(public cdr: ChangeDetectorRef) {\n super();\n }\n\n async ngOnInit() {\n this.props['cdr'] = this.cdr;\n this.props['component'] = this;\n this.env = this.props['env'];\n this.langIso = this.props['langIso'] as string;\n this.controlData = this.props['controlData'];\n this.isDisplayMode = this.props['isDisplayMode'];\n this.appDataId = this.props['appDataId'];\n this.appId = this.props['appId'];\n this.title = this.props['label'];\n this.dataUrlId = this.props['dataUrlId'];\n this.onInit();\n }\n\n getErrorTranslationMessage(errorCode: string, ...params: string[]) {\n const translation = Utils.findErrorTranslationLabel(\n this.controlData.errorsTranslations,\n this.langIso,\n errorCode\n );\n let errorMessage = 'An error has occured';\n if (translation && translation.value) {\n errorMessage = translation.value;\n if (params) {\n for (let i = 0; i < params.length; i++) {\n errorMessage = errorMessage.replace('{' + i + '}', params[i]);\n }\n }\n }\n return errorMessage;\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { catchError, firstValueFrom, map, Observable, of } from 'rxjs';\nimport { ConfigService } from '../others/config-service';\nimport {\n ApiDocumentRequest,\n ApiValidateRequest,\n ApplicationEnrolCardDto,\n ApplicationGenerateDocumentsDto,\n ApplicationGetGeneratedDocumentsDto,\n ApplicationUploadDocumentsDto,\n ConvertDocumentToPdfRequest,\n ConvertDocumentToPdfResponse,\n GeneratedDocument,\n MakeActionRequest,\n ScanIdDto,\n} from '../models/application.model';\nimport { AppData } from '../models/forms.model';\nimport { AuthHttpService } from './auth-http.service';\n\n@Injectable()\nexport class ApplicationDataService {\n constructor(private http: AuthHttpService) {}\n\n configService = inject(ConfigService);\n\n uploadDocuments(\n uploadDocumentsDto: ApplicationUploadDocumentsDto\n ): Observable<string[]> {\n const createUrl =\n this.configService.readConfig().baseUrlBusiness +\n '/appdata/uploadDocuments';\n return this.http.post<any>(createUrl, uploadDocumentsDto);\n }\n\n generateDocuments(\n generateDocumentsCommand: ApplicationGenerateDocumentsDto\n ): Observable<any> {\n const url =\n this.configService.readConfig().baseUrlBusiness +\n '/appdata/GenerateDocuments';\n return this.http.post<string[]>(url, generateDocumentsCommand);\n }\n\n getGenerateDocuments(\n getCommand: ApplicationGetGeneratedDocumentsDto\n ): Observable<GeneratedDocument[]> {\n const url =\n this.configService.readConfig().baseUrlBusiness +\n '/appdata/GetGeneratedDocuments';\n return this.http.post<GeneratedDocument[]>(url, getCommand);\n }\n\n downloadFile(\n appDataId: string,\n docId: string,\n fileName: string\n ): Observable<any> {\n const url =\n this.configService.readConfig().baseUrlBusiness +\n `/FileServer/download?appDataId=${appDataId}&docId=${docId}&fileName=${fileName}`;\n return this.http.getExtended(url, { responseType: 'blob' });\n }\n\n scanId(scanIdCommand: ScanIdDto): Observable<number> {\n const url =\n this.configService.readConfig().baseUrlBusiness + '/appdata/ScanId';\n return this.http.post<number>(url, scanIdCommand);\n }\n\n async getSteps(appDataId: string): Promise<any> {\n const getUrl =\n this.configService.readConfig().baseUrlBusiness +\n `/appdata/GetById/${appDataId}`;\n\n var promise = this.http.get<any>(getUrl).pipe(map((appData) => appData));\n return await firstValueFrom(promise);\n }\n\n saveApp(appData: AppData): Observable<any> {\n const saveUrl =\n this.configService.readConfig().baseUrlBusiness + '/appdata/SaveAppData';\n\n const payload = {\n ...appData,\n fillData: appData.fillData ? JSON.stringify(appData.fillData) : undefined,\n };\n\n return this.http.post<any>(saveUrl, payload);\n }\n\n saveStep(\n appDataId: string,\n currentStep: any,\n selectedOfferId: any = undefined\n ): Observable<any> {\n const saveUrl =\n this.configService.readConfig().baseUrlBusiness +\n '/appdata/SaveAppDataStep';\n\n const payload = {\n appDataId: appDataId,\n stepData: JSON.stringify(currentStep),\n withNextStep: true,\n selectedOfferId: selectedOfferId,\n };\n\n return this.http.post<any>(saveUrl, payload);\n }\n\n getPreviousStep(appDataId: string): Observable<any> {\n const getUrl =\n this.configService.readConfig().baseUrlBusiness +\n '/appdata/setPreviousStep?appId=' +\n appDataId;\n\n return this.http.get<any>(getUrl);\n }\n\n validateApi(apiValidateRequest: ApiValidateRequest): Observable<any> {\n const url =\n this.configService.readConfig().baseUrlBusiness + '/ApiRequest/dorequest';\n return this.http.post<any>(url, apiValidateRequest);\n }\n\n doDocumentRequest(apiValidateRequest: ApiDocumentRequest): Observable<any[]> {\n const url =\n this.configService.readConfig().baseUrlBusiness +\n '/ApiRequest/doDocumentRequest';\n return this.http.post<any>(url, apiValidateRequest);\n }\n\n convertDocumentToPdf(\n request: ConvertDocumentToPdfRequest\n ): Observable<ConvertDocumentToPdfResponse> {\n const url =\n this.configService.readConfig().baseUrlBusiness + '/appdata/convertToPdf';\n return this.http.post<ConvertDocumentToPdfResponse>(url, request);\n }\n\n makeActionApiCall(actionRequest: MakeActionRequest): Observable<any> {\n console.log('actionRequest from makeActionApiCall', actionRequest);\n const url =\n this.configService.readConfig().baseUrlBusiness + '/MakeAction/doaction';\n return this.http.post<any>(url, actionRequest);\n }\n\n makeProcessApiCall(appDataID: string): Observable<any> {\n const url =\n this.configService.readConfig().baseUrlInfrastructure + '/Process';\n return this.http.post<any>(url, { appId: appDataID }).pipe(\n map((response) => {\n console.log('response from makeProcessApiCall', response), response;\n }),\n\n catchError((error) => of({ ...error, body: false }))\n );\n }\n\n getProcessStatus(appDataID: string): Observable<number> {\n const url =\n this.configService.readConfig().baseUrlInfrastructure +\n '/Process/get-status?appId=' +\n appDataID;\n return this.http.get<number>(url);\n }\n\n getOffers(appDataId: string): Observable<any> {\n const url =\n this.configService.readConfig().baseUrlBusiness +\n `/appdata/getOffers/${appDataId}`;\n return this.http.get<any>(url);\n }\n\n makeStatusApiCall(\n appDataId: string,\n stepId: string,\n setNextStep: boolean = false\n ) {\n const url =\n this.configService.readConfig().baseUrlBusiness +\n '/appdata/doStatusAction';\n return this.http.post<any>(url, {\n appDataId: appDataId,\n stepId: stepId,\n setNextStep: setNextStep,\n });\n }\n\n async setCurrentStep(appDataId: string, stepId: string) {\n const url =\n this.configService.readConfig().baseUrlBusiness +\n `/appdata/setCurrentStep?appId=${appDataId}&stepId=${stepId}`;\n const response = await firstValueFrom(\n this.http.getExtended(url, { responseType: 'text' })\n );\n return response;\n }\n\n enrolCard(enrolCardCommand: ApplicationEnrolCardDto): Observable<any> {\n const url =\n this.configService.readConfig().baseUrlBusiness + '/appdata/EnrolCard';\n return this.http.post<string[]>(url, enrolCardCommand);\n }\n\n getEnrolmentStatus(dataUrlId: string): Observable<any> {\n const url =\n this.configService.readConfig().baseUrlBusiness +\n `/appdata/GetEnrolmentStatus/${dataUrlId}`;\n return this.http.get<any>(url);\n }\n\n getDataUrl(dataUrlId: string): Observable<any> {\n const url =\n this.configService.readConfig().baseUrlBusiness +\n `/DataURL/GetById/${dataUrlId}`;\n return this.http.get<any>(url);\n }\n\n changeLanguage(appDataUuid: string, languageISOCode: string) {\n const url =\n this.configService.readConfig().baseUrlBusiness +\n '/appdata/changeLanguage';\n\n const payload = {\n appDataId: appDataUuid,\n languageIso: languageISOCode,\n };\n\n return this.http.post<any>(url, payload);\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n MatDialog,\n MatDialogConfig,\n MatDialogRef,\n} from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { ComponentType } from '@angular/cdk/portal';\nimport { ErrorTranslations } from '../models/forms.model';\nimport { TranslatePipe } from '../others/translation.pipe';\nimport { Utils } from '../others/utils';\nimport { Observable } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class DialogService {\n constructor(\n private snackBar: MatSnackBar,\n private dialog: MatDialog,\n private translate: TranslatePipe\n ) { }\n\n popError(message: string, ...params: string[]) {\n this.popErrorsCore([message], params);\n }\n\n popErrors(labels: string[], duration: number = 2000) {\n this.popErrorsCore(labels, undefined, duration);\n }\n\n popErrorTranslation(errorsTranslations: ErrorTranslations[], langIso: string, errorCode: string, ...params: string[]) {\n const errorMessage = Utils.createErrorTranslationMssageWithParameters(errorsTranslations, langIso, errorCode, params);\n this.popError(errorMessage);\n }\n\n private popErrorsCore(\n labels: string[],\n params?: string[],\n duration: number = 2000,\n panelClass: string[] = ['error-snack-bar'],\n ) {\n let message = labels\n .map((i: string) => this.translate.transform(i))\n .join('\\r\\n');\n\n if (params) {\n for (let i = 0; i < params.length; i++) {\n message = message.replace('{' + i + '}', params[i]);\n }\n }\n\n if (message.length > 1000) {\n message = message.substring(0, 1000);\n }\n\n this.snackBar.open(message, '', {\n duration,\n panelClass,\n });\n }\n\n popSuccess(\n message: string,\n duration: number = 2000,\n panelClass: string[] = ['success-snack-bar'],\n ) {\n this.snackBar.open(message, '', {\n duration,\n panelClass,\n });\n }\n\n openDialog<T, D = any, R = any>(\n component: ComponentType<T>,\n config?: MatDialogConfig<D>,\n ): MatDialogRef<T, R> {\n return this.dialog.open(component, config);\n }\n}\n","import { ChangeDetectorRef, Component } from '@angular/core';\nimport { ApplicationDataService } from '../../services/applicationData.service';\nimport {\n ApiDocumentRequest,\n ApplicationGetGeneratedDocumentsDto,\n GeneratedDocument,\n} from '../../models/application.model';\nimport { DialogService } from '../../services/dialog.service';\nimport { saveAs } from 'file-saver';\nimport { Utils } from '../../others/utils';\nimport { BaseFormlyControlComponent } from '../baseFormlyControlComponent';\n\n@Component({\n selector: 'app-formly-download-documents',\n templateUrl: './formly-download-documents.component.html',\n styleUrl: './formly-download-documents.component.scss',\n})\nexport class FormlyDownloadDocumentsComponent extends BaseFormlyControlComponent {\n documents: GeneratedDocument[];\n isDownloading: boolean;\n docIndex: number;\n constructor(\n private appDataService: ApplicationDataService,\n private dialog: DialogService,\n cdr: ChangeDetectorRef\n ) {\n super(cdr);\n }\n\n override onInit() {\n if (this.isDisplayMode === true) {\n this.getDownloadableDocuments();\n }\n }\n\n getDownloadableDocuments() {\n const configDocs = this.controlData?.specificControlData?.documents;\n if (configDocs) {\n this.isLoading = true;\n let cmd: ApplicationGetGeneratedDocumentsDto = {\n appDataId: this.props['appDataId'],\n controlId: this.controlData.identifier,\n isDisplayMode: this.isDisplayMode,\n appConfigurationUUID: this.appId,\n environment: this.env,\n };\n\n this.appDataService.getGenerateDocuments(cmd).subscribe({\n next: (result) => {\n this.documents = this.orderDocumentsAsConfigured(result);\n this.isLoading = false;\n this.cdr.detectChanges();\n },\n error: (err) => {\n this.dialog.popErrorTranslation(\n this.controlData.errorsTranslations,\n this.langIso,\n 'failToDownload'\n );\n this.isLoading = false;\n this.cdr.detectChanges();\n },\n });\n }\n this.cdr.detectChanges();\n }\n\n orderDocumentsAsConfigured(\n documents: GeneratedDocument[]\n ): GeneratedDocument[] {\n let list: GeneratedDocument[] = [];\n if (documents) {\n const configuredDocuments =\n this.controlData?.specificControlData?.documents;\n if (configuredDocuments) {\n configuredDocuments.forEach((d: any) => {\n const found = documents.find((f) => f.documentId === d.id);\n if (found) {\n list.push(found);\n }\n });\n }\n }\n return list;\n }\n\n retry() {\n this.getDownloadableDocuments();\n }\n\n override onPageSelected() {\n this.getDownloadableDocuments();\n }\n\n async downloadDocument(doc: GeneratedDocument, index: number) {\n this.isDownloading = true;\n this.docIndex = index;\n if (doc.isApiDocument === true) {\n let apiRequest: ApiDocumentRequest = {\n appDataId: this.appDataId,\n documentId: doc.documentId,\n };\n this.appDataService.doDocumentRequest(apiRequest).subscribe({\n next: (docs) => {\n if (docs?.length > 0) {\n const match = docs.find((d) => d.documentId === doc.documentId);\n if (match) {\n const blob = Utils.base64toBlob(match.content);\n saveAs(blob, match.name);\n this.isDownloading = false;\n this.cdr.detectChanges();\n }\n } else {\n this.dialog.popErrorTranslation(\n this.controlData.errorsTranslations,\n this.langIso,\n 'noDocumentsToDownload'\n );\n this.isDownloading = false;\n this.cdr.detectChanges();\n }\n },\n error: (err) => {\n this.dialog.popErrorTranslation(\n this.controlData.errorsTranslations,\n this.langIso,\n 'failToDownload'\n );\n this.isDownloading = false;\n this.cdr.detectChanges();\n },\n });\n } else {\n this.appDataService\n .downloadFile(this.props['appDataId'], doc.documentId, doc.fileName)\n .subscribe({\n next: (data) => {\n saveAs(data, doc.fileName), (this.isDownloading = false);\n this.cdr.detectChanges();\n },\n error: (err) => {\n this.dialog.popErrorTranslation(\n this.controlData.errorsTranslations,\n this.langIso,\n 'failToDownload'\n );\n this.isDownloading = false;\n this.cdr.detectChanges();\n },\n });\n }\n }\n}\n","<p *ngIf=\"title\">\n {{ title }}\n</p>\n<p *ngIf=\"isLoading === false && (!documents || documents.length === 0)\">\n {{ getErrorTranslationMessage(\"noDocumentsToDownload\") }}\n</p>\n<mat-spinner *ngIf=\"isLoading === true\" class=\"m-x-auto\"></mat-spinner>\n<table *ngIf=\"isLoading === false && documents\">\n <thead class=\"table-head\">\n <tr>\n <th>\n {{ \"document\" | translate }}\n </th>\n <th>\n {{ \"common.actions.download\" | translate }}\n </th>\n </tr>\n </thead>\n <tbody class=\"table-detail\">\n <tr *ngFor=\"let doc of documents; let i = index\">\n <td class=\"text-center\">\n {{ doc.name }}\n </td>\n <td class=\"text-center d-flex justify-content-center align-items-center\">\n <button\n (click)=\"downloadDocument(doc, i)\"\n mat-stroked-button\n color=\"primary\"\n class=\"custom-field\"\n >\n <mat-icon>download</mat-icon>\n {{ \"common.actions.download\" | translate }}\n </button>\n <div class=\"m-x-1 upload-spinner\">\n <mat-spinner\n *ngIf=\"isDownloading && docIndex === i\"\n mode=\"indeterminate\"\n [diameter]=\"30\"\n ></mat-spinner>\n </div>\n </td>\n </tr>\n </tbody>\n</table>\n","import { DictionaryDto, DictionaryValue, TranslationDto, Translation } from \"./models/dictionary.model\";\nimport { StepControlType, DictionaryControlData } from \"./models/forms.model\";\nimport { Language } from \"./models/language.model\";\n\n\nexport class ModelPopulationHelper {\n static populateModelWithFillData(\n fillData: any,\n flux: any[],\n dictionaryMap: Map<string, DictionaryDto>,\n availableLanguages: Language[]\n ): Record<string, any> {\n if (!fillData?.flux || !flux) {\n return ModelPopulationHelper.applyDefaultsToModel(flux, dictionaryMap);\n }\n\n const model: Record<string, any> = {};\n\n const fillDataControlsMap = new Map<string, any>();\n for (const step of fillData.flux) {\n if (step.sections) {\n for (const section of step.sections) {\n if (section.controls) {\n for (const control of section.controls) {\n if (control.controlId) {\n fillDataControlsMap.set(control.controlId, control);\n }\n }\n }\n }\n }\n }\n\n for (const step of flux) {\n if (step.sections) {\n for (const section of step.sections) {\n if (section.controls) {\n for (const controlDefinition of section.controls) {\n const controlId = controlDefinition.identifier;\n if (!controlId) continue;\n\n let valueSetForControl = false;\n const filledControlData = fillDataControlsMap.get(controlId);\n\n if (filledControlData) {\n let valueFromFillData: any = undefined;\n let filledValueId: number | null = null;\n if (\n filledControlData.fillValueId !== null &&\n filledControlData.fillValueId !== undefined\n ) {\n const parsedId = parseInt(\n String(filledControlData.fillValueId),\n 10\n );\n filledValueId = !isNaN(parsedId) ? parsedId : null;\n }\n const filledValue = filledControlData.fillValue;\n\n if (controlDefinition.type === StepControlType.Dictionary) {\n const specificData =\n controlDefinition.specificControlData as DictionaryControlData;\n const isRadio = specificData.showAsRadioButtonsList === true;\n\n if (filledValueId !== null) {\n if (isRadio) {\n valueFromFillData = filledValueId;\n } else {\n const dictionary = dictionaryMap.get(\n specificData.dictionaryUUID\n );\n const valueDto = dictionary?.values?.find(\n (v) => v.id === filledValueId\n );\n if (valueDto) {\n valueFromFillData =\n ModelPopulationHelper.mapDictionaryValueDto(\n valueDto,\n availableLanguages\n );\n }\n }\n } else if (\n filledValue !== null &&\n filledValue !== undefined\n ) {\n if (isRadio) {\n valueFromFillData =\n typeof filledValue === 'number'\n ? filledValue\n : undefined;\n } else {\n if (typeof filledValue === 'object' && filledValue?.id) {\n valueFromFillData =\n ModelPopulationHelper.mapDictionaryValueDto(\n filledValue,\n availableLanguages\n );\n } else {\n const dictionary = dictionaryMap.get(\n specificData.dictionaryUUID\n );\n const valueDto = dictionary?.values?.find(\n (v) => v.id === filledValue || v.name === filledValue\n );\n if (valueDto)\n valueFromFillData =\n ModelPopulationHelper.mapDictionaryValueDto(\n valueDto,\n availableLanguages\n );\n }\n }\n }\n\n // Handle reference values\n if (\n valueFromFillData &&\n dictionaryMap.has(specificData.dictionaryUUID)\n ) {\n const mainDictionary = dictionaryMap.get(\n specificData.dictionaryUUID\n );\n if (mainDictionary?.id) {\n const selectedValue = mainDictionary.values?.find(\n (v) =>\n v.id === (valueFromFillData.id || valueFromFillData)\n );\n\n if (selectedValue) {\n const referenceDictionaries = Array.from(\n dictionaryMap.values()\n ).filter(\n (dict) => dict.referenceId === mainDictionary.id\n );\n\n for (const refDict of referenceDictionaries) {\n const refValue = refDict.values?.find((v) =>\n v.referenceValues.some(\n (rv) => rv.id === selectedValue.id\n )\n );\n\n if (refValue && refDict.uuid) {\n const refControlId = `${controlId}_reference_${refDict.uuid}`;\n model[refControlId] =\n ModelPopulationHelper.mapDictionaryValueDto(\n refValue,\n availableLanguages\n );\n }\n }\n }\n }\n }\n } else {\n if (filledValue !== null && filledValue !== undefined) {\n valueFromFillData = filledValue;\n }\n }\n if (valueFromFillData !== undefined) {\n model[controlId] = valueFromFillData;\n valueSetForControl = true;\n }\n }\n\n if (!valueSetForControl) {\n let defaultValueForModel: any = undefined;\n if (controlDefinition.type === StepControlType.Dictionary) {\n const specificData =\n controlDefinition.specificControlData as DictionaryControlData;\n const isRadio = specificData.showAsRadioButtonsList === true;\n const dictionaryDefaultValueId =\n specificData.dictionaryDefaultValueId;\n\n if (\n dictionaryDefaultValueId !== null &&\n dictionaryDefaultValueId !== undefined\n ) {\n if (isRadio) {\n defaultValueForModel = dictionaryDefaultValueId;\n } else {\n const dictionary = dictionaryMap.get(\n specificData.dictionaryUUID\n );\n defaultValueForModel =\n ModelPopulationHelper.findAndMapDefaultValue(\n dictionary,\n dictionaryDefaultValueId,\n availableLanguages\n );\n }\n\n // Handle reference values for default value\n if (\n defaultValueForModel &&\n dictionaryMap.has(specificData.dictionaryUUID)\n ) {\n const mainDictionary = dictionaryMap.get(\n specificData.dictionaryUUID\n );\n if (mainDictionary?.id) {\n const selectedValue = mainDictionary.values?.find(\n (v) =>\n v.id ===\n (defaultValueForModel.id || defaultValueForModel)\n );\n\n if (selectedValue) {\n const referenceDictionaries = Array.from(\n dictionaryMap.values()\n ).filter(\n (dict) => dict.referenceId === mainDictionary.id\n );\n\n for (const refDict of referenceDictionaries) {\n const refValue = refDict.values?.find((v) =>\n v.referenceValues.some(\n (rv) => rv.id === selectedValue.id\n )\n );\n\n if (refValue && refDict.uuid) {\n const refControlId = `${controlId}_reference_${refDict.uuid}`;\n model[refControlId] =\n ModelPopulationHelper.mapDictionaryValueDto(\n refValue,\n availableLanguages\n );\n }\n }\n }\n }\n }\n }\n } else if (\n controlDefinition.type === StepControlType.CheckBox\n ) {\n const specificData =\n controlDefinition.specificControlData as any;\n if (\n specificData?.hasOwnProperty('defaultValue') &&\n specificData.defaultValue !== null &&\n specificData.defaultValue !== undefined\n ) {\n defaultValueForModel = specificData.defaultValue;\n }\n }\n if (defaultValueForModel !== undefined) {\n model[controlId] = defaultValueForModel;\n }\n }\n }\n }\n }\n }\n }\n\n return model;\n }\n\n static applyDefaultsToModel(\n flux: any[],\n dictionaryMap: Map<string, DictionaryDto>,\n availableLanguages?: Language[]\n ): any {\n const model = {};\n if (!flux) return model;\n\n for (const step of flux) {\n if (step.sections) {\n for (const section of step.sections) {\n if (section.controls) {\n for (const controlDefinition of section.controls) {\n const controlId = controlDefinition.identifier;\n if (!controlId) continue;\n let defaultValueForModel: any = undefined;\n if (controlDefinition.type === StepControlType.Dictionary) {\n const specificData =\n controlDefinition.specificControlData as DictionaryControlData;\n const isRadio = specificData.showAsRadioButtonsList === true;\n const dictionaryDefaultValueId =\n specificData.dictionaryDefaultValueId;\n if (\n dictionaryDefaultValueId !== null &&\n dictionaryDefaultValueId !== undefined\n ) {\n if (isRadio) {\n defaultValueForModel = dictionaryDefaultValueId;\n } else {\n const dictionary = dictionaryMap.get(\n specificData.dictionaryUUID\n );\n defaultValueForModel =\n ModelPopulationHelper.findAndMapDefaultValue(\n dictionary,\n dictionaryDefaultValueId,\n availableLanguages ?? []\n );\n }\n }\n } else if (controlDefinition.type === StepControlType.CheckBox) {\n const specificData =\n controlDefinition.specificControlData as any;\n if (\n specificData?.hasOwnProperty('defaultValue') &&\n specificData.defaultValue !== null &&\n specificData.defaultValue !== undefined\n ) {\n defaultValueForModel = specificData.defaultValue;\n }\n }\n if (defaultValueForModel !== undefined) {\n (model as Record<string, any>)[controlId] =\n defaultValueForModel;\n }\n }\n }\n }\n }\n }\n return model;\n }\n\n static mapDictionaryValueDto(\n dto: any,\n availableLanguages: Language[]\n ): DictionaryValue | null {\n if (!dto || typeof dto.id === 'undefined') {\n return null;\n }\n const translationsDto = dto.valueTranslations || dto.translations || [];\n return {\n id: dto.id,\n name: dto.name ?? '',\n active: dto.active ?? false,\n locked: dto.locked ?? false,\n translations:\n translationsDto.map((t: TranslationDto): Translation => {\n const lang = availableLanguages?.find((l) => l.id === t.languageId);\n return {\n languageId: t.languageId,\n languageIso: lang?.iso ?? '',\n value: t.value,\n };\n }) || [],\n childDictionaryId: dto.childDictionaryId,\n childDictionaryUUID: dto.childDictionaryUUID,\n referenceValues: dto.referenceValues || [],\n };\n }\n\n static findAndMapDefaultValue(\n dictionary: DictionaryDto | undefined,\n defaultValueId: number,\n availableLanguages: Language[]\n ): DictionaryValue | null {\n if (!dictionary || !dictionary.values || defaultValueId == null) {\n return null;\n }\n const defaultValueDto = dictionary.values.find(\n (v) => v.id === defaultValueId\n );\n\n if (defaultValueDto) {\n const mappedValue: DictionaryValue = {\n id: defaultValueDto.id,\n name: defaultValueDto.name,\n active: defaultValueDto.active,\n locked: defaultValueDto.locked,\n translations:\n defaultValueDto.valueTranslations?.map(\n (t: TranslationDto): Translation => {\n const lang = availableLanguages?.find(\n (l) => l.id === t.languageId\n );\n return {\n languageId: t.languageId,\n languageIso: lang?.iso ?? '',\n value: t.value,\n };\n }\n ) || [],\n childDictionaryId: defaultValueDto.childDictionaryId,\n childDictionaryUUID: defaultValueDto.childDictionaryUUID,\n referenceValues: [],\n };\n return mappedValue;\n }\n return null;\n }\n}\n","import { CssRules } from \"./others/utils\";\n\nexport class FormCssHelper {\n\n public static convertToStyleString(cssRules: CssRules, isDisplayMode: boolean): string {\n let styleString = FormCssHelper.convertToCssText(cssRules);\n if (isDisplayMode) {\n const newRule = this.convertRuleToCssText(\n '.mat-horizontal-stepper-header-container',\n { display: 'none' },\n cssRules\n );\n styleString += newRule;\n }\n return styleString;\n }\n\n private static convertToCssText(cssRules: CssRules): string {\n const styleString = Object.entries(cssRules)\n .map(([k, v]) => this.convertRuleToCssText(k, v, cssRules))\n .join(' ');\n return styleString;\n }\n\n private static convertRuleToCssText(\n key: string,\n values: { [property: string]: string },\n cssRules: CssRules\n ) {\n const valuesAsText = Object.entries(values)\n .map(([k, v]) => `${k}:${v};`)\n .join(' ');\n let cssText = ` ${key} {${valuesAsText}} `;\n\n switch (key) {\n case '.component-text-field':\n cssText = this.getSpecificCssForInput(key, values, cssRules);\n break;\n case '.component-checkbox':\n cssText = this.getSpecificCssForCheckBox(key, values, cssRules);\n break;\n case '.font-heading-1':\n cssText = this.getSpecificCssForStepLabel(key, values, cssRules);\n break;\n case '.formly-radio':\n case '.component-radio':\n cssText = this.getSpecificCssForRadio(values, cssRules);\n break;\n case '.component-date':\n case '.component-data':\n cssText = this.getSpecificCssForData(key, values, cssRules);\n break;\n case '.table-details':\n cssText = this.getSpecificCssForTableDetail(values);\n break;\n case '.table-header':\n cssText = this.getSpecificCssForTableHeader(values);\n break;\n }\n return cssText;\n }\n\n public static getSpecificCssForInput(\n key: string,\n values: { [property: string]: string },\n cssRules: CssRules\n ) {\n let inputSpecificCss = '';\n let signInputSpecificCss = '';\n const fontStyleForInputText = cssRules['.font-input'];\n if (fontStyleForInputText) {\n //transfer property from component to input\n if (values['text-align']) {\n fontStyleForInputText['text-align'] = values['text-align'];\n }\n fontStyleForInputText['color'] += ' !important';\n inputSpecificCss = this.styleObjectToString(fontStyleForInputText);\n signInputSpecificCss = this.styleObjectToString(\n fontStyleForInputText,\n true\n );\n }\n\n let labelSpecificCss = '';\n let signLabelSpecificCss = '';\n const fontStyleForLabelText = cssRules['.component-text-field-label'];\n if (fontStyleForLabelText) {\n labelSpecificCss = this.styleObjectToString(fontStyleForLabelText);\n signLabelSpecificCss = this.styleObjectToString(\n fontStyleForLabelText,\n true\n );\n }\n\n var css = `\n .mat-mdc-text-field-wrapper.mdc-text-field {\n ${this.styleObjectToString(values)};\n border-style: solid;\n input {\n ${inputSpecificCss}\n }\n mat-label {\n ${labelSpecificCss}\n }\n .mdc-line-ripple--active::after {\n border-bottom-color: ${fontStyleForLabelText['color']}\n }\n }\n\n input.component-text-field {\n border-style: solid !important;\n ${this.styleObjectToString(values, true)};\n ${signInputSpecificCss}\n }\n\n .component-text-field-label label {\n ${signLabelSpecificCss}\n }\n `;\n\n return `${key} { ${css}}`;\n }\n\n public static getSpecificCssForTableHeader(\n values: { [property: string]: string }\n ): string {\n const backgroundColor = values['background-color'] || '#ffffff';\n const textColor = values['color'] || '#000000';\n const border = values['border-width'];\n const borderColor = values['border-color'] || '#000000';\n const borderCollapse = values['border-collapse'] || 'collapse';\n const borderSpacing = values['border-spacing'] || '0';\n const textAlign = values['text-align'] || 'left';\n const verticalAlign = values['vertical-align'] || 'middle';\n const fontFamily = values['font-family'] || 'Arial, sans-serif';\n const fontSize = values['font-size'] || '14px';\n const letterSpacing = values['letter-spacing'] || 'normal';\n const padding = values['padding'] || '8px';\n const width = values['width'] || 'auto';\n const height = values['height'] || 'auto';\n\n const css = `\n table \n {\n border-collapse: ${borderCollapse} !important;\n border-spacing: ${borderSpacing}; \n font-family: ${fontFamily};\n font-size: ${fontSize};\n }\n table th {\n height: ${height};\n }\n table td{height: ${height};\n }\n .table-head tr th{\n background-color: ${backgroundColor} !important;\n width: ${width} !important;\n border-collapse: ${borderCollapse};\n border-spacing: ${borderSpacing};\n border: ${border} solid ${borderColor}; \n vertical-align: ${verticalAlign};\n font-family: ${fontFamily};\n font-size: ${fontSize};\n }\n .table-head {\n color: ${textColor};\n border: ${border} solid ${borderColor}; \n text-align: ${textAlign}; \n letter-spacing: ${letterSpacing};\n padding: ${padding}; \n height: ${height};\n }\n\n `;\n return css;\n }\n\n public static getSpecificCssForTableDetail(\n values: { [property: string]: string }\n ): string {\n const backgroundColor = values['background-color'] || '#ffffff';\n const textColor = values['color'] || '#000000';\n const textAlign = values['text-align'] || 'left';\n const verticalAlign = values['verticalAlign'] || 'middle';\n const letterSpacing = values['letter-spacing'] || 'normal';\n const padding = values['padding'] || '8px';\n const rowBorder = values['rowborder'] || '1px';\n const rowBorderColor = values['rowborder-color'] || '#000000';\n const hoverBackgroundColor = values['hover-background-color'] || '#f0f0f0';\n\n const css = ` \n\n .table-detail{\n background-color: ${backgroundColor}\n }\n .table-detail .ng-star-inserted {\n border-top: ${rowBorder} solid ${rowBorderColor} !important;\n border-bottom: ${rowBorder} solid ${rowBorderColor} !important; \n color: ${textColor} !important;\n text-align: ${textAlign};\n vertical-align: ${verticalAlign};\n letter-spacing: ${letterSpacing}; \n }\n \n\n .table-detail .ng-star-inserted:hover {\n background-color: ${hoverBackgroundColor} !important;\n \n }\n\n .table-detail td {\n padding: ${padding} !important;\n }\n \n `;\n\n return css;\n }\n\n public static getSpecificCssForCheckBox(\n key: string,\n values: { [property: string]: string },\n cssRules: CssRules\n ): string {\n let labelSpecificCss = '';\n const fontStyleForLabelText = cssRules['.component-checkbox-label'];\n if (fontStyleForLabelText) {\n labelSpecificCss = this.styleObjectToString(fontStyleForLabelText);\n }\n\n var css = `\n .mat-mdc-text-field-wrapper.mdc-checkbox-field {\n margin-top: ${values['margin-top']};\n margin-right: ${values['margin-right']};\n margin-bottom: ${values['margin-bottom']};\n margin-left: ${values['margin-left']};\n .mdc-form-field > label {\n ${labelSpecificCss};\n padding-left: 0;\n padding-top: 2px;\n };\n .mdc-checkbox {\n width: calc(18px + (2 * ${values['border-width']}));\n height: calc(18px + (2 * ${values['border-width']}));\n flex: 0 0 calc(18px + (2 * ${values['border-width']}));\n }\n .mdc-checkbox .mdc-checkbox__native-control {\n width: 100%;\n height: 100%;\n }\n .mdc-checkbox__background {\n background-color: ${values['background-color']} !important;\n border: ${values['border-width']} solid ${values['border-color']} !important;\n border-radius: ${values['border-radius']};\n width: calc(19px + (2 * ${values['border-width']}));\n height: calc(19px + (2 * ${values['border-width']}));\n };\n }\n .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background {\n border: ${values['border-width']} solid ${values['border-color']} !important;\n }\n .mdc-checkbox__checkmark-path {\n color: ${values['color']} !important;\n }`;\n return `${key} { ${css} }`;\n }\n\n private static getSpecificCssForStepLabel(\n key: string,\n values: { [property: string]: string },\n cssRules: CssRules\n ) {\n const labelSpecificCss = this.styleObjectToString(values);\n\n // Map Heading 1 to step labels in stepper\n const heading1Style = cssRules['.font-heading-1'];\n const stepLabelCss = heading1Style\n ? this.styleObjectToString(heading1Style)\n : '';\n\n // Map Heading 2 to section titles\n const heading2Style = cssRules['.font-heading-2'];\n const sectionTitleCss = heading2Style\n ? this.styleObjectToString(heading2Style)\n : '';\n\n // Map Heading 3 to step descriptions\n const heading3Style = cssRules['.font-heading-3'];\n const stepDescriptionCss = heading3Style\n ? this.styleObjectToString(heading3Style)\n : '';\n\n return ` \n .mat-horizontal-stepper-wrapper {\n .mat-step-text-label {\n ${stepLabelCss}\n }\n }\n \n .mat-step-label {\n ${stepLabelCss}\n }\n \n .mat-step-label-selected {\n ${stepLabelCss}\n }\n \n .form-section-title h2,\n .separator h2 {\n ${sectionTitleCss}\n }\n \n .step-description,\n .mat-step-sub-label {\n ${stepDescriptionCss}\n }\n \n .mat-stepper-horizontal .mat-step-label,\n .mat-stepper-vertical .mat-step-label {\n ${stepLabelCss}\n }\n \n .component-text-field mat-label,\n .component-checkbox mat-label,\n .component-radio mat-label,\n .component-date mat-label {\n ${cssRules['.font-label']\n ? this.styleObjectToString(cssRules['.font-label'])\n : ''\n }\n }\n `;\n }\n\n public static getSpecificCssForRadio(\n values: { [property: string]: string },\n cssRules: CssRules\n ) {\n let labelSpecificCss = '';\n const fontStyleForLabelText = cssRules['.component-radio-label'];\n if (fontStyleForLabelText) {\n labelSpecificCss = this.styleObjectToString(fontStyleForLabelText);\n }\n\n var css = `\n .mat-mdc-text-field-wrapper.mdc-radiobox-field {\n margin-top: ${values['margin-top']};\n margin-right: ${values['margin-right']};\n margin-bottom: ${values['margin-bottom']};\n margin-left: ${values['margin-left']};\n label {\n ${labelSpecificCss};\n padding-left: 0;\n p {\n margin: 0 0 10px;\n }\n }\n .mat-mdc-radio-button {\n .mdc-radio__native-control {\n width: 100%;\n height: 100%;\n }\n .mdc-radio {\n width: calc(20px + (2 * ${values['border-width']}));\n height: calc(20px + (2 * ${values['border-width']}));\n .mdc-radio__background {\n background-color: ${values['background-color']} !important;\n border: ${values['border-width']} solid ${values['border-color']} !important;\n border-radius: 50%;\n width: calc(20px + (2 * ${values['border-width']}));\n height: calc(20px + (2 * ${values['border-width']}));\n .mdc-radio__outer-circle {\n border-color: ${values['background-color']} !important;\n }\n .mdc-radio__inner-circle {\n border-color: ${values['color']} !important;\n }\n }\n }\n }\n }\n `;\n\n return css;\n }\n\n public static getSpecificCssForData(\n key: string,\n values: { [property: string]: string },\n cssRules: CssRules\n ) {\n let inputSpecificCss = '';\n const fontStyleForInputText = cssRules['.font-list'];\n if (fontStyleForInputText) {\n //transfer property from component to input\n if (values['text-align']) {\n fontStyleForInputText['text-align'] = values['text-align'];\n }\n inputSpecificCss = this.styleObjectToString(fontStyleForInputText);\n }\n\n let labelSpecificCss = '';\n const fontStyleForLabelText = cssRules['.component-data-label'];\n if (fontStyleForLabelText) {\n labelSpecificCss = this.styleObjectToString(fontStyleForLabelText);\n }\n return ` ${key} { .mat-mdc-text-field-wrapper.mdc-text-field {\n ${this.styleObjectToString(values)};\n border-style:solid;\n input{\n ${inputSpecificCss}\n }\n .mat-mdc-form-field-infix {\n .mat-mdc-form-field-input-control::placeholder{\n ${labelSpecificCss}\n }\n }\n }\n } `;\n }\n\n public static styleObjectToString(\n values: { [property: string]: string },\n important: boolean = false\n ): string {\n values['width'] =\n 'calc(100%' +\n ('margin-left' in values ? ` - ${values['margin-left']}` : '') +\n ('margin-right' in values ? ` - ${values['margin-right']}` : '') +\n ')';\n\n return Object.entries(values)\n .map(\n ([key, value]) => `${key}: ${value}${important ? ' !important' : ''}`\n )\n .join('; ');\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { AuthHttpService } from './auth-http.service';\n\nexport interface TokenResponse {\n token: string;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProxyService {\n public orderID: string | undefined;\n public apiURL: string = 'https://apiro.id-kyc.com';\n public token!: string;\n public env: string = '';\n private tokenUrl: string = '';\n public debug: boolean = false;\n public langIso: string = '';\n\n constructor(private http: AuthHttpService, private route: ActivatedRoute) {\n this.token = '';\n this.debug = this.env == 'QA' || this.env == 'DEMO';\n this.tokenUrl =\n this.apiURL +\n (this.env == 'PROD'\n ? '/public/authorization/token'\n : '/dev_public/authorization/token');\n }\n\n getValuesForLog() {\n return {\n apiURL: this.apiURL,\n orderID: this.orderID,\n env: this.env,\n tokenUrl: this.tokenUrl,\n token: this.token,\n };\n }\n\n getToken() {\n return new Promise((resolve, reject) => {\n var tokenUrlFull = this.tokenUrl + 'new?flow=origin';\n if (this.debug) console.log('GetToken called at' + tokenUrlFull);\n this.http.get<TokenResponse>(tokenUrlFull).subscribe({\n next: (resp) => {\n this.token = resp.token;\n sessionStorage.setItem('token-kyc', this.token);\n if (this.debug)\n console.log(\n 'GetToken responded: ' + JSON.stringify(this.getValuesForLog())\n );\n resolve({ success: true, error: '' });\n },\n error: (error) => {\n console.log('GetToken responded: ' + JSON.stringify(error));\n resolve({ success: false, error: error });\n },\n complete: () => {\n console.log('GetToken complete');\n resolve({ success: true, error: '' });\n },\n });\n });\n }\n async getTokenAndSave(): Promise<string> {\n try {\n const tokenResp = (await this.getToken()) as any;\n if (tokenResp.success) {\n return this.token;\n } else {\n throw new Error('Token retrieval failed');\n }\n } catch (error) {\n console.error('Error retrieving token:', error);\n throw error;\n }\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Label } from '../models/label.model';\nimport { ConfigService } from '../others/config-service';\nimport { AuthHttpService } from './auth-http.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LabelService {\n constructor(private http: AuthHttpService) { }\n\n configService = inject(ConfigService);\n\n getLabels(\n langIso: string,\n updateUserLanguageIso: boolean = true\n ): Observable<Label[]> {\n let listUrl = this.configService.readConfig().baseUrlPublicInfrastructure + '/labels';\n if (langIso) {\n listUrl += `?&LanguageIso=${langIso}`;\n if (updateUserLanguageIso == false) {\n listUrl += '&ShouldUpdateUserLanguage=false';\n }\n }\n return this.http.get<Label[]>(listUrl);\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { List } from '../models/list.model';\nimport { Language } from '../models/language.model';\nimport { ConfigService } from '../others/config-service';\nimport { AuthHttpService } from './auth-http.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LanguageService {\n constructor(private http: AuthHttpService) {}\n\n configService = inject(ConfigService);\n\n getLanguages(): Observable<List<Language>> {\n const url =\n this.configService.readConfig().baseUrlInfrastructure +\n '/language?PageSize=999999';\n return this.http.get<List<Language>>(url);\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ApplicationDto } from '../models/application.model';\nimport { ConfigService } from '../others/config-service';\nimport { EnvironmentType } from '../others/environment-type';\nimport { AuthHttpService } from './auth-http.service';\n@Injectable({\n providedIn: 'root',\n})\nexport class FormsService {\n constructor(private http: AuthHttpService) {}\n\n configService = inject(ConfigService);\n\n loadForm(id: number, env?: string): Observable<ApplicationDto> {\n const url =\n this.configService.readConfig().baseUrlInfrastructure +\n `/Application/LoadById` +\n `?id=${id}`;\n return this.http.get<ApplicationDto>(url);\n }\n\n loadFormByUuid(uuid: string, env?: string): Observable<ApplicationDto> {\n if (!env) {\n env = EnvironmentType.Config;\n }\n const url =\n this.configService.readConfig().baseUrlInfrastructure +\n `/Application/LoadByUuidAndEnv` +\n `?uuid=${uuid}&env=${env}`;\n return this.http.get<ApplicationDto>(url);\n }\n\n publish(\n applicationUuid: string,\n envTo: EnvironmentType\n ): Observable<ApplicationDto> {\n const url =\n this.configService.readConfig().baseUrlInfrastructure +\n `/Application/Publish` +\n `?uuid=${applicationUuid}&envFrom=${EnvironmentType.Config}&envTo=${envTo}`;\n return this.http.get<ApplicationDto>(url);\n }\n\n getVersion(\n applicationUuid: string,\n env?: EnvironmentType\n ): Observable<ApplicationDto> {\n const url =\n this.configService.readConfig().baseUrlInfrastructure +\n `/application/LoadByUuidAndEnv` +\n `?uuid=${applicationUuid}&env=${env}`;\n return this.http.get<ApplicationDto>(url);\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport * as signalR from '@microsoft/signalr';\nimport { Subject } from 'rxjs';\nimport { ConfigService } from '../others/config-service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class OriginFormSignalrService {\n private connection: signalR.HubConnection | null = null;\n private connectionPromise: Promise<void> | null = null;\n private hubUrl: string;\n\n // Generic subjects for different events\n private eventSubjects: Map<string, Subject<any>> = new Map();\n\n // Specific event for KYC completion as an example\n public kycProcessingComplete: Subject<any> = new Subject<any>();\n\n private configService = inject(ConfigService);\n\n constructor() {\n this.hubUrl =\n this.configService.readConfig().baseUrlBusiness + '/collectorhub';\n this.registerSpecificEvents();\n }\n\n private registerSpecificEvents() {\n this.eventSubjects.set('KycProcessingComplete', this.kycProcessingComplete);\n }\n\n public async initiateSignalrConnection(): Promise<void> {\n if (\n this.connection &&\n this.connection.state === signalR.HubConnectionState.Connected\n ) {\n console.log('SignalR connection already established.');\n return Promise.resolve();\n }\n\n if (this.connectionPromise) {\n return this.connectionPromise;\n }\n\n this.connection = new signalR.HubConnectionBuilder()\n .withUrl(this.hubUrl, {\n skipNegotiation: true,\n transport: signalR.HttpTransportType.WebSockets,\n })\n .withAutomaticReconnect()\n .withHubProtocol(new signalR.JsonHubProtocol())\n .build();\n\n this.setSignalrClientMethods();\n\n this.connectionPromise = this.connection\n .start()\n .then(() => {\n if (this.connection) {\n console.log(\n `Collector SignalR connection success! connectionId: ${this.connection.connectionId}`\n );\n }\n this.connectionPromise = null;\n })\n .catch((error: any) => {\n console.error(`Collector SignalR connection error: ${error}`);\n this.connectionPromise = null;\n throw error;\n });\n\n return this.connectionPromise;\n }\n\n private setSignalrClientMethods(): void {\n if (!this.connection) return;\n\n // Generic handler: Iterate over pre-registered event subjects\n this.eventSubjects.forEach((subject, eventName) => {\n this.connection?.on(eventName, (data: any) => {\n subject.next(data);\n });\n });\n\n // Example for a specific event if not using the generic map for some reason\n // this.connection.on('KycProcessingComplete', (data: any) => {\n // this.kycProcessingComplete.next(data);\n // });\n }\n\n /**\n * Allows dynamic registration of an event listener if the event name isn't known at design time\n * or if a component wants to manage its own subject.\n * @param eventName The name of the event from the server.\n * @returns An RxJS Subject that will emit data when the event is received.\n */\n public listenForEvent<T>(eventName: string): Subject<T> {\n if (!this.eventSubjects.has(eventName)) {\n const newSubject = new Subject<T>();\n this.eventSubjects.set(eventName, newSubject);\n // If connection is already live, register the handler immediately\n if (\n this.connection &&\n this.connection.state === signalR.HubConnectionState.Connected\n ) {\n this.connection.on(eventName, (data: T) => {\n newSubject.next(data);\n });\n }\n }\n return this.eventSubjects.get(eventName) as Subject<T>;\n }\n\n public async stopConnection(): Promise<void> {\n if (\n this.connection &&\n this.connection.state === signalR.HubConnectionState.Connected\n ) {\n await this.connection.stop();\n console.log('Collector SignalR connection stopped.');\n }\n }\n}\n","import { Injectable, OnDestroy, inject } from '@angular/core';\nimport {\n Observable,\n Subject,\n Subscription,\n BehaviorSubject,\n firstValueFrom,\n interval,\n startWith,\n takeWhile,\n} from 'rxjs';\nimport { OriginFormSignalrService } from './origin-form-signalr.service';\nimport { ApplicationDataService } from './applicationData.service';\n\nexport interface OperationResult {\n operationIdentifier: string;\n success: boolean;\n data?: any;\n error?: any;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class OriginFormSignalrHandlerService implements OnDestroy {\n private subscriptions: Subscription = new Subscription();\n private applicationDataService = inject(ApplicationDataService);\n private currentAppDataUuid: string | null = null;\n\n private _isLoading = new BehaviorSubject<boolean>(false);\n public readonly isLoading$: Observable<boolean> = this._isLoading.asObservable();\n\n private _operationCompleted = new Subject<OperationResult>();\n public readonly operationCompleted$: Observable<OperationResult> =\n this._operationCompleted.asObservable();\n\n constructor(private originFormSignalrService: OriginFormSignalrService) {\n this.originFormSignalrService\n .initiateSignalrConnection()\n .then(() => this.subscribeToCoreEvents())\n .catch((error) =>\n console.error(\n 'CollectorFormSignalrHandlerService: Error initiating base SignalR connection',\n error\n )\n );\n }\n\n private subscribeToCoreEvents(): void {\n const kycSub =\n this.originFormSignalrService.kycProcessingComplete.subscribe(\n (appDataId: string) => {\n if (appDataId === this.currentAppDataUuid) {\n this.setKycOperationCompleted();\n } else {\n console.warn(\n `Received KycProcessingComplete event for unexpected appDataId: ${appDataId}. Expected: ${this.currentAppDataUuid}`\n );\n }\n }\n );\n this.subscriptions.add(kycSub);\n }\n\n private async setKycOperationCompleted() {\n if (this.currentAppDataUuid) {\n let appData = null;\n\n try {\n appData = await this.applicationDataService.getSteps(this.currentAppDataUuid);\n } catch (error) {\n console.error('Error fetching steps after KYC completion:', error);\n }\n\n this._isLoading.next(false);\n\n this._operationCompleted.next({\n operationIdentifier: 'KYC_PROCESSING',\n success: true,\n data: appData,\n });\n this.currentAppDataUuid = null;\n }\n if (this.poolingInterval) {\n this.poolingInterval.unsubscribe();\n }\n }\n\n private poolingInterval: Subscription;\n\n private async startBackupPooling() {\n let isBusy = false;\n this.poolingInterval = interval(5000)\n .subscribe(() => {\n if (this.currentAppDataUuid && !isBusy) {\n isBusy = true;\n this.applicationDataService.getProcessStatus(this.currentAppDataUuid).subscribe(status => {\n isBusy = false;\n if (status === 2) {\n this.setKycOperationCompleted();\n }\n });\n }\n });\n }\n\n public async initiateKycProcessing(appDataUuid: string): Promise<void> {\n if (this._isLoading.value) {\n console.warn('Another operation is already in progress.');\n return;\n }\n this._isLoading.next(true);\n this.currentAppDataUuid = appDataUuid;\n try {\n await firstValueFrom(\n this.applicationDataService.makeProcessApiCall(appDataUuid)\n );\n this.startBackupPooling();//fire and forget\n } catch (error) {\n console.error(\n 'Error initiating KYC processing (API call failed):',\n error\n );\n this._isLoading.next(false);\n this._operationCompleted.next({\n operationIdentifier: 'KYC_PROCESSING',\n success: false,\n error,\n });\n this.currentAppDataUuid = null;\n }\n }\n\n ngOnDestroy(): void {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n if (this.poolingInterval) {\n this.poolingInterval.unsubscribe();\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject, firstValueFrom } from 'rxjs';\nimport { MakeActionRequest } from './models/application.model';\nimport { FluxType } from './models/forms.model';\nimport { ApplicationDataService } from './services/applicationData.service';\nimport { DialogService } from './services/dialog.service';\nimport { StepData } from './models/flux.model';\n\nexport interface ActionStepResult {\n success: boolean;\n data?: any;\n error?: any;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ActionStepHandler {\n private isExecuting = false;\n private executionCompleted = new Subject<ActionStepResult>();\n\n public actionExecuting$ = new Subject<boolean>();\n public actionCompleted$ = this.executionCompleted.asObservable();\n\n constructor(private applicationDataService: ApplicationDataService, private dialog: DialogService) { }\n\n /**\n * Checks if a step is an action step that should be handled automatically\n */\n isActionStep(step: StepData): boolean {\n return step.type === FluxType.Status || step.type === FluxType.Action;\n }\n\n /**\n * Filters out action steps from the visible steps array\n */\n filterVisibleSteps(steps: StepData[], stepIds: string[] = []): StepData[] {\n var visibleSteps = steps.filter((step) => !this.isActionStep(step));\n if (stepIds?.length > 0) {\n visibleSteps = visibleSteps.filter((s) => stepIds.includes(s.identifier));\n }\n return visibleSteps;\n }\n\n /**\n * Gets action steps that should be executed when moving to the next step\n */\n getActionStepsAtIndex(\n allSteps: StepData[],\n currentVisibleStepIndex: number\n ): StepData[] {\n const visibleSteps = this.filterVisibleSteps(allSteps);\n const actionSteps: StepData[] = [];\n\n // Find the current visible step in the original flux\n if (currentVisibleStepIndex < visibleSteps.length) {\n const currentVisibleStep = visibleSteps[currentVisibleStepIndex];\n const currentVisibleStepIndexInFlux = allSteps.findIndex(\n (step) => step.identifier === currentVisibleStep.identifier\n );\n\n // Check for action steps immediately after current step in the original flux\n for (\n let i = currentVisibleStepIndexInFlux + 1;\n i < allSteps.length;\n i++\n ) {\n const step = allSteps[i];\n if (this.isActionStep(step)) {\n actionSteps.push(step);\n } else {\n // Stop at first non-action step (next visible step)\n break;\n }\n }\n }\n\n return actionSteps;\n }\n\n /**\n * Executes action steps automatically\n */\n async executeActionSteps(\n actionSteps: StepData[],\n appDataUuid: string,\n onStepStart?: (step: any) => void\n ): Promise<ActionStepResult> {\n if (this.isExecuting || actionSteps.length === 0) {\n return { success: true };\n }\n\n this.isExecuting = true;\n this.actionExecuting$.next(true);\n\n try {\n for (let i = 0; i < actionSteps.length; i++) {\n const step = actionSteps[i];\n const isLastStep = i === actionSteps.length - 1;\n const shouldSetNextStep = !isLastStep;\n if (onStepStart) {\n onStepStart(step);\n }\n\n console.log(\n `🎬 Executing action step ${i + 1}/${actionSteps.length}: ${step.identifier\n }, setNextStep: ${shouldSetNextStep}`\n );\n\n const result = await this.executeActionStep(\n step,\n appDataUuid,\n shouldSetNextStep\n );\n\n if (!result.success) {\n console.error(`❌ Action step ${step.identifier} failed:`, result.error);\n let errorContent = 'unknown';\n if (result.error) {\n errorContent = result.error;\n }\n else if (result.data.errorMessage) {\n errorContent = result.data.errorMessage;\n }\n this.dialog.popError('flux.components.action.failedToExecuteWithParams', errorContent);\n this.isExecuting = false;\n this.actionExecuting$.next(false);\n this.executionCompleted.next(result);\n return result;\n }\n\n console.log(`✅ Action step ${step.identifier} completed successfully`);\n\n // Add a small delay between action steps to prevent change detection conflicts\n if (!isLastStep) {\n await new Promise((resolve) => setTimeout(resolve, 10));\n }\n }\n\n const successResult: ActionStepResult = { success: true };\n\n // Use setTimeout to ensure the completion notification happens outside the current change detection cycle\n setTimeout(() => {\n this.isExecuting = false;\n this.actionExecuting$.next(false);\n this.executionCompleted.next(successResult);\n }, 0);\n\n return successResult;\n } catch (error) {\n const errorResult: ActionStepResult = { success: false, error };\n\n // Use setTimeout to ensure the error notification happens outside the current change detection cycle\n setTimeout(() => {\n this.isExecuting = false;\n this.actionExecuting$.next(false);\n this.executionCompleted.next(errorResult);\n }, 0);\n\n return errorResult;\n }\n }\n\n /**\n * Executes a single action step\n */\n private async executeActionStep(\n step: StepData,\n appDataUuid: string,\n setNextStep: boolean = false\n ): Promise<ActionStepResult> {\n try {\n let result: any;\n if (step.type === FluxType.Action) {\n const actionRequest: MakeActionRequest = {\n appDataId: appDataUuid,\n stepId: step.identifier,\n setNextStep: setNextStep,\n };\n\n result = await firstValueFrom(\n this.applicationDataService.makeActionApiCall(actionRequest)\n );\n return { success: result.success, data: result };\n } else if (step.type === FluxType.Status) {\n result = await firstValueFrom(\n this.applicationDataService.makeStatusApiCall(\n appDataUuid,\n step.identifier,\n setNextStep,\n )\n );\n }\n return { success: true, data: result };\n } catch (error) {\n console.error(`Error executing action step ${step.identifier}:`, error);\n return { success: false, error };\n }\n }\n\n /**\n * Checks if currently executing actions\n */\n get isExecutingActions(): boolean {\n return this.isExecuting;\n }\n\n /**\n * Clean up resources\n */\n destroy(): void {\n this.executionCompleted.complete();\n this.actionExecuting$.complete();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AbstractControl, FormGroup } from '@angular/forms';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ScrollToErrorService {\n\n /**\n * Scroll to the first validation error in a form\n */\n scrollToFirstError(form: FormGroup): void {\n try {\n // Find the first invalid control\n const firstInvalidControl = this.findFirstInvalidControl(form);\n if (firstInvalidControl) {\n this.scrollToField(firstInvalidControl.name);\n }\n } catch (error) {\n console.error('Error scrolling to first error:', error);\n }\n }\n\n /**\n * Scroll to a specific field by name\n */\n scrollToField(fieldName: string): void {\n // Add a small delay to ensure DOM is ready\n setTimeout(() => {\n const element = this.findFormFieldElement(fieldName);\n if (element) {\n this.scrollToElement(element);\n } else {\n this.tryFindMatchingInvalidField(fieldName);\n }\n }, 100);\n }\n\n /**\n * Find first invalid control in form\n */\n private findFirstInvalidControl(formGroup: FormGroup, parentName = ''): { name: string; control: AbstractControl } | null {\n for (const controlName in formGroup.controls) {\n const control = formGroup.controls[controlName];\n const fullControlName = parentName ? `${parentName}.${controlName}` : controlName;\n\n if (control instanceof FormGroup) {\n const nestedInvalid = this.findFirstInvalidControl(control, fullControlName);\n if (nestedInvalid) {\n return nestedInvalid;\n }\n } else {\n // Check if this control is invalid\n if (control.invalid && (control.dirty || control.touched)) {\n return { name: fullControlName, control };\n }\n }\n }\n return null;\n }\n\n /**\n * Find form field element by various selectors\n */\n private findFormFieldElement(fieldName: string): HTMLElement | null {\n if (!fieldName) return null;\n \n // Clean the field name for better matching\n const cleanFieldName = fieldName.replace(/[.\\[\\]]/g, '');\n \n // Try various selectors to find the form field\n const selectors = [\n // Formly specific selectors\n `formly-field[ng-reflect-field*=\"${fieldName}\"]`,\n `formly-field[ng-reflect-field*=\"${cleanFieldName}\"]`,\n `[data-cy=\"${fieldName}\"]`,\n `[data-cy=\"${cleanFieldName}\"]`,\n \n // Form control selectors\n `input[formcontrolname=\"${fieldName}\"]`,\n `select[formcontrolname=\"${fieldName}\"]`,\n `textarea[formcontrolname=\"${fieldName}\"]`,\n `input[formcontrolname=\"${cleanFieldName}\"]`,\n `select[formcontrolname=\"${cleanFieldName}\"]`,\n `textarea[formcontrolname=\"${cleanFieldName}\"]`,\n \n // Name and ID selectors\n `input[name=\"${fieldName}\"]`,\n `select[name=\"${fieldName}\"]`,\n `textarea[name=\"${fieldName}\"]`,\n `#${fieldName}`,\n `#${cleanFieldName}`,\n \n // Class selectors\n `.field-${fieldName}`,\n `.field-${cleanFieldName}`,\n \n // Angular Material specific\n `mat-form-field:has(input[formcontrolname=\"${fieldName}\"])`,\n `mat-form-field:has(select[formcontrolname=\"${fieldName}\"])`,\n `mat-form-field:has(textarea[formcontrolname=\"${fieldName}\"])`,\n \n // Generic error class selectors\n `.ng-invalid[formcontrolname=\"${fieldName}\"]`,\n `.ng-invalid[name=\"${fieldName}\"]`,\n \n // Broader searches\n `[ng-reflect-name=\"${fieldName}\"]`,\n `[ng-reflect-key=\"${fieldName}\"]`\n ];\n \n for (const selector of selectors) {\n try {\n const element = document.querySelector(selector) as HTMLElement;\n if (element && this.isElementVisible(element)) {\n return element;\n }\n } catch (error) {\n // Some selectors might be invalid, continue trying others\n continue;\n }\n }\n \n // Fallback: search through all elements\n return this.fallbackElementSearch(fieldName, cleanFieldName);\n }\n\n /**\n * Fallback search through all elements\n */\n private fallbackElementSearch(fieldName: string, cleanFieldName: string): HTMLElement | null {\n const allElements = document.querySelectorAll('input, select, textarea, formly-field, mat-form-field');\n \n for (const element of Array.from(allElements)) {\n const htmlElement = element as HTMLElement;\n \n // Check various attributes\n const attributes = [\n 'formcontrolname',\n 'name',\n 'id',\n 'ng-reflect-name',\n 'ng-reflect-key',\n 'data-cy'\n ];\n \n for (const attr of attributes) {\n const attrValue = htmlElement.getAttribute(attr);\n if (attrValue === fieldName || attrValue === cleanFieldName) {\n if (this.isElementVisible(htmlElement)) {\n return htmlElement;\n }\n }\n }\n \n // Check class names\n if (htmlElement.classList.contains(`field-${fieldName}`) || \n htmlElement.classList.contains(`field-${cleanFieldName}`)) {\n if (this.isElementVisible(htmlElement)) {\n return htmlElement;\n }\n }\n }\n \n return null;\n }\n\n /**\n * Check if element is visible\n */\n private isElementVisible(element: HTMLElement): boolean {\n const rect = element.getBoundingClientRect();\n const style = window.getComputedStyle(element);\n \n return rect.width > 0 && \n rect.height > 0 && \n style.visibility !== 'hidden' && \n style.display !== 'none' &&\n style.opacity !== '0';\n }\n\n /**\n * Try to find a matching invalid field when direct search fails\n */\n private tryFindMatchingInvalidField(fieldName: string): void {\n \n const cleanFieldName = fieldName.replace(/[.\\[\\]]/g, '');\n \n // Get all invalid elements\n const invalidElements = document.querySelectorAll('.ng-invalid');\n \n // Try to find one that matches our field name\n for (const element of Array.from(invalidElements)) {\n const htmlElement = element as HTMLElement;\n \n // Check if this invalid element matches our field\n const attributes = ['formcontrolname', 'name', 'id', 'ng-reflect-name', 'ng-reflect-key'];\n for (const attr of attributes) {\n const attrValue = htmlElement.getAttribute(attr);\n if (attrValue === fieldName || attrValue === cleanFieldName) {\n if (this.isElementVisible(htmlElement)) {\n this.scrollToElement(htmlElement);\n return;\n }\n }\n }\n \n // Check for partial matches in IDs (formly generates IDs with field names)\n const id = htmlElement.getAttribute('id');\n if (id && (id.includes(fieldName) || id.includes(cleanFieldName))) {\n if (this.isElementVisible(htmlElement)) {\n this.scrollToElement(htmlElement);\n return;\n }\n }\n }\n \n // If no matching invalid element found, try formly field containers\n this.tryFindFormlyFieldContainer(fieldName, cleanFieldName);\n }\n\n /**\n * Try to find formly field container and look for invalid elements within it\n */\n private tryFindFormlyFieldContainer(fieldName: string, cleanFieldName: string): void { \n const formlyFields = document.querySelectorAll('formly-field');\n \n for (const formlyField of Array.from(formlyFields)) {\n const fieldElement = formlyField as HTMLElement;\n \n // Check if this formly field's ng-reflect-field contains our field name\n const ngReflectField = fieldElement.getAttribute('ng-reflect-field');\n if (ngReflectField && \n (ngReflectField.includes(`\"key\":\"${fieldName}\"`) || \n ngReflectField.includes(`\"key\":\"${cleanFieldName}\"`))) {\n \n \n // Look for invalid elements within this container\n const invalidInContainer = fieldElement.querySelector('.ng-invalid');\n if (invalidInContainer && this.isElementVisible(invalidInContainer as HTMLElement)) {\n this.scrollToElement(invalidInContainer as HTMLElement);\n return;\n }\n \n // If no invalid element, scroll to the container itself\n if (this.isElementVisible(fieldElement)) {\n this.scrollToElement(fieldElement);\n return;\n }\n }\n }\n \n // Last resort: scroll to first visible invalid element\n const invalidElements = document.querySelectorAll('.ng-invalid');\n for (const element of Array.from(invalidElements)) {\n const htmlElement = element as HTMLElement;\n if (this.isElementVisible(htmlElement)) {\n this.scrollToElement(htmlElement);\n return;\n }\n }\n \n console.warn(`❌ Could not find any suitable element to scroll to for field: ${fieldName}`);\n }\n\n /**\n * Scroll to element with smooth animation\n */\n private scrollToElement(element: HTMLElement): void {\n try {\n // Find the closest form field container\n const formFieldContainer = element.closest('mat-form-field, formly-field, .form-field, .mat-mdc-form-field, .form-group') as HTMLElement;\n const targetElement = formFieldContainer || element;\n \n // Calculate offset to show element with some margin from top\n const offset = 100; // pixels from top (increased for better visibility)\n const elementPosition = targetElement.getBoundingClientRect().top + window.pageYOffset;\n const offsetPosition = Math.max(0, elementPosition - offset);\n \n // Use multiple scroll methods for better compatibility\n this.performScroll(offsetPosition, element); // Pass the original element for focusing\n \n } catch (error) {\n console.error('Error scrolling to element:', error);\n }\n }\n\n /**\n * Perform the actual scroll with multiple methods\n */\n private performScroll(targetPosition: number, elementToFocus: HTMLElement): void {\n // Method 1: Modern smooth scroll\n try {\n window.scrollTo({\n top: targetPosition,\n behavior: 'smooth'\n });\n } catch (error) {\n // Fallback for older browsers\n window.scrollTo(0, targetPosition);\n }\n \n // Method 2: ScrollIntoView as backup\n setTimeout(() => {\n try {\n elementToFocus.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n inline: 'nearest'\n });\n } catch (error) {\n // Fallback for older browsers\n elementToFocus.scrollIntoView();\n }\n }, 100);\n \n // Method 3: Focus with delay to ensure scroll completion\n setTimeout(() => {\n this.focusElement(elementToFocus);\n }, 600); // Wait for scroll animation to complete\n }\n\n /**\n * Focus on the target element\n */\n private focusElement(targetElement: HTMLElement): void {\n try {\n \n // If the target element is directly focusable and invalid, focus it\n if (targetElement.classList.contains('ng-invalid') && \n (targetElement instanceof HTMLInputElement || \n targetElement instanceof HTMLSelectElement || \n targetElement instanceof HTMLTextAreaElement)) {\n targetElement.focus();\n \n // For input elements, also select the text\n if (targetElement instanceof HTMLInputElement && targetElement.type === 'text') {\n targetElement.select();\n }\n return;\n }\n \n // Look for invalid focusable elements within the target\n const invalidFocusableSelectors = [\n 'input.ng-invalid:not([disabled]):not([readonly])',\n 'select.ng-invalid:not([disabled])',\n 'textarea.ng-invalid:not([disabled]):not([readonly])',\n 'mat-radio-group.ng-invalid',\n 'mat-checkbox.ng-invalid'\n ];\n \n for (const selector of invalidFocusableSelectors) {\n const focusableElement = targetElement.querySelector(selector) as HTMLElement;\n if (focusableElement && this.isElementVisible(focusableElement)) {\n focusableElement.focus();\n \n // For input elements, also select the text\n if (focusableElement instanceof HTMLInputElement && focusableElement.type === 'text') {\n focusableElement.select();\n }\n return;\n }\n }\n \n // If no invalid elements found, look for any focusable elements\n const focusableSelectors = [\n 'input:not([disabled]):not([readonly])',\n 'select:not([disabled])',\n 'textarea:not([disabled]):not([readonly])',\n 'button:not([disabled])',\n 'mat-radio-group',\n 'mat-checkbox',\n '[tabindex=\"0\"]'\n ];\n \n for (const selector of focusableSelectors) {\n const focusableElement = targetElement.querySelector(selector) as HTMLElement;\n if (focusableElement && this.isElementVisible(focusableElement)) {\n focusableElement.focus();\n \n // For input elements, also select the text\n if (focusableElement instanceof HTMLInputElement && focusableElement.type === 'text') {\n focusableElement.select();\n }\n return;\n }\n }\n \n // If no focusable element found, try to focus the target itself\n if (targetElement.tabIndex >= 0) {\n targetElement.focus();\n }\n } catch (error) {\n console.error('Error focusing element:', error);\n }\n }\n\n /**\n * Debug log all form elements for troubleshooting\n */\n debugLogFormElements(): void {\n console.group('🐛 Form Elements Debug');\n \n const formElements = document.querySelectorAll('input, select, textarea, formly-field');\n \n formElements.forEach((element, index) => {\n const htmlElement = element as HTMLElement;\n });\n \n const invalidElements = document.querySelectorAll('.ng-invalid');\n \n console.groupEnd();\n }\n} ","import {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n QueryList,\n Renderer2,\n SimpleChanges,\n ViewChildren,\n} from '@angular/core';\nimport { AbstractControl, FormControl, FormGroup } from '@angular/forms';\nimport {\n FormlyField,\n FormlyFieldConfig,\n FormlyFormOptions,\n} from '@ngx-formly/core';\nimport {\n Subject,\n firstValueFrom,\n startWith,\n pairwise,\n debounceTime,\n switchMap,\n catchError,\n of,\n takeUntil,\n Observable,\n map,\n Subscription,\n} from 'rxjs';\nimport { LabelKeys } from './enums/label.keys';\nimport { ApiValidateRequest } from './models/application.model';\nimport {\n DictionaryDto,\n DictionaryValue,\n DictionaryValueDto,\n} from './models/dictionary.model';\nimport {\n FormModel,\n DisplayModel,\n GeneralDataModel,\n StepsSettings,\n FluxType,\n DimensionType,\n StepControlType,\n ManualInputControlType,\n PresentationParagraphControl,\n DictionaryControlData,\n} from './models/forms.model';\nimport { LabelInfo, TranslationInfo } from './models/label-info.model';\nimport { Label } from './models/label.model';\nimport { Language } from './models/language.model';\nimport { DictionaryLabelInfo } from './others/dictionary-label-info';\nimport { EnvironmentType } from './others/environment-type';\nimport { CssRules, Utils } from './others/utils';\nimport { ApplicationDataService } from './services/applicationData.service';\nimport { LabelService } from './services/labels.service';\nimport { ProxyService } from './services/proxy.service';\nimport { DictionaryService } from './services/dictionary.service';\nimport { LanguageService } from './services/language.service';\nimport { OriginFormAuthService } from './origin-form-auth.service';\nimport { FormsService } from './services/forms.service';\nimport { InputConfig } from './origin-form-config.model';\nimport { ConfigService } from './others/config-service';\nimport { ModelPopulationHelper } from './model-population.helper';\nimport { TranslationService } from './services/translation.service';\nimport {\n OperationResult,\n OriginFormSignalrHandlerService,\n} from './services/origin-form-signalr-handler.service';\nimport { ActionStepHandler } from './action-step-handler';\nimport { ScrollToErrorService } from './services/scroll-to-error.service';\nimport { FormCssHelper } from './form-css.helper';\nimport { BaseControl, ControlData, DependentDictionaryData, PresentationControl, PresentationControlType, SectionData, StepData } from './models/flux.model';\n\n@Component({\n selector: 'app-origin-form',\n templateUrl: './origin-form.component.html',\n styleUrls: ['./origin-form.component.scss'],\n})\nexport class CollectorFormComponent implements OnChanges, OnDestroy {\n @ViewChildren(FormlyField) formlyFields: QueryList<FormlyField>;\n \n //these are specific to the lib\n @Input() configComponent: InputConfig | undefined;\n @Input() configUuid!: string;\n @Input() currentStepId: string;\n //end specific to lib\n\n @Input() appModel: FormModel;\n @Input() signBaseUrl: string;\n @Input() currentLanguageIso: string;\n @Input() fillData: any;\n @Input() env: string;\n @Input() showDisplayMode: boolean = false;\n @Input() showLanguageSelector: boolean = true;\n @Input() isDemoMode: boolean = false;\n @Input() isDebug: boolean = false;\n @Input() appDataUuid: string;\n @Input() blockPreviousStep: boolean;\n @Input() dataUrlId: string;\n @Input() noButtonsInView: boolean = false;\n private flux: StepData[];\n private display: DisplayModel;\n private design: CssRules;\n private generalData: GeneralDataModel;\n private labels: Label[];\n private stepDictionaryDependentIds: string[];\n private availableLanguages: Language[];\n private stepsSettings: StepsSettings;\n formlyConfigUpdated = new EventEmitter<void>();\n visibleFieldsUpdated = new EventEmitter<any>();\n formlyUpdateAndGoNext = new EventEmitter<any>();\n formlyGoNext = new EventEmitter<void>();\n\n @Output() completionEvent = new EventEmitter<void>();\n\n form = new FormGroup({});\n formlyConfig: FormlyFieldConfig[] = [];\n formlyAllSteps: FormlyFieldConfig[] = [];\n activeStep = 0;\n model: any;\n options: FormlyFormOptions = {};\n isLoading: boolean = true;\n\n dictionaryMap: Map<string, DictionaryDto> = new Map();\n dictionaryIdToUuidMap: Map<number, string> = new Map();\n generalDataKeys = LabelKeys.appConfigEdit.generalData;\n private fieldUnsubscribeSubjects: Subject<void>[] = [];\n private collectorHandlerSubscriptions: Subscription = new Subscription();\n\n // Action step execution state\n private isExecutingActions = false;\n private actionStepSubscriptions: Subscription = new Subscription();\n public isSavingAfterActions = false; // Make this public so stepper can access it\n\n // identification kyc component\n public kycApiUrl: string;\n public kycOrderId: string;\n public kycToken: string;\n public kycEnv: string;\n public kycRedirectId: string;\n public kycPhoneNumber: string = '';\n public kycLangIso: string = '';\n public kycShowCitizenship: boolean = false;\n public kycScrollMode: boolean = false;\n // end identification kyc component\n public languageFlags: any[] = [\n {\n language: 'English',\n code: 'en',\n type: 'US',\n icon: '/assets/images/flag/icon-flag-en.svg',\n },\n {\n language: 'Romana',\n code: 'ro',\n icon: '/assets/images/flag/icon-flag-ro.svg',\n },\n {\n language: 'Deutsch',\n code: 'de',\n icon: '/assets/images/flag/icon-flag-de.svg',\n },\n {\n language: 'Français',\n code: 'fr',\n icon: '/assets/images/flag/icon-flag-fr.svg',\n },\n {\n language: 'Italiano',\n code: 'it',\n icon: '/assets/images/flag/icon-flag-it.svg',\n },\n {\n language: 'Español',\n code: 'es',\n icon: '/assets/images/flag/icon-flag-es.svg',\n },\n ];\n formlyCollectingFields: FormlyFieldConfig[];\n formlyPresentationFields: FormlyFieldConfig[];\n controlIdsWithValues: any;\n _self = this;\n\n \n constructor(\n private service: DictionaryService,\n private cdRef: ChangeDetectorRef,\n private renderer: Renderer2,\n proxy: ProxyService,\n private labelService: LabelService,\n private applicationDataService: ApplicationDataService,\n private langService: LanguageService,\n private authService: OriginFormAuthService,\n private formsService: FormsService,\n private configService: ConfigService,\n private translationService: TranslationService,\n private originFormSignalrHandlerService: OriginFormSignalrHandlerService,\n private actionStepHandler: ActionStepHandler,\n private scrollToErrorService: ScrollToErrorService\n ) {\n this.kycApiUrl = proxy.apiURL;\n this.kycOrderId = proxy.orderID!;\n this.kycToken = proxy.token;\n this.kycEnv = proxy.env;\n\n this.kycLangIso = proxy.langIso;\n const isLoadingSub =\n this.originFormSignalrHandlerService.isLoading$.subscribe((loading) => {\n if (this.isLoading !== loading) {\n this.isLoading = loading;\n }\n });\n this.collectorHandlerSubscriptions.add(isLoadingSub);\n\n const operationCompletedSub =\n this.originFormSignalrHandlerService.operationCompleted$.subscribe(\n async (result: OperationResult) => {\n if (result.operationIdentifier === 'KYC_PROCESSING') {\n if (result.success) {\n console.log(\n 'KYC Processing successfully completed (via Handler Service):',\n result.data\n );\n if (result.data) {\n this.fillData = JSON.parse(result.data.fillData);\n this.populateModelWithFillData(this.fillData);\n }\n\n this.formlyUpdateAndGoNext.emit({});\n } else {\n console.error(\n 'KYC Processing failed (via Handler Service):',\n result.error\n );\n }\n }\n }\n );\n this.collectorHandlerSubscriptions.add(operationCompletedSub);\n\n // Subscribe to action step execution events\n const actionExecutingSub =\n this.actionStepHandler.actionExecuting$.subscribe((executing) => {\n this.isExecutingActions = executing;\n this.isLoading = executing;\n this.cdRef.detectChanges();\n });\n this.actionStepSubscriptions.add(actionExecutingSub);\n\n const actionCompletedSub =\n this.actionStepHandler.actionCompleted$.subscribe((result) => {\n console.log('🎬 Action step completed:', result);\n if (!result.success) {\n console.error('❌ Action step failed:', result.error);\n }\n // Note: We don't auto-progress here as it's handled in executeActionStepsBeforeMoving\n });\n this.actionStepSubscriptions.add(actionCompletedSub);\n }\n\n async ngOnInit(): Promise<void> {\n if (this.dataUrlId) {\n var result = await firstValueFrom(\n this.applicationDataService.getDataUrl(this.dataUrlId)\n );\n if (result) {\n this.configUuid = result.appId;\n this.appDataUuid = result.appDataId;\n this.env = result.env;\n }\n }\n\n if (this.appDataUuid && this.currentStepId) {\n this.applicationDataService.setCurrentStep(\n this.appDataUuid,\n this.currentStepId\n );\n }\n\n if (!this.appDataUuid) {\n this.appDataUuid = Utils.generateUUID();\n }\n\n if (\n this.configComponent &&\n this.configComponent.Token &&\n this.configComponent.RefreshToken\n ) {\n this.configService.updateConfigFromInput(this.configComponent);\n await this.authService.setTokens(\n this.configComponent.Token,\n this.configComponent.RefreshToken\n );\n }\n if (!this.availableLanguages || this.availableLanguages.length === 0) {\n await firstValueFrom(this.langService.getLanguages()).then((list) => {\n if (list && list.items?.length > 0) {\n this.availableLanguages = list.items;\n }\n });\n }\n await this.loadAppData();\n if (!this.currentLanguageIso && this.appModel) {\n this.currentLanguageIso = this.appModel.generalData.defaultLanguage;\n }\n if (this.appModel) {\n await this.initAsync();\n }\n }\n\n async ngOnChanges(changes: SimpleChanges): Promise<void> {\n if (changes['configComponent'] && !changes['configComponent'].firstChange) {\n if (\n this.configComponent &&\n this.configComponent.Token &&\n this.configComponent.RefreshToken\n ) {\n this.configService.updateConfigFromInput(this.configComponent);\n await this.authService.setTokens(\n this.configComponent.Token,\n this.configComponent.RefreshToken\n );\n }\n }\n if (\n changes['currentLanguageIso'] &&\n !changes['currentLanguageIso'].firstChange\n ) {\n this.isLoading = true;\n\n try {\n if (!this.availableLanguages) {\n await firstValueFrom(this.langService.getLanguages()).then((list) => {\n if (list && list.items?.length > 0) {\n this.availableLanguages = list.items;\n }\n });\n }\n if (this.appDataUuid) {\n try {\n const appData = await this.applicationDataService.getSteps(\n this.appDataUuid\n );\n if (appData && appData.fillData) {\n this.fillData = JSON.parse(appData.fillData);\n this.blockPreviousStep = appData.blockPreviousStep;\n if (this.fillData.metadata.language) {\n this.currentLanguageIso = this.fillData.metadata.language;\n }\n }\n } catch (error) {\n console.error('Error retrieving app data', error);\n }\n }\n await this.initAsync();\n } catch (error) {\n } finally {\n this.isLoading = false;\n }\n }\n }\n\n async loadAppData(): Promise<void> {\n this.isLoading = true;\n try {\n const response: { configuration: any; fillData?: any } =\n await firstValueFrom(\n this.formsService.loadFormByUuid(this.configUuid, this.env)\n );\n this.appModel = JSON.parse(response.configuration);\n this.fillData = response.fillData ? JSON.parse(response.fillData) : null;\n } catch (error) {\n console.error('Error loading form data', error);\n } finally {\n this.isLoading = false;\n }\n }\n\n async initAsync(): Promise<void> {\n this.unsubscribeFromAllFields();\n await this.buildFormlyAsync();\n await this.initializeReferenceFields(this.formlyConfig);\n this.updateFormlyConfig();\n this.formlyConfigUpdated.emit();\n this.cdRef.detectChanges();\n }\n\n public applicationLanguages(): Language[] {\n return this.availableLanguages?.filter((a) => {\n return this.appModel?.generalData?.languages?.indexOf(a.iso) >= 0;\n });\n }\n\n public returnFLag(language: string) {\n return this.languageFlags.find((l) => l.code == language)?.icon;\n }\n\n changeLanguage($event: string) {\n this.currentLanguageIso = $event;\n this.applicationDataService\n .changeLanguage(this.appDataUuid, this.currentLanguageIso)\n .subscribe();\n this.initAsync();\n }\n getLanguageName(languageIso: string): string {\n const language = this.availableLanguages.find(\n (lang) => lang.iso === languageIso\n );\n return language ? language.name : '';\n }\n\n private async buildFormlyAsync(): Promise<void> {\n if (this.currentLanguageIso) {\n await this.getLabels();\n }\n\n // STEP 1: Initialize flux and other properties first\n this.flux = this.appModel.flux;\n this.display = this.appModel.display;\n this.design = this.appModel.generatedCss;\n this.generalData = this.appModel.generalData;\n this.addRenderedCss();\n\n // STEP 2: Load ALL dictionaries upfront (now that flux is initialized)\n await this.loadAllRequiredDictionaries();\n\n // STEP 3: Continue with existing form building logic\n this.formlyConfig = [];\n this.formlyCollectingFields = [];\n this.formlyPresentationFields = [];\n this.model = {};\n this.form = new FormGroup({});\n\n if (this.fillData) {\n this.populateControlIdsWithValueDictionary();\n }\n\n // Initialize model with default values if no fillData\n if (!this.fillData) {\n this.model = ModelPopulationHelper.applyDefaultsToModel(\n this.flux,\n this.dictionaryMap,\n this.availableLanguages\n );\n } else {\n this.populateModelWithFillData(this.fillData);\n this.populateControlIdsWithValueDictionary();\n }\n\n this.form.patchValue(this.model);\n await this.buildFormlyConfigAsync();\n\n // Initialize references for default values\n if (!this.fillData) {\n await this.initializeReferenceFields(this.formlyConfig);\n }\n\n this.form.valueChanges\n .pipe(startWith(null), pairwise())\n .subscribe(([prev, next]: [any, any]) =>\n this.handleFormValueChange([prev, next])\n );\n }\n\n private handleFormValueChange([prev, next]: [any, any]) {\n const currentLanguageId = Utils.findLanguageIdByIso(\n this.availableLanguages,\n this.currentLanguageIso\n );\n for (const key in next) {\n if (next[key]?.valueTranslations) {\n var s = JSON.stringify(next[key]);\n var replaced = s.replace(/\"valueTranslations\":/g, '\"translations\":');\n next[key] = JSON.parse(replaced);\n }\n\n const fields = this.formlyPresentationFields.filter(\n (i) => i.props && i.props['collectionControlIdentifier'] === key\n );\n if (fields && fields.length > 0) {\n fields.forEach((field) => {\n let value = '';\n switch (typeof next[key]) {\n case 'boolean':\n value = next[key] ? '&check;' : '&cross;';\n break;\n\n default:\n if (next[key]?.translations) {\n const translation = next[key].translations.find(\n (translation: { languageId: any }) =>\n translation.languageId === currentLanguageId\n );\n value = translation ? translation.value : null;\n } else {\n value = next[key];\n }\n break;\n }\n field.defaultValue = value;\n });\n }\n if (this.stepDictionaryDependentIds.find((a) => a == key)) {\n if (\n next[key]?.id &&\n (prev == null || prev[key]?.id !== next[key]?.id)\n ) {\n this.formlyConfig[0].fieldGroup = this.getFormlyFilteredSteps();\n var filteredStepsIdentifiers = this.formlyConfig[0].fieldGroup.map(\n (f) => f.props?.['stepId']\n );\n const visibleSteps = this.actionStepHandler.filterVisibleSteps(\n this.flux,\n filteredStepsIdentifiers\n );\n this.updateFormlyConfig();\n this.visibleFieldsUpdated.emit(visibleSteps);\n this.formlyConfigUpdated.emit();\n }\n }\n }\n }\n\n private getLabels(): Promise<void> {\n return new Promise((resolve) => {\n this.labelService\n .getLabels(this.currentLanguageIso, false)\n .subscribe((l) => {\n this.labels = l;\n resolve();\n });\n });\n }\n\n private populateControlIdsWithValueDictionary() {\n var currentLanguageId = this.getCurrentLanguageId();\n const controlIdsWithValues = this.fillData.flux\n .flatMap((step: { sections: { controls: any[] }[] }) =>\n step.sections.flatMap((section: { controls: any[] }) =>\n section.controls\n .filter((control) => control.controlId && control.fillValue)\n .map((control) => ({\n controlId: control.controlId,\n fillValue: control.fillValue,\n fillValueId: control.fillValueId,\n }))\n )\n )\n .reduce(\n (\n dictionary: { [x: string]: any },\n { controlId, fillValue, fillValueId }: any\n ) => {\n if (fillValueId) {\n for (const [key, dict] of this.dictionaryMap.entries()) {\n const value = dict.values?.find((v) => v.id == fillValueId);\n if (value) {\n const translation = value.valueTranslations.find(\n (t) => t.languageId == currentLanguageId\n );\n if (translation) {\n dictionary[controlId] = translation.value;\n break;\n }\n }\n }\n } else {\n dictionary[controlId] = fillValue;\n }\n return dictionary;\n },\n {} as Record<string, any>\n );\n this.controlIdsWithValues = controlIdsWithValues;\n }\n private getCurrentLanguageId(): number {\n const currentLanguageId = Utils.findLanguageIdByIso(\n this.availableLanguages,\n this.currentLanguageIso\n );\n return currentLanguageId;\n }\n private async buildFormlyConfigAsync(): Promise<void> {\n this.stepsSettings = {\n showCounter: this.showDisplayMode\n ? false\n : this.generalData.showCounterStep,\n showLabels: this.showDisplayMode ? false : this.generalData.showNameStep,\n showAllSteps: this.showDisplayMode\n ? false\n : this.generalData.showAllSteps,\n showProgressBar:\n this.generalData.showProgressBar &&\n this.generalData.showAllSteps == false\n ? true\n : false,\n };\n\n this.formlyAllSteps = await this.buildFormlyFieldGroupAsync();\n var hasDictionaryDependentSteps = this.formlyAllSteps.some(\n (f) => f.props?.['dependentDictionary']?.isDictionaryDependent\n );\n\n var formlyFilteredSteps = this.getFormlyFilteredSteps();\n var filteredStepsIdentifiers = formlyFilteredSteps.map(\n (f) => f.props?.['stepId']\n );\n // Get visible steps for accurate step counting\n const visibleSteps = this.actionStepHandler.filterVisibleSteps(this.flux);\n const filteredVisibleSteps = this.actionStepHandler.filterVisibleSteps(\n this.flux,\n filteredStepsIdentifiers\n );\n\n this.formlyConfig = [\n {\n type: 'stepper',\n props: {\n appDataId: this.fillData\n ? this.fillData?.metadata?.appDataId\n : this.appDataUuid,\n design: this.design,\n applicationId: this.appModel.applicationUuid,\n flux: visibleSteps, // Pass only visible steps to stepper\n filteredFlux: filteredVisibleSteps,\n isDisplayMode: this.showDisplayMode,\n fillData: this.fillData,\n defaultLanguage: this.appModel.generalData.defaultLanguage,\n display: this.display,\n designConfig: {\n buttonsVerticalPosition:\n this.appModel.design.buttonsVerticalPosition,\n buttonsHorizontalPosition:\n this.appModel.design.buttonsHorizontalPosition,\n },\n stepsSettings: this.stepsSettings,\n metaData: this.fillData?.metadata,\n demoMode: this.isDemoMode,\n isDebug: this.isDebug,\n noButtonsInView: this.noButtonsInView,\n blockPreviousStep: this.blockPreviousStep,\n env: this.env,\n hasDictionaryDependentSteps: hasDictionaryDependentSteps,\n hasActionSteps: this.flux.some((step) =>\n this.actionStepHandler.isActionStep(step)\n ), // Indicate if there are action steps\n completionEvent: () => this.onCompletion(),\n onSelectedPageChanging: (index: number) =>\n this.onSelectedPageChanging(index),\n onSelectedPageChanged: (index: number) =>\n this.onSelectedPageChanged(index),\n },\n fieldGroup: formlyFilteredSteps,\n },\n ];\n }\n\n private async onSelectedPageChanging(stepTransition: any): Promise<boolean> {\n let fromIndex: number;\n let toIndex: number;\n let callback: () => void = () => { };\n\n if (typeof stepTransition === 'number') {\n toIndex = stepTransition;\n fromIndex = this.activeStep;\n } else {\n fromIndex = stepTransition.from;\n toIndex = stepTransition.to;\n callback = stepTransition.callback || (() => { });\n }\n\n let actionsExecuted = false;\n\n if (toIndex > fromIndex) {\n console.log(\n '➡️ Moving forward - executing action steps after current step'\n );\n actionsExecuted = await this.executeActionStepsAfterCurrentStep(\n fromIndex\n );\n } else if (toIndex < fromIndex) {\n console.log('⬅️ Moving backward - no action execution needed');\n } else {\n console.log('🔄 Staying on same step - no action execution needed');\n }\n\n this.activeStep = toIndex;\n\n if (callback) {\n callback();\n }\n\n return actionsExecuted;\n }\n\n private async executeActionStepsAfterCurrentStep(\n currentStepIndex: number\n ): Promise<boolean> {\n if (this.actionStepHandler.isExecutingActions) {\n return false;\n }\n\n let filteredSteps = this.flux.filter((s) => {\n if (\n s.dependentDictionary &&\n s.dependentDictionary.isDictionaryDependent\n ) {\n const selectedValue =\n this.model[s.dependentDictionary.dictionaryControlIdentifier]?.id;\n if (\n selectedValue &&\n s.dependentDictionary.dependentValueIds.includes(selectedValue)\n ) {\n return true;\n }\n return false;\n }\n return true;\n });\n\n const actionSteps = this.actionStepHandler.getActionStepsAtIndex(\n filteredSteps,\n currentStepIndex\n );\n\n if (actionSteps.length === 0) {\n return false;\n }\n try {\n if (!this.appDataUuid) {\n return false;\n }\n\n // Set the saving flag before starting actions\n this.isSavingAfterActions = true;\n this.isLoading = true;\n\n const result = await this.actionStepHandler.executeActionSteps(\n actionSteps,\n this.appDataUuid,\n (step) => {\n const loadingMessage = Utils.findTranslationInfo(\n 'loadingMessageTranslations',\n step.translations,\n this.currentLanguageIso\n );\n this.loadingMessage = loadingMessage || null;\n }\n );\n\n if (result.success) {\n console.log('✅ Action steps executed successfully');\n // Keep loading state true - it will be cleared after saveAppDataStep completes\n return true;\n } else {\n console.error('❌ Action steps execution failed:', result.error);\n this.isSavingAfterActions = false;\n this.isLoading = false;\n return false;\n }\n } catch (error) {\n console.error('❌ Error executing action steps:', error);\n this.isSavingAfterActions = false;\n this.isLoading = false;\n return false;\n }\n }\n\n private onSelectedPageChanged(index: number) {\n if (this.formlyConfig[0].fieldGroup) {\n var selectedPage = this.formlyConfig[0].fieldGroup[index];\n this.setPresentationControlValuesRecursively(selectedPage);\n }\n }\n\n private setPresentationControlValuesRecursively(fc?: any) {\n fc?.fieldGroup?.forEach((fg: any) => {\n if (fg.props && fg.props['isDisplayMode'] === true) {\n var methodFieldId = fg.props['apiMethodFieldId'];\n if (methodFieldId) {\n const val = this.findInApiCallsResponses(methodFieldId);\n fg.defaultValue = val;\n } else {\n var associatedControlId = fg.props['collectionControlIdentifier'];\n if (associatedControlId) {\n const found =\n this.findControlInFillDataControls(associatedControlId);\n if (found) {\n if (found.fillValueId) {\n const currentLanguageId = this.getCurrentLanguageId();\n for (const [key, dict] of this.dictionaryMap.entries()) {\n const value = dict.values?.find(\n (v) => v.id == found.fillValueId\n );\n if (value) {\n const translation = value.valueTranslations.find(\n (t) => t.languageId == currentLanguageId\n );\n if (translation) {\n fg.defaultValue = translation.value;\n break;\n }\n }\n }\n } else {\n fg.defaultValue = found.fillValue;\n }\n } else {\n const val = this.findInApiCallsResponses(associatedControlId);\n fg.defaultValue = val;\n }\n }\n }\n } else {\n this.setPresentationControlValuesRecursively(fg);\n }\n if (fg.props['cdr']) {\n fg.props['cdr'].detectChanges();\n }\n });\n }\n\n private findControlInFillDataControls(controlId: string): any {\n let controlData: any = undefined;\n if (this.fillData) {\n this.fillData.flux?.forEach((f: any) => {\n if (!controlData) {\n f.sections?.forEach((s: any) => {\n if (!controlData) {\n controlData = s.controls?.find(\n (c: any) => c.controlId === controlId\n );\n if (controlData) {\n return controlData;\n }\n }\n });\n }\n });\n }\n return controlData;\n }\n\n private findInApiCallsResponses(fieldId: string): any {\n let foundValue: any = undefined;\n if (this.fillData) {\n this.fillData.APICalls?.forEach((api: any) => {\n if (!foundValue) {\n api.Methods?.forEach((m: any) => {\n if (!foundValue) {\n const found = m.Fields?.[fieldId];\n if (found) {\n foundValue = found;\n }\n }\n });\n }\n });\n }\n return foundValue;\n }\n\n private getFormlyFilteredSteps() {\n let steps = this.formlyAllSteps.filter((s) => {\n if (s.props && s.props['dependentDictionary']) {\n const depDict = s.props[\n 'dependentDictionary'\n ] as DependentDictionaryData;\n if (depDict && depDict.isDictionaryDependent) {\n const selectedValue =\n this.model[depDict.dictionaryControlIdentifier]?.id;\n if (\n selectedValue &&\n depDict.dependentValueIds.includes(selectedValue)\n ) {\n return true;\n }\n return false;\n }\n }\n return true;\n });\n\n return steps;\n }\n\n private async buildFormlyFieldGroupAsync(): Promise<FormlyFieldConfig[]> {\n this.stepDictionaryDependentIds = [];\n if (this.showDisplayMode) {\n const step = await this.buidDisplayStep();\n return Promise.resolve([step]);\n } else {\n // Filter out action steps from visible steps\n const visibleSteps = this.actionStepHandler.filterVisibleSteps(this.flux);\n return await Promise.all(\n visibleSteps.map((step) => {\n return this.buildFormlyFieldConfigAsync(step);\n }) ?? []\n );\n }\n }\n\n private async buildFormlyFieldConfigAsync(\n step: StepData\n ): Promise<FormlyFieldConfig> {\n let stepFormlyConfig: FormlyFieldConfig = {};\n\n if (step.type !== FluxType.Custom && step.type !== FluxType.Final) {\n stepFormlyConfig = await this.buildSystemFieldFormlyConfig(step);\n } else {\n stepFormlyConfig = {\n props: {\n label: step.name,\n description: step.name,\n buttons: this.constructButtons(step.buttons),\n dependentDictionary: step.dependentDictionary,\n stepId: step.identifier,\n },\n fieldGroup: await this.buildSectionsFieldGroupAsync(\n step,\n step.sections\n ),\n };\n\n if (step.translations) {\n stepFormlyConfig.props!['label'] = Utils.findTranslationInfo(\n 'name',\n step.translations,\n this.currentLanguageIso\n );\n stepFormlyConfig.props!['description'] = Utils.findTranslationInfo(\n 'description',\n step.translations,\n this.currentLanguageIso\n );\n }\n }\n\n if (stepFormlyConfig && stepFormlyConfig.props) {\n this.setStepBaseProps(step, stepFormlyConfig);\n }\n if (step.dependentDictionary?.isDictionaryDependent) {\n this.stepDictionaryDependentIds.push(\n step.dependentDictionary.dictionaryControlIdentifier\n );\n }\n return stepFormlyConfig;\n }\n\n triggerComponentUpdate(controlId: string, value: any): void {\n this.setFormlyFieldValue(this.formlyAllSteps, controlId, value);\n }\n\n setFormlyFieldValue(\n fields: FormlyFieldConfig[] | undefined,\n key: string,\n value: any\n ): boolean {\n if (!fields) return false;\n\n for (const field of fields) {\n if (field.key === key) {\n if (field.formControl) {\n field.formControl.setValue(value, { emitEvent: true });\n return true;\n }\n }\n\n if (field.fieldGroup && Array.isArray(field.fieldGroup)) {\n const found = this.setFormlyFieldValue(field.fieldGroup, key, value);\n if (found) return true;\n }\n }\n\n return false;\n }\n\n private async buildSystemFieldFormlyConfig(\n step: StepData\n ): Promise<FormlyFieldConfig> {\n const formlyConfig: FormlyFieldConfig = {\n props: {\n label: step.name,\n buttons: this.constructButtons(step.buttons),\n fluxType: step.type,\n },\n fieldGroup: [],\n };\n\n this.setStepBaseProps(step, formlyConfig);\n var fieldConfig = this.createFormlySystemFieldConfig(step);\n\n if (fieldConfig) {\n if (step.translations) {\n let labels: any = {};\n step.translations.forEach((tr: TranslationInfo) => {\n labels[tr.name] = Utils.findTranslation(\n tr.values,\n this.currentLanguageIso\n );\n });\n fieldConfig.props!['labels'] = labels;\n fieldConfig.props!['name'] = Utils.findTranslationInfo(\n 'name',\n step.translations,\n this.currentLanguageIso\n );\n fieldConfig.props!['description'] = Utils.findTranslationInfo(\n 'description',\n step.translations,\n this.currentLanguageIso\n );\n formlyConfig.props!['label'] = Utils.findTranslationInfo(\n 'name',\n step.translations,\n this.currentLanguageIso\n );\n formlyConfig.props!['description'] = Utils.findTranslationInfo(\n 'description',\n step.translations,\n this.currentLanguageIso\n );\n }\n fieldConfig.props!['stepsSettings'] = this.stepsSettings;\n formlyConfig.fieldGroup!.push(fieldConfig);\n }\n\n return formlyConfig;\n }\n\n private setStepBaseProps(step: StepData, formlyConfig: FormlyFieldConfig) {\n if (formlyConfig.props) {\n formlyConfig.props['name'] = step.name;\n formlyConfig.props['fluxType'] = step.type;\n formlyConfig.props['stepId'] = step.identifier;\n formlyConfig.props['isVisible'] = step.isVisible;\n formlyConfig.props['dependentDictionary'] = step.dependentDictionary;\n }\n }\n\n private CreateSignFieldConfig(step: StepData): FormlyFieldConfig {\n return {\n type: 'formly-sign-component',\n props: {\n appDataId: this.appDataUuid,\n stepData: step,\n design: this.design,\n env: this.env,\n flux: this.flux,\n parentForm: this.form,\n getModel: () => this.model,\n event: async (event: any) => {\n if (event === 'success') {\n await this.stepperGoNextAsync();\n }\n },\n },\n };\n }\n\n private CreateDownloadDocsFieldConfig(\n controlData: BaseControl\n ): FormlyFieldConfig {\n return {\n type: 'formly-download-documents-component',\n props: {\n appId: this.appModel.applicationUuid,\n appDataId: this.appDataUuid,\n controlData: controlData,\n env: this.env,\n documentsData: this.appModel.documents,\n langIso: this.currentLanguageIso,\n },\n };\n }\n\n private CreateViewDocsFieldConfig(\n controlData: BaseControl\n ): FormlyFieldConfig {\n return {\n type: 'formly-view-documents-component',\n props: {\n appId: this.appModel.applicationUuid,\n appDataId: this.appDataUuid,\n controlData: controlData,\n env: this.env,\n documentsData: this.appModel.documents,\n langIso: this.currentLanguageIso,\n },\n };\n }\n\n private CreateUploadDocsFieldConfig(\n controlData: BaseControl\n ): FormlyFieldConfig {\n return {\n type: 'formly-upload-documents-component',\n props: {\n appId: this.appModel.applicationUuid,\n appDataId: this.appDataUuid,\n controlData: controlData,\n env: this.env,\n documentsData: this.appModel.documents,\n langIso: this.currentLanguageIso,\n },\n };\n }\n\n private CreateGenerateDocsFieldConfig(step: StepData): FormlyFieldConfig {\n return {\n type: 'formly-generate-documents-component',\n props: {\n appId: this.appModel.applicationUuid,\n appDataId: this.appDataUuid,\n stepData: step,\n documentsData: this.appModel.documents,\n langIso: this.currentLanguageIso,\n event: async (event: any) => {\n if (event === 'success') {\n await this.stepperGoNextAsync();\n }\n },\n },\n };\n }\n\n async stepperGoNextAsync() {\n const stepperComponent = this.formlyConfig[0].props!['component'];\n if (stepperComponent && stepperComponent.navigateNextAsync) {\n await stepperComponent.navigateNextAsync();\n }\n }\n\n private CreateEnrollCardFieldConfig(step: StepData): FormlyFieldConfig {\n let labels: any = {};\n Object.keys(step.config).forEach((key) => {\n if (key.endsWith('Label')) {\n labels[key] =\n step?.config[key]?.find(\n (i: { languageIso: string }) =>\n i.languageIso === this.currentLanguageIso\n )?.value ?? '';\n }\n });\n return {\n type: 'formly-enrol-card-component',\n props: {\n appId: this.appModel.applicationUuid,\n appDataId: this.appDataUuid,\n dataUrlId: this.dataUrlId,\n stepData: step,\n labels: labels,\n langIso: this.currentLanguageIso,\n },\n };\n }\n private CreateIdScanFieldConfig(step: StepData): FormlyFieldConfig {\n let errorMessages: any = {};\n\n if (step.errorsTranslations) {\n step.errorsTranslations.forEach((error: any) => {\n errorMessages[error.code] = Utils.findTranslation(\n error.translations,\n this.currentLanguageIso\n );\n });\n }\n\n return {\n type: 'formly-scan-id',\n props: {\n config: step.config,\n stepType: step.type,\n stepId: step.identifier,\n appDataId: this.appDataUuid || Utils.generateUUID(),\n appId: this.appModel.applicationUuid,\n errorMessages: errorMessages,\n event: (event: any) => this.onIdScanCompleted(event, step),\n },\n };\n }\n\n private CreateKycFieldConfig(step: StepData): FormlyFieldConfig {\n const loadingMsgTranslations = step.translations?.find(\n (t: any) => t.name === 'loadingMessageTranslations'\n );\n\n const translatedLoadingMessage =\n loadingMsgTranslations?.values?.find(\n (v: any) => v.languageIso === this.currentLanguageIso\n )?.value || '';\n\n return {\n type: 'formly-identification-component',\n props: {\n token: this.kycToken,\n api_url: this.kycApiUrl,\n appDataId: this.appDataUuid,\n env: 'QA', // Consider making this dynamic if needed\n redirect_id: this.kycRedirectId,\n phone_number: '',\n lang_iso: this.kycLangIso,\n show_citizenship_selector: this.kycShowCitizenship,\n scroll_mode: this.kycScrollMode,\n maxRetries: step.config?.maxKycRetries ?? 3,\n loadingMessage: translatedLoadingMessage,\n ectCompleted: async () => {\n this.loadingMessage = translatedLoadingMessage;\n await this.originFormSignalrHandlerService.initiateKycProcessing(\n this.appDataUuid\n );\n },\n },\n };\n }\n\n private CreatePhoneEmailFieldConfig(step: StepData): FormlyFieldConfig {\n return {\n type: 'formly-validate-contact-info',\n props: {\n stepData: step,\n appDataId: this.appDataUuid,\n design: this.design,\n event: async (event: any) => {\n if (event === 'success') {\n await this.stepperGoNextAsync();\n }\n },\n },\n };\n }\n\n private CreateViewOfferFieldConfig(step: StepData): FormlyFieldConfig {\n return {\n type: 'formly-view-offers',\n props: {\n appDataId: this.appDataUuid,\n stepData: step,\n env: this.env,\n appModel: this.appModel,\n langIso: this.currentLanguageIso,\n event: (event: any) => this.onOfferSelected(event, step),\n },\n };\n }\n\n private CreatePauseFieldConfig(step: StepData): FormlyFieldConfig {\n return {\n type: 'formly-field-pause',\n props: {\n identifier: step.identifier,\n config: step.config,\n appDataId: this.appDataUuid,\n stepData: step,\n env: this.env,\n appModel: this.appModel,\n langIso: this.currentLanguageIso,\n },\n };\n }\n\n private CreateOpenBankingFieldConfig(step: StepData): FormlyFieldConfig {\n // Pass the full step data which includes all translations\n // The component will extract what it needs based on current language\n return {\n type: 'formly-open-banking',\n props: {\n identifier: step.identifier,\n config: step.config,\n appDataId: this.appDataUuid,\n stepData: step, // This contains the full translations array\n env: this.env,\n appModel: this.appModel,\n langIso: this.currentLanguageIso,\n labels: {\n initialMessage: Utils.findTranslation(\n step.config?.initialMessageTranslations || [],\n this.currentLanguageIso\n ),\n waitingMessage: Utils.findTranslation(\n step.config?.waitingMessageTranslations || [],\n this.currentLanguageIso\n ),\n consentErrorMessage: Utils.findTranslation(\n step.config?.consentErrorMessageTranslations || [],\n this.currentLanguageIso\n ),\n completionMessage: Utils.findTranslation(\n step.config?.completionMessageTranslations || [],\n this.currentLanguageIso\n ),\n retryButtonLabel: Utils.findTranslation(\n step.config?.retryButtonLabelTranslations || [],\n this.currentLanguageIso\n ),\n },\n event: (event: any) => this.onOpenBankingEvent(event, step),\n },\n };\n }\n\n private CreateStatusFieldConfig(step: StepData): FormlyFieldConfig {\n return {\n type: 'formly-status',\n props: {\n config: step.config,\n stepData: step,\n appDataId: this.appDataUuid,\n appId: this.appModel.applicationUuid,\n },\n };\n }\n\n private createFormlySystemFieldConfig(\n step: StepData\n ): FormlyFieldConfig | undefined {\n switch (step.type) {\n case FluxType.Kyc:\n {\n return this.CreateKycFieldConfig(step);\n }\n break;\n case FluxType.Email:\n case FluxType.Phone: {\n return this.CreatePhoneEmailFieldConfig(step);\n }\n case FluxType.Action: {\n // Action steps are now handled automatically by ActionStepHandler\n // They should not appear as visible formly components\n return undefined;\n }\n case FluxType.IdScan: {\n return this.CreateIdScanFieldConfig(step);\n }\n case FluxType.GenerateDocument: {\n return this.CreateGenerateDocsFieldConfig(step);\n }\n case FluxType.Sign: {\n return this.CreateSignFieldConfig(step);\n }\n case FluxType.ViewOffer: {\n return this.CreateViewOfferFieldConfig(step);\n }\n case FluxType.Status: {\n return this.CreateStatusFieldConfig(step);\n }\n case FluxType.EUPLATESC: {\n return this.CreateEnrollCardFieldConfig(step);\n }\n case FluxType.NETOPIA: {\n return this.CreateEnrollCardFieldConfig(step);\n }\n case FluxType.Pause: {\n return this.CreatePauseFieldConfig(step);\n }\n case FluxType.OpenBanking: {\n return this.CreateOpenBankingFieldConfig(step);\n }\n }\n return undefined;\n }\n\n onOfferSelected(offerId: any, step: StepData) {\n this.formlyUpdateAndGoNext.emit({ selectedOfferId: offerId });\n }\n\n private onSignEvent(event: any, step: StepData) {\n console.log('Sign event received:', event);\n this.updateStepButtonState(step);\n }\n\n private onOpenBankingEvent(event: any, step: StepData) {\n console.log('OpenBanking event received:', event);\n if (event === 'success') {\n // Open Banking flow completed successfully\n this.updateStepButtonState(step);\n // Auto-proceed to next step\n this.formlyUpdateAndGoNext.emit({});\n }\n }\n\n private onIdScanCompleted(event: any, step: StepData) {\n console.log('Sign event received:', event);\n const fillData = JSON.parse(event.fillData);\n const stepFillData = fillData.flux.find(\n (s: { stepId: string }) => s.stepId == step.identifier\n );\n stepFillData.sections.forEach(\n (s: {\n controls: {\n controlId: string | undefined;\n fillValue: string | undefined;\n }[];\n }) => {\n s.controls.forEach(\n (c: {\n controlId: string | undefined;\n fillValue: string | undefined;\n }) => {\n if (c.controlId) {\n const value = {\n [c.controlId]: {\n value: c.fillValue,\n },\n };\n\n if (this.form.contains(c.controlId)) {\n this.form.patchValue(value);\n } else {\n this.form.addControl(c.controlId, new FormControl(c.fillValue));\n }\n }\n }\n );\n }\n );\n\n this.updateStepButtonState(step);\n }\n\n updateStepButtonState(step: StepData) {\n let formlyStepField = this.formlyConfig[0].fieldGroup?.find((field) =>\n field.fieldGroup?.find((f) => f.props?.['stepId'] === step.identifier)\n );\n\n if (!formlyStepField) {\n formlyStepField = this.formlyConfig[0].fieldGroup?.find(\n (field) => field.props?.['stepId'] === step.identifier\n );\n }\n\n if (formlyStepField) {\n formlyStepField.props = {\n ...formlyStepField.props,\n buttonsDisabled: false,\n };\n this.updateFormlyConfig();\n this.formlyConfigUpdated.emit();\n }\n }\n\n private addRenderedCss() {\n const styleString = FormCssHelper.convertToStyleString(\n this.design,\n this.showDisplayMode\n );\n\n const styleElement = this.renderer.createElement('style');\n styleElement.id = 'rendered-css';\n const rendEl = document.getElementById('rendered-css');\n if (rendEl) {\n this.renderer.removeChild(document.body, rendEl);\n }\n this.renderer.appendChild(\n styleElement,\n this.renderer.createText(Utils.removeNewLines(styleString))\n );\n this.renderer.appendChild(document.body, styleElement);\n }\n\n async buildSectionsFieldGroupAsync(\n step: StepData | undefined,\n sections: SectionData[]\n ): Promise<FormlyFieldConfig[]> {\n const stepSections: FormlyFieldConfig[] = [];\n\n for (let index = 0; sections && index < sections.length; index++) {\n const section = sections[index];\n let separatorFormlyConfig: any = {};\n if (section.showSectionTitle) {\n separatorFormlyConfig = {\n type: 'separator',\n props: {\n title:\n section.translations?.find(\n (t: any) => t.languageIso === this.currentLanguageIso\n )?.value ?? '',\n\n design: this.design,\n },\n };\n }\n\n if (section.showSectionSeparator) {\n separatorFormlyConfig = {\n ...separatorFormlyConfig,\n type: 'separator',\n props: {\n ...separatorFormlyConfig.props,\n showSeparator: section.showSectionSeparator,\n },\n };\n }\n\n if (section.dependentDictionary) {\n this.attachToDependentDictionaryIfNecessary(\n section.dependentDictionary,\n separatorFormlyConfig\n );\n }\n stepSections.push(separatorFormlyConfig);\n\n const sectionFormlyConfig: FormlyFieldConfig = {\n type: 'custom-section',\n props: {\n label: section.title,\n description:\n section.translations?.find(\n (t: any) => t.languageIso === this.currentLanguageIso\n )?.value ?? '',\n design: this.design,\n },\n fieldGroup: await this.buildControlsFieldGroupAsync(\n step,\n section.controls || [],\n section.presentationControls || []\n ),\n fieldGroupClassName: 'display-flex',\n };\n if (section.dependentDictionary) {\n this.attachToDependentDictionaryIfNecessary(\n section.dependentDictionary,\n sectionFormlyConfig\n );\n }\n\n stepSections.push(sectionFormlyConfig);\n }\n\n return stepSections;\n }\n\n async buidDisplayStep(): Promise<FormlyFieldConfig> {\n let stepFormlyConfig: FormlyFieldConfig = {};\n if (this.display?.sections?.length > 0) {\n stepFormlyConfig = {\n props: {\n // label: step.name,\n // buttons: this.constructButtons(step.buttons),\n // dependentDictionary: step.dependentDictionary,\n },\n fieldGroup: await this.buildSectionsFieldGroupAsync(\n undefined,\n this.display.sections\n ),\n };\n }\n return stepFormlyConfig;\n }\n\n addNewRowToFormFieldsIfNecessary(\n fieldGroup: FormlyFieldConfig[],\n newRow: FormlyFieldConfig\n ) {\n if (newRow.fieldGroup && newRow.fieldGroup.length > 0) {\n this.calculateFormFieldsWidth(newRow.fieldGroup);\n fieldGroup.push(newRow);\n }\n }\n\n calculateFormFieldsWidth(formFields: FormlyFieldConfig[]) {\n const colWidthPerItem = 12 / formFields.length;\n formFields.forEach((f) => {\n f.className = 'col-' + colWidthPerItem;\n });\n }\n\n getPercentageClassName(percentageDimension: number): string {\n const totalColumns = 12; // 12-column grid\n const span = Math.round((percentageDimension / 100) * totalColumns);\n const className = `percentage-width-${span}`;\n\n if (!document.getElementById(className)) {\n const style = document.createElement('style');\n style.type = 'text/css';\n style.id = className;\n style.innerHTML = `\n .${className} {\n grid-column: span ${span};\n }\n `;\n document.head.appendChild(style);\n }\n return className;\n }\n\n createFillerControl(span: number): FormlyFieldConfig {\n return {\n type: 'row-filler',\n className: `percentage-width-${span}`,\n props: {\n label: '',\n disabled: true,\n hide: true,\n },\n };\n }\n\n private async buildControlsFieldGroupAsync(\n step: StepData | undefined,\n controls: ControlData[],\n presentationControls: PresentationControl[]\n ): Promise<FormlyFieldConfig[]> {\n const result: FormlyFieldConfig[] = [];\n let rowItems: (ControlData | PresentationControl)[] = [];\n controls = controls.filter((c) => !c.isOnlyForConfig);\n\n // Filter out controls that are incomplete\n controls = controls.filter((c) => {\n // Skip controls that are missing essential data\n if (\n c.type === StepControlType.Dictionary &&\n !c.specificControlData?.dictionaryUUID\n )\n return false;\n return true;\n });\n\n const processRow = async (\n items: (ControlData | PresentationControl)[]\n ) => {\n const fields: FormlyFieldConfig[] = [];\n const total = 12;\n const built: FormlyFieldConfig[] = [];\n const auto: {\n c: ControlData | PresentationControl;\n f: FormlyFieldConfig;\n }[] = [];\n let used = 0;\n for (const i of items) {\n if ('collectionControlIdentifier' in i === true) {\n built.push(\n await this.buildPresentationFormFieldAsync(\n step,\n i as PresentationControl\n )\n );\n } else if ('apiMethodId' in i === true) {\n built.push(\n await this.buildApiMethodFormFieldAsync(\n step,\n i as PresentationControl\n )\n );\n } else {\n built.push(await this.buildFormFieldAsync(step, i as ControlData));\n }\n }\n for (let i = 0; i < items.length; i++) {\n const c = items[i];\n const f = built[i];\n if (c.dimensionType === DimensionType.Percentage) {\n if (c.autoDimension) {\n auto.push({ c, f });\n } else {\n const s = Math.round((c.dimension / 100) * total);\n used += s;\n const percentageClass = this.getPercentageClassName(c.dimension);\n f.className = `${f.className} ${percentageClass}`;\n }\n } else if (c.dimensionType === DimensionType.Pixels) {\n const s = Math.round((c.dimension / window.innerWidth) * total);\n used += s;\n const percentageClass = this.getPercentageClassName(\n (s / total) * 100\n );\n f.className = `${f.className} ${percentageClass}`;\n } else if (c.autoDimension) {\n auto.push({ c, f });\n } else {\n used += 1;\n const percentageClass = this.getPercentageClassName(\n (1 / total) * 100\n );\n f.className = `${f.className} ${percentageClass}`;\n }\n }\n const rem = total - used;\n if (auto.length > 0) {\n const share = Math.max(Math.floor(rem / auto.length), 1);\n for (const a of auto) {\n const percentageClass = this.getPercentageClassName(\n (share / total) * 100\n );\n a.f.className = `${a.f.className} ${percentageClass}`;\n }\n }\n fields.push(...built);\n return fields;\n };\n for (const c of [...controls, ...presentationControls]) {\n if (\n ('type' in c && c.type === StepControlType.NewRow) ||\n c.type == PresentationControlType.NewRow\n ) {\n if (rowItems.length > 0) {\n result.push(...(await processRow(rowItems)));\n rowItems = [];\n }\n } else {\n rowItems.push(c);\n }\n }\n if (rowItems.length > 0) {\n result.push(...(await processRow(rowItems)));\n }\n return result;\n }\n\n getPixelClassName(pixelDimension: number): string {\n const className = `pixel-width-${pixelDimension}`;\n if (!document.getElementById(className)) {\n const style = document.createElement('style');\n style.type = 'text/css';\n style.id = className;\n style.innerHTML = `\n .${className} {\n width: ${pixelDimension}px;\n }\n `;\n document.head.appendChild(style);\n }\n return className;\n }\n\n async buildFormFieldAsync(\n step: StepData | undefined,\n control: ControlData\n ): Promise<FormlyFieldConfig> {\n let initialType = 'input'; // Default type\n let componentStyleKey = `.component-text-field`; // Default style for text input\n const baseStyle = this.design[`.font-${initialType}`] || {};\n const controlStyleString =\n this.styleObjectToStringExceptBackground(baseStyle);\n let pattern = '';\n if (control.specificControlData?.allowedCharacters) {\n try {\n pattern = new RegExp(control.specificControlData.allowedCharacters)\n .source;\n } catch (e) {\n console.error('incorrect regex pattern', e);\n }\n }\n\n const componentsToExcludeFromStyle = [\n '.component-text-field',\n '.component-checkbox',\n '.component-radio',\n '.component-date',\n '.component-data',\n ];\n let formlyConfig = this.getDefaultFormlyFieldConfig(\n control,\n initialType,\n pattern,\n componentStyleKey,\n componentsToExcludeFromStyle\n );\n //control.specificControlData.type === 3 is email\n if (control.specificControlData?.type === 3) {\n this.addValidators(formlyConfig, control);\n }\n\n if (control.specificControlData?.isApiValidation) {\n this.addApiValidators(formlyConfig, control);\n }\n\n switch (control.type) {\n case StepControlType.ManualInput: // Text\n var subType = control.specificControlData\n ?.type as ManualInputControlType;\n switch (subType) {\n case ManualInputControlType.Numeric:\n formlyConfig.type = 'number';\n\n break;\n case ManualInputControlType.Email:\n case ManualInputControlType.Text:\n case ManualInputControlType.Phone:\n formlyConfig.type = 'input';\n break;\n case ManualInputControlType.TextArea:\n formlyConfig.type = 'input';\n formlyConfig.props!['autosize'] = false;\n componentStyleKey = '.component-text-field';\n break;\n case ManualInputControlType.DateTime:\n formlyConfig.type = 'datepicker';\n formlyConfig.props = {\n readonly: true,\n };\n componentStyleKey = '.component-date';\n break;\n default:\n formlyConfig.type = 'input';\n componentStyleKey = '.component-text-field';\n break;\n }\n break;\n case StepControlType.Paragraph: // Paragraph\n formlyConfig.type = 'formly-paragraph';\n componentStyleKey = '.component-text-field';\n\n const translatedDescription =\n control.specificControlData?.descriptionTranslations?.find(\n (d: { languageIso: string }) =>\n d.languageIso === this.currentLanguageIso\n )?.value || '';\n formlyConfig.defaultValue = translatedDescription;\n\n break;\n case StepControlType.CheckBox: // Checkbox\n formlyConfig.type = 'formly-checkbox';\n componentStyleKey = '.component-checkbox';\n var checked = control.specificControlData?.checked ?? false;\n formlyConfig.props!['checked'] = checked;\n break;\n case StepControlType.Dictionary: // Dictionary (dropdown)\n componentStyleKey =\n control.specificControlData.showAsRadioButtonsList === true\n ? '.component-radio'\n : '.component-data';\n await this.constructDictionary(control, formlyConfig);\n break;\n case StepControlType.Buttons:\n formlyConfig.type = '';\n break;\n case StepControlType.FluxInfo:\n formlyConfig.type = '';\n break;\n case StepControlType.DownloadDocuments:\n formlyConfig = this.CreateDownloadDocsFieldConfig(control);\n break;\n case StepControlType.ViewDocuments:\n formlyConfig = this.CreateViewDocsFieldConfig(control);\n break;\n case StepControlType.UploadDocuments:\n formlyConfig = this.CreateUploadDocsFieldConfig(control);\n break;\n case StepControlType.NewRow: // New Row\n formlyConfig.type = '';\n break;\n default:\n formlyConfig.type = 'input';\n componentStyleKey = '.component-text-field';\n }\n formlyConfig.className = componentStyleKey.substring(1);\n\n if (!componentsToExcludeFromStyle.find((c) => c === componentStyleKey)) {\n if (this.design[componentStyleKey]) {\n formlyConfig.props!.attributes!['style'] +=\n ';' +\n this.styleObjectToStringExceptBackground(\n this.design[componentStyleKey]\n );\n }\n\n // Apply label styles\n const labelStyleKey = `${componentStyleKey}-label`;\n if (this.design[labelStyleKey]) {\n formlyConfig.props!.attributes!['style'] +=\n ';' +\n this.styleObjectToStringExceptBackground(\n this.design[componentStyleKey]\n );\n }\n }\n if (control.dependentDictionary) {\n this.attachToDependentDictionaryIfNecessary(\n control.dependentDictionary,\n formlyConfig\n );\n }\n\n let translatedTitle = control.translations?.find(\n (d: { languageIso: string }) => d.languageIso === this.currentLanguageIso\n )?.value;\n if (!translatedTitle) {\n translatedTitle = control.title;\n }\n formlyConfig.props!['label'] = translatedTitle;\n\n this.formlyCollectingFields.push(formlyConfig);\n\n return formlyConfig;\n }\n\n addValidators(formlyConfig: FormlyFieldConfig, control: ControlData) {\n var emailErrorLabel = this.flux?.find(\n (f) => f?.config?.componentCollected === control?.identifier\n )?.config?.emailErrorLabel;\n var emailErrorLabelValue = '';\n if (emailErrorLabel != null && Array.isArray(emailErrorLabel)) {\n emailErrorLabelValue =\n (emailErrorLabel as LabelInfo[]).find(\n (l) => l.languageIso === this.currentLanguageIso\n )?.value ?? '';\n }\n\n formlyConfig.validators = {\n emailValid: {\n expression: (cont: AbstractControl) => {\n const value = cont.value;\n const emailPattern = new RegExp(\n '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,}$'\n );\n if (value && !emailPattern.test(value)) {\n cont.setErrors({ invalidEmail: true });\n return false;\n }\n return true;\n },\n message: emailErrorLabelValue,\n },\n };\n }\n\n addApiValidators(formlyConfig: FormlyFieldConfig, control: ControlData) {\n formlyConfig.asyncValidators = {\n validateThroughApi: {\n expression: (cont: AbstractControl) => {\n return (\n cont.valueChanges.pipe(\n debounceTime(500),\n switchMap(() => {\n const apiValidationMethod =\n control.specificControlData.apiValidationMethod;\n\n const bodyValue = this.appModel.partners\n .flatMap((p) => p.partnerSettings.partnerMethodsApi)\n .find((p) => p.methodId === apiValidationMethod)\n ?.bodyConfiguration.bodyMapFields;\n\n const fieldMap: { [key: string]: string } =\n bodyValue?.reduce((acc: { [key: string]: string }, f) => {\n if (f.fluxFieldId === control.identifier) {\n acc[f.partnerField] = cont.value || '';\n } else {\n acc[f.partnerField] = '';\n }\n return acc;\n }, {}) || {};\n\n const dataRequest: ApiValidateRequest = {\n appId: this.appModel.applicationId,\n apiId: apiValidationMethod,\n data: JSON.stringify(fieldMap),\n };\n\n return this.validateMethodApi(dataRequest).pipe(\n catchError(() => of(false))\n );\n })\n ) || 'ssssssssssssssss'\n );\n },\n message: 'Validation failed.',\n },\n };\n }\n\n getDefaultFormlyFieldConfig(\n control: ControlData,\n type: string,\n pattern: string,\n componentStyleKey: string,\n componentsToExcludeFromStyle: string[]\n ): FormlyFieldConfig {\n const currentLanguageId = Utils.findLanguageIdByIso(\n this.availableLanguages,\n this.currentLanguageIso\n );\n\n let formlyConfig: FormlyFieldConfig = {\n key: control.identifier || control.title,\n type: type,\n props: {\n currentLanguageIso: this.currentLanguageIso,\n currentLanguageId: currentLanguageId,\n label:\n control.translations?.find(\n (t: { languageIso: string }) =>\n t.languageIso === this.currentLanguageIso\n )?.value || '',\n\n title:\n control.translations?.find(\n (t: { languageIso: string }) =>\n t.languageIso === this.currentLanguageIso\n )?.value || '',\n design: this.design,\n required: control.isMandatory,\n attributes: {\n style: componentsToExcludeFromStyle.find(\n (c) => c === componentStyleKey\n )\n ? ''\n : componentStyleKey,\n },\n autosize: true,\n options: [{}],\n fieldGroup: [],\n autoDimension: control.autoDimension,\n },\n expressions: {},\n hooks: {},\n validators: {},\n };\n formlyConfig.validation = {};\n\n if (control.specificControlData?.isMandatory && formlyConfig.props) {\n var requiredMessage = Utils.findErrorTranslationValueOrDefault(\n control.errorsTranslations,\n this.currentLanguageIso,\n 'isMandatoryValidation'\n );\n\n formlyConfig.props.required = control.specificControlData?.isMandatory;\n formlyConfig.validation.messages = {\n ...formlyConfig.validation?.messages,\n required: requiredMessage,\n };\n }\n\n if (\n control.type === StepControlType.Dictionary &&\n control.specificControlData?.isMandatory &&\n control.errorsTranslations &&\n formlyConfig.props\n ) {\n var requiredMessage = Utils.findErrorTranslationValueOrDefault(\n control.errorsTranslations,\n this.currentLanguageIso,\n 'isMandatory'\n );\n\n formlyConfig.props.required = control.specificControlData?.isMandatory;\n formlyConfig.validation.messages = {\n ...formlyConfig.validation?.messages,\n required: requiredMessage,\n };\n }\n\n let simpleValidationMessage = '';\n if (control.specificControlData?.isSimpleValidation && formlyConfig.props) {\n if (\n control.specificControlData?.isSimpleValidation &&\n formlyConfig.props\n ) {\n simpleValidationMessage = Utils.findErrorTranslationValueOrDefault(\n control.errorsTranslations,\n this.currentLanguageIso,\n 'simpleValidation'\n );\n\n if (control.specificControlData?.minValue?.toString()) {\n formlyConfig.props.min = control.specificControlData.minValue;\n formlyConfig.validation.messages = {\n ...formlyConfig.validation?.messages,\n min: simpleValidationMessage,\n };\n }\n\n if (control.specificControlData?.maxValue?.toString()) {\n formlyConfig.props.max = control.specificControlData.maxValue;\n formlyConfig.validation.messages = {\n ...formlyConfig.validation?.messages,\n max: simpleValidationMessage,\n };\n }\n }\n\n // Apply pattern validation if allowedCharacters is defined\n if (control.specificControlData?.allowedCharacters) {\n simpleValidationMessage = simpleValidationMessage =\n Utils.findErrorTranslationValueOrDefault(\n control.errorsTranslations,\n this.currentLanguageIso,\n 'simpleValidation'\n );\n\n formlyConfig.validators = {\n ...formlyConfig.validators,\n customPattern: {\n expression: (c: AbstractControl) => {\n if (!c.value) return true;\n try {\n const regex = new RegExp(pattern);\n return regex.test(c.value);\n } catch {\n return false;\n }\n },\n message:\n simpleValidationMessage ||\n 'Value does not match the required pattern',\n },\n };\n\n formlyConfig.validation.messages = {\n ...formlyConfig.validation?.messages,\n pattern: simpleValidationMessage,\n };\n }\n\n // Apply maxLength validation if maxCharacters is defined\n if (control.specificControlData?.maxCharacters) {\n formlyConfig.props.maxLength =\n control.specificControlData?.maxCharacters;\n formlyConfig.validation.messages = {\n ...formlyConfig.validation?.messages,\n maxLength: simpleValidationMessage,\n };\n }\n if (\n control.specificControlData?.allowOnlyFuture ||\n control.specificControlData?.allowOnlyPast\n ) {\n formlyConfig.type = 'datepicker';\n const checkDateValidation = {\n checkDate: {\n expression: (c: AbstractControl, field: FormlyFieldConfig) => {\n simpleValidationMessage =\n Utils.findErrorTranslationValueOrDefault(\n control.errorsTranslations,\n this.currentLanguageIso,\n 'simpleValidation'\n );\n\n const currentDate = new Date();\n currentDate.setHours(0, 0, 0, 0);\n\n if (control.specificControlData?.allowOnlyFuture) {\n if (!c.value || c.value === '') return true;\n return c.value > currentDate;\n }\n if (control.specificControlData?.allowOnlyPast) {\n if (!c.value || c.value === '') return true;\n return c.value < currentDate;\n }\n return true;\n },\n message: (error: any, field: FormlyFieldConfig) => {\n return simpleValidationMessage;\n },\n },\n };\n formlyConfig.validators = {\n ...formlyConfig.validators,\n ...checkDateValidation,\n };\n }\n }\n\n //control.specificControlData.type === 4 is phone\n if (control.specificControlData?.type === 4) {\n var phoneErrorLabel = this.flux?.find(\n (f) => f?.config?.componentCollected === control?.identifier\n )?.config?.phoneErrorLabel;\n var phoneErrorLabelValue = '';\n if (phoneErrorLabel != null && Array.isArray(phoneErrorLabel)) {\n phoneErrorLabelValue =\n (phoneErrorLabel as LabelInfo[]).find(\n (l) => l.languageIso === this.currentLanguageIso\n )?.value ?? '';\n }\n\n formlyConfig.validators = {\n phoneValid: {\n expression: (cont: AbstractControl) => {\n const value = cont.value;\n const phonePattern = new RegExp(\n '^(\\\\+4|)?(07[0-8]{1}[0-9]{1}|02[0-9]{2}|03[0-9]{2}){1}?(\\\\s|\\\\.|-)?([0-9]{3}(\\\\s|\\\\.|-|)){2}$'\n );\n if (value && !phonePattern.test(value)) {\n cont.setErrors({ invalidPhoneNumber: true });\n return false;\n }\n return true;\n },\n message: phoneErrorLabelValue,\n },\n };\n }\n\n if (control.specificControlData?.type === 2) {\n const checkDate2Validation = {\n checkDate2: {\n expression: (c: AbstractControl, field: FormlyFieldConfig) => {\n var dateValue = c.value;\n if (!dateValue && control.specificControlData?.isMandatory) {\n simpleValidationMessage =\n Utils.findErrorTranslationValueOrDefault(\n control.errorsTranslations,\n this.currentLanguageIso,\n 'isMandatoryValidation'\n );\n return false;\n }\n if (\n isNaN(Date.parse(dateValue)) &&\n control.specificControlData?.isMandatory\n )\n return false;\n\n return true;\n },\n message: (error: any, field: FormlyFieldConfig) => {\n if (simpleValidationMessage === '')\n return 'Please enter a valid date';\n\n return simpleValidationMessage;\n },\n },\n };\n formlyConfig.validators = {\n ...formlyConfig.validators,\n ...checkDate2Validation,\n };\n }\n\n return formlyConfig;\n }\n\n async buildPresentationFormFieldAsync(\n step: StepData | undefined,\n control: PresentationControl\n ): Promise<FormlyFieldConfig> {\n let formlyConfig: FormlyFieldConfig = { props: {} };\n\n formlyConfig.type = 'formly-paragraph';\n formlyConfig.className = 'component-text-field';\n formlyConfig.props!['design'] = this.appModel.generatedCss;\n\n var translatedTitle =\n control.translations.find((d) => d.languageIso == this.currentLanguageIso)\n ?.value ??\n control.title ??\n '';\n\n if (control.type == PresentationControlType.Paragraph) {\n const paragraphControl = control as PresentationParagraphControl;\n\n var translatedDescription =\n paragraphControl.specificControlData.descriptionTranslations.find(\n (d: any) => d.languageIso == this.currentLanguageIso\n )?.value ?? '';\n var translatedParagraphTitle =\n paragraphControl.specificControlData.text.find(\n (d: any) => d.languageIso == this.currentLanguageIso\n )?.value ?? '';\n\n formlyConfig.defaultValue = translatedDescription;\n formlyConfig.props!['translatedDescription'] = translatedDescription;\n formlyConfig.props!['translatedParagraphTitle'] =\n translatedParagraphTitle;\n formlyConfig.type = 'formly-paragraph';\n formlyConfig.className = 'component-text-field';\n } else if (control.type == PresentationControlType.Download) {\n formlyConfig = this.CreateDownloadDocsFieldConfig(control);\n } else if (control.type == PresentationControlType.View) {\n formlyConfig = this.CreateViewDocsFieldConfig(control);\n } else if (control.type == PresentationControlType.Status) {\n let statusName =\n this.appModel.statuses.find(\n (s) => s.id === this.fillData?.metadata.statusId\n )?.name || 'no status name';\n\n formlyConfig.defaultValue = statusName;\n formlyConfig.type = 'formly-paragraph';\n formlyConfig.className = 'component-text-field';\n } else {\n if (\n control.type == PresentationControlType.FluxComponent &&\n this.controlIdsWithValues &&\n control.collectionControlIdentifier\n ) {\n const fillValue =\n this.controlIdsWithValues[control.collectionControlIdentifier];\n if (fillValue) {\n switch (typeof fillValue) {\n case 'boolean':\n formlyConfig.defaultValue = fillValue ? '&check;' : '&cross;';\n break;\n\n default:\n if (fillValue?.name) {\n formlyConfig.defaultValue = fillValue.name;\n } else {\n formlyConfig.defaultValue = fillValue;\n }\n break;\n }\n }\n }\n }\n\n formlyConfig.id = control.identifier;\n formlyConfig.props!['isDisplayMode'] = true;\n formlyConfig.props!['collectionControlIdentifier'] =\n control.collectionControlIdentifier;\n formlyConfig.props!['label'] = translatedTitle;\n formlyConfig.props!['langIso'] = this.currentLanguageIso;\n\n this.formlyPresentationFields.push(formlyConfig);\n\n return formlyConfig;\n }\n\n async buildApiMethodFormFieldAsync(\n step: StepData | undefined,\n control: PresentationControl\n ): Promise<FormlyFieldConfig> {\n let formlyConfig: FormlyFieldConfig = { props: {} };\n\n formlyConfig.type = 'formly-paragraph';\n formlyConfig.className = 'component-text-field';\n formlyConfig.props!['design'] = this.appModel.generatedCss;\n\n var translatedTitle =\n control.translations.find((d) => d.languageIso == this.currentLanguageIso)\n ?.value ??\n control.title ??\n '';\n\n formlyConfig.id = control.identifier;\n formlyConfig.props!['isDisplayMode'] = true;\n formlyConfig.props!['apiMethodId'] = control.apiMethodId;\n formlyConfig.props!['apiMethodFieldId'] = control.apiMethodFieldId;\n formlyConfig.props!['label'] = translatedTitle;\n\n if (control.apiMethodFieldId) {\n const val = this.findInApiCallsResponses(control.apiMethodFieldId);\n formlyConfig.defaultValue = val;\n }\n\n this.formlyPresentationFields.push(formlyConfig);\n\n return formlyConfig;\n }\n\n private attachToDependentDictionaryIfNecessary(\n dependentDictionary: DependentDictionaryData,\n formlyConfig: FormlyFieldConfig\n ) {\n // Handle dictionary dependencies\n if (\n dependentDictionary &&\n dependentDictionary.dictionaryControlIdentifier\n ) {\n const parentKey = dependentDictionary.dictionaryControlIdentifier;\n const dependentValueIds = dependentDictionary.dependentValueIds || [];\n\n formlyConfig.expressions = {\n hide: (field: FormlyFieldConfig) => {\n const shouldShow = this.shouldShowDependentField(\n parentKey,\n dependentValueIds,\n this.model\n );\n return !shouldShow;\n },\n };\n }\n }\n\n private attachToValueChanges(controlId: string, options: FormlyFieldConfig) {\n options.props!['onSelectedValueChanged'] = async (val: any) => {\n this.model[controlId] = val;\n var referenceDictionaries = Array.from(\n this.dictionaryMap.values()\n ).filter((d) => d.referenceId == val.dictionaryId);\n if (referenceDictionaries?.length > 0) {\n this.removeReferenceFields(options);\n\n var referenceDictionariesWithFilteredValues =\n this.createReferenceDictionariesFromSelectedValue(\n referenceDictionaries,\n val\n );\n const parentSpecificData = options.props?.[\n 'specificData'\n ] as DictionaryControlData;\n await this.addReferenceDictionaryFieldsIfNecessary(\n referenceDictionariesWithFilteredValues,\n options,\n options.type,\n parentSpecificData?.relatedDictionariesTranslations || []\n );\n } else {\n this.removeReferenceFields(options);\n }\n this.updateFormlyConfig();\n };\n }\n\n createReferenceDictionariesFromSelectedValue(\n allDictionaries: DictionaryDto[],\n selectedValue: any\n ): DictionaryDto[] {\n const newDictionaries: DictionaryDto[] = [];\n\n allDictionaries.forEach((dictionary) => {\n const filteredValues =\n dictionary.values?.filter((value) =>\n value.referenceValues.some(\n (refValue) => refValue.id === selectedValue.id\n )\n ) || [];\n\n if (filteredValues.length > 0) {\n const newDictionary: DictionaryDto = {\n ...dictionary,\n values: filteredValues,\n };\n\n newDictionaries.push(newDictionary);\n }\n });\n\n return newDictionaries;\n }\n\n shouldShowDependentField(\n parentKey: string,\n dependentValueIds: number[],\n model: any = {}\n ): boolean {\n // Retrieve the value of the parent dictionary control\n const parentValue = this.getNestedValue(\n model,\n parentKey\n ) as DictionaryValue;\n\n const idValue = parentValue?.id\n ? parentValue.id\n : (parentValue as unknown as number);\n // Check if the parent value is in the dependentValueIds\n if (parentValue && dependentValueIds.includes(idValue)) {\n return true;\n }\n return false;\n }\n\n getNestedValue(obj: any, path: string): any {\n const keys = path.split('.');\n let value = obj;\n for (const key of keys) {\n value = value[key];\n if (value === undefined) {\n return undefined;\n }\n }\n return value;\n }\n\n submit(): void {\n console.log('Form Data:', this.form.value);\n if (this.form.invalid) {\n console.log('Form data has validation errors.');\n this.scrollToErrorService.scrollToFirstError(this.form);\n }\n }\n\n /**\n * Public method to trigger scroll to first error - can be called from other components\n */\n public scrollToFirstValidationError(): void {\n this.scrollToErrorService.scrollToFirstError(this.form);\n }\n\n /**\n * Public method to scroll to a specific field by name\n */\n public scrollToField(fieldName: string): void {\n this.scrollToErrorService.scrollToField(fieldName);\n }\n\n /**\n * Debug method to help troubleshoot scroll issues\n */\n public debugFormElements(): void {\n this.scrollToErrorService.debugLogFormElements();\n }\n\n async constructDictionary(\n control: ControlData,\n options: FormlyFieldConfig\n ): Promise<void> {\n const specificData = control.specificControlData;\n options.type =\n specificData.showAsRadioButtonsList === true\n ? `formly-radio`\n : `formly-dictionary-dropdown-tree`;\n\n options.props!['specificData'] = specificData;\n\n const dictionaryUuid = specificData.dictionaryUUID;\n\n if (dictionaryUuid) {\n const dictionary = this.dictionaryMap.get(dictionaryUuid);\n if (dictionary) {\n if (dictionary.referenceId) {\n options.props!['dictionaryId'] = dictionaryUuid;\n this.constructDictionaryWithReferences(\n dictionary,\n options,\n specificData\n );\n this.attachToValueChanges(control.identifier, options);\n } else {\n options.type =\n specificData.showAsRadioButtonsList === true\n ? 'formly-radio'\n : 'formly-dictionary-dropdown-tree';\n options.props!['dictionaryId'] = dictionaryUuid;\n this.constructDictionaryWithReferences(\n dictionary,\n options,\n specificData\n );\n this.attachToValueChanges(control.identifier, options);\n }\n } else {\n console.warn(`Dictionary not found for UUID ${dictionaryUuid}`);\n }\n } else {\n console.warn(\n `UUID not found for dictionary ID ${specificData.dictionaryId}`\n );\n }\n }\n\n private findDictionaryValueObject(\n dictionary: DictionaryDto | undefined,\n value: any\n ): DictionaryValueDto | undefined {\n if (\n !dictionary ||\n !dictionary.values ||\n value === null ||\n value === undefined\n ) {\n return undefined;\n }\n if (typeof value === 'object' && value?.id != null) {\n return dictionary.values.find((v) => v.id === value.id);\n } else if (typeof value === 'number' || typeof value === 'string') {\n const valueId = Number(value);\n if (!isNaN(valueId)) {\n return dictionary.values.find((v) => v.id === valueId);\n }\n }\n return undefined;\n }\n\n private async initializeReferenceFields(\n fields: FormlyFieldConfig[],\n rootConfig: FormlyFieldConfig[] = this.formlyConfig\n ): Promise<void> {\n if (!fields) return;\n const fieldsToProcess = [...fields];\n\n for (const field of fieldsToProcess) {\n const fieldKey = field.key as string;\n if (\n fieldKey &&\n field.props?.['dictionaryId'] &&\n field.props?.['specificData']\n ) {\n const control = this.form.get(fieldKey);\n const specificData = field.props[\n 'specificData'\n ] as DictionaryControlData;\n const dictionaryUuid = field.props['dictionaryId'] as string;\n const mainDictionary = this.dictionaryMap.get(dictionaryUuid);\n\n let valueToUse: any = null;\n\n if (control && control.value !== null && control.value !== undefined) {\n valueToUse = control.value;\n } else if (\n field.defaultValue !== null &&\n field.defaultValue !== undefined\n ) {\n valueToUse = field.defaultValue;\n } else if (\n this.model &&\n this.model[fieldKey] !== null &&\n this.model[fieldKey] !== undefined\n ) {\n valueToUse = this.model[fieldKey];\n }\n\n let selectedValueObject: DictionaryValueDto | undefined | null = null;\n if (valueToUse !== null && mainDictionary?.id != null) {\n selectedValueObject = this.findDictionaryValueObject(\n mainDictionary,\n valueToUse\n );\n }\n\n const fieldConfigInTree = this.findFieldByKey(rootConfig, fieldKey);\n if (!fieldConfigInTree) {\n continue;\n }\n\n this.removeReferenceFields(fieldConfigInTree);\n\n if (\n selectedValueObject &&\n selectedValueObject.id != null &&\n mainDictionary?.id != null\n ) {\n const potentialReferenceDictionaries = Array.from(\n this.dictionaryMap.values()\n ).filter((dict) => dict.referenceId === mainDictionary.id);\n\n if (potentialReferenceDictionaries.length > 0) {\n const referenceDictionariesToShow =\n this.createReferenceDictionariesFromSelectedValue(\n potentialReferenceDictionaries,\n selectedValueObject\n );\n\n if (referenceDictionariesToShow.length > 0) {\n await this.addReferenceDictionaryFieldsIfNecessary(\n referenceDictionariesToShow,\n fieldConfigInTree,\n fieldConfigInTree.type,\n specificData?.relatedDictionariesTranslations || []\n );\n }\n }\n }\n }\n\n if (field.fieldGroup && field.fieldGroup.length > 0) {\n await this.initializeReferenceFields(field.fieldGroup, rootConfig);\n }\n }\n if (\n fields === this.formlyConfig ||\n fields === this.formlyConfig[0]?.fieldGroup\n ) {\n this.updateFormlyConfig();\n this.formlyConfigUpdated.emit();\n this.cdRef.detectChanges();\n }\n }\n\n constructDictionaryWithReferences(\n dictionary: DictionaryDto,\n options: FormlyFieldConfig,\n dictionaryControlData: DictionaryControlData\n ) {\n if (options.props) {\n var currentLanguageId = Utils.findLanguageIdByIso(\n this.availableLanguages,\n this.currentLanguageIso\n );\n\n // Pass preloaded dictionary data to formly component\n options.props['dictionaryData'] = dictionary;\n options.props['languages'] = this.availableLanguages;\n options.props['preloadedDictionaries'] = this.dictionaryMap;\n options.props['usePreloadedData'] = true;\n\n options.props.options = dictionary.values?.map((value) => ({\n value: value,\n label:\n Utils.findValueTranslation(\n value.valueTranslations,\n currentLanguageId\n ) || value.name,\n currentLanguageIso: this.currentLanguageIso,\n relatedDictionariesTranslations:\n dictionaryControlData.relatedDictionariesTranslations,\n }));\n\n options.props['selectedRelatedDictionaries'] =\n dictionaryControlData.selectedRelatedDictionaries || [];\n\n let initialValueObject: DictionaryValue | null = null;\n const controlKey = options.key as string;\n const dictionaryDefaultValueId =\n dictionaryControlData.dictionaryDefaultValueId;\n if (\n !(this.model && this.model[controlKey] != null) &&\n dictionaryDefaultValueId != null\n ) {\n initialValueObject = this.findAndMapDefaultValue(\n dictionary,\n dictionaryDefaultValueId\n );\n }\n\n options.defaultValue = initialValueObject;\n\n // Pass default value ID to formly component\n options.props['dictionaryDefaultValueId'] = dictionaryDefaultValueId;\n\n const controlId = options.key;\n if (this.fillData && this.fillData.flux) {\n for (const step of this.fillData.flux) {\n for (const section of step.sections) {\n const control = section.controls.find(\n (ctrl: {\n controlId: string | number | (string | number)[] | undefined;\n }) => ctrl.controlId === controlId\n );\n if (control && control.fillValue && control.fillValue.name) {\n options.props['value'] = control.fillValue.name;\n break;\n }\n }\n }\n }\n }\n this.updateFormlyConfig();\n }\n\n async addReferenceDictionaryFieldsIfNecessary(\n referrencedDictionaries: any[],\n parentDictionaryField: FormlyFieldConfig,\n type: any,\n relatedDictionariesTranslations: DictionaryLabelInfo[]\n ): Promise<void> {\n if (referrencedDictionaries.length > 0) {\n const selectedRelatedDictionaries =\n parentDictionaryField.props?.['selectedRelatedDictionaries'] || [];\n\n const selectedDictionaries = referrencedDictionaries.filter((dict) =>\n selectedRelatedDictionaries.includes(dict.uuid)\n );\n\n selectedDictionaries.forEach((referenceDictionary) => {\n const referenceDictionaryUuid = referenceDictionary.uuid;\n\n const componentOnlyForConfig = this.flux\n .flatMap((s) => s.sections)\n .flatMap((sec) => sec.controls)\n .find(\n (ctrl) =>\n ctrl?.specificControlData?.dictionaryUUID ===\n referenceDictionaryUuid && ctrl?.isOnlyForConfig === true\n );\n\n const newFieldKey =\n componentOnlyForConfig?.identifier ??\n `extra_${referenceDictionaryUuid}`;\n\n let referenceDictionaryLabel = referenceDictionary.name;\n\n const specificTranslationValue = relatedDictionariesTranslations\n .find((d) => d.dictionaryUUID == referenceDictionaryUuid)\n ?.translations?.find(\n (t) => t.languageIso == this.currentLanguageIso\n )?.value;\n\n if (\n specificTranslationValue &&\n specificTranslationValue.trim() !== ''\n ) {\n referenceDictionaryLabel = specificTranslationValue;\n } else {\n referenceDictionaryLabel = '';\n }\n const currentLanguageId = Utils.findLanguageIdByIso(\n this.availableLanguages,\n this.currentLanguageIso\n );\n\n const newField: FormlyFieldConfig = {\n key: newFieldKey,\n type: type,\n props: {\n label: referenceDictionaryLabel,\n design: this.design,\n dictionaryId: referenceDictionaryUuid,\n dictionaryData: referenceDictionary,\n languages: this.availableLanguages,\n preloadedDictionaries: this.dictionaryMap,\n usePreloadedData: true,\n currentLanguageIso: this.currentLanguageIso,\n currentLanguageId: currentLanguageId,\n required: true,\n attributes: {\n style: this.styleObjectToStringExceptBackground(\n this.design[`.font-list`] || {}\n ),\n },\n options: referenceDictionary.values?.map((value: any) => ({\n value: value,\n label:\n Utils.findValueTranslation(\n value.valueTranslations,\n currentLanguageId\n ) || value.name,\n currentLanguageIso: this.currentLanguageIso,\n })),\n },\n };\n\n if (referenceDictionary.defaultValueId) {\n const defaultVal = this.findAndMapDefaultValue(\n referenceDictionary,\n referenceDictionary.defaultValueId\n );\n if (defaultVal) {\n newField.defaultValue = defaultVal;\n }\n }\n\n const parentFieldGroup = parentDictionaryField.parent\n ? parentDictionaryField.parent.fieldGroup\n : null;\n if (parentFieldGroup) {\n const parentIndex = parentFieldGroup.findIndex(\n (field) => field.key === parentDictionaryField.key\n );\n if (parentIndex !== -1) {\n const endIndex = this.findLastChildIndex(\n parentFieldGroup,\n parentIndex\n );\n\n const percentageToAdd = this.getExistingPercentage(\n parentFieldGroup,\n parentIndex\n );\n newField.className = percentageToAdd === 0\n ? parentDictionaryField.className\n : this.getPercentageClassName(percentageToAdd);\n\n parentFieldGroup.splice(endIndex + 1, 0, newField);\n\n const classNameToAdd =\n type === 'radio' ? ` component-radio` : ` component-data`;\n newField.className += classNameToAdd;\n this.attachToValueChanges(newFieldKey, newField);\n this.updateFormlyConfig();\n }\n }\n });\n }\n }\n\n getExistingPercentage(fields: FormlyFieldConfig[], index: number): number {\n let percentage = 0;\n const field = fields[index];\n const className = field.className;\n if (field.type?.toString() !== StepControlType.NewRow.toString()) {\n if (className && className.startsWith('percentage-width-')) {\n percentage =\n (parseInt(className.replace('percentage-width-', ''), 10) * 100) / 12;\n } else if (className && className.startsWith('pixel-width-')) {\n const pixels = parseInt(className.replace('pixel-width-', ''), 10);\n percentage = (pixels / 1000) * 100;\n }\n }\n return percentage;\n }\n\n calculateRemainingPercentageForRange(\n fields: FormlyFieldConfig[],\n startIndex: number,\n endIndex: number\n ): number {\n let remainingPercentage = 100;\n\n for (let i = startIndex; i <= endIndex; i++) {\n const percentage = this.getExistingPercentage(fields, i);\n remainingPercentage -= percentage;\n }\n return Math.max(remainingPercentage, 0);\n }\n\n removeReferenceFields(currentFormlyFieldConfig: FormlyFieldConfig) {\n const referredInDictionariesUUIds =\n currentFormlyFieldConfig.props?.['dictionaryData']\n ?.referredInDictionariesUUIds;\n\n if (Array.isArray(referredInDictionariesUUIds)) {\n const parentFieldGroup = currentFormlyFieldConfig.parent\n ? currentFormlyFieldConfig.parent.fieldGroup\n : null;\n if (parentFieldGroup) {\n const parentIndex = parentFieldGroup.findIndex(\n (field) => field.key === currentFormlyFieldConfig.key\n );\n\n if (parentIndex !== -1) {\n for (const item of referredInDictionariesUUIds) {\n const idToFind = 'extra_' + item;\n\n for (let i = parentFieldGroup.length - 1; i > parentIndex; i--) {\n const currentFieldKey = parentFieldGroup[i].key?.toString();\n if (currentFieldKey && currentFieldKey === idToFind) {\n this.clearFormControlValue(idToFind);\n parentFieldGroup.splice(i, 1);\n }\n }\n }\n }\n }\n }\n }\n\n async addChildDictionaryField(\n childDictionaryUuid: string,\n parentDictionaryField: FormlyFieldConfig,\n type: any,\n relatedDictionariesTranslations: DictionaryLabelInfo[]\n ): Promise<void> {\n if (childDictionaryUuid) {\n const childDictionary = this.dictionaryMap.get(childDictionaryUuid);\n if (childDictionary) {\n let childDictionaryLabel = childDictionary.name;\n const translation =\n relatedDictionariesTranslations\n .find((d) => d.dictionaryUUID == childDictionaryUuid)\n ?.translations.find((t) => t.languageIso == this.currentLanguageIso)\n ?.value || '';\n if (translation) {\n childDictionaryLabel = translation;\n }\n const newField: FormlyFieldConfig = {\n key: `${parentDictionaryField.key}_child_${childDictionaryUuid}`,\n type: type,\n props: {\n label: childDictionaryLabel,\n dictionaryData: childDictionary,\n languages: this.availableLanguages,\n preloadedDictionaries: this.dictionaryMap,\n options: childDictionary.values?.map((value) => ({\n value: value.id,\n label: value.name,\n })),\n required: true,\n attributes: {\n style: this.styleObjectToStringExceptBackground(\n this.design[`.font-list`] || {}\n ),\n },\n },\n hooks: {\n onInit: (field) => {\n const unsubscribe$ = new Subject<void>();\n this.fieldUnsubscribeSubjects.push(unsubscribe$);\n\n field.formControl?.valueChanges\n .pipe(takeUntil(unsubscribe$))\n .subscribe(async (selectedValue) => {\n const selectedOption = childDictionary.values?.find(\n (val) => val.id === selectedValue\n );\n if (selectedOption && selectedOption.childDictionaryUUID) {\n await this.addChildDictionaryField(\n selectedOption.childDictionaryUUID,\n field,\n type,\n relatedDictionariesTranslations\n );\n } else {\n this.removeChildFields(field);\n this.updateFormlyConfig();\n }\n });\n\n field.hooks!.onDestroy = () => {\n unsubscribe$.next();\n unsubscribe$.complete();\n };\n },\n },\n };\n\n const parentFieldGroup = parentDictionaryField.parent\n ? parentDictionaryField.parent.fieldGroup\n : null;\n if (parentFieldGroup) {\n const parentIndex = parentFieldGroup.findIndex(\n (field) => field.key === parentDictionaryField.key\n );\n if (parentIndex !== -1) {\n const endIndex = this.findLastChildIndex(\n parentFieldGroup,\n parentIndex\n );\n\n const percentageToAdd = this.getExistingPercentage(\n parentFieldGroup,\n parentIndex\n );\n newField.className = this.getPercentageClassName(percentageToAdd);\n parentFieldGroup.splice(endIndex + 1, 0, newField);\n\n const classNameToAdd =\n type === 'radio' ? ` component-radio` : ` component-data`;\n newField.className += classNameToAdd;\n //this.attachToValueChanges(newFieldKey, newField);\n this.updateFormlyConfig();\n }\n }\n } else {\n console.warn(\n `Child dictionary not found for UUID ${childDictionaryUuid}`\n );\n }\n }\n }\n\n onCompletion(): void {\n console.log('Origin form completed successfully');\n this.completionEvent.emit();\n }\n\n findLastChildIndex(fields: FormlyFieldConfig[], parentIndex: number): number {\n const parentKeyPrefix = `${fields[parentIndex].key}_`;\n let lastIndex = parentIndex;\n\n for (let i = parentIndex + 1; i < fields.length; i++) {\n if (fields[i].key?.toString().startsWith(parentKeyPrefix)) {\n lastIndex = i;\n } else {\n break;\n }\n }\n\n return lastIndex;\n }\n\n findFieldByKey(\n fields: FormlyFieldConfig[],\n key: string\n ): FormlyFieldConfig | null {\n if (!fields) return null;\n for (const field of fields) {\n if (field.type === 'stepper' && field.fieldGroup) {\n const foundInStepper = this.findFieldByKey(field.fieldGroup, key);\n if (foundInStepper) return foundInStepper;\n }\n\n if (field.key === key) {\n return field;\n }\n if (field.fieldGroup) {\n const found = this.findFieldByKey(field.fieldGroup, key);\n if (found) return found;\n }\n }\n return null;\n }\n\n removeChildFields(parentField: FormlyFieldConfig) {\n const parentFieldGroup = parentField.parent\n ? parentField.parent.fieldGroup\n : null;\n\n if (parentFieldGroup) {\n const parentIndex = parentFieldGroup.findIndex(\n (field) => field.key === parentField.key\n );\n\n if (parentIndex !== -1) {\n const parentKeyPrefix = `${parentField.key}_child_`;\n\n // Remove only the relevant child fields\n for (let i = parentFieldGroup.length - 1; i > parentIndex; i--) {\n const currentFieldKey = parentFieldGroup[i].key?.toString();\n if (currentFieldKey && currentFieldKey.startsWith(parentKeyPrefix)) {\n this.clearFormControlValue(currentFieldKey);\n parentFieldGroup.splice(i, 1);\n }\n }\n }\n }\n }\n\n /**\n * NEW: Load ALL dictionaries needed for this app using the new app-based endpoint\n */\n private async loadAllRequiredDictionaries(): Promise<void> {\n if (!this.appModel?.applicationUuid) {\n console.warn('No app UUID available for dictionary loading');\n return;\n }\n\n try {\n const response = await firstValueFrom(\n this.service.loadAppDictionaries(\n this.appModel.applicationUuid,\n EnvironmentType.Config\n )\n );\n\n if (!response.success) {\n console.error(\n '❌ Backend failed to load dictionaries:',\n response.errors\n );\n return;\n }\n\n // Simple assignment - ALL dictionaries and dependencies already loaded by backend\n Object.entries(response.dictionaries).forEach(([uuid, dict]) => {\n this.dictionaryMap.set(uuid, dict);\n });\n } catch (error) {\n console.error('❌ Failed to load app dictionaries:', error);\n }\n }\n\n clearFormControlValue(fieldKey: string) {\n const keys = fieldKey.split('.');\n let control = this.form;\n let model = this.model;\n\n for (let i = 0; i < keys.length - 1; i++) {\n control = control.get(keys[i]) as FormGroup;\n model = model[keys[i]];\n }\n\n const finalKey = keys[keys.length - 1];\n if (control && control.get(finalKey)) {\n control.removeControl(finalKey);\n }\n\n if (model && model[finalKey] !== undefined) {\n delete model[finalKey];\n }\n }\n\n findField(\n fields: FormlyFieldConfig[],\n key: string\n ): FormlyFieldConfig | null {\n for (const field of fields) {\n if (field.key === key) {\n return field;\n }\n if (field.fieldGroup) {\n const nestedField = this.findField(field.fieldGroup, key);\n if (nestedField) {\n return nestedField;\n }\n }\n }\n return null;\n }\n\n private populateModelWithFillData(fillData: any): void {\n if (fillData) {\n let auxModel = ModelPopulationHelper.populateModelWithFillData(\n fillData,\n this.flux,\n this.dictionaryMap,\n this.availableLanguages\n );\n this.model = { ...auxModel };\n this.cdRef.detectChanges();\n }\n }\n\n private findAndMapDefaultValue(\n dictionary: DictionaryDto | undefined,\n defaultValueId: number\n ): DictionaryValue | null {\n return ModelPopulationHelper.findAndMapDefaultValue(\n dictionary,\n defaultValueId,\n this.availableLanguages\n );\n }\n\n updateFormlyConfig() {\n this.formlyConfig = [...this.formlyConfig];\n }\n\n private unsubscribeFromAllFields() {\n for (const subject of this.fieldUnsubscribeSubjects) {\n subject.next();\n subject.complete();\n }\n this.fieldUnsubscribeSubjects = [];\n }\n\n ngOnDestroy() {\n this.unsubscribeFromAllFields();\n if (this.collectorHandlerSubscriptions) {\n this.collectorHandlerSubscriptions.unsubscribe();\n }\n if (this.actionStepSubscriptions) {\n this.actionStepSubscriptions.unsubscribe();\n }\n if (this.actionStepHandler) {\n this.actionStepHandler.destroy();\n }\n }\n\n constructButtons(buttonsConfig: any[]): any[] {\n if (!buttonsConfig || buttonsConfig.length === 0) {\n return [];\n }\n return buttonsConfig.map((button) => ({\n type: button.value.toLowerCase(),\n label: button.translations?.[this.currentLanguageIso] || button.value,\n styleKey: `.button-${button.value.toLowerCase()}`,\n }));\n }\n\n private styleObjectToStringExceptBackground(styleObj: any): string {\n return Object.entries(styleObj)\n .filter(([key, value]) => key !== 'background-color')\n .map(([key, value]) => `${key}: ${value}`)\n .join('; ');\n }\n\n validateMethodApi(data: ApiValidateRequest): Observable<boolean> {\n if (data.apiId === undefined || data.appId === undefined) {\n return of(false);\n }\n\n return this.applicationDataService.validateApi(data).pipe(\n map((response) => {\n console.log('API validation response:', response);\n return !!response;\n }),\n catchError((error) => {\n console.error('Error validating ' + data.data, error);\n return of(false);\n })\n );\n }\n\n /**\n * Public method to clear the saving after actions state\n * Called by stepper component after saveAppDataStep completes\n */\n public clearSavingAfterActionsState(): void {\n if (this.isSavingAfterActions) {\n this.isSavingAfterActions = false;\n this.isLoading = false;\n this.cdRef.detectChanges();\n }\n }\n loadingMessage: string | null = null;\n}\n","<div *ngIf=\"isLoading\" class=\"loading-overlay\">\n <mat-spinner></mat-spinner>\n</div>\n<div [hidden]=\"isLoading\">\n <div *ngIf=\"showLanguageSelector\" appearance=\"outline\" class=\"right-aligned\">\n <button [matMenuTriggerFor]=\"flags\" mat-icon-button class=\"m-r-5\">\n <img\n [src]=\"returnFLag(currentLanguageIso)\"\n class=\"rounded-circle object-cover icon-20\"\n />\n </button>\n <mat-menu #flags=\"matMenu\" class=\"cardWithShadow\">\n <button\n mat-menu-item\n *ngFor=\"let lang of applicationLanguages()\"\n (click)=\"changeLanguage(lang.iso)\"\n >\n <div class=\"d-flex align-items-center\">\n <img\n [src]=\"returnFLag(lang.iso)\"\n class=\"rounded-circle object-cover icon-20\"\n />\n <span class=\"mat-subtitle-1 f-s-14\">{{ lang.name }}</span>\n </div>\n </button>\n </mat-menu>\n </div>\n\n <br />\n <div class=\"form-container\">\n <form [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <formly-form\n [model]=\"model\"\n [fields]=\"formlyConfig\"\n [options]=\"options\"\n [form]=\"form\"\n ></formly-form>\n </form>\n </div>\n</div>\n","import { STEPPER_GLOBAL_OPTIONS } from '@angular/cdk/stepper';\nimport {\n ChangeDetectorRef,\n Component,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { MatStepper } from '@angular/material/stepper';\nimport { FieldType, FormlyFieldConfig } from '@ngx-formly/core';\nimport { Subscription, timer, firstValueFrom, catchError, of } from 'rxjs';\nimport {\n AppData,\n FluxType,\n AppDataStep,\n AppDataSection,\n AppDataControl,\n AppDataFill,\n StepControlType,\n DictionaryControlData,\n} from '../../models/forms.model';\nimport { ApplicationDataService } from '../../services/applicationData.service';\nimport { CollectorFormComponent } from '../../origin-form.component';\nimport { ScrollToErrorService } from '../../services/scroll-to-error.service';\n\n@Component({\n selector: 'app-formly-field-stepper',\n templateUrl: './formly-field-stepper.component.html',\n styleUrls: ['./formly-field-stepper.component.scss'],\n providers: [\n {\n provide: STEPPER_GLOBAL_OPTIONS,\n useValue: { displayDefaultIndicatorType: false },\n },\n ApplicationDataService,\n ],\n})\nexport class FormlyFieldStepperComponent\n extends FieldType\n implements OnInit, OnDestroy {\n @ViewChild(MatStepper) stepper!: MatStepper;\n buttonsGroups: any[][] = [];\n showSteps: boolean = true;\n showStepsLabels: boolean = true;\n showStepsCounter: boolean = true;\n showButtonsOnTop: boolean;\n showProgressBar: boolean;\n showFinalStep: boolean = false;\n isFlowFinished: boolean = false;\n appData: AppData;\n isDisplayMode: boolean = false;\n isDebug: boolean = false;\n isNavigationInProgress: boolean = false;\n isSaving: boolean = false;\n currentStepIndex: number = 0;\n loadedSteps: boolean[] = [];\n private configUpdateSubscription: Subscription;\n private visibleFieldsUpdatedSubscription: Subscription;\n private updateAndGoNextSubscription: Subscription;\n private goNextSubscription: Subscription;\n concatenatedFormStyle: any = {};\n buttonsVerticalPosition: string = 'bottom';\n\n isNavigating: boolean = false;\n\n finalStepFieldConfig: FormlyFieldConfig;\n filteredVisibleSteps: any[] = [];\n progressBarStyles: any = {};\n\n constructor(\n private applicationDataService: ApplicationDataService,\n private collectorForm: CollectorFormComponent,\n private cdr: ChangeDetectorRef,\n private scrollToErrorService: ScrollToErrorService\n ) {\n super();\n }\n\n async ngOnInit(): Promise<void> {\n this.props['component'] = this;\n this.applyProgressBarStyles();\n this.configUpdateSubscription =\n this.collectorForm.formlyConfigUpdated.subscribe(() => {\n if (this.field && this.field.fieldGroup) {\n this.field.fieldGroup = this.extractFinalStepIfNecessary(\n this.field.fieldGroup\n );\n }\n this.createFieldGroupButtons();\n });\n\n this.visibleFieldsUpdatedSubscription =\n this.collectorForm.visibleFieldsUpdated.subscribe((visibleFields) => {\n this.filteredVisibleSteps = visibleFields;\n });\n\n this.updateAndGoNextSubscription =\n this.collectorForm.formlyUpdateAndGoNext.subscribe(async (e) => {\n if (e && e.selectedOfferId && this.appData?.fillData) {\n this.appData.fillData.metadata.offerId = e.selectedOfferId;\n }\n const step = this.field.fieldGroup![this.currentStepIndex];\n await this.navigateAsync('next', step);\n });\n\n this.goNextSubscription = this.collectorForm.formlyGoNext.subscribe((e) => {\n this.goNext();\n });\n await this.initStep();\n }\n\n async ngOnChanges(changes: any): Promise<void> {\n if (changes.field) {\n await this.updateAppData(false);\n }\n }\n\n async ngAfterViewInit() {\n await this.createAppData(this.field.props);\n if (this.currentStepIndex >= this.totalStepsCount) {\n this.showFinalStep = true;\n this.showSteps = false;\n this.showStepsCounter = false;\n } else if (this.stepper) {\n this.stepper.linear = false;\n this.stepper.selectedIndex = this.currentStepIndex;\n const steps = this.stepper._steps.toArray();\n for (let i = 0; i < this.currentStepIndex; i++) {\n steps[i].completed = true;\n }\n setTimeout(() => {\n this.stepper.linear = true;\n });\n }\n if (this.field.fieldGroup && this.field.fieldGroup.length > 0) {\n this.loadedSteps = Array(this.field.fieldGroup.length).fill(false);\n this.loadedSteps[this.currentStepIndex] = true;\n this.cdr.detectChanges();\n }\n if (!this.showSteps || this.currentStepIndex == 0) {\n this.triggerOnPageSelectedForIndex(this.currentStepIndex);\n }\n }\n\n ngOnDestroy(): void {\n if (this.configUpdateSubscription) {\n this.configUpdateSubscription.unsubscribe();\n }\n if (this.updateAndGoNextSubscription) {\n this.updateAndGoNextSubscription.unsubscribe();\n }\n if (this.goNextSubscription) {\n this.goNextSubscription.unsubscribe();\n }\n if (this.visibleFieldsUpdatedSubscription) {\n this.visibleFieldsUpdatedSubscription.unsubscribe();\n }\n }\n\n async initStep() {\n if (this.field) {\n if (this.field.fieldGroup) {\n this.field.fieldGroup = this.extractFinalStepIfNecessary(\n this.field.fieldGroup\n );\n this.loadedSteps = Array(this.field.fieldGroup.length).fill(false);\n this.loadedSteps[this.currentStepIndex] = true;\n }\n if (this.field.props) {\n this.filteredVisibleSteps = this.field.props['filteredFlux'];\n this.isDebug = this.field.props['isDebug'];\n const stepSettings = this.field.props['stepsSettings'];\n if (stepSettings) {\n this.showSteps = stepSettings.showAllSteps;\n this.showStepsCounter = stepSettings.showCounter;\n this.showStepsLabels = stepSettings.showLabels;\n this.showProgressBar = stepSettings.showProgressBar;\n }\n const designConfig = this.field.props['designConfig'];\n if (designConfig) {\n this.showButtonsOnTop =\n designConfig.buttonsVerticalPosition === 'top';\n }\n\n Object.entries(this.field.props['design'])\n .filter((i) => i[0].startsWith('.form'))\n .forEach((i) => {\n const prop: any = i[1];\n Object.keys(prop).forEach((j) => {\n this.concatenatedFormStyle[j] = prop[j];\n });\n });\n\n this.buttonsVerticalPosition =\n this.field.props['design']['.buttons-container']['align-items'] ==\n 'flex-start'\n ? 'top'\n : 'bottom';\n }\n this.createFieldGroupButtons();\n }\n }\n\n get totalStepsCount(): number {\n return (\n this.field?.fieldGroup?.filter(\n (step) => step.props?.['fluxType'] !== FluxType.Final\n ).length ?? 0\n );\n }\n\n extractFinalStepIfNecessary(\n fieldConfigs: FormlyFieldConfig[]\n ): FormlyFieldConfig[] {\n let filteredConfig: FormlyFieldConfig[] = [];\n this.field.fieldGroup?.forEach((f) => {\n if (f.props && f.props['fluxType'] == FluxType.Final) {\n this.finalStepFieldConfig = f;\n } else {\n filteredConfig.push(f);\n }\n });\n return filteredConfig;\n }\n\n createFieldGroupButtons() {\n if (this.field.fieldGroup) {\n this.buttonsGroups = [];\n this.field.fieldGroup.forEach((fg, i) => {\n const isLast = i === this.field.fieldGroup!.length - 1;\n\n let btnDisabled = false;\n if (fg.props) {\n const fluxType = fg.props['fluxType'];\n if (\n fluxType === FluxType.Kyc ||\n fluxType === FluxType.GenerateDocument ||\n fluxType === FluxType.Sign ||\n fluxType === FluxType.Email ||\n fluxType === FluxType.Phone ||\n fluxType === FluxType.OpenBanking\n ) {\n this.buttonsGroups.push([]);\n return;\n }\n\n btnDisabled =\n fluxType === FluxType.Kyc ||\n fluxType === FluxType.Phone ||\n fluxType === FluxType.Email;\n fg.props['buttonsDisabled'] === true;\n if (\n (fluxType === FluxType.Kyc ||\n fluxType === FluxType.Phone ||\n fluxType === FluxType.Email) &&\n fg.props['buttonsDisabled'] === false\n ) {\n btnDisabled = false;\n }\n\n const componentsWithDefaultLabels =\n this.getComponentsWithDefaultLabels();\n if (componentsWithDefaultLabels[fluxType]) {\n fg.props['label'] = componentsWithDefaultLabels[fluxType];\n fg.props['description'] = '';\n }\n }\n\n if (\n fg.props?.['fluxType'] === FluxType.ViewOffer ||\n fg.props?.['fluxType'] === FluxType.Pause\n ) {\n //12=list offers\n this.buttonsGroups.push([]);\n } else {\n const btns = this.createButtons(fg, i, isLast, btnDisabled);\n if (this.props['demoMode'] === true) {\n btns.forEach((b: { type: string }) => {\n if (b.type === 'submit') {\n btns.splice(btns.indexOf(b), 1);\n }\n });\n }\n if (this.props['noButtonsInView'] === true) {\n btns.splice(0, btns.length);\n }\n this.buttonsGroups.push(btns);\n }\n });\n }\n }\n\n async createAppData(props: any) {\n const appDataId = props['appDataId'];\n const applicationId = props['applicationId'] || 0;\n const currentStepId =\n props.metaData?.currentStepId || props.flux[0]?.identifier;\n\n if (props['hasDictionaryDependentSteps']) {\n await timer(150).toPromise();\n }\n\n const stepIndex =\n this.field.fieldGroup?.findIndex(\n (s) => s.props?.['stepId'] === currentStepId\n ) || 0;\n this.isDisplayMode = props['isDisplayMode'] || false;\n\n this.currentStepIndex =\n stepIndex >= 0 && !this.isDisplayMode ? stepIndex : 0;\n\n const statusId = props['statusId'] || '';\n const defaultLanguage = props['defaultLanguage'];\n\n const flux = (props['flux'] || []).map(\n (step: any) =>\n new AppDataStep(\n step.identifier,\n step.type,\n (step.sections || []).map(\n (section: any) =>\n new AppDataSection(\n section.identifier,\n (section.controls || []).map(\n (control: any) =>\n new AppDataControl(\n control.identifier,\n control.fillValue || ''\n )\n )\n )\n )\n )\n );\n const offerId = props?.fillData?.metadata?.offerId || '';\n const isSubmitted = props?.fillData?.metadata?.isSubmitted || false;\n\n const fillData = new AppDataFill(\n appDataId,\n applicationId,\n currentStepId,\n statusId,\n defaultLanguage,\n flux,\n offerId,\n isSubmitted\n );\n\n this.appData = new AppData({\n appDataId: appDataId,\n appConfigurationId: applicationId,\n fillData: fillData,\n withNextStep: false,\n blockPreviousStep: props['blockPreviousStep'] ?? false,\n env: props['env'],\n });\n\n if (!this.isDisplayMode && !props['fillData']) {\n await this.saveAppData();\n this.collectorForm.fillData = fillData;\n }\n }\n\n async saveAppData() {\n if (this.isDisplayMode || this.props['demoMode'] === true) {\n console.log('[Demo Mode] Skipping saveAppData request.');\n return;\n }\n this.isSaving = true;\n try {\n const data = await firstValueFrom(\n this.applicationDataService.saveApp(this.appData).pipe(\n catchError((error) => {\n console.error('Error creating AppData', error);\n return of(null);\n })\n )\n );\n if (data) {\n this.appData.fillData = JSON.parse(data.fillData);\n this.appData.blockPreviousStep = data.blockPreviousStep;\n this.collectorForm.formlyConfigUpdated.emit();\n }\n } catch (error) {\n console.error('Error occurred during saveStep', error);\n } finally {\n this.isSaving = false;\n this.cdr.detectChanges();\n }\n }\n\n async getPreviousStep() {\n if (this.isDisplayMode || this.props['demoMode'] === true) {\n console.log('[Demo Mode] Skipping getPreviousStep request.');\n return;\n }\n await firstValueFrom(\n this.applicationDataService.getPreviousStep(this.appData.appDataId).pipe(\n catchError((error) => {\n console.error('Error getting the previousStep', error);\n return of(null);\n })\n )\n )\n .then((data) => {\n if (data) {\n console.log(data);\n this.appData.fillData = JSON.parse(data.fillData);\n this.appData.blockPreviousStep = data.blockPreviousStep;\n this.collectorForm.formlyConfigUpdated.emit();\n }\n return true;\n })\n .catch((error) => {\n console.error('Error occurred during getPreviousStep', error);\n });\n }\n\n async saveAppDataStep() {\n if (this.isDisplayMode || this.props['demoMode'] === true) {\n console.log('[Demo Mode] Skipping saveAppDataStep request.');\n return;\n }\n\n // Get the current visible step based on currentStepIndex\n\n const currentVisibleStep = this.filteredVisibleSteps[this.currentStepIndex];\n\n if (!currentVisibleStep) {\n console.warn('No current visible step found');\n return;\n }\n\n // Find the corresponding step in fillData.flux based on the visible step identifier\n let currentStep = this.appData.fillData?.flux.find(\n (s) => s.stepId === currentVisibleStep.identifier\n );\n\n // If we can't find it by identifier, create it or update metadata\n if (!currentStep && this.appData.fillData) {\n // Update the currentStepId in metadata to match the current visible step\n this.appData.fillData.metadata.currentStepId =\n currentVisibleStep.identifier;\n\n // Try to find it again after updating metadata\n currentStep = this.appData.fillData.flux.find(\n (s) => s.stepId === currentVisibleStep.identifier\n );\n }\n\n console.log(\n 'Saving step data for step:',\n currentVisibleStep.identifier,\n 'Step data:',\n currentStep\n );\n\n await firstValueFrom(\n this.applicationDataService\n .saveStep(\n this.appData.appDataId,\n currentStep,\n this.appData.fillData?.metadata.offerId\n )\n .pipe(\n catchError((error) => {\n console.error('Error saving AppData', error);\n return of(null);\n })\n )\n )\n .then((data) => {\n if (data) {\n this.collectorForm.fillData = this.appData.fillData = JSON.parse(\n data.fillData\n );\n this.appData.blockPreviousStep = data.blockPreviousStep;\n this.collectorForm.formlyConfigUpdated.emit();\n }\n // Clear the saving after actions flag\n this.collectorForm.clearSavingAfterActionsState();\n return true;\n })\n .catch((error) => {\n console.error('Error occurred during saveStep', error);\n // Clear the saving after actions flag on error as well\n this.collectorForm.clearSavingAfterActionsState();\n });\n }\n\n async updateAppData(saveChanges: boolean) {\n const formValues = this.form.value;\n\n // Get the current visible step to ensure we're updating the right step data\n const currentVisibleStep = this.filteredVisibleSteps[this.currentStepIndex];\n\n const flux = (this.field?.props?.['flux'] || []).map(\n (step: any) =>\n new AppDataStep(\n step.identifier,\n step.type,\n (step.sections || []).map(\n (section: any) =>\n new AppDataSection(\n section.identifier,\n (section.controls || [])\n .filter((control: any) => control.identifier != undefined)\n .map((control: any) => {\n const value = formValues[control.identifier];\n if (control.type !== StepControlType.Dictionary) {\n let fillValue = '';\n if (value !== null && value !== undefined) {\n if (value instanceof Date) {\n const pad = (n: number) =>\n n.toString().padStart(2, '0');\n const formatted = `${pad(value.getDate())}.${pad(\n value.getMonth() + 1\n )}.${value.getFullYear()}`;\n fillValue = formatted;\n } else {\n fillValue =\n typeof value === 'boolean' ? String(value) : value;\n }\n }\n return new AppDataControl(control.identifier, fillValue);\n } else {\n let fillValueId = '';\n let fillValueName = '';\n\n if (value !== null && value !== undefined) {\n if (typeof value === 'object' && value.id != null) {\n fillValueId = String(value.id);\n fillValueName = value.name || '';\n } else if (\n typeof value === 'number' ||\n typeof value === 'string'\n ) {\n fillValueId = String(value);\n const dictionaryControlData =\n control.specificControlData as DictionaryControlData;\n if (dictionaryControlData?.dictionaryUUID) {\n const dictionary =\n this.collectorForm.dictionaryMap.get(\n dictionaryControlData.dictionaryUUID\n );\n const selectedOption = dictionary?.values?.find(\n (v) => v.id == value\n );\n if (selectedOption) {\n fillValueName = selectedOption.name || '';\n } else {\n console.warn(\n `Could not find dictionary value name for ID: ${value} in dictionary ${dictionaryControlData.dictionaryUUID}`\n );\n }\n } else {\n console.warn(\n `Dictionary UUID not found for control: ${control.identifier}`\n );\n }\n }\n }\n\n return new AppDataControl(\n control.identifier,\n fillValueName,\n fillValueId\n );\n }\n })\n )\n )\n )\n );\n\n if (this.appData.fillData) {\n this.appData.fillData.flux = flux;\n\n // Ensure the metadata reflects the current visible step\n if (currentVisibleStep) {\n this.appData.fillData.metadata.currentStepId =\n currentVisibleStep.identifier;\n }\n }\n\n if (saveChanges) {\n await this.saveAppDataStep();\n }\n }\n\n createButtons(\n step: any,\n stepIndex: number,\n last: boolean,\n btnDisabled: boolean\n ): any {\n let buttons: any[] = [];\n if (step.props?.['buttons']?.length > 0) {\n buttons = step.props?.['buttons'];\n } else {\n buttons = this.getDefaultButtons(stepIndex, last);\n }\n buttons.forEach((b) => this.setupButtonProperties(b, btnDisabled));\n if (this.appData?.fillData?.metadata?.isSubmitted) {\n buttons = [];\n }\n return buttons;\n }\n\n private getDefaultButtons(index: number, last: boolean): any[] {\n const buttons: any[] = [];\n\n if (this.appData?.fillData?.metadata?.isSubmitted === true) {\n return buttons;\n }\n\n if (this.isDisplayMode) {\n buttons.push({\n type: 'back',\n label: 'Back',\n styleKey: '.button-back',\n });\n } else {\n if (index !== 0 && this.appData?.blockPreviousStep === false) {\n buttons.push({\n type: 'back',\n label: 'Back',\n styleKey: '.button-back',\n });\n }\n if (!last) {\n buttons.push({ type: 'next', label: 'Next', styleKey: '.button-next' });\n } else {\n buttons.push({\n type: 'submit',\n label: 'Submit',\n styleKey: '.button-submit',\n });\n }\n }\n return buttons;\n }\n\n applyProgressBarStyles() {\n const designConfig = this.field.props?.['design'];\n\n if (designConfig) {\n const progressBarConfig = designConfig['.component-progress-bar'];\n if (progressBarConfig) {\n this.progressBarStyles = {\n backgroundColor: progressBarConfig.backgroundColor || '#ffffff',\n borderColor: progressBarConfig.borderColor || '#000000',\n borderRadius: progressBarConfig.borderRadius || '7px',\n color: progressBarConfig.color || '#000000',\n startColor: progressBarConfig.startColor || '#8884BF',\n endColor: progressBarConfig.endColor || '#8884BF',\n height: progressBarConfig.height || '4px',\n };\n }\n }\n }\n\n setupButtonProperties(button: any, btnDisabled: boolean) {\n button.style = this.field.props?.['design'][button.styleKey] || {};\n button.disabled = this.props['demoMode'] === false ? btnDisabled : false;\n }\n\n async buttonClick(type: string, step: FormlyFieldConfig) {\n if (!this.isNavigationInProgress) {\n this.isNavigationInProgress = true;\n await this.navigateAsync(type, step);\n this.isNavigationInProgress = false;\n }\n }\n\n async navigateNextAsync() {\n const currentStep = this.field?.fieldGroup![this.currentStepIndex];\n if (currentStep) {\n await this.buttonClick('next', currentStep);\n }\n }\n\n async retryClick(step: any) {\n if (step?.fieldGroup?.length) {\n this.retryRecursively(step.fieldGroup);\n }\n }\n\n getProgressBarFill(): string {\n const start = this.progressBarStyles.startColor || '#8884BF';\n const end = this.progressBarStyles.endColor || '#8884BF';\n return `linear-gradient(to right, ${start}, ${end})`;\n }\n\n retryRecursively(fieldGroup: any) {\n if (fieldGroup && fieldGroup.length > 0) {\n fieldGroup.forEach((f: any) => {\n const component = f.props?.['component'];\n if (component && component.retry) {\n component.retry();\n }\n if (component && component.retryAsync) {\n component.retryAsync();\n }\n this.retryRecursively(f.fieldGroup);\n });\n }\n }\n\n async navigateAsync(type: string, step: FormlyFieldConfig) {\n this.isNavigating = true;\n const steps = this.field?.fieldGroup || [];\n const currentIndex = steps.indexOf(step);\n\n if (currentIndex < 0) return;\n\n const prevIndex = currentIndex - 1;\n\n if (\n (type === 'next' || type === 'submit') &&\n currentIndex <= steps.length - 1\n ) {\n if (this.props['demoMode'] === false && !this.validateForm(step)) {\n this.isNavigating = false;\n return;\n }\n\n if (!this.showSteps) {\n const currentFieldGroup = steps[currentIndex]?.fieldGroup;\n const canAdvance = this.canAdvanceRecursively(currentFieldGroup);\n if (!canAdvance) {\n this.isNavigating = false;\n return;\n }\n\n await this.updateAppData(true);\n const nextIndex = currentIndex + 1;\n const hasActionSteps = await this.field?.props?.[\n 'onSelectedPageChanging'\n ]({\n from: this.currentStepIndex,\n to: nextIndex,\n current: this.currentStepIndex,\n callback: () => this.checkIfFlowIsFinished(),\n });\n console.log('hasActionSteps', hasActionSteps);\n\n if (hasActionSteps) {\n await this.updateAppData(true);\n }\n\n if (!this.isFlowFinished) {\n this.currentStepIndex = nextIndex;\n this.loadedSteps[nextIndex] = true;\n this.field?.props?.['onSelectedPageChanged'](this.currentStepIndex);\n }\n this.cdr.detectChanges();\n await this.triggerOnPageSelectedForIndex(this.currentStepIndex);\n } else {\n if (step?.fieldGroup?.length) {\n const canAdvance = this.canAdvanceRecursively(step.fieldGroup);\n if (!canAdvance) {\n this.isNavigating = false;\n return;\n }\n await this.updateAndGoNext();\n } else {\n await this.updateAndGoNext();\n }\n }\n } else if (type === 'back' && currentIndex > 0) {\n await this.getPreviousStep();\n if (!this.showSteps) {\n const hasActionSteps = await this.field?.props?.[\n 'onSelectedPageChanging'\n ]({\n from: this.currentStepIndex,\n to: prevIndex,\n current: this.currentStepIndex,\n });\n\n if (hasActionSteps) {\n await this.updateAppData(true);\n }\n\n this.currentStepIndex = prevIndex;\n this.loadedSteps[prevIndex] = true;\n this.cdr.detectChanges();\n } else {\n const targetIndex = this.stepper.selectedIndex - 1;\n const hasActionSteps = await this.field?.props?.[\n 'onSelectedPageChanging'\n ]({\n from: this.stepper.selectedIndex,\n to: targetIndex,\n current: this.stepper.selectedIndex,\n });\n\n if (hasActionSteps) {\n await this.updateAppData(true);\n }\n\n this.stepper.previous();\n this.currentStepIndex = this.stepper.selectedIndex;\n }\n }\n this.isNavigating = false;\n this.cdr.detectChanges();\n }\n\n private async updateAndGoNext() {\n await this.updateAppData(true);\n this.goNext();\n }\n\n private async goNext() {\n const currentIdx = this.stepper.selectedIndex;\n const nextIdx = currentIdx + 1;\n\n const hasActionSteps = await this.field?.props?.['onSelectedPageChanging']({\n from: currentIdx,\n to: nextIdx,\n current: currentIdx,\n callback: () => this.checkIfFlowIsFinished(),\n });\n\n if (hasActionSteps) {\n await this.updateAppData(true);\n }\n\n this.stepper.next();\n this.currentStepIndex = this.stepper.selectedIndex;\n this.field?.props?.['onSelectedPageChanged'](this.stepper.selectedIndex);\n this.cdr.detectChanges();\n }\n\n private checkIfFlowIsFinished() {\n if (\n this.stepper &&\n this.stepper.selectedIndex === this.field?.fieldGroup?.length! - 1\n ) {\n this.isFlowFinished = true;\n } else if (this.currentStepIndex === this.field?.fieldGroup?.length! - 1) {\n this.isFlowFinished = true;\n }\n if (this.isFlowFinished) {\n if (this.finalStepFieldConfig) {\n this.showFinalStep = true;\n }\n this.field?.props?.['completionEvent']();\n }\n }\n\n validateForm(step: FormlyFieldConfig): boolean {\n if (this.props['demoMode'] === true) {\n return true;\n }\n let isValid = true;\n let firstInvalidFieldKey: string | null = null;\n\n if (step.fieldGroup) {\n step.fieldGroup.forEach((f) => {\n if (f.fieldGroup) {\n f.fieldGroup.forEach((c: any) => {\n c.formControl.markAsTouched();\n c.formControl.updateValueAndValidity();\n if (c.formControl.errors && !c._hide) {\n isValid = false;\n\n // Find the first invalid field key for scrolling\n if (!firstInvalidFieldKey && c.key) {\n firstInvalidFieldKey = c.key;\n }\n }\n });\n }\n });\n }\n\n // If validation failed and we have a field to scroll to, use the scroll service\n if (!isValid && firstInvalidFieldKey) {\n this.scrollToErrorService.scrollToField(firstInvalidFieldKey);\n }\n\n return isValid;\n }\n\n isValid(field: FormlyFieldConfig): boolean {\n if (field.key) {\n return field.formControl?.valid ?? false;\n }\n return field.fieldGroup\n ? field.fieldGroup.every((f) => this.isValid(f))\n : true;\n }\n\n isCustomStep(index: number): boolean {\n const stepType = this.field.fieldGroup![index]?.props?.['fluxType'];\n return stepType === FluxType.Custom;\n }\n\n async onStepChange(event: any) {\n if (event && event.selectedIndex) {\n await this.triggerOnPageSelectedForIndex(event.selectedIndex);\n }\n }\n\n async triggerOnPageSelectedForIndex(index: number) {\n const fg = this.field.fieldGroup![index]?.fieldGroup;\n this.triggerOnPageSelectedRecursively(fg);\n }\n\n async triggerOnPageSelectedRecursively(fg: any) {\n if (fg && fg.length > 0) {\n fg.forEach(async (f: any) => {\n const component = f.props?.['component'];\n if (component?.onPageSelectedAsync) {\n await component?.onPageSelectedAsync();\n }\n if (component?.onPageSelected) {\n component?.onPageSelected();\n }\n this.triggerOnPageSelectedRecursively(f.fieldGroup);\n });\n }\n }\n\n canAdvanceRecursively(fg: any): boolean {\n let valid = true;\n let firstInvalidFieldKey: string | null = null;\n\n if (fg && fg.length > 0) {\n fg.forEach(async (f: any) => {\n let innerResult = true;\n const component = f.props?.['component'];\n if (component?.canAdvance) {\n innerResult = component?.canAdvance();\n if (innerResult === false) {\n valid = false;\n // Try to get the field key for scrolling\n if (!firstInvalidFieldKey && f.key) {\n firstInvalidFieldKey = f.key;\n }\n }\n }\n innerResult = this.canAdvanceRecursively(f.fieldGroup);\n if (innerResult === false) {\n valid = false;\n }\n });\n }\n\n // If validation failed and we have a field to scroll to, use the scroll service\n if (!valid && firstInvalidFieldKey) {\n this.scrollToErrorService.scrollToField(firstInvalidFieldKey);\n } else if (!valid) {\n // Fallback: try to scroll to first error using the collector form's method\n this.collectorForm.scrollToFirstValidationError();\n }\n\n return valid;\n }\n\n getComponentsWithDefaultLabels(): { [key: string]: string } {\n return {\n [FluxType.Kyc]: 'Kyc',\n };\n }\n}\n","<div *ngIf=\"showSteps; else singleStepTemplate\">\n <div [ngStyle]=\"concatenatedFormStyle\">\n <formly-field\n *ngIf=\"showFinalStep\"\n [field]=\"finalStepFieldConfig\"\n ></formly-field>\n </div>\n\n <mat-horizontal-stepper\n #stepper\n *ngIf=\"!showFinalStep\"\n [linear]=\"true\"\n (selectionChange)=\"onStepChange($event)\"\n [ngStyle]=\"concatenatedFormStyle\"\n >\n <mat-step *ngFor=\"let step of field.fieldGroup; let index = index\">\n <ng-template matStepLabel *ngIf=\"showStepsLabels\">\n {{ step.props?.label }}\n </ng-template>\n\n <ng-container\n *ngIf=\"buttonsVerticalPosition == 'top'\"\n [ngTemplateOutlet]=\"buttonsContainer\"\n />\n\n <h3 [ngStyle]=\"field.props?.['design']['.font-heading-3'] || {}\">\n {{ step.props?.description }}\n </h3>\n <formly-field [field]=\"step\"></formly-field>\n\n <ng-container\n *ngIf=\"buttonsVerticalPosition == 'bottom'\"\n [ngTemplateOutlet]=\"buttonsContainer\"\n />\n </mat-step>\n <!-- <ng-template *ngIf=\"!showStepsCounter\" matStepperIcon=\"number\">\n <mat-icon>radio_button_checked</mat-icon>\n </ng-template> -->\n </mat-horizontal-stepper>\n</div>\n\n<ng-template #singleStepTemplate>\n <div [ngStyle]=\"concatenatedFormStyle\">\n <formly-field\n *ngIf=\"showFinalStep\"\n [field]=\"finalStepFieldConfig\"\n ></formly-field>\n </div>\n <div\n class=\"single-step-container\"\n *ngIf=\"!showFinalStep\"\n [ngStyle]=\"concatenatedFormStyle\"\n >\n <div\n class=\"progress-bar-wrapper\"\n *ngIf=\"showProgressBar\"\n [ngStyle]=\"{\n 'border-radius': progressBarStyles.borderRadius,\n height: progressBarStyles.height,\n overflow: 'hidden'\n }\"\n >\n <div\n class=\"progress-bar-fill\"\n [ngStyle]=\"{\n width: ((currentStepIndex + 1) / totalStepsCount) * 100 + '%',\n background: getProgressBarFill(),\n height: '100%'\n }\"\n ></div>\n </div>\n <div class=\"single-step-header\">\n <div\n class=\"single-step-indicator\"\n *ngIf=\"showStepsCounter;\"\n >\n <span class=\"step-current\">{{ currentStepIndex + 1 }}</span>\n <span class=\"step-separator\">/</span>\n <span class=\"step-total\">{{ totalStepsCount }}</span>\n </div>\n <h1 *ngIf=\"showStepsLabels\" class=\"single-step-label\" [ngStyle]=\"field.props?.['design']['.font-heading-1'] || {}\">\n {{ field.fieldGroup![currentStepIndex]!.props!.label }}\n </h1>\n </div>\n\n <ng-container\n *ngIf=\"buttonsVerticalPosition == 'top'\"\n [ngTemplateOutlet]=\"buttonsContainer\"\n />\n\n <h3 [ngStyle]=\"field.props?.['design']['.font-heading-3'] || {}\">\n {{ field!.fieldGroup![currentStepIndex]!.props!.description }}\n </h3>\n <formly-field\n *ngIf=\"loadedSteps[currentStepIndex]\"\n [field]=\"field!.fieldGroup![currentStepIndex]\"\n ></formly-field>\n\n <ng-container\n *ngIf=\"buttonsVerticalPosition == 'bottom'\"\n [ngTemplateOutlet]=\"buttonsContainer\"\n />\n </div>\n</ng-template>\n\n<ng-template #buttonsContainer>\n <ng-container\n *ngTemplateOutlet=\"\n buttonsTemplate;\n context: {\n index: currentStepIndex,\n step: field!.fieldGroup![currentStepIndex]\n }\n \"\n ></ng-container>\n</ng-template>\n\n<ng-template #buttonsTemplate let-index=\"index\" let-step=\"step\">\n <div\n *ngIf=\"!isFlowFinished\"\n class=\"buttons-container\"\n [ngStyle]=\"field.props?.['design']['.buttons-container'] || {}\"\n >\n <button mat-flat-button *ngIf=\"isDebug\" (click)=\"retryClick(step)\">\n Debug Retry\n </button>\n <ng-container *ngFor=\"let button of buttonsGroups[index]\">\n <button\n mat-flat-button\n [color]=\"button.color || 'primary'\"\n [type]=\"button.type === 'submit' ? 'submit' : 'button'\"\n (click)=\"buttonClick(button.type, step)\"\n [disabled]=\"button.disabled || isSaving\"\n [ngStyle]=\"button.style\"\n >\n {{ button.label }}\n </button>\n </ng-container>\n <div *ngIf=\"isNavigating || isSaving\" class=\"loading-spinner\">\n <mat-spinner [diameter]=\"32\"></mat-spinner>\n </div>\n <button mat-flat-button *ngIf=\"isDebug\" (click)=\"buttonClick('next', step)\">\n Debug Next\n </button>\n </div>\n</ng-template>\n","import { ChangeDetectorRef, Component } from '@angular/core';\nimport { ApplicationDataService } from '../../services/applicationData.service';\nimport { ApplicationGenerateDocumentsDto } from '../../models/application.model';\nimport { DialogService } from '../../services/dialog.service';\nimport { BaseFormlyStepComponent } from '../baseFormlyStepComponent';\n\n@Component({\n selector: 'app-formly-generate-documents',\n templateUrl: './formly-generate-documents.component.html',\n styleUrl: './formly-generate-documents.component.scss',\n})\nexport class FormlyGenerateDocumentsComponent extends BaseFormlyStepComponent {\n public hasErrors: boolean = false;\n generatedDocumentsCount: number;\n\n constructor(\n private appDataService: ApplicationDataService,\n cdr: ChangeDetectorRef,\n private dialog: DialogService\n ) {\n super(cdr);\n }\n\n override onPageSelected() {\n this.generateDocuments();\n }\n\n generateDocuments() {\n this.isLoading = true;\n const command: ApplicationGenerateDocumentsDto = {\n appId: this.appId,\n appDataId: this.appDataId,\n stepId: this.stepData.identifier,\n };\n this.appDataService.generateDocuments(command).subscribe({\n next: (result) => {\n this.hasErrors = false;\n this.generatedDocumentsCount = result;\n this.isLoading = false;\n this.cdr.detectChanges();\n this.onEvent('success');\n },\n error: (err) => {\n this.hasErrors = true;\n this.isLoading = false;\n this.cdr.detectChanges();\n },\n });\n this.cdr.detectChanges();\n }\n\n\n override canAdvance(): boolean {\n if (this.isLoading || this.hasErrors) {\n this.dialog.popError('generateDocuments.generating');\n return false;\n }\n return true;\n }\n}\n","<p *ngIf=\"isLoading\">{{ \"generateDocuments.generating\" | translate }}</p>\n<mat-spinner *ngIf=\"isLoading\"\n class=\"m-x-auto upload-spinner\"></mat-spinner>\n\n<div>\n <p *ngIf=\"!isLoading && !hasErrors && generatedDocumentsCount > 0\">\n {{ \"generateDocuments.generated\" | translate }}\n </p>\n <p *ngIf=\"!isLoading && !hasErrors && generatedDocumentsCount <= 0\">\n {{ \"generateDocuments.noDocumentsGenerated\" | translate }}\n </p>\n</div>\n<div *ngIf=\"hasErrors\">\n <p>{{ \"generateDocuments.error\" | translate }}</p>\n <button mat-flat-button type=\"button\" (click)=\"generateDocuments()\">\n {{ \"retry\" | translate }}\n </button>\n</div>\n","import {\n Component,\n ViewChild,\n ElementRef,\n EventEmitter,\n Output,\n ChangeDetectorRef,\n} from '@angular/core';\nimport { ProxyService } from '../services/proxy.service';\nimport { BaseFormlyStepComponent } from './baseFormlyStepComponent';\n\n@Component({\n selector: 'formly-field-identification',\n template: `\n <ng-container *ngIf=\"appDataId && kycToken\">\n <identification-component\n #identification\n [token]=\"kycToken\"\n [api_url]=\"props['api_url']\"\n [order_id]=\"appDataId\"\n [env]=\"props['env']\"\n [phone_number]=\"props['phone_number']\"\n [lang_iso]=\"props['lang_iso']\"\n [show_citizenship_selector]=\"true\"\n [scroll_mode]=\"props['scroll_mode']\"\n >\n </identification-component>\n </ng-container>\n `,\n styles: [\n `\n :host {\n min-height: 600px;\n display: block;\n }\n\n .loader-container {\n display: flex;\n justify-content: center;\n align-items: center;\n padding-top: 5vh;\n padding-bottom: 5vh;\n }\n `,\n ],\n})\nexport class FormlyFieldIdentificationComponent extends BaseFormlyStepComponent {\n @ViewChild('identification', { static: true }) identification: ElementRef;\n @Output() ectCompleted: EventEmitter<void> = new EventEmitter<void>();\n kycToken: string;\n constructor(private proxy: ProxyService, cdr: ChangeDetectorRef) {\n super(cdr);\n }\n\n override onInit() {\n window.addEventListener('ect-completed', this.onEctCompleted.bind(this));\n window.addEventListener('ect-error', this.onEctCompleted.bind(this));\n }\n\n onEctCompleted() {\n if (this.props['ectCompleted']) {\n const message = this.getLoadingMessage();\n this.props['ectCompleted'](message);\n }\n }\n\n isEctCompleted(): boolean {\n return !!this.props['ectCompleted'];\n }\n\n onEctError() {\n if (this.props['ectError']) {\n this.props['ectError']();\n }\n }\n\n override async onPageSelectedAsync() {\n try {\n this.kycToken = await this.proxy.getTokenAndSave();\n this.cdr.detectChanges();\n } catch (error) {\n console.error('Failed to get token:', error);\n }\n }\n\n getLoadingMessage(): string {\n return this.props['loadingMessage'] || ''; \n }\n}\n","import { Component } from '@angular/core';\nimport { BaseFormlyStepComponent } from '../baseFormlyStepComponent';\n\n@Component({\n selector: 'formly-paragraph',\n templateUrl: './formly-paragraph.component.html',\n styleUrl: './formly-paragraph.component.scss',\n})\nexport class FormlyParagraphComponent extends BaseFormlyStepComponent {\n cssMargins: any;\n\n override onInit(): void {\n this.cssMargins = {\n 'margin-top':\n this.props?.['design']?.['.component-text-field']?.['margin-top'],\n 'margin-right':\n this.props?.['design']?.['.component-text-field']?.['margin-right'],\n 'margin-bottom':\n this.props?.['design']?.['.component-text-field']?.['margin-bottom'],\n 'margin-left':\n this.props?.['design']?.['.component-text-field']?.['margin-left'],\n };\n }\n\n get formattedLabel(): string {\n return this.formatDateIfNeeded(this.field.defaultValue).toString();\n }\n\n private formatDateIfNeeded(value: any): string {\n if (!value) return '';\n\n let cleanValue = value.toString().trim();\n\n // cast eg: \"Fri Feb 14 2025 00:00:00 GMT+0200\" → \"2025-02-14\"\n if (\n /^\\w{3} \\w{3} \\d{1,2} \\d{4} \\d{2}:\\d{2}:\\d{2} GMT[\\+\\-]\\d{4}/.test(\n cleanValue\n )\n ) {\n return new Date(cleanValue).toISOString().split('T')[0];\n }\n\n return cleanValue;\n }\n}\n","<div\n class=\"mat-mdc-text-field-wrapper formly-paragraph\"\n [class.hasLabel]=\"title\"\n [ngStyle]=\"cssMargins\"\n appExternalLink\n>\n\n <ng-container *ngIf=\"props['controlType'] === 'Paragraph'\">\n <p *ngIf=\"props['translatedParagraphTitle']\" [ngStyle]=\"props['design']['.font-label']\">\n {{ props['translatedParagraphTitle'] }}\n </p>\n <p *ngIf=\"props['translatedDescription']\" [ngStyle]=\"props['design']['.font-paragraph']\">\n {{ props['translatedDescription'] }}\n </p>\n </ng-container>\n\n <ng-container *ngIf=\"props['controlType'] !== 'Paragraph'\">\n <div\n class=\"component-text-field\"\n *ngIf=\"field?.defaultValue !== undefined && field?.defaultValue !== null\"\n >\n <p [ngStyle]=\"props['design']['.font-label']\">\n {{ field.props?.label }}\n </p>\n <p [ngStyle]=\"props['design']['.font-paragraph']\">\n {{ field.defaultValue }}\n </p>\n </div>\n </ng-container>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { FieldType } from '@ngx-formly/core';\nimport { FormControl } from '@angular/forms';\nimport { MatRadioChange } from '@angular/material/radio';\n\n@Component({\n selector: 'formly-radio',\n templateUrl: './formly-radio-component.html',\n styleUrls: ['./formly-radio-component.scss'],\n styles: [],\n})\nexport class FormlyRadioComponent extends FieldType implements OnInit {\n radioOptionsList: any[] = [];\n title: string = '';\n langIso: string = 'en';\n\n ngOnInit(): void {\n this.langIso = this.props['currentLanguageIso'];\n this.title = this.props['label'] || '';\n if (Array.isArray(this.to.options)) {\n this.radioOptionsList = this.to.options;\n }\n }\n\n override get formControl(): FormControl {\n if (this.field.key) {\n const keyPath =\n typeof this.field.key === 'string' || Array.isArray(this.field.key)\n ? this.field.key\n : String(this.field.key);\n return this.form.get(keyPath) as FormControl;\n }\n return new FormControl();\n }\n\n onRadioChange(e: MatRadioChange): void {\n const selected = this.radioOptionsList.find(\n (opt) => opt.value.id === e.value\n );\n if (selected) {\n this.formControl.setValue(selected.value);\n if (this.props['onSelectedValueChanged']) {\n this.props['onSelectedValueChanged'](selected.value);\n }\n }\n }\n}\n","<div class=\"mat-mdc-text-field-wrapper mdc-radiobox-field\" appExternalLink>\n <label>\n <markdown [data]=\"title\"></markdown>\n </label>\n <div *ngIf=\"radioOptionsList.length > 0\">\n <mat-radio-group [value]=\"formControl.value?.id\"\n (change)=\"onRadioChange($event)\">\n <ng-container *ngFor=\"let option of radioOptionsList\">\n <div>\n <mat-radio-button [value]=\"option.value.id\">\n {{ option.label }}\n </mat-radio-button>\n </div>\n </ng-container>\n </mat-radio-group>\n </div>\n <formly-validation-message *ngIf=\"showError\" [field]=\"field\">\n </formly-validation-message>\n</div>\n","import { Component } from '@angular/core';\nimport { FieldType } from '@ngx-formly/core';\n\n@Component({\n selector: 'formly-row-filler',\n template: `<div class=\"row-filler\"></div>`,\n styles: [\n `\n .row-filler {\n width: 100%;\n }\n `,\n ],\n})\nexport class RowFillerComponent extends FieldType {}","import {\n ChangeDetectorRef,\n Component,\n ElementRef,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { FormControl, Validators, FormGroup } from '@angular/forms';\nimport { FieldType } from '@ngx-formly/core';\nimport { ApplicationDataService } from '../../services/applicationData.service';\nimport { ScanIdDto } from '../../models/application.model';\nimport { AppDataFill } from '../../models/forms.model';\n\n@Component({\n selector: 'app-formly-scan-id',\n templateUrl: './formly-scan-id.component.html',\n styleUrls: ['./formly-scan-id.component.scss'],\n})\nexport class FormlyScanIdComponent extends FieldType implements OnInit {\n control: FormControl = new FormControl('', [Validators.required]);\n fileError: string | null = null;\n fileNameFront: string = '';\n fileNameBack: string = '';\n validFormats: string[] = [];\n maxFileSizeKB: number = 0;\n cardTypeSelected: boolean = false;\n oldIdCard: boolean = false;\n frontPhotoUploaded: boolean = false;\n backPhotoUploaded: boolean = false;\n photoBase64Front: string = '';\n photoBase64Back: string = '';\n isLoading: boolean = false;\n successMessage: string | null = null;\n\n @ViewChild('fileInputFront') fileInputFront: ElementRef;\n @ViewChild('fileInputBack') fileInputBack: ElementRef;\n @ViewChild('videoElement') videoElement: ElementRef;\n videoStream: MediaStream | null = null;\n isScanValid: boolean = true;\n\n constructor(\n private appDataService: ApplicationDataService,\n private cdr: ChangeDetectorRef\n ) {\n super();\n }\n\n ngOnInit() {\n const group = this.form as FormGroup;\n group.addControl(this.props['identifier'], this.control);\n\n this.validFormats = this.props['config'].allowedFormats?.split(',') || [\n '.jpg',\n '.png',\n ];\n this.maxFileSizeKB = this.props['config'].maxFileSizeKB || 2000;\n\n if (this.props['config'].collected) {\n const value = this.form.get(\n this.props['config'].componentCollected\n )?.value;\n this.control.setValue(value);\n\n this.form\n .get(this.props['config'].componentCollected)\n ?.valueChanges.subscribe(() => {\n this.control.setValue(\n this.form.get(this.props['config'].componentCollected)?.value\n );\n });\n }\n }\n\n selectCardType(isOldIdCard: boolean) {\n this.oldIdCard = isOldIdCard;\n this.cardTypeSelected = true;\n this.resetForm();\n }\n\n onFileSelected(event: any, isFront: boolean) {\n const file: File = event.target.files[0];\n if (file) {\n const fileExtension = '.' + file.name.split('.').pop()?.toLowerCase();\n const fileSizeKB = file.size / 1024;\n\n if (!this.validFormats.includes(fileExtension)) {\n this.fileError = (\n this.props['errorMessages']?.invalidType ||\n `Invalid file type. Allowed formats are ${this.validFormats.join(\n ', '\n )}`\n ).replace('{formats}', this.validFormats.join(', '));\n this.control.setErrors({ invalidType: true });\n return;\n }\n\n if (fileSizeKB > this.maxFileSizeKB || fileSizeKB < 1) {\n this.fileError = (\n this.props['errorMessages']?.maxSize ||\n `File size must be between 1KB and ${this.maxFileSizeKB}KB.`\n ).replace('{size}', this.maxFileSizeKB);\n this.control.setErrors({ invalidSize: true });\n return;\n }\n\n this.fileError = null;\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => {\n if (isFront) {\n this.fileNameFront = file.name;\n this.photoBase64Front = reader.result?.toString().split(',')[1] || '';\n this.frontPhotoUploaded = true;\n this.cdr.detectChanges();\n } else {\n this.fileNameBack = file.name;\n this.photoBase64Back = reader.result?.toString().split(',')[1] || '';\n this.backPhotoUploaded = true;\n this.cdr.detectChanges();\n }\n\n this.checkUploadCondition();\n };\n }\n }\n\n takePicture() {\n this.resetForm();\n\n if (navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) {\n navigator.mediaDevices\n .enumerateDevices()\n .then((devices) => {\n const videoDevices = devices.filter(\n (device) => device.kind === 'videoinput'\n );\n\n if (videoDevices.length === 0) {\n this.fileError = 'No camera devices found.';\n return;\n }\n\n if (videoDevices.length === 1) {\n this.startCamera(videoDevices[0].deviceId);\n } else {\n const selectedDeviceId = prompt(\n 'Select camera',\n videoDevices.map((device) => device.label).join(', ')\n );\n const selectedDevice = videoDevices.find(\n (device) => device.label === selectedDeviceId\n );\n\n if (selectedDevice) {\n this.startCamera(selectedDevice.deviceId);\n } else {\n this.fileError = 'Invalid camera selection.';\n }\n }\n })\n .catch(() => {\n this.fileError = 'Unable to access the camera devices.';\n });\n } else {\n this.fileError = 'Camera not supported by this device.';\n }\n }\n\n startCamera(deviceId: string) {\n navigator.mediaDevices\n .getUserMedia({ video: { deviceId } })\n .then((stream) => {\n this.videoStream = stream;\n this.videoElement.nativeElement.srcObject = stream;\n this.videoElement.nativeElement.play();\n })\n .catch(() => {\n this.fileError = 'Unable to access the selected camera.';\n });\n }\n\n capturePhoto(isFront: boolean) {\n if (!this.videoElement.nativeElement) {\n this.fileError = 'No video element available.';\n return;\n }\n\n const video = this.videoElement.nativeElement;\n const canvas = document.createElement('canvas');\n canvas.width = video.videoWidth;\n canvas.height = video.videoHeight;\n const context = canvas.getContext('2d');\n context?.drawImage(video, 0, 0, canvas.width, canvas.height);\n\n this.isLoading = true;\n\n canvas.toBlob((blob) => {\n if (blob) {\n const reader = new FileReader();\n reader.readAsDataURL(blob);\n reader.onloadend = () => {\n if (isFront) {\n this.photoBase64Front =\n reader.result?.toString().split(',')[1] || '';\n this.frontPhotoUploaded = true;\n } else {\n this.photoBase64Back =\n reader.result?.toString().split(',')[1] || '';\n this.backPhotoUploaded = true;\n }\n\n this.isLoading = false;\n this.checkUploadCondition();\n this.cdr.detectChanges();\n };\n }\n\n if (this.videoStream) {\n this.videoStream.getTracks().forEach((track) => track.stop());\n this.videoStream = null;\n }\n }, 'image/jpeg');\n }\n\n uploadPhoto() {\n this.isLoading = true;\n this.cdr.detectChanges();\n const command: ScanIdDto = {\n appId: this.props['appId'],\n appDataId: this.props['appDataId'],\n stepId: this.props['stepId'],\n oldIdCard: this.oldIdCard,\n photos: this.oldIdCard\n ? [{ base64: this.photoBase64Front }]\n : [{ base64: this.photoBase64Front }, { base64: this.photoBase64Back }],\n };\n\n this.appDataService.scanId(command).subscribe({\n next: async (result) => {\n console.log('Scan ID result:', result);\n this.isLoading = false;\n\n var appData = await this.appDataService.getSteps(\n this.props['appDataId']\n );\n\n if (appData) {\n const status = this.extractStatusFromAppData(appData);\n console.log('[SCAN-ID] extracted status:', status);\n\n if (status?.toLowerCase().includes('invalid')) {\n this.fileError =\n this.props['errorMessages']?.invalidStatus ||\n 'Invalid status response.';\n this.resetForm(true);\n this.control.setErrors({ invalidStatus: true });\n this.cdr.detectChanges();\n return;\n }\n\n this.isScanValid = true;\n this.successMessage = 'Upload successful!';\n if (this.props['event']) {\n this.props['event'](appData);\n }\n }\n this.cdr.detectChanges();\n },\n error: (err) => {\n this.fileError = 'An error occurred while processing the scan.';\n console.error('Scan ID error:', err);\n this.isLoading = false;\n this.cdr.detectChanges();\n this.resetForm();\n },\n });\n }\n\n resetForm(preserveError: boolean = false) {\n this.fileNameFront = '';\n this.fileNameBack = '';\n this.photoBase64Front = '';\n this.photoBase64Back = '';\n this.frontPhotoUploaded = false;\n this.backPhotoUploaded = false;\n if (!preserveError) {\n this.fileError = null;\n }\n this.videoStream = null;\n this.control.reset();\n this.isLoading = false;\n this.successMessage = null;\n }\n\n checkUploadCondition() {\n if (this.oldIdCard || (this.frontPhotoUploaded && this.backPhotoUploaded)) {\n this.uploadPhoto();\n }\n }\n\n private extractStatusFromAppData(appData: any): string | null {\n if (!appData?.fillData || !this.props['stepId']) return null;\n\n let fillData: AppDataFill;\n try {\n fillData =\n typeof appData.fillData === 'string'\n ? (JSON.parse(appData.fillData) as AppDataFill)\n : appData.fillData;\n } catch (e) {\n console.error('[extractStatusFromAppData] JSON parse error', e);\n return null;\n }\n\n const step = fillData.flux.find(\n (s: any) => s.stepId === this.props['stepId']\n );\n if (!step?.sections) return null;\n\n for (const section of step.sections) {\n for (const control of section.controls || []) {\n if (\n typeof control.fillValue === 'string' &&\n control.fillValue.trim() !== ''\n ) {\n return control.fillValue.trim();\n }\n }\n }\n\n return null;\n }\n}\n","<div class=\"scan-id-container\">\n <h2 class=\"title\">{{ props[\"name\"] }}</h2>\n <p class=\"description\">{{ props[\"description\"] }}</p>\n\n <!-- Selection Step -->\n <div class=\"card-selection-container\">\n <div class=\"card-options\">\n <div class=\"card-option\"\n [class.selected]=\"oldIdCard === true && cardTypeSelected\"\n (click)=\"selectCardType(true)\">\n <img src=\"assets/images/origin-form/old-id-card.png\" alt=\"Old ID Card\" />\n </div>\n <div class=\"card-option\"\n [class.selected]=\"oldIdCard === false && cardTypeSelected\"\n (click)=\"selectCardType(false)\">\n <img src=\"assets/images/origin-form/new-id-card.png\" alt=\"New ID Card\" />\n </div>\n </div>\n </div>\n\n <div *ngIf=\"isLoading\" class=\"loading-spinner\">\n <mat-spinner></mat-spinner>\n </div>\n\n <div *ngIf=\"cardTypeSelected && !isLoading\" class=\"actions\">\n <!-- Step 1: Upload Front Photo -->\n <div *ngIf=\"!frontPhotoUploaded\" class=\"upload-button-container\">\n <p>{{ props['labels'].uploadFrontPrompt || 'Please upload the front photo of your ID card.' }}</p>\n <input type=\"file\" #fileInputFront (change)=\"onFileSelected($event, true)\" hidden />\n <button mat-flat-button color=\"primary\" (click)=\"fileInputFront.click()\">\n <mat-icon>cloud_upload</mat-icon>\n {{ fileNameFront ? fileNameFront : props['labels'].uploadFileButtonTranslations || 'Upload Front Photo' }}\n </button>\n <div *ngIf=\"fileError\" class=\"error-message\">\n {{ fileError }}\n </div>\n </div>\n\n <!-- Step 2: Upload Back Photo (Only for New ID Cards) -->\n <div *ngIf=\"frontPhotoUploaded && !oldIdCard && !isLoading\" class=\"upload-button-container\">\n <p>{{ props['labels'].uploadBackPrompt || 'Please upload the back photo of your ID card.' }}</p>\n <input type=\"file\" #fileInputBack (change)=\"onFileSelected($event, false)\" hidden />\n <button mat-flat-button color=\"primary\" (click)=\"fileInputBack.click()\">\n <mat-icon>cloud_upload</mat-icon>\n {{ fileNameBack ? fileNameBack : props['labels'].uploadFileButtonTranslations || 'Upload Back Photo' }}\n </button>\n <div *ngIf=\"fileError\" class=\"error-message\">\n {{ fileError }}\n </div>\n </div> \n <!-- Take Photo Button (Optional) -->\n <div *ngIf=\"props['config'].showTakePictureButton\" class=\"take-photo-container\">\n <button mat-flat-button color=\"accent\" (click)=\"takePicture()\">\n <mat-icon>camera_alt</mat-icon>\n {{ props['labels'].takePictureButtonTranslations || 'Take a photo' }}\n </button>\n <video #videoElement *ngIf=\"videoStream\" width=\"100%\" class=\"video-preview\" autoplay></video>\n\n <!-- Take Front Photo -->\n <button mat-flat-button color=\"warn\" *ngIf=\"videoStream && !frontPhotoUploaded\" (click)=\"capturePhoto(true)\">\n <mat-icon>photo_camera</mat-icon>\n {{ this.props['errorMessages']?.frontId || 'Take a photo' }}\n </button>\n\n <!-- Take Back Photo -->\n <button mat-flat-button color=\"warn\" *ngIf=\"videoStream && frontPhotoUploaded && !oldIdCard\" (click)=\"capturePhoto(false)\">\n <mat-icon>photo_camera</mat-icon>\n {{ this.props['errorMessages']?.backId || 'Take a photo' }}\n </button>\n </div>\n </div>\n <div *ngIf=\"successMessage && isScanValid\" class=\"success-message-container\">\n <mat-icon class=\"large-icon\" color=\"primary\">check_circle</mat-icon>\n </div>\n</div>","import {\n Component,\n ViewChild,\n inject,\n ChangeDetectorRef,\n OnDestroy,\n} from '@angular/core';\nimport { SignLibComponent } from 'sign-lib';\nimport { firstValueFrom } from 'rxjs';\nimport { ConfigService } from '../../others/config-service';\nimport { OriginFormAuthService } from '../../origin-form-auth.service';\nimport { DialogService } from '../../services/dialog.service';\nimport { FluxType } from '../../models/forms.model';\nimport { BaseFormlyStepComponent } from '../baseFormlyStepComponent';\n\n@Component({\n selector: 'formly-sign',\n templateUrl: './formly-sign.component.html',\n styleUrl: './formly-sign.component.scss',\n})\nexport class FormlySignComponent\n extends BaseFormlyStepComponent\n implements OnDestroy\n{\n @ViewChild('signLib') signLib: SignLibComponent;\n canProceed: boolean = false;\n private _signButtonStyle: { [key: string]: string } = {};\n public config: any;\n configService = inject(ConfigService);\n constructor(\n public authService: OriginFormAuthService,\n cdr: ChangeDetectorRef,\n private dialog: DialogService\n ) {\n super(cdr);\n }\n\n override onInit() {}\n\n override async onPageSelectedAsync() {\n const styleObj = this.props?.['design']?.['.button-otpaction'];\n if (styleObj) {\n const camelCaseStyle: { [key: string]: string } = {};\n Object.keys(styleObj).forEach((key) => {\n const camelKey = key.replace(/-([a-z])/g, (g) => g[1].toUpperCase());\n camelCaseStyle[camelKey] = styleObj[key];\n });\n this._signButtonStyle = camelCaseStyle;\n } else {\n this._signButtonStyle = {};\n }\n // Reset component state when page is selected\n this.canProceed = false;\n\n this.config = await this.getConfig();\n this.addPhoneNumbertoConfig();\n\n this.config = {\n ...this.config,\n ShowConfirm: this.stepData.config.showConfirm ?? false,\n SignMode: this.stepData.config.companySign ?? false ? 'both' : 'client',\n ...(Object.keys(this.signButtonStyle).length > 0\n ? {\n Styles: {\n ...(this.config.Styles || {}),\n buttonStyles: this.signButtonStyle,\n },\n }\n : {}),\n };\n\n if (this.config.Styles?.buttonStyles) {\n console.log(\n `🧫 FormlySignComponent: Styles for sign button are sent:`,\n this.config.Styles.buttonStyles\n );\n console.log('config', this.config);\n }\n\n console.log(\n `🔷 FormlySignComponent: Initializing sign component for step ${this.stepData.identifier}`\n );\n\n //very important to trigger input parameter pass to SignLib component\n this.cdr.detectChanges();\n\n // Wait a bit for ViewChild to be available and then initialize\n await new Promise((resolve) => setTimeout(resolve, 50));\n\n // Ensure SignLibComponent is properly initialized\n if (this.signLib) {\n console.log(\n `🔷 FormlySignComponent: SignLibComponent found, calling ngOnInit for step ${this.stepData.identifier}`\n );\n await this.signLib.ngOnInit();\n } else {\n console.warn(\n `🔷 FormlySignComponent: SignLibComponent not found for step ${this.stepData.identifier}`\n );\n }\n }\n\n async retryAsync() {\n await this.onPageSelectedAsync();\n }\n\n async getConfig() {\n return {\n AppDataId: this.props['appDataId'],\n StepId: this.stepData.identifier,\n Token: this.authService.getToken(),\n BaseUrl: this.configService.readConfig().baseUrlGateway,\n AutoSign: this.stepData.isVisible === false,\n };\n }\n\n private addPhoneNumbertoConfig(): void {\n const phoneKey = this.stepData.config.componentCollected;\n\n if (phoneKey) {\n let phoneNumber = null;\n\n // Get references to parent form and model from props\n const parentForm = this.props['parentForm'];\n const model = this.props['getModel']();\n const flux = this.props['flux'];\n\n // First try to get from parent form control (for validated phone numbers)\n const formControl = parentForm?.get(phoneKey);\n phoneNumber = formControl?.value;\n\n // If not found in form control, try from model\n if (!phoneNumber && model && model[phoneKey]) {\n phoneNumber = model[phoneKey];\n }\n\n if (!phoneNumber && phoneKey === 'validated-phone' && flux) {\n const phoneStep = flux.find(\n (step: any) => step.type === FluxType.Phone\n );\n if (\n phoneStep &&\n phoneStep.config &&\n phoneStep.config.componentCollected\n ) {\n const originalPhoneKey = phoneStep.config.componentCollected;\n // Try from parent form first, then model\n phoneNumber =\n parentForm?.get(originalPhoneKey)?.value ||\n (model && model[originalPhoneKey]);\n }\n }\n\n if (phoneNumber) {\n this.config = {\n ...this.config,\n PhoneNumber: phoneNumber,\n };\n } else {\n console.warn(\n '🔷 FormlySignComponent: No phone number found for key:',\n phoneKey\n );\n }\n } else {\n console.warn(\n '🔷 FormlySignComponent: No componentCollected key found in step config'\n );\n }\n }\n\n override canAdvance(): boolean {\n if (!this.canProceed) {\n this.dialog.popError('signComponent.viewfiles.waitForSign');\n return false;\n }\n return true;\n }\n\n libEvent(event: any) {\n if (event && event.toLowerCase() === 'success') {\n this.canProceed = true;\n }\n this.onEvent(event);\n }\n\n get signButtonStyle(): { [key: string]: string } {\n return this._signButtonStyle;\n }\n\n ngOnDestroy(): void {\n console.log(\n '🔷 FormlySignComponent: Destroying component and cleaning up SignLibComponent'\n );\n\n // Cleanup SignLibComponent if it exists\n if (this.signLib) {\n try {\n // Call destroy method if it exists (check for various possible cleanup methods)\n if (typeof (this.signLib as any).ngOnDestroy === 'function') {\n (this.signLib as any).ngOnDestroy();\n } else if (typeof (this.signLib as any).destroy === 'function') {\n (this.signLib as any).destroy();\n } else if (typeof (this.signLib as any).cleanup === 'function') {\n (this.signLib as any).cleanup();\n }\n\n // Clear any references\n (this.signLib as any) = null;\n } catch (error) {\n console.warn(\n '🔷 FormlySignComponent: Error during SignLibComponent cleanup:',\n error\n );\n }\n }\n\n // Reset component state\n this.canProceed = false;\n this.config = null;\n\n console.log('🔷 FormlySignComponent: Component cleanup completed');\n }\n}\n","<lib-sign #signLib [config]=\"config\" (event)=\"libEvent($event)\"> </lib-sign>\n","\nimport {\n ApiData,\n AppDocument,\n AppPartner,\n DesignModel,\n DisplayModel,\n GeneralDataModel,\n StatusModel,\n UploadDocument,\n} from './forms.model';\nimport { ApplicationMappings } from './application-type.model';\nimport { CssRules } from '../others/utils';\nimport { EnvironmentType } from '../others/environment-type';\nimport { StepData } from './flux.model';\n\nexport class ApplicationDto {\n id: number;\n name: string;\n appTypeId: number;\n configuration: ApplicationConfiguration;\n canGetFromProd: boolean;\n canGetFromTest: boolean;\n canPublishInProd: boolean;\n canPublishInTest: boolean;\n uuid: string;\n envType: EnvironmentType;\n}\n\nexport class ApplicationConfiguration {\n applicationId: number;\n applicationUuid: string;\n generalData: GeneralDataModel;\n design: DesignModel;\n flux: StepData[];\n api: ApiData;\n partners: AppPartner[];\n documents: AppDocument[];\n statuses: StatusModel[];\n display: DisplayModel;\n generatedCss: CssRules;\n metadataFields: [];\n errors: { [tabName: string]: string[] };\n applicationMappings: ApplicationMappings;\n}\n\nexport class ApplicationGenerateDocumentsDto {\n appDataId: string;\n appId: string;\n stepId: string;\n}\n\nexport class ApplicationEnrolCardDto {\n appDataId: string;\n appId: string;\n stepId: string;\n}\n\nexport class ApplicationGetGeneratedDocumentsDto {\n appDataId: string;\n controlId: string;\n isDisplayMode?: boolean;\n\n /// <summary>\n /// Optional: Application Configuration UUID. If not provided, will be retrieved from ApplicationData.\n /// </summary>\n appConfigurationUUID?: string;\n\n /// <summary>\n /// Optional: Environment. If not provided, will be retrieved from ApplicationData.\n /// </summary>\n environment?: string;\n}\n\nexport class ApplicationUploadDocumentsDto {\n appDataId: string;\n appId: string;\n documents: UploadDocument[];\n env: string;\n controlId: string;\n}\n\nexport class ScanIdDto {\n appId: number;\n appDataId: string;\n stepId: string;\n oldIdCard: boolean;\n photos: { base64: string }[];\n}\n\nexport class ApiValidateRequest {\n appId: number;\n apiId: string;\n data: string;\n}\n\nexport class ApiDocumentRequest {\n appDataId: string;\n documentId: string;\n\n /// <summary>\n /// Optional: Application Configuration UUID. If not provided, will be retrieved from ApplicationData.\n /// </summary>\n appConfigurationUUID?: string;\n\n /// <summary>\n /// Optional: Environment. If not provided, will be retrieved from ApplicationData.\n /// </summary>\n environment?: string;\n}\n\nexport class MakeActionRequest {\n appDataId: string;\n stepId: string;\n setNextStep: boolean = false;\n}\n\nexport class GeneratedDocument {\n documentId: string;\n name: string;\n fileName: string;\n path: string;\n version: number;\n stepId: string;\n isApiDocument: boolean;\n content: string;\n}\n\nexport class ConvertDocumentToPdfRequest {\n content: string;\n fileName: string;\n documentId: string;\n appDataId: string;\n appConfigurationUUID?: string;\n environment?: string;\n}\n\nexport class ConvertDocumentToPdfResponse {\n pdfContent: string;\n success: boolean;\n errorMessage?: string;\n}\n","import { ChangeDetectorRef, Component } from '@angular/core';\nimport { ApplicationDataService } from '../../services/applicationData.service';\nimport {\n AppDocument,\n UploadDocumentDetails,\n} from '../../models/forms.model';\nimport { DialogService } from '../../services/dialog.service';\nimport { Observable } from 'rxjs';\nimport { ApplicationUploadDocumentsDto } from '../../models/application.model';\nimport { Utils } from '../../others/utils';\nimport { BaseFormlyControlComponent } from '../baseFormlyControlComponent';\n\n@Component({\n selector: 'app-formly-upload-documents',\n templateUrl: './formly-upload-documents.component.html',\n styleUrl: './formly-upload-documents.component.scss',\n})\nexport class FormlyUploadDocumentsComponent extends BaseFormlyControlComponent {\n documents: UploadDocumentDetails[];\n mandatoryDocuments: string[] = [];\n isDisabled: boolean;\n constructor(\n private dialog: DialogService,\n private appDataService: ApplicationDataService,\n cdr: ChangeDetectorRef\n ) {\n super(cdr);\n }\n\n override onInit(): void {\n this.isDisabled = false;\n if (this.controlData && this.controlData.specificControlData) {\n this.documents = this.controlData.specificControlData.documents as UploadDocumentDetails[];\n this.mandatoryDocuments = this.documents\n .filter((d) => d.isMandatory)\n .map((d) => d.documentId);\n }\n\n const appDocuments = this.props['documentsData'] as AppDocument[];\n if (appDocuments && this.documents) {\n this.documents.forEach((d) => {\n const appDoc = appDocuments.find((ad) => ad.id === d.documentId);\n d.documentName =\n appDoc?.translations?.find(t => t.languageIso === this.langIso)?.value ||\n appDoc?.name ||\n d.documentId;\n });\n }\n }\n\n async submitUploadAsync(\n doc: UploadDocumentDetails,\n uploadPayload: ApplicationUploadDocumentsDto\n ): Promise<Observable<number>> {\n this.cdr.detectChanges();\n let obs = new Observable<number>((subscriber) => {\n if (doc.isUploading) {\n this.dialog.popErrorTranslation(\n this.controlData.errorsTranslations,\n this.langIso,\n 'waitForUpload'\n );\n subscriber.next();\n } else {\n doc.isUploading = true;\n this.isDisabled = true;\n this.appDataService.uploadDocuments(uploadPayload).subscribe({\n next: (res) => {\n subscriber.next();\n doc.isUploading = false;\n doc.isUploadSuccess = true;\n\n this.cdr.detectChanges();\n this.mandatoryDocuments = [];\n if (res) {\n this.isDisabled = false;\n }\n if (res && res.length > 0) {\n this.documents.forEach((d) => {\n if (res.includes(d.documentId)) {\n this.mandatoryDocuments.push(d.documentId);\n }\n });\n }\n },\n error: (err) => {\n subscriber.next();\n doc.isUploading = false;\n this.isDisabled = false;\n this.cdr.detectChanges();\n },\n });\n this.cdr.detectChanges();\n }\n });\n\n return obs;\n }\n\n pullFromUI(\n doc: UploadDocumentDetails,\n fileInput: File\n ): Promise<ApplicationUploadDocumentsDto> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(fileInput);\n reader.onload = () => {\n doc.fileName = fileInput.name;\n doc.fileData = reader.result?.toString().split(';base64,')[1] || '';\n\n this.cdr.detectChanges();\n\n let appDocs = this.getNewUploadPayload();\n this.documents.forEach((d) => {\n if (d.documentId === doc.documentId) {\n appDocs.documents.push({\n documentId: d.documentId,\n fileData: doc.fileData,\n fileName: doc.fileName,\n });\n }\n });\n\n this.cdr.detectChanges();\n resolve(appDocs);\n };\n reader.onerror = (error) => {\n reject(error);\n };\n });\n }\n\n isValid(): boolean {\n let isValid = true;\n if (this.documents) {\n let errorMessages: string[] = [];\n this.documents.forEach((d) => {\n if (this.mandatoryDocuments.includes(d.documentId)) {\n const msg = Utils.createErrorTranslationMssageWithParameters(\n this.controlData.errorsTranslations,\n this.langIso,\n 'isMandatory',\n [d.documentName]\n );\n errorMessages.push(msg);\n isValid = false;\n }\n });\n if (errorMessages.length > 0) {\n this.dialog.popError(errorMessages.join('\\n'));\n }\n }\n return isValid;\n }\n\n selectFile(event: any, doc: UploadDocumentDetails): void {\n doc.fileData = undefined;\n if (!event.target.files[0] || event.target.files[0].length === 0) {\n return;\n }\n const file = event.target.files[0];\n if (file) {\n let invalidType: boolean = true;\n if (doc.documentExtensions && doc.documentExtensions !== '') {\n const docExtensions = doc.documentExtensions.split(';');\n if (docExtensions && docExtensions.length > 0) {\n const fileExtension = Utils.getFileExtension(file.name);\n if (fileExtension) {\n docExtensions.forEach((d) => {\n if (fileExtension.toLowerCase() == d.toLowerCase()) {\n invalidType = false;\n }\n });\n }\n } else {\n invalidType = false;\n }\n } else {\n invalidType = false;\n }\n if (invalidType) {\n this.dialog.popErrorTranslation(\n this.controlData.errorsTranslations,\n this.langIso,\n 'invalidType',\n doc.documentExtensions\n );\n event.currentTarget.value = '';\n return;\n }\n if (file.size) {\n const sizeInKB = file.size / 1024;\n if (sizeInKB > doc.documentMaxSize) {\n this.dialog.popErrorTranslation(\n this.controlData.errorsTranslations,\n this.langIso,\n 'maxSize',\n doc.documentMaxSize.toString() + 'KB'\n );\n\n event.currentTarget.value = '';\n return;\n }\n }\n\n this.pullFromUI(doc, file)\n .then(async (res) => {\n (await this.submitUploadAsync(doc, res)).subscribe();\n this.cdr.detectChanges();\n })\n .catch((error) => {\n console.error('Error processing file:', error);\n });\n }\n this.cdr.detectChanges();\n }\n\n override canAdvance(): boolean {\n this.cdr.detectChanges();\n let canProceed = false;\n\n if (this.isValid()) {\n canProceed = true;\n }\n\n return canProceed;\n }\n\n getNewUploadPayload(): ApplicationUploadDocumentsDto {\n let uploadPayload = new ApplicationUploadDocumentsDto();\n uploadPayload.appDataId = this.appDataId;\n uploadPayload.appId = this.appId;\n uploadPayload.controlId = this.controlData.identifier;\n uploadPayload.env = this.env;\n uploadPayload.documents = [];\n\n return uploadPayload;\n }\n}\n","<p *ngIf=\"title\">\n {{ title }}\n</p>\n\n<table>\n <thead class=\"table-head\">\n <tr>\n <th>\n {{ \"document\" | translate }}\n </th>\n <th>\n {{ \"format\" | translate }}\n </th>\n <th>\n {{ \"flux.components.uploadDocument.maxSize\" | translate }}\n </th>\n <th>\n {{ \"stepControl.mandatory\" | translate }}\n </th>\n </tr>\n </thead>\n <tbody class=\"table-detail\">\n <tr *ngFor=\"let doc of documents; let i = index\">\n <td>\n {{ doc.documentName }}\n </td>\n <td>\n {{ doc.documentExtensions }}\n </td>\n <td>\n {{ doc.documentMaxSize }}\n </td>\n <td>\n {{ (doc.isMandatory ? \"yes\" : \"no\") | translate }}\n </td>\n <td>\n <div>\n <input\n type=\"file\"\n #fileInput\n (change)=\"selectFile($event, doc)\"\n hidden\n />\n <button\n mat-flat-button\n color=\"primary\"\n (click)=\"fileInput.click()\"\n [disabled]=\"this.isDisabled\"\n >\n <mat-icon>cloud_upload</mat-icon>\n {{\n doc.fileName\n ? doc.fileName\n : (\"common.actions.upload\" | translate)\n }}\n </button>\n </div>\n </td>\n <td *ngIf=\"doc.fileName\">\n <i-tabler\n *ngIf=\"\n doc.isUploading === false &&\n doc.isUploadSuccess === true &&\n doc.fileName\n \"\n class=\"icon-25 text-white bg-primary rounded\"\n name=\"check\"\n ></i-tabler>\n <mat-spinner\n *ngIf=\"doc.isUploading === true\"\n class=\"m-x-auto upload-spinner\"\n ></mat-spinner>\n </td>\n </tr>\n </tbody>\n</table>\n","import { Injectable, inject } from '@angular/core';\nimport { catchError, map, Observable, of } from 'rxjs';\nimport { ConfigService } from '../others/config-service';\nimport { AuthHttpService } from './auth-http.service';\n\n@Injectable()\nexport class OtpService {\n constructor(private http: AuthHttpService) {}\n\n configService = inject(ConfigService);\n\n generate(params: {\n phoneNumber: string | null;\n emailAddress: string | null;\n appDataId: string;\n stepId: string;\n }): Observable<any> {\n const url =\n this.configService.readConfig().baseUrlInfrastructure +\n `/otp/generate-app-otp`;\n const data = { ...params, templateName: 'otpCode' };\n return this.http.postExtended(url, data, { observe: 'response' }).pipe(\n map((response) => response),\n catchError((error) => of({ ...error, body: false }))\n );\n }\n\n validate(data: {\n otpCode: string;\n appDataId: string;\n stepId: string;\n }): Observable<any> {\n const url =\n this.configService.readConfig().baseUrlInfrastructure +\n `/otp/validate-app-otp`;\n return this.http.postExtended(url, data, { observe: 'response' }).pipe(\n map((response) => response),\n catchError((error) => of({ ...error, body: false }))\n );\n }\n}\n","import {\n Component,\n OnInit,\n AfterViewInit,\n ChangeDetectorRef,\n} from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { OtpService } from '../../services/otp.service';\nimport { BehaviorSubject } from 'rxjs';\nimport { FluxType } from '../../models/forms.model';\nimport { DialogService } from '../../services/dialog.service';\nimport { LabelKeys } from '../../enums/label.keys';\nimport { BaseFormlyStepComponent } from '../baseFormlyStepComponent';\n\n@Component({\n selector: 'app-formly-validate-contact-info',\n templateUrl: './formly-validate-contact-info.component.html',\n styleUrl: './formly-validate-contact-info.component.scss',\n})\nexport class FormlyValidateContactInfoComponent\n extends BaseFormlyStepComponent\n implements OnInit, AfterViewInit\n{\n private _otpButtonStyle: { [key: string]: string } = {};\n control: FormControl = new FormControl('', [Validators.required]);\n otp: FormControl = new FormControl('', [Validators.required]);\n\n sent: BehaviorSubject<boolean> = new BehaviorSubject(false);\n isEmail: boolean;\n popMessageKeys = LabelKeys.popMessages;\n otpValidated: BehaviorSubject<boolean> = new BehaviorSubject(false);\n buttonText: '';\n\n constructor(\n private otpService: OtpService,\n private dialog: DialogService,\n cdr: ChangeDetectorRef\n ) {\n super(cdr);\n }\n\n ngAfterViewInit(): void {}\n\n override onPageSelected() {\n const styleObj = this.props?.['design']?.['.button-otpaction'];\n if (styleObj) {\n const camelCaseStyle: { [key: string]: string } = {};\n Object.keys(styleObj).forEach((key) => {\n const camelKey = key.replace(/-([a-z])/g, (g) => g[1].toUpperCase());\n camelCaseStyle[camelKey] = styleObj[key];\n });\n this._otpButtonStyle = camelCaseStyle;\n } else {\n this._otpButtonStyle = {};\n }\n const group = this.form as FormGroup;\n group.addControl(\n this.stepData.sections[0].controls[0].identifier,\n this.control\n );\n\n if (this.stepData) {\n if (this.stepData.type == FluxType.Email) {\n this.isEmail = true;\n this.control.setValidators([Validators.required, Validators.email]);\n this.control.updateValueAndValidity();\n }\n\n if (this.stepData.type == FluxType.Phone) {\n this.isEmail = false;\n this.control.setValidators([\n Validators.required,\n Validators.pattern(\n '^(\\\\+40|40|0)?(7[0-8][0-9]|2[0-9]{2}|3[0-9]{2})([\\\\s\\\\.-]?\\\\d{3}){2}$'\n ),\n ]);\n this.control.updateValueAndValidity();\n }\n\n if (this.stepData.config.collected) {\n const value = this.form.get(\n this.stepData.config.componentCollected\n )?.value;\n this.control.setValue(value);\n\n this.form\n .get(this.stepData.config.componentCollected)\n ?.valueChanges.subscribe(() => {\n this.control.setValue(\n this.form.get(this.stepData.config.componentCollected)?.value\n );\n });\n }\n\n this.buttonText =\n this.stepData.type === FluxType.Email\n ? this.props['labels']?.emailButtonLabel\n : this.props['labels']?.phoneButtonLabel;\n }\n }\n\n get otpButtonStyle(): { [key: string]: string } {\n return this._otpButtonStyle;\n }\n\n sendOtp() {\n this.control.markAsTouched();\n\n if (this.control.valid) {\n this.otpService\n .generate({\n phoneNumber:\n this.stepData.type == FluxType.Phone ? this.control.value : null,\n emailAddress:\n this.stepData.type == FluxType.Email ? this.control.value : null,\n appDataId: this.appDataId,\n stepId: this.stepData.identifier,\n })\n .subscribe({\n next: (response) => {\n if (response.ok && response.body === true) {\n this.sent.next(true);\n }\n },\n });\n }\n }\n\n validateOtp() {\n this.otp.markAsTouched();\n\n if (this.otp.valid) {\n this.otpService\n .validate({\n otpCode: this.otp.value,\n appDataId: this.appDataId,\n stepId: this.stepData.identifier,\n })\n .subscribe({\n next: (response) => {\n if (response.ok && response.body === true) {\n this.dialog.popSuccess(this.props['labels'].otpSuccessLabel);\n this.otpValidated.next(true);\n this.onEvent('success');\n } else {\n this.dialog.popError(this.props['labels'].otpErrorLabel);\n }\n },\n });\n }\n }\n}\n","<div class=\"component-text-field\">\n <div *ngIf=\"!(sent | async); else otpTemplate\">\n <mat-form-field class=\"full-width\">\n <mat-label>\n {{ isEmail ? props[\"labels\"].emailLabel : props[\"labels\"].phoneLabel }}\n </mat-label>\n <input\n matInput\n type=\"text\"\n [formControl]=\"control\"\n [readonly]=\"stepData.config.collected\"\n />\n </mat-form-field>\n <div\n *ngIf=\"\n control.invalid &&\n (control.dirty || control.touched) &&\n control.hasError('required')\n \"\n class=\"alert alert-danger\"\n >\n {{\n isEmail\n ? props[\"labels\"].emailRequiredLabel\n : props[\"labels\"].phoneRequiredLabel\n }}\n </div>\n <div\n *ngIf=\"\n control.invalid &&\n (control.dirty || control.touched) &&\n !control.hasError('required')\n \"\n class=\"alert alert-danger\"\n >\n {{\n isEmail\n ? props[\"labels\"].emailErrorLabel\n : props[\"labels\"].phoneErrorLabel\n }}\n </div>\n <button\n mat-button\n type=\"button\"\n [ngStyle]=\"otpButtonStyle\"\n (click)=\"sendOtp()\"\n >\n {{ buttonText }}\n </button>\n </div>\n</div>\n\n<ng-template #otpTemplate>\n <mat-form-field class=\"full-width\">\n <mat-label>\n {{ props[\"labels\"].otpLabel }}\n </mat-label>\n <input matInput type=\"text\" [formControl]=\"otp\" />\n </mat-form-field>\n <button\n mat-button\n type=\"button\"\n *ngIf=\"!(otpValidated | async)\"\n [ngStyle]=\"otpButtonStyle\"\n (click)=\"validateOtp()\"\n >\n {{ props[\"labels\"].otpButtonLabel }}\n </button>\n</ng-template>\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { LabelKeys } from '../enums/label.keys';\n\n@Component({\n selector: 'app-confirmation',\n templateUrl: './confirmation.component.html',\n styleUrls: ['./confirmation.component.scss'],\n})\nexport class ConfirmationComponent implements OnInit {\n public commonKeys = LabelKeys.common;\n\n item: any;\n text: any;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private data: { item: any; text: string },\n public dialog: MatDialogRef<ConfirmationComponent>\n ) {\n this.item = data.item;\n this.text = data.text;\n }\n\n ngOnInit(): void {}\n\n submit(): void {\n this.dialog.close({ event: 'submit', item: this.item });\n }\n\n cancel(): void {\n this.dialog.close({ event: 'cancel' });\n }\n}\n","<mat-card class=\"cardWithShadow blue_theme theme-card m-b-0\">\n <mat-card-header>\n <mat-card-title class=\"m-b-0\">\n {{ commonKeys.confirmation.title | translate }}\n </mat-card-title>\n </mat-card-header>\n <mat-card-content class=\"b-t-1\">\n {{ text | translate }}\n <div class=\"m-t-24\">\n <button mat-flat-button type=\"button\" (click)=\"submit()\" color=\"primary\" class=\"m-r-16\">\n {{ commonKeys.actions.confirm | translate }}\n </button>\n <button mat-flat-button type=\"button\" (click)=\"cancel()\">\n {{ commonKeys.actions.cancel | translate }}\n </button>\n </div>\n </mat-card-content>\n</mat-card>\n","import {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatPaginator } from '@angular/material/paginator';\nimport { MatSort, SortDirection } from '@angular/material/sort';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { merge, Observable } from 'rxjs';\nimport { Router } from '@angular/router';\nimport { LabelKeys } from '../enums/label.keys';\nimport { ConfirmationComponent } from './confirmation.component';\n\n@Component({\n selector: 'shared-grid',\n templateUrl: './grid.component.html',\n styleUrls: ['./grid.component.scss'],\n})\nexport class GridComponent\n implements AfterContentInit, AfterViewInit, OnChanges\n{\n public commonKeys = LabelKeys.common;\n\n @Input() data: any;\n @Input() count: any;\n @Input() columns: {\n id: string;\n title?: string;\n label?: string;\n route?: string;\n icon?: string;\n sortable?: boolean;\n newTab?: boolean;\n templateKey?: string;\n }[] = [];\n @Input() config: {\n PK?: string;\n header?: boolean;\n filter?: boolean;\n sort?: string;\n sortDirection?: SortDirection;\n pages?: boolean;\n stateFilter?: boolean;\n } = {};\n\n @Output() reload = new EventEmitter<{\n page: number;\n pageSize: number;\n sort: string;\n sortDirection: string;\n filter: string;\n state: boolean | null;\n }>();\n @Output() delete = new EventEmitter<{ item: any }>();\n @Output() duplicate = new EventEmitter<{ item: any }>();\n @Output() open = new EventEmitter<{ id: any }>();\n\n async: boolean;\n @ViewChild(MatPaginator) paginator: MatPaginator = Object.create(null);\n @ViewChild(MatSort) sort: MatSort = Object.create(null);\n @ContentChildren(TemplateRef) templates!: QueryList<TemplateRef<any>>;\n\n dataSource: any = null;\n dataColumns: string[];\n filterField = new FormControl('');\n stateToggle = new FormControl('');\n\n constructor(\n public dialog: MatDialog,\n private router: Router,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.async === false && changes['data']) {\n this.refreshUI();\n }\n }\n\n ngAfterContentInit(): void {\n this.dataColumns = this.columns.map((i) => i.id);\n this.async = !this.isNumber(this.count);\n if (!this.async) {\n this.dataSource = new MatTableDataSource(this.data);\n }\n }\n\n ngAfterViewInit(): void {\n if (this.config.pages ?? true) {\n this.initPaginator();\n if (this.sort && this.sort.sortChange) {\n this.sort.sortChange.subscribe(() => (this.paginator.pageIndex = 0));\n merge(this.sort.sortChange, this.paginator.page).subscribe(() => {\n this.refresh();\n });\n }\n }\n if (!this.async && this.dataSource) {\n this.dataSource.paginator = this.paginator;\n this.dataSource.sort = this.sort;\n }\n const filter = new URL(location.href).searchParams.get('filter');\n if (filter) {\n this.filterField.setValue(filter);\n this.filter();\n }\n }\n\n refreshUI() {\n this.dataSource = new MatTableDataSource(this.data);\n this.initPaginator();\n this.cdr.detectChanges();\n }\n\n initPaginator() {\n if (this.paginator && this.paginator._intl) {\n this.paginator._intl.getRangeLabel = (\n page: number,\n pageSize: number,\n length: number\n ) => {\n if (!this.async && !this.dataSource.filter && this.count) {\n length = this.count;\n this.paginator.length = this.count;\n }\n this.paginator._intl.itemsPerPageLabel = \n this.commonKeys.pagination.perPage\n \n const separator = \n this.commonKeys.pagination.of;\n \n if (length === 0 || pageSize === 0) {\n return `0 ${separator} 0`;\n }\n length = Math.max(length, 0);\n const startIndex = page * pageSize;\n const endIndex =\n startIndex < length\n ? Math.min(startIndex + pageSize, length)\n : startIndex + pageSize;\n return `${startIndex + 1} - ${endIndex} ${separator} ${length}`;\n };\n }\n }\n\n refresh(): void {\n this.reload.emit({\n page: this.paginator.pageIndex + 1,\n pageSize: this.paginator.pageSize,\n sort: this.sort.active,\n sortDirection: this.sort.direction,\n filter: this.filterField.value ?? '',\n state: this.config.stateFilter ? !!this.stateToggle.value : null,\n });\n }\n\n filter() {\n const filter = this.filterField.value ?? '';\n const params = new URLSearchParams(window.location.search);\n if (filter) params.set('filter', filter);\n else params.delete('filter');\n window.history.replaceState(\n {},\n '',\n window.location.pathname +\n (params.has('filter') ? '?' : '') +\n params.toString()\n );\n if (!this.async && this.dataSource) {\n this.dataSource.filter = filter.trim().toLowerCase();\n } else {\n this.refresh();\n }\n }\n\n toggleState() {\n this.refresh();\n }\n\n clickDelete(item: any) {\n const dialog = this.dialog.open(ConfirmationComponent, {\n data: { item: item, text: 'common.confirmation.delete' },\n width: '100%',\n maxWidth: 'min(95vw, 430px)',\n });\n dialog.afterClosed().subscribe((result) => {\n if (result?.event === 'submit') {\n this.delete.emit(result.item);\n }\n });\n }\n\n clickDuplicate(item: any) {\n this.duplicate.emit({ item: item });\n }\n\n buttonClick(column: any, element: any): void {\n if (column.route) {\n const route = column.route.replace(\n '{id}',\n element[this.config.PK ?? 'id']\n );\n if (column.newTab === true) {\n this.openInNewTab(route);\n } else {\n this.router.navigate([route]);\n }\n }\n }\n\n openInNewTab(route: string) {\n let baseUrl = window.location.href.replace(this.router.url, '');\n window.open(baseUrl + route, '_blank');\n }\n\n clickOpen(id: any): void {\n this.open.emit({ id });\n }\n\n private isNumber(val: any): boolean {\n return typeof val === 'number';\n }\n\n public isDate(val: any): boolean {\n const datePatterns = [\n /^\\d{4}-\\d{2}-\\d{2}$/,\n /^\\d{2}\\/\\d{2}\\/\\d{4}$/,\n /^\\d{2}-\\d{2}-\\d{4}$/,\n /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2})?$/,\n ];\n if (\n typeof val === 'string' &&\n datePatterns.some((pattern) => pattern.test(val))\n ) {\n const date = new Date(val);\n return date instanceof Date && !isNaN(date.valueOf());\n }\n return false;\n }\n\n public typeOf(val: any): string {\n return typeof val;\n }\n\n public getObjectValues(key: string, row: any): any {\n let keys: string[] = key.split('.', 2);\n let value: any = row[keys[0]];\n \n // Check if value exists and is an array before calling map\n if (!value || !Array.isArray(value)) {\n // If the key contains a dot but it's not for nested properties,\n // try to access it directly as a property name with dot\n if (row.hasOwnProperty(key)) {\n return row[key];\n }\n return '';\n }\n \n return value\n .map((i: { [x: string]: any }): any =>\n keys[1].includes('.')\n ? this.getObjectValues(keys[1], i[keys[1]])\n : i[keys[1]]\n )\n .join(', ');\n }\n getTemplateRef(templateKey: string | undefined): TemplateRef<any> | null {\n if (!templateKey || !this.templates) {\n return null;\n }\n return (\n this.templates.find((t) => {\n const localNames = (t as any)._declarationTContainer?.localNames || [];\n return localNames.includes(templateKey);\n }) || null\n );\n }\n}\n","<div *ngIf=\"count !== 0 && (config.filter ?? true)\" class=\"row justify-content-between m-b-8\">\n <div class=\"col-12 col-md-5 col-lg-4 col-xl-3 p-l-0\">\n <mat-form-field appearance=\"outline\" class=\"w-100 hide-hint custom-field\">\n <input matInput [formControl]=\"filterField\" (keyup)=\"filter()\"\n placeholder=\"{{ commonKeys.actions.filter }}\" />\n </mat-form-field>\n </div>\n <div *ngIf=\"config.stateFilter\" class=\"col-12 col-md-5 col-lg-4 col-xl-3\">\n {{ commonKeys.actions.includeInactive }}\n <mat-slide-toggle [formControl]=\"stateToggle\" (click)=\"toggleState()\" class=\"m-l-4 m-t-10\"></mat-slide-toggle>\n </div>\n <div class=\"col\"></div>\n</div>\n\n<ng-container *ngIf=\"count === 0; else grid\">\n {{ commonKeys.pagination.noItems }}\n</ng-container>\n\n<ng-template #grid>\n <div class=\"table-responsive m-t-20\">\n <table mat-table [dataSource]=\"dataSource || (data | async)!\" matSort matSortActive=\"{{ config.sort ?? 'id' }}\"\n matSortDisableClear [matSortDirection]=\"config.sortDirection ?? 'asc'\" class=\"w-100\">\n <ng-container *ngFor=\"let column of columns\" matColumnDef=\"{{ column.id }}\">\n\n <ng-container *ngIf=\"!column.templateKey; else templateCell\">\n <ng-container *ngIf=\"column.route === undefined; else routeHeader\">\n <ng-container *ngIf=\"column.sortable === true; else unsortable\">\n <th mat-header-cell mat-sort-header *matHeaderCellDef class=\"f-s-16 f-w-700\">\n {{ column.title }}{{ column.label }}\n </th>\n </ng-container>\n <ng-template #unsortable>\n <th mat-header-cell *matHeaderCellDef class=\"f-s-16 f-w-700\">\n {{ column.title }}{{ column.label }}\n </th>\n </ng-template>\n\n <td mat-cell *matCellDef=\"let element\" class=\"f-s-14\">\n <ng-container *ngIf=\"isDate(element[column.id]); else second\">\n {{ element[column.id] | date : \"dd.MM.yyyy hh:mm\" }}\n </ng-container>\n <ng-template #second>\n <ng-container *ngIf=\"typeOf(element[column.id]) === 'boolean'; else third\">\n <ng-container *ngIf=\"element[column.id] === true; else disabled\">\n <mat-icon>\n <i-tabler name=\"check\" class=\"icon-18\"></i-tabler>\n </mat-icon>\n </ng-container>\n <ng-template #disabled>\n <i-tabler name=\"x\" class=\"icon-18\"></i-tabler>\n </ng-template>\n </ng-container>\n </ng-template>\n <ng-template #third>\n <ng-container *ngIf=\"column.id.includes('.'); else fourth\">\n {{ getObjectValues(column.id, element) }}\n </ng-container>\n </ng-template>\n <ng-template #fourth>\n {{ element[column.id] }}\n </ng-template>\n </td>\n </ng-container>\n\n <ng-template #routeHeader>\n <th width=\"1\" mat-header-cell *matHeaderCellDef></th>\n <td mat-cell *matCellDef=\"let element\" class=\"f-s-14 text-right\">\n <button *ngIf=\"column.id != 'delete' && column.id != 'open'\" mat-stroked-button\n (click)=\"buttonClick(column, element)\">\n <mat-icon *ngIf=\"column.icon\" class=\"m-0\">\n <i-tabler name=\"{{ column.icon }}\" class=\"icon-18\"></i-tabler>\n </mat-icon>\n <span *ngIf=\"column.icon && (column.title || column.label)\">&nbsp;</span>\n <span>{{ column.title }}{{ column.label }}</span>\n </button>\n <button *ngIf=\"column.id == 'open'\" mat-stroked-button (click)=\"clickOpen(element)\">\n <mat-icon *ngIf=\"column.icon\" class=\"m-0\">\n <i-tabler name=\"{{ column.icon }}\" class=\"icon-18\"></i-tabler>\n </mat-icon>\n </button>\n </td>\n </ng-template>\n </ng-container>\n\n <ng-template #templateCell>\n <th mat-header-cell *matHeaderCellDef class=\"f-s-16 f-w-700\">\n {{ column.title }}{{ column.label }}\n </th>\n <td mat-cell *matCellDef=\"let row\" class=\"f-s-14\">\n <ng-container *ngTemplateOutlet=\"\n getTemplateRef(column.templateKey);\n context: { $implicit: row }\n \">\n </ng-container>\n </td>\n </ng-template>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"dataColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: dataColumns\"></tr>\n </table>\n\n <mat-paginator [length]=\"async ? (count | async) : count\" [pageSizeOptions]=\"[10, 25, 100]\">\n </mat-paginator>\n </div>\n</ng-template>","import { ChangeDetectorRef, Component } from '@angular/core';\nimport { ApplicationDataService } from '../../services/applicationData.service';\nimport {\n DimensionType,\n FormModel,\n SectionType,\n StepControlType,\n} from '../../models/forms.model';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { Utils } from '../../others/utils';\nimport { BaseFormlyStepComponent } from '../baseFormlyStepComponent';\nimport { DependentDictionaryData } from '../../models/flux.model';\n\n@Component({\n selector: 'app-formly-view-offers',\n templateUrl: './formly-view-offers.component.html',\n styleUrl: './formly-view-offers.component.scss',\n})\nexport class FormlyViewOffersComponent extends BaseFormlyStepComponent {\n appModel: FormModel;\n offers: any = [];\n columns: any;\n datasource: any[];\n config = {\n filter: false,\n };\n constructor(\n private appDataService: ApplicationDataService,\n cdr: ChangeDetectorRef\n ) {\n super(cdr);\n }\n\n override onInit() {\n this.isLoading = true;\n this.appModel = this.props['appModel'];\n this.configureColumns();\n }\n\n override onPageSelected() {\n this.isLoading = true;\n\n this.appDataService.getOffers(this.appDataId).subscribe({\n next: (result) => {\n this.offers = result;\n this.configureDataSource();\n this.isLoading = false;\n this.cdr.detectChanges();\n },\n error: (err) => {\n this.isLoading = false;\n this.cdr.detectChanges();\n },\n });\n }\n\n configureColumns() {\n const columns = this.stepData.config.columns;\n columns.sort(\n (a: { order: number }, b: { order: number }) => a.order - b.order\n );\n\n const idMap = new Map<string, number>();\n const baseColumns = columns.map((col: { field: any; name: any[] }) => {\n let id = col.field.replace(/[^a-zA-Z0-9]+/g, '_');\n const count = idMap.get(id) || 0;\n idMap.set(id, count + 1);\n if (count > 0) {\n id = `${id}_${count}`;\n }\n return {\n id,\n originalField: col.field,\n label:\n col.name.find((n) => n.languageIso === this.langIso)?.value || 'N/A',\n };\n });\n\n const actionColumns = [\n {\n id: 'open',\n icon: 'eye',\n route: '#',\n },\n ];\n\n this.columns = [...baseColumns, ...actionColumns];\n }\n\n configureDataSource() {\n const columns = this.columns.filter((c: any) => c.originalField);\n\n let dataSource: any[] = [];\n\n this.offers.forEach((o: any) => {\n let dataSourceRow: Record<string, any> = {};\n dataSourceRow['offerId'] = o.offerId;\n columns.forEach((column: any) => {\n const columnField = column.originalField;\n if (columnField.startsWith('api')) {\n const fieldId = columnField.split(' -> ').pop();\n const offerField = o.fields.find((f: any) => f.fieldId === fieldId);\n const value = offerField ? offerField.value : '';\n dataSourceRow[column.id] = value;\n } else if (columnField.startsWith('metadata')) {\n switch (columnField) {\n case 'metadata.appDataId': {\n dataSourceRow[column.id] = this.appDataId;\n break;\n }\n case 'metadata.configurationId': {\n dataSourceRow[column.id] = this.appModel.applicationUuid;\n break;\n }\n default: {\n }\n }\n } else {\n const value = this.form.value[columnField];\n if (value !== undefined) {\n dataSourceRow[column.id] = value;\n }\n }\n });\n\n dataSource.push(dataSourceRow);\n });\n this.datasource = dataSource;\n }\n\n offerSelected(offer: any) {\n const formGroup = this.form as FormGroup;\n const formValues = this.form.value || {};\n\n const selectedOffer = this.offers.find(\n (o: any) => o.offerId === offer.id.offerId\n );\n if (!selectedOffer) return;\n\n selectedOffer.fields.forEach((f: any) => {\n formValues[f.fieldId] = f.value;\n\n if (!formGroup.controls[f.fieldId]) {\n formGroup.addControl(f.fieldId, new FormControl(f.value));\n }\n });\n\n this.form.patchValue(formValues);\n this.stepData.config.offerId = selectedOffer.offerId;\n\n const section = {\n title: '',\n titleStyle: '',\n translations: [],\n showSectionTitle: false,\n showSectionSeparator: false,\n isNavigationSection: false,\n dependentDictionary: new DependentDictionaryData(),\n presentationControls: [],\n canDepend: false,\n identifier: Utils.generateUUID(),\n type: SectionType.Collect,\n controls: selectedOffer.fields.map((f: any) => ({\n identifier: f.fieldId,\n title: '',\n translations: [],\n type: StepControlType.ManualInput,\n dimension: 0,\n dimensionType: DimensionType.Percentage,\n autoDimension: false,\n specificControlData: undefined,\n dependentDictionary: new DependentDictionaryData(),\n canDepend: false,\n isMandatory: false,\n })),\n };\n\n this.stepData.sections = [section];\n if (this.props['event']) {\n this.isLoading = true;\n this.props['event'](selectedOffer.offerId);\n }\n }\n}\n","<mat-spinner *ngIf=\"isLoading\" class=\"m-x-auto upload-spinner\"></mat-spinner>\n<ng-container class=\"d-flex flex-row\" *ngIf=\"!isLoading\">\n <mat-card class=\"cardWithShadow blue_theme theme-card align-items-stretch\">\n <mat-card-content class=\"p-24\">\n <shared-grid [data]=\"datasource\"\n [count]=\"datasource.length\"\n [columns]=\"columns\"\n [config]=\"config\"\n (open)=\"offerSelected($event)\"></shared-grid>\n </mat-card-content>\n </mat-card>\n</ng-container>\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class OriginFormService {\n\n constructor() { }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\nimport { Observable, map, startWith } from 'rxjs';\n\n@Component({\n selector: 'shared-picker',\n templateUrl: './picker.component.html',\n styleUrls: ['./picker.component.scss']\n})\nexport class PickerComponent implements OnInit {\n @Input() data: any;\n @Input() selections: any[] = [];\n @Input() placeholder: string | undefined;\n @Input()\n readonly: boolean = false;\n @Input() inputVisible: boolean = true;\n @Input() displayProperty: string = 'name';\n @Input() iconProperty: string = 'icon';\n @Output() picked = new EventEmitter<any>();\n @Output() removed = new EventEmitter<any>();\n\n form = this.builder.group({\n picker: [''],\n });\n\n groups: Group[] = [];\n options: Observable<Group[]> | undefined;\n\n constructor(private builder: FormBuilder) {}\n\n ngOnInit(): void {\n this.refresh();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['data']) {\n this.refresh();\n }\n if (changes['selections']) {\n this.refresh();\n }\n }\n\n refresh() {\n if (this.data instanceof Observable) {\n this.data.subscribe({\n next: (data: any[]) => {\n this.getItems(data);\n },\n });\n } else {\n this.getItems(this.data as any[]);\n }\n }\n\n getItems(data: any[]) {\n this.groups = [];\n if (data && data.length) {\n data.forEach((item: any) => {\n if (item) {\n const letter = item[this.displayProperty][0];\n\n if (!this.groups.some((i) => i.key == letter)) {\n this.groups.push({ key: letter, values: [] });\n }\n\n const object = this.groups.find((i) => i.key == letter);\n object?.values.push(item);\n }\n });\n\n this.groups.sort((a, b) => (a.key < b.key ? -1 : a.key > b.key ? 1 : 0));\n\n this.options = this.form.get('picker')!.valueChanges.pipe(\n startWith(''),\n map((value) => this.filter(value || ''))\n );\n }\n }\n\n private filter(value: string): Group[] {\n if (typeof value === 'string') {\n return this.groups\n .map((group) => ({\n key: group.key,\n values: filter(\n group.values,\n this.selections,\n value,\n this.displayProperty\n ),\n }))\n .filter((group) => group.values.length > 0);\n }\n\n return [];\n }\n\n selected(value: any): void {\n this.selections.push(value);\n this.form.get('picker')?.setValue('');\n\n this.picked.emit(value);\n }\n\n remove(value: any): void {\n this.selections.splice(\n this.selections.findIndex(\n (i) => i[this.displayProperty] === value[this.displayProperty]\n ),\n 1\n );\n this.form.get('picker')?.setValue('');\n\n this.removed.emit(value);\n }\n}\n\nexport interface Group {\n key: string;\n values: any[];\n}\n\nexport const filter = (\n options: any[],\n selections: any[],\n value: string,\n displayProperty: string\n): string[] => {\n return options.filter(\n (item) =>\n (value\n ? item[displayProperty].toLowerCase().includes(value.toLowerCase())\n : true) &&\n !selections?.some((i) => i[displayProperty] == item[displayProperty])\n );\n};\n","<form [formGroup]=\"form\">\n <mat-form-field appearance=\"outline\" class=\"w-100 hide-hint\" [class.disabled]=\"readonly\" [hidden]=\"true\"\n *ngIf=\"inputVisible\">\n <input type=\"text\" matInput [placeholder]=\"placeholder ?? ''\" [readonly]=\"readonly\" [disabled]=\"readonly\"\n formControlName=\"picker\" [matAutocomplete]=\"autocomplete\" />\n <mat-icon matPrefix>\n <i-tabler name=\"arrow-down-right\" class=\"icon-20 d-flex\"></i-tabler>\n </mat-icon>\n\n <mat-autocomplete #autocomplete=\"matAutocomplete\" (optionSelected)=\"selected($event.option.value)\">\n <mat-optgroup *ngFor=\"let group of options | async\" [label]=\"group.key\">\n <mat-option *ngFor=\"let value of group.values\" [value]=\"value\">\n <div class=\"button-cell\">\n <mat-icon *ngIf=\"value[iconProperty]\">{{ value[iconProperty] }}</mat-icon>\n {{ value[displayProperty] }}\n </div>\n </mat-option>\n </mat-optgroup>\n </mat-autocomplete>\n </mat-form-field>\n\n <mat-chip-set>\n <mat-chip *ngFor=\"let value of selections\" (removed)=\"remove(value)\" [disabled]=\"readonly\" class=\"f-s-14\">\n <div class=\"button-cell\">\n <mat-icon *ngIf=\"value[iconProperty]\">{{ value[iconProperty] }}</mat-icon>\n {{ value[displayProperty] }}\n </div>\n <button matChipRemove>\n <mat-icon>cancel</mat-icon>\n </button>\n </mat-chip>\n </mat-chip-set>\n</form>","import { Injectable } from '@angular/core';\nimport { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError, switchMap } from 'rxjs/operators';\nimport { OriginFormAuthService } from './origin-form-auth.service';\n\n@Injectable()\nexport class OriginFormTokenInterceptor implements HttpInterceptor {\n constructor(private authService: OriginFormAuthService) {}\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n const token = this.authService.getToken();\n let authReq = req;\n if (token) {\n authReq = req.clone({ setHeaders: { Authorization: `Bearer ${token}` } });\n }\n return next.handle(authReq).pipe(\n catchError(error => {\n if (error.status === 401) {\n return this.handle401Error(authReq, next);\n }\n return throwError(error);\n })\n );\n }\n\n private handle401Error(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n return this.authService.refreshToken().pipe(\n switchMap(newToken => {\n const newReq = req.clone({ setHeaders: { Authorization: `Bearer ${newToken}` } });\n return next.handle(newReq);\n }),\n catchError(err => throwError(err))\n );\n }\n}\n","import { ChangeDetectorRef, Component, Inject } from '@angular/core';\nimport { ApplicationDataService } from '../../services/applicationData.service';\nimport {\n ApplicationEnrolCardDto,\n} from '../../models/application.model';\nimport { DOCUMENT } from '@angular/common';\nimport { ActivatedRoute } from '@angular/router';\nimport { LabelKeys } from '../../enums/label.keys';\nimport { firstValueFrom } from 'rxjs';\nimport { Utils } from '../../others/utils';\nimport { BaseFormlyStepComponent } from '../baseFormlyStepComponent';\n\n@Component({\n selector: 'app-enrol-card',\n templateUrl: './formly-enrol-card.component.html',\n styleUrl: './formly-enrol-card.component.scss',\n})\nexport class FormlyEnrolCardComponent extends BaseFormlyStepComponent {\n public hasErrors: boolean = false;\n public isAlreadyEnroled: boolean = false;\n enrolUrl: string;\n paymentError: boolean = false;\n cardenrolKeys = LabelKeys.cardEnrolKeys;\n fluxKeys = LabelKeys.flux;\n isEuPlatesc: boolean = false;\n isNetopia: boolean = false;\n\n constructor(\n private appDataService: ApplicationDataService,\n private route: ActivatedRoute,\n cdr: ChangeDetectorRef,\n @Inject(DOCUMENT) private document: Document\n ) {\n super(cdr);\n }\n\n override onPageSelected() {\n this.route.queryParams.subscribe(async (queryParams) => {\n if (queryParams['originpaymenterror']) {\n var finished: boolean = false;\n while (!finished) {\n this.isLoading = true;\n var result = await firstValueFrom(\n this.appDataService.getEnrolmentStatus(this.dataUrlId)\n );\n if (result) {\n if (result.status === 'Approved') {\n finished = true;\n this.paymentError = false;\n this.isAlreadyEnroled = true;\n this.isLoading = false;\n this.cdr.detectChanges();\n } else if (result.status === 'Declined') {\n finished = true;\n this.paymentError = true;\n this.isAlreadyEnroled = false;\n this.isLoading = false;\n this.cdr.detectChanges();\n this.enrolCard(); //we can retry\n }\n }\n await new Promise((f) => setTimeout(f, 200));\n }\n } else this.enrolCard();\n });\n }\n goToUrl(): void {\n this.document.location.href = this.enrolUrl;\n }\n enrolCard() {\n this.isLoading = true;\n const command: ApplicationEnrolCardDto = {\n appId: this.appId,\n appDataId: this.appDataId,\n stepId: this.stepData.identifier,\n };\n if (!this.isAlreadyEnroled) {\n this.appDataService.enrolCard(command).subscribe({\n next: (result) => {\n this.hasErrors = false;\n this.enrolUrl = result.submitUrl;\n this.isLoading = false;\n\n this.cdr.detectChanges();\n },\n error: (err) => {\n this.hasErrors = true;\n this.isLoading = false;\n this.cdr.detectChanges();\n },\n });\n }\n this.cdr.detectChanges();\n }\n\n getTranslatedLabel(translations: any[] | undefined): string {\n const langIso = this.props?.['langIso'] || 'en';\n return Utils.findTranslation(translations ?? [], langIso) || '';\n }\n\n getSeparatorStyles(): any {\n const separatorConfig = this.props?.['appModel']?.['design']?.[\n 'components'\n ]?.find((c: any) => c?.['name'] === 'Separator Sectiune');\n\n if (!separatorConfig) {\n return {\n 'border-top': '1px solid #ccc',\n margin: '10px 0',\n };\n }\n\n return {\n 'border-top': `${separatorConfig?.['weight'] || '1px'} solid ${\n separatorConfig?.['color'] || '#ccc'\n }`,\n 'border-radius': separatorConfig?.['borderRadius'] || '0px',\n 'background-color': separatorConfig?.['backgroundColor'] || 'transparent',\n margin: '10px 0',\n };\n }\n\n override canAdvance(): boolean {\n if (this.isLoading || this.hasErrors) {\n return false;\n }\n return true;\n }\n}\n","<p *ngIf=\"this.isAlreadyEnroled\">\n {{ props[\"labels\"].cardenrolSuccessLabel }}\n</p>\n<p *ngIf=\"this.paymentError\">{{ props[\"labels\"].cardenrolFailureLabel }}</p>\n<mat-spinner *ngIf=\"isLoading\" class=\"m-x-auto upload-spinner\"></mat-spinner>\n\n<div>\n <div *ngFor=\"let section of stepData?.sections\">\n <div *ngFor=\"let control of section.presentationControls\">\n <p class=\"font-paragraph\">\n {{ getTranslatedLabel(control.translations) }}\n </p>\n <p class=\"font-paragraph\">\n {{\n getTranslatedLabel(\n control.specificControlData?.descriptionTranslations\n )\n }}\n </p>\n </div>\n </div>\n</div>\n\n<button\n mat-flat-button\n type=\"button\"\n (click)=\"goToUrl()\"\n [disabled]=\"isLoading || isAlreadyEnroled\"\n class=\"btn btn-primary m-t-20 m-b-20 w-100\"\n>\n {{ props[\"labels\"].cardenrolButtonLabel }}\n</button>\n","import { ChangeDetectorRef, Component } from '@angular/core';\nimport { ApplicationDataService } from '../../services/applicationData.service';\nimport { DialogService } from '../../services/dialog.service';\nimport { ApiDocumentRequest, ApplicationGetGeneratedDocumentsDto, ConvertDocumentToPdfRequest, GeneratedDocument } from '../../models/application.model';\nimport { Utils } from '../../others/utils';\nimport { firstValueFrom } from 'rxjs';\nimport { BaseFormlyControlComponent } from '../baseFormlyControlComponent';\n\n@Component({\n selector: 'app-formly-view-documents',\n templateUrl: './formly-view-documents.component.html',\n styleUrl: './formly-view-documents.component.scss',\n})\nexport class FormlyViewDocumentsComponent extends BaseFormlyControlComponent {\n documents: GeneratedDocument[] = [];\n isDownloading: boolean;\n currentIndex: number = 0;\n canGoBack: boolean;\n canGoNext: boolean;\n\n currentPdf: any = '';\n currentDocument: GeneratedDocument;\n cachedDocuments: any = {};\n\n constructor(\n private appDataService: ApplicationDataService,\n private dialog: DialogService,\n cdr: ChangeDetectorRef\n ) {\n super(cdr);\n }\n\n override onInit() {\n if (this.isDisplayMode === true) {\n this.getDocuments();\n }\n }\n\n getDocuments() {\n const configDocs = this.controlData?.specificControlData?.documents;\n if (configDocs) {\n this.isLoading = true;\n let cmd: ApplicationGetGeneratedDocumentsDto = {\n appDataId: this.appDataId,\n controlId: this.controlData.identifier,\n isDisplayMode: this.isDisplayMode,\n appConfigurationUUID: this.appId,\n environment: this.env,\n };\n\n this.appDataService.getGenerateDocuments(cmd).subscribe({\n next: (result) => {\n this.isLoading = false;\n this.documents = this.orderDocumentsAsConfigured(result);\n if (this.documents && this.documents.length > 0) {\n this.showDocument(this.documents[0]);\n }\n this.checkCanGoBackNext();\n this.cdr.detectChanges();\n },\n error: (err) => {\n this.isLoading = false;\n\n this.dialog.popErrorTranslation(\n this.controlData.errorsTranslations,\n this.langIso,\n 'failToView'\n );\n\n this.cdr.detectChanges();\n },\n });\n }\n this.cdr.detectChanges();\n }\n\n orderDocumentsAsConfigured(\n documents: GeneratedDocument[]\n ): GeneratedDocument[] {\n let list: GeneratedDocument[] = [];\n if (documents) {\n const configuradDocuments =\n this.controlData?.specificControlData?.documents;\n if (configuradDocuments) {\n configuradDocuments.forEach((d: any) => {\n const found = documents.find((f: any) => f.documentId === d.id);\n if (found) {\n list.push(found);\n }\n });\n }\n }\n return list;\n }\n\n retry() {\n this.getDocuments();\n }\n\n override onPageSelected() {\n this.getDocuments();\n }\n\n async showDocument(doc: GeneratedDocument) {\n this.currentDocument = doc;\n const cached = this.cachedDocuments[doc.documentId];\n if (cached) {\n this.currentPdf = cached;\n } else {\n this.isLoading = true;\n if (doc.isApiDocument === true) {\n let apiRequest: ApiDocumentRequest = {\n appDataId: this.appDataId,\n documentId: doc.documentId,\n };\n this.appDataService.doDocumentRequest(apiRequest).subscribe({\n next: (docs) => {\n if (docs && docs.length > 0) {\n docs.forEach((d) => {\n const b64 = Utils.base64toBlob(d.content);\n this.blobToArrayBuffer(b64).then((r) => {\n if (d.documentId === doc.documentId) {\n this.setCurrentDocument(doc.documentId, r);\n }\n this.cachedDocuments[d.documentId] = r;\n });\n });\n } else {\n this.dialog.popErrorTranslation(\n this.controlData.errorsTranslations,\n this.langIso,\n 'noDocumentsToShow'\n );\n }\n },\n error: (err) => {\n this.dialog.popErrorTranslation(\n this.controlData.errorsTranslations,\n this.langIso,\n 'failToView'\n );\n this.isLoading = false;\n this.cdr.detectChanges();\n },\n });\n } else if ((doc as any).content) {\n // Document has content directly available - convert to blob\n let content = (doc as any).content;\n\n // Check if content is a data URL and extract the base64 part\n if (content.startsWith('data:')) {\n const base64Start = content.indexOf(',');\n if (base64Start !== -1) {\n content = content.substring(base64Start + 1);\n }\n }\n\n // Check if document needs PDF conversion\n const originalContent = (doc as any).content;\n const isPdf =\n originalContent.includes('data:application/pdf') ||\n originalContent.includes('application/pdf');\n\n if (!isPdf) {\n // For non-PDF documents, we need to convert to PDF or handle differently\n console.warn(\n 'Non-PDF document detected. Converting to PDF...',\n doc.name\n );\n // Call backend conversion API\n this.convertToPdf(content, doc).then((pdfContent) => {\n if (pdfContent) {\n this.setCurrentDocument(doc.documentId, pdfContent);\n } else {\n this.isLoading = false;\n this.cdr.detectChanges();\n }\n });\n } else {\n const b64 = Utils.base64toBlob(content);\n this.blobToArrayBuffer(b64).then((r) => {\n this.setCurrentDocument(doc.documentId, r);\n });\n }\n } else {\n // Download file case\n this.appDataService\n .downloadFile(this.props['appDataId'], doc.documentId, doc.fileName)\n .subscribe({\n next: (data) => {\n this.blobToArrayBuffer(data).then((r) => {\n this.setCurrentDocument(doc.documentId, r);\n });\n },\n error: (err) => {\n this.dialog.popErrorTranslation(\n this.controlData.errorsTranslations,\n this.langIso,\n 'failToView'\n );\n this.isLoading = false;\n this.cdr.detectChanges();\n },\n });\n }\n }\n }\n\n setCurrentDocument(documentId: string, r: any) {\n this.cachedDocuments[documentId] = r;\n this.currentPdf = r;\n this.isLoading = false;\n this.cdr.detectChanges();\n }\n\n blobToArrayBuffer(blob: any) {\n return new Promise((resolve, _) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result);\n reader.readAsDataURL(blob);\n });\n }\n\n nextDocument() {\n if (this.currentIndex < this.documents.length) {\n this.currentIndex++;\n this.showDocument(this.documents[this.currentIndex]);\n }\n this.checkCanGoBackNext();\n }\n\n prevDocument() {\n if (this.currentIndex >= 0) {\n this.currentIndex--;\n this.showDocument(this.documents[this.currentIndex]);\n }\n this.checkCanGoBackNext();\n }\n\n checkCanGoBackNext() {\n if (this.currentIndex === 0) {\n this.canGoBack = false;\n } else {\n this.canGoBack = true;\n }\n if (this.currentIndex < this.documents.length - 1) {\n this.canGoNext = true;\n } else {\n this.canGoNext = false;\n }\n }\n\n private async convertToPdf(\n content: string,\n doc: GeneratedDocument\n ): Promise<any> {\n // Call backend API to convert document to PDF\n try {\n const conversionRequest: ConvertDocumentToPdfRequest = {\n content: content,\n fileName: doc.name,\n documentId: doc.documentId,\n appDataId: this.appDataId,\n appConfigurationUUID: this.appId,\n environment: this.env,\n };\n\n const response = await firstValueFrom(\n this.appDataService.convertDocumentToPdf(conversionRequest)\n );\n\n if (response?.success && response.pdfContent) {\n // Convert PDF base64 to blob and return\n const pdfBlob = Utils.base64toBlob(response.pdfContent);\n return this.blobToArrayBuffer(pdfBlob);\n } else {\n console.error('PDF conversion failed:', response?.errorMessage);\n this.dialog.popError(\n response?.errorMessage || 'Failed to convert document to PDF'\n );\n return null;\n }\n } catch (error) {\n console.error('PDF conversion failed:', error);\n this.dialog.popError('Failed to convert document to PDF');\n return null;\n }\n }\n}\n","<p *ngIf=\"isLoading === false && (!documents || documents.length === 0)\">\n {{ getErrorTranslationMessage(\"noDocumentsToShow\") }}\n</p>\n\n<div class=\"buttons-container\">\n <button (click)=\"prevDocument()\"\n [disabled]=\"!canGoBack\"\n class=\"nav-button larger-width-nav-buttons\">\n &#8592;\n </button>\n\n <p class=\"file-info font-paragraph\" *ngIf=\"currentDocument\">\n {{ this.currentDocument.name }}\n </p>\n\n <button (click)=\"nextDocument()\"\n [disabled]=\"!canGoNext\"\n class=\"nav-button larger-width-nav-buttons\">\n &#8594;\n </button>\n</div>\n\n<mat-spinner *ngIf=\"isLoading === true\" class=\"m-x-auto\"></mat-spinner>\n<pdf-viewer *ngIf=\"isLoading === false\"\n [src]=\"currentPdf\"\n [render-text]=\"true\"\n [original-size]=\"false\"\n [external-link-target]=\"'blank'\"\n class=\"pdf-viewer\"></pdf-viewer>\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { Observable, of } from 'rxjs';\nimport { map, catchError } from 'rxjs/operators';\nimport { ConfigService } from '../others/config-service';\n\n// Bank interfaces\nexport interface Bank {\n id: string;\n bankCode: string;\n displayName: string;\n logoUrl?: string;\n countryCode: string;\n requiresRedirect: boolean;\n supportedFeatures: string;\n isActive: boolean;\n}\n\n// Consent interfaces\nexport interface ConsentInitRequest {\n bankCode: string;\n psuEmail: string;\n psuIntermediaryId: string;\n periodOfValidity?: number; // Days, default 90\n tcAccepted: boolean;\n}\n\nexport interface ConsentInitResponse {\n authorizationUrl: string;\n consentId: string;\n}\n\nexport interface ConsentStatus {\n consentId: string;\n status: 'received' | 'valid' | 'rejected' | 'expired' | 'terminated' | 'revokedByPsu';\n expiresAt?: string;\n}\n\n// Status code mapping for API responses\nconst STATUS_CODE_MAP: { [key: number]: ConsentStatus['status'] } = {\n 0: 'received',\n 1: 'valid',\n 2: 'rejected',\n 3: 'expired',\n 4: 'terminated',\n 5: 'revokedByPsu'\n};\n\n// Bank-specific transaction period limits (in days)\nconst BANK_TRANSACTION_LIMITS: { [key: string]: number } = {\n 'BCR': 90,\n 'BTRL': 120, // BT - Banca Transilvania\n 'BT': 90,\n 'BRD': 730, // 2 years\n 'RZBA': -1, // RZB - unlimited\n 'PRVA': 180, // Patria Bank\n 'CEC': 180,\n 'INGB': 90,\n 'ING': 90\n};\n\nexport interface ConsentCallbackParams {\n message: string;\n type: string;\n internalConsentId: string;\n code?: string;\n state?: string;\n}\n\nexport interface ConsentCallbackResponse {\n message: string;\n internalConsentId: string;\n status: 'approved' | 'rejected';\n}\n\n// Account interfaces\nexport interface Account {\n id: string;\n accountId: string;\n iban: string;\n currency: string;\n name: string;\n accountHolderName: string;\n accountHolderConfidence: string;\n balance: number;\n lastSyncedAt: string;\n}\n\n// Transaction interfaces\nexport interface Transaction {\n transactionId: string;\n accountId: string;\n amount: number;\n currency: string;\n bookingDate: string;\n valueDate?: string;\n creditorName?: string;\n creditorIBAN?: string;\n debtorName?: string;\n debtorIBAN?: string;\n remittanceInformation?: string;\n status: 'Booked' | 'Pending';\n type: 'Debit' | 'Credit';\n // Additional fields for compatibility\n description?: string;\n transactionDate?: string;\n category?: string;\n merchantName?: string;\n reference?: string;\n}\n\nexport interface TransactionPage {\n items: Transaction[];\n page: number;\n pageNumber?: number; // Alias for page\n pageSize: number;\n totalCount: number;\n totalPages: number;\n hasNextPage: boolean;\n hasPreviousPage: boolean;\n nextPageLink?: string;\n}\n\nexport interface TransactionRequest {\n consentId: string;\n bankCode: string;\n accountId: string;\n fromDate?: string;\n toDate?: string;\n page?: number;\n pageSize?: number;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class OpenBankingService {\n private apiUrl: string = '';\n\n constructor(\n private http: HttpClient,\n private configService: ConfigService\n ) {\n // Get API URL from app config\n const config = this.configService.readConfig();\n this.apiUrl = config.baseUrlSmartAccounts;\n }\n\n /**\n * Fix data URL format for logos\n * Converts \"data:image/svg;base64,\" to \"data:image/svg+xml;base64,\"\n */\n private fixDataUrlFormat(logoUrl?: string): string | undefined {\n if (!logoUrl) return undefined;\n\n // If it's already a proper data URL, return as is\n if (logoUrl.startsWith('data:image/')) {\n // Fix common format issues\n return logoUrl\n .replace('data:image/svg;base64,', 'data:image/svg+xml;base64,')\n .replace('data:image/png;base64,', 'data:image/png;base64,')\n .replace('data:image/jpeg;base64,', 'data:image/jpeg;base64,')\n .replace('data:image/jpg;base64,', 'data:image/jpeg;base64,');\n }\n\n return logoUrl;\n }\n\n /**\n * Get list of supported banks\n * @param countryCode Optional country code filter\n */\n getBanks(countryCode?: string): Observable<Bank[]> {\n let params = new HttpParams();\n if (countryCode) {\n params = params.set('countryCode', countryCode);\n }\n\n return this.http.get<Bank[]>(`${this.apiUrl}/banks`, { params }).pipe(\n map(banks => {\n return banks.map(bank => ({\n ...bank,\n // Fix data URL format if needed\n logoUrl: this.fixDataUrlFormat(bank.logoUrl)\n }));\n }),\n catchError((error) => {\n console.error('Error fetching banks:', error);\n return of([]);\n })\n );\n }\n\n /**\n * Initialize consent flow\n */\n initializeConsent(request: ConsentInitRequest): Observable<ConsentInitResponse> {\n return this.http.post<ConsentInitResponse>(`${this.apiUrl}/consents/initialize`, request).pipe(\n catchError((error) => {\n console.error('Error initializing consent:', error);\n return of();\n })\n );\n }\n\n /**\n * Get consent status\n */\n getConsentStatus(bankCode: string, consentId: string): Observable<ConsentStatus> {\n return this.http.get<any>(`${this.apiUrl}/consents/${bankCode}/${consentId}`).pipe(\n map(response => {\n // Map numeric status to string if needed\n if (typeof response.status === 'number') {\n return {\n ...response,\n status: STATUS_CODE_MAP[response.status] || 'received'\n };\n }\n return response;\n }),\n catchError((error) => {\n console.error('Error checking consent status:', error);\n return of();\n })\n );\n }\n\n /**\n * Process consent callback\n */\n processConsentCallback(params: ConsentCallbackParams): Observable<ConsentCallbackResponse> {\n const queryParams = new HttpParams()\n .set('message', params.message)\n .set('type', params.type)\n .set('internalConsentId', params.internalConsentId)\n .set('code', params.code || '')\n .set('state', params.state || '');\n\n return this.http.get<ConsentCallbackResponse>(`${this.apiUrl}/consents/callback`, { params: queryParams }).pipe(\n catchError((error) => {\n console.error('Error processing consent callback:', error);\n return of({\n message: 'Consent processed (mock)',\n internalConsentId: params.internalConsentId,\n status: 'approved' as const\n });\n })\n );\n }\n\n /**\n * Get accounts for a consent\n */\n getAccounts(consentId: string, bankCode: string): Observable<Account[]> {\n const params = new HttpParams()\n .set('consentId', consentId)\n .set('bankCode', bankCode);\n\n return this.http.get<Account[]>(`${this.apiUrl}/accounts`, { params }).pipe(\n map(accounts => {\n return accounts.map(account => ({\n ...account,\n }));\n }),\n catchError((error) => {\n console.error('Error fetching accounts:', error);\n return of();\n })\n );\n }\n\n /**\n * Get maximum transaction period for a bank\n * @param bankCode The bank code\n * @returns Maximum number of days or -1 for unlimited\n */\n getMaxTransactionPeriod(bankCode: string): number {\n const upperBankCode = bankCode.toUpperCase();\n // Check if we have a specific limit for this bank\n if (BANK_TRANSACTION_LIMITS.hasOwnProperty(upperBankCode)) {\n return BANK_TRANSACTION_LIMITS[upperBankCode];\n }\n // Default to 90 days if bank not specified\n return 90;\n }\n\n /**\n * Get transactions for an account\n */\n getTransactions(request: TransactionRequest): Observable<TransactionPage> {\n let params = new HttpParams()\n .set('consentId', request.consentId)\n .set('bankCode', request.bankCode)\n .set('accountId', request.accountId);\n\n if (request.fromDate) {\n params = params.set('fromDate', request.fromDate);\n }\n if (request.toDate) {\n params = params.set('toDate', request.toDate);\n }\n if (request.page) {\n params = params.set('page', request.page.toString());\n }\n if (request.pageSize) {\n params = params.set('pageSize', request.pageSize.toString());\n }\n\n return this.http.get<TransactionPage>(`${this.apiUrl}/transactions`, { params }).pipe(\n map(page => {\n return {\n ...page,\n pageNumber: page.page,\n items: page.items.map(txn => ({\n ...txn\n }))\n };\n }),\n catchError((error) => {\n console.error('Error fetching transactions:', error);\n return of();\n })\n );\n }\n}","import {\n Component,\n OnInit,\n AfterViewInit,\n ChangeDetectorRef,\n OnDestroy,\n} from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { BehaviorSubject, interval, Subscription } from 'rxjs';\nimport { switchMap, takeWhile, finalize } from 'rxjs/operators';\nimport { BaseFormlyStepComponent } from '../baseFormlyStepComponent';\n\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { DialogService } from '../../services/dialog.service';\nimport { Bank, Account, Transaction, TransactionPage, OpenBankingService, ConsentInitRequest, ConsentStatus } from '../../services/open-banking.service';\n\ninterface OpenBankingConfig {\n accountNumberCollected?: string;\n accountHolderCollected?: string;\n emailCollected?: string;\n showAllBanks?: boolean;\n extractBankFromIBAN?: boolean;\n tcAcceptedByDefault?: boolean;\n // Message translations\n initialMessageTranslations?: any[];\n waitingMessageTranslations?: any[];\n consentErrorMessageTranslations?: any[];\n completionMessageTranslations?: any[];\n retryButtonLabelTranslations?: any[];\n // Button translations\n nextButtonTranslations?: any[];\n continueButtonTranslations?: any[];\n // UI labels translations\n selectBankTranslations?: any[];\n consentTitleTranslations?: any[];\n consentDescriptionTranslations?: any[];\n waitingForAuthorizationTranslations?: any[];\n popupWindowMessageTranslations?: any[];\n popupBlockerMessageTranslations?: any[];\n accountsRetrievedTranslations?: any[];\n transactionsRetrievedTranslations?: any[];\n accountsFoundTranslations?: any[];\n transactionsSummaryTranslations?: any[];\n}\n\nenum OpenBankingState {\n Initial = 'initial',\n BankSelection = 'bankSelection',\n Consent = 'consent',\n Processing = 'processing',\n Error = 'error',\n Complete = 'complete',\n}\n\n@Component({\n selector: 'app-formly-open-banking',\n templateUrl: './formly-open-banking.component.html',\n styleUrls: ['./formly-open-banking.component.scss'],\n})\nexport class FormlyOpenBankingComponent\n extends BaseFormlyStepComponent\n implements OnInit, AfterViewInit, OnDestroy\n{\n config: OpenBankingConfig = {};\n currentState = new BehaviorSubject<OpenBankingState>(OpenBankingState.Initial);\n banks: Bank[] = [];\n selectedBank: string = '';\n selectedBankObject?: Bank;\n authorizationUrl: SafeResourceUrl | null = null;\n consentId: string = '';\n private _errorMessage: string = '';\n private _isConsentError: boolean = false;\n private _consentErrorStatus: string = '';\n override isLoading: boolean = false;\n isLoadingSubject = new BehaviorSubject<boolean>(false);\n accounts: Account[] = [];\n transactions: Transaction[] = [];\n pollSubscription?: Subscription;\n selectedAccounts: string[] = [];\n transactionPages: Map<string, TransactionPage> = new Map();\n\n constructor(\n private openBankingService: OpenBankingService,\n private dialog: DialogService,\n private sanitizer: DomSanitizer,\n cdr: ChangeDetectorRef\n ) {\n super(cdr);\n }\n\n override async ngOnInit(): Promise<void> {\n await super.ngOnInit();\n if (this.stepData?.config) {\n this.config = this.stepData.config as OpenBankingConfig;\n }\n // If translations are in stepData.translations, merge them into config\n if (this.stepData?.translations) {\n this.mergeTranslationsIntoConfig();\n }\n }\n\n private mergeTranslationsIntoConfig(): void {\n // Map translation names to config properties\n const translationMap: { [key: string]: keyof OpenBankingConfig } = {\n 'initialMessageTranslations': 'initialMessageTranslations',\n 'waitingMessageTranslations': 'waitingMessageTranslations',\n 'consentErrorMessageTranslations': 'consentErrorMessageTranslations',\n 'completionMessageTranslations': 'completionMessageTranslations',\n 'retryButtonLabelTranslations': 'retryButtonLabelTranslations',\n 'nextButtonTranslations': 'nextButtonTranslations',\n 'continueButtonTranslations': 'continueButtonTranslations',\n 'selectBankTranslations': 'selectBankTranslations',\n 'consentTitleTranslations': 'consentTitleTranslations',\n 'consentDescriptionTranslations': 'consentDescriptionTranslations',\n 'waitingForAuthorizationTranslations': 'waitingForAuthorizationTranslations',\n 'popupWindowMessageTranslations': 'popupWindowMessageTranslations',\n 'popupBlockerMessageTranslations': 'popupBlockerMessageTranslations',\n 'accountsRetrievedTranslations': 'accountsRetrievedTranslations',\n 'transactionsRetrievedTranslations': 'transactionsRetrievedTranslations',\n 'accountsFoundTranslations': 'accountsFoundTranslations',\n 'transactionsSummaryTranslations': 'transactionsSummaryTranslations'\n };\n\n this.stepData.translations?.forEach((translation: { name: string | number; values: string | any[]; }) => {\n const configKey = translationMap[translation.name];\n if (configKey && translation.values && translation.values.length > 0) {\n // Use the translation values from stepData if config doesn't have all languages\n (this.config as any)[configKey] = translation.values;\n }\n });\n }\n\n ngAfterViewInit(): void {\n // Only set initial state if we haven't already set a state\n if (!this.currentState.value) {\n this.currentState.next(OpenBankingState.Initial);\n }\n }\n\n override onPageSelected() {\n // Only reset to initial if we haven't started the flow yet\n // This prevents reset when language changes\n if (!this.currentState.value) {\n this.currentState.next(OpenBankingState.Initial);\n }\n // Update language if it changed\n this.cdr.detectChanges();\n }\n\n private determineNextStep(): void {\n // Get account information from form if configured\n const accountNumber = this.getFieldValue(this.config.accountNumberCollected);\n\n // If we should extract bank from IBAN and have an IBAN\n if (this.config.extractBankFromIBAN && accountNumber && this.isIBAN(accountNumber)) {\n // Load banks first, then match IBAN to bank\n this.loadBanksAndMatchIBAN(accountNumber);\n return;\n }\n\n // If we should show all banks\n if (this.config.showAllBanks) {\n this.loadBanks();\n } else {\n // Go directly to consent without bank selection\n this.initiateConsent();\n }\n }\n\n private getFieldValue(fieldId: string | undefined): string {\n if (!fieldId) return '';\n return this.form.get(fieldId)?.value || '';\n }\n\n private isIBAN(value: string): boolean {\n // Basic IBAN validation for Romanian IBANs\n return /^RO\\d{2}[A-Z]{4}\\d{16}$/.test(value.replace(/\\s/g, ''));\n }\n\n private extractBankFromIBAN(iban: string): string {\n // Extract bank code from Romanian IBAN (positions 5-8)\n const cleanIban = iban.replace(/\\s/g, '');\n if (cleanIban.startsWith('RO') && cleanIban.length >= 8) {\n return cleanIban.substring(4, 8);\n }\n return '';\n }\n\n private loadBanksAndMatchIBAN(iban: string): void {\n this.setLoadingState(true);\n const countryCode = 'RO'; // Default to Romania\n\n this.openBankingService.getBanks(countryCode).subscribe({\n next: (banks) => {\n this.banks = banks.filter(b => b.isActive);\n\n // Extract bank code from IBAN\n const ibanBankCode = this.extractBankFromIBAN(iban);\n\n if (ibanBankCode) {\n // Try to match against bank codes\n const matchedBank = this.banks.find(bank =>\n bank.bankCode.toUpperCase() === ibanBankCode.toUpperCase()\n );\n\n if (matchedBank) {\n // Bank found - select it and go directly to consent\n this.selectedBank = matchedBank.bankCode;\n this.selectedBankObject = matchedBank;\n this.setLoadingState(false);\n this.initiateConsent();\n return;\n }\n }\n\n // If no match found, show bank selection\n this.currentState.next(OpenBankingState.BankSelection);\n this.setLoadingState(false);\n },\n error: (error) => {\n this.handleError(error);\n this.setLoadingState(false);\n },\n });\n }\n\n private loadBanks(): void {\n this.setLoadingState(true);\n const countryCode = 'RO'; // Default to Romania\n\n this.openBankingService.getBanks(countryCode).subscribe({\n next: (banks) => {\n this.banks = banks.filter(b => b.isActive);\n this.currentState.next(OpenBankingState.BankSelection);\n this.setLoadingState(false);\n },\n error: (error) => {\n this.handleError(error);\n this.setLoadingState(false);\n },\n });\n }\n\n selectBank(bank: Bank): void {\n this.selectedBank = bank.bankCode;\n this.selectedBankObject = bank;\n }\n\n proceedToNextStep(): void {\n if (this.currentState.value === OpenBankingState.Initial) {\n // User clicked Next on initial screen - determine what to show next\n this.determineNextStep();\n } else if (this.currentState.value === OpenBankingState.BankSelection) {\n if (this.selectedBank) {\n this.initiateConsent();\n }\n }\n }\n\n private initiateConsent(): void {\n this.setLoadingState(true);\n\n // Get user information\n const email = this.getFieldValue(this.config.emailCollected) || 'user@example.com';\n // Generate a unique PSU ID for this session\n const psuId = this.appDataId || 'user-' + Date.now() + '-' + Math.random().toString(36).substr(2, 9);\n\n const consentRequest: ConsentInitRequest = {\n bankCode: this.selectedBank || 'DEFAULT',\n psuEmail: email,\n psuIntermediaryId: psuId,\n periodOfValidity: 90,\n tcAccepted: this.config.tcAcceptedByDefault !== false\n };\n\n this.openBankingService.initializeConsent(consentRequest).subscribe({\n next: (response) => {\n this.consentId = response.consentId;\n\n // Check if bank requires redirect\n if (this.selectedBankObject?.requiresRedirect !== false) {\n // Try iframe first, but most banks will block it\n if (this.shouldUseIframe()) {\n this.authorizationUrl = this.sanitizer.bypassSecurityTrustResourceUrl(response.authorizationUrl);\n this.currentState.next(OpenBankingState.Consent);\n // Set a flag to detect if iframe fails\n this.checkIframeLoad(response.authorizationUrl);\n } else {\n // Open in new window/tab\n this.openConsentInNewWindow(response.authorizationUrl);\n }\n }\n\n this.setLoadingState(false);\n\n // Start polling for consent status\n this.startConsentPolling();\n },\n error: (error) => {\n this.handleError(error);\n this.setLoadingState(false);\n },\n });\n }\n\n private shouldUseIframe(): boolean {\n // Most banks don't allow iframes due to X-Frame-Options\n // So default to false (use popup window instead)\n return false;\n }\n\n private openConsentInNewWindow(authorizationUrl: string): void {\n const isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n\n let consentWindow: Window | null;\n\n if (isMobile) {\n // On mobile, open in same tab (full redirect) or new tab\n // Using _blank will open a new tab and allow user to return\n consentWindow = window.open(authorizationUrl, '_blank');\n } else {\n // On desktop, open in a popup window\n const width = 800;\n const height = 600;\n const left = (window.screen.width - width) / 2;\n const top = (window.screen.height - height) / 2;\n\n consentWindow = window.open(\n authorizationUrl,\n 'bankConsent',\n `width=${width},height=${height},left=${left},top=${top},toolbar=no,menubar=no,scrollbars=yes,resizable=yes`\n );\n }\n\n if (consentWindow) {\n // Show a message that consent is in progress\n this.currentState.next(OpenBankingState.Consent);\n\n // Check if window is closed periodically (works better on desktop)\n if (!isMobile) {\n const checkWindowClosed = setInterval(() => {\n if (consentWindow && consentWindow.closed) {\n clearInterval(checkWindowClosed);\n // Window was closed, the polling will detect the consent status\n }\n }, 1000);\n }\n // On mobile, we rely entirely on polling since window.closed doesn't work reliably\n } else {\n // Popup was blocked\n this._isConsentError = false;\n this._errorMessage = 'Please allow popups for this site to complete bank authorization. Then click Retry to try again.';\n this.currentState.next(OpenBankingState.Error);\n }\n }\n\n private checkIframeLoad(authorizationUrl: string): void {\n // If iframe fails to load (X-Frame-Options), fall back to popup\n setTimeout(() => {\n // Check if we're still in consent state (iframe might have failed)\n if (this.currentState.value === OpenBankingState.Consent && this.authorizationUrl) {\n // Clear iframe and open in new window\n console.warn('Iframe might be blocked, opening in new window');\n this.authorizationUrl = null;\n this.openConsentInNewWindow(authorizationUrl);\n }\n }, 2000);\n }\n\n private startConsentPolling(): void {\n // Poll every 5 seconds for consent status (user needs time to complete bank authorization)\n this.pollSubscription = interval(10000)\n .pipe(\n switchMap(() => this.openBankingService.getConsentStatus(this.selectedBank || 'DEFAULT', this.consentId)),\n takeWhile((status) => status.status === 'received', true),\n finalize(() => this.pollSubscription?.unsubscribe())\n )\n .subscribe({\n next: (status: ConsentStatus) => {\n if (status.status === 'valid') {\n this.onConsentApproved();\n } else if (status.status === 'rejected' ||\n status.status === 'expired' ||\n status.status === 'terminated' ||\n status.status === 'revokedByPsu') {\n this.onConsentRejected(status);\n }\n },\n error: (error) => {\n this.handleError(error);\n },\n });\n }\n\n private onConsentApproved(): void {\n this.currentState.next(OpenBankingState.Processing);\n this.fetchAccountData();\n }\n\n private onConsentRejected(status: ConsentStatus): void {\n this._isConsentError = true;\n this._consentErrorStatus = status.status;\n this._errorMessage = ''; // Clear to use translated message\n this.currentState.next(OpenBankingState.Error);\n }\n\n private fetchAccountData(): void {\n this.setLoadingState(true);\n\n // First, fetch accounts\n this.openBankingService.getAccounts(this.consentId, this.selectedBank || 'DEFAULT').subscribe({\n next: (accounts) => {\n this.accounts = accounts;\n\n // Select all accounts for transaction fetching\n this.selectedAccounts = accounts.map(a => a.accountId);\n\n // Fetch transactions for each account\n this.fetchTransactionsForAccounts();\n },\n error: (error) => {\n this.handleError(error);\n this.setLoadingState(false);\n },\n });\n }\n\n private fetchTransactionsForAccounts(): void {\n if (this.selectedAccounts.length === 0) {\n this.completeProcess();\n return;\n }\n\n const transactionRequests = this.selectedAccounts.map(accountId => {\n // Calculate date range based on bank-specific limits\n const bankCode = this.selectedBank || 'DEFAULT';\n const maxDays = this.openBankingService.getMaxTransactionPeriod(bankCode);\n\n const toDate = new Date();\n const fromDate = new Date();\n\n // If unlimited (-1) or very long period, use 365 days as practical limit\n // Otherwise use the bank's specific limit\n const daysToFetch = maxDays === -1 ? 365 : Math.min(maxDays, 365);\n fromDate.setDate(fromDate.getDate() - daysToFetch);\n\n return this.openBankingService.getTransactions({\n consentId: this.consentId,\n bankCode: bankCode,\n accountId: accountId,\n fromDate: fromDate.toISOString(),\n toDate: toDate.toISOString(),\n page: 1,\n pageSize: 50\n });\n });\n\n // Execute all transaction requests\n Promise.all(transactionRequests.map(req => req.toPromise()))\n .then(results => {\n // Store transaction pages\n results.forEach((page, index) => {\n if (page) {\n this.transactionPages.set(this.selectedAccounts[index], page);\n // Flatten all transactions into single array\n this.transactions.push(...page.items);\n }\n });\n\n this.completeProcess();\n })\n .catch(error => {\n console.error('Error fetching transactions:', error);\n // Even if transactions fail, we can continue with accounts\n this.completeProcess();\n });\n }\n\n private completeProcess(): void {\n // Store data in form model\n this.storeAccountData();\n\n this.currentState.next(OpenBankingState.Complete);\n this.setLoadingState(false);\n\n // Auto-proceed to next step after a short delay\n setTimeout(() => {\n this.onEvent('success');\n }, 2000);\n }\n\n private storeAccountData(): void {\n // Store the fetched data in the form model for use in later steps\n const group = this.form as FormGroup;\n\n // Add accounts and transactions to form\n group.addControl('openBankingAccounts', new FormControl(this.accounts));\n group.addControl('openBankingTransactions', new FormControl(this.transactions));\n group.addControl('openBankingConsentId', new FormControl(this.consentId));\n group.addControl('openBankingBankCode', new FormControl(this.selectedBank));\n\n // Store account summary\n const accountSummary = {\n totalAccounts: this.accounts.length,\n totalBalance: this.accounts.reduce((sum, acc) => sum + acc.balance, 0),\n currencies: [...new Set(this.accounts.map(a => a.currency))],\n transactionCount: this.transactions.length,\n oldestTransaction: this.transactions.length > 0\n ? this.transactions.reduce((oldest, t) =>\n new Date(t.bookingDate || t.transactionDate || '') < new Date(oldest.bookingDate || oldest.transactionDate || '') ? t : oldest\n ).bookingDate\n : null,\n newestTransaction: this.transactions.length > 0\n ? this.transactions.reduce((newest, t) =>\n new Date(t.bookingDate || t.transactionDate || '') > new Date(newest.bookingDate || newest.transactionDate || '') ? t : newest\n ).bookingDate\n : null\n };\n\n group.addControl('openBankingAccountSummary', new FormControl(accountSummary));\n\n // Populate the step's controls for SaveAppData\n this.populateStepControls();\n }\n\n private populateStepControls(): void {\n // Find and populate the controls in the step sections\n if (!this.stepData?.sections) return;\n\n // Get email from config mapping or use empty string\n const email = this.getFieldValue(this.config.emailCollected) || '';\n\n // Get the first account as the primary account\n const primaryAccount = this.accounts.length > 0 ? this.accounts[0] : null;\n\n // Calculate total balance\n const totalBalance = this.accounts.reduce((sum, acc) => sum + acc.balance, 0);\n\n // Calculate transaction period in months\n const months = this.getTransactionPeriodMonths();\n\n // Map of control identifiers to values\n const controlValues: { [key: string]: any } = {\n 'OpenBankingConsentStatus': true, // Consent was successfully validated\n 'OpenBankingEmail': email,\n 'OpenBankingAccountNumber': primaryAccount?.iban || '',\n 'OpenBankingAccountHolder': primaryAccount?.accountHolderName || '',\n 'OpenBankingBankCode': this.selectedBank || '',\n 'OpenBankingConsentId': this.consentId,\n 'OpenBankingAccountsCount': this.accounts.length,\n 'OpenBankingAccountsData': JSON.stringify(this.accounts),\n 'OpenBankingTotalBalance': totalBalance,\n 'OpenBankingTransactionsCount': this.transactions.length,\n 'OpenBankingTransactionsData': JSON.stringify(this.transactions),\n 'OpenBankingTransactionsPeriod': months\n };\n\n // Add all control values to the form\n const group = this.form as FormGroup;\n Object.keys(controlValues).forEach(controlId => {\n if (!group.contains(controlId)) {\n group.addControl(controlId, new FormControl(controlValues[controlId]));\n } else {\n group.get(controlId)?.setValue(controlValues[controlId]);\n }\n });\n\n // The values are now stored in the form model and will be saved with SaveAppData\n // When the form is submitted, these values will be associated with the step's controls\n }\n\n retry(): void {\n this._errorMessage = '';\n this._isConsentError = false;\n this._consentErrorStatus = '';\n this.accounts = [];\n this.transactions = [];\n this.selectedAccounts = [];\n this.transactionPages.clear();\n this.consentId = '';\n this.selectedBank = '';\n this.selectedBankObject = undefined;\n this.banks = [];\n this.authorizationUrl = null;\n\n // Reset to initial state - user needs to click Next again\n this.currentState.next(OpenBankingState.Initial);\n }\n\n private handleError(error: HttpErrorResponse): void {\n console.error('OpenBanking error:', error);\n this._isConsentError = false;\n this._consentErrorStatus = '';\n this._errorMessage = error.error?.message || error.message || 'An error occurred. Please try again.';\n this.currentState.next(OpenBankingState.Error);\n }\n\n private getTranslatedMessage(translations: any[] | undefined, defaultMessage: string = ''): string {\n if (!translations || translations.length === 0) return defaultMessage;\n\n const langIso = this.props?.['langIso'] || this.langIso || 'en';\n const translation = translations.find(t => t.languageIso === langIso);\n return translation?.value || translations[0]?.value || defaultMessage;\n }\n\n get initialMessage(): string {\n return this.getTranslatedMessage(\n this.config.initialMessageTranslations,\n 'To continue, we need to verify your bank account information. Click Next to proceed.'\n );\n }\n\n get waitingMessage(): string {\n return this.getTranslatedMessage(\n this.config.waitingMessageTranslations,\n 'Please wait while we retrieve your account information...'\n );\n }\n\n get completionMessage(): string {\n return this.getTranslatedMessage(\n this.config.completionMessageTranslations,\n 'Account information successfully retrieved.'\n );\n }\n\n get retryButtonLabel(): string {\n return this.getTranslatedMessage(\n this.config.retryButtonLabelTranslations,\n 'Retry'\n );\n }\n\n get errorMessage(): string {\n // If it's a consent error, use the translated consent error message\n if (this._isConsentError) {\n const message = this.getTranslatedMessage(\n this.config.consentErrorMessageTranslations,\n 'You must provide consent to continue. Please try again.'\n );\n return this._consentErrorStatus ? `${message} (Status: ${this._consentErrorStatus})` : message;\n }\n // Otherwise return the stored error message (from API or default)\n return this._errorMessage || 'An error occurred. Please try again.';\n }\n\n // Button translations\n get nextButtonLabel(): string {\n return this.getTranslatedMessage(\n this.config.nextButtonTranslations,\n 'Next'\n );\n }\n\n get continueButtonLabel(): string {\n return this.getTranslatedMessage(\n this.config.continueButtonTranslations,\n 'Continue'\n );\n }\n\n // UI label translations\n get selectBankTitle(): string {\n return this.getTranslatedMessage(\n this.config.selectBankTranslations,\n 'Select your bank'\n );\n }\n\n get consentTitle(): string {\n return this.getTranslatedMessage(\n this.config.consentTitleTranslations,\n 'Bank Authorization'\n );\n }\n\n get consentDescription(): string {\n return this.getTranslatedMessage(\n this.config.consentDescriptionTranslations,\n 'Please complete the authorization process with your bank'\n );\n }\n\n get waitingForAuthorizationText(): string {\n return this.getTranslatedMessage(\n this.config.waitingForAuthorizationTranslations,\n 'Waiting for authorization...'\n );\n }\n\n get popupWindowMessage(): string {\n return this.getTranslatedMessage(\n this.config.popupWindowMessageTranslations,\n 'A new window has opened for bank authorization. Please complete the process there.'\n );\n }\n\n get popupBlockerMessage(): string {\n return this.getTranslatedMessage(\n this.config.popupBlockerMessageTranslations,\n 'If the window didn\\'t open, please check your popup blocker settings.'\n );\n }\n\n get accountsRetrievedLabel(): string {\n return this.getTranslatedMessage(\n this.config.accountsRetrievedTranslations,\n 'Accounts retrieved'\n );\n }\n\n get transactionsRetrievedLabel(): string {\n return this.getTranslatedMessage(\n this.config.transactionsRetrievedTranslations,\n 'Transactions retrieved'\n );\n }\n\n get accountsSummaryText(): string {\n const count = this.accounts.length;\n const template = this.getTranslatedMessage(\n this.config.accountsFoundTranslations,\n '{0} account(s) found'\n );\n return template.replace('{0}', count.toString());\n }\n\n get transactionsSummaryText(): string {\n const count = this.transactions.length;\n const months = this.getTransactionPeriodMonths();\n const template = this.getTranslatedMessage(\n this.config.transactionsSummaryTranslations,\n '{0} transaction(s) retrieved for the last {1} month(s)'\n );\n return template.replace('{0}', count.toString()).replace('{1}', months.toString());\n }\n\n private getTransactionPeriodMonths(): number {\n if (!this.selectedBank) return 3;\n\n const maxDays = this.openBankingService.getMaxTransactionPeriod(this.selectedBank);\n const daysToFetch = maxDays === -1 ? 365 : Math.min(maxDays, 365);\n return Math.round(daysToFetch / 30);\n }\n\n get isInitialState(): boolean {\n return this.currentState.value === OpenBankingState.Initial;\n }\n\n get isBankSelectionState(): boolean {\n return this.currentState.value === OpenBankingState.BankSelection;\n }\n\n get isConsentState(): boolean {\n return this.currentState.value === OpenBankingState.Consent;\n }\n\n get isProcessingState(): boolean {\n return this.currentState.value === OpenBankingState.Processing;\n }\n\n get isErrorState(): boolean {\n return this.currentState.value === OpenBankingState.Error;\n }\n\n get isCompleteState(): boolean {\n return this.currentState.value === OpenBankingState.Complete;\n }\n\n private setLoadingState(loading: boolean): void {\n this.isLoading = loading;\n this.isLoadingSubject.next(loading);\n this.cdr.detectChanges();\n }\n\n ngOnDestroy(): void {\n this.pollSubscription?.unsubscribe();\n this.isLoadingSubject.complete();\n }\n}","<div class=\"open-banking-container\">\n <!-- Initial State -->\n <div *ngIf=\"isInitialState\" class=\"state-initial\">\n <div class=\"message-container\">\n <p class=\"message\">{{ initialMessage }}</p>\n <button mat-raised-button color=\"primary\" (click)=\"proceedToNextStep()\" [disabled]=\"isLoadingSubject | async\">\n {{ nextButtonLabel }}\n </button>\n </div>\n </div>\n\n <!-- Bank Selection State -->\n <div *ngIf=\"isBankSelectionState\" class=\"state-bank-selection\">\n <h3 class=\"section-title\">{{ selectBankTitle }}</h3>\n\n <!-- Bank Grid -->\n <div class=\"banks-grid\" *ngIf=\"banks.length > 0\">\n <div\n *ngFor=\"let bank of banks\"\n class=\"bank-card\"\n [class.selected]=\"selectedBank === bank.bankCode\"\n (click)=\"selectBank(bank)\">\n <div class=\"bank-logo\" *ngIf=\"bank.logoUrl\">\n <img [src]=\"bank.logoUrl\" [alt]=\"bank.displayName\">\n </div>\n <div class=\"bank-info\">\n <h4>{{ bank.displayName }}</h4>\n <span class=\"bank-code\">{{ bank.bankCode }}</span>\n </div>\n <mat-icon class=\"check-icon\" *ngIf=\"selectedBank === bank.bankCode\">check_circle</mat-icon>\n </div>\n </div>\n\n <button\n mat-raised-button\n color=\"primary\"\n (click)=\"proceedToNextStep()\"\n [disabled]=\"!selectedBank || (isLoadingSubject | async)\"\n class=\"m-t-16\">\n {{ continueButtonLabel }}\n </button>\n </div>\n\n <!-- Consent State -->\n <div *ngIf=\"isConsentState\" class=\"state-consent\">\n <div class=\"consent-header\">\n <h3>{{ consentTitle }}</h3>\n <p>{{ consentDescription }}</p>\n </div>\n\n <!-- Show iframe only if we have an authorization URL -->\n <div class=\"consent-container\" *ngIf=\"authorizationUrl\">\n <iframe\n [src]=\"authorizationUrl\"\n class=\"consent-iframe\"\n frameborder=\"0\"\n allowfullscreen\n sandbox=\"allow-forms allow-scripts allow-same-origin allow-popups allow-popups-to-escape-sandbox allow-top-navigation\">\n </iframe>\n </div>\n\n <!-- Show waiting message when consent is in popup or iframe failed -->\n <div class=\"consent-waiting\" *ngIf=\"!authorizationUrl\">\n <mat-spinner diameter=\"40\"></mat-spinner>\n <p>{{ waitingForAuthorizationText }}</p>\n <p class=\"consent-popup-hint\">\n <mat-icon>open_in_new</mat-icon>\n <span>{{ popupWindowMessage }}</span>\n </p>\n <p class=\"consent-popup-note\">\n {{ popupBlockerMessage }}\n </p>\n </div>\n </div>\n\n <!-- Processing State -->\n <div *ngIf=\"isProcessingState\" class=\"state-processing\">\n <div class=\"loading-container\">\n <mat-spinner diameter=\"50\"></mat-spinner>\n <p class=\"loading-message\">{{ waitingMessage }}</p>\n <div class=\"progress-details\">\n <p *ngIf=\"accounts.length > 0\">\n {{ accountsRetrievedLabel }}: {{ accounts.length }}\n </p>\n <p *ngIf=\"transactions.length > 0\">\n {{ transactionsRetrievedLabel }}: {{ transactions.length }}\n </p>\n </div>\n </div>\n </div>\n\n <!-- Error State -->\n <div *ngIf=\"isErrorState\" class=\"state-error\">\n <div class=\"error-container\">\n <mat-icon color=\"warn\" class=\"error-icon\">error_outline</mat-icon>\n <p class=\"error-message\">{{ errorMessage }}</p>\n <button mat-raised-button color=\"primary\" (click)=\"retry()\">\n {{ retryButtonLabel }}\n </button>\n </div>\n </div>\n\n <!-- Complete State -->\n <div *ngIf=\"isCompleteState\" class=\"state-complete\">\n <div class=\"success-container\">\n <mat-icon color=\"primary\" class=\"success-icon\">check_circle</mat-icon>\n <p class=\"success-message\">{{ completionMessage }}</p>\n\n <!-- Display summary of accounts found -->\n <div class=\"accounts-summary\" *ngIf=\"accounts.length > 0\">\n <h4>{{ accountsSummaryText }}</h4>\n <div class=\"accounts-list\">\n <div class=\"account-card\" *ngFor=\"let account of accounts\">\n <div class=\"account-header\">\n <mat-icon class=\"account-icon\">account_balance</mat-icon>\n <div class=\"account-info\">\n <div class=\"account-name\">{{ account.name || 'Account' }}</div>\n <div class=\"account-iban\">{{ account.iban }}</div>\n </div>\n </div>\n <div class=\"account-details\">\n <div class=\"account-balance\">\n <span class=\"balance-amount\">{{ account.balance | currency:account.currency:'symbol':'1.2-2' }}</span>\n </div>\n <div class=\"account-holder\">{{ account.accountHolderName }}</div>\n </div>\n </div>\n </div>\n\n <div class=\"transaction-summary\" *ngIf=\"transactions.length > 0\">\n <p>{{ transactionsSummaryText }}</p>\n </div>\n </div>\n </div>\n </div>\n</div>","export default `\n@import url(\"https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700&display=swap\");\n@import url(\"https://fonts.googleapis.com/icon?family=Material+Icons\");\n.mat-ripple {\n overflow: hidden;\n position: relative;\n}\n.mat-ripple:not(:empty) {\n transform: translateZ(0);\n}\n\n.mat-ripple.mat-ripple-unbounded {\n overflow: visible;\n}\n\n.mat-ripple-element {\n position: absolute;\n border-radius: 50%;\n pointer-events: none;\n transition: opacity, transform 0ms cubic-bezier(0, 0, 0.2, 1);\n transform: scale3d(0, 0, 0);\n background-color: var(--mat-ripple-color, rgba(0, 0, 0, 0.1));\n}\n.cdk-high-contrast-active .mat-ripple-element {\n display: none;\n}\n\n.cdk-drag-preview .mat-ripple-element, .cdk-drag-placeholder .mat-ripple-element {\n display: none;\n}\n\n.cdk-visually-hidden {\n border: 0;\n clip: rect(0 0 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n white-space: nowrap;\n outline: 0;\n -webkit-appearance: none;\n -moz-appearance: none;\n left: 0;\n}\n[dir=rtl] .cdk-visually-hidden {\n left: auto;\n right: 0;\n}\n\n.cdk-overlay-container, .cdk-global-overlay-wrapper {\n pointer-events: none;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n}\n\n.cdk-overlay-container {\n position: fixed;\n z-index: 1000;\n}\n.cdk-overlay-container:empty {\n display: none;\n}\n\n.cdk-global-overlay-wrapper {\n display: flex;\n position: absolute;\n z-index: 1000;\n}\n\n.cdk-overlay-pane {\n position: absolute;\n pointer-events: auto;\n box-sizing: border-box;\n z-index: 1000;\n display: flex;\n max-width: 100%;\n max-height: 100%;\n}\n\n.cdk-overlay-backdrop {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 1000;\n pointer-events: auto;\n -webkit-tap-highlight-color: transparent;\n transition: opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1);\n opacity: 0;\n}\n.cdk-overlay-backdrop.cdk-overlay-backdrop-showing {\n opacity: 1;\n}\n.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing {\n opacity: 0.6;\n}\n\n.cdk-overlay-dark-backdrop {\n background: rgba(0, 0, 0, 0.32);\n}\n\n.cdk-overlay-transparent-backdrop {\n transition: visibility 1ms linear, opacity 1ms linear;\n visibility: hidden;\n opacity: 1;\n}\n.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing {\n opacity: 0;\n visibility: visible;\n}\n\n.cdk-overlay-backdrop-noop-animation {\n transition: none;\n}\n\n.cdk-overlay-connected-position-bounding-box {\n position: absolute;\n z-index: 1000;\n display: flex;\n flex-direction: column;\n min-width: 1px;\n min-height: 1px;\n}\n\n.cdk-global-scrollblock {\n position: fixed;\n width: 100%;\n overflow-y: scroll;\n}\n\ntextarea.cdk-textarea-autosize {\n resize: none;\n}\n\ntextarea.cdk-textarea-autosize-measuring {\n padding: 2px 0 !important;\n box-sizing: content-box !important;\n height: auto !important;\n overflow: hidden !important;\n}\n\ntextarea.cdk-textarea-autosize-measuring-firefox {\n padding: 2px 0 !important;\n box-sizing: content-box !important;\n height: 0 !important;\n}\n\n@keyframes cdk-text-field-autofill-start { /*!*/ }\n@keyframes cdk-text-field-autofill-end { /*!*/ }\n.cdk-text-field-autofill-monitored:-webkit-autofill {\n animation: cdk-text-field-autofill-start 0s 1ms;\n}\n\n.cdk-text-field-autofill-monitored:not(:-webkit-autofill) {\n animation: cdk-text-field-autofill-end 0s 1ms;\n}\n\n.mat-focus-indicator {\n position: relative;\n}\n.mat-focus-indicator::before {\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n position: absolute;\n box-sizing: border-box;\n pointer-events: none;\n display: var(--mat-focus-indicator-display, none);\n border: var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);\n border-radius: var(--mat-focus-indicator-border-radius, 4px);\n}\n.mat-focus-indicator:focus::before {\n content: \"\";\n}\n\n.cdk-high-contrast-active {\n --mat-focus-indicator-display: block;\n}\n\n.mat-mdc-focus-indicator {\n position: relative;\n}\n.mat-mdc-focus-indicator::before {\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n position: absolute;\n box-sizing: border-box;\n pointer-events: none;\n display: var(--mat-mdc-focus-indicator-display, none);\n border: var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);\n border-radius: var(--mat-mdc-focus-indicator-border-radius, 4px);\n}\n.mat-mdc-focus-indicator:focus::before {\n content: \"\";\n}\n\n.cdk-high-contrast-active {\n --mat-mdc-focus-indicator-display: block;\n}\n\n.mat-app-background {\n background-color: var(--mat-app-background-color, var(--mat-app-background, transparent));\n color: var(--mat-app-text-color, var(--mat-app-on-background, inherit));\n}\n\n.mat-elevation-z0, .mat-mdc-elevation-specific.mat-elevation-z0 {\n box-shadow: var(--mat-app-elevation-shadow-level-0, none);\n}\n\n.mat-elevation-z1, .mat-mdc-elevation-specific.mat-elevation-z1 {\n box-shadow: var(--mat-app-elevation-shadow-level-1, none);\n}\n\n.mat-elevation-z2, .mat-mdc-elevation-specific.mat-elevation-z2 {\n box-shadow: var(--mat-app-elevation-shadow-level-2, none);\n}\n\n.mat-elevation-z3, .mat-mdc-elevation-specific.mat-elevation-z3 {\n box-shadow: var(--mat-app-elevation-shadow-level-3, none);\n}\n\n.mat-elevation-z4, .mat-mdc-elevation-specific.mat-elevation-z4 {\n box-shadow: var(--mat-app-elevation-shadow-level-4, none);\n}\n\n.mat-elevation-z5, .mat-mdc-elevation-specific.mat-elevation-z5 {\n box-shadow: var(--mat-app-elevation-shadow-level-5, none);\n}\n\n.mat-elevation-z6, .mat-mdc-elevation-specific.mat-elevation-z6 {\n box-shadow: var(--mat-app-elevation-shadow-level-6, none);\n}\n\n.mat-elevation-z7, .mat-mdc-elevation-specific.mat-elevation-z7 {\n box-shadow: var(--mat-app-elevation-shadow-level-7, none);\n}\n\n.mat-elevation-z8, .mat-mdc-elevation-specific.mat-elevation-z8 {\n box-shadow: var(--mat-app-elevation-shadow-level-8, none);\n}\n\n.mat-elevation-z9, .mat-mdc-elevation-specific.mat-elevation-z9 {\n box-shadow: var(--mat-app-elevation-shadow-level-9, none);\n}\n\n.mat-elevation-z10, .mat-mdc-elevation-specific.mat-elevation-z10 {\n box-shadow: var(--mat-app-elevation-shadow-level-10, none);\n}\n\n.mat-elevation-z11, .mat-mdc-elevation-specific.mat-elevation-z11 {\n box-shadow: var(--mat-app-elevation-shadow-level-11, none);\n}\n\n.mat-elevation-z12, .mat-mdc-elevation-specific.mat-elevation-z12 {\n box-shadow: var(--mat-app-elevation-shadow-level-12, none);\n}\n\n.mat-elevation-z13, .mat-mdc-elevation-specific.mat-elevation-z13 {\n box-shadow: var(--mat-app-elevation-shadow-level-13, none);\n}\n\n.mat-elevation-z14, .mat-mdc-elevation-specific.mat-elevation-z14 {\n box-shadow: var(--mat-app-elevation-shadow-level-14, none);\n}\n\n.mat-elevation-z15, .mat-mdc-elevation-specific.mat-elevation-z15 {\n box-shadow: var(--mat-app-elevation-shadow-level-15, none);\n}\n\n.mat-elevation-z16, .mat-mdc-elevation-specific.mat-elevation-z16 {\n box-shadow: var(--mat-app-elevation-shadow-level-16, none);\n}\n\n.mat-elevation-z17, .mat-mdc-elevation-specific.mat-elevation-z17 {\n box-shadow: var(--mat-app-elevation-shadow-level-17, none);\n}\n\n.mat-elevation-z18, .mat-mdc-elevation-specific.mat-elevation-z18 {\n box-shadow: var(--mat-app-elevation-shadow-level-18, none);\n}\n\n.mat-elevation-z19, .mat-mdc-elevation-specific.mat-elevation-z19 {\n box-shadow: var(--mat-app-elevation-shadow-level-19, none);\n}\n\n.mat-elevation-z20, .mat-mdc-elevation-specific.mat-elevation-z20 {\n box-shadow: var(--mat-app-elevation-shadow-level-20, none);\n}\n\n.mat-elevation-z21, .mat-mdc-elevation-specific.mat-elevation-z21 {\n box-shadow: var(--mat-app-elevation-shadow-level-21, none);\n}\n\n.mat-elevation-z22, .mat-mdc-elevation-specific.mat-elevation-z22 {\n box-shadow: var(--mat-app-elevation-shadow-level-22, none);\n}\n\n.mat-elevation-z23, .mat-mdc-elevation-specific.mat-elevation-z23 {\n box-shadow: var(--mat-app-elevation-shadow-level-23, none);\n}\n\n.mat-elevation-z24, .mat-mdc-elevation-specific.mat-elevation-z24 {\n box-shadow: var(--mat-app-elevation-shadow-level-24, none);\n}\n\n.bg-primary {\n background: #5d87ff !important;\n}\n\n.horizontal-navbar .parentBox.pactive > a,\n.horizontal-navbar .parentBox.pactive > a:hover,\n.horizontal-navbar .parentBox.pactive:hover > a {\n background-color: #5d87ff !important;\n}\n\n.activeMenu {\n background-color: #5d87ff !important;\n}\n\n.mat-mdc-outlined-button.mat-primary {\n border-color: #5d87ff !important;\n}\n.mat-mdc-outlined-button.mat-accent {\n border-color: #44b7f7 !important;\n}\n.mat-mdc-outlined-button.mat-warn {\n border-color: #fa896b !important;\n}\n\n.mat-theme-loaded-marker {\n display: none;\n}\n\nhtml {\n --mat-ripple-color: rgba(0, 0, 0, 0.1);\n}\n\nhtml {\n --mat-option-selected-state-label-text-color: #5d87ff;\n --mat-option-label-text-color: rgba(0, 0, 0, 0.87);\n --mat-option-hover-state-layer-color: rgba(0, 0, 0, 0.04);\n --mat-option-focus-state-layer-color: rgba(0, 0, 0, 0.04);\n --mat-option-selected-state-layer-color: rgba(0, 0, 0, 0.04);\n}\n\n.mat-accent {\n --mat-option-selected-state-label-text-color: #44b7f7;\n --mat-option-label-text-color: rgba(0, 0, 0, 0.87);\n --mat-option-hover-state-layer-color: rgba(0, 0, 0, 0.04);\n --mat-option-focus-state-layer-color: rgba(0, 0, 0, 0.04);\n --mat-option-selected-state-layer-color: rgba(0, 0, 0, 0.04);\n}\n\n.mat-warn {\n --mat-option-selected-state-label-text-color: #fa896b;\n --mat-option-label-text-color: rgba(0, 0, 0, 0.87);\n --mat-option-hover-state-layer-color: rgba(0, 0, 0, 0.04);\n --mat-option-focus-state-layer-color: rgba(0, 0, 0, 0.04);\n --mat-option-selected-state-layer-color: rgba(0, 0, 0, 0.04);\n}\n\nhtml {\n --mat-optgroup-label-text-color: rgba(0, 0, 0, 0.87);\n}\n\n.mat-primary {\n --mat-full-pseudo-checkbox-selected-icon-color: #5d87ff;\n --mat-full-pseudo-checkbox-selected-checkmark-color: #fafafa;\n --mat-full-pseudo-checkbox-unselected-icon-color: rgba(0, 0, 0, 0.54);\n --mat-full-pseudo-checkbox-disabled-selected-checkmark-color: #fafafa;\n --mat-full-pseudo-checkbox-disabled-unselected-icon-color: #b0b0b0;\n --mat-full-pseudo-checkbox-disabled-selected-icon-color: #b0b0b0;\n --mat-minimal-pseudo-checkbox-selected-checkmark-color: #5d87ff;\n --mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color: #b0b0b0;\n}\n\nhtml {\n --mat-full-pseudo-checkbox-selected-icon-color: #44b7f7;\n --mat-full-pseudo-checkbox-selected-checkmark-color: #fafafa;\n --mat-full-pseudo-checkbox-unselected-icon-color: rgba(0, 0, 0, 0.54);\n --mat-full-pseudo-checkbox-disabled-selected-checkmark-color: #fafafa;\n --mat-full-pseudo-checkbox-disabled-unselected-icon-color: #b0b0b0;\n --mat-full-pseudo-checkbox-disabled-selected-icon-color: #b0b0b0;\n --mat-minimal-pseudo-checkbox-selected-checkmark-color: #44b7f7;\n --mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color: #b0b0b0;\n}\n\n.mat-accent {\n --mat-full-pseudo-checkbox-selected-icon-color: #44b7f7;\n --mat-full-pseudo-checkbox-selected-checkmark-color: #fafafa;\n --mat-full-pseudo-checkbox-unselected-icon-color: rgba(0, 0, 0, 0.54);\n --mat-full-pseudo-checkbox-disabled-selected-checkmark-color: #fafafa;\n --mat-full-pseudo-checkbox-disabled-unselected-icon-color: #b0b0b0;\n --mat-full-pseudo-checkbox-disabled-selected-icon-color: #b0b0b0;\n --mat-minimal-pseudo-checkbox-selected-checkmark-color: #44b7f7;\n --mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color: #b0b0b0;\n}\n\n.mat-warn {\n --mat-full-pseudo-checkbox-selected-icon-color: #fa896b;\n --mat-full-pseudo-checkbox-selected-checkmark-color: #fafafa;\n --mat-full-pseudo-checkbox-unselected-icon-color: rgba(0, 0, 0, 0.54);\n --mat-full-pseudo-checkbox-disabled-selected-checkmark-color: #fafafa;\n --mat-full-pseudo-checkbox-disabled-unselected-icon-color: #b0b0b0;\n --mat-full-pseudo-checkbox-disabled-selected-icon-color: #b0b0b0;\n --mat-minimal-pseudo-checkbox-selected-checkmark-color: #fa896b;\n --mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color: #b0b0b0;\n}\n\nhtml {\n --mat-app-background-color: #fafafa;\n --mat-app-text-color: rgba(0, 0, 0, 0.87);\n --mat-app-elevation-shadow-level-0: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\n --mat-app-elevation-shadow-level-1: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\n --mat-app-elevation-shadow-level-2: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\n --mat-app-elevation-shadow-level-3: 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12);\n --mat-app-elevation-shadow-level-4: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\n --mat-app-elevation-shadow-level-5: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 5px 8px 0px rgba(0, 0, 0, 0.14), 0px 1px 14px 0px rgba(0, 0, 0, 0.12);\n --mat-app-elevation-shadow-level-6: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);\n --mat-app-elevation-shadow-level-7: 0px 4px 5px -2px rgba(0, 0, 0, 0.2), 0px 7px 10px 1px rgba(0, 0, 0, 0.14), 0px 2px 16px 1px rgba(0, 0, 0, 0.12);\n --mat-app-elevation-shadow-level-8: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);\n --mat-app-elevation-shadow-level-9: 0px 5px 6px -3px rgba(0, 0, 0, 0.2), 0px 9px 12px 1px rgba(0, 0, 0, 0.14), 0px 3px 16px 2px rgba(0, 0, 0, 0.12);\n --mat-app-elevation-shadow-level-10: 0px 6px 6px -3px rgba(0, 0, 0, 0.2), 0px 10px 14px 1px rgba(0, 0, 0, 0.14), 0px 4px 18px 3px rgba(0, 0, 0, 0.12);\n --mat-app-elevation-shadow-level-11: 0px 6px 7px -4px rgba(0, 0, 0, 0.2), 0px 11px 15px 1px rgba(0, 0, 0, 0.14), 0px 4px 20px 3px rgba(0, 0, 0, 0.12);\n --mat-app-elevation-shadow-level-12: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12);\n --mat-app-elevation-shadow-level-13: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 13px 19px 2px rgba(0, 0, 0, 0.14), 0px 5px 24px 4px rgba(0, 0, 0, 0.12);\n --mat-app-elevation-shadow-level-14: 0px 7px 9px -4px rgba(0, 0, 0, 0.2), 0px 14px 21px 2px rgba(0, 0, 0, 0.14), 0px 5px 26px 4px rgba(0, 0, 0, 0.12);\n --mat-app-elevation-shadow-level-15: 0px 8px 9px -5px rgba(0, 0, 0, 0.2), 0px 15px 22px 2px rgba(0, 0, 0, 0.14), 0px 6px 28px 5px rgba(0, 0, 0, 0.12);\n --mat-app-elevation-shadow-level-16: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);\n --mat-app-elevation-shadow-level-17: 0px 8px 11px -5px rgba(0, 0, 0, 0.2), 0px 17px 26px 2px rgba(0, 0, 0, 0.14), 0px 6px 32px 5px rgba(0, 0, 0, 0.12);\n --mat-app-elevation-shadow-level-18: 0px 9px 11px -5px rgba(0, 0, 0, 0.2), 0px 18px 28px 2px rgba(0, 0, 0, 0.14), 0px 7px 34px 6px rgba(0, 0, 0, 0.12);\n --mat-app-elevation-shadow-level-19: 0px 9px 12px -6px rgba(0, 0, 0, 0.2), 0px 19px 29px 2px rgba(0, 0, 0, 0.14), 0px 7px 36px 6px rgba(0, 0, 0, 0.12);\n --mat-app-elevation-shadow-level-20: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 20px 31px 3px rgba(0, 0, 0, 0.14), 0px 8px 38px 7px rgba(0, 0, 0, 0.12);\n --mat-app-elevation-shadow-level-21: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 21px 33px 3px rgba(0, 0, 0, 0.14), 0px 8px 40px 7px rgba(0, 0, 0, 0.12);\n --mat-app-elevation-shadow-level-22: 0px 10px 14px -6px rgba(0, 0, 0, 0.2), 0px 22px 35px 3px rgba(0, 0, 0, 0.14), 0px 8px 42px 7px rgba(0, 0, 0, 0.12);\n --mat-app-elevation-shadow-level-23: 0px 11px 14px -7px rgba(0, 0, 0, 0.2), 0px 23px 36px 3px rgba(0, 0, 0, 0.14), 0px 9px 44px 8px rgba(0, 0, 0, 0.12);\n --mat-app-elevation-shadow-level-24: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);\n}\n\nhtml {\n --mat-option-label-text-font: Plus Jakarta Sans;\n --mat-option-label-text-line-height: 20px;\n --mat-option-label-text-size: 14px;\n --mat-option-label-text-tracking: normal;\n --mat-option-label-text-weight: 400;\n}\n\nhtml {\n --mat-optgroup-label-text-font: Plus Jakarta Sans;\n --mat-optgroup-label-text-line-height: 20px;\n --mat-optgroup-label-text-size: 14px;\n --mat-optgroup-label-text-tracking: normal;\n --mat-optgroup-label-text-weight: 400;\n}\n\nhtml {\n --mdc-elevated-card-container-shape: 4px;\n --mdc-outlined-card-container-shape: 4px;\n --mdc-outlined-card-outline-width: 1px;\n}\n\nhtml {\n --mdc-elevated-card-container-color: white;\n --mdc-elevated-card-container-elevation: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\n --mdc-outlined-card-container-color: white;\n --mdc-outlined-card-outline-color: rgba(0, 0, 0, 0.12);\n --mdc-outlined-card-container-elevation: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\n --mat-card-subtitle-text-color: rgba(0, 0, 0, 0.54);\n}\n\nhtml {\n --mat-card-title-text-font: Plus Jakarta Sans;\n --mat-card-title-text-line-height: 26px;\n --mat-card-title-text-size: 18px;\n --mat-card-title-text-tracking: normal;\n --mat-card-title-text-weight: 600;\n --mat-card-subtitle-text-font: Plus Jakarta Sans;\n --mat-card-subtitle-text-line-height: 14px;\n --mat-card-subtitle-text-size: 14px;\n --mat-card-subtitle-text-tracking: normal;\n --mat-card-subtitle-text-weight: 400;\n}\n\nhtml {\n --mdc-linear-progress-active-indicator-height: 4px;\n --mdc-linear-progress-track-height: 4px;\n --mdc-linear-progress-track-shape: 0;\n}\n\n.mat-mdc-progress-bar {\n --mdc-linear-progress-active-indicator-color: #5d87ff;\n --mdc-linear-progress-track-color: rgba(93, 135, 255, 0.25);\n}\n.mat-mdc-progress-bar.mat-accent {\n --mdc-linear-progress-active-indicator-color: #44b7f7;\n --mdc-linear-progress-track-color: rgba(68, 183, 247, 0.25);\n}\n.mat-mdc-progress-bar.mat-warn {\n --mdc-linear-progress-active-indicator-color: #fa896b;\n --mdc-linear-progress-track-color: rgba(250, 137, 107, 0.25);\n}\n\nhtml {\n --mdc-plain-tooltip-container-shape: 4px;\n --mdc-plain-tooltip-supporting-text-line-height: 16px;\n}\n\nhtml {\n --mdc-plain-tooltip-container-color: #616161;\n --mdc-plain-tooltip-supporting-text-color: #fff;\n}\n\nhtml {\n --mdc-plain-tooltip-supporting-text-font: Plus Jakarta Sans;\n --mdc-plain-tooltip-supporting-text-size: 12px;\n --mdc-plain-tooltip-supporting-text-weight: 400;\n --mdc-plain-tooltip-supporting-text-tracking: 0.0333333333em;\n}\n\nhtml {\n --mdc-filled-text-field-active-indicator-height: 1px;\n --mdc-filled-text-field-focus-active-indicator-height: 2px;\n --mdc-filled-text-field-container-shape: 4px;\n --mdc-outlined-text-field-outline-width: 1px;\n --mdc-outlined-text-field-focus-outline-width: 2px;\n --mdc-outlined-text-field-container-shape: 4px;\n}\n\nhtml {\n --mdc-filled-text-field-caret-color: #5d87ff;\n --mdc-filled-text-field-focus-active-indicator-color: #5d87ff;\n --mdc-filled-text-field-focus-label-text-color: rgba(93, 135, 255, 0.87);\n --mdc-filled-text-field-container-color: whitesmoke;\n --mdc-filled-text-field-disabled-container-color: #fafafa;\n --mdc-filled-text-field-label-text-color: rgba(0, 0, 0, 0.6);\n --mdc-filled-text-field-hover-label-text-color: rgba(0, 0, 0, 0.6);\n --mdc-filled-text-field-disabled-label-text-color: rgba(0, 0, 0, 0.38);\n --mdc-filled-text-field-input-text-color: rgba(0, 0, 0, 0.87);\n --mdc-filled-text-field-disabled-input-text-color: rgba(0, 0, 0, 0.38);\n --mdc-filled-text-field-input-text-placeholder-color: rgba(0, 0, 0, 0.6);\n --mdc-filled-text-field-error-hover-label-text-color: #fa896b;\n --mdc-filled-text-field-error-focus-label-text-color: #fa896b;\n --mdc-filled-text-field-error-label-text-color: #fa896b;\n --mdc-filled-text-field-error-caret-color: #fa896b;\n --mdc-filled-text-field-active-indicator-color: rgba(0, 0, 0, 0.42);\n --mdc-filled-text-field-disabled-active-indicator-color: rgba(0, 0, 0, 0.06);\n --mdc-filled-text-field-hover-active-indicator-color: rgba(0, 0, 0, 0.87);\n --mdc-filled-text-field-error-active-indicator-color: #fa896b;\n --mdc-filled-text-field-error-focus-active-indicator-color: #fa896b;\n --mdc-filled-text-field-error-hover-active-indicator-color: #fa896b;\n --mdc-outlined-text-field-caret-color: #5d87ff;\n --mdc-outlined-text-field-focus-outline-color: #5d87ff;\n --mdc-outlined-text-field-focus-label-text-color: rgba(93, 135, 255, 0.87);\n --mdc-outlined-text-field-label-text-color: rgba(0, 0, 0, 0.6);\n --mdc-outlined-text-field-hover-label-text-color: rgba(0, 0, 0, 0.6);\n --mdc-outlined-text-field-disabled-label-text-color: rgba(0, 0, 0, 0.38);\n --mdc-outlined-text-field-input-text-color: rgba(0, 0, 0, 0.87);\n --mdc-outlined-text-field-disabled-input-text-color: rgba(0, 0, 0, 0.38);\n --mdc-outlined-text-field-input-text-placeholder-color: rgba(0, 0, 0, 0.6);\n --mdc-outlined-text-field-error-caret-color: #fa896b;\n --mdc-outlined-text-field-error-focus-label-text-color: #fa896b;\n --mdc-outlined-text-field-error-label-text-color: #fa896b;\n --mdc-outlined-text-field-error-hover-label-text-color: #fa896b;\n --mdc-outlined-text-field-outline-color: rgba(0, 0, 0, 0.38);\n --mdc-outlined-text-field-disabled-outline-color: rgba(0, 0, 0, 0.06);\n --mdc-outlined-text-field-hover-outline-color: rgba(0, 0, 0, 0.87);\n --mdc-outlined-text-field-error-focus-outline-color: #fa896b;\n --mdc-outlined-text-field-error-hover-outline-color: #fa896b;\n --mdc-outlined-text-field-error-outline-color: #fa896b;\n --mat-form-field-focus-select-arrow-color: rgba(93, 135, 255, 0.87);\n --mat-form-field-disabled-input-text-placeholder-color: rgba(0, 0, 0, 0.38);\n --mat-form-field-state-layer-color: rgba(0, 0, 0, 0.87);\n --mat-form-field-error-text-color: #fa896b;\n --mat-form-field-select-option-text-color: inherit;\n --mat-form-field-select-disabled-option-text-color: GrayText;\n --mat-form-field-leading-icon-color: unset;\n --mat-form-field-disabled-leading-icon-color: unset;\n --mat-form-field-trailing-icon-color: unset;\n --mat-form-field-disabled-trailing-icon-color: unset;\n --mat-form-field-error-focus-trailing-icon-color: unset;\n --mat-form-field-error-hover-trailing-icon-color: unset;\n --mat-form-field-error-trailing-icon-color: unset;\n --mat-form-field-enabled-select-arrow-color: rgba(0, 0, 0, 0.54);\n --mat-form-field-disabled-select-arrow-color: rgba(0, 0, 0, 0.38);\n --mat-form-field-hover-state-layer-opacity: 0.04;\n --mat-form-field-focus-state-layer-opacity: 0.08;\n}\n\n.mat-mdc-form-field.mat-accent {\n --mdc-filled-text-field-caret-color: #44b7f7;\n --mdc-filled-text-field-focus-active-indicator-color: #44b7f7;\n --mdc-filled-text-field-focus-label-text-color: rgba(68, 183, 247, 0.87);\n --mdc-outlined-text-field-caret-color: #44b7f7;\n --mdc-outlined-text-field-focus-outline-color: #44b7f7;\n --mdc-outlined-text-field-focus-label-text-color: rgba(68, 183, 247, 0.87);\n --mat-form-field-focus-select-arrow-color: rgba(68, 183, 247, 0.87);\n}\n\n.mat-mdc-form-field.mat-warn {\n --mdc-filled-text-field-caret-color: #fa896b;\n --mdc-filled-text-field-focus-active-indicator-color: #fa896b;\n --mdc-filled-text-field-focus-label-text-color: rgba(250, 137, 107, 0.87);\n --mdc-outlined-text-field-caret-color: #fa896b;\n --mdc-outlined-text-field-focus-outline-color: #fa896b;\n --mdc-outlined-text-field-focus-label-text-color: rgba(250, 137, 107, 0.87);\n --mat-form-field-focus-select-arrow-color: rgba(250, 137, 107, 0.87);\n}\n\nhtml {\n --mat-form-field-container-height: 56px;\n --mat-form-field-filled-label-display: block;\n --mat-form-field-container-vertical-padding: 16px;\n --mat-form-field-filled-with-label-container-padding-top: 24px;\n --mat-form-field-filled-with-label-container-padding-bottom: 8px;\n}\n\nhtml {\n --mdc-filled-text-field-label-text-font: Plus Jakarta Sans;\n --mdc-filled-text-field-label-text-size: 14px;\n --mdc-filled-text-field-label-text-tracking: normal;\n --mdc-filled-text-field-label-text-weight: 400;\n --mdc-outlined-text-field-label-text-font: Plus Jakarta Sans;\n --mdc-outlined-text-field-label-text-size: 14px;\n --mdc-outlined-text-field-label-text-tracking: normal;\n --mdc-outlined-text-field-label-text-weight: 400;\n --mat-form-field-container-text-font: Plus Jakarta Sans;\n --mat-form-field-container-text-line-height: 20px;\n --mat-form-field-container-text-size: 14px;\n --mat-form-field-container-text-tracking: normal;\n --mat-form-field-container-text-weight: 400;\n --mat-form-field-outlined-label-text-populated-size: 14px;\n --mat-form-field-subscript-text-font: Plus Jakarta Sans;\n --mat-form-field-subscript-text-line-height: 20px;\n --mat-form-field-subscript-text-size: 12px;\n --mat-form-field-subscript-text-tracking: 0.0333333333em;\n --mat-form-field-subscript-text-weight: 400;\n}\n\nhtml {\n --mat-select-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);\n}\n\nhtml {\n --mat-select-panel-background-color: white;\n --mat-select-enabled-trigger-text-color: rgba(0, 0, 0, 0.87);\n --mat-select-disabled-trigger-text-color: rgba(0, 0, 0, 0.38);\n --mat-select-placeholder-text-color: rgba(0, 0, 0, 0.6);\n --mat-select-enabled-arrow-color: rgba(0, 0, 0, 0.54);\n --mat-select-disabled-arrow-color: rgba(0, 0, 0, 0.38);\n --mat-select-focused-arrow-color: rgba(93, 135, 255, 0.87);\n --mat-select-invalid-arrow-color: rgba(250, 137, 107, 0.87);\n}\nhtml .mat-mdc-form-field.mat-accent {\n --mat-select-panel-background-color: white;\n --mat-select-enabled-trigger-text-color: rgba(0, 0, 0, 0.87);\n --mat-select-disabled-trigger-text-color: rgba(0, 0, 0, 0.38);\n --mat-select-placeholder-text-color: rgba(0, 0, 0, 0.6);\n --mat-select-enabled-arrow-color: rgba(0, 0, 0, 0.54);\n --mat-select-disabled-arrow-color: rgba(0, 0, 0, 0.38);\n --mat-select-focused-arrow-color: rgba(68, 183, 247, 0.87);\n --mat-select-invalid-arrow-color: rgba(250, 137, 107, 0.87);\n}\nhtml .mat-mdc-form-field.mat-warn {\n --mat-select-panel-background-color: white;\n --mat-select-enabled-trigger-text-color: rgba(0, 0, 0, 0.87);\n --mat-select-disabled-trigger-text-color: rgba(0, 0, 0, 0.38);\n --mat-select-placeholder-text-color: rgba(0, 0, 0, 0.6);\n --mat-select-enabled-arrow-color: rgba(0, 0, 0, 0.54);\n --mat-select-disabled-arrow-color: rgba(0, 0, 0, 0.38);\n --mat-select-focused-arrow-color: rgba(250, 137, 107, 0.87);\n --mat-select-invalid-arrow-color: rgba(250, 137, 107, 0.87);\n}\n\nhtml {\n --mat-select-arrow-transform: translateY(-8px);\n}\n\nhtml {\n --mat-select-trigger-text-font: Plus Jakarta Sans;\n --mat-select-trigger-text-line-height: 20px;\n --mat-select-trigger-text-size: 14px;\n --mat-select-trigger-text-tracking: normal;\n --mat-select-trigger-text-weight: 400;\n}\n\nhtml {\n --mat-autocomplete-container-shape: 4px;\n --mat-autocomplete-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);\n}\n\nhtml {\n --mat-autocomplete-background-color: white;\n}\n\nhtml {\n --mdc-dialog-container-shape: 4px;\n --mat-dialog-container-elevation-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);\n --mat-dialog-container-max-width: 80vw;\n --mat-dialog-container-small-max-width: 80vw;\n --mat-dialog-container-min-width: 0;\n --mat-dialog-actions-alignment: start;\n --mat-dialog-actions-padding: 8px;\n --mat-dialog-content-padding: 20px 24px;\n --mat-dialog-with-actions-content-padding: 20px 24px;\n --mat-dialog-headline-padding: 0 24px 9px;\n}\n\nhtml {\n --mdc-dialog-container-color: white;\n --mdc-dialog-subhead-color: rgba(0, 0, 0, 0.87);\n --mdc-dialog-supporting-text-color: rgba(0, 0, 0, 0.6);\n}\n\nhtml {\n --mdc-dialog-subhead-font: Plus Jakarta Sans;\n --mdc-dialog-subhead-line-height: 26px;\n --mdc-dialog-subhead-size: 18px;\n --mdc-dialog-subhead-weight: 600;\n --mdc-dialog-subhead-tracking: normal;\n --mdc-dialog-supporting-text-font: Plus Jakarta Sans;\n --mdc-dialog-supporting-text-line-height: 20px;\n --mdc-dialog-supporting-text-size: 14px;\n --mdc-dialog-supporting-text-weight: 400;\n --mdc-dialog-supporting-text-tracking: normal;\n}\n\n.mat-mdc-standard-chip {\n --mdc-chip-container-shape-radius: 16px;\n --mdc-chip-with-avatar-avatar-shape-radius: 14px;\n --mdc-chip-with-avatar-avatar-size: 28px;\n --mdc-chip-with-icon-icon-size: 18px;\n --mdc-chip-outline-width: 0;\n --mdc-chip-outline-color: transparent;\n --mdc-chip-disabled-outline-color: transparent;\n --mdc-chip-focus-outline-color: transparent;\n --mdc-chip-hover-state-layer-opacity: 0.04;\n --mdc-chip-with-avatar-disabled-avatar-opacity: 1;\n --mdc-chip-flat-selected-outline-width: 0;\n --mdc-chip-selected-hover-state-layer-opacity: 0.04;\n --mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity: 1;\n --mdc-chip-with-icon-disabled-icon-opacity: 1;\n --mat-chip-disabled-container-opacity: 0.4;\n --mat-chip-trailing-action-opacity: 0.54;\n --mat-chip-trailing-action-focus-opacity: 1;\n --mat-chip-trailing-action-state-layer-color: transparent;\n --mat-chip-selected-trailing-action-state-layer-color: transparent;\n --mat-chip-trailing-action-hover-state-layer-opacity: 0;\n --mat-chip-trailing-action-focus-state-layer-opacity: 0;\n}\n\n.mat-mdc-standard-chip {\n --mdc-chip-disabled-label-text-color: #212121;\n --mdc-chip-elevated-container-color: #e0e0e0;\n --mdc-chip-elevated-selected-container-color: #e0e0e0;\n --mdc-chip-elevated-disabled-container-color: #e0e0e0;\n --mdc-chip-flat-disabled-selected-container-color: #e0e0e0;\n --mdc-chip-focus-state-layer-color: black;\n --mdc-chip-hover-state-layer-color: black;\n --mdc-chip-selected-hover-state-layer-color: black;\n --mdc-chip-focus-state-layer-opacity: 0.12;\n --mdc-chip-selected-focus-state-layer-color: black;\n --mdc-chip-selected-focus-state-layer-opacity: 0.12;\n --mdc-chip-label-text-color: #212121;\n --mdc-chip-selected-label-text-color: #212121;\n --mdc-chip-with-icon-icon-color: #212121;\n --mdc-chip-with-icon-disabled-icon-color: #212121;\n --mdc-chip-with-icon-selected-icon-color: #212121;\n --mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #212121;\n --mdc-chip-with-trailing-icon-trailing-icon-color: #212121;\n --mat-chip-selected-disabled-trailing-icon-color: #212121;\n --mat-chip-selected-trailing-icon-color: #212121;\n}\n.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-primary, .mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-primary {\n --mdc-chip-disabled-label-text-color: white;\n --mdc-chip-elevated-container-color: #5d87ff;\n --mdc-chip-elevated-selected-container-color: #5d87ff;\n --mdc-chip-elevated-disabled-container-color: #5d87ff;\n --mdc-chip-flat-disabled-selected-container-color: #5d87ff;\n --mdc-chip-focus-state-layer-color: black;\n --mdc-chip-hover-state-layer-color: black;\n --mdc-chip-selected-hover-state-layer-color: black;\n --mdc-chip-focus-state-layer-opacity: 0.12;\n --mdc-chip-selected-focus-state-layer-color: black;\n --mdc-chip-selected-focus-state-layer-opacity: 0.12;\n --mdc-chip-label-text-color: white;\n --mdc-chip-selected-label-text-color: white;\n --mdc-chip-with-icon-icon-color: white;\n --mdc-chip-with-icon-disabled-icon-color: white;\n --mdc-chip-with-icon-selected-icon-color: white;\n --mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;\n --mdc-chip-with-trailing-icon-trailing-icon-color: white;\n --mat-chip-selected-disabled-trailing-icon-color: white;\n --mat-chip-selected-trailing-icon-color: white;\n}\n.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-accent, .mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-accent {\n --mdc-chip-disabled-label-text-color: white;\n --mdc-chip-elevated-container-color: #44b7f7;\n --mdc-chip-elevated-selected-container-color: #44b7f7;\n --mdc-chip-elevated-disabled-container-color: #44b7f7;\n --mdc-chip-flat-disabled-selected-container-color: #44b7f7;\n --mdc-chip-focus-state-layer-color: black;\n --mdc-chip-hover-state-layer-color: black;\n --mdc-chip-selected-hover-state-layer-color: black;\n --mdc-chip-focus-state-layer-opacity: 0.12;\n --mdc-chip-selected-focus-state-layer-color: black;\n --mdc-chip-selected-focus-state-layer-opacity: 0.12;\n --mdc-chip-label-text-color: white;\n --mdc-chip-selected-label-text-color: white;\n --mdc-chip-with-icon-icon-color: white;\n --mdc-chip-with-icon-disabled-icon-color: white;\n --mdc-chip-with-icon-selected-icon-color: white;\n --mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;\n --mdc-chip-with-trailing-icon-trailing-icon-color: white;\n --mat-chip-selected-disabled-trailing-icon-color: white;\n --mat-chip-selected-trailing-icon-color: white;\n}\n.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-warn, .mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-warn {\n --mdc-chip-disabled-label-text-color: white;\n --mdc-chip-elevated-container-color: #fa896b;\n --mdc-chip-elevated-selected-container-color: #fa896b;\n --mdc-chip-elevated-disabled-container-color: #fa896b;\n --mdc-chip-flat-disabled-selected-container-color: #fa896b;\n --mdc-chip-focus-state-layer-color: black;\n --mdc-chip-hover-state-layer-color: black;\n --mdc-chip-selected-hover-state-layer-color: black;\n --mdc-chip-focus-state-layer-opacity: 0.12;\n --mdc-chip-selected-focus-state-layer-color: black;\n --mdc-chip-selected-focus-state-layer-opacity: 0.12;\n --mdc-chip-label-text-color: white;\n --mdc-chip-selected-label-text-color: white;\n --mdc-chip-with-icon-icon-color: white;\n --mdc-chip-with-icon-disabled-icon-color: white;\n --mdc-chip-with-icon-selected-icon-color: white;\n --mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;\n --mdc-chip-with-trailing-icon-trailing-icon-color: white;\n --mat-chip-selected-disabled-trailing-icon-color: white;\n --mat-chip-selected-trailing-icon-color: white;\n}\n\n.mat-mdc-chip.mat-mdc-standard-chip {\n --mdc-chip-container-height: 32px;\n}\n\n.mat-mdc-standard-chip {\n --mdc-chip-label-text-font: Plus Jakarta Sans;\n --mdc-chip-label-text-line-height: 22px;\n --mdc-chip-label-text-size: 16px;\n --mdc-chip-label-text-tracking: normal;\n --mdc-chip-label-text-weight: 400;\n}\n\nhtml {\n --mdc-switch-disabled-selected-icon-opacity: 0.38;\n --mdc-switch-disabled-track-opacity: 0.12;\n --mdc-switch-disabled-unselected-icon-opacity: 0.38;\n --mdc-switch-handle-height: 20px;\n --mdc-switch-handle-shape: 10px;\n --mdc-switch-handle-width: 20px;\n --mdc-switch-selected-icon-size: 18px;\n --mdc-switch-track-height: 14px;\n --mdc-switch-track-shape: 7px;\n --mdc-switch-track-width: 36px;\n --mdc-switch-unselected-icon-size: 18px;\n --mdc-switch-selected-focus-state-layer-opacity: 0.12;\n --mdc-switch-selected-hover-state-layer-opacity: 0.04;\n --mdc-switch-selected-pressed-state-layer-opacity: 0.1;\n --mdc-switch-unselected-focus-state-layer-opacity: 0.12;\n --mdc-switch-unselected-hover-state-layer-opacity: 0.04;\n --mdc-switch-unselected-pressed-state-layer-opacity: 0.1;\n}\nhtml .mat-mdc-slide-toggle {\n --mat-switch-disabled-selected-handle-opacity: 0.38;\n --mat-switch-disabled-unselected-handle-opacity: 0.38;\n --mat-switch-unselected-handle-size: 20px;\n --mat-switch-selected-handle-size: 20px;\n --mat-switch-pressed-handle-size: 20px;\n --mat-switch-with-icon-handle-size: 20px;\n --mat-switch-selected-handle-horizontal-margin: 0;\n --mat-switch-selected-with-icon-handle-horizontal-margin: 0;\n --mat-switch-selected-pressed-handle-horizontal-margin: 0;\n --mat-switch-unselected-handle-horizontal-margin: 0;\n --mat-switch-unselected-with-icon-handle-horizontal-margin: 0;\n --mat-switch-unselected-pressed-handle-horizontal-margin: 0;\n --mat-switch-visible-track-opacity: 1;\n --mat-switch-hidden-track-opacity: 1;\n --mat-switch-visible-track-transition: transform 75ms 0ms cubic-bezier(0, 0, 0.2, 1);\n --mat-switch-hidden-track-transition: transform 75ms 0ms cubic-bezier(0.4, 0, 0.6, 1);\n --mat-switch-track-outline-width: 1px;\n --mat-switch-track-outline-color: transparent;\n --mat-switch-selected-track-outline-width: 1px;\n --mat-switch-selected-track-outline-color: transparent;\n --mat-switch-disabled-unselected-track-outline-width: 1px;\n --mat-switch-disabled-unselected-track-outline-color: transparent;\n}\n\nhtml {\n --mdc-switch-disabled-selected-handle-color: #424242;\n --mdc-switch-disabled-selected-icon-color: #fff;\n --mdc-switch-disabled-selected-track-color: #424242;\n --mdc-switch-disabled-unselected-handle-color: #424242;\n --mdc-switch-disabled-unselected-icon-color: #fff;\n --mdc-switch-disabled-unselected-track-color: #424242;\n --mdc-switch-handle-surface-color: #fff;\n --mdc-switch-selected-icon-color: #fff;\n --mdc-switch-unselected-focus-handle-color: #212121;\n --mdc-switch-unselected-focus-state-layer-color: #424242;\n --mdc-switch-unselected-focus-track-color: #e0e0e0;\n --mdc-switch-unselected-handle-color: #616161;\n --mdc-switch-unselected-hover-handle-color: #212121;\n --mdc-switch-unselected-hover-state-layer-color: #424242;\n --mdc-switch-unselected-hover-track-color: #e0e0e0;\n --mdc-switch-unselected-icon-color: #fff;\n --mdc-switch-unselected-pressed-handle-color: #212121;\n --mdc-switch-unselected-pressed-state-layer-color: #424242;\n --mdc-switch-unselected-pressed-track-color: #e0e0e0;\n --mdc-switch-unselected-track-color: #e0e0e0;\n --mdc-switch-handle-elevation-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\n --mdc-switch-disabled-handle-elevation-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\n --mdc-switch-disabled-label-text-color: rgba(0, 0, 0, 0.38);\n}\nhtml .mat-mdc-slide-toggle {\n --mat-switch-label-text-color: rgba(0, 0, 0, 0.87);\n}\nhtml {\n --mdc-switch-state-layer-size: 40px;\n}\nhtml .mat-mdc-slide-toggle {\n --mat-switch-label-text-font: Plus Jakarta Sans;\n --mat-switch-label-text-line-height: 22px;\n --mat-switch-label-text-size: 16px;\n --mat-switch-label-text-tracking: normal;\n --mat-switch-label-text-weight: 400;\n}\n\nhtml {\n --mdc-radio-disabled-selected-icon-opacity: 0.38;\n --mdc-radio-disabled-unselected-icon-opacity: 0.38;\n --mdc-radio-state-layer-size: 40px;\n}\n\n.mat-mdc-radio-button.mat-primary {\n --mdc-radio-disabled-selected-icon-color: black;\n --mdc-radio-disabled-unselected-icon-color: black;\n --mdc-radio-unselected-hover-icon-color: #212121;\n --mdc-radio-unselected-focus-icon-color: #212121;\n --mdc-radio-unselected-icon-color: rgba(0, 0, 0, 0.54);\n --mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, 0.54);\n --mdc-radio-selected-focus-icon-color: #5d87ff;\n --mdc-radio-selected-hover-icon-color: #5d87ff;\n --mdc-radio-selected-icon-color: #5d87ff;\n --mdc-radio-selected-pressed-icon-color: #5d87ff;\n --mat-radio-ripple-color: black;\n --mat-radio-checked-ripple-color: #5d87ff;\n --mat-radio-disabled-label-color: rgba(0, 0, 0, 0.38);\n --mat-radio-label-text-color: rgba(0, 0, 0, 0.87);\n}\n.mat-mdc-radio-button.mat-accent {\n --mdc-radio-disabled-selected-icon-color: black;\n --mdc-radio-disabled-unselected-icon-color: black;\n --mdc-radio-unselected-hover-icon-color: #212121;\n --mdc-radio-unselected-focus-icon-color: #212121;\n --mdc-radio-unselected-icon-color: rgba(0, 0, 0, 0.54);\n --mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, 0.54);\n --mdc-radio-selected-focus-icon-color: #44b7f7;\n --mdc-radio-selected-hover-icon-color: #44b7f7;\n --mdc-radio-selected-icon-color: #44b7f7;\n --mdc-radio-selected-pressed-icon-color: #44b7f7;\n --mat-radio-ripple-color: black;\n --mat-radio-checked-ripple-color: #44b7f7;\n --mat-radio-disabled-label-color: rgba(0, 0, 0, 0.38);\n --mat-radio-label-text-color: rgba(0, 0, 0, 0.87);\n}\n.mat-mdc-radio-button.mat-warn {\n --mdc-radio-disabled-selected-icon-color: black;\n --mdc-radio-disabled-unselected-icon-color: black;\n --mdc-radio-unselected-hover-icon-color: #212121;\n --mdc-radio-unselected-focus-icon-color: #212121;\n --mdc-radio-unselected-icon-color: rgba(0, 0, 0, 0.54);\n --mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, 0.54);\n --mdc-radio-selected-focus-icon-color: #fa896b;\n --mdc-radio-selected-hover-icon-color: #fa896b;\n --mdc-radio-selected-icon-color: #fa896b;\n --mdc-radio-selected-pressed-icon-color: #fa896b;\n --mat-radio-ripple-color: black;\n --mat-radio-checked-ripple-color: #fa896b;\n --mat-radio-disabled-label-color: rgba(0, 0, 0, 0.38);\n --mat-radio-label-text-color: rgba(0, 0, 0, 0.87);\n}\n\nhtml {\n --mdc-radio-state-layer-size: 40px;\n --mat-radio-touch-target-display: block;\n}\n\nhtml {\n --mat-radio-label-text-font: Plus Jakarta Sans;\n --mat-radio-label-text-line-height: 22px;\n --mat-radio-label-text-size: 16px;\n --mat-radio-label-text-tracking: normal;\n --mat-radio-label-text-weight: 400;\n}\n\nhtml {\n --mdc-slider-active-track-height: 6px;\n --mdc-slider-active-track-shape: 9999px;\n --mdc-slider-handle-height: 20px;\n --mdc-slider-handle-shape: 50%;\n --mdc-slider-handle-width: 20px;\n --mdc-slider-inactive-track-height: 4px;\n --mdc-slider-inactive-track-shape: 9999px;\n --mdc-slider-with-overlap-handle-outline-width: 1px;\n --mdc-slider-with-tick-marks-active-container-opacity: 0.6;\n --mdc-slider-with-tick-marks-container-shape: 50%;\n --mdc-slider-with-tick-marks-container-size: 2px;\n --mdc-slider-with-tick-marks-inactive-container-opacity: 0.6;\n --mdc-slider-handle-elevation: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\n --mat-slider-value-indicator-width: auto;\n --mat-slider-value-indicator-height: 32px;\n --mat-slider-value-indicator-caret-display: block;\n --mat-slider-value-indicator-border-radius: 4px;\n --mat-slider-value-indicator-padding: 0 12px;\n --mat-slider-value-indicator-text-transform: none;\n --mat-slider-value-indicator-container-transform: translateX(-50%);\n}\n\nhtml {\n --mdc-slider-handle-color: #5d87ff;\n --mdc-slider-focus-handle-color: #5d87ff;\n --mdc-slider-hover-handle-color: #5d87ff;\n --mdc-slider-active-track-color: #5d87ff;\n --mdc-slider-inactive-track-color: #5d87ff;\n --mdc-slider-with-tick-marks-inactive-container-color: #5d87ff;\n --mdc-slider-with-tick-marks-active-container-color: white;\n --mdc-slider-disabled-active-track-color: #000;\n --mdc-slider-disabled-handle-color: #000;\n --mdc-slider-disabled-inactive-track-color: #000;\n --mdc-slider-label-container-color: #000;\n --mdc-slider-label-label-text-color: #fff;\n --mdc-slider-with-overlap-handle-outline-color: #fff;\n --mdc-slider-with-tick-marks-disabled-container-color: #000;\n --mat-slider-ripple-color: #5d87ff;\n --mat-slider-hover-state-layer-color: rgba(93, 135, 255, 0.05);\n --mat-slider-focus-state-layer-color: rgba(93, 135, 255, 0.2);\n --mat-slider-value-indicator-opacity: 0.6;\n}\nhtml .mat-accent {\n --mdc-slider-handle-color: #44b7f7;\n --mdc-slider-focus-handle-color: #44b7f7;\n --mdc-slider-hover-handle-color: #44b7f7;\n --mdc-slider-active-track-color: #44b7f7;\n --mdc-slider-inactive-track-color: #44b7f7;\n --mdc-slider-with-tick-marks-inactive-container-color: #44b7f7;\n --mdc-slider-with-tick-marks-active-container-color: white;\n --mat-slider-ripple-color: #44b7f7;\n --mat-slider-hover-state-layer-color: rgba(68, 183, 247, 0.05);\n --mat-slider-focus-state-layer-color: rgba(68, 183, 247, 0.2);\n}\nhtml .mat-warn {\n --mdc-slider-handle-color: #fa896b;\n --mdc-slider-focus-handle-color: #fa896b;\n --mdc-slider-hover-handle-color: #fa896b;\n --mdc-slider-active-track-color: #fa896b;\n --mdc-slider-inactive-track-color: #fa896b;\n --mdc-slider-with-tick-marks-inactive-container-color: #fa896b;\n --mdc-slider-with-tick-marks-active-container-color: white;\n --mat-slider-ripple-color: #fa896b;\n --mat-slider-hover-state-layer-color: rgba(250, 137, 107, 0.05);\n --mat-slider-focus-state-layer-color: rgba(250, 137, 107, 0.2);\n}\n\nhtml {\n --mdc-slider-label-label-text-font: Plus Jakarta Sans;\n --mdc-slider-label-label-text-size: 14px;\n --mdc-slider-label-label-text-line-height: 14px;\n --mdc-slider-label-label-text-tracking: normal;\n --mdc-slider-label-label-text-weight: 400;\n}\n\nhtml {\n --mat-menu-container-shape: 4px;\n --mat-menu-divider-bottom-spacing: 0;\n --mat-menu-divider-top-spacing: 0;\n --mat-menu-item-spacing: 16px;\n --mat-menu-item-icon-size: 24px;\n --mat-menu-item-leading-spacing: 16px;\n --mat-menu-item-trailing-spacing: 16px;\n --mat-menu-item-with-icon-leading-spacing: 16px;\n --mat-menu-item-with-icon-trailing-spacing: 16px;\n --mat-menu-base-elevation-level: 8;\n}\n\nhtml {\n --mat-menu-item-label-text-color: rgba(0, 0, 0, 0.87);\n --mat-menu-item-icon-color: rgba(0, 0, 0, 0.87);\n --mat-menu-item-hover-state-layer-color: rgba(0, 0, 0, 0.04);\n --mat-menu-item-focus-state-layer-color: rgba(0, 0, 0, 0.04);\n --mat-menu-container-color: white;\n --mat-menu-divider-color: rgba(0, 0, 0, 0.12);\n}\n\nhtml {\n --mat-menu-item-label-text-font: Plus Jakarta Sans;\n --mat-menu-item-label-text-size: 14px;\n --mat-menu-item-label-text-tracking: normal;\n --mat-menu-item-label-text-line-height: 20px;\n --mat-menu-item-label-text-weight: 400;\n}\n\nhtml {\n --mdc-list-list-item-container-shape: 0;\n --mdc-list-list-item-leading-avatar-shape: 50%;\n --mdc-list-list-item-container-color: transparent;\n --mdc-list-list-item-selected-container-color: transparent;\n --mdc-list-list-item-leading-avatar-color: transparent;\n --mdc-list-list-item-leading-icon-size: 24px;\n --mdc-list-list-item-leading-avatar-size: 40px;\n --mdc-list-list-item-trailing-icon-size: 24px;\n --mdc-list-list-item-disabled-state-layer-color: transparent;\n --mdc-list-list-item-disabled-state-layer-opacity: 0;\n --mdc-list-list-item-disabled-label-text-opacity: 0.38;\n --mdc-list-list-item-disabled-leading-icon-opacity: 0.38;\n --mdc-list-list-item-disabled-trailing-icon-opacity: 0.38;\n --mat-list-active-indicator-color: transparent;\n --mat-list-active-indicator-shape: 4px;\n}\n\nhtml {\n --mdc-list-list-item-label-text-color: rgba(0, 0, 0, 0.87);\n --mdc-list-list-item-supporting-text-color: rgba(0, 0, 0, 0.54);\n --mdc-list-list-item-leading-icon-color: rgba(0, 0, 0, 0.38);\n --mdc-list-list-item-trailing-supporting-text-color: rgba(0, 0, 0, 0.38);\n --mdc-list-list-item-trailing-icon-color: rgba(0, 0, 0, 0.38);\n --mdc-list-list-item-selected-trailing-icon-color: rgba(0, 0, 0, 0.38);\n --mdc-list-list-item-disabled-label-text-color: black;\n --mdc-list-list-item-disabled-leading-icon-color: black;\n --mdc-list-list-item-disabled-trailing-icon-color: black;\n --mdc-list-list-item-hover-label-text-color: rgba(0, 0, 0, 0.87);\n --mdc-list-list-item-hover-leading-icon-color: rgba(0, 0, 0, 0.38);\n --mdc-list-list-item-hover-trailing-icon-color: rgba(0, 0, 0, 0.38);\n --mdc-list-list-item-focus-label-text-color: rgba(0, 0, 0, 0.87);\n --mdc-list-list-item-hover-state-layer-color: black;\n --mdc-list-list-item-hover-state-layer-opacity: 0.04;\n --mdc-list-list-item-focus-state-layer-color: black;\n --mdc-list-list-item-focus-state-layer-opacity: 0.12;\n}\n\n.mdc-list-item__start,\n.mdc-list-item__end {\n --mdc-radio-disabled-selected-icon-color: black;\n --mdc-radio-disabled-unselected-icon-color: black;\n --mdc-radio-unselected-hover-icon-color: #212121;\n --mdc-radio-unselected-focus-icon-color: #212121;\n --mdc-radio-unselected-icon-color: rgba(0, 0, 0, 0.54);\n --mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, 0.54);\n --mdc-radio-selected-focus-icon-color: #5d87ff;\n --mdc-radio-selected-hover-icon-color: #5d87ff;\n --mdc-radio-selected-icon-color: #5d87ff;\n --mdc-radio-selected-pressed-icon-color: #5d87ff;\n}\n\n.mat-accent .mdc-list-item__start,\n.mat-accent .mdc-list-item__end {\n --mdc-radio-disabled-selected-icon-color: black;\n --mdc-radio-disabled-unselected-icon-color: black;\n --mdc-radio-unselected-hover-icon-color: #212121;\n --mdc-radio-unselected-focus-icon-color: #212121;\n --mdc-radio-unselected-icon-color: rgba(0, 0, 0, 0.54);\n --mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, 0.54);\n --mdc-radio-selected-focus-icon-color: #44b7f7;\n --mdc-radio-selected-hover-icon-color: #44b7f7;\n --mdc-radio-selected-icon-color: #44b7f7;\n --mdc-radio-selected-pressed-icon-color: #44b7f7;\n}\n\n.mat-warn .mdc-list-item__start,\n.mat-warn .mdc-list-item__end {\n --mdc-radio-disabled-selected-icon-color: black;\n --mdc-radio-disabled-unselected-icon-color: black;\n --mdc-radio-unselected-hover-icon-color: #212121;\n --mdc-radio-unselected-focus-icon-color: #212121;\n --mdc-radio-unselected-icon-color: rgba(0, 0, 0, 0.54);\n --mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, 0.54);\n --mdc-radio-selected-focus-icon-color: #fa896b;\n --mdc-radio-selected-hover-icon-color: #fa896b;\n --mdc-radio-selected-icon-color: #fa896b;\n --mdc-radio-selected-pressed-icon-color: #fa896b;\n}\n\n.mat-mdc-list-option {\n --mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, 0.38);\n --mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, 0.38);\n --mdc-checkbox-selected-checkmark-color: white;\n --mdc-checkbox-selected-focus-icon-color: #5d87ff;\n --mdc-checkbox-selected-hover-icon-color: #5d87ff;\n --mdc-checkbox-selected-icon-color: #5d87ff;\n --mdc-checkbox-selected-pressed-icon-color: #5d87ff;\n --mdc-checkbox-unselected-focus-icon-color: #212121;\n --mdc-checkbox-unselected-hover-icon-color: #212121;\n --mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, 0.54);\n --mdc-checkbox-selected-focus-state-layer-color: #5d87ff;\n --mdc-checkbox-selected-hover-state-layer-color: #5d87ff;\n --mdc-checkbox-selected-pressed-state-layer-color: #5d87ff;\n --mdc-checkbox-unselected-focus-state-layer-color: black;\n --mdc-checkbox-unselected-hover-state-layer-color: black;\n --mdc-checkbox-unselected-pressed-state-layer-color: black;\n}\n\n.mat-mdc-list-option.mat-accent {\n --mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, 0.38);\n --mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, 0.38);\n --mdc-checkbox-selected-checkmark-color: white;\n --mdc-checkbox-selected-focus-icon-color: #44b7f7;\n --mdc-checkbox-selected-hover-icon-color: #44b7f7;\n --mdc-checkbox-selected-icon-color: #44b7f7;\n --mdc-checkbox-selected-pressed-icon-color: #44b7f7;\n --mdc-checkbox-unselected-focus-icon-color: #212121;\n --mdc-checkbox-unselected-hover-icon-color: #212121;\n --mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, 0.54);\n --mdc-checkbox-selected-focus-state-layer-color: #44b7f7;\n --mdc-checkbox-selected-hover-state-layer-color: #44b7f7;\n --mdc-checkbox-selected-pressed-state-layer-color: #44b7f7;\n --mdc-checkbox-unselected-focus-state-layer-color: black;\n --mdc-checkbox-unselected-hover-state-layer-color: black;\n --mdc-checkbox-unselected-pressed-state-layer-color: black;\n}\n\n.mat-mdc-list-option.mat-warn {\n --mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, 0.38);\n --mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, 0.38);\n --mdc-checkbox-selected-checkmark-color: white;\n --mdc-checkbox-selected-focus-icon-color: #fa896b;\n --mdc-checkbox-selected-hover-icon-color: #fa896b;\n --mdc-checkbox-selected-icon-color: #fa896b;\n --mdc-checkbox-selected-pressed-icon-color: #fa896b;\n --mdc-checkbox-unselected-focus-icon-color: #212121;\n --mdc-checkbox-unselected-hover-icon-color: #212121;\n --mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, 0.54);\n --mdc-checkbox-selected-focus-state-layer-color: #fa896b;\n --mdc-checkbox-selected-hover-state-layer-color: #fa896b;\n --mdc-checkbox-selected-pressed-state-layer-color: #fa896b;\n --mdc-checkbox-unselected-focus-state-layer-color: black;\n --mdc-checkbox-unselected-hover-state-layer-color: black;\n --mdc-checkbox-unselected-pressed-state-layer-color: black;\n}\n\n.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected .mdc-list-item__primary-text,\n.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected .mdc-list-item__start,\n.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated .mdc-list-item__primary-text,\n.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated .mdc-list-item__start {\n color: #5d87ff;\n}\n\n.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__start,\n.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__content,\n.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__end {\n opacity: 1;\n}\n\nhtml {\n --mdc-list-list-item-one-line-container-height: 48px;\n --mdc-list-list-item-two-line-container-height: 64px;\n --mdc-list-list-item-three-line-container-height: 88px;\n --mat-list-list-item-leading-icon-start-space: 16px;\n --mat-list-list-item-leading-icon-end-space: 32px;\n}\n\n.mdc-list-item__start,\n.mdc-list-item__end {\n --mdc-radio-state-layer-size: 40px;\n}\n\n.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line, .mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line, .mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line {\n height: 56px;\n}\n.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines, .mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines, .mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines {\n height: 72px;\n}\n\nhtml {\n --mdc-list-list-item-label-text-font: Plus Jakarta Sans;\n --mdc-list-list-item-label-text-line-height: 20px;\n --mdc-list-list-item-label-text-size: 14px;\n --mdc-list-list-item-label-text-tracking: normal;\n --mdc-list-list-item-label-text-weight: 400;\n --mdc-list-list-item-supporting-text-font: Plus Jakarta Sans;\n --mdc-list-list-item-supporting-text-line-height: 22px;\n --mdc-list-list-item-supporting-text-size: 16px;\n --mdc-list-list-item-supporting-text-tracking: normal;\n --mdc-list-list-item-supporting-text-weight: 400;\n --mdc-list-list-item-trailing-supporting-text-font: Plus Jakarta Sans;\n --mdc-list-list-item-trailing-supporting-text-line-height: 20px;\n --mdc-list-list-item-trailing-supporting-text-size: 12px;\n --mdc-list-list-item-trailing-supporting-text-tracking: 0.0333333333em;\n --mdc-list-list-item-trailing-supporting-text-weight: 400;\n}\n\n.mdc-list-group__subheader {\n font: 500 21px / 26px Plus Jakarta Sans;\n letter-spacing: normal;\n}\n\nhtml {\n --mat-paginator-container-text-color: rgba(0, 0, 0, 0.87);\n --mat-paginator-container-background-color: white;\n --mat-paginator-enabled-icon-color: rgba(0, 0, 0, 0.54);\n --mat-paginator-disabled-icon-color: rgba(0, 0, 0, 0.12);\n}\n\nhtml {\n --mat-paginator-container-size: 56px;\n --mat-paginator-form-field-container-height: 40px;\n --mat-paginator-form-field-container-vertical-padding: 8px;\n --mat-paginator-touch-target-display: block;\n}\n\nhtml {\n --mat-paginator-container-text-font: Plus Jakarta Sans;\n --mat-paginator-container-text-line-height: 20px;\n --mat-paginator-container-text-size: 12px;\n --mat-paginator-container-text-tracking: 0.0333333333em;\n --mat-paginator-container-text-weight: 400;\n --mat-paginator-select-trigger-text-size: 12px;\n}\n\nhtml {\n --mdc-secondary-navigation-tab-container-height: 48px;\n --mdc-tab-indicator-active-indicator-height: 2px;\n --mdc-tab-indicator-active-indicator-shape: 0;\n --mat-tab-header-divider-color: transparent;\n --mat-tab-header-divider-height: 0;\n}\n\n.mat-mdc-tab-group, .mat-mdc-tab-nav-bar {\n --mdc-tab-indicator-active-indicator-color: #5d87ff;\n --mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, 0.38);\n --mat-tab-header-pagination-icon-color: black;\n --mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, 0.6);\n --mat-tab-header-active-label-text-color: #5d87ff;\n --mat-tab-header-active-ripple-color: #5d87ff;\n --mat-tab-header-inactive-ripple-color: #5d87ff;\n --mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, 0.6);\n --mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, 0.6);\n --mat-tab-header-active-focus-label-text-color: #5d87ff;\n --mat-tab-header-active-hover-label-text-color: #5d87ff;\n --mat-tab-header-active-focus-indicator-color: #5d87ff;\n --mat-tab-header-active-hover-indicator-color: #5d87ff;\n}\n.mat-mdc-tab-group.mat-accent, .mat-mdc-tab-nav-bar.mat-accent {\n --mdc-tab-indicator-active-indicator-color: #44b7f7;\n --mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, 0.38);\n --mat-tab-header-pagination-icon-color: black;\n --mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, 0.6);\n --mat-tab-header-active-label-text-color: #44b7f7;\n --mat-tab-header-active-ripple-color: #44b7f7;\n --mat-tab-header-inactive-ripple-color: #44b7f7;\n --mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, 0.6);\n --mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, 0.6);\n --mat-tab-header-active-focus-label-text-color: #44b7f7;\n --mat-tab-header-active-hover-label-text-color: #44b7f7;\n --mat-tab-header-active-focus-indicator-color: #44b7f7;\n --mat-tab-header-active-hover-indicator-color: #44b7f7;\n}\n.mat-mdc-tab-group.mat-warn, .mat-mdc-tab-nav-bar.mat-warn {\n --mdc-tab-indicator-active-indicator-color: #fa896b;\n --mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, 0.38);\n --mat-tab-header-pagination-icon-color: black;\n --mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, 0.6);\n --mat-tab-header-active-label-text-color: #fa896b;\n --mat-tab-header-active-ripple-color: #fa896b;\n --mat-tab-header-inactive-ripple-color: #fa896b;\n --mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, 0.6);\n --mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, 0.6);\n --mat-tab-header-active-focus-label-text-color: #fa896b;\n --mat-tab-header-active-hover-label-text-color: #fa896b;\n --mat-tab-header-active-focus-indicator-color: #fa896b;\n --mat-tab-header-active-hover-indicator-color: #fa896b;\n}\n.mat-mdc-tab-group.mat-background-primary, .mat-mdc-tab-nav-bar.mat-background-primary {\n --mat-tab-header-with-background-background-color: #5d87ff;\n --mat-tab-header-with-background-foreground-color: white;\n}\n.mat-mdc-tab-group.mat-background-accent, .mat-mdc-tab-nav-bar.mat-background-accent {\n --mat-tab-header-with-background-background-color: #44b7f7;\n --mat-tab-header-with-background-foreground-color: white;\n}\n.mat-mdc-tab-group.mat-background-warn, .mat-mdc-tab-nav-bar.mat-background-warn {\n --mat-tab-header-with-background-background-color: #fa896b;\n --mat-tab-header-with-background-foreground-color: white;\n}\n\n.mat-mdc-tab-header {\n --mdc-secondary-navigation-tab-container-height: 48px;\n}\n\n.mat-mdc-tab-header {\n --mat-tab-header-label-text-font: Plus Jakarta Sans;\n --mat-tab-header-label-text-size: 14px;\n --mat-tab-header-label-text-tracking: normal;\n --mat-tab-header-label-text-line-height: 14px;\n --mat-tab-header-label-text-weight: 400;\n}\n\nhtml {\n --mdc-checkbox-disabled-selected-checkmark-color: #fff;\n --mdc-checkbox-selected-focus-state-layer-opacity: 0.16;\n --mdc-checkbox-selected-hover-state-layer-opacity: 0.04;\n --mdc-checkbox-selected-pressed-state-layer-opacity: 0.16;\n --mdc-checkbox-unselected-focus-state-layer-opacity: 0.16;\n --mdc-checkbox-unselected-hover-state-layer-opacity: 0.04;\n --mdc-checkbox-unselected-pressed-state-layer-opacity: 0.16;\n}\n\nhtml {\n --mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, 0.38);\n --mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, 0.38);\n --mdc-checkbox-selected-checkmark-color: white;\n --mdc-checkbox-selected-focus-icon-color: #44b7f7;\n --mdc-checkbox-selected-hover-icon-color: #44b7f7;\n --mdc-checkbox-selected-icon-color: #44b7f7;\n --mdc-checkbox-selected-pressed-icon-color: #44b7f7;\n --mdc-checkbox-unselected-focus-icon-color: #212121;\n --mdc-checkbox-unselected-hover-icon-color: #212121;\n --mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, 0.54);\n --mdc-checkbox-selected-focus-state-layer-color: #44b7f7;\n --mdc-checkbox-selected-hover-state-layer-color: #44b7f7;\n --mdc-checkbox-selected-pressed-state-layer-color: #44b7f7;\n --mdc-checkbox-unselected-focus-state-layer-color: black;\n --mdc-checkbox-unselected-hover-state-layer-color: black;\n --mdc-checkbox-unselected-pressed-state-layer-color: black;\n --mat-checkbox-disabled-label-color: rgba(0, 0, 0, 0.38);\n --mat-checkbox-label-text-color: rgba(0, 0, 0, 0.87);\n}\n\n.mat-mdc-checkbox.mat-primary {\n --mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, 0.38);\n --mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, 0.38);\n --mdc-checkbox-selected-checkmark-color: white;\n --mdc-checkbox-selected-focus-icon-color: #5d87ff;\n --mdc-checkbox-selected-hover-icon-color: #5d87ff;\n --mdc-checkbox-selected-icon-color: #5d87ff;\n --mdc-checkbox-selected-pressed-icon-color: #5d87ff;\n --mdc-checkbox-unselected-focus-icon-color: #212121;\n --mdc-checkbox-unselected-hover-icon-color: #212121;\n --mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, 0.54);\n --mdc-checkbox-selected-focus-state-layer-color: #5d87ff;\n --mdc-checkbox-selected-hover-state-layer-color: #5d87ff;\n --mdc-checkbox-selected-pressed-state-layer-color: #5d87ff;\n --mdc-checkbox-unselected-focus-state-layer-color: black;\n --mdc-checkbox-unselected-hover-state-layer-color: black;\n --mdc-checkbox-unselected-pressed-state-layer-color: black;\n}\n.mat-mdc-checkbox.mat-warn {\n --mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, 0.38);\n --mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, 0.38);\n --mdc-checkbox-selected-checkmark-color: white;\n --mdc-checkbox-selected-focus-icon-color: #fa896b;\n --mdc-checkbox-selected-hover-icon-color: #fa896b;\n --mdc-checkbox-selected-icon-color: #fa896b;\n --mdc-checkbox-selected-pressed-icon-color: #fa896b;\n --mdc-checkbox-unselected-focus-icon-color: #212121;\n --mdc-checkbox-unselected-hover-icon-color: #212121;\n --mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, 0.54);\n --mdc-checkbox-selected-focus-state-layer-color: #fa896b;\n --mdc-checkbox-selected-hover-state-layer-color: #fa896b;\n --mdc-checkbox-selected-pressed-state-layer-color: #fa896b;\n --mdc-checkbox-unselected-focus-state-layer-color: black;\n --mdc-checkbox-unselected-hover-state-layer-color: black;\n --mdc-checkbox-unselected-pressed-state-layer-color: black;\n}\n\nhtml {\n --mdc-checkbox-state-layer-size: 40px;\n --mat-checkbox-touch-target-display: block;\n}\n\nhtml {\n --mat-checkbox-label-text-font: Plus Jakarta Sans;\n --mat-checkbox-label-text-line-height: 22px;\n --mat-checkbox-label-text-size: 16px;\n --mat-checkbox-label-text-tracking: normal;\n --mat-checkbox-label-text-weight: 400;\n}\n\nhtml {\n --mdc-text-button-container-shape: 4px;\n --mdc-text-button-keep-touch-target: false;\n --mdc-filled-button-container-shape: 4px;\n --mdc-filled-button-keep-touch-target: false;\n --mdc-protected-button-container-shape: 4px;\n --mdc-protected-button-container-elevation-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\n --mdc-protected-button-disabled-container-elevation-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\n --mdc-protected-button-focus-container-elevation-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\n --mdc-protected-button-hover-container-elevation-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\n --mdc-protected-button-pressed-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);\n --mdc-outlined-button-keep-touch-target: false;\n --mdc-outlined-button-outline-width: 1px;\n --mdc-outlined-button-container-shape: 4px;\n --mat-text-button-horizontal-padding: 8px;\n --mat-text-button-with-icon-horizontal-padding: 8px;\n --mat-text-button-icon-spacing: 8px;\n --mat-text-button-icon-offset: 0;\n --mat-filled-button-horizontal-padding: 16px;\n --mat-filled-button-icon-spacing: 8px;\n --mat-filled-button-icon-offset: -4px;\n --mat-protected-button-horizontal-padding: 16px;\n --mat-protected-button-icon-spacing: 8px;\n --mat-protected-button-icon-offset: -4px;\n --mat-outlined-button-horizontal-padding: 15px;\n --mat-outlined-button-icon-spacing: 8px;\n --mat-outlined-button-icon-offset: -4px;\n}\n\nhtml {\n --mdc-text-button-label-text-color: black;\n --mdc-text-button-disabled-label-text-color: rgba(0, 0, 0, 0.38);\n --mat-text-button-state-layer-color: black;\n --mat-text-button-disabled-state-layer-color: black;\n --mat-text-button-ripple-color: rgba(0, 0, 0, 0.1);\n --mat-text-button-hover-state-layer-opacity: 0.04;\n --mat-text-button-focus-state-layer-opacity: 0.12;\n --mat-text-button-pressed-state-layer-opacity: 0.12;\n --mdc-filled-button-container-color: white;\n --mdc-filled-button-label-text-color: black;\n --mdc-filled-button-disabled-container-color: rgba(0, 0, 0, 0.12);\n --mdc-filled-button-disabled-label-text-color: rgba(0, 0, 0, 0.38);\n --mat-filled-button-state-layer-color: black;\n --mat-filled-button-disabled-state-layer-color: black;\n --mat-filled-button-ripple-color: rgba(0, 0, 0, 0.1);\n --mat-filled-button-hover-state-layer-opacity: 0.04;\n --mat-filled-button-focus-state-layer-opacity: 0.12;\n --mat-filled-button-pressed-state-layer-opacity: 0.12;\n --mdc-protected-button-container-color: white;\n --mdc-protected-button-label-text-color: black;\n --mdc-protected-button-disabled-container-color: rgba(0, 0, 0, 0.12);\n --mdc-protected-button-disabled-label-text-color: rgba(0, 0, 0, 0.38);\n --mat-protected-button-state-layer-color: black;\n --mat-protected-button-disabled-state-layer-color: black;\n --mat-protected-button-ripple-color: rgba(0, 0, 0, 0.1);\n --mat-protected-button-hover-state-layer-opacity: 0.04;\n --mat-protected-button-focus-state-layer-opacity: 0.12;\n --mat-protected-button-pressed-state-layer-opacity: 0.12;\n --mdc-outlined-button-disabled-outline-color: rgba(0, 0, 0, 0.12);\n --mdc-outlined-button-disabled-label-text-color: rgba(0, 0, 0, 0.38);\n --mdc-outlined-button-label-text-color: black;\n --mdc-outlined-button-outline-color: rgba(0, 0, 0, 0.12);\n --mat-outlined-button-state-layer-color: black;\n --mat-outlined-button-disabled-state-layer-color: black;\n --mat-outlined-button-ripple-color: rgba(0, 0, 0, 0.1);\n --mat-outlined-button-hover-state-layer-opacity: 0.04;\n --mat-outlined-button-focus-state-layer-opacity: 0.12;\n --mat-outlined-button-pressed-state-layer-opacity: 0.12;\n}\n\n.mat-mdc-button.mat-primary {\n --mdc-text-button-label-text-color: #5d87ff;\n --mat-text-button-state-layer-color: #5d87ff;\n --mat-text-button-ripple-color: rgba(93, 135, 255, 0.1);\n}\n.mat-mdc-button.mat-accent {\n --mdc-text-button-label-text-color: #44b7f7;\n --mat-text-button-state-layer-color: #44b7f7;\n --mat-text-button-ripple-color: rgba(68, 183, 247, 0.1);\n}\n.mat-mdc-button.mat-warn {\n --mdc-text-button-label-text-color: #fa896b;\n --mat-text-button-state-layer-color: #fa896b;\n --mat-text-button-ripple-color: rgba(250, 137, 107, 0.1);\n}\n\n.mat-mdc-unelevated-button.mat-primary {\n --mdc-filled-button-container-color: #5d87ff;\n --mdc-filled-button-label-text-color: white;\n --mat-filled-button-state-layer-color: white;\n --mat-filled-button-ripple-color: rgba(255, 255, 255, 0.1);\n}\n.mat-mdc-unelevated-button.mat-accent {\n --mdc-filled-button-container-color: #44b7f7;\n --mdc-filled-button-label-text-color: white;\n --mat-filled-button-state-layer-color: white;\n --mat-filled-button-ripple-color: rgba(255, 255, 255, 0.1);\n}\n.mat-mdc-unelevated-button.mat-warn {\n --mdc-filled-button-container-color: #fa896b;\n --mdc-filled-button-label-text-color: white;\n --mat-filled-button-state-layer-color: white;\n --mat-filled-button-ripple-color: rgba(255, 255, 255, 0.1);\n}\n\n.mat-mdc-raised-button.mat-primary {\n --mdc-protected-button-container-color: #5d87ff;\n --mdc-protected-button-label-text-color: white;\n --mat-protected-button-state-layer-color: white;\n --mat-protected-button-ripple-color: rgba(255, 255, 255, 0.1);\n}\n.mat-mdc-raised-button.mat-accent {\n --mdc-protected-button-container-color: #44b7f7;\n --mdc-protected-button-label-text-color: white;\n --mat-protected-button-state-layer-color: white;\n --mat-protected-button-ripple-color: rgba(255, 255, 255, 0.1);\n}\n.mat-mdc-raised-button.mat-warn {\n --mdc-protected-button-container-color: #fa896b;\n --mdc-protected-button-label-text-color: white;\n --mat-protected-button-state-layer-color: white;\n --mat-protected-button-ripple-color: rgba(255, 255, 255, 0.1);\n}\n\n.mat-mdc-outlined-button.mat-primary {\n --mdc-outlined-button-label-text-color: #5d87ff;\n --mdc-outlined-button-outline-color: rgba(0, 0, 0, 0.12);\n --mat-outlined-button-state-layer-color: #5d87ff;\n --mat-outlined-button-ripple-color: rgba(93, 135, 255, 0.1);\n}\n.mat-mdc-outlined-button.mat-accent {\n --mdc-outlined-button-label-text-color: #44b7f7;\n --mdc-outlined-button-outline-color: rgba(0, 0, 0, 0.12);\n --mat-outlined-button-state-layer-color: #44b7f7;\n --mat-outlined-button-ripple-color: rgba(68, 183, 247, 0.1);\n}\n.mat-mdc-outlined-button.mat-warn {\n --mdc-outlined-button-label-text-color: #fa896b;\n --mdc-outlined-button-outline-color: rgba(0, 0, 0, 0.12);\n --mat-outlined-button-state-layer-color: #fa896b;\n --mat-outlined-button-ripple-color: rgba(250, 137, 107, 0.1);\n}\n\nhtml {\n --mdc-text-button-container-height: 36px;\n --mdc-filled-button-container-height: 36px;\n --mdc-protected-button-container-height: 36px;\n --mdc-outlined-button-container-height: 36px;\n --mat-text-button-touch-target-display: block;\n --mat-filled-button-touch-target-display: block;\n --mat-protected-button-touch-target-display: block;\n --mat-outlined-button-touch-target-display: block;\n}\n\nhtml {\n --mdc-text-button-label-text-font: Plus Jakarta Sans;\n --mdc-text-button-label-text-size: 14px;\n --mdc-text-button-label-text-tracking: normal;\n --mdc-text-button-label-text-weight: 400;\n --mdc-text-button-label-text-transform: none;\n --mdc-filled-button-label-text-font: Plus Jakarta Sans;\n --mdc-filled-button-label-text-size: 14px;\n --mdc-filled-button-label-text-tracking: normal;\n --mdc-filled-button-label-text-weight: 400;\n --mdc-filled-button-label-text-transform: none;\n --mdc-protected-button-label-text-font: Plus Jakarta Sans;\n --mdc-protected-button-label-text-size: 14px;\n --mdc-protected-button-label-text-tracking: normal;\n --mdc-protected-button-label-text-weight: 400;\n --mdc-protected-button-label-text-transform: none;\n --mdc-outlined-button-label-text-font: Plus Jakarta Sans;\n --mdc-outlined-button-label-text-size: 14px;\n --mdc-outlined-button-label-text-tracking: normal;\n --mdc-outlined-button-label-text-weight: 400;\n --mdc-outlined-button-label-text-transform: none;\n}\n\nhtml {\n --mdc-icon-button-icon-size: 24px;\n}\n\nhtml {\n --mdc-icon-button-icon-color: inherit;\n --mdc-icon-button-disabled-icon-color: rgba(0, 0, 0, 0.38);\n --mat-icon-button-state-layer-color: black;\n --mat-icon-button-disabled-state-layer-color: black;\n --mat-icon-button-ripple-color: rgba(0, 0, 0, 0.1);\n --mat-icon-button-hover-state-layer-opacity: 0.04;\n --mat-icon-button-focus-state-layer-opacity: 0.12;\n --mat-icon-button-pressed-state-layer-opacity: 0.12;\n}\nhtml .mat-mdc-icon-button.mat-primary {\n --mdc-icon-button-icon-color: #5d87ff;\n --mat-icon-button-state-layer-color: #5d87ff;\n --mat-icon-button-ripple-color: rgba(93, 135, 255, 0.1);\n}\nhtml .mat-mdc-icon-button.mat-accent {\n --mdc-icon-button-icon-color: #44b7f7;\n --mat-icon-button-state-layer-color: #44b7f7;\n --mat-icon-button-ripple-color: rgba(68, 183, 247, 0.1);\n}\nhtml .mat-mdc-icon-button.mat-warn {\n --mdc-icon-button-icon-color: #fa896b;\n --mat-icon-button-state-layer-color: #fa896b;\n --mat-icon-button-ripple-color: rgba(250, 137, 107, 0.1);\n}\n\nhtml {\n --mat-icon-button-touch-target-display: block;\n}\n\n.mat-mdc-icon-button.mat-mdc-button-base {\n --mdc-icon-button-state-layer-size: 48px;\n width: var(--mdc-icon-button-state-layer-size);\n height: var(--mdc-icon-button-state-layer-size);\n padding: 12px;\n}\n\nhtml {\n --mdc-fab-container-shape: 50%;\n --mdc-fab-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);\n --mdc-fab-focus-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);\n --mdc-fab-hover-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);\n --mdc-fab-pressed-container-elevation-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12);\n --mdc-fab-small-container-shape: 50%;\n --mdc-fab-small-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);\n --mdc-fab-small-focus-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);\n --mdc-fab-small-hover-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);\n --mdc-fab-small-pressed-container-elevation-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12);\n --mdc-extended-fab-container-height: 48px;\n --mdc-extended-fab-container-shape: 24px;\n --mdc-extended-fab-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);\n --mdc-extended-fab-focus-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);\n --mdc-extended-fab-hover-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);\n --mdc-extended-fab-pressed-container-elevation-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12);\n}\n\nhtml {\n --mdc-fab-container-color: white;\n --mat-fab-foreground-color: black;\n --mat-fab-state-layer-color: black;\n --mat-fab-disabled-state-layer-color: black;\n --mat-fab-ripple-color: rgba(0, 0, 0, 0.1);\n --mat-fab-hover-state-layer-opacity: 0.04;\n --mat-fab-focus-state-layer-opacity: 0.12;\n --mat-fab-pressed-state-layer-opacity: 0.12;\n --mat-fab-disabled-state-container-color: rgba(0, 0, 0, 0.12);\n --mat-fab-disabled-state-foreground-color: rgba(0, 0, 0, 0.38);\n --mdc-fab-small-container-color: white;\n --mat-fab-small-foreground-color: black;\n --mat-fab-small-state-layer-color: black;\n --mat-fab-small-disabled-state-layer-color: black;\n --mat-fab-small-ripple-color: rgba(0, 0, 0, 0.1);\n --mat-fab-small-hover-state-layer-opacity: 0.04;\n --mat-fab-small-focus-state-layer-opacity: 0.12;\n --mat-fab-small-pressed-state-layer-opacity: 0.12;\n --mat-fab-small-disabled-state-container-color: rgba(0, 0, 0, 0.12);\n --mat-fab-small-disabled-state-foreground-color: rgba(0, 0, 0, 0.38);\n}\nhtml .mat-mdc-fab.mat-primary {\n --mdc-fab-container-color: #5d87ff;\n --mat-fab-foreground-color: white;\n --mat-fab-state-layer-color: white;\n --mat-fab-ripple-color: rgba(255, 255, 255, 0.1);\n}\nhtml .mat-mdc-fab.mat-accent {\n --mdc-fab-container-color: #44b7f7;\n --mat-fab-foreground-color: white;\n --mat-fab-state-layer-color: white;\n --mat-fab-ripple-color: rgba(255, 255, 255, 0.1);\n}\nhtml .mat-mdc-fab.mat-warn {\n --mdc-fab-container-color: #fa896b;\n --mat-fab-foreground-color: white;\n --mat-fab-state-layer-color: white;\n --mat-fab-ripple-color: rgba(255, 255, 255, 0.1);\n}\nhtml .mat-mdc-mini-fab.mat-primary {\n --mdc-fab-small-container-color: #5d87ff;\n --mat-fab-small-foreground-color: white;\n --mat-fab-small-state-layer-color: white;\n --mat-fab-small-ripple-color: rgba(255, 255, 255, 0.1);\n}\nhtml .mat-mdc-mini-fab.mat-accent {\n --mdc-fab-small-container-color: #44b7f7;\n --mat-fab-small-foreground-color: white;\n --mat-fab-small-state-layer-color: white;\n --mat-fab-small-ripple-color: rgba(255, 255, 255, 0.1);\n}\nhtml .mat-mdc-mini-fab.mat-warn {\n --mdc-fab-small-container-color: #fa896b;\n --mat-fab-small-foreground-color: white;\n --mat-fab-small-state-layer-color: white;\n --mat-fab-small-ripple-color: rgba(255, 255, 255, 0.1);\n}\n\nhtml {\n --mat-fab-touch-target-display: block;\n --mat-fab-small-touch-target-display: block;\n}\n\nhtml {\n --mdc-extended-fab-label-text-font: Plus Jakarta Sans;\n --mdc-extended-fab-label-text-size: 14px;\n --mdc-extended-fab-label-text-tracking: normal;\n --mdc-extended-fab-label-text-weight: 400;\n}\n\nhtml {\n --mdc-snackbar-container-shape: 4px;\n}\n\nhtml {\n --mdc-snackbar-container-color: #333333;\n --mdc-snackbar-supporting-text-color: rgba(255, 255, 255, 0.87);\n --mat-snack-bar-button-color: #44b7f7;\n}\n\nhtml {\n --mdc-snackbar-supporting-text-font: Plus Jakarta Sans;\n --mdc-snackbar-supporting-text-line-height: 22px;\n --mdc-snackbar-supporting-text-size: 16px;\n --mdc-snackbar-supporting-text-weight: 400;\n}\n\nhtml {\n --mat-table-row-item-outline-width: 1px;\n}\n\nhtml {\n --mat-table-background-color: white;\n --mat-table-header-headline-color: rgba(0, 0, 0, 0.87);\n --mat-table-row-item-label-text-color: rgba(0, 0, 0, 0.87);\n --mat-table-row-item-outline-color: rgba(0, 0, 0, 0.12);\n}\n\nhtml {\n --mat-table-header-container-height: 56px;\n --mat-table-footer-container-height: 52px;\n --mat-table-row-item-container-height: 52px;\n}\n\nhtml {\n --mat-table-header-headline-font: Plus Jakarta Sans;\n --mat-table-header-headline-line-height: 14px;\n --mat-table-header-headline-size: 14px;\n --mat-table-header-headline-weight: 400;\n --mat-table-header-headline-tracking: normal;\n --mat-table-row-item-label-text-font: Plus Jakarta Sans;\n --mat-table-row-item-label-text-line-height: 22px;\n --mat-table-row-item-label-text-size: 16px;\n --mat-table-row-item-label-text-weight: 400;\n --mat-table-row-item-label-text-tracking: normal;\n --mat-table-footer-supporting-text-font: Plus Jakarta Sans;\n --mat-table-footer-supporting-text-line-height: 22px;\n --mat-table-footer-supporting-text-size: 16px;\n --mat-table-footer-supporting-text-weight: 400;\n --mat-table-footer-supporting-text-tracking: normal;\n}\n\nhtml {\n --mdc-circular-progress-active-indicator-width: 4px;\n --mdc-circular-progress-size: 48px;\n}\n\nhtml {\n --mdc-circular-progress-active-indicator-color: #5d87ff;\n}\nhtml .mat-accent {\n --mdc-circular-progress-active-indicator-color: #44b7f7;\n}\nhtml .mat-warn {\n --mdc-circular-progress-active-indicator-color: #fa896b;\n}\n\nhtml {\n --mat-badge-container-shape: 50%;\n --mat-badge-container-size: unset;\n --mat-badge-small-size-container-size: unset;\n --mat-badge-large-size-container-size: unset;\n --mat-badge-legacy-container-size: 22px;\n --mat-badge-legacy-small-size-container-size: 16px;\n --mat-badge-legacy-large-size-container-size: 28px;\n --mat-badge-container-offset: -11px 0;\n --mat-badge-small-size-container-offset: -8px 0;\n --mat-badge-large-size-container-offset: -14px 0;\n --mat-badge-container-overlap-offset: -11px;\n --mat-badge-small-size-container-overlap-offset: -8px;\n --mat-badge-large-size-container-overlap-offset: -14px;\n --mat-badge-container-padding: 0;\n --mat-badge-small-size-container-padding: 0;\n --mat-badge-large-size-container-padding: 0;\n}\n\nhtml {\n --mat-badge-background-color: #5d87ff;\n --mat-badge-text-color: white;\n --mat-badge-disabled-state-background-color: #b9b9b9;\n --mat-badge-disabled-state-text-color: rgba(0, 0, 0, 0.38);\n}\n\n.mat-badge-accent {\n --mat-badge-background-color: #44b7f7;\n --mat-badge-text-color: white;\n}\n\n.mat-badge-warn {\n --mat-badge-background-color: #fa896b;\n --mat-badge-text-color: white;\n}\n\nhtml {\n --mat-badge-text-font: Plus Jakarta Sans;\n --mat-badge-line-height: 22px;\n --mat-badge-text-size: 12px;\n --mat-badge-text-weight: 600;\n --mat-badge-small-size-text-size: 9px;\n --mat-badge-small-size-line-height: 16px;\n --mat-badge-large-size-text-size: 24px;\n --mat-badge-large-size-line-height: 28px;\n}\n\nhtml {\n --mat-bottom-sheet-container-shape: 4px;\n}\n\nhtml {\n --mat-bottom-sheet-container-text-color: rgba(0, 0, 0, 0.87);\n --mat-bottom-sheet-container-background-color: white;\n}\n\nhtml {\n --mat-bottom-sheet-container-text-font: Plus Jakarta Sans;\n --mat-bottom-sheet-container-text-line-height: 22px;\n --mat-bottom-sheet-container-text-size: 16px;\n --mat-bottom-sheet-container-text-tracking: normal;\n --mat-bottom-sheet-container-text-weight: 400;\n}\n\nhtml {\n --mat-legacy-button-toggle-height: 36px;\n --mat-legacy-button-toggle-shape: 2px;\n --mat-legacy-button-toggle-focus-state-layer-opacity: 1;\n --mat-standard-button-toggle-shape: 4px;\n --mat-standard-button-toggle-hover-state-layer-opacity: 0.04;\n --mat-standard-button-toggle-focus-state-layer-opacity: 0.12;\n}\n\nhtml {\n --mat-legacy-button-toggle-text-color: rgba(0, 0, 0, 0.38);\n --mat-legacy-button-toggle-state-layer-color: rgba(0, 0, 0, 0.12);\n --mat-legacy-button-toggle-selected-state-text-color: rgba(0, 0, 0, 0.54);\n --mat-legacy-button-toggle-selected-state-background-color: #e0e0e0;\n --mat-legacy-button-toggle-disabled-state-text-color: rgba(0, 0, 0, 0.26);\n --mat-legacy-button-toggle-disabled-state-background-color: #eeeeee;\n --mat-legacy-button-toggle-disabled-selected-state-background-color: #bdbdbd;\n --mat-standard-button-toggle-text-color: rgba(0, 0, 0, 0.87);\n --mat-standard-button-toggle-background-color: white;\n --mat-standard-button-toggle-state-layer-color: black;\n --mat-standard-button-toggle-selected-state-background-color: #e0e0e0;\n --mat-standard-button-toggle-selected-state-text-color: rgba(0, 0, 0, 0.87);\n --mat-standard-button-toggle-disabled-state-text-color: rgba(0, 0, 0, 0.26);\n --mat-standard-button-toggle-disabled-state-background-color: white;\n --mat-standard-button-toggle-disabled-selected-state-text-color: rgba(0, 0, 0, 0.87);\n --mat-standard-button-toggle-disabled-selected-state-background-color: #bdbdbd;\n --mat-standard-button-toggle-divider-color: #e0e0e0;\n}\n\nhtml {\n --mat-standard-button-toggle-height: 48px;\n}\n\nhtml {\n --mat-legacy-button-toggle-label-text-font: Plus Jakarta Sans;\n --mat-legacy-button-toggle-label-text-line-height: 20px;\n --mat-legacy-button-toggle-label-text-size: 14px;\n --mat-legacy-button-toggle-label-text-tracking: normal;\n --mat-legacy-button-toggle-label-text-weight: 400;\n --mat-standard-button-toggle-label-text-font: Plus Jakarta Sans;\n --mat-standard-button-toggle-label-text-line-height: 20px;\n --mat-standard-button-toggle-label-text-size: 14px;\n --mat-standard-button-toggle-label-text-tracking: normal;\n --mat-standard-button-toggle-label-text-weight: 400;\n}\n\nhtml {\n --mat-datepicker-calendar-container-shape: 4px;\n --mat-datepicker-calendar-container-touch-shape: 4px;\n --mat-datepicker-calendar-container-elevation-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\n --mat-datepicker-calendar-container-touch-elevation-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);\n}\n\nhtml {\n --mat-datepicker-calendar-date-selected-state-text-color: white;\n --mat-datepicker-calendar-date-selected-state-background-color: #5d87ff;\n --mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(93, 135, 255, 0.4);\n --mat-datepicker-calendar-date-today-selected-state-outline-color: white;\n --mat-datepicker-calendar-date-focus-state-background-color: rgba(93, 135, 255, 0.3);\n --mat-datepicker-calendar-date-hover-state-background-color: rgba(93, 135, 255, 0.3);\n --mat-datepicker-toggle-active-state-icon-color: #5d87ff;\n --mat-datepicker-calendar-date-in-range-state-background-color: rgba(93, 135, 255, 0.2);\n --mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, 0.2);\n --mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;\n --mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: #46a35e;\n --mat-datepicker-toggle-icon-color: rgba(0, 0, 0, 0.54);\n --mat-datepicker-calendar-body-label-text-color: rgba(0, 0, 0, 0.54);\n --mat-datepicker-calendar-period-button-text-color: black;\n --mat-datepicker-calendar-period-button-icon-color: rgba(0, 0, 0, 0.54);\n --mat-datepicker-calendar-navigation-button-icon-color: rgba(0, 0, 0, 0.54);\n --mat-datepicker-calendar-header-divider-color: rgba(0, 0, 0, 0.12);\n --mat-datepicker-calendar-header-text-color: rgba(0, 0, 0, 0.54);\n --mat-datepicker-calendar-date-today-outline-color: rgba(0, 0, 0, 0.38);\n --mat-datepicker-calendar-date-today-disabled-state-outline-color: rgba(0, 0, 0, 0.18);\n --mat-datepicker-calendar-date-text-color: rgba(0, 0, 0, 0.87);\n --mat-datepicker-calendar-date-outline-color: transparent;\n --mat-datepicker-calendar-date-disabled-state-text-color: rgba(0, 0, 0, 0.38);\n --mat-datepicker-calendar-date-preview-state-outline-color: rgba(0, 0, 0, 0.24);\n --mat-datepicker-range-input-separator-color: rgba(0, 0, 0, 0.87);\n --mat-datepicker-range-input-disabled-state-separator-color: rgba(0, 0, 0, 0.38);\n --mat-datepicker-range-input-disabled-state-text-color: rgba(0, 0, 0, 0.38);\n --mat-datepicker-calendar-container-background-color: white;\n --mat-datepicker-calendar-container-text-color: rgba(0, 0, 0, 0.87);\n}\n\n.mat-datepicker-content.mat-accent {\n --mat-datepicker-calendar-date-selected-state-text-color: white;\n --mat-datepicker-calendar-date-selected-state-background-color: #44b7f7;\n --mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(68, 183, 247, 0.4);\n --mat-datepicker-calendar-date-today-selected-state-outline-color: white;\n --mat-datepicker-calendar-date-focus-state-background-color: rgba(68, 183, 247, 0.3);\n --mat-datepicker-calendar-date-hover-state-background-color: rgba(68, 183, 247, 0.3);\n --mat-datepicker-calendar-date-in-range-state-background-color: rgba(68, 183, 247, 0.2);\n --mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, 0.2);\n --mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;\n --mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: #46a35e;\n}\n.mat-datepicker-content.mat-warn {\n --mat-datepicker-calendar-date-selected-state-text-color: white;\n --mat-datepicker-calendar-date-selected-state-background-color: #fa896b;\n --mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(250, 137, 107, 0.4);\n --mat-datepicker-calendar-date-today-selected-state-outline-color: white;\n --mat-datepicker-calendar-date-focus-state-background-color: rgba(250, 137, 107, 0.3);\n --mat-datepicker-calendar-date-hover-state-background-color: rgba(250, 137, 107, 0.3);\n --mat-datepicker-calendar-date-in-range-state-background-color: rgba(250, 137, 107, 0.2);\n --mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, 0.2);\n --mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;\n --mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: #46a35e;\n}\n\n.mat-datepicker-toggle-active.mat-accent {\n --mat-datepicker-toggle-active-state-icon-color: #44b7f7;\n}\n.mat-datepicker-toggle-active.mat-warn {\n --mat-datepicker-toggle-active-state-icon-color: #fa896b;\n}\n\n.mat-calendar-controls {\n --mat-icon-button-touch-target-display: none;\n}\n.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base {\n --mdc-icon-button-state-layer-size: 40px;\n width: var(--mdc-icon-button-state-layer-size);\n height: var(--mdc-icon-button-state-layer-size);\n padding: 8px;\n}\n\nhtml {\n --mat-datepicker-calendar-text-font: Plus Jakarta Sans;\n --mat-datepicker-calendar-text-size: 13px;\n --mat-datepicker-calendar-body-label-text-size: 14px;\n --mat-datepicker-calendar-body-label-text-weight: 400;\n --mat-datepicker-calendar-period-button-text-size: 14px;\n --mat-datepicker-calendar-period-button-text-weight: 400;\n --mat-datepicker-calendar-header-text-size: 11px;\n --mat-datepicker-calendar-header-text-weight: 400;\n}\n\nhtml {\n --mat-divider-width: 1px;\n}\n\nhtml {\n --mat-divider-color: rgba(0, 0, 0, 0.12);\n}\n\nhtml {\n --mat-expansion-container-shape: 4px;\n --mat-expansion-legacy-header-indicator-display: inline-block;\n --mat-expansion-header-indicator-display: none;\n}\n\nhtml {\n --mat-expansion-container-background-color: white;\n --mat-expansion-container-text-color: rgba(0, 0, 0, 0.87);\n --mat-expansion-actions-divider-color: rgba(0, 0, 0, 0.12);\n --mat-expansion-header-hover-state-layer-color: rgba(0, 0, 0, 0.04);\n --mat-expansion-header-focus-state-layer-color: rgba(0, 0, 0, 0.04);\n --mat-expansion-header-disabled-state-text-color: rgba(0, 0, 0, 0.26);\n --mat-expansion-header-text-color: rgba(0, 0, 0, 0.87);\n --mat-expansion-header-description-color: rgba(0, 0, 0, 0.54);\n --mat-expansion-header-indicator-color: rgba(0, 0, 0, 0.54);\n}\n\nhtml {\n --mat-expansion-header-collapsed-state-height: 48px;\n --mat-expansion-header-expanded-state-height: 64px;\n}\n\nhtml {\n --mat-expansion-header-text-font: Plus Jakarta Sans;\n --mat-expansion-header-text-size: 14px;\n --mat-expansion-header-text-weight: 400;\n --mat-expansion-header-text-line-height: inherit;\n --mat-expansion-header-text-tracking: inherit;\n --mat-expansion-container-text-font: Plus Jakarta Sans;\n --mat-expansion-container-text-line-height: 22px;\n --mat-expansion-container-text-size: 16px;\n --mat-expansion-container-text-tracking: normal;\n --mat-expansion-container-text-weight: 400;\n}\n\nhtml {\n --mat-grid-list-tile-header-primary-text-size: 16px;\n --mat-grid-list-tile-header-secondary-text-size: 12px;\n --mat-grid-list-tile-footer-primary-text-size: 16px;\n --mat-grid-list-tile-footer-secondary-text-size: 12px;\n}\n\nhtml {\n --mat-icon-color: inherit;\n}\n\n.mat-icon.mat-primary {\n --mat-icon-color: #5d87ff;\n}\n.mat-icon.mat-accent {\n --mat-icon-color: #44b7f7;\n}\n.mat-icon.mat-warn {\n --mat-icon-color: #fa896b;\n}\n\nhtml {\n --mat-sidenav-container-shape: 0;\n --mat-sidenav-container-elevation-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);\n --mat-sidenav-container-width: auto;\n}\n\nhtml {\n --mat-sidenav-container-divider-color: rgba(0, 0, 0, 0.12);\n --mat-sidenav-container-background-color: white;\n --mat-sidenav-container-text-color: rgba(0, 0, 0, 0.87);\n --mat-sidenav-content-background-color: #fafafa;\n --mat-sidenav-content-text-color: rgba(0, 0, 0, 0.87);\n --mat-sidenav-scrim-color: rgba(0, 0, 0, 0.6);\n}\n\nhtml {\n --mat-stepper-header-icon-foreground-color: white;\n --mat-stepper-header-selected-state-icon-background-color: #5d87ff;\n --mat-stepper-header-selected-state-icon-foreground-color: white;\n --mat-stepper-header-done-state-icon-background-color: #5d87ff;\n --mat-stepper-header-done-state-icon-foreground-color: white;\n --mat-stepper-header-edit-state-icon-background-color: #5d87ff;\n --mat-stepper-header-edit-state-icon-foreground-color: white;\n --mat-stepper-container-color: white;\n --mat-stepper-line-color: rgba(0, 0, 0, 0.12);\n --mat-stepper-header-hover-state-layer-color: rgba(0, 0, 0, 0.04);\n --mat-stepper-header-focus-state-layer-color: rgba(0, 0, 0, 0.04);\n --mat-stepper-header-label-text-color: rgba(0, 0, 0, 0.54);\n --mat-stepper-header-optional-label-text-color: rgba(0, 0, 0, 0.54);\n --mat-stepper-header-selected-state-label-text-color: rgba(0, 0, 0, 0.87);\n --mat-stepper-header-error-state-label-text-color: #fa896b;\n --mat-stepper-header-icon-background-color: rgba(0, 0, 0, 0.54);\n --mat-stepper-header-error-state-icon-foreground-color: #fa896b;\n --mat-stepper-header-error-state-icon-background-color: transparent;\n}\nhtml .mat-step-header.mat-accent {\n --mat-stepper-header-icon-foreground-color: white;\n --mat-stepper-header-selected-state-icon-background-color: #44b7f7;\n --mat-stepper-header-selected-state-icon-foreground-color: white;\n --mat-stepper-header-done-state-icon-background-color: #44b7f7;\n --mat-stepper-header-done-state-icon-foreground-color: white;\n --mat-stepper-header-edit-state-icon-background-color: #44b7f7;\n --mat-stepper-header-edit-state-icon-foreground-color: white;\n}\nhtml .mat-step-header.mat-warn {\n --mat-stepper-header-icon-foreground-color: white;\n --mat-stepper-header-selected-state-icon-background-color: #fa896b;\n --mat-stepper-header-selected-state-icon-foreground-color: white;\n --mat-stepper-header-done-state-icon-background-color: #fa896b;\n --mat-stepper-header-done-state-icon-foreground-color: white;\n --mat-stepper-header-edit-state-icon-background-color: #fa896b;\n --mat-stepper-header-edit-state-icon-foreground-color: white;\n}\n\nhtml {\n --mat-stepper-header-height: 72px;\n}\n\nhtml {\n --mat-stepper-container-text-font: Plus Jakarta Sans;\n --mat-stepper-header-label-text-font: Plus Jakarta Sans;\n --mat-stepper-header-label-text-size: 16px;\n --mat-stepper-header-label-text-weight: 400;\n --mat-stepper-header-error-state-label-text-size: 14px;\n --mat-stepper-header-selected-state-label-text-size: 14px;\n --mat-stepper-header-selected-state-label-text-weight: 400;\n}\n\nhtml {\n --mat-sort-arrow-color: #757575;\n}\n\nhtml {\n --mat-toolbar-container-background-color: whitesmoke;\n --mat-toolbar-container-text-color: rgba(0, 0, 0, 0.87);\n}\n\n.mat-toolbar.mat-primary {\n --mat-toolbar-container-background-color: #5d87ff;\n --mat-toolbar-container-text-color: white;\n}\n.mat-toolbar.mat-accent {\n --mat-toolbar-container-background-color: #44b7f7;\n --mat-toolbar-container-text-color: white;\n}\n.mat-toolbar.mat-warn {\n --mat-toolbar-container-background-color: #fa896b;\n --mat-toolbar-container-text-color: white;\n}\n\nhtml {\n --mat-toolbar-standard-height: 64px;\n --mat-toolbar-mobile-height: 56px;\n}\n\nhtml {\n --mat-toolbar-title-text-font: Plus Jakarta Sans;\n --mat-toolbar-title-text-line-height: 26px;\n --mat-toolbar-title-text-size: 18px;\n --mat-toolbar-title-text-tracking: normal;\n --mat-toolbar-title-text-weight: 600;\n}\n\nhtml {\n --mat-tree-container-background-color: white;\n --mat-tree-node-text-color: rgba(0, 0, 0, 0.87);\n}\n\nhtml {\n --mat-tree-node-min-height: 48px;\n}\n\nhtml {\n --mat-tree-node-text-font: Plus Jakarta Sans;\n --mat-tree-node-text-size: 16px;\n --mat-tree-node-text-weight: 400;\n}\n\n/*# sourceMappingURL=theme.css.map */\n`;","import { Injectable, Inject } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\nimport themeCss from './theme-css';\n\n@Injectable({ providedIn: 'root' })\nexport class ThemeInjectorService {\n constructor(@Inject(DOCUMENT) private document: Document) {\n this.injectTheme();\n }\n\n private injectTheme(): void {\n const styleElement = this.document.createElement('style');\n styleElement.type = 'text/css';\n styleElement.innerHTML = themeCss;\n this.document.head.appendChild(styleElement);\n }\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CustomSectionComponent } from './formly/custom-section-separator.component';\nimport { FormSectionSeparatorComponent } from './formly/form-section-separator.component';\nimport { FormlyActionComponent } from './formly/formly-action';\nimport { FormlyCheckboxComponent } from './formly/formly-checkbox/formly-checkbox.component';\nimport { FormlyDictionaryDropdownTreeComponent } from './formly/formly-dictionary-dropdown-tree/formly-dictionary-dropdown-tree.component';\nimport { FormlyDownloadDocumentsComponent } from './formly/formly-download-documents/formly-download-documents.component';\nimport { FormlyFieldStepperComponent } from './formly/formly-field-stepper/formly-field-stepper.component';\nimport { FormlyGenerateDocumentsComponent } from './formly/formly-generate-documents/formly-generate-documents.component';\nimport { FormlyFieldIdentificationComponent } from './formly/formly-identification.component';\nimport { FormlyParagraphComponent } from './formly/formly-paragraph/formly-paragraph.component';\nimport { FormlyRadioComponent } from './formly/formly-radio/formly-radio-component';\nimport { RowFillerComponent } from './formly/formly-row-fille';\nimport { FormlyScanIdComponent } from './formly/formly-scan-id/formly-scan-id.component';\nimport { FormlySignComponent } from './formly/formly-sign/formly-sign.component';\nimport { FormlyUploadDocumentsComponent } from './formly/formly-upload-documents/formly-upload-documents.component';\nimport { FormlyValidateContactInfoComponent } from './formly/formly-validate-contact-info/formly-validate-contact-info.component';\nimport { FormlyViewOffersComponent } from './formly/formly-view-offers/formly-view-offers.component';\nimport { CollectorFormComponent } from './origin-form.component';\nimport { OriginFormService } from './origin-form.service';\nimport { PickerComponent } from './others/picker.component';\nimport { ApplicationDataService } from './services/applicationData.service';\nimport { DialogService } from './services/dialog.service';\nimport { LabelService } from './services/labels.service';\nimport { ProxyService } from './services/proxy.service';\nimport { DictionariesTreeComponent } from './shared-components/dictionaries-tree.component';\nimport { GridComponent } from './shared-components/grid.component';\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { SignLibModule } from 'sign-lib';\nimport { FormlyMaterialModule } from '@ngx-formly/material';\nimport { FormlyMatDatepickerModule } from '@ngx-formly/material/datepicker';\nimport { FormlyMatTextAreaModule } from '@ngx-formly/material/textarea';\nimport { TranslateModule } from '@ngx-translate/core';\n// Material Form Controls\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\n// Material Navigation\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatToolbarModule } from '@angular/material/toolbar';\n// Material Layout\nimport { MatCardModule } from '@angular/material/card';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { MatListModule } from '@angular/material/list';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatTreeModule } from '@angular/material/tree';\n// Material Buttons & Indicators\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatNativeDateModule, MatRippleModule } from '@angular/material/core';\n// Material Popups & Modals\nimport { MatBottomSheetModule } from '@angular/material/bottom-sheet';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n// Material Data tables\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatTableModule } from '@angular/material/table';\nimport { NgScrollbarModule } from 'ngx-scrollbar';\nimport { MarkdownModule } from 'ngx-markdown';\nimport { AppTreeviewComponent } from './shared-components/treeview/treeview.component';\nimport {\n HTTP_INTERCEPTORS,\n provideHttpClient,\n withInterceptorsFromDi,\n} from '@angular/common/http';\nimport { OriginFormTokenInterceptor } from './origin-form-token.interceptor';\nimport { DictionaryService } from './services/dictionary.service';\nimport { FormsService } from './services/forms.service';\nimport { OtpService } from './services/otp.service';\nimport {\n defineCustomElements,\n} from '@ekyc_qoobiss/qbs-ect-cmp/dist/loader';\nimport { ThemeInjectorService } from './theme-injector.service';\nimport { RouterModule } from '@angular/router';\n//Enrol card\nimport { FormlyEnrolCardComponent } from './formly/formly-enrol-card/formly-enrol-card.component';\nimport { FormlyViewDocumentsComponent } from './formly/formly-view-documents/formly-view-documents.component';\nimport { PdfViewerModule } from 'ng2-pdf-viewer';\nimport { TranslationService } from './services/translation.service';\nimport { TranslatePipe } from './others/translation.pipe';\nimport { ExternalLinkDirective } from './others/external-link.directive';\nimport { ConfirmationComponent } from './shared-components/confirmation.component';\nimport { FormlyOpenBankingComponent } from './formly/formly-open-banking/formly-open-banking.component';\n\n\n defineCustomElements(window);\n\n @NgModule({\n declarations: [\n TranslatePipe,\n CustomSectionComponent,\n FormSectionSeparatorComponent,\n FormlyActionComponent,\n FormlyCheckboxComponent,\n FormlyDictionaryDropdownTreeComponent,\n FormlyDownloadDocumentsComponent,\n FormlyViewDocumentsComponent,\n FormlyFieldStepperComponent,\n FormlyGenerateDocumentsComponent,\n FormlyFieldIdentificationComponent,\n FormlyParagraphComponent,\n FormlyRadioComponent,\n RowFillerComponent,\n FormlyScanIdComponent,\n FormlySignComponent,\n FormlyUploadDocumentsComponent,\n FormlyValidateContactInfoComponent,\n FormlyViewOffersComponent,\n FormlyOpenBankingComponent,\n PickerComponent,\n \n AppTreeviewComponent,\n DictionariesTreeComponent,\n ConfirmationComponent,\n GridComponent,\n CollectorFormComponent,\n FormlyEnrolCardComponent,\n ExternalLinkDirective\n ],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n NgScrollbarModule,\n SignLibModule,\n PdfViewerModule,\n MarkdownModule.forRoot({\n markedOptions: {\n provide: 'MARKED_OPTIONS',\n useValue: {\n gfm: true,\n breaks: false,\n pedantic: false,\n smartLists: true,\n smartypants: false,\n },\n },\n }),\n RouterModule.forRoot([]),\n TranslateModule,\n \n \n MatInputModule,\n MatFormFieldModule,\n MatAutocompleteModule,\n MatCheckboxModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatFormFieldModule,\n MatInputModule,\n MatRadioModule,\n MatSelectModule,\n MatSliderModule,\n MatSlideToggleModule,\n MatMenuModule,\n MatSidenavModule,\n MatToolbarModule,\n MatCardModule,\n MatDividerModule,\n MatExpansionModule,\n MatGridListModule,\n MatListModule,\n MatStepperModule,\n MatTabsModule,\n MatTreeModule,\n MatButtonModule,\n MatButtonToggleModule,\n MatBadgeModule,\n MatChipsModule,\n MatIconModule,\n MatProgressSpinnerModule,\n MatProgressBarModule,\n MatRippleModule,\n MatBottomSheetModule,\n MatDialogModule,\n MatSnackBarModule,\n MatTooltipModule,\n MatPaginatorModule,\n MatSortModule,\n MatTableModule,\n FormlyModule.forRoot({\n types: [\n { name: 'stepper', component: FormlyFieldStepperComponent },\n { name: 'separator', component: FormSectionSeparatorComponent },\n { name: 'custom-section', component: CustomSectionComponent },\n { name: 'row-filler', component: RowFillerComponent },\n {\n name: 'formly-identification-component',\n component: FormlyFieldIdentificationComponent,\n },\n { name: 'formly-sign-component', component: FormlySignComponent },\n {\n name: 'formly-upload-documents-component',\n component: FormlyUploadDocumentsComponent,\n },\n {\n name: 'formly-download-documents-component',\n component: FormlyDownloadDocumentsComponent,\n },\n {\n name: 'formly-view-documents-component',\n component: FormlyViewDocumentsComponent,\n },\n {\n name: 'formly-generate-documents-component',\n component: FormlyGenerateDocumentsComponent,\n },\n {\n name: 'formly-dictionary-dropdown-tree',\n component: FormlyDictionaryDropdownTreeComponent,\n },\n { name: 'formly-checkbox', component: FormlyCheckboxComponent },\n {\n name: 'formly-paragraph',\n component: FormlyParagraphComponent,\n },\n { name: 'formly-radio', component: FormlyRadioComponent },\n {\n name: 'formly-validate-contact-info',\n component: FormlyValidateContactInfoComponent,\n },\n { name: 'formly-scan-id', component: FormlyScanIdComponent },\n { name: 'formly-action-component', component: FormlyActionComponent },\n { name: 'formly-view-offers', component: FormlyViewOffersComponent },\n {\n name: 'formly-enrol-card-component',\n component: FormlyEnrolCardComponent\n },\n { name: 'formly-open-banking', component: FormlyOpenBankingComponent },\n ],\n }),\n FormlyMaterialModule,\n FormlyMatTextAreaModule,\n FormlyMatDatepickerModule,\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n \n exports: [\n CollectorFormComponent\n ],\n providers: [OriginFormService,\n DictionaryService,\n FormsService,\n OtpService,\n ApplicationDataService,\n DialogService,\n LabelService,\n ProxyService,\n TranslationService,\n TranslatePipe,\n provideHttpClient(withInterceptorsFromDi()),\n {\n provide: HTTP_INTERCEPTORS,\n useClass: OriginFormTokenInterceptor,\n multi: true,\n },\n ]\n })\nexport class OriginFormModule {\n constructor(private themeInjector: ThemeInjectorService) {}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","StepControlType","i1.TranslationService","uuidv4","i1.TranslatePipe","i3","i4","i5.ExternalLinkDirective","catchError","i1.AuthenticationClient","switchMap","i2.OriginFormAuthService","i1.AuthHttpService","i1.ChecklistDatabase","i2.TranslatePipe","i5","i6","i8","i9","i1.DictionaryService","i4.AppTreeviewComponent","i7","i10.DictionariesTreeComponent","i11.TranslatePipe","i3.TranslatePipe","i1.ApplicationDataService","i2.DialogService","i7.TranslatePipe","i1.OriginFormSignalrService","i2.ProxyService","i3.LabelService","i4.ApplicationDataService","i5.LanguageService","i6.OriginFormAuthService","i7.FormsService","i8.ConfigService","i9.TranslationService","i10.OriginFormSignalrHandlerService","i11.ActionStepHandler","i12.ScrollToErrorService","i13","i14","i16","i17","i18","i2.CollectorFormComponent","i3.ScrollToErrorService","i6.TranslatePipe","i1.ProxyService","i2.ExternalLinkDirective","i1.OriginFormAuthService","i1.DialogService","i2.ApplicationDataService","i1.OtpService","i4.TranslatePipe","i5.GridComponent","map","i2.ConfigService","finalize","i1.OpenBankingService","i1.ThemeInjectorService"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}