@defra/forms-engine-plugin 4.0.0 → 4.0.2

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 (108) hide show
  1. package/.public/stylesheets/application.min.css +2 -2
  2. package/.public/stylesheets/application.min.css.map +1 -1
  3. package/.server/client/stylesheets/shared.scss +15 -0
  4. package/.server/config/index.d.ts +1 -0
  5. package/.server/config/index.js +7 -0
  6. package/.server/config/index.js.map +1 -1
  7. package/.server/index.js +6 -2
  8. package/.server/index.js.map +1 -1
  9. package/.server/server/constants.d.ts +2 -0
  10. package/.server/server/constants.js +2 -0
  11. package/.server/server/constants.js.map +1 -1
  12. package/.server/server/forms/components.json +7 -0
  13. package/.server/server/forms/register-as-a-unicorn-breeder.yaml +18 -2
  14. package/.server/server/plugins/engine/components/UkAddressField.d.ts +15 -9
  15. package/.server/server/plugins/engine/components/UkAddressField.js +67 -6
  16. package/.server/server/plugins/engine/components/UkAddressField.js.map +1 -1
  17. package/.server/server/plugins/engine/configureEnginePlugin.d.ts +1 -1
  18. package/.server/server/plugins/engine/configureEnginePlugin.js +6 -3
  19. package/.server/server/plugins/engine/configureEnginePlugin.js.map +1 -1
  20. package/.server/server/plugins/engine/models/FormModel.d.ts +2 -0
  21. package/.server/server/plugins/engine/models/FormModel.js +3 -1
  22. package/.server/server/plugins/engine/models/FormModel.js.map +1 -1
  23. package/.server/server/plugins/engine/options.js +2 -1
  24. package/.server/server/plugins/engine/options.js.map +1 -1
  25. package/.server/server/plugins/engine/pageControllers/QuestionPageController.d.ts +1 -0
  26. package/.server/server/plugins/engine/pageControllers/QuestionPageController.js +46 -3
  27. package/.server/server/plugins/engine/pageControllers/QuestionPageController.js.map +1 -1
  28. package/.server/server/plugins/engine/plugin.js +13 -1
  29. package/.server/server/plugins/engine/plugin.js.map +1 -1
  30. package/.server/server/plugins/engine/routes/index.js +41 -3
  31. package/.server/server/plugins/engine/routes/index.js.map +1 -1
  32. package/.server/server/plugins/engine/types.d.ts +19 -1
  33. package/.server/server/plugins/engine/types.js.map +1 -1
  34. package/.server/server/plugins/engine/validationHelpers.d.ts +15 -0
  35. package/.server/server/plugins/engine/validationHelpers.js +29 -0
  36. package/.server/server/plugins/engine/validationHelpers.js.map +1 -0
  37. package/.server/server/plugins/engine/views/components/ukaddressfield.html +50 -6
  38. package/.server/server/plugins/engine/vision.js +3 -1
  39. package/.server/server/plugins/engine/vision.js.map +1 -1
  40. package/.server/server/plugins/postcode-lookup/index.d.ts +8 -0
  41. package/.server/server/plugins/postcode-lookup/index.js +21 -0
  42. package/.server/server/plugins/postcode-lookup/index.js.map +1 -0
  43. package/.server/server/plugins/postcode-lookup/models/index.d.ts +255 -0
  44. package/.server/server/plugins/postcode-lookup/models/index.js +517 -0
  45. package/.server/server/plugins/postcode-lookup/models/index.js.map +1 -0
  46. package/.server/server/plugins/postcode-lookup/routes/index.d.ts +19 -0
  47. package/.server/server/plugins/postcode-lookup/routes/index.js +267 -0
  48. package/.server/server/plugins/postcode-lookup/routes/index.js.map +1 -0
  49. package/.server/server/plugins/postcode-lookup/service.d.ts +26 -0
  50. package/.server/server/plugins/postcode-lookup/service.js +148 -0
  51. package/.server/server/plugins/postcode-lookup/service.js.map +1 -0
  52. package/.server/server/plugins/postcode-lookup/service.test.js +144 -0
  53. package/.server/server/plugins/postcode-lookup/service.test.js.map +1 -0
  54. package/.server/server/plugins/postcode-lookup/test/__stubs__/postcode.d.ts +282 -0
  55. package/.server/server/plugins/postcode-lookup/test/__stubs__/postcode.js +370 -0
  56. package/.server/server/plugins/postcode-lookup/test/__stubs__/postcode.js.map +1 -0
  57. package/.server/server/plugins/postcode-lookup/test/__stubs__/query.d.ts +131 -0
  58. package/.server/server/plugins/postcode-lookup/test/__stubs__/query.js +195 -0
  59. package/.server/server/plugins/postcode-lookup/test/__stubs__/query.js.map +1 -0
  60. package/.server/server/plugins/postcode-lookup/test/__stubs__/uprn.d.ts +51 -0
  61. package/.server/server/plugins/postcode-lookup/test/__stubs__/uprn.js +52 -0
  62. package/.server/server/plugins/postcode-lookup/test/__stubs__/uprn.js.map +1 -0
  63. package/.server/server/plugins/postcode-lookup/types.d.ts +204 -0
  64. package/.server/server/plugins/postcode-lookup/types.js +144 -0
  65. package/.server/server/plugins/postcode-lookup/types.js.map +1 -0
  66. package/.server/server/plugins/postcode-lookup/views/postcode-lookup-details.html +83 -0
  67. package/.server/server/routes/types.d.ts +6 -1
  68. package/.server/server/routes/types.js +6 -0
  69. package/.server/server/routes/types.js.map +1 -1
  70. package/.server/server/schemas/index.js +1 -1
  71. package/.server/server/schemas/index.js.map +1 -1
  72. package/.server/server/types.d.ts +1 -0
  73. package/.server/server/types.js.map +1 -1
  74. package/package.json +2 -2
  75. package/src/client/stylesheets/shared.scss +15 -0
  76. package/src/config/index.ts +9 -1
  77. package/src/index.ts +5 -4
  78. package/src/server/constants.js +2 -0
  79. package/src/server/forms/components.json +7 -0
  80. package/src/server/forms/register-as-a-unicorn-breeder.yaml +18 -2
  81. package/src/server/plugins/engine/components/UkAddressField.test.ts +50 -27
  82. package/src/server/plugins/engine/components/UkAddressField.ts +91 -8
  83. package/src/server/plugins/engine/configureEnginePlugin.ts +5 -3
  84. package/src/server/plugins/engine/models/FormModel.ts +10 -2
  85. package/src/server/plugins/engine/options.js +2 -1
  86. package/src/server/plugins/engine/pageControllers/QuestionPageController.test.ts +1 -0
  87. package/src/server/plugins/engine/pageControllers/QuestionPageController.ts +69 -1
  88. package/src/server/plugins/engine/plugin.ts +13 -1
  89. package/src/server/plugins/engine/routes/index.test.ts +1 -0
  90. package/src/server/plugins/engine/routes/index.ts +71 -3
  91. package/src/server/plugins/engine/types.ts +21 -1
  92. package/src/server/plugins/engine/validationHelpers.ts +48 -0
  93. package/src/server/plugins/engine/views/components/ukaddressfield.html +50 -6
  94. package/src/server/plugins/engine/vision.ts +6 -0
  95. package/src/server/plugins/postcode-lookup/index.js +21 -0
  96. package/src/server/plugins/postcode-lookup/models/index.js +549 -0
  97. package/src/server/plugins/postcode-lookup/routes/index.js +258 -0
  98. package/src/server/plugins/postcode-lookup/service.js +188 -0
  99. package/src/server/plugins/postcode-lookup/service.test.js +177 -0
  100. package/src/server/plugins/postcode-lookup/test/__stubs__/postcode.js +382 -0
  101. package/src/server/plugins/postcode-lookup/test/__stubs__/query.js +200 -0
  102. package/src/server/plugins/postcode-lookup/test/__stubs__/uprn.js +53 -0
  103. package/src/server/plugins/postcode-lookup/types.js +143 -0
  104. package/src/server/plugins/postcode-lookup/views/postcode-lookup-details.html +83 -0
  105. package/src/server/postcode-lookup.test.ts +64 -0
  106. package/src/server/routes/types.ts +7 -1
  107. package/src/server/schemas/index.ts +5 -7
  108. package/src/server/types.ts +1 -0
