@ukhomeoffice/cop-react-form-renderer 5.89.0 → 5.90.1

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 (384) hide show
  1. package/dist/components/CheckYourAnswers/Answer.js +15 -15
  2. package/dist/components/CheckYourAnswers/Answer.test.js +132 -181
  3. package/dist/components/CheckYourAnswers/CheckYourAnswers.js +106 -142
  4. package/dist/components/CheckYourAnswers/CheckYourAnswers.test.js +563 -941
  5. package/dist/components/CheckYourAnswers/index.js +1 -1
  6. package/dist/components/CollectionPage/CollectionPage.js +76 -66
  7. package/dist/components/CollectionPage/CollectionPage.test.js +318 -369
  8. package/dist/components/CollectionPage/index.js +1 -1
  9. package/dist/components/CollectionSummary/BannerStrip.js +15 -15
  10. package/dist/components/CollectionSummary/BannerStrip.test.js +83 -79
  11. package/dist/components/CollectionSummary/CollectionSummary.js +109 -131
  12. package/dist/components/CollectionSummary/CollectionSummary.test.js +198 -180
  13. package/dist/components/CollectionSummary/Confirmation.js +15 -13
  14. package/dist/components/CollectionSummary/Confirmation.test.js +68 -63
  15. package/dist/components/CollectionSummary/RenderListView.js +47 -55
  16. package/dist/components/CollectionSummary/RenderListView.test.js +82 -81
  17. package/dist/components/CollectionSummary/SummaryCard.js +121 -157
  18. package/dist/components/CollectionSummary/SummaryCard.test.js +970 -1000
  19. package/dist/components/CollectionSummary/SummaryCardDetails.js +103 -94
  20. package/dist/components/CollectionSummary/SummaryCardDetails.test.js +187 -195
  21. package/dist/components/CollectionSummary/SummaryCardValidationContext.js +31 -36
  22. package/dist/components/CollectionSummary/SummaryCardValidationContext.test.js +64 -76
  23. package/dist/components/CollectionSummary/index.js +1 -1
  24. package/dist/components/FormComponent/Collection.js +81 -117
  25. package/dist/components/FormComponent/Collection.scss +1 -1
  26. package/dist/components/FormComponent/Collection.test.js +910 -1082
  27. package/dist/components/FormComponent/Container.js +45 -38
  28. package/dist/components/FormComponent/Container.scss +15 -0
  29. package/dist/components/FormComponent/Container.test.js +379 -411
  30. package/dist/components/FormComponent/FormComponent.js +71 -74
  31. package/dist/components/FormComponent/FormComponent.test.js +354 -415
  32. package/dist/components/FormComponent/helpers/addLabel.js +4 -7
  33. package/dist/components/FormComponent/helpers/getComponentDisabled.js +1 -1
  34. package/dist/components/FormComponent/helpers/getComponentDisabled.test.js +8 -8
  35. package/dist/components/FormComponent/helpers/getComponentError.js +3 -5
  36. package/dist/components/FormComponent/helpers/getComponentError.test.js +15 -15
  37. package/dist/components/FormComponent/helpers/getComponentFieldSet.js +3 -4
  38. package/dist/components/FormComponent/helpers/getComponentFieldSet.test.js +7 -7
  39. package/dist/components/FormComponent/helpers/index.js +5 -5
  40. package/dist/components/FormComponent/index.js +1 -1
  41. package/dist/components/FormPage/FormPage.js +71 -87
  42. package/dist/components/FormPage/FormPage.test.js +133 -170
  43. package/dist/components/FormPage/index.js +1 -1
  44. package/dist/components/FormRenderer/FormRenderer.js +153 -198
  45. package/dist/components/FormRenderer/FormRenderer.test.js +731 -1116
  46. package/dist/components/FormRenderer/handlers/cyaAction.js +3 -3
  47. package/dist/components/FormRenderer/handlers/getPageId.js +1 -3
  48. package/dist/components/FormRenderer/handlers/getPageId.test.js +15 -15
  49. package/dist/components/FormRenderer/handlers/handlers.test.js +33 -33
  50. package/dist/components/FormRenderer/handlers/index.js +2 -2
  51. package/dist/components/FormRenderer/handlers/navigate.js +4 -4
  52. package/dist/components/FormRenderer/handlers/submissionError.js +1 -1
  53. package/dist/components/FormRenderer/helpers/canActionProceed.js +1 -1
  54. package/dist/components/FormRenderer/helpers/canActionProceed.test.js +16 -16
  55. package/dist/components/FormRenderer/helpers/canCYASubmit.js +1 -3
  56. package/dist/components/FormRenderer/helpers/canCYASubmit.test.js +17 -21
  57. package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.js +27 -30
  58. package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.test.js +21 -21
  59. package/dist/components/FormRenderer/helpers/getCYA.js +5 -7
  60. package/dist/components/FormRenderer/helpers/getCYA.test.js +12 -12
  61. package/dist/components/FormRenderer/helpers/getFormState.js +6 -8
  62. package/dist/components/FormRenderer/helpers/getFormState.test.js +11 -11
  63. package/dist/components/FormRenderer/helpers/getNextPageId.js +18 -32
  64. package/dist/components/FormRenderer/helpers/getNextPageId.test.js +68 -68
  65. package/dist/components/FormRenderer/helpers/getPage.js +2 -4
  66. package/dist/components/FormRenderer/helpers/getPage.test.js +12 -12
  67. package/dist/components/FormRenderer/helpers/getRelevantPages.js +8 -11
  68. package/dist/components/FormRenderer/helpers/getRelevantPages.test.js +15 -15
  69. package/dist/components/FormRenderer/helpers/getSubmissionStatus.js +12 -13
  70. package/dist/components/FormRenderer/helpers/getSubmissionStatus.test.js +104 -98
  71. package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.js +65 -64
  72. package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.test.js +72 -79
  73. package/dist/components/FormRenderer/helpers/index.js +2 -2
  74. package/dist/components/FormRenderer/index.js +1 -1
  75. package/dist/components/FormRenderer/onCYAAction.js +61 -54
  76. package/dist/components/FormRenderer/onCYAAction.test.js +165 -153
  77. package/dist/components/FormRenderer/onPageAction.js +45 -41
  78. package/dist/components/FormRenderer/onPageAction.test.js +225 -210
  79. package/dist/components/FormRenderer/onTaskAction.js +11 -15
  80. package/dist/components/FormRenderer/onTaskAction.test.js +94 -89
  81. package/dist/components/PageActions/ActionButton.js +13 -16
  82. package/dist/components/PageActions/ActionButton.test.js +57 -79
  83. package/dist/components/PageActions/PageActions.js +11 -11
  84. package/dist/components/PageActions/PageActions.test.js +87 -116
  85. package/dist/components/PageActions/index.js +1 -1
  86. package/dist/components/SummaryList/GroupAction.js +13 -21
  87. package/dist/components/SummaryList/GroupAction.test.js +41 -37
  88. package/dist/components/SummaryList/RowAction.js +12 -17
  89. package/dist/components/SummaryList/RowAction.test.js +41 -37
  90. package/dist/components/SummaryList/SummaryList.js +23 -28
  91. package/dist/components/SummaryList/SummaryList.test.js +179 -206
  92. package/dist/components/SummaryList/SummaryListHeadingRow.js +8 -6
  93. package/dist/components/SummaryList/SummaryListHeadingRowWithAction.js +7 -5
  94. package/dist/components/SummaryList/SummaryListRow.js +8 -6
  95. package/dist/components/SummaryList/SummaryListTitleRow.js +7 -5
  96. package/dist/components/SummaryList/helpers/getGroupActionAttributes.js +4 -6
  97. package/dist/components/SummaryList/helpers/getGroupActionAttributes.test.js +24 -24
  98. package/dist/components/SummaryList/helpers/getRowActionAttributes.js +4 -6
  99. package/dist/components/SummaryList/helpers/getRowActionAttributes.test.js +24 -24
  100. package/dist/components/SummaryList/helpers/index.js +2 -2
  101. package/dist/components/SummaryList/index.js +1 -1
  102. package/dist/components/TaskList/Task.js +20 -30
  103. package/dist/components/TaskList/Task.test.js +84 -77
  104. package/dist/components/TaskList/TaskList.js +53 -84
  105. package/dist/components/TaskList/TaskList.test.js +150 -150
  106. package/dist/components/TaskList/TaskState.js +8 -6
  107. package/dist/components/TaskList/TaskState.test.js +56 -49
  108. package/dist/components/TaskList/index.js +1 -1
  109. package/dist/components/index.js +8 -8
  110. package/dist/context/HooksContext/HooksContext.js +58 -81
  111. package/dist/context/HooksContext/HooksContext.test.js +27 -36
  112. package/dist/context/HooksContext/index.js +3 -4
  113. package/dist/context/ValidationContext/ValidationContext.js +44 -95
  114. package/dist/context/ValidationContext/ValidationContext.test.js +58 -70
  115. package/dist/context/ValidationContext/index.js +3 -4
  116. package/dist/context/index.js +3 -3
  117. package/dist/hooks/index.js +10 -11
  118. package/dist/hooks/useAxios.js +15 -41
  119. package/dist/hooks/useGetRequest.js +62 -98
  120. package/dist/hooks/useHooks.js +1 -3
  121. package/dist/hooks/useRefData.js +28 -41
  122. package/dist/hooks/useValidation.js +1 -3
  123. package/dist/index.js +14 -15
  124. package/dist/models/CollectionLabels.js +1 -1
  125. package/dist/models/ComponentTypes.js +25 -25
  126. package/dist/models/EventTypes.js +4 -4
  127. package/dist/models/FormPages.js +4 -4
  128. package/dist/models/FormTypes.js +8 -8
  129. package/dist/models/HubFormats.js +3 -3
  130. package/dist/models/PageAction.js +44 -38
  131. package/dist/models/TaskStates.js +29 -28
  132. package/dist/models/index.js +10 -10
  133. package/dist/setupTests.js +31 -32
  134. package/dist/utils/CheckYourAnswers/getCYAAction.js +5 -5
  135. package/dist/utils/CheckYourAnswers/getCYAAction.test.js +53 -55
  136. package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.js +17 -27
  137. package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.test.js +34 -36
  138. package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.js +20 -34
  139. package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.test.js +43 -45
  140. package/dist/utils/CheckYourAnswers/getCYARow.js +8 -10
  141. package/dist/utils/CheckYourAnswers/getCYARow.test.js +87 -87
  142. package/dist/utils/CheckYourAnswers/getCYARowForGroup.js +19 -25
  143. package/dist/utils/CheckYourAnswers/getCYARowForGroup.test.js +16 -17
  144. package/dist/utils/CheckYourAnswers/getCYARowsForCollection.js +39 -45
  145. package/dist/utils/CheckYourAnswers/getCYARowsForCollection.test.js +72 -75
  146. package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.js +100 -105
  147. package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.test.js +218 -182
  148. package/dist/utils/CheckYourAnswers/getCYARowsForContainer.js +26 -21
  149. package/dist/utils/CheckYourAnswers/getCYARowsForContainer.test.js +112 -106
  150. package/dist/utils/CheckYourAnswers/getCYARowsForPage.js +15 -21
  151. package/dist/utils/CheckYourAnswers/getCYARowsForPage.test.js +77 -83
  152. package/dist/utils/CheckYourAnswers/getSummaryListRowForDetails.js +13 -13
  153. package/dist/utils/CheckYourAnswers/getSummaryListRowForDetails.test.js +14 -19
  154. package/dist/utils/CheckYourAnswers/index.js +2 -2
  155. package/dist/utils/CheckYourAnswers/showComponentCYA.js +6 -6
  156. package/dist/utils/CheckYourAnswers/showComponentCYA.test.js +26 -26
  157. package/dist/utils/CollectionPage/addCollectionPageEntry.js +3 -3
  158. package/dist/utils/CollectionPage/addCollectionPageEntry.test.js +6 -6
  159. package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.js +3 -3
  160. package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.test.js +21 -22
  161. package/dist/utils/CollectionPage/duplicateCollectionPageEntry.js +15 -24
  162. package/dist/utils/CollectionPage/duplicateCollectionPageEntry.test.js +52 -43
  163. package/dist/utils/CollectionPage/getCollectionPageActiveId.js +3 -3
  164. package/dist/utils/CollectionPage/getCollectionPageActiveId.test.js +11 -11
  165. package/dist/utils/CollectionPage/getCollectionPageActiveIndex.js +7 -12
  166. package/dist/utils/CollectionPage/getCollectionPageActiveIndex.test.js +23 -23
  167. package/dist/utils/CollectionPage/getCollectionPageData.js +8 -13
  168. package/dist/utils/CollectionPage/getCollectionPageData.test.js +20 -20
  169. package/dist/utils/CollectionPage/getErrorsForCollection.js +25 -26
  170. package/dist/utils/CollectionPage/getErrorsForCollection.test.js +21 -23
  171. package/dist/utils/CollectionPage/getQuickEditPage.js +37 -32
  172. package/dist/utils/CollectionPage/getQuickEditPage.test.js +18 -22
  173. package/dist/utils/CollectionPage/index.js +2 -2
  174. package/dist/utils/CollectionPage/mergeCollectionPages.js +37 -42
  175. package/dist/utils/CollectionPage/mergeCollectionPages.test.js +26 -22
  176. package/dist/utils/CollectionPage/removeCollectionPageEntry.js +5 -7
  177. package/dist/utils/CollectionPage/removeCollectionPageEntry.test.js +11 -11
  178. package/dist/utils/CollectionPage/setCollectionPageData.js +13 -19
  179. package/dist/utils/CollectionPage/setCollectionPageData.test.js +26 -26
  180. package/dist/utils/Component/addShowWhen.js +4 -8
  181. package/dist/utils/Component/addShowWhen.test.js +38 -38
  182. package/dist/utils/Component/applyToComponentTree.js +19 -20
  183. package/dist/utils/Component/applyToComponentTree.test.js +28 -33
  184. package/dist/utils/Component/cleanAttributes.js +10 -13
  185. package/dist/utils/Component/cleanAttributes.test.js +17 -18
  186. package/dist/utils/Component/elevateNestedComponents.js +6 -7
  187. package/dist/utils/Component/elevateNestedComponents.test.js +34 -34
  188. package/dist/utils/Component/getComponent.js +90 -97
  189. package/dist/utils/Component/getComponentTests/getComponent.autocomplete.test.js +19 -18
  190. package/dist/utils/Component/getComponentTests/getComponent.calculation.test.js +50 -63
  191. package/dist/utils/Component/getComponentTests/getComponent.checkboxes.test.js +40 -49
  192. package/dist/utils/Component/getComponentTests/getComponent.date.test.js +30 -40
  193. package/dist/utils/Component/getComponentTests/getComponent.details.test.js +21 -19
  194. package/dist/utils/Component/getComponentTests/getComponent.email.test.js +18 -23
  195. package/dist/utils/Component/getComponentTests/getComponent.file.test.js +22 -27
  196. package/dist/utils/Component/getComponentTests/getComponent.heading.test.js +12 -11
  197. package/dist/utils/Component/getComponentTests/getComponent.html.test.js +18 -16
  198. package/dist/utils/Component/getComponentTests/getComponent.insetText.test.js +10 -9
  199. package/dist/utils/Component/getComponentTests/getComponent.list.test.js +18 -16
  200. package/dist/utils/Component/getComponentTests/getComponent.multifile.test.js +23 -27
  201. package/dist/utils/Component/getComponentTests/getComponent.nested.test.js +155 -175
  202. package/dist/utils/Component/getComponentTests/getComponent.paragraph.test.js +18 -16
  203. package/dist/utils/Component/getComponentTests/getComponent.phoneNumber.test.js +18 -23
  204. package/dist/utils/Component/getComponentTests/getComponent.radios.test.js +58 -73
  205. package/dist/utils/Component/getComponentTests/getComponent.select.test.js +18 -23
  206. package/dist/utils/Component/getComponentTests/getComponent.text.test.js +18 -23
  207. package/dist/utils/Component/getComponentTests/getComponent.textArea.test.js +34 -41
  208. package/dist/utils/Component/getComponentTests/getComponent.time.test.js +23 -32
  209. package/dist/utils/Component/getComponentTests/getComponent.unknown.test.js +3 -3
  210. package/dist/utils/Component/getComponentTests/getComponent.warningText.test.js +10 -9
  211. package/dist/utils/Component/getDefaultValue.js +7 -9
  212. package/dist/utils/Component/getDefaultValue.test.js +13 -13
  213. package/dist/utils/Component/getDefaultValueFromConfig.js +24 -24
  214. package/dist/utils/Component/getDefaultValueFromConfig.test.js +32 -32
  215. package/dist/utils/Component/index.js +2 -2
  216. package/dist/utils/Component/isEditable.js +2 -4
  217. package/dist/utils/Component/isEditable.test.js +14 -15
  218. package/dist/utils/Component/optionIsSelected.js +2 -4
  219. package/dist/utils/Component/optionIsSelected.test.js +12 -12
  220. package/dist/utils/Component/setupContainerComponentsPath.js +29 -31
  221. package/dist/utils/Component/setupContainerComponentsPath.test.js +16 -16
  222. package/dist/utils/Component/showComponent.js +3 -4
  223. package/dist/utils/Component/showComponent.test.js +29 -29
  224. package/dist/utils/Component/wrapInFormGroup.js +4 -4
  225. package/dist/utils/Condition/index.js +2 -2
  226. package/dist/utils/Condition/meetsAllConditions.js +9 -9
  227. package/dist/utils/Condition/meetsAllConditions.test.js +21 -21
  228. package/dist/utils/Condition/meetsCondition.js +20 -31
  229. package/dist/utils/Condition/meetsCondition.test.js +403 -403
  230. package/dist/utils/Condition/meetsOneCondition.js +6 -6
  231. package/dist/utils/Condition/meetsOneCondition.test.js +17 -17
  232. package/dist/utils/Condition/setupConditions.js +14 -19
  233. package/dist/utils/Condition/setupConditions.test.js +8 -8
  234. package/dist/utils/Container/getEditableComponents.js +4 -6
  235. package/dist/utils/Container/getEditableComponents.test.js +44 -46
  236. package/dist/utils/Container/index.js +2 -2
  237. package/dist/utils/Container/setupNesting.js +16 -22
  238. package/dist/utils/Container/setupNesting.test.js +28 -31
  239. package/dist/utils/Container/showContainer.js +4 -8
  240. package/dist/utils/Container/showContainer.test.js +31 -31
  241. package/dist/utils/Data/applyFormula.js +40 -50
  242. package/dist/utils/Data/applyFormula.test.js +26 -26
  243. package/dist/utils/Data/deleteValues.js +4 -8
  244. package/dist/utils/Data/deleteValues.test.js +11 -11
  245. package/dist/utils/Data/getAutocompleteSource.js +20 -29
  246. package/dist/utils/Data/getAutocompleteSource.test.js +81 -87
  247. package/dist/utils/Data/getDataPath.js +20 -30
  248. package/dist/utils/Data/getDataPath.test.js +20 -20
  249. package/dist/utils/Data/getOptions.js +27 -34
  250. package/dist/utils/Data/getOptions.test.js +28 -28
  251. package/dist/utils/Data/getSourceData.js +6 -19
  252. package/dist/utils/Data/getSourceData.test.js +85 -81
  253. package/dist/utils/Data/index.js +2 -2
  254. package/dist/utils/Data/nestInRefdataOptions.js +9 -16
  255. package/dist/utils/Data/nestInRefdataOptions.test.js +17 -17
  256. package/dist/utils/Data/refDataToOptions.js +11 -15
  257. package/dist/utils/Data/refDataToOptions.test.js +20 -20
  258. package/dist/utils/Data/setDataItem.js +7 -8
  259. package/dist/utils/Data/setDataItem.test.js +38 -38
  260. package/dist/utils/Data/setupFormData.js +14 -22
  261. package/dist/utils/Data/setupFormData.test.js +52 -51
  262. package/dist/utils/Data/setupRefDataUrlForComponent.js +21 -28
  263. package/dist/utils/Data/setupRefDataUrlForComponent.test.js +28 -28
  264. package/dist/utils/FormPage/applyConditionalProperties.js +6 -10
  265. package/dist/utils/FormPage/applyConditionalProperties.test.js +16 -19
  266. package/dist/utils/FormPage/getConditionalText.js +4 -4
  267. package/dist/utils/FormPage/getConditionalText.test.js +35 -35
  268. package/dist/utils/FormPage/getFormPage.js +16 -17
  269. package/dist/utils/FormPage/getFormPage.test.js +49 -48
  270. package/dist/utils/FormPage/getFormPages.js +8 -13
  271. package/dist/utils/FormPage/getFormPages.test.js +22 -25
  272. package/dist/utils/FormPage/getPageActions.js +10 -17
  273. package/dist/utils/FormPage/getPageActions.test.js +33 -33
  274. package/dist/utils/FormPage/getParagraphFromText.js +5 -7
  275. package/dist/utils/FormPage/getParagraphFromText.test.js +7 -7
  276. package/dist/utils/FormPage/index.js +3 -5
  277. package/dist/utils/FormPage/showFormPage.js +4 -8
  278. package/dist/utils/FormPage/showFormPage.test.js +33 -33
  279. package/dist/utils/FormPage/showFormPageCYA.js +3 -3
  280. package/dist/utils/FormPage/showFormPageCYA.test.js +9 -9
  281. package/dist/utils/FormPage/useComponent.js +21 -28
  282. package/dist/utils/FormPage/useComponent.test.js +78 -80
  283. package/dist/utils/Format/formatData.js +1 -1
  284. package/dist/utils/Format/formatData.test.js +19 -19
  285. package/dist/utils/Format/formatDataForComponent.js +6 -7
  286. package/dist/utils/Format/formatDataForComponent.test.js +50 -78
  287. package/dist/utils/Format/formatDataForForm.js +6 -8
  288. package/dist/utils/Format/formatDataForForm.test.js +14 -17
  289. package/dist/utils/Format/formatDataForPage.js +4 -5
  290. package/dist/utils/Format/formatDataForPage.test.js +20 -25
  291. package/dist/utils/Format/index.js +2 -2
  292. package/dist/utils/Hub/getFormHub.js +2 -2
  293. package/dist/utils/Hub/getFormHub.test.js +29 -32
  294. package/dist/utils/Hub/index.js +2 -2
  295. package/dist/utils/Meta/constants.js +2 -2
  296. package/dist/utils/Meta/documents/getDocuments.js +1 -4
  297. package/dist/utils/Meta/documents/getDocuments.test.js +25 -17
  298. package/dist/utils/Meta/documents/index.js +2 -2
  299. package/dist/utils/Meta/documents/setDocumentsForField.js +15 -17
  300. package/dist/utils/Meta/documents/setDocumentsForField.test.js +69 -35
  301. package/dist/utils/Meta/index.js +2 -2
  302. package/dist/utils/Operate/checkValueIsTruthy.js +4 -4
  303. package/dist/utils/Operate/checkValueIsTruthy.test.js +17 -17
  304. package/dist/utils/Operate/deleteValueInFormData.js +3 -3
  305. package/dist/utils/Operate/deleteValueInFormData.test.js +15 -15
  306. package/dist/utils/Operate/getFirstOf.js +8 -8
  307. package/dist/utils/Operate/getFirstOf.test.js +33 -33
  308. package/dist/utils/Operate/getIndexOfMatchingValueIn.js +12 -12
  309. package/dist/utils/Operate/getIndexOfMatchingValueIn.test.js +47 -53
  310. package/dist/utils/Operate/getLength.js +11 -11
  311. package/dist/utils/Operate/getLength.test.js +19 -19
  312. package/dist/utils/Operate/index.js +2 -2
  313. package/dist/utils/Operate/persistValueInFormData.js +6 -6
  314. package/dist/utils/Operate/persistValueInFormData.test.js +23 -21
  315. package/dist/utils/Operate/runPageOperations.js +9 -9
  316. package/dist/utils/Operate/runPageOperations.test.js +36 -37
  317. package/dist/utils/Operate/setValueInFormData.js +5 -5
  318. package/dist/utils/Operate/setValueInFormData.test.js +17 -17
  319. package/dist/utils/Operate/shouldRun.js +8 -8
  320. package/dist/utils/Operate/shouldRun.test.js +22 -28
  321. package/dist/utils/Validate/additional/conditionallyPermittedChange.js +25 -0
  322. package/dist/utils/Validate/additional/conditionallyPermittedChange.test.js +33 -0
  323. package/dist/utils/Validate/additional/conditionallyRequired.js +4 -5
  324. package/dist/utils/Validate/additional/conditionallyRequired.test.js +19 -19
  325. package/dist/utils/Validate/additional/index.js +10 -8
  326. package/dist/utils/Validate/additional/index.test.js +22 -22
  327. package/dist/utils/Validate/additional/mustBeAfter.js +3 -3
  328. package/dist/utils/Validate/additional/mustBeAfter.test.js +41 -41
  329. package/dist/utils/Validate/additional/mustBeBefore.js +3 -3
  330. package/dist/utils/Validate/additional/mustBeBefore.test.js +29 -29
  331. package/dist/utils/Validate/additional/mustBeEarlierDateTime.js +9 -14
  332. package/dist/utils/Validate/additional/mustBeEarlierDateTime.test.js +38 -42
  333. package/dist/utils/Validate/additional/mustBeGreaterThan.js +2 -2
  334. package/dist/utils/Validate/additional/mustBeGreaterThan.test.js +19 -19
  335. package/dist/utils/Validate/additional/mustBeInTheFuture.js +4 -4
  336. package/dist/utils/Validate/additional/mustBeInTheFuture.test.js +13 -13
  337. package/dist/utils/Validate/additional/mustBeInThePast.js +5 -5
  338. package/dist/utils/Validate/additional/mustBeInThePast.test.js +13 -13
  339. package/dist/utils/Validate/additional/mustBeLessThan.js +2 -2
  340. package/dist/utils/Validate/additional/mustBeLessThan.test.js +18 -18
  341. package/dist/utils/Validate/additional/mustBeLongerThan.js +1 -1
  342. package/dist/utils/Validate/additional/mustBeLongerThan.test.js +17 -17
  343. package/dist/utils/Validate/additional/mustBeNumbersOnly.js +2 -2
  344. package/dist/utils/Validate/additional/mustBeNumbersOnly.test.js +21 -21
  345. package/dist/utils/Validate/additional/mustBeOneOf.js +1 -1
  346. package/dist/utils/Validate/additional/mustBeOneOf.test.js +13 -13
  347. package/dist/utils/Validate/additional/mustBeShorterThan.js +1 -1
  348. package/dist/utils/Validate/additional/mustBeShorterThan.test.js +17 -17
  349. package/dist/utils/Validate/additional/mustBeUniqueInCollection.js +5 -5
  350. package/dist/utils/Validate/additional/mustBeUniqueInCollection.test.js +36 -40
  351. package/dist/utils/Validate/additional/mustEnterAtLeastOne.js +3 -5
  352. package/dist/utils/Validate/additional/mustEnterAtLeastOne.test.js +15 -17
  353. package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.js +1 -1
  354. package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.test.js +13 -13
  355. package/dist/utils/Validate/additional/mustNotContainSql.js +3 -4
  356. package/dist/utils/Validate/additional/mustNotContainSql.test.js +15 -15
  357. package/dist/utils/Validate/additional/mustSelectOnlyOne.js +3 -5
  358. package/dist/utils/Validate/additional/mustSelectOnlyOne.test.js +29 -27
  359. package/dist/utils/Validate/additional/utils.js +11 -24
  360. package/dist/utils/Validate/index.js +2 -2
  361. package/dist/utils/Validate/validateCollection.js +21 -27
  362. package/dist/utils/Validate/validateCollection.test.js +85 -77
  363. package/dist/utils/Validate/validateComponent.js +22 -23
  364. package/dist/utils/Validate/validateComponent.test.js +188 -165
  365. package/dist/utils/Validate/validateContainer.js +16 -21
  366. package/dist/utils/Validate/validateContainer.test.js +62 -56
  367. package/dist/utils/Validate/validateDate.js +17 -23
  368. package/dist/utils/Validate/validateDate.test.js +31 -32
  369. package/dist/utils/Validate/validateEmail.js +7 -9
  370. package/dist/utils/Validate/validateEmail.test.js +26 -26
  371. package/dist/utils/Validate/validateMultifile.js +5 -7
  372. package/dist/utils/Validate/validateMultifile.test.js +17 -18
  373. package/dist/utils/Validate/validatePage.js +20 -24
  374. package/dist/utils/Validate/validatePage.test.js +227 -215
  375. package/dist/utils/Validate/validateRegex.js +5 -8
  376. package/dist/utils/Validate/validateRegex.test.js +17 -17
  377. package/dist/utils/Validate/validateRequired.js +5 -7
  378. package/dist/utils/Validate/validateRequired.test.js +19 -19
  379. package/dist/utils/Validate/validateTextArea.js +5 -7
  380. package/dist/utils/Validate/validateTextArea.test.js +21 -21
  381. package/dist/utils/Validate/validateTime.js +12 -19
  382. package/dist/utils/Validate/validateTime.test.js +27 -27
  383. package/dist/utils/index.js +8 -10
  384. package/package.json +3 -2
