@ukhomeoffice/cop-react-form-renderer 5.14.2 → 5.14.4

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 (328) hide show
  1. package/dist/components/CheckYourAnswers/Answer.js +15 -15
  2. package/dist/components/CheckYourAnswers/Answer.test.js +94 -128
  3. package/dist/components/CheckYourAnswers/CheckYourAnswers.js +99 -129
  4. package/dist/components/CheckYourAnswers/CheckYourAnswers.test.js +291 -501
  5. package/dist/components/CheckYourAnswers/index.js +2 -3
  6. package/dist/components/CollectionPage/CollectionPage.js +64 -58
  7. package/dist/components/CollectionPage/CollectionPage.test.js +212 -238
  8. package/dist/components/CollectionPage/index.js +2 -3
  9. package/dist/components/FormComponent/Collection.js +77 -113
  10. package/dist/components/FormComponent/Collection.test.js +688 -787
  11. package/dist/components/FormComponent/Container.js +44 -43
  12. package/dist/components/FormComponent/Container.test.js +316 -346
  13. package/dist/components/FormComponent/FormComponent.js +58 -64
  14. package/dist/components/FormComponent/FormComponent.test.js +180 -219
  15. package/dist/components/FormComponent/helpers/addLabel.js +5 -9
  16. package/dist/components/FormComponent/helpers/getComponentDisabled.js +2 -3
  17. package/dist/components/FormComponent/helpers/getComponentDisabled.test.js +8 -8
  18. package/dist/components/FormComponent/helpers/getComponentError.js +4 -7
  19. package/dist/components/FormComponent/helpers/getComponentError.test.js +15 -15
  20. package/dist/components/FormComponent/helpers/getComponentFieldSet.js +2 -2
  21. package/dist/components/FormComponent/helpers/getComponentFieldSet.test.js +7 -7
  22. package/dist/components/FormComponent/helpers/index.js +5 -5
  23. package/dist/components/FormComponent/index.js +2 -3
  24. package/dist/components/FormPage/FormPage.js +65 -79
  25. package/dist/components/FormPage/FormPage.test.js +134 -170
  26. package/dist/components/FormPage/index.js +2 -3
  27. package/dist/components/FormRenderer/FormRenderer.js +151 -193
  28. package/dist/components/FormRenderer/FormRenderer.test.js +598 -920
  29. package/dist/components/FormRenderer/handlers/cyaAction.js +4 -5
  30. package/dist/components/FormRenderer/handlers/getPageId.js +2 -5
  31. package/dist/components/FormRenderer/handlers/getPageId.test.js +15 -15
  32. package/dist/components/FormRenderer/handlers/handlers.test.js +33 -33
  33. package/dist/components/FormRenderer/handlers/index.js +3 -4
  34. package/dist/components/FormRenderer/handlers/navigate.js +5 -6
  35. package/dist/components/FormRenderer/handlers/submissionError.js +2 -3
  36. package/dist/components/FormRenderer/helpers/canActionProceed.js +2 -3
  37. package/dist/components/FormRenderer/helpers/canActionProceed.test.js +10 -10
  38. package/dist/components/FormRenderer/helpers/canCYASubmit.js +2 -5
  39. package/dist/components/FormRenderer/helpers/canCYASubmit.test.js +17 -21
  40. package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.js +19 -27
  41. package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.test.js +17 -17
  42. package/dist/components/FormRenderer/helpers/getCYA.js +6 -9
  43. package/dist/components/FormRenderer/helpers/getCYA.test.js +12 -12
  44. package/dist/components/FormRenderer/helpers/getFormState.js +7 -10
  45. package/dist/components/FormRenderer/helpers/getFormState.test.js +11 -11
  46. package/dist/components/FormRenderer/helpers/getNextPageId.js +19 -34
  47. package/dist/components/FormRenderer/helpers/getNextPageId.test.js +68 -68
  48. package/dist/components/FormRenderer/helpers/getPage.js +3 -6
  49. package/dist/components/FormRenderer/helpers/getPage.test.js +12 -12
  50. package/dist/components/FormRenderer/helpers/getRelevantPages.js +9 -13
  51. package/dist/components/FormRenderer/helpers/getRelevantPages.test.js +15 -15
  52. package/dist/components/FormRenderer/helpers/getSubmissionStatus.js +12 -13
  53. package/dist/components/FormRenderer/helpers/getSubmissionStatus.test.js +98 -92
  54. package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.js +66 -66
  55. package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.test.js +72 -79
  56. package/dist/components/FormRenderer/helpers/index.js +3 -4
  57. package/dist/components/FormRenderer/index.js +2 -3
  58. package/dist/components/FormRenderer/onCYAAction.js +52 -62
  59. package/dist/components/FormRenderer/onCYAAction.test.js +146 -138
  60. package/dist/components/FormRenderer/onPageAction.js +48 -47
  61. package/dist/components/FormRenderer/onPageAction.test.js +219 -205
  62. package/dist/components/FormRenderer/onTaskAction.js +12 -17
  63. package/dist/components/FormRenderer/onTaskAction.test.js +94 -89
  64. package/dist/components/PageActions/ActionButton.js +15 -19
  65. package/dist/components/PageActions/ActionButton.test.js +58 -79
  66. package/dist/components/PageActions/PageActions.js +12 -13
  67. package/dist/components/PageActions/PageActions.test.js +88 -116
  68. package/dist/components/PageActions/index.js +2 -3
  69. package/dist/components/SummaryList/GroupAction.js +15 -23
  70. package/dist/components/SummaryList/GroupAction.test.js +41 -37
  71. package/dist/components/SummaryList/RowAction.js +14 -19
  72. package/dist/components/SummaryList/RowAction.test.js +41 -37
  73. package/dist/components/SummaryList/SummaryList.js +25 -30
  74. package/dist/components/SummaryList/SummaryList.test.js +160 -182
  75. package/dist/components/SummaryList/SummaryListHeadingRow.js +9 -8
  76. package/dist/components/SummaryList/SummaryListRow.js +9 -8
  77. package/dist/components/SummaryList/SummaryListTitleRow.js +8 -7
  78. package/dist/components/SummaryList/helpers/getGroupActionAttributes.js +5 -8
  79. package/dist/components/SummaryList/helpers/getGroupActionAttributes.test.js +24 -24
  80. package/dist/components/SummaryList/helpers/getRowActionAttributes.js +5 -8
  81. package/dist/components/SummaryList/helpers/getRowActionAttributes.test.js +24 -24
  82. package/dist/components/SummaryList/helpers/index.js +2 -2
  83. package/dist/components/SummaryList/index.js +2 -3
  84. package/dist/components/TaskList/Task.js +22 -33
  85. package/dist/components/TaskList/Task.test.js +84 -77
  86. package/dist/components/TaskList/TaskList.js +46 -75
  87. package/dist/components/TaskList/TaskList.test.js +118 -113
  88. package/dist/components/TaskList/TaskState.js +9 -9
  89. package/dist/components/TaskList/TaskState.test.js +56 -49
  90. package/dist/components/TaskList/index.js +2 -3
  91. package/dist/components/index.js +8 -8
  92. package/dist/context/HooksContext/HooksContext.js +59 -85
  93. package/dist/context/HooksContext/HooksContext.test.js +28 -36
  94. package/dist/context/HooksContext/index.js +4 -6
  95. package/dist/context/ValidationContext/ValidationContext.js +35 -76
  96. package/dist/context/ValidationContext/ValidationContext.test.js +50 -61
  97. package/dist/context/ValidationContext/index.js +4 -6
  98. package/dist/context/index.js +3 -3
  99. package/dist/hooks/index.js +10 -11
  100. package/dist/hooks/useAxios.js +17 -43
  101. package/dist/hooks/useGetRequest.js +61 -106
  102. package/dist/hooks/useHooks.js +2 -5
  103. package/dist/hooks/useRefData.js +29 -45
  104. package/dist/hooks/useValidation.js +2 -5
  105. package/dist/index.js +15 -17
  106. package/dist/models/CollectionLabels.js +2 -3
  107. package/dist/models/ComponentTypes.js +25 -26
  108. package/dist/models/EventTypes.js +5 -6
  109. package/dist/models/FormPages.js +5 -6
  110. package/dist/models/FormTypes.js +9 -10
  111. package/dist/models/HubFormats.js +4 -5
  112. package/dist/models/PageAction.js +45 -42
  113. package/dist/models/TaskStates.js +30 -31
  114. package/dist/models/index.js +11 -12
  115. package/dist/setupTests.js +20 -24
  116. package/dist/utils/CheckYourAnswers/getCYAAction.js +6 -7
  117. package/dist/utils/CheckYourAnswers/getCYAAction.test.js +53 -55
  118. package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.js +18 -20
  119. package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.test.js +21 -23
  120. package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.js +17 -21
  121. package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.test.js +18 -20
  122. package/dist/utils/CheckYourAnswers/getCYARow.js +8 -10
  123. package/dist/utils/CheckYourAnswers/getCYARow.test.js +72 -72
  124. package/dist/utils/CheckYourAnswers/getCYARowForGroup.js +20 -27
  125. package/dist/utils/CheckYourAnswers/getCYARowForGroup.test.js +16 -17
  126. package/dist/utils/CheckYourAnswers/getCYARowsForCollection.js +41 -47
  127. package/dist/utils/CheckYourAnswers/getCYARowsForCollection.test.js +72 -75
  128. package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.js +71 -78
  129. package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.test.js +133 -114
  130. package/dist/utils/CheckYourAnswers/getCYARowsForContainer.js +27 -23
  131. package/dist/utils/CheckYourAnswers/getCYARowsForContainer.test.js +112 -106
  132. package/dist/utils/CheckYourAnswers/getCYARowsForPage.js +16 -23
  133. package/dist/utils/CheckYourAnswers/getCYARowsForPage.test.js +77 -83
  134. package/dist/utils/CheckYourAnswers/index.js +3 -4
  135. package/dist/utils/CheckYourAnswers/showComponentCYA.js +7 -9
  136. package/dist/utils/CheckYourAnswers/showComponentCYA.test.js +25 -25
  137. package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.js +9 -16
  138. package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.test.js +19 -20
  139. package/dist/utils/CollectionPage/getCollectionPageActiveIndex.js +4 -8
  140. package/dist/utils/CollectionPage/getCollectionPageActiveIndex.test.js +15 -15
  141. package/dist/utils/CollectionPage/index.js +3 -4
  142. package/dist/utils/CollectionPage/mergeCollectionPages.js +26 -29
  143. package/dist/utils/CollectionPage/mergeCollectionPages.test.js +15 -15
  144. package/dist/utils/Component/addShowWhen.js +5 -10
  145. package/dist/utils/Component/addShowWhen.test.js +38 -38
  146. package/dist/utils/Component/applyToComponentTree.js +20 -22
  147. package/dist/utils/Component/applyToComponentTree.test.js +28 -33
  148. package/dist/utils/Component/cleanAttributes.js +11 -16
  149. package/dist/utils/Component/cleanAttributes.test.js +17 -18
  150. package/dist/utils/Component/elevateNestedComponents.js +7 -9
  151. package/dist/utils/Component/elevateNestedComponents.test.js +19 -19
  152. package/dist/utils/Component/getComponent.js +91 -99
  153. package/dist/utils/Component/getComponentTests/getComponent.autocomplete.test.js +19 -18
  154. package/dist/utils/Component/getComponentTests/getComponent.calculation.test.js +51 -63
  155. package/dist/utils/Component/getComponentTests/getComponent.checkboxes.test.js +41 -49
  156. package/dist/utils/Component/getComponentTests/getComponent.date.test.js +33 -37
  157. package/dist/utils/Component/getComponentTests/getComponent.details.test.js +21 -19
  158. package/dist/utils/Component/getComponentTests/getComponent.email.test.js +19 -23
  159. package/dist/utils/Component/getComponentTests/getComponent.file.test.js +23 -27
  160. package/dist/utils/Component/getComponentTests/getComponent.heading.test.js +12 -11
  161. package/dist/utils/Component/getComponentTests/getComponent.html.test.js +18 -16
  162. package/dist/utils/Component/getComponentTests/getComponent.insetText.test.js +10 -9
  163. package/dist/utils/Component/getComponentTests/getComponent.list.test.js +18 -16
  164. package/dist/utils/Component/getComponentTests/getComponent.multifile.test.js +24 -27
  165. package/dist/utils/Component/getComponentTests/getComponent.nested.test.js +156 -175
  166. package/dist/utils/Component/getComponentTests/getComponent.paragraph.test.js +18 -16
  167. package/dist/utils/Component/getComponentTests/getComponent.phoneNumber.test.js +19 -23
  168. package/dist/utils/Component/getComponentTests/getComponent.radios.test.js +59 -73
  169. package/dist/utils/Component/getComponentTests/getComponent.select.test.js +19 -23
  170. package/dist/utils/Component/getComponentTests/getComponent.text.test.js +19 -23
  171. package/dist/utils/Component/getComponentTests/getComponent.textArea.test.js +35 -41
  172. package/dist/utils/Component/getComponentTests/getComponent.time.test.js +24 -32
  173. package/dist/utils/Component/getComponentTests/getComponent.unknown.test.js +3 -3
  174. package/dist/utils/Component/getComponentTests/getComponent.warningText.test.js +10 -9
  175. package/dist/utils/Component/getDefaultValue.js +7 -9
  176. package/dist/utils/Component/getDefaultValue.test.js +14 -14
  177. package/dist/utils/Component/index.js +3 -4
  178. package/dist/utils/Component/isEditable.js +3 -7
  179. package/dist/utils/Component/isEditable.test.js +14 -15
  180. package/dist/utils/Component/optionIsSelected.js +2 -3
  181. package/dist/utils/Component/optionIsSelected.test.js +10 -10
  182. package/dist/utils/Component/setupContainerComponentsPath.js +30 -33
  183. package/dist/utils/Component/setupContainerComponentsPath.test.js +16 -16
  184. package/dist/utils/Component/showComponent.js +4 -6
  185. package/dist/utils/Component/showComponent.test.js +29 -29
  186. package/dist/utils/Component/wrapInFormGroup.js +6 -6
  187. package/dist/utils/Condition/index.js +3 -4
  188. package/dist/utils/Condition/meetsAllConditions.js +9 -10
  189. package/dist/utils/Condition/meetsAllConditions.test.js +18 -18
  190. package/dist/utils/Condition/meetsCondition.js +19 -27
  191. package/dist/utils/Condition/meetsCondition.test.js +377 -377
  192. package/dist/utils/Condition/meetsOneCondition.js +7 -8
  193. package/dist/utils/Condition/meetsOneCondition.test.js +17 -17
  194. package/dist/utils/Condition/setupConditions.js +15 -21
  195. package/dist/utils/Condition/setupConditions.test.js +8 -8
  196. package/dist/utils/Container/getEditableComponents.js +5 -8
  197. package/dist/utils/Container/getEditableComponents.test.js +44 -46
  198. package/dist/utils/Container/index.js +3 -4
  199. package/dist/utils/Container/setupNesting.js +17 -24
  200. package/dist/utils/Container/setupNesting.test.js +28 -31
  201. package/dist/utils/Container/showContainer.js +5 -10
  202. package/dist/utils/Container/showContainer.test.js +31 -31
  203. package/dist/utils/Data/applyFormula.js +41 -52
  204. package/dist/utils/Data/applyFormula.test.js +26 -26
  205. package/dist/utils/Data/getAutocompleteSource.js +11 -14
  206. package/dist/utils/Data/getAutocompleteSource.test.js +59 -59
  207. package/dist/utils/Data/getDataPath.js +21 -32
  208. package/dist/utils/Data/getDataPath.test.js +20 -20
  209. package/dist/utils/Data/getOptions.js +22 -28
  210. package/dist/utils/Data/getOptions.test.js +21 -21
  211. package/dist/utils/Data/getSourceData.js +7 -21
  212. package/dist/utils/Data/getSourceData.test.js +85 -81
  213. package/dist/utils/Data/index.js +3 -4
  214. package/dist/utils/Data/refDataToOptions.js +12 -17
  215. package/dist/utils/Data/refDataToOptions.test.js +20 -20
  216. package/dist/utils/Data/setDataItem.js +8 -10
  217. package/dist/utils/Data/setDataItem.test.js +38 -38
  218. package/dist/utils/Data/setupFormData.js +32 -48
  219. package/dist/utils/Data/setupFormData.test.js +99 -98
  220. package/dist/utils/Data/setupRefDataUrlForComponent.js +22 -30
  221. package/dist/utils/Data/setupRefDataUrlForComponent.test.js +28 -28
  222. package/dist/utils/FormPage/applyConditionalProperties.js +7 -12
  223. package/dist/utils/FormPage/applyConditionalProperties.test.js +16 -19
  224. package/dist/utils/FormPage/getFormPage.js +17 -19
  225. package/dist/utils/FormPage/getFormPage.test.js +49 -48
  226. package/dist/utils/FormPage/getFormPages.js +9 -15
  227. package/dist/utils/FormPage/getFormPages.test.js +22 -25
  228. package/dist/utils/FormPage/getPageActions.js +11 -19
  229. package/dist/utils/FormPage/getPageActions.test.js +33 -33
  230. package/dist/utils/FormPage/getParagraphFromText.js +6 -9
  231. package/dist/utils/FormPage/getParagraphFromText.test.js +7 -7
  232. package/dist/utils/FormPage/index.js +3 -4
  233. package/dist/utils/FormPage/showFormPage.js +5 -10
  234. package/dist/utils/FormPage/showFormPage.test.js +33 -33
  235. package/dist/utils/FormPage/showFormPageCYA.js +4 -5
  236. package/dist/utils/FormPage/showFormPageCYA.test.js +9 -9
  237. package/dist/utils/FormPage/useComponent.js +21 -29
  238. package/dist/utils/FormPage/useComponent.test.js +71 -73
  239. package/dist/utils/Format/formatData.js +2 -3
  240. package/dist/utils/Format/formatData.test.js +19 -19
  241. package/dist/utils/Format/formatDataForComponent.js +6 -9
  242. package/dist/utils/Format/formatDataForComponent.test.js +50 -78
  243. package/dist/utils/Format/formatDataForForm.js +7 -10
  244. package/dist/utils/Format/formatDataForForm.test.js +14 -17
  245. package/dist/utils/Format/formatDataForPage.js +4 -7
  246. package/dist/utils/Format/formatDataForPage.test.js +20 -25
  247. package/dist/utils/Format/index.js +3 -4
  248. package/dist/utils/Hub/getFormHub.js +3 -4
  249. package/dist/utils/Hub/getFormHub.test.js +29 -32
  250. package/dist/utils/Hub/index.js +3 -4
  251. package/dist/utils/Meta/constants.js +2 -4
  252. package/dist/utils/Meta/documents/getDocuments.js +2 -6
  253. package/dist/utils/Meta/documents/getDocuments.test.js +25 -17
  254. package/dist/utils/Meta/documents/index.js +3 -4
  255. package/dist/utils/Meta/documents/setDocumentsForField.js +16 -19
  256. package/dist/utils/Meta/documents/setDocumentsForField.test.js +69 -35
  257. package/dist/utils/Meta/index.js +3 -4
  258. package/dist/utils/Operate/checkValueIsTruthy.js +5 -6
  259. package/dist/utils/Operate/checkValueIsTruthy.test.js +17 -17
  260. package/dist/utils/Operate/getFirstOf.js +9 -10
  261. package/dist/utils/Operate/getFirstOf.test.js +33 -33
  262. package/dist/utils/Operate/getIndexOfMatchingValueIn.js +13 -14
  263. package/dist/utils/Operate/getIndexOfMatchingValueIn.test.js +47 -53
  264. package/dist/utils/Operate/index.js +3 -4
  265. package/dist/utils/Operate/persistValueInFormData.js +7 -8
  266. package/dist/utils/Operate/persistValueInFormData.test.js +23 -21
  267. package/dist/utils/Operate/runPageOperations.js +10 -11
  268. package/dist/utils/Operate/runPageOperations.test.js +36 -37
  269. package/dist/utils/Operate/setValueInFormData.js +6 -7
  270. package/dist/utils/Operate/setValueInFormData.test.js +17 -17
  271. package/dist/utils/Operate/shouldRun.js +9 -10
  272. package/dist/utils/Operate/shouldRun.test.js +22 -28
  273. package/dist/utils/Validate/additional/conditionallyRequired.js +5 -7
  274. package/dist/utils/Validate/additional/conditionallyRequired.test.js +19 -19
  275. package/dist/utils/Validate/additional/index.js +8 -9
  276. package/dist/utils/Validate/additional/index.test.js +13 -13
  277. package/dist/utils/Validate/additional/mustBeAfter.js +4 -5
  278. package/dist/utils/Validate/additional/mustBeAfter.test.js +41 -41
  279. package/dist/utils/Validate/additional/mustBeBefore.js +4 -5
  280. package/dist/utils/Validate/additional/mustBeBefore.test.js +29 -29
  281. package/dist/utils/Validate/additional/mustBeEarlierDateTime.js +8 -14
  282. package/dist/utils/Validate/additional/mustBeEarlierDateTime.test.js +34 -38
  283. package/dist/utils/Validate/additional/mustBeGreaterThan.js +3 -4
  284. package/dist/utils/Validate/additional/mustBeGreaterThan.test.js +19 -19
  285. package/dist/utils/Validate/additional/mustBeInTheFuture.js +5 -6
  286. package/dist/utils/Validate/additional/mustBeInTheFuture.test.js +13 -13
  287. package/dist/utils/Validate/additional/mustBeInThePast.js +6 -7
  288. package/dist/utils/Validate/additional/mustBeInThePast.test.js +13 -13
  289. package/dist/utils/Validate/additional/mustBeLessThan.js +3 -4
  290. package/dist/utils/Validate/additional/mustBeLessThan.test.js +18 -18
  291. package/dist/utils/Validate/additional/mustBeLongerThan.js +2 -3
  292. package/dist/utils/Validate/additional/mustBeLongerThan.test.js +17 -17
  293. package/dist/utils/Validate/additional/mustBeNumbersOnly.js +3 -4
  294. package/dist/utils/Validate/additional/mustBeNumbersOnly.test.js +21 -21
  295. package/dist/utils/Validate/additional/mustBeShorterThan.js +2 -3
  296. package/dist/utils/Validate/additional/mustBeShorterThan.test.js +17 -17
  297. package/dist/utils/Validate/additional/mustEnterAtLeastOne.js +4 -7
  298. package/dist/utils/Validate/additional/mustEnterAtLeastOne.test.js +15 -17
  299. package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.js +2 -3
  300. package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.test.js +13 -13
  301. package/dist/utils/Validate/additional/mustSelectOnlyOne.js +4 -7
  302. package/dist/utils/Validate/additional/mustSelectOnlyOne.test.js +29 -27
  303. package/dist/utils/Validate/additional/utils.js +9 -25
  304. package/dist/utils/Validate/index.js +3 -4
  305. package/dist/utils/Validate/validateCollection.js +22 -29
  306. package/dist/utils/Validate/validateCollection.test.js +85 -77
  307. package/dist/utils/Validate/validateComponent.js +19 -19
  308. package/dist/utils/Validate/validateComponent.test.js +169 -147
  309. package/dist/utils/Validate/validateContainer.js +16 -22
  310. package/dist/utils/Validate/validateContainer.test.js +52 -48
  311. package/dist/utils/Validate/validateDate.js +14 -21
  312. package/dist/utils/Validate/validateDate.test.js +28 -29
  313. package/dist/utils/Validate/validateEmail.js +8 -11
  314. package/dist/utils/Validate/validateEmail.test.js +26 -26
  315. package/dist/utils/Validate/validateMultifile.js +6 -10
  316. package/dist/utils/Validate/validateMultifile.test.js +17 -18
  317. package/dist/utils/Validate/validatePage.js +20 -22
  318. package/dist/utils/Validate/validatePage.test.js +146 -143
  319. package/dist/utils/Validate/validateRegex.js +6 -10
  320. package/dist/utils/Validate/validateRegex.test.js +17 -17
  321. package/dist/utils/Validate/validateRequired.js +6 -9
  322. package/dist/utils/Validate/validateRequired.test.js +19 -19
  323. package/dist/utils/Validate/validateTextArea.js +6 -9
  324. package/dist/utils/Validate/validateTextArea.test.js +21 -21
  325. package/dist/utils/Validate/validateTime.js +8 -16
  326. package/dist/utils/Validate/validateTime.test.js +15 -15
  327. package/dist/utils/index.js +10 -12
  328. package/package.json +9 -6
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
 
