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

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