@piserve-tech/form-submission 1.3.314 → 1.3.316

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 (443) hide show
  1. package/README.md +24 -24
  2. package/ng-package.json +30 -0
  3. package/package.json +33 -46
  4. package/{assets → src/assets}/icons/close-sidebar-mark-icon.svg +3 -3
  5. package/{assets → src/assets}/icons/copy-icon.svg +5 -5
  6. package/{assets → src/assets}/icons/delete-icon.svg +7 -7
  7. package/{assets → src/assets}/icons/delete-no-outline-icon.svg +7 -7
  8. package/src/environment/environment.ts +6 -0
  9. package/src/form-fields/aggregate-function/aggregate-function.component.html +63 -0
  10. package/src/form-fields/aggregate-function/aggregate-function.component.scss +1 -0
  11. package/src/form-fields/aggregate-function/aggregate-function.component.spec.ts +21 -0
  12. package/src/form-fields/aggregate-function/aggregate-function.component.ts +148 -0
  13. package/src/form-fields/check-box-fields/check-box-fields.component.html +81 -0
  14. package/src/form-fields/check-box-fields/check-box-fields.component.scss +28 -0
  15. package/src/form-fields/check-box-fields/check-box-fields.component.spec.ts +21 -0
  16. package/src/form-fields/check-box-fields/check-box-fields.component.ts +538 -0
  17. package/src/form-fields/currency-fields/currency-fields.component.html +85 -0
  18. package/src/form-fields/currency-fields/currency-fields.component.scss +48 -0
  19. package/src/form-fields/currency-fields/currency-fields.component.spec.ts +21 -0
  20. package/src/form-fields/currency-fields/currency-fields.component.ts +589 -0
  21. package/src/form-fields/date-time-fields/date-time-fields.component.html +268 -0
  22. package/src/form-fields/date-time-fields/date-time-fields.component.scss +88 -0
  23. package/src/form-fields/date-time-fields/date-time-fields.component.spec.ts +21 -0
  24. package/src/form-fields/date-time-fields/date-time-fields.component.ts +693 -0
  25. package/src/form-fields/drop-down-fields/drop-down-fields.component.html +77 -0
  26. package/src/form-fields/drop-down-fields/drop-down-fields.component.scss +12 -0
  27. package/src/form-fields/drop-down-fields/drop-down-fields.component.spec.ts +21 -0
  28. package/src/form-fields/drop-down-fields/drop-down-fields.component.ts +698 -0
  29. package/src/form-fields/file-picker-fields/file-picker-fields.component.html +72 -0
  30. package/src/form-fields/file-picker-fields/file-picker-fields.component.scss +33 -0
  31. package/src/form-fields/file-picker-fields/file-picker-fields.component.spec.ts +21 -0
  32. package/src/form-fields/file-picker-fields/file-picker-fields.component.ts +256 -0
  33. package/src/form-fields/form-fields.module.ts +110 -0
  34. package/src/form-fields/hidden-field/hidden-field.component.scss +0 -0
  35. package/src/form-fields/hidden-field/hidden-field.component.spec.ts +21 -0
  36. package/src/form-fields/hidden-field/hidden-field.component.ts +156 -0
  37. package/src/form-fields/iframe-fields/iframe-fields.component.html +31 -0
  38. package/src/form-fields/iframe-fields/iframe-fields.component.scss +0 -0
  39. package/src/form-fields/iframe-fields/iframe-fields.component.spec.ts +21 -0
  40. package/src/form-fields/iframe-fields/iframe-fields.component.ts +225 -0
  41. package/src/form-fields/location-fields/location-fields.component.html +54 -0
  42. package/src/form-fields/location-fields/location-fields.component.scss +22 -0
  43. package/src/form-fields/location-fields/location-fields.component.spec.ts +21 -0
  44. package/src/form-fields/location-fields/location-fields.component.ts +83 -0
  45. package/src/form-fields/mail-fields/mail-fields.component.html +66 -0
  46. package/src/form-fields/mail-fields/mail-fields.component.scss +10 -0
  47. package/src/form-fields/mail-fields/mail-fields.component.spec.ts +21 -0
  48. package/src/form-fields/mail-fields/mail-fields.component.ts +127 -0
  49. package/src/form-fields/mobile-fields/mobile-fields.component.html +97 -0
  50. package/src/form-fields/mobile-fields/mobile-fields.component.scss +52 -0
  51. package/src/form-fields/mobile-fields/mobile-fields.component.spec.ts +21 -0
  52. package/src/form-fields/mobile-fields/mobile-fields.component.ts +310 -0
  53. package/src/form-fields/number-fields/number-fields.component.html +70 -0
  54. package/src/form-fields/number-fields/number-fields.component.scss +17 -0
  55. package/src/form-fields/number-fields/number-fields.component.spec.ts +21 -0
  56. package/src/form-fields/number-fields/number-fields.component.ts +256 -0
  57. package/src/form-fields/password-fields/password-fields.component.html +113 -0
  58. package/src/form-fields/password-fields/password-fields.component.scss +61 -0
  59. package/src/form-fields/password-fields/password-fields.component.spec.ts +21 -0
  60. package/src/form-fields/password-fields/password-fields.component.ts +273 -0
  61. package/src/form-fields/radio-button-fields/radio-button-fields.component.html +82 -0
  62. package/src/form-fields/radio-button-fields/radio-button-fields.component.scss +28 -0
  63. package/src/form-fields/radio-button-fields/radio-button-fields.component.spec.ts +21 -0
  64. package/src/form-fields/radio-button-fields/radio-button-fields.component.ts +391 -0
  65. package/src/form-fields/rich-text-editor-fields/rich-text-editor-fields.component.html +67 -0
  66. package/src/form-fields/rich-text-editor-fields/rich-text-editor-fields.component.scss +23 -0
  67. package/src/form-fields/rich-text-editor-fields/rich-text-editor-fields.component.spec.ts +21 -0
  68. package/src/form-fields/rich-text-editor-fields/rich-text-editor-fields.component.ts +145 -0
  69. package/src/form-fields/section-fields/section-fields.component.html +4 -0
  70. package/src/form-fields/section-fields/section-fields.component.scss +37 -0
  71. package/src/form-fields/section-fields/section-fields.component.spec.ts +21 -0
  72. package/src/form-fields/section-fields/section-fields.component.ts +25 -0
  73. package/src/form-fields/selection-matrix-fields/selection-matrix-fields.component.html +93 -0
  74. package/src/form-fields/selection-matrix-fields/selection-matrix-fields.component.scss +52 -0
  75. package/src/form-fields/selection-matrix-fields/selection-matrix-fields.component.spec.ts +21 -0
  76. package/src/form-fields/selection-matrix-fields/selection-matrix-fields.component.ts +155 -0
  77. package/src/form-fields/signature-fields/signature-fields.component.html +43 -0
  78. package/src/form-fields/signature-fields/signature-fields.component.scss +10 -0
  79. package/src/form-fields/signature-fields/signature-fields.component.spec.ts +21 -0
  80. package/src/form-fields/signature-fields/signature-fields.component.ts +25 -0
  81. package/src/form-fields/slider-fields/slider-fields.component.html +67 -0
  82. package/src/form-fields/slider-fields/slider-fields.component.scss +55 -0
  83. package/src/form-fields/slider-fields/slider-fields.component.spec.ts +21 -0
  84. package/src/form-fields/slider-fields/slider-fields.component.ts +63 -0
  85. package/src/form-fields/terms-and-condition-fields/terms-and-condition-fields.component.html +52 -0
  86. package/src/form-fields/terms-and-condition-fields/terms-and-condition-fields.component.scss +85 -0
  87. package/src/form-fields/terms-and-condition-fields/terms-and-condition-fields.component.spec.ts +21 -0
  88. package/src/form-fields/terms-and-condition-fields/terms-and-condition-fields.component.ts +62 -0
  89. package/src/form-fields/text-area-fields/text-area-fields.component.html +68 -0
  90. package/src/form-fields/text-area-fields/text-area-fields.component.scss +19 -0
  91. package/src/form-fields/text-area-fields/text-area-fields.component.spec.ts +21 -0
  92. package/src/form-fields/text-area-fields/text-area-fields.component.ts +166 -0
  93. package/src/form-fields/text-fields/text-fields.component.html +67 -0
  94. package/src/form-fields/text-fields/text-fields.component.scss +26 -0
  95. package/src/form-fields/text-fields/text-fields.component.spec.ts +21 -0
  96. package/src/form-fields/text-fields/text-fields.component.ts +248 -0
  97. package/src/form-fields/toggle-switch-fields/toggle-switch-fields.component.html +70 -0
  98. package/src/form-fields/toggle-switch-fields/toggle-switch-fields.component.scss +112 -0
  99. package/src/form-fields/toggle-switch-fields/toggle-switch-fields.component.spec.ts +21 -0
  100. package/src/form-fields/toggle-switch-fields/toggle-switch-fields.component.ts +74 -0
  101. package/src/form-fields/url-fields/url-fields.component.html +109 -0
  102. package/src/form-fields/url-fields/url-fields.component.scss +22 -0
  103. package/src/form-fields/url-fields/url-fields.component.spec.ts +21 -0
  104. package/src/form-fields/url-fields/url-fields.component.ts +123 -0
  105. package/src/form-submission/form-submission.module.ts +40 -0
  106. package/src/form-submission/header/header.component.html +6 -0
  107. package/src/form-submission/header/header.component.scss +26 -0
  108. package/src/form-submission/header/header.component.spec.ts +21 -0
  109. package/src/form-submission/header/header.component.ts +12 -0
  110. package/src/form-submission/navigation-tabs/navigation-tabs.component.html +134 -0
  111. package/src/form-submission/navigation-tabs/navigation-tabs.component.scss +200 -0
  112. package/src/form-submission/navigation-tabs/navigation-tabs.component.spec.ts +21 -0
  113. package/src/form-submission/navigation-tabs/navigation-tabs.component.ts +134 -0
  114. package/src/form-submission/next-prev-navigation/next-prev-navigation.component.html +207 -0
  115. package/src/form-submission/next-prev-navigation/next-prev-navigation.component.scss +208 -0
  116. package/src/form-submission/next-prev-navigation/next-prev-navigation.component.spec.ts +21 -0
  117. package/src/form-submission/next-prev-navigation/next-prev-navigation.component.ts +74 -0
  118. package/src/form-submission/save-as-draft/saveDraftModalComponent .ts +60 -0
  119. package/src/form-submission/save-as-draft/saveDraftModalComponent.html +33 -0
  120. package/src/form-submission/save-as-draft/saveDraftModalComponent.scss +195 -0
  121. package/src/form-submission/submission-container/submission-container.component.html +30 -0
  122. package/src/form-submission/submission-container/submission-container.component.scss +67 -0
  123. package/src/form-submission/submission-container/submission-container.component.spec.ts +21 -0
  124. package/src/form-submission/submission-container/submission-container.component.ts +14 -0
  125. package/src/form-submission/submit-form/submit-form.component.html +76 -0
  126. package/src/form-submission/submit-form/submit-form.component.scss +88 -0
  127. package/src/form-submission/submit-form/submit-form.component.spec.ts +21 -0
  128. package/src/form-submission/submit-form/submit-form.component.ts +1953 -0
  129. package/src/lib/form-submission.component.html +15 -0
  130. package/src/lib/form-submission.component.scss +1 -0
  131. package/src/lib/form-submission.component.ts +120 -0
  132. package/src/lib/form-submission.module.ts +31 -0
  133. package/src/lib/form-submission.service.spec.ts +16 -0
  134. package/src/lib/form-submission.service.ts +9 -0
  135. package/src/models/aggregate.model.ts +4 -0
  136. package/{models/answer.model.d.ts → src/models/answer.model.ts} +25 -23
  137. package/src/models/appearance.model.ts +64 -0
  138. package/{models/attachment.model.d.ts → src/models/attachment.model.ts} +6 -6
  139. package/{models/defaultAnswerEntry.model.d.ts → src/models/defaultAnswerEntry.model.ts} +7 -5
  140. package/{models/defaultAnswersModel.model.d.ts → src/models/defaultAnswersModel.model.ts} +5 -4
  141. package/{models/defaultQuestionAnswer.model.d.ts → src/models/defaultQuestionAnswer.model.ts} +6 -6
  142. package/src/models/elementOptionAPI.model.ts +13 -0
  143. package/src/models/elementOptionAPIData.model.ts +5 -0
  144. package/src/models/elementOptionDB.model.ts +9 -0
  145. package/src/models/elementOptionDBCriteria.model.ts +7 -0
  146. package/{models/emitters.model.d.ts → src/models/emitters.model.ts} +8 -8
  147. package/{models/enum/condition.enum.d.ts → src/models/enum/condition.enum.ts} +2 -2
  148. package/src/models/enum/elementType .enum.ts +22 -0
  149. package/src/models/enum/entityType.enum.ts +10 -0
  150. package/{models/formConfiguration.model.d.ts → src/models/formConfiguration.model.ts} +2 -2
  151. package/{models/formElement.model.d.ts → src/models/formElement.model.ts} +22 -22
  152. package/{models/formElementType.model.d.ts → src/models/formElementType.model.ts} +3 -2
  153. package/{models/grid.model.d.ts → src/models/grid.model.ts} +14 -13
  154. package/{models/hiddenField.model.d.ts → src/models/hiddenField.model.ts} +5 -5
  155. package/{models/iFrameProperties.model.d.ts → src/models/iFrameProperties.model.ts} +13 -13
  156. package/src/models/logic.model.ts +11 -0
  157. package/src/models/multifields.model.ts +12 -0
  158. package/{models/option.model.d.ts → src/models/option.model.ts} +5 -5
  159. package/src/models/page.model.ts +7 -0
  160. package/src/models/publicForm.model.ts +19 -0
  161. package/src/models/question.model.ts +27 -0
  162. package/src/models/questionAnswer.model.ts +8 -0
  163. package/src/models/questionGroup.model.ts +12 -0
  164. package/src/models/response.model.ts +9 -0
  165. package/src/models/result.model.ts +5 -0
  166. package/{models/row.model.d.ts → src/models/row.model.ts} +2 -1
  167. package/src/models/scoring.model.ts +10 -0
  168. package/src/models/section.model.ts +6 -0
  169. package/src/models/subForm.model.ts +25 -0
  170. package/src/models/subformConfiguration.model.ts +4 -0
  171. package/src/models/subformPropery.model.ts +8 -0
  172. package/{models/submission.model.d.ts → src/models/submission.model.ts} +16 -14
  173. package/{models/submissionCopyConfig.mopdel.d.ts → src/models/submissionCopyConfig.mopdel.ts} +4 -4
  174. package/{models/terms&condition.model.d.ts → src/models/terms&condition.model.ts} +1 -1
  175. package/src/models/validation.model.ts +48 -0
  176. package/src/models/whenClause.model.ts +7 -0
  177. package/{models/whenClauseCondition.model.d.ts → src/models/whenClauseCondition.model.ts} +6 -6
  178. package/{models/whenClauseElements.model.d.ts → src/models/whenClauseElements.model.ts} +6 -5
  179. package/{public-api.d.ts → src/public-api.ts} +4 -0
  180. package/src/question/card-subform/card-subform.component.html +282 -0
  181. package/src/question/card-subform/card-subform.component.scss +49 -0
  182. package/src/question/card-subform/card-subform.component.spec.ts +21 -0
  183. package/src/question/card-subform/card-subform.component.ts +407 -0
  184. package/src/question/confirm-dialog/confirm-dialog.component.html +32 -0
  185. package/src/question/confirm-dialog/confirm-dialog.component.scss +109 -0
  186. package/src/question/confirm-dialog/confirm-dialog.component.spec.ts +21 -0
  187. package/src/question/confirm-dialog/confirm-dialog.component.ts +24 -0
  188. package/src/question/form-elements/form-elements.component.html +28 -0
  189. package/src/question/form-elements/form-elements.component.scss +0 -0
  190. package/src/question/form-elements/form-elements.component.spec.ts +21 -0
  191. package/src/question/form-elements/form-elements.component.ts +41 -0
  192. package/src/question/inline-multiple-subform/inline-multiple-subform.component.html +321 -0
  193. package/src/question/inline-multiple-subform/inline-multiple-subform.component.scss +78 -0
  194. package/src/question/inline-multiple-subform/inline-multiple-subform.component.spec.ts +21 -0
  195. package/src/question/inline-multiple-subform/inline-multiple-subform.component.ts +425 -0
  196. package/src/question/multifields/multifields.component.html +78 -0
  197. package/src/question/multifields/multifields.component.scss +6 -0
  198. package/src/question/multifields/multifields.component.spec.ts +21 -0
  199. package/src/question/multifields/multifields.component.ts +27 -0
  200. package/src/question/multiple-subform/multiple-subform.component.html +185 -0
  201. package/src/question/multiple-subform/multiple-subform.component.scss +52 -0
  202. package/src/question/multiple-subform/multiple-subform.component.spec.ts +21 -0
  203. package/src/question/multiple-subform/multiple-subform.component.ts +481 -0
  204. package/src/question/question/question.component.html +51 -0
  205. package/src/question/question/question.component.scss +0 -0
  206. package/src/question/question/question.component.spec.ts +21 -0
  207. package/src/question/question/question.component.ts +129 -0
  208. package/src/question/question-group/question-group.component.html +147 -0
  209. package/src/question/question-group/question-group.component.scss +36 -0
  210. package/src/question/question-group/question-group.component.spec.ts +21 -0
  211. package/src/question/question-group/question-group.component.ts +94 -0
  212. package/src/question/question.module.ts +22 -0
  213. package/src/question/recursive-logic/recursive-logic.component.html +33 -0
  214. package/src/question/recursive-logic/recursive-logic.component.scss +0 -0
  215. package/src/question/recursive-logic/recursive-logic.component.spec.ts +21 -0
  216. package/src/question/recursive-logic/recursive-logic.component.ts +29 -0
  217. package/src/question/sub-form/sub-form.component.html +254 -0
  218. package/src/question/sub-form/sub-form.component.scss +83 -0
  219. package/src/question/sub-form/sub-form.component.spec.ts +21 -0
  220. package/src/question/sub-form/sub-form.component.ts +421 -0
  221. package/src/services/aggregate.service.ts +148 -0
  222. package/src/services/countryService.ts +92 -0
  223. package/src/services/data.service.ts +36 -0
  224. package/src/services/element-tracker.service.spec.ts +16 -0
  225. package/src/services/element-tracker.service.ts +24 -0
  226. package/src/services/form-validation.service.ts +151 -0
  227. package/src/services/form.service.spec.ts +16 -0
  228. package/src/services/form.service.ts +407 -0
  229. package/src/services/mapper.service.ts +625 -0
  230. package/src/services/recaptcha.service.spec.ts +16 -0
  231. package/src/services/recaptcha.service.ts +179 -0
  232. package/src/services/score.service.ts +352 -0
  233. package/src/services/subform-copy.service.ts +148 -0
  234. package/src/services/validation.service.spec.ts +16 -0
  235. package/src/services/validation.service.ts +33 -0
  236. package/src/services/whenClause.service.ts +502 -0
  237. package/src/shared/shared.module.ts +58 -0
  238. package/src/styles/shared-style.scss +86 -0
  239. package/src/sub-form/sub-form.module.ts +24 -0
  240. package/src/sub-form/submission-modal/submission-modal.component.html +160 -0
  241. package/src/sub-form/submission-modal/submission-modal.component.scss +54 -0
  242. package/src/sub-form/submission-modal/submission-modal.component.spec.ts +21 -0
  243. package/src/sub-form/submission-modal/submission-modal.component.ts +127 -0
  244. package/tsconfig.lib.json +14 -0
  245. package/tsconfig.lib.prod.json +10 -0
  246. package/tsconfig.spec.json +14 -0
  247. package/environment/environment.d.ts +0 -5
  248. package/esm2022/environment/environment.mjs +0 -6
  249. package/esm2022/form-fields/aggregate-function/aggregate-function.component.mjs +0 -146
  250. package/esm2022/form-fields/check-box-fields/check-box-fields.component.mjs +0 -473
  251. package/esm2022/form-fields/currency-fields/currency-fields.component.mjs +0 -502
  252. package/esm2022/form-fields/date-time-fields/date-time-fields.component.mjs +0 -608
  253. package/esm2022/form-fields/drop-down-fields/drop-down-fields.component.mjs +0 -585
  254. package/esm2022/form-fields/file-picker-fields/file-picker-fields.component.mjs +0 -224
  255. package/esm2022/form-fields/form-fields.module.mjs +0 -174
  256. package/esm2022/form-fields/hidden-field/hidden-field.component.mjs +0 -137
  257. package/esm2022/form-fields/iframe-fields/iframe-fields.component.mjs +0 -198
  258. package/esm2022/form-fields/location-fields/location-fields.component.mjs +0 -85
  259. package/esm2022/form-fields/mail-fields/mail-fields.component.mjs +0 -131
  260. package/esm2022/form-fields/mobile-fields/mobile-fields.component.mjs +0 -270
  261. package/esm2022/form-fields/number-fields/number-fields.component.mjs +0 -242
  262. package/esm2022/form-fields/password-fields/password-fields.component.mjs +0 -257
  263. package/esm2022/form-fields/radio-button-fields/radio-button-fields.component.mjs +0 -346
  264. package/esm2022/form-fields/rich-text-editor-fields/rich-text-editor-fields.component.mjs +0 -148
  265. package/esm2022/form-fields/section-fields/section-fields.component.mjs +0 -29
  266. package/esm2022/form-fields/selection-matrix-fields/selection-matrix-fields.component.mjs +0 -158
  267. package/esm2022/form-fields/signature-fields/signature-fields.component.mjs +0 -32
  268. package/esm2022/form-fields/slider-fields/slider-fields.component.mjs +0 -73
  269. package/esm2022/form-fields/terms-and-condition-fields/terms-and-condition-fields.component.mjs +0 -66
  270. package/esm2022/form-fields/text-area-fields/text-area-fields.component.mjs +0 -159
  271. package/esm2022/form-fields/text-fields/text-fields.component.mjs +0 -245
  272. package/esm2022/form-fields/toggle-switch-fields/toggle-switch-fields.component.mjs +0 -85
  273. package/esm2022/form-fields/url-fields/url-fields.component.mjs +0 -124
  274. package/esm2022/form-submission/form-submission.module.mjs +0 -64
  275. package/esm2022/form-submission/header/header.component.mjs +0 -20
  276. package/esm2022/form-submission/navigation-tabs/navigation-tabs.component.mjs +0 -171
  277. package/esm2022/form-submission/next-prev-navigation/next-prev-navigation.component.mjs +0 -124
  278. package/esm2022/form-submission/save-as-draft/saveDraftModalComponent .mjs +0 -50
  279. package/esm2022/form-submission/submission-container/submission-container.component.mjs +0 -17
  280. package/esm2022/form-submission/submit-form/submit-form.component.mjs +0 -1610
  281. package/esm2022/lib/form-submission.component.mjs +0 -113
  282. package/esm2022/lib/form-submission.module.mjs +0 -56
  283. package/esm2022/lib/form-submission.service.mjs +0 -14
  284. package/esm2022/models/aggregate.model.mjs +0 -2
  285. package/esm2022/models/answer.model.mjs +0 -2
  286. package/esm2022/models/appearance.model.mjs +0 -2
  287. package/esm2022/models/attachment.model.mjs +0 -2
  288. package/esm2022/models/defaultAnswerEntry.model.mjs +0 -2
  289. package/esm2022/models/defaultAnswersModel.model.mjs +0 -2
  290. package/esm2022/models/defaultQuestionAnswer.model.mjs +0 -2
  291. package/esm2022/models/elementOptionAPI.model.mjs +0 -2
  292. package/esm2022/models/elementOptionAPIData.model.mjs +0 -2
  293. package/esm2022/models/elementOptionDB.model.mjs +0 -2
  294. package/esm2022/models/elementOptionDBCriteria.model.mjs +0 -2
  295. package/esm2022/models/emitters.model.mjs +0 -2
  296. package/esm2022/models/enum/condition.enum.mjs +0 -18
  297. package/esm2022/models/enum/elementType .enum.mjs +0 -24
  298. package/esm2022/models/enum/entityType.enum.mjs +0 -12
  299. package/esm2022/models/formConfiguration.model.mjs +0 -2
  300. package/esm2022/models/formElement.model.mjs +0 -2
  301. package/esm2022/models/formElementType.model.mjs +0 -2
  302. package/esm2022/models/grid.model.mjs +0 -2
  303. package/esm2022/models/hiddenField.model.mjs +0 -2
  304. package/esm2022/models/iFrameProperties.model.mjs +0 -2
  305. package/esm2022/models/logic.model.mjs +0 -2
  306. package/esm2022/models/multifields.model.mjs +0 -2
  307. package/esm2022/models/option.model.mjs +0 -2
  308. package/esm2022/models/page.model.mjs +0 -2
  309. package/esm2022/models/publicForm.model.mjs +0 -2
  310. package/esm2022/models/question.model.mjs +0 -2
  311. package/esm2022/models/questionAnswer.model.mjs +0 -2
  312. package/esm2022/models/questionGroup.model.mjs +0 -2
  313. package/esm2022/models/row.model.mjs +0 -2
  314. package/esm2022/models/scoring.model.mjs +0 -2
  315. package/esm2022/models/section.model.mjs +0 -2
  316. package/esm2022/models/subForm.model.mjs +0 -2
  317. package/esm2022/models/subformConfiguration.model.mjs +0 -2
  318. package/esm2022/models/subformPropery.model.mjs +0 -2
  319. package/esm2022/models/submission.model.mjs +0 -2
  320. package/esm2022/models/submissionCopyConfig.mopdel.mjs +0 -2
  321. package/esm2022/models/terms&condition.model.mjs +0 -2
  322. package/esm2022/models/validation.model.mjs +0 -2
  323. package/esm2022/models/whenClause.model.mjs +0 -2
  324. package/esm2022/models/whenClauseCondition.model.mjs +0 -2
  325. package/esm2022/models/whenClauseElements.model.mjs +0 -2
  326. package/esm2022/piserve-tech-form-submission.mjs +0 -5
  327. package/esm2022/public-api.mjs +0 -7
  328. package/esm2022/question/card-subform/card-subform.component.mjs +0 -354
  329. package/esm2022/question/confirm-dialog/confirm-dialog.component.mjs +0 -27
  330. package/esm2022/question/form-elements/form-elements.component.mjs +0 -62
  331. package/esm2022/question/inline-multiple-subform/inline-multiple-subform.component.mjs +0 -384
  332. package/esm2022/question/multifields/multifields.component.mjs +0 -54
  333. package/esm2022/question/multiple-subform/multiple-subform.component.mjs +0 -413
  334. package/esm2022/question/question/question.component.mjs +0 -145
  335. package/esm2022/question/question-group/question-group.component.mjs +0 -102
  336. package/esm2022/question/recursive-logic/recursive-logic.component.mjs +0 -49
  337. package/esm2022/question/sub-form/sub-form.component.mjs +0 -351
  338. package/esm2022/services/aggregate.service.mjs +0 -139
  339. package/esm2022/services/countryService.mjs +0 -89
  340. package/esm2022/services/data.service.mjs +0 -36
  341. package/esm2022/services/element-tracker.service.mjs +0 -27
  342. package/esm2022/services/form-validation.service.mjs +0 -128
  343. package/esm2022/services/form.service.mjs +0 -333
  344. package/esm2022/services/mapper.service.mjs +0 -519
  345. package/esm2022/services/recaptcha.service.mjs +0 -136
  346. package/esm2022/services/score.service.mjs +0 -268
  347. package/esm2022/services/subform-copy.service.mjs +0 -122
  348. package/esm2022/services/validation.service.mjs +0 -35
  349. package/esm2022/services/whenClause.service.mjs +0 -423
  350. package/esm2022/shared/shared.module.mjs +0 -97
  351. package/esm2022/sub-form/submission-modal/submission-modal.component.mjs +0 -133
  352. package/fesm2022/piserve-tech-form-submission.mjs +0 -11658
  353. package/fesm2022/piserve-tech-form-submission.mjs.map +0 -1
  354. package/form-fields/aggregate-function/aggregate-function.component.d.ts +0 -43
  355. package/form-fields/check-box-fields/check-box-fields.component.d.ts +0 -73
  356. package/form-fields/currency-fields/currency-fields.component.d.ts +0 -62
  357. package/form-fields/date-time-fields/date-time-fields.component.d.ts +0 -96
  358. package/form-fields/drop-down-fields/drop-down-fields.component.d.ts +0 -88
  359. package/form-fields/file-picker-fields/file-picker-fields.component.d.ts +0 -72
  360. package/form-fields/form-fields.module.d.ts +0 -40
  361. package/form-fields/hidden-field/hidden-field.component.d.ts +0 -38
  362. package/form-fields/iframe-fields/iframe-fields.component.d.ts +0 -35
  363. package/form-fields/location-fields/location-fields.component.d.ts +0 -29
  364. package/form-fields/mail-fields/mail-fields.component.d.ts +0 -41
  365. package/form-fields/mobile-fields/mobile-fields.component.d.ts +0 -71
  366. package/form-fields/number-fields/number-fields.component.d.ts +0 -53
  367. package/form-fields/password-fields/password-fields.component.d.ts +0 -57
  368. package/form-fields/radio-button-fields/radio-button-fields.component.d.ts +0 -70
  369. package/form-fields/rich-text-editor-fields/rich-text-editor-fields.component.d.ts +0 -46
  370. package/form-fields/section-fields/section-fields.component.d.ts +0 -10
  371. package/form-fields/selection-matrix-fields/selection-matrix-fields.component.d.ts +0 -45
  372. package/form-fields/signature-fields/signature-fields.component.d.ts +0 -13
  373. package/form-fields/slider-fields/slider-fields.component.d.ts +0 -32
  374. package/form-fields/terms-and-condition-fields/terms-and-condition-fields.component.d.ts +0 -26
  375. package/form-fields/text-area-fields/text-area-fields.component.d.ts +0 -49
  376. package/form-fields/text-fields/text-fields.component.d.ts +0 -49
  377. package/form-fields/toggle-switch-fields/toggle-switch-fields.component.d.ts +0 -29
  378. package/form-fields/url-fields/url-fields.component.d.ts +0 -41
  379. package/form-submission/form-submission.module.d.ts +0 -20
  380. package/form-submission/header/header.component.d.ts +0 -7
  381. package/form-submission/navigation-tabs/navigation-tabs.component.d.ts +0 -57
  382. package/form-submission/next-prev-navigation/next-prev-navigation.component.d.ts +0 -46
  383. package/form-submission/save-as-draft/saveDraftModalComponent .d.ts +0 -17
  384. package/form-submission/submission-container/submission-container.component.d.ts +0 -7
  385. package/form-submission/submit-form/submit-form.component.d.ts +0 -237
  386. package/index.d.ts +0 -5
  387. package/lib/form-submission.component.d.ts +0 -30
  388. package/lib/form-submission.module.d.ts +0 -16
  389. package/lib/form-submission.service.d.ts +0 -6
  390. package/models/aggregate.model.d.ts +0 -4
  391. package/models/appearance.model.d.ts +0 -64
  392. package/models/elementOptionAPI.model.d.ts +0 -12
  393. package/models/elementOptionAPIData.model.d.ts +0 -5
  394. package/models/elementOptionDB.model.d.ts +0 -8
  395. package/models/elementOptionDBCriteria.model.d.ts +0 -7
  396. package/models/enum/elementType .enum.d.ts +0 -22
  397. package/models/enum/entityType.enum.d.ts +0 -10
  398. package/models/logic.model.d.ts +0 -9
  399. package/models/multifields.model.d.ts +0 -11
  400. package/models/page.model.d.ts +0 -6
  401. package/models/publicForm.model.d.ts +0 -18
  402. package/models/question.model.d.ts +0 -26
  403. package/models/questionAnswer.model.d.ts +0 -7
  404. package/models/questionGroup.model.d.ts +0 -11
  405. package/models/scoring.model.d.ts +0 -10
  406. package/models/section.model.d.ts +0 -6
  407. package/models/subForm.model.d.ts +0 -24
  408. package/models/subformConfiguration.model.d.ts +0 -4
  409. package/models/subformPropery.model.d.ts +0 -7
  410. package/models/validation.model.d.ts +0 -48
  411. package/models/whenClause.model.d.ts +0 -6
  412. package/question/card-subform/card-subform.component.d.ts +0 -44
  413. package/question/confirm-dialog/confirm-dialog.component.d.ts +0 -12
  414. package/question/form-elements/form-elements.component.d.ts +0 -20
  415. package/question/inline-multiple-subform/inline-multiple-subform.component.d.ts +0 -47
  416. package/question/multifields/multifields.component.d.ts +0 -11
  417. package/question/multiple-subform/multiple-subform.component.d.ts +0 -39
  418. package/question/question/question.component.d.ts +0 -30
  419. package/question/question-group/question-group.component.d.ts +0 -29
  420. package/question/recursive-logic/recursive-logic.component.d.ts +0 -19
  421. package/question/sub-form/sub-form.component.d.ts +0 -70
  422. package/services/aggregate.service.d.ts +0 -29
  423. package/services/countryService.d.ts +0 -21
  424. package/services/data.service.d.ts +0 -19
  425. package/services/element-tracker.service.d.ts +0 -10
  426. package/services/form-validation.service.d.ts +0 -16
  427. package/services/form.service.d.ts +0 -27
  428. package/services/mapper.service.d.ts +0 -31
  429. package/services/recaptcha.service.d.ts +0 -46
  430. package/services/score.service.d.ts +0 -27
  431. package/services/subform-copy.service.d.ts +0 -10
  432. package/services/validation.service.d.ts +0 -14
  433. package/services/whenClause.service.d.ts +0 -45
  434. package/shared/shared.module.d.ts +0 -25
  435. package/sub-form/submission-modal/submission-modal.component.d.ts +0 -31
  436. /package/{assets → src/assets}/fonts/Garamond.woff2 +0 -0
  437. /package/{assets → src/assets}/fonts/Georgia.woff2 +0 -0
  438. /package/{assets → src/assets}/fonts/Poppins.woff2 +0 -0
  439. /package/{assets → src/assets}/fonts/Tahoma.woff2 +0 -0
  440. /package/{assets → src/assets}/fonts/Tajawal.woff2 +0 -0
  441. /package/{assets → src/assets}/fonts/Verdana.woff2 +0 -0
  442. /package/{assets → src/assets}/icons/left_arrow.svg +0 -0
  443. /package/{assets → src/assets}/icons/right_arrow.svg +0 -0
