@defra/forms-engine-plugin 0.0.4 → 0.0.6

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 (260) hide show
  1. package/.server/server/index.js +0 -4
  2. package/.server/server/index.js.map +1 -1
  3. package/.server/server/plugins/engine/helpers.js +3 -0
  4. package/.server/server/plugins/engine/helpers.js.map +1 -1
  5. package/.server/server/plugins/engine/index.js +27 -1
  6. package/.server/server/plugins/engine/index.js.map +1 -1
  7. package/.server/server/plugins/engine/pageControllers/FileUploadPageController.js +2 -4
  8. package/.server/server/plugins/engine/pageControllers/FileUploadPageController.js.map +1 -1
  9. package/.server/server/plugins/engine/pageControllers/QuestionPageController.js +4 -10
  10. package/.server/server/plugins/engine/pageControllers/QuestionPageController.js.map +1 -1
  11. package/.server/server/plugins/engine/pageControllers/StatusPageController.js +2 -3
  12. package/.server/server/plugins/engine/pageControllers/StatusPageController.js.map +1 -1
  13. package/.server/server/plugins/engine/pageControllers/SummaryPageController.js +2 -4
  14. package/.server/server/plugins/engine/pageControllers/SummaryPageController.js.map +1 -1
  15. package/.server/server/plugins/engine/plugin.js +65 -6
  16. package/.server/server/plugins/engine/plugin.js.map +1 -1
  17. package/.server/server/plugins/engine/types.js.map +1 -1
  18. package/.server/server/{views → plugins/engine/views}/components/service-banner/template.test.js +1 -1
  19. package/.server/server/plugins/engine/views/components/service-banner/template.test.js.map +1 -0
  20. package/.server/server/{views → plugins/engine/views}/components/tag-env/template.test.js +1 -1
  21. package/.server/server/plugins/engine/views/components/tag-env/template.test.js.map +1 -0
  22. package/.server/server/services/cacheService.js +5 -2
  23. package/.server/server/services/cacheService.js.map +1 -1
  24. package/.server/typings/hapi/index.d.js.map +1 -1
  25. package/README.md +215 -4
  26. package/package.json +3 -3
  27. package/src/client/javascripts/application.js +87 -0
  28. package/src/client/javascripts/file-upload.js +386 -0
  29. package/src/client/stylesheets/_code.scss +33 -0
  30. package/src/client/stylesheets/_govuk-frontend.scss +4 -0
  31. package/src/client/stylesheets/_prose.scss +56 -0
  32. package/src/client/stylesheets/_service-banner.scss +24 -0
  33. package/src/client/stylesheets/_summary-list.scss +28 -0
  34. package/src/client/stylesheets/_tag-env.scss +24 -0
  35. package/src/client/stylesheets/application.scss +14 -0
  36. package/src/common/cookies.js +58 -0
  37. package/src/common/cookies.test.js +23 -0
  38. package/src/common/types.js +5 -0
  39. package/src/config/index.ts +271 -0
  40. package/src/index.ts +31 -0
  41. package/src/server/common/helpers/logging/logger-options.test.ts +50 -0
  42. package/src/server/common/helpers/logging/logger-options.ts +46 -0
  43. package/src/server/common/helpers/logging/logger.ts +7 -0
  44. package/src/server/common/helpers/logging/request-logger.ts +9 -0
  45. package/src/server/common/helpers/logging/request-tracing.js +10 -0
  46. package/src/server/common/helpers/redis-client.js +70 -0
  47. package/src/server/constants.js +1 -0
  48. package/src/server/forms/README.md +10 -0
  49. package/src/server/forms/components.json +1015 -0
  50. package/src/server/forms/report-a-terrorist.json +270 -0
  51. package/src/server/forms/runner-components-test.json +365 -0
  52. package/src/server/forms/test.json +581 -0
  53. package/src/server/index.test.ts +582 -0
  54. package/src/server/index.ts +135 -0
  55. package/src/server/plugins/blankie.test.ts +73 -0
  56. package/src/server/plugins/blankie.ts +48 -0
  57. package/src/server/plugins/crumb.ts +20 -0
  58. package/src/server/plugins/engine/README.md +87 -0
  59. package/src/server/plugins/engine/components/AutocompleteField.test.ts +294 -0
  60. package/src/server/plugins/engine/components/AutocompleteField.ts +49 -0
  61. package/src/server/plugins/engine/components/CheckboxesField.test.ts +379 -0
  62. package/src/server/plugins/engine/components/CheckboxesField.ts +106 -0
  63. package/src/server/plugins/engine/components/ComponentBase.ts +97 -0
  64. package/src/server/plugins/engine/components/ComponentCollection.ts +278 -0
  65. package/src/server/plugins/engine/components/DatePartsField.test.ts +822 -0
  66. package/src/server/plugins/engine/components/DatePartsField.ts +264 -0
  67. package/src/server/plugins/engine/components/Details.test.ts +49 -0
  68. package/src/server/plugins/engine/components/Details.ts +30 -0
  69. package/src/server/plugins/engine/components/EmailAddressField.test.ts +395 -0
  70. package/src/server/plugins/engine/components/EmailAddressField.ts +55 -0
  71. package/src/server/plugins/engine/components/FileUploadField.test.ts +778 -0
  72. package/src/server/plugins/engine/components/FileUploadField.ts +262 -0
  73. package/src/server/plugins/engine/components/FormComponent.ts +249 -0
  74. package/src/server/plugins/engine/components/Html.test.ts +48 -0
  75. package/src/server/plugins/engine/components/Html.ts +29 -0
  76. package/src/server/plugins/engine/components/InsetText.test.ts +48 -0
  77. package/src/server/plugins/engine/components/InsetText.ts +27 -0
  78. package/src/server/plugins/engine/components/List.test.ts +76 -0
  79. package/src/server/plugins/engine/components/List.ts +72 -0
  80. package/src/server/plugins/engine/components/ListFormComponent.ts +140 -0
  81. package/src/server/plugins/engine/components/MonthYearField.test.ts +567 -0
  82. package/src/server/plugins/engine/components/MonthYearField.ts +222 -0
  83. package/src/server/plugins/engine/components/MultilineTextField.test.ts +558 -0
  84. package/src/server/plugins/engine/components/MultilineTextField.ts +138 -0
  85. package/src/server/plugins/engine/components/NumberField.test.ts +701 -0
  86. package/src/server/plugins/engine/components/NumberField.ts +163 -0
  87. package/src/server/plugins/engine/components/RadiosField.test.ts +288 -0
  88. package/src/server/plugins/engine/components/RadiosField.ts +24 -0
  89. package/src/server/plugins/engine/components/SelectField.test.ts +288 -0
  90. package/src/server/plugins/engine/components/SelectField.ts +47 -0
  91. package/src/server/plugins/engine/components/SelectionControlField.ts +43 -0
  92. package/src/server/plugins/engine/components/TelephoneNumberField.test.ts +356 -0
  93. package/src/server/plugins/engine/components/TelephoneNumberField.ts +67 -0
  94. package/src/server/plugins/engine/components/TextField.test.ts +489 -0
  95. package/src/server/plugins/engine/components/TextField.ts +96 -0
  96. package/src/server/plugins/engine/components/UkAddressField.test.ts +623 -0
  97. package/src/server/plugins/engine/components/UkAddressField.ts +172 -0
  98. package/src/server/plugins/engine/components/YesNoField.test.ts +248 -0
  99. package/src/server/plugins/engine/components/YesNoField.ts +31 -0
  100. package/src/server/plugins/engine/components/constants.ts +1 -0
  101. package/src/server/plugins/engine/components/helpers.ts +330 -0
  102. package/src/server/plugins/engine/components/index.ts +24 -0
  103. package/src/server/plugins/engine/components/types.ts +117 -0
  104. package/src/server/plugins/engine/configureEnginePlugin.ts +47 -0
  105. package/src/server/plugins/engine/helpers.test.ts +791 -0
  106. package/src/server/plugins/engine/helpers.ts +384 -0
  107. package/src/server/plugins/engine/index.ts +47 -0
  108. package/src/server/plugins/engine/models/FormModel.test.ts +42 -0
  109. package/src/server/plugins/engine/models/FormModel.ts +443 -0
  110. package/src/server/plugins/engine/models/RepeatingSummaryViewModel.ts +0 -0
  111. package/src/server/plugins/engine/models/Section.ts +0 -0
  112. package/src/server/plugins/engine/models/SummaryViewModel.test.ts +209 -0
  113. package/src/server/plugins/engine/models/SummaryViewModel.ts +220 -0
  114. package/src/server/plugins/engine/models/index.ts +2 -0
  115. package/src/server/plugins/engine/models/types.ts +114 -0
  116. package/src/server/plugins/engine/outputFormatters/human/v1.test.ts +143 -0
  117. package/src/server/plugins/engine/outputFormatters/human/v1.ts +73 -0
  118. package/src/server/plugins/engine/outputFormatters/index.test.ts +17 -0
  119. package/src/server/plugins/engine/outputFormatters/index.ts +44 -0
  120. package/src/server/plugins/engine/outputFormatters/machine/v1.test.ts +229 -0
  121. package/src/server/plugins/engine/outputFormatters/machine/v1.ts +140 -0
  122. package/src/server/plugins/engine/outputFormatters/machine/v2.test.ts +229 -0
  123. package/src/server/plugins/engine/outputFormatters/machine/v2.ts +153 -0
  124. package/src/server/plugins/engine/pageControllers/FileUploadPageController.test.ts +1116 -0
  125. package/src/server/plugins/engine/pageControllers/FileUploadPageController.ts +447 -0
  126. package/src/server/plugins/engine/pageControllers/PageController.test.ts +205 -0
  127. package/src/server/plugins/engine/pageControllers/PageController.ts +176 -0
  128. package/src/server/plugins/engine/pageControllers/QuestionPageController.test.ts +1264 -0
  129. package/src/server/plugins/engine/pageControllers/QuestionPageController.ts +565 -0
  130. package/src/server/plugins/engine/pageControllers/README.md +28 -0
  131. package/src/server/plugins/engine/pageControllers/RepeatPageController.test.ts +264 -0
  132. package/src/server/plugins/engine/pageControllers/RepeatPageController.ts +458 -0
  133. package/src/server/plugins/engine/pageControllers/StartPageController.ts +18 -0
  134. package/src/server/plugins/engine/pageControllers/StatusPageController.ts +51 -0
  135. package/src/server/plugins/engine/pageControllers/SummaryPageController.ts +262 -0
  136. package/src/server/plugins/engine/pageControllers/TerminalController.test.ts +28 -0
  137. package/src/server/plugins/engine/pageControllers/TerminalPageController.ts +19 -0
  138. package/src/server/plugins/engine/pageControllers/helpers.test.ts +198 -0
  139. package/src/server/plugins/engine/pageControllers/helpers.ts +101 -0
  140. package/src/server/plugins/engine/pageControllers/index.ts +10 -0
  141. package/src/server/plugins/engine/pageControllers/validationOptions.ts +89 -0
  142. package/src/server/plugins/engine/plugin.ts +753 -0
  143. package/src/server/plugins/engine/services/formSubmissionService.js +46 -0
  144. package/src/server/plugins/engine/services/formsService.js +46 -0
  145. package/src/server/plugins/engine/services/formsService.test.js +90 -0
  146. package/src/server/plugins/engine/services/index.js +3 -0
  147. package/src/server/plugins/engine/services/notifyService.test.ts +132 -0
  148. package/src/server/plugins/engine/services/notifyService.ts +64 -0
  149. package/src/server/plugins/engine/services/uploadService.js +60 -0
  150. package/src/server/plugins/engine/types.ts +317 -0
  151. package/src/server/plugins/engine/views/components/autocompletefield.html +5 -0
  152. package/src/server/plugins/engine/views/components/checkboxesfield.html +5 -0
  153. package/src/server/plugins/engine/views/components/datepartsfield.html +5 -0
  154. package/src/server/plugins/engine/views/components/debug/macro.njk +3 -0
  155. package/src/server/plugins/engine/views/components/debug/template.njk +13 -0
  156. package/src/server/plugins/engine/views/components/details.html +6 -0
  157. package/src/server/plugins/engine/views/components/emailaddressfield.html +5 -0
  158. package/src/server/plugins/engine/views/components/fileuploadfield-key.html +8 -0
  159. package/src/server/plugins/engine/views/components/fileuploadfield-value.html +3 -0
  160. package/src/server/plugins/engine/views/components/fileuploadfield.html +24 -0
  161. package/src/server/plugins/engine/views/components/html.html +3 -0
  162. package/src/server/plugins/engine/views/components/insettext.html +7 -0
  163. package/src/server/plugins/engine/views/components/list.html +36 -0
  164. package/src/server/plugins/engine/views/components/monthyearfield.html +5 -0
  165. package/src/server/plugins/engine/views/components/multilinetextfield.html +10 -0
  166. package/src/server/plugins/engine/views/components/numberfield.html +5 -0
  167. package/src/server/plugins/engine/views/components/radiosfield.html +5 -0
  168. package/src/server/plugins/engine/views/components/selectfield.html +5 -0
  169. package/src/server/plugins/engine/views/components/service-banner/macro.njk +3 -0
  170. package/src/server/plugins/engine/views/components/service-banner/template.njk +20 -0
  171. package/src/server/plugins/engine/views/components/service-banner/template.test.js +43 -0
  172. package/src/server/plugins/engine/views/components/tag-env/macro.njk +3 -0
  173. package/src/server/plugins/engine/views/components/tag-env/template.njk +30 -0
  174. package/src/server/plugins/engine/views/components/tag-env/template.test.js +66 -0
  175. package/src/server/plugins/engine/views/components/telephonenumberfield.html +5 -0
  176. package/src/server/plugins/engine/views/components/textfield.html +5 -0
  177. package/src/server/plugins/engine/views/components/ukaddressfield.html +25 -0
  178. package/src/server/plugins/engine/views/components/yesnofield.html +5 -0
  179. package/src/server/plugins/engine/views/confirmation.html +19 -0
  180. package/src/server/plugins/engine/views/file-upload.html +45 -0
  181. package/src/server/plugins/engine/views/index.html +39 -0
  182. package/src/server/plugins/engine/views/item-delete.html +56 -0
  183. package/src/server/plugins/engine/views/layout.html +199 -0
  184. package/src/server/plugins/engine/views/partials/components.html +6 -0
  185. package/src/server/plugins/engine/views/partials/conditional-components.html +3 -0
  186. package/src/server/plugins/engine/views/partials/debug.html +44 -0
  187. package/src/server/plugins/engine/views/partials/form.html +15 -0
  188. package/src/server/plugins/engine/views/partials/heading.html +16 -0
  189. package/src/server/plugins/engine/views/partials/preview-banner.html +32 -0
  190. package/src/server/plugins/engine/views/partials/preview-banner.test.js +122 -0
  191. package/src/server/plugins/engine/views/partials/warn-missing-notification-email.html +10 -0
  192. package/src/server/plugins/engine/views/repeat-list-summary.html +53 -0
  193. package/src/server/plugins/engine/views/summary.html +50 -0
  194. package/src/server/plugins/errorPages.ts +58 -0
  195. package/src/server/plugins/nunjucks/context.js +88 -0
  196. package/src/server/plugins/nunjucks/context.test.js +142 -0
  197. package/src/server/plugins/nunjucks/enviroment.test.js +201 -0
  198. package/src/server/plugins/nunjucks/environment.js +116 -0
  199. package/src/server/plugins/nunjucks/filters/answer.js +27 -0
  200. package/src/server/plugins/nunjucks/filters/answer.test.js +89 -0
  201. package/src/server/plugins/nunjucks/filters/evaluate.js +21 -0
  202. package/src/server/plugins/nunjucks/filters/field.js +28 -0
  203. package/src/server/plugins/nunjucks/filters/field.test.js +75 -0
  204. package/src/server/plugins/nunjucks/filters/highlight.js +11 -0
  205. package/src/server/plugins/nunjucks/filters/href.js +30 -0
  206. package/src/server/plugins/nunjucks/filters/href.test.js +80 -0
  207. package/src/server/plugins/nunjucks/filters/index.js +8 -0
  208. package/src/server/plugins/nunjucks/filters/inspect.js +15 -0
  209. package/src/server/plugins/nunjucks/filters/page.js +24 -0
  210. package/src/server/plugins/nunjucks/filters/page.test.js +65 -0
  211. package/src/server/plugins/nunjucks/index.js +3 -0
  212. package/src/server/plugins/nunjucks/plugin.js +40 -0
  213. package/src/server/plugins/nunjucks/render.js +42 -0
  214. package/src/server/plugins/nunjucks/types.js +40 -0
  215. package/src/server/plugins/pulse.ts +11 -0
  216. package/src/server/plugins/router.ts +201 -0
  217. package/src/server/plugins/session.ts +28 -0
  218. package/src/server/routes/health.js +13 -0
  219. package/src/server/routes/health.test.js +35 -0
  220. package/src/server/routes/index.test.ts +125 -0
  221. package/src/server/routes/index.ts +2 -0
  222. package/src/server/routes/public.ts +47 -0
  223. package/src/server/routes/types.ts +48 -0
  224. package/src/server/schemas/index.ts +34 -0
  225. package/src/server/secure-context.js +43 -0
  226. package/src/server/services/cacheService.test.ts +277 -0
  227. package/src/server/services/cacheService.ts +138 -0
  228. package/src/server/services/httpService.test.js +491 -0
  229. package/src/server/services/httpService.ts +50 -0
  230. package/src/server/services/index.ts +1 -0
  231. package/src/server/types.ts +54 -0
  232. package/src/server/utils/notify.test.ts +37 -0
  233. package/src/server/utils/notify.ts +50 -0
  234. package/src/server/utils/secure-context/get-trust-store-certs.js +11 -0
  235. package/src/server/utils/secure-context/get-trust-store-certs.test.js +19 -0
  236. package/src/server/utils/utils.js +24 -0
  237. package/src/server/utils/utils.test.js +54 -0
  238. package/src/server/views/404.html +16 -0
  239. package/src/server/views/500.html +19 -0
  240. package/src/server/views/help/accessibility-statement.html +58 -0
  241. package/src/server/views/help/cookie-preferences.html +57 -0
  242. package/src/server/views/help/cookies.html +71 -0
  243. package/src/server/views/help/get-support.html +37 -0
  244. package/src/server/views/help/privacy-notice.html +68 -0
  245. package/src/server/views/help/terms-and-conditions.html +83 -0
  246. package/src/typings/hapi/index.d.ts +87 -0
  247. package/src/typings/hapi-tracing/index.d.ts +6 -0
  248. package/src/typings/index.d.ts +3 -0
  249. package/src/typings/joi/index.d.ts +22 -0
  250. package/.server/server/views/components/service-banner/template.test.js.map +0 -1
  251. package/.server/server/views/components/tag-env/template.test.js.map +0 -1
  252. /package/.server/server/{views → plugins/engine/views}/components/debug/macro.njk +0 -0
  253. /package/.server/server/{views → plugins/engine/views}/components/debug/template.njk +0 -0
  254. /package/.server/server/{views → plugins/engine/views}/components/service-banner/macro.njk +0 -0
  255. /package/.server/server/{views → plugins/engine/views}/components/service-banner/template.njk +0 -0
  256. /package/.server/server/{views → plugins/engine/views}/components/tag-env/macro.njk +0 -0
  257. /package/.server/server/{views → plugins/engine/views}/components/tag-env/template.njk +0 -0
  258. /package/.server/server/{views → plugins/engine/views}/confirmation.html +0 -0
  259. /package/.server/server/{views → plugins/engine/views}/layout.html +0 -0
  260. /package/.server/server/{views → plugins/engine/views}/summary.html +0 -0
