@defra/forms-engine-plugin 5.0.0-alpha.3 → 5.0.0-alpha.30

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 (406) hide show
  1. package/.public/37c964ca545c240f010a.mjs +2 -0
  2. package/.public/37c964ca545c240f010a.mjs.LICENSE.txt +4 -0
  3. package/.public/assets-manifest.json +3 -0
  4. package/.public/javascripts/application.min.js +1 -1
  5. package/.public/javascripts/application.min.js.LICENSE.txt +7 -0
  6. package/.public/javascripts/application.min.js.map +1 -1
  7. package/.public/javascripts/shared.min.js +1 -1
  8. package/.public/javascripts/shared.min.js.LICENSE.txt +9 -0
  9. package/.public/javascripts/shared.min.js.map +1 -1
  10. package/.public/javascripts/vendor/@defra.min.js +1 -1
  11. package/.public/javascripts/vendor/@defra.min.js.map +1 -1
  12. package/.public/javascripts/vendor/maplibre-gl.min.js +1 -1
  13. package/.public/javascripts/vendor/maplibre-gl.min.js.LICENSE.txt +3 -3
  14. package/.public/javascripts/vendor/maplibre-gl.min.js.map +1 -1
  15. package/.public/stylesheets/application.min.css +1 -1
  16. package/.public/stylesheets/application.min.css.map +1 -1
  17. package/.server/client/javascripts/file-upload.js +6 -3
  18. package/.server/client/javascripts/file-upload.js.map +1 -1
  19. package/.server/client/javascripts/geospatial-map.d.ts +159 -5
  20. package/.server/client/javascripts/geospatial-map.js +161 -81
  21. package/.server/client/javascripts/geospatial-map.js.map +1 -1
  22. package/.server/client/javascripts/geospatial-map.test.js +152 -0
  23. package/.server/client/javascripts/geospatial-map.test.js.map +1 -0
  24. package/.server/client/javascripts/govuk.js +2 -1
  25. package/.server/client/javascripts/govuk.js.map +1 -1
  26. package/.server/client/javascripts/location-map.d.ts +44 -0
  27. package/.server/client/javascripts/location-map.js +55 -6
  28. package/.server/client/javascripts/location-map.js.map +1 -1
  29. package/.server/client/javascripts/map-constants.d.ts +3 -0
  30. package/.server/client/javascripts/map-constants.js +4 -0
  31. package/.server/client/javascripts/map-constants.js.map +1 -0
  32. package/.server/client/javascripts/map.d.ts +17 -4
  33. package/.server/client/javascripts/map.js +59 -6
  34. package/.server/client/javascripts/map.js.map +1 -1
  35. package/.server/client/javascripts/maps.d.ts +5 -0
  36. package/.server/client/javascripts/maps.js +6 -0
  37. package/.server/client/javascripts/maps.js.map +1 -0
  38. package/.server/client/javascripts/shared.d.ts +1 -4
  39. package/.server/client/javascripts/shared.js +1 -4
  40. package/.server/client/javascripts/shared.js.map +1 -1
  41. package/.server/client/javascripts/sssi-dataset.d.ts +18 -20
  42. package/.server/client/javascripts/sssi-dataset.js +37 -39
  43. package/.server/client/javascripts/sssi-dataset.js.map +1 -1
  44. package/.server/client/stylesheets/maps.scss +4 -0
  45. package/.server/client/stylesheets/shared.scss +1 -5
  46. package/.server/server/constants.d.ts +2 -0
  47. package/.server/server/constants.js +2 -0
  48. package/.server/server/constants.js.map +1 -1
  49. package/.server/server/forms/components.json +8 -0
  50. package/.server/server/forms/register-as-a-unicorn-breeder.yaml +4 -0
  51. package/.server/server/plugins/engine/__stubs__/definitions.d.ts +29 -0
  52. package/.server/server/plugins/engine/__stubs__/definitions.js +125 -0
  53. package/.server/server/plugins/engine/__stubs__/definitions.js.map +1 -0
  54. package/.server/server/plugins/engine/components/AutocompleteField.d.ts +8 -3
  55. package/.server/server/plugins/engine/components/AutocompleteField.js +17 -0
  56. package/.server/server/plugins/engine/components/AutocompleteField.js.map +1 -1
  57. package/.server/server/plugins/engine/components/CheckboxesField.d.ts +23 -2
  58. package/.server/server/plugins/engine/components/CheckboxesField.js +30 -5
  59. package/.server/server/plugins/engine/components/CheckboxesField.js.map +1 -1
  60. package/.server/server/plugins/engine/components/ComponentBase.d.ts +2 -1
  61. package/.server/server/plugins/engine/components/ComponentBase.js +2 -0
  62. package/.server/server/plugins/engine/components/ComponentBase.js.map +1 -1
  63. package/.server/server/plugins/engine/components/ComponentCollection.js +12 -7
  64. package/.server/server/plugins/engine/components/ComponentCollection.js.map +1 -1
  65. package/.server/server/plugins/engine/components/DatePartsField.d.ts +6 -3
  66. package/.server/server/plugins/engine/components/DatePartsField.js +12 -7
  67. package/.server/server/plugins/engine/components/DatePartsField.js.map +1 -1
  68. package/.server/server/plugins/engine/components/DeclarationField.d.ts +6 -3
  69. package/.server/server/plugins/engine/components/DeclarationField.js +6 -4
  70. package/.server/server/plugins/engine/components/DeclarationField.js.map +1 -1
  71. package/.server/server/plugins/engine/components/Details.d.ts +1 -0
  72. package/.server/server/plugins/engine/components/EastingNorthingField.d.ts +33 -2
  73. package/.server/server/plugins/engine/components/EastingNorthingField.js +110 -54
  74. package/.server/server/plugins/engine/components/EastingNorthingField.js.map +1 -1
  75. package/.server/server/plugins/engine/components/EmailAddressField.d.ts +4 -1
  76. package/.server/server/plugins/engine/components/EmailAddressField.js +2 -1
  77. package/.server/server/plugins/engine/components/EmailAddressField.js.map +1 -1
  78. package/.server/server/plugins/engine/components/FileUploadField.d.ts +23 -2
  79. package/.server/server/plugins/engine/components/FileUploadField.js +35 -3
  80. package/.server/server/plugins/engine/components/FileUploadField.js.map +1 -1
  81. package/.server/server/plugins/engine/components/FormComponent.d.ts +5 -1
  82. package/.server/server/plugins/engine/components/FormComponent.js +5 -2
  83. package/.server/server/plugins/engine/components/FormComponent.js.map +1 -1
  84. package/.server/server/plugins/engine/components/GeospatialField.d.ts +23 -0
  85. package/.server/server/plugins/engine/components/GeospatialField.js +33 -9
  86. package/.server/server/plugins/engine/components/GeospatialField.js.map +1 -1
  87. package/.server/server/plugins/engine/components/Html.d.ts +1 -0
  88. package/.server/server/plugins/engine/components/InsetText.d.ts +1 -0
  89. package/.server/server/plugins/engine/components/LatLongField.d.ts +32 -2
  90. package/.server/server/plugins/engine/components/LatLongField.js +85 -48
  91. package/.server/server/plugins/engine/components/LatLongField.js.map +1 -1
  92. package/.server/server/plugins/engine/components/List.d.ts +1 -0
  93. package/.server/server/plugins/engine/components/ListFormComponent.d.ts +3 -2
  94. package/.server/server/plugins/engine/components/ListFormComponent.js.map +1 -1
  95. package/.server/server/plugins/engine/components/LocationFieldBase.d.ts +8 -2
  96. package/.server/server/plugins/engine/components/LocationFieldBase.js +31 -7
  97. package/.server/server/plugins/engine/components/LocationFieldBase.js.map +1 -1
  98. package/.server/server/plugins/engine/components/LocationFieldHelpers.d.ts +12 -3
  99. package/.server/server/plugins/engine/components/LocationFieldHelpers.js +21 -13
  100. package/.server/server/plugins/engine/components/LocationFieldHelpers.js.map +1 -1
  101. package/.server/server/plugins/engine/components/Markdown.d.ts +1 -0
  102. package/.server/server/plugins/engine/components/Markdown.js +1 -1
  103. package/.server/server/plugins/engine/components/Markdown.js.map +1 -1
  104. package/.server/server/plugins/engine/components/MonthYearField.d.ts +5 -2
  105. package/.server/server/plugins/engine/components/MonthYearField.js +13 -9
  106. package/.server/server/plugins/engine/components/MonthYearField.js.map +1 -1
  107. package/.server/server/plugins/engine/components/MultilineTextField.d.ts +1 -0
  108. package/.server/server/plugins/engine/components/NationalGridFieldNumberField.d.ts +2 -1
  109. package/.server/server/plugins/engine/components/NationalGridFieldNumberField.js +4 -3
  110. package/.server/server/plugins/engine/components/NationalGridFieldNumberField.js.map +1 -1
  111. package/.server/server/plugins/engine/components/NotificationBanner.d.ts +1 -0
  112. package/.server/server/plugins/engine/components/NumberField.d.ts +5 -0
  113. package/.server/server/plugins/engine/components/NumberField.js +22 -0
  114. package/.server/server/plugins/engine/components/NumberField.js.map +1 -1
  115. package/.server/server/plugins/engine/components/OsGridRefField.d.ts +103 -1
  116. package/.server/server/plugins/engine/components/OsGridRefField.js +13 -3
  117. package/.server/server/plugins/engine/components/OsGridRefField.js.map +1 -1
  118. package/.server/server/plugins/engine/components/PaymentField.d.ts +2 -0
  119. package/.server/server/plugins/engine/components/PaymentField.js +9 -5
  120. package/.server/server/plugins/engine/components/PaymentField.js.map +1 -1
  121. package/.server/server/plugins/engine/components/SelectField.d.ts +1 -0
  122. package/.server/server/plugins/engine/components/SelectionControlField.d.ts +1 -0
  123. package/.server/server/plugins/engine/components/TelephoneNumberField.d.ts +1 -0
  124. package/.server/server/plugins/engine/components/TrackingField.d.ts +21 -0
  125. package/.server/server/plugins/engine/components/TrackingField.js +46 -0
  126. package/.server/server/plugins/engine/components/TrackingField.js.map +1 -0
  127. package/.server/server/plugins/engine/components/UkAddressField.d.ts +1 -0
  128. package/.server/server/plugins/engine/components/UkAddressField.js +23 -8
  129. package/.server/server/plugins/engine/components/UkAddressField.js.map +1 -1
  130. package/.server/server/plugins/engine/components/YesNoField.d.ts +3 -2
  131. package/.server/server/plugins/engine/components/YesNoField.js +22 -8
  132. package/.server/server/plugins/engine/components/YesNoField.js.map +1 -1
  133. package/.server/server/plugins/engine/components/helpers/components.d.ts +1 -1
  134. package/.server/server/plugins/engine/components/helpers/components.js +6 -3
  135. package/.server/server/plugins/engine/components/helpers/components.js.map +1 -1
  136. package/.server/server/plugins/engine/components/helpers/geospatial.d.ts +8 -1
  137. package/.server/server/plugins/engine/components/helpers/geospatial.js +58 -17
  138. package/.server/server/plugins/engine/components/helpers/geospatial.js.map +1 -1
  139. package/.server/server/plugins/engine/components/helpers/index.d.ts +21 -1
  140. package/.server/server/plugins/engine/components/helpers/index.js +45 -1
  141. package/.server/server/plugins/engine/components/helpers/index.js.map +1 -1
  142. package/.server/server/plugins/engine/components/index.d.ts +1 -0
  143. package/.server/server/plugins/engine/components/index.js +1 -0
  144. package/.server/server/plugins/engine/components/index.js.map +1 -1
  145. package/.server/server/plugins/engine/components/types.d.ts +1 -0
  146. package/.server/server/plugins/engine/components/types.js.map +1 -1
  147. package/.server/server/plugins/engine/errors.d.ts +49 -0
  148. package/.server/server/plugins/engine/errors.js +75 -0
  149. package/.server/server/plugins/engine/errors.js.map +1 -0
  150. package/.server/server/plugins/engine/form-availability.d.ts +3 -2
  151. package/.server/server/plugins/engine/form-availability.js +3 -2
  152. package/.server/server/plugins/engine/form-availability.js.map +1 -1
  153. package/.server/server/plugins/engine/form-context.js +2 -2
  154. package/.server/server/plugins/engine/form-context.js.map +1 -1
  155. package/.server/server/plugins/engine/helpers.d.ts +23 -2
  156. package/.server/server/plugins/engine/helpers.js +44 -5
  157. package/.server/server/plugins/engine/helpers.js.map +1 -1
  158. package/.server/server/plugins/engine/i18n/buildValidationMessages.d.ts +4 -1
  159. package/.server/server/plugins/engine/i18n/buildValidationMessages.js +31 -7
  160. package/.server/server/plugins/engine/i18n/buildValidationMessages.js.map +1 -1
  161. package/.server/server/plugins/engine/i18n/createFormTranslator.d.ts +4 -4
  162. package/.server/server/plugins/engine/i18n/createFormTranslator.js +27 -5
  163. package/.server/server/plugins/engine/i18n/createFormTranslator.js.map +1 -1
  164. package/.server/server/plugins/engine/i18n/extractBaseTranslations.d.ts +1 -1
  165. package/.server/server/plugins/engine/i18n/extractBaseTranslations.js +9 -0
  166. package/.server/server/plugins/engine/i18n/extractBaseTranslations.js.map +1 -1
  167. package/.server/server/plugins/engine/i18n/form.d.ts +13 -0
  168. package/.server/server/plugins/engine/i18n/form.js +35 -0
  169. package/.server/server/plugins/engine/i18n/form.js.map +1 -0
  170. package/.server/server/plugins/engine/i18n/languages.d.ts +10 -0
  171. package/.server/server/plugins/engine/i18n/languages.js +19 -0
  172. package/.server/server/plugins/engine/i18n/languages.js.map +1 -0
  173. package/.server/server/plugins/engine/i18n/translations/cy.json +176 -7
  174. package/.server/server/plugins/engine/i18n/translations/en-GB.json +110 -6
  175. package/.server/server/plugins/engine/i18n/types.d.ts +2 -0
  176. package/.server/server/plugins/engine/i18n/types.js.map +1 -1
  177. package/.server/server/plugins/engine/index.d.ts +4 -0
  178. package/.server/server/plugins/engine/index.js +4 -0
  179. package/.server/server/plugins/engine/index.js.map +1 -1
  180. package/.server/server/plugins/engine/models/FormModel.d.ts +0 -4
  181. package/.server/server/plugins/engine/models/FormModel.js +35 -23
  182. package/.server/server/plugins/engine/models/FormModel.js.map +1 -1
  183. package/.server/server/plugins/engine/models/SummaryViewModel.js +9 -4
  184. package/.server/server/plugins/engine/models/SummaryViewModel.js.map +1 -1
  185. package/.server/server/plugins/engine/models/types.d.ts +28 -1
  186. package/.server/server/plugins/engine/models/types.js.map +1 -1
  187. package/.server/server/plugins/engine/models/unavailable-view-model.d.ts +11 -2
  188. package/.server/server/plugins/engine/models/unavailable-view-model.js +23 -4
  189. package/.server/server/plugins/engine/models/unavailable-view-model.js.map +1 -1
  190. package/.server/server/plugins/engine/options.js +2 -1
  191. package/.server/server/plugins/engine/options.js.map +1 -1
  192. package/.server/server/plugins/engine/outputFormatters/adapter/v1.js +14 -6
  193. package/.server/server/plugins/engine/outputFormatters/adapter/v1.js.map +1 -1
  194. package/.server/server/plugins/engine/outputFormatters/human/v1.js +2 -1
  195. package/.server/server/plugins/engine/outputFormatters/human/v1.js.map +1 -1
  196. package/.server/server/plugins/engine/outputFormatters/machine/v2.d.ts +2 -0
  197. package/.server/server/plugins/engine/outputFormatters/machine/v2.js +2 -0
  198. package/.server/server/plugins/engine/outputFormatters/machine/v2.js.map +1 -1
  199. package/.server/server/plugins/engine/pageControllers/FileUploadPageController.d.ts +7 -1
  200. package/.server/server/plugins/engine/pageControllers/FileUploadPageController.js +56 -10
  201. package/.server/server/plugins/engine/pageControllers/FileUploadPageController.js.map +1 -1
  202. package/.server/server/plugins/engine/pageControllers/QuestionPageController.d.ts +1 -1
  203. package/.server/server/plugins/engine/pageControllers/QuestionPageController.js +2 -2
  204. package/.server/server/plugins/engine/pageControllers/QuestionPageController.js.map +1 -1
  205. package/.server/server/plugins/engine/pageControllers/RepeatPageController.js +3 -4
  206. package/.server/server/plugins/engine/pageControllers/RepeatPageController.js.map +1 -1
  207. package/.server/server/plugins/engine/pageControllers/SummaryPageController.js +10 -4
  208. package/.server/server/plugins/engine/pageControllers/SummaryPageController.js.map +1 -1
  209. package/.server/server/plugins/engine/pageControllers/helpers/pages.js +2 -1
  210. package/.server/server/plugins/engine/pageControllers/helpers/pages.js.map +1 -1
  211. package/.server/server/plugins/engine/pageControllers/helpers/submission.d.ts +35 -2
  212. package/.server/server/plugins/engine/pageControllers/helpers/submission.js +100 -3
  213. package/.server/server/plugins/engine/pageControllers/helpers/submission.js.map +1 -1
  214. package/.server/server/plugins/engine/pageControllers/validationOptions.d.ts +1 -1
  215. package/.server/server/plugins/engine/pageControllers/validationOptions.js +24 -3
  216. package/.server/server/plugins/engine/pageControllers/validationOptions.js.map +1 -1
  217. package/.server/server/plugins/engine/plugin.js +3 -0
  218. package/.server/server/plugins/engine/plugin.js.map +1 -1
  219. package/.server/server/plugins/engine/referenceNumbers.d.ts +1 -0
  220. package/.server/server/plugins/engine/referenceNumbers.js +1 -0
  221. package/.server/server/plugins/engine/referenceNumbers.js.map +1 -1
  222. package/.server/server/plugins/engine/routes/index.js +9 -4
  223. package/.server/server/plugins/engine/routes/index.js.map +1 -1
  224. package/.server/server/plugins/engine/types/enums.d.ts +3 -3
  225. package/.server/server/plugins/engine/types/enums.js +5 -4
  226. package/.server/server/plugins/engine/types/enums.js.map +1 -1
  227. package/.server/server/plugins/engine/types/schema.js +15 -4
  228. package/.server/server/plugins/engine/types/schema.js.map +1 -1
  229. package/.server/server/plugins/engine/types.d.ts +24 -2
  230. package/.server/server/plugins/engine/types.js.map +1 -1
  231. package/.server/server/plugins/engine/unavailable-response.js +5 -2
  232. package/.server/server/plugins/engine/unavailable-response.js.map +1 -1
  233. package/.server/server/plugins/engine/views/components/_location-field-base.html +4 -2
  234. package/.server/server/plugins/engine/views/components/fileuploadfield.html +1 -1
  235. package/.server/server/plugins/engine/views/components/geospatialfield.html +1 -0
  236. package/.server/server/plugins/engine/views/components/osgridreffield.html +4 -1
  237. package/.server/server/plugins/engine/views/components/trackingfield.html +3 -0
  238. package/.server/server/plugins/engine/views/components/ukaddressfield.html +1 -1
  239. package/.server/server/plugins/engine/views/file-upload.html +1 -1
  240. package/.server/server/plugins/engine/views/summary.html +1 -0
  241. package/.server/server/plugins/engine/views/unavailable.html +14 -11
  242. package/.server/server/plugins/map/routes/index.d.ts +4 -0
  243. package/.server/server/plugins/map/routes/index.js +12 -4
  244. package/.server/server/plugins/map/routes/index.js.map +1 -1
  245. package/.server/server/plugins/map/routes/index.test.js +7 -0
  246. package/.server/server/plugins/map/routes/index.test.js.map +1 -0
  247. package/.server/server/plugins/map/routes/vts/README.md +38 -0
  248. package/.server/server/plugins/map/routes/vts/countries-5dp.geojson +4 -0
  249. package/.server/server/plugins/map/routes/vts/countries.geojson +10 -39283
  250. package/.server/server/plugins/map/types.d.ts +24 -2
  251. package/.server/server/plugins/map/types.js +9 -2
  252. package/.server/server/plugins/map/types.js.map +1 -1
  253. package/.server/server/plugins/nunjucks/enviroment.test.js +11 -4
  254. package/.server/server/plugins/nunjucks/enviroment.test.js.map +1 -1
  255. package/.server/server/plugins/nunjucks/filters/applyUrlParam.d.ts +9 -0
  256. package/.server/server/plugins/nunjucks/filters/applyUrlParam.js +17 -0
  257. package/.server/server/plugins/nunjucks/filters/applyUrlParam.js.map +1 -0
  258. package/.server/server/plugins/nunjucks/filters/applyUrlParam.test.js +17 -0
  259. package/.server/server/plugins/nunjucks/filters/applyUrlParam.test.js.map +1 -0
  260. package/.server/server/plugins/nunjucks/filters/field.d.ts +1 -1
  261. package/.server/server/plugins/nunjucks/filters/index.d.ts +1 -0
  262. package/.server/server/plugins/nunjucks/filters/index.js +1 -0
  263. package/.server/server/plugins/nunjucks/filters/index.js.map +1 -1
  264. package/.server/server/plugins/payment/helper.d.ts +11 -1
  265. package/.server/server/plugins/payment/helper.js +18 -2
  266. package/.server/server/plugins/payment/helper.js.map +1 -1
  267. package/.server/server/plugins/payment/helper.test.js +2 -1
  268. package/.server/server/plugins/payment/helper.test.js.map +1 -1
  269. package/.server/server/plugins/payment/service.d.ts +2 -1
  270. package/.server/server/plugins/payment/service.js +5 -2
  271. package/.server/server/plugins/payment/service.js.map +1 -1
  272. package/.server/server/plugins/payment/service.test.js +7 -3
  273. package/.server/server/plugins/payment/service.test.js.map +1 -1
  274. package/.server/server/plugins/payment/types.d.ts +4 -0
  275. package/.server/server/plugins/payment/types.js +1 -0
  276. package/.server/server/plugins/payment/types.js.map +1 -1
  277. package/.server/server/plugins/postcode-lookup/models/index.d.ts +249 -3
  278. package/.server/server/plugins/postcode-lookup/models/index.js +103 -36
  279. package/.server/server/plugins/postcode-lookup/models/index.js.map +1 -1
  280. package/.server/server/plugins/postcode-lookup/routes/index.d.ts +15 -1
  281. package/.server/server/plugins/postcode-lookup/routes/index.js +64 -18
  282. package/.server/server/plugins/postcode-lookup/routes/index.js.map +1 -1
  283. package/.server/server/plugins/postcode-lookup/routes/index.test.js +84 -0
  284. package/.server/server/plugins/postcode-lookup/routes/index.test.js.map +1 -0
  285. package/.server/server/plugins/postcode-lookup/types.d.ts +12 -0
  286. package/.server/server/plugins/postcode-lookup/types.js +6 -1
  287. package/.server/server/plugins/postcode-lookup/types.js.map +1 -1
  288. package/.server/server/plugins/postcode-lookup/views/postcode-lookup-details.html +3 -3
  289. package/.server/server/utils/type-utils.d.ts +1 -2
  290. package/.server/server/utils/type-utils.js +0 -3
  291. package/.server/server/utils/type-utils.js.map +1 -1
  292. package/.server/server/utils/utils.d.ts +6 -0
  293. package/.server/server/utils/utils.js +18 -1
  294. package/.server/server/utils/utils.js.map +1 -1
  295. package/.server/server/utils/utils.test.js +21 -1
  296. package/.server/server/utils/utils.test.js.map +1 -1
  297. package/.server/typings/geodesy/index.d.js +2 -0
  298. package/.server/typings/geodesy/index.d.js.map +1 -0
  299. package/.server/typings/hapi/index.d.js.map +1 -1
  300. package/package.json +24 -9
  301. package/src/client/javascripts/file-upload.js +11 -3
  302. package/src/client/javascripts/geospatial-map.js +181 -86
  303. package/src/client/javascripts/govuk.js +2 -0
  304. package/src/client/javascripts/location-map.js +62 -6
  305. package/src/client/javascripts/map-constants.js +3 -0
  306. package/src/client/javascripts/map.js +66 -9
  307. package/src/client/javascripts/maps.js +5 -0
  308. package/src/client/javascripts/shared.js +1 -4
  309. package/src/client/javascripts/sssi-dataset.js +39 -41
  310. package/src/client/stylesheets/maps.scss +4 -0
  311. package/src/client/stylesheets/shared.scss +1 -5
  312. package/src/server/constants.js +2 -0
  313. package/src/server/forms/components.json +8 -0
  314. package/src/server/forms/register-as-a-unicorn-breeder.yaml +4 -0
  315. package/src/server/plugins/engine/__stubs__/definitions.ts +155 -0
  316. package/src/server/plugins/engine/components/AutocompleteField.ts +20 -0
  317. package/src/server/plugins/engine/components/CheckboxesField.ts +41 -8
  318. package/src/server/plugins/engine/components/ComponentBase.ts +6 -4
  319. package/src/server/plugins/engine/components/ComponentCollection.ts +17 -15
  320. package/src/server/plugins/engine/components/DatePartsField.ts +20 -9
  321. package/src/server/plugins/engine/components/DeclarationField.ts +10 -10
  322. package/src/server/plugins/engine/components/EastingNorthingField.ts +185 -89
  323. package/src/server/plugins/engine/components/EmailAddressField.ts +2 -1
  324. package/src/server/plugins/engine/components/FileUploadField.ts +46 -5
  325. package/src/server/plugins/engine/components/FormComponent.ts +6 -5
  326. package/src/server/plugins/engine/components/GeospatialField.ts +47 -9
  327. package/src/server/plugins/engine/components/LatLongField.ts +128 -58
  328. package/src/server/plugins/engine/components/ListFormComponent.ts +4 -4
  329. package/src/server/plugins/engine/components/LocationFieldBase.ts +41 -8
  330. package/src/server/plugins/engine/components/LocationFieldHelpers.ts +28 -14
  331. package/src/server/plugins/engine/components/Markdown.ts +2 -3
  332. package/src/server/plugins/engine/components/MonthYearField.ts +20 -15
  333. package/src/server/plugins/engine/components/NationalGridFieldNumberField.ts +9 -3
  334. package/src/server/plugins/engine/components/NumberField.ts +24 -0
  335. package/src/server/plugins/engine/components/OsGridRefField.ts +22 -3
  336. package/src/server/plugins/engine/components/PaymentField.ts +9 -4
  337. package/src/server/plugins/engine/components/TrackingField.ts +64 -0
  338. package/src/server/plugins/engine/components/UkAddressField.ts +30 -7
  339. package/src/server/plugins/engine/components/YesNoField.ts +27 -9
  340. package/src/server/plugins/engine/components/helpers/components.ts +8 -3
  341. package/src/server/plugins/engine/components/helpers/geospatial.ts +87 -24
  342. package/src/server/plugins/engine/components/helpers/index.ts +64 -1
  343. package/src/server/plugins/engine/components/index.ts +1 -0
  344. package/src/server/plugins/engine/components/types.ts +1 -0
  345. package/src/server/plugins/engine/errors.ts +78 -0
  346. package/src/server/plugins/engine/form-availability.ts +8 -2
  347. package/src/server/plugins/engine/form-context.ts +4 -2
  348. package/src/server/plugins/engine/helpers.ts +52 -5
  349. package/src/server/plugins/engine/i18n/buildValidationMessages.ts +16 -8
  350. package/src/server/plugins/engine/i18n/createFormTranslator.ts +43 -12
  351. package/src/server/plugins/engine/i18n/extractBaseTranslations.ts +7 -1
  352. package/src/server/plugins/engine/i18n/form.ts +54 -0
  353. package/src/server/plugins/engine/i18n/languages.ts +19 -0
  354. package/src/server/plugins/engine/i18n/translations/cy.json +176 -7
  355. package/src/server/plugins/engine/i18n/translations/en-GB.json +110 -6
  356. package/src/server/plugins/engine/i18n/types.ts +2 -0
  357. package/src/server/plugins/engine/index.ts +7 -0
  358. package/src/server/plugins/engine/models/FormModel.ts +46 -23
  359. package/src/server/plugins/engine/models/SummaryViewModel.ts +6 -5
  360. package/src/server/plugins/engine/models/types.ts +31 -0
  361. package/src/server/plugins/engine/models/unavailable-view-model.ts +26 -5
  362. package/src/server/plugins/engine/options.js +2 -1
  363. package/src/server/plugins/engine/outputFormatters/adapter/v1.ts +18 -7
  364. package/src/server/plugins/engine/outputFormatters/human/v1.ts +2 -1
  365. package/src/server/plugins/engine/outputFormatters/machine/v2.ts +3 -0
  366. package/src/server/plugins/engine/pageControllers/FileUploadPageController.ts +60 -9
  367. package/src/server/plugins/engine/pageControllers/QuestionPageController.ts +2 -2
  368. package/src/server/plugins/engine/pageControllers/RepeatPageController.ts +2 -2
  369. package/src/server/plugins/engine/pageControllers/SummaryPageController.ts +15 -4
  370. package/src/server/plugins/engine/pageControllers/helpers/pages.ts +2 -1
  371. package/src/server/plugins/engine/pageControllers/helpers/submission.ts +143 -4
  372. package/src/server/plugins/engine/pageControllers/validationOptions.ts +29 -4
  373. package/src/server/plugins/engine/plugin.ts +6 -0
  374. package/src/server/plugins/engine/referenceNumbers.ts +2 -0
  375. package/src/server/plugins/engine/routes/index.ts +9 -3
  376. package/src/server/plugins/engine/types/enums.ts +4 -3
  377. package/src/server/plugins/engine/types/schema.ts +22 -5
  378. package/src/server/plugins/engine/types.ts +28 -1
  379. package/src/server/plugins/engine/unavailable-response.ts +6 -2
  380. package/src/server/plugins/engine/views/components/_location-field-base.html +4 -2
  381. package/src/server/plugins/engine/views/components/fileuploadfield.html +1 -1
  382. package/src/server/plugins/engine/views/components/geospatialfield.html +1 -0
  383. package/src/server/plugins/engine/views/components/osgridreffield.html +4 -1
  384. package/src/server/plugins/engine/views/components/trackingfield.html +3 -0
  385. package/src/server/plugins/engine/views/components/ukaddressfield.html +1 -1
  386. package/src/server/plugins/engine/views/file-upload.html +1 -1
  387. package/src/server/plugins/engine/views/summary.html +1 -0
  388. package/src/server/plugins/engine/views/unavailable.html +14 -11
  389. package/src/server/plugins/map/routes/index.js +29 -4
  390. package/src/server/plugins/map/routes/vts/README.md +38 -0
  391. package/src/server/plugins/map/routes/vts/countries-5dp.geojson +4 -0
  392. package/src/server/plugins/map/routes/vts/countries.geojson +10 -39283
  393. package/src/server/plugins/map/types.js +9 -2
  394. package/src/server/plugins/nunjucks/filters/applyUrlParam.js +17 -0
  395. package/src/server/plugins/nunjucks/filters/index.js +1 -0
  396. package/src/server/plugins/payment/helper.js +22 -2
  397. package/src/server/plugins/payment/service.js +6 -2
  398. package/src/server/plugins/payment/types.js +1 -0
  399. package/src/server/plugins/postcode-lookup/models/index.js +91 -46
  400. package/src/server/plugins/postcode-lookup/routes/index.js +96 -24
  401. package/src/server/plugins/postcode-lookup/types.js +6 -1
  402. package/src/server/plugins/postcode-lookup/views/postcode-lookup-details.html +3 -3
  403. package/src/server/utils/type-utils.ts +1 -11
  404. package/src/server/utils/utils.js +19 -1
  405. package/src/typings/geodesy/index.d.ts +18 -0
  406. package/src/typings/hapi/index.d.ts +2 -0
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","names":["initAllAutocomplete","initAllAutocompleteImp","initDebounceClick","initDebounceClickImp","initFileUpload","initFileUploadImp","initAllGovuk","initAllGovukImp","initPreviewCloseLink","initPreviewCloseLinkImp","initMaps","map","geospatialMap","sssiDataset","initAll"],"sources":["../../../src/client/javascripts/shared.js"],"sourcesContent":["import { initAllAutocomplete as initAllAutocompleteImp } from '~/src/client/javascripts/autocomplete.js'\nimport { initDebounceClick as initDebounceClickImp } from '~/src/client/javascripts/debounce-click.js'\nimport { initFileUpload as initFileUploadImp } from '~/src/client/javascripts/file-upload.js'\nimport { initAllGovuk as initAllGovukImp } from '~/src/client/javascripts/govuk.js'\nimport { initPreviewCloseLink as initPreviewCloseLinkImp } from '~/src/client/javascripts/preview-close-link.js'\nexport { initMaps } from '~/src/client/javascripts/map.js'\nexport * as map from '~/src/client/javascripts/map.js'\nexport * as geospatialMap from '~/src/client/javascripts/geospatial-map.js'\nexport * as sssiDataset from '~/src/client/javascripts/sssi-dataset.js'\n\nexport const initAllGovuk = initAllGovukImp\nexport const initAllAutocomplete = initAllAutocompleteImp\nexport const initDebounceClick = initDebounceClickImp\nexport const initFileUpload = initFileUploadImp\nexport const initPreviewCloseLink = initPreviewCloseLinkImp\n\n/**\n * Initialise all clientside components (but not maps as this will be an opt-in for now given the additional UMD assets that are required)\n */\nexport function initAll() {\n initAllGovuk()\n initAllAutocomplete()\n initDebounceClick()\n initFileUpload()\n initPreviewCloseLink()\n}\n"],"mappings":"AAAA,SAASA,mBAAmB,IAAIC,sBAAsB;AACtD,SAASC,iBAAiB,IAAIC,oBAAoB;AAClD,SAASC,cAAc,IAAIC,iBAAiB;AAC5C,SAASC,YAAY,IAAIC,eAAe;AACxC,SAASC,oBAAoB,IAAIC,uBAAuB;AACxD,SAASC,QAAQ;AACjB,OAAO,KAAKC,GAAG;AACf,OAAO,KAAKC,aAAa;AACzB,OAAO,KAAKC,WAAW;AAEvB,OAAO,MAAMP,YAAY,GAAGC,eAAe;AAC3C,OAAO,MAAMP,mBAAmB,GAAGC,sBAAsB;AACzD,OAAO,MAAMC,iBAAiB,GAAGC,oBAAoB;AACrD,OAAO,MAAMC,cAAc,GAAGC,iBAAiB;AAC/C,OAAO,MAAMG,oBAAoB,GAAGC,uBAAuB;;AAE3D;AACA;AACA;AACA,OAAO,SAASK,OAAOA,CAAA,EAAG;EACxBR,YAAY,CAAC,CAAC;EACdN,mBAAmB,CAAC,CAAC;EACrBE,iBAAiB,CAAC,CAAC;EACnBE,cAAc,CAAC,CAAC;EAChBI,oBAAoB,CAAC,CAAC;AACxB","ignoreList":[]}
1
+ {"version":3,"file":"shared.js","names":["initAllAutocomplete","initAllAutocompleteImp","initDebounceClick","initDebounceClickImp","initFileUpload","initFileUploadImp","initAllGovuk","initAllGovukImp","initPreviewCloseLink","initPreviewCloseLinkImp","initAll"],"sources":["../../../src/client/javascripts/shared.js"],"sourcesContent":["import { initAllAutocomplete as initAllAutocompleteImp } from '~/src/client/javascripts/autocomplete.js'\nimport { initDebounceClick as initDebounceClickImp } from '~/src/client/javascripts/debounce-click.js'\nimport { initFileUpload as initFileUploadImp } from '~/src/client/javascripts/file-upload.js'\nimport { initAllGovuk as initAllGovukImp } from '~/src/client/javascripts/govuk.js'\nimport { initPreviewCloseLink as initPreviewCloseLinkImp } from '~/src/client/javascripts/preview-close-link.js'\nexport * from '~/src/client/javascripts/maps.js'\n\nexport const initAllGovuk = initAllGovukImp\nexport const initAllAutocomplete = initAllAutocompleteImp\nexport const initDebounceClick = initDebounceClickImp\nexport const initFileUpload = initFileUploadImp\nexport const initPreviewCloseLink = initPreviewCloseLinkImp\n\n/**\n * Initialise all clientside components (but not maps as this will be an opt-in for now given the additional UMD assets that are required)\n */\nexport function initAll() {\n initAllGovuk()\n initAllAutocomplete()\n initDebounceClick()\n initFileUpload()\n initPreviewCloseLink()\n}\n"],"mappings":"AAAA,SAASA,mBAAmB,IAAIC,sBAAsB;AACtD,SAASC,iBAAiB,IAAIC,oBAAoB;AAClD,SAASC,cAAc,IAAIC,iBAAiB;AAC5C,SAASC,YAAY,IAAIC,eAAe;AACxC,SAASC,oBAAoB,IAAIC,uBAAuB;AACxD;AAEA,OAAO,MAAMH,YAAY,GAAGC,eAAe;AAC3C,OAAO,MAAMP,mBAAmB,GAAGC,sBAAsB;AACzD,OAAO,MAAMC,iBAAiB,GAAGC,oBAAoB;AACrD,OAAO,MAAMC,cAAc,GAAGC,iBAAiB;AAC/C,OAAO,MAAMG,oBAAoB,GAAGC,uBAAuB;;AAE3D;AACA;AACA;AACA,OAAO,SAASC,OAAOA,CAAA,EAAG;EACxBJ,YAAY,CAAC,CAAC;EACdN,mBAAmB,CAAC,CAAC;EACrBE,iBAAiB,CAAC,CAAC;EACnBE,cAAc,CAAC,CAAC;EAChBI,oBAAoB,CAAC,CAAC;AACxB","ignoreList":[]}
@@ -1,26 +1,24 @@
1
1
  export function sssiEnglandRequestTransformer(url: string, options: TransformRequestOptions): any;