@@ -1,139 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { BehaviorSubject } from 'rxjs';
3
- import * as i0 from "@angular/core";
4
- export class AggregationFunctionService {
5
- constructor() {
6
- // New structure: { [rowId]: Map<fieldId, fieldData> }
7
- this.aggregateFieldsMap = new Map();
8
- this.numberFieldsMap = new Map();
9
- this.aggregateFieldResultsSubject = new BehaviorSubject(null);
10
- this.aggregateFieldResults$ = this.aggregateFieldResultsSubject.asObservable();
11
- }
12
- /**
13
- * Store or update an aggregate field in the map
14
- */
15
- setAggregateField(rowId, fieldId, operation, formula) {
16
- if (!this.aggregateFieldsMap.has(rowId)) {
17
- this.aggregateFieldsMap.set(rowId, new Map());
18
- }
19
- this.aggregateFieldsMap.get(rowId).set(fieldId, { id: fieldId, operation, formula });
20
- }
21
- /**
22
- * Store or update a number field in the map
23
- */
24
- setNumberField(rowId, fieldId, answer) {
25
- if (!this.numberFieldsMap.has(rowId)) {
26
- this.numberFieldsMap.set(rowId, new Map());
27
- }
28
- this.numberFieldsMap.get(rowId).set(fieldId, { id: fieldId, answer });
29
- this.checkAndEvaluateFormulas(rowId);
30
- }
31
- emitAggregateResult(id, result, evaluated) {
32
- this.aggregateFieldResultsSubject.next({ id, result, evaluated });
33
- }
34
- evaluateCustomFormula(rowId, formula) {
35
- const rowNumberFields = this.numberFieldsMap.get(rowId);
36
- if (!formula || !rowNumberFields)
37
- return null;
38
- const uuidRegex = /[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}/g;
39
- /[0-9a-fA-F\-]{36}/g;
40
- const uuidMatches = formula.match(uuidRegex) || [];
41
- const allHaveAnswers = uuidMatches.every(uuid => {
42
- const field = rowNumberFields.get(uuid);
43
- return field !== undefined &&
44
- field.answer !== undefined &&
45
- field.answer !== null &&
46
- String(field.answer).trim() !== '';
47
- });
48
- if (!allHaveAnswers)
49
- return null;
50
- const replacedFormula = formula.replace(uuidRegex, (match) => {
51
- const field = rowNumberFields.get(match);
52
- return field?.answer?.toString() || '0';
53
- });
54
- try {
55
- return new Function(`return ${replacedFormula};`)();
56
- }
57
- catch (error) {
58
- console.error('Error evaluating formula:', error);
59
- return null;
60
- }
61
- }
62
- evaluatePredefinedOperation(rowId, operation, formula) {
63
- const rowNumberFields = this.numberFieldsMap.get(rowId);
64
- if (!rowNumberFields)
65
- return null;
66
- const uuidList = formula.split(',').map(id => id.trim());
67
- const values = [];
68
- let hasAnyAnswer = false;
69
- for (const uuid of uuidList) {
70
- const field = rowNumberFields.get(uuid);
71
- const val = field?.answer;
72
- // If the field doesn't exist or value is invalid, push 0 as default
73
- if (val !== undefined && val !== null && String(val).trim() !== '') {
74
- hasAnyAnswer = true;
75
- values.push(Number(val));
76
- }
77
- else {
78
- values.push(0); // Still push 0 to keep array length, but flag stays false unless at least one answer exists
79
- }
80
- }
81
- if (!hasAnyAnswer)
82
- return null;
83
- let result = 0;
84
- switch (operation) {
85
- case 'SUM':
86
- result = values.reduce((acc, val) => acc + val, 0);
87
- break;
88
- case 'SUBTRACTION':
89
- result = values.reduce((acc, val) => acc - val);
90
- break;
91
- case 'MULTIPLICATION':
92
- result = values.reduce((acc, val) => acc * val, 1);
93
- break;
94
- default:
95
- console.warn(`Unsupported operation: ${operation}`);
96
- return null;
97
- }
98
- return result;
99
- }
100
- checkAndEvaluateFormulas(rowId) {
101
- const aggregateFields = this.aggregateFieldsMap.get(rowId);
102
- if (!aggregateFields)
103
- return;
104
- aggregateFields.forEach((aggregateField, id) => {
105
- let result = null;
106
- if (aggregateField.operation === 'CUSTOM') {
107
- result = this.evaluateCustomFormula(rowId, aggregateField.formula);
108
- }
109
- else {
110
- result = this.evaluatePredefinedOperation(rowId, aggregateField.operation, aggregateField.formula);
111
- }
112
- if (result !== null) {
113
- aggregateField.result = result;
114
- this.aggregateFieldsMap.get(rowId).set(id, aggregateField);
115
- this.emitAggregateResult(`${rowId}:${id}`, result, true);
116
- }
117
- else {
118
- this.emitAggregateResult(`${rowId}:${id}`, 0, false);
119
- }
120
- });
121
- }
122
- clearAll() {
123
- this.aggregateFieldsMap.clear();
124
- this.numberFieldsMap.clear();
125
- this.aggregateFieldResultsSubject.next(null);
126
- }
127
- ngOnDestroy() {
128
- this.clearAll();
129
- }
130
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AggregationFunctionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
131
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AggregationFunctionService, providedIn: 'root' }); }
132
- }
133
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AggregationFunctionService, decorators: [{
134
- type: Injectable,
135
- args: [{
136
- providedIn: 'root',
137
- }]
138
- }], ctorParameters: function () { return []; } });
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdncmVnYXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL3NlcnZpY2VzL2FnZ3JlZ2F0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQzs7QUFNbkQsTUFBTSxPQUFPLDBCQUEwQjtJQVNyQztRQVBBLHNEQUFzRDtRQUNoRCx1QkFBa0IsR0FBRyxJQUFJLEdBQUcsRUFBNEYsQ0FBQztRQUN6SCxvQkFBZSxHQUFHLElBQUksR0FBRyxFQUF1RCxDQUFDO1FBRS9FLGlDQUE0QixHQUFHLElBQUksZUFBZSxDQUEwRCxJQUFJLENBQUMsQ0FBQztRQUMxSCwyQkFBc0IsR0FBRyxJQUFJLENBQUMsNEJBQTRCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFM0QsQ0FBQztJQUVoQjs7T0FFRztJQUNILGlCQUFpQixDQUFDLEtBQWEsRUFBRSxPQUFlLEVBQUUsU0FBaUIsRUFBRSxPQUFlO1FBQ2xGLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztTQUMvQztRQUNELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUVEOztPQUVHO0lBQ0gsY0FBYyxDQUFDLEtBQWEsRUFBRSxPQUFlLEVBQUUsTUFBYztRQUMzRCxJQUFJLENBQUMsSUFBSSxD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QUNoQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQzsrR0EzSVUsMEJBQTBCO21IQUExQiwwQkFBMEIsY0FGekIsTUFBTTs7NEZBRVAsMEJBQTBCO2tCQUh0QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFnZ3JlZ2F0aW9uRnVuY3Rpb25TZXJ2aWNlIHtcblxuICAvLyBOZXcgc3RydWN0dXJlOiB7IFtyb3dJZF06IE1hcDxmaWVsZElkLCBmaWVsZERhdGE+IH1cbnByaXZhdGUgYWdncmVnYXRlRmllbGRzTWFwID0gbmV3IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIHsgaWQ6IHN0cmluZzsgb3BlcmF0aW9uOiBzdHJpbmc7IGZvcm11bGE6IHN0cmluZzsgcmVzdWx0PzogbnVtYmVyIH0+PigpO1xucHJpdmF0ZSBudW1iZXJGaWVsZHNNYXAgPSBuZXcgTWFwPHN0cmluZywgTWFwPHN0cmluZywgeyBpZDogc3RyaW5nOyBhbnN3ZXI6IG51bWJlciB9Pj4oKTtcblxuICBwcml2YXRlIGFnZ3JlZ2F0ZUZpZWxkUmVzdWx0c1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgaWQ6IHN0cmluZzsgcmVzdWx0OiBudW1iZXIsZXZhbHVhdGVkOmJvb2xlYW4gfSB8IG51bGw+KG51bGwpO1xuICBhZ2dyZWdhdGVGaWVsZFJlc3VsdHMkID0gdGhpcy5hZ2dyZWdhdGVGaWVsZFJlc3VsdHNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICAvKipcbiAgICogU3RvcmUgb3IgdXBkYXRlIGFuIGFnZ3JlZ2F0ZSBmaWVsZCBpbiB0aGUgbWFwXG4gICAqL1xuICBzZXRBZ2dyZWdhdGVGaWVsZChyb3dJZDogc3RyaW5nLCBmaWVsZElkOiBzdHJpbmcsIG9wZXJhdGlvbjogc3RyaW5nLCBmb3JtdWxhOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYWdncmVnYXRlRmllbGRzTWFwLmhhcyhyb3dJZCkpIHtcbiAgICAgIHRoaXMuYWdncmVnYXRlRmllbGRzTWFwLnNldChyb3dJZCwgbmV3IE1hcCgpKTtcbiAgICB9XG4gICAgdGhpcy5hZ2dyZWdhdGVGaWVsZHNNYXAuZ2V0KHJvd0lkKSEuc2V0KGZpZWxkSWQsIHsgaWQ6IGZpZWxkSWQsIG9wZXJhdGlvbiwgZm9ybXVsYSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9yZSBvciB1cGRhdGUgYSBudW1iZXIgZmllbGQgaW4gdGhlIG1hcFxuICAgKi9cbiAgc2V0TnVtYmVyRmllbGQocm93SWQ6IHN0cmluZywgZmllbGRJZDogc3RyaW5nLCBhbnN3ZXI6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5udW1iZXJGaWVsZHNNYXAuaGFzKHJvd0lkKSkge1xuICAgICAgdGhpcy5udW1iZXJGaWVsZHNNYXAuc2V0KHJvd0lkLCBuZXcgTWFwKCkpO1xuICAgIH1cbiAgICB0aGlzLm51bWJlckZpZWxkc01hcC5nZXQocm93SWQpIS5zZXQoZmllbGRJZCwgeyBpZDogZmllbGRJZCwgYW5zd2VyIH0pO1xuICAgIHRoaXMuY2hlY2tBbmRFdmFsdWF0ZUZvcm11bGFzKHJvd0lkKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdEFnZ3JlZ2F0ZVJlc3VsdChpZDogc3RyaW5nLCByZXN1bHQ6IG51bWJlcixldmFsdWF0ZWQ6Ym9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuYWdncmVnYXRlRmllbGRSZXN1bHRzU3ViamVjdC5uZXh0KHsgaWQsIHJlc3VsdCxldmFsdWF0ZWQgfSk7XG4gIH1cblxuXG4gIGV2YWx1YXRlQ3VzdG9tRm9ybXVsYShyb3dJZDogc3RyaW5nLCBmb3JtdWxhOiBzdHJpbmcpOiBudW1iZXIgfCBudWxsIHtcbiAgICBcbiAgICBjb25zdCByb3dOdW1iZXJGaWVsZHMgPSB0aGlzLm51bWJlckZpZWxkc01hcC5nZXQocm93SWQpO1xuICAgIGlmICghZm9ybXVsYSB8fCAhcm93TnVtYmVyRmllbGRzKSByZXR1cm4gbnVsbDtcbiAgXG4gICAgY29uc3QgdXVpZFJlZ2V4ID0gL1swLTlhLWZBLUZdezh9LVswLTlhLWZBLUZdezR9LVsxLTVdWzAtOWEtZkEtRl17M30tWzg5YWJBQl1bMC05YS1mQS1GXXszfS1bMC05YS1mQS1GXXsxMn0vZzsvWzAtOWEtZkEtRlxcLV17MzZ9L2c7XG4gICAgY29uc3QgdXVpZE1hdGNoZXMgPSBmb3JtdWxhLm1hdGNoKHV1aWRSZWdleCkgfHwgW107XG4gIFxuICAgIGNvbnN0IGFsbEhhdmVBbnN3ZXJzID0gdXVpZE1hdGNoZXMuZXZlcnkodXVpZCA9PiB7XG4gICAgICBjb25zdCBmaWVsZCA9IHJvd051bWJlckZpZWxkcy5nZXQodXVpZCk7XG4gICAgICByZXR1cm4gZmllbGQgIT09IHVuZGVmaW5lZCAmJiBcbiAgICAgICAgICAgICBmaWVsZC5hbnN3ZXIgIT09IHVuZGVmaW5lZCAmJiBcbiAgICAgICAgICAgICBmaWVsZC5hbnN3ZXIgIT09IG51bGwgJiZcbiAgICAgICAgICAgICBTdHJpbmcoZmllbGQuYW5zd2VyKS50cmltKCkgIT09ICcnO1xuICAgIH0pO1xuICBcbiAgICBpZiAoIWFsbEhhdmVBbnN3ZXJzKSByZXR1cm4gbnVsbDtcbiAgXG4gICAgY29uc3QgcmVwbGFjZWRGb3JtdWxhID0gZm9ybXVsYS5yZXBsYWNlKHV1aWRSZWdleCwgKG1hdGNoKSA9PiB7XG4gICAgICBjb25zdCBmaWVsZCA9IHJvd051bWJlckZpZWxkcy5nZXQobWF0Y2gpO1xuICAgICAgcmV0dXJuIGZpZWxkPy5hbnN3ZXI/LnRvU3RyaW5nKCkgfHwgJzAnO1xuICAgIH0pO1xuICBcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIG5ldyBGdW5jdGlvbihgcmV0dXJuICR7cmVwbGFjZWRGb3JtdWxhfTtgKSgpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBldmFsdWF0aW5nIGZvcm11bGE6JywgZXJyb3IpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG4gIFxuICBldmFsdWF0ZVByZWRlZmluZWRPcGVyYXRpb24ocm93SWQ6IHN0cmluZywgb3BlcmF0aW9uOiBzdHJpbmcsIGZvcm11bGE6IHN0cmluZyk6IG51bWJlciB8IG51bGwge1xuICAgIGNvbnN0IHJvd051bWJlckZpZWxkcyA9IHRoaXMubnVtYmVyRmllbGRzTWFwLmdldChyb3dJZCk7XG4gICAgaWYgKCFyb3dOdW1iZXJGaWVsZHMpIHJldHVybiBudWxsO1xuICBcbiAgICBjb25zdCB1dWlkTGlzdCA9IGZvcm11bGEuc3BsaXQoJywnKS5tYXAoaWQgPT4gaWQudHJpbSgpKTtcbiAgICBjb25zdCB2YWx1ZXM6IG51bWJlcltdID0gW107XG4gICAgbGV0IGhhc0FueUFuc3dlciA9IGZhbHNlO1xuXG4gICAgZm9yIChjb25zdCB1dWlkIG9mIHV1aWRMaXN0KSB7XG4gICAgICBjb25zdCBmaWVsZCA9IHJvd051bWJlckZpZWxkcy5nZXQodXVpZCk7XG4gICAgICBjb25zdCB2YWwgPSBmaWVsZD8uYW5zd2VyO1xuICBcbiAgICAgIC8vIElmIHRoZSBmaWVsZCBkb2Vzbid0IGV4aXN0IG9yIHZhbHVlIGlzIGludmFsaWQsIHB1c2ggMCBhcyBkZWZhdWx0XG4gICAgICBpZiAodmFsICE9PSB1bmRlZmluZWQgJiYgdmFsICE9PSBudWxsICYmIFN0cmluZyh2YWwpLnRyaW0oKSAhPT0gJycpIHtcbiAgICAgICAgaGFzQW55QW5zd2VyID0gdHJ1ZTtcbiAgICAgICAgdmFsdWVzLnB1c2goTnVtYmVyKHZhbCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsdWVzLnB1c2goMCk7IC8vIFN0aWxsIHB1c2ggMCB0byBrZWVwIGFycmF5IGxlbmd0aCwgYnV0IGZsYWcgc3RheXMgZmFsc2UgdW5sZXNzIGF0IGxlYXN0IG9uZSBhbnN3ZXIgZXhpc3RzXG4gICAgICB9XG4gICAgfVxuICAgIGlmICghaGFzQW55QW5zd2VyKSByZXR1cm4gbnVsbDtcbiAgICBsZXQgcmVzdWx0ID0gMDtcbiAgICBzd2l0Y2ggKG9wZXJhdGlvbikge1xuICAgICAgY2FzZSAnU1VNJzpcbiAgICAgICAgcmVzdWx0ID0gdmFsdWVzLnJlZHVjZSgoYWNjLCB2YWwpID0+IGFjYyArIHZhbCwgMCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnU1VCVFJBQ1RJT04nOlxuICAgICAgICByZXN1bHQgPSB2YWx1ZXMucmVkdWNlKChhY2MsIHZhbCkgPT4gYWNjIC0gdmFsKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdNVUxUSVBMSUNBVElPTic6XG4gICAgICAgIHJlc3VsdCA9IHZhbHVlcy5yZWR1Y2UoKGFjYywgdmFsKSA9PiBhY2MgKiB2YWwsIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvbnNvbGUud2FybihgVW5zdXBwb3J0ZWQgb3BlcmF0aW9uOiAke29wZXJhdGlvbn1gKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICBcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgY2hlY2tBbmRFdmFsdWF0ZUZvcm11bGFzKHJvd0lkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBhZ2dyZWdhdGVGaWVsZHMgPSB0aGlzLmFnZ3JlZ2F0ZUZpZWxkc01hcC5nZXQocm93SWQpO1xuICAgIGlmICghYWdncmVnYXRlRmllbGRzKSByZXR1cm47XG4gIFxuICAgIGFnZ3JlZ2F0ZUZpZWxkcy5mb3JFYWNoKChhZ2dyZWdhdGVGaWVsZCwgaWQpID0+IHtcbiAgICAgIGxldCByZXN1bHQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBcbiAgICAgIGlmIChhZ2dyZWdhdGVGaWVsZC5vcGVyYXRpb24gPT09ICdDVVNUT00nKSB7XG4gICAgICAgIHJlc3VsdCA9IHRoaXMuZXZhbHVhdGVDdXN0b21Gb3JtdWxhKHJvd0lkLCBhZ2dyZWdhdGVGaWVsZC5mb3JtdWxhKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IHRoaXMuZXZhbHVhdGVQcmVkZWZpbmVkT3BlcmF0aW9uKHJvd0lkLCBhZ2dyZWdhdGVGaWVsZC5vcGVyYXRpb24sIGFnZ3JlZ2F0ZUZpZWxkLmZvcm11bGEpO1xuICAgICAgfVxuICBcbiAgICAgIGlmIChyZXN1bHQgIT09IG51bGwpIHtcbiAgICAgICAgYWdncmVnYXRlRmllbGQucmVzdWx0ID0gcmVzdWx0O1xuICAgICAgICB0aGlzLmFnZ3JlZ2F0ZUZpZWxkc01hcC5nZXQocm93SWQpIS5zZXQoaWQsIGFnZ3JlZ2F0ZUZpZWxkKTtcbiAgICAgICAgdGhpcy5lbWl0QWdncmVnYXRlUmVzdWx0KGAke3Jvd0lkfToke2lkfWAsIHJlc3VsdCx0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZW1pdEFnZ3JlZ2F0ZVJlc3VsdChgJHtyb3dJZH06JHtpZH1gLCAwLGZhbHNlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNsZWFyQWxsKCk6IHZvaWQge1xuICAgIHRoaXMuYWdncmVnYXRlRmllbGRzTWFwLmNsZWFyKCk7XG4gICAgdGhpcy5udW1iZXJGaWVsZHNNYXAuY2xlYXIoKTtcbiAgICB0aGlzLmFnZ3JlZ2F0ZUZpZWxkUmVzdWx0c1N1YmplY3QubmV4dChudWxsKTtcbiAgfVxuICBcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhckFsbCgpO1xuICB9XG59Il19
@@ -1,89 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common/http";
4
- import * as i2 from "./data.service";
5
- export class CountryService {
6
- constructor(http, dataService) {
7
- this.http = http;
8
- this.dataService = dataService;
9
- this.apiUrl = '';
10
- this.header = {};
11
- this.dataService.apiUrl$.subscribe((data) => {
12
- this.apiUrl = data;
13
- });
14
- }
15
- loadCountryDetails(questionId, page, size, searchKey) {
16
- return this.http.get(`${this.apiUrl}/api/public/json/country?page=${page}&size=${size}&searchKey=${encodeURIComponent(searchKey)}`);
17
- }
18
- processCountryDetails(data, displayFlag, displayCode, showCountryName) {
19
- const countryDetails = [];
20
- data.forEach((country) => {
21
- const flag = displayFlag && country.flag ? country.flag : '';
22
- const name = showCountryName ? country.name || '' : '';
23
- const isdRoot = country.isd?.root || '';
24
- const isdSuffixes = country.isd?.suffixes || [];
25
- if (isdRoot && isdSuffixes.length > 0) {
26
- isdSuffixes.forEach((suffix) => {
27
- const isdCode = `${isdRoot}${suffix}`;
28
- // Special case: Only flag should be displayed, but value must have ISD code
29
- if (displayFlag && !displayCode && !showCountryName) {
30
- countryDetails.push({
31
- value: isdCode,
32
- label: '',
33
- image: flag, // Only flag should be displayed
34
- });
35
- }
36
- else {
37
- // Handle all other cases
38
- let label = '';
39
- if (showCountryName)
40
- label += name;
41
- if (displayCode)
42
- label += (label ? ' ' : '') + isdCode;
43
- if (!label)
44
- label = isdCode; // Ensure label is not empty
45
- countryDetails.push({
46
- value: isdCode,
47
- label: label.trim(),
48
- image: flag,
49
- });
50
- }
51
- });
52
- }
53
- else {
54
- const fallbackCode = isdRoot || country.code || ''; // Fallback if no suffixes
55
- if (displayFlag && !displayCode && !showCountryName) {
56
- countryDetails.push({
57
- value: fallbackCode,
58
- label: '',
59
- image: flag,
60
- });
61
- }
62
- else {
63
- let label = '';
64
- if (showCountryName)
65
- label += name;
66
- if (displayCode)
67
- label += (label ? ' ' : '') + fallbackCode;
68
- if (!label)
69
- label = fallbackCode;
70
- countryDetails.push({
71
- value: fallbackCode,
72
- label: label.trim(),
73
- image: flag,
74
- });
75
- }
76
- }
77
- });
78
- return countryDetails;
79
- }
80
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CountryService, deps: [{ token: i1.HttpClient }, { token: i2.DataService }], target: i0.ɵɵFactoryTarget.Injectable }); }
81
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CountryService, providedIn: 'root' }); }
82
- }
83
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CountryService, decorators: [{
84
- type: Injectable,
85
- args: [{
86
- providedIn: 'root',
87
- }]
88
- }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.DataService }]; } });
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeVNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL3NlcnZpY2VzL2NvdW50cnlTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFjM0MsTUFBTSxPQUFPLGNBQWM7SUFJekIsWUFBb0IsSUFBZ0IsRUFBVSxXQUF3QjtRQUFsRCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFIOUQsV0FBTSxHQUFXLEVBQUUsQ0FBQztRQUM1QixXQUFNLEdBQVEsRUFBRSxDQUFDO1FBR2YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDMUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsVUFBa0IsRUFBRSxJQUFZLEVBQUUsSUFBWSxFQUFFLFNBQWlCO1FBQ2xGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxpQ0FBaUMsSUFBSSxTQUFTLElBQUksY0FBYyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0ksQ0FBQztJQUVELHFCQUFxQixDQUNuQixJQUFXLEVBQ1gsV0FBb0IsRUFDcEIsV0FBb0IsRUFDcEIsZUFBd0I7UUFFeEIsTUFBTSxjQUFjLEdBQWtCLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDdkIsTUFBTSxJQUFJLEdBQUcsV0FBVyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM3RCxNQUFNLElBQUksR0FBRyxlQUFlLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDdkQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3hDLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUVoRCxJQUFJLE9BQU8sSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDckMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQWMsRUFBRSxFQUFFO29CQUNyQyxNQUFNLE9BQU8sR0FBRyxHQUFHLE9BQU8sR0FBRyxNQUFNLEVBQUUsQ0FBQztvQkFFdEMsNEVBQTRFO29CQUM1RSxJQUFJLFdBQVcsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLGVBQWUsRUFBRTt3QkFDbkQsY0FBYyxDQUFDLElBQUksQ0FBQzs0QkFDbEIsS0FBSyxFQUFFLE9BQU87NEJBQ2QsS0FBSyxFQUFFLEVBQUU7NEJBQ1QsS0FBSyxFQUFFLElBQUksRUFBTSxpQ0FBaUM7eUJBQ25ELENBQUMsQ0FBQztxQkFDSjt5QkFBTTt3QkFDTCx5QkFBeUI7d0JBQ3pCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQzt3QkFDZixJQUFJLGVBQWU7NEJBQUUsS0FBSyxJQUFJLElBQUksQ0FBQzt3QkFDbkMsSUFBSSxXQUFXOzRCQUFFLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUM7d0JBQ3ZELElBQUksQ0FBQyxLQUFLOzRCQUFFLEtBQUssR0FBRyxPQUFPLENBQUMsQ0FBQyw0QkFBNEI7d0JBRXpELGNBQWMsQ0FBQyxJQUFJLENBQUM7NEJBQ2xCLEtBQUssRUFBRSxPQUFPOzRCQUNkLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFOzRCQUNuQixLQUFLLEVBQUUsSUFBSTt5QkFDWixDQUFDLENBQUM7cUJBQ0o7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7YUFDSjtpQkFBTTtnQkFDTCxNQUFNLFlBQVksR0FBRyxPQUFPLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQywwQkFBMEI7Z0JBRTlFLElBQUksV0FBVyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsZUFBZSxFQUFFO29CQUNuRCxjQUFjLENBQUMsSUFBSSxDQUFDO3dCQUNsQixLQUFLLEVBQUUsWUFBWTt3QkFDbkIsS0FBSyxFQUFFLEVBQUU7d0JBQ1QsS0FBSyxFQUFFLElBQUk7cUJBQ1osQ0FBQyxDQUFDO2lCQUNKO3FCQUFNO29CQUNMLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztvQkFDZixJQUFJLGVBQWU7d0JBQUUsS0FBSyxJQUFJLElBQUksQ0FBQztvQkFDbkMsSUFBSSxXQUFXO3dCQUFFLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUM7b0JBQzVELElBQUksQ0FBQyxLQUFLO3dCQUFFLEtBQUssR0FBRyxZQUFZLENBQUM7b0JBRWpDLGNBQWMsQ0FBQyxJQUFJLENBQUM7d0JBQ2xCLEtBQUssRUFBRSxZQUFZO3dCQUNuQixLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTt3QkFDbkIsS0FBSyxFQUFFLElBQUk7cUJBQ1osQ0FBQyxDQUFDO2lCQUNKO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7K0dBNUVVLGNBQWM7bUhBQWQsY0FBYyxjQUZiLE1BQU07OzRGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi9kYXRhLnNlcnZpY2UnO1xuXG5pbnRlcmZhY2UgQ291bnRyeURhdGEge1xuICB2YWx1ZTogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBpbWFnZTogc3RyaW5nO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ291bnRyeVNlcnZpY2Uge1xuICBwcml2YXRlIGFwaVVybDogc3RyaW5nID0gJyc7XG4gIGhlYWRlcjogYW55ID0ge307XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSkge1xuICAgIHRoaXMuZGF0YVNlcnZpY2UuYXBpVXJsJC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgIHRoaXMuYXBpVXJsID0gZGF0YTtcbiAgICB9KTtcbiAgfVxuXG4gIGxvYWRDb3VudHJ5RGV0YWlscyhxdWVzdGlvbklkOiBzdHJpbmcsIHBhZ2U6IG51bWJlciwgc2l6ZTogbnVtYmVyLCBzZWFyY2hLZXk6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihgJHt0aGlzLmFwaVVybH0vYXBpL3B1YmxpYy9qc29uL2NvdW50cnk/cGFnZT0ke3BhZ2V9JnNpemU9JHtzaXplfSZzZWFyY2hLZXk9JHtlbmNvZGVVUklDb21wb25lbnQoc2VhcmNoS2V5KX1gKTtcbiAgfVxuXG4gIHByb2Nlc3NDb3VudHJ5RGV0YWlscyhcbiAgICBkYXRhOiBhbnlbXSxcbiAgICBkaXNwbGF5RmxhZzogYm9vbGVhbixcbiAgICBkaXNwbGF5Q29kZTogYm9vbGVhbixcbiAgICBzaG93Q291bnRyeU5hbWU6IGJvb2xlYW5cbiAgKTogQ291bnRyeURhdGFbXSB7XG4gICAgY29uc3QgY291bnRyeURldGFpbHM6IENvdW50cnlEYXRhW10gPSBbXTtcbiAgICBkYXRhLmZvckVhY2goKGNvdW50cnkpID0+IHtcbiAgICAgIGNvbnN0IGZsYWcgPSBkaXNwbGF5RmxhZyAmJiBjb3VudHJ5LmZsYWcgPyBjb3VudHJ5LmZsYWcgOiAnJztcbiAgICAgIGNvbnN0IG5hbWUgPSBzaG93Q291bnRyeU5hbWUgPyBjb3VudHJ5Lm5hbWUgfHwgJycgOiAnJztcbiAgICAgIGNvbnN0IGlzZFJvb3QgPSBjb3VudHJ5LmlzZD8ucm9vdCB8fCAnJztcbiAgICAgIGNvbnN0IGlzZFN1ZmZpeGVzID0gY291bnRyeS5pc2Q/LnN1ZmZpeGVzIHx8IFtdO1xuICBcbiAgICAgIGlmIChpc2RSb290ICYmIGlzZFN1ZmZpeGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaXNkU3VmZml4ZXMuZm9yRWFjaCgoc3VmZml4OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBjb25zdCBpc2RDb2RlID0gYCR7aXNkUm9vdH0ke3N1ZmZpeH1gO1xuICBcbiAgICAgICAgICAvLyBTcGVjaWFsIGNhc2U6IE9ubHkgZmxhZyBzaG91bGQgYmUgZGlzcGxheWVkLCBidXQgdmFsdWUgbXVzdCBoYXZlIElTRCBjb2RlXG4gICAgICAgICAgaWYgKGRpc3BsYXlGbGFnICYmICFkaXNwbGF5Q29kZSAmJiAhc2hvd0NvdW50cnlOYW1lKSB7XG4gICAgICAgICAgICBjb3VudHJ5RGV0YWlscy5wdXNoKHtcbiAgICAgICAgICAgICAgdmFsdWU6IGlzZENvZGUsICAvLyBLZWVwIElTRCBjb2RlIGluIHZhbHVlXG4gICAgICAgICAgICAgIGxhYmVsOiAnJywgICAgICAgLy8gTm8gdGV4dCBpbiBsYWJlbFxuICAgICAgICAgICAgICBpbWFnZTogZmxhZywgICAgIC8vICBPbmx5IGZsYWcgc2hvdWxkIGJlIGRpc3BsYXllZFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEhhbmRsZSBhbGwgb3RoZXIgY2FzZXNcbiAgICAgICAgICAgIGxldCBsYWJlbCA9ICcnO1xuICAgICAgICAgICAgaWYgKHNob3dDb3VudHJ5TmFtZSkgbGFiZWwgKz0gbmFtZTtcbiAgICAgICAgICAgIGlmIChkaXNwbGF5Q29kZSkgbGFiZWwgKz0gKGxhYmVsID8gJyAnIDogJycpICsgaXNkQ29kZTtcbiAgICAgICAgICAgIGlmICghbGFiZWwpIGxhYmVsID0gaXNkQ29kZTsgLy8gRW5zdXJlIGxhYmVsIGlzIG5vdCBlbXB0eVxuICBcbiAgICAgICAgICAgIGNvdW50cnlEZXRhaWxzLnB1c2goe1xuICAgICAgICAgICAgICB2YWx1ZTogaXNkQ29kZSxcbiAgICAgICAgICAgICAgbGFiZWw6IGxhYmVsLnRyaW0oKSxcbiAgICAgICAgICAgICAgaW1hZ2U6IGZsYWcsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZmFsbGJhY2tDb2RlID0gaXNkUm9vdCB8fCBjb3VudHJ5LmNvZGUgfHwgJyc7IC8vIEZhbGxiYWNrIGlmIG5vIHN1ZmZpeGVzXG4gIFxuICAgICAgICBpZiAoZGlzcGxheUZsYWcgJiYgIWRpc3BsYXlDb2RlICYmICFzaG93Q291bnRyeU5hbWUpIHtcbiAgICAgICAgICBjb3VudHJ5RGV0YWlscy5wdXNoKHtcbiAgICAgICAgICAgIHZhbHVlOiBmYWxsYmFja0NvZGUsXG4gICAgICAgICAgICBsYWJlbDogJycsXG4gICAgICAgICAgICBpbWFnZTogZmxhZyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsZXQgbGFiZWwgPSAnJztcbiAgICAgICAgICBpZiAoc2hvd0NvdW50cnlOYW1lKSBsYWJlbCArPSBuYW1lO1xuICAgICAgICAgIGlmIChkaXNwbGF5Q29kZSkgbGFiZWwgKz0gKGxhYmVsID8gJyAnIDogJycpICsgZmFsbGJhY2tDb2RlO1xuICAgICAgICAgIGlmICghbGFiZWwpIGxhYmVsID0gZmFsbGJhY2tDb2RlO1xuICBcbiAgICAgICAgICBjb3VudHJ5RGV0YWlscy5wdXNoKHtcbiAgICAgICAgICAgIHZhbHVlOiBmYWxsYmFja0NvZGUsXG4gICAgICAgICAgICBsYWJlbDogbGFiZWwudHJpbSgpLFxuICAgICAgICAgICAgaW1hZ2U6IGZsYWcsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gY291bnRyeURldGFpbHM7XG4gIH1cbn1cbiJdfQ==
@@ -1,36 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { BehaviorSubject } from 'rxjs';
3
- import * as i0 from "@angular/core";
4
- export class DataService {
5
- constructor() {
6
- this.dataSubject = new BehaviorSubject('');
7
- this.apiUrl$ = this.dataSubject.asObservable();
8
- this.headerSubject = new BehaviorSubject({});
9
- this.header$ = this.headerSubject.asObservable();
10
- this.subformSubject = new BehaviorSubject({});
11
- this.subform$ = this.subformSubject.asObservable();
12
- this.parentQuestionsSubject = new BehaviorSubject(null);
13
- this.parentQuestions$ = this.parentQuestionsSubject.asObservable();
14
- }
15
- setApiUrl(data) {
16
- this.dataSubject.next(data);
17
- }
18
- setHeader(data) {
19
- this.headerSubject.next(data);
20
- }
21
- setParentQuestions(data) {
22
- this.parentQuestionsSubject.next(data);
23
- }
24
- setSubformData(data) {
25
- this.subformSubject.next(data);
26
- }
27
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
28
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataService, providedIn: 'root' }); }
29
- }
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataService, decorators: [{
31
- type: Injectable,
32
- args: [{
33
- providedIn: 'root',
34
- }]
35
- }], ctorParameters: function () { return []; } });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9zZXJ2aWNlcy9kYXRhLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDOztBQUtuRCxNQUFNLE9BQU8sV0FBVztJQUN0QjtRQUVRLGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDL0MsWUFBTyxHQUF1QixJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzdELGtCQUFhLEdBQUcsSUFBSSxlQUFlLENBQU0sRUFBRSxDQUFDLENBQUM7UUFDOUMsWUFBTyxHQUFvQixJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRTVELG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQU0sRUFBRSxDQUFDLENBQUM7UUFDL0MsYUFBUSxHQUFvQixJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRTlELDJCQUFzQixHQUFHLElBQUksZUFBZSxDQUFNLElBQUksQ0FBQyxDQUFDO1FBQ3pELHFCQUFnQixHQUFvQixJQUFJLENBQUMsc0JBQXNCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFYdkUsQ0FBQztJQWFoQixTQUFTLENBQUMsSUFBWTtRQUNwQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsU0FBUyxDQUFDLElBQVM7UUFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELGtCQUFrQixDQUFDLElBQVM7UUFDMUIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsY0FBYyxDQUFDLElBQVM7UUFDdEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQzsrR0E1QlUsV0FBVzttSEFBWCxXQUFXLGNBRlYsTUFBTTs7NEZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIERhdGFTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIHByaXZhdGUgZGF0YVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuICBwdWJsaWMgYXBpVXJsJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5kYXRhU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgcHJpdmF0ZSBoZWFkZXJTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KHt9KTtcbiAgcHVibGljIGhlYWRlciQ6IE9ic2VydmFibGU8YW55PiA9IHRoaXMuaGVhZGVyU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIHN1YmZvcm1TdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KHt9KTtcbiAgcHVibGljIHN1YmZvcm0kOiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLnN1YmZvcm1TdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgcGFyZW50UXVlc3Rpb25zU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcbiAgcHVibGljIHBhcmVudFF1ZXN0aW9ucyQ6IE9ic2VydmFibGU8YW55PiA9IHRoaXMucGFyZW50UXVlc3Rpb25zU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICBzZXRBcGlVcmwoZGF0YTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhU3ViamVjdC5uZXh0KGRhdGEpO1xuICB9XG5cbiAgc2V0SGVhZGVyKGRhdGE6IGFueSkge1xuICAgIHRoaXMuaGVhZGVyU3ViamVjdC5uZXh0KGRhdGEpO1xuICB9XG5cbiAgc2V0UGFyZW50UXVlc3Rpb25zKGRhdGE6IGFueSk6IHZvaWQge1xuICAgIHRoaXMucGFyZW50UXVlc3Rpb25zU3ViamVjdC5uZXh0KGRhdGEpO1xuICB9XG5cbiAgc2V0U3ViZm9ybURhdGEoZGF0YTogYW55KSB7XG4gICAgdGhpcy5zdWJmb3JtU3ViamVjdC5uZXh0KGRhdGEpO1xuICB9XG59XG4iXX0=
@@ -1,27 +0,0 @@
1
- // element-tracker.service.ts
2
- import { Injectable } from '@angular/core';
3
- import * as i0 from "@angular/core";
4
- export class ElementTrackerService {
5
- constructor() {
6
- this.elementIds = new Set();
7
- }
8
- registerElement(id) {
9
- this.elementIds.add(id);
10
- }
11
- unregisterElement(id) {
12
- this.elementIds.delete(id);
13
- }
14
- getAllElementIds() {
15
- return Array.from(this.elementIds);
16
- }
17
- clear() {
18
- this.elementIds.clear();
19
- }
20
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElementTrackerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
21
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElementTrackerService, providedIn: 'root' }); }
22
- }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElementTrackerService, decorators: [{
24
- type: Injectable,
25
- args: [{ providedIn: 'root' }]
26
- }] });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC10cmFja2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL3NlcnZpY2VzL2VsZW1lbnQtdHJhY2tlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDZCQUE2QjtBQUM3QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUkzQyxNQUFNLE9BQU8scUJBQXFCO0lBRGxDO1FBRVUsZUFBVSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7S0FpQnhDO0lBZkMsZUFBZSxDQUFDLEVBQVU7UUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQVU7UUFDMUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzFCLENBQUM7K0dBakJVLHFCQUFxQjttSEFBckIscUJBQXFCLGNBRFIsTUFBTTs7NEZBQ25CLHFCQUFxQjtrQkFEakMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBlbGVtZW50LXRyYWNrZXIuc2VydmljZS50c1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgRWxlbWVudFRyYWNrZXJTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBlbGVtZW50SWRzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgcmVnaXN0ZXJFbGVtZW50KGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmVsZW1lbnRJZHMuYWRkKGlkKTtcbiAgfVxuXG4gIHVucmVnaXN0ZXJFbGVtZW50KGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmVsZW1lbnRJZHMuZGVsZXRlKGlkKTtcbiAgfVxuXG4gIGdldEFsbEVsZW1lbnRJZHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZWxlbWVudElkcyk7XG4gIH1cblxuICBjbGVhcigpIHtcbiAgICB0aGlzLmVsZW1lbnRJZHMuY2xlYXIoKTtcbiAgfVxufSJdfQ==
@@ -1,128 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "./validation.service";
4
- export class FormValidationService {
5
- constructor(validationService) {
6
- this.validationService = validationService;
7
- }
8
- /**
9
- * Validate all required questions on a page.
10
- * Assumes your `page` object has a `pageIndex: number` property.
11
- */
12
- validateRequiredQuestions(page) {
13
- // clear any previous errors for this page
14
- // this.validationService.clearAll();
15
- const validateQuestions = (formElements, submissionContext = null) => {
16
- for (let element of formElements) {
17
- if (element.entityType === 'QUESTION') {
18
- const question = element.element;
19
- const required = question.required;
20
- const questionId = question.id;
21
- const elementType = question.formElement?.elementType;
22
- // pick up the answer (either in a subform or normal)
23
- let answer;
24
- if (submissionContext?.isInMultipleSubform) {
25
- const { submission } = submissionContext;
26
- answer = submission.answers.find((a) => a.questionId === questionId)?.answer;
27
- }
28
- else {
29
- answer = question.answer;
30
- }
31
- const isEmpty = answer === null ||
32
- answer === undefined ||
33
- (typeof answer === 'string' && answer.trim() === '') ||
34
- (typeof answer === 'object' && Object.keys(answer).length === 0);
35
- if (required && isEmpty) {
36
- const message = submissionContext?.isInMultipleSubform
37
- ? `Required question ${question.questionNumber} is not answered in a subform.`
38
- : `Required question ${question.questionNumber} is not answered.`;
39
- // register the invalid question
40
- this.validationService.setInvalid(questionId, message, page.pageIndex ?? 0);
41
- return { isValid: false, message };
42
- }
43
- // recurse into child logics
44
- if (question.childLogics) {
45
- for (let logic of question.childLogics) {
46
- if (!logic.showLogic)
47
- continue;
48
- for (let row of logic.rows) {
49
- const result = validateQuestions(row.grid, submissionContext);
50
- if (!result.isValid)
51
- return result;
52
- }
53
- }
54
- }
55
- }
56
- else if (element.entityType === 'SUBFORM') {
57
- const subform = element.element;
58
- if (subform.property?.subFormStructure === 'multiple') {
59
- const submissions = subform.submissions || [];
60
- if (submissions.length > 0) {
61
- const hasRequired = subform.rows.some((r) => r.grid.some((f) => f.entityType === 'QUESTION' && f.element.required));
62
- if (hasRequired && submissions.length === 0) {
63
- const message = `Subform "${subform.title || 'Untitled'}" is missing required submissions.`;
64
- this.validationService.setInvalid(subform.id, message, page.pageIndex ?? 0);
65
- return { isValid: false, message };
66
- }
67
- // map questions and validate only if more than one submission
68
- const questionMap = new Map();
69
- subform.rows.forEach((r) => r.grid.forEach((f) => {
70
- if (f.entityType === 'QUESTION') {
71
- questionMap.set(f.element.id, f.element);
72
- }
73
- }));
74
- for (let submission of submissions) {
75
- for (let row of subform.rows) {
76
- const result = validateQuestions(row.grid, {
77
- isInMultipleSubform: true,
78
- submission,
79
- questionMap,
80
- });
81
- if (!result.isValid)
82
- return result;
83
- }
84
- }
85
- }
86
- }
87
- else {
88
- // single‐entry subform
89
- for (let row of subform.rows || []) {
90
- const result = validateQuestions(row.grid);
91
- if (!result.isValid)
92
- return result;
93
- }
94
- }
95
- }
96
- else if ((element.entityType === 'QUESTION_GROUP' ||
97
- element.entityType === 'MULTIFIELD') &&
98
- element.element.rows) {
99
- for (let row of element.element.rows) {
100
- const result = validateQuestions(row.grid, submissionContext);
101
- if (!result.isValid)
102
- return result;
103
- }
104
- }
105
- }
106
- return { isValid: true, message: 'All required questions are answered.' };
107
- };
108
- // start validation
109
- for (const row of page.rows) {
110
- const result = validateQuestions(row.grid);
111
- if (!result.isValid) {
112
- // we already called setInvalid above
113
- return result;
114
- }
115
- }
116
- // if we get here, everything passed
117
- return { isValid: true, message: 'All required questions are answered.' };
118
- }
119
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormValidationService, deps: [{ token: i1.ValidationService }], target: i0.ɵɵFactoryTarget.Injectable }); }
120
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormValidationService, providedIn: 'root' }); }
121
- }
122
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormValidationService, decorators: [{
123
- type: Injectable,
124
- args: [{
125
- providedIn: 'root',
126
- }]
127
- }], ctorParameters: function () { return [{ type: i1.ValidationService }]; } });
128
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12YWxpZGF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL3NlcnZpY2VzL2Zvcm0tdmFsaWRhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU0zQyxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLFlBQW9CLGlCQUFvQztRQUFwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO0lBQUcsQ0FBQztJQUU1RDs7O09BR0c7SUFDSCx5QkFBeUIsQ0FBQyxJQUFTO1FBQ2pDLDBDQUEwQztRQUMxQyxxQ0FBcUM7UUFFckMsTUFBTSxpQkFBaUIsR0FBRyxDQUN4QixZQUFtQixFQUNuQixvQkFBeUIsSUFBSSxFQUNVLEVBQUU7WUFDekMsS0FBSyxJQUFJLE9BQU8sSUFBSSxZQUFZLEVBQUU7Z0JBQ2hDLElBQUksT0FBTyxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUU7b0JBQ3JDLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7b0JBQ2pDLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUM7b0JBQ25DLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUM7b0JBQy9CLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDO29CQUV0RCxxREFBcUQ7b0JBQ3JELElBQUksTUFBVyxDQUFDO29CQUNoQixJQUFJLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFO3dCQUMxQyxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsaUJBQWlCLENBQUM7d0JBQ3pDLE1BQU0sR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDOUIsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLEtBQUssVUFBVSxD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QyxHQUFHLENBQUMsSUFBSSxFQUFFLGlCQUFpQixDQUFDLENBQUM7d0JBQzlELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTzs0QkFBRSxPQUFPLE1BQU0sQ0FBQztxQkFDcEM7aUJBQ0Y7YUFDRjtZQUVELE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxDQUFDO1FBQzVFLENBQUMsQ0FBQztRQUVGLG1CQUFtQjtRQUNuQixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDM0IsTUFBTSxNQUFNLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO2dCQUNuQixxQ0FBcUM7Z0JBQ3JDLE9BQU8sTUFBTSxDQUFDO2FBQ2Y7U0FDRjtRQUVELG9DQUFvQztRQUNwQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsQ0FBQztJQUM1RSxDQUFDOytHQS9JVSxxQkFBcUI7bUhBQXJCLHFCQUFxQixjQUZwQixNQUFNOzs0RkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmFsaWRhdGlvblNlcnZpY2UgfSBmcm9tICcuL3ZhbGlkYXRpb24uc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtVmFsaWRhdGlvblNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHZhbGlkYXRpb25TZXJ2aWNlOiBWYWxpZGF0aW9uU2VydmljZSkge31cblxuICAvKipcbiAgICogVmFsaWRhdGUgYWxsIHJlcXVpcmVkIHF1ZXN0aW9ucyBvbiBhIHBhZ2UuXG4gICAqIEFzc3VtZXMgeW91ciBgcGFnZWAgb2JqZWN0IGhhcyBhIGBwYWdlSW5kZXg6IG51bWJlcmAgcHJvcGVydHkuXG4gICAqL1xuICB2YWxpZGF0ZVJlcXVpcmVkUXVlc3Rpb25zKHBhZ2U6IGFueSk6IHsgaXNWYWxpZDogYm9vbGVhbjsgbWVzc2FnZTogc3RyaW5nIH0ge1xuICAgIC8vIGNsZWFyIGFueSBwcmV2aW91cyBlcnJvcnMgZm9yIHRoaXMgcGFnZVxuICAgIC8vIHRoaXMudmFsaWRhdGlvblNlcnZpY2UuY2xlYXJBbGwoKTtcblxuICAgIGNvbnN0IHZhbGlkYXRlUXVlc3Rpb25zID0gKFxuICAgICAgZm9ybUVsZW1lbnRzOiBhbnlbXSxcbiAgICAgIHN1Ym1pc3Npb25Db250ZXh0OiBhbnkgPSBudWxsXG4gICAgKTogeyBpc1ZhbGlkOiBib29sZWFuOyBtZXNzYWdlOiBzdHJpbmcgfSA9PiB7XG4gICAgICBmb3IgKGxldCBlbGVtZW50IG9mIGZvcm1FbGVtZW50cykge1xuICAgICAgICBpZiAoZWxlbWVudC5lbnRpdHlUeXBlID09PSAnUVVFU1RJT04nKSB7XG4gICAgICAgICAgY29uc3QgcXVlc3Rpb24gPSBlbGVtZW50LmVsZW1lbnQ7XG4gICAgICAgICAgY29uc3QgcmVxdWlyZWQgPSBxdWVzdGlvbi5yZXF1aXJlZDtcbiAgICAgICAgICBjb25zdCBxdWVzdGlvbklkID0gcXVlc3Rpb24uaWQ7XG4gICAgICAgICAgY29uc3QgZWxlbWVudFR5cGUgPSBxdWVzdGlvbi5mb3JtRWxlbWVudD8uZWxlbWVudFR5cGU7XG5cbiAgICAgICAgICAvLyBwaWNrIHVwIHRoZSBhbnN3ZXIgKGVpdGhlciBpbiBhIHN1YmZvcm0gb3Igbm9ybWFsKVxuICAgICAgICAgIGxldCBhbnN3ZXI6IGFueTtcbiAgICAgICAgICBpZiAoc3VibWlzc2lvbkNvbnRleHQ/LmlzSW5NdWx0aXBsZVN1YmZvcm0pIHtcbiAgICAgICAgICAgIGNvbnN0IHsgc3VibWlzc2lvbiB9ID0gc3VibWlzc2lvbkNvbnRleHQ7XG4gICAgICAgICAgICBhbnN3ZXIgPSBzdWJtaXNzaW9uLmFuc3dlcnMuZmluZChcbiAgICAgICAgICAgICAgKGE6IGFueSkgPT4gYS5xdWVzdGlvbklkID09PSBxdWVzdGlvbklkXG4gICAgICAgICAgICApPy5hbnN3ZXI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFuc3dlciA9IHF1ZXN0aW9uLmFuc3dlcjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBpc0VtcHR5ID1cbiAgICAgICAgICAgIGFuc3dlciA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgYW5zd2VyID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICh0eXBlb2YgYW5zd2VyID09PSAnc3RyaW5nJyAmJiBhbnN3ZXIudHJpbSgpID09PSAnJykgfHxcbiAgICAgICAgICAgICh0eXBlb2YgYW5zd2VyID09PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cyhhbnN3ZXIpLmxlbmd0aCA9PT0gMCk7XG5cbiAgICAgICAgICBpZiAocmVxdWlyZWQgJiYgaXNFbXB0eSkge1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHN1Ym1pc3Npb25Db250ZXh0Py5pc0luTXVsdGlwbGVTdWJmb3JtXG4gICAgICAgICAgICAgID8gYFJlcXVpcmVkIHF1ZXN0aW9uICR7cXVlc3Rpb24ucXVlc3Rpb25OdW1iZXJ9IGlzIG5vdCBhbnN3ZXJlZCBpbiBhIHN1YmZvcm0uYFxuICAgICAgICAgICAgICA6IGBSZXF1aXJlZCBxdWVzdGlvbiAke3F1ZXN0aW9uLnF1ZXN0aW9uTnVtYmVyfSBpcyBub3QgYW5zd2VyZWQuYDtcblxuICAgICAgICAgICAgLy8gcmVnaXN0ZXIgdGhlIGludmFsaWQgcXVlc3Rpb25cbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvblNlcnZpY2Uuc2V0SW52YWxpZChcbiAgICAgICAgICAgICAgcXVlc3Rpb25JZCxcbiAgICAgICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgICAgICAgcGFnZS5wYWdlSW5kZXggPz8gMFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgcmV0dXJuIHsgaXNWYWxpZDogZmFsc2UsIG1lc3NhZ2UgfTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyByZWN1cnNlIGludG8gY2hpbGQgbG9naWNzXG4gICAgICAgICAgaWYgKHF1ZXN0aW9uLmNoaWxkTG9naWNzKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBsb2dpYyBvZiBxdWVzdGlvbi5jaGlsZExvZ2ljcykge1xuICAgICAgICAgICAgICBpZiAoIWxvZ2ljLnNob3dMb2dpYykgY29udGludWU7XG4gICAgICAgICAgICAgIGZvciAobGV0IHJvdyBvZiBsb2dpYy5yb3dzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdmFsaWRhdGVRdWVzdGlvbnMocm93LmdyaWQsIHN1Ym1pc3Npb25Db250ZXh0KTtcbiAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKSByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuZW50aXR5VHlwZSA9PT0gJ1NVQkZPUk0nKSB7XG4gICAgICAgICAgY29uc3Qgc3ViZm9ybSA9IGVsZW1lbnQuZWxlbWVudDtcblxuICAgICAgICAgIGlmIChzdWJmb3JtLnByb3BlcnR5Py5zdWJGb3JtU3RydWN0dXJlID09PSAnbXVsdGlwbGUnKSB7XG4gICAgICAgICAgICBjb25zdCBzdWJtaXNzaW9ucyA9IHN1YmZvcm0uc3VibWlzc2lvbnMgfHwgW107XG5cbiAgICAgICAgICAgIGlmIChzdWJtaXNzaW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGhhc1JlcXVpcmVkID0gc3ViZm9ybS5yb3dzLnNvbWUoKHI6IGFueSkgPT5cbiAgICAgICAgICAgICAgICByLmdyaWQuc29tZShcbiAgICAgICAgICAgICAgICAgIChmOiBhbnkpID0+IGYuZW50aXR5VHlwZSA9PT0gJ1FVRVNUSU9OJyAmJiBmLmVsZW1lbnQucmVxdWlyZWRcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgaWYgKGhhc1JlcXVpcmVkICYmIHN1Ym1pc3Npb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgU3ViZm9ybSBcIiR7XG4gICAgICAgICAgICAgICAgICBzdWJmb3JtLnRpdGxlIHx8ICdVbnRpdGxlZCdcbiAgICAgICAgICAgICAgICB9XCIgaXMgbWlzc2luZyByZXF1aXJlZCBzdWJtaXNzaW9ucy5gO1xuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvblNlcnZpY2Uuc2V0SW52YWxpZChcbiAgICAgICAgICAgICAgICAgIHN1YmZvcm0uaWQsXG4gICAgICAgICAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgcGFnZS5wYWdlSW5kZXggPz8gMFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaXNWYWxpZDogZmFsc2UsIG1lc3NhZ2UgfTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIC8vIG1hcCBxdWVzdGlvbnMgYW5kIHZhbGlkYXRlIG9ubHkgaWYgbW9yZSB0aGFuIG9uZSBzdWJtaXNzaW9uXG4gICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uTWFwID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcbiAgICAgICAgICAgICAgc3ViZm9ybS5yb3dzLmZvckVhY2goKHI6IGFueSkgPT5cbiAgICAgICAgICAgICAgICByLmdyaWQuZm9yRWFjaCgoZjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoZi5lbnRpdHlUeXBlID09PSAnUVVFU1RJT04nKSB7XG4gICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uTWFwLnNldChmLmVsZW1lbnQuaWQsIGYuZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICBmb3IgKGxldCBzdWJtaXNzaW9uIG9mIHN1Ym1pc3Npb25zKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgcm93IG9mIHN1YmZvcm0ucm93cykge1xuICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdmFsaWRhdGVRdWVzdGlvbnMocm93LmdyaWQsIHtcbiAgICAgICAgICAgICAgICAgICAgaXNJbk11bHRpcGxlU3ViZm9ybTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgc3VibWlzc2lvbixcbiAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb25NYXAsXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmlzVmFsaWQpIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHNpbmdsZeKAkGVudHJ5IHN1YmZvcm1cbiAgICAgICAgICAgIGZvciAobGV0IHJvdyBvZiBzdWJmb3JtLnJvd3MgfHwgW10pIHtcbiAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdmFsaWRhdGVRdWVzdGlvbnMocm93LmdyaWQpO1xuICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKSByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAoZWxlbWVudC5lbnRpdHlUeXBlID09PSAnUVVFU1RJT05fR1JPVVAnIHx8XG4gICAgICAgICAgICBlbGVtZW50LmVudGl0eVR5cGUgPT09ICdNVUxUSUZJRUxEJykgJiZcbiAgICAgICAgICBlbGVtZW50LmVsZW1lbnQucm93c1xuICAgICAgICApIHtcbiAgICAgICAgICBmb3IgKGxldCByb3cgb2YgZWxlbWVudC5lbGVtZW50LnJvd3MpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHZhbGlkYXRlUXVlc3Rpb25zKHJvdy5ncmlkLCBzdWJtaXNzaW9uQ29udGV4dCk7XG4gICAgICAgICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKSByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4geyBpc1ZhbGlkOiB0cnVlLCBtZXNzYWdlOiAnQWxsIHJlcXVpcmVkIHF1ZXN0aW9ucyBhcmUgYW5zd2VyZWQuJyB9O1xuICAgIH07XG5cbiAgICAvLyBzdGFydCB2YWxpZGF0aW9uXG4gICAgZm9yIChjb25zdCByb3cgb2YgcGFnZS5yb3dzKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSB2YWxpZGF0ZVF1ZXN0aW9ucyhyb3cuZ3JpZCk7XG4gICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKSB7XG4gICAgICAgIC8vIHdlIGFscmVhZHkgY2FsbGVkIHNldEludmFsaWQgYWJvdmVcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBpZiB3ZSBnZXQgaGVyZSwgZXZlcnl0aGluZyBwYXNzZWRcbiAgICByZXR1cm4geyBpc1ZhbGlkOiB0cnVlLCBtZXNzYWdlOiAnQWxsIHJlcXVpcmVkIHF1ZXN0aW9ucyBhcmUgYW5zd2VyZWQuJyB9O1xuICB9XG59XG4iXX0=