@defra/forms-engine-plugin 4.23.0 → 5.0.0-alpha.1

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 (347) hide show
  1. package/.public/assets-manifest.json +3 -5
  2. package/.public/javascripts/im-core.min.js +2 -0
  3. package/.public/javascripts/im-core.min.js.map +1 -0
  4. package/.public/javascripts/shared.min.js +1 -1
  5. package/.public/javascripts/shared.min.js.map +1 -1
  6. package/.public/javascripts/vendor/@defra.min.js +1 -1
  7. package/.public/javascripts/vendor/@defra.min.js.map +1 -1
  8. package/.public/stylesheets/application.min.css +1 -1
  9. package/.public/stylesheets/application.min.css.map +1 -1
  10. package/.server/client/javascripts/geospatial-map.js +8 -6
  11. package/.server/client/javascripts/geospatial-map.js.map +1 -1
  12. package/.server/client/javascripts/location-map.js +8 -1
  13. package/.server/client/javascripts/location-map.js.map +1 -1
  14. package/.server/client/javascripts/map.d.ts +6 -0
  15. package/.server/client/javascripts/map.js +10 -0
  16. package/.server/client/javascripts/map.js.map +1 -1
  17. package/.server/client/javascripts/sssi-dataset.d.ts +34 -0
  18. package/.server/client/javascripts/sssi-dataset.js +101 -0
  19. package/.server/client/javascripts/sssi-dataset.js.map +1 -0
  20. package/.server/client/stylesheets/shared.scss +0 -2
  21. package/.server/server/forms/register-as-a-unicorn-breeder.yaml +0 -14
  22. package/.server/server/forms/simple-form.yaml +106 -3
  23. package/.server/server/plugins/engine/components/AutocompleteField.d.ts +11 -11
  24. package/.server/server/plugins/engine/components/AutocompleteField.js +2 -2
  25. package/.server/server/plugins/engine/components/AutocompleteField.js.map +1 -1
  26. package/.server/server/plugins/engine/components/CheckboxesField.d.ts +3 -2
  27. package/.server/server/plugins/engine/components/CheckboxesField.js +4 -9
  28. package/.server/server/plugins/engine/components/CheckboxesField.js.map +1 -1
  29. package/.server/server/plugins/engine/components/ComponentCollection.d.ts +8 -7
  30. package/.server/server/plugins/engine/components/ComponentCollection.js +106 -51
  31. package/.server/server/plugins/engine/components/ComponentCollection.js.map +1 -1
  32. package/.server/server/plugins/engine/components/DatePartsField.d.ts +8 -6
  33. package/.server/server/plugins/engine/components/DatePartsField.js +27 -9
  34. package/.server/server/plugins/engine/components/DatePartsField.js.map +1 -1
  35. package/.server/server/plugins/engine/components/DeclarationField.d.ts +13 -11
  36. package/.server/server/plugins/engine/components/DeclarationField.js +31 -9
  37. package/.server/server/plugins/engine/components/DeclarationField.js.map +1 -1
  38. package/.server/server/plugins/engine/components/EastingNorthingField.d.ts +8 -5
  39. package/.server/server/plugins/engine/components/EastingNorthingField.js +42 -22
  40. package/.server/server/plugins/engine/components/EastingNorthingField.js.map +1 -1
  41. package/.server/server/plugins/engine/components/EmailAddressField.d.ts +11 -14
  42. package/.server/server/plugins/engine/components/EmailAddressField.js +2 -2
  43. package/.server/server/plugins/engine/components/EmailAddressField.js.map +1 -1
  44. package/.server/server/plugins/engine/components/FileUploadField.d.ts +14 -12
  45. package/.server/server/plugins/engine/components/FileUploadField.js +22 -12
  46. package/.server/server/plugins/engine/components/FileUploadField.js.map +1 -1
  47. package/.server/server/plugins/engine/components/FormComponent.d.ts +21 -12
  48. package/.server/server/plugins/engine/components/FormComponent.js +33 -14
  49. package/.server/server/plugins/engine/components/FormComponent.js.map +1 -1
  50. package/.server/server/plugins/engine/components/GeospatialField.d.ts +15 -12
  51. package/.server/server/plugins/engine/components/GeospatialField.js +21 -13
  52. package/.server/server/plugins/engine/components/GeospatialField.js.map +1 -1
  53. package/.server/server/plugins/engine/components/LatLongField.d.ts +8 -5
  54. package/.server/server/plugins/engine/components/LatLongField.js +32 -20
  55. package/.server/server/plugins/engine/components/LatLongField.js.map +1 -1
  56. package/.server/server/plugins/engine/components/ListFormComponent.d.ts +7 -6
  57. package/.server/server/plugins/engine/components/ListFormComponent.js +19 -7
  58. package/.server/server/plugins/engine/components/ListFormComponent.js.map +1 -1
  59. package/.server/server/plugins/engine/components/LocationFieldBase.d.ts +17 -16
  60. package/.server/server/plugins/engine/components/LocationFieldBase.js +2 -2
  61. package/.server/server/plugins/engine/components/LocationFieldBase.js.map +1 -1
  62. package/.server/server/plugins/engine/components/LocationFieldHelpers.d.ts +8 -3
  63. package/.server/server/plugins/engine/components/LocationFieldHelpers.js +14 -3
  64. package/.server/server/plugins/engine/components/LocationFieldHelpers.js.map +1 -1
  65. package/.server/server/plugins/engine/components/Markdown.d.ts +8 -7
  66. package/.server/server/plugins/engine/components/Markdown.js +5 -2
  67. package/.server/server/plugins/engine/components/Markdown.js.map +1 -1
  68. package/.server/server/plugins/engine/components/MonthYearField.d.ts +9 -7
  69. package/.server/server/plugins/engine/components/MonthYearField.js +26 -8
  70. package/.server/server/plugins/engine/components/MonthYearField.js.map +1 -1
  71. package/.server/server/plugins/engine/components/MultilineTextField.d.ts +10 -9
  72. package/.server/server/plugins/engine/components/MultilineTextField.js +2 -2
  73. package/.server/server/plugins/engine/components/MultilineTextField.js.map +1 -1
  74. package/.server/server/plugins/engine/components/NationalGridFieldNumberField.d.ts +2 -1
  75. package/.server/server/plugins/engine/components/NationalGridFieldNumberField.js +14 -6
  76. package/.server/server/plugins/engine/components/NationalGridFieldNumberField.js.map +1 -1
  77. package/.server/server/plugins/engine/components/NumberField.d.ts +10 -9
  78. package/.server/server/plugins/engine/components/NumberField.js +2 -2
  79. package/.server/server/plugins/engine/components/NumberField.js.map +1 -1
  80. package/.server/server/plugins/engine/components/OsGridRefField.d.ts +2 -1
  81. package/.server/server/plugins/engine/components/OsGridRefField.js +14 -6
  82. package/.server/server/plugins/engine/components/OsGridRefField.js.map +1 -1
  83. package/.server/server/plugins/engine/components/PaymentField.d.ts +12 -10
  84. package/.server/server/plugins/engine/components/PaymentField.js +21 -8
  85. package/.server/server/plugins/engine/components/PaymentField.js.map +1 -1
  86. package/.server/server/plugins/engine/components/SelectField.d.ts +11 -11
  87. package/.server/server/plugins/engine/components/SelectField.js +2 -2
  88. package/.server/server/plugins/engine/components/SelectField.js.map +1 -1
  89. package/.server/server/plugins/engine/components/SelectionControlField.d.ts +4 -4
  90. package/.server/server/plugins/engine/components/SelectionControlField.js +2 -2
  91. package/.server/server/plugins/engine/components/SelectionControlField.js.map +1 -1
  92. package/.server/server/plugins/engine/components/TelephoneNumberField.d.ts +10 -9
  93. package/.server/server/plugins/engine/components/TelephoneNumberField.js +2 -2
  94. package/.server/server/plugins/engine/components/TelephoneNumberField.js.map +1 -1
  95. package/.server/server/plugins/engine/components/UkAddressField.d.ts +12 -10
  96. package/.server/server/plugins/engine/components/UkAddressField.js +29 -17
  97. package/.server/server/plugins/engine/components/UkAddressField.js.map +1 -1
  98. package/.server/server/plugins/engine/components/YesNoField.d.ts +3 -0
  99. package/.server/server/plugins/engine/components/YesNoField.js +9 -0
  100. package/.server/server/plugins/engine/components/YesNoField.js.map +1 -1
  101. package/.server/server/plugins/engine/components/helpers/components.d.ts +3 -2
  102. package/.server/server/plugins/engine/components/helpers/components.js +11 -8
  103. package/.server/server/plugins/engine/components/helpers/components.js.map +1 -1
  104. package/.server/server/plugins/engine/components/types.d.ts +8 -1
  105. package/.server/server/plugins/engine/components/types.js.map +1 -1
  106. package/.server/server/plugins/engine/configureEnginePlugin.js +8 -1
  107. package/.server/server/plugins/engine/configureEnginePlugin.js.map +1 -1
  108. package/.server/server/plugins/engine/form-context.d.ts +1 -0
  109. package/.server/server/plugins/engine/form-context.js +4 -2
  110. package/.server/server/plugins/engine/form-context.js.map +1 -1
  111. package/.server/server/plugins/engine/helpers.d.ts +1 -1
  112. package/.server/server/plugins/engine/helpers.js +8 -13
  113. package/.server/server/plugins/engine/helpers.js.map +1 -1
  114. package/.server/server/plugins/engine/i18n/buildValidationMessages.d.ts +39 -0
  115. package/.server/server/plugins/engine/i18n/buildValidationMessages.js +50 -0
  116. package/.server/server/plugins/engine/i18n/buildValidationMessages.js.map +1 -0
  117. package/.server/server/plugins/engine/i18n/createFormTranslator.d.ts +5 -0
  118. package/.server/server/plugins/engine/i18n/createFormTranslator.js +18 -0
  119. package/.server/server/plugins/engine/i18n/createFormTranslator.js.map +1 -0
  120. package/.server/server/plugins/engine/i18n/createTranslator.d.ts +9 -0
  121. package/.server/server/plugins/engine/i18n/createTranslator.js +51 -0
  122. package/.server/server/plugins/engine/i18n/createTranslator.js.map +1 -0
  123. package/.server/server/plugins/engine/i18n/extractBaseTranslations.d.ts +5 -0
  124. package/.server/server/plugins/engine/i18n/extractBaseTranslations.js +57 -0
  125. package/.server/server/plugins/engine/i18n/extractBaseTranslations.js.map +1 -0
  126. package/.server/server/plugins/engine/i18n/index.d.ts +18 -0
  127. package/.server/server/plugins/engine/i18n/index.js +71 -0
  128. package/.server/server/plugins/engine/i18n/index.js.map +1 -0
  129. package/.server/server/plugins/engine/i18n/translations/cy.json +271 -0
  130. package/.server/server/plugins/engine/i18n/translations/en-GB.json +271 -0
  131. package/.server/server/plugins/engine/i18n/types.d.ts +41 -0
  132. package/.server/server/plugins/engine/i18n/types.js +2 -0
  133. package/.server/server/plugins/engine/i18n/types.js.map +1 -0
  134. package/.server/server/plugins/engine/index.js +3 -2
  135. package/.server/server/plugins/engine/index.js.map +1 -1
  136. package/.server/server/plugins/engine/models/FormModel.d.ts +9 -1
  137. package/.server/server/plugins/engine/models/FormModel.js +44 -18
  138. package/.server/server/plugins/engine/models/FormModel.js.map +1 -1
  139. package/.server/server/plugins/engine/models/SummaryViewModel.d.ts +5 -2
  140. package/.server/server/plugins/engine/models/SummaryViewModel.js +44 -18
  141. package/.server/server/plugins/engine/models/SummaryViewModel.js.map +1 -1
  142. package/.server/server/plugins/engine/options.js +2 -1
  143. package/.server/server/plugins/engine/options.js.map +1 -1
  144. package/.server/server/plugins/engine/outputFormatters/adapter/v1.js +4 -0
  145. package/.server/server/plugins/engine/outputFormatters/adapter/v1.js.map +1 -1
  146. package/.server/server/plugins/engine/outputFormatters/human/v1.js +2 -1
  147. package/.server/server/plugins/engine/outputFormatters/human/v1.js.map +1 -1
  148. package/.server/server/plugins/engine/outputFormatters/machine/v1.js +7 -6
  149. package/.server/server/plugins/engine/outputFormatters/machine/v1.js.map +1 -1
  150. package/.server/server/plugins/engine/pageControllers/FileUploadPageController.d.ts +2 -1
  151. package/.server/server/plugins/engine/pageControllers/FileUploadPageController.js +6 -3
  152. package/.server/server/plugins/engine/pageControllers/FileUploadPageController.js.map +1 -1
  153. package/.server/server/plugins/engine/pageControllers/PageController.d.ts +3 -1
  154. package/.server/server/plugins/engine/pageControllers/PageController.js +11 -1
  155. package/.server/server/plugins/engine/pageControllers/PageController.js.map +1 -1
  156. package/.server/server/plugins/engine/pageControllers/QuestionPageController.d.ts +4 -2
  157. package/.server/server/plugins/engine/pageControllers/QuestionPageController.js +52 -21
  158. package/.server/server/plugins/engine/pageControllers/QuestionPageController.js.map +1 -1
  159. package/.server/server/plugins/engine/pageControllers/RepeatPageController.d.ts +3 -2
  160. package/.server/server/plugins/engine/pageControllers/RepeatPageController.js +63 -26
  161. package/.server/server/plugins/engine/pageControllers/RepeatPageController.js.map +1 -1
  162. package/.server/server/plugins/engine/pageControllers/StartPageController.d.ts +3 -1
  163. package/.server/server/plugins/engine/pageControllers/StartPageController.js +2 -2
  164. package/.server/server/plugins/engine/pageControllers/StartPageController.js.map +1 -1
  165. package/.server/server/plugins/engine/pageControllers/StatusPageController.js +12 -2
  166. package/.server/server/plugins/engine/pageControllers/StatusPageController.js.map +1 -1
  167. package/.server/server/plugins/engine/pageControllers/SummaryPageController.d.ts +4 -3
  168. package/.server/server/plugins/engine/pageControllers/SummaryPageController.js +44 -28
  169. package/.server/server/plugins/engine/pageControllers/SummaryPageController.js.map +1 -1
  170. package/.server/server/plugins/engine/pageControllers/__stubs__/translator.d.ts +2 -0
  171. package/.server/server/plugins/engine/pageControllers/__stubs__/translator.js +24 -0
  172. package/.server/server/plugins/engine/pageControllers/__stubs__/translator.js.map +1 -0
  173. package/.server/server/plugins/engine/pageControllers/errors.d.ts +1 -1
  174. package/.server/server/plugins/engine/pageControllers/errors.js +3 -2
  175. package/.server/server/plugins/engine/pageControllers/errors.js.map +1 -1
  176. package/.server/server/plugins/engine/pageControllers/helpers/submission.d.ts +3 -2
  177. package/.server/server/plugins/engine/pageControllers/helpers/submission.js +4 -4
  178. package/.server/server/plugins/engine/pageControllers/helpers/submission.js.map +1 -1
  179. package/.server/server/plugins/engine/pageControllers/validationOptions.d.ts +7 -3
  180. package/.server/server/plugins/engine/pageControllers/validationOptions.js +34 -33
  181. package/.server/server/plugins/engine/pageControllers/validationOptions.js.map +1 -1
  182. package/.server/server/plugins/engine/plugin.js +2 -0
  183. package/.server/server/plugins/engine/plugin.js.map +1 -1
  184. package/.server/server/plugins/engine/routes/index.js +4 -1
  185. package/.server/server/plugins/engine/routes/index.js.map +1 -1
  186. package/.server/server/plugins/engine/routes/questions.js +5 -2
  187. package/.server/server/plugins/engine/routes/questions.js.map +1 -1
  188. package/.server/server/plugins/engine/types/index.d.ts +1 -0
  189. package/.server/server/plugins/engine/types/index.js.map +1 -1
  190. package/.server/server/plugins/engine/types/schema.js +1 -0
  191. package/.server/server/plugins/engine/types/schema.js.map +1 -1
  192. package/.server/server/plugins/engine/types.d.ts +12 -1
  193. package/.server/server/plugins/engine/types.js.map +1 -1
  194. package/.server/server/plugins/engine/views/components/_location-field-base.html +4 -2
  195. package/.server/server/plugins/engine/views/components/fileuploadfield.html +3 -3
  196. package/.server/server/plugins/engine/views/components/geospatialfield.html +4 -1
  197. package/.server/server/plugins/engine/views/components/nationalgridfieldnumberfield.html +1 -1
  198. package/.server/server/plugins/engine/views/components/osgridreffield.html +1 -1
  199. package/.server/server/plugins/engine/views/components/paymentfield.html +8 -8
  200. package/.server/server/plugins/engine/views/components/ukaddressfield.html +4 -4
  201. package/.server/server/plugins/engine/views/confirmation.html +4 -4
  202. package/.server/server/plugins/engine/views/exit.html +4 -4
  203. package/.server/server/plugins/engine/views/file-upload.html +3 -3
  204. package/.server/server/plugins/engine/views/index.html +3 -3
  205. package/.server/server/plugins/engine/views/item-delete.html +1 -1
  206. package/.server/server/plugins/engine/views/partials/form.html +3 -3
  207. package/.server/server/plugins/engine/views/partials/preview-banner.html +4 -4
  208. package/.server/server/plugins/engine/views/partials/warn-missing-notification-email.html +4 -5
  209. package/.server/server/plugins/engine/views/repeat-list-summary.html +4 -4
  210. package/.server/server/plugins/engine/views/summary.html +14 -7
  211. package/.server/server/plugins/map/routes/index.js +1 -1
  212. package/.server/server/plugins/map/routes/index.js.map +1 -1
  213. package/.server/server/plugins/map/types.d.ts +1 -25
  214. package/.server/server/plugins/map/types.js +1 -16
  215. package/.server/server/plugins/map/types.js.map +1 -1
  216. package/.server/server/plugins/nunjucks/enviroment.test.js +10 -0
  217. package/.server/server/plugins/nunjucks/enviroment.test.js.map +1 -1
  218. package/.server/server/plugins/nunjucks/environment.d.ts +8 -0
  219. package/.server/server/plugins/nunjucks/environment.js +13 -0
  220. package/.server/server/plugins/nunjucks/environment.js.map +1 -1
  221. package/.server/server/plugins/nunjucks/filters/answer.js +9 -1
  222. package/.server/server/plugins/nunjucks/filters/answer.js.map +1 -1
  223. package/.server/server/plugins/nunjucks/filters/answer.test.js +13 -2
  224. package/.server/server/plugins/nunjucks/filters/answer.test.js.map +1 -1
  225. package/.server/server/plugins/nunjucks/filters/field.d.ts +1 -1
  226. package/.server/server/plugins/postcode-lookup/models/index.d.ts +24 -19
  227. package/.server/server/plugins/postcode-lookup/models/index.js +83 -76
  228. package/.server/server/plugins/postcode-lookup/models/index.js.map +1 -1
  229. package/.server/server/plugins/postcode-lookup/routes/index.js +7 -13
  230. package/.server/server/plugins/postcode-lookup/routes/index.js.map +1 -1
  231. package/.server/server/plugins/postcode-lookup/types.d.ts +1 -0
  232. package/.server/server/plugins/postcode-lookup/types.js +1 -0
  233. package/.server/server/plugins/postcode-lookup/types.js.map +1 -1
  234. package/.server/server/plugins/postcode-lookup/views/postcode-lookup-details.html +3 -3
  235. package/.server/server/types.d.ts +2 -1
  236. package/.server/server/types.js.map +1 -1
  237. package/.server/server/utils/utils.d.ts +5 -0
  238. package/.server/server/utils/utils.js +16 -0
  239. package/.server/server/utils/utils.js.map +1 -1
  240. package/.server/typings/hapi/index.d.js.map +1 -1
  241. package/package.json +5 -4
  242. package/src/client/javascripts/geospatial-map.js +10 -6
  243. package/src/client/javascripts/location-map.js +11 -0
  244. package/src/client/javascripts/map.js +10 -0
  245. package/src/client/javascripts/sssi-dataset.js +106 -0
  246. package/src/client/stylesheets/shared.scss +0 -2
  247. package/src/server/forms/register-as-a-unicorn-breeder.yaml +0 -14
  248. package/src/server/forms/simple-form.yaml +106 -3
  249. package/src/server/plugins/engine/components/AutocompleteField.ts +3 -6
  250. package/src/server/plugins/engine/components/CheckboxesField.ts +12 -11
  251. package/src/server/plugins/engine/components/ComponentCollection.ts +143 -61
  252. package/src/server/plugins/engine/components/DatePartsField.ts +33 -11
  253. package/src/server/plugins/engine/components/DeclarationField.ts +37 -14
  254. package/src/server/plugins/engine/components/EastingNorthingField.ts +83 -22
  255. package/src/server/plugins/engine/components/EmailAddressField.ts +4 -7
  256. package/src/server/plugins/engine/components/FileUploadField.ts +28 -22
  257. package/src/server/plugins/engine/components/FormComponent.ts +49 -12
  258. package/src/server/plugins/engine/components/GeospatialField.ts +38 -21
  259. package/src/server/plugins/engine/components/LatLongField.ts +52 -21
  260. package/src/server/plugins/engine/components/ListFormComponent.ts +26 -10
  261. package/src/server/plugins/engine/components/LocationFieldBase.ts +5 -8
  262. package/src/server/plugins/engine/components/LocationFieldHelpers.ts +24 -4
  263. package/src/server/plugins/engine/components/Markdown.ts +7 -3
  264. package/src/server/plugins/engine/components/MonthYearField.ts +32 -10
  265. package/src/server/plugins/engine/components/MultilineTextField.ts +5 -8
  266. package/src/server/plugins/engine/components/NationalGridFieldNumberField.ts +25 -11
  267. package/src/server/plugins/engine/components/NumberField.ts +3 -4
  268. package/src/server/plugins/engine/components/OsGridRefField.ts +25 -9
  269. package/src/server/plugins/engine/components/PaymentField.ts +22 -12
  270. package/src/server/plugins/engine/components/SelectField.ts +3 -6
  271. package/src/server/plugins/engine/components/SelectionControlField.ts +7 -8
  272. package/src/server/plugins/engine/components/TelephoneNumberField.ts +4 -7
  273. package/src/server/plugins/engine/components/UkAddressField.ts +33 -18
  274. package/src/server/plugins/engine/components/YesNoField.ts +10 -0
  275. package/src/server/plugins/engine/components/helpers/components.ts +13 -6
  276. package/src/server/plugins/engine/components/types.ts +9 -0
  277. package/src/server/plugins/engine/configureEnginePlugin.ts +12 -1
  278. package/src/server/plugins/engine/form-context.ts +8 -2
  279. package/src/server/plugins/engine/helpers.ts +10 -18
  280. package/src/server/plugins/engine/i18n/buildValidationMessages.ts +69 -0
  281. package/src/server/plugins/engine/i18n/createFormTranslator.ts +33 -0
  282. package/src/server/plugins/engine/i18n/createTranslator.ts +61 -0
  283. package/src/server/plugins/engine/i18n/extractBaseTranslations.ts +61 -0
  284. package/src/server/plugins/engine/i18n/index.ts +80 -0
  285. package/src/server/plugins/engine/i18n/translations/cy.json +271 -0
  286. package/src/server/plugins/engine/i18n/translations/en-GB.json +271 -0
  287. package/src/server/plugins/engine/i18n/types.ts +62 -0
  288. package/src/server/plugins/engine/index.ts +4 -2
  289. package/src/server/plugins/engine/models/FormModel.ts +59 -23
  290. package/src/server/plugins/engine/models/SummaryViewModel.ts +68 -25
  291. package/src/server/plugins/engine/options.js +2 -1
  292. package/src/server/plugins/engine/outputFormatters/adapter/v1.ts +5 -0
  293. package/src/server/plugins/engine/outputFormatters/human/v1.ts +2 -3
  294. package/src/server/plugins/engine/outputFormatters/machine/v1.ts +9 -8
  295. package/src/server/plugins/engine/pageControllers/FileUploadPageController.ts +7 -3
  296. package/src/server/plugins/engine/pageControllers/PageController.ts +12 -1
  297. package/src/server/plugins/engine/pageControllers/QuestionPageController.ts +53 -21
  298. package/src/server/plugins/engine/pageControllers/RepeatPageController.ts +66 -29
  299. package/src/server/plugins/engine/pageControllers/StartPageController.ts +7 -2
  300. package/src/server/plugins/engine/pageControllers/StatusPageController.ts +10 -2
  301. package/src/server/plugins/engine/pageControllers/SummaryPageController.ts +48 -22
  302. package/src/server/plugins/engine/pageControllers/__stubs__/translator.ts +28 -0
  303. package/src/server/plugins/engine/pageControllers/errors.ts +4 -2
  304. package/src/server/plugins/engine/pageControllers/helpers/submission.ts +11 -4
  305. package/src/server/plugins/engine/pageControllers/validationOptions.ts +43 -53
  306. package/src/server/plugins/engine/plugin.ts +2 -0
  307. package/src/server/plugins/engine/routes/index.ts +9 -1
  308. package/src/server/plugins/engine/routes/questions.ts +5 -1
  309. package/src/server/plugins/engine/types/index.ts +5 -0
  310. package/src/server/plugins/engine/types/schema.ts +1 -0
  311. package/src/server/plugins/engine/types.ts +10 -0
  312. package/src/server/plugins/engine/views/components/_location-field-base.html +4 -2
  313. package/src/server/plugins/engine/views/components/fileuploadfield.html +3 -3
  314. package/src/server/plugins/engine/views/components/geospatialfield.html +4 -1
  315. package/src/server/plugins/engine/views/components/nationalgridfieldnumberfield.html +1 -1
  316. package/src/server/plugins/engine/views/components/osgridreffield.html +1 -1
  317. package/src/server/plugins/engine/views/components/paymentfield.html +8 -8
  318. package/src/server/plugins/engine/views/components/ukaddressfield.html +4 -4
  319. package/src/server/plugins/engine/views/confirmation.html +4 -4
  320. package/src/server/plugins/engine/views/exit.html +4 -4
  321. package/src/server/plugins/engine/views/file-upload.html +3 -3
  322. package/src/server/plugins/engine/views/index.html +3 -3
  323. package/src/server/plugins/engine/views/item-delete.html +1 -1
  324. package/src/server/plugins/engine/views/partials/form.html +3 -3
  325. package/src/server/plugins/engine/views/partials/preview-banner.html +4 -4
  326. package/src/server/plugins/engine/views/partials/warn-missing-notification-email.html +4 -5
  327. package/src/server/plugins/engine/views/repeat-list-summary.html +4 -4
  328. package/src/server/plugins/engine/views/summary.html +14 -7
  329. package/src/server/plugins/map/routes/index.js +1 -1
  330. package/src/server/plugins/map/types.js +1 -16
  331. package/src/server/plugins/nunjucks/environment.js +14 -0
  332. package/src/server/plugins/nunjucks/filters/answer.js +12 -1
  333. package/src/server/plugins/postcode-lookup/models/index.js +144 -87
  334. package/src/server/plugins/postcode-lookup/routes/index.js +13 -16
  335. package/src/server/plugins/postcode-lookup/types.js +1 -0
  336. package/src/server/plugins/postcode-lookup/views/postcode-lookup-details.html +3 -3
  337. package/src/server/types.ts +2 -0
  338. package/src/server/utils/utils.js +14 -0
  339. package/src/typings/hapi/index.d.ts +1 -0
  340. package/.public/javascripts/im-search-plugin.min.js +0 -2
  341. package/.public/javascripts/im-search-plugin.min.js.map +0 -1
  342. package/.public/javascripts/vendor/preact.min.js +0 -2
  343. package/.public/javascripts/vendor/preact.min.js.map +0 -1
  344. package/.server/server/plugins/engine/components/constants.d.ts +0 -1
  345. package/.server/server/plugins/engine/components/constants.js +0 -2
  346. package/.server/server/plugins/engine/components/constants.js.map +0 -1
  347. package/src/server/plugins/engine/components/constants.ts +0 -1
@@ -1,6 +1,7 @@
1
- import { type MarkdownComponent } from '@defra/forms-model'
1
+ import { type ComponentDef, type MarkdownComponent } from '@defra/forms-model'
2
2
 
3
3
  import { ComponentBase } from './ComponentBase.js'
4
+ import { type RenderContext } from './types.js'
4
5
 
5
6
  export class Markdown extends ComponentBase {
6
7
  declare options: MarkdownComponent['options']
@@ -20,12 +21,15 @@ export class Markdown extends ComponentBase {
20
21
  this.headerStartLevel = 2
21
22
  }
22
23
 
23
- getViewModel() {
24
+ getViewModel(context: RenderContext) {
24
25
  const { content, viewModel } = this
25
26
 
27
+ const { tComponent } = context.translator
28
+
26
29
  return {
27
30
  ...viewModel,
28
- content,
31
+ content:
32
+ tComponent(this as unknown as ComponentDef, 'content') || content,
29
33
  headerStartLevel: this.headerStartLevel
30
34
  }
31
35
  }
@@ -16,16 +16,18 @@ import {
16
16
  import { NumberField } from './NumberField.js'
17
17
  import {
18
18
  type DateInputItem,
19
- type MonthYearState
19
+ type MonthYearState,
20
+ type RenderContext
20
21
  } from './types.js'
21
22
  import { parseStrictDate } from '../date-helper.js'
23
+ import { buildValidationMessages } from '../i18n/buildValidationMessages.js'
24
+ import { type Translator } from '../i18n/types.js'
22
25
  import { messageTemplate } from '../pageControllers/validationOptions.js'
23
26
  import {
24
27
  type ErrorMessageTemplateList,
25
28
  type FormPayload,
26
29
  type FormState,
27
30
  type FormStateValue,
28
- type FormSubmissionError,
29
31
  type FormSubmissionState
30
32
  } from '../types.js'
31
33
  import { convertToLanguageMessages } from '../../../utils/type-utils.js'
@@ -62,7 +64,7 @@ export class MonthYearField extends FormComponent {
62
64
  {
63
65
  type: ComponentType.NumberField,
64
66
  name: `${name}__month`,
65
- title: 'Month',
67
+ title: 'components.monthYearField.month',
66
68
  schema: { min: 1, max: 12, precision: 0 },
67
69
  options: {
68
70
  required: isRequired,
@@ -74,7 +76,7 @@ export class MonthYearField extends FormComponent {
74
76
  {
75
77
  type: ComponentType.NumberField,
76
78
  name: `${name}__year`,
77
- title: 'Year',
79
+ title: 'components.monthYearField.year',
78
80
  schema: { min: 1000, max: 3000, precision: 0 },
79
81
  options: {
80
82
  required: isRequired,
@@ -101,7 +103,10 @@ export class MonthYearField extends FormComponent {
101
103
  return MonthYearField.isMonthYear(value) ? value : undefined
102
104
  }
103
105
 
104
- getDisplayStringFromFormValue(value: MonthYearState | undefined): string {
106
+ getDisplayStringFromFormValue(
107
+ value: MonthYearState | undefined,
108
+ _translator: Translator
109
+ ): string {
105
110
  if (!value) {
106
111
  return ''
107
112
  }
@@ -113,10 +118,13 @@ export class MonthYearField extends FormComponent {
113
118
  return `${monthString} ${value.year}`
114
119
  }
115
120
 
116
- getDisplayStringFromState(state: FormSubmissionState) {
121
+ getDisplayStringFromState(
122
+ state: FormSubmissionState,
123
+ translator: Translator
124
+ ) {
117
125
  const value = this.getFormValueFromState(state)
118
126
 
119
- return this.getDisplayStringFromFormValue(value)
127
+ return this.getDisplayStringFromFormValue(value, translator)
120
128
  }
121
129
 
122
130
  getContextValueFromFormValue(
@@ -145,10 +153,24 @@ export class MonthYearField extends FormComponent {
145
153
  return this.getContextValueFromFormValue(value)
146
154
  }
147
155
 
148
- getViewModel(payload: FormPayload, errors?: FormSubmissionError[]) {
156
+ getValidationMessagesOverride(translator: Translator) {
157
+ const { t } = translator
158
+ return convertToLanguageMessages({
159
+ 'any.required': buildValidationMessages(t).objectMissing,
160
+ 'number.base': buildValidationMessages(t).objectMissing,
161
+ 'number.precision': buildValidationMessages(t).dateFormat,
162
+ 'number.integer': buildValidationMessages(t).dateFormat,
163
+ 'number.unsafe': buildValidationMessages(t).dateFormat,
164
+ 'number.min': buildValidationMessages(t).dateFormat,
165
+ 'number.max': buildValidationMessages(t).dateFormat
166
+ })
167
+ }
168
+
169
+ getViewModel(context: RenderContext) {
170
+ const { errors } = context
149
171
  const { collection, name } = this
150
172
 
151
- const viewModel = super.getViewModel(payload, errors)
173
+ const viewModel = super.getViewModel(context)
152
174
  let { fieldset, label } = viewModel
153
175
 
154
176
  // Check for component errors only
@@ -156,7 +178,7 @@ export class MonthYearField extends FormComponent {
156
178
 
157
179
  // Use the component collection to generate the subitems
158
180
  const items: DateInputItem[] = collection
159
- .getViewModel(payload, errors)
181
+ .getViewModel(context)
160
182
  .map(({ model }) => {
161
183
  let { label, type, value, classes, errorMessage } = model
162
184
 
@@ -3,12 +3,9 @@ import Joi, { type CustomValidator, type StringSchema } from 'joi'
3
3
 
4
4
  import { type ComponentBase } from './ComponentBase.js'
5
5
  import { FormComponent } from './FormComponent.js'
6
+ import { type RenderContext } from './types.js'
6
7
  import { messageTemplate } from '../pageControllers/validationOptions.js'
7
- import {
8
- type ErrorMessageTemplateList,
9
- type FormPayload,
10
- type FormSubmissionError
11
- } from '../types.js'
8
+ import { type ErrorMessageTemplateList } from '../types.js'
12
9
 
13
10
  export class MultilineTextField extends FormComponent {
14
11
  declare options: MultilineTextFieldComponent['options']
@@ -94,10 +91,10 @@ export class MultilineTextField extends FormComponent {
94
91
  this.schema = schema
95
92
  }
96
93
 
97
- getViewModel(payload: FormPayload, errors?: FormSubmissionError[]) {
94
+ getViewModel(context: RenderContext) {
98
95
  const { schema, options, isCharacterOrWordCount } = this
99
96
 
100
- const viewModel = super.getViewModel(payload, errors)
97
+ const viewModel = super.getViewModel(context)
101
98
  let { maxlength, maxwords, rows } = viewModel
102
99
 
103
100
  if (schema.max) {
@@ -122,7 +119,7 @@ export class MultilineTextField extends FormComponent {
122
119
  }
123
120
 
124
121
  buildMinMaxText(min?: number, max?: number): string {
125
- const minMaxError = messageTemplate.minMax as string
122
+ const minMaxError = messageTemplate.minMax
126
123
  return minMaxError
127
124
  .replace('{{#min}}', min ? min.toString() : '[min length]')
128
125
  .replace('{{#max}}', max ? max.toString() : '[max length]')
@@ -2,6 +2,8 @@ import { type NationalGridFieldNumberFieldComponent } from '@defra/forms-model'
2
2
 
3
3
  import { LocationFieldBase } from './LocationFieldBase.js'
4
4
  import { createLowerFirstExpression } from './helpers/index.js'
5
+ import { t } from '../i18n/index.js'
6
+ import { type ErrorMessageTemplateList } from '../types.js'
5
7
 
6
8
  export class NationalGridFieldNumberField extends LocationFieldBase {
7
9
  declare options: NationalGridFieldNumberFieldComponent['options']
@@ -13,14 +15,13 @@ export class NationalGridFieldNumberField extends LocationFieldBase {
13
15
  const pattern =
14
16
  /^((([sS]|[nN])[a-hA-Hj-zJ-Z])|(([tT]|[oO])[abfglmqrvwABFGLMQRVW])|([hH][l-zL-Z])|([jJ][lmqrvwLMQRVW]))\s?([0-9]{4})\s?([0-9]{4})$/
15
17
 
16
- const patternTemplate =
17
- 'Enter a valid National Grid field number for {{lowerFirst(#title)}} like NG 1234 5678'
18
-
19
18
  return {
20
19
  pattern,
21
- patternErrorMessage: createLowerFirstExpression(patternTemplate),
20
+ patternErrorMessage: createLowerFirstExpression(
21
+ t('components.nationalGridField.pattern', 'en-GB')
22
+ ),
22
23
  requiredMessage: createLowerFirstExpression(
23
- 'Enter {{lowerFirst(#title)}}'
24
+ t('components.nationalGridField.required', 'en-GB')
24
25
  )
25
26
  }
26
27
  }
@@ -30,7 +31,7 @@ export class NationalGridFieldNumberField extends LocationFieldBase {
30
31
  {
31
32
  type: 'pattern',
32
33
  template: createLowerFirstExpression(
33
- 'Enter a valid National Grid field number for {{lowerFirst(#title)}} like NG 1234 5678'
34
+ t('components.nationalGridField.pattern', 'en-GB')
34
35
  )
35
36
  }
36
37
  ]
@@ -39,10 +40,23 @@ export class NationalGridFieldNumberField extends LocationFieldBase {
39
40
  /**
40
41
  * Static version of getAllPossibleErrors that doesn't require a component instance.
41
42
  */
42
- static getAllPossibleErrors() {
43
- const instance = Object.create(
44
- NationalGridFieldNumberField.prototype
45
- ) as NationalGridFieldNumberField
46
- return instance.getAllPossibleErrors()
43
+ static getAllPossibleErrors(): ErrorMessageTemplateList {
44
+ return {
45
+ baseErrors: [
46
+ {
47
+ type: 'required',
48
+ template: createLowerFirstExpression(
49
+ t('components.nationalGridField.required', 'en-GB')
50
+ )
51
+ },
52
+ {
53
+ type: 'pattern',
54
+ template: createLowerFirstExpression(
55
+ t('components.nationalGridField.pattern', 'en-GB')
56
+ )
57
+ }
58
+ ],
59
+ advancedSettingsErrors: []
60
+ }
47
61
  }
48
62
  }
@@ -5,13 +5,12 @@ import {
5
5
  FormComponent,
6
6
  isFormValue
7
7
  } from './FormComponent.js'
8
+ import { type RenderContext } from './types.js'
8
9
  import { messageTemplate } from '../pageControllers/validationOptions.js'
9
10
  import {
10
11
  type ErrorMessageTemplateList,
11
- type FormPayload,
12
12
  type FormState,
13
13
  type FormStateValue,
14
- type FormSubmissionError,
15
14
  type FormSubmissionState
16
15
  } from '../types.js'
17
16
 
@@ -88,10 +87,10 @@ export class NumberField extends FormComponent {
88
87
  return this.isValue(value) ? value : undefined
89
88
  }
90
89
 
91
- getViewModel(payload: FormPayload, errors?: FormSubmissionError[]) {
90
+ getViewModel(context: RenderContext) {
92
91
  const { options, schema } = this
93
92
 
94
- const viewModel = super.getViewModel(payload, errors)
93
+ const viewModel = super.getViewModel(context)
95
94
  let { attributes, prefix, suffix, value } = viewModel
96
95
 
97
96
  if (typeof schema.precision === 'undefined' || schema.precision <= 0) {
@@ -2,6 +2,8 @@ import { type OsGridRefFieldComponent } from '@defra/forms-model'
2
2
 
3
3
  import { LocationFieldBase } from './LocationFieldBase.js'
4
4
  import { createLowerFirstExpression } from './helpers/index.js'
5
+ import { t } from '../i18n/index.js'
6
+ import { type ErrorMessageTemplateList } from '../types.js'
5
7
 
6
8
  export class OsGridRefField extends LocationFieldBase {
7
9
  declare options: OsGridRefFieldComponent['options']
@@ -16,14 +18,13 @@ export class OsGridRefField extends LocationFieldBase {
16
18
  const pattern =
17
19
  /^((([sS]|[nN])[a-hA-Hj-zJ-Z])|(([tT]|[oO])[abfglmqrvwABFGLMQRVW])|([hH][l-zL-Z])|([jJ][lmqrvwLMQRVW]))\s?(([0-9]{3})\s?([0-9]{3})|([0-9]{4})\s?([0-9]{4})|([0-9]{5})\s?([0-9]{5}))$/
18
20
 
19
- const patternTemplate =
20
- 'Enter a valid OS grid reference for {{lowerFirst(#title)}} like TQ123456'
21
-
22
21
  return {
23
22
  pattern,
24
- patternErrorMessage: createLowerFirstExpression(patternTemplate),
23
+ patternErrorMessage: createLowerFirstExpression(
24
+ t('components.osGridRefField.pattern', 'en-GB')
25
+ ),
25
26
  requiredMessage: createLowerFirstExpression(
26
- 'Enter {{lowerFirst(#title)}}'
27
+ t('components.osGridRefField.required', 'en-GB')
27
28
  )
28
29
  }
29
30
  }
@@ -33,7 +34,7 @@ export class OsGridRefField extends LocationFieldBase {
33
34
  {
34
35
  type: 'pattern',
35
36
  template: createLowerFirstExpression(
36
- 'Enter a valid OS grid reference for {{lowerFirst(#title)}} like TQ123456'
37
+ t('components.osGridRefField.pattern', 'en-GB')
37
38
  )
38
39
  }
39
40
  ]
@@ -42,8 +43,23 @@ export class OsGridRefField extends LocationFieldBase {
42
43
  /**
43
44
  * Static version of getAllPossibleErrors that doesn't require a component instance.
44
45
  */
45
- static getAllPossibleErrors() {
46
- const instance = Object.create(OsGridRefField.prototype) as OsGridRefField
47
- return instance.getAllPossibleErrors()
46
+ static getAllPossibleErrors(): ErrorMessageTemplateList {
47
+ return {
48
+ baseErrors: [
49
+ {
50
+ type: 'required',
51
+ template: createLowerFirstExpression(
52
+ t('components.osGridRefField.required', 'en-GB')
53
+ )
54
+ },
55
+ {
56
+ type: 'pattern',
57
+ template: createLowerFirstExpression(
58
+ t('components.osGridRefField.pattern', 'en-GB')
59
+ )
60
+ }
61
+ ],
62
+ advancedSettingsErrors: []
63
+ }
48
64
  }
49
65
  }
@@ -11,10 +11,12 @@ import { logger } from '../../../common/helpers/logging/logger.js'
11
11
  import { COMPONENT_STATE_ERROR } from '../../../constants.js'
12
12
  import { FormComponent } from './FormComponent.js'
13
13
  import { type PaymentState } from './PaymentField.types.js'
14
+ import { type RenderContext } from './types.js'
14
15
  import {
15
16
  createError,
16
17
  getPluginOptions
17
18
  } from '../helpers.js'
19
+ import { type Translator } from '../i18n/types.js'
18
20
  import { type FormModel } from '../models/index.js'
19
21
  import {
20
22
  PaymentErrorTypes,
@@ -28,10 +30,8 @@ import {
28
30
  } from '../types/index.js'
29
31
  import {
30
32
  type ErrorMessageTemplateList,
31
- type FormPayload,
32
33
  type FormState,
33
34
  type FormStateValue,
34
- type FormSubmissionError,
35
35
  type FormSubmissionState,
36
36
  type PaymentExternalArgs
37
37
  } from '../types.js'
@@ -39,6 +39,7 @@ import {
39
39
  createPaymentService,
40
40
  formatCurrency
41
41
  } from '../../payment/helper.js'
42
+ import { resolveLanguage } from '../../../utils/utils.js'
42
43
 
43
44
  export class PaymentField extends FormComponent {
44
45
  declare options: PaymentFieldComponent['options']
@@ -93,7 +94,10 @@ export class PaymentField extends FormComponent {
93
94
  return this.isPaymentState(value) ? value : undefined
94
95
  }
95
96
 
96
- getDisplayStringFromState(state: FormSubmissionState): string {
97
+ getDisplayStringFromState(
98
+ state: FormSubmissionState,
99
+ _translator: Translator
100
+ ): string {
97
101
  const value = this.getPaymentStateFromState(state)
98
102
 
99
103
  if (!value) {
@@ -103,8 +107,9 @@ export class PaymentField extends FormComponent {
103
107
  return `${formatCurrency(value.amount)} - ${value.description}`
104
108
  }
105
109
 
106
- getViewModel(payload: FormPayload, errors?: FormSubmissionError[]) {
107
- const viewModel = super.getViewModel(payload, errors)
110
+ getViewModel(context: RenderContext) {
111
+ const { payload } = context
112
+ const viewModel = super.getViewModel(context)
108
113
 
109
114
  // Payload is pre-populated from state if a payment has already been made
110
115
  const paymentState = this.isPaymentState(payload[this.name] as unknown)
@@ -229,7 +234,8 @@ export class PaymentField extends FormComponent {
229
234
  ): Promise<unknown> {
230
235
  const { options, name: componentName } = args.component
231
236
  const { model } = args.controller
232
-
237
+ const language = resolveLanguage(request)
238
+ const { t } = model.createTranslator(language)
233
239
  const state = await args.controller.getState(request)
234
240
  const { baseUrl } = getPluginOptions(request.server)
235
241
  const summaryUrl = `${baseUrl}/${model.basePath}/summary`
@@ -287,8 +293,8 @@ export class PaymentField extends FormComponent {
287
293
 
288
294
  if (!payment) {
289
295
  const message = isLivePayment
290
- ? 'There is a problem and we cannot take a payment. Contact us (details in the footer of this form) or save your progress and return to the form later.'
291
- : 'Add a valid test API key before you can preview the payment journey.'
296
+ ? t('components.paymentField.cannotTakePayment')
297
+ : t('components.paymentField.testApiKey')
292
298
  const govukError = createError(componentName, message)
293
299
  request.yar.flash(COMPONENT_STATE_ERROR, govukError, true)
294
300
  return h
@@ -323,6 +329,9 @@ export class PaymentField extends FormComponent {
323
329
  _metadata: FormMetadata,
324
330
  context: FormContext
325
331
  ): Promise<void> {
332
+ const language = resolveLanguage(request)
333
+ const { t } = this.model.createTranslator(language)
334
+
326
335
  // Zero-amount bypass — no capture needed
327
336
  const resolvedAmount = PaymentField.resolveAmount(
328
337
  this.options,
@@ -338,7 +347,7 @@ export class PaymentField extends FormComponent {
338
347
  if (!paymentState) {
339
348
  throw new PaymentPreAuthError(
340
349
  this,
341
- 'Complete the payment to continue',
350
+ t('components.paymentField.completePayment'),
342
351
  true,
343
352
  PaymentErrorTypes.PaymentIncomplete
344
353
  )
@@ -367,7 +376,8 @@ export class PaymentField extends FormComponent {
367
376
  PaymentSubmissionError.checkPaymentAmount(
368
377
  status.amount,
369
378
  resolvedAmount,
370
- this
379
+ this,
380
+ t
371
381
  )
372
382
 
373
383
  if (status.state.status === 'success') {
@@ -378,7 +388,7 @@ export class PaymentField extends FormComponent {
378
388
  if (status.state.status !== 'capturable') {
379
389
  throw new PaymentPreAuthError(
380
390
  this,
381
- 'Your payment authorisation has expired. Please add your payment details again.',
391
+ t('components.paymentField.paymentExpired'),
382
392
  true,
383
393
  PaymentErrorTypes.PaymentExpired
384
394
  )
@@ -392,7 +402,7 @@ export class PaymentField extends FormComponent {
392
402
  if (!captured) {
393
403
  throw new PaymentPreAuthError(
394
404
  this,
395
- 'There was a problem and your form was not submitted. Try submitting the form again.',
405
+ t('components.paymentField.submissionFailed'),
396
406
  false
397
407
  )
398
408
  }
@@ -4,10 +4,7 @@ import {
4
4
  } from '@defra/forms-model'
5
5
 
6
6
  import { ListFormComponent } from './ListFormComponent.js'
7
- import {
8
- type FormPayload,
9
- type FormSubmissionError
10
- } from '../types.js'
7
+ import { type RenderContext } from './types.js'
11
8
 
12
9
  export class SelectField extends ListFormComponent {
13
10
  declare options:
@@ -33,8 +30,8 @@ export class SelectField extends ListFormComponent {
33
30
  this.options = options
34
31
  }
35
32
 
36
- getViewModel(payload: FormPayload, errors?: FormSubmissionError[]) {
37
- const viewModel = super.getViewModel(payload, errors)
33
+ getViewModel(context: RenderContext) {
34
+ const viewModel = super.getViewModel(context)
38
35
  let { items } = viewModel
39
36
 
40
37
  items = [{ value: '' }, ...items]
@@ -1,20 +1,19 @@
1
1
  import { ListFormComponent } from './ListFormComponent.js'
2
- import { type ListItem } from './types.js'
3
- import { messageTemplate } from '../pageControllers/validationOptions.js'
4
2
  import {
5
- type ErrorMessageTemplateList,
6
- type FormPayload,
7
- type FormSubmissionError
8
- } from '../types.js'
3
+ type ListItem,
4
+ type RenderContext
5
+ } from './types.js'
6
+ import { messageTemplate } from '../pageControllers/validationOptions.js'
7
+ import { type ErrorMessageTemplateList } from '../types.js'
9
8
 
10
9
  /**
11
10
  * "Selection controls" are checkboxes and radios (and switches), as per Material UI nomenclature.
12
11
  */
13
12
  export class SelectionControlField extends ListFormComponent {
14
- getViewModel(payload: FormPayload, errors?: FormSubmissionError[]) {
13
+ getViewModel(context: RenderContext) {
15
14
  const { options } = this
16
15
 
17
- const viewModel = super.getViewModel(payload, errors)
16
+ const viewModel = super.getViewModel(context)
18
17
  let { fieldset, items, label } = viewModel
19
18
 
20
19
  fieldset ??= {
@@ -7,12 +7,9 @@ import {
7
7
  INVALID_ERROR_CODE,
8
8
  joi
9
9
  } from './helpers/telephone.js'
10
+ import { type RenderContext } from './types.js'
10
11
  import { messageTemplate } from '../pageControllers/validationOptions.js'
11
- import {
12
- type ErrorMessageTemplateList,
13
- type FormPayload,
14
- type FormSubmissionError
15
- } from '../types.js'
12
+ import { type ErrorMessageTemplateList } from '../types.js'
16
13
 
17
14
  export class TelephoneNumberField extends FormComponent {
18
15
  declare options: TelephoneNumberFieldComponent['options']
@@ -59,8 +56,8 @@ export class TelephoneNumberField extends FormComponent {
59
56
  this.options = options
60
57
  }
61
58
 
62
- getViewModel(payload: FormPayload, errors?: FormSubmissionError[]) {
63
- const viewModel = super.getViewModel(payload, errors)
59
+ getViewModel(context: RenderContext) {
60
+ const viewModel = super.getViewModel(context)
64
61
  const { attributes } = viewModel
65
62
 
66
63
  attributes.autocomplete = 'tel'