@ukhomeoffice/cop-react-form-renderer 6.5.1-peter → 6.7.0-alpha

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 (390) hide show
  1. package/dist/components/CheckYourAnswers/Answer.js +12 -12
  2. package/dist/components/CheckYourAnswers/Answer.test.js +92 -127
  3. package/dist/components/CheckYourAnswers/CheckYourAnswers.js +101 -131
  4. package/dist/components/CheckYourAnswers/CheckYourAnswers.test.js +463 -769
  5. package/dist/components/CollectionPage/CollectionPage.js +73 -63
  6. package/dist/components/CollectionPage/CollectionPage.test.js +316 -366
  7. package/dist/components/CollectionSummary/BannerStrip.js +13 -13
  8. package/dist/components/CollectionSummary/BannerStrip.test.js +80 -76
  9. package/dist/components/CollectionSummary/CollectionSummary.js +97 -107
  10. package/dist/components/CollectionSummary/CollectionSummary.test.js +152 -142
  11. package/dist/components/CollectionSummary/Confirmation.js +14 -12
  12. package/dist/components/CollectionSummary/Confirmation.test.js +68 -63
  13. package/dist/components/CollectionSummary/RenderListView.js +45 -51
  14. package/dist/components/CollectionSummary/RenderListView.test.js +78 -77
  15. package/dist/components/CollectionSummary/SummaryCard.js +104 -135
  16. package/dist/components/CollectionSummary/SummaryCard.test.js +930 -962
  17. package/dist/components/CollectionSummary/SummaryCardDetails.js +72 -71
  18. package/dist/components/CollectionSummary/SummaryCardDetails.test.js +128 -135
  19. package/dist/components/CollectionSummary/SummaryCardValidationContext.js +30 -35
  20. package/dist/components/CollectionSummary/SummaryCardValidationContext.test.js +62 -74
  21. package/dist/components/FormComponent/Collection.js +74 -108
  22. package/dist/components/FormComponent/Collection.test.js +909 -1081
  23. package/dist/components/FormComponent/Container.js +40 -38
  24. package/dist/components/FormComponent/Container.test.js +314 -345
  25. package/dist/components/FormComponent/FormComponent.js +69 -72
  26. package/dist/components/FormComponent/FormComponent.test.js +353 -414
  27. package/dist/components/FormComponent/helpers/addLabel.js +4 -7
  28. package/dist/components/FormComponent/helpers/getComponentDisabled.js +1 -1
  29. package/dist/components/FormComponent/helpers/getComponentDisabled.test.js +7 -7
  30. package/dist/components/FormComponent/helpers/getComponentError.js +3 -5
  31. package/dist/components/FormComponent/helpers/getComponentError.test.js +14 -14
  32. package/dist/components/FormComponent/helpers/getComponentFieldSet.js +3 -4
  33. package/dist/components/FormComponent/helpers/getComponentFieldSet.test.js +6 -6
  34. package/dist/components/FormComponent/helpers/index.js +4 -4
  35. package/dist/components/FormPage/FormPage.js +65 -80
  36. package/dist/components/FormPage/FormPage.test.js +127 -163
  37. package/dist/components/FormRenderer/FormRenderer.js +143 -179
  38. package/dist/components/FormRenderer/FormRenderer.test.js +730 -1115
  39. package/dist/components/FormRenderer/handlers/cyaAction.js +2 -2
  40. package/dist/components/FormRenderer/handlers/getPageId.js +1 -3
  41. package/dist/components/FormRenderer/handlers/getPageId.test.js +14 -14
  42. package/dist/components/FormRenderer/handlers/handlers.test.js +32 -32
  43. package/dist/components/FormRenderer/handlers/index.js +1 -1
  44. package/dist/components/FormRenderer/handlers/navigate.js +3 -3
  45. package/dist/components/FormRenderer/handlers/submissionError.js +1 -1
  46. package/dist/components/FormRenderer/helpers/canActionProceed.js +1 -1
  47. package/dist/components/FormRenderer/helpers/canActionProceed.test.js +15 -15
  48. package/dist/components/FormRenderer/helpers/canCYASubmit.js +1 -3
  49. package/dist/components/FormRenderer/helpers/canCYASubmit.test.js +16 -20
  50. package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.js +17 -22
  51. package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.test.js +16 -16
  52. package/dist/components/FormRenderer/helpers/getCYA.js +3 -5
  53. package/dist/components/FormRenderer/helpers/getCYA.test.js +11 -11
  54. package/dist/components/FormRenderer/helpers/getFormState.js +5 -7
  55. package/dist/components/FormRenderer/helpers/getFormState.test.js +10 -10
  56. package/dist/components/FormRenderer/helpers/getNextPageId.js +13 -24
  57. package/dist/components/FormRenderer/helpers/getNextPageId.test.js +67 -67
  58. package/dist/components/FormRenderer/helpers/getPage.js +2 -4
  59. package/dist/components/FormRenderer/helpers/getPage.test.js +11 -11
  60. package/dist/components/FormRenderer/helpers/getRelevantPages.js +7 -9
  61. package/dist/components/FormRenderer/helpers/getRelevantPages.test.js +14 -14
  62. package/dist/components/FormRenderer/helpers/getSubmissionStatus.js +5 -5
  63. package/dist/components/FormRenderer/helpers/getSubmissionStatus.test.js +103 -97
  64. package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.js +62 -60
  65. package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.test.js +71 -78
  66. package/dist/components/FormRenderer/helpers/index.js +2 -4
  67. package/dist/components/FormRenderer/onCYAAction.js +59 -51
  68. package/dist/components/FormRenderer/onCYAAction.test.js +164 -152
  69. package/dist/components/FormRenderer/onPageAction.js +44 -47
  70. package/dist/components/FormRenderer/onPageAction.test.js +223 -213
  71. package/dist/components/FormRenderer/onTaskAction.js +9 -13
  72. package/dist/components/FormRenderer/onTaskAction.test.js +93 -88
  73. package/dist/components/PageActions/ActionButton.js +12 -15
  74. package/dist/components/PageActions/ActionButton.test.js +56 -78
  75. package/dist/components/PageActions/PageActions.js +10 -10
  76. package/dist/components/PageActions/PageActions.test.js +86 -115
  77. package/dist/components/SummaryList/GroupAction.js +9 -17
  78. package/dist/components/SummaryList/GroupAction.test.js +37 -33
  79. package/dist/components/SummaryList/RowAction.js +11 -16
  80. package/dist/components/SummaryList/RowAction.test.js +37 -33
  81. package/dist/components/SummaryList/SummaryList.js +21 -26
  82. package/dist/components/SummaryList/SummaryList.test.js +143 -166
  83. package/dist/components/SummaryList/SummaryListHeadingRow.js +6 -4
  84. package/dist/components/SummaryList/SummaryListRow.js +6 -4
  85. package/dist/components/SummaryList/SummaryListTitleRow.js +5 -3
  86. package/dist/components/SummaryList/helpers/getGroupActionAttributes.js +3 -5
  87. package/dist/components/SummaryList/helpers/getGroupActionAttributes.test.js +22 -22
  88. package/dist/components/SummaryList/helpers/getRowActionAttributes.js +3 -5
  89. package/dist/components/SummaryList/helpers/getRowActionAttributes.test.js +22 -22
  90. package/dist/components/SummaryList/helpers/index.js +1 -1
  91. package/dist/components/TaskList/Task.js +19 -29
  92. package/dist/components/TaskList/Task.test.js +83 -76
  93. package/dist/components/TaskList/TaskList.js +45 -71
  94. package/dist/components/TaskList/TaskList.test.js +113 -111
  95. package/dist/components/TaskList/TaskState.js +7 -5
  96. package/dist/components/TaskList/TaskState.test.js +52 -45
  97. package/dist/components/index.js +7 -7
  98. package/dist/context/HooksContext/HooksContext.js +57 -80
  99. package/dist/context/HooksContext/HooksContext.test.js +26 -35
  100. package/dist/context/HooksContext/index.js +3 -4
  101. package/dist/context/ValidationContext/ValidationContext.js +43 -94
  102. package/dist/context/ValidationContext/ValidationContext.test.js +56 -68
  103. package/dist/context/ValidationContext/index.js +3 -4
  104. package/dist/context/index.js +2 -2
  105. package/dist/hooks/index.js +9 -10
  106. package/dist/hooks/useAxios.js +14 -40
  107. package/dist/hooks/useGetRequest.js +61 -97
  108. package/dist/hooks/useHooks.js +1 -3
  109. package/dist/hooks/useRefData.js +26 -39
  110. package/dist/hooks/useValidation.js +1 -3
  111. package/dist/index.js +13 -14
  112. package/dist/models/CollectionLabels.js +1 -1
  113. package/dist/models/ComponentTypes.js +25 -25
  114. package/dist/models/EventTypes.js +4 -4
  115. package/dist/models/FormPages.js +4 -4
  116. package/dist/models/FormTypes.js +8 -8
  117. package/dist/models/HubFormats.js +3 -3
  118. package/dist/models/PageAction.js +44 -38
  119. package/dist/models/TaskStates.js +29 -28
  120. package/dist/models/index.js +9 -9
  121. package/dist/setupTests.js +30 -31
  122. package/dist/utils/CheckYourAnswers/getCYAAction.js +5 -5
  123. package/dist/utils/CheckYourAnswers/getCYAAction.test.js +52 -54
  124. package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.js +15 -25
  125. package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.test.js +33 -35
  126. package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.js +17 -31
  127. package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.test.js +42 -44
  128. package/dist/utils/CheckYourAnswers/getCYARow.js +6 -6
  129. package/dist/utils/CheckYourAnswers/getCYARow.test.js +86 -86
  130. package/dist/utils/CheckYourAnswers/getCYARowForGroup.js +18 -24
  131. package/dist/utils/CheckYourAnswers/getCYARowForGroup.test.js +15 -16
  132. package/dist/utils/CheckYourAnswers/getCYARowsForCollection.js +33 -36
  133. package/dist/utils/CheckYourAnswers/getCYARowsForCollection.test.js +58 -61
  134. package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.js +83 -89
  135. package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.test.js +164 -138
  136. package/dist/utils/CheckYourAnswers/getCYARowsForContainer.js +25 -20
  137. package/dist/utils/CheckYourAnswers/getCYARowsForContainer.test.js +103 -97
  138. package/dist/utils/CheckYourAnswers/getCYARowsForPage.js +13 -18
  139. package/dist/utils/CheckYourAnswers/getCYARowsForPage.test.js +70 -76
  140. package/dist/utils/CheckYourAnswers/getComponentRowForCYA.js +11 -11
  141. package/dist/utils/CheckYourAnswers/getComponentRowForCYA.test.js +7 -7
  142. package/dist/utils/CheckYourAnswers/index.js +1 -1
  143. package/dist/utils/CheckYourAnswers/showComponentCYA.js +4 -4
  144. package/dist/utils/CheckYourAnswers/showComponentCYA.test.js +25 -25
  145. package/dist/utils/CollectionPage/addCollectionPageEntry.js +2 -2
  146. package/dist/utils/CollectionPage/addCollectionPageEntry.test.js +5 -5
  147. package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.js +2 -2
  148. package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.test.js +17 -18
  149. package/dist/utils/CollectionPage/duplicateCollectionPageEntry.js +18 -20
  150. package/dist/utils/CollectionPage/duplicateCollectionPageEntry.test.js +55 -26
  151. package/dist/utils/CollectionPage/getCollectionPageActiveId.js +2 -2
  152. package/dist/utils/CollectionPage/getCollectionPageActiveId.test.js +10 -10
  153. package/dist/utils/CollectionPage/getCollectionPageActiveIndex.js +7 -11
  154. package/dist/utils/CollectionPage/getCollectionPageActiveIndex.test.js +22 -22
  155. package/dist/utils/CollectionPage/getCollectionPageData.js +8 -12
  156. package/dist/utils/CollectionPage/getCollectionPageData.test.js +19 -19
  157. package/dist/utils/CollectionPage/getErrorsForCollection.js +24 -24
  158. package/dist/utils/CollectionPage/getErrorsForCollection.test.js +20 -22
  159. package/dist/utils/CollectionPage/getQuickEditPage.js +36 -28
  160. package/dist/utils/CollectionPage/getQuickEditPage.test.js +26 -45
  161. package/dist/utils/CollectionPage/index.js +1 -1
  162. package/dist/utils/CollectionPage/mergeCollectionPages.js +31 -35
  163. package/dist/utils/CollectionPage/mergeCollectionPages.test.js +20 -20
  164. package/dist/utils/CollectionPage/removeCollectionPageEntry.js +4 -6
  165. package/dist/utils/CollectionPage/removeCollectionPageEntry.test.js +10 -10
  166. package/dist/utils/CollectionPage/setCollectionPageData.js +10 -16
  167. package/dist/utils/CollectionPage/setCollectionPageData.test.js +24 -24
  168. package/dist/utils/Component/addShowWhen.js +4 -8
  169. package/dist/utils/Component/addShowWhen.test.js +37 -37
  170. package/dist/utils/Component/applyToComponentTree.js +18 -18
  171. package/dist/utils/Component/applyToComponentTree.test.js +27 -32
  172. package/dist/utils/Component/cleanAttributes.js +10 -13
  173. package/dist/utils/Component/cleanAttributes.test.js +17 -18
  174. package/dist/utils/Component/elevateNestedComponents.js +5 -5
  175. package/dist/utils/Component/elevateNestedComponents.test.js +30 -30
  176. package/dist/utils/Component/getComponent.js +88 -94
  177. package/dist/utils/Component/getComponentTests/getComponent.autocomplete.test.js +18 -17
  178. package/dist/utils/Component/getComponentTests/getComponent.calculation.test.js +46 -59
  179. package/dist/utils/Component/getComponentTests/getComponent.checkboxes.test.js +39 -48
  180. package/dist/utils/Component/getComponentTests/getComponent.date.test.js +23 -33
  181. package/dist/utils/Component/getComponentTests/getComponent.details.test.js +20 -18
  182. package/dist/utils/Component/getComponentTests/getComponent.email.test.js +17 -22
  183. package/dist/utils/Component/getComponentTests/getComponent.file.test.js +20 -25
  184. package/dist/utils/Component/getComponentTests/getComponent.heading.test.js +10 -9
  185. package/dist/utils/Component/getComponentTests/getComponent.html.test.js +17 -15
  186. package/dist/utils/Component/getComponentTests/getComponent.insetText.test.js +9 -8
  187. package/dist/utils/Component/getComponentTests/getComponent.list.test.js +17 -15
  188. package/dist/utils/Component/getComponentTests/getComponent.multifile.test.js +22 -26
  189. package/dist/utils/Component/getComponentTests/getComponent.nested.test.js +155 -175
  190. package/dist/utils/Component/getComponentTests/getComponent.paragraph.test.js +17 -15
  191. package/dist/utils/Component/getComponentTests/getComponent.phoneNumber.test.js +17 -22
  192. package/dist/utils/Component/getComponentTests/getComponent.radios.test.js +57 -72
  193. package/dist/utils/Component/getComponentTests/getComponent.select.test.js +17 -22
  194. package/dist/utils/Component/getComponentTests/getComponent.text.test.js +17 -22
  195. package/dist/utils/Component/getComponentTests/getComponent.textArea.test.js +31 -38
  196. package/dist/utils/Component/getComponentTests/getComponent.time.test.js +20 -29
  197. package/dist/utils/Component/getComponentTests/getComponent.unknown.test.js +2 -2
  198. package/dist/utils/Component/getComponentTests/getComponent.warningText.test.js +9 -8
  199. package/dist/utils/Component/getDefaultValue.js +6 -8
  200. package/dist/utils/Component/getDefaultValue.test.js +12 -12
  201. package/dist/utils/Component/getDefaultValueFromConfig.js +22 -21
  202. package/dist/utils/Component/getDefaultValueFromConfig.test.js +31 -31
  203. package/dist/utils/Component/index.js +1 -1
  204. package/dist/utils/Component/isEditable.js +2 -4
  205. package/dist/utils/Component/isEditable.test.js +14 -15
  206. package/dist/utils/Component/optionIsSelected.js +1 -1
  207. package/dist/utils/Component/optionIsSelected.test.js +9 -9
  208. package/dist/utils/Component/setupContainerComponentsPath.js +27 -29
  209. package/dist/utils/Component/setupContainerComponentsPath.test.js +11 -11
  210. package/dist/utils/Component/showComponent.js +1 -1
  211. package/dist/utils/Component/showComponent.test.js +28 -28
  212. package/dist/utils/Component/wrapInFormGroup.js +2 -2
  213. package/dist/utils/Condition/index.js +1 -1
  214. package/dist/utils/Condition/meetsAllConditions.js +8 -8
  215. package/dist/utils/Condition/meetsAllConditions.test.js +20 -20
  216. package/dist/utils/Condition/meetsCondition.js +16 -25
  217. package/dist/utils/Condition/meetsCondition.test.js +402 -402
  218. package/dist/utils/Condition/meetsOneCondition.js +5 -5
  219. package/dist/utils/Condition/meetsOneCondition.test.js +16 -16
  220. package/dist/utils/Condition/setupConditions.js +13 -18
  221. package/dist/utils/Condition/setupConditions.test.js +7 -7
  222. package/dist/utils/Container/getEditableComponents.js +3 -5
  223. package/dist/utils/Container/getEditableComponents.test.js +43 -45
  224. package/dist/utils/Container/index.js +1 -1
  225. package/dist/utils/Container/setupNesting.js +16 -20
  226. package/dist/utils/Container/setupNesting.test.js +27 -30
  227. package/dist/utils/Container/showContainer.js +3 -7
  228. package/dist/utils/Container/showContainer.test.js +30 -30
  229. package/dist/utils/Data/applyFormula.js +38 -48
  230. package/dist/utils/Data/applyFormula.test.js +20 -20
  231. package/dist/utils/Data/getAutocompleteSource.js +18 -26
  232. package/dist/utils/Data/getAutocompleteSource.test.js +80 -86
  233. package/dist/utils/Data/getDataPath.js +18 -28
  234. package/dist/utils/Data/getDataPath.test.js +12 -12
  235. package/dist/utils/Data/getOptions.js +24 -30
  236. package/dist/utils/Data/getOptions.test.js +27 -27
  237. package/dist/utils/Data/getSourceData.js +6 -19
  238. package/dist/utils/Data/getSourceData.test.js +84 -80
  239. package/dist/utils/Data/index.js +1 -1
  240. package/dist/utils/Data/nestInRefdataOptions.js +9 -16
  241. package/dist/utils/Data/nestInRefdataOptions.test.js +16 -16
  242. package/dist/utils/Data/refDataToOptions.js +10 -13
  243. package/dist/utils/Data/refDataToOptions.test.js +19 -19
  244. package/dist/utils/Data/setDataItem.js +7 -8
  245. package/dist/utils/Data/setDataItem.test.js +37 -37
  246. package/dist/utils/Data/setupFormData.js +13 -21
  247. package/dist/utils/Data/setupFormData.test.js +51 -50
  248. package/dist/utils/Data/setupRefDataUrlForComponent.js +20 -26
  249. package/dist/utils/Data/setupRefDataUrlForComponent.test.js +24 -24
  250. package/dist/utils/FormPage/applyConditionalProperties.js +5 -9
  251. package/dist/utils/FormPage/applyConditionalProperties.test.js +15 -18
  252. package/dist/utils/FormPage/getConditionalText.js +3 -3
  253. package/dist/utils/FormPage/getConditionalText.test.js +29 -29
  254. package/dist/utils/FormPage/getFormPage.js +15 -16
  255. package/dist/utils/FormPage/getFormPage.test.js +47 -46
  256. package/dist/utils/FormPage/getFormPages.js +7 -12
  257. package/dist/utils/FormPage/getFormPages.test.js +20 -23
  258. package/dist/utils/FormPage/getPageActions.js +9 -15
  259. package/dist/utils/FormPage/getPageActions.test.js +32 -32
  260. package/dist/utils/FormPage/getParagraphFromText.js +5 -7
  261. package/dist/utils/FormPage/getParagraphFromText.test.js +6 -6
  262. package/dist/utils/FormPage/index.js +2 -4
  263. package/dist/utils/FormPage/showFormPage.js +3 -7
  264. package/dist/utils/FormPage/showFormPage.test.js +32 -32
  265. package/dist/utils/FormPage/showFormPageCYA.js +1 -1
  266. package/dist/utils/FormPage/showFormPageCYA.test.js +8 -8
  267. package/dist/utils/FormPage/useComponent.js +21 -28
  268. package/dist/utils/FormPage/useComponent.test.js +77 -79
  269. package/dist/utils/Format/formatData.js +1 -1
  270. package/dist/utils/Format/formatData.test.js +18 -18
  271. package/dist/utils/Format/formatDataForComponent.js +5 -6
  272. package/dist/utils/Format/formatDataForComponent.test.js +50 -78
  273. package/dist/utils/Format/formatDataForForm.js +6 -8
  274. package/dist/utils/Format/formatDataForForm.test.js +13 -16
  275. package/dist/utils/Format/formatDataForPage.js +4 -5
  276. package/dist/utils/Format/formatDataForPage.test.js +20 -25
  277. package/dist/utils/Format/index.js +1 -1
  278. package/dist/utils/Hub/getFormHub.js +1 -1
  279. package/dist/utils/Hub/getFormHub.test.js +28 -31
  280. package/dist/utils/Hub/index.js +1 -1
  281. package/dist/utils/Meta/constants.js +2 -2
  282. package/dist/utils/Meta/documents/getDocuments.js +1 -1
  283. package/dist/utils/Meta/documents/getDocuments.test.js +24 -16
  284. package/dist/utils/Meta/documents/index.js +1 -1
  285. package/dist/utils/Meta/documents/setDocumentsForField.js +14 -16
  286. package/dist/utils/Meta/documents/setDocumentsForField.test.js +68 -34
  287. package/dist/utils/Meta/index.js +1 -1
  288. package/dist/utils/Operate/checkValueIsTruthy.js +2 -2
  289. package/dist/utils/Operate/checkValueIsTruthy.test.js +16 -16
  290. package/dist/utils/Operate/getFirstOf.js +5 -5
  291. package/dist/utils/Operate/getFirstOf.test.js +31 -31
  292. package/dist/utils/Operate/getIndexOfMatchingValueIn.js +10 -10
  293. package/dist/utils/Operate/getIndexOfMatchingValueIn.test.js +46 -52
  294. package/dist/utils/Operate/index.js +1 -1
  295. package/dist/utils/Operate/persistValueInFormData.js +3 -3
  296. package/dist/utils/Operate/persistValueInFormData.test.js +22 -20
  297. package/dist/utils/Operate/runPageOperations.js +7 -7
  298. package/dist/utils/Operate/runPageOperations.test.js +35 -36
  299. package/dist/utils/Operate/setValueInFormData.js +2 -2
  300. package/dist/utils/Operate/setValueInFormData.test.js +16 -16
  301. package/dist/utils/Operate/shouldRun.js +6 -6
  302. package/dist/utils/Operate/shouldRun.test.js +21 -27
  303. package/dist/utils/Validate/additional/conditionallyRequired.js +4 -4
  304. package/dist/utils/Validate/additional/conditionallyRequired.test.js +18 -18
  305. package/dist/utils/Validate/additional/index.js +6 -6
  306. package/dist/utils/Validate/additional/index.test.js +12 -12
  307. package/dist/utils/Validate/additional/mustBeAfter.js +2 -2
  308. package/dist/utils/Validate/additional/mustBeAfter.test.js +40 -40
  309. package/dist/utils/Validate/additional/mustBeBefore.js +2 -2
  310. package/dist/utils/Validate/additional/mustBeBefore.test.js +28 -28
  311. package/dist/utils/Validate/additional/mustBeEarlierDateTime.js +7 -11
  312. package/dist/utils/Validate/additional/mustBeEarlierDateTime.test.js +37 -41
  313. package/dist/utils/Validate/additional/mustBeGreaterThan.js +2 -2
  314. package/dist/utils/Validate/additional/mustBeGreaterThan.test.js +18 -18
  315. package/dist/utils/Validate/additional/mustBeInTheFuture.js +2 -2
  316. package/dist/utils/Validate/additional/mustBeInTheFuture.test.js +12 -12
  317. package/dist/utils/Validate/additional/mustBeInThePast.js +3 -3
  318. package/dist/utils/Validate/additional/mustBeInThePast.test.js +12 -12
  319. package/dist/utils/Validate/additional/mustBeLessThan.js +2 -2
  320. package/dist/utils/Validate/additional/mustBeLessThan.test.js +17 -17
  321. package/dist/utils/Validate/additional/mustBeLongerThan.js +1 -1
  322. package/dist/utils/Validate/additional/mustBeLongerThan.test.js +16 -16
  323. package/dist/utils/Validate/additional/mustBeNumbersOnly.js +2 -2
  324. package/dist/utils/Validate/additional/mustBeNumbersOnly.test.js +20 -20
  325. package/dist/utils/Validate/additional/mustBeShorterThan.js +1 -1
  326. package/dist/utils/Validate/additional/mustBeShorterThan.test.js +16 -16
  327. package/dist/utils/Validate/additional/mustBeUniqueInCollection.js +8 -4
  328. package/dist/utils/Validate/additional/mustBeUniqueInCollection.test.js +64 -32
  329. package/dist/utils/Validate/additional/mustEnterAtLeastOne.js +2 -2
  330. package/dist/utils/Validate/additional/mustEnterAtLeastOne.test.js +14 -16
  331. package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.js +1 -1
  332. package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.test.js +12 -12
  333. package/dist/utils/Validate/additional/mustNotContainSql.js +3 -4
  334. package/dist/utils/Validate/additional/mustNotContainSql.test.js +14 -14
  335. package/dist/utils/Validate/additional/mustSelectOnlyOne.js +2 -2
  336. package/dist/utils/Validate/additional/mustSelectOnlyOne.test.js +28 -26
  337. package/dist/utils/Validate/additional/utils.js +9 -22
  338. package/dist/utils/Validate/index.js +1 -1
  339. package/dist/utils/Validate/validateCollection.js +19 -25
  340. package/dist/utils/Validate/validateCollection.test.js +74 -66
  341. package/dist/utils/Validate/validateComponent.js +17 -15
  342. package/dist/utils/Validate/validateComponent.test.js +167 -146
  343. package/dist/utils/Validate/validateContainer.js +15 -20
  344. package/dist/utils/Validate/validateContainer.test.js +58 -52
  345. package/dist/utils/Validate/validateDate.js +15 -21
  346. package/dist/utils/Validate/validateDate.test.js +31 -32
  347. package/dist/utils/Validate/validateEmail.js +6 -8
  348. package/dist/utils/Validate/validateEmail.test.js +25 -25
  349. package/dist/utils/Validate/validateMultifile.js +5 -7
  350. package/dist/utils/Validate/validateMultifile.test.js +17 -18
  351. package/dist/utils/Validate/validatePage.js +19 -22
  352. package/dist/utils/Validate/validatePage.test.js +215 -203
  353. package/dist/utils/Validate/validateRegex.js +3 -5
  354. package/dist/utils/Validate/validateRegex.test.js +14 -14
  355. package/dist/utils/Validate/validateRequired.js +4 -6
  356. package/dist/utils/Validate/validateRequired.test.js +18 -18
  357. package/dist/utils/Validate/validateTextArea.js +4 -6
  358. package/dist/utils/Validate/validateTextArea.test.js +20 -20
  359. package/dist/utils/Validate/validateTime.js +11 -18
  360. package/dist/utils/Validate/validateTime.test.js +16 -16
  361. package/dist/utils/index.js +7 -9
  362. package/package.json +2 -2
  363. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/component-used-in-multiple-pages-data.json +0 -4
  364. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/component-used-in-multiple-pages-form.json +0 -61
  365. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-airpax-after.json +0 -429
  366. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-airpax-before.json +0 -449
  367. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-airpax-form.json +0 -15219
  368. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-eab-2-data-after.json +0 -516
  369. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-eab-2-data-before.json +0 -593
  370. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-eab2-form.json +0 -15219
  371. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-mandec-data-after.json +0 -84
  372. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-mandec-data-before.json +0 -98
  373. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-mandec-form.json +0 -9158
  374. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-collection-data-removed.json +0 -4
  375. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-collections.json +0 -8
  376. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-components-removed.json +0 -3
  377. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-components.json +0 -5
  378. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-entire-collection-removed.json +0 -3
  379. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-nested-component-removed.json +0 -10
  380. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-nested-components.json +0 -11
  381. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/form-for-nested-components.json +0 -96
  382. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/form-with-collections-delete-entire.json +0 -47
  383. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/form-with-collections.json +0 -46
  384. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/form-with-components.json +0 -48
  385. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/test.json +0 -1605
  386. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/test2.json +0 -205
  387. package/dist/components/FormRenderer/helpers/clearOutUncompletedRoutes.js +0 -206
  388. package/dist/components/FormRenderer/helpers/clearOutUncompletedRoutes.test.js +0 -143
  389. package/dist/components/FormRenderer/helpers/deleteNodeByPath.js +0 -26
  390. package/dist/components/FormRenderer/helpers/deleteNodeByPath.test.js +0 -56
