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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (372) 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 +137 -103
  4. package/dist/components/CheckYourAnswers/CheckYourAnswers.test.js +861 -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 +126 -99
  10. package/dist/components/CollectionSummary/CollectionSummary.test.js +188 -152
  11. package/dist/components/CollectionSummary/Confirmation.js +12 -14
  12. package/dist/components/CollectionSummary/Confirmation.test.js +63 -68
  13. package/dist/components/CollectionSummary/RenderListView.js +52 -46
  14. package/dist/components/CollectionSummary/RenderListView.scss +1 -1
  15. package/dist/components/CollectionSummary/RenderListView.test.js +77 -78
  16. package/dist/components/CollectionSummary/SummaryCard.js +152 -110
  17. package/dist/components/CollectionSummary/SummaryCard.test.js +1018 -929
  18. package/dist/components/CollectionSummary/SummaryCardDetails.js +137 -94
  19. package/dist/components/CollectionSummary/SummaryCardDetails.scss +13 -4
  20. package/dist/components/CollectionSummary/SummaryCardDetails.test.js +331 -128
  21. package/dist/components/CollectionSummary/SummaryCardValidationContext.js +35 -30
  22. package/dist/components/CollectionSummary/SummaryCardValidationContext.test.js +74 -62
  23. package/dist/components/FormComponent/Collection.js +108 -74
  24. package/dist/components/FormComponent/Collection.test.js +1081 -909
  25. package/dist/components/FormComponent/Container.js +39 -40
  26. package/dist/components/FormComponent/Container.test.js +412 -312
  27. package/dist/components/FormComponent/FormComponent.js +72 -69
  28. package/dist/components/FormComponent/FormComponent.test.js +414 -353
  29. package/dist/components/FormComponent/helpers/addLabel.js +7 -4
  30. package/dist/components/FormComponent/helpers/getComponentDisabled.js +1 -1
  31. package/dist/components/FormComponent/helpers/getComponentDisabled.test.js +7 -7
  32. package/dist/components/FormComponent/helpers/getComponentError.js +5 -3
  33. package/dist/components/FormComponent/helpers/getComponentError.test.js +14 -14
  34. package/dist/components/FormComponent/helpers/getComponentFieldSet.js +4 -3
  35. package/dist/components/FormComponent/helpers/getComponentFieldSet.test.js +6 -6
  36. package/dist/components/FormComponent/helpers/index.js +4 -4
  37. package/dist/components/FormPage/FormPage.js +80 -65
  38. package/dist/components/FormPage/FormPage.test.js +163 -127
  39. package/dist/components/FormRenderer/FormRenderer.js +180 -143
  40. package/dist/components/FormRenderer/FormRenderer.test.js +1115 -730
  41. package/dist/components/FormRenderer/handlers/cyaAction.js +2 -2
  42. package/dist/components/FormRenderer/handlers/getPageId.js +3 -1
  43. package/dist/components/FormRenderer/handlers/getPageId.test.js +14 -14
  44. package/dist/components/FormRenderer/handlers/handlers.test.js +32 -32
  45. package/dist/components/FormRenderer/handlers/index.js +1 -1
  46. package/dist/components/FormRenderer/handlers/navigate.js +3 -3
  47. package/dist/components/FormRenderer/handlers/submissionError.js +1 -1
  48. package/dist/components/FormRenderer/helpers/canActionProceed.js +1 -1
  49. package/dist/components/FormRenderer/helpers/canActionProceed.test.js +15 -15
  50. package/dist/components/FormRenderer/helpers/canCYASubmit.js +3 -1
  51. package/dist/components/FormRenderer/helpers/canCYASubmit.test.js +20 -16
  52. package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.js +22 -17
  53. package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.test.js +16 -16
  54. package/dist/components/FormRenderer/helpers/getCYA.js +5 -3
  55. package/dist/components/FormRenderer/helpers/getCYA.test.js +11 -11
  56. package/dist/components/FormRenderer/helpers/getFormState.js +7 -5
  57. package/dist/components/FormRenderer/helpers/getFormState.test.js +10 -10
  58. package/dist/components/FormRenderer/helpers/getNextPageId.js +24 -13
  59. package/dist/components/FormRenderer/helpers/getNextPageId.test.js +67 -67
  60. package/dist/components/FormRenderer/helpers/getPage.js +4 -2
  61. package/dist/components/FormRenderer/helpers/getPage.test.js +11 -11
  62. package/dist/components/FormRenderer/helpers/getRelevantPages.js +9 -7
  63. package/dist/components/FormRenderer/helpers/getRelevantPages.test.js +14 -14
  64. package/dist/components/FormRenderer/helpers/getSubmissionStatus.js +5 -5
  65. package/dist/components/FormRenderer/helpers/getSubmissionStatus.test.js +97 -103
  66. package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.js +60 -62
  67. package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.test.js +78 -71
  68. package/dist/components/FormRenderer/helpers/index.js +1 -1
  69. package/dist/components/FormRenderer/onCYAAction.js +51 -59
  70. package/dist/components/FormRenderer/onCYAAction.test.js +152 -164
  71. package/dist/components/FormRenderer/onPageAction.js +39 -43
  72. package/dist/components/FormRenderer/onPageAction.test.js +208 -223
  73. package/dist/components/FormRenderer/onTaskAction.js +13 -9
  74. package/dist/components/FormRenderer/onTaskAction.test.js +88 -93
  75. package/dist/components/PageActions/ActionButton.js +15 -12
  76. package/dist/components/PageActions/ActionButton.test.js +78 -56
  77. package/dist/components/PageActions/PageActions.js +10 -10
  78. package/dist/components/PageActions/PageActions.test.js +115 -86
  79. package/dist/components/SummaryList/GroupAction.js +17 -9
  80. package/dist/components/SummaryList/GroupAction.test.js +33 -37
  81. package/dist/components/SummaryList/RowAction.js +16 -11
  82. package/dist/components/SummaryList/RowAction.test.js +33 -37
  83. package/dist/components/SummaryList/SummaryList.js +34 -21
  84. package/dist/components/SummaryList/SummaryList.scss +15 -0
  85. package/dist/components/SummaryList/SummaryList.test.js +226 -143
  86. package/dist/components/SummaryList/SummaryListHeadingRow.js +4 -6
  87. package/dist/components/SummaryList/SummaryListHeadingRowWithAction.js +53 -0
  88. package/dist/components/SummaryList/SummaryListHeadingRowWithAction.scss +38 -0
  89. package/dist/components/SummaryList/SummaryListRow.js +4 -6
  90. package/dist/components/SummaryList/SummaryListTitleRow.js +3 -5
  91. package/dist/components/SummaryList/helpers/getGroupActionAttributes.js +5 -3
  92. package/dist/components/SummaryList/helpers/getGroupActionAttributes.test.js +22 -22
  93. package/dist/components/SummaryList/helpers/getRowActionAttributes.js +5 -3
  94. package/dist/components/SummaryList/helpers/getRowActionAttributes.test.js +22 -22
  95. package/dist/components/SummaryList/helpers/index.js +1 -1
  96. package/dist/components/TaskList/Task.js +29 -19
  97. package/dist/components/TaskList/Task.test.js +76 -83
  98. package/dist/components/TaskList/TaskList.js +92 -49
  99. package/dist/components/TaskList/TaskList.scss +24 -0
  100. package/dist/components/TaskList/TaskList.test.js +255 -113
  101. package/dist/components/TaskList/TaskState.js +5 -7
  102. package/dist/components/TaskList/TaskState.test.js +45 -52
  103. package/dist/components/index.js +7 -7
  104. package/dist/context/HooksContext/HooksContext.js +80 -57
  105. package/dist/context/HooksContext/HooksContext.test.js +35 -26
  106. package/dist/context/HooksContext/index.js +4 -3
  107. package/dist/context/ValidationContext/ValidationContext.js +94 -43
  108. package/dist/context/ValidationContext/ValidationContext.test.js +68 -56
  109. package/dist/context/ValidationContext/index.js +4 -3
  110. package/dist/context/index.js +2 -2
  111. package/dist/hooks/index.js +10 -9
  112. package/dist/hooks/useAxios.js +40 -14
  113. package/dist/hooks/useGetRequest.js +97 -61
  114. package/dist/hooks/useHooks.js +3 -1
  115. package/dist/hooks/useRefData.js +39 -26
  116. package/dist/hooks/useValidation.js +3 -1
  117. package/dist/index.js +14 -13
  118. package/dist/models/CollectionLabels.js +1 -1
  119. package/dist/models/ComponentTypes.js +25 -25
  120. package/dist/models/EventTypes.js +4 -4
  121. package/dist/models/FormPages.js +4 -4
  122. package/dist/models/FormTypes.js +8 -8
  123. package/dist/models/HubFormats.js +3 -3
  124. package/dist/models/PageAction.js +38 -44
  125. package/dist/models/TaskStates.js +28 -29
  126. package/dist/models/index.js +9 -9
  127. package/dist/setupTests.js +31 -30
  128. package/dist/utils/CheckYourAnswers/getCYAAction.js +5 -5
  129. package/dist/utils/CheckYourAnswers/getCYAAction.test.js +54 -52
  130. package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.js +25 -15
  131. package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.test.js +35 -33
  132. package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.js +31 -17
  133. package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.test.js +44 -42
  134. package/dist/utils/CheckYourAnswers/getCYARow.js +6 -6
  135. package/dist/utils/CheckYourAnswers/getCYARow.test.js +86 -86
  136. package/dist/utils/CheckYourAnswers/getCYARowForGroup.js +24 -18
  137. package/dist/utils/CheckYourAnswers/getCYARowForGroup.test.js +16 -15
  138. package/dist/utils/CheckYourAnswers/getCYARowsForCollection.js +36 -33
  139. package/dist/utils/CheckYourAnswers/getCYARowsForCollection.test.js +61 -58
  140. package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.js +108 -87
  141. package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.test.js +281 -162
  142. package/dist/utils/CheckYourAnswers/getCYARowsForContainer.js +20 -25
  143. package/dist/utils/CheckYourAnswers/getCYARowsForContainer.test.js +97 -103
  144. package/dist/utils/CheckYourAnswers/getCYARowsForPage.js +18 -13
  145. package/dist/utils/CheckYourAnswers/getCYARowsForPage.test.js +76 -70
  146. package/dist/utils/CheckYourAnswers/getSummaryListRowForDetails.js +42 -0
  147. package/dist/utils/CheckYourAnswers/getSummaryListRowForDetails.test.js +56 -0
  148. package/dist/utils/CheckYourAnswers/index.js +1 -1
  149. package/dist/utils/CheckYourAnswers/showComponentCYA.js +4 -4
  150. package/dist/utils/CheckYourAnswers/showComponentCYA.test.js +25 -25
  151. package/dist/utils/CollectionPage/addCollectionPageEntry.js +2 -2
  152. package/dist/utils/CollectionPage/addCollectionPageEntry.test.js +5 -5
  153. package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.js +2 -2
  154. package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.test.js +18 -17
  155. package/dist/utils/CollectionPage/duplicateCollectionPageEntry.js +22 -12
  156. package/dist/utils/CollectionPage/duplicateCollectionPageEntry.test.js +38 -47
  157. package/dist/utils/CollectionPage/getCollectionPageActiveId.js +2 -2
  158. package/dist/utils/CollectionPage/getCollectionPageActiveId.test.js +10 -10
  159. package/dist/utils/CollectionPage/getCollectionPageActiveIndex.js +11 -7
  160. package/dist/utils/CollectionPage/getCollectionPageActiveIndex.test.js +22 -22
  161. package/dist/utils/CollectionPage/getCollectionPageData.js +12 -8
  162. package/dist/utils/CollectionPage/getCollectionPageData.test.js +19 -19
  163. package/dist/utils/CollectionPage/getErrorsForCollection.js +24 -24
  164. package/dist/utils/CollectionPage/getErrorsForCollection.test.js +22 -20
  165. package/dist/utils/CollectionPage/getQuickEditPage.js +31 -35
  166. package/dist/utils/CollectionPage/getQuickEditPage.test.js +27 -15
  167. package/dist/utils/CollectionPage/index.js +1 -1
  168. package/dist/utils/CollectionPage/mergeCollectionPages.js +43 -31
  169. package/dist/utils/CollectionPage/mergeCollectionPages.test.js +26 -26
  170. package/dist/utils/CollectionPage/removeCollectionPageEntry.js +6 -4
  171. package/dist/utils/CollectionPage/removeCollectionPageEntry.test.js +10 -10
  172. package/dist/utils/CollectionPage/setCollectionPageData.js +16 -10
  173. package/dist/utils/CollectionPage/setCollectionPageData.test.js +24 -24
  174. package/dist/utils/Component/addShowWhen.js +8 -4
  175. package/dist/utils/Component/addShowWhen.test.js +37 -37
  176. package/dist/utils/Component/applyToComponentTree.js +18 -18
  177. package/dist/utils/Component/applyToComponentTree.test.js +32 -27
  178. package/dist/utils/Component/cleanAttributes.js +13 -10
  179. package/dist/utils/Component/cleanAttributes.test.js +18 -17
  180. package/dist/utils/Component/elevateNestedComponents.js +7 -6
  181. package/dist/utils/Component/elevateNestedComponents.test.js +68 -30
  182. package/dist/utils/Component/getComponent.js +94 -88
  183. package/dist/utils/Component/getComponentTests/getComponent.autocomplete.test.js +17 -18
  184. package/dist/utils/Component/getComponentTests/getComponent.calculation.test.js +59 -46
  185. package/dist/utils/Component/getComponentTests/getComponent.checkboxes.test.js +48 -39
  186. package/dist/utils/Component/getComponentTests/getComponent.date.test.js +33 -23
  187. package/dist/utils/Component/getComponentTests/getComponent.details.test.js +18 -20
  188. package/dist/utils/Component/getComponentTests/getComponent.email.test.js +22 -17
  189. package/dist/utils/Component/getComponentTests/getComponent.file.test.js +25 -20
  190. package/dist/utils/Component/getComponentTests/getComponent.heading.test.js +9 -10
  191. package/dist/utils/Component/getComponentTests/getComponent.html.test.js +15 -17
  192. package/dist/utils/Component/getComponentTests/getComponent.insetText.test.js +8 -9
  193. package/dist/utils/Component/getComponentTests/getComponent.list.test.js +15 -17
  194. package/dist/utils/Component/getComponentTests/getComponent.multifile.test.js +26 -22
  195. package/dist/utils/Component/getComponentTests/getComponent.nested.test.js +175 -155
  196. package/dist/utils/Component/getComponentTests/getComponent.paragraph.test.js +15 -17
  197. package/dist/utils/Component/getComponentTests/getComponent.phoneNumber.test.js +22 -17
  198. package/dist/utils/Component/getComponentTests/getComponent.radios.test.js +72 -57
  199. package/dist/utils/Component/getComponentTests/getComponent.select.test.js +22 -17
  200. package/dist/utils/Component/getComponentTests/getComponent.text.test.js +22 -17
  201. package/dist/utils/Component/getComponentTests/getComponent.textArea.test.js +38 -31
  202. package/dist/utils/Component/getComponentTests/getComponent.time.test.js +29 -20
  203. package/dist/utils/Component/getComponentTests/getComponent.unknown.test.js +2 -2
  204. package/dist/utils/Component/getComponentTests/getComponent.warningText.test.js +8 -9
  205. package/dist/utils/Component/getDefaultValue.js +8 -6
  206. package/dist/utils/Component/getDefaultValue.test.js +12 -12
  207. package/dist/utils/Component/getDefaultValueFromConfig.js +21 -22
  208. package/dist/utils/Component/getDefaultValueFromConfig.test.js +31 -31
  209. package/dist/utils/Component/index.js +1 -1
  210. package/dist/utils/Component/isEditable.js +4 -2
  211. package/dist/utils/Component/isEditable.test.js +15 -14
  212. package/dist/utils/Component/optionIsSelected.js +6 -1
  213. package/dist/utils/Component/optionIsSelected.test.js +35 -9
  214. package/dist/utils/Component/setupContainerComponentsPath.js +29 -27
  215. package/dist/utils/Component/setupContainerComponentsPath.test.js +11 -11
  216. package/dist/utils/Component/showComponent.js +1 -1
  217. package/dist/utils/Component/showComponent.test.js +28 -28
  218. package/dist/utils/Component/wrapInFormGroup.js +2 -2
  219. package/dist/utils/Condition/index.js +1 -1
  220. package/dist/utils/Condition/meetsAllConditions.js +8 -8
  221. package/dist/utils/Condition/meetsAllConditions.test.js +20 -20
  222. package/dist/utils/Condition/meetsCondition.js +25 -16
  223. package/dist/utils/Condition/meetsCondition.test.js +402 -402
  224. package/dist/utils/Condition/meetsOneCondition.js +5 -5
  225. package/dist/utils/Condition/meetsOneCondition.test.js +16 -16
  226. package/dist/utils/Condition/setupConditions.js +18 -13
  227. package/dist/utils/Condition/setupConditions.test.js +7 -7
  228. package/dist/utils/Container/getEditableComponents.js +5 -3
  229. package/dist/utils/Container/getEditableComponents.test.js +45 -43
  230. package/dist/utils/Container/index.js +1 -1
  231. package/dist/utils/Container/setupNesting.js +20 -16
  232. package/dist/utils/Container/setupNesting.test.js +30 -27
  233. package/dist/utils/Container/showContainer.js +7 -3
  234. package/dist/utils/Container/showContainer.test.js +30 -30
  235. package/dist/utils/Data/applyFormula.js +48 -38
  236. package/dist/utils/Data/applyFormula.test.js +20 -20
  237. package/dist/utils/Data/getAutocompleteSource.js +26 -18
  238. package/dist/utils/Data/getAutocompleteSource.test.js +86 -80
  239. package/dist/utils/Data/getDataPath.js +28 -18
  240. package/dist/utils/Data/getDataPath.test.js +12 -12
  241. package/dist/utils/Data/getOptions.js +30 -24
  242. package/dist/utils/Data/getOptions.test.js +27 -27
  243. package/dist/utils/Data/getSourceData.js +19 -6
  244. package/dist/utils/Data/getSourceData.test.js +80 -84
  245. package/dist/utils/Data/index.js +1 -1
  246. package/dist/utils/Data/nestInRefdataOptions.js +16 -9
  247. package/dist/utils/Data/nestInRefdataOptions.test.js +16 -16
  248. package/dist/utils/Data/refDataToOptions.js +13 -10
  249. package/dist/utils/Data/refDataToOptions.test.js +19 -19
  250. package/dist/utils/Data/setDataItem.js +8 -7
  251. package/dist/utils/Data/setDataItem.test.js +37 -37
  252. package/dist/utils/Data/setupFormData.js +21 -13
  253. package/dist/utils/Data/setupFormData.test.js +50 -51
  254. package/dist/utils/Data/setupRefDataUrlForComponent.js +26 -20
  255. package/dist/utils/Data/setupRefDataUrlForComponent.test.js +24 -24
  256. package/dist/utils/FormPage/applyConditionalProperties.js +9 -5
  257. package/dist/utils/FormPage/applyConditionalProperties.test.js +18 -15
  258. package/dist/utils/FormPage/getConditionalText.js +3 -3
  259. package/dist/utils/FormPage/getConditionalText.test.js +29 -29
  260. package/dist/utils/FormPage/getFormPage.js +16 -15
  261. package/dist/utils/FormPage/getFormPage.test.js +46 -47
  262. package/dist/utils/FormPage/getFormPages.js +12 -7
  263. package/dist/utils/FormPage/getFormPages.test.js +23 -20
  264. package/dist/utils/FormPage/getPageActions.js +15 -9
  265. package/dist/utils/FormPage/getPageActions.test.js +32 -32
  266. package/dist/utils/FormPage/getParagraphFromText.js +7 -5
  267. package/dist/utils/FormPage/getParagraphFromText.test.js +6 -6
  268. package/dist/utils/FormPage/index.js +4 -2
  269. package/dist/utils/FormPage/showFormPage.js +7 -3
  270. package/dist/utils/FormPage/showFormPage.test.js +32 -32
  271. package/dist/utils/FormPage/showFormPageCYA.js +1 -1
  272. package/dist/utils/FormPage/showFormPageCYA.test.js +8 -8
  273. package/dist/utils/FormPage/useComponent.js +28 -21
  274. package/dist/utils/FormPage/useComponent.test.js +79 -77
  275. package/dist/utils/Format/formatData.js +1 -1
  276. package/dist/utils/Format/formatData.test.js +18 -18
  277. package/dist/utils/Format/formatDataForComponent.js +6 -5
  278. package/dist/utils/Format/formatDataForComponent.test.js +78 -50
  279. package/dist/utils/Format/formatDataForForm.js +8 -6
  280. package/dist/utils/Format/formatDataForForm.test.js +16 -13
  281. package/dist/utils/Format/formatDataForPage.js +5 -4
  282. package/dist/utils/Format/formatDataForPage.test.js +25 -20
  283. package/dist/utils/Format/index.js +1 -1
  284. package/dist/utils/Hub/getFormHub.js +1 -1
  285. package/dist/utils/Hub/getFormHub.test.js +31 -28
  286. package/dist/utils/Hub/index.js +1 -1
  287. package/dist/utils/Meta/constants.js +2 -2
  288. package/dist/utils/Meta/documents/getDocuments.js +1 -1
  289. package/dist/utils/Meta/documents/getDocuments.test.js +16 -24
  290. package/dist/utils/Meta/documents/index.js +1 -1
  291. package/dist/utils/Meta/documents/setDocumentsForField.js +16 -14
  292. package/dist/utils/Meta/documents/setDocumentsForField.test.js +34 -68
  293. package/dist/utils/Meta/index.js +1 -1
  294. package/dist/utils/Operate/checkValueIsTruthy.js +2 -2
  295. package/dist/utils/Operate/checkValueIsTruthy.test.js +16 -16
  296. package/dist/utils/Operate/getFirstOf.js +5 -5
  297. package/dist/utils/Operate/getFirstOf.test.js +31 -31
  298. package/dist/utils/Operate/getIndexOfMatchingValueIn.js +10 -10
  299. package/dist/utils/Operate/getIndexOfMatchingValueIn.test.js +52 -46
  300. package/dist/utils/Operate/getLength.js +50 -0
  301. package/dist/utils/Operate/getLength.test.js +89 -0
  302. package/dist/utils/Operate/index.js +1 -1
  303. package/dist/utils/Operate/persistValueInFormData.js +3 -3
  304. package/dist/utils/Operate/persistValueInFormData.test.js +20 -22
  305. package/dist/utils/Operate/runPageOperations.js +9 -7
  306. package/dist/utils/Operate/runPageOperations.test.js +36 -35
  307. package/dist/utils/Operate/setValueInFormData.js +2 -2
  308. package/dist/utils/Operate/setValueInFormData.test.js +16 -16
  309. package/dist/utils/Operate/shouldRun.js +6 -6
  310. package/dist/utils/Operate/shouldRun.test.js +27 -21
  311. package/dist/utils/Validate/additional/conditionallyRequired.js +4 -4
  312. package/dist/utils/Validate/additional/conditionallyRequired.test.js +18 -18
  313. package/dist/utils/Validate/additional/index.js +6 -6
  314. package/dist/utils/Validate/additional/index.test.js +12 -12
  315. package/dist/utils/Validate/additional/mustBeAfter.js +2 -2
  316. package/dist/utils/Validate/additional/mustBeAfter.test.js +40 -40
  317. package/dist/utils/Validate/additional/mustBeBefore.js +2 -2
  318. package/dist/utils/Validate/additional/mustBeBefore.test.js +28 -28
  319. package/dist/utils/Validate/additional/mustBeEarlierDateTime.js +11 -7
  320. package/dist/utils/Validate/additional/mustBeEarlierDateTime.test.js +41 -37
  321. package/dist/utils/Validate/additional/mustBeGreaterThan.js +2 -2
  322. package/dist/utils/Validate/additional/mustBeGreaterThan.test.js +18 -18
  323. package/dist/utils/Validate/additional/mustBeInTheFuture.js +2 -2
  324. package/dist/utils/Validate/additional/mustBeInTheFuture.test.js +12 -12
  325. package/dist/utils/Validate/additional/mustBeInThePast.js +3 -3
  326. package/dist/utils/Validate/additional/mustBeInThePast.test.js +12 -12
  327. package/dist/utils/Validate/additional/mustBeLessThan.js +2 -2
  328. package/dist/utils/Validate/additional/mustBeLessThan.test.js +17 -17
  329. package/dist/utils/Validate/additional/mustBeLongerThan.js +1 -1
  330. package/dist/utils/Validate/additional/mustBeLongerThan.test.js +16 -16
  331. package/dist/utils/Validate/additional/mustBeNumbersOnly.js +2 -2
  332. package/dist/utils/Validate/additional/mustBeNumbersOnly.test.js +20 -20
  333. package/dist/utils/Validate/additional/mustBeShorterThan.js +1 -1
  334. package/dist/utils/Validate/additional/mustBeShorterThan.test.js +16 -16
  335. package/dist/utils/Validate/additional/mustBeUniqueInCollection.js +4 -4
  336. package/dist/utils/Validate/additional/mustBeUniqueInCollection.test.js +39 -35
  337. package/dist/utils/Validate/additional/mustEnterAtLeastOne.js +2 -2
  338. package/dist/utils/Validate/additional/mustEnterAtLeastOne.test.js +16 -14
  339. package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.js +1 -1
  340. package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.test.js +12 -12
  341. package/dist/utils/Validate/additional/mustNotContainSql.js +4 -3
  342. package/dist/utils/Validate/additional/mustNotContainSql.test.js +14 -14
  343. package/dist/utils/Validate/additional/mustSelectOnlyOne.js +2 -2
  344. package/dist/utils/Validate/additional/mustSelectOnlyOne.test.js +26 -28
  345. package/dist/utils/Validate/additional/utils.js +22 -9
  346. package/dist/utils/Validate/index.js +1 -1
  347. package/dist/utils/Validate/validateCollection.js +25 -19
  348. package/dist/utils/Validate/validateCollection.test.js +66 -74
  349. package/dist/utils/Validate/validateComponent.js +21 -18
  350. package/dist/utils/Validate/validateComponent.test.js +176 -166
  351. package/dist/utils/Validate/validateContainer.js +20 -15
  352. package/dist/utils/Validate/validateContainer.test.js +52 -58
  353. package/dist/utils/Validate/validateDate.js +21 -15
  354. package/dist/utils/Validate/validateDate.test.js +32 -31
  355. package/dist/utils/Validate/validateEmail.js +8 -6
  356. package/dist/utils/Validate/validateEmail.test.js +25 -25
  357. package/dist/utils/Validate/validateMultifile.js +7 -5
  358. package/dist/utils/Validate/validateMultifile.test.js +18 -17
  359. package/dist/utils/Validate/validatePage.js +22 -19
  360. package/dist/utils/Validate/validatePage.test.js +203 -215
  361. package/dist/utils/Validate/validateRegex.js +5 -3
  362. package/dist/utils/Validate/validateRegex.test.js +14 -14
  363. package/dist/utils/Validate/validateRequired.js +6 -4
  364. package/dist/utils/Validate/validateRequired.test.js +18 -18
  365. package/dist/utils/Validate/validateTextArea.js +6 -4
  366. package/dist/utils/Validate/validateTextArea.test.js +20 -20
  367. package/dist/utils/Validate/validateTime.js +26 -11
  368. package/dist/utils/Validate/validateTime.test.js +62 -16
  369. package/dist/utils/index.js +9 -7
  370. package/package.json +2 -2
  371. package/dist/utils/CheckYourAnswers/getComponentRowForCYA.js +0 -37
  372. package/dist/utils/CheckYourAnswers/getComponentRowForCYA.test.js +0 -41
