@defra/forms-engine-plugin 5.0.0-alpha.2 → 5.0.0-alpha.21

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 (346) hide show
  1. package/.public/javascripts/application.min.js +1 -1
  2. package/.public/javascripts/application.min.js.LICENSE.txt +7 -0
  3. package/.public/javascripts/application.min.js.map +1 -1
  4. package/.public/javascripts/shared.min.js +1 -1
  5. package/.public/javascripts/shared.min.js.LICENSE.txt +7 -0
  6. package/.public/javascripts/shared.min.js.map +1 -1
  7. package/.public/stylesheets/application.min.css.map +1 -1
  8. package/.server/client/javascripts/file-upload.js +6 -3
  9. package/.server/client/javascripts/file-upload.js.map +1 -1
  10. package/.server/client/javascripts/geospatial-map.d.ts +153 -5
  11. package/.server/client/javascripts/geospatial-map.js +157 -77
  12. package/.server/client/javascripts/geospatial-map.js.map +1 -1
  13. package/.server/client/javascripts/govuk.js +2 -1
  14. package/.server/client/javascripts/govuk.js.map +1 -1
  15. package/.server/client/javascripts/location-map.d.ts +44 -0
  16. package/.server/client/javascripts/location-map.js +54 -5
  17. package/.server/client/javascripts/location-map.js.map +1 -1
  18. package/.server/client/javascripts/map-constants.d.ts +3 -0
  19. package/.server/client/javascripts/map-constants.js +4 -0
  20. package/.server/client/javascripts/map-constants.js.map +1 -0
  21. package/.server/client/javascripts/map.d.ts +10 -0
  22. package/.server/client/javascripts/map.js +42 -0
  23. package/.server/client/javascripts/map.js.map +1 -1
  24. package/.server/client/javascripts/maps.d.ts +5 -0
  25. package/.server/client/javascripts/maps.js +6 -0
  26. package/.server/client/javascripts/maps.js.map +1 -0
  27. package/.server/client/javascripts/shared.d.ts +1 -4
  28. package/.server/client/javascripts/shared.js +1 -4
  29. package/.server/client/javascripts/shared.js.map +1 -1
  30. package/.server/client/javascripts/sssi-dataset.d.ts +18 -20
  31. package/.server/client/javascripts/sssi-dataset.js +37 -39
  32. package/.server/client/javascripts/sssi-dataset.js.map +1 -1
  33. package/.server/client/stylesheets/maps.scss +4 -0
  34. package/.server/client/stylesheets/shared.scss +1 -5
  35. package/.server/server/constants.d.ts +2 -0
  36. package/.server/server/constants.js +2 -0
  37. package/.server/server/constants.js.map +1 -1
  38. package/.server/server/plugins/engine/__stubs__/definitions.d.ts +29 -0
  39. package/.server/server/plugins/engine/__stubs__/definitions.js +125 -0
  40. package/.server/server/plugins/engine/__stubs__/definitions.js.map +1 -0
  41. package/.server/server/plugins/engine/components/AutocompleteField.d.ts +9 -3
  42. package/.server/server/plugins/engine/components/AutocompleteField.js +12 -0
  43. package/.server/server/plugins/engine/components/AutocompleteField.js.map +1 -1
  44. package/.server/server/plugins/engine/components/CheckboxesField.d.ts +21 -0
  45. package/.server/server/plugins/engine/components/CheckboxesField.js +30 -5
  46. package/.server/server/plugins/engine/components/CheckboxesField.js.map +1 -1
  47. package/.server/server/plugins/engine/components/ComponentBase.d.ts +1 -0
  48. package/.server/server/plugins/engine/components/ComponentBase.js +2 -0
  49. package/.server/server/plugins/engine/components/ComponentBase.js.map +1 -1
  50. package/.server/server/plugins/engine/components/ComponentCollection.js +11 -6
  51. package/.server/server/plugins/engine/components/ComponentCollection.js.map +1 -1
  52. package/.server/server/plugins/engine/components/DatePartsField.d.ts +6 -3
  53. package/.server/server/plugins/engine/components/DatePartsField.js +12 -7
  54. package/.server/server/plugins/engine/components/DatePartsField.js.map +1 -1
  55. package/.server/server/plugins/engine/components/DeclarationField.d.ts +5 -2
  56. package/.server/server/plugins/engine/components/DeclarationField.js +6 -4
  57. package/.server/server/plugins/engine/components/DeclarationField.js.map +1 -1
  58. package/.server/server/plugins/engine/components/Details.d.ts +1 -0
  59. package/.server/server/plugins/engine/components/EastingNorthingField.d.ts +33 -2
  60. package/.server/server/plugins/engine/components/EastingNorthingField.js +110 -54
  61. package/.server/server/plugins/engine/components/EastingNorthingField.js.map +1 -1
  62. package/.server/server/plugins/engine/components/EmailAddressField.d.ts +4 -1
  63. package/.server/server/plugins/engine/components/EmailAddressField.js +2 -1
  64. package/.server/server/plugins/engine/components/EmailAddressField.js.map +1 -1
  65. package/.server/server/plugins/engine/components/FileUploadField.d.ts +21 -0
  66. package/.server/server/plugins/engine/components/FileUploadField.js +35 -3
  67. package/.server/server/plugins/engine/components/FileUploadField.js.map +1 -1
  68. package/.server/server/plugins/engine/components/FormComponent.d.ts +5 -1
  69. package/.server/server/plugins/engine/components/FormComponent.js +5 -2
  70. package/.server/server/plugins/engine/components/FormComponent.js.map +1 -1
  71. package/.server/server/plugins/engine/components/GeospatialField.d.ts +23 -0
  72. package/.server/server/plugins/engine/components/GeospatialField.js +33 -9
  73. package/.server/server/plugins/engine/components/GeospatialField.js.map +1 -1
  74. package/.server/server/plugins/engine/components/Html.d.ts +1 -0
  75. package/.server/server/plugins/engine/components/InsetText.d.ts +1 -0
  76. package/.server/server/plugins/engine/components/LatLongField.d.ts +32 -2
  77. package/.server/server/plugins/engine/components/LatLongField.js +85 -48
  78. package/.server/server/plugins/engine/components/LatLongField.js.map +1 -1
  79. package/.server/server/plugins/engine/components/List.d.ts +1 -0
  80. package/.server/server/plugins/engine/components/ListFormComponent.d.ts +1 -0
  81. package/.server/server/plugins/engine/components/LocationFieldBase.d.ts +8 -2
  82. package/.server/server/plugins/engine/components/LocationFieldBase.js +25 -6
  83. package/.server/server/plugins/engine/components/LocationFieldBase.js.map +1 -1
  84. package/.server/server/plugins/engine/components/LocationFieldHelpers.d.ts +12 -3
  85. package/.server/server/plugins/engine/components/LocationFieldHelpers.js +21 -13
  86. package/.server/server/plugins/engine/components/LocationFieldHelpers.js.map +1 -1
  87. package/.server/server/plugins/engine/components/Markdown.d.ts +1 -0
  88. package/.server/server/plugins/engine/components/Markdown.js +1 -1
  89. package/.server/server/plugins/engine/components/Markdown.js.map +1 -1
  90. package/.server/server/plugins/engine/components/MonthYearField.d.ts +5 -2
  91. package/.server/server/plugins/engine/components/MonthYearField.js +13 -9
  92. package/.server/server/plugins/engine/components/MonthYearField.js.map +1 -1
  93. package/.server/server/plugins/engine/components/MultilineTextField.d.ts +1 -0
  94. package/.server/server/plugins/engine/components/NationalGridFieldNumberField.d.ts +2 -1
  95. package/.server/server/plugins/engine/components/NationalGridFieldNumberField.js +4 -3
  96. package/.server/server/plugins/engine/components/NationalGridFieldNumberField.js.map +1 -1
  97. package/.server/server/plugins/engine/components/NotificationBanner.d.ts +1 -0
  98. package/.server/server/plugins/engine/components/NumberField.d.ts +5 -0
  99. package/.server/server/plugins/engine/components/NumberField.js +16 -0
  100. package/.server/server/plugins/engine/components/NumberField.js.map +1 -1
  101. package/.server/server/plugins/engine/components/OsGridRefField.d.ts +103 -1
  102. package/.server/server/plugins/engine/components/OsGridRefField.js +13 -3
  103. package/.server/server/plugins/engine/components/OsGridRefField.js.map +1 -1
  104. package/.server/server/plugins/engine/components/PaymentField.d.ts +3 -0
  105. package/.server/server/plugins/engine/components/PaymentField.js +17 -6
  106. package/.server/server/plugins/engine/components/PaymentField.js.map +1 -1
  107. package/.server/server/plugins/engine/components/SelectField.d.ts +1 -0
  108. package/.server/server/plugins/engine/components/SelectionControlField.d.ts +1 -0
  109. package/.server/server/plugins/engine/components/TelephoneNumberField.d.ts +1 -0
  110. package/.server/server/plugins/engine/components/UkAddressField.d.ts +1 -0
  111. package/.server/server/plugins/engine/components/UkAddressField.js +23 -8
  112. package/.server/server/plugins/engine/components/UkAddressField.js.map +1 -1
  113. package/.server/server/plugins/engine/components/YesNoField.d.ts +5 -2
  114. package/.server/server/plugins/engine/components/YesNoField.js +17 -8
  115. package/.server/server/plugins/engine/components/YesNoField.js.map +1 -1
  116. package/.server/server/plugins/engine/components/helpers/components.js +3 -3
  117. package/.server/server/plugins/engine/components/helpers/components.js.map +1 -1
  118. package/.server/server/plugins/engine/components/helpers/geospatial.d.ts +8 -1
  119. package/.server/server/plugins/engine/components/helpers/geospatial.js +56 -15
  120. package/.server/server/plugins/engine/components/helpers/geospatial.js.map +1 -1
  121. package/.server/server/plugins/engine/components/helpers/index.d.ts +7 -0
  122. package/.server/server/plugins/engine/components/helpers/index.js +13 -1
  123. package/.server/server/plugins/engine/components/helpers/index.js.map +1 -1
  124. package/.server/server/plugins/engine/components/types.d.ts +1 -0
  125. package/.server/server/plugins/engine/components/types.js.map +1 -1
  126. package/.server/server/plugins/engine/errors.d.ts +49 -0
  127. package/.server/server/plugins/engine/errors.js +75 -0
  128. package/.server/server/plugins/engine/errors.js.map +1 -0
  129. package/.server/server/plugins/engine/form-availability.d.ts +3 -2
  130. package/.server/server/plugins/engine/form-availability.js +3 -2
  131. package/.server/server/plugins/engine/form-availability.js.map +1 -1
  132. package/.server/server/plugins/engine/form-context.js +2 -2
  133. package/.server/server/plugins/engine/form-context.js.map +1 -1
  134. package/.server/server/plugins/engine/helpers.d.ts +22 -2
  135. package/.server/server/plugins/engine/helpers.js +44 -5
  136. package/.server/server/plugins/engine/helpers.js.map +1 -1
  137. package/.server/server/plugins/engine/i18n/buildValidationMessages.d.ts +4 -1
  138. package/.server/server/plugins/engine/i18n/buildValidationMessages.js +31 -7
  139. package/.server/server/plugins/engine/i18n/buildValidationMessages.js.map +1 -1
  140. package/.server/server/plugins/engine/i18n/createFormTranslator.d.ts +4 -4
  141. package/.server/server/plugins/engine/i18n/createFormTranslator.js +33 -4
  142. package/.server/server/plugins/engine/i18n/createFormTranslator.js.map +1 -1
  143. package/.server/server/plugins/engine/i18n/extractBaseTranslations.d.ts +1 -1
  144. package/.server/server/plugins/engine/i18n/extractBaseTranslations.js +9 -0
  145. package/.server/server/plugins/engine/i18n/extractBaseTranslations.js.map +1 -1
  146. package/.server/server/plugins/engine/i18n/form.d.ts +13 -0
  147. package/.server/server/plugins/engine/i18n/form.js +35 -0
  148. package/.server/server/plugins/engine/i18n/form.js.map +1 -0
  149. package/.server/server/plugins/engine/i18n/languages.d.ts +10 -0
  150. package/.server/server/plugins/engine/i18n/languages.js +19 -0
  151. package/.server/server/plugins/engine/i18n/languages.js.map +1 -0
  152. package/.server/server/plugins/engine/i18n/translations/cy.json +192 -9
  153. package/.server/server/plugins/engine/i18n/translations/en-GB.json +125 -7
  154. package/.server/server/plugins/engine/i18n/types.d.ts +3 -0
  155. package/.server/server/plugins/engine/i18n/types.js.map +1 -1
  156. package/.server/server/plugins/engine/index.d.ts +4 -0
  157. package/.server/server/plugins/engine/index.js +4 -0
  158. package/.server/server/plugins/engine/index.js.map +1 -1
  159. package/.server/server/plugins/engine/models/FormModel.d.ts +0 -4
  160. package/.server/server/plugins/engine/models/FormModel.js +35 -23
  161. package/.server/server/plugins/engine/models/FormModel.js.map +1 -1
  162. package/.server/server/plugins/engine/models/SummaryViewModel.js +9 -4
  163. package/.server/server/plugins/engine/models/SummaryViewModel.js.map +1 -1
  164. package/.server/server/plugins/engine/models/types.d.ts +28 -1
  165. package/.server/server/plugins/engine/models/types.js.map +1 -1
  166. package/.server/server/plugins/engine/models/unavailable-view-model.d.ts +11 -2
  167. package/.server/server/plugins/engine/models/unavailable-view-model.js +23 -4
  168. package/.server/server/plugins/engine/models/unavailable-view-model.js.map +1 -1
  169. package/.server/server/plugins/engine/outputFormatters/adapter/v1.js +14 -6
  170. package/.server/server/plugins/engine/outputFormatters/adapter/v1.js.map +1 -1
  171. package/.server/server/plugins/engine/outputFormatters/human/v1.js +2 -1
  172. package/.server/server/plugins/engine/outputFormatters/human/v1.js.map +1 -1
  173. package/.server/server/plugins/engine/outputFormatters/machine/v2.d.ts +2 -0
  174. package/.server/server/plugins/engine/outputFormatters/machine/v2.js +2 -0
  175. package/.server/server/plugins/engine/outputFormatters/machine/v2.js.map +1 -1
  176. package/.server/server/plugins/engine/pageControllers/FileUploadPageController.d.ts +7 -1
  177. package/.server/server/plugins/engine/pageControllers/FileUploadPageController.js +56 -10
  178. package/.server/server/plugins/engine/pageControllers/FileUploadPageController.js.map +1 -1
  179. package/.server/server/plugins/engine/pageControllers/QuestionPageController.d.ts +1 -1
  180. package/.server/server/plugins/engine/pageControllers/QuestionPageController.js +7 -3
  181. package/.server/server/plugins/engine/pageControllers/QuestionPageController.js.map +1 -1
  182. package/.server/server/plugins/engine/pageControllers/RepeatPageController.js +3 -4
  183. package/.server/server/plugins/engine/pageControllers/RepeatPageController.js.map +1 -1
  184. package/.server/server/plugins/engine/pageControllers/SummaryPageController.js +10 -4
  185. package/.server/server/plugins/engine/pageControllers/SummaryPageController.js.map +1 -1
  186. package/.server/server/plugins/engine/pageControllers/helpers/pages.js +2 -1
  187. package/.server/server/plugins/engine/pageControllers/helpers/pages.js.map +1 -1
  188. package/.server/server/plugins/engine/pageControllers/helpers/submission.d.ts +35 -2
  189. package/.server/server/plugins/engine/pageControllers/helpers/submission.js +100 -3
  190. package/.server/server/plugins/engine/pageControllers/helpers/submission.js.map +1 -1
  191. package/.server/server/plugins/engine/pageControllers/validationOptions.d.ts +1 -1
  192. package/.server/server/plugins/engine/pageControllers/validationOptions.js +24 -3
  193. package/.server/server/plugins/engine/pageControllers/validationOptions.js.map +1 -1
  194. package/.server/server/plugins/engine/types/enums.d.ts +3 -3
  195. package/.server/server/plugins/engine/types/enums.js +5 -4
  196. package/.server/server/plugins/engine/types/enums.js.map +1 -1
  197. package/.server/server/plugins/engine/types/schema.js +10 -3
  198. package/.server/server/plugins/engine/types/schema.js.map +1 -1
  199. package/.server/server/plugins/engine/types.d.ts +18 -2
  200. package/.server/server/plugins/engine/types.js.map +1 -1
  201. package/.server/server/plugins/engine/unavailable-response.js +5 -2
  202. package/.server/server/plugins/engine/unavailable-response.js.map +1 -1
  203. package/.server/server/plugins/engine/views/components/_location-field-base.html +4 -2
  204. package/.server/server/plugins/engine/views/components/fileuploadfield.html +1 -1
  205. package/.server/server/plugins/engine/views/components/geospatialfield.html +1 -0
  206. package/.server/server/plugins/engine/views/components/multilinetextfield.html +12 -1
  207. package/.server/server/plugins/engine/views/components/osgridreffield.html +4 -1
  208. package/.server/server/plugins/engine/views/components/paymentfield.html +1 -1
  209. package/.server/server/plugins/engine/views/components/ukaddressfield.html +1 -1
  210. package/.server/server/plugins/engine/views/file-upload.html +1 -1
  211. package/.server/server/plugins/engine/views/partials/preview-banner.html +3 -1
  212. package/.server/server/plugins/engine/views/unavailable.html +14 -11
  213. package/.server/server/plugins/nunjucks/filters/applyUrlParam.d.ts +9 -0
  214. package/.server/server/plugins/nunjucks/filters/applyUrlParam.js +17 -0
  215. package/.server/server/plugins/nunjucks/filters/applyUrlParam.js.map +1 -0
  216. package/.server/server/plugins/nunjucks/filters/applyUrlParam.test.js +17 -0
  217. package/.server/server/plugins/nunjucks/filters/applyUrlParam.test.js.map +1 -0
  218. package/.server/server/plugins/nunjucks/filters/field.d.ts +1 -1
  219. package/.server/server/plugins/nunjucks/filters/index.d.ts +1 -0
  220. package/.server/server/plugins/nunjucks/filters/index.js +1 -0
  221. package/.server/server/plugins/nunjucks/filters/index.js.map +1 -1
  222. package/.server/server/plugins/payment/helper.d.ts +11 -1
  223. package/.server/server/plugins/payment/helper.js +18 -2
  224. package/.server/server/plugins/payment/helper.js.map +1 -1
  225. package/.server/server/plugins/payment/helper.test.js +2 -1
  226. package/.server/server/plugins/payment/helper.test.js.map +1 -1
  227. package/.server/server/plugins/payment/service.d.ts +2 -1
  228. package/.server/server/plugins/payment/service.js +5 -2
  229. package/.server/server/plugins/payment/service.js.map +1 -1
  230. package/.server/server/plugins/payment/service.test.js +7 -3
  231. package/.server/server/plugins/payment/service.test.js.map +1 -1
  232. package/.server/server/plugins/payment/types.d.ts +4 -0
  233. package/.server/server/plugins/payment/types.js +1 -0
  234. package/.server/server/plugins/payment/types.js.map +1 -1
  235. package/.server/server/plugins/postcode-lookup/models/index.d.ts +249 -3
  236. package/.server/server/plugins/postcode-lookup/models/index.js +87 -33
  237. package/.server/server/plugins/postcode-lookup/models/index.js.map +1 -1
  238. package/.server/server/plugins/postcode-lookup/routes/index.d.ts +15 -1
  239. package/.server/server/plugins/postcode-lookup/routes/index.js +47 -15
  240. package/.server/server/plugins/postcode-lookup/routes/index.js.map +1 -1
  241. package/.server/server/plugins/postcode-lookup/routes/index.test.js +84 -0
  242. package/.server/server/plugins/postcode-lookup/routes/index.test.js.map +1 -0
  243. package/.server/server/plugins/postcode-lookup/types.d.ts +12 -0
  244. package/.server/server/plugins/postcode-lookup/types.js +6 -1
  245. package/.server/server/plugins/postcode-lookup/types.js.map +1 -1
  246. package/.server/server/plugins/postcode-lookup/views/postcode-lookup-details.html +3 -3
  247. package/.server/server/utils/type-utils.d.ts +1 -2
  248. package/.server/server/utils/type-utils.js +0 -3
  249. package/.server/server/utils/type-utils.js.map +1 -1
  250. package/.server/server/utils/utils.d.ts +6 -0
  251. package/.server/server/utils/utils.js +18 -1
  252. package/.server/server/utils/utils.js.map +1 -1
  253. package/.server/server/utils/utils.test.js +21 -1
  254. package/.server/server/utils/utils.test.js.map +1 -1
  255. package/package.json +20 -5
  256. package/src/client/javascripts/file-upload.js +11 -3
  257. package/src/client/javascripts/geospatial-map.js +176 -81
  258. package/src/client/javascripts/govuk.js +2 -0
  259. package/src/client/javascripts/location-map.js +60 -4
  260. package/src/client/javascripts/map-constants.js +3 -0
  261. package/src/client/javascripts/map.js +47 -0
  262. package/src/client/javascripts/maps.js +5 -0
  263. package/src/client/javascripts/shared.js +1 -4
  264. package/src/client/javascripts/sssi-dataset.js +39 -41
  265. package/src/client/stylesheets/maps.scss +4 -0
  266. package/src/client/stylesheets/shared.scss +1 -5
  267. package/src/server/constants.js +2 -0
  268. package/src/server/plugins/engine/__stubs__/definitions.ts +155 -0
  269. package/src/server/plugins/engine/components/AutocompleteField.ts +13 -0
  270. package/src/server/plugins/engine/components/CheckboxesField.ts +38 -5
  271. package/src/server/plugins/engine/components/ComponentBase.ts +2 -0
  272. package/src/server/plugins/engine/components/ComponentCollection.ts +16 -11
  273. package/src/server/plugins/engine/components/DatePartsField.ts +20 -9
  274. package/src/server/plugins/engine/components/DeclarationField.ts +7 -6
  275. package/src/server/plugins/engine/components/EastingNorthingField.ts +185 -89
  276. package/src/server/plugins/engine/components/EmailAddressField.ts +2 -1
  277. package/src/server/plugins/engine/components/FileUploadField.ts +44 -3
  278. package/src/server/plugins/engine/components/FormComponent.ts +6 -5
  279. package/src/server/plugins/engine/components/GeospatialField.ts +47 -9
  280. package/src/server/plugins/engine/components/LatLongField.ts +128 -58
  281. package/src/server/plugins/engine/components/LocationFieldBase.ts +30 -7
  282. package/src/server/plugins/engine/components/LocationFieldHelpers.ts +28 -14
  283. package/src/server/plugins/engine/components/Markdown.ts +2 -3
  284. package/src/server/plugins/engine/components/MonthYearField.ts +20 -15
  285. package/src/server/plugins/engine/components/NationalGridFieldNumberField.ts +9 -3
  286. package/src/server/plugins/engine/components/NumberField.ts +21 -1
  287. package/src/server/plugins/engine/components/OsGridRefField.ts +22 -3
  288. package/src/server/plugins/engine/components/PaymentField.ts +15 -5
  289. package/src/server/plugins/engine/components/UkAddressField.ts +30 -7
  290. package/src/server/plugins/engine/components/YesNoField.ts +17 -9
  291. package/src/server/plugins/engine/components/helpers/components.ts +3 -3
  292. package/src/server/plugins/engine/components/helpers/geospatial.ts +84 -21
  293. package/src/server/plugins/engine/components/helpers/index.ts +19 -0
  294. package/src/server/plugins/engine/components/types.ts +1 -0
  295. package/src/server/plugins/engine/errors.ts +78 -0
  296. package/src/server/plugins/engine/form-availability.ts +8 -2
  297. package/src/server/plugins/engine/form-context.ts +4 -2
  298. package/src/server/plugins/engine/helpers.ts +52 -5
  299. package/src/server/plugins/engine/i18n/buildValidationMessages.ts +16 -8
  300. package/src/server/plugins/engine/i18n/createFormTranslator.ts +62 -11
  301. package/src/server/plugins/engine/i18n/extractBaseTranslations.ts +7 -1
  302. package/src/server/plugins/engine/i18n/form.ts +54 -0
  303. package/src/server/plugins/engine/i18n/languages.ts +19 -0
  304. package/src/server/plugins/engine/i18n/translations/cy.json +192 -9
  305. package/src/server/plugins/engine/i18n/translations/en-GB.json +125 -7
  306. package/src/server/plugins/engine/i18n/types.ts +3 -0
  307. package/src/server/plugins/engine/index.ts +7 -0
  308. package/src/server/plugins/engine/models/FormModel.ts +46 -23
  309. package/src/server/plugins/engine/models/SummaryViewModel.ts +6 -5
  310. package/src/server/plugins/engine/models/types.ts +31 -0
  311. package/src/server/plugins/engine/models/unavailable-view-model.ts +26 -5
  312. package/src/server/plugins/engine/outputFormatters/adapter/v1.ts +18 -7
  313. package/src/server/plugins/engine/outputFormatters/human/v1.ts +2 -1
  314. package/src/server/plugins/engine/outputFormatters/machine/v2.ts +3 -0
  315. package/src/server/plugins/engine/pageControllers/FileUploadPageController.ts +60 -9
  316. package/src/server/plugins/engine/pageControllers/QuestionPageController.ts +10 -5
  317. package/src/server/plugins/engine/pageControllers/RepeatPageController.ts +2 -2
  318. package/src/server/plugins/engine/pageControllers/SummaryPageController.ts +15 -4
  319. package/src/server/plugins/engine/pageControllers/helpers/pages.ts +2 -1
  320. package/src/server/plugins/engine/pageControllers/helpers/submission.ts +143 -4
  321. package/src/server/plugins/engine/pageControllers/validationOptions.ts +29 -4
  322. package/src/server/plugins/engine/types/enums.ts +4 -3
  323. package/src/server/plugins/engine/types/schema.ts +17 -4
  324. package/src/server/plugins/engine/types.ts +19 -1
  325. package/src/server/plugins/engine/unavailable-response.ts +6 -2
  326. package/src/server/plugins/engine/views/components/_location-field-base.html +4 -2
  327. package/src/server/plugins/engine/views/components/fileuploadfield.html +1 -1
  328. package/src/server/plugins/engine/views/components/geospatialfield.html +1 -0
  329. package/src/server/plugins/engine/views/components/multilinetextfield.html +12 -1
  330. package/src/server/plugins/engine/views/components/osgridreffield.html +4 -1
  331. package/src/server/plugins/engine/views/components/paymentfield.html +1 -1
  332. package/src/server/plugins/engine/views/components/ukaddressfield.html +1 -1
  333. package/src/server/plugins/engine/views/file-upload.html +1 -1
  334. package/src/server/plugins/engine/views/partials/preview-banner.html +3 -1
  335. package/src/server/plugins/engine/views/unavailable.html +14 -11
  336. package/src/server/plugins/nunjucks/filters/applyUrlParam.js +17 -0
  337. package/src/server/plugins/nunjucks/filters/index.js +1 -0
  338. package/src/server/plugins/payment/helper.js +22 -2
  339. package/src/server/plugins/payment/service.js +6 -2
  340. package/src/server/plugins/payment/types.js +1 -0
  341. package/src/server/plugins/postcode-lookup/models/index.js +75 -43
  342. package/src/server/plugins/postcode-lookup/routes/index.js +73 -16
  343. package/src/server/plugins/postcode-lookup/types.js +6 -1
  344. package/src/server/plugins/postcode-lookup/views/postcode-lookup-details.html +3 -3
  345. package/src/server/utils/type-utils.ts +1 -11
  346. package/src/server/utils/utils.js +19 -1
@@ -3,13 +3,33 @@ import createDatasetsPlugin from '@defra/interactive-map/plugins/datasets';
3
3
  // @ts-expect-error - no types
4
4
  import createDrawPlugin from '@defra/interactive-map/plugins/draw-ml';
5
5
  import { bbox } from '@turf/bbox';
6
- import { EVENTS, createMap, defaultConfig, getCentroidGridRef, getCoordinateGridRef, getMapLayers } from "./map.js";
6
+ import { DEFAULT_LANG, ENGLISH_LANG, WELSH_LANG } from "./map-constants.js";
7
+ import { EVENTS, createMap, defaultConfig, getCentroidGridRef, getCoordinateGridRef, getMapCountryLayers, getMapLayers } from "./map.js";
7
8
  import sssiDataset from "./sssi-dataset.js";
8
9
  import { formatDelimtedList } from "./utils.js";
10
+ import cy from "../../server/plugins/engine/i18n/translations/cy.json" with { type: 'json' };
11
+ import enGB from "../../server/plugins/engine/i18n/translations/en-GB.json" with { type: 'json' };
12
+ const englishTranslations = enGB.components.geospatialField.map;
13
+ const welshTranslations = cy.components.geospatialField.map;
14
+
15
+ /**
16
+ * @type {Record<LanguageCode, GeospatialLanguageTexts>}
17
+ */
18
+ export const languageTexts = {
19
+ [ENGLISH_LANG]: englishTranslations,
20
+ [WELSH_LANG]: welshTranslations
21
+ };
22
+
23
+ /**
24
+ * Get the map texts for the given language code
25
+ * @param {LanguageCode} lang - the lanugae code
26
+ */
27
+ export function getTexts(lang = DEFAULT_LANG) {
28
+ return languageTexts[lang];
29
+ }
9
30
  const helpPanelConfig = {
10
31
  focus: false,
11
32
  showLabel: true,
12
- label: 'How to use this map',
13
33
  mobile: {
14
34
  slot: 'drawer',
15
35
  open: true,
@@ -31,51 +51,70 @@ const helpPanelConfig = {
31
51
  };
32
52
 
33
53
  /**
54
+ * @param {GeospatialPanelTexts} texts
34
55
  * @param {boolean} allowLine
35
56
  * @param {boolean} allowShape
36
57
  */
37
- function getLineOrShapeText(allowLine, allowShape) {
58
+ function getLineOrShapeText(texts, allowLine, allowShape) {
38
59
  if (allowLine && allowShape) {
39
- return 'a line or shape';
60
+ return texts.lineOrShapeText;
40
61
  }
41
62
  if (allowLine) {
42
- return 'a line';
63
+ return texts.lineText;
43
64
  }
44
65
  if (allowShape) {
45
- return 'a shape';
66
+ return texts.shapeText;
46
67
  }
47
68
  return '';
48
69
  }
49
70
 
50
71
  /**
72
+ * @param {GeospatialPanelTexts} texts
51
73
  * @param {boolean} allowPoint
52
74
  * @param {boolean} allowLine
53
75
  * @param {boolean} allowShape
54
76
  */
55
- function getAllowedTypesPhrase(allowPoint, allowLine, allowShape) {
77
+ function getAllowedTypesPhrase(texts, allowPoint, allowLine, allowShape) {
56
78
  const items = [];
57
79
  if (allowPoint) {
58
- items.push('points');
80
+ items.push(texts.typesPhrasePoint);
59
81
  }
60
82
  if (allowLine) {
61
- items.push('lines');
83
+ items.push(texts.typesPhraseLine);
62
84
  }
63
85
  if (allowShape) {
64
- items.push('shapes');
86
+ items.push(texts.typesPhraseShape);
65
87
  }
66
- return formatDelimtedList(items, ',', 'or');
88
+ return formatDelimtedList(items, ',', texts.typesPhraseOr);
67
89
  }
68
90
 
69
91
  /**
92
+ * Gets the type description for a given feature
93
+ * @param {Feature} feature - the geojson feature
94
+ * @param {GeometryTexts} typeDescriptions
95
+ */
96
+ function getTypeDescription(feature, typeDescriptions) {
97
+ switch (feature.geometry.type) {
98
+ case 'Point':
99
+ return typeDescriptions.point;
100
+ case 'LineString':
101
+ return typeDescriptions.line;
102
+ case 'Polygon':
103
+ return typeDescriptions.polygon;
104
+ }
105
+ }
106
+
107
+ /**
108
+ * @param {GeospatialPanelTexts} texts
70
109
  * @param {boolean} allowPoint
71
110
  * @param {boolean} allowLine
72
111
  * @param {boolean} allowShape
73
112
  */
74
- export function getHelpPanelHtml(allowPoint, allowLine, allowShape) {
75
- const lineOrShapeText = getLineOrShapeText(allowLine, allowShape);
76
- const doneExtra = lineOrShapeText ? `<li>Double‑click, or select 'Done', when you have finished drawing ${lineOrShapeText}</li>` : '';
77
- const allowedTypesText = getAllowedTypesPhrase(allowPoint, allowLine, allowShape);
78
- return `<p class="govuk-body-s govuk-!-margin-bottom-2">You can add ${allowedTypesText} to the map.</p><ul class="govuk-list govuk-list--number govuk-body-s"><li>Search for a county, place or postcode</li><li>Use the + and - icons to zoom in and out</li>${doneExtra}<li>Give the location a name</li></ul>`;
113
+ export function getHelpPanelHtml(texts, allowPoint, allowLine, allowShape) {
114
+ const lineOrShapeText = getLineOrShapeText(texts, allowLine, allowShape);
115
+ const point3 = lineOrShapeText ? `<li>${texts.point3} ${lineOrShapeText}</li>` : '';
116
+ const allowedTypesText = getAllowedTypesPhrase(texts, allowPoint, allowLine, allowShape);
117
+ return `<p class="govuk-body-s govuk-!-margin-bottom-2">${texts.ledeIntro} ${allowedTypesText} ${texts.ledeOutro}</p><ul class="govuk-list govuk-list--number govuk-body-s"><li>${texts.point1}</li><li>${texts.point2}</li>${point3}<li>${texts.point4}</li></ul>`;
79
118
  }
80
119
  const lineFeatureProperties = {
81
120
  stroke: 'rgba(0, 11, 112, 1)',
@@ -87,15 +126,6 @@ const polygonFeatureProperties = {
87
126
  fill: 'rgba(255, 221, 0, 0.2)',
88
127
  strokeWidth: 2
89
128
  };
90
-
91
- /**
92
- * @type {Record<'Point' | 'LineString' | 'Polygon', string>}
93
- */
94
- const typeDescriptions = {
95
- Point: 'Point',
96
- LineString: 'Line',
97
- Polygon: 'Shape'
98
- };
99
129
  const POINT_SVG = '<path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0" /><circle cx="12" cy="10" r="3" />';
100
130
  const POLYGON_SVG = '<path d="M19.5 7v10M4.5 7v10M7 19.5h10M7 4.5h10"/><path d="M22 18v3a1 1 0 0 1-1 1h-3a1 1 0 0 1-1-1v-3a1 1 0 0 1 1-1h3a1 1 0 0 1 1 1zm0-15v3a1 1 0 0 1-1 1h-3a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h3a1 1 0 0 1 1 1zM7 18v3a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1v-3a1 1 0 0 1 1-1h3a1 1 0 0 1 1 1zM7 3v3a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h3a1 1 0 0 1 1 1z"/>';
101
131
  const LINE_SVG = '<path d="M5.706 16.294L16.294 5.706"/><path d="M21 2v3c0 .549-.451 1-1 1h-3c-.549 0-1-.451-1-1V2c0-.549.451-1 1-1h3c.549 0 1 .451 1 1zM6 17v3c0 .549-.451 1-1 1H2c-.549 0-1-.451-1-1v-3c0-.549.451-1 1-1h3c.549 0 1 .451 1 1z"/>';
@@ -151,37 +181,16 @@ export function processGeospatial(config, geospatial, index) {
151
181
  const plugins = [drawPlugin];
152
182
  const country = geospatial.dataset.country;
153
183
  const mapLayers = getMapLayers(geospatial.dataset.maplayers);
154
- if (country) {
155
- // Add the country bounds as a dataset plugin to show the valid area on the map
156
- // and provide feedback to the user when they add features outside of the bounds.
157
- const countriesDatasetPlugin = createDatasetsPlugin({
158
- datasets: [{
159
- id: 'invalid-area',
160
- label: 'Invalid areas',
161
- geojson: `${config.apiPath}/maps/countries.geojson?omit=${country}`,
162
- showInKey: false,
163
- showInMenu: false,
164
- style: {
165
- stroke: 'gray',
166
- strokeWidth: 1,
167
- fill: 'rgba(211,211,211,0.8)'
168
- }
169
- }, {
170
- id: 'valid-area',
171
- label: 'Valid areas',
172
- geojson: `${config.apiPath}/maps/countries.geojson?only=${country}`,
173
- showInKey: false,
174
- showInMenu: false,
175
- style: {
176
- stroke: 'rgba(0,112,60,1)',
177
- strokeWidth: 1
178
- }
179
- }]
180
- });
181
- plugins.push(countriesDatasetPlugin);
182
- }
184
+ const datasets = getMapCountryLayers(config.apiPath, country);
183
185
  if (mapLayers.includes('sssi')) {
184
- plugins.push(createDatasetsPlugin(sssiDataset));
186
+ datasets.push(...sssiDataset);
187
+ }
188
+
189
+ // Create a map dataset plugin if there are any present
190
+ if (datasets.length) {
191
+ plugins.push(createDatasetsPlugin({
192
+ datasets
193
+ }));
185
194
  }
186
195
  const initConfig = {
187
196
  ...defaultConfig,
@@ -198,12 +207,20 @@ export function processGeospatial(config, geospatial, index) {
198
207
  const options = {
199
208
  geometryTypes
200
209
  };
201
- const uiManager = getUIManager(geojson, map, mapId, listEl, geospatialInput, options);
210
+ const lang = /** @type {LanguageCode} */
211
+ // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
212
+ geospatial.dataset.lang || DEFAULT_LANG;
213
+ const uiManager = getUIManager(geojson, map, mapId, listEl, geospatialInput, options, lang);
214
+ const languageManager = {
215
+ lang,
216
+ texts: getTexts(lang)
217
+ };
202
218
 
203
219
  /**
204
220
  * @type {Context}
205
221
  */
206
222
  const context = {
223
+ languageManager,
207
224
  map,
208
225
  featuresManager,
209
226
  activeFeatureManager,
@@ -248,10 +265,11 @@ export function addFeatureToMap(feature, drawPlugin, map) {
248
265
  * @param {string} mapId - the ID of the map
249
266
  * @param {boolean} [disabled] - render the list with disabled links
250
267
  * @param {boolean} [readonly] - render the list in readonly mode
268
+ * @param {LanguageCode} [lang] - the language for the feature details
251
269
  */
252
- export function createFeaturesHTML(features, mapId, disabled = false, readonly = false) {
270
+ export function createFeaturesHTML(features, mapId, disabled = false, readonly = false, lang = DEFAULT_LANG) {
253
271
  return `<dl class="govuk-summary-list">
254
- ${features.map((feature, index) => createFeatureHTML(feature, index, mapId, disabled, readonly)).join('\n')}
272
+ ${features.map((feature, index) => createFeatureHTML(feature, index, mapId, disabled, readonly, lang)).join('\n')}
255
273
  </dl>`;
256
274
  }
257
275
 
@@ -271,8 +289,10 @@ export function focusFeature(feature, mapProvider) {
271
289
  * @param {string} mapId - the ID of the map
272
290
  * @param {boolean} [disabled] - render the list with disabled links
273
291
  * @param {boolean} [readonly] - render the list item in readonly mode
292
+ * @param {LanguageCode} [lang] - the language for the feature details
274
293
  */
275
- export function createFeatureHTML(feature, index, mapId, disabled = false, readonly = false) {
294
+ export function createFeatureHTML(feature, index, mapId, disabled = false, readonly = false, lang = DEFAULT_LANG) {
295
+ const texts = getTexts(lang);
276
296
  const flattened = feature.geometry.coordinates.flat(2);
277
297
  const points = [];
278
298
  for (let i = 0; i < flattened.length; i += 2) {
@@ -284,25 +304,26 @@ export function createFeatureHTML(feature, index, mapId, disabled = false, reado
284
304
  // Change action link
285
305
  const changeAction = () => `<li class="govuk-summary-list__actions-list-item">
286
306
  <a class="govuk-link govuk-link--no-visited-state ${disabled ? 'govuk-link--disabled' : ''}" href="#${mapId}" data-action="edit" data-id="${feature.id}"
287
- data-type="${feature.geometry.type}">Update<span class="govuk-visually-hidden"> location</span></a>
307
+ data-type="${feature.geometry.type}">${texts.itemUpdateLink}<span class="govuk-visually-hidden"> ${texts.itemVisuallyHidden}</span></a>
288
308
  </li>`;
289
309
 
290
310
  // Delete action link
291
311
  const deleteAction = () => `<li class="govuk-summary-list__actions-list-item">
292
312
  <a class="govuk-link govuk-link--no-visited-state ${disabled ? 'govuk-link--disabled' : ''}" href="#" data-action="delete" data-id="${feature.id}"
293
- data-type="${feature.geometry.type}">Delete<span class="govuk-visually-hidden"> location</span></a>
313
+ data-type="${feature.geometry.type}">${texts.itemDeleteLink}<span class="govuk-visually-hidden"> ${texts.itemVisuallyHidden}</span></a>
294
314
  </li>`;
295
315
 
296
316
  // Focus action link
297
317
  const focusAction = () => `<li class="govuk-summary-list__actions-list-item">
298
- <a class="govuk-link govuk-link--no-visited-state" href="#${mapId}" data-action="focus" data-id="${feature.id}">Show<span class="govuk-visually-hidden"> location</span></a>
318
+ <a class="govuk-link govuk-link--no-visited-state" href="#${mapId}" data-action="focus" data-id="${feature.id}">${texts.itemFocusLink}<span class="govuk-visually-hidden"> ${texts.itemVisuallyHidden}</span></a>
299
319
  </li>`;
300
320
  const links = readonly ? focusAction() : `${changeAction()}${deleteAction()}`;
301
321
  const actions = `<ul class="govuk-summary-list__actions-list">${links}</ul>`;
322
+ const typeDescription = getTypeDescription(feature, texts.typeDescriptions);
302
323
  return `<div class="govuk-summary-list__row govuk-summary-list__row--no-border">
303
324
  <dt class="govuk-summary-list__key">
304
325
  <div class="govuk-form-group">
305
- <label class="govuk-label govuk-label--s" ${readonly ? '' : `for="description_${index}"`}>Location ${index + 1} description</label>
326
+ <label class="govuk-label govuk-label--s" ${readonly ? '' : `for="description_${index}"`}>${texts.itemLabel1} ${index + 1} ${texts.itemLabel2}</label>
306
327
  ${description}
307
328
  </div>
308
329
  </dt>
@@ -313,24 +334,24 @@ export function createFeatureHTML(feature, index, mapId, disabled = false, reado
313
334
  <div class="govuk-summary-list__row">
314
335
  <details class="govuk-details govuk-!-margin-bottom-2">
315
336
  <summary class="govuk-details__summary">
316
- <span class="govuk-details__summary-text">Coordinates</span>
337
+ <span class="govuk-details__summary-text">${texts.details.summary}</span>
317
338
  </summary>
318
339
  <div class="govuk-details__text">
319
340
  <dl class="govuk-summary-list">
320
341
  <div class="govuk-summary-list__row">
321
- <dt class="govuk-summary-list__key">Type</dt>
322
- <dd class="govuk-summary-list__value">${typeDescriptions[feature.geometry.type]}</dd>
342
+ <dt class="govuk-summary-list__key">${texts.details.type}</dt>
343
+ <dd class="govuk-summary-list__value">${typeDescription}</dd>
323
344
  </div>
324
345
  <div class="govuk-summary-list__row">
325
- <dt class="govuk-summary-list__key">Centre grid reference</dt>
346
+ <dt class="govuk-summary-list__key">${texts.details.centroidGridReference}</dt>
326
347
  <dd class="govuk-summary-list__value">${feature.properties.centroidGridReference}</dd>
327
348
  </div>
328
349
  <div class="govuk-summary-list__row">
329
- <dt class="govuk-summary-list__key">First point grid reference</dt>
350
+ <dt class="govuk-summary-list__key">${texts.details.firstPointGridReference}</dt>
330
351
  <dd class="govuk-summary-list__value">${feature.properties.coordinateGridReference}</dd>
331
352
  </div>
332
353
  <div class="govuk-summary-list__row">
333
- <dt class="govuk-summary-list__key">Detailed coordinates</dt>
354
+ <dt class="govuk-summary-list__key">${texts.details.detailedCoordinates}</dt>
334
355
  <dd class="govuk-summary-list__value">
335
356
  <ol class="govuk-list govuk-list--number">${coordinates}</ol>
336
357
  </dd>
@@ -485,11 +506,12 @@ function getFeaturesManager(geojson) {
485
506
  * @param {string} mapId - the ID of the map
486
507
  * @param {HTMLDivElement} listEl - where to render the feature list
487
508
  * @param {Function} renderValue - function that renders the features JSON into the hidden textarea
509
+ * @param {LanguageCode} [lang] - the language for the feature details
488
510
  * @returns {RenderList}
489
511
  */
490
- function getListRenderer(geojson, mapId, listEl, renderValue) {
512
+ function getListRenderer(geojson, mapId, listEl, renderValue, lang = DEFAULT_LANG) {
491
513
  return function renderList(disabled = false) {
492
- const html = createFeaturesHTML(geojson.features, mapId, disabled);
514
+ const html = createFeaturesHTML(geojson.features, mapId, disabled, false, lang);
493
515
  listEl.innerHTML = html;
494
516
  renderValue();
495
517
  };
@@ -515,8 +537,9 @@ function getValueRenderer(geojson, geospatialInput) {
515
537
  * @param {HTMLDivElement} listEl - where to render the feature list
516
538
  * @param {HTMLTextAreaElement} geospatialInput - the geospatial textarea
517
539
  * @param { UIManagerOptions | undefined } options - extra options such as allowable geometry types
540
+ * @param {LanguageCode} [lang] - the language for the feature details
518
541
  */
519
- export function getUIManager(geojson, map, mapId, listEl, geospatialInput, options) {
542
+ export function getUIManager(geojson, map, mapId, listEl, geospatialInput, options, lang = DEFAULT_LANG) {
520
543
  /**
521
544
  * Get a CSV list of geometry types the user can create
522
545
  * @returns {string[]}
@@ -555,7 +578,7 @@ export function getUIManager(geojson, map, mapId, listEl, geospatialInput, optio
555
578
  }
556
579
  }
557
580
  const renderValue = getValueRenderer(geojson, geospatialInput);
558
- const renderList = getListRenderer(geojson, mapId, listEl, renderValue);
581
+ const renderList = getListRenderer(geojson, mapId, listEl, renderValue, lang);
559
582
 
560
583
  /** @type {UIManager} */
561
584
  return {
@@ -633,16 +656,20 @@ function onMapReadyFactory(context) {
633
656
  const allowPoint = types.includes('point');
634
657
  const allowLine = types.includes('line');
635
658
  const allowShape = types.includes('shape');
659
+ const {
660
+ texts
661
+ } = context.languageManager;
636
662
 
637
663
  // Add info panel
638
664
  map.addPanel('info', {
639
665
  ...helpPanelConfig,
640
- html: getHelpPanelHtml(allowPoint, allowLine, allowShape)
666
+ label: texts.helpPanel.label,
667
+ html: getHelpPanelHtml(texts.helpPanel, allowPoint, allowLine, allowShape)
641
668
  });
642
669
  if (allowPoint) {
643
670
  map.addButton('btnAddPoint', {
644
671
  variant: 'tertiary',
645
- label: 'Add point',
672
+ label: texts.buttons.point,
646
673
  iconSvgContent: POINT_SVG,
647
674
  onClick: () => {
648
675
  resetActiveFeature();
@@ -664,7 +691,7 @@ function onMapReadyFactory(context) {
664
691
  if (allowShape) {
665
692
  map.addButton('btnAddPolygon', {
666
693
  variant: 'tertiary',
667
- label: 'Add shape',
694
+ label: texts.buttons.polygon,
668
695
  iconSvgContent: POLYGON_SVG,
669
696
  onClick: () => {
670
697
  resetActiveFeature();
@@ -686,7 +713,7 @@ function onMapReadyFactory(context) {
686
713
  if (allowLine) {
687
714
  map.addButton('btnAddLine', {
688
715
  variant: 'tertiary',
689
- label: 'Add line',
716
+ label: texts.buttons.line,
690
717
  iconSvgContent: LINE_SVG,
691
718
  onClick: () => {
692
719
  resetActiveFeature();
@@ -1159,6 +1186,7 @@ function onListElKeydownFactory() {
1159
1186
  * Renders the features into the list
1160
1187
  * @callback RenderList
1161
1188
  * @param {boolean} [disabled] - whether to render the list with disabled links
1189
+ * @param {LanguageCode} [lang] - the language for the feature details
1162
1190
  * @returns {void}
1163
1191
  */
1164
1192
 
@@ -1213,8 +1241,59 @@ function onListElKeydownFactory() {
1213
1241
  * @property {GetAllowableGeometryTypes} getAllowableGeometryTypes - function that returns the array of geometry types a user can create
1214
1242
  */
1215
1243
 
1244
+ /**
1245
+ * @typedef {object} GeometryTexts
1246
+ * @property {string} point - the label for a point feature in the list
1247
+ * @property {string} line - the label for a line string feature in the list
1248
+ * @property {string} polygon - the label for a polygon feature in the list
1249
+ */
1250
+
1251
+ /**
1252
+ * @typedef {object} GeospatialPanelTexts
1253
+ * @property {string} label - the label for the info panel
1254
+ * @property {string} ledeIntro - the lede intro text for the info panel
1255
+ * @property {string} ledeOutro - the lede outro text for the info panel
1256
+ * @property {string} lineText - the label for the info panel line text
1257
+ * @property {string} shapeText - the label for the info panel shape text
1258
+ * @property {string} point1 - the text for bullet point 1 in the info panel
1259
+ * @property {string} point2 - the text for bullet point 2 in the info panel
1260
+ * @property {string} point3 - the text for bullet point 3 in the info panel
1261
+ * @property {string} point4 - the text for bullet point 4 in the info panel
1262
+ * @property {string} lineOrShapeText - the label for the info panel line or shape text
1263
+ * @property {string} typesPhrasePoint - the label for the info panel types phrase point
1264
+ * @property {string} typesPhraseLine - the label for the info panel types phrase line
1265
+ * @property {string} typesPhraseShape - the label for the info panel types phrase shape
1266
+ * @property {string} typesPhraseOr - the label for the info panel types phrase "or"
1267
+ */
1268
+
1269
+ /**
1270
+ * @typedef {object} GeospatialLanguageTexts
1271
+ * @property {GeometryTexts} typeDescriptions - the descriptions of the geometry types
1272
+ * @property {GeospatialPanelTexts} helpPanel - texts for the info panel
1273
+ * @property {GeometryTexts} buttons - the labels for the action buttons
1274
+ * @property {string} itemLabel1 - the first part of the label for a feature in the list
1275
+ * @property {string} itemLabel2 - the second part of the label for a feature in the list
1276
+ * @property {string} itemUpdateLink - the label for the "update" link for a feature in the list
1277
+ * @property {string} itemDeleteLink - the label for the "delete" link for a feature in the list
1278
+ * @property {string} itemFocusLink - the label for the "focus" link for a feature in the list
1279
+ * @property {string} itemVisuallyHidden - visually hidden text to add context to action links
1280
+ * @property {object} details - labels for the details section of a feature in the list
1281
+ * @property {string} details.summary - label for the summary of a feature in the list
1282
+ * @property {string} details.type - label for the type of a feature in the list
1283
+ * @property {string} details.centroidGridReference - label for the centroid grid reference of a feature in the list
1284
+ * @property {string} details.firstPointGridReference - label for the first point grid reference of a feature in the list
1285
+ * @property {string} details.detailedCoordinates - label for the detailed coordinates of a feature in the list
1286
+ */
1287
+
1288
+ /**
1289
+ * @typedef {object} LanguageManager
1290
+ * @property {LanguageCode} lang - the language for the interactive map
1291
+ * @property {GeospatialLanguageTexts} texts - the descriptions of the geometry types
1292
+ */
1293
+
1216
1294
  /**
1217
1295
  * @typedef {object} Context
1296
+ * @property {LanguageManager} languageManager - the language manager for the interactive map
1218
1297
  * @property {InteractiveMap} map - the interactive map
1219
1298
  * @property {MapLibreMap} [mapProvider] - the interactive map provider
1220
1299
  * @property {FeaturesManager} featuresManager - the features manager
@@ -1225,6 +1304,7 @@ function onListElKeydownFactory() {
1225
1304
  */
1226
1305
 
1227
1306
  /**
1307
+ * @import { LanguageCode } from '../../client/javascripts/map.js'
1228
1308
  * @import { MapLibreMap, UIManagerOptions } from '../../client/javascripts/map.js'
1229
1309
  */
1230
1310
  //# sourceMappingURL=geospatial-map.js.map