@ukhomeoffice/cop-react-form-renderer 6.7.0-alpha → 6.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (382) hide show
  1. package/dist/components/CheckYourAnswers/Answer.js +22 -16
  2. package/dist/components/CheckYourAnswers/Answer.test.js +180 -92
  3. package/dist/components/CheckYourAnswers/CheckYourAnswers.js +143 -105
  4. package/dist/components/CheckYourAnswers/CheckYourAnswers.test.js +942 -463
  5. package/dist/components/CollectionPage/CollectionPage.js +63 -73
  6. package/dist/components/CollectionPage/CollectionPage.test.js +366 -316
  7. package/dist/components/CollectionSummary/BannerStrip.js +13 -13
  8. package/dist/components/CollectionSummary/BannerStrip.test.js +76 -80
  9. package/dist/components/CollectionSummary/CollectionSummary.js +131 -102
  10. package/dist/components/CollectionSummary/CollectionSummary.scss +5 -0
  11. package/dist/components/CollectionSummary/CollectionSummary.test.js +233 -173
  12. package/dist/components/CollectionSummary/Confirmation.js +12 -14
  13. package/dist/components/CollectionSummary/Confirmation.test.js +63 -68
  14. package/dist/components/CollectionSummary/RenderListView.js +57 -48
  15. package/dist/components/CollectionSummary/RenderListView.scss +1 -1
  16. package/dist/components/CollectionSummary/RenderListView.test.js +77 -78
  17. package/dist/components/CollectionSummary/SummaryCard.js +156 -112
  18. package/dist/components/CollectionSummary/SummaryCard.scss +6 -0
  19. package/dist/components/CollectionSummary/SummaryCard.test.js +1023 -934
  20. package/dist/components/CollectionSummary/SummaryCardDetails.js +138 -94
  21. package/dist/components/CollectionSummary/SummaryCardDetails.scss +15 -4
  22. package/dist/components/CollectionSummary/SummaryCardDetails.test.js +331 -128
  23. package/dist/components/CollectionSummary/SummaryCardValidationContext.js +35 -30
  24. package/dist/components/CollectionSummary/SummaryCardValidationContext.test.js +74 -62
  25. package/dist/components/FormComponent/Collection.js +108 -74
  26. package/dist/components/FormComponent/Collection.test.js +1081 -909
  27. package/dist/components/FormComponent/Container.js +39 -40
  28. package/dist/components/FormComponent/Container.test.js +412 -312
  29. package/dist/components/FormComponent/FormComponent.js +73 -70
  30. package/dist/components/FormComponent/FormComponent.test.js +414 -353
  31. package/dist/components/FormComponent/helpers/addLabel.js +7 -4
  32. package/dist/components/FormComponent/helpers/getComponentDisabled.js +1 -1
  33. package/dist/components/FormComponent/helpers/getComponentDisabled.test.js +7 -7
  34. package/dist/components/FormComponent/helpers/getComponentError.js +5 -3
  35. package/dist/components/FormComponent/helpers/getComponentError.test.js +14 -14
  36. package/dist/components/FormComponent/helpers/getComponentFieldSet.js +4 -3
  37. package/dist/components/FormComponent/helpers/getComponentFieldSet.test.js +6 -6
  38. package/dist/components/FormComponent/helpers/index.js +4 -4
  39. package/dist/components/FormPage/FormPage.js +93 -66
  40. package/dist/components/FormPage/FormPage.test.js +163 -127
  41. package/dist/components/FormRenderer/FormRenderer.js +180 -143
  42. package/dist/components/FormRenderer/FormRenderer.test.js +1115 -730
  43. package/dist/components/FormRenderer/handlers/cyaAction.js +2 -2
  44. package/dist/components/FormRenderer/handlers/getPageId.js +3 -1
  45. package/dist/components/FormRenderer/handlers/getPageId.test.js +14 -14
  46. package/dist/components/FormRenderer/handlers/handlers.test.js +32 -32
  47. package/dist/components/FormRenderer/handlers/index.js +1 -1
  48. package/dist/components/FormRenderer/handlers/navigate.js +3 -3
  49. package/dist/components/FormRenderer/handlers/submissionError.js +1 -1
  50. package/dist/components/FormRenderer/helpers/canActionProceed.js +1 -1
  51. package/dist/components/FormRenderer/helpers/canActionProceed.test.js +15 -15
  52. package/dist/components/FormRenderer/helpers/canCYASubmit.js +3 -1
  53. package/dist/components/FormRenderer/helpers/canCYASubmit.test.js +20 -16
  54. package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.js +39 -22
  55. package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.test.js +74 -16
  56. package/dist/components/FormRenderer/helpers/getCYA.js +5 -3
  57. package/dist/components/FormRenderer/helpers/getCYA.test.js +11 -11
  58. package/dist/components/FormRenderer/helpers/getFormState.js +7 -5
  59. package/dist/components/FormRenderer/helpers/getFormState.test.js +10 -10
  60. package/dist/components/FormRenderer/helpers/getNextPageId.js +24 -13
  61. package/dist/components/FormRenderer/helpers/getNextPageId.test.js +67 -67
  62. package/dist/components/FormRenderer/helpers/getPage.js +4 -2
  63. package/dist/components/FormRenderer/helpers/getPage.test.js +11 -11
  64. package/dist/components/FormRenderer/helpers/getRelevantPages.js +9 -7
  65. package/dist/components/FormRenderer/helpers/getRelevantPages.test.js +14 -14
  66. package/dist/components/FormRenderer/helpers/getSubmissionStatus.js +5 -5
  67. package/dist/components/FormRenderer/helpers/getSubmissionStatus.test.js +97 -103
  68. package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.js +60 -62
  69. package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.test.js +78 -71
  70. package/dist/components/FormRenderer/helpers/index.js +1 -1
  71. package/dist/components/FormRenderer/onCYAAction.js +51 -59
  72. package/dist/components/FormRenderer/onCYAAction.test.js +152 -164
  73. package/dist/components/FormRenderer/onPageAction.js +44 -44
  74. package/dist/components/FormRenderer/onPageAction.test.js +208 -223
  75. package/dist/components/FormRenderer/onTaskAction.js +13 -9
  76. package/dist/components/FormRenderer/onTaskAction.test.js +88 -93
  77. package/dist/components/PageActions/ActionButton.js +15 -12
  78. package/dist/components/PageActions/ActionButton.test.js +78 -56
  79. package/dist/components/PageActions/PageActions.js +10 -10
  80. package/dist/components/PageActions/PageActions.test.js +115 -86
  81. package/dist/components/SummaryList/GroupAction.js +17 -9
  82. package/dist/components/SummaryList/GroupAction.test.js +33 -37
  83. package/dist/components/SummaryList/RowAction.js +16 -11
  84. package/dist/components/SummaryList/RowAction.test.js +33 -37
  85. package/dist/components/SummaryList/SummaryList.js +34 -21
  86. package/dist/components/SummaryList/SummaryList.scss +15 -0
  87. package/dist/components/SummaryList/SummaryList.test.js +226 -143
  88. package/dist/components/SummaryList/SummaryListHeadingRow.js +4 -6
  89. package/dist/components/SummaryList/SummaryListHeadingRowWithAction.js +53 -0
  90. package/dist/components/SummaryList/SummaryListHeadingRowWithAction.scss +38 -0
  91. package/dist/components/SummaryList/SummaryListRow.js +4 -6
  92. package/dist/components/SummaryList/SummaryListTitleRow.js +3 -5
  93. package/dist/components/SummaryList/helpers/getGroupActionAttributes.js +5 -3
  94. package/dist/components/SummaryList/helpers/getGroupActionAttributes.test.js +22 -22
  95. package/dist/components/SummaryList/helpers/getRowActionAttributes.js +5 -3
  96. package/dist/components/SummaryList/helpers/getRowActionAttributes.test.js +22 -22
  97. package/dist/components/SummaryList/helpers/index.js +1 -1
  98. package/dist/components/TaskList/Task.js +29 -19
  99. package/dist/components/TaskList/Task.test.js +76 -83
  100. package/dist/components/TaskList/TaskList.js +92 -49
  101. package/dist/components/TaskList/TaskList.scss +24 -0
  102. package/dist/components/TaskList/TaskList.test.js +255 -113
  103. package/dist/components/TaskList/TaskState.js +5 -7
  104. package/dist/components/TaskList/TaskState.test.js +45 -52
  105. package/dist/components/index.js +7 -7
  106. package/dist/context/HooksContext/HooksContext.js +80 -57
  107. package/dist/context/HooksContext/HooksContext.test.js +35 -26
  108. package/dist/context/HooksContext/index.js +4 -3
  109. package/dist/context/ValidationContext/ValidationContext.js +94 -43
  110. package/dist/context/ValidationContext/ValidationContext.test.js +68 -56
  111. package/dist/context/ValidationContext/index.js +4 -3
  112. package/dist/context/index.js +2 -2
  113. package/dist/hooks/index.js +10 -9
  114. package/dist/hooks/useAxios.js +40 -14
  115. package/dist/hooks/useGetRequest.js +97 -61
  116. package/dist/hooks/useHooks.js +3 -1
  117. package/dist/hooks/useRefData.js +39 -26
  118. package/dist/hooks/useValidation.js +3 -1
  119. package/dist/index.js +14 -13
  120. package/dist/json/actions.json +17 -0
  121. package/dist/json/actionsNoSave.json +17 -0
  122. package/dist/models/CollectionLabels.js +1 -1
  123. package/dist/models/ComponentTypes.js +25 -25
  124. package/dist/models/EventTypes.js +4 -4
  125. package/dist/models/FormPages.js +4 -4
  126. package/dist/models/FormTypes.js +8 -8
  127. package/dist/models/HubFormats.js +3 -3
  128. package/dist/models/PageAction.js +38 -44
  129. package/dist/models/TaskStates.js +28 -29
  130. package/dist/models/index.js +9 -9
  131. package/dist/setupTests.js +31 -30
  132. package/dist/utils/CheckYourAnswers/getCYAAction.js +5 -5
  133. package/dist/utils/CheckYourAnswers/getCYAAction.test.js +54 -52
  134. package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.js +25 -15
  135. package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.test.js +35 -33
  136. package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.js +31 -17
  137. package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.test.js +44 -42
  138. package/dist/utils/CheckYourAnswers/getCYARow.js +6 -6
  139. package/dist/utils/CheckYourAnswers/getCYARow.test.js +86 -86
  140. package/dist/utils/CheckYourAnswers/getCYARowForGroup.js +24 -18
  141. package/dist/utils/CheckYourAnswers/getCYARowForGroup.test.js +16 -15
  142. package/dist/utils/CheckYourAnswers/getCYARowsForCollection.js +36 -33
  143. package/dist/utils/CheckYourAnswers/getCYARowsForCollection.test.js +61 -58
  144. package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.js +113 -89
  145. package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.test.js +320 -162
  146. package/dist/utils/CheckYourAnswers/getCYARowsForContainer.js +20 -25
  147. package/dist/utils/CheckYourAnswers/getCYARowsForContainer.test.js +97 -103
  148. package/dist/utils/CheckYourAnswers/getCYARowsForPage.js +18 -13
  149. package/dist/utils/CheckYourAnswers/getCYARowsForPage.test.js +76 -70
  150. package/dist/utils/CheckYourAnswers/getSummaryListRowForDetails.js +42 -0
  151. package/dist/utils/CheckYourAnswers/getSummaryListRowForDetails.test.js +56 -0
  152. package/dist/utils/CheckYourAnswers/index.js +1 -1
  153. package/dist/utils/CheckYourAnswers/showComponentCYA.js +4 -4
  154. package/dist/utils/CheckYourAnswers/showComponentCYA.test.js +25 -25
  155. package/dist/utils/CollectionPage/addCollectionPageEntry.js +2 -2
  156. package/dist/utils/CollectionPage/addCollectionPageEntry.test.js +5 -5
  157. package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.js +2 -2
  158. package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.test.js +18 -17
  159. package/dist/utils/CollectionPage/duplicateCollectionPageEntry.js +22 -12
  160. package/dist/utils/CollectionPage/duplicateCollectionPageEntry.test.js +38 -47
  161. package/dist/utils/CollectionPage/getCollectionPageActiveId.js +2 -2
  162. package/dist/utils/CollectionPage/getCollectionPageActiveId.test.js +10 -10
  163. package/dist/utils/CollectionPage/getCollectionPageActiveIndex.js +11 -7
  164. package/dist/utils/CollectionPage/getCollectionPageActiveIndex.test.js +22 -22
  165. package/dist/utils/CollectionPage/getCollectionPageData.js +12 -8
  166. package/dist/utils/CollectionPage/getCollectionPageData.test.js +19 -19
  167. package/dist/utils/CollectionPage/getErrorsForCollection.js +24 -24
  168. package/dist/utils/CollectionPage/getErrorsForCollection.test.js +22 -20
  169. package/dist/utils/CollectionPage/getQuickEditPage.js +31 -35
  170. package/dist/utils/CollectionPage/getQuickEditPage.test.js +27 -15
  171. package/dist/utils/CollectionPage/index.js +1 -1
  172. package/dist/utils/CollectionPage/mergeCollectionPages.js +43 -31
  173. package/dist/utils/CollectionPage/mergeCollectionPages.test.js +26 -26
  174. package/dist/utils/CollectionPage/removeCollectionPageEntry.js +6 -4
  175. package/dist/utils/CollectionPage/removeCollectionPageEntry.test.js +10 -10
  176. package/dist/utils/CollectionPage/setCollectionPageData.js +16 -10
  177. package/dist/utils/CollectionPage/setCollectionPageData.test.js +24 -24
  178. package/dist/utils/Component/addShowWhen.js +8 -4
  179. package/dist/utils/Component/addShowWhen.test.js +37 -37
  180. package/dist/utils/Component/applyToComponentTree.js +18 -18
  181. package/dist/utils/Component/applyToComponentTree.test.js +32 -27
  182. package/dist/utils/Component/cleanAttributes.js +13 -10
  183. package/dist/utils/Component/cleanAttributes.test.js +18 -17
  184. package/dist/utils/Component/elevateNestedComponents.js +7 -6
  185. package/dist/utils/Component/elevateNestedComponents.test.js +68 -30
  186. package/dist/utils/Component/getComponent.js +94 -88
  187. package/dist/utils/Component/getComponentTests/getComponent.autocomplete.test.js +17 -18
  188. package/dist/utils/Component/getComponentTests/getComponent.calculation.test.js +59 -46
  189. package/dist/utils/Component/getComponentTests/getComponent.checkboxes.test.js +48 -39
  190. package/dist/utils/Component/getComponentTests/getComponent.date.test.js +33 -23
  191. package/dist/utils/Component/getComponentTests/getComponent.details.test.js +18 -20
  192. package/dist/utils/Component/getComponentTests/getComponent.email.test.js +22 -17
  193. package/dist/utils/Component/getComponentTests/getComponent.file.test.js +25 -20
  194. package/dist/utils/Component/getComponentTests/getComponent.heading.test.js +9 -10
  195. package/dist/utils/Component/getComponentTests/getComponent.html.test.js +15 -17
  196. package/dist/utils/Component/getComponentTests/getComponent.insetText.test.js +8 -9
  197. package/dist/utils/Component/getComponentTests/getComponent.list.test.js +15 -17
  198. package/dist/utils/Component/getComponentTests/getComponent.multifile.test.js +26 -22
  199. package/dist/utils/Component/getComponentTests/getComponent.nested.test.js +175 -155
  200. package/dist/utils/Component/getComponentTests/getComponent.paragraph.test.js +15 -17
  201. package/dist/utils/Component/getComponentTests/getComponent.phoneNumber.test.js +22 -17
  202. package/dist/utils/Component/getComponentTests/getComponent.radios.test.js +72 -57
  203. package/dist/utils/Component/getComponentTests/getComponent.select.test.js +22 -17
  204. package/dist/utils/Component/getComponentTests/getComponent.text.test.js +22 -17
  205. package/dist/utils/Component/getComponentTests/getComponent.textArea.test.js +38 -31
  206. package/dist/utils/Component/getComponentTests/getComponent.time.test.js +29 -20
  207. package/dist/utils/Component/getComponentTests/getComponent.unknown.test.js +2 -2
  208. package/dist/utils/Component/getComponentTests/getComponent.warningText.test.js +8 -9
  209. package/dist/utils/Component/getDefaultValue.js +8 -6
  210. package/dist/utils/Component/getDefaultValue.test.js +12 -12
  211. package/dist/utils/Component/getDefaultValueFromConfig.js +21 -22
  212. package/dist/utils/Component/getDefaultValueFromConfig.test.js +31 -31
  213. package/dist/utils/Component/index.js +1 -1
  214. package/dist/utils/Component/isEditable.js +4 -2
  215. package/dist/utils/Component/isEditable.test.js +15 -14
  216. package/dist/utils/Component/optionIsSelected.js +6 -1
  217. package/dist/utils/Component/optionIsSelected.test.js +35 -9
  218. package/dist/utils/Component/setupContainerComponentsPath.js +29 -27
  219. package/dist/utils/Component/setupContainerComponentsPath.test.js +11 -11
  220. package/dist/utils/Component/showComponent.js +1 -1
  221. package/dist/utils/Component/showComponent.test.js +28 -28
  222. package/dist/utils/Component/wrapInFormGroup.js +2 -2
  223. package/dist/utils/Condition/index.js +1 -1
  224. package/dist/utils/Condition/meetsAllConditions.js +8 -8
  225. package/dist/utils/Condition/meetsAllConditions.test.js +20 -20
  226. package/dist/utils/Condition/meetsCondition.js +25 -16
  227. package/dist/utils/Condition/meetsCondition.test.js +402 -402
  228. package/dist/utils/Condition/meetsOneCondition.js +5 -5
  229. package/dist/utils/Condition/meetsOneCondition.test.js +16 -16
  230. package/dist/utils/Condition/setupConditions.js +18 -13
  231. package/dist/utils/Condition/setupConditions.test.js +7 -7
  232. package/dist/utils/Container/getEditableComponents.js +5 -3
  233. package/dist/utils/Container/getEditableComponents.test.js +45 -43
  234. package/dist/utils/Container/index.js +1 -1
  235. package/dist/utils/Container/setupNesting.js +20 -16
  236. package/dist/utils/Container/setupNesting.test.js +30 -27
  237. package/dist/utils/Container/showContainer.js +7 -3
  238. package/dist/utils/Container/showContainer.test.js +30 -30
  239. package/dist/utils/Data/applyFormula.js +48 -38
  240. package/dist/utils/Data/applyFormula.test.js +20 -20
  241. package/dist/utils/Data/deleteValues.js +22 -0
  242. package/dist/utils/Data/deleteValues.test.js +57 -0
  243. package/dist/utils/Data/getAutocompleteSource.js +26 -18
  244. package/dist/utils/Data/getAutocompleteSource.test.js +100 -85
  245. package/dist/utils/Data/getDataPath.js +28 -18
  246. package/dist/utils/Data/getDataPath.test.js +12 -12
  247. package/dist/utils/Data/getOptions.js +31 -24
  248. package/dist/utils/Data/getOptions.test.js +53 -35
  249. package/dist/utils/Data/getSourceData.js +19 -6
  250. package/dist/utils/Data/getSourceData.test.js +80 -84
  251. package/dist/utils/Data/index.js +3 -1
  252. package/dist/utils/Data/nestInRefdataOptions.js +16 -9
  253. package/dist/utils/Data/nestInRefdataOptions.test.js +16 -16
  254. package/dist/utils/Data/refDataToOptions.js +13 -10
  255. package/dist/utils/Data/refDataToOptions.test.js +19 -19
  256. package/dist/utils/Data/setDataItem.js +8 -7
  257. package/dist/utils/Data/setDataItem.test.js +37 -37
  258. package/dist/utils/Data/setupFormData.js +21 -13
  259. package/dist/utils/Data/setupFormData.test.js +50 -51
  260. package/dist/utils/Data/setupRefDataUrlForComponent.js +26 -20
  261. package/dist/utils/Data/setupRefDataUrlForComponent.test.js +24 -24
  262. package/dist/utils/FormPage/applyConditionalProperties.js +9 -5
  263. package/dist/utils/FormPage/applyConditionalProperties.test.js +18 -15
  264. package/dist/utils/FormPage/getConditionalText.js +3 -3
  265. package/dist/utils/FormPage/getConditionalText.test.js +29 -29
  266. package/dist/utils/FormPage/getFormPage.js +16 -15
  267. package/dist/utils/FormPage/getFormPage.test.js +46 -47
  268. package/dist/utils/FormPage/getFormPages.js +12 -7
  269. package/dist/utils/FormPage/getFormPages.test.js +23 -20
  270. package/dist/utils/FormPage/getPageActions.js +15 -9
  271. package/dist/utils/FormPage/getPageActions.test.js +32 -32
  272. package/dist/utils/FormPage/getParagraphFromText.js +7 -5
  273. package/dist/utils/FormPage/getParagraphFromText.test.js +6 -6
  274. package/dist/utils/FormPage/index.js +4 -2
  275. package/dist/utils/FormPage/showFormPage.js +7 -3
  276. package/dist/utils/FormPage/showFormPage.test.js +32 -32
  277. package/dist/utils/FormPage/showFormPageCYA.js +1 -1
  278. package/dist/utils/FormPage/showFormPageCYA.test.js +8 -8
  279. package/dist/utils/FormPage/useComponent.js +28 -21
  280. package/dist/utils/FormPage/useComponent.test.js +79 -77
  281. package/dist/utils/Format/formatData.js +1 -1
  282. package/dist/utils/Format/formatData.test.js +18 -18
  283. package/dist/utils/Format/formatDataForComponent.js +6 -5
  284. package/dist/utils/Format/formatDataForComponent.test.js +78 -50
  285. package/dist/utils/Format/formatDataForForm.js +8 -6
  286. package/dist/utils/Format/formatDataForForm.test.js +16 -13
  287. package/dist/utils/Format/formatDataForPage.js +5 -4
  288. package/dist/utils/Format/formatDataForPage.test.js +25 -20
  289. package/dist/utils/Format/index.js +1 -1
  290. package/dist/utils/Hub/getFormHub.js +1 -1
  291. package/dist/utils/Hub/getFormHub.test.js +31 -28
  292. package/dist/utils/Hub/index.js +1 -1
  293. package/dist/utils/Meta/constants.js +2 -2
  294. package/dist/utils/Meta/documents/getDocuments.js +1 -1
  295. package/dist/utils/Meta/documents/getDocuments.test.js +16 -24
  296. package/dist/utils/Meta/documents/index.js +1 -1
  297. package/dist/utils/Meta/documents/setDocumentsForField.js +16 -14
  298. package/dist/utils/Meta/documents/setDocumentsForField.test.js +34 -68
  299. package/dist/utils/Meta/index.js +1 -1
  300. package/dist/utils/Operate/checkValueIsTruthy.js +2 -2
  301. package/dist/utils/Operate/checkValueIsTruthy.test.js +16 -16
  302. package/dist/utils/Operate/deleteValueInFormData.js +26 -0
  303. package/dist/utils/Operate/deleteValueInFormData.test.js +60 -0
  304. package/dist/utils/Operate/getFirstOf.js +5 -5
  305. package/dist/utils/Operate/getFirstOf.test.js +31 -31
  306. package/dist/utils/Operate/getIndexOfMatchingValueIn.js +10 -10
  307. package/dist/utils/Operate/getIndexOfMatchingValueIn.test.js +52 -46
  308. package/dist/utils/Operate/getLength.js +50 -0
  309. package/dist/utils/Operate/getLength.test.js +89 -0
  310. package/dist/utils/Operate/index.js +1 -1
  311. package/dist/utils/Operate/persistValueInFormData.js +3 -3
  312. package/dist/utils/Operate/persistValueInFormData.test.js +20 -22
  313. package/dist/utils/Operate/runPageOperations.js +11 -7
  314. package/dist/utils/Operate/runPageOperations.test.js +36 -35
  315. package/dist/utils/Operate/setValueInFormData.js +2 -2
  316. package/dist/utils/Operate/setValueInFormData.test.js +16 -16
  317. package/dist/utils/Operate/shouldRun.js +6 -6
  318. package/dist/utils/Operate/shouldRun.test.js +27 -21
  319. package/dist/utils/Validate/additional/conditionallyRequired.js +4 -4
  320. package/dist/utils/Validate/additional/conditionallyRequired.test.js +18 -18
  321. package/dist/utils/Validate/additional/index.js +10 -7
  322. package/dist/utils/Validate/additional/index.test.js +78 -12
  323. package/dist/utils/Validate/additional/mustBeAfter.js +2 -2
  324. package/dist/utils/Validate/additional/mustBeAfter.test.js +40 -40
  325. package/dist/utils/Validate/additional/mustBeBefore.js +2 -2
  326. package/dist/utils/Validate/additional/mustBeBefore.test.js +28 -28
  327. package/dist/utils/Validate/additional/mustBeEarlierDateTime.js +11 -7
  328. package/dist/utils/Validate/additional/mustBeEarlierDateTime.test.js +41 -37
  329. package/dist/utils/Validate/additional/mustBeGreaterThan.js +2 -2
  330. package/dist/utils/Validate/additional/mustBeGreaterThan.test.js +18 -18
  331. package/dist/utils/Validate/additional/mustBeInTheFuture.js +2 -2
  332. package/dist/utils/Validate/additional/mustBeInTheFuture.test.js +12 -12
  333. package/dist/utils/Validate/additional/mustBeInThePast.js +3 -3
  334. package/dist/utils/Validate/additional/mustBeInThePast.test.js +12 -12
  335. package/dist/utils/Validate/additional/mustBeLessThan.js +2 -2
  336. package/dist/utils/Validate/additional/mustBeLessThan.test.js +17 -17
  337. package/dist/utils/Validate/additional/mustBeLongerThan.js +1 -1
  338. package/dist/utils/Validate/additional/mustBeLongerThan.test.js +16 -16
  339. package/dist/utils/Validate/additional/mustBeNumbersOnly.js +2 -2
  340. package/dist/utils/Validate/additional/mustBeNumbersOnly.test.js +20 -20
  341. package/dist/utils/Validate/additional/mustBeOneOf.js +21 -0
  342. package/dist/utils/Validate/additional/mustBeOneOf.test.js +36 -0
  343. package/dist/utils/Validate/additional/mustBeShorterThan.js +1 -1
  344. package/dist/utils/Validate/additional/mustBeShorterThan.test.js +16 -16
  345. package/dist/utils/Validate/additional/mustBeUniqueInCollection.js +4 -4
  346. package/dist/utils/Validate/additional/mustBeUniqueInCollection.test.js +39 -35
  347. package/dist/utils/Validate/additional/mustEnterAtLeastOne.js +2 -2
  348. package/dist/utils/Validate/additional/mustEnterAtLeastOne.test.js +16 -14
  349. package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.js +1 -1
  350. package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.test.js +12 -12
  351. package/dist/utils/Validate/additional/mustNotContainSql.js +4 -3
  352. package/dist/utils/Validate/additional/mustNotContainSql.test.js +14 -14
  353. package/dist/utils/Validate/additional/mustSelectOnlyOne.js +2 -2
  354. package/dist/utils/Validate/additional/mustSelectOnlyOne.test.js +26 -28
  355. package/dist/utils/Validate/additional/utils.js +22 -9
  356. package/dist/utils/Validate/index.js +1 -1
  357. package/dist/utils/Validate/validateCollection.js +25 -19
  358. package/dist/utils/Validate/validateCollection.test.js +66 -74
  359. package/dist/utils/Validate/validateComponent.js +21 -18
  360. package/dist/utils/Validate/validateComponent.test.js +176 -166
  361. package/dist/utils/Validate/validateContainer.js +20 -15
  362. package/dist/utils/Validate/validateContainer.test.js +52 -58
  363. package/dist/utils/Validate/validateDate.js +21 -15
  364. package/dist/utils/Validate/validateDate.test.js +32 -31
  365. package/dist/utils/Validate/validateEmail.js +8 -6
  366. package/dist/utils/Validate/validateEmail.test.js +25 -25
  367. package/dist/utils/Validate/validateMultifile.js +7 -5
  368. package/dist/utils/Validate/validateMultifile.test.js +18 -17
  369. package/dist/utils/Validate/validatePage.js +22 -19
  370. package/dist/utils/Validate/validatePage.test.js +203 -215
  371. package/dist/utils/Validate/validateRegex.js +5 -3
  372. package/dist/utils/Validate/validateRegex.test.js +14 -14
  373. package/dist/utils/Validate/validateRequired.js +6 -4
  374. package/dist/utils/Validate/validateRequired.test.js +18 -18
  375. package/dist/utils/Validate/validateTextArea.js +6 -4
  376. package/dist/utils/Validate/validateTextArea.test.js +20 -20
  377. package/dist/utils/Validate/validateTime.js +26 -11
  378. package/dist/utils/Validate/validateTime.test.js +62 -16
  379. package/dist/utils/index.js +9 -7
  380. package/package.json +2 -2
  381. package/dist/utils/CheckYourAnswers/getComponentRowForCYA.js +0 -37
  382. package/dist/utils/CheckYourAnswers/getComponentRowForCYA.test.js +0 -41
