@piserve-tech/form-submission 1.3.68 → 1.3.70

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 (309) hide show
  1. package/ng-package.json +22 -0
  2. package/package.json +30 -43
  3. package/src/environment/environment.ts +6 -0
  4. package/src/form-fields/check-box-fields/check-box-fields.component.html +101 -0
  5. package/src/form-fields/check-box-fields/check-box-fields.component.scss +4 -0
  6. package/src/form-fields/check-box-fields/check-box-fields.component.spec.ts +21 -0
  7. package/src/form-fields/check-box-fields/check-box-fields.component.ts +336 -0
  8. package/src/form-fields/date-time-fields/date-time-fields.component.html +308 -0
  9. package/src/form-fields/date-time-fields/date-time-fields.component.scss +57 -0
  10. package/src/form-fields/date-time-fields/date-time-fields.component.spec.ts +21 -0
  11. package/src/form-fields/date-time-fields/date-time-fields.component.ts +460 -0
  12. package/src/form-fields/drop-down-fields/drop-down-fields.component.html +95 -0
  13. package/src/form-fields/drop-down-fields/drop-down-fields.component.scss +2 -0
  14. package/src/form-fields/drop-down-fields/drop-down-fields.component.spec.ts +21 -0
  15. package/src/form-fields/drop-down-fields/drop-down-fields.component.ts +285 -0
  16. package/src/form-fields/file-picker-fields/file-picker-fields.component.html +91 -0
  17. package/src/form-fields/file-picker-fields/file-picker-fields.component.scss +22 -0
  18. package/src/form-fields/file-picker-fields/file-picker-fields.component.spec.ts +21 -0
  19. package/src/form-fields/file-picker-fields/file-picker-fields.component.ts +131 -0
  20. package/src/form-fields/form-fields.module.ts +99 -0
  21. package/src/form-fields/location-fields/location-fields.component.html +54 -0
  22. package/src/form-fields/location-fields/location-fields.component.scss +12 -0
  23. package/src/form-fields/location-fields/location-fields.component.spec.ts +21 -0
  24. package/src/form-fields/location-fields/location-fields.component.ts +80 -0
  25. package/src/form-fields/mail-fields/mail-fields.component.html +86 -0
  26. package/src/form-fields/mail-fields/mail-fields.component.scss +2 -0
  27. package/src/form-fields/mail-fields/mail-fields.component.spec.ts +21 -0
  28. package/src/form-fields/mail-fields/mail-fields.component.ts +67 -0
  29. package/src/form-fields/mobile-fields/mobile-fields.component.html +100 -0
  30. package/src/form-fields/mobile-fields/mobile-fields.component.scss +13 -0
  31. package/src/form-fields/mobile-fields/mobile-fields.component.spec.ts +21 -0
  32. package/src/form-fields/mobile-fields/mobile-fields.component.ts +208 -0
  33. package/src/form-fields/number-fields/number-fields.component.html +89 -0
  34. package/src/form-fields/number-fields/number-fields.component.scss +7 -0
  35. package/src/form-fields/number-fields/number-fields.component.spec.ts +21 -0
  36. package/src/form-fields/number-fields/number-fields.component.ts +134 -0
  37. package/src/form-fields/password-fields/password-fields.component.html +163 -0
  38. package/src/form-fields/password-fields/password-fields.component.scss +42 -0
  39. package/src/form-fields/password-fields/password-fields.component.spec.ts +21 -0
  40. package/src/form-fields/password-fields/password-fields.component.ts +211 -0
  41. package/src/form-fields/radio-button-fields/radio-button-fields.component.html +104 -0
  42. package/src/form-fields/radio-button-fields/radio-button-fields.component.scss +8 -0
  43. package/src/form-fields/radio-button-fields/radio-button-fields.component.spec.ts +21 -0
  44. package/src/form-fields/radio-button-fields/radio-button-fields.component.ts +210 -0
  45. package/src/form-fields/rich-text-editor-fields/rich-text-editor-fields.component.html +84 -0
  46. package/src/form-fields/rich-text-editor-fields/rich-text-editor-fields.component.scss +1 -0
  47. package/src/form-fields/rich-text-editor-fields/rich-text-editor-fields.component.spec.ts +21 -0
  48. package/src/form-fields/rich-text-editor-fields/rich-text-editor-fields.component.ts +88 -0
  49. package/src/form-fields/section-fields/section-fields.component.html +4 -0
  50. package/src/form-fields/section-fields/section-fields.component.scss +4 -0
  51. package/src/form-fields/section-fields/section-fields.component.spec.ts +21 -0
  52. package/src/form-fields/section-fields/section-fields.component.ts +25 -0
  53. package/src/form-fields/selection-matrix-fields/selection-matrix-fields.component.html +114 -0
  54. package/src/form-fields/selection-matrix-fields/selection-matrix-fields.component.scss +42 -0
  55. package/src/form-fields/selection-matrix-fields/selection-matrix-fields.component.spec.ts +21 -0
  56. package/src/form-fields/selection-matrix-fields/selection-matrix-fields.component.ts +60 -0
  57. package/src/form-fields/signature-fields/signature-fields.component.html +43 -0
  58. package/src/form-fields/signature-fields/signature-fields.component.scss +1 -0
  59. package/src/form-fields/signature-fields/signature-fields.component.spec.ts +21 -0
  60. package/src/form-fields/signature-fields/signature-fields.component.ts +23 -0
  61. package/src/form-fields/slider-fields/slider-fields.component.html +66 -0
  62. package/src/form-fields/slider-fields/slider-fields.component.scss +47 -0
  63. package/src/form-fields/slider-fields/slider-fields.component.spec.ts +21 -0
  64. package/src/form-fields/slider-fields/slider-fields.component.ts +57 -0
  65. package/src/form-fields/terms-and-condition-fields/terms-and-condition-fields.component.html +52 -0
  66. package/src/form-fields/terms-and-condition-fields/terms-and-condition-fields.component.scss +77 -0
  67. package/src/form-fields/terms-and-condition-fields/terms-and-condition-fields.component.spec.ts +21 -0
  68. package/src/form-fields/terms-and-condition-fields/terms-and-condition-fields.component.ts +60 -0
  69. package/src/form-fields/text-area-fields/text-area-fields.component.html +86 -0
  70. package/src/form-fields/text-area-fields/text-area-fields.component.scss +1 -0
  71. package/src/form-fields/text-area-fields/text-area-fields.component.spec.ts +21 -0
  72. package/src/form-fields/text-area-fields/text-area-fields.component.ts +53 -0
  73. package/src/form-fields/text-fields/text-fields.component.html +32 -0
  74. package/src/form-fields/text-fields/text-fields.component.scss +16 -0
  75. package/src/form-fields/text-fields/text-fields.component.spec.ts +21 -0
  76. package/src/form-fields/text-fields/text-fields.component.ts +146 -0
  77. package/src/form-fields/toggle-switch-fields/toggle-switch-fields.component.html +60 -0
  78. package/src/form-fields/toggle-switch-fields/toggle-switch-fields.component.scss +103 -0
  79. package/src/form-fields/toggle-switch-fields/toggle-switch-fields.component.spec.ts +21 -0
  80. package/src/form-fields/toggle-switch-fields/toggle-switch-fields.component.ts +68 -0
  81. package/src/form-fields/url-fields/url-fields.component.html +130 -0
  82. package/src/form-fields/url-fields/url-fields.component.scss +11 -0
  83. package/src/form-fields/url-fields/url-fields.component.spec.ts +21 -0
  84. package/src/form-fields/url-fields/url-fields.component.ts +61 -0
  85. package/src/form-submission/form-submission.module.ts +30 -0
  86. package/src/form-submission/header/header.component.html +6 -0
  87. package/src/form-submission/header/header.component.scss +22 -0
  88. package/src/form-submission/header/header.component.spec.ts +21 -0
  89. package/src/form-submission/header/header.component.ts +10 -0
  90. package/src/form-submission/navigation-tabs/navigation-tabs.component.html +66 -0
  91. package/src/form-submission/navigation-tabs/navigation-tabs.component.scss +69 -0
  92. package/src/form-submission/navigation-tabs/navigation-tabs.component.spec.ts +21 -0
  93. package/src/form-submission/navigation-tabs/navigation-tabs.component.ts +49 -0
  94. package/src/form-submission/next-prev-navigation/next-prev-navigation.component.html +143 -0
  95. package/src/form-submission/next-prev-navigation/next-prev-navigation.component.scss +106 -0
  96. package/src/form-submission/next-prev-navigation/next-prev-navigation.component.spec.ts +21 -0
  97. package/src/form-submission/next-prev-navigation/next-prev-navigation.component.ts +38 -0
  98. package/src/form-submission/submission-container/submission-container.component.html +30 -0
  99. package/src/form-submission/submission-container/submission-container.component.scss +67 -0
  100. package/src/form-submission/submission-container/submission-container.component.spec.ts +21 -0
  101. package/src/form-submission/submission-container/submission-container.component.ts +14 -0
  102. package/src/form-submission/submit-form/submit-form.component.html +37 -0
  103. package/src/form-submission/submit-form/submit-form.component.scss +26 -0
  104. package/src/form-submission/submit-form/submit-form.component.spec.ts +21 -0
  105. package/src/form-submission/submit-form/submit-form.component.ts +683 -0
  106. package/src/lib/form-submission.component.html +8 -0
  107. package/src/lib/form-submission.component.scss +0 -0
  108. package/src/lib/form-submission.component.ts +61 -0
  109. package/src/lib/form-submission.module.ts +31 -0
  110. package/src/lib/form-submission.service.spec.ts +16 -0
  111. package/src/lib/form-submission.service.ts +9 -0
  112. package/{models/answer.model.d.ts → src/models/answer.model.ts} +8 -7
  113. package/src/models/appearance.model.ts +50 -0
  114. package/{models/attachment.model.d.ts → src/models/attachment.model.ts} +5 -5
  115. package/src/models/elementOptionAPI.model.ts +12 -0
  116. package/src/models/elementOptionAPIData.model.ts +5 -0
  117. package/src/models/elementOptionDB.model.ts +8 -0
  118. package/src/models/elementOptionDBCriteria.model.ts +7 -0
  119. package/{models/enum/condition.enum.d.ts → src/models/enum/condition.enum.ts} +16 -16
  120. package/src/models/enum/elementType .enum.ts +22 -0
  121. package/src/models/enum/entityType.enum.ts +10 -0
  122. package/{models/formConfiguration.model.d.ts → src/models/formConfiguration.model.ts} +16 -16
  123. package/src/models/formElement.model.ts +14 -0
  124. package/{models/formElementType.model.d.ts → src/models/formElementType.model.ts} +6 -5
  125. package/{models/grid.model.d.ts → src/models/grid.model.ts} +9 -8
  126. package/src/models/logic.model.ts +11 -0
  127. package/{models/option.model.d.ts → src/models/option.model.ts} +11 -11
  128. package/{models/page.model.d.ts → src/models/page.model.ts} +6 -5
  129. package/{models/publicForm.model.d.ts → src/models/publicForm.model.ts} +11 -10
  130. package/src/models/question.model.ts +19 -0
  131. package/src/models/questionAnswer.model.ts +8 -0
  132. package/src/models/response.model.ts +9 -0
  133. package/src/models/result.model.ts +5 -0
  134. package/{models/row.model.d.ts → src/models/row.model.ts} +5 -4
  135. package/src/models/section.model.ts +5 -0
  136. package/src/models/subForm.model.ts +14 -0
  137. package/{models/submission.model.d.ts → src/models/submission.model.ts} +7 -5
  138. package/{models/terms&condition.model.d.ts → src/models/terms&condition.model.ts} +5 -5
  139. package/src/models/validation.model.ts +48 -0
  140. package/{public-api.d.ts → src/public-api.ts} +7 -3
  141. package/src/question/form-elements/form-elements.component.html +22 -0
  142. package/src/question/form-elements/form-elements.component.scss +0 -0
  143. package/src/question/form-elements/form-elements.component.spec.ts +21 -0
  144. package/src/question/form-elements/form-elements.component.ts +26 -0
  145. package/src/question/multiple-subform/multiple-subform.component.html +57 -0
  146. package/src/question/multiple-subform/multiple-subform.component.scss +43 -0
  147. package/src/question/multiple-subform/multiple-subform.component.spec.ts +21 -0
  148. package/src/question/multiple-subform/multiple-subform.component.ts +307 -0
  149. package/src/question/question/question.component.html +30 -0
  150. package/src/question/question/question.component.scss +0 -0
  151. package/src/question/question/question.component.spec.ts +21 -0
  152. package/src/question/question/question.component.ts +57 -0
  153. package/src/question/question.module.ts +17 -0
  154. package/src/question/recursive-logic/recursive-logic.component.css +0 -0
  155. package/src/question/recursive-logic/recursive-logic.component.html +11 -0
  156. package/src/question/recursive-logic/recursive-logic.component.spec.ts +21 -0
  157. package/src/question/recursive-logic/recursive-logic.component.ts +20 -0
  158. package/src/question/sub-form/sub-form.component.html +55 -0
  159. package/src/question/sub-form/sub-form.component.scss +25 -0
  160. package/src/question/sub-form/sub-form.component.spec.ts +21 -0
  161. package/src/question/sub-form/sub-form.component.ts +87 -0
  162. package/src/services/countryService.ts +75 -0
  163. package/src/services/data.service.ts +30 -0
  164. package/src/services/form.service.spec.ts +16 -0
  165. package/src/services/form.service.ts +140 -0
  166. package/src/services/mapper.service.ts +382 -0
  167. package/src/services/recaptcha.service.spec.ts +16 -0
  168. package/src/services/recaptcha.service.ts +155 -0
  169. package/src/shared/shared.module.ts +41 -0
  170. package/src/styles/shared-style.scss +74 -0
  171. package/src/sub-form/sub-form.module.ts +24 -0
  172. package/src/sub-form/submission-modal/submission-modal.component.html +140 -0
  173. package/src/sub-form/submission-modal/submission-modal.component.scss +54 -0
  174. package/src/sub-form/submission-modal/submission-modal.component.spec.ts +21 -0
  175. package/src/sub-form/submission-modal/submission-modal.component.ts +84 -0
  176. package/tsconfig.lib.json +14 -0
  177. package/tsconfig.lib.prod.json +10 -0
  178. package/tsconfig.spec.json +14 -0
  179. package/environment/environment.d.ts +0 -5
  180. package/esm2022/environment/environment.mjs +0 -6
  181. package/esm2022/form-fields/check-box-fields/check-box-fields.component.mjs +0 -302
  182. package/esm2022/form-fields/date-time-fields/date-time-fields.component.mjs +0 -416
  183. package/esm2022/form-fields/drop-down-fields/drop-down-fields.component.mjs +0 -251
  184. package/esm2022/form-fields/file-picker-fields/file-picker-fields.component.mjs +0 -112
  185. package/esm2022/form-fields/form-fields.module.mjs +0 -154
  186. package/esm2022/form-fields/location-fields/location-fields.component.mjs +0 -79
  187. package/esm2022/form-fields/mail-fields/mail-fields.component.mjs +0 -71
  188. package/esm2022/form-fields/mobile-fields/mobile-fields.component.mjs +0 -176
  189. package/esm2022/form-fields/number-fields/number-fields.component.mjs +0 -126
  190. package/esm2022/form-fields/password-fields/password-fields.component.mjs +0 -195
  191. package/esm2022/form-fields/radio-button-fields/radio-button-fields.component.mjs +0 -188
  192. package/esm2022/form-fields/rich-text-editor-fields/rich-text-editor-fields.component.mjs +0 -88
  193. package/esm2022/form-fields/section-fields/section-fields.component.mjs +0 -29
  194. package/esm2022/form-fields/selection-matrix-fields/selection-matrix-fields.component.mjs +0 -64
  195. package/esm2022/form-fields/signature-fields/signature-fields.component.mjs +0 -29
  196. package/esm2022/form-fields/slider-fields/slider-fields.component.mjs +0 -58
  197. package/esm2022/form-fields/terms-and-condition-fields/terms-and-condition-fields.component.mjs +0 -63
  198. package/esm2022/form-fields/text-area-fields/text-area-fields.component.mjs +0 -56
  199. package/esm2022/form-fields/text-fields/text-fields.component.mjs +0 -142
  200. package/esm2022/form-fields/toggle-switch-fields/toggle-switch-fields.component.mjs +0 -70
  201. package/esm2022/form-fields/url-fields/url-fields.component.mjs +0 -60
  202. package/esm2022/form-submission/form-submission.module.mjs +0 -45
  203. package/esm2022/form-submission/header/header.component.mjs +0 -16
  204. package/esm2022/form-submission/navigation-tabs/navigation-tabs.component.mjs +0 -58
  205. package/esm2022/form-submission/next-prev-navigation/next-prev-navigation.component.mjs +0 -60
  206. package/esm2022/form-submission/submission-container/submission-container.component.mjs +0 -17
  207. package/esm2022/form-submission/submit-form/submit-form.component.mjs +0 -610
  208. package/esm2022/lib/form-submission.component.mjs +0 -66
  209. package/esm2022/lib/form-submission.module.mjs +0 -56
  210. package/esm2022/lib/form-submission.service.mjs +0 -14
  211. package/esm2022/models/answer.model.mjs +0 -2
  212. package/esm2022/models/appearance.model.mjs +0 -2
  213. package/esm2022/models/attachment.model.mjs +0 -2
  214. package/esm2022/models/elementOptionAPI.model.mjs +0 -2
  215. package/esm2022/models/elementOptionAPIData.model.mjs +0 -2
  216. package/esm2022/models/elementOptionDB.model.mjs +0 -2
  217. package/esm2022/models/elementOptionDBCriteria.model.mjs +0 -2
  218. package/esm2022/models/enum/condition.enum.mjs +0 -18
  219. package/esm2022/models/enum/elementType .enum.mjs +0 -24
  220. package/esm2022/models/enum/entityType.enum.mjs +0 -12
  221. package/esm2022/models/formConfiguration.model.mjs +0 -2
  222. package/esm2022/models/formElement.model.mjs +0 -2
  223. package/esm2022/models/formElementType.model.mjs +0 -2
  224. package/esm2022/models/grid.model.mjs +0 -2
  225. package/esm2022/models/logic.model.mjs +0 -2
  226. package/esm2022/models/option.model.mjs +0 -2
  227. package/esm2022/models/page.model.mjs +0 -2
  228. package/esm2022/models/publicForm.model.mjs +0 -2
  229. package/esm2022/models/question.model.mjs +0 -2
  230. package/esm2022/models/questionAnswer.model.mjs +0 -2
  231. package/esm2022/models/row.model.mjs +0 -2
  232. package/esm2022/models/section.model.mjs +0 -2
  233. package/esm2022/models/subForm.model.mjs +0 -2
  234. package/esm2022/models/submission.model.mjs +0 -2
  235. package/esm2022/models/terms&condition.model.mjs +0 -2
  236. package/esm2022/models/validation.model.mjs +0 -2
  237. package/esm2022/piserve-tech-form-submission.mjs +0 -5
  238. package/esm2022/public-api.mjs +0 -7
  239. package/esm2022/question/form-elements/form-elements.component.mjs +0 -37
  240. package/esm2022/question/multiple-subform/multiple-subform.component.mjs +0 -258
  241. package/esm2022/question/question/question.component.mjs +0 -83
  242. package/esm2022/question/recursive-logic/recursive-logic.component.mjs +0 -39
  243. package/esm2022/question/sub-form/sub-form.component.mjs +0 -107
  244. package/esm2022/services/countryService.mjs +0 -65
  245. package/esm2022/services/data.service.mjs +0 -31
  246. package/esm2022/services/form.service.mjs +0 -132
  247. package/esm2022/services/mapper.service.mjs +0 -309
  248. package/esm2022/services/recaptcha.service.mjs +0 -140
  249. package/esm2022/shared/shared.module.mjs +0 -65
  250. package/esm2022/sub-form/submission-modal/submission-modal.component.mjs +0 -97
  251. package/fesm2022/piserve-tech-form-submission.mjs +0 -4788
  252. package/fesm2022/piserve-tech-form-submission.mjs.map +0 -1
  253. package/form-fields/check-box-fields/check-box-fields.component.d.ts +0 -44
  254. package/form-fields/date-time-fields/date-time-fields.component.d.ts +0 -53
  255. package/form-fields/drop-down-fields/drop-down-fields.component.d.ts +0 -49
  256. package/form-fields/file-picker-fields/file-picker-fields.component.d.ts +0 -39
  257. package/form-fields/form-fields.module.d.ts +0 -36
  258. package/form-fields/location-fields/location-fields.component.d.ts +0 -24
  259. package/form-fields/mail-fields/mail-fields.component.d.ts +0 -19
  260. package/form-fields/mobile-fields/mobile-fields.component.d.ts +0 -58
  261. package/form-fields/number-fields/number-fields.component.d.ts +0 -25
  262. package/form-fields/password-fields/password-fields.component.d.ts +0 -36
  263. package/form-fields/radio-button-fields/radio-button-fields.component.d.ts +0 -40
  264. package/form-fields/rich-text-editor-fields/rich-text-editor-fields.component.d.ts +0 -23
  265. package/form-fields/section-fields/section-fields.component.d.ts +0 -10
  266. package/form-fields/selection-matrix-fields/selection-matrix-fields.component.d.ts +0 -20
  267. package/form-fields/signature-fields/signature-fields.component.d.ts +0 -12
  268. package/form-fields/slider-fields/slider-fields.component.d.ts +0 -24
  269. package/form-fields/terms-and-condition-fields/terms-and-condition-fields.component.d.ts +0 -25
  270. package/form-fields/text-area-fields/text-area-fields.component.d.ts +0 -20
  271. package/form-fields/text-fields/text-fields.component.d.ts +0 -32
  272. package/form-fields/toggle-switch-fields/toggle-switch-fields.component.d.ts +0 -20
  273. package/form-fields/url-fields/url-fields.component.d.ts +0 -20
  274. package/form-submission/form-submission.module.d.ts +0 -15
  275. package/form-submission/header/header.component.d.ts +0 -6
  276. package/form-submission/navigation-tabs/navigation-tabs.component.d.ts +0 -22
  277. package/form-submission/next-prev-navigation/next-prev-navigation.component.d.ts +0 -21
  278. package/form-submission/submission-container/submission-container.component.d.ts +0 -7
  279. package/form-submission/submit-form/submit-form.component.d.ts +0 -102
  280. package/index.d.ts +0 -5
  281. package/lib/form-submission.component.d.ts +0 -22
  282. package/lib/form-submission.module.d.ts +0 -16
  283. package/lib/form-submission.service.d.ts +0 -6
  284. package/models/appearance.model.d.ts +0 -50
  285. package/models/elementOptionAPI.model.d.ts +0 -11
  286. package/models/elementOptionAPIData.model.d.ts +0 -5
  287. package/models/elementOptionDB.model.d.ts +0 -7
  288. package/models/elementOptionDBCriteria.model.d.ts +0 -7
  289. package/models/enum/elementType .enum.d.ts +0 -22
  290. package/models/enum/entityType.enum.d.ts +0 -10
  291. package/models/formElement.model.d.ts +0 -14
  292. package/models/logic.model.d.ts +0 -9
  293. package/models/question.model.d.ts +0 -18
  294. package/models/questionAnswer.model.d.ts +0 -7
  295. package/models/section.model.d.ts +0 -5
  296. package/models/subForm.model.d.ts +0 -11
  297. package/models/validation.model.d.ts +0 -48
  298. package/question/form-elements/form-elements.component.d.ts +0 -14
  299. package/question/multiple-subform/multiple-subform.component.d.ts +0 -41
  300. package/question/question/question.component.d.ts +0 -23
  301. package/question/recursive-logic/recursive-logic.component.d.ts +0 -14
  302. package/question/sub-form/sub-form.component.d.ts +0 -19
  303. package/services/countryService.d.ts +0 -21
  304. package/services/data.service.d.ts +0 -16
  305. package/services/form.service.d.ts +0 -22
  306. package/services/mapper.service.d.ts +0 -10
  307. package/services/recaptcha.service.d.ts +0 -21
  308. package/shared/shared.module.d.ts +0 -18
  309. package/sub-form/submission-modal/submission-modal.component.d.ts +0 -20