@@ -2,30 +2,30 @@
2
2
 
3
3
  var _mustHaveLessThanDecimalPlaces = _interopRequireDefault(require("./mustHaveLessThanDecimalPlaces"));
4
4
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5
- describe('utils', function () {
6
- describe('Validate', function () {
7
- describe('additional', function () {
8
- describe('mustHaveLessThanDecimalPlaces', function () {
9
- test('should return false given a number with more than the allowed number of decimal places', function () {
10
- var result = (0, _mustHaveLessThanDecimalPlaces.default)('999999999.9999', {
5
+ describe('utils', () => {
6
+ describe('Validate', () => {
7
+ describe('additional', () => {
8
+ describe('mustHaveLessThanDecimalPlaces', () => {
9
+ test('should return false given a number with more than the allowed number of decimal places', () => {
10
+ const result = (0, _mustHaveLessThanDecimalPlaces.default)('999999999.9999', {
11
11
  maxDecimals: 3
12
12
  });
13
13
  expect(result).toEqual(false);
14
14
  });
15
- test('should return true given a number with less than the allowed number of decimal places', function () {
16
- var result = (0, _mustHaveLessThanDecimalPlaces.default)('999999999.99', {
15
+ test('should return true given a number with less than the allowed number of decimal places', () => {
16
+ const result = (0, _mustHaveLessThanDecimalPlaces.default)('999999999.99', {
17
17
  maxDecimals: 3
18
18
  });
19
19
  expect(result).toEqual(true);
20
20
  });
21
- test('should return true given a number with no decimal places', function () {
22
- var result = (0, _mustHaveLessThanDecimalPlaces.default)('999999999', {
21
+ test('should return true given a number with no decimal places', () => {
22
+ const result = (0, _mustHaveLessThanDecimalPlaces.default)('999999999', {
23
23
  maxDecimals: 3
24
24
  });
25
25
  expect(result).toEqual(true);
26
26
  });
27
- test('should return true given nothing', function () {
28
- var result = (0, _mustHaveLessThanDecimalPlaces.default)(undefined, {
27
+ test('should return true given nothing', () => {
28
+ const result = (0, _mustHaveLessThanDecimalPlaces.default)(undefined, {
29
29
  maxDecimals: 3
30
30
  });
31
31
  expect(result).toEqual(true);
@@ -4,14 +4,13 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- 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); }
8
7
  // NOTE: SQL RegEx reference:
9
8
  // http://www.symantec.com/connect/articles/detection-sql-injection-and-cross-site-scripting-attacks
10
- var SQL_COMBINED = /(%27)|(')|(--)|(%23)|(#)|((%3D)|(=))[^\n]*((%27)|(')|(--)|(%3B)|(;))|w*((%27)|('))((%6F)|o|(%4F))((%72)|r|(%52))|((%27)|('))union/i;
11
- var mustNotContainSql = function mustNotContainSql(value) {
9
+ const SQL_COMBINED = /(%27)|(')|(--)|(%23)|(#)|((%3D)|(=))[^\n]*((%27)|(')|(--)|(%3B)|(;))|w*((%27)|('))((%6F)|o|(%4F))((%72)|r|(%52))|((%27)|('))union/i;
10
+ const mustNotContainSql = value => {
12
11
  // eslint-disable-next-line no-extra-boolean-cast
13
12
  if (!!value) {
14
- var string = _typeof(value) === 'object' ? JSON.stringify(value) : String(value);
13
+ const string = typeof value === 'object' ? JSON.stringify(value) : String(value);
15
14
  return !SQL_COMBINED.test(string);
16
15
  }
17
16
  return false;
@@ -2,28 +2,28 @@
2
2
 
3
3
  var _mustNotContainSql = _interopRequireDefault(require("./mustNotContainSql"));
4
4
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5
- describe('utils', function () {
6
- describe('Validate', function () {
7
- describe('additional', function () {
8
- describe('mustNotContainSql', function () {
9
- test('should return true given a string not containing sql characters', function () {
10
- var result = (0, _mustNotContainSql.default)('test');
5
+ describe('utils', () => {
6
+ describe('Validate', () => {
7
+ describe('additional', () => {
8
+ describe('mustNotContainSql', () => {
9
+ test('should return true given a string not containing sql characters', () => {
10
+ const result = (0, _mustNotContainSql.default)('test');
11
11
  expect(result).toEqual(true);
12
12
  });
13
- test('should return true given non-string datatype is converted to string', function () {
14
- var result = (0, _mustNotContainSql.default)(123);
13
+ test('should return true given non-string datatype is converted to string', () => {
14
+ const result = (0, _mustNotContainSql.default)(123);
15
15
  expect(result).toEqual(true);
16
16
  });
17
- test('should return false given a string containing sql characters', function () {
18
- var result = (0, _mustNotContainSql.default)("test' OR '1'='1'");
17
+ test('should return false given a string containing sql characters', () => {
18
+ const result = (0, _mustNotContainSql.default)("test' OR '1'='1'");
19
19
  expect(result).toEqual(false);
20
20
  });
21
- test('should return false given string is null', function () {
22
- var result = (0, _mustNotContainSql.default)(null);
21
+ test('should return false given string is null', () => {
22
+ const result = (0, _mustNotContainSql.default)(null);
23
23
  expect(result).toEqual(false);
24
24
  });
25
- test('should return false given string is not defined', function () {
26
- var result = (0, _mustNotContainSql.default)(undefined);
25
+ test('should return false given string is not defined', () => {
26
+ const result = (0, _mustNotContainSql.default)(undefined);
27
27
  expect(result).toEqual(false);
28
28
  });
29
29
  });
@@ -10,9 +10,9 @@ exports.default = void 0;
10
10
  * @param {object} component the container component
11
11
  * @returns true if the user has only provided a value for one of the components in the container, otherwise false.
12
12
  */
13
- var mustSelectOnlyOne = function mustSelectOnlyOne(data, _, component) {
13
+ const mustSelectOnlyOne = (data, _, component) => {
14
14
  var _component$components;
15
- var valueCount = (_component$components = component.components) === null || _component$components === void 0 ? void 0 : _component$components.reduce(function (acc, inner) {
15
+ const valueCount = (_component$components = component.components) === null || _component$components === void 0 ? void 0 : _component$components.reduce((acc, inner) => {
16
16
  var _data$component$id;
17
17
  if ((_data$component$id = data[component.id]) !== null && _data$component$id !== void 0 && _data$component$id[inner.id]) {
18
18
  // Account for checkboxes that the user may have unselected
@@ -2,16 +2,12 @@
2
2
 
3
3
  var _mustSelectOnlyOne = _interopRequireDefault(require("./mustSelectOnlyOne"));
4
4
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5
- 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); }
6
- 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; }
7
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
8
- 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); }
9
- describe('utils', function () {
10
- describe('Validate', function () {
11
- describe('additional', function () {
12
- describe('mustSelectOnlyOne', function () {
13
- var CONTAINER_ID = 'containerId';
14
- var COMPONENT = {
5
+ describe('utils', () => {
6
+ describe('Validate', () => {
7
+ describe('additional', () => {
8
+ describe('mustSelectOnlyOne', () => {
9
+ const CONTAINER_ID = 'containerId';
10
+ const COMPONENT = {
15
11
  id: CONTAINER_ID,
16
12
  type: 'container',
17
13
  components: [{
@@ -22,28 +18,34 @@ describe('utils', function () {
22
18
  id: 'charlie'
23
19
  }]
24
20
  };
25
- test('should return true if all components are empty', function () {
26
- var DATA = {};
21
+ test('should return true if all components are empty', () => {
22
+ const DATA = {};
27
23
  expect((0, _mustSelectOnlyOne.default)(DATA, {}, COMPONENT)).toEqual(true);
28
24
  });
29
- test('should return true if one component has data', function () {
30
- var DATA = _defineProperty({}, CONTAINER_ID, {
31
- alpha: 'text'
32
- });
25
+ test('should return true if one component has data', () => {
26
+ const DATA = {
27
+ [CONTAINER_ID]: {
28
+ alpha: 'text'
29
+ }
30
+ };
33
31
  expect((0, _mustSelectOnlyOne.default)(DATA, {}, COMPONENT)).toEqual(true);
34
32
  });
35
- test('should return false if more than one component has data', function () {
36
- var DATA = _defineProperty({}, CONTAINER_ID, {
37
- alpha: 'text',
38
- bravo: 'test'
39
- });
33
+ test('should return false if more than one component has data', () => {
34
+ const DATA = {
35
+ [CONTAINER_ID]: {
36
+ alpha: 'text',
37
+ bravo: 'test'
38
+ }
39
+ };
40
40
  expect((0, _mustSelectOnlyOne.default)(DATA, {}, COMPONENT)).toEqual(false);
41
41
  });
42
- test('should return true if more than one component has data but one is an empty array', function () {
43
- var DATA = _defineProperty({}, CONTAINER_ID, {
44
- alpha: 'text',
45
- bravo: []
46
- });
42
+ test('should return true if more than one component has data but one is an empty array', () => {
43
+ const DATA = {
44
+ [CONTAINER_ID]: {
45
+ alpha: 'text',
46
+ bravo: []
47
+ }
48
+ };
47
49
  expect((0, _mustSelectOnlyOne.default)(DATA, {}, COMPONENT)).toEqual(true);
48
50
  });
49
51
  });
@@ -4,15 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.formattedTime = exports.formatString = exports.DATE_FORMAT = void 0;
7
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
8
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
9
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
10
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
11
- function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
12
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
13
- var isNumeric = function isNumeric(value) {
14
- return /^-?\d+$/.test(value);
15
- };
7
+ const isNumeric = value => /^-?\d+$/.test(value);
16
8
 
17
9
  /**
18
10
 
@@ -23,25 +15,20 @@ var isNumeric = function isNumeric(value) {
23
15
  * @param {string} dateComponent - the value representing a day or month.
24
16
  * @returns the value (appended with a leading zero, if the value passed in was a single digit)
25
17
  */
26
- var formatInTwoDigits = function formatInTwoDigits(dateComponent) {
18
+ const formatInTwoDigits = dateComponent => {
27
19
  if (isNumeric(dateComponent)) {
28
20
  return dateComponent.padStart(2, '0');
29
21
  }
30
22
  return '';
31
23
  };
32
- var formatString = exports.formatString = function formatString(date) {
33
- var _date$split = date.split('-'),
34
- _date$split2 = _slicedToArray(_date$split, 3),
35
- day = _date$split2[0],
36
- month = _date$split2[1],
37
- year = _date$split2[2];
24
+ const formatString = date => {
25
+ const [day, month, year] = date.split('-');
38
26
  return "".concat(formatInTwoDigits(day), "-").concat(formatInTwoDigits(month), "-").concat(year);
39
27
  };
40
- var formattedTime = exports.formattedTime = function formattedTime(time) {
41
- var _time$split = time.split(':'),
42
- _time$split2 = _slicedToArray(_time$split, 2),
43
- hour = _time$split2[0],
44
- minute = _time$split2[1];
28
+ exports.formatString = formatString;
29
+ const formattedTime = time => {
30
+ const [hour, minute] = time.split(':');
45
31
  return "".concat(formatInTwoDigits(hour), ":").concat(formatInTwoDigits(minute));
46
32
  };
47
- var DATE_FORMAT = exports.DATE_FORMAT = 'DD-MM-YYYY';
33
+ exports.formattedTime = formattedTime;
34
+ const DATE_FORMAT = exports.DATE_FORMAT = 'DD-MM-YYYY';
@@ -17,7 +17,7 @@ var _validateTime = _interopRequireDefault(require("./validateTime"));
17
17
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
18
  // Local imports
19
19
 
20
- var Validate = {
20
+ const Validate = {
21
21
  component: _validateComponent.default,
22
22
  container: _validateContainer.default,
23
23
  email: _validateEmail.default,
@@ -7,12 +7,8 @@ exports.default = void 0;
7
7
  var _copReactComponents = require("@ukhomeoffice/cop-react-components");
8
8
  var _validateContainer = _interopRequireDefault(require("./validateContainer"));
9
9
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
- 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); }
11
- 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; }
12
- 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; }
13
- 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; }
14
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
15
- 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
+ // Local imports
11
+
16
12
  /**
17
13
  * Validates all of the items within a collection.
18
14
  * @param {object} collection The collection to validate.
@@ -20,26 +16,26 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
20
16
  * @param {object} formData The data at the top level of the form.
21
17
  * @returns Errors for all components for all items within the collection.
22
18
  */
23
- var validateCollection = function validateCollection(collection, items, formData) {
24
- var errors = [];
19
+ const validateCollection = (collection, items, formData) => {
20
+ const errors = [];
25
21
  if (collection && Array.isArray(collection.item) && Array.isArray(items)) {
26
- items.forEach(function (item, index) {
27
- var labelCount = (collection.countOffset || 0) + index + 1;
28
- var fullPath = "".concat(collection.full_path || collection.fieldId, "[").concat(index, "]");
29
- var container = {
22
+ items.forEach((item, index) => {
23
+ const labelCount = (collection.countOffset || 0) + index + 1;
24
+ const fullPath = "".concat(collection.full_path || collection.fieldId, "[").concat(index, "]");
25
+ const container = {
30
26
  full_path: fullPath,
31
- components: collection.item.map(function (component) {
32
- var newComponent = _objectSpread(_objectSpread({}, component), {}, {
27
+ components: collection.item.map(component => {
28
+ const newComponent = {
29
+ ...component,
33
30
  full_path: "".concat(fullPath, ".").concat(component.fieldId)
34
- });
31
+ };
35
32
  if (component.custom_errors && Array.isArray(component.custom_errors)) {
36
- newComponent.custom_errors = component.custom_errors.map(function (error) {
37
- return _objectSpread(_objectSpread({}, error), {}, {
38
- message: _copReactComponents.Utils.interpolateString(index === 0 && error.firstOnlyMessage ? error.firstOnlyMessage : error.message, {
39
- index: labelCount
40
- })
41
- });
42
- });
33
+ newComponent.custom_errors = component.custom_errors.map(error => ({
34
+ ...error,
35
+ message: _copReactComponents.Utils.interpolateString(index === 0 && error.firstOnlyMessage ? error.firstOnlyMessage : error.message, {
36
+ index: labelCount
37
+ })
38
+ }));
43
39
  }
44
40
  return newComponent;
45
41
  })
@@ -47,8 +43,6 @@ var validateCollection = function validateCollection(collection, items, formData
47
43
  errors.push((0, _validateContainer.default)(container, item, formData));
48
44
  });
49
45
  }
50
- return errors.filter(function (e) {
51
- return !!e;
52
- }).flat();
46
+ return errors.filter(e => !!e).flat();
53
47
  };
54
48
  var _default = exports.default = validateCollection;
@@ -3,119 +3,127 @@
3
3
  var _models = require("../../models");
4
4
  var _validateCollection = _interopRequireDefault(require("./validateCollection"));
5
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 _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; }
8
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
9
- 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
- describe('utils.Validate.Collection', function () {
11
- var setup = function setup(id, type, label, required, item) {
12
- return {
13
- id: id,
14
- fieldId: id,
15
- type: type,
16
- label: label,
17
- required: required,
18
- item: item
19
- };
20
- };
21
- it('should return an empty array when the component is null', function () {
6
+ // Local imports
7
+
8
+ describe('utils.Validate.Collection', () => {
9
+ const setup = (id, type, label, required, item) => ({
10
+ id,
11
+ fieldId: id,
12
+ type,
13
+ label,
14
+ required,
15
+ item
16
+ });
17
+ it('should return an empty array when the component is null', () => {
22
18
  expect((0, _validateCollection.default)(null, [])).toEqual([]);
23
19
  });
24
- it('should return an empty array when the collection has an undefined item array', function () {
25
- var ID = 'collection';
26
- var LABEL = 'field';
27
- var COLLECTION = setup(ID, _models.ComponentTypes.COLLECTION, LABEL, false, undefined);
20
+ it('should return an empty array when the collection has an undefined item array', () => {
21
+ const ID = 'collection';
22
+ const LABEL = 'field';
23
+ const COLLECTION = setup(ID, _models.ComponentTypes.COLLECTION, LABEL, false, undefined);
28
24
  expect((0, _validateCollection.default)(COLLECTION, [])).toEqual([]);
29
25
  });
30
- it('should return an empty array when the collection has an empty item array', function () {
31
- var ID = 'collection';
32
- var LABEL = 'field';
33
- var COLLECTION = setup(ID, _models.ComponentTypes.COLLECTION, LABEL, false, []);
26
+ it('should return an empty array when the collection has an empty item array', () => {
27
+ const ID = 'collection';
28
+ const LABEL = 'field';
29
+ const COLLECTION = setup(ID, _models.ComponentTypes.COLLECTION, LABEL, false, []);
34
30
  expect((0, _validateCollection.default)(COLLECTION, [])).toEqual([]);
35
31
  });
36
- it('should return an empty array when the collection has only valid items', function () {
37
- var EMAIL_ID = 'email';
38
- var EMAIL_LABEL = 'Email';
39
- var EMAIL = setup(EMAIL_ID, _models.ComponentTypes.EMAIL, EMAIL_LABEL, false);
40
- var ID = 'collection';
41
- var LABEL = 'field';
42
- var COLLECTION = setup(ID, _models.ComponentTypes.COLLECTION, LABEL, false, [EMAIL]);
43
- var ITEMS = [_defineProperty({}, EMAIL_ID, 'alpha.bravo@homeoffice.gov.uk'), _defineProperty({}, EMAIL_ID, 'charlie.delta@homeoffice.gov.uk')];
32
+ it('should return an empty array when the collection has only valid items', () => {
33
+ const EMAIL_ID = 'email';
34
+ const EMAIL_LABEL = 'Email';
35
+ const EMAIL = setup(EMAIL_ID, _models.ComponentTypes.EMAIL, EMAIL_LABEL, false);
36
+ const ID = 'collection';
37
+ const LABEL = 'field';
38
+ const COLLECTION = setup(ID, _models.ComponentTypes.COLLECTION, LABEL, false, [EMAIL]);
39
+ const ITEMS = [{
40
+ [EMAIL_ID]: 'alpha.bravo@homeoffice.gov.uk'
41
+ }, {
42
+ [EMAIL_ID]: 'charlie.delta@homeoffice.gov.uk'
43
+ }];
44
44
  expect((0, _validateCollection.default)(COLLECTION, ITEMS)).toEqual([]);
45
45
  });
46
- it('should return an array containing an error when the collection has an invalid first item', function () {
47
- var EMAIL_ID = 'email';
48
- var EMAIL_LABEL = 'Email';
49
- var EMAIL = setup(EMAIL_ID, _models.ComponentTypes.EMAIL, EMAIL_LABEL, false);
50
- var ID = 'container';
51
- var LABEL = 'field';
52
- var COLLECTION = setup(ID, _models.ComponentTypes.CONTAINER, LABEL, false, [EMAIL]);
53
- var ITEMS = [_defineProperty({}, EMAIL_ID, 'alpha.bravo@digital.homeoffice.com'), _defineProperty({}, EMAIL_ID, 'alpha.bravo@digital.homeoffice.gov.uk')];
46
+ it('should return an array containing an error when the collection has an invalid first item', () => {
47
+ const EMAIL_ID = 'email';
48
+ const EMAIL_LABEL = 'Email';
49
+ const EMAIL = setup(EMAIL_ID, _models.ComponentTypes.EMAIL, EMAIL_LABEL, false);
50
+ const ID = 'container';
51
+ const LABEL = 'field';
52
+ const COLLECTION = setup(ID, _models.ComponentTypes.CONTAINER, LABEL, false, [EMAIL]);
53
+ const ITEMS = [{
54
+ [EMAIL_ID]: 'alpha.bravo@digital.homeoffice.com'
55
+ }, {
56
+ [EMAIL_ID]: 'alpha.bravo@digital.homeoffice.gov.uk'
57
+ }];
54
58
  expect((0, _validateCollection.default)(COLLECTION, ITEMS)).toEqual([{
55
59
  id: "".concat(ID, "[0].").concat(EMAIL_ID),
56
60
  error: "Enter ".concat(EMAIL_LABEL.toLowerCase(), " in the correct format, like jane.doe@homeoffice.gov.uk")
57
61
  }]);
58
62
  });
59
- it('should return an array containing an error when the collection has an invalid second item', function () {
60
- var EMAIL_ID = 'email';
61
- var EMAIL_LABEL = 'Email';
62
- var EMAIL = setup(EMAIL_ID, _models.ComponentTypes.EMAIL, EMAIL_LABEL, false);
63
- var ID = 'container';
64
- var LABEL = 'field';
65
- var COLLECTION = setup(ID, _models.ComponentTypes.CONTAINER, LABEL, false, [EMAIL]);
66
- var ITEMS = [_defineProperty({}, EMAIL_ID, 'alpha.bravo@digital.homeoffice.gov.uk'), _defineProperty({}, EMAIL_ID, 'alpha.bravo@digital.homeoffice.com')];
63
+ it('should return an array containing an error when the collection has an invalid second item', () => {
64
+ const EMAIL_ID = 'email';
65
+ const EMAIL_LABEL = 'Email';
66
+ const EMAIL = setup(EMAIL_ID, _models.ComponentTypes.EMAIL, EMAIL_LABEL, false);
67
+ const ID = 'container';
68
+ const LABEL = 'field';
69
+ const COLLECTION = setup(ID, _models.ComponentTypes.CONTAINER, LABEL, false, [EMAIL]);
70
+ const ITEMS = [{
71
+ [EMAIL_ID]: 'alpha.bravo@digital.homeoffice.gov.uk'
72
+ }, {
73
+ [EMAIL_ID]: 'alpha.bravo@digital.homeoffice.com'
74
+ }];
67
75
  expect((0, _validateCollection.default)(COLLECTION, ITEMS)).toEqual([{
68
76
  id: "".concat(ID, "[1].").concat(EMAIL_ID),
69
77
  error: "Enter ".concat(EMAIL_LABEL.toLowerCase(), " in the correct format, like jane.doe@homeoffice.gov.uk")
70
78
  }]);
71
79
  });
72
- it('should correctly interpolate error messages using collection\'s index', function () {
73
- var ID = 'container';
74
- var LABEL = 'field';
75
- var TYPE = 'autocomplete';
76
- var ITEM = setup(ID, TYPE, LABEL, true, []);
80
+ it('should correctly interpolate error messages using collection\'s index', () => {
81
+ const ID = 'container';
82
+ const LABEL = 'field';
83
+ const TYPE = 'autocomplete';
84
+ const ITEM = setup(ID, TYPE, LABEL, true, []);
77
85
  ITEM.custom_errors = [{
78
86
  "type": "required",
79
87
  // eslint-disable-next-line no-template-curly-in-string
80
88
  "message": "Test to check that ${index} is 1"
81
89
  }];
82
- var COLLECTION = setup(ID, _models.ComponentTypes.CONTAINER, LABEL, false, [ITEM]);
90
+ const COLLECTION = setup(ID, _models.ComponentTypes.CONTAINER, LABEL, false, [ITEM]);
83
91
  COLLECTION.countOffset = 0;
84
92
  expect((0, _validateCollection.default)(COLLECTION, ITEM.custom_errors)).toEqual([{
85
93
  error: "Test to check that 1 is 1",
86
94
  id: "".concat(ID, "[0].").concat(COLLECTION.type)
87
95
  }]);
88
96
  });
89
- it('should correctly display firstOnlyMessage error message', function () {
90
- var ID = 'container';
91
- var LABEL = 'field';
92
- var TYPE = 'autocomplete';
93
- var ITEM = setup(ID, TYPE, LABEL, true, []);
97
+ it('should correctly display firstOnlyMessage error message', () => {
98
+ const ID = 'container';
99
+ const LABEL = 'field';
100
+ const TYPE = 'autocomplete';
101
+ const ITEM = setup(ID, TYPE, LABEL, true, []);
94
102
  ITEM.custom_errors = [{
95
103
  "type": "required",
96
104
  // eslint-disable-next-line no-template-curly-in-string
97
105
  "message": "Test to check that ${index} is 1",
98
106
  "firstOnlyMessage": "Test for first message"
99
107
  }];
100
- var COLLECTION = setup(ID, _models.ComponentTypes.CONTAINER, LABEL, false, [ITEM]);
108
+ const COLLECTION = setup(ID, _models.ComponentTypes.CONTAINER, LABEL, false, [ITEM]);
101
109
  COLLECTION.countOffset = 0;
102
110
  expect((0, _validateCollection.default)(COLLECTION, ITEM.custom_errors)).toEqual([{
103
111
  error: "Test for first message",
104
112
  id: "".concat(ID, "[0].").concat(COLLECTION.type)
105
113
  }]);
106
114
  });
107
- it('should correctly display message if firstOnlyMessage is undefined', function () {
108
- var ID = 'container';
109
- var LABEL = 'field';
110
- var TYPE = 'autocomplete';
111
- var ITEM = setup(ID, TYPE, LABEL, true, []);
115
+ it('should correctly display message if firstOnlyMessage is undefined', () => {
116
+ const ID = 'container';
117
+ const LABEL = 'field';
118
+ const TYPE = 'autocomplete';
119
+ const ITEM = setup(ID, TYPE, LABEL, true, []);
112
120
  ITEM.custom_errors = [{
113
121
  "type": "required",
114
122
  // eslint-disable-next-line no-template-curly-in-string
115
123
  "message": "Test to check that ${index} is 1",
116
124
  "firstOnlyMessage": undefined
117
125
  }];
118
- var COLLECTION = setup(ID, _models.ComponentTypes.CONTAINER, LABEL, false, [ITEM]);
126
+ const COLLECTION = setup(ID, _models.ComponentTypes.CONTAINER, LABEL, false, [ITEM]);
119
127
  COLLECTION.countOffset = 0;
120
128
  expect((0, _validateCollection.default)(COLLECTION, ITEM.custom_errors)).toEqual([{
121
129
  error: "Test to check that 1 is 1",
@@ -19,7 +19,8 @@ var _validateRequired = _interopRequireDefault(require("./validateRequired"));
19
19
  var _validateTextArea = _interopRequireDefault(require("./validateTextArea"));
20
20
  var _validateTime = _interopRequireDefault(require("./validateTime"));
21
21
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22
- 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); } // Local imports
22
+ // Local imports
23
+
23
24
  /**
24
25
  * Validates a single component.
25
26
  * @param {object} component The component to validate.
@@ -27,18 +28,18 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
27
28
  * @param {object} formData The data at the top level of the form.
28
29
  * @returns The first encountered error with the component.
29
30
  */
30
- var validateComponent = function validateComponent(component, outerData, formData) {
31
- var fd = formData || outerData;
31
+ const validateComponent = (component, outerData, formData) => {
32
+ const fd = formData || outerData;
32
33
  if (!(0, _showComponent.default)(component, fd)) {
33
34
  return undefined;
34
35
  }
35
36
  if (component.type === _models.ComponentTypes.CONTAINER) {
36
37
  return (0, _validateContainer.default)(component, outerData, fd);
37
38
  }
38
- var error;
39
- var properties;
40
- var data = outerData && _typeof(outerData) === 'object' ? outerData : {};
41
- var value = data[component.fieldId];
39
+ let error;
40
+ let properties;
41
+ const data = outerData && typeof outerData === 'object' ? outerData : {};
42
+ let value = data[component.fieldId];
42
43
  if (component.type === _models.ComponentTypes.COLLECTION_SUMMARY) {
43
44
  value = (0, _getCollectionPageData.default)(component.collectionName, fd);
44
45
  }
@@ -55,10 +56,11 @@ var validateComponent = function validateComponent(component, outerData, formDat
55
56
  case _models.ComponentTypes.DATE:
56
57
  case _models.ComponentTypes.TIME:
57
58
  {
58
- var validator = component.type === _models.ComponentTypes.DATE ? _validateDate.default : _validateTime.default;
59
- var _validator = validator(value),
60
- message = _validator.message,
61
- propsInError = _validator.propsInError;
59
+ const validator = component.type === _models.ComponentTypes.DATE ? _validateDate.default : _validateTime.default;
60
+ const {
61
+ message,
62
+ propsInError
63
+ } = validator(value);
62
64
  properties = propsInError;
63
65
  error = message;
64
66
  break;
@@ -68,8 +70,8 @@ var validateComponent = function validateComponent(component, outerData, formDat
68
70
  case _models.ComponentTypes.RADIOS:
69
71
  {
70
72
  var _component$data$optio;
71
- var nestedErrors = [];
72
- (_component$data$optio = component.data.options) === null || _component$data$optio === void 0 || _component$data$optio.forEach(function (option) {
73
+ let nestedErrors = [];
74
+ (_component$data$optio = component.data.options) === null || _component$data$optio === void 0 || _component$data$optio.forEach(option => {
73
75
  if (option.nested && (0, _optionIsSelected.default)(formData[component.id], option)) {
74
76
  nestedErrors = nestedErrors.concat((0, _validateContainer.default)({
75
77
  components: option.nested
@@ -108,8 +110,8 @@ var validateComponent = function validateComponent(component, outerData, formDat
108
110
  if (error) {
109
111
  return {
110
112
  id: component.full_path || component.id,
111
- error: error,
112
- properties: properties
113
+ error,
114
+ properties
113
115
  };
114
116
  }
115
117
  return undefined;