@@ -2,130 +2,131 @@
2
2
 
3
3
  var _models = require("../../models");
4
4
  var _validateComponent = _interopRequireDefault(require("./validateComponent"));
5
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
7
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
8
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
9
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
10
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
11
- function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } // Local imports
12
- describe('utils.Validate.Component', function () {
13
- var setup = function setup(id, type, label, required, additionalValidation) {
14
- return {
15
- id: id,
16
- fieldId: id,
17
- type: type,
18
- label: label,
19
- required: required,
20
- additionalValidation: additionalValidation
21
- };
22
- };
23
- it('should return no error when the component is null', function () {
5
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
6
+ // Local imports
7
+
8
+ describe('utils.Validate.Component', () => {
9
+ const setup = (id, type, label, required, additionalValidation) => ({
10
+ id,
11
+ fieldId: id,
12
+ type,
13
+ label,
14
+ required,
15
+ additionalValidation
16
+ });
17
+ it('should return no error when the component is null', () => {
24
18
  expect((0, _validateComponent.default)(null, {})).toBeUndefined();
25
19
  });
26
- describe('when there is no form data', function () {
27
- it('should return no error when the component is not required and not an email type', function () {
28
- var ID = 'field';
29
- var LABEL = 'Field';
30
- var COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, false);
20
+ describe('when there is no form data', () => {
21
+ it('should return no error when the component is not required and not an email type', () => {
22
+ const ID = 'field';
23
+ const LABEL = 'Field';
24
+ const COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, false);
31
25
  expect((0, _validateComponent.default)(COMPONENT, null)).toBeUndefined();
32
26
  });
33
- it('should return a required error when the component is required and not an email type', function () {
34
- var ID = 'field';
35
- var LABEL = 'Field';
36
- var COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, true);
27
+ it('should return a required error when the component is required and not an email type', () => {
28
+ const ID = 'field';
29
+ const LABEL = 'Field';
30
+ const COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, true);
37
31
  expect((0, _validateComponent.default)(COMPONENT, null)).toEqual({
38
32
  id: ID,
39
- error: "".concat(LABEL, " is required")
33
+ error: `${LABEL} is required`
40
34
  });
41
35
  });
42
- it('should return a required error when the component is required and of type email', function () {
43
- var ID = 'field';
44
- var LABEL = 'Field';
45
- var COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, true);
36
+ it('should return a required error when the component is required and of type email', () => {
37
+ const ID = 'field';
38
+ const LABEL = 'Field';
39
+ const COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, true);
46
40
  expect((0, _validateComponent.default)(COMPONENT, null)).toEqual({
47
41
  id: ID,
48
- error: "".concat(LABEL, " is required")
42
+ error: `${LABEL} is required`
49
43
  });
50
44
  });
51
- it('should return a required error when the component is required and of type collection summary', function () {
52
- var ID = 'field';
53
- var LABEL = 'Field';
54
- var COMPONENT = _objectSpread(_objectSpread({}, setup(ID, _models.ComponentTypes.COLLECTION_SUMMARY, LABEL, true)), {}, {
45
+ it('should return a required error when the component is required and of type collection summary', () => {
46
+ const ID = 'field';
47
+ const LABEL = 'Field';
48
+ const COMPONENT = {
49
+ ...setup(ID, _models.ComponentTypes.COLLECTION_SUMMARY, LABEL, true),
55
50
  collectionName: 'testCollection'
56
- });
51
+ };
57
52
  expect((0, _validateComponent.default)(COMPONENT, {})).toEqual({
58
53
  id: ID,
59
- error: "".concat(LABEL, " is required")
54
+ error: `${LABEL} is required`
60
55
  });
61
56
  });
62
- it('should return no error when the component is of type email but not required', function () {
63
- var ID = 'field';
64
- var LABEL = 'Field';
65
- var COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, false);
57
+ it('should return no error when the component is of type email but not required', () => {
58
+ const ID = 'field';
59
+ const LABEL = 'Field';
60
+ const COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, false);
66
61
  expect((0, _validateComponent.default)(COMPONENT, null)).toBeUndefined();
67
62
  });
68
63
  });
69
- describe('when the value is fully valid', function () {
70
- var ID = 'field';
71
- var DATA = _defineProperty({}, ID, 'alpha.bravo@digital.homeoffice.gov.uk');
72
- it('should return no error when the component is not required and not an email type', function () {
73
- var LABEL = 'Field';
74
- var COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, false);
64
+ describe('when the value is fully valid', () => {
65
+ const ID = 'field';
66
+ const DATA = {
67
+ [ID]: 'alpha.bravo@digital.homeoffice.gov.uk'
68
+ };
69
+ it('should return no error when the component is not required and not an email type', () => {
70
+ const LABEL = 'Field';
71
+ const COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, false);
75
72
  expect((0, _validateComponent.default)(COMPONENT, DATA)).toBeUndefined();
76
73
  });
77
- it('should return no error when the component is required and not an email type', function () {
78
- var LABEL = 'Field';
79
- var COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, true);
74
+ it('should return no error when the component is required and not an email type', () => {
75
+ const LABEL = 'Field';
76
+ const COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, true);
80
77
  expect((0, _validateComponent.default)(COMPONENT, DATA)).toBeUndefined();
81
78
  });
82
- it('should return no error when the component is required and of type email', function () {
83
- var LABEL = 'Field';
84
- var COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, true);
79
+ it('should return no error when the component is required and of type email', () => {
80
+ const LABEL = 'Field';
81
+ const COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, true);
85
82
  expect((0, _validateComponent.default)(COMPONENT, DATA)).toBeUndefined();
86
83
  });
87
- it('should return no error when the component is of type email but not required', function () {
88
- var LABEL = 'Field';
89
- var COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, false);
84
+ it('should return no error when the component is of type email but not required', () => {
85
+ const LABEL = 'Field';
86
+ const COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, false);
90
87
  expect((0, _validateComponent.default)(COMPONENT, DATA)).toBeUndefined();
91
88
  });
92
89
  });
93
- describe('when the value is an invalid email', function () {
94
- var ID = 'field';
95
- var DATA = _defineProperty({}, ID, 'alpha.bravo@hotmail.com');
96
- it('should return no error when the component is not required and not an email type', function () {
97
- var LABEL = 'Field';
98
- var COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, false);
90
+ describe('when the value is an invalid email', () => {
91
+ const ID = 'field';
92
+ const DATA = {
93
+ [ID]: 'alpha.bravo@hotmail.com'
94
+ };
95
+ it('should return no error when the component is not required and not an email type', () => {
96
+ const LABEL = 'Field';
97
+ const COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, false);
99
98
  expect((0, _validateComponent.default)(COMPONENT, DATA)).toBeUndefined();
100
99
  });
101
- it('should return no error when the component is required and not an email type', function () {
102
- var LABEL = 'Field';
103
- var COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, true);
100
+ it('should return no error when the component is required and not an email type', () => {
101
+ const LABEL = 'Field';
102
+ const COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, true);
104
103
  expect((0, _validateComponent.default)(COMPONENT, DATA)).toBeUndefined();
105
104
  });
106
- it('should return no error when the component is required and of type email', function () {
107
- var LABEL = 'Field';
108
- var COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, true);
105
+ it('should return no error when the component is required and of type email', () => {
106
+ const LABEL = 'Field';
107
+ const COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, true);
109
108
  expect((0, _validateComponent.default)(COMPONENT, DATA)).toEqual({
110
109
  id: ID,
111
- error: "Enter ".concat(LABEL.toLowerCase(), " in the correct format, like jane.doe@homeoffice.gov.uk")
110
+ error: `Enter ${LABEL.toLowerCase()} in the correct format, like jane.doe@homeoffice.gov.uk`
112
111
  });
113
112
  });
114
- it('should return no error when the component is of type email but not required', function () {
115
- var LABEL = 'Field';
116
- var COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, false);
113
+ it('should return no error when the component is of type email but not required', () => {
114
+ const LABEL = 'Field';
115
+ const COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, false);
117
116
  expect((0, _validateComponent.default)(COMPONENT, DATA)).toEqual({
118
117
  id: ID,
119
- error: "Enter ".concat(LABEL.toLowerCase(), " in the correct format, like jane.doe@homeoffice.gov.uk")
118
+ error: `Enter ${LABEL.toLowerCase()} in the correct format, like jane.doe@homeoffice.gov.uk`
120
119
  });
121
120
  });
122
121
  });
123
- describe('when the component is a Date Input', function () {
124
- var ID = 'field';
125
- it('should always reject invalid dates', function () {
126
- var LABEL = 'Field';
127
- var COMPONENT = setup(ID, _models.ComponentTypes.DATE, LABEL, false);
128
- var DATA = _defineProperty({}, ID, '25-45-2033');
122
+ describe('when the component is a Date Input', () => {
123
+ const ID = 'field';
124
+ it('should always reject invalid dates', () => {
125
+ const LABEL = 'Field';
126
+ const COMPONENT = setup(ID, _models.ComponentTypes.DATE, LABEL, false);
127
+ const DATA = {
128
+ [ID]: '25-45-2033'
129
+ };
129
130
  expect((0, _validateComponent.default)(COMPONENT, DATA)).toEqual({
130
131
  error: 'Month must be between 1 and 12',
131
132
  id: ID,
@@ -134,16 +135,18 @@ describe('utils.Validate.Component', function () {
134
135
  }
135
136
  });
136
137
  });
137
- it('should apply optional validators when specified', function () {
138
- var LABEL = 'Field';
139
- var DATA = _defineProperty({}, ID, '25-3-3033');
140
- var ADDITIONAL_VALIDATION = [{
138
+ it('should apply optional validators when specified', () => {
139
+ const LABEL = 'Field';
140
+ const DATA = {
141
+ [ID]: '25-3-3033'
142
+ };
143
+ const ADDITIONAL_VALIDATION = [{
141
144
  function: 'mustBeBefore',
142
145
  value: 3,
143
146
  unit: 'day',
144
147
  message: 'Date must be less than 3 days in the future'
145
148
  }];
146
- var COMPONENT = setup(ID, _models.ComponentTypes.DATE, LABEL, false, ADDITIONAL_VALIDATION);
149
+ const COMPONENT = setup(ID, _models.ComponentTypes.DATE, LABEL, false, ADDITIONAL_VALIDATION);
147
150
  expect((0, _validateComponent.default)(COMPONENT, DATA)).toEqual({
148
151
  error: 'Date must be less than 3 days in the future',
149
152
  id: ID,
@@ -155,12 +158,14 @@ describe('utils.Validate.Component', function () {
155
158
  });
156
159
  });
157
160
  });
158
- describe('when the component is a Time Input', function () {
159
- var ID = 'field';
160
- it('should always reject invalid time', function () {
161
- var LABEL = 'Field';
162
- var COMPONENT = setup(ID, _models.ComponentTypes.TIME, LABEL, false);
163
- var DATA = _defineProperty({}, ID, '25:45');
161
+ describe('when the component is a Time Input', () => {
162
+ const ID = 'field';
163
+ it('should always reject invalid time', () => {
164
+ const LABEL = 'Field';
165
+ const COMPONENT = setup(ID, _models.ComponentTypes.TIME, LABEL, false);
166
+ const DATA = {
167
+ [ID]: '25:45'
168
+ };
164
169
  expect((0, _validateComponent.default)(COMPONENT, DATA)).toEqual({
165
170
  error: 'Hour must be between 0 and 23',
166
171
  id: ID,
@@ -170,26 +175,30 @@ describe('utils.Validate.Component', function () {
170
175
  });
171
176
  });
172
177
  });
173
- describe('when the component is a container', function () {
174
- it('should return an empty array when the container has only valid components', function () {
175
- var EMAIL_ID = 'email';
176
- var EMAIL_LABEL = 'Email';
177
- var EMAIL = setup(EMAIL_ID, _models.ComponentTypes.EMAIL, EMAIL_LABEL, false);
178
- var ID = 'container';
179
- var LABEL = 'field';
180
- var CONTAINER = setup(ID, _models.ComponentTypes.CONTAINER, LABEL, false);
178
+ describe('when the component is a container', () => {
179
+ it('should return an empty array when the container has only valid components', () => {
180
+ const EMAIL_ID = 'email';
181
+ const EMAIL_LABEL = 'Email';
182
+ const EMAIL = setup(EMAIL_ID, _models.ComponentTypes.EMAIL, EMAIL_LABEL, false);
183
+ const ID = 'container';
184
+ const LABEL = 'field';
185
+ const CONTAINER = setup(ID, _models.ComponentTypes.CONTAINER, LABEL, false);
181
186
  CONTAINER.components = [EMAIL];
182
- var DATA = _defineProperty({}, ID, _defineProperty({}, EMAIL_ID, 'alpha.bravo@digital.homeoffice.gov.uk'));
187
+ const DATA = {
188
+ [ID]: {
189
+ [EMAIL_ID]: 'alpha.bravo@digital.homeoffice.gov.uk'
190
+ }
191
+ };
183
192
  expect((0, _validateComponent.default)(CONTAINER, DATA)).toEqual([]);
184
193
  });
185
- it('should return an empty array when the container has only valid components', function () {
186
- var TEXT_COMPONENT = {
194
+ it('should return an empty array when the container has only valid components', () => {
195
+ const TEXT_COMPONENT = {
187
196
  id: 'one',
188
197
  fieldId: 'one',
189
198
  type: _models.ComponentTypes.TEXT,
190
199
  label: 'Text component one'
191
200
  };
192
- var TEXT_COMPONENT_TWO = {
201
+ const TEXT_COMPONENT_TWO = {
193
202
  id: 'two',
194
203
  fieldId: 'two',
195
204
  type: _models.ComponentTypes.TEXT,
@@ -201,38 +210,48 @@ describe('utils.Validate.Component', function () {
201
210
  value: 'other'
202
211
  }
203
212
  };
204
- var ID = 'container';
205
- var LABEL = 'field';
206
- var CONTAINER = setup(ID, _models.ComponentTypes.CONTAINER, LABEL, false);
213
+ const ID = 'container';
214
+ const LABEL = 'field';
215
+ const CONTAINER = setup(ID, _models.ComponentTypes.CONTAINER, LABEL, false);
207
216
  CONTAINER.components = [TEXT_COMPONENT, TEXT_COMPONENT_TWO];
208
- var DATA = _defineProperty({}, ID, {
209
- one: 'other'
210
- });
211
- var errors = (0, _validateComponent.default)(CONTAINER, DATA, {
217
+ const DATA = {
218
+ [ID]: {
219
+ one: 'other'
220
+ }
221
+ };
222
+ const errors = (0, _validateComponent.default)(CONTAINER, DATA, {
212
223
  colour: 'blue'
213
224
  });
214
225
  expect(errors.length).toEqual(1);
215
226
  });
216
227
  });
217
- describe('when the component is a collection', function () {
218
- it('should return an empty array when the collection has only valid items', function () {
219
- var EMAIL_ID = 'email';
220
- var EMAIL_LABEL = 'Email';
221
- var EMAIL = setup(EMAIL_ID, _models.ComponentTypes.EMAIL, EMAIL_LABEL, false);
222
- var ID = 'collection';
223
- var LABEL = 'field';
224
- var COLLECTION = setup(ID, _models.ComponentTypes.COLLECTION, LABEL, false);
228
+ describe('when the component is a collection', () => {
229
+ it('should return an empty array when the collection has only valid items', () => {
230
+ const EMAIL_ID = 'email';
231
+ const EMAIL_LABEL = 'Email';
232
+ const EMAIL = setup(EMAIL_ID, _models.ComponentTypes.EMAIL, EMAIL_LABEL, false);
233
+ const ID = 'collection';
234
+ const LABEL = 'field';
235
+ const COLLECTION = setup(ID, _models.ComponentTypes.COLLECTION, LABEL, false);
225
236
  COLLECTION.item = [EMAIL];
226
- var DATA = _defineProperty({}, ID, [_defineProperty({}, EMAIL_ID, 'alpha.bravo@homeoffice.gov.uk'), _defineProperty({}, EMAIL_ID, 'charlie.delta@homeoffice.gov.uk')]);
237
+ const DATA = {
238
+ [ID]: [{
239
+ [EMAIL_ID]: 'alpha.bravo@homeoffice.gov.uk'
240
+ }, {
241
+ [EMAIL_ID]: 'charlie.delta@homeoffice.gov.uk'
242
+ }]
243
+ };
227
244
  expect((0, _validateComponent.default)(COLLECTION, DATA)).toEqual([]);
228
245
  });
229
246
  });
230
- describe('when the component has a nested component', function () {
231
- it('should return no error when the radio component contains nested components without errors', function () {
232
- var NESTED_ID = 'nestedId';
233
- var NESTED_VALUE = 'nestedValue';
234
- var FORMDATA = _defineProperty({}, NESTED_ID, NESTED_VALUE);
235
- var COMPONENT = {
247
+ describe('when the component has a nested component', () => {
248
+ it('should return no error when the radio component contains nested components without errors', () => {
249
+ const NESTED_ID = 'nestedId';
250
+ const NESTED_VALUE = 'nestedValue';
251
+ const FORMDATA = {
252
+ [NESTED_ID]: NESTED_VALUE
253
+ };
254
+ const COMPONENT = {
236
255
  type: 'radios',
237
256
  id: 'a',
238
257
  data: {
@@ -248,10 +267,10 @@ describe('utils.Validate.Component', function () {
248
267
  };
249
268
  expect((0, _validateComponent.default)(COMPONENT, undefined, FORMDATA)).toBeUndefined();
250
269
  });
251
- it('should return an error when the radio component contains nested components with errors', function () {
252
- var NESTED_ID = 'nestedId';
253
- var FORMDATA = {};
254
- var COMPONENT = {
270
+ it('should return an error when the radio component contains nested components with errors', () => {
271
+ const NESTED_ID = 'nestedId';
272
+ const FORMDATA = {};
273
+ const COMPONENT = {
255
274
  type: 'radios',
256
275
  id: 'a',
257
276
  data: {
@@ -266,13 +285,13 @@ describe('utils.Validate.Component', function () {
266
285
  }
267
286
  };
268
287
  expect((0, _validateComponent.default)(COMPONENT, undefined, FORMDATA)).toEqual([{
269
- id: "nestedId",
270
- error: "Field is required"
288
+ id: `nestedId`,
289
+ error: `Field is required`
271
290
  }]);
272
291
  });
273
- it('should return no error when a non selected radio component contains nested components with errors', function () {
274
- var NESTED_ID = 'nestedId';
275
- var COMPONENT = {
292
+ it('should return no error when a non selected radio component contains nested components with errors', () => {
293
+ const NESTED_ID = 'nestedId';
294
+ const COMPONENT = {
276
295
  type: 'radios',
277
296
  id: 'a',
278
297
  data: {
@@ -289,11 +308,13 @@ describe('utils.Validate.Component', function () {
289
308
  };
290
309
  expect((0, _validateComponent.default)(COMPONENT, undefined, {})).toBeUndefined();
291
310
  });
292
- it('should return no error when the checkbox component contains nested components without errors', function () {
293
- var NESTED_ID = 'nestedId';
294
- var NESTED_VALUE = 'nestedValue';
295
- var FORMDATA = _defineProperty({}, NESTED_ID, NESTED_VALUE);
296
- var COMPONENT = {
311
+ it('should return no error when the checkbox component contains nested components without errors', () => {
312
+ const NESTED_ID = 'nestedId';
313
+ const NESTED_VALUE = 'nestedValue';
314
+ const FORMDATA = {
315
+ [NESTED_ID]: NESTED_VALUE
316
+ };
317
+ const COMPONENT = {
297
318
  type: 'checkboxes',
298
319
  id: 'a',
299
320
  data: {
@@ -309,13 +330,13 @@ describe('utils.Validate.Component', function () {
309
330
  };
310
331
  expect((0, _validateComponent.default)(COMPONENT, undefined, FORMDATA)).toBeUndefined();
311
332
  });
312
- it('should return an error when the checkbox component contains nested components with errors', function () {
313
- var NESTED_ID = 'nestedId';
314
- var OPTION_VALUE = 'optionValue';
315
- var FORMDATA = {
333
+ it('should return an error when the checkbox component contains nested components with errors', () => {
334
+ const NESTED_ID = 'nestedId';
335
+ const OPTION_VALUE = 'optionValue';
336
+ const FORMDATA = {
316
337
  'a': [OPTION_VALUE]
317
338
  };
318
- var COMPONENT = {
339
+ const COMPONENT = {
319
340
  type: 'checkboxes',
320
341
  id: 'a',
321
342
  data: {
@@ -332,17 +353,18 @@ describe('utils.Validate.Component', function () {
332
353
  };
333
354
  expect((0, _validateComponent.default)(COMPONENT, undefined, FORMDATA)).toEqual([{
334
355
  id: NESTED_ID,
335
- error: "Field is required"
356
+ error: `Field is required`
336
357
  }]);
337
358
  });
338
- it('should return no error when a non selected checkbox component contains nested components with errors', function () {
339
- var NESTED_ID_NOT_SELECTED = 'nestedIdNotSelected';
340
- var NESTED_ID_SELECTED = 'nestedIdSelected';
341
- var NESTED_VALUE_SELECTED = 'nestedValueSelected';
342
- var FORMDATA = _defineProperty({
343
- 'a': ['optionValueSelected']
344
- }, NESTED_ID_SELECTED, NESTED_VALUE_SELECTED);
345
- var COMPONENT = {
359
+ it('should return no error when a non selected checkbox component contains nested components with errors', () => {
360
+ const NESTED_ID_NOT_SELECTED = 'nestedIdNotSelected';
361
+ const NESTED_ID_SELECTED = 'nestedIdSelected';
362
+ const NESTED_VALUE_SELECTED = 'nestedValueSelected';
363
+ const FORMDATA = {
364
+ 'a': ['optionValueSelected'],
365
+ [NESTED_ID_SELECTED]: NESTED_VALUE_SELECTED
366
+ };
367
+ const COMPONENT = {
346
368
  type: 'checkboxes',
347
369
  id: 'a',
348
370
  data: {
@@ -369,16 +391,17 @@ describe('utils.Validate.Component', function () {
369
391
  };
370
392
  expect((0, _validateComponent.default)(COMPONENT, undefined, FORMDATA)).toBeUndefined();
371
393
  });
372
- it('should return no error when all selected checkbox components contains nested components without errors', function () {
373
- var _FORMDATA4;
374
- var NESTED_ID_SELECTED_1 = 'nestedIdSelected1';
375
- var NESTED_ID_SELECTED_2 = 'nestedIdSelected2';
376
- var NESTED_VALUE_SELECTED_1 = 'nestedValueSelected1';
377
- var NESTED_VALUE_SELECTED_2 = 'nestedValueSelected2';
378
- var FORMDATA = (_FORMDATA4 = {
379
- 'a': ['optionValueSelected1', 'optionValueSelected2']
380
- }, _defineProperty(_FORMDATA4, NESTED_ID_SELECTED_1, NESTED_VALUE_SELECTED_1), _defineProperty(_FORMDATA4, NESTED_ID_SELECTED_2, NESTED_VALUE_SELECTED_2), _FORMDATA4);
381
- var COMPONENT = {
394
+ it('should return no error when all selected checkbox components contains nested components without errors', () => {
395
+ const NESTED_ID_SELECTED_1 = 'nestedIdSelected1';
396
+ const NESTED_ID_SELECTED_2 = 'nestedIdSelected2';
397
+ const NESTED_VALUE_SELECTED_1 = 'nestedValueSelected1';
398
+ const NESTED_VALUE_SELECTED_2 = 'nestedValueSelected2';
399
+ const FORMDATA = {
400
+ 'a': ['optionValueSelected1', 'optionValueSelected2'],
401
+ [NESTED_ID_SELECTED_1]: NESTED_VALUE_SELECTED_1,
402
+ [NESTED_ID_SELECTED_2]: NESTED_VALUE_SELECTED_2
403
+ };
404
+ const COMPONENT = {
382
405
  type: 'checkboxes',
383
406
  id: 'a',
384
407
  data: {
@@ -7,13 +7,9 @@ exports.default = void 0;
7
7
  var _elevateNestedComponents = _interopRequireDefault(require("../Component/elevateNestedComponents"));
8
8
  var _validateComponent = _interopRequireDefault(require("./validateComponent"));
9
9
  var _additional = _interopRequireDefault(require("./additional"));
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
12
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
15
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
16
- function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } // Local imports
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
+ // Local imports
12
+
17
13
  /**
18
14
  * Validates all components within a container.
19
15
  * @param {object} container The container to validate.
@@ -21,34 +17,33 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
21
17
  * @param {object} formData The data at the top level of the form.
22
18
  * @returns Errors for all components within the container.
23
19
  */
24
- var validateContainer = function validateContainer(container, outerData, formData) {
20
+ const validateContainer = (container, outerData, formData) => {
25
21
  if (!container) {
26
22
  return [];
27
23
  }
28
- var fd = formData || outerData;
29
- var error = (0, _additional.default)(container, fd);
24
+ const fd = formData || outerData;
25
+ const error = (0, _additional.default)(container, fd);
30
26
  if (error) {
31
27
  return {
32
28
  id: container.id,
33
- error: error
29
+ error
34
30
  };
35
31
  }
36
- var errors = [];
32
+ const errors = [];
37
33
  if (Array.isArray(container.components)) {
38
- var containerData = outerData && container.fieldId ? outerData[container.fieldId] : outerData;
39
- var fullContainerComponents = (0, _elevateNestedComponents.default)(container.components, containerData);
40
- fullContainerComponents.forEach(function (component) {
34
+ const containerData = outerData && container.fieldId ? outerData[container.fieldId] : outerData;
35
+ const fullContainerComponents = (0, _elevateNestedComponents.default)(container.components, containerData);
36
+ fullContainerComponents.forEach(component => {
41
37
  // It is possible that the container being passed in is a
42
38
  // dummy container just for validation. In that scenario we want
43
39
  // to ignore the full_path and just use the component's fieldId.
44
- var fullPath = container.full_path || container.fieldId ? "".concat(container.full_path || container.fieldId, ".").concat(component.fieldId) : component.fieldId;
45
- errors.push((0, _validateComponent.default)(_objectSpread(_objectSpread({}, component), {}, {
40
+ const fullPath = container.full_path || container.fieldId ? `${container.full_path || container.fieldId}.${component.fieldId}` : component.fieldId;
41
+ errors.push((0, _validateComponent.default)({
42
+ ...component,
46
43
  full_path: fullPath
47
- }), containerData, fd));
44
+ }, containerData, fd));
48
45
  });
49
46
  }
50
- return errors.flat(1).filter(function (e) {
51
- return !!e;
52
- });
47
+ return errors.flat(1).filter(e => !!e);
53
48
  };
54
49
  var _default = exports.default = validateContainer;