@@ -0,0 +1,22 @@
1
+ {
2
+ "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
3
+ "dest": "../../dist/form-submission",
4
+ "lib": {
5
+ "entryFile": "src/public-api.ts"
6
+ },
7
+ "allowedNonPeerDependencies": [
8
+ "@kolkov/angular-editor",
9
+ "@angular/google-maps",
10
+ "@angular/material",
11
+ "@fortawesome/fontawesome-free",
12
+ "@piserve-tech/drop-down",
13
+ "@piserve-tech/file-preview",
14
+ "@piserve-tech/file-upload",
15
+ "@syncfusion/ej2-material-theme",
16
+ "@types/google.maps",
17
+ "@types/googlemaps",
18
+ "bootstrap",
19
+ "ng2-file-upload"
20
+
21
+ ]
22
+ }
package/package.json CHANGED
@@ -1,43 +1,30 @@
1
- {
2
- "name": "@piserve-tech/form-submission",
3
- "version": "1.3.68",
4
- "peerDependencies": {
5
- "@angular/common": "^16.1.0",
6
- "@angular/core": "^16.1.0"
7
- },
8
- "dependencies": {
9
- "tslib": "^2.3.0",
10
- "@kolkov/angular-editor": "^3.0.0-beta.2",
11
- "@angular/google-maps": "^16.2.14",
12
- "@angular/material": "^16.2.14",
13
- "@fortawesome/fontawesome-free": "^6.5.1",
14
- "@piserve-tech/drop-down": "^1.2.74",
15
- "@piserve-tech/file-preview": "^1.0.0",
16
- "@piserve-tech/file-upload": "^1.1.20",
17
- "@syncfusion/ej2-material-theme": "~25.1.40",
18
- "@types/google.maps": "^3.55.8",
19
- "@types/googlemaps": "^3.43.3",
20
- "bootstrap": "^5.3.2",
21
- "bootstrap-icons": "^1.11.3",
22
- "ng2-file-upload": "^5.0.0",
23
- "ngx-bootstrap": "^11.0.2"
24
- },
25
- "sideEffects": false,
26
- "repository": {
27
- "type": "git",
28
- "url": "http://192.168.1.208/form-builder/form-submission-component"
29
- },
30
- "module": "fesm2022/piserve-tech-form-submission.mjs",
31
- "typings": "index.d.ts",
32
- "exports": {
33
- "./package.json": {
34
- "default": "./package.json"
35
- },
36
- ".": {
37
- "types": "./index.d.ts",
38
- "esm2022": "./esm2022/piserve-tech-form-submission.mjs",
39
- "esm": "./esm2022/piserve-tech-form-submission.mjs",
40
- "default": "./fesm2022/piserve-tech-form-submission.mjs"
41
- }
42
- }
43
- }
1
+ {
2
+ "name": "@piserve-tech/form-submission",
3
+ "version": "1.3.70",
4
+ "peerDependencies": {
5
+ "@angular/common": "^16.1.0",
6
+ "@angular/core": "^16.1.0"
7
+ },
8
+ "dependencies": {
9
+ "tslib": "^2.3.0",
10
+ "@kolkov/angular-editor": "^3.0.0-beta.2",
11
+ "@angular/google-maps": "^16.2.14",
12
+ "@angular/material": "^16.2.14",
13
+ "@fortawesome/fontawesome-free": "^6.5.1",
14
+ "@piserve-tech/drop-down": "^1.2.74",
15
+ "@piserve-tech/file-preview": "^1.0.0",
16
+ "@piserve-tech/file-upload": "^1.1.20",
17
+ "@syncfusion/ej2-material-theme": "~25.1.40",
18
+ "@types/google.maps": "^3.55.8",
19
+ "@types/googlemaps": "^3.43.3",
20
+ "bootstrap": "^5.3.2",
21
+ "bootstrap-icons": "^1.11.3",
22
+ "ng2-file-upload": "^5.0.0",
23
+ "ngx-bootstrap": "^11.0.2"
24
+ },
25
+ "sideEffects": false,
26
+ "repository": {
27
+ "type": "git",
28
+ "url": "http://192.168.1.208/form-builder/form-submission-component"
29
+ }
30
+ }
@@ -0,0 +1,6 @@
1
+ export let environment = {
2
+ production: false,
3
+ googleRecaptchaSiteKey: '',
4
+ htmlDirection: 'ltr'
5
+ };
6
+
@@ -0,0 +1,101 @@
1
+ <div class="mb-5 px-3">
2
+ <div class="input-wrapper mb-2">
3
+ <div [innerHTML]="question.questionNumber"></div>
4
+ &nbsp;&nbsp; <label>{{ question.question }}</label
5
+ >&nbsp;
6
+ <span class="text-danger" *ngIf="required">*</span>
7
+ <div
8
+ class="svg-wrapper mb-2 hintIcon"
9
+ [attr.data-title]="hint"
10
+ *ngIf="hint"
11
+ >
12
+ <svg
13
+ class="hintSvg"
14
+ viewBox="0 0 30 30"
15
+ xmlns="http://www.w3.org/2000/svg"
16
+ >
17
+ <path
18
+ fill-rule="evenodd"
19
+ clip-rule="evenodd"
20
+ d="M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z"
21
+ stroke="#323232"
22
+ stroke-width="1.5"
23
+ stroke-linecap="round"
24
+ stroke-linejoin="round"
25
+ />
26
+ <path
27
+ d="M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291"
28
+ stroke="#323232"
29
+ stroke-width="1.5"
30
+ stroke-linecap="round"
31
+ stroke-linejoin="round"
32
+ />
33
+ <path
34
+ d="M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20"
35
+ stroke="#323232"
36
+ stroke-width="1.5"
37
+ stroke-linecap="round"
38
+ stroke-linejoin="round"
39
+ />
40
+ </svg>
41
+ </div>
42
+ </div>
43
+ <div class="form-check" *ngFor="let option of customOptions">
44
+ <input
45
+ class="form-check-input"
46
+ type="checkbox"
47
+ [id]="option.value + question?.id"
48
+ [name]="option.value + 'Checkbox'"
49
+ [value]="option.value"
50
+ (change)="onCheckboxChange(option, $event)"
51
+ [disabled]="isOptionDisabled(option)"
52
+ [checked]="selectedOptions.includes(option)"
53
+ />
54
+ <label
55
+ class="formCheckLabel ms-2 me-4 mb-2"
56
+ [for]="option.value + question?.id"
57
+ *ngIf="optionType == 'OPTION'"
58
+ >{{ option.value }}</label
59
+ >
60
+ <label
61
+ class="formCheckLabel ms-2 me-4"
62
+ [for]="option.value + question?.id"
63
+ *ngIf="optionType == 'LOOKUP' || 'DATABASE' || 'API'"
64
+ >{{ option.label }}</label
65
+ >
66
+ </div>
67
+ <div *ngIf="validationFailed" class="text-danger">
68
+ <svg
69
+ class="validationSvg"
70
+ viewBox="0 0 24 24"
71
+ xmlns="http://www.w3.org/2000/svg"
72
+ >
73
+ <path
74
+ d="M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75"
75
+ stroke="white"
76
+ stroke-width="1.5"
77
+ stroke-linecap="round"
78
+ stroke-linejoin="round"
79
+ />
80
+ <path
81
+ fill-rule="evenodd"
82
+ clip-rule="evenodd"
83
+ d="M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z"
84
+ fill="#FF0000"
85
+ stroke="#FF0000"
86
+ stroke-width="1.5"
87
+ stroke-linecap="round"
88
+ stroke-linejoin="round"
89
+ />
90
+ <path
91
+ d="M12 12.75L12 7.75"
92
+ stroke="white"
93
+ stroke-width="1.5"
94
+ stroke-linecap="round"
95
+ stroke-linejoin="round"
96
+ />
97
+ <circle cx="12" cy="16" r="1" fill="white" />
98
+ </svg>
99
+ {{ validationMessage }}
100
+ </div>
101
+ </div>
@@ -0,0 +1,4 @@
1
+ @import '../../styles/shared-style.scss';
2
+ .form-check-input ,.form-check-label{
3
+ cursor: pointer;
4
+ }
@@ -0,0 +1,21 @@
1
+ import { ComponentFixture, TestBed } from '@angular/core/testing';
2
+
3
+ import { CheckBoxFieldsComponent } from './check-box-fields.component';
4
+
5
+ describe('CheckBoxFieldsComponent', () => {
6
+ let component: CheckBoxFieldsComponent;
7
+ let fixture: ComponentFixture<CheckBoxFieldsComponent>;
8
+
9
+ beforeEach(() => {
10
+ TestBed.configureTestingModule({
11
+ declarations: [CheckBoxFieldsComponent]
12
+ });
13
+ fixture = TestBed.createComponent(CheckBoxFieldsComponent);
14
+ component = fixture.componentInstance;
15
+ fixture.detectChanges();
16
+ });
17
+
18
+ it('should create', () => {
19
+ expect(component).toBeTruthy();
20
+ });
21
+ });
@@ -0,0 +1,336 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { FormService } from '../../services/form.service';
3
+
4
+ @Component({
5
+ selector: 'lib-check-box-fields',
6
+ templateUrl: './check-box-fields.component.html',
7
+ styleUrls: ['./check-box-fields.component.scss'],
8
+ })
9
+ export class CheckBoxFieldsComponent {
10
+ @Input() question: any = {};
11
+ count: number = 0;
12
+ required: boolean = false;
13
+ hint: string = '';
14
+ selectionType: string = '';
15
+ minimumSelection?: number;
16
+ maximumSelection?: number;
17
+ optionType: string = '';
18
+ lookupTable: any = {};
19
+ customOptions: any[] = [];
20
+ database: any = {};
21
+ api: any = {};
22
+ apiOptions: any[] = [];
23
+ selectedOptions: any[] = [];
24
+ validationFailed: boolean = false;
25
+ validationMessage: string = '';
26
+
27
+ constructor(private formService: FormService) { }
28
+
29
+ ngOnInit() {
30
+ this.valueAssigned();
31
+ }
32
+
33
+ valueAssigned() {
34
+ this.count = this.question.count;
35
+ this.required = this.question.required;
36
+ this.hint = this.question.hint;
37
+ this.selectionType = this.question.formElement.appearance.selectionType;
38
+ this.minimumSelection =
39
+ this.question.formElement.validation.minimumSelection;
40
+ this.maximumSelection =
41
+ this.question.formElement.validation.maximumSelection;
42
+ this.optionType = this.question.formElement.option.optionType;
43
+ switch (this.optionType) {
44
+ case 'OPTION':
45
+ this.customOptions = this.question.formElement.option.customOptions;
46
+ if (this.question.answer) {
47
+ this.initializeCustomOption();
48
+ }
49
+ break;
50
+ case 'LOOKUP':
51
+ this.lookupTable = this.question.formElement.option.lookupTable;
52
+ this.fetchDataFromLookup();
53
+ break;
54
+ case 'DATABASE':
55
+ this.database = this.question.formElement.option.database;
56
+ this.fetchDataFromDatabase();
57
+ break;
58
+ case 'API':
59
+ this.api = this.question.formElement.option.api;
60
+ this.fetchDataFromAPI();
61
+ break;
62
+ default:
63
+ console.warn('Unknown option type:', this.optionType);
64
+ }
65
+
66
+ // If selectionType is 'SINGLE', set minimumSelection and maximumSelection to 1
67
+ if (this.selectionType === 'SINGLE') {
68
+ this.minimumSelection = 1;
69
+ this.maximumSelection = 1;
70
+ }
71
+
72
+ // If selectionType is 'MULTIPLE' and minSelection and maxSelection are not specified, set them to undefined
73
+ if (
74
+ this.selectionType === 'MULTIPLE' &&
75
+ !this.minimumSelection &&
76
+ !this.maximumSelection
77
+ ) {
78
+ this.minimumSelection = undefined;
79
+ this.maximumSelection = undefined;
80
+ }
81
+
82
+ if(this.question.childLogics && this.question.answer){
83
+ this.updateChildLogics(this.question)
84
+ }
85
+ }
86
+
87
+ initializeCustomOption() {
88
+ this.customOptions?.forEach((option: any) => {
89
+ if (this.question?.answer?.find((a: any) => a.toString() === option.value.toString())) {
90
+ this.selectedOptions.push(option);
91
+ }
92
+ })
93
+ }
94
+
95
+ onCheckboxChange(option: any, event: any) {
96
+ if (this.selectionType === 'SINGLE') {
97
+ if (event.target.checked) {
98
+ this.selectedOptions = [option];
99
+ this.question.answer = [option.value];
100
+ } else {
101
+ this.selectedOptions = [];
102
+ this.question.answer = [];
103
+ }
104
+ this.isMinimumSelectionValid();
105
+ } else if (this.selectionType === 'MULTIPLE') {
106
+ if (event.target.checked) {
107
+ if (!this.selectedOptions.includes(option)) {
108
+ this.selectedOptions.push(option);
109
+ }
110
+ } else {
111
+ this.selectedOptions = this.selectedOptions.filter(
112
+ (item) => item !== option
113
+ );
114
+ }
115
+ this.question.answer = this.selectedOptions.map((item) => item.value);
116
+ this.isMinimumSelectionValid();
117
+ }
118
+
119
+ // Check if the number of selected options exceeds the maximum allowed
120
+ if (
121
+ this.maximumSelection !== undefined &&
122
+ this.selectedOptions.length > this.maximumSelection
123
+ ) {
124
+ // If exceeded, uncheck the last selected option
125
+ event.target.checked = false;
126
+ this.selectedOptions = this.selectedOptions.filter(
127
+ (item) => item !== option
128
+ );
129
+ this.question.answer = this.selectedOptions.map((item) => item.value);
130
+ this.isMinimumSelectionValid();
131
+ }
132
+
133
+ if(this.question.childLogics){
134
+ this.updateChildLogics(this.question);
135
+ }
136
+ }
137
+
138
+ updateChildLogics(question: any) {
139
+ if (question.childLogics && Array.isArray(question.childLogics)) {
140
+ question.childLogics.forEach((childLogic: any) => {
141
+ if(this.selectionType=='SINGLE'){
142
+ if(this.selectedOptions.length==0){
143
+ childLogic.showLogic=false;
144
+ }
145
+ else{
146
+ childLogic.showLogic = this.evaluateCondition(this.selectedOptions[0]?.value, childLogic.condition, childLogic.inputValue);
147
+ }
148
+ }
149
+ else if (this.selectionType === 'MULTIPLE') {
150
+ if(this.selectedOptions.length==0){
151
+ childLogic.show=false;
152
+ }
153
+ else{
154
+ const selectedValues = this.selectedOptions.map((item: any) => item.value);
155
+ childLogic.showLogic = this.evaluateMultipleCondition(selectedValues, childLogic.condition, childLogic.inputValue);
156
+ }
157
+ }
158
+ });
159
+ }
160
+ }
161
+
162
+ evaluateCondition(answer: any[], condition: string, inputValue: any): boolean {
163
+ const stringInputValue = Array.isArray(inputValue) ? inputValue.map(val => val.toString()) : inputValue;
164
+
165
+ switch (condition) {
166
+ case "!=":
167
+ return answer !=stringInputValue;
168
+ case "=":
169
+ return answer ==stringInputValue;
170
+ case "IN":
171
+ return stringInputValue.includes(answer);
172
+ case "NOT IN":
173
+ return !(stringInputValue.includes(answer))
174
+ default:
175
+ return false;
176
+ }
177
+ }
178
+
179
+ evaluateMultipleCondition(answers: any[], condition: string, inputValue: any): boolean {
180
+ const stringInputValue = Array.isArray(inputValue) ? inputValue.map(val => val.toString()) : inputValue.toString();
181
+ switch (condition) {
182
+ case "!=":
183
+ return answers.every(answer => answer != stringInputValue);
184
+ case "=":
185
+ return answers.some(answer => answer == stringInputValue);
186
+ case "IN":
187
+ return answers.some(answer => stringInputValue.includes(answer));
188
+ case "NOT IN":
189
+ return answers.every(answer => !stringInputValue.includes(answer));
190
+ default:
191
+ return false;
192
+ }
193
+ }
194
+
195
+ fetchDataFromLookup() {
196
+ this.formService.fetchDataFromLookup(this.lookupTable).subscribe(
197
+ (response) => {
198
+ this.customOptions = response.result.values.map(
199
+ (item: { value: string; label: string }) => ({
200
+ value: item.value,
201
+ label: item.label,
202
+ })
203
+ );
204
+ if (this.question.answer) {
205
+ this.initializeCustomOption();
206
+ }
207
+ },
208
+ (error) => {
209
+ console.error('HTTP Error:', error);
210
+ }
211
+ );
212
+ }
213
+
214
+ fetchDataFromDatabase() {
215
+ const transformedDatabase = this.transformDatabaseObject(this.database);
216
+ this.formService.fetchDataFromDatabase(transformedDatabase).subscribe(
217
+ (response) => {
218
+ if (response.success) {
219
+ this.customOptions = response.result.map(
220
+ (item: { value: string; label: string }) => ({
221
+ value: item.value,
222
+ label: item.label,
223
+ })
224
+ );
225
+ if (this.question.answer) {
226
+ this.initializeCustomOption();
227
+ }
228
+ } else {
229
+ console.error('Error fetching data from database:', response.message);
230
+ }
231
+ },
232
+ (error) => {
233
+ console.error('HTTP Error:', error);
234
+ }
235
+ );
236
+ }
237
+
238
+ transformDatabaseObject(database: any) {
239
+ return {
240
+ tableName: database.tableName,
241
+ valueField: database.valueField,
242
+ labelField: database.labelField,
243
+ criteria: database.criteria.map((criteria: any) => ({
244
+ field: criteria?.field,
245
+ valueSource:criteria?.valueSource,
246
+ condition: criteria?.condition,
247
+ value: criteria?.inputValue,
248
+ logicalOperator: criteria?.logicalOperator,
249
+ })),
250
+ };
251
+ }
252
+
253
+ fetchDataFromAPI() {
254
+ const apiConfig = this.api;
255
+ this.formService.fetchDataFromExternalAPI(apiConfig).subscribe(
256
+ (response) => {
257
+ let data;
258
+ if(apiConfig.pathToValue) {
259
+ data = this.extractDataByPath(response, apiConfig.pathToValue);
260
+ } else {
261
+ data = response;
262
+ }
263
+
264
+ this.customOptions = data.map((item: any) => ({
265
+ value: item[apiConfig.valueField],
266
+ label: item[apiConfig.labelField],
267
+ }));
268
+ if (this.question.answer) {
269
+
270
+ this.initializeCustomOption();
271
+
272
+ }
273
+ },
274
+ (error) => {
275
+ console.error('HTTP Error:', error);
276
+ }
277
+ );
278
+ }
279
+
280
+ extractDataByPath(data: any, path: string) {
281
+ return path.split('.').reduce((acc, part) => acc && acc[part], data);
282
+ }
283
+
284
+ isMinimumSelectionValid() {
285
+ this.validationFailed = false;
286
+
287
+ if (this.selectedOptions.length == 0 && this.required) {
288
+ this.validationFailed = true;
289
+ this.validationMessage = 'This is a required question';
290
+ this.question.validation = false;
291
+ } else if (this.minimumSelection !== undefined) {
292
+ if(this.selectionType=='SINGLE'){
293
+ if (this.selectedOptions.length < this.minimumSelection && this.required) {
294
+ this.validationFailed = true;
295
+ this.validationMessage = `Minimum ${this.minimumSelection} selection(s) required.`;
296
+ this.question.validation = false;
297
+ }
298
+ else {
299
+ this.question.validation = true;
300
+ }
301
+ }
302
+ else{
303
+ if (this.selectedOptions.length < this.minimumSelection) {
304
+ this.validationFailed = true;
305
+ this.validationMessage = `Minimum ${this.minimumSelection} selection(s) required.`;
306
+ this.question.validation = false;
307
+ }
308
+ else {
309
+ this.question.validation = true;
310
+ }
311
+ }
312
+ } else {
313
+ this.question.validation = true;
314
+ }
315
+ }
316
+
317
+ getOptions() {
318
+ if (this.optionType === 'OPTION') {
319
+ return this.customOptions;
320
+ } else if (this.optionType === 'LOOKUP') {
321
+ return Object.values(this.lookupTable);
322
+ } else if (this.optionType === 'API') {
323
+ return this.apiOptions.map((option) => option.valueField);
324
+ } else {
325
+ return [];
326
+ }
327
+ }
328
+
329
+ isOptionDisabled(option: any): boolean {
330
+ return (
331
+ this.maximumSelection !== undefined &&
332
+ this.selectedOptions.length >= this.maximumSelection &&
333
+ !this.selectedOptions.includes(option)
334
+ );
335
+ }
336
+ }