@ukhomeoffice/cop-react-form-renderer 4.67.0 → 4.69.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (317) hide show
  1. package/dist/components/CheckYourAnswers/Answer.js +6 -16
  2. package/dist/components/CheckYourAnswers/Answer.test.js +104 -129
  3. package/dist/components/CheckYourAnswers/CheckYourAnswers.js +26 -64
  4. package/dist/components/CheckYourAnswers/CheckYourAnswers.test.js +428 -555
  5. package/dist/components/CheckYourAnswers/index.js +0 -3
  6. package/dist/components/CollectionPage/CollectionPage.js +13 -42
  7. package/dist/components/CollectionPage/CollectionPage.test.js +160 -206
  8. package/dist/components/CollectionPage/index.js +0 -3
  9. package/dist/components/FormComponent/Collection.js +35 -79
  10. package/dist/components/FormComponent/Collection.test.js +340 -391
  11. package/dist/components/FormComponent/Container.js +10 -31
  12. package/dist/components/FormComponent/Container.test.js +304 -357
  13. package/dist/components/FormComponent/FormComponent.js +17 -60
  14. package/dist/components/FormComponent/FormComponent.test.js +190 -228
  15. package/dist/components/FormComponent/helpers/addLabel.js +4 -7
  16. package/dist/components/FormComponent/helpers/getComponentDisabled.js +0 -4
  17. package/dist/components/FormComponent/helpers/getComponentDisabled.test.js +0 -2
  18. package/dist/components/FormComponent/helpers/getComponentError.js +0 -6
  19. package/dist/components/FormComponent/helpers/getComponentError.test.js +0 -2
  20. package/dist/components/FormComponent/helpers/index.js +0 -4
  21. package/dist/components/FormComponent/index.js +0 -3
  22. package/dist/components/FormPage/FormPage.js +21 -53
  23. package/dist/components/FormPage/FormPage.test.js +122 -160
  24. package/dist/components/FormPage/index.js +0 -3
  25. package/dist/components/FormRenderer/FormRenderer.js +106 -296
  26. package/dist/components/FormRenderer/FormRenderer.test.js +820 -1058
  27. package/dist/components/FormRenderer/handlers/cyaAction.js +0 -5
  28. package/dist/components/FormRenderer/handlers/getPageId.js +0 -2
  29. package/dist/components/FormRenderer/handlers/getPageId.test.js +1 -2
  30. package/dist/components/FormRenderer/handlers/handlers.test.js +1 -18
  31. package/dist/components/FormRenderer/handlers/index.js +0 -5
  32. package/dist/components/FormRenderer/handlers/navigate.js +0 -5
  33. package/dist/components/FormRenderer/handlers/submissionError.js +0 -2
  34. package/dist/components/FormRenderer/helpers/canActionProceed.js +0 -3
  35. package/dist/components/FormRenderer/helpers/canActionProceed.test.js +1 -3
  36. package/dist/components/FormRenderer/helpers/canCYASubmit.js +0 -2
  37. package/dist/components/FormRenderer/helpers/canCYASubmit.test.js +1 -5
  38. package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.js +12 -16
  39. package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.test.js +48 -11
  40. package/dist/components/FormRenderer/helpers/getCYA.js +0 -9
  41. package/dist/components/FormRenderer/helpers/getCYA.test.js +1 -3
  42. package/dist/components/FormRenderer/helpers/getFormState.js +0 -5
  43. package/dist/components/FormRenderer/helpers/getFormState.test.js +1 -3
  44. package/dist/components/FormRenderer/helpers/getNextPageId.js +0 -25
  45. package/dist/components/FormRenderer/helpers/getNextPageId.test.js +1 -4
  46. package/dist/components/FormRenderer/helpers/getPage.js +0 -5
  47. package/dist/components/FormRenderer/helpers/getPage.test.js +1 -3
  48. package/dist/components/FormRenderer/helpers/getRelevantPages.js +0 -6
  49. package/dist/components/FormRenderer/helpers/getRelevantPages.test.js +1 -3
  50. package/dist/components/FormRenderer/helpers/getSubmissionStatus.js +0 -10
  51. package/dist/components/FormRenderer/helpers/getSubmissionStatus.test.js +4 -7
  52. package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.js +32 -41
  53. package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.test.js +122 -8
  54. package/dist/components/FormRenderer/helpers/index.js +1 -11
  55. package/dist/components/FormRenderer/index.js +0 -3
  56. package/dist/components/FormRenderer/onCYAAction.js +8 -30
  57. package/dist/components/FormRenderer/onCYAAction.test.js +54 -79
  58. package/dist/components/FormRenderer/onPageAction.js +123 -0
  59. package/dist/components/FormRenderer/onPageAction.test.js +632 -0
  60. package/dist/components/PageActions/ActionButton.js +2 -17
  61. package/dist/components/PageActions/ActionButton.test.js +58 -81
  62. package/dist/components/PageActions/PageActions.js +3 -10
  63. package/dist/components/PageActions/PageActions.test.js +95 -120
  64. package/dist/components/PageActions/index.js +0 -3
  65. package/dist/components/SummaryList/GroupAction.js +5 -26
  66. package/dist/components/SummaryList/GroupAction.test.js +14 -28
  67. package/dist/components/SummaryList/RowAction.js +5 -25
  68. package/dist/components/SummaryList/RowAction.test.js +14 -28
  69. package/dist/components/SummaryList/SummaryList.js +7 -31
  70. package/dist/components/SummaryList/SummaryList.test.js +69 -126
  71. package/dist/components/SummaryList/SummaryListHeadingRow.js +3 -8
  72. package/dist/components/SummaryList/SummaryListRow.js +4 -8
  73. package/dist/components/SummaryList/SummaryListTitleRow.js +2 -7
  74. package/dist/components/SummaryList/helpers/getGroupActionAttributes.js +0 -3
  75. package/dist/components/SummaryList/helpers/getGroupActionAttributes.test.js +0 -6
  76. package/dist/components/SummaryList/helpers/getRowActionAttributes.js +0 -3
  77. package/dist/components/SummaryList/helpers/getRowActionAttributes.test.js +0 -6
  78. package/dist/components/SummaryList/helpers/index.js +0 -2
  79. package/dist/components/SummaryList/index.js +0 -3
  80. package/dist/components/TaskList/Task.js +9 -31
  81. package/dist/components/TaskList/Task.test.js +32 -59
  82. package/dist/components/TaskList/TaskList.js +32 -59
  83. package/dist/components/TaskList/TaskList.test.js +52 -90
  84. package/dist/components/TaskList/TaskState.js +2 -10
  85. package/dist/components/TaskList/TaskState.test.js +23 -41
  86. package/dist/components/TaskList/index.js +0 -3
  87. package/dist/components/index.js +0 -7
  88. package/dist/context/HooksContext/HooksContext.js +21 -39
  89. package/dist/context/HooksContext/HooksContext.test.js +18 -34
  90. package/dist/context/HooksContext/index.js +0 -5
  91. package/dist/context/ValidationContext/ValidationContext.js +26 -56
  92. package/dist/context/ValidationContext/ValidationContext.test.js +43 -64
  93. package/dist/context/ValidationContext/index.js +0 -5
  94. package/dist/context/index.js +0 -3
  95. package/dist/hooks/index.js +0 -9
  96. package/dist/hooks/useAxios.js +17 -36
  97. package/dist/hooks/useGetRequest.js +57 -93
  98. package/dist/hooks/useHooks.js +2 -4
  99. package/dist/hooks/useRefData.js +14 -41
  100. package/dist/hooks/useValidation.js +2 -4
  101. package/dist/index.js +0 -9
  102. package/dist/models/PageAction.js +4 -4
  103. package/dist/models/TaskStates.js +4 -4
  104. package/dist/models/index.js +1 -10
  105. package/dist/setupTests.js +0 -13
  106. package/dist/utils/CheckYourAnswers/getCYAAction.js +1 -9
  107. package/dist/utils/CheckYourAnswers/getCYAAction.test.js +1 -19
  108. package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.js +4 -11
  109. package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.test.js +4 -9
  110. package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.js +4 -9
  111. package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.test.js +4 -8
  112. package/dist/utils/CheckYourAnswers/getCYARow.js +3 -11
  113. package/dist/utils/CheckYourAnswers/getCYARow.test.js +60 -25
  114. package/dist/utils/CheckYourAnswers/getCYARowForGroup.js +6 -21
  115. package/dist/utils/CheckYourAnswers/getCYARowForGroup.test.js +2 -9
  116. package/dist/utils/CheckYourAnswers/getCYARowsForCollection.js +4 -20
  117. package/dist/utils/CheckYourAnswers/getCYARowsForCollection.test.js +7 -22
  118. package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.js +4 -32
  119. package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.test.js +4 -34
  120. package/dist/utils/CheckYourAnswers/getCYARowsForContainer.js +4 -15
  121. package/dist/utils/CheckYourAnswers/getCYARowsForContainer.test.js +4 -22
  122. package/dist/utils/CheckYourAnswers/getCYARowsForPage.js +2 -22
  123. package/dist/utils/CheckYourAnswers/getCYARowsForPage.test.js +7 -25
  124. package/dist/utils/CheckYourAnswers/index.js +1 -3
  125. package/dist/utils/CheckYourAnswers/showComponentCYA.js +2 -15
  126. package/dist/utils/CheckYourAnswers/showComponentCYA.test.js +1 -3
  127. package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.js +4 -12
  128. package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.test.js +5 -6
  129. package/dist/utils/CollectionPage/getCollectionPageActiveIndex.js +0 -6
  130. package/dist/utils/CollectionPage/getCollectionPageActiveIndex.test.js +1 -2
  131. package/dist/utils/CollectionPage/index.js +1 -5
  132. package/dist/utils/CollectionPage/mergeCollectionPages.js +5 -11
  133. package/dist/utils/CollectionPage/mergeCollectionPages.test.js +1 -2
  134. package/dist/utils/Component/addShowWhen.js +4 -10
  135. package/dist/utils/Component/addShowWhen.test.js +1 -2
  136. package/dist/utils/Component/applyToComponentTree.js +4 -18
  137. package/dist/utils/Component/applyToComponentTree.test.js +4 -8
  138. package/dist/utils/Component/cleanAttributes.js +1 -8
  139. package/dist/utils/Component/cleanAttributes.test.js +15 -16
  140. package/dist/utils/Component/elevateNestedComponents.js +0 -6
  141. package/dist/utils/Component/elevateNestedComponents.test.js +0 -2
  142. package/dist/utils/Component/getComponent.js +13 -86
  143. package/dist/utils/Component/getComponentTests/getComponent.autocomplete.test.js +6 -10
  144. package/dist/utils/Component/getComponentTests/getComponent.calculation.test.js +33 -51
  145. package/dist/utils/Component/getComponentTests/getComponent.checkboxes.test.js +8 -35
  146. package/dist/utils/Component/getComponentTests/getComponent.date.test.js +12 -29
  147. package/dist/utils/Component/getComponentTests/getComponent.details.test.js +4 -10
  148. package/dist/utils/Component/getComponentTests/getComponent.email.test.js +6 -23
  149. package/dist/utils/Component/getComponentTests/getComponent.file.test.js +6 -24
  150. package/dist/utils/Component/getComponentTests/getComponent.heading.test.js +3 -7
  151. package/dist/utils/Component/getComponentTests/getComponent.html.test.js +4 -10
  152. package/dist/utils/Component/getComponentTests/getComponent.insetText.test.js +3 -7
  153. package/dist/utils/Component/getComponentTests/getComponent.list.test.js +4 -10
  154. package/dist/utils/Component/getComponentTests/getComponent.multifile.test.js +5 -22
  155. package/dist/utils/Component/getComponentTests/getComponent.nested.test.js +156 -175
  156. package/dist/utils/Component/getComponentTests/getComponent.paragraph.test.js +4 -10
  157. package/dist/utils/Component/getComponentTests/getComponent.phoneNumber.test.js +6 -23
  158. package/dist/utils/Component/getComponentTests/getComponent.radios.test.js +8 -35
  159. package/dist/utils/Component/getComponentTests/getComponent.select.test.js +6 -23
  160. package/dist/utils/Component/getComponentTests/getComponent.text.test.js +6 -23
  161. package/dist/utils/Component/getComponentTests/getComponent.textArea.test.js +10 -34
  162. package/dist/utils/Component/getComponentTests/getComponent.time.test.js +12 -31
  163. package/dist/utils/Component/getComponentTests/getComponent.unknown.test.js +1 -2
  164. package/dist/utils/Component/getComponentTests/getComponent.warningText.test.js +3 -7
  165. package/dist/utils/Component/getDefaultValue.js +4 -8
  166. package/dist/utils/Component/getDefaultValue.test.js +0 -3
  167. package/dist/utils/Component/index.js +0 -10
  168. package/dist/utils/Component/isEditable.js +1 -4
  169. package/dist/utils/Component/isEditable.test.js +1 -5
  170. package/dist/utils/Component/optionIsSelected.js +22 -0
  171. package/dist/utils/Component/optionIsSelected.test.js +42 -0
  172. package/dist/utils/Component/setupContainerComponentsPath.js +4 -9
  173. package/dist/utils/Component/setupContainerComponentsPath.test.js +0 -3
  174. package/dist/utils/Component/showComponent.js +1 -8
  175. package/dist/utils/Component/showComponent.test.js +1 -2
  176. package/dist/utils/Component/wrapInFormGroup.js +0 -7
  177. package/dist/utils/Condition/index.js +0 -5
  178. package/dist/utils/Condition/meetsAllConditions.js +0 -9
  179. package/dist/utils/Condition/meetsAllConditions.test.js +1 -2
  180. package/dist/utils/Condition/meetsCondition.js +9 -34
  181. package/dist/utils/Condition/meetsCondition.test.js +21 -14
  182. package/dist/utils/Condition/meetsOneCondition.js +1 -9
  183. package/dist/utils/Condition/meetsOneCondition.test.js +1 -2
  184. package/dist/utils/Condition/setupConditions.js +4 -13
  185. package/dist/utils/Condition/setupConditions.test.js +0 -2
  186. package/dist/utils/Container/getEditableComponents.js +0 -7
  187. package/dist/utils/Container/getEditableComponents.test.js +1 -12
  188. package/dist/utils/Container/index.js +0 -5
  189. package/dist/utils/Container/setupNesting.js +4 -12
  190. package/dist/utils/Container/setupNesting.test.js +4 -10
  191. package/dist/utils/Container/showContainer.js +9 -18
  192. package/dist/utils/Container/showContainer.test.js +1 -2
  193. package/dist/utils/Data/applyFormula.js +6 -29
  194. package/dist/utils/Data/applyFormula.test.js +1 -2
  195. package/dist/utils/Data/getAutocompleteSource.js +1 -5
  196. package/dist/utils/Data/getAutocompleteSource.test.js +1 -2
  197. package/dist/utils/Data/getDataPath.js +3 -17
  198. package/dist/utils/Data/getDataPath.test.js +0 -4
  199. package/dist/utils/Data/getOptions.js +4 -14
  200. package/dist/utils/Data/getOptions.test.js +1 -2
  201. package/dist/utils/Data/getSourceData.js +6 -21
  202. package/dist/utils/Data/getSourceData.test.js +4 -6
  203. package/dist/utils/Data/index.js +1 -11
  204. package/dist/utils/Data/refDataToOptions.js +5 -13
  205. package/dist/utils/Data/refDataToOptions.test.js +1 -2
  206. package/dist/utils/Data/setDataItem.js +0 -5
  207. package/dist/utils/Data/setDataItem.test.js +0 -2
  208. package/dist/utils/Data/setupFormData.js +6 -25
  209. package/dist/utils/Data/setupFormData.test.js +8 -11
  210. package/dist/utils/Data/setupRefDataUrlForComponent.js +4 -15
  211. package/dist/utils/Data/setupRefDataUrlForComponent.test.js +1 -3
  212. package/dist/utils/FormPage/applyConditionalProperties.js +4 -11
  213. package/dist/utils/FormPage/applyConditionalProperties.test.js +4 -6
  214. package/dist/utils/FormPage/getFormPage.js +4 -16
  215. package/dist/utils/FormPage/getFormPage.test.js +10 -9
  216. package/dist/utils/FormPage/getFormPages.js +4 -9
  217. package/dist/utils/FormPage/getFormPages.test.js +6 -7
  218. package/dist/utils/FormPage/getPageActions.js +6 -19
  219. package/dist/utils/FormPage/getPageActions.test.js +1 -3
  220. package/dist/utils/FormPage/getParagraphFromText.js +0 -3
  221. package/dist/utils/FormPage/getParagraphFromText.test.js +1 -3
  222. package/dist/utils/FormPage/index.js +0 -7
  223. package/dist/utils/FormPage/showFormPage.js +9 -18
  224. package/dist/utils/FormPage/showFormPage.test.js +0 -2
  225. package/dist/utils/FormPage/showFormPageCYA.js +0 -5
  226. package/dist/utils/FormPage/showFormPageCYA.test.js +0 -2
  227. package/dist/utils/FormPage/useComponent.js +7 -19
  228. package/dist/utils/FormPage/useComponent.test.js +4 -7
  229. package/dist/utils/Format/formatData.js +0 -5
  230. package/dist/utils/Format/formatData.test.js +1 -2
  231. package/dist/utils/Format/formatDataForComponent.js +1 -6
  232. package/dist/utils/Format/formatDataForComponent.test.js +28 -47
  233. package/dist/utils/Format/formatDataForForm.js +4 -9
  234. package/dist/utils/Format/formatDataForForm.test.js +14 -11
  235. package/dist/utils/Format/formatDataForPage.js +1 -5
  236. package/dist/utils/Format/formatDataForPage.test.js +15 -12
  237. package/dist/utils/Format/index.js +1 -6
  238. package/dist/utils/Hub/getFormHub.js +0 -8
  239. package/dist/utils/Hub/getFormHub.test.js +6 -8
  240. package/dist/utils/Hub/index.js +1 -3
  241. package/dist/utils/Meta/documents/getDocuments.js +1 -4
  242. package/dist/utils/Meta/documents/getDocuments.test.js +4 -10
  243. package/dist/utils/Meta/documents/index.js +1 -5
  244. package/dist/utils/Meta/documents/setDocumentsForField.js +4 -11
  245. package/dist/utils/Meta/documents/setDocumentsForField.test.js +4 -16
  246. package/dist/utils/Meta/index.js +1 -4
  247. package/dist/utils/Operate/checkValueIsTruthy.js +1 -7
  248. package/dist/utils/Operate/checkValueIsTruthy.test.js +0 -2
  249. package/dist/utils/Operate/getFirstOf.js +2 -9
  250. package/dist/utils/Operate/getFirstOf.test.js +0 -2
  251. package/dist/utils/Operate/getIndexOfMatchingValueIn.js +7 -21
  252. package/dist/utils/Operate/getIndexOfMatchingValueIn.test.js +6 -2
  253. package/dist/utils/Operate/index.js +0 -3
  254. package/dist/utils/Operate/persistValueInFormData.js +1 -8
  255. package/dist/utils/Operate/persistValueInFormData.test.js +0 -4
  256. package/dist/utils/Operate/runPageOperations.js +3 -19
  257. package/dist/utils/Operate/runPageOperations.test.js +4 -6
  258. package/dist/utils/Operate/setValueInFormData.js +2 -7
  259. package/dist/utils/Operate/setValueInFormData.test.js +0 -2
  260. package/dist/utils/Operate/shouldRun.js +1 -14
  261. package/dist/utils/Operate/shouldRun.test.js +5 -8
  262. package/dist/utils/Validate/additional/conditionallyRequired.js +0 -3
  263. package/dist/utils/Validate/additional/conditionallyRequired.test.js +0 -2
  264. package/dist/utils/Validate/additional/index.js +1 -22
  265. package/dist/utils/Validate/additional/index.test.js +0 -6
  266. package/dist/utils/Validate/additional/mustBeAfter.js +3 -8
  267. package/dist/utils/Validate/additional/mustBeAfter.test.js +0 -4
  268. package/dist/utils/Validate/additional/mustBeBefore.js +3 -8
  269. package/dist/utils/Validate/additional/mustBeBefore.test.js +0 -4
  270. package/dist/utils/Validate/additional/mustBeEarlierDateTime.js +5 -16
  271. package/dist/utils/Validate/additional/mustBeEarlierDateTime.test.js +4 -8
  272. package/dist/utils/Validate/additional/mustBeGreaterThan.js +0 -3
  273. package/dist/utils/Validate/additional/mustBeGreaterThan.test.js +0 -2
  274. package/dist/utils/Validate/additional/mustBeInTheFuture.js +3 -12
  275. package/dist/utils/Validate/additional/mustBeInTheFuture.test.js +0 -3
  276. package/dist/utils/Validate/additional/mustBeInThePast.js +5 -13
  277. package/dist/utils/Validate/additional/mustBeInThePast.test.js +0 -3
  278. package/dist/utils/Validate/additional/mustBeLessThan.js +0 -3
  279. package/dist/utils/Validate/additional/mustBeLessThan.test.js +0 -2
  280. package/dist/utils/Validate/additional/mustBeLongerThan.js +0 -3
  281. package/dist/utils/Validate/additional/mustBeLongerThan.test.js +0 -2
  282. package/dist/utils/Validate/additional/mustBeNumbersOnly.js +0 -3
  283. package/dist/utils/Validate/additional/mustBeNumbersOnly.test.js +0 -2
  284. package/dist/utils/Validate/additional/mustBeShorterThan.js +0 -3
  285. package/dist/utils/Validate/additional/mustBeShorterThan.test.js +0 -2
  286. package/dist/utils/Validate/additional/mustEnterAtLeastOne.js +0 -5
  287. package/dist/utils/Validate/additional/mustEnterAtLeastOne.test.js +4 -5
  288. package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.js +0 -3
  289. package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.test.js +0 -2
  290. package/dist/utils/Validate/additional/mustSelectOnlyOne.js +0 -6
  291. package/dist/utils/Validate/additional/mustSelectOnlyOne.test.js +4 -7
  292. package/dist/utils/Validate/additional/utils.js +10 -26
  293. package/dist/utils/Validate/index.js +1 -11
  294. package/dist/utils/Validate/validateCollection.js +4 -10
  295. package/dist/utils/Validate/validateCollection.test.js +4 -6
  296. package/dist/utils/Validate/validateComponent.js +5 -40
  297. package/dist/utils/Validate/validateComponent.test.js +120 -22
  298. package/dist/utils/Validate/validateContainer.js +4 -14
  299. package/dist/utils/Validate/validateContainer.test.js +4 -10
  300. package/dist/utils/Validate/validateDate.js +6 -38
  301. package/dist/utils/Validate/validateDate.test.js +0 -4
  302. package/dist/utils/Validate/validateEmail.js +1 -8
  303. package/dist/utils/Validate/validateEmail.test.js +5 -4
  304. package/dist/utils/Validate/validateMultifile.js +0 -7
  305. package/dist/utils/Validate/validateMultifile.test.js +5 -6
  306. package/dist/utils/Validate/validatePage.js +4 -16
  307. package/dist/utils/Validate/validatePage.test.js +30 -25
  308. package/dist/utils/Validate/validateRegex.js +0 -10
  309. package/dist/utils/Validate/validateRegex.test.js +5 -4
  310. package/dist/utils/Validate/validateRequired.js +0 -8
  311. package/dist/utils/Validate/validateRequired.test.js +5 -4
  312. package/dist/utils/Validate/validateTextArea.js +0 -8
  313. package/dist/utils/Validate/validateTextArea.test.js +0 -2
  314. package/dist/utils/Validate/validateTime.js +5 -22
  315. package/dist/utils/Validate/validateTime.test.js +0 -2
  316. package/dist/utils/index.js +4 -20
  317. package/package.json +2 -2