@@ -13,8 +13,8 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
13
13
  * @param {string} currentPageId The current pageId.
14
14
  * @param {Function} onChange The handler to call if the pageId is different to the currentPageId.
15
15
  */
16
- const cyaAction = (page, currentPageId, onChange) => {
17
- const pageId = (0, _getPageId.default)(page.action, page.pageId);
16
+ var cyaAction = function cyaAction(page, currentPageId, onChange) {
17
+ var pageId = (0, _getPageId.default)(page.action, page.pageId);
18
18
  if (pageId !== currentPageId) {
19
19
  onChange(pageId);
20
20
  }
@@ -10,5 +10,7 @@ exports.default = void 0;
10
10
  * @param {string} pageId The id of the page on which the action was invoked.
11
11
  * @returns A page id.
12
12
  */
13
- const getPageId = (action, pageId) => (action === null || action === void 0 ? void 0 : action.page) || pageId;
13
+ var getPageId = function getPageId(action, pageId) {
14
+ return (action === null || action === void 0 ? void 0 : action.page) || pageId;
15
+ };
14
16
  var _default = exports.default = getPageId;
@@ -4,26 +4,26 @@ var _getPageId = _interopRequireDefault(require("./getPageId"));
4
4
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5
5
  // Local imports
6
6
 
7
- describe('components', () => {
8
- describe('FormRenderer', () => {
9
- describe('handlers', () => {
10
- describe('getPageId', () => {
11
- it('should return the pageId when the action is null', () => {
12
- const PAGE_ID = 'alpha';
13
- const ACTION = null;
7
+ describe('components', function () {
8
+ describe('FormRenderer', function () {
9
+ describe('handlers', function () {
10
+ describe('getPageId', function () {
11
+ it('should return the pageId when the action is null', function () {
12
+ var PAGE_ID = 'alpha';
13
+ var ACTION = null;
14
14
  expect((0, _getPageId.default)(ACTION, PAGE_ID)).toEqual(PAGE_ID);
15
15
  });
16
- it('should return the pageId when the action contains no page', () => {
17
- const PAGE_ID = 'alpha';
18
- const ACTION = {
16
+ it('should return the pageId when the action contains no page', function () {
17
+ var PAGE_ID = 'alpha';
18
+ var ACTION = {
19
19
  id: 'bravo'
20
20
  };
21
21
  expect((0, _getPageId.default)(ACTION, PAGE_ID)).toEqual(PAGE_ID);
22
22
  });
23
- it('should return the page when provided', () => {
24
- const NAVIGATE_TO = 'delta';
25
- const PAGE_ID = 'alpha';
26
- const ACTION = {
23
+ it('should return the page when provided', function () {
24
+ var NAVIGATE_TO = 'delta';
25
+ var PAGE_ID = 'alpha';
26
+ var ACTION = {
27
27
  page: NAVIGATE_TO
28
28
  };
29
29
  expect((0, _getPageId.default)(ACTION, PAGE_ID)).toEqual(NAVIGATE_TO);
@@ -4,30 +4,30 @@ var _ = _interopRequireDefault(require("."));
4
4
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5
5
  // Local imports
6
6
 
7
- describe('components', () => {
8
- describe('FormRenderer', () => {
9
- describe('handlers', () => {
10
- describe('cyaAction', () => {
11
- it('should not call the onChange method when the page is unchanged', () => {
12
- const CURRENT_PAGE_ID = 'alpha';
13
- const PAGE = {
7
+ describe('components', function () {
8
+ describe('FormRenderer', function () {
9
+ describe('handlers', function () {
10
+ describe('cyaAction', function () {
11
+ it('should not call the onChange method when the page is unchanged', function () {
12
+ var CURRENT_PAGE_ID = 'alpha';
13
+ var PAGE = {
14
14
  pageId: CURRENT_PAGE_ID
15
15
  };
16
- const ON_CHANGE_CALLS = [];
17
- const ON_CHANGE = pageId => {
16
+ var ON_CHANGE_CALLS = [];
17
+ var ON_CHANGE = function ON_CHANGE(pageId) {
18
18
  ON_CHANGE_CALLS.push(pageId);
19
19
  };
20
20
  _.default.cyaAction(PAGE, CURRENT_PAGE_ID, ON_CHANGE);
21
21
  expect(ON_CHANGE_CALLS.length).toEqual(0);
22
22
  });
23
- it('should call the onChange method when the page has changed', () => {
24
- const CURRENT_PAGE_ID = 'alpha';
25
- const NEW_PAGE_ID = 'bravo';
26
- const PAGE = {
23
+ it('should call the onChange method when the page has changed', function () {
24
+ var CURRENT_PAGE_ID = 'alpha';
25
+ var NEW_PAGE_ID = 'bravo';
26
+ var PAGE = {
27
27
  pageId: NEW_PAGE_ID
28
28
  };
29
- const ON_CHANGE_CALLS = [];
30
- const ON_CHANGE = pageId => {
29
+ var ON_CHANGE_CALLS = [];
30
+ var ON_CHANGE = function ON_CHANGE(pageId) {
31
31
  ON_CHANGE_CALLS.push(pageId);
32
32
  };
33
33
  _.default.cyaAction(PAGE, CURRENT_PAGE_ID, ON_CHANGE);
@@ -35,27 +35,27 @@ describe('components', () => {
35
35
  expect(ON_CHANGE_CALLS[0]).toEqual(NEW_PAGE_ID);
36
36
  });
37
37
  });
38
- describe('navigate', () => {
39
- it('should not call the onNavigate method when the page is unchanged', () => {
40
- const CURRENT_PAGE_ID = 'alpha';
41
- const ACTION = {
38
+ describe('navigate', function () {
39
+ it('should not call the onNavigate method when the page is unchanged', function () {
40
+ var CURRENT_PAGE_ID = 'alpha';
41
+ var ACTION = {
42
42
  page: CURRENT_PAGE_ID
43
43
  };
44
- const ON_NAVIGATE_CALLS = [];
45
- const ON_NAVIGATE = pageId => {
44
+ var ON_NAVIGATE_CALLS = [];
45
+ var ON_NAVIGATE = function ON_NAVIGATE(pageId) {
46
46
  ON_NAVIGATE_CALLS.push(pageId);
47
47
  };
48
48
  _.default.navigate(ACTION, CURRENT_PAGE_ID, ON_NAVIGATE);
49
49
  expect(ON_NAVIGATE_CALLS.length).toEqual(0);
50
50
  });
51
- it('should call the onNavigate method when the page has changed', () => {
52
- const CURRENT_PAGE_ID = 'alpha';
53
- const NEW_PAGE_ID = 'bravo';
54
- const ACTION = {
51
+ it('should call the onNavigate method when the page has changed', function () {
52
+ var CURRENT_PAGE_ID = 'alpha';
53
+ var NEW_PAGE_ID = 'bravo';
54
+ var ACTION = {
55
55
  page: NEW_PAGE_ID
56
56
  };
57
- const ON_NAVIGATE_CALLS = [];
58
- const ON_NAVIGATE = pageId => {
57
+ var ON_NAVIGATE_CALLS = [];
58
+ var ON_NAVIGATE = function ON_NAVIGATE(pageId) {
59
59
  ON_NAVIGATE_CALLS.push(pageId);
60
60
  };
61
61
  _.default.navigate(ACTION, CURRENT_PAGE_ID, ON_NAVIGATE);
@@ -63,13 +63,13 @@ describe('components', () => {
63
63
  expect(ON_NAVIGATE_CALLS[0]).toEqual(NEW_PAGE_ID);
64
64
  });
65
65
  });
66
- describe('submissionError', () => {
67
- it('should call the onError method with the same errors', () => {
68
- const ON_ERROR_CALLS = [];
69
- const ON_ERROR = errors => {
66
+ describe('submissionError', function () {
67
+ it('should call the onError method with the same errors', function () {
68
+ var ON_ERROR_CALLS = [];
69
+ var ON_ERROR = function ON_ERROR(errors) {
70
70
  ON_ERROR_CALLS.push(errors);
71
71
  };
72
- const ERRORS = ['alpha', 'bravo', 'charlie'];
72
+ var ERRORS = ['alpha', 'bravo', 'charlie'];
73
73
  _.default.submissionError(ERRORS, ON_ERROR);
74
74
  expect(ON_ERROR_CALLS.length).toEqual(1);
75
75
  expect(ON_ERROR_CALLS[0]).toEqual(ERRORS);
@@ -8,7 +8,7 @@ var _cyaAction = _interopRequireDefault(require("./cyaAction"));
8
8
  var _navigate = _interopRequireDefault(require("./navigate"));
9
9
  var _submissionError = _interopRequireDefault(require("./submissionError"));
10
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
- const handlers = {
11
+ var handlers = {
12
12
  cyaAction: _cyaAction.default,
13
13
  navigate: _navigate.default,
14
14
  submissionError: _submissionError.default
@@ -14,9 +14,9 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
14
14
  * @param {Function} onNavigate The handler to call if the pageId is different to the currentPageId.
15
15
  * @param {object|undefined} state State to pass to the handler on change
16
16
  */
17
- const navigate = function (action, currentPageId, onNavigate) {
18
- let state = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : undefined;
19
- const pageId = (0, _getPageId.default)(action, currentPageId);
17
+ var navigate = function navigate(action, currentPageId, onNavigate) {
18
+ var state = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : undefined;
19
+ var pageId = (0, _getPageId.default)(action, currentPageId);
20
20
  if (pageId !== currentPageId) {
21
21
  onNavigate(pageId, state);
22
22
  }
@@ -9,7 +9,7 @@ exports.default = void 0;
9
9
  * @param {Array} errors The errors returned by the backend when submitting.
10
10
  * @param {Function} onError The handler to call with the formatted errors.
11
11
  */
12
- const submissionError = (errors, onError) => {
12
+ var submissionError = function submissionError(errors, onError) {
13
13
  // For now, simply pass them straight through as we don't yet know
14
14
  // what the errors will look like.
15
15
  onError(errors);
@@ -14,7 +14,7 @@ exports.default = void 0;
14
14
  * @param {Array} errors An array of existing errors.
15
15
  * @returns A boolean where `true` means the action can proceed and `false` means it cannot.
16
16
  */
17
- const canActionProceed = (action, page, pageValidator, errors) => {
17
+ var canActionProceed = function canActionProceed(action, page, pageValidator, errors) {
18
18
  if (action.validate) {
19
19
  if (action.checkPreexistingErrors && errors.length !== 0) {
20
20
  return false;
@@ -5,18 +5,18 @@ var _canActionProceed = _interopRequireDefault(require("./canActionProceed"));
5
5
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6
6
  // Local imports
7
7
 
8
- describe('components.FormRenderer.helpers.canActionProceed', () => {
9
- it('should return true when the action does not require validation', () => {
10
- const ACTION = {
8
+ describe('components.FormRenderer.helpers.canActionProceed', function () {
9
+ it('should return true when the action does not require validation', function () {
10
+ var ACTION = {
11
11
  validate: false
12
12
  };
13
13
  expect((0, _canActionProceed.default)(ACTION, {}, _Validate.default.page)).toBeTruthy();
14
14
  });
15
- it('should return true when the page is valid', () => {
16
- const ACTION = {
15
+ it('should return true when the page is valid', function () {
16
+ var ACTION = {
17
17
  validate: true
18
18
  };
19
- const PAGE = {
19
+ var PAGE = {
20
20
  components: [{
21
21
  id: 'a',
22
22
  fieldId: 'a',
@@ -29,11 +29,11 @@ describe('components.FormRenderer.helpers.canActionProceed', () => {
29
29
  };
30
30
  expect((0, _canActionProceed.default)(ACTION, PAGE, _Validate.default.page, [])).toBeTruthy();
31
31
  });
32
- it('should return false when the page is invalid', () => {
33
- const ACTION = {
32
+ it('should return false when the page is invalid', function () {
33
+ var ACTION = {
34
34
  validate: true
35
35
  };
36
- const PAGE = {
36
+ var PAGE = {
37
37
  components: [{
38
38
  id: 'a',
39
39
  fieldId: 'a',
@@ -44,12 +44,12 @@ describe('components.FormRenderer.helpers.canActionProceed', () => {
44
44
  };
45
45
  expect((0, _canActionProceed.default)(ACTION, PAGE, _Validate.default.page, [])).toBeFalsy();
46
46
  });
47
- it('should return false when the action has checkPreexistingErrors and errors is not empty', () => {
48
- const ACTION = {
47
+ it('should return false when the action has checkPreexistingErrors and errors is not empty', function () {
48
+ var ACTION = {
49
49
  validate: true,
50
50
  checkPreexistingErrors: true
51
51
  };
52
- const PAGE = {
52
+ var PAGE = {
53
53
  components: [{
54
54
  id: 'a',
55
55
  fieldId: 'a',
@@ -62,12 +62,12 @@ describe('components.FormRenderer.helpers.canActionProceed', () => {
62
62
  };
63
63
  expect((0, _canActionProceed.default)(ACTION, PAGE, _Validate.default.page, ['anError'])).toBeFalsy();
64
64
  });
65
- it('should return true when the action has checkPreexistingErrors and errors is empty', () => {
66
- const ACTION = {
65
+ it('should return true when the action has checkPreexistingErrors and errors is empty', function () {
66
+ var ACTION = {
67
67
  validate: true,
68
68
  checkPreexistingErrors: true
69
69
  };
70
- const PAGE = {
70
+ var PAGE = {
71
71
  components: [{
72
72
  id: 'a',
73
73
  fieldId: 'a',
@@ -12,5 +12,7 @@ exports.default = void 0;
12
12
  * @param {Function} pagesValidator A function to validate the page.
13
13
  * @returns A boolean where `true` means the CYA can submit and `false` means it cannot.
14
14
  */
15
- const canCYASubmit = (pages, pagesValidator) => pagesValidator(pages).length === 0;
15
+ var canCYASubmit = function canCYASubmit(pages, pagesValidator) {
16
+ return pagesValidator(pages).length === 0;
17
+ };
16
18
  var _default = exports.default = canCYASubmit;
@@ -5,28 +5,32 @@ var _canCYASubmit = _interopRequireDefault(require("./canCYASubmit"));
5
5
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6
6
  // Local imports
7
7
 
8
- describe('components.FormRenderer.helpers.canCYASubmit', () => {
9
- const ALPHA = {
8
+ describe('components.FormRenderer.helpers.canCYASubmit', function () {
9
+ var ALPHA = {
10
10
  id: 'a',
11
11
  fieldId: 'a',
12
12
  label: 'Alpha',
13
13
  required: true
14
14
  };
15
- const CHARLIE = {
15
+ var CHARLIE = {
16
16
  id: 'c',
17
17
  fieldId: 'c',
18
18
  label: 'Charlie',
19
19
  required: true
20
20
  };
21
- const validatePages = pages => pages.flatMap(page => _Validate.default.page(page));
22
- it('should return true when all pages are valid', () => {
23
- const PAGE_1 = {
21
+ var validatePages = function validatePages(pages) {
22
+ return pages.flatMap(function (page) {
23
+ return _Validate.default.page(page);
24
+ });
25
+ };
26
+ it('should return true when all pages are valid', function () {
27
+ var PAGE_1 = {
24
28
  components: [ALPHA],
25
29
  formData: {
26
30
  a: 'Bravo'
27
31
  }
28
32
  };
29
- const PAGE_2 = {
33
+ var PAGE_2 = {
30
34
  components: [CHARLIE],
31
35
  formData: {
32
36
  c: 'Delta'
@@ -34,12 +38,12 @@ describe('components.FormRenderer.helpers.canCYASubmit', () => {
34
38
  };
35
39
  expect((0, _canCYASubmit.default)([PAGE_1, PAGE_2], validatePages)).toBeTruthy();
36
40
  });
37
- it('should return false when the first page is invalid', () => {
38
- const PAGE_1 = {
41
+ it('should return false when the first page is invalid', function () {
42
+ var PAGE_1 = {
39
43
  components: [ALPHA],
40
44
  formData: {}
41
45
  };
42
- const PAGE_2 = {
46
+ var PAGE_2 = {
43
47
  components: [CHARLIE],
44
48
  formData: {
45
49
  c: 'Delta'
@@ -47,25 +51,25 @@ describe('components.FormRenderer.helpers.canCYASubmit', () => {
47
51
  };
48
52
  expect((0, _canCYASubmit.default)([PAGE_1, PAGE_2], validatePages)).toBeFalsy();
49
53
  });
50
- it('should return false when the second page is invalid', () => {
51
- const PAGE_1 = {
54
+ it('should return false when the second page is invalid', function () {
55
+ var PAGE_1 = {
52
56
  components: [ALPHA],
53
57
  formData: {
54
58
  a: 'Bravo'
55
59
  }
56
60
  };
57
- const PAGE_2 = {
61
+ var PAGE_2 = {
58
62
  components: [CHARLIE],
59
63
  formData: {}
60
64
  };
61
65
  expect((0, _canCYASubmit.default)([PAGE_1, PAGE_2], validatePages)).toBeFalsy();
62
66
  });
63
- it('should return false when the both pages are invalid', () => {
64
- const PAGE_1 = {
67
+ it('should return false when the both pages are invalid', function () {
68
+ var PAGE_1 = {
65
69
  components: [ALPHA],
66
70
  formData: {}
67
71
  };
68
- const PAGE_2 = {
72
+ var PAGE_2 = {
69
73
  components: [CHARLIE],
70
74
  formData: {}
71
75
  };
@@ -5,44 +5,61 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var _optionIsSelected = _interopRequireDefault(require("../../../utils/Component/optionIsSelected"));
8
+ var _getCollectionPageActiveId = _interopRequireDefault(require("../../../utils/CollectionPage/getCollectionPageActiveId"));
9
+ var _getCollectionPageData = _interopRequireDefault(require("../../../utils/CollectionPage/getCollectionPageData"));
10
+ var _setCollectionPageData = _interopRequireDefault(require("../../../utils/CollectionPage/setCollectionPageData"));
8
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
- // Local imports
10
-
11
- const parentComponents = ['radios', 'checkboxes'];
12
+ 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); }
13
+ 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; }
14
+ 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; }
15
+ 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; }
16
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
17
+ 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
18
+ var parentComponents = ['radios', 'checkboxes'];
19
+ var getActiveIds = function getActiveIds(collectionName, formData) {
20
+ var nameParts = collectionName.split('.');
21
+ var result = {};
22
+ nameParts.forEach(function (part) {
23
+ result["".concat(part, "ActiveId")] = formData["".concat(part, "ActiveId")];
24
+ });
25
+ return result;
26
+ };
12
27
  function getIdsToDelete(component, selectedValue) {
13
28
  var _component$data;
14
- const idsToDelete = [];
15
- component === null || component === void 0 || (_component$data = component.data) === null || _component$data === void 0 || (_component$data = _component$data.options) === null || _component$data === void 0 || _component$data.forEach(option => {
29
+ var idsToDelete = [];
30
+ component === null || component === void 0 || (_component$data = component.data) === null || _component$data === void 0 || (_component$data = _component$data.options) === null || _component$data === void 0 || _component$data.forEach(function (option) {
16
31
  if (!(0, _optionIsSelected.default)(selectedValue, option) && option.nested) {
17
- option.nested.forEach(nested => {
32
+ option.nested.forEach(function (nested) {
18
33
  idsToDelete.push(nested.id);
19
34
  });
20
35
  }
21
36
  });
22
37
  return idsToDelete;
23
38
  }
24
- ;
25
- const cleanHiddenNestedData = (patch, page) => {
26
- page.components.forEach(component => {
39
+ var cleanHiddenNestedData = function cleanHiddenNestedData(patch, page) {
40
+ var _patch = patch;
41
+ page.components.forEach(function (component) {
27
42
  if (!parentComponents.includes(component.type)) {
28
43
  return;
29
44
  }
30
- const _patch = patch;
31
- const idsToDelete = getIdsToDelete(component, _patch[component.id]);
32
- idsToDelete.forEach(id => {
45
+ var idsToDelete = getIdsToDelete(component, _patch[component.id]);
46
+ idsToDelete.forEach(function (id) {
33
47
  delete _patch[id];
34
48
  });
35
49
  });
36
- if (page.collection && patch[page.collection.name]) {
37
- var _page$formData;
38
- const activeId = patch["".concat(page.collection.name, "ActiveId")] || ((_page$formData = page.formData) === null || _page$formData === void 0 ? void 0 : _page$formData["".concat(page.collection.name, "ActiveId")]);
39
- const _patch = patch;
40
- _patch[page.collection.name] = _patch[page.collection.name].map(entry => entry.id === activeId ? cleanHiddenNestedData(entry, {
41
- ...page,
42
- collection: undefined
43
- }) : entry);
50
+ if (page.collection) {
51
+ _patch = _objectSpread(_objectSpread({}, getActiveIds(page.collection.name, page.formData)), _patch);
52
+ var collectionData = (0, _getCollectionPageData.default)(page.collection.name, _patch);
53
+ if (collectionData) {
54
+ var activeId = (0, _getCollectionPageActiveId.default)(page.collection.name, _patch);
55
+ var modifiedCollection = collectionData.map(function (entry) {
56
+ return entry.id === activeId ? cleanHiddenNestedData(entry, _objectSpread(_objectSpread({}, page), {}, {
57
+ collection: undefined
58
+ })) : entry;
59
+ });
60
+ (0, _setCollectionPageData.default)(page.collection.name, modifiedCollection, _patch);
61
+ }
44
62
  }
45
- ;
46
- return patch;
63
+ return _patch;
47
64
  };
48
65
  var _default = exports.default = cleanHiddenNestedData;
@@ -4,17 +4,17 @@ var _cleanHiddenNestedData = _interopRequireDefault(require("./cleanHiddenNested
4
4
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5
5
  // Local imports
6
6
 
7
- describe('components', () => {
8
- describe('FormRenderer', () => {
9
- describe('helpers', () => {
10
- describe('cleanHiddenNestedData', () => {
11
- it('should remove data corresponding to hidden nested components in radios', () => {
12
- const patchRadios = {
7
+ describe('components', function () {
8
+ describe('FormRenderer', function () {
9
+ describe('helpers', function () {
10
+ describe('cleanHiddenNestedData', function () {
11
+ it('should remove data corresponding to hidden nested components in radios', function () {
12
+ var patchRadios = {
13
13
  parent: 'option2',
14
14
  nested1: 'should not be included',
15
15
  nested2: 'should be included'
16
16
  };
17
- const pageRadios = {
17
+ var pageRadios = {
18
18
  id: 'page',
19
19
  name: 'page',
20
20
  title: 'Page',
@@ -39,17 +39,17 @@ describe('components', () => {
39
39
  }
40
40
  }]
41
41
  };
42
- const updatedPatchRadios = (0, _cleanHiddenNestedData.default)(patchRadios, pageRadios);
42
+ var updatedPatchRadios = (0, _cleanHiddenNestedData.default)(patchRadios, pageRadios);
43
43
  expect(updatedPatchRadios.nested1).toBeFalsy();
44
44
  expect(updatedPatchRadios.nested2).toBeTruthy();
45
45
  });
46
- it('should remove data corresponding to hidden nested components in checkboxes', () => {
47
- const patchCheckboxes = {
46
+ it('should remove data corresponding to hidden nested components in checkboxes', function () {
47
+ var patchCheckboxes = {
48
48
  parent: ['option2'],
49
49
  nested1: 'should not be included',
50
50
  nested2: 'should be included'
51
51
  };
52
- const pageCheckboxes = {
52
+ var pageCheckboxes = {
53
53
  id: 'page',
54
54
  name: 'page',
55
55
  title: 'Page',
@@ -74,12 +74,12 @@ describe('components', () => {
74
74
  }
75
75
  }]
76
76
  };
77
- const updatedPatchCheckboxes = (0, _cleanHiddenNestedData.default)(patchCheckboxes, pageCheckboxes);
77
+ var updatedPatchCheckboxes = (0, _cleanHiddenNestedData.default)(patchCheckboxes, pageCheckboxes);
78
78
  expect(updatedPatchCheckboxes.nested1).toBeFalsy();
79
79
  expect(updatedPatchCheckboxes.nested2).toBeTruthy();
80
80
  });
81
- it('remove data corresponding to hidden nested components within the active collection entry', () => {
82
- const patch = {
81
+ it('should remove data corresponding to hidden nested components within the active collection entry', function () {
82
+ var patch = {
83
83
  collectionNameActiveId: '456',
84
84
  collectionName: [{
85
85
  id: '123',
@@ -93,13 +93,16 @@ describe('components', () => {
93
93
  nested2: 'should be included'
94
94
  }]
95
95
  };
96
- const page = {
96
+ var page = {
97
97
  id: 'page',
98
98
  name: 'page',
99
99
  title: 'Page',
100
100
  collection: {
101
101
  name: 'collectionName'
102
102
  },
103
+ formData: {
104
+ collectionNameActiveId: '456'
105
+ },
103
106
  components: [{
104
107
  id: 'parent',
105
108
  type: 'radios',
@@ -120,12 +123,67 @@ describe('components', () => {
120
123
  }
121
124
  }]
122
125
  };
123
- const updatedPatch = (0, _cleanHiddenNestedData.default)(patch, page);
126
+ var updatedPatch = (0, _cleanHiddenNestedData.default)(patch, page);
124
127
  expect(updatedPatch.collectionName[0].nested1).toBeTruthy();
125
128
  expect(updatedPatch.collectionName[0].nested2).toBeTruthy();
126
129
  expect(updatedPatch.collectionName[1].nested1).toBeFalsy();
127
130
  expect(updatedPatch.collectionName[1].nested2).toBeTruthy();
128
131
  });
132
+ it('should remove data corresponding to hidden nested components when collection is nested within an entity', function () {
133
+ var patch = {
134
+ collectionNameActiveId: '456',
135
+ entities: [{
136
+ id: '777',
137
+ collectionName: [{
138
+ id: '123',
139
+ parent: 'option1',
140
+ nested1: 'should be included',
141
+ nested2: 'should be included'
142
+ }, {
143
+ id: '456',
144
+ parent: 'option2',
145
+ nested1: 'should not be included',
146
+ nested2: 'should be included'
147
+ }]
148
+ }]
149
+ };
150
+ var page = {
151
+ id: 'page',
152
+ name: 'page',
153
+ title: 'Page',
154
+ collection: {
155
+ name: 'entities.collectionName'
156
+ },
157
+ formData: {
158
+ collectionNameActiveId: '456',
159
+ entitiesActiveId: '777'
160
+ },
161
+ components: [{
162
+ id: 'parent',
163
+ type: 'radios',
164
+ data: {
165
+ options: [{
166
+ value: 'option1',
167
+ nested: [{
168
+ id: 'nested1',
169
+ fieldId: 'nested1'
170
+ }]
171
+ }, {
172
+ value: 'option2',
173
+ nested: [{
174
+ id: 'nested2',
175
+ fieldId: 'nested2'
176
+ }]
177
+ }]
178
+ }
179
+ }]
180
+ };
181
+ var updatedPatch = (0, _cleanHiddenNestedData.default)(patch, page);
182
+ expect(updatedPatch.entities[0].collectionName[0].nested1).toBeTruthy();
183
+ expect(updatedPatch.entities[0].collectionName[0].nested2).toBeTruthy();
184
+ expect(updatedPatch.entities[0].collectionName[1].nested1).toBeFalsy();
185
+ expect(updatedPatch.entities[0].collectionName[1].nested2).toBeTruthy();
186
+ });
129
187
  });
130
188
  });
131
189
  });
@@ -15,7 +15,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
15
15
  * @param {object} hub The hub, if there is one.
16
16
  * @returns A configuration object for the Check your answers screen.
17
17
  */
18
- const getCYA = (pageId, pages, hub) => {
18
+ var getCYA = function getCYA(pageId, pages, hub) {
19
19
  if (pageId === _models.FormPages.HUB && hub === _models.HubFormats.CYA) {
20
20
  return {
21
21
  title: ''
@@ -26,9 +26,11 @@ const getCYA = (pageId, pages, hub) => {
26
26
  return {};
27
27
  }
28
28
  ;
29
- const currentPage = pages === null || pages === void 0 ? void 0 : pages.find(p => p.id === pageId);
29
+ var currentPage = pages === null || pages === void 0 ? void 0 : pages.find(function (p) {
30
+ return p.id === pageId;
31
+ });
30
32
  if ((currentPage === null || currentPage === void 0 ? void 0 : currentPage.type) === _models.FormPages.PARTIAL_CYA) {
31
- const pageWithConditionals = _utils.default.FormPage.applyConditionalProperties(currentPage);
33
+ var pageWithConditionals = _utils.default.FormPage.applyConditionalProperties(currentPage);
32
34
  return {
33
35
  title: pageWithConditionals.title,
34
36
  hideChangeActions: pageWithConditionals.hideChangeActions,