@@ -0,0 +1,204 @@
1
+ export type PostcodeLookupConfiguration = {
2
+ ordnanceSurveyApiKey: string;
3
+ };
4
+ export type PostcodeLookupDispatchArgs = {
5
+ name: string;
6
+ step?: string;
7
+ };
8
+ export type PostcodeLookupDispatchData = {
9
+ sourceUrl: string;
10
+ formName: string;
11
+ componentName: string;
12
+ componentTitle: string;
13
+ componentHint?: string;
14
+ step?: string;
15
+ };
16
+ export type PostcodeLookupSessionData = {
17
+ initial: PostcodeLookupDispatchData;
18
+ details: PostcodeLookupDetailsData;
19
+ };
20
+ /**
21
+ * The postcode lookup details form view model data
22
+ */
23
+ export type PostcodeLookupDetailsData = {
24
+ /**
25
+ * - postcode query
26
+ */
27
+ postcodeQuery: string;
28
+ /**
29
+ * - Building name or number query
30
+ */
31
+ buildingNameQuery: string;
32
+ };
33
+ /**
34
+ * Postcode lookup query params
35
+ */
36
+ export type PostcodeLookupQuery = {
37
+ /**
38
+ * - step
39
+ */
40
+ step?: string | undefined;
41
+ };
42
+ export type PostcodeLookupDetailsPayloadProperties = {
43
+ /**
44
+ * - step
45
+ */
46
+ step: string;
47
+ };
48
+ export type PostcodeLookupDetailsPayload = PostcodeLookupDetailsData & PostcodeLookupDetailsPayloadProperties;
49
+ export type PostcodeLookupSelectPayload = {
50
+ /**
51
+ * - step
52
+ */
53
+ step: string;
54
+ /**
55
+ * - postcode
56
+ */
57
+ uprn: string;
58
+ };
59
+ /**
60
+ * Postcode lookup get request
61
+ */
62
+ export type PostcodeLookupGetRequestRefs = {
63
+ /**
64
+ * - Request query
65
+ */
66
+ Query: PostcodeLookupQuery;
67
+ };
68
+ /**
69
+ * Postcode lookup post request
70
+ */
71
+ export type PostcodeLookupPostRequestRefs = {
72
+ /**
73
+ * - Request payload
74
+ */
75
+ Payload: PostcodeLookupDetailsPayload | PostcodeLookupSelectPayload;
76
+ };
77
+ export type PostcodeLookupRequestRefs = PostcodeLookupGetRequestRefs | PostcodeLookupPostRequestRefs;
78
+ export type PostcodeLookupGetRequest = Request<PostcodeLookupGetRequestRefs>;
79
+ export type PostcodeLookupPostRequest = Request<PostcodeLookupPostRequestRefs>;
80
+ export type PostcodeLookupRequest = PostcodeLookupGetRequest | PostcodeLookupPostRequest;
81
+ export type PostcodeLookupManualPayload = {
82
+ /**
83
+ * - The address line 1
84
+ */
85
+ addressLine1: string;
86
+ /**
87
+ * - The address line 2
88
+ */
89
+ addressLine2: string;
90
+ /**
91
+ * - The address town or city
92
+ */
93
+ town: string;
94
+ /**
95
+ * - The address county
96
+ */
97
+ county: string;
98
+ /**
99
+ * - The address postcode
100
+ */
101
+ postcode: string;
102
+ };
103
+ export type Address = {
104
+ /**
105
+ * - The unique property reference
106
+ */
107
+ uprn: string;
108
+ /**
109
+ * - The full address
110
+ */
111
+ address: string;
112
+ /**
113
+ * - Address line 1
114
+ */
115
+ addressLine1: string;
116
+ /**
117
+ * - Address line 2
118
+ */
119
+ addressLine2: string;
120
+ /**
121
+ * - Address town
122
+ */
123
+ town: string;
124
+ /**
125
+ * - Address county
126
+ */
127
+ county: string;
128
+ /**
129
+ * - Address postcode
130
+ */
131
+ postcode: string;
132
+ /**
133
+ * - The full formatted address
134
+ */
135
+ formatted: string;
136
+ };
137
+ /**
138
+ * OS places address response
139
+ */
140
+ export type DeliveryPointAddress = {
141
+ /**
142
+ * - Unique property reference number
143
+ */
144
+ UPRN: string;
145
+ /**
146
+ * - Unique delivery point Reference Number
147
+ */
148
+ UDPRN: string;
149
+ /**
150
+ * - Address
151
+ */
152
+ ADDRESS: string;
153
+ /**
154
+ * - Organisation name
155
+ */
156
+ ORGANISATION_NAME: string;
157
+ /**
158
+ * - Sub building name
159
+ */
160
+ SUB_BUILDING_NAME: string;
161
+ /**
162
+ * - Building name
163
+ */
164
+ BUILDING_NAME: string;
165
+ /**
166
+ * - Building number
167
+ */
168
+ BUILDING_NUMBER: string;
169
+ /**
170
+ * - Throughfare name
171
+ */
172
+ THOROUGHFARE_NAME: string;
173
+ /**
174
+ * - Dependent locality
175
+ */
176
+ DEPENDENT_LOCALITY: string;
177
+ /**
178
+ * - Post town
179
+ */
180
+ POST_TOWN: string;
181
+ /**
182
+ * - Postcode
183
+ */
184
+ POSTCODE: string;
185
+ };
186
+ /**
187
+ * OS places DPA response
188
+ */
189
+ export type DeliveryPointAddressItem = {
190
+ /**
191
+ * - Delivery point address
192
+ */
193
+ DPA: DeliveryPointAddress;
194
+ };
195
+ /**
196
+ * OS places DPA response
197
+ */
198
+ export type DeliveryPointAddressResult = {
199
+ /**
200
+ * - Delivery point address results
201
+ */
202
+ results?: DeliveryPointAddressItem[] | undefined;
203
+ };
204
+ import type { Request } from '@hapi/hapi';
@@ -0,0 +1,144 @@
1
+ /**
2
+ * @typedef {{
3
+ * ordnanceSurveyApiKey: string
4
+ * }} PostcodeLookupConfiguration
5
+ */
6
+
7
+ /**
8
+ * @typedef {{
9
+ * name: string
10
+ * step?: string
11
+ * }} PostcodeLookupDispatchArgs
12
+ */
13
+
14
+ /**
15
+ * @typedef {{
16
+ * sourceUrl: string,
17
+ * formName: string
18
+ * componentName: string
19
+ * componentTitle: string,
20
+ * componentHint?: string
21
+ * step?: string
22
+ * }} PostcodeLookupDispatchData
23
+ */
24
+
25
+ /**
26
+ * @typedef {{
27
+ * initial: PostcodeLookupDispatchData
28
+ * details: PostcodeLookupDetailsData
29
+ * }} PostcodeLookupSessionData
30
+ */
31
+
32
+ //
33
+ // Model types
34
+ //
35
+
36
+ /**
37
+ * The postcode lookup details form view model data
38
+ * @typedef {object} PostcodeLookupDetailsData
39
+ * @property {string} postcodeQuery - postcode query
40
+ * @property {string} buildingNameQuery - Building name or number query
41
+ */
42
+
43
+ //
44
+ // Route types
45
+ //
46
+
47
+ /**
48
+ * Postcode lookup query params
49
+ * @typedef {object} PostcodeLookupQuery
50
+ * @property {string} [step] - step
51
+ */
52
+
53
+ /**
54
+ * @typedef {object} PostcodeLookupDetailsPayloadProperties
55
+ * @property {string} step - step
56
+ */
57
+
58
+ /**
59
+ * @typedef {PostcodeLookupDetailsData & PostcodeLookupDetailsPayloadProperties} PostcodeLookupDetailsPayload
60
+ */
61
+
62
+ /**
63
+ * @typedef {object} PostcodeLookupSelectPayload
64
+ * @property {string} step - step
65
+ * @property {string} uprn - postcode
66
+ */
67
+
68
+ /**
69
+ * Postcode lookup get request
70
+ * @typedef {object} PostcodeLookupGetRequestRefs
71
+ * @property {PostcodeLookupQuery} Query - Request query
72
+ */
73
+
74
+ /**
75
+ * Postcode lookup post request
76
+ * @typedef {object} PostcodeLookupPostRequestRefs
77
+ * @property {PostcodeLookupDetailsPayload | PostcodeLookupSelectPayload} Payload - Request payload
78
+ */
79
+
80
+ /**
81
+ * @typedef {PostcodeLookupGetRequestRefs | PostcodeLookupPostRequestRefs} PostcodeLookupRequestRefs
82
+ * @typedef {Request<PostcodeLookupGetRequestRefs>} PostcodeLookupGetRequest
83
+ * @typedef {Request<PostcodeLookupPostRequestRefs>} PostcodeLookupPostRequest
84
+ * @typedef {PostcodeLookupGetRequest | PostcodeLookupPostRequest} PostcodeLookupRequest
85
+ */
86
+
87
+ /**
88
+ * @typedef {object} PostcodeLookupManualPayload
89
+ * @property {string} addressLine1 - The address line 1
90
+ * @property {string} addressLine2 - The address line 2
91
+ * @property {string} town - The address town or city
92
+ * @property {string} county - The address county
93
+ * @property {string} postcode - The address postcode
94
+ */
95
+
96
+ //
97
+ // Service types
98
+ //
99
+
100
+ /**
101
+ * @typedef {object} Address
102
+ * @property {string} uprn - The unique property reference
103
+ * @property {string} address - The full address
104
+ * @property {string} addressLine1 - Address line 1
105
+ * @property {string} addressLine2 - Address line 2
106
+ * @property {string} town - Address town
107
+ * @property {string} county - Address county
108
+ * @property {string} postcode - Address postcode
109
+ * @property {string} formatted - The full formatted address
110
+ */
111
+
112
+ /**
113
+ * OS places address response
114
+ * @typedef {object} DeliveryPointAddress
115
+ * @property {string} UPRN - Unique property reference number
116
+ * @property {string} UDPRN - Unique delivery point Reference Number
117
+ * @property {string} ADDRESS - Address
118
+ * @property {string} ORGANISATION_NAME - Organisation name
119
+ * @property {string} SUB_BUILDING_NAME - Sub building name
120
+ * @property {string} BUILDING_NAME - Building name
121
+ * @property {string} BUILDING_NUMBER - Building number
122
+ * @property {string} THOROUGHFARE_NAME - Throughfare name
123
+ * @property {string} DEPENDENT_LOCALITY - Dependent locality
124
+ * @property {string} POST_TOWN - Post town
125
+ * @property {string} POSTCODE - Postcode
126
+ */
127
+
128
+ /**
129
+ * OS places DPA response
130
+ * @typedef {object} DeliveryPointAddressItem
131
+ * @property {DeliveryPointAddress} DPA - Delivery point address
132
+ */
133
+
134
+ /**
135
+ * OS places DPA response
136
+ * @typedef {object} DeliveryPointAddressResult
137
+ * @property {DeliveryPointAddressItem[]} [results] - Delivery point address results
138
+ */
139
+
140
+ /**
141
+ * @import { Request } from '@hapi/hapi'
142
+ * @import { FormPayload } from '~/src/server/plugins/engine/types.js'
143
+ */
144
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../../src/server/plugins/postcode-lookup/types.js"],"sourcesContent":["/**\n * @typedef {{\n * ordnanceSurveyApiKey: string\n * }} PostcodeLookupConfiguration\n */\n\n/**\n * @typedef {{\n * name: string\n * step?: string\n * }} PostcodeLookupDispatchArgs\n */\n\n/**\n * @typedef {{\n * sourceUrl: string,\n * formName: string\n * componentName: string\n * componentTitle: string,\n * componentHint?: string\n * step?: string\n * }} PostcodeLookupDispatchData\n */\n\n/**\n * @typedef {{\n * initial: PostcodeLookupDispatchData\n * details: PostcodeLookupDetailsData\n * }} PostcodeLookupSessionData\n */\n\n//\n// Model types\n//\n\n/**\n * The postcode lookup details form view model data\n * @typedef {object} PostcodeLookupDetailsData\n * @property {string} postcodeQuery - postcode query\n * @property {string} buildingNameQuery - Building name or number query\n */\n\n//\n// Route types\n//\n\n/**\n * Postcode lookup query params\n * @typedef {object} PostcodeLookupQuery\n * @property {string} [step] - step\n */\n\n/**\n * @typedef {object} PostcodeLookupDetailsPayloadProperties\n * @property {string} step - step\n */\n\n/**\n * @typedef {PostcodeLookupDetailsData & PostcodeLookupDetailsPayloadProperties} PostcodeLookupDetailsPayload\n */\n\n/**\n * @typedef {object} PostcodeLookupSelectPayload\n * @property {string} step - step\n * @property {string} uprn - postcode\n */\n\n/**\n * Postcode lookup get request\n * @typedef {object} PostcodeLookupGetRequestRefs\n * @property {PostcodeLookupQuery} Query - Request query\n */\n\n/**\n * Postcode lookup post request\n * @typedef {object} PostcodeLookupPostRequestRefs\n * @property {PostcodeLookupDetailsPayload | PostcodeLookupSelectPayload} Payload - Request payload\n */\n\n/**\n * @typedef {PostcodeLookupGetRequestRefs | PostcodeLookupPostRequestRefs} PostcodeLookupRequestRefs\n * @typedef {Request<PostcodeLookupGetRequestRefs>} PostcodeLookupGetRequest\n * @typedef {Request<PostcodeLookupPostRequestRefs>} PostcodeLookupPostRequest\n * @typedef {PostcodeLookupGetRequest | PostcodeLookupPostRequest} PostcodeLookupRequest\n */\n\n/**\n * @typedef {object} PostcodeLookupManualPayload\n * @property {string} addressLine1 - The address line 1\n * @property {string} addressLine2 - The address line 2\n * @property {string} town - The address town or city\n * @property {string} county - The address county\n * @property {string} postcode - The address postcode\n */\n\n//\n// Service types\n//\n\n/**\n * @typedef {object} Address\n * @property {string} uprn - The unique property reference\n * @property {string} address - The full address\n * @property {string} addressLine1 - Address line 1\n * @property {string} addressLine2 - Address line 2\n * @property {string} town - Address town\n * @property {string} county - Address county\n * @property {string} postcode - Address postcode\n * @property {string} formatted - The full formatted address\n */\n\n/**\n * OS places address response\n * @typedef {object} DeliveryPointAddress\n * @property {string} UPRN - Unique property reference number\n * @property {string} UDPRN - Unique delivery point Reference Number\n * @property {string} ADDRESS - Address\n * @property {string} ORGANISATION_NAME - Organisation name\n * @property {string} SUB_BUILDING_NAME - Sub building name\n * @property {string} BUILDING_NAME - Building name\n * @property {string} BUILDING_NUMBER - Building number\n * @property {string} THOROUGHFARE_NAME - Throughfare name\n * @property {string} DEPENDENT_LOCALITY - Dependent locality\n * @property {string} POST_TOWN - Post town\n * @property {string} POSTCODE - Postcode\n */\n\n/**\n * OS places DPA response\n * @typedef {object} DeliveryPointAddressItem\n * @property {DeliveryPointAddress} DPA - Delivery point address\n */\n\n/**\n * OS places DPA response\n * @typedef {object} DeliveryPointAddressResult\n * @property {DeliveryPointAddressItem[]} [results] - Delivery point address results\n */\n\n/**\n * @import { Request } from '@hapi/hapi'\n * @import { FormPayload } from '~/src/server/plugins/engine/types.js'\n */\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA","ignoreList":[]}
@@ -0,0 +1,83 @@
1
+ {% extends baseLayoutPath %}
2
+
3
+ {% from "govuk/components/error-summary/macro.njk" import govukErrorSummary %}
4
+ {% from "govuk/components/input/macro.njk" import govukInput %}
5
+ {% from "govuk/components/select/macro.njk" import govukSelect %}
6
+ {% from "govuk/components/button/macro.njk" import govukButton %}
7
+ {% from "govuk/components/inset-text/macro.njk" import govukInsetText %}
8
+ {% from "govuk/components/hint/macro.njk" import govukHint %}
9
+ {% from "govuk/components/fieldset/macro.njk" import govukFieldset %}
10
+
11
+ {% block content %}
12
+ <div class="govuk-grid-row">
13
+ <div class="govuk-grid-column-two-thirds">
14
+ {% if errors %}
15
+ {{ govukErrorSummary({
16
+ titleText: "There is a problem",
17
+ errorList: errors
18
+ }) }}
19
+ {% endif %}
20
+
21
+ {% include "partials/heading.html" %}
22
+
23
+ <form method="post">
24
+ <input type="hidden" name="crumb" value="{{ crumb }}">
25
+ <input type="hidden" name="step" value="{{ step }}">
26
+
27
+ {% switch step %}
28
+ {% case "details" %}
29
+ <!-- Postcode lookup details -->
30
+ {{ govukInput(fields.postcodeQuery) }}
31
+ {{ govukInput(fields.buildingNameQuery) }}
32
+ {% case "select" %}
33
+ <!-- Postcode lookup select -->
34
+ <!-- Postcode lookup details display -->
35
+ {%- set detailsHtml -%}
36
+ <strong>{{ details.postcodeQuery }}</strong>{% if details.buildingNameQuery %} and <strong>{{ details.buildingNameQuery }}</strong>{% endif %}
37
+ {%- endset -%}
38
+
39
+ {% if hasAddresses %}
40
+ <p class="govuk-body">
41
+ {{addressCount}} address{{ "es" if hasMultipleAddresses }} found for {{ detailsHtml | safe }}. <a href="{{ searchAgainLink.href }}" class="govuk-link govuk-link--no-visited-state">{{ searchAgainLink.text }}</a>
42
+ </p>
43
+ {% endif %}
44
+
45
+ {% if hasMultipleAddresses %}
46
+ <!-- Multiple address found - show drop down select -->
47
+ {{ govukSelect(fields.uprn) }}
48
+ {% elif singleAddress %}
49
+ <!-- Single address found - show single item -->
50
+ {{ govukInput(fields.uprn) }}
51
+ {{ govukInsetText({
52
+ text: singleAddress.formatted
53
+ }) }}
54
+ {% else %}
55
+ <!-- No addresses found - show try again -->
56
+ <p class="govuk-body">We could not find an address that matches {{ detailsHtml | safe }}.</p>
57
+ {% endif %}
58
+ {% case "manual" %}
59
+ <!-- Postcode lookup manual entry -->
60
+ {% if hint %}
61
+ {{ govukHint(hint) }}
62
+ {% endif %}
63
+
64
+ {{ govukInput(fields.addressLine1) }}
65
+ {{ govukInput(fields.addressLine2) }}
66
+ {{ govukInput(fields.town) }}
67
+ {{ govukInput(fields.county) }}
68
+ {{ govukInput(fields.postcode) }}
69
+ {% endswitch %}
70
+
71
+ <div class="govuk-button-group">
72
+ {{ govukButton(buttons.continueButton) }}
73
+
74
+ {% if buttons.manualLink %}
75
+ <p class="govuk-body">or <a class="govuk-link govuk-link--no-visited-state" href="{{ buttons.manualLink.href }}">{{buttons.manualLink.text}}</a></p>
76
+ {% elif buttons.detailsLink %}
77
+ <p class="govuk-body">or <a class="govuk-link govuk-link--no-visited-state" href="{{ buttons.detailsLink.href }}">{{buttons.detailsLink.text}}</a></p>
78
+ {% endif %}
79
+ </div>
80
+ </form>
81
+ </div>
82
+ </div>
83
+ {% endblock %}
@@ -32,9 +32,14 @@ export declare enum FormAction {
32
32
  Delete = "delete",
33
33
  AddAnother = "add-another",
34
34
  Send = "send",
35
- SaveAndExit = "save-and-exit"
35
+ SaveAndExit = "save-and-exit",
36
+ External = "external"
36
37
  }