@@ -0,0 +1,581 @@
1
+ {
2
+ "startPage": "/start",
3
+ "pages": [
4
+ {
5
+ "title": "Start",
6
+ "path": "/start",
7
+ "components": [],
8
+ "next": [
9
+ {
10
+ "path": "/uk-passport"
11
+ }
12
+ ],
13
+ "controller": "StartPageController"
14
+ },
15
+ {
16
+ "path": "/uk-passport",
17
+ "components": [
18
+ {
19
+ "type": "YesNoField",
20
+ "name": "ukPassport",
21
+ "title": "Do you have a UK passport?",
22
+ "options": {
23
+ "required": true
24
+ },
25
+ "schema": {}
26
+ }
27
+ ],
28
+ "section": "checkBeforeYouStart",
29
+ "next": [
30
+ {
31
+ "path": "/how-many-people"
32
+ },
33
+ {
34
+ "path": "/no-uk-passport",
35
+ "condition": "doesntHaveUKPassport"
36
+ }
37
+ ],
38
+ "title": "Do you have a UK passport?"
39
+ },
40
+ {
41
+ "path": "/no-uk-passport",
42
+ "title": "You're not eligible for this service",
43
+ "components": [
44
+ {
45
+ "type": "Html",
46
+ "name": "html",
47
+ "title": "Html",
48
+ "content": "<p class=\"govuk-body\">If you still think you're eligible please contact the Foreign and Commonwealth Office.</p>",
49
+ "options": {},
50
+ "schema": {}
51
+ }
52
+ ],
53
+ "next": []
54
+ },
55
+ {
56
+ "path": "/how-many-people",
57
+ "section": "applicantDetails",
58
+ "components": [
59
+ {
60
+ "options": {
61
+ "classes": "govuk-input--width-10",
62
+ "required": true
63
+ },
64
+ "type": "SelectField",
65
+ "name": "numberOfApplicants",
66
+ "title": "How many applicants are there?",
67
+ "list": "numberOfApplicants"
68
+ }
69
+ ],
70
+ "next": [
71
+ {
72
+ "path": "/applicant-one"
73
+ }
74
+ ],
75
+ "title": "How many applicants are there?"
76
+ },
77
+ {
78
+ "path": "/applicant-one",
79
+ "title": "Applicant 1",
80
+ "section": "applicantOneDetails",
81
+ "components": [
82
+ {
83
+ "type": "Html",
84
+ "name": "html",
85
+ "title": "Html",
86
+ "content": "<p class=\"govuk-body\">Provide the details as they appear on your passport.</p>",
87
+ "options": {},
88
+ "schema": {}
89
+ },
90
+ {
91
+ "type": "TextField",
92
+ "name": "firstName",
93
+ "title": "First name",
94
+ "options": {
95
+ "required": true
96
+ },
97
+ "schema": {}
98
+ },
99
+ {
100
+ "options": {
101
+ "required": false,
102
+ "optionalText": false
103
+ },
104
+ "type": "TextField",
105
+ "name": "middleName",
106
+ "title": "Middle name",
107
+ "hint": "If you have a middle name on your passport you must include it here",
108
+ "schema": {}
109
+ },
110
+ {
111
+ "type": "TextField",
112
+ "name": "lastName",
113
+ "title": "Surname",
114
+ "options": {
115
+ "required": true
116
+ },
117
+ "schema": {}
118
+ }
119
+ ],
120
+ "next": [
121
+ {
122
+ "path": "/applicant-one-address"
123
+ }
124
+ ]
125
+ },
126
+ {
127
+ "path": "/applicant-one-address",
128
+ "section": "applicantOneDetails",
129
+ "components": [
130
+ {
131
+ "type": "UkAddressField",
132
+ "name": "address",
133
+ "title": "Address",
134
+ "options": {
135
+ "required": true
136
+ },
137
+ "schema": {}
138
+ }
139
+ ],
140
+ "next": [
141
+ {
142
+ "path": "/applicant-two",
143
+ "condition": "moreThanOneApplicant"
144
+ },
145
+ {
146
+ "path": "/contact-details"
147
+ }
148
+ ],
149
+ "title": "Address"
150
+ },
151
+ {
152
+ "path": "/applicant-two",
153
+ "title": "Applicant 2",
154
+ "section": "applicantTwoDetails",
155
+ "components": [
156
+ {
157
+ "type": "Html",
158
+ "name": "html",
159
+ "title": "Html",
160
+ "content": "<p class=\"govuk-body\">Provide the details as they appear on your passport.</p>",
161
+ "options": {},
162
+ "schema": {}
163
+ },
164
+ {
165
+ "type": "TextField",
166
+ "name": "firstName",
167
+ "title": "First name",
168
+ "options": {
169
+ "required": true
170
+ },
171
+ "schema": {}
172
+ },
173
+ {
174
+ "options": {
175
+ "required": false,
176
+ "optionalText": false
177
+ },
178
+ "type": "TextField",
179
+ "name": "middleName",
180
+ "title": "Middle name",
181
+ "hint": "If you have a middle name on your passport you must include it here",
182
+ "schema": {}
183
+ },
184
+ {
185
+ "type": "TextField",
186
+ "name": "lastName",
187
+ "title": "Surname",
188
+ "options": {
189
+ "required": true
190
+ },
191
+ "schema": {}
192
+ }
193
+ ],
194
+ "next": [
195
+ {
196
+ "path": "/applicant-two-address"
197
+ }
198
+ ]
199
+ },
200
+ {
201
+ "path": "/applicant-two-address",
202
+ "section": "applicantTwoDetails",
203
+ "components": [
204
+ {
205
+ "type": "UkAddressField",
206
+ "name": "address",
207
+ "title": "Address",
208
+ "options": {
209
+ "required": true
210
+ },
211
+ "schema": {}
212
+ }
213
+ ],
214
+ "next": [
215
+ {
216
+ "path": "/applicant-three",
217
+ "condition": "moreThanTwoApplicants"
218
+ },
219
+ {
220
+ "path": "/contact-details"
221
+ }
222
+ ],
223
+ "title": "Address"
224
+ },
225
+ {
226
+ "path": "/applicant-three",
227
+ "title": "Applicant 3",
228
+ "section": "applicantThreeDetails",
229
+ "components": [
230
+ {
231
+ "type": "Html",
232
+ "name": "html",
233
+ "title": "Html",
234
+ "content": "<p class=\"govuk-body\">Provide the details as they appear on your passport.</p>",
235
+ "options": {},
236
+ "schema": {}
237
+ },
238
+ {
239
+ "type": "TextField",
240
+ "name": "firstName",
241
+ "title": "First name",
242
+ "options": {
243
+ "required": true
244
+ },
245
+ "schema": {}
246
+ },
247
+ {
248
+ "options": {
249
+ "required": false,
250
+ "optionalText": false
251
+ },
252
+ "type": "TextField",
253
+ "name": "middleName",
254
+ "title": "Middle name",
255
+ "hint": "If you have a middle name on your passport you must include it here",
256
+ "schema": {}
257
+ },
258
+ {
259
+ "type": "TextField",
260
+ "name": "lastName",
261
+ "title": "Surname",
262
+ "options": {
263
+ "required": true
264
+ },
265
+ "schema": {}
266
+ }
267
+ ],
268
+ "next": [
269
+ {
270
+ "path": "/applicant-three-address"
271
+ }
272
+ ]
273
+ },
274
+ {
275
+ "path": "/applicant-three-address",
276
+ "section": "applicantThreeDetails",
277
+ "components": [
278
+ {
279
+ "type": "UkAddressField",
280
+ "name": "address",
281
+ "title": "Address",
282
+ "options": {
283
+ "required": true
284
+ },
285
+ "schema": {}
286
+ }
287
+ ],
288
+ "next": [
289
+ {
290
+ "path": "/applicant-four",
291
+ "condition": "moreThanThreeApplicants"
292
+ },
293
+ {
294
+ "path": "/contact-details"
295
+ }
296
+ ],
297
+ "title": "Address"
298
+ },
299
+ {
300
+ "path": "/applicant-four",
301
+ "title": "Applicant 4",
302
+ "section": "applicantFourDetails",
303
+ "components": [
304
+ {
305
+ "type": "Html",
306
+ "name": "html",
307
+ "title": "Html",
308
+ "content": "<p class=\"govuk-body\">Provide the details as they appear on your passport.</p>",
309
+ "options": {},
310
+ "schema": {}
311
+ },
312
+ {
313
+ "type": "TextField",
314
+ "name": "firstName",
315
+ "title": "First name",
316
+ "options": {
317
+ "required": true
318
+ },
319
+ "schema": {}
320
+ },
321
+ {
322
+ "options": {
323
+ "required": false,
324
+ "optionalText": false
325
+ },
326
+ "type": "TextField",
327
+ "name": "middleName",
328
+ "title": "Middle name",
329
+ "hint": "If you have a middle name on your passport you must include it here",
330
+ "schema": {}
331
+ },
332
+ {
333
+ "type": "TextField",
334
+ "name": "lastName",
335
+ "title": "Surname",
336
+ "options": {
337
+ "required": true
338
+ },
339
+ "schema": {}
340
+ }
341
+ ],
342
+ "next": [
343
+ {
344
+ "path": "/applicant-four-address"
345
+ }
346
+ ]
347
+ },
348
+ {
349
+ "path": "/applicant-four-address",
350
+ "section": "applicantFourDetails",
351
+ "components": [
352
+ {
353
+ "type": "UkAddressField",
354
+ "name": "address",
355
+ "title": "Address",
356
+ "options": {
357
+ "required": true
358
+ },
359
+ "schema": {}
360
+ }
361
+ ],
362
+ "next": [
363
+ {
364
+ "path": "/contact-details"
365
+ }
366
+ ],
367
+ "title": "Address"
368
+ },
369
+ {
370
+ "path": "/contact-details",
371
+ "section": "applicantDetails",
372
+ "components": [
373
+ {
374
+ "type": "TelephoneNumberField",
375
+ "name": "phoneNumber",
376
+ "title": "Phone number",
377
+ "hint": "If you haven't got a UK phone number, include country code",
378
+ "options": {
379
+ "required": true
380
+ },
381
+ "schema": {}
382
+ },
383
+ {
384
+ "type": "EmailAddressField",
385
+ "name": "emailAddress",
386
+ "title": "Your email address",
387
+ "options": {
388
+ "required": true
389
+ },
390
+ "schema": {}
391
+ }
392
+ ],
393
+ "next": [
394
+ {
395
+ "path": "/summary"
396
+ }
397
+ ],
398
+ "title": "Applicant contact details"
399
+ },
400
+ {
401
+ "path": "/summary",
402
+ "controller": "SummaryPageController",
403
+ "title": "Summary",
404
+ "components": [],
405
+ "next": []
406
+ }
407
+ ],
408
+ "lists": [
409
+ {
410
+ "name": "numberOfApplicants",
411
+ "title": "Number of people",
412
+ "type": "number",
413
+ "items": [
414
+ {
415
+ "text": "1",
416
+ "value": 1,
417
+ "description": "",
418
+ "condition": ""
419
+ },
420
+ {
421
+ "text": "2",
422
+ "value": 2,
423
+ "description": "",
424
+ "condition": ""
425
+ },
426
+ {
427
+ "text": "3",
428
+ "value": 3,
429
+ "description": "",
430
+ "condition": ""
431
+ },
432
+ {
433
+ "text": "4",
434
+ "value": 4,
435
+ "description": "",
436
+ "condition": ""
437
+ }
438
+ ]
439
+ }
440
+ ],
441
+ "sections": [
442
+ {
443
+ "name": "checkBeforeYouStart",
444
+ "title": "Check before you start"
445
+ },
446
+ {
447
+ "name": "applicantDetails",
448
+ "title": "Applicant details"
449
+ },
450
+ {
451
+ "name": "applicantOneDetails",
452
+ "title": "Applicant 1"
453
+ },
454
+ {
455
+ "name": "applicantTwoDetails",
456
+ "title": "Applicant 2"
457
+ },
458
+ {
459
+ "name": "applicantThreeDetails",
460
+ "title": "Applicant 3"
461
+ },
462
+ {
463
+ "name": "applicantFourDetails",
464
+ "title": "Applicant 4"
465
+ }
466
+ ],
467
+ "phaseBanner": {},
468
+ "declaration": "<p class=\"govuk-body\">All the answers you have provided are true to the best of your knowledge.</p>",
469
+ "conditions": [
470
+ {
471
+ "name": "hasUKPassport",
472
+ "displayName": "hasUKPassport",
473
+ "value": {
474
+ "name": "hasUKPassport",
475
+ "conditions": [
476
+ {
477
+ "field": {
478
+ "name": "checkBeforeYouStart.ukPassport",
479
+ "type": "YesNoField",
480
+ "display": "Do you have a UK passport?"
481
+ },
482
+ "operator": "is",
483
+ "value": {
484
+ "type": "Value",
485
+ "value": "true",
486
+ "display": "true"
487
+ }
488
+ }
489
+ ]
490
+ }
491
+ },
492
+ {
493
+ "name": "doesntHaveUKPassport",
494
+ "displayName": "doesntHaveUKPassport",
495
+ "value": {
496
+ "name": "doesntHaveUKPassport",
497
+ "conditions": [
498
+ {
499
+ "field": {
500
+ "name": "checkBeforeYouStart.ukPassport",
501
+ "type": "YesNoField",
502
+ "display": "Do you have a UK passport?"
503
+ },
504
+ "operator": "is",
505
+ "value": {
506
+ "type": "Value",
507
+ "value": "false",
508
+ "display": "false"
509
+ }
510
+ }
511
+ ]
512
+ }
513
+ },
514
+ {
515
+ "name": "moreThanOneApplicant",
516
+ "displayName": "moreThanOneApplicant",
517
+ "value": {
518
+ "name": "moreThanOneApplicant",
519
+ "conditions": [
520
+ {
521
+ "field": {
522
+ "name": "applicantDetails.numberOfApplicants",
523
+ "type": "SelectField",
524
+ "display": "How many applicants are there?"
525
+ },
526
+ "operator": "is more than",
527
+ "value": {
528
+ "type": "Value",
529
+ "value": "1",
530
+ "display": "1"
531
+ }
532
+ }
533
+ ]
534
+ }
535
+ },
536
+ {
537
+ "name": "moreThanTwoApplicants",
538
+ "displayName": "moreThanTwoApplicants",
539
+ "value": {
540
+ "name": "moreThanTwoApplicants",
541
+ "conditions": [
542
+ {
543
+ "field": {
544
+ "name": "applicantDetails.numberOfApplicants",
545
+ "type": "SelectField",
546
+ "display": "How many applicants are there?"
547
+ },
548
+ "operator": "is more than",
549
+ "value": {
550
+ "type": "Value",
551
+ "value": "2",
552
+ "display": "2"
553
+ }
554
+ }
555
+ ]
556
+ }
557
+ },
558
+ {
559
+ "name": "moreThanThreeApplicants",
560
+ "displayName": "moreThanThreeApplicants",
561
+ "value": {
562
+ "name": "moreThanThreeApplicants",
563
+ "conditions": [
564
+ {
565
+ "field": {
566
+ "name": "applicantDetails.numberOfApplicants",
567
+ "type": "SelectField",
568
+ "display": "How many applicants are there?"
569
+ },
570
+ "operator": "is more than",
571
+ "value": {
572
+ "type": "Value",
573
+ "value": "3",
574
+ "display": "3"
575
+ }
576
+ }
577
+ ]
578
+ }
579
+ }
580
+ ]
581
+ }