@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
@@ -2,11 +2,17 @@
2
2
 
3
3
  var _mustBeUniqueInCollection = _interopRequireDefault(require("./mustBeUniqueInCollection"));
4
4
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5
- describe('utils', () => {
6
- describe('Validate', () => {
7
- describe('additional', () => {
8
- describe('mustBeUniqueInCollection', () => {
9
- const COMPONENT = {
5
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
6
+ function 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; }
7
+ 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; }
8
+ 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; }
9
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
10
+ 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); }
11
+ describe('utils', function () {
12
+ describe('Validate', function () {
13
+ describe('additional', function () {
14
+ describe('mustBeUniqueInCollection', function () {
15
+ var COMPONENT = {
10
16
  id: 'firstName',
11
17
  type: 'text',
12
18
  label: 'First name',
@@ -17,33 +23,33 @@ describe('utils', () => {
17
23
  message: 'Should be unique'
18
24
  }]
19
25
  };
20
- const CONFIG = {
26
+ var CONFIG = {
21
27
  function: 'mustBeUniqueInCollection',
22
28
  collectionPath: 'names',
23
29
  message: 'Should be unique'
24
30
  };
25
- const VALUE = 'NAME';
26
- test('should return true given no value', () => {
27
- const result = (0, _mustBeUniqueInCollection.default)(undefined, CONFIG, COMPONENT, {});
31
+ var VALUE = 'NAME';
32
+ test('should return true given no value', function () {
33
+ var result = (0, _mustBeUniqueInCollection.default)(undefined, CONFIG, COMPONENT, {});
28
34
  expect(result).toBeTruthy();
29
35
  });
30
- test('should return true given no formData', () => {
31
- const result = (0, _mustBeUniqueInCollection.default)(1, CONFIG, COMPONENT, undefined);
36
+ test('should return true given no formData', function () {
37
+ var result = (0, _mustBeUniqueInCollection.default)(1, CONFIG, COMPONENT, undefined);
32
38
  expect(result).toBeTruthy();
33
39
  });
34
- test('should return true for first entry in a collection', () => {
35
- const FORM_DATA = {
40
+ test('should return true for first entry in a collection', function () {
41
+ var FORM_DATA = {
36
42
  namesActiveId: 1,
37
43
  names: [{
38
44
  id: 1,
39
45
  firstName: VALUE
40
46
  }]
41
47
  };
42
- const result = (0, _mustBeUniqueInCollection.default)(VALUE, CONFIG, COMPONENT, FORM_DATA);
48
+ var result = (0, _mustBeUniqueInCollection.default)(VALUE, CONFIG, COMPONENT, FORM_DATA);
43
49
  expect(result).toBeTruthy();
44
50
  });
45
- test('should return true if other entries do not have the same value for this field', () => {
46
- const FORM_DATA = {
51
+ test('should return true if other entries do not have the same value for this field', function () {
52
+ var FORM_DATA = {
47
53
  namesActiveId: 3,
48
54
  names: [{
49
55
  id: 1,
@@ -56,11 +62,11 @@ describe('utils', () => {
56
62
  firstName: VALUE
57
63
  }]
58
64
  };
59
- const result = (0, _mustBeUniqueInCollection.default)(VALUE, CONFIG, COMPONENT, FORM_DATA);
65
+ var result = (0, _mustBeUniqueInCollection.default)(VALUE, CONFIG, COMPONENT, FORM_DATA);
60
66
  expect(result).toBeTruthy();
61
67
  });
62
- test('should return false if other entries do have the same value for this field', () => {
63
- const FORM_DATA = {
68
+ test('should return false if other entries do have the same value for this field', function () {
69
+ var FORM_DATA = {
64
70
  namesActiveId: 3,
65
71
  names: [{
66
72
  id: 1,
@@ -73,12 +79,12 @@ describe('utils', () => {
73
79
  firstName: VALUE
74
80
  }]
75
81
  };
76
- const result = (0, _mustBeUniqueInCollection.default)(VALUE, CONFIG, COMPONENT, FORM_DATA);
82
+ var result = (0, _mustBeUniqueInCollection.default)(VALUE, CONFIG, COMPONENT, FORM_DATA);
77
83
  expect(result).toBeFalsy();
78
84
  });
79
- test('should return false if other entries do have the same value for this field within a nested collection', () => {
80
- const NESTED_VALUE = 'delta';
81
- const FORM_DATA = {
85
+ test('should return false if other entries do have the same value for this field within a nested collection', function () {
86
+ var NESTED_VALUE = 'delta';
87
+ var FORM_DATA = {
82
88
  namesActiveId: 3,
83
89
  names: [{
84
90
  id: 1,
@@ -99,7 +105,7 @@ describe('utils', () => {
99
105
  }]
100
106
  }]
101
107
  };
102
- const COMPONENT_NESTED = {
108
+ var COMPONENT_NESTED = {
103
109
  id: 'surname',
104
110
  type: 'text',
105
111
  label: 'Surname',
@@ -110,14 +116,13 @@ describe('utils', () => {
110
116
  message: 'Should be unique'
111
117
  }]
112
118
  };
113
- const result = (0, _mustBeUniqueInCollection.default)(NESTED_VALUE, {
114
- ...CONFIG,
119
+ var result = (0, _mustBeUniqueInCollection.default)(NESTED_VALUE, _objectSpread(_objectSpread({}, CONFIG), {}, {
115
120
  collectionPath: 'names.surnames'
116
- }, COMPONENT_NESTED, FORM_DATA);
121
+ }), COMPONENT_NESTED, FORM_DATA);
117
122
  expect(result).toBeFalsy();
118
123
  });
119
- test('should return true if other entries have the same value for this field in a different case', () => {
120
- const FORM_DATA = {
124
+ test('should return true if other entries have the same value for this field in a different case', function () {
125
+ var FORM_DATA = {
121
126
  namesActiveId: 2,
122
127
  names: [{
123
128
  id: 1,
@@ -130,11 +135,11 @@ describe('utils', () => {
130
135
  firstName: 'bravo'
131
136
  }]
132
137
  };
133
- const result = (0, _mustBeUniqueInCollection.default)('alpha', CONFIG, COMPONENT, FORM_DATA);
138
+ var result = (0, _mustBeUniqueInCollection.default)('alpha', CONFIG, COMPONENT, FORM_DATA);
134
139
  expect(result).toBeTruthy();
135
140
  });
136
- test('should return false if other entries have the same value for this field in a different case and caseInsensitive is true', () => {
137
- const FORM_DATA = {
141
+ test('should return false if other entries have the same value for this field in a different case and caseInsensitive is true', function () {
142
+ var FORM_DATA = {
138
143
  namesActiveId: 2,
139
144
  names: [{
140
145
  id: 1,
@@ -147,10 +152,9 @@ describe('utils', () => {
147
152
  firstName: 'bravo'
148
153
  }]
149
154
  };
150
- const result = (0, _mustBeUniqueInCollection.default)('alpha', {
151
- ...CONFIG,
155
+ var result = (0, _mustBeUniqueInCollection.default)('alpha', _objectSpread(_objectSpread({}, CONFIG), {}, {
152
156
  caseInsensitive: true
153
- }, COMPONENT, FORM_DATA);
157
+ }), COMPONENT, FORM_DATA);
154
158
  expect(result).toBeFalsy();
155
159
  });
156
160
  });
@@ -12,9 +12,9 @@ exports.default = void 0;
12
12
  * otherwise returns false
13
13
  */
14
14
  // eslint-disable-next-line arrow-body-style
15
- const mustEnterAtLeastOne = (data, _, component) => {
15
+ var mustEnterAtLeastOne = function mustEnterAtLeastOne(data, _, component) {
16
16
  var _component$components;
17
- return (_component$components = component.components) === null || _component$components === void 0 ? void 0 : _component$components.some(inner => {
17
+ return (_component$components = component.components) === null || _component$components === void 0 ? void 0 : _component$components.some(function (inner) {
18
18
  var _data$component$id;
19
19
  if ((_data$component$id = data[component.id]) !== null && _data$component$id !== void 0 && _data$component$id[inner.id]) {
20
20
  return true;
@@ -2,12 +2,16 @@
2
2
 
3
3
  var _mustEnterAtLeastOne = _interopRequireDefault(require("./mustEnterAtLeastOne"));
4
4
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5
- describe('utils', () => {
6
- describe('Validate', () => {
7
- describe('additional', () => {
8
- describe('mustEnterAtLeastOne', () => {
9
- const CONTAINER_ID = 'containerId';
10
- const COMPONENT = {
5
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
6
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
7
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
8
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
9
+ describe('utils', function () {
10
+ describe('Validate', function () {
11
+ describe('additional', function () {
12
+ describe('mustEnterAtLeastOne', function () {
13
+ var CONTAINER_ID = 'containerId';
14
+ var COMPONENT = {
11
15
  id: CONTAINER_ID,
12
16
  type: 'container',
13
17
  components: [{
@@ -18,16 +22,14 @@ describe('utils', () => {
18
22
  id: 'charlie'
19
23
  }]
20
24
  };
21
- test('should return false if all components are empty', () => {
22
- const DATA = {};
25
+ test('should return false if all components are empty', function () {
26
+ var DATA = {};
23
27
  expect((0, _mustEnterAtLeastOne.default)(DATA, {}, COMPONENT)).toEqual(false);
24
28
  });
25
- test('should return true if one component has data', () => {
26
- const DATA = {
27
- [CONTAINER_ID]: {
28
- alpha: 'text'
29
- }
30
- };
29
+ test('should return true if one component has data', function () {
30
+ var DATA = _defineProperty({}, CONTAINER_ID, {
31
+ alpha: 'text'
32
+ });
31
33
  expect((0, _mustEnterAtLeastOne.default)(DATA, {}, COMPONENT)).toEqual(true);
32
34
  });
33
35
  });
@@ -9,7 +9,7 @@ exports.default = void 0;
9
9
  * @param {number} config.maxDecimals - the maximum amount of decimal places to allow
10
10
  * @returns true if string has less than maxDecimals decimal places else returns false
11
11
  */
12
- const mustHaveLessThanDecimalPlaces = (string, config) => {
12
+ var mustHaveLessThanDecimalPlaces = function mustHaveLessThanDecimalPlaces(string, config) {
13
13
  if (!string || !string.includes('.')) {
14
14
  return true;
15
15
  }
@@ -2,30 +2,30 @@
2
2
 
3
3
  var _mustHaveLessThanDecimalPlaces = _interopRequireDefault(require("./mustHaveLessThanDecimalPlaces"));
4
4
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5
- describe('utils', () => {
6
- describe('Validate', () => {
7
- describe('additional', () => {
8
- describe('mustHaveLessThanDecimalPlaces', () => {
9
- test('should return false given a number with more than the allowed number of decimal places', () => {
10
- const result = (0, _mustHaveLessThanDecimalPlaces.default)('999999999.9999', {
5
+ describe('utils', function () {
6
+ describe('Validate', function () {
7
+ describe('additional', function () {
8
+ describe('mustHaveLessThanDecimalPlaces', function () {
9
+ test('should return false given a number with more than the allowed number of decimal places', function () {
10
+ var result = (0, _mustHaveLessThanDecimalPlaces.default)('999999999.9999', {
11
11
  maxDecimals: 3
12
12
  });
13
13
  expect(result).toEqual(false);
14
14
  });
15
- test('should return true given a number with less than the allowed number of decimal places', () => {
16
- const result = (0, _mustHaveLessThanDecimalPlaces.default)('999999999.99', {
15
+ test('should return true given a number with less than the allowed number of decimal places', function () {
16
+ var result = (0, _mustHaveLessThanDecimalPlaces.default)('999999999.99', {
17
17
  maxDecimals: 3
18
18
  });
19
19
  expect(result).toEqual(true);
20
20
  });
21
- test('should return true given a number with no decimal places', () => {
22
- const result = (0, _mustHaveLessThanDecimalPlaces.default)('999999999', {
21
+ test('should return true given a number with no decimal places', function () {
22
+ var result = (0, _mustHaveLessThanDecimalPlaces.default)('999999999', {
23
23
  maxDecimals: 3
24
24
  });
25
25
  expect(result).toEqual(true);
26
26
  });
27
- test('should return true given nothing', () => {
28
- const result = (0, _mustHaveLessThanDecimalPlaces.default)(undefined, {
27
+ test('should return true given nothing', function () {
28
+ var result = (0, _mustHaveLessThanDecimalPlaces.default)(undefined, {
29
29
  maxDecimals: 3
30
30
  });
31
31
  expect(result).toEqual(true);
@@ -4,13 +4,14 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
7
8
  // NOTE: SQL RegEx reference:
8
9
  // http://www.symantec.com/connect/articles/detection-sql-injection-and-cross-site-scripting-attacks
9
- const SQL_COMBINED = /(%27)|(')|(--)|(%23)|(#)|((%3D)|(=))[^\n]*((%27)|(')|(--)|(%3B)|(;))|w*((%27)|('))((%6F)|o|(%4F))((%72)|r|(%52))|((%27)|('))union/i;
10
- const mustNotContainSql = value => {
10
+ var SQL_COMBINED = /(%27)|(')|(--)|(%23)|(#)|((%3D)|(=))[^\n]*((%27)|(')|(--)|(%3B)|(;))|w*((%27)|('))((%6F)|o|(%4F))((%72)|r|(%52))|((%27)|('))union/i;
11
+ var mustNotContainSql = function mustNotContainSql(value) {
11
12
  // eslint-disable-next-line no-extra-boolean-cast
12
13
  if (!!value) {
13
- const string = typeof value === 'object' ? JSON.stringify(value) : String(value);
14
+ var string = _typeof(value) === 'object' ? JSON.stringify(value) : String(value);
14
15
  return !SQL_COMBINED.test(string);
15
16
  }
16
17
  return false;
@@ -2,28 +2,28 @@
2
2
 
3
3
  var _mustNotContainSql = _interopRequireDefault(require("./mustNotContainSql"));
4
4
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5
- describe('utils', () => {
6
- describe('Validate', () => {
7
- describe('additional', () => {
8
- describe('mustNotContainSql', () => {
9
- test('should return true given a string not containing sql characters', () => {
10
- const result = (0, _mustNotContainSql.default)('test');
5
+ describe('utils', function () {
6
+ describe('Validate', function () {
7
+ describe('additional', function () {
8
+ describe('mustNotContainSql', function () {
9
+ test('should return true given a string not containing sql characters', function () {
10
+ var result = (0, _mustNotContainSql.default)('test');
11
11
  expect(result).toEqual(true);
12
12
  });
13
- test('should return true given non-string datatype is converted to string', () => {
14
- const result = (0, _mustNotContainSql.default)(123);
13
+ test('should return true given non-string datatype is converted to string', function () {
14
+ var result = (0, _mustNotContainSql.default)(123);
15
15
  expect(result).toEqual(true);
16
16
  });
17
- test('should return false given a string containing sql characters', () => {
18
- const result = (0, _mustNotContainSql.default)("test' OR '1'='1'");
17
+ test('should return false given a string containing sql characters', function () {
18
+ var result = (0, _mustNotContainSql.default)("test' OR '1'='1'");
19
19
  expect(result).toEqual(false);
20
20
  });
21
- test('should return false given string is null', () => {
22
- const result = (0, _mustNotContainSql.default)(null);
21
+ test('should return false given string is null', function () {
22
+ var result = (0, _mustNotContainSql.default)(null);
23
23
  expect(result).toEqual(false);
24
24
  });
25
- test('should return false given string is not defined', () => {
26
- const result = (0, _mustNotContainSql.default)(undefined);
25
+ test('should return false given string is not defined', function () {
26
+ var result = (0, _mustNotContainSql.default)(undefined);
27
27
  expect(result).toEqual(false);
28
28
  });
29
29
  });
@@ -10,9 +10,9 @@ exports.default = void 0;
10
10
  * @param {object} component the container component
11
11
  * @returns true if the user has only provided a value for one of the components in the container, otherwise false.
12
12
  */
13
- const mustSelectOnlyOne = (data, _, component) => {
13
+ var mustSelectOnlyOne = function mustSelectOnlyOne(data, _, component) {
14
14
  var _component$components;
15
- const valueCount = (_component$components = component.components) === null || _component$components === void 0 ? void 0 : _component$components.reduce((acc, inner) => {
15
+ var valueCount = (_component$components = component.components) === null || _component$components === void 0 ? void 0 : _component$components.reduce(function (acc, inner) {
16
16
  var _data$component$id;
17
17
  if ((_data$component$id = data[component.id]) !== null && _data$component$id !== void 0 && _data$component$id[inner.id]) {
18
18
  // Account for checkboxes that the user may have unselected
@@ -2,12 +2,16 @@
2
2
 
3
3
  var _mustSelectOnlyOne = _interopRequireDefault(require("./mustSelectOnlyOne"));
4
4
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5
- describe('utils', () => {
6
- describe('Validate', () => {
7
- describe('additional', () => {
8
- describe('mustSelectOnlyOne', () => {
9
- const CONTAINER_ID = 'containerId';
10
- const COMPONENT = {
5
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
6
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
7
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
8
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
9
+ describe('utils', function () {
10
+ describe('Validate', function () {
11
+ describe('additional', function () {
12
+ describe('mustSelectOnlyOne', function () {
13
+ var CONTAINER_ID = 'containerId';
14
+ var COMPONENT = {
11
15
  id: CONTAINER_ID,
12
16
  type: 'container',
13
17
  components: [{
@@ -18,34 +22,28 @@ describe('utils', () => {
18
22
  id: 'charlie'
19
23
  }]
20
24
  };
21
- test('should return true if all components are empty', () => {
22
- const DATA = {};
25
+ test('should return true if all components are empty', function () {
26
+ var DATA = {};
23
27
  expect((0, _mustSelectOnlyOne.default)(DATA, {}, COMPONENT)).toEqual(true);
24
28
  });
25
- test('should return true if one component has data', () => {
26
- const DATA = {
27
- [CONTAINER_ID]: {
28
- alpha: 'text'
29
- }
30
- };
29
+ test('should return true if one component has data', function () {
30
+ var DATA = _defineProperty({}, CONTAINER_ID, {
31
+ alpha: 'text'
32
+ });
31
33
  expect((0, _mustSelectOnlyOne.default)(DATA, {}, COMPONENT)).toEqual(true);
32
34
  });
33
- test('should return false if more than one component has data', () => {
34
- const DATA = {
35
- [CONTAINER_ID]: {
36
- alpha: 'text',
37
- bravo: 'test'
38
- }
39
- };
35
+ test('should return false if more than one component has data', function () {
36
+ var DATA = _defineProperty({}, CONTAINER_ID, {
37
+ alpha: 'text',
38
+ bravo: 'test'
39
+ });
40
40
  expect((0, _mustSelectOnlyOne.default)(DATA, {}, COMPONENT)).toEqual(false);
41
41
  });
42
- test('should return true if more than one component has data but one is an empty array', () => {
43
- const DATA = {
44
- [CONTAINER_ID]: {
45
- alpha: 'text',
46
- bravo: []
47
- }
48
- };
42
+ test('should return true if more than one component has data but one is an empty array', function () {
43
+ var DATA = _defineProperty({}, CONTAINER_ID, {
44
+ alpha: 'text',
45
+ bravo: []
46
+ });
49
47
  expect((0, _mustSelectOnlyOne.default)(DATA, {}, COMPONENT)).toEqual(true);
50
48
  });
51
49
  });
@@ -4,7 +4,15 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.formattedTime = exports.formatString = exports.DATE_FORMAT = void 0;
7
- const isNumeric = value => /^-?\d+$/.test(value);
7
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
8
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
9
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
10
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
11
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
12
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
13
+ var isNumeric = function isNumeric(value) {
14
+ return /^-?\d+$/.test(value);
15
+ };
8
16
 
9
17
  /**
10
18
 
@@ -15,20 +23,25 @@ const isNumeric = value => /^-?\d+$/.test(value);
15
23
  * @param {string} dateComponent - the value representing a day or month.
16
24
  * @returns the value (appended with a leading zero, if the value passed in was a single digit)
17
25
  */
18
- const formatInTwoDigits = dateComponent => {
26
+ var formatInTwoDigits = function formatInTwoDigits(dateComponent) {
19
27
  if (isNumeric(dateComponent)) {
20
28
  return dateComponent.padStart(2, '0');
21
29
  }
22
30
  return '';
23
31
  };
24
- const formatString = date => {
25
- const [day, month, year] = date.split('-');
32
+ var formatString = exports.formatString = function formatString(date) {
33
+ var _date$split = date.split('-'),
34
+ _date$split2 = _slicedToArray(_date$split, 3),
35
+ day = _date$split2[0],
36
+ month = _date$split2[1],
37
+ year = _date$split2[2];
26
38
  return "".concat(formatInTwoDigits(day), "-").concat(formatInTwoDigits(month), "-").concat(year);
27
39
  };
28
- exports.formatString = formatString;
29
- const formattedTime = time => {
30
- const [hour, minute] = time.split(':');
40
+ var formattedTime = exports.formattedTime = function formattedTime(time) {
41
+ var _time$split = time.split(':'),
42
+ _time$split2 = _slicedToArray(_time$split, 2),
43
+ hour = _time$split2[0],
44
+ minute = _time$split2[1];
31
45
  return "".concat(formatInTwoDigits(hour), ":").concat(formatInTwoDigits(minute));
32
46
  };
33
- exports.formattedTime = formattedTime;
34
- const DATE_FORMAT = exports.DATE_FORMAT = 'DD-MM-YYYY';
47
+ var DATE_FORMAT = exports.DATE_FORMAT = 'DD-MM-YYYY';
@@ -17,7 +17,7 @@ var _validateTime = _interopRequireDefault(require("./validateTime"));
17
17
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
18
  // Local imports
19
19
 
20
- const Validate = {
20
+ var Validate = {
21
21
  component: _validateComponent.default,
22
22
  container: _validateContainer.default,
23
23
  email: _validateEmail.default,
@@ -7,8 +7,12 @@ exports.default = void 0;
7
7
  var _copReactComponents = require("@ukhomeoffice/cop-react-components");
8
8
  var _validateContainer = _interopRequireDefault(require("./validateContainer"));
9
9
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
- // Local imports
11
-
10
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
11
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
12
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
14
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
15
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } // Local imports
12
16
  /**
13
17
  * Validates all of the items within a collection.
14
18
  * @param {object} collection The collection to validate.
@@ -16,26 +20,26 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
16
20
  * @param {object} formData The data at the top level of the form.
17
21
  * @returns Errors for all components for all items within the collection.
18
22
  */
19
- const validateCollection = (collection, items, formData) => {
20
- const errors = [];
23
+ var validateCollection = function validateCollection(collection, items, formData) {
24
+ var errors = [];
21
25
  if (collection && Array.isArray(collection.item) && Array.isArray(items)) {
22
- items.forEach((item, index) => {
23
- const labelCount = (collection.countOffset || 0) + index + 1;
24
- const fullPath = "".concat(collection.full_path || collection.fieldId, "[").concat(index, "]");
25
- const container = {
26
+ items.forEach(function (item, index) {
27
+ var labelCount = (collection.countOffset || 0) + index + 1;
28
+ var fullPath = "".concat(collection.full_path || collection.fieldId, "[").concat(index, "]");
29
+ var container = {
26
30
  full_path: fullPath,
27
- components: collection.item.map(component => {
28
- const newComponent = {
29
- ...component,
31
+ components: collection.item.map(function (component) {
32
+ var newComponent = _objectSpread(_objectSpread({}, component), {}, {
30
33
  full_path: "".concat(fullPath, ".").concat(component.fieldId)
31
- };
34
+ });
32
35
  if (component.custom_errors && Array.isArray(component.custom_errors)) {
33
- newComponent.custom_errors = component.custom_errors.map(error => ({
34
- ...error,
35
- message: _copReactComponents.Utils.interpolateString(index === 0 && error.firstOnlyMessage ? error.firstOnlyMessage : error.message, {
36
- index: labelCount
37
- })
38
- }));
36
+ newComponent.custom_errors = component.custom_errors.map(function (error) {
37
+ return _objectSpread(_objectSpread({}, error), {}, {
38
+ message: _copReactComponents.Utils.interpolateString(index === 0 && error.firstOnlyMessage ? error.firstOnlyMessage : error.message, {
39
+ index: labelCount
40
+ })
41
+ });
42
+ });
39
43
  }
40
44
  return newComponent;
41
45
  })
@@ -43,6 +47,8 @@ const validateCollection = (collection, items, formData) => {
43
47
  errors.push((0, _validateContainer.default)(container, item, formData));
44
48
  });
45
49
  }
46
- return errors.filter(e => !!e).flat();
50
+ return errors.filter(function (e) {
51
+ return !!e;
52
+ }).flat();
47
53
  };
48
54
  var _default = exports.default = validateCollection;