37
38
  export declare enum FormStatus {
38
39
  Draft = "draft",
39
40
  Live = "live"
40
41
  }
42
+ export declare enum ExternalActions {
43
+ PostcodeLookup = "postcode-lookup",
44
+ AnotherExternalAction = "another-external-action"
45
+ }
@@ -5,6 +5,7 @@ export let FormAction = /*#__PURE__*/function (FormAction) {
5
5
  FormAction["AddAnother"] = "add-another";
6
6
  FormAction["Send"] = "send";
7
7
  FormAction["SaveAndExit"] = "save-and-exit";
8
+ FormAction["External"] = "external";
8
9
  return FormAction;
9
10
  }({});
10
11
  export let FormStatus = /*#__PURE__*/function (FormStatus) {
@@ -12,4 +13,9 @@ export let FormStatus = /*#__PURE__*/function (FormStatus) {
12
13
  FormStatus["Live"] = "live";
13
14
  return FormStatus;
14
15
  }({});
16
+ export let ExternalActions = /*#__PURE__*/function (ExternalActions) {
17
+ ExternalActions["PostcodeLookup"] = "postcode-lookup";
18
+ ExternalActions["AnotherExternalAction"] = "another-external-action";
19
+ return ExternalActions;
20
+ }({});
15
21
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":["FormAction","FormStatus"],"sources":["../../../src/server/routes/types.ts"],"sourcesContent":["import {\n type ReqRefDefaults,\n type Request,\n type ResponseToolkit\n} from '@hapi/hapi'\n\nimport { type FormPayload } from '~/src/server/plugins/engine/types.js'\n\nexport interface FormQuery extends Partial<Record<string, string>> {\n /**\n * Allow preview URL direct access without relevant page checks\n */\n force?: string\n\n /**\n * Redirect location after 'continue' form action\n */\n returnUrl?: string\n}\n\nexport interface FormParams extends Partial<Record<string, string>> {\n path: string\n slug: string\n state?: FormStatus\n}\n\nexport interface FormRequestRefs\n extends Omit<ReqRefDefaults, 'Params' | 'Payload' | 'Query'> {\n Params: FormParams\n Payload: object | undefined\n Query: FormQuery\n}\n\nexport interface FormRequestPayloadRefs extends FormRequestRefs {\n Payload: FormPayload\n}\n\nexport type FormRequest = Request<FormRequestRefs>\nexport type FormRequestPayload = Request<FormRequestPayloadRefs>\nexport type FormResponseToolkit = Pick<\n ResponseToolkit,\n 'redirect' | 'view' | 'continue'\n>\n\nexport enum FormAction {\n Continue = 'continue',\n Validate = 'validate',\n Delete = 'delete',\n AddAnother = 'add-another',\n Send = 'send',\n SaveAndExit = 'save-and-exit'\n}\n\nexport enum FormStatus {\n Draft = 'draft',\n Live = 'live'\n}\n"],"mappings":"AA4CA,WAAYA,UAAU,0BAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAStB,WAAYC,UAAU,0BAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":["FormAction","FormStatus","ExternalActions"],"sources":["../../../src/server/routes/types.ts"],"sourcesContent":["import {\n type ReqRefDefaults,\n type Request,\n type ResponseToolkit\n} from '@hapi/hapi'\n\nimport { type FormPayload } from '~/src/server/plugins/engine/types.js'\n\nexport interface FormQuery extends Partial<Record<string, string>> {\n /**\n * Allow preview URL direct access without relevant page checks\n */\n force?: string\n\n /**\n * Redirect location after 'continue' form action\n */\n returnUrl?: string\n}\n\nexport interface FormParams extends Partial<Record<string, string>> {\n path: string\n slug: string\n state?: FormStatus\n}\n\nexport interface FormRequestRefs\n extends Omit<ReqRefDefaults, 'Params' | 'Payload' | 'Query'> {\n Params: FormParams\n Payload: object | undefined\n Query: FormQuery\n}\n\nexport interface FormRequestPayloadRefs extends FormRequestRefs {\n Payload: FormPayload\n}\n\nexport type FormRequest = Request<FormRequestRefs>\nexport type FormRequestPayload = Request<FormRequestPayloadRefs>\nexport type FormResponseToolkit = Pick<\n ResponseToolkit,\n 'redirect' | 'view' | 'continue'\n>\n\nexport enum FormAction {\n Continue = 'continue',\n Validate = 'validate',\n Delete = 'delete',\n AddAnother = 'add-another',\n Send = 'send',\n SaveAndExit = 'save-and-exit',\n External = 'external'\n}\n\nexport enum FormStatus {\n Draft = 'draft',\n Live = 'live'\n}\n\nexport enum ExternalActions {\n PostcodeLookup = 'postcode-lookup',\n AnotherExternalAction = 'another-external-action'\n}\n"],"mappings":"AA4CA,WAAYA,UAAU,0BAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAUtB,WAAYC,UAAU,0BAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAKtB,WAAYC,eAAe,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  import Joi from 'joi';
2
2
  import { FormAction, FormStatus } from "../routes/types.js";
3
3
  export const stateSchema = Joi.string().valid(FormStatus.Draft, FormStatus.Live).required();
4
- export const actionSchema = Joi.string().valid(FormAction.Continue, FormAction.Validate, FormAction.Delete, FormAction.AddAnother, FormAction.Send, FormAction.SaveAndExit).default(FormAction.Validate).optional();
4
+ export const actionSchema = Joi.string().pattern(new RegExp(`^${FormAction.External}-[a-zA-Z-:]*$`)).allow(...Object.values(FormAction).filter(value => value !== FormAction.External)).default(FormAction.Validate).optional();
5
5
  export const pathSchema = Joi.string().required();
6
6
  export const itemIdSchema = Joi.string().uuid().required();
7
7
  export const crumbSchema = Joi.string().optional().allow('');
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Joi","FormAction","FormStatus","stateSchema","string","valid","Draft","Live","required","actionSchema","Continue","Validate","Delete","AddAnother","Send","SaveAndExit","default","optional","pathSchema","itemIdSchema","uuid","crumbSchema","allow","confirmSchema","boolean","empty","paramsSchema","object","keys","action","confirm","crumb","itemId"],"sources":["../../../src/server/schemas/index.ts"],"sourcesContent":["import Joi from 'joi'\n\nimport { type FormPayloadParams } from '~/src/server/plugins/engine/types.js'\nimport { FormAction, FormStatus } from '~/src/server/routes/types.js'\n\nexport const stateSchema = Joi.string<FormStatus>()\n .valid(FormStatus.Draft, FormStatus.Live)\n .required()\n\nexport const actionSchema = Joi.string<FormAction>()\n .valid(\n FormAction.Continue,\n FormAction.Validate,\n FormAction.Delete,\n FormAction.AddAnother,\n FormAction.Send,\n FormAction.SaveAndExit\n )\n .default(FormAction.Validate)\n .optional()\n\nexport const pathSchema = Joi.string().required()\nexport const itemIdSchema = Joi.string().uuid().required()\nexport const crumbSchema = Joi.string().optional().allow('')\nexport const confirmSchema = Joi.boolean().empty(false)\n\nexport const paramsSchema = Joi.object<FormPayloadParams>()\n .keys({\n action: actionSchema,\n confirm: confirmSchema,\n crumb: crumbSchema,\n itemId: itemIdSchema.optional()\n })\n .default({})\n .optional()\n"],"mappings":"AAAA,OAAOA,GAAG,MAAM,KAAK;AAGrB,SAASC,UAAU,EAAEC,UAAU;AAE/B,OAAO,MAAMC,WAAW,GAAGH,GAAG,CAACI,MAAM,CAAa,CAAC,CAChDC,KAAK,CAACH,UAAU,CAACI,KAAK,EAAEJ,UAAU,CAACK,IAAI,CAAC,CACxCC,QAAQ,CAAC,CAAC;AAEb,OAAO,MAAMC,YAAY,GAAGT,GAAG,CAACI,MAAM,CAAa,CAAC,CACjDC,KAAK,CACJJ,UAAU,CAACS,QAAQ,EACnBT,UAAU,CAACU,QAAQ,EACnBV,UAAU,CAACW,MAAM,EACjBX,UAAU,CAACY,UAAU,EACrBZ,UAAU,CAACa,IAAI,EACfb,UAAU,CAACc,WACb,CAAC,CACAC,OAAO,CAACf,UAAU,CAACU,QAAQ,CAAC,CAC5BM,QAAQ,CAAC,CAAC;AAEb,OAAO,MAAMC,UAAU,GAAGlB,GAAG,CAACI,MAAM,CAAC,CAAC,CAACI,QAAQ,CAAC,CAAC;AACjD,OAAO,MAAMW,YAAY,GAAGnB,GAAG,CAACI,MAAM,CAAC,CAAC,CAACgB,IAAI,CAAC,CAAC,CAACZ,QAAQ,CAAC,CAAC;AAC1D,OAAO,MAAMa,WAAW,GAAGrB,GAAG,CAACI,MAAM,CAAC,CAAC,CAACa,QAAQ,CAAC,CAAC,CAACK,KAAK,CAAC,EAAE,CAAC;AAC5D,OAAO,MAAMC,aAAa,GAAGvB,GAAG,CAACwB,OAAO,CAAC,CAAC,CAACC,KAAK,CAAC,KAAK,CAAC;AAEvD,OAAO,MAAMC,YAAY,GAAG1B,GAAG,CAAC2B,MAAM,CAAoB,CAAC,CACxDC,IAAI,CAAC;EACJC,MAAM,EAAEpB,YAAY;EACpBqB,OAAO,EAAEP,aAAa;EACtBQ,KAAK,EAAEV,WAAW;EAClBW,MAAM,EAAEb,YAAY,CAACF,QAAQ,CAAC;AAChC,CAAC,CAAC,CACDD,OAAO,CAAC,CAAC,CAAC,CAAC,CACXC,QAAQ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["Joi","FormAction","FormStatus","stateSchema","string","valid","Draft","Live","required","actionSchema","pattern","RegExp","External","allow","Object","values","filter","value","default","Validate","optional","pathSchema","itemIdSchema","uuid","crumbSchema","confirmSchema","boolean","empty","paramsSchema","object","keys","action","confirm","crumb","itemId"],"sources":["../../../src/server/schemas/index.ts"],"sourcesContent":["import Joi from 'joi'\n\nimport { type FormPayloadParams } from '~/src/server/plugins/engine/types.js'\nimport { FormAction, FormStatus } from '~/src/server/routes/types.js'\n\nexport const stateSchema = Joi.string<FormStatus>()\n .valid(FormStatus.Draft, FormStatus.Live)\n .required()\n\nexport const actionSchema = Joi.string<FormAction>()\n .pattern(new RegExp(`^${FormAction.External}-[a-zA-Z-:]*$`))\n .allow(\n ...Object.values(FormAction).filter(\n (value) => value !== FormAction.External\n )\n )\n .default(FormAction.Validate)\n .optional()\n\nexport const pathSchema = Joi.string().required()\nexport const itemIdSchema = Joi.string().uuid().required()\nexport const crumbSchema = Joi.string().optional().allow('')\nexport const confirmSchema = Joi.boolean().empty(false)\n\nexport const paramsSchema = Joi.object<FormPayloadParams>()\n .keys({\n action: actionSchema,\n confirm: confirmSchema,\n crumb: crumbSchema,\n itemId: itemIdSchema.optional()\n })\n .default({})\n .optional()\n"],"mappings":"AAAA,OAAOA,GAAG,MAAM,KAAK;AAGrB,SAASC,UAAU,EAAEC,UAAU;AAE/B,OAAO,MAAMC,WAAW,GAAGH,GAAG,CAACI,MAAM,CAAa,CAAC,CAChDC,KAAK,CAACH,UAAU,CAACI,KAAK,EAAEJ,UAAU,CAACK,IAAI,CAAC,CACxCC,QAAQ,CAAC,CAAC;AAEb,OAAO,MAAMC,YAAY,GAAGT,GAAG,CAACI,MAAM,CAAa,CAAC,CACjDM,OAAO,CAAC,IAAIC,MAAM,CAAC,IAAIV,UAAU,CAACW,QAAQ,eAAe,CAAC,CAAC,CAC3DC,KAAK,CACJ,GAAGC,MAAM,CAACC,MAAM,CAACd,UAAU,CAAC,CAACe,MAAM,CAChCC,KAAK,IAAKA,KAAK,KAAKhB,UAAU,CAACW,QAClC,CACF,CAAC,CACAM,OAAO,CAACjB,UAAU,CAACkB,QAAQ,CAAC,CAC5BC,QAAQ,CAAC,CAAC;AAEb,OAAO,MAAMC,UAAU,GAAGrB,GAAG,CAACI,MAAM,CAAC,CAAC,CAACI,QAAQ,CAAC,CAAC;AACjD,OAAO,MAAMc,YAAY,GAAGtB,GAAG,CAACI,MAAM,CAAC,CAAC,CAACmB,IAAI,CAAC,CAAC,CAACf,QAAQ,CAAC,CAAC;AAC1D,OAAO,MAAMgB,WAAW,GAAGxB,GAAG,CAACI,MAAM,CAAC,CAAC,CAACgB,QAAQ,CAAC,CAAC,CAACP,KAAK,CAAC,EAAE,CAAC;AAC5D,OAAO,MAAMY,aAAa,GAAGzB,GAAG,CAAC0B,OAAO,CAAC,CAAC,CAACC,KAAK,CAAC,KAAK,CAAC;AAEvD,OAAO,MAAMC,YAAY,GAAG5B,GAAG,CAAC6B,MAAM,CAAoB,CAAC,CACxDC,IAAI,CAAC;EACJC,MAAM,EAAEtB,YAAY;EACpBuB,OAAO,EAAEP,aAAa;EACtBQ,KAAK,EAAET,WAAW;EAClBU,MAAM,EAAEZ,YAAY,CAACF,QAAQ,CAAC;AAChC,CAAC,CAAC,CACDF,OAAO,CAAC,CAAC,CAAC,CAAC,CACXE,QAAQ,CAAC,CAAC","ignoreList":[]}
@@ -32,6 +32,7 @@ export interface RouteConfig {
32
32
  onRequest?: OnRequestCallback;
33
33
  saveAndExit?: PluginOptions['saveAndExit'];
34
34
  cacheServiceCreator?: (server: Server) => CacheService;
35
+ ordnanceSurveyApiKey?: string;
35
36
  }
36
37
  export interface OutputService {
37
38
  submit: (context: FormContext, request: FormRequestPayload, model: FormModel, emailAddress: string, items: DetailItem[], submitResponse: SubmitResponsePayload, formMetadata?: FormMetadata) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../src/server/types.ts"],"sourcesContent":["import {\n type FormDefinition,\n type FormMetadata,\n type SubmitPayload,\n type SubmitResponsePayload\n} from '@defra/forms-model'\nimport { type Server } from '@hapi/hapi'\n\nimport { type FormModel } from '~/src/server/plugins/engine/models/index.js'\nimport { type DetailItem } from '~/src/server/plugins/engine/models/types.js'\nimport { type PageController } from '~/src/server/plugins/engine/pageControllers/PageController.js'\nimport {\n type FormContext,\n type OnRequestCallback,\n type PluginOptions,\n type PreparePageEventRequestOptions\n} from '~/src/server/plugins/engine/types.js'\nimport {\n type FormRequestPayload,\n type FormStatus\n} from '~/src/server/routes/types.js'\nimport { type CacheService } from '~/src/server/services/cacheService.js'\n\nexport interface FormsService {\n getFormMetadata: (slug: string) => Promise<FormMetadata>\n getFormDefinition: (\n id: string,\n state: FormStatus\n ) => Promise<FormDefinition | undefined>\n}\n\nexport interface FormSubmissionService {\n persistFiles: (\n files: { fileId: string; initiatedRetrievalKey: string }[],\n persistedRetrievalKey: string\n ) => Promise<object>\n submit: (data: SubmitPayload) => Promise<SubmitResponsePayload | undefined>\n}\n\nexport interface Services {\n formsService: FormsService\n formSubmissionService: FormSubmissionService\n outputService: OutputService\n}\n\nexport interface RouteConfig {\n formFileName?: string\n formFilePath?: string\n enforceCsrf?: boolean\n services?: Services\n controllers?: Record<string, typeof PageController>\n preparePageEventRequestOptions?: PreparePageEventRequestOptions\n onRequest?: OnRequestCallback\n saveAndExit?: PluginOptions['saveAndExit']\n cacheServiceCreator?: (server: Server) => CacheService\n}\n\nexport interface OutputService {\n submit: (\n context: FormContext,\n request: FormRequestPayload,\n model: FormModel,\n emailAddress: string,\n items: DetailItem[],\n submitResponse: SubmitResponsePayload,\n formMetadata?: FormMetadata\n ) => Promise<void>\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../src/server/types.ts"],"sourcesContent":["import {\n type FormDefinition,\n type FormMetadata,\n type SubmitPayload,\n type SubmitResponsePayload\n} from '@defra/forms-model'\nimport { type Server } from '@hapi/hapi'\n\nimport { type FormModel } from '~/src/server/plugins/engine/models/index.js'\nimport { type DetailItem } from '~/src/server/plugins/engine/models/types.js'\nimport { type PageController } from '~/src/server/plugins/engine/pageControllers/PageController.js'\nimport {\n type FormContext,\n type OnRequestCallback,\n type PluginOptions,\n type PreparePageEventRequestOptions\n} from '~/src/server/plugins/engine/types.js'\nimport {\n type FormRequestPayload,\n type FormStatus\n} from '~/src/server/routes/types.js'\nimport { type CacheService } from '~/src/server/services/cacheService.js'\n\nexport interface FormsService {\n getFormMetadata: (slug: string) => Promise<FormMetadata>\n getFormDefinition: (\n id: string,\n state: FormStatus\n ) => Promise<FormDefinition | undefined>\n}\n\nexport interface FormSubmissionService {\n persistFiles: (\n files: { fileId: string; initiatedRetrievalKey: string }[],\n persistedRetrievalKey: string\n ) => Promise<object>\n submit: (data: SubmitPayload) => Promise<SubmitResponsePayload | undefined>\n}\n\nexport interface Services {\n formsService: FormsService\n formSubmissionService: FormSubmissionService\n outputService: OutputService\n}\n\nexport interface RouteConfig {\n formFileName?: string\n formFilePath?: string\n enforceCsrf?: boolean\n services?: Services\n controllers?: Record<string, typeof PageController>\n preparePageEventRequestOptions?: PreparePageEventRequestOptions\n onRequest?: OnRequestCallback\n saveAndExit?: PluginOptions['saveAndExit']\n cacheServiceCreator?: (server: Server) => CacheService\n ordnanceSurveyApiKey?: string\n}\n\nexport interface OutputService {\n submit: (\n context: FormContext,\n request: FormRequestPayload,\n model: FormModel,\n emailAddress: string,\n items: DetailItem[],\n submitResponse: SubmitResponsePayload,\n formMetadata?: FormMetadata\n ) => Promise<void>\n}\n"],"mappings":"","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@defra/forms-engine-plugin",
3
- "version": "4.0.0",
3
+ "version": "4.0.2",
4
4
  "description": "Defra forms engine",
5
5
  "type": "module",
6
6
  "files": [
@@ -70,7 +70,7 @@
70
70
  },
71
71
  "license": "SEE LICENSE IN LICENSE",
72
72
  "dependencies": {
73
- "@defra/forms-model": "^3.0.559",
73
+ "@defra/forms-model": "^3.0.560",
74
74
  "@defra/hapi-tracing": "^1.26.0",
75
75
  "@elastic/ecs-pino-format": "^1.5.0",
76
76
  "@hapi/boom": "^10.0.1",
@@ -9,3 +9,18 @@
9
9
  .autocomplete__option {
10
10
  @include govuk-typography-common;
11
11
  }
12
+
13
+ .app-hidden {
14
+ display: none;
15
+ visibility: hidden;
16
+ }
17
+
18
+ // Used in postcode lookup
19
+ .govuk-button--link {
20
+ @extend %govuk-link;
21
+ color: $govuk-link-colour;
22
+ border: none;
23
+ cursor: pointer;
24
+ background-color: transparent;
25
+ @include govuk-font($size: 19);
26
+ }
@@ -252,7 +252,15 @@ export const config = convict({
252
252
  format: String,
253
253
  default: '',
254
254
  env: 'SUBMISSION_EMAIL_ADDRESS'
255
- } as SchemaObj<string>
255
+ } as SchemaObj<string>,
256
+
257
+ ordnanceSurveyApiKey: {
258
+ doc: 'The ordnance survey api key use by the postcode lookup plugin',
259
+ format: String,
260
+ nullable: true,
261
+ default: undefined,
262
+ env: 'ORDNANCE_SURVEY_API_KEY'
263
+ } as SchemaObj<string | undefined>
256
264
  })
257
265
 
258
266
  config.validate({ allowed: 'strict' })
package/src/index.ts CHANGED
@@ -13,19 +13,20 @@ process.on('unhandledRejection', (error) => {
13
13
  throw error
14
14
  })
15
15
 
16
+ const port = config.get('port')
17
+ const ordnanceSurveyApiKey = config.get('ordnanceSurveyApiKey')
18
+
16
19
  /**
17
20
  * Main entrypoint to the application.
18
21
  */
19
22
  async function startServer() {
20
- const server = await createServer()
23
+ const server = await createServer({ ordnanceSurveyApiKey })
21
24
  await server.start()
22
25
 
23
26
  process.send?.('online')
24
27
 
25
28
  server.logger.info('Server started successfully')
26
- server.logger.info(
27
- `Access your frontend on http://localhost:${config.get('port')}`
28
- )
29
+ server.logger.info(`Access your frontend on http://localhost:${port}`)
29
30
  }
30
31
 
31
32
  startServer().catch((error: unknown) => {
@@ -1,2 +1,4 @@
1
1
  export const PREVIEW_PATH_PREFIX = '/preview'
2
2
  export const FORM_PREFIX = ''
3
+ export const EXTERNAL_STATE_PAYLOAD = 'EXTERNAL_STATE_PAYLOAD'
4
+ export const EXTERNAL_STATE_APPENDAGE = 'EXTERNAL_STATE_APPENDAGE'
@@ -120,6 +120,13 @@
120
120
  "content": "### This is a H3 in markdown\n\n[An internal link](http://localhost:3009/fictional-page)\n\n[An external link](https://defra.gov.uk/fictional-page)",
121
121
  "options": {},
122
122
  "schema": {}
123
+ },
124
+ {
125
+ "title": "Summary",
126
+ "path": "/summary",
127
+ "controller": "SummaryPageController",
128
+ "components": [],
129
+ "next": []
123
130
  }
124
131
  ]
125
132
  }