@@ -2,41 +2,41 @@
2
2
 
3
3
  var _checkValueIsTruthy = _interopRequireDefault(require("./checkValueIsTruthy"));
4
4
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5
- describe('Utils.Operate.checkValueIsTruthy', () => {
6
- const DATA = {
5
+ describe('Utils.Operate.checkValueIsTruthy', function () {
6
+ var DATA = {
7
7
  alpha: 'abc',
8
8
  bravo: ''
9
9
  };
10
- it('Should return true is the value of the field is truthy', () => {
11
- const CONFIG = {
10
+ it('Should return true is the value of the field is truthy', function () {
11
+ var CONFIG = {
12
12
  field: 'alpha'
13
13
  };
14
- const result = (0, _checkValueIsTruthy.default)(CONFIG, DATA);
14
+ var result = (0, _checkValueIsTruthy.default)(CONFIG, DATA);
15
15
  expect(result).toEqual(true);
16
16
  });
17
- it('Should return false if the value of the field is falsy', () => {
18
- const CONFIG = {
17
+ it('Should return false if the value of the field is falsy', function () {
18
+ var CONFIG = {
19
19
  field: 'bravo'
20
20
  };
21
- const result = (0, _checkValueIsTruthy.default)(CONFIG, DATA);
21
+ var result = (0, _checkValueIsTruthy.default)(CONFIG, DATA);
22
22
  expect(result).toEqual(false);
23
23
  });
24
- it('Should return false if the field does not exist', () => {
25
- const CONFIG = {
24
+ it('Should return false if the field does not exist', function () {
25
+ var CONFIG = {
26
26
  field: 'charlie'
27
27
  };
28
- const result = (0, _checkValueIsTruthy.default)(CONFIG, DATA);
28
+ var result = (0, _checkValueIsTruthy.default)(CONFIG, DATA);
29
29
  expect(result).toEqual(false);
30
30
  });
31
- it('Should return false when an invalid config is used', () => {
32
- const result = (0, _checkValueIsTruthy.default)(null, DATA);
31
+ it('Should return false when an invalid config is used', function () {
32
+ var result = (0, _checkValueIsTruthy.default)(null, DATA);
33
33
  expect(result).toEqual(false);
34
34
  });
35
- it('Should return false when invalid data is used', () => {
36
- const CONFIG = {
35
+ it('Should return false when invalid data is used', function () {
36
+ var CONFIG = {
37
37
  field: 'alpha'
38
38
  };
39
- const result = (0, _checkValueIsTruthy.default)(CONFIG, null);
39
+ var result = (0, _checkValueIsTruthy.default)(CONFIG, null);
40
40
  expect(result).toEqual(false);
41
41
  });
42
42
  });
@@ -11,12 +11,12 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
11
11
 
12
12
  // Local imports.
13
13
 
14
- const getFirstOf = (config, data) => {
14
+ var getFirstOf = function getFirstOf(config, data) {
15
15
  if (config !== null && config !== void 0 && config.fields) {
16
- let fieldValue;
17
- config.fields.find(field => {
18
- const fieldPath = _copReactComponents.Utils.interpolateString(field, data);
19
- const foundValue = (0, _getSourceData.default)(data, fieldPath);
16
+ var fieldValue;
17
+ config.fields.find(function (field) {
18
+ var fieldPath = _copReactComponents.Utils.interpolateString(field, data);
19
+ var foundValue = (0, _getSourceData.default)(data, fieldPath);
20
20
  if (foundValue) {
21
21
  fieldValue = foundValue;
22
22
  return true;
@@ -2,8 +2,8 @@
2
2
 
3
3
  var _getFirstOf = _interopRequireDefault(require("./getFirstOf"));
4
4
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5
- describe('Utils.Operate.getFirstOf', () => {
6
- const DATA = {
5
+ describe('Utils.Operate.getFirstOf', function () {
6
+ var DATA = {
7
7
  name: 'sam',
8
8
  id: 1,
9
9
  test: ['2', '3'],
@@ -12,75 +12,75 @@ describe('Utils.Operate.getFirstOf', () => {
12
12
  otherIdDoc: '',
13
13
  anotherMadeUpId: 789
14
14
  };
15
- it('Should handle interpolated field strings', () => {
15
+ it('Should handle interpolated field strings', function () {
16
16
  // eslint-disable-next-line no-template-curly-in-string
17
- const CONFIG = {
17
+ var CONFIG = {
18
18
  fields: ['test[${id}]']
19
19
  };
20
- const result = (0, _getFirstOf.default)(CONFIG, DATA);
20
+ var result = (0, _getFirstOf.default)(CONFIG, DATA);
21
21
  expect(result).toEqual(DATA.test[1]);
22
22
  });
23
- it('Should return the value provided in config if no field is specified', () => {
24
- const CONFIG = {
23
+ it('Should return the value provided in config if no field is specified', function () {
24
+ var CONFIG = {
25
25
  value: '2'
26
26
  };
27
- const result = (0, _getFirstOf.default)(CONFIG, DATA);
27
+ var result = (0, _getFirstOf.default)(CONFIG, DATA);
28
28
  expect(result).toEqual(CONFIG.value);
29
29
  });
30
- it('Should return the fallback if the requested fields are not found', () => {
30
+ it('Should return the fallback if the requested fields are not found', function () {
31
31
  // eslint-disable-next-line no-template-curly-in-string
32
- const CONFIG = {
32
+ var CONFIG = {
33
33
  value: '2',
34
34
  fields: ['nonExistent'],
35
35
  fallback: "Test ${name}"
36
36
  };
37
- const result = (0, _getFirstOf.default)(CONFIG, DATA);
37
+ var result = (0, _getFirstOf.default)(CONFIG, DATA);
38
38
  expect(result).toEqual("Test ".concat(DATA.name));
39
39
  });
40
- it('Should return the value of the passportNumber field given in config', () => {
41
- const CONFIG = {
40
+ it('Should return the value of the passportNumber field given in config', function () {
41
+ var CONFIG = {
42
42
  fields: ['passportNumber', 'anotherMadeUpId', 'otherIdDoc']
43
43
  };
44
- const result = (0, _getFirstOf.default)(CONFIG, DATA);
44
+ var result = (0, _getFirstOf.default)(CONFIG, DATA);
45
45
  expect(result).toEqual(DATA.passportNumber);
46
46
  });
47
- it('Should return the value of the anotherMadeUpId field given in config', () => {
48
- const CONFIG = {
47
+ it('Should return the value of the anotherMadeUpId field given in config', function () {
48
+ var CONFIG = {
49
49
  fields: ['anotherMadeUpId', 'passportNumber', 'otherIdDoc']
50
50
  };
51
- const result = (0, _getFirstOf.default)(CONFIG, DATA);
51
+ var result = (0, _getFirstOf.default)(CONFIG, DATA);
52
52
  expect(result).toEqual(DATA.anotherMadeUpId);
53
53
  });
54
- it('Should return the value of the otherIdDoc field given in config', () => {
55
- const CONFIG = {
54
+ it('Should return the value of the otherIdDoc field given in config', function () {
55
+ var CONFIG = {
56
56
  fields: ['otherIdDoc', 'passportNumber', 'anotherMadeUpId']
57
57
  };
58
- const result = (0, _getFirstOf.default)(CONFIG, DATA);
58
+ var result = (0, _getFirstOf.default)(CONFIG, DATA);
59
59
  expect(result).toEqual(DATA.passportNumber);
60
60
  });
61
- it('Should return the value of the otherIdDoc field given in config, if it exists, otherwise next field next in the array', () => {
62
- const CONFIG = {
61
+ it('Should return the value of the otherIdDoc field given in config, if it exists, otherwise next field next in the array', function () {
62
+ var CONFIG = {
63
63
  fields: ['otherIdDoc', 'passportNumber', 'anotherMadeUpId']
64
64
  };
65
- const result = (0, _getFirstOf.default)(CONFIG, DATA);
65
+ var result = (0, _getFirstOf.default)(CONFIG, DATA);
66
66
  expect(result).toEqual(DATA.passportNumber);
67
67
  });
68
- it('Should return no value if elements in config.fields are not found in data', () => {
69
- const CONFIG = {
68
+ it('Should return no value if elements in config.fields are not found in data', function () {
69
+ var CONFIG = {
70
70
  fields: ['otherIdDoc1', 'passportNumber1', 'anotherMadeUpId1']
71
71
  };
72
- const result = (0, _getFirstOf.default)(CONFIG, DATA);
72
+ var result = (0, _getFirstOf.default)(CONFIG, DATA);
73
73
  expect(result).toEqual('');
74
74
  });
75
- it('Should return null when an invalid config is used', () => {
76
- const result = (0, _getFirstOf.default)(null, DATA);
75
+ it('Should return null when an invalid config is used', function () {
76
+ var result = (0, _getFirstOf.default)(null, DATA);
77
77
  expect(result).toEqual(null);
78
78
  });
79
- it('Should return null when invalid data is used', () => {
80
- const CONFIG = {
79
+ it('Should return null when invalid data is used', function () {
80
+ var CONFIG = {
81
81
  field: 'a'
82
82
  };
83
- const result = (0, _getFirstOf.default)(CONFIG, null);
83
+ var result = (0, _getFirstOf.default)(CONFIG, null);
84
84
  expect(result).toEqual(null);
85
85
  });
86
86
  });
@@ -11,11 +11,11 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
11
11
 
12
12
  // Local imports.
13
13
 
14
- const getValueOrField = (config, data) => {
14
+ var getValueOrField = function getValueOrField(config, data) {
15
15
  if (config !== null && config !== void 0 && config.value) {
16
16
  return config.value;
17
17
  }
18
- const path = _copReactComponents.Utils.interpolateString(config === null || config === void 0 ? void 0 : config.field, data);
18
+ var path = _copReactComponents.Utils.interpolateString(config === null || config === void 0 ? void 0 : config.field, data);
19
19
  return (0, _getSourceData.default)(data, path);
20
20
  };
21
21
 
@@ -28,18 +28,18 @@ const getValueOrField = (config, data) => {
28
28
  * @param {object} data A page's formData.
29
29
  * @returns The index of the matching value if one exists, or null.
30
30
  */
31
- const getIndexOfMatchingValueIn = (config, data) => {
31
+ var getIndexOfMatchingValueIn = function getIndexOfMatchingValueIn(config, data) {
32
32
  if (!config || !data) {
33
33
  return null;
34
34
  }
35
- const targetPath = _copReactComponents.Utils.interpolateString(config.target, data);
36
- const target = (0, _getSourceData.default)(data, targetPath);
37
- const value = getValueOrField(config, data);
38
- const cutoff = getValueOrField(config.cutoff, data);
39
- const ignore = getValueOrField(config.ignore, data);
40
- let result = null;
35
+ var targetPath = _copReactComponents.Utils.interpolateString(config.target, data);
36
+ var target = (0, _getSourceData.default)(data, targetPath);
37
+ var value = getValueOrField(config, data);
38
+ var cutoff = getValueOrField(config.cutoff, data);
39
+ var ignore = getValueOrField(config.ignore, data);
40
+ var result = null;
41
41
  if (target && value && Array.isArray(target)) {
42
- target.every((entry, index) => {
42
+ target.every(function (entry, index) {
43
43
  if (index === cutoff) {
44
44
  return false;
45
45
  }
@@ -2,8 +2,8 @@
2
2
 
3
3
  var _getIndexOfMatchingValueIn = _interopRequireDefault(require("./getIndexOfMatchingValueIn"));
4
4
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5
- describe('Utils.Operate.getIndexOfPriorMatchingValueIn', () => {
6
- const DATA = {
5
+ describe('Utils.Operate.getIndexOfPriorMatchingValueIn', function () {
6
+ var DATA = {
7
7
  arrayOfValues: ['abc', 'bcd', 'cde', 'def', {
8
8
  root: {
9
9
  branch: 'leaf'
@@ -17,141 +17,147 @@ describe('Utils.Operate.getIndexOfPriorMatchingValueIn', () => {
17
17
  cutoffName: 'cutoffIndex',
18
18
  ignoreName: 'ignoreIndex'
19
19
  };
20
- it('Should return the index of a matching value if one exists', () => {
21
- const CONFIG = {
20
+ it('Should return the index of a matching value if one exists', function () {
21
+ var CONFIG = {
22
22
  target: 'arrayOfValues',
23
23
  value: 'cde'
24
24
  };
25
- const result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
25
+ var result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
26
26
  expect(result).toEqual('2');
27
27
  });
28
- it('Should handle getting value from given field', () => {
29
- const CONFIG = {
28
+ it('Should handle getting value from given field', function () {
29
+ var CONFIG = {
30
30
  target: 'arrayOfValues',
31
31
  field: 'valueToSearchFor'
32
32
  };
33
- const result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
33
+ var result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
34
34
  expect(result).toEqual('2');
35
35
  });
36
- it('Should handle interpolated string for field', () => {
36
+ it('Should handle interpolated string for field', function () {
37
37
  // eslint-disable-next-line no-template-curly-in-string
38
- const CONFIG = {
38
+ var CONFIG = {
39
39
  target: 'arrayOfValues',
40
40
  field: '${fieldName}'
41
41
  };
42
- const result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
42
+ var result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
43
43
  expect(result).toEqual('2');
44
44
  });
45
- it('Should handle interpolated string for key', () => {
45
+ it('Should handle interpolated string for key', function () {
46
46
  // eslint-disable-next-line no-template-curly-in-string
47
- const CONFIG = {
47
+ var CONFIG = {
48
48
  target: 'arrayOfValues',
49
49
  key: 'root.branch',
50
50
  value: 'leaf'
51
51
  };
52
- const result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
52
+ var result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
53
53
  expect(result).toEqual('4');
54
54
  });
55
- it('Should handle a cutoff value being specified', () => {
56
- const CONFIG = {
55
+ it('Should handle a cutoff value being specified', function () {
56
+ var CONFIG = {
57
57
  target: 'arrayOfValues',
58
58
  value: 'cde',
59
59
  cutoff: {
60
60
  value: 1
61
61
  }
62
62
  };
63
- const result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
63
+ var result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
64
64
  expect(result).toEqual(null); // Cutoff occurs before matching value is reached.
65
65
  });
66
- it('Should handle a cutoff field being specified', () => {
67
- const CONFIG = {
66
+
67
+ it('Should handle a cutoff field being specified', function () {
68
+ var CONFIG = {
68
69
  target: 'arrayOfValues',
69
70
  value: 'cde',
70
71
  cutoff: {
71
72
  field: 'cutoffIndex'
72
73
  }
73
74
  };
74
- const result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
75
+ var result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
75
76
  expect(result).toEqual(null); // Cutoff occurs before matching value is reached.
76
77
  });
77
- it('Should handle interpolated string for cutoff.field', () => {
78
+
79
+ it('Should handle interpolated string for cutoff.field', function () {
78
80
  // eslint-disable-next-line no-template-curly-in-string
79
- const CONFIG = {
81
+ var CONFIG = {
80
82
  target: 'arrayOfValues',
81
83
  value: 'cde',
82
84
  cutoff: {
83
85
  field: '${cutoffName}'
84
86
  }
85
87
  };
86
- const result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
88
+ var result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
87
89
  expect(result).toEqual(null); // Cutoff occurs before matching value is reached.
88
90
  });
89
- it('Should handle an ignore value being specified', () => {
90
- const CONFIG = {
91
+
92
+ it('Should handle an ignore value being specified', function () {
93
+ var CONFIG = {
91
94
  target: 'arrayOfValues',
92
95
  value: 'cde',
93
96
  ignore: {
94
97
  value: 2
95
98
  }
96
99
  };
97
- const result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
100
+ var result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
98
101
  expect(result).toEqual(null); // Should ignore the matching value.
99
102
  });
100
- it('Should handle an ignore field being specified', () => {
101
- const CONFIG = {
103
+
104
+ it('Should handle an ignore field being specified', function () {
105
+ var CONFIG = {
102
106
  target: 'arrayOfValues',
103
107
  value: 'cde',
104
108
  ignore: {
105
109
  field: 'ignoreIndex'
106
110
  }
107
111
  };
108
- const result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
112
+ var result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
109
113
  expect(result).toEqual(null); // Should ignore the matching value.
110
114
  });
111
- it('Should handle interpolated string for ignore.field', () => {
115
+
116
+ it('Should handle interpolated string for ignore.field', function () {
112
117
  // eslint-disable-next-line no-template-curly-in-string
113
- const CONFIG = {
118
+ var CONFIG = {
114
119
  target: 'arrayOfValues',
115
120
  value: 'cde',
116
121
  ignore: {
117
122
  field: '${ignoreName}'
118
123
  }
119
124
  };
120
- const result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
125
+ var result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
121
126
  expect(result).toEqual(null); // Should ignore the matching value.
122
127
  });
123
- it('Should handle interpolated string for target', () => {
128
+
129
+ it('Should handle interpolated string for target', function () {
124
130
  // eslint-disable-next-line no-template-curly-in-string
125
- const CONFIG = {
131
+ var CONFIG = {
126
132
  target: '${targetName}',
127
133
  value: 'cde'
128
134
  };
129
- const result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
135
+ var result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
130
136
  expect(result).toEqual('2');
131
137
  });
132
- it('Should return null when the target does not exist', () => {
133
- const CONFIG = {
138
+ it('Should return null when the target does not exist', function () {
139
+ var CONFIG = {
134
140
  target: 'notARealTarget',
135
141
  value: 'cde'
136
142
  };
137
- const result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
143
+ var result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
138
144
  expect(result).toEqual(null);
139
145
  });
140
- it('Should return null when config is missing fields', () => {
141
- const CONFIG = {};
142
- const result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
146
+ it('Should return null when config is missing fields', function () {
147
+ var CONFIG = {};
148
+ var result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, DATA);
143
149
  expect(result).toEqual(null);
144
150
  });
145
- it('Should return null when config is invalid', () => {
146
- const result = (0, _getIndexOfMatchingValueIn.default)(null, DATA);
151
+ it('Should return null when config is invalid', function () {
152
+ var result = (0, _getIndexOfMatchingValueIn.default)(null, DATA);
147
153
  expect(result).toEqual(null);
148
154
  });
149
- it('Should return null when data is invalid', () => {
150
- const CONFIG = {
155
+ it('Should return null when data is invalid', function () {
156
+ var CONFIG = {
151
157
  target: 'arrayOfValues',
152
158
  value: 'cde'
153
159
  };
154
- const result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, null);
160
+ var result = (0, _getIndexOfMatchingValueIn.default)(CONFIG, null);
155
161
  expect(result).toEqual(null);
156
162
  });
157
163
  });
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _copReactComponents = require("@ukhomeoffice/cop-react-components");
8
+ var _getCollectionPageActiveIndex = _interopRequireDefault(require("../CollectionPage/getCollectionPageActiveIndex"));
9
+ var _getSourceData = _interopRequireDefault(require("../Data/getSourceData"));
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ // Global imports.
12
+
13
+ // Local imports.
14
+
15
+ /**
16
+ * Finds a field within data and returns its length
17
+ * @param {object} config The config of the operation.
18
+ * @param {string} config.target The path to the target field. If the path
19
+ * goes through a collection this can be specified as 'collectionName[]'
20
+ * and this function will use the active entry within that collection.
21
+ * @param {object} data A page's formData.
22
+ * @returns The length of a field if found or 0
23
+ */
24
+ var getLength = function getLength(config, data) {
25
+ if (!config || !data) {
26
+ return null;
27
+ }
28
+
29
+ // Replace any instances of 'collectionName[]' with 'collectionName[activeIndex]'
30
+ var pathParts = config.target.split('.');
31
+ var updatedPath = '';
32
+ pathParts.forEach(function (part) {
33
+ if (updatedPath !== '') {
34
+ updatedPath += '.';
35
+ }
36
+ if (part.slice(-2) === '[]') {
37
+ var collectionName = part.slice(0, -2);
38
+ var activeIndex = (0, _getCollectionPageActiveIndex.default)(collectionName, data);
39
+ updatedPath += "".concat(collectionName, "[").concat(activeIndex, "]");
40
+ } else {
41
+ updatedPath += part;
42
+ }
43
+ });
44
+
45
+ // Get the field and return its length
46
+ var targetPath = _copReactComponents.Utils.interpolateString(updatedPath, data);
47
+ var target = (0, _getSourceData.default)(data, targetPath);
48
+ return (target === null || target === void 0 ? void 0 : target.length) || 0;
49
+ };
50
+ var _default = exports.default = getLength;
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+
3
+ var _getLength = _interopRequireDefault(require("./getLength"));
4
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5
+ describe('Utils.Operate.getLength', function () {
6
+ it('returns null if config is not defined', function () {
7
+ expect((0, _getLength.default)(null, {})).toEqual(null);
8
+ });
9
+ it('returns null if data is not defined', function () {
10
+ expect((0, _getLength.default)({}, null)).toEqual(null);
11
+ });
12
+ it('returns the length of a top level string', function () {
13
+ var CONFIG = {
14
+ target: 'alpha'
15
+ };
16
+ var DATA = {
17
+ alpha: 'abcdef'
18
+ };
19
+ expect((0, _getLength.default)(CONFIG, DATA)).toEqual(6);
20
+ });
21
+ it('returns the length of a top level array', function () {
22
+ var CONFIG = {
23
+ target: 'alpha'
24
+ };
25
+ var DATA = {
26
+ alpha: [{
27
+ test: 'test'
28
+ }, {
29
+ test: 'test'
30
+ }, {
31
+ test: 'test'
32
+ }, {
33
+ test: 'test'
34
+ }]
35
+ };
36
+ expect((0, _getLength.default)(CONFIG, DATA)).toEqual(4);
37
+ });
38
+ it('returns 0 if the field cannot be found', function () {
39
+ var CONFIG = {
40
+ target: 'alpha'
41
+ };
42
+ var DATA = {
43
+ beta: [{
44
+ test: 'test'
45
+ }, {
46
+ test: 'test'
47
+ }, {
48
+ test: 'test'
49
+ }, {
50
+ test: 'test'
51
+ }]
52
+ };
53
+ expect((0, _getLength.default)(CONFIG, DATA)).toEqual(0);
54
+ });
55
+ it('returns the length of a field not on the top level', function () {
56
+ var CONFIG = {
57
+ target: 'alpha.beta'
58
+ };
59
+ var DATA = {
60
+ alphaActiveId: 3,
61
+ alpha: {
62
+ beta: 'qwerty'
63
+ }
64
+ };
65
+ expect((0, _getLength.default)(CONFIG, DATA)).toEqual(6);
66
+ });
67
+ it('returns the length of an array nested under an array', function () {
68
+ var CONFIG = {
69
+ target: 'alpha[].beta'
70
+ };
71
+ var DATA = {
72
+ alphaActiveId: 3,
73
+ alpha: [{
74
+ id: 1,
75
+ beta: ['test']
76
+ }, {
77
+ id: 2,
78
+ beta: ['test', 'test']
79
+ }, {
80
+ id: 3,
81
+ beta: ['test', 'test', 'test']
82
+ }, {
83
+ id: 4,
84
+ beta: ['test', 'test', 'test', 'test']
85
+ }]
86
+ };
87
+ expect((0, _getLength.default)(CONFIG, DATA)).toEqual(3);
88
+ });
89
+ });
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var _runPageOperations = _interopRequireDefault(require("./runPageOperations"));
8
8
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
- const Operate = {
9
+ var Operate = {
10
10
  runPageOperations: _runPageOperations.default
11
11
  };
12
12
  var _default = exports.default = Operate;
@@ -18,10 +18,10 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
18
18
  * @param {object} data The page's formData.
19
19
  * @param {function} onChange The page's onChange handler.
20
20
  */
21
- const persistValueInFormData = (config, data, onChange) => {
22
- let value;
21
+ var persistValueInFormData = function persistValueInFormData(config, data, onChange) {
22
+ var value;
23
23
  if (config !== null && config !== void 0 && config.field) {
24
- const fieldPath = _copReactComponents.Utils.interpolateString(config.field, data);
24
+ var fieldPath = _copReactComponents.Utils.interpolateString(config.field, data);
25
25
  value = (0, _getSourceData.default)(data, fieldPath);
26
26
  } else {
27
27
  value = config === null || config === void 0 ? void 0 : config.value;