@@ -1,38 +1,28 @@
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); }
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
7
  exports.getChildrenJsx = exports.default = void 0;
7
-
8
8
  var _copReactComponents = require("@ukhomeoffice/cop-react-components");
9
-
10
9
  var _react = _interopRequireDefault(require("react"));
11
-
12
10
  var _models = require("../../models");
13
-
14
11
  var _Data = _interopRequireDefault(require("../Data"));
15
-
16
12
  var _cleanAttributes = _interopRequireDefault(require("./cleanAttributes"));
17
-
18
13
  var _isEditable = _interopRequireDefault(require("./isEditable"));
19
-
20
14
  var _FormComponent = _interopRequireDefault(require("../../components/FormComponent"));
21
-
22
15
  var _wrapInFormGroup = _interopRequireDefault(require("./wrapInFormGroup"));
23
-
24
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
-
26
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; }
27
-
28
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; }
29
-
30
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
31
-
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); }
32
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); }
33
-
34
23
  var LIST_CLASS = 'govuk-list';
35
24
  var BODY_CLASS = 'govuk-body';
25
+
36
26
  /**
37
27
  * Separate function for each component type for the sake of
38
28
  * code clarity - having the additional bits and pieces in the
@@ -42,43 +32,38 @@ var BODY_CLASS = 'govuk-body';
42
32
 
43
33
  var getAlert = function getAlert(config) {
44
34
  var attrs = (0, _cleanAttributes.default)(config);
45
-
46
35
  var heading = _copReactComponents.Utils.interpolateString(config.heading, config.formData);
47
-
48
36
  var children = _copReactComponents.Utils.interpolateString(config.text, config.formData);
49
-
50
37
  return /*#__PURE__*/_react.default.createElement(_copReactComponents.Alert, _extends({}, attrs, {
51
38
  heading: heading,
52
39
  children: children
53
40
  }));
