@ukhomeoffice/cop-react-form-renderer 6.0.6-peter → 6.7.0-alpha

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 (390) hide show
  1. package/dist/components/CheckYourAnswers/Answer.js +12 -12
  2. package/dist/components/CheckYourAnswers/Answer.test.js +92 -127
  3. package/dist/components/CheckYourAnswers/CheckYourAnswers.js +101 -131
  4. package/dist/components/CheckYourAnswers/CheckYourAnswers.scss +2 -2
  5. package/dist/components/CheckYourAnswers/CheckYourAnswers.test.js +463 -769
  6. package/dist/components/CollectionPage/CollectionPage.js +75 -59
  7. package/dist/components/CollectionPage/CollectionPage.test.js +316 -366
  8. package/dist/components/CollectionSummary/BannerStrip.js +15 -14
  9. package/dist/components/CollectionSummary/BannerStrip.scss +2 -2
  10. package/dist/components/CollectionSummary/BannerStrip.test.js +98 -59
  11. package/dist/components/CollectionSummary/CollectionSummary.js +144 -135
  12. package/dist/components/CollectionSummary/CollectionSummary.scss +1 -1
  13. package/dist/components/CollectionSummary/CollectionSummary.test.js +167 -197
  14. package/dist/components/CollectionSummary/Confirmation.js +14 -12
  15. package/dist/components/CollectionSummary/Confirmation.scss +1 -1
  16. package/dist/components/CollectionSummary/Confirmation.test.js +68 -63
  17. package/dist/components/CollectionSummary/RenderListView.js +54 -56
  18. package/dist/components/CollectionSummary/RenderListView.scss +10 -1
  19. package/dist/components/CollectionSummary/RenderListView.test.js +89 -78
  20. package/dist/components/CollectionSummary/SummaryCard.js +135 -145
  21. package/dist/components/CollectionSummary/SummaryCard.scss +2 -1
  22. package/dist/components/CollectionSummary/SummaryCard.test.js +943 -932
  23. package/dist/components/CollectionSummary/SummaryCardDetails.js +120 -62
  24. package/dist/components/CollectionSummary/SummaryCardDetails.scss +43 -6
  25. package/dist/components/CollectionSummary/SummaryCardDetails.test.js +261 -120
  26. package/dist/components/CollectionSummary/SummaryCardValidationContext.js +38 -33
  27. package/dist/components/CollectionSummary/SummaryCardValidationContext.test.js +62 -73
  28. package/dist/components/FormComponent/Collection.js +81 -108
  29. package/dist/components/FormComponent/Collection.test.js +909 -943
  30. package/dist/components/FormComponent/Container.js +40 -38
  31. package/dist/components/FormComponent/Container.test.js +314 -345
  32. package/dist/components/FormComponent/FormComponent.js +80 -71
  33. package/dist/components/FormComponent/FormComponent.test.js +353 -414
  34. package/dist/components/FormComponent/helpers/addLabel.js +4 -7
  35. package/dist/components/FormComponent/helpers/getComponentDisabled.js +1 -1
  36. package/dist/components/FormComponent/helpers/getComponentDisabled.test.js +7 -7
  37. package/dist/components/FormComponent/helpers/getComponentError.js +3 -5
  38. package/dist/components/FormComponent/helpers/getComponentError.test.js +14 -14
  39. package/dist/components/FormComponent/helpers/getComponentFieldSet.js +3 -4
  40. package/dist/components/FormComponent/helpers/getComponentFieldSet.test.js +6 -6
  41. package/dist/components/FormComponent/helpers/index.js +4 -4
  42. package/dist/components/FormPage/FormPage.js +65 -80
  43. package/dist/components/FormPage/FormPage.scss +1 -1
  44. package/dist/components/FormPage/FormPage.test.js +127 -163
  45. package/dist/components/FormRenderer/FormRenderer.js +150 -183
  46. package/dist/components/FormRenderer/FormRenderer.scss +1 -1
  47. package/dist/components/FormRenderer/FormRenderer.test.js +730 -1115
  48. package/dist/components/FormRenderer/handlers/cyaAction.js +2 -2
  49. package/dist/components/FormRenderer/handlers/getPageId.js +1 -3
  50. package/dist/components/FormRenderer/handlers/getPageId.test.js +14 -14
  51. package/dist/components/FormRenderer/handlers/handlers.test.js +32 -32
  52. package/dist/components/FormRenderer/handlers/index.js +1 -1
  53. package/dist/components/FormRenderer/handlers/navigate.js +3 -3
  54. package/dist/components/FormRenderer/handlers/submissionError.js +1 -1
  55. package/dist/components/FormRenderer/helpers/canActionProceed.js +1 -1
  56. package/dist/components/FormRenderer/helpers/canActionProceed.test.js +15 -15
  57. package/dist/components/FormRenderer/helpers/canCYASubmit.js +1 -3
  58. package/dist/components/FormRenderer/helpers/canCYASubmit.test.js +16 -20
  59. package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.js +17 -22
  60. package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.test.js +16 -16
  61. package/dist/components/FormRenderer/helpers/getCYA.js +3 -5
  62. package/dist/components/FormRenderer/helpers/getCYA.test.js +11 -11
  63. package/dist/components/FormRenderer/helpers/getFormState.js +5 -7
  64. package/dist/components/FormRenderer/helpers/getFormState.test.js +10 -10
  65. package/dist/components/FormRenderer/helpers/getNextPageId.js +13 -24
  66. package/dist/components/FormRenderer/helpers/getNextPageId.test.js +67 -67
  67. package/dist/components/FormRenderer/helpers/getPage.js +2 -4
  68. package/dist/components/FormRenderer/helpers/getPage.test.js +11 -11
  69. package/dist/components/FormRenderer/helpers/getRelevantPages.js +7 -9
  70. package/dist/components/FormRenderer/helpers/getRelevantPages.test.js +14 -14
  71. package/dist/components/FormRenderer/helpers/getSubmissionStatus.js +5 -5
  72. package/dist/components/FormRenderer/helpers/getSubmissionStatus.test.js +103 -97
  73. package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.js +62 -60
  74. package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.test.js +71 -78
  75. package/dist/components/FormRenderer/helpers/index.js +2 -4
  76. package/dist/components/FormRenderer/onCYAAction.js +59 -51
  77. package/dist/components/FormRenderer/onCYAAction.test.js +164 -152
  78. package/dist/components/FormRenderer/onPageAction.js +50 -48
  79. package/dist/components/FormRenderer/onPageAction.test.js +241 -217
  80. package/dist/components/FormRenderer/onTaskAction.js +9 -13
  81. package/dist/components/FormRenderer/onTaskAction.test.js +93 -88
  82. package/dist/components/PageActions/ActionButton.js +12 -15
  83. package/dist/components/PageActions/ActionButton.test.js +56 -78
  84. package/dist/components/PageActions/PageActions.js +10 -10
  85. package/dist/components/PageActions/PageActions.test.js +86 -115
  86. package/dist/components/SummaryList/GroupAction.js +9 -17
  87. package/dist/components/SummaryList/GroupAction.test.js +37 -33
  88. package/dist/components/SummaryList/RowAction.js +11 -16
  89. package/dist/components/SummaryList/RowAction.test.js +37 -33
  90. package/dist/components/SummaryList/SummaryList.js +21 -26
  91. package/dist/components/SummaryList/SummaryList.scss +2 -2
  92. package/dist/components/SummaryList/SummaryList.test.js +143 -166
  93. package/dist/components/SummaryList/SummaryListHeadingRow.js +6 -4
  94. package/dist/components/SummaryList/SummaryListRow.js +6 -4
  95. package/dist/components/SummaryList/SummaryListTitleRow.js +5 -3
  96. package/dist/components/SummaryList/helpers/getGroupActionAttributes.js +3 -5
  97. package/dist/components/SummaryList/helpers/getGroupActionAttributes.test.js +22 -22
  98. package/dist/components/SummaryList/helpers/getRowActionAttributes.js +3 -5
  99. package/dist/components/SummaryList/helpers/getRowActionAttributes.test.js +22 -22
  100. package/dist/components/SummaryList/helpers/index.js +1 -1
  101. package/dist/components/TaskList/Task.js +19 -29
  102. package/dist/components/TaskList/Task.test.js +83 -76
  103. package/dist/components/TaskList/TaskList.js +45 -71
  104. package/dist/components/TaskList/TaskList.scss +1 -1
  105. package/dist/components/TaskList/TaskList.test.js +113 -111
  106. package/dist/components/TaskList/TaskState.js +7 -5
  107. package/dist/components/TaskList/TaskState.test.js +52 -45
  108. package/dist/components/index.js +7 -7
  109. package/dist/context/HooksContext/HooksContext.js +57 -80
  110. package/dist/context/HooksContext/HooksContext.test.js +26 -35
  111. package/dist/context/HooksContext/index.js +3 -4
  112. package/dist/context/ValidationContext/ValidationContext.js +65 -72
  113. package/dist/context/ValidationContext/ValidationContext.test.js +58 -61
  114. package/dist/context/ValidationContext/index.js +3 -4
  115. package/dist/context/index.js +2 -2
  116. package/dist/hooks/index.js +9 -10
  117. package/dist/hooks/useAxios.js +14 -40
  118. package/dist/hooks/useGetRequest.js +61 -97
  119. package/dist/hooks/useHooks.js +1 -3
  120. package/dist/hooks/useRefData.js +27 -40
  121. package/dist/hooks/useValidation.js +1 -3
  122. package/dist/index.js +13 -14
  123. package/dist/models/CollectionLabels.js +1 -1
  124. package/dist/models/ComponentTypes.js +25 -25
  125. package/dist/models/EventTypes.js +4 -4
  126. package/dist/models/FormPages.js +4 -4
  127. package/dist/models/FormTypes.js +8 -8
  128. package/dist/models/HubFormats.js +3 -3
  129. package/dist/models/PageAction.js +44 -38
  130. package/dist/models/TaskStates.js +29 -28
  131. package/dist/models/index.js +9 -9
  132. package/dist/setupTests.js +30 -31
  133. package/dist/utils/CheckYourAnswers/getCYAAction.js +5 -5
  134. package/dist/utils/CheckYourAnswers/getCYAAction.test.js +52 -54
  135. package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.js +15 -25
  136. package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.test.js +33 -35
  137. package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.js +17 -31
  138. package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.test.js +42 -44
  139. package/dist/utils/CheckYourAnswers/getCYARow.js +6 -6
  140. package/dist/utils/CheckYourAnswers/getCYARow.test.js +86 -86
  141. package/dist/utils/CheckYourAnswers/getCYARowForGroup.js +18 -24
  142. package/dist/utils/CheckYourAnswers/getCYARowForGroup.test.js +15 -16
  143. package/dist/utils/CheckYourAnswers/getCYARowsForCollection.js +33 -36
  144. package/dist/utils/CheckYourAnswers/getCYARowsForCollection.test.js +58 -61
  145. package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.js +83 -89
  146. package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.test.js +164 -138
  147. package/dist/utils/CheckYourAnswers/getCYARowsForContainer.js +25 -20
  148. package/dist/utils/CheckYourAnswers/getCYARowsForContainer.test.js +103 -97
  149. package/dist/utils/CheckYourAnswers/getCYARowsForPage.js +13 -18
  150. package/dist/utils/CheckYourAnswers/getCYARowsForPage.test.js +70 -76
  151. package/dist/utils/CheckYourAnswers/getComponentRowForCYA.js +11 -11
  152. package/dist/utils/CheckYourAnswers/getComponentRowForCYA.test.js +7 -7
  153. package/dist/utils/CheckYourAnswers/index.js +1 -1
  154. package/dist/utils/CheckYourAnswers/showComponentCYA.js +4 -5
  155. package/dist/utils/CheckYourAnswers/showComponentCYA.test.js +29 -24
  156. package/dist/utils/CollectionPage/addCollectionPageEntry.js +3 -4
  157. package/dist/utils/CollectionPage/addCollectionPageEntry.test.js +7 -27
  158. package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.js +2 -2
  159. package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.test.js +17 -18
  160. package/dist/utils/CollectionPage/duplicateCollectionPageEntry.js +29 -19
  161. package/dist/utils/CollectionPage/duplicateCollectionPageEntry.test.js +66 -22
  162. package/dist/utils/CollectionPage/getCollectionPageActiveId.js +2 -2
  163. package/dist/utils/CollectionPage/getCollectionPageActiveId.test.js +10 -10
  164. package/dist/utils/CollectionPage/getCollectionPageActiveIndex.js +7 -11
  165. package/dist/utils/CollectionPage/getCollectionPageActiveIndex.test.js +22 -22
  166. package/dist/utils/CollectionPage/getCollectionPageData.js +8 -12
  167. package/dist/utils/CollectionPage/getCollectionPageData.test.js +19 -19
  168. package/dist/utils/CollectionPage/getErrorsForCollection.js +55 -0
  169. package/dist/utils/CollectionPage/getErrorsForCollection.test.js +153 -0
  170. package/dist/utils/CollectionPage/getQuickEditPage.js +37 -23
  171. package/dist/utils/CollectionPage/getQuickEditPage.test.js +26 -45
  172. package/dist/utils/CollectionPage/index.js +3 -1
  173. package/dist/utils/CollectionPage/mergeCollectionPages.js +31 -35
  174. package/dist/utils/CollectionPage/mergeCollectionPages.test.js +20 -20
  175. package/dist/utils/CollectionPage/removeCollectionPageEntry.js +4 -6
  176. package/dist/utils/CollectionPage/removeCollectionPageEntry.test.js +10 -10
  177. package/dist/utils/CollectionPage/setCollectionPageData.js +16 -17
  178. package/dist/utils/CollectionPage/setCollectionPageData.test.js +38 -20
  179. package/dist/utils/Component/addShowWhen.js +4 -8
  180. package/dist/utils/Component/addShowWhen.test.js +37 -37
  181. package/dist/utils/Component/applyToComponentTree.js +18 -18
  182. package/dist/utils/Component/applyToComponentTree.test.js +27 -32
  183. package/dist/utils/Component/cleanAttributes.js +10 -13
  184. package/dist/utils/Component/cleanAttributes.test.js +17 -18
  185. package/dist/utils/Component/elevateNestedComponents.js +5 -5
  186. package/dist/utils/Component/elevateNestedComponents.test.js +30 -30
  187. package/dist/utils/Component/getComponent.js +88 -94
  188. package/dist/utils/Component/getComponentTests/getComponent.autocomplete.test.js +18 -17
  189. package/dist/utils/Component/getComponentTests/getComponent.calculation.test.js +46 -59
  190. package/dist/utils/Component/getComponentTests/getComponent.checkboxes.test.js +39 -48
  191. package/dist/utils/Component/getComponentTests/getComponent.date.test.js +23 -33
  192. package/dist/utils/Component/getComponentTests/getComponent.details.test.js +20 -18
  193. package/dist/utils/Component/getComponentTests/getComponent.email.test.js +17 -22
  194. package/dist/utils/Component/getComponentTests/getComponent.file.test.js +20 -25
  195. package/dist/utils/Component/getComponentTests/getComponent.heading.test.js +10 -9
  196. package/dist/utils/Component/getComponentTests/getComponent.html.test.js +17 -15
  197. package/dist/utils/Component/getComponentTests/getComponent.insetText.test.js +9 -8
  198. package/dist/utils/Component/getComponentTests/getComponent.list.test.js +17 -15
  199. package/dist/utils/Component/getComponentTests/getComponent.multifile.test.js +22 -26
  200. package/dist/utils/Component/getComponentTests/getComponent.nested.test.js +155 -175
  201. package/dist/utils/Component/getComponentTests/getComponent.paragraph.test.js +17 -15
  202. package/dist/utils/Component/getComponentTests/getComponent.phoneNumber.test.js +17 -22
  203. package/dist/utils/Component/getComponentTests/getComponent.radios.test.js +57 -72
  204. package/dist/utils/Component/getComponentTests/getComponent.select.test.js +17 -22
  205. package/dist/utils/Component/getComponentTests/getComponent.text.test.js +17 -22
  206. package/dist/utils/Component/getComponentTests/getComponent.textArea.test.js +31 -38
  207. package/dist/utils/Component/getComponentTests/getComponent.time.test.js +20 -29
  208. package/dist/utils/Component/getComponentTests/getComponent.unknown.test.js +2 -2
  209. package/dist/utils/Component/getComponentTests/getComponent.warningText.test.js +9 -8
  210. package/dist/utils/Component/getDefaultValue.js +6 -8
  211. package/dist/utils/Component/getDefaultValue.test.js +12 -12
  212. package/dist/utils/Component/getDefaultValueFromConfig.js +22 -21
  213. package/dist/utils/Component/getDefaultValueFromConfig.test.js +31 -31
  214. package/dist/utils/Component/index.js +1 -1
  215. package/dist/utils/Component/isEditable.js +2 -4
  216. package/dist/utils/Component/isEditable.test.js +14 -15
  217. package/dist/utils/Component/optionIsSelected.js +1 -1
  218. package/dist/utils/Component/optionIsSelected.test.js +9 -9
  219. package/dist/utils/Component/setupContainerComponentsPath.js +27 -29
  220. package/dist/utils/Component/setupContainerComponentsPath.test.js +11 -11
  221. package/dist/utils/Component/showComponent.js +1 -1
  222. package/dist/utils/Component/showComponent.test.js +28 -28
  223. package/dist/utils/Component/wrapInFormGroup.js +2 -2
  224. package/dist/utils/Condition/index.js +1 -1
  225. package/dist/utils/Condition/meetsAllConditions.js +8 -8
  226. package/dist/utils/Condition/meetsAllConditions.test.js +20 -20
  227. package/dist/utils/Condition/meetsCondition.js +28 -19
  228. package/dist/utils/Condition/meetsCondition.test.js +476 -376
  229. package/dist/utils/Condition/meetsOneCondition.js +5 -5
  230. package/dist/utils/Condition/meetsOneCondition.test.js +16 -16
  231. package/dist/utils/Condition/setupConditions.js +13 -18
  232. package/dist/utils/Condition/setupConditions.test.js +7 -7
  233. package/dist/utils/Container/getEditableComponents.js +3 -5
  234. package/dist/utils/Container/getEditableComponents.test.js +43 -45
  235. package/dist/utils/Container/index.js +1 -1
  236. package/dist/utils/Container/setupNesting.js +16 -20
  237. package/dist/utils/Container/setupNesting.test.js +27 -30
  238. package/dist/utils/Container/showContainer.js +3 -7
  239. package/dist/utils/Container/showContainer.test.js +30 -30
  240. package/dist/utils/Data/applyFormula.js +38 -48
  241. package/dist/utils/Data/applyFormula.test.js +20 -20
  242. package/dist/utils/Data/getAutocompleteSource.js +18 -26
  243. package/dist/utils/Data/getAutocompleteSource.test.js +80 -86
  244. package/dist/utils/Data/getDataPath.js +18 -28
  245. package/dist/utils/Data/getDataPath.test.js +12 -12
  246. package/dist/utils/Data/getOptions.js +29 -25
  247. package/dist/utils/Data/getOptions.test.js +93 -20
  248. package/dist/utils/Data/getSourceData.js +6 -19
  249. package/dist/utils/Data/getSourceData.test.js +84 -80
  250. package/dist/utils/Data/index.js +1 -1
  251. package/dist/utils/Data/nestInRefdataOptions.js +42 -0
  252. package/dist/utils/Data/nestInRefdataOptions.test.js +236 -0
  253. package/dist/utils/Data/refDataToOptions.js +10 -13
  254. package/dist/utils/Data/refDataToOptions.test.js +19 -19
  255. package/dist/utils/Data/setDataItem.js +7 -8
  256. package/dist/utils/Data/setDataItem.test.js +37 -37
  257. package/dist/utils/Data/setupFormData.js +13 -21
  258. package/dist/utils/Data/setupFormData.test.js +51 -50
  259. package/dist/utils/Data/setupRefDataUrlForComponent.js +20 -26
  260. package/dist/utils/Data/setupRefDataUrlForComponent.test.js +24 -24
  261. package/dist/utils/FormPage/applyConditionalProperties.js +5 -9
  262. package/dist/utils/FormPage/applyConditionalProperties.test.js +15 -18
  263. package/dist/utils/FormPage/getConditionalText.js +3 -3
  264. package/dist/utils/FormPage/getConditionalText.test.js +29 -29
  265. package/dist/utils/FormPage/getFormPage.js +15 -16
  266. package/dist/utils/FormPage/getFormPage.test.js +47 -46
  267. package/dist/utils/FormPage/getFormPages.js +7 -12
  268. package/dist/utils/FormPage/getFormPages.test.js +20 -23
  269. package/dist/utils/FormPage/getPageActions.js +9 -15
  270. package/dist/utils/FormPage/getPageActions.test.js +32 -32
  271. package/dist/utils/FormPage/getParagraphFromText.js +5 -7
  272. package/dist/utils/FormPage/getParagraphFromText.test.js +6 -6
  273. package/dist/utils/FormPage/index.js +2 -4
  274. package/dist/utils/FormPage/showFormPage.js +3 -7
  275. package/dist/utils/FormPage/showFormPage.test.js +32 -32
  276. package/dist/utils/FormPage/showFormPageCYA.js +1 -1
  277. package/dist/utils/FormPage/showFormPageCYA.test.js +8 -8
  278. package/dist/utils/FormPage/useComponent.js +21 -28
  279. package/dist/utils/FormPage/useComponent.test.js +77 -79
  280. package/dist/utils/Format/formatData.js +1 -1
  281. package/dist/utils/Format/formatData.test.js +18 -18
  282. package/dist/utils/Format/formatDataForComponent.js +5 -6
  283. package/dist/utils/Format/formatDataForComponent.test.js +50 -78
  284. package/dist/utils/Format/formatDataForForm.js +6 -8
  285. package/dist/utils/Format/formatDataForForm.test.js +13 -16
  286. package/dist/utils/Format/formatDataForPage.js +4 -5
  287. package/dist/utils/Format/formatDataForPage.test.js +20 -25
  288. package/dist/utils/Format/index.js +1 -1
  289. package/dist/utils/Hub/getFormHub.js +1 -1
  290. package/dist/utils/Hub/getFormHub.test.js +28 -31
  291. package/dist/utils/Hub/index.js +1 -1
  292. package/dist/utils/Meta/constants.js +2 -2
  293. package/dist/utils/Meta/documents/getDocuments.js +1 -1
  294. package/dist/utils/Meta/documents/getDocuments.test.js +24 -16
  295. package/dist/utils/Meta/documents/index.js +1 -1
  296. package/dist/utils/Meta/documents/setDocumentsForField.js +14 -16
  297. package/dist/utils/Meta/documents/setDocumentsForField.test.js +68 -34
  298. package/dist/utils/Meta/index.js +1 -1
  299. package/dist/utils/Operate/checkValueIsTruthy.js +2 -2
  300. package/dist/utils/Operate/checkValueIsTruthy.test.js +16 -16
  301. package/dist/utils/Operate/getFirstOf.js +5 -5
  302. package/dist/utils/Operate/getFirstOf.test.js +31 -31
  303. package/dist/utils/Operate/getIndexOfMatchingValueIn.js +10 -10
  304. package/dist/utils/Operate/getIndexOfMatchingValueIn.test.js +46 -52
  305. package/dist/utils/Operate/index.js +1 -1
  306. package/dist/utils/Operate/persistValueInFormData.js +3 -3
  307. package/dist/utils/Operate/persistValueInFormData.test.js +22 -20
  308. package/dist/utils/Operate/runPageOperations.js +7 -7
  309. package/dist/utils/Operate/runPageOperations.test.js +35 -36
  310. package/dist/utils/Operate/setValueInFormData.js +2 -2
  311. package/dist/utils/Operate/setValueInFormData.test.js +16 -16
  312. package/dist/utils/Operate/shouldRun.js +6 -6
  313. package/dist/utils/Operate/shouldRun.test.js +21 -27
  314. package/dist/utils/Validate/additional/conditionallyRequired.js +4 -4
  315. package/dist/utils/Validate/additional/conditionallyRequired.test.js +18 -18
  316. package/dist/utils/Validate/additional/index.js +6 -6
  317. package/dist/utils/Validate/additional/index.test.js +12 -12
  318. package/dist/utils/Validate/additional/mustBeAfter.js +2 -2
  319. package/dist/utils/Validate/additional/mustBeAfter.test.js +40 -40
  320. package/dist/utils/Validate/additional/mustBeBefore.js +2 -2
  321. package/dist/utils/Validate/additional/mustBeBefore.test.js +28 -28
  322. package/dist/utils/Validate/additional/mustBeEarlierDateTime.js +7 -11
  323. package/dist/utils/Validate/additional/mustBeEarlierDateTime.test.js +37 -41
  324. package/dist/utils/Validate/additional/mustBeGreaterThan.js +2 -2
  325. package/dist/utils/Validate/additional/mustBeGreaterThan.test.js +18 -18
  326. package/dist/utils/Validate/additional/mustBeInTheFuture.js +2 -2
  327. package/dist/utils/Validate/additional/mustBeInTheFuture.test.js +12 -12
  328. package/dist/utils/Validate/additional/mustBeInThePast.js +3 -3
  329. package/dist/utils/Validate/additional/mustBeInThePast.test.js +12 -12
  330. package/dist/utils/Validate/additional/mustBeLessThan.js +2 -2
  331. package/dist/utils/Validate/additional/mustBeLessThan.test.js +17 -17
  332. package/dist/utils/Validate/additional/mustBeLongerThan.js +1 -1
  333. package/dist/utils/Validate/additional/mustBeLongerThan.test.js +16 -16
  334. package/dist/utils/Validate/additional/mustBeNumbersOnly.js +2 -2
  335. package/dist/utils/Validate/additional/mustBeNumbersOnly.test.js +20 -20
  336. package/dist/utils/Validate/additional/mustBeShorterThan.js +1 -1
  337. package/dist/utils/Validate/additional/mustBeShorterThan.test.js +16 -16
  338. package/dist/utils/Validate/additional/mustBeUniqueInCollection.js +8 -4
  339. package/dist/utils/Validate/additional/mustBeUniqueInCollection.test.js +64 -32
  340. package/dist/utils/Validate/additional/mustEnterAtLeastOne.js +2 -2
  341. package/dist/utils/Validate/additional/mustEnterAtLeastOne.test.js +14 -16
  342. package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.js +1 -1
  343. package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.test.js +12 -12
  344. package/dist/utils/Validate/additional/mustNotContainSql.js +3 -4
  345. package/dist/utils/Validate/additional/mustNotContainSql.test.js +14 -14
  346. package/dist/utils/Validate/additional/mustSelectOnlyOne.js +2 -2
  347. package/dist/utils/Validate/additional/mustSelectOnlyOne.test.js +28 -26
  348. package/dist/utils/Validate/additional/utils.js +9 -22
  349. package/dist/utils/Validate/index.js +1 -1
  350. package/dist/utils/Validate/validateCollection.js +19 -25
  351. package/dist/utils/Validate/validateCollection.test.js +74 -66
  352. package/dist/utils/Validate/validateComponent.js +17 -15
  353. package/dist/utils/Validate/validateComponent.test.js +167 -146
  354. package/dist/utils/Validate/validateContainer.js +16 -19
  355. package/dist/utils/Validate/validateContainer.test.js +84 -45
  356. package/dist/utils/Validate/validateDate.js +15 -21
  357. package/dist/utils/Validate/validateDate.test.js +31 -32
  358. package/dist/utils/Validate/validateEmail.js +6 -8
  359. package/dist/utils/Validate/validateEmail.test.js +25 -25
  360. package/dist/utils/Validate/validateMultifile.js +5 -7
  361. package/dist/utils/Validate/validateMultifile.test.js +17 -18
  362. package/dist/utils/Validate/validatePage.js +24 -18
  363. package/dist/utils/Validate/validatePage.test.js +263 -182
  364. package/dist/utils/Validate/validateRegex.js +3 -5
  365. package/dist/utils/Validate/validateRegex.test.js +14 -14
  366. package/dist/utils/Validate/validateRequired.js +4 -6
  367. package/dist/utils/Validate/validateRequired.test.js +18 -18
  368. package/dist/utils/Validate/validateTextArea.js +4 -6
  369. package/dist/utils/Validate/validateTextArea.test.js +20 -20
  370. package/dist/utils/Validate/validateTime.js +11 -18
  371. package/dist/utils/Validate/validateTime.test.js +16 -16
  372. package/dist/utils/index.js +7 -9
  373. package/package.json +5 -5
  374. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/component-used-in-multiple-pages-data.json +0 -4
  375. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/component-used-in-multiple-pages-form.json +0 -61
  376. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-collection-data-removed.json +0 -4
  377. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-collections.json +0 -8
  378. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-components-removed.json +0 -3
  379. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-components.json +0 -5
  380. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-entire-collection-removed.json +0 -3
  381. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-nested-component-removed.json +0 -10
  382. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-nested-components.json +0 -11
  383. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/form-for-nested-components.json +0 -96
  384. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/form-with-collections-delete-entire.json +0 -47
  385. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/form-with-collections.json +0 -46
  386. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/form-with-components.json +0 -48
  387. package/dist/components/FormRenderer/helpers/clearOutUncompletedRoutes.js +0 -175
  388. package/dist/components/FormRenderer/helpers/clearOutUncompletedRoutes.test.js +0 -113
  389. package/dist/components/FormRenderer/helpers/deleteNodeByPath.js +0 -20
  390. package/dist/components/FormRenderer/helpers/deleteNodeByPath.test.js +0 -56