2
2
  export function sssiWalesRequestTransformer(url: string, options: TransformRequestOptions): any;
3
3
  export function sssiScotlandRequestTransformer(url: string, options: TransformRequestOptions): any;
4
- declare namespace _default {
5
- let datasets: {
6
- id: string;
7
- label: string;
8
- dynamicGeoJSON: {
9
- url: string;
10
- idProperty: string;
11
- transformRequest: typeof sssiEnglandRequestTransformer;
12
- };
13
- minZoom: number;
14
- style: {
15
- stroke: string;
16
- fillPattern: string;
17
- fillPatternForegroundColor: string;
18
- fillPatternBackgroundColor: string;
19
- };
20
- showInKey: boolean;
21
- showInMenu: boolean;
22
- }[];
23
- }
4
+ declare const _default: {
5
+ id: string;
6
+ label: string;
7
+ dynamicGeoJSON: {
8
+ url: string;
9
+ idProperty: string;
10
+ transformRequest: typeof sssiEnglandRequestTransformer;
11
+ };
12
+ minZoom: number;
13
+ style: {
14
+ stroke: string;
15
+ fillPattern: string;
16
+ fillPatternForegroundColor: string;
17
+ fillPatternBackgroundColor: string;
18
+ };
19
+ showInKey: boolean;
20
+ showInMenu: boolean;
21
+ }[];
24
22
  export default _default;