54
41
  };
55
-
56
42
  var getAutocomplete = function getAutocomplete(config) {
57
43
  var attrs = (0, _cleanAttributes.default)(config);
58
-
59
44
  var source = _Data.default.getAutocompleteSource(config);
60
-
61
45
  return /*#__PURE__*/_react.default.createElement(_copReactComponents.Autocomplete, _extends({}, attrs, {
62
46
  source: source
63
47
  }));
64
48
  };
65
-
66
49
  var getCheckboxes = function getCheckboxes(config) {
67
50
  var options = [];
68
-
69
51
  _Data.default.getOptions(config, function (val) {
70
52
  options = val;
71
53
  });
72
-
54
+ options.forEach(function (option) {
55
+ if (!Array.isArray(option.nested)) {
56
+ return;
57
+ }
58
+ option.children = getChildrenJsx(config, option.nested);
59
+ });
73
60
  var attrs = (0, _cleanAttributes.default)(config);
74
61
  return /*#__PURE__*/_react.default.createElement(_copReactComponents.Checkboxes, _extends({}, attrs, {
75
62
  options: options
76
63
  }));
77
64
  };
78
-
79
65
  var getCalculation = function getCalculation(config) {
80
66
  var value = _Data.default.applyFormula(config);
81
-
82
67
  if (typeof config.onChange === 'function') {
83
68
  if (value !== config.value) {
84
69
  config.onChange({
@@ -89,58 +74,46 @@ var getCalculation = function getCalculation(config) {
89
74
  });
90
75
  }
91
76
  }
92
-
93
77
  var attrs = (0, _cleanAttributes.default)(config, ['formula']);
94
78
  return /*#__PURE__*/_react.default.createElement(_copReactComponents.TextInput, _extends({}, attrs, {
95
79
  readonly: true
96
80
  }));
97
81
  };
98
-
99
82
  var getDate = function getDate(config) {
100
83
  var attrs = (0, _cleanAttributes.default)(config);
101
84
  return /*#__PURE__*/_react.default.createElement(_copReactComponents.DateInput, attrs);
102
85
  };
103
-
104
86
  var getDetails = function getDetails(config) {
105
87
  var attrs = (0, _cleanAttributes.default)(config);
106
88
  var html = getHTML(config);
107
89
  return /*#__PURE__*/_react.default.createElement(_copReactComponents.Details, attrs, html);
108
90
  };
109
-
110
91
  var getFileUpload = function getFileUpload(config) {
111
92
  var attrs = (0, _cleanAttributes.default)(config);
112
93
  return /*#__PURE__*/_react.default.createElement(_copReactComponents.FileUpload, attrs);
113
94
  };
114
-
115
95
  var getMultiFileUpload = function getMultiFileUpload(config) {
116
96
  var attrs = (0, _cleanAttributes.default)(config);
117
97
  return /*#__PURE__*/_react.default.createElement(_copReactComponents.MultiFileUpload, attrs);
118
98
  };
119
-
120
99
  var getHeading = function getHeading(config) {
121
100
  var attrs = (0, _cleanAttributes.default)(config);
122
101
  return /*#__PURE__*/_react.default.createElement(_copReactComponents.Heading, attrs, config.content);
123
102
  };
124
-
125
103
  var getHTML = function getHTML(config) {
126
104
  var attrs = (0, _cleanAttributes.default)(config);
127
105
  return /*#__PURE__*/_react.default.createElement(_copReactComponents.Markup, attrs);
128
106
  };
129
-
130
107
  var getInsetText = function getInsetText(config) {
131
108
  var attrs = (0, _cleanAttributes.default)(config);
132
109
  return /*#__PURE__*/_react.default.createElement(_copReactComponents.InsetText, attrs, config.content);
133
110
  };
134
-
135
111
  var getList = function getList(config) {
136
112
  var _attrs$items;
137
-
138
113
  var attrs = (0, _cleanAttributes.default)(config);
139
114
  var tagName = attrs.ordered ? 'ol' : 'ul';
140
115
  var bullet = attrs.ordered ? 'number' : 'bullet';
141
-
142
116
  var classes = _copReactComponents.Utils.classBuilder(LIST_CLASS, bullet);
143
-
144
117
  var content = (_attrs$items = attrs.items) === null || _attrs$items === void 0 ? void 0 : _attrs$items.map(function (item) {
145
118
  return "<li>".concat(item, "</li>");
146
119
  }).join('');
@@ -151,7 +124,6 @@ var getList = function getList(config) {
151
124
  type: _models.ComponentTypes.HTML
152
125
  }));
153
126
  };
154
-
155
127
  var getParagraph = function getParagraph(config) {
156
128
  var attrs = (0, _cleanAttributes.default)(config);
157
129
  return getHTML(_objectSpread(_objectSpread({
@@ -161,19 +133,15 @@ var getParagraph = function getParagraph(config) {
161
133
  type: _models.ComponentTypes.HTML
162
134
  }));
163
135
  };
164
-
165
136
  var getRadios = function getRadios(config) {
166
137
  var options = [];
167
-
168
138
  _Data.default.getOptions(config, function (val) {
169
139
  options = val;
170
140
  });
171
-
172
141
  options.forEach(function (option) {
173
142
  if (!Array.isArray(option.nested)) {
174
143
  return;
175
144
  }
176
-
177
145
  option.children = getChildrenJsx(config, option.nested);
178
146
  });
179
147
  var attrs = (0, _cleanAttributes.default)(config);
@@ -181,114 +149,86 @@ var getRadios = function getRadios(config) {
181
149
  options: options
182
150
  }));
183
151
  };
184
-
185
152
  var getTextArea = function getTextArea(config) {
186
153
  var attrs = (0, _cleanAttributes.default)(config);
187
154
  return /*#__PURE__*/_react.default.createElement(_copReactComponents.TextArea, attrs);
188
155
  };
189
-
190
156
  var getTextInput = function getTextInput(config) {
191
157
  var attrs = (0, _cleanAttributes.default)(config);
192
158
  return /*#__PURE__*/_react.default.createElement(_copReactComponents.TextInput, attrs);
193
159
  };
194
-
195
160
  var getTime = function getTime(config) {
196
161
  var attrs = (0, _cleanAttributes.default)(config);
197
162
  return /*#__PURE__*/_react.default.createElement(_copReactComponents.TimeInput, attrs);
198
163
  };
199
-
200
164
  var getSelect = function getSelect(config) {
201
165
  var options = [];
202
-
203
166
  _Data.default.getOptions(config, function (val) {
204
167
  options = val;
205
168
  });
206
-
207
169
  var attrs = (0, _cleanAttributes.default)(config);
208
170
  return /*#__PURE__*/_react.default.createElement(_copReactComponents.Select, _extends({}, attrs, {
209
171
  options: options
210
172
  }));
211
173
  };
212
-
213
174
  var getWarningText = function getWarningText(config) {
214
175
  var attrs = (0, _cleanAttributes.default)(config);
215
176
  return /*#__PURE__*/_react.default.createElement(_copReactComponents.WarningText, attrs, config.content);
216
177
  };
217
-
218
178
  var getComponentByType = function getComponentByType(config) {
219
179
  switch (config.type) {
220
180
  case _models.ComponentTypes.HTML:
221
181
  return getHTML(config);
222
-
223
182
  case _models.ComponentTypes.HEADING:
224
183
  return getHeading(config);
225
-
226
184
  case _models.ComponentTypes.INSET_TEXT:
227
185
  return getInsetText(config);
228
-
229
186
  case _models.ComponentTypes.TEXT:
230
187
  case _models.ComponentTypes.EMAIL:
231
188
  case _models.ComponentTypes.PHONE_NUMBER:
232
189
  return getTextInput(config);
233
-
234
190
  case _models.ComponentTypes.TEXT_AREA:
235
191
  return getTextArea(config);
236
-
237
192
  case _models.ComponentTypes.AUTOCOMPLETE:
238
193
  return getAutocomplete(config);
239
-
240
194
  case _models.ComponentTypes.RADIOS:
241
195
  return getRadios(config);
242
-
243
196
  case _models.ComponentTypes.CHECKBOXES:
244
197
  return getCheckboxes(config);
245
-
246
198
  case _models.ComponentTypes.DATE:
247
199
  return getDate(config);
248
-
249
200
  case _models.ComponentTypes.TIME:
250
201
  return getTime(config);
251
-
252
202
  case _models.ComponentTypes.FILE:
253
203
  return getFileUpload(config);
254
-
255
204
  case _models.ComponentTypes.MULTI_FILE:
256
205
  return getMultiFileUpload(config);
257
-
258
206
  case _models.ComponentTypes.WARNING:
259
207
  return getWarningText(config);
260
-
261
208
  case _models.ComponentTypes.SELECT:
262
209
  return getSelect(config);
263
-
264
210
  case _models.ComponentTypes.DETAILS:
265
211
  return getDetails(config);
266
-
267
212
  case _models.ComponentTypes.CALCULATION:
268
213
  return getCalculation(config);
269
-
270
214
  case _models.ComponentTypes.ALERT:
271
215
  return getAlert(config);
272
-
273
216
  case _models.ComponentTypes.PARAGRAPH:
274
217
  return getParagraph(config);
275
-
276
218
  case _models.ComponentTypes.LIST:
277
219
  return getList(config);
278
-
279
220
  default:
280
221
  {
281
222
  return null;
282
223
  }
283
224
  }
284
225
  };