@@ -4,19 +4,16 @@ var _react = _interopRequireDefault(require("react"));
4
4
  var _copReactComponents = require("@ukhomeoffice/cop-react-components");
5
5
  var _setupTests = require("../../setupTests");
6
6
  var _SummaryCardDetails = _interopRequireWildcard(require("./SummaryCardDetails"));
7
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
8
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
7
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
8
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
9
9
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
11
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
12
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
14
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
15
- function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } // Global imports.
10
+ // Global imports.
11
+
16
12
  // Local imports.
17
- describe('components.CollectionSummary.SummaryCardDetails', function () {
18
- var classes = _copReactComponents.Utils.classBuilder(_SummaryCardDetails.DEFAULT_CLASS, [], '');
19
- var ENTRY = {
13
+
14
+ describe('components.CollectionSummary.SummaryCardDetails', () => {
15
+ const classes = _copReactComponents.Utils.classBuilder(_SummaryCardDetails.DEFAULT_CLASS, [], '');
16
+ const ENTRY = {
20
17
  id: '001',
21
18
  bannerText: 'A banner',
22
19
  titleText: 'A title',
@@ -33,17 +30,21 @@ describe('components.CollectionSummary.SummaryCardDetails', function () {
33
30
  childField2: 'bravo'
34
31
  }]
35
32
  };
36
- it('should render sections and fields based on summaryLayout config', function () {
37
- var CHILD_PAGES = [{
33
+ it('should render sections and fields based on summaryLayout config', () => {
34
+ const CHILD_PAGES = [{
38
35
  summaryLayout: {
39
36
  sections: [{
40
37
  title: 'Section 1',
41
- columns: 2,
42
- fields: ['fieldA', 'fieldB']
38
+ columns: [{
39
+ fields: ['fieldA']
40
+ }, {
41
+ fields: ['fieldB']
42
+ }]
43
43
  }, {
44
44
  title: 'Section 2',
45
- columns: 1,
46
- fields: ['fieldC']
45
+ columns: [{
46
+ fields: ['fieldC']
47
+ }]
47
48
  }]
48
49
  },
49
50
  components: [{
@@ -54,41 +55,112 @@ describe('components.CollectionSummary.SummaryCardDetails', function () {
54
55
  fieldId: 'fieldC'
55
56
  }]
56
57
  }];
57
- var MASTER_PAGE = {
58
+ const MASTER_PAGE = {
58
59
  childPages: CHILD_PAGES
59
60
  };
60
- var _renderWithValidation = (0, _setupTests.renderWithValidation)( /*#__PURE__*/_react.default.createElement(_SummaryCardDetails.default, {
61
- masterPage: MASTER_PAGE,
62
- childMasterPages: [],
63
- formData: {},
64
- entryData: ENTRY
65
- })),
66
- container = _renderWithValidation.container;
61
+ const {
62
+ container
63
+ } = (0, _setupTests.renderWithValidation)( /*#__PURE__*/_react.default.createElement(_SummaryCardDetails.default, {
64
+ masterPage: MASTER_PAGE,
65
+ childMasterPages: [],
66
+ formData: {},
67
+ entryData: ENTRY
68
+ }));
67
69
 
68
70
  // Function to find an element by its text content
69
71
  function getByTextContent(parent, text) {
70
- return Array.from(parent.getElementsByClassName(classes('section-title'))).find(function (el) {
71
- return el.textContent === text;
72
- });
72
+ return Array.from(parent.getElementsByClassName(classes('section-title'))).find(el => el.textContent === text);
73
73
  }
74
74
 
75
75
  // Check for section titles
76
- var section1Title = getByTextContent(container, 'Section 1');
77
- var section2Title = getByTextContent(container, 'Section 2');
76
+ const section1Title = getByTextContent(container, 'Section 1');
77
+ const section2Title = getByTextContent(container, 'Section 2');
78
78
  expect(section1Title).not.toBeUndefined();
79
79
  expect(section2Title).not.toBeUndefined();
80
- var section1Content = section1Title.parentNode.querySelector(".".concat(classes('section-content')));
80
+ const section1Content = section1Title.parentNode.querySelector(".".concat(classes('section-content')));
81
81
  expect(section1Content.querySelectorAll(".".concat(classes('field'))).length).toEqual(2);
82
- var section2Content = section2Title.parentNode.querySelector(".".concat(classes('section-content')));
82
+ const section2Content = section2Title.parentNode.querySelector(".".concat(classes('section-content')));
83
83
  expect(section2Content.querySelectorAll(".".concat(classes('field'))).length).toEqual(1);
84
84
  });
85
- it('should render sections if they have show_when checks and pass them', function () {
86
- var CHILD_PAGES = [{
85
+ it('should render sections containing containers based on summaryLayout config', () => {
86
+ const CHILD_PAGES = [{
87
87
  summaryLayout: {
88
88
  sections: [{
89
89
  title: 'Section 1',
90
- columns: 2,
91
- fields: ['fieldA', 'fieldB'],
90
+ columns: [{
91
+ fields: ['containerComponent']
92
+ }]
93
+ }]
94
+ },
95
+ components: [{
96
+ fieldId: 'containerComponent',
97
+ type: 'container',
98
+ label: 'container',
99
+ components: [{
100
+ fieldId: 'subOne',
101
+ label: 'subOneLabel'
102
+ }, {
103
+ fieldId: 'subTwo',
104
+ label: 'subTwoLabel'
105
+ }, {
106
+ fieldId: 'subThree',
107
+ label: 'subThreeLabel'
108
+ }]
109
+ }]
110
+ }];
111
+ const CONTAINER_ENTRY = {
112
+ id: '001',
113
+ bannerText: 'A banner',
114
+ titleText: 'A title',
115
+ detailsText: 'Some details',
116
+ index: 0,
117
+ summaryText: 'Full details',
118
+ containerComponent: {
119
+ subOne: 'alpha',
120
+ subTwo: 'bravo',
121
+ subThree: 'charlie'
122
+ }
123
+ };
124
+ const MASTER_PAGE = {
125
+ childPages: CHILD_PAGES
126
+ };
127
+ const {
128
+ container
129
+ } = (0, _setupTests.renderWithValidation)( /*#__PURE__*/_react.default.createElement(_SummaryCardDetails.default, {
130
+ masterPage: MASTER_PAGE,
131
+ childMasterPages: [],
132
+ formData: {},
133
+ entryData: CONTAINER_ENTRY
134
+ }));
135
+
136
+ // Function to find an element by its text content
137
+ function getByTextContent(parent, text) {
138
+ return Array.from(parent.getElementsByClassName(classes('section-title'))).find(el => el.textContent === text);
139
+ }
140
+
141
+ // Check for section title
142
+ const section1Title = getByTextContent(container, 'Section 1');
143
+ expect(section1Title).not.toBeUndefined();
144
+
145
+ // All three subcomponents from the container should have labels and values displayed
146
+ const section1Content = section1Title.parentNode.querySelector(".".concat(classes('section-content')));
147
+ expect(section1Content.textContent).toContain('subOneLabel');
148
+ expect(section1Content.textContent).toContain('alpha');
149
+ expect(section1Content.textContent).toContain('subTwoLabel');
150
+ expect(section1Content.textContent).toContain('bravo');
151
+ expect(section1Content.textContent).toContain('subThreeLabel');
152
+ expect(section1Content.textContent).toContain('charlie');
153
+ });
154
+ it('should render sections if they have show_when checks and pass them', () => {
155
+ const CHILD_PAGES = [{
156
+ summaryLayout: {
157
+ sections: [{
158
+ title: 'Section 1',
159
+ columns: [{
160
+ fields: ['fieldA']
161
+ }, {
162
+ fields: ['fieldB']
163
+ }],
92
164
  show_when: [{
93
165
  field: 'showSection1',
94
166
  op: "=",
@@ -96,8 +168,9 @@ describe('components.CollectionSummary.SummaryCardDetails', function () {
96
168
  }]
97
169
  }, {
98
170
  title: 'Section 2',
99
- columns: 1,
100
- fields: ['fieldC']
171
+ columns: [{
172
+ fields: ['fieldC']
173
+ }]
101
174
  }]
102
175
  },
103
176
  components: [{
@@ -108,44 +181,47 @@ describe('components.CollectionSummary.SummaryCardDetails', function () {
108
181
  fieldId: 'fieldC'
109
182
  }]
110
183
  }];
111
- var MASTER_PAGE = {
184
+ const MASTER_PAGE = {
112
185
  childPages: CHILD_PAGES
113
186
  };
114
- var CUSTOM_ENTRY = _objectSpread(_objectSpread({}, ENTRY), {}, {
187
+ const CUSTOM_ENTRY = {
188
+ ...ENTRY,
115
189
  showSection1: true
116
- });
117
- var _renderWithValidation2 = (0, _setupTests.renderWithValidation)( /*#__PURE__*/_react.default.createElement(_SummaryCardDetails.default, {
118
- masterPage: MASTER_PAGE,
119
- childMasterPages: [],
120
- formData: {},
121
- entryData: CUSTOM_ENTRY
122
- })),
123
- container = _renderWithValidation2.container;
190
+ };
191
+ const {
192
+ container
193
+ } = (0, _setupTests.renderWithValidation)( /*#__PURE__*/_react.default.createElement(_SummaryCardDetails.default, {
194
+ masterPage: MASTER_PAGE,
195
+ childMasterPages: [],
196
+ formData: {},
197
+ entryData: CUSTOM_ENTRY
198
+ }));
124
199
 
125
200
  // Function to find an element by its text content
126
201
  function getByTextContent(parent, text) {
127
- return Array.from(parent.getElementsByClassName(classes('section-title'))).find(function (el) {
128
- return el.textContent === text;
129
- });
202
+ return Array.from(parent.getElementsByClassName(classes('section-title'))).find(el => el.textContent === text);
130
203
  }
131
204
 
132
205
  // Check for section titles
133
- var section1Title = getByTextContent(container, 'Section 1');
134
- var section2Title = getByTextContent(container, 'Section 2');
206
+ const section1Title = getByTextContent(container, 'Section 1');
207
+ const section2Title = getByTextContent(container, 'Section 2');
135
208
  expect(section1Title).not.toBeUndefined();
136
209
  expect(section2Title).not.toBeUndefined();
137
- var section1Content = section1Title.parentNode.querySelector(".".concat(classes('section-content')));
210
+ const section1Content = section1Title.parentNode.querySelector(".".concat(classes('section-content')));
138
211
  expect(section1Content.querySelectorAll(".".concat(classes('field'))).length).toEqual(2);
139
- var section2Content = section2Title.parentNode.querySelector(".".concat(classes('section-content')));
212
+ const section2Content = section2Title.parentNode.querySelector(".".concat(classes('section-content')));
140
213
  expect(section2Content.querySelectorAll(".".concat(classes('field'))).length).toEqual(1);
141
214
  });
142
- it('should not render sections if they have show_when checks and fail them', function () {
143
- var CHILD_PAGES = [{
215
+ it('should not render sections if they have show_when checks and fail them', () => {
216
+ const CHILD_PAGES = [{
144
217
  summaryLayout: {
145
218
  sections: [{
146
219
  title: 'Section 1',
147
- columns: 2,
148
- fields: ['fieldA', 'fieldB'],
220
+ columns: [{
221
+ fields: ['fieldA']
222
+ }, {
223
+ fields: ['fieldB']
224
+ }],
149
225
  show_when: [{
150
226
  field: 'showSection1',
151
227
  op: "=",
@@ -153,8 +229,9 @@ describe('components.CollectionSummary.SummaryCardDetails', function () {
153
229
  }]
154
230
  }, {
155
231
  title: 'Section 2',
156
- columns: 1,
157
- fields: ['fieldC']
232
+ columns: [{
233
+ fields: ['fieldC']
234
+ }]
158
235
  }]
159
236
  },
160
237
  components: [{
@@ -165,37 +242,95 @@ describe('components.CollectionSummary.SummaryCardDetails', function () {
165
242
  fieldId: 'fieldC'
166
243
  }]
167
244
  }];
168
- var MASTER_PAGE = {
245
+ const MASTER_PAGE = {
169
246
  childPages: CHILD_PAGES
170
247
  };
171
- var CUSTOM_ENTRY = _objectSpread(_objectSpread({}, ENTRY), {}, {
248
+ const CUSTOM_ENTRY = {
249
+ ...ENTRY,
172
250
  showSection1: false
173
- });
174
- var _renderWithValidation3 = (0, _setupTests.renderWithValidation)( /*#__PURE__*/_react.default.createElement(_SummaryCardDetails.default, {
175
- masterPage: MASTER_PAGE,
176
- childMasterPages: [],
177
- formData: {},
178
- entryData: CUSTOM_ENTRY
179
- })),
180
- container = _renderWithValidation3.container;
251
+ };
252
+ const {
253
+ container
254
+ } = (0, _setupTests.renderWithValidation)( /*#__PURE__*/_react.default.createElement(_SummaryCardDetails.default, {
255
+ masterPage: MASTER_PAGE,
256
+ childMasterPages: [],
257
+ formData: {},
258
+ entryData: CUSTOM_ENTRY
259
+ }));
181
260
 
182
261
  // Function to find an element by its text content
183
262
  function getByTextContent(parent, text) {
184
- return Array.from(parent.getElementsByClassName(classes('section-title'))).find(function (el) {
185
- return el.textContent === text;
186
- });
263
+ return Array.from(parent.getElementsByClassName(classes('section-title'))).find(el => el.textContent === text);
187
264
  }
188
265
 
189
266
  // Check for section titles
190
- var section1Title = getByTextContent(container, 'Section 1');
191
- var section2Title = getByTextContent(container, 'Section 2');
267
+ const section1Title = getByTextContent(container, 'Section 1');
268
+ const section2Title = getByTextContent(container, 'Section 2');
192
269
  expect(section1Title).toBeUndefined();
193
270
  expect(section2Title).not.toBeUndefined();
194
- var section2Content = section2Title.parentNode.querySelector(".".concat(classes('section-content')));
271
+ const section2Content = section2Title.parentNode.querySelector(".".concat(classes('section-content')));
195
272
  expect(section2Content.querySelectorAll(".".concat(classes('field'))).length).toEqual(1);
196
273
  });
197
- it('should not render sections on pages that fail show_when checks', function () {
198
- var CHILD_PAGES = [{
274
+ it('should not render components that fail show_when checks', () => {
275
+ const CHILD_PAGES = [{
276
+ summaryLayout: {
277
+ sections: [{
278
+ title: 'Section 1',
279
+ columns: [{
280
+ fields: ['fieldA']
281
+ }, {
282
+ fields: ['fieldB']
283
+ }]
284
+ }, {
285
+ title: 'Section 2',
286
+ columns: [{
287
+ fields: ['fieldC']
288
+ }]
289
+ }]
290
+ },
291
+ components: [{
292
+ fieldId: 'fieldA'
293
+ }, {
294
+ fieldId: 'fieldB',
295
+ show_when: [{
296
+ field: 'fieldA',
297
+ op: '=',
298
+ value: 'notTheRightValue'
299
+ }]
300
+ }, {
301
+ fieldId: 'fieldC'
302
+ }]
303
+ }];
304
+ const MASTER_PAGE = {
305
+ childPages: CHILD_PAGES
306
+ };
307
+ const {
308
+ container
309
+ } = (0, _setupTests.renderWithValidation)( /*#__PURE__*/_react.default.createElement(_SummaryCardDetails.default, {
310
+ masterPage: MASTER_PAGE,
311
+ childMasterPages: [],
312
+ formData: {},
313
+ entryData: ENTRY
314
+ }));
315
+
316
+ // Function to find an element by its text content
317
+ function getByTextContent(parent, text) {
318
+ return Array.from(parent.getElementsByClassName(classes('section-title'))).find(el => el.textContent === text);
319
+ }
320
+
321
+ // Check for section titles
322
+ const section1Title = getByTextContent(container, 'Section 1');
323
+ const section2Title = getByTextContent(container, 'Section 2');
324
+ expect(section1Title).not.toBeUndefined();
325
+ expect(section2Title).not.toBeUndefined();
326
+ const section1Content = section1Title.parentNode.querySelector(".".concat(classes('section-content')));
327
+ expect(section1Content.querySelectorAll(".".concat(classes('field'))).length).toEqual(1); // Just Field A, Field B should be hidden.
328
+
329
+ const section2Content = section2Title.parentNode.querySelector(".".concat(classes('section-content')));
330
+ expect(section2Content.querySelectorAll(".".concat(classes('field'))).length).toEqual(1);
331
+ });
332
+ it('should not render sections on pages that fail show_when checks', () => {
333
+ const CHILD_PAGES = [{
199
334
  show_when: [{
200
335
  field: 'testField',
201
336
  op: '=',
@@ -204,8 +339,11 @@ describe('components.CollectionSummary.SummaryCardDetails', function () {
204
339
  summaryLayout: {
205
340
  sections: [{
206
341
  title: 'Section 1',
207
- columns: 2,
208
- fields: ['fieldA', 'fieldB'],
342
+ columns: [{
343
+ fields: ['fieldA']
344
+ }, {
345
+ fields: ['fieldB']
346
+ }],
209
347
  show_when: [{
210
348
  field: 'showSection1',
211
349
  op: "=",
@@ -213,8 +351,9 @@ describe('components.CollectionSummary.SummaryCardDetails', function () {
213
351
  }]
214
352
  }, {
215
353
  title: 'Section 2',
216
- columns: 1,
217
- fields: ['fieldC']
354
+ columns: [{
355
+ fields: ['fieldC']
356
+ }]
218
357
  }]
219
358
  },
220
359
  components: [{
@@ -225,37 +364,37 @@ describe('components.CollectionSummary.SummaryCardDetails', function () {
225
364
  fieldId: 'fieldC'
226
365
  }]
227
366
  }];
228
- var MASTER_PAGE = {
367
+ const MASTER_PAGE = {
229
368
  childPages: CHILD_PAGES
230
369
  };
231
- var CUSTOM_ENTRY = _objectSpread(_objectSpread({}, ENTRY), {}, {
370
+ const CUSTOM_ENTRY = {
371
+ ...ENTRY,
232
372
  showSection1: false
233
- });
234
- var _renderWithValidation4 = (0, _setupTests.renderWithValidation)( /*#__PURE__*/_react.default.createElement(_SummaryCardDetails.default, {
235
- masterPage: MASTER_PAGE,
236
- childMasterPages: [],
237
- formData: {
238
- testField: false
239
- },
240
- entryData: CUSTOM_ENTRY
241
- })),
242
- container = _renderWithValidation4.container;
373
+ };
374
+ const {
375
+ container
376
+ } = (0, _setupTests.renderWithValidation)( /*#__PURE__*/_react.default.createElement(_SummaryCardDetails.default, {
377
+ masterPage: MASTER_PAGE,
378
+ childMasterPages: [],
379
+ formData: {
380
+ testField: false
381
+ },
382
+ entryData: CUSTOM_ENTRY
383
+ }));
243
384
 
244
385
  // Function to find an element by its text content
245
386
  function getByTextContent(parent, text) {
246
- return Array.from(parent.getElementsByClassName(classes('section-title'))).find(function (el) {
247
- return el.textContent === text;
248
- });
387
+ return Array.from(parent.getElementsByClassName(classes('section-title'))).find(el => el.textContent === text);
249
388
  }
250
389
 
251
390
  // Check for section titles
252
- var section1Title = getByTextContent(container, 'Section 1');
253
- var section2Title = getByTextContent(container, 'Section 2');
391
+ const section1Title = getByTextContent(container, 'Section 1');
392
+ const section2Title = getByTextContent(container, 'Section 2');
254
393
  expect(section1Title).toBeUndefined();
255
394
  expect(section2Title).toBeUndefined();
256
395
  });
257
- it('should render child collections', function () {
258
- var CHILD_MASTER_PAGES = [{
396
+ it('should render child collections', () => {
397
+ const CHILD_MASTER_PAGES = [{
259
398
  collection: {
260
399
  name: 'childCollection'
261
400
  },
@@ -268,13 +407,16 @@ describe('components.CollectionSummary.SummaryCardDetails', function () {
268
407
  summaryLayout: {
269
408
  sections: [{
270
409
  title: 'Hidden Title',
271
- columns: 2,
272
- fields: ['childfield1', 'childfield2']
410
+ columns: [{
411
+ fields: ['childfield1']
412
+ }, {
413
+ fields: ['childfield2']
414
+ }]
273
415
  }]
274
416
  }
275
417
  }]
276
418
  }];
277
- var CHILD_PAGES = [{
419
+ const CHILD_PAGES = [{
278
420
  summaryLayout: {
279
421
  sections: [{
280
422
  type: 'childCollection',
@@ -290,30 +432,29 @@ describe('components.CollectionSummary.SummaryCardDetails', function () {
290
432
  fieldId: 'fieldC'
291
433
  }]
292
434
  }];
293
- var MASTER_PAGE = {
435
+ const MASTER_PAGE = {
294
436
  childPages: [].concat(CHILD_PAGES, CHILD_MASTER_PAGES)
295
437
  };
296
- var CHILD_COLLECTIONS = ['childCollection'];
297
- var _renderWithValidation5 = (0, _setupTests.renderWithValidation)( /*#__PURE__*/_react.default.createElement(_SummaryCardDetails.default, {
298
- masterPage: MASTER_PAGE,
299
- childCollections: CHILD_COLLECTIONS,
300
- formData: {},
301
- entryData: ENTRY
302
- })),
303
- container = _renderWithValidation5.container;
438
+ const CHILD_COLLECTIONS = ['childCollection'];
439
+ const {
440
+ container
441
+ } = (0, _setupTests.renderWithValidation)( /*#__PURE__*/_react.default.createElement(_SummaryCardDetails.default, {
442
+ masterPage: MASTER_PAGE,
443
+ childCollections: CHILD_COLLECTIONS,
444
+ formData: {},
445
+ entryData: ENTRY
446
+ }));
304
447
 
305
448
  // Function to find an element by its text content
306
449
  function getByTextContent(parent, text) {
307
- return Array.from(parent.getElementsByClassName(classes('section-title'))).find(function (el) {
308
- return el.textContent === text;
309
- });
450
+ return Array.from(parent.getElementsByClassName(classes('section-title'))).find(el => el.textContent === text);
310
451
  }
311
- var childCollectionSectionTitle = getByTextContent(container, 'Children');
452
+ const childCollectionSectionTitle = getByTextContent(container, 'Children');
312
453
  expect(childCollectionSectionTitle).not.toBeUndefined();
313
- var childSectionTitles = getByTextContent(container, 'Hidden Title');
454
+ const childSectionTitles = getByTextContent(container, 'Hidden Title');
314
455
  expect(childSectionTitles).toBeUndefined(); // Individual section title for child collections should be hidden.
315
456
 
316
- var childFields = container.querySelectorAll(".".concat(classes('section')));
457
+ const childFields = container.querySelectorAll(".".concat(classes('section')));
317
458
  expect(childFields.length).toEqual(2); // One for each entry in the child collection.
318
459
  });
319
460
  });
@@ -1,62 +1,66 @@
1
1
  "use strict";
2
2
 
3
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.default = void 0;
8
7
  var _react = _interopRequireWildcard(require("react"));
9
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
10
- var _utils = _interopRequireDefault(require("../../utils"));
11
9
  var _ValidationContext = require("../../context/ValidationContext");
10
+ var _hooks = require("../../hooks");
11
+ var _utils = _interopRequireDefault(require("../../utils"));
12
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
14
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
15
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
16
- 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."); }
17
- 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); }
18
- 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; }
19
- function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
20
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } /* eslint-disable react/jsx-no-constructed-context-values, no-shadow */ // Global imports
13
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
14
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
15
+ /* eslint-disable react/jsx-no-constructed-context-values, no-shadow */
16
+ // Global imports
17
+
21
18
  // Local imports
22
- var SummaryCardValidationContextProvider = function SummaryCardValidationContextProvider(_ref) {
23
- var entryId = _ref.entryId,
24
- topLevelErrors = _ref.topLevelErrors,
25
- children = _ref.children;
19
+
20
+ const SummaryCardValidationContextProvider = _ref => {
21
+ let {
22
+ entryId,
23
+ topLevelErrors,
24
+ clearTopLevelErrorsForCard,
25
+ children
26
+ } = _ref;
27
+ const {
28
+ hooks
29
+ } = (0, _hooks.useHooks)();
30
+
26
31
  // Errors raised from the Collection Summary.
27
- var initialErrors = topLevelErrors.filter(function (e) {
28
- return e.entryId === entryId;
29
- }) || [];
32
+ const initialErrors = topLevelErrors.filter(e => e.entryId === entryId) || [];
30
33
  // Errors raised locally, via the Quick Edit page.
31
- var _useState = (0, _react.useState)(null),
32
- _useState2 = _slicedToArray(_useState, 2),
33
- errors = _useState2[0],
34
- setErrors = _useState2[1];
35
- var resetQuickEditErrors = function resetQuickEditErrors() {
34
+ const [errors, setErrors] = (0, _react.useState)(null);
35
+ const resetQuickEditErrors = () => {
36
36
  // By setting errors to 'null' here we go back to using
37
37
  // whatever topLevelErrors are passed in for us.
38
38
  setErrors(null);
39
39
  };
40
- var addErrors = function addErrors(addedErrors) {
41
- var newErrors = errors !== null && errors !== void 0 ? errors : [];
42
- setErrors(newErrors.concat(addedErrors));
40
+ const addErrors = addedErrors => {
41
+ setErrors(prev => {
42
+ const newErrors = prev !== null && prev !== void 0 ? prev : [];
43
+ return newErrors.concat(addedErrors);
44
+ });
43
45
  };
44
46
 
45
47
  // This validate is only used by the Quick Edit page
46
48
  // on the Summary Card.
47
- var validate = {
48
- page: function page(_page) {
49
- var pageErrors = _utils.default.Validate.page(_page);
50
- setErrors(pageErrors);
51
- return pageErrors;
49
+ const validate = {
50
+ page: page => {
51
+ const pageErrors = _utils.default.Validate.page(page);
52
+ const allErrors = hooks.onValidate(page, pageErrors);
53
+ setErrors(allErrors);
54
+ return allErrors;
52
55
  }
53
56
  };
54
57
  return /*#__PURE__*/_react.default.createElement(_ValidationContext.ValidationContext.Provider, {
55
58
  value: {
56
- addErrors: addErrors,
59
+ addErrors,
57
60
  errors: errors === null ? [].concat(initialErrors) : errors,
58
- resetQuickEditErrors: resetQuickEditErrors,
59
- validate: validate
61
+ resetQuickEditErrors,
62
+ clearTopLevelErrorsForCard,
63
+ validate
60
64
  }
61
65
  }, children);
62
66
  };
@@ -64,6 +68,7 @@ var _default = exports.default = SummaryCardValidationContextProvider;
64
68
  SummaryCardValidationContextProvider.propTypes = {
65
69
  entryId: _propTypes.default.string.isRequired,
66
70
  topLevelErrors: _propTypes.default.arrayOf(_propTypes.default.shape({})),
71
+ clearTopLevelErrorsForCard: _propTypes.default.func.isRequired,
67
72
  children: _propTypes.default.node
68
73
  };
69
74
  SummaryCardValidationContextProvider.defaultProps = {