3
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
@@ -13,15 +12,11 @@ var _cleanAttributes = _interopRequireDefault(require("./cleanAttributes"));
13
12
  var _isEditable = _interopRequireDefault(require("./isEditable"));
14
13
  var _FormComponent = _interopRequireDefault(require("../../components/FormComponent"));
15
14
  var _wrapInFormGroup = _interopRequireDefault(require("./wrapInFormGroup"));
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
18
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
19
- 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; }
20
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
21
- 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); }
22
- function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
23
- var LIST_CLASS = 'govuk-list';
24
- var BODY_CLASS = 'govuk-body';
15
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
16
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } /* eslint-disable no-use-before-define */ // Global imports
17
+ // Local imports
18
+ const LIST_CLASS = 'govuk-list';
19
+ const BODY_CLASS = 'govuk-body';
25
20
 
26
21
  /**
27
22
  * Separate function for each component type for the sake of
@@ -30,155 +25,155 @@ var BODY_CLASS = 'govuk-body';
30
25
  * makes it much harder to follow what's going on.
31
26
  */
32
27
 
33
- var getAlert = function getAlert(config) {
34
- var attrs = (0, _cleanAttributes.default)(config);
35
- var heading = _copReactComponents.Utils.interpolateString(config.heading, config.formData);
36
- var children = _copReactComponents.Utils.interpolateString(config.text, config.formData);
28
+ const getAlert = config => {
29
+ const attrs = (0, _cleanAttributes.default)(config);
30
+ const heading = _copReactComponents.Utils.interpolateString(config.heading, config.formData);
31
+ const children = _copReactComponents.Utils.interpolateString(config.text, config.formData);
37
32
  return /*#__PURE__*/_react.default.createElement(_copReactComponents.Alert, _extends({}, attrs, {
38
33
  heading: heading
39
34
  }), children);
40
35
  };
41
- var getAutocomplete = function getAutocomplete(config) {
42
- var attrs = (0, _cleanAttributes.default)(config);
43
- var source = _Data.default.getAutocompleteSource(config);
36
+ const getAutocomplete = config => {
37
+ const attrs = (0, _cleanAttributes.default)(config);
38
+ const source = _Data.default.getAutocompleteSource(config);
44
39
  return /*#__PURE__*/_react.default.createElement(_copReactComponents.Autocomplete, _extends({}, attrs, {
45
40
  source: source
46
41
  }));
47
42
  };
48
- var getCheckboxes = function getCheckboxes(config) {
49
- var options = [];
50
- _Data.default.getOptions(config, function (val) {
43
+ const getCheckboxes = config => {
44
+ let options = [];
45
+ _Data.default.getOptions(config, val => {
51
46
  options = val;
52
47
  });
53
- options = options.map(function (paramOption) {
48
+ options = options.map(paramOption => {
54
49
  if (!Array.isArray(paramOption.nested)) {
55
50
  return paramOption;
56
51
  }
57
- return _objectSpread(_objectSpread({}, paramOption), {}, {
52
+ return {
53
+ ...paramOption,
58
54
  children: getChildrenJsx(config, paramOption.nested)
59
- });
55
+ };
60
56
  });
61
- var attrs = (0, _cleanAttributes.default)(config);
57
+ const attrs = (0, _cleanAttributes.default)(config);
62
58
  return /*#__PURE__*/_react.default.createElement(_copReactComponents.Checkboxes, _extends({}, attrs, {
63
59
  options: options
64
60
  }));
65
61
  };
66
- var getCalculation = function getCalculation(config) {
67
- var value = _Data.default.applyFormula(config);
62
+ const getCalculation = config => {
63
+ const value = _Data.default.applyFormula(config);
68
64
  if (typeof config.onChange === 'function') {
69
65
  if (value !== config.value) {
70
66
  config.onChange({
71
67
  target: {
72
68
  name: config.fieldId,
73
- value: value
69
+ value
74
70
  }
75
71
  });
76
72
  }
77
73
  }
78
- var attrs = (0, _cleanAttributes.default)(config, ['formula']);
74
+ const attrs = (0, _cleanAttributes.default)(config, ['formula']);
79
75
  return /*#__PURE__*/_react.default.createElement(_copReactComponents.TextInput, _extends({}, attrs, {
80
76
  readonly: true
81
77
  }));
82
78
  };
83
- var getDate = function getDate(config) {
84
- var attrs = (0, _cleanAttributes.default)(config);
79
+ const getDate = config => {
80
+ const attrs = (0, _cleanAttributes.default)(config);
85
81
  return /*#__PURE__*/_react.default.createElement(_copReactComponents.DateInput, attrs);
86
82
  };
87
- var getDetails = function getDetails(config) {
88
- var attrs = (0, _cleanAttributes.default)(config, ['tagName']);
89
- var html = getHTML(config);
83
+ const getDetails = config => {
84
+ const attrs = (0, _cleanAttributes.default)(config, ['tagName']);
85
+ const html = getHTML(config);
90
86
  return /*#__PURE__*/_react.default.createElement(_copReactComponents.Details, attrs, html);
91
87
  };
92
- var getFileUpload = function getFileUpload(config) {
93
- var attrs = (0, _cleanAttributes.default)(config);
88
+ const getFileUpload = config => {
89
+ const attrs = (0, _cleanAttributes.default)(config);
94
90
  return /*#__PURE__*/_react.default.createElement(_copReactComponents.FileUpload, attrs);
95
91
  };
96
- var getMultiFileUpload = function getMultiFileUpload(config) {
97
- var attrs = (0, _cleanAttributes.default)(config);
92
+ const getMultiFileUpload = config => {
93
+ const attrs = (0, _cleanAttributes.default)(config);
98
94
  return /*#__PURE__*/_react.default.createElement(_copReactComponents.MultiFileUpload, attrs);
99
95
  };
100
- var getHeading = function getHeading(config) {
101
- var attrs = (0, _cleanAttributes.default)(config);
96
+ const getHeading = config => {
97
+ const attrs = (0, _cleanAttributes.default)(config);
102
98
  return /*#__PURE__*/_react.default.createElement(_copReactComponents.Heading, attrs, config.content);
103
99
  };
104
- var getHTML = function getHTML(config) {
105
- var attrs = (0, _cleanAttributes.default)(config);
100
+ const getHTML = config => {
101
+ const attrs = (0, _cleanAttributes.default)(config);
106
102
  return /*#__PURE__*/_react.default.createElement(_copReactComponents.Markup, attrs);
107
103
  };
108
- var getInsetText = function getInsetText(config) {
109
- var attrs = (0, _cleanAttributes.default)(config);
104
+ const getInsetText = config => {
105
+ const attrs = (0, _cleanAttributes.default)(config);
110
106
  return /*#__PURE__*/_react.default.createElement(_copReactComponents.InsetText, attrs, config.content);
111
107
  };
112
- var getList = function getList(config) {
113
- var _attrs$items;
114
- var attrs = (0, _cleanAttributes.default)(config, ['ordered']);
115
- var tagName = config.ordered ? 'ol' : 'ul';
116
- var bullet = config.ordered ? 'number' : 'bullet';
117
- var classes = _copReactComponents.Utils.classBuilder(LIST_CLASS, bullet);
118
- var content = (_attrs$items = attrs.items) === null || _attrs$items === void 0 ? void 0 : _attrs$items.map(function (item) {
119
- return "<li>".concat(item, "</li>");
120
- }).join('');
121
- return getHTML(_objectSpread(_objectSpread({}, attrs), {}, {
108
+ const getList = config => {
109
+ const attrs = (0, _cleanAttributes.default)(config, ['ordered']);
110
+ const tagName = config.ordered ? 'ol' : 'ul';
111
+ const bullet = config.ordered ? 'number' : 'bullet';
112
+ const classes = _copReactComponents.Utils.classBuilder(LIST_CLASS, bullet);
113
+ const content = attrs.items?.map(item => `<li>${item}</li>`).join('');
114
+ return getHTML({
115
+ ...attrs,
122
116
  className: classes(),
123
- tagName: tagName,
124
- content: content,
117
+ tagName,
118
+ content,
125
119
  type: _models.ComponentTypes.HTML
126
- }));
120
+ });
127
121
  };
128
- var getParagraph = function getParagraph(config) {
129
- var attrs = (0, _cleanAttributes.default)(config);
130
- return getHTML(_objectSpread(_objectSpread({
131
- className: BODY_CLASS
132
- }, attrs), {}, {
122
+ const getParagraph = config => {
123
+ const attrs = (0, _cleanAttributes.default)(config);
124
+ return getHTML({
125
+ className: BODY_CLASS,
126
+ ...attrs,
133
127
  tagName: 'p',
134
128
  type: _models.ComponentTypes.HTML
135
- }));
129
+ });
136
130
  };
137
- var getRadios = function getRadios(config) {
138
- var options = [];
139
- _Data.default.getOptions(config, function (val) {
131
+ const getRadios = config => {
132
+ let options = [];
133
+ _Data.default.getOptions(config, val => {
140
134
  options = val;
141
135
  });
142
- options = options.map(function (paramOption) {
136
+ options = options.map(paramOption => {
143
137
  if (!Array.isArray(paramOption.nested)) {
144
138
  return paramOption;
145
139
  }
146
- return _objectSpread(_objectSpread({}, paramOption), {}, {
140
+ return {
141
+ ...paramOption,
147
142
  children: getChildrenJsx(config, paramOption.nested)
148
- });
143
+ };
149
144
  });
150
- var attrs = (0, _cleanAttributes.default)(config);
145
+ const attrs = (0, _cleanAttributes.default)(config);
151
146
  return /*#__PURE__*/_react.default.createElement(_copReactComponents.Radios, _extends({}, attrs, {
152
147
  options: options
153
148
  }));
154
149
  };
155
- var getTextArea = function getTextArea(config) {
156
- var attrs = (0, _cleanAttributes.default)(config);
150
+ const getTextArea = config => {
151
+ const attrs = (0, _cleanAttributes.default)(config);
157
152
  return /*#__PURE__*/_react.default.createElement(_copReactComponents.TextArea, attrs);
158
153
  };
159
- var getTextInput = function getTextInput(config) {
160
- var attrs = (0, _cleanAttributes.default)(config);
154
+ const getTextInput = config => {
155
+ const attrs = (0, _cleanAttributes.default)(config);
161
156
  return /*#__PURE__*/_react.default.createElement(_copReactComponents.TextInput, attrs);
162
157
  };
163
- var getTime = function getTime(config) {
164
- var attrs = (0, _cleanAttributes.default)(config);
158
+ const getTime = config => {
159
+ const attrs = (0, _cleanAttributes.default)(config);
165
160
  return /*#__PURE__*/_react.default.createElement(_copReactComponents.TimeInput, attrs);
166
161
  };
167
- var getSelect = function getSelect(config) {
168
- var options = [];
169
- _Data.default.getOptions(config, function (val) {
162
+ const getSelect = config => {
163
+ let options = [];
164
+ _Data.default.getOptions(config, val => {
170
165
  options = val;
171
166
  });
172
- var attrs = (0, _cleanAttributes.default)(config);
167
+ const attrs = (0, _cleanAttributes.default)(config);
173
168
  return /*#__PURE__*/_react.default.createElement(_copReactComponents.Select, _extends({}, attrs, {
174
169
  options: options
175
170
  }));
176
171
  };
177
- var getWarningText = function getWarningText(config) {
178
- var attrs = (0, _cleanAttributes.default)(config);
172
+ const getWarningText = config => {
173
+ const attrs = (0, _cleanAttributes.default)(config);
179
174
  return /*#__PURE__*/_react.default.createElement(_copReactComponents.WarningText, attrs, config.content);
180
175
  };
181
- var getComponentByType = function getComponentByType(config) {
176
+ const getComponentByType = config => {
182
177
  switch (config.type) {
183
178
  case _models.ComponentTypes.HTML:
184
179
  return getHTML(config);
@@ -232,10 +227,12 @@ var getComponentByType = function getComponentByType(config) {
232
227
  * @param {*} parent the parent configuration
233
228
  * @param {*} child the child configuration
234
229
  */
235
- var getChildJsx = function getChildJsx(parent, paramChild) {
236
- var child = _objectSpread({}, paramChild);
230
+ const getChildJsx = (parent, paramChild) => {
231
+ const child = {
232
+ ...paramChild
233
+ };
237
234
  if (parent.full_path) {
238
- var pathParts = parent.full_path.split('.');
235
+ const pathParts = parent.full_path.split('.');
239
236
  pathParts.pop();
240
237
  pathParts.push(child.fieldId);
241
238
  child.full_path = pathParts.join('.');
@@ -262,13 +259,9 @@ var getChildJsx = function getChildJsx(parent, paramChild) {
262
259
  * @param {*} parentConfig parent component which the childrenConfigs will be under
263
260
  * @param {*} childrenConfigs array of configurations for the child components
264
261
  */
265
- var getChildrenJsx = function getChildrenJsx(parentConfig, childrenConfigs) {
266
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, childrenConfigs.map(function (config) {
267
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, {
268
- key: config.id
269
- }, getChildJsx(parentConfig, config));
270
- }));
271
- };
262
+ const getChildrenJsx = (parentConfig, childrenConfigs) => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, childrenConfigs.map(config => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, {
263
+ key: config.id
264
+ }, getChildJsx(parentConfig, config))));
272
265
  exports.getChildrenJsx = getChildrenJsx;
273
266
  /**
274
267
  * Get a renderable component, based on a configuration object.
@@ -277,20 +270,19 @@ exports.getChildrenJsx = getChildrenJsx;
277
270
  * @param {Function} fnOverride An optional override function for component rendering.
278
271
  * @returns A renderable component.
279
272
  */
280
- var getComponent = function getComponent(config) {
281
- var wrap = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
282
- var fnOverride = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
273
+ const getComponent = function (config) {
274
+ let wrap = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
275
+ let fnOverride = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
283
276
  if (typeof fnOverride === 'function') {
284
- var overrideComponent = fnOverride(config, wrap);
277
+ const overrideComponent = fnOverride(config, wrap);
285
278
  if (overrideComponent) {
286
279
  return overrideComponent;
287
280
  }
288
281
  }
289
- var component = getComponentByType(config);
282
+ const component = getComponentByType(config);
290
283
  if (component && wrap && (0, _isEditable.default)(config)) {
291
284
  return (0, _wrapInFormGroup.default)(config, component);
292
285
  }
293
286
  return component;
294
287
  };
295
- var _default = getComponent;
296
- exports.default = _default;
288
+ var _default = exports.default = getComponent;
@@ -3,18 +3,18 @@
3
3
  var _react = require("@testing-library/react");
4
4
  var _models = require("../../../models");
5
5
  var _getComponent = _interopRequireDefault(require("../getComponent"));
6
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
7
7
  // Global imports
8
8
 
9
9
  // Local imports
10
10
 
11
- describe('utils.Component.get', function () {
12
- it('should return an appropriately rendered autocomplete component', function () {
13
- var ID = 'test-id';
14
- var FIELD_ID = 'field-id';
15
- var LABEL = 'label';
16
- var OPTIONS = [];
17
- var COMPONENT = {
11
+ describe('utils.Component.get', () => {
12
+ it('should return an appropriately rendered autocomplete component', () => {
13
+ const ID = 'test-id';
14
+ const FIELD_ID = 'field-id';
15
+ const LABEL = 'label';
16
+ const OPTIONS = [];
17
+ const COMPONENT = {
18
18
  type: _models.ComponentTypes.AUTOCOMPLETE,
19
19
  id: ID,
20
20
  fieldId: FIELD_ID,
@@ -24,26 +24,27 @@ describe('utils.Component.get', function () {
24
24
  },
25
25
  'data-testid': ID
26
26
  };
27
- var _render = (0, _react.render)((0, _getComponent.default)(COMPONENT)),
28
- container = _render.container;
29
- var formGroup = (0, _react.getByTestId)(container, ID);
27
+ const {
28
+ container
29
+ } = (0, _react.render)((0, _getComponent.default)(COMPONENT));
30
+ const formGroup = (0, _react.getByTestId)(container, ID);
30
31
  expect(formGroup.tagName).toEqual('DIV');
31
32
  expect(formGroup.classList).toContain('govuk-form-group');
32
- var label;
33
- var autocompleteWrapper;
34
- var autocomplete;
35
- var autocompleteInput;
36
- formGroup.childNodes.forEach(function (node) {
33
+ let label;
34
+ let autocompleteWrapper;
35
+ let autocomplete;
36
+ let autocompleteInput;
37
+ formGroup.childNodes.forEach(node => {
37
38
  // Check if it's an element.
38
39
  if (node instanceof Element) {
39
40
  if (node.tagName === 'LABEL') {
40
41
  label = node;
41
42
  } else if (node.classList.contains('hods-autocomplete__outer-wrapper')) {
42
43
  autocompleteWrapper = node;
43
- var autocompleteInner = node.childNodes[0];
44
+ const autocompleteInner = node.childNodes[0];
44
45
  if (autocompleteInner instanceof Element) {
45
46
  autocomplete = autocompleteInner;
46
- autocomplete.childNodes.forEach(function (grandchild) {
47
+ autocomplete.childNodes.forEach(grandchild => {
47
48
  if (grandchild instanceof Element) {
48
49
  if (grandchild.tagName === 'INPUT') {
49
50
  autocompleteInput = grandchild;
@@ -1,29 +1,18 @@
1
1
  "use strict";
2
2
 
3
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
3
  var _react = require("@testing-library/react");
5
4
  var _models = require("../../../models");
6
5
  var _getComponent = _interopRequireDefault(require("../getComponent"));
7
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
- function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator.return && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, catch: function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
9
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
10
- 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."); }
11
- 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); }
12
- 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; }
13
- function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
14
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
15
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
16
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
17
- 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; }
18
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
19
- 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); }
20
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
21
- function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
22
- describe('utils.Component.get', function () {
23
- var ID = 'test-id';
24
- var FIELD_ID = 'field-id';
25
- var LABEL = 'label';
26
- var COMPONENT = {
6
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
7
+ // Global imports
8
+
9
+ // Local imports
10
+
11
+ describe('utils.Component.get', () => {
12
+ const ID = 'test-id';
13
+ const FIELD_ID = 'field-id';
14
+ const LABEL = 'label';
15
+ const COMPONENT = {
27
16
  type: _models.ComponentTypes.CALCULATION,
28
17
  id: ID,
29
18
  fieldId: FIELD_ID,
@@ -34,11 +23,11 @@ describe('utils.Component.get', function () {
34
23
  },
35
24
  'data-testid': ID
36
25
  };
37
- var error = jest.spyOn(console, 'error').mockImplementation(function () {});
38
- afterAll(function () {
26
+ const error = jest.spyOn(console, 'error').mockImplementation(() => {});
27
+ afterAll(() => {
39
28
  error.mockReset();
40
29
  });
41
- afterEach(function () {
30
+ afterEach(() => {
42
31
  error.mockClear();
43
32
  });
44
33
 
@@ -126,36 +115,34 @@ describe('utils.Component.get', function () {
126
115
  }
127
116
  },
128
117
  result: '266.67'
129
- }].forEach(function (test) {
118
+ }].forEach(test => {
130
119
  // eslint-disable-next-line no-param-reassign
131
- test.config.onChange = function (_ref) {
132
- var target = _ref.target;
120
+ test.config.onChange = _ref => {
121
+ let {
122
+ target
123
+ } = _ref;
133
124
  COMPONENT.formData[target.name] = target.value;
134
125
  };
135
- it("should render 'calculation' component with formula to given calculated value: ".concat(test.result), /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
136
- var _render, container, _getAllByTestId, _getAllByTestId2, formGroup, input, label;
137
- return _regeneratorRuntime().wrap(function _callee$(_context) {
138
- while (1) switch (_context.prev = _context.next) {
139
- case 0:
140
- _render = (0, _react.render)((0, _getComponent.default)(_objectSpread(_objectSpread({}, COMPONENT), test.config))), container = _render.container;
141
- _getAllByTestId = (0, _react.getAllByTestId)(container, ID), _getAllByTestId2 = _slicedToArray(_getAllByTestId, 2), formGroup = _getAllByTestId2[0], input = _getAllByTestId2[1];
142
- expect(formGroup.tagName).toEqual('DIV');
143
- expect(formGroup.classList).toContain('govuk-form-group');
144
- label = formGroup.childNodes[0];
145
- expect(label.tagName).toEqual('LABEL');
146
- expect(label.classList).toContain('govuk-label');
147
- expect(label.textContent).toContain(LABEL);
148
- expect(formGroup.classList).toContain('govuk-form-group');
149
- expect(input.tagName).toEqual('DIV');
150
- expect(input.classList).toContain('hods-readonly');
151
- expect(input.id).toEqual(ID);
152
- expect("".concat(COMPONENT.formData[FIELD_ID])).toEqual(test.result);
153
- case 13:
154
- case "end":
155
- return _context.stop();
156
- }
157
- }, _callee);
158
- })));
126
+ it(`should render 'calculation' component with formula to given calculated value: ${test.result}`, async () => {
127
+ const {
128
+ container
129
+ } = (0, _react.render)((0, _getComponent.default)({
130
+ ...COMPONENT,
131
+ ...test.config
132
+ }));
133
+ const [formGroup, input] = (0, _react.getAllByTestId)(container, ID);
134
+ expect(formGroup.tagName).toEqual('DIV');
135
+ expect(formGroup.classList).toContain('govuk-form-group');
136
+ const label = formGroup.childNodes[0];
137
+ expect(label.tagName).toEqual('LABEL');
138
+ expect(label.classList).toContain('govuk-label');
139
+ expect(label.textContent).toContain(LABEL);
140
+ expect(formGroup.classList).toContain('govuk-form-group');
141
+ expect(input.tagName).toEqual('DIV');
142
+ expect(input.classList).toContain('hods-readonly');
143
+ expect(input.id).toEqual(ID);
144
+ expect(`${COMPONENT.formData[FIELD_ID]}`).toEqual(test.result);
145
+ });
159
146
  });
160
147
 
161
148
  /**
@@ -174,12 +161,12 @@ describe('utils.Component.get', function () {
174
161
  *
175
162
  */
176
163
  [{
177
- error: "Missing 'formula' definition"
164
+ error: `Missing 'formula' definition`
178
165
  }, {
179
166
  config: {
180
167
  formula: {}
181
168
  },
182
- error: "Calculation formula 'name' cannot be empty"
169
+ error: `Calculation formula 'name' cannot be empty`
183
170
  }, {
184
171
  config: {
185
172
  formula: {
@@ -191,7 +178,7 @@ describe('utils.Component.get', function () {
191
178
  }]
192
179
  }
193
180
  },
194
- error: "Unsupported operation 'tictactoe'"
181
+ error: `Unsupported operation 'tictactoe'`
195
182
  }, {
196
183
  config: {
197
184
  formula: {
@@ -241,17 +228,18 @@ describe('utils.Component.get', function () {
241
228
  }
242
229
  },
243
230
  error: 'Argument cannot have more than one reference'
244
- }].forEach(function (test) {
245
- it("should return an appropriately rendered calculation component with message ".concat(test.result), function () {
246
- var _render2 = (0, _react.render)((0, _getComponent.default)(_objectSpread(_objectSpread({}, COMPONENT), test.config))),
247
- container = _render2.container;
248
- var _getAllByTestId3 = (0, _react.getAllByTestId)(container, ID),
249
- _getAllByTestId4 = _slicedToArray(_getAllByTestId3, 2),
250
- formGroup = _getAllByTestId4[0],
251
- input = _getAllByTestId4[1];
231
+ }].forEach(test => {
232
+ it(`should return an appropriately rendered calculation component with message ${test.result}`, () => {
233
+ const {
234
+ container
235
+ } = (0, _react.render)((0, _getComponent.default)({
236
+ ...COMPONENT,
237
+ ...test.config
238
+ }));
239
+ const [formGroup, input] = (0, _react.getAllByTestId)(container, ID);
252
240
  expect(formGroup.tagName).toEqual('DIV');
253
241
  expect(formGroup.classList).toContain('govuk-form-group');
254
- var label = formGroup.childNodes[0];
242
+ const label = formGroup.childNodes[0];
255
243
  expect(label.tagName).toEqual('LABEL');
256
244
  expect(label.classList).toContain('govuk-label');
257
245
  expect(label.textContent).toContain(LABEL);