226
+
285
227
  /**
286
228
  * Get single child component for a parent
287
229
  * @param {*} parent the parent configuration
288
230
  * @param {*} child the child configuration
289
231
  */
290
-
291
-
292
232
  var getChildJsx = function getChildJsx(parent, child) {
293
233
  if (parent.full_path) {
294
234
  var pathParts = parent.full_path.split('.');
@@ -296,18 +236,14 @@ var getChildJsx = function getChildJsx(parent, child) {
296
236
  pathParts.push(child.fieldId);
297
237
  child.full_path = pathParts.join('.');
298
238
  }
299
-
300
239
  if (parent.formData) {
301
240
  child.value = parent.formData[child.fieldId] || _Data.default.getSource(parent.formData, child.full_path) || '';
302
241
  }
303
-
304
242
  if ('readonly' in child) delete child.readonly;
305
-
306
243
  if (parent.readonly) {
307
244
  child.readonly = parent.readonly;
308
245
  return /*#__PURE__*/_react.default.createElement("div", null, getComponent(child, false));
309
246
  }
310
-
311
247
  return /*#__PURE__*/_react.default.createElement(_FormComponent.default, {
312
248
  component: child,
313
249
  value: child.value,
@@ -316,13 +252,12 @@ var getChildJsx = function getChildJsx(parent, child) {
316
252
  formData: parent.formData
317
253
  });
318
254
  };
255
+
319
256
  /**
320
257
  * Convert chidlrenConfigs into components
321
258
  * @param {*} parentConfig parent component which the childrenConfigs will be under
322
259
  * @param {*} childrenConfigs array of configurations for the child components
323
260
  */
324
-
325
-
326
261
  var getChildrenJsx = function getChildrenJsx(parentConfig, childrenConfigs) {
327
262
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, childrenConfigs.map(function (config) {
328
263
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, {
@@ -330,9 +265,7 @@ var getChildrenJsx = function getChildrenJsx(parentConfig, childrenConfigs) {
330
265
  }, getChildJsx(parentConfig, config));
331
266
  }));
332
267
  };
333
-
334
268
  exports.getChildrenJsx = getChildrenJsx;
335
-
336
269
  /**
337
270
  * Get a renderable component, based on a configuration object.
338
271
  * @param {object} config The configuration object for the component.
@@ -343,23 +276,17 @@ exports.getChildrenJsx = getChildrenJsx;
343
276
  var getComponent = function getComponent(config) {
344
277
  var wrap = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
345
278
  var fnOverride = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
346
-
347
279
  if (typeof fnOverride === 'function') {
348
280
  var overrideComponent = fnOverride(config, wrap);
349
-
350
281
  if (overrideComponent) {
351
282
  return overrideComponent;
352
283
  }
353
284
  }
354
-
355
285
  var component = getComponentByType(config);
356
-
357
286
  if (component && wrap && (0, _isEditable.default)(config)) {
358
287
  return (0, _wrapInFormGroup.default)(config, component);
359
288
  }
360
-
361
289
  return component;
362
290
  };
363
-
364
291
  var _default = getComponent;
365
292
  exports.default = _default;
@@ -1,15 +1,13 @@
1
1
  "use strict";
2
2
 
3
3
  var _react = require("@testing-library/react");
4
-
5
4
  var _models = require("../../../models");
6
-
7
5
  var _getComponent = _interopRequireDefault(require("../getComponent"));
8
-
9
6
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
-
11
7
  // Global imports
8
+
12
9
  // Local imports
10
+
13
11
  describe('utils.Component.get', function () {
14
12
  it('should return an appropriately rendered autocomplete component', function () {
15
13
  var ID = 'test-id';
@@ -26,10 +24,8 @@ describe('utils.Component.get', function () {
26
24
  },
27
25
  'data-testid': ID
28
26
  };
29
-
30
27
  var _render = (0, _react.render)((0, _getComponent.default)(COMPONENT)),
31
- container = _render.container;
32
-
28
+ container = _render.container;
33
29
  var formGroup = (0, _react.getByTestId)(container, ID);
34
30
  expect(formGroup.tagName).toEqual('DIV');
35
31
  expect(formGroup.classList).toContain('govuk-form-group');
@@ -46,7 +42,6 @@ describe('utils.Component.get', function () {
46
42
  } else if (node.classList.contains('hods-autocomplete__outer-wrapper')) {
47
43
  autocompleteWrapper = node;
48
44
  var autocompleteInner = node.childNodes[0];
49
-
50
45
  if (autocompleteInner instanceof Element) {
51
46
  autocomplete = autocompleteInner;
52
47
  autocomplete.childNodes.forEach(function (grandchild) {
@@ -57,7 +52,6 @@ describe('utils.Component.get', function () {
57
52
  }
58
53
  });
59
54
  }
60
-
61
55
  ;
62
56
  }
63
57
  }
@@ -70,7 +64,9 @@ describe('utils.Component.get', function () {
70
64
  expect(autocomplete).toBeDefined();
71
65
  expect(autocomplete.tagName).toEqual('DIV');
72
66
  expect(autocompleteInput).toBeDefined();
73
- expect(autocompleteInput.id).toEqual(ID); // TODO: Ensure that the onChange handler is fired.
67
+ expect(autocompleteInput.id).toEqual(ID);
68
+
69
+ // TODO: Ensure that the onChange handler is fired.
74
70
  // Not sure quite what this looks like yet so I'll address it later.
75
71
  });
76
72
  });
@@ -1,35 +1,24 @@
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); }
3
4
  var _react = require("@testing-library/react");
4
-
5
5
  var _models = require("../../../models");
6
-
7
6
  var _getComponent = _interopRequireDefault(require("../getComponent"));
8
-
9
7
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
-
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; }
11
9
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
12
-
13
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."); }
14
-
15
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); }
16
-
17
- 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; }
18
-
19
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
20
-
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; } }
21
14
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
22
-
23
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; }
24
-
25
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; }
26
-
27
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
28
-
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); }
29
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); } }
30
-
31
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); }); }; }
32
-
33
22
  describe('utils.Component.get', function () {
34
23
  var ID = 'test-id';
35
24
  var FIELD_ID = 'field-id';
@@ -52,6 +41,7 @@ describe('utils.Component.get', function () {
52
41
  afterEach(function () {
53
42
  error.mockClear();
54
43
  });
44
+
55
45
  /**
56
46
  * Iteratively test collction of positive test data objects each containing:
57
47
  * config: object containing formula config
@@ -67,7 +57,6 @@ describe('utils.Component.get', function () {
67
57
  * }
68
58
  *
69
59
  */
70
-
71
60
  [{
72
61
  config: {
73
62
  formula: {
@@ -142,36 +131,32 @@ describe('utils.Component.get', function () {
142
131
  var target = _ref.target;
143
132
  COMPONENT.formData[target.name] = target.value;
144
133
  };
145
-
146
- it("should render 'calculation' component with formula to given calculated value: ".concat(test.result), /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
134
+ it("should render 'calculation' component with formula to given calculated value: ".concat(test.result), /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
147
135
  var _render, container, _getAllByTestId, _getAllByTestId2, formGroup, input, label;
148
-
149
- return regeneratorRuntime.wrap(function _callee$(_context) {
150
- while (1) {
151
- switch (_context.prev = _context.next) {
152
- case 0:
153
- _render = (0, _react.render)((0, _getComponent.default)(_objectSpread(_objectSpread({}, COMPONENT), test.config))), container = _render.container;
154
- _getAllByTestId = (0, _react.getAllByTestId)(container, ID), _getAllByTestId2 = _slicedToArray(_getAllByTestId, 2), formGroup = _getAllByTestId2[0], input = _getAllByTestId2[1];
155
- expect(formGroup.tagName).toEqual('DIV');
156
- expect(formGroup.classList).toContain('govuk-form-group');
157
- label = formGroup.childNodes[0].childNodes[0].childNodes[0];
158
- expect(label.tagName).toEqual('LABEL');
159
- expect(label.classList).toContain('govuk-label');
160
- expect(label.textContent).toContain(LABEL);
161
- expect(formGroup.classList).toContain('govuk-form-group');
162
- expect(input.tagName).toEqual('DIV');
163
- expect(input.classList).toContain('hods-readonly');
164
- expect(input.id).toEqual(ID);
165
- expect("".concat(COMPONENT.formData[FIELD_ID])).toEqual(test.result);
166
-
167
- case 13:
168
- case "end":
169
- return _context.stop();
170
- }
136
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
137
+ while (1) switch (_context.prev = _context.next) {
138
+ case 0:
139
+ _render = (0, _react.render)((0, _getComponent.default)(_objectSpread(_objectSpread({}, COMPONENT), test.config))), container = _render.container;
140
+ _getAllByTestId = (0, _react.getAllByTestId)(container, ID), _getAllByTestId2 = _slicedToArray(_getAllByTestId, 2), formGroup = _getAllByTestId2[0], input = _getAllByTestId2[1];
141
+ expect(formGroup.tagName).toEqual('DIV');
142
+ expect(formGroup.classList).toContain('govuk-form-group');
143
+ label = formGroup.childNodes[0].childNodes[0].childNodes[0];
144
+ expect(label.tagName).toEqual('LABEL');
145
+ expect(label.classList).toContain('govuk-label');
146
+ expect(label.textContent).toContain(LABEL);
147
+ expect(formGroup.classList).toContain('govuk-form-group');
148
+ expect(input.tagName).toEqual('DIV');
149
+ expect(input.classList).toContain('hods-readonly');
150
+ expect(input.id).toEqual(ID);
151
+ expect("".concat(COMPONENT.formData[FIELD_ID])).toEqual(test.result);
152
+ case 13:
153
+ case "end":
154
+ return _context.stop();
171
155
  }
172
156
  }, _callee);
173
157
  })));
174
158
  });
159
+
175
160
  /**
176
161
  * Iteratively test collction of negative test data objects each containing:
177
162
  * config: object containing invalid formula config
@@ -187,7 +172,6 @@ describe('utils.Component.get', function () {
187
172
  * }
188
173
  *
189
174
  */
190
-
191
175
  [{
192
176
  error: "Missing 'formula' definition"
193
177
  }, {
@@ -259,13 +243,11 @@ describe('utils.Component.get', function () {
259
243
  }].forEach(function (test) {
260
244
  it("should return an appropriately rendered calculation component with message ".concat(test.result), function () {
261
245
  var _render2 = (0, _react.render)((0, _getComponent.default)(_objectSpread(_objectSpread({}, COMPONENT), test.config))),
262
- container = _render2.container;
263
-
246
+ container = _render2.container;
264
247
  var _getAllByTestId3 = (0, _react.getAllByTestId)(container, ID),
265
- _getAllByTestId4 = _slicedToArray(_getAllByTestId3, 2),
266
- formGroup = _getAllByTestId4[0],
267
- input = _getAllByTestId4[1];
268
-
248
+ _getAllByTestId4 = _slicedToArray(_getAllByTestId3, 2),
249
+ formGroup = _getAllByTestId4[0],
250
+ input = _getAllByTestId4[1];
269
251
  expect(formGroup.tagName).toEqual('DIV');
270
252
  expect(formGroup.classList).toContain('govuk-form-group');
271
253
  var label = formGroup.childNodes[0].childNodes[0].childNodes[0];