25
23
  export type TransformRequestOptions = {
26
24
  /**
@@ -47,45 +47,43 @@ export function sssiScotlandRequestTransformer(url, {
47
47
  url: uri.toString()
48
48
  };
49
49
  }
50
- export default {
51
- datasets: [{
52
- id: 'sssi-england',
53
- label: 'Sites of Special Scientific Interest',
54
- dynamicGeoJSON: {
55
- url: englandWFS,
56
- idProperty: 'ref_code',
57
- transformRequest: sssiEnglandRequestTransformer
58
- },
59
- minZoom,
60
- style,
61
- showInKey: true,
62
- showInMenu: false
63
- }, {
64
- id: 'sssi-wales',
65
- label: 'SSSI Wales',
66
- dynamicGeoJSON: {
67
- url: walesWFS,
68
- idProperty: 'id',
69
- transformRequest: sssiWalesRequestTransformer
70
- },
71
- minZoom,
72
- style,
73
- showInKey: false,
74
- showInMenu: false
75
- }, {
76
- id: 'sssi-scotland',
77
- label: 'SSSI Scotland',
78
- dynamicGeoJSON: {
79
- url: scotlandWFS,
80
- idProperty: 'OBJECTID',
81
- transformRequest: sssiScotlandRequestTransformer
82
- },
83
- minZoom,
84
- style,
85
- showInKey: false,
86
- showInMenu: false
87
- }]
88
- };
50
+ export default [{
51
+ id: 'sssi-england',
52
+ label: 'Sites of Special Scientific Interest',
53
+ dynamicGeoJSON: {
54
+ url: englandWFS,
55
+ idProperty: 'ref_code',
56
+ transformRequest: sssiEnglandRequestTransformer
57
+ },
58
+ minZoom,
59
+ style,
60
+ showInKey: true,
61
+ showInMenu: false
62
+ }, {
63
+ id: 'sssi-wales',
64
+ label: 'SSSI Wales',
65
+ dynamicGeoJSON: {
66
+ url: walesWFS,
67
+ idProperty: 'id',
68
+ transformRequest: sssiWalesRequestTransformer
69
+ },
70
+ minZoom,
71
+ style,
72
+ showInKey: false,
73
+ showInMenu: false
74
+ }, {
75
+ id: 'sssi-scotland',
76
+ label: 'SSSI Scotland',
77
+ dynamicGeoJSON: {
78
+ url: scotlandWFS,
79
+ idProperty: 'OBJECTID',
80
+ transformRequest: sssiScotlandRequestTransformer
81
+ },
82
+ minZoom,
83
+ style,
84
+ showInKey: false,
85
+ showInMenu: false
86
+ }];
89
87
 
90
88
  /**
91
89
  * @typedef {object} TransformRequestOptions
@@ -1 +1 @@
1
- {"version":3,"file":"sssi-dataset.js","names":["style","stroke","fillPattern","fillPatternForegroundColor","fillPatternBackgroundColor","minZoom","englandWFS","walesWFS","scotlandWFS","sssiEnglandRequestTransformer","url","bbox","uri","URL","searchParams","set","join","toString","sssiWalesRequestTransformer","sssiScotlandRequestTransformer","datasets","id","label","dynamicGeoJSON","idProperty","transformRequest","showInKey","showInMenu"],"sources":["../../../src/client/javascripts/sssi-dataset.js"],"sourcesContent":["const style = {\n stroke: '#00897B',\n fillPattern: 'diagonal-cross-hatch',\n fillPatternForegroundColor: '#00897B',\n fillPatternBackgroundColor: 'transparent'\n}\nconst minZoom = 12\n\nconst englandWFS =\n 'https://environment.data.gov.uk/geoservices/datasets/ba8dc201-66ef-4983-9d46-7378af21027e/ogc/features/v1/collections/Sites_of_Special_Scientific_Interest_England/items?f=json'\nconst walesWFS =\n 'https://datamap.gov.wales/geoserver/wfs?service=WFS&version=2.0.0&request=GetFeature&typeNames=inspire-nrw:NRW_SSSI&outputFormat=application/json&srsName=EPSG:4326'\nconst scotlandWFS =\n 'https://services1.arcgis.com/LM9GyVFsughzHdbO/ArcGIS/rest/services/Sites_of_Special_Scientific_Interest/FeatureServer/0/query?f=geojson&where=1%3D1&geometryType=esriGeometryEnvelope&inSR=4326&spatialRel=esriSpatialRelIntersects&returnGeometry=true&outFields=*'\n\n/**\n * @type {TransformRequestArgs}\n */\nexport function sssiEnglandRequestTransformer(url, { bbox }) {\n const uri = new URL(url)\n uri.searchParams.set('bbox', bbox.join(','))\n\n return {\n url: uri.toString()\n }\n}\n\n/**\n * @type {TransformRequestArgs}\n */\nexport function sssiWalesRequestTransformer(url, { bbox }) {\n const uri = new URL(url)\n uri.searchParams.set('bbox', `${bbox.join(',')},EPSG:4326`)\n\n return {\n url: uri.toString()\n }\n}\n\n/**\n * @type {TransformRequestArgs}\n */\nexport function sssiScotlandRequestTransformer(url, { bbox }) {\n const uri = new URL(url)\n uri.searchParams.set('geometry', bbox.join(','))\n\n return {\n url: uri.toString()\n }\n}\n\nexport default {\n datasets: [\n {\n id: 'sssi-england',\n label: 'Sites of Special Scientific Interest',\n dynamicGeoJSON: {\n url: englandWFS,\n idProperty: 'ref_code',\n transformRequest: sssiEnglandRequestTransformer\n },\n minZoom,\n style,\n showInKey: true,\n showInMenu: false\n },\n {\n id: 'sssi-wales',\n label: 'SSSI Wales',\n dynamicGeoJSON: {\n url: walesWFS,\n idProperty: 'id',\n transformRequest: sssiWalesRequestTransformer\n },\n minZoom,\n style,\n showInKey: false,\n showInMenu: false\n },\n {\n id: 'sssi-scotland',\n label: 'SSSI Scotland',\n dynamicGeoJSON: {\n url: scotlandWFS,\n idProperty: 'OBJECTID',\n transformRequest: sssiScotlandRequestTransformer\n },\n minZoom,\n style,\n showInKey: false,\n showInMenu: false\n }\n ]\n}\n\n/**\n * @typedef {object} TransformRequestOptions\n * @property {string[]} bbox - the bounding box coordinates\n */\n\n/**\n * Transforms the request URL with bounding box parameters\n * @callback TransformRequestArgs\n * @param {string} url - the request URL\n * @param {TransformRequestOptions} options - the bounding box coordinates\n */\n"],"mappings":"AAAA,MAAMA,KAAK,GAAG;EACZC,MAAM,EAAE,SAAS;EACjBC,WAAW,EAAE,sBAAsB;EACnCC,0BAA0B,EAAE,SAAS;EACrCC,0BAA0B,EAAE;AAC9B,CAAC;AACD,MAAMC,OAAO,GAAG,EAAE;AAElB,MAAMC,UAAU,GACd,iLAAiL;AACnL,MAAMC,QAAQ,GACZ,qKAAqK;AACvK,MAAMC,WAAW,GACf,qQAAqQ;;AAEvQ;AACA;AACA;AACA,OAAO,SAASC,6BAA6BA,CAACC,GAAG,EAAE;EAAEC;AAAK,CAAC,EAAE;EAC3D,MAAMC,GAAG,GAAG,IAAIC,GAAG,CAACH,GAAG,CAAC;EACxBE,GAAG,CAACE,YAAY,CAACC,GAAG,CAAC,MAAM,EAAEJ,IAAI,CAACK,IAAI,CAAC,GAAG,CAAC,CAAC;EAE5C,OAAO;IACLN,GAAG,EAAEE,GAAG,CAACK,QAAQ,CAAC;EACpB,CAAC;AACH;;AAEA;AACA;AACA;AACA,OAAO,SAASC,2BAA2BA,CAACR,GAAG,EAAE;EAAEC;AAAK,CAAC,EAAE;EACzD,MAAMC,GAAG,GAAG,IAAIC,GAAG,CAACH,GAAG,CAAC;EACxBE,GAAG,CAACE,YAAY,CAACC,GAAG,CAAC,MAAM,EAAE,GAAGJ,IAAI,CAACK,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;EAE3D,OAAO;IACLN,GAAG,EAAEE,GAAG,CAACK,QAAQ,CAAC;EACpB,CAAC;AACH;;AAEA;AACA;AACA;AACA,OAAO,SAASE,8BAA8BA,CAACT,GAAG,EAAE;EAAEC;AAAK,CAAC,EAAE;EAC5D,MAAMC,GAAG,GAAG,IAAIC,GAAG,CAACH,GAAG,CAAC;EACxBE,GAAG,CAACE,YAAY,CAACC,GAAG,CAAC,UAAU,EAAEJ,IAAI,CAACK,IAAI,CAAC,GAAG,CAAC,CAAC;EAEhD,OAAO;IACLN,GAAG,EAAEE,GAAG,CAACK,QAAQ,CAAC;EACpB,CAAC;AACH;AAEA,eAAe;EACbG,QAAQ,EAAE,CACR;IACEC,EAAE,EAAE,cAAc;IAClBC,KAAK,EAAE,sCAAsC;IAC7CC,cAAc,EAAE;MACdb,GAAG,EAAEJ,UAAU;MACfkB,UAAU,EAAE,UAAU;MACtBC,gBAAgB,EAAEhB;IACpB,CAAC;IACDJ,OAAO;IACPL,KAAK;IACL0B,SAAS,EAAE,IAAI;IACfC,UAAU,EAAE;EACd,CAAC,EACD;IACEN,EAAE,EAAE,YAAY;IAChBC,KAAK,EAAE,YAAY;IACnBC,cAAc,EAAE;MACdb,GAAG,EAAEH,QAAQ;MACbiB,UAAU,EAAE,IAAI;MAChBC,gBAAgB,EAAEP;IACpB,CAAC;IACDb,OAAO;IACPL,KAAK;IACL0B,SAAS,EAAE,KAAK;IAChBC,UAAU,EAAE;EACd,CAAC,EACD;IACEN,EAAE,EAAE,eAAe;IACnBC,KAAK,EAAE,eAAe;IACtBC,cAAc,EAAE;MACdb,GAAG,EAAEF,WAAW;MAChBgB,UAAU,EAAE,UAAU;MACtBC,gBAAgB,EAAEN;IACpB,CAAC;IACDd,OAAO;IACPL,KAAK;IACL0B,SAAS,EAAE,KAAK;IAChBC,UAAU,EAAE;EACd,CAAC;AAEL,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA","ignoreList":[]}
1
+ {"version":3,"file":"sssi-dataset.js","names":["style","stroke","fillPattern","fillPatternForegroundColor","fillPatternBackgroundColor","minZoom","englandWFS","walesWFS","scotlandWFS","sssiEnglandRequestTransformer","url","bbox","uri","URL","searchParams","set","join","toString","sssiWalesRequestTransformer","sssiScotlandRequestTransformer","id","label","dynamicGeoJSON","idProperty","transformRequest","showInKey","showInMenu"],"sources":["../../../src/client/javascripts/sssi-dataset.js"],"sourcesContent":["const style = {\n stroke: '#00897B',\n fillPattern: 'diagonal-cross-hatch',\n fillPatternForegroundColor: '#00897B',\n fillPatternBackgroundColor: 'transparent'\n}\nconst minZoom = 12\n\nconst englandWFS =\n 'https://environment.data.gov.uk/geoservices/datasets/ba8dc201-66ef-4983-9d46-7378af21027e/ogc/features/v1/collections/Sites_of_Special_Scientific_Interest_England/items?f=json'\nconst walesWFS =\n 'https://datamap.gov.wales/geoserver/wfs?service=WFS&version=2.0.0&request=GetFeature&typeNames=inspire-nrw:NRW_SSSI&outputFormat=application/json&srsName=EPSG:4326'\nconst scotlandWFS =\n 'https://services1.arcgis.com/LM9GyVFsughzHdbO/ArcGIS/rest/services/Sites_of_Special_Scientific_Interest/FeatureServer/0/query?f=geojson&where=1%3D1&geometryType=esriGeometryEnvelope&inSR=4326&spatialRel=esriSpatialRelIntersects&returnGeometry=true&outFields=*'\n\n/**\n * @type {TransformRequestArgs}\n */\nexport function sssiEnglandRequestTransformer(url, { bbox }) {\n const uri = new URL(url)\n uri.searchParams.set('bbox', bbox.join(','))\n\n return {\n url: uri.toString()\n }\n}\n\n/**\n * @type {TransformRequestArgs}\n */\nexport function sssiWalesRequestTransformer(url, { bbox }) {\n const uri = new URL(url)\n uri.searchParams.set('bbox', `${bbox.join(',')},EPSG:4326`)\n\n return {\n url: uri.toString()\n }\n}\n\n/**\n * @type {TransformRequestArgs}\n */\nexport function sssiScotlandRequestTransformer(url, { bbox }) {\n const uri = new URL(url)\n uri.searchParams.set('geometry', bbox.join(','))\n\n return {\n url: uri.toString()\n }\n}\n\nexport default [\n {\n id: 'sssi-england',\n label: 'Sites of Special Scientific Interest',\n dynamicGeoJSON: {\n url: englandWFS,\n idProperty: 'ref_code',\n transformRequest: sssiEnglandRequestTransformer\n },\n minZoom,\n style,\n showInKey: true,\n showInMenu: false\n },\n {\n id: 'sssi-wales',\n label: 'SSSI Wales',\n dynamicGeoJSON: {\n url: walesWFS,\n idProperty: 'id',\n transformRequest: sssiWalesRequestTransformer\n },\n minZoom,\n style,\n showInKey: false,\n showInMenu: false\n },\n {\n id: 'sssi-scotland',\n label: 'SSSI Scotland',\n dynamicGeoJSON: {\n url: scotlandWFS,\n idProperty: 'OBJECTID',\n transformRequest: sssiScotlandRequestTransformer\n },\n minZoom,\n style,\n showInKey: false,\n showInMenu: false\n }\n]\n\n/**\n * @typedef {object} TransformRequestOptions\n * @property {string[]} bbox - the bounding box coordinates\n */\n\n/**\n * Transforms the request URL with bounding box parameters\n * @callback TransformRequestArgs\n * @param {string} url - the request URL\n * @param {TransformRequestOptions} options - the bounding box coordinates\n */\n"],"mappings":"AAAA,MAAMA,KAAK,GAAG;EACZC,MAAM,EAAE,SAAS;EACjBC,WAAW,EAAE,sBAAsB;EACnCC,0BAA0B,EAAE,SAAS;EACrCC,0BAA0B,EAAE;AAC9B,CAAC;AACD,MAAMC,OAAO,GAAG,EAAE;AAElB,MAAMC,UAAU,GACd,iLAAiL;AACnL,MAAMC,QAAQ,GACZ,qKAAqK;AACvK,MAAMC,WAAW,GACf,qQAAqQ;;AAEvQ;AACA;AACA;AACA,OAAO,SAASC,6BAA6BA,CAACC,GAAG,EAAE;EAAEC;AAAK,CAAC,EAAE;EAC3D,MAAMC,GAAG,GAAG,IAAIC,GAAG,CAACH,GAAG,CAAC;EACxBE,GAAG,CAACE,YAAY,CAACC,GAAG,CAAC,MAAM,EAAEJ,IAAI,CAACK,IAAI,CAAC,GAAG,CAAC,CAAC;EAE5C,OAAO;IACLN,GAAG,EAAEE,GAAG,CAACK,QAAQ,CAAC;EACpB,CAAC;AACH;;AAEA;AACA;AACA;AACA,OAAO,SAASC,2BAA2BA,CAACR,GAAG,EAAE;EAAEC;AAAK,CAAC,EAAE;EACzD,MAAMC,GAAG,GAAG,IAAIC,GAAG,CAACH,GAAG,CAAC;EACxBE,GAAG,CAACE,YAAY,CAACC,GAAG,CAAC,MAAM,EAAE,GAAGJ,IAAI,CAACK,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;EAE3D,OAAO;IACLN,GAAG,EAAEE,GAAG,CAACK,QAAQ,CAAC;EACpB,CAAC;AACH;;AAEA;AACA;AACA;AACA,OAAO,SAASE,8BAA8BA,CAACT,GAAG,EAAE;EAAEC;AAAK,CAAC,EAAE;EAC5D,MAAMC,GAAG,GAAG,IAAIC,GAAG,CAACH,GAAG,CAAC;EACxBE,GAAG,CAACE,YAAY,CAACC,GAAG,CAAC,UAAU,EAAEJ,IAAI,CAACK,IAAI,CAAC,GAAG,CAAC,CAAC;EAEhD,OAAO;IACLN,GAAG,EAAEE,GAAG,CAACK,QAAQ,CAAC;EACpB,CAAC;AACH;AAEA,eAAe,CACb;EACEG,EAAE,EAAE,cAAc;EAClBC,KAAK,EAAE,sCAAsC;EAC7CC,cAAc,EAAE;IACdZ,GAAG,EAAEJ,UAAU;IACfiB,UAAU,EAAE,UAAU;IACtBC,gBAAgB,EAAEf;EACpB,CAAC;EACDJ,OAAO;EACPL,KAAK;EACLyB,SAAS,EAAE,IAAI;EACfC,UAAU,EAAE;AACd,CAAC,EACD;EACEN,EAAE,EAAE,YAAY;EAChBC,KAAK,EAAE,YAAY;EACnBC,cAAc,EAAE;IACdZ,GAAG,EAAEH,QAAQ;IACbgB,UAAU,EAAE,IAAI;IAChBC,gBAAgB,EAAEN;EACpB,CAAC;EACDb,OAAO;EACPL,KAAK;EACLyB,SAAS,EAAE,KAAK;EAChBC,UAAU,EAAE;AACd,CAAC,EACD;EACEN,EAAE,EAAE,eAAe;EACnBC,KAAK,EAAE,eAAe;EACtBC,cAAc,EAAE;IACdZ,GAAG,EAAEF,WAAW;IAChBe,UAAU,EAAE,UAAU;IACtBC,gBAAgB,EAAEL;EACpB,CAAC;EACDd,OAAO;EACPL,KAAK;EACLyB,SAAS,EAAE,KAAK;EAChBC,UAAU,EAAE;AACd,CAAC,CACF;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ @use "@defra/interactive-map/css" as core;
2
+ @use "@defra/interactive-map/plugins/map-styles/css" as mapStyles;
3
+ @use "@defra/interactive-map/plugins/search/css" as search;
4
+ @use "@defra/interactive-map/plugins/scale-bar/css" as scaleBar;
@@ -3,11 +3,7 @@
3
3
  @use "prose";
4
4
  @use "summary-list";
5
5
  @use "location-fields";
6
-
7
- @use "@defra/interactive-map/css" as core;
8
- @use "@defra/interactive-map/plugins/map-styles/css" as mapStyles;
9
- @use "@defra/interactive-map/plugins/search/css" as search;
10
- @use "@defra/interactive-map/plugins/scale-bar/css" as scaleBar;
6
+ @use "maps";
11
7
 
12
8
  // Use default GDS Transport font for autocomplete
13
9
  .autocomplete__hint,
@@ -5,3 +5,5 @@ export const EXTERNAL_STATE_PAYLOAD: "EXTERNAL_STATE_PAYLOAD";
5
5
  export const EXTERNAL_STATE_APPENDAGE: "EXTERNAL_STATE_APPENDAGE";
6
6
  export const COMPONENT_STATE_ERROR: "COMPONENT_STATE_ERROR";
7
7
  export const PAYMENT_EXPIRED_NOTIFICATION: "PAYMENT_EXPIRED_NOTIFICATION";
8
+ export const EN_GB: "en-GB";
9
+ export const CY: "cy";
@@ -5,4 +5,6 @@ export const EXTERNAL_STATE_PAYLOAD = 'EXTERNAL_STATE_PAYLOAD';
5
5
  export const EXTERNAL_STATE_APPENDAGE = 'EXTERNAL_STATE_APPENDAGE';
6
6
  export const COMPONENT_STATE_ERROR = 'COMPONENT_STATE_ERROR';
7
7
  export const PAYMENT_EXPIRED_NOTIFICATION = 'PAYMENT_EXPIRED_NOTIFICATION';
8
+ export const EN_GB = 'en-GB'; // English language
9
+ export const CY = 'cy'; // Welsh language
8
10
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","names":["FORM_VERSION_METADATA_KEY","PREVIEW_PATH_PREFIX","FORM_PREFIX","EXTERNAL_STATE_PAYLOAD","EXTERNAL_STATE_APPENDAGE","COMPONENT_STATE_ERROR","PAYMENT_EXPIRED_NOTIFICATION"],"sources":["../../src/server/constants.js"],"sourcesContent":["export const FORM_VERSION_METADATA_KEY = '$$__formVersion'\nexport const PREVIEW_PATH_PREFIX = '/preview'\nexport const FORM_PREFIX = ''\nexport const EXTERNAL_STATE_PAYLOAD = 'EXTERNAL_STATE_PAYLOAD'\nexport const EXTERNAL_STATE_APPENDAGE = 'EXTERNAL_STATE_APPENDAGE'\nexport const COMPONENT_STATE_ERROR = 'COMPONENT_STATE_ERROR'\nexport const PAYMENT_EXPIRED_NOTIFICATION = 'PAYMENT_EXPIRED_NOTIFICATION'\n"],"mappings":"AAAA,OAAO,MAAMA,yBAAyB,GAAG,iBAAiB;AAC1D,OAAO,MAAMC,mBAAmB,GAAG,UAAU;AAC7C,OAAO,MAAMC,WAAW,GAAG,EAAE;AAC7B,OAAO,MAAMC,sBAAsB,GAAG,wBAAwB;AAC9D,OAAO,MAAMC,wBAAwB,GAAG,0BAA0B;AAClE,OAAO,MAAMC,qBAAqB,GAAG,uBAAuB;AAC5D,OAAO,MAAMC,4BAA4B,GAAG,8BAA8B","ignoreList":[]}
1
+ {"version":3,"file":"constants.js","names":["FORM_VERSION_METADATA_KEY","PREVIEW_PATH_PREFIX","FORM_PREFIX","EXTERNAL_STATE_PAYLOAD","EXTERNAL_STATE_APPENDAGE","COMPONENT_STATE_ERROR","PAYMENT_EXPIRED_NOTIFICATION","EN_GB","CY"],"sources":["../../src/server/constants.js"],"sourcesContent":["export const FORM_VERSION_METADATA_KEY = '$$__formVersion'\nexport const PREVIEW_PATH_PREFIX = '/preview'\nexport const FORM_PREFIX = ''\nexport const EXTERNAL_STATE_PAYLOAD = 'EXTERNAL_STATE_PAYLOAD'\nexport const EXTERNAL_STATE_APPENDAGE = 'EXTERNAL_STATE_APPENDAGE'\nexport const COMPONENT_STATE_ERROR = 'COMPONENT_STATE_ERROR'\nexport const PAYMENT_EXPIRED_NOTIFICATION = 'PAYMENT_EXPIRED_NOTIFICATION'\nexport const EN_GB = 'en-GB' // English language\nexport const CY = 'cy' // Welsh language\n"],"mappings":"AAAA,OAAO,MAAMA,yBAAyB,GAAG,iBAAiB;AAC1D,OAAO,MAAMC,mBAAmB,GAAG,UAAU;AAC7C,OAAO,MAAMC,WAAW,GAAG,EAAE;AAC7B,OAAO,MAAMC,sBAAsB,GAAG,wBAAwB;AAC9D,OAAO,MAAMC,wBAAwB,GAAG,0BAA0B;AAClE,OAAO,MAAMC,qBAAqB,GAAG,uBAAuB;AAC5D,OAAO,MAAMC,4BAA4B,GAAG,8BAA8B;AAC1E,OAAO,MAAMC,KAAK,GAAG,OAAO,EAAC;AAC7B,OAAO,MAAMC,EAAE,GAAG,IAAI,EAAC","ignoreList":[]}
@@ -6,6 +6,14 @@
6
6
  "path": "/all-components",
7
7
  "title": "All Components",
8
8
  "components": [
9
+ {
10
+ "type": "TrackingField",
11
+ "name": "trackingField",
12
+ "title": "Tracking field",
13
+ "hint": "Help text",
14
+ "options": {},
15
+ "schema": {}
16
+ },
9
17
  {
10
18
  "type": "TextField",
11
19
  "name": "textField",
@@ -5,6 +5,10 @@ pages:
5
5
  - path: '/whats-your-name'
6
6
  title: What's your name?
7
7
  components:
8
+ - type: TrackingField
9
+ name: hasSeenNamePage
10
+ title: Tracks if the user has seen the name page
11
+ options: {}
8
12
  - type: TextField
9
13
  name: textField
10
14
  title: Name
@@ -0,0 +1,29 @@
1
+ import { type FormDefinition } from '@defra/forms-model';
2
+ /**
3
+ * A minimal, schema-valid V2 definition: one YesNo question page and a
4
+ * summary page. Each call returns a fresh object, so tests can mutate their
5
+ * copy freely without affecting each other.
6
+ */
7
+ export declare function buildDefinition(): FormDefinition;
8
+ /**
9
+ * A definition that passes schema validation but cannot be used by the
10
+ * engine: a ListItemRef condition points at the YesNoField (boolean), so the
11
+ * condition expression builder produces an unparseable expression. Distilled
12
+ * from a real production incident.
13
+ */
14
+ export declare function buildBrokenConditionDefinition(): FormDefinition;
15
+ /**
16
+ * A schema-valid definition whose first page names a controller that is
17
+ * neither built in nor registered by the host application.
18
+ */
19
+ export declare function buildUnknownControllerDefinition(): FormDefinition;
20
+ /**
21
+ * Schema-valid (component types are free strings in the schema), but the
22
+ * question uses a type the engine has no component class for.
23
+ */
24
+ export declare function buildUnknownComponentDefinition(): FormDefinition;
25
+ /**
26
+ * A definition that fails schema validation: the question page appears
27
+ * twice, violating the pages uniqueness rule.
28
+ */
29
+ export declare function buildSchemaInvalidDefinition(): FormDefinition;
@@ -0,0 +1,125 @@
1
+ import { ComponentType, ConditionType, ControllerType, Engine, OperatorName, SchemaVersion } from '@defra/forms-model';
2
+ const YES_NO_COMPONENT_ID = 'a7c0242f-2a31-45b2-8c71-ff2ac7f53288';
3
+ const USER_TYPE_LIST_ID = '4fa26e9c-07cf-47cd-a9dd-5cec0dd3f544';
4
+ const EXISTING_USER_ITEM_ID = '55fe0067-d011-4d33-886c-e1aa266637c3';
5
+
6
+ /**
7
+ * A minimal, schema-valid V2 definition: one YesNo question page and a
8
+ * summary page. Each call returns a fresh object, so tests can mutate their
9
+ * copy freely without affecting each other.
10
+ */
11
+ export function buildDefinition() {
12
+ return {
13
+ name: 'Stub definition',
14
+ engine: Engine.V2,
15
+ schema: SchemaVersion.V2,
16
+ startPage: '/summary',
17
+ pages: [{
18
+ id: '449c053b-9201-4312-9a75-187afc6ba48b',
19
+ path: '/licence',
20
+ title: 'Licence',
21
+ components: [{
22
+ id: YES_NO_COMPONENT_ID,
23
+ name: 'xVrYaJ',
24
+ type: ComponentType.YesNoField,
25
+ title: 'Do you have a licence?',
26
+ shortDescription: 'Licence',
27
+ options: {
28
+ required: true
29
+ }
30
+ }],
31
+ next: []
32
+ }, {
33
+ id: '449c053b-9201-4312-9a75-187afc6ba48c',
34
+ path: '/summary',
35
+ title: 'Summary',
36
+ controller: ControllerType.Summary,
37
+ components: []
38
+ }],
39
+ lists: [],
40
+ sections: [],
41
+ conditions: []
42
+ };
43
+ }
44
+
45
+ /**
46
+ * A definition that passes schema validation but cannot be used by the
47
+ * engine: a ListItemRef condition points at the YesNoField (boolean), so the
48
+ * condition expression builder produces an unparseable expression. Distilled
49
+ * from a real production incident.
50
+ */
51
+ export function buildBrokenConditionDefinition() {
52
+ const definition = buildDefinition();
53
+ definition.name = 'Broken condition fixture';
54
+ const questionPage = definition.pages[0]
55
+ // A YesNoField cannot legitimately carry a custom list — that is the
56
+ // corruption this fixture models — so the TS component types (rightly)
57
+ // have no `list` property here and a cast is required.
58
+ ;
59
+ questionPage.components[0].list = USER_TYPE_LIST_ID;
60
+ definition.lists = [{
61
+ id: USER_TYPE_LIST_ID,
62
+ name: 'XtfRYR',
63
+ title: 'User type list',
64
+ type: 'string',
65
+ items: [{
66
+ id: EXISTING_USER_ITEM_ID,
67
+ text: 'existing user',
68
+ value: 'existing user'
69
+ }, {
70
+ id: '2277c7e5-7fef-46c6-993b-d294116d6d6b',
71
+ text: 'new user',
72
+ value: 'new user'
73
+ }]
74
+ }];
75
+ definition.conditions = [{
76
+ id: '3f9d3a35-6dee-4706-806c-3f776129f631',
77
+ displayName: 'Existing user',
78
+ items: [{
79
+ id: '7d7f58ee-c860-4d24-8a13-de5cb9af53d8',
80
+ componentId: YES_NO_COMPONENT_ID,
81
+ operator: OperatorName.Is,
82
+ type: ConditionType.ListItemRef,
83
+ value: {
84
+ listId: USER_TYPE_LIST_ID,
85
+ itemId: [EXISTING_USER_ITEM_ID]
86
+ }
87
+ }]
88
+ }];
89
+ return definition;
90
+ }
91
+
92
+ /**
93
+ * A schema-valid definition whose first page names a controller that is
94
+ * neither built in nor registered by the host application.
95
+ */
96
+ export function buildUnknownControllerDefinition() {
97
+ const definition = buildDefinition();
98
+ definition.name = 'Unknown controller fixture';
99
+ definition.pages[0].controller = 'NoSuchPageController';
100
+ return definition;
101
+ }
102
+
103
+ /**
104
+ * Schema-valid (component types are free strings in the schema), but the
105
+ * question uses a type the engine has no component class for.
106
+ */
107
+ export function buildUnknownComponentDefinition() {
108
+ const definition = buildDefinition();
109
+ definition.name = 'Unknown component fixture';
110
+ const questionPage = definition.pages[0];
111
+ questionPage.components[0].type = 'MyUnknownField';
112
+ return definition;
113
+ }
114
+
115
+ /**
116
+ * A definition that fails schema validation: the question page appears
117
+ * twice, violating the pages uniqueness rule.
118
+ */
119
+ export function buildSchemaInvalidDefinition() {
120
+ const definition = buildDefinition();
121
+ definition.name = 'Schema invalid fixture';
122
+ definition.pages.push(buildDefinition().pages[0]);
123
+ return definition;
124
+ }
125
+ //# sourceMappingURL=definitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definitions.js","names":["ComponentType","ConditionType","ControllerType","Engine","OperatorName","SchemaVersion","YES_NO_COMPONENT_ID","USER_TYPE_LIST_ID","EXISTING_USER_ITEM_ID","buildDefinition","name","engine","V2","schema","startPage","pages","id","path","title","components","type","YesNoField","shortDescription","options","required","next","controller","Summary","lists","sections","conditions","buildBrokenConditionDefinition","definition","questionPage","list","items","text","value","displayName","componentId","operator","Is","ListItemRef","listId","itemId","buildUnknownControllerDefinition","buildUnknownComponentDefinition","buildSchemaInvalidDefinition","push"],"sources":["../../../../../src/server/plugins/engine/__stubs__/definitions.ts"],"sourcesContent":["import {\n ComponentType,\n ConditionType,\n ControllerType,\n Engine,\n OperatorName,\n SchemaVersion,\n type FormDefinition,\n type PageQuestion\n} from '@defra/forms-model'\n\nconst YES_NO_COMPONENT_ID = 'a7c0242f-2a31-45b2-8c71-ff2ac7f53288'\nconst USER_TYPE_LIST_ID = '4fa26e9c-07cf-47cd-a9dd-5cec0dd3f544'\nconst EXISTING_USER_ITEM_ID = '55fe0067-d011-4d33-886c-e1aa266637c3'\n\n/**\n * A minimal, schema-valid V2 definition: one YesNo question page and a\n * summary page. Each call returns a fresh object, so tests can mutate their\n * copy freely without affecting each other.\n */\nexport function buildDefinition(): FormDefinition {\n return {\n name: 'Stub definition',\n engine: Engine.V2,\n schema: SchemaVersion.V2,\n startPage: '/summary',\n pages: [\n {\n id: '449c053b-9201-4312-9a75-187afc6ba48b',\n path: '/licence',\n title: 'Licence',\n components: [\n {\n id: YES_NO_COMPONENT_ID,\n name: 'xVrYaJ',\n type: ComponentType.YesNoField,\n title: 'Do you have a licence?',\n shortDescription: 'Licence',\n options: { required: true }\n }\n ],\n next: []\n },\n {\n id: '449c053b-9201-4312-9a75-187afc6ba48c',\n path: '/summary',\n title: 'Summary',\n controller: ControllerType.Summary,\n components: []\n }\n ],\n lists: [],\n sections: [],\n conditions: []\n }\n}\n\n/**\n * A definition that passes schema validation but cannot be used by the\n * engine: a ListItemRef condition points at the YesNoField (boolean), so the\n * condition expression builder produces an unparseable expression. Distilled\n * from a real production incident.\n */\nexport function buildBrokenConditionDefinition(): FormDefinition {\n const definition = buildDefinition()\n\n definition.name = 'Broken condition fixture'\n\n const questionPage = definition.pages[0] as PageQuestion\n // A YesNoField cannot legitimately carry a custom list — that is the\n // corruption this fixture models — so the TS component types (rightly)\n // have no `list` property here and a cast is required.\n ;(questionPage.components[0] as { list?: string }).list = USER_TYPE_LIST_ID\n definition.lists = [\n {\n id: USER_TYPE_LIST_ID,\n name: 'XtfRYR',\n title: 'User type list',\n type: 'string',\n items: [\n {\n id: EXISTING_USER_ITEM_ID,\n text: 'existing user',\n value: 'existing user'\n },\n {\n id: '2277c7e5-7fef-46c6-993b-d294116d6d6b',\n text: 'new user',\n value: 'new user'\n }\n ]\n }\n ]\n definition.conditions = [\n {\n id: '3f9d3a35-6dee-4706-806c-3f776129f631',\n displayName: 'Existing user',\n items: [\n {\n id: '7d7f58ee-c860-4d24-8a13-de5cb9af53d8',\n componentId: YES_NO_COMPONENT_ID,\n operator: OperatorName.Is,\n type: ConditionType.ListItemRef,\n value: {\n listId: USER_TYPE_LIST_ID,\n itemId: [EXISTING_USER_ITEM_ID]\n }\n }\n ]\n }\n ]\n\n return definition\n}\n\n/**\n * A schema-valid definition whose first page names a controller that is\n * neither built in nor registered by the host application.\n */\nexport function buildUnknownControllerDefinition(): FormDefinition {\n const definition = buildDefinition()\n\n definition.name = 'Unknown controller fixture'\n definition.pages[0].controller =\n 'NoSuchPageController' as unknown as ControllerType\n\n return definition\n}\n\n/**\n * Schema-valid (component types are free strings in the schema), but the\n * question uses a type the engine has no component class for.\n */\nexport function buildUnknownComponentDefinition(): FormDefinition {\n const definition = buildDefinition()\n\n definition.name = 'Unknown component fixture'\n const questionPage = definition.pages[0] as PageQuestion\n questionPage.components[0].type = 'MyUnknownField' as unknown as ComponentType\n\n return definition\n}\n\n/**\n * A definition that fails schema validation: the question page appears\n * twice, violating the pages uniqueness rule.\n */\nexport function buildSchemaInvalidDefinition(): FormDefinition {\n const definition = buildDefinition()\n\n definition.name = 'Schema invalid fixture'\n definition.pages.push(buildDefinition().pages[0])\n\n return definition\n}\n"],"mappings":"AAAA,SACEA,aAAa,EACbC,aAAa,EACbC,cAAc,EACdC,MAAM,EACNC,YAAY,EACZC,aAAa,QAGR,oBAAoB;AAE3B,MAAMC,mBAAmB,GAAG,sCAAsC;AAClE,MAAMC,iBAAiB,GAAG,sCAAsC;AAChE,MAAMC,qBAAqB,GAAG,sCAAsC;;AAEpE;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,eAAeA,CAAA,EAAmB;EAChD,OAAO;IACLC,IAAI,EAAE,iBAAiB;IACvBC,MAAM,EAAER,MAAM,CAACS,EAAE;IACjBC,MAAM,EAAER,aAAa,CAACO,EAAE;IACxBE,SAAS,EAAE,UAAU;IACrBC,KAAK,EAAE,CACL;MACEC,EAAE,EAAE,sCAAsC;MAC1CC,IAAI,EAAE,UAAU;MAChBC,KAAK,EAAE,SAAS;MAChBC,UAAU,EAAE,CACV;QACEH,EAAE,EAAEV,mBAAmB;QACvBI,IAAI,EAAE,QAAQ;QACdU,IAAI,EAAEpB,aAAa,CAACqB,UAAU;QAC9BH,KAAK,EAAE,wBAAwB;QAC/BI,gBAAgB,EAAE,SAAS;QAC3BC,OAAO,EAAE;UAAEC,QAAQ,EAAE;QAAK;MAC5B,CAAC,CACF;MACDC,IAAI,EAAE;IACR,CAAC,EACD;MACET,EAAE,EAAE,sCAAsC;MAC1CC,IAAI,EAAE,UAAU;MAChBC,KAAK,EAAE,SAAS;MAChBQ,UAAU,EAAExB,cAAc,CAACyB,OAAO;MAClCR,UAAU,EAAE;IACd,CAAC,CACF;IACDS,KAAK,EAAE,EAAE;IACTC,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE;EACd,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,8BAA8BA,CAAA,EAAmB;EAC/D,MAAMC,UAAU,GAAGvB,eAAe,CAAC,CAAC;EAEpCuB,UAAU,CAACtB,IAAI,GAAG,0BAA0B;EAE5C,MAAMuB,YAAY,GAAGD,UAAU,CAACjB,KAAK,CAAC,CAAC;EACvC;EACA;EACA;AAAA;EACEkB,YAAY,CAACd,UAAU,CAAC,CAAC,CAAC,CAAuBe,IAAI,GAAG3B,iBAAiB;EAC3EyB,UAAU,CAACJ,KAAK,GAAG,CACjB;IACEZ,EAAE,EAAET,iBAAiB;IACrBG,IAAI,EAAE,QAAQ;IACdQ,KAAK,EAAE,gBAAgB;IACvBE,IAAI,EAAE,QAAQ;IACde,KAAK,EAAE,CACL;MACEnB,EAAE,EAAER,qBAAqB;MACzB4B,IAAI,EAAE,eAAe;MACrBC,KAAK,EAAE;IACT,CAAC,EACD;MACErB,EAAE,EAAE,sCAAsC;MAC1CoB,IAAI,EAAE,UAAU;MAChBC,KAAK,EAAE;IACT,CAAC;EAEL,CAAC,CACF;EACDL,UAAU,CAACF,UAAU,GAAG,CACtB;IACEd,EAAE,EAAE,sCAAsC;IAC1CsB,WAAW,EAAE,eAAe;IAC5BH,KAAK,EAAE,CACL;MACEnB,EAAE,EAAE,sCAAsC;MAC1CuB,WAAW,EAAEjC,mBAAmB;MAChCkC,QAAQ,EAAEpC,YAAY,CAACqC,EAAE;MACzBrB,IAAI,EAAEnB,aAAa,CAACyC,WAAW;MAC/BL,KAAK,EAAE;QACLM,MAAM,EAAEpC,iBAAiB;QACzBqC,MAAM,EAAE,CAACpC,qBAAqB;MAChC;IACF,CAAC;EAEL,CAAC,CACF;EAED,OAAOwB,UAAU;AACnB;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASa,gCAAgCA,CAAA,EAAmB;EACjE,MAAMb,UAAU,GAAGvB,eAAe,CAAC,CAAC;EAEpCuB,UAAU,CAACtB,IAAI,GAAG,4BAA4B;EAC9CsB,UAAU,CAACjB,KAAK,CAAC,CAAC,CAAC,CAACW,UAAU,GAC5B,sBAAmD;EAErD,OAAOM,UAAU;AACnB;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASc,+BAA+BA,CAAA,EAAmB;EAChE,MAAMd,UAAU,GAAGvB,eAAe,CAAC,CAAC;EAEpCuB,UAAU,CAACtB,IAAI,GAAG,2BAA2B;EAC7C,MAAMuB,YAAY,GAAGD,UAAU,CAACjB,KAAK,CAAC,CAAC,CAAiB;EACxDkB,YAAY,CAACd,UAAU,CAAC,CAAC,CAAC,CAACC,IAAI,GAAG,gBAA4C;EAE9E,OAAOY,UAAU;AACnB;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASe,4BAA4BA,CAAA,EAAmB;EAC7D,MAAMf,UAAU,GAAGvB,eAAe,CAAC,CAAC;EAEpCuB,UAAU,CAACtB,IAAI,GAAG,wBAAwB;EAC1CsB,UAAU,CAACjB,KAAK,CAACiC,IAAI,CAACvC,eAAe,CAAC,CAAC,CAACM,KAAK,CAAC,CAAC,CAAC,CAAC;EAEjD,OAAOiB,UAAU;AACnB","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  import { type AutocompleteFieldComponent } from '@defra/forms-model';
2
2
  import { SelectField } from '../../../../server/plugins/engine/components/SelectField.js';
3
3
  import { type RenderContext } from '../../../../server/plugins/engine/components/types.js';
4
+ import { type Translator } from '../../../../server/plugins/engine/types/index.js';
4
5
  export declare class AutocompleteField extends SelectField {
5
6
  options: AutocompleteFieldComponent['options'];
6
7
  constructor(def: AutocompleteFieldComponent, props: ConstructorParameters<typeof SelectField>[1]);
@@ -15,7 +16,7 @@ export declare class AutocompleteField extends SelectField {
15
16
  };
16
17
  id: string;
17
18
  name: string;
18
- value: import("../types.js").FormValue;
19
+ value: import("../../../../server/plugins/engine/types/index.js").FormValue;
19
20
  type?: string;
20
21
  hint?: {
21
22
  id?: string;
@@ -25,7 +26,7 @@ export declare class AutocompleteField extends SelectField {
25
26
  suffix?: import("../../../../server/plugins/engine/components/types.js").ComponentText;
26
27
  classes?: string;
27
28
  condition?: string;
28
- errors?: import("../types.js").FormSubmissionError[];
29
+ errors?: import("../../../../server/plugins/engine/types/index.js").FormSubmissionError[];
29
30
  errorMessage?: {
30
31
  text: string;
31
32
  };
@@ -50,7 +51,11 @@ export declare class AutocompleteField extends SelectField {
50
51
  components?: import("../../../../server/plugins/engine/components/types.js").ComponentViewModel[];
51
52
  upload?: {
52
53
  count: number;
53
- summaryList: import("../types.js").SummaryList;
54
+ summaryList: import("../../../../server/plugins/engine/types/index.js").SummaryList;
55
+ uploadingLabel?: string;
54
56
  };
55
57
  };
58
+ getValidationMessagesOverride(translator: Translator): {
59
+ [x: string]: import("joi").LanguageMessages;
60
+ };
56
61
  }
@@ -1,4 +1,6 @@
1
1
  import { SelectField } from "./SelectField.js";
2
+ import { withCustomValidationOverrides } from "./helpers/index.js";
3
+ import { buildValidationMessages } from "../i18n/buildValidationMessages.js";
2
4
  import { messageTemplate } from "../pageControllers/validationOptions.js";
3
5
  export class AutocompleteField extends SelectField {
4
6
  constructor(def, props) {
@@ -33,5 +35,20 @@ export class AutocompleteField extends SelectField {
33
35
  formGroup
34
36
  };
35
37
  }
38
+ getValidationMessagesOverride(translator) {
39
+ const {
40
+ customValidationMessages
41
+ } = this.options;
42
+ const {
43
+ t
44
+ } = translator;
45
+ const defaults = {
46
+ 'any.required': buildValidationMessages(t).objectRequired,
47
+ 'any.only': buildValidationMessages(t).objectRequired
48
+ };
49
+ return {
50
+ [this.name]: withCustomValidationOverrides(defaults, undefined, customValidationMessages)
51
+ };
52
+ }
36
53
  }
37
54
  //# sourceMappingURL=AutocompleteField.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AutocompleteField.js","names":["SelectField","messageTemplate","AutocompleteField","constructor","def","props","options","formSchema","required","messages","customValidationMessages","getViewModel","context","viewModel","formGroup","attributes"],"sources":["../../../../../src/server/plugins/engine/components/AutocompleteField.ts"],"sourcesContent":["import { type AutocompleteFieldComponent } from '@defra/forms-model'\n\nimport { SelectField } from '~/src/server/plugins/engine/components/SelectField.js'\nimport { type RenderContext } from '~/src/server/plugins/engine/components/types.js'\nimport { messageTemplate } from '~/src/server/plugins/engine/pageControllers/validationOptions.js'\n\nexport class AutocompleteField extends SelectField {\n declare options: AutocompleteFieldComponent['options']\n\n constructor(\n def: AutocompleteFieldComponent,\n props: ConstructorParameters<typeof SelectField>[1]\n ) {\n super(def, props)\n\n const { options } = def\n let { formSchema } = this\n\n if (options.required !== false) {\n const messages = options.customValidationMessages\n\n formSchema = formSchema.messages({\n 'any.only':\n messages?.['any.only'] ?? (messageTemplate.required as string),\n 'any.required':\n messages?.['any.required'] ?? (messageTemplate.required as string)\n })\n }\n\n this.options = options\n this.formSchema = formSchema\n }\n\n getViewModel(context: RenderContext) {\n const viewModel = super.getViewModel(context)\n let { formGroup } = viewModel\n\n formGroup ??= {}\n formGroup.attributes = {\n 'data-module': 'govuk-accessible-autocomplete'\n }\n\n return {\n ...viewModel,\n formGroup\n }\n }\n}\n"],"mappings":"AAEA,SAASA,WAAW;AAEpB,SAASC,eAAe;AAExB,OAAO,MAAMC,iBAAiB,SAASF,WAAW,CAAC;EAGjDG,WAAWA,CACTC,GAA+B,EAC/BC,KAAmD,EACnD;IACA,KAAK,CAACD,GAAG,EAAEC,KAAK,CAAC;IAEjB,MAAM;MAAEC;IAAQ,CAAC,GAAGF,GAAG;IACvB,IAAI;MAAEG;IAAW,CAAC,GAAG,IAAI;IAEzB,IAAID,OAAO,CAACE,QAAQ,KAAK,KAAK,EAAE;MAC9B,MAAMC,QAAQ,GAAGH,OAAO,CAACI,wBAAwB;MAEjDH,UAAU,GAAGA,UAAU,CAACE,QAAQ,CAAC;QAC/B,UAAU,EACRA,QAAQ,GAAG,UAAU,CAAC,IAAKR,eAAe,CAACO,QAAmB;QAChE,cAAc,EACZC,QAAQ,GAAG,cAAc,CAAC,IAAKR,eAAe,CAACO;MACnD,CAAC,CAAC;IACJ;IAEA,IAAI,CAACF,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,UAAU,GAAGA,UAAU;EAC9B;EAEAI,YAAYA,CAACC,OAAsB,EAAE;IACnC,MAAMC,SAAS,GAAG,KAAK,CAACF,YAAY,CAACC,OAAO,CAAC;IAC7C,IAAI;MAAEE;IAAU,CAAC,GAAGD,SAAS;IAE7BC,SAAS,KAAK,CAAC,CAAC;IAChBA,SAAS,CAACC,UAAU,GAAG;MACrB,aAAa,EAAE;IACjB,CAAC;IAED,OAAO;MACL,GAAGF,SAAS;MACZC;IACF,CAAC;EACH;AACF","ignoreList":[]}
1
+ {"version":3,"file":"AutocompleteField.js","names":["SelectField","withCustomValidationOverrides","buildValidationMessages","messageTemplate","AutocompleteField","constructor","def","props","options","formSchema","required","messages","customValidationMessages","getViewModel","context","viewModel","formGroup","attributes","getValidationMessagesOverride","translator","t","defaults","objectRequired","name","undefined"],"sources":["../../../../../src/server/plugins/engine/components/AutocompleteField.ts"],"sourcesContent":["import { type AutocompleteFieldComponent } from '@defra/forms-model'\n\nimport { SelectField } from '~/src/server/plugins/engine/components/SelectField.js'\nimport { withCustomValidationOverrides } from '~/src/server/plugins/engine/components/helpers/index.js'\nimport { type RenderContext } from '~/src/server/plugins/engine/components/types.js'\nimport { buildValidationMessages } from '~/src/server/plugins/engine/i18n/buildValidationMessages.js'\nimport { messageTemplate } from '~/src/server/plugins/engine/pageControllers/validationOptions.js'\nimport { type Translator } from '~/src/server/plugins/engine/types/index.js'\n\nexport class AutocompleteField extends SelectField {\n declare options: AutocompleteFieldComponent['options']\n\n constructor(\n def: AutocompleteFieldComponent,\n props: ConstructorParameters<typeof SelectField>[1]\n ) {\n super(def, props)\n\n const { options } = def\n let { formSchema } = this\n\n if (options.required !== false) {\n const messages = options.customValidationMessages\n\n formSchema = formSchema.messages({\n 'any.only':\n messages?.['any.only'] ?? (messageTemplate.required as string),\n 'any.required':\n messages?.['any.required'] ?? (messageTemplate.required as string)\n })\n }\n\n this.options = options\n this.formSchema = formSchema\n }\n\n getViewModel(context: RenderContext) {\n const viewModel = super.getViewModel(context)\n let { formGroup } = viewModel\n\n formGroup ??= {}\n formGroup.attributes = {\n 'data-module': 'govuk-accessible-autocomplete'\n }\n\n return {\n ...viewModel,\n formGroup\n }\n }\n\n getValidationMessagesOverride(translator: Translator) {\n const { customValidationMessages } = this.options\n const { t } = translator\n const defaults = {\n 'any.required': buildValidationMessages(t).objectRequired,\n 'any.only': buildValidationMessages(t).objectRequired\n }\n\n return {\n [this.name]: withCustomValidationOverrides(\n defaults,\n undefined,\n customValidationMessages\n )\n }\n }\n}\n"],"mappings":"AAEA,SAASA,WAAW;AACpB,SAASC,6BAA6B;AAEtC,SAASC,uBAAuB;AAChC,SAASC,eAAe;AAGxB,OAAO,MAAMC,iBAAiB,SAASJ,WAAW,CAAC;EAGjDK,WAAWA,CACTC,GAA+B,EAC/BC,KAAmD,EACnD;IACA,KAAK,CAACD,GAAG,EAAEC,KAAK,CAAC;IAEjB,MAAM;MAAEC;IAAQ,CAAC,GAAGF,GAAG;IACvB,IAAI;MAAEG;IAAW,CAAC,GAAG,IAAI;IAEzB,IAAID,OAAO,CAACE,QAAQ,KAAK,KAAK,EAAE;MAC9B,MAAMC,QAAQ,GAAGH,OAAO,CAACI,wBAAwB;MAEjDH,UAAU,GAAGA,UAAU,CAACE,QAAQ,CAAC;QAC/B,UAAU,EACRA,QAAQ,GAAG,UAAU,CAAC,IAAKR,eAAe,CAACO,QAAmB;QAChE,cAAc,EACZC,QAAQ,GAAG,cAAc,CAAC,IAAKR,eAAe,CAACO;MACnD,CAAC,CAAC;IACJ;IAEA,IAAI,CAACF,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,UAAU,GAAGA,UAAU;EAC9B;EAEAI,YAAYA,CAACC,OAAsB,EAAE;IACnC,MAAMC,SAAS,GAAG,KAAK,CAACF,YAAY,CAACC,OAAO,CAAC;IAC7C,IAAI;MAAEE;IAAU,CAAC,GAAGD,SAAS;IAE7BC,SAAS,KAAK,CAAC,CAAC;IAChBA,SAAS,CAACC,UAAU,GAAG;MACrB,aAAa,EAAE;IACjB,CAAC;IAED,OAAO;MACL,GAAGF,SAAS;MACZC;IACF,CAAC;EACH;EAEAE,6BAA6BA,CAACC,UAAsB,EAAE;IACpD,MAAM;MAAEP;IAAyB,CAAC,GAAG,IAAI,CAACJ,OAAO;IACjD,MAAM;MAAEY;IAAE,CAAC,GAAGD,UAAU;IACxB,MAAME,QAAQ,GAAG;MACf,cAAc,EAAEnB,uBAAuB,CAACkB,CAAC,CAAC,CAACE,cAAc;MACzD,UAAU,EAAEpB,uBAAuB,CAACkB,CAAC,CAAC,CAACE;IACzC,CAAC;IAED,OAAO;MACL,CAAC,IAAI,CAACC,IAAI,GAAGtB,6BAA6B,CACxCoB,QAAQ,EACRG,SAAS,EACTZ,wBACF;IACF,CAAC;EACH;AACF","ignoreList":[]}
@@ -6,8 +6,13 @@ import { type ErrorMessageTemplateList, type FormState, type FormStateValue, typ
6
6
  export declare class CheckboxesField extends SelectionControlField {
7
7
  options: CheckboxesFieldComponent['options'];
8
8
  schema: CheckboxesFieldComponent['schema'];
9
- formSchema: ArraySchema<string> | ArraySchema<number>;
10
- stateSchema: ArraySchema<string> | ArraySchema<number>;
9
+ formSchema: ArraySchema<string[]> | ArraySchema<number[]>;
10
+ stateSchema: ArraySchema<string[]> | ArraySchema<number[]>;
11
+ limits: {
12
+ min?: number;
13
+ max?: number;
14
+ length?: number;
15
+ };
11
16
  constructor(def: CheckboxesFieldComponent, props: ConstructorParameters<typeof SelectionControlField>[1]);
12
17
  getFormValueFromState(state: FormSubmissionState): (string | number | boolean)[] | undefined;
13
18
  getFormValue(value?: FormStateValue | FormState): (string | number | boolean)[] | undefined;
@@ -15,6 +20,13 @@ export declare class CheckboxesField extends SelectionControlField {
15
20
  getContextValueFromFormValue(values: (string | number | boolean)[] | undefined): (string | number | boolean)[];
16
21
  getDisplayStringFromState(state: FormSubmissionState, translator: Translator): string;
17
22
  getContextValueFromState(state: FormSubmissionState): (string | number | boolean)[];
23
+ getValidationMessagesOverride(translator: Translator): {
24
+ [x: string]: {
25
+ 'array.min': string;
26
+ 'array.max': string;
27
+ 'array.length': string;
28
+ };
29
+ };
18
30
  /**
19
31
  * For error preview page that shows all possible errors on a component
20
32
  */
@@ -24,4 +36,13 @@ export declare class CheckboxesField extends SelectionControlField {
24
36
  */
25
37
  static getAllPossibleErrors(): ErrorMessageTemplateList;
26
38
  isValue(value?: FormStateValue | FormState): value is Item['value'][];
39
+ static buildErrorMessages(language: string, limits?: {
40
+ min?: number;
41
+ max?: number;
42
+ length?: number;
43
+ }): {
44
+ 'array.min': string;
45
+ 'array.max': string;
46
+ 'array.length': string;
47
+ };
27
48
  }
@@ -1,6 +1,8 @@
1
1
  import joi from 'joi';
2
+ import { EN_GB } from "../../../constants.js";
2
3
  import { isFormValue } from "./FormComponent.js";
3
4
  import { SelectionControlField } from "./SelectionControlField.js";
5
+ import { t as tPlugin } from "../i18n/index.js";
4
6
  import { messageTemplate } from "../pageControllers/validationOptions.js";
5
7
  export class CheckboxesField extends SelectionControlField {
6
8
  constructor(def, props) {
@@ -14,24 +16,26 @@ export class CheckboxesField extends SelectionControlField {
14
16
  } = def;
15
17
  let formSchema = type === 'string' ? joi.array() : joi.array();
16
18
  const itemsSchema = joi[type]().valid(...this.values).label(this.label);
17
- formSchema = formSchema.items(itemsSchema).single().label(this.label).required().messages({
18
- 'array.min': messageTemplate.arrayMin,
19
- 'array.max': messageTemplate.arrayMax,
20
- 'array.length': messageTemplate.arrayLength
21
- });
19
+ formSchema = formSchema.items(itemsSchema).single().label(this.label).required();
20
+ const limits = {};
22
21
  if (options.required === false) {
23
22
  formSchema = formSchema.optional();
24
23
  }
25
24
  if (typeof schema?.length === 'number') {
26
25
  formSchema = formSchema.length(schema.length);
26
+ limits.length = schema.length;
27
27
  } else {
28
28
  if (typeof schema?.min === 'number') {
29
29
  formSchema = formSchema.min(schema.min);
30
+ limits.min = schema.min;
30
31
  }
31
32
  if (typeof schema?.max === 'number') {
32
33
  formSchema = formSchema.max(schema.max);
34
+ limits.max = schema.max;
33
35
  }
34
36
  }
37
+ this.limits = limits;
38
+ formSchema = formSchema.messages(CheckboxesField.buildErrorMessages(EN_GB, limits));
35
39
  this.formSchema = formSchema.default([]);
36
40
  this.stateSchema = formSchema.default(null).allow(null);
37
41
  this.options = options;
@@ -83,6 +87,14 @@ export class CheckboxesField extends SelectionControlField {
83
87
  const values = this.getFormValueFromState(state);
84
88
  return this.getContextValueFromFormValue(values);
85
89
  }
90
+ getValidationMessagesOverride(translator) {
91
+ const {
92
+ language
93
+ } = translator;
94
+ return {
95
+ [this.name]: CheckboxesField.buildErrorMessages(language, this.limits)
96
+ };
97
+ }
86
98
 
87
99
  /**
88
100
  * For error preview page that shows all possible errors on a component
@@ -121,5 +133,18 @@ export class CheckboxesField extends SelectionControlField {
121
133
  }
122
134
  return value.every(isFormValue);
123
135
  }
136
+ static buildErrorMessages(language, limits = {}) {
137
+ return {
138
+ 'array.min': tPlugin('validation.arrayMin', language, {
139
+ count: limits.min ?? 1
140
+ }),
141
+ 'array.max': tPlugin('validation.arrayMax', language, {
142
+ count: limits.max ?? 1
143
+ }),
144
+ 'array.length': tPlugin('validation.arrayLength', language, {
145
+ count: limits.length ?? 1
146
+ })
147
+ };
148
+ }
124
149
  }
125
150
  //# sourceMappingURL=CheckboxesField.js.map