@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.
- package/.public/javascripts/application.min.js +1 -1
- package/.public/javascripts/application.min.js.LICENSE.txt +7 -0
- package/.public/javascripts/application.min.js.map +1 -1
- package/.public/javascripts/shared.min.js +1 -1
- package/.public/javascripts/shared.min.js.LICENSE.txt +7 -0
- package/.public/javascripts/shared.min.js.map +1 -1
- package/.public/stylesheets/application.min.css.map +1 -1
- package/.server/client/javascripts/file-upload.js +6 -3
- package/.server/client/javascripts/file-upload.js.map +1 -1
- package/.server/client/javascripts/geospatial-map.d.ts +153 -5
- package/.server/client/javascripts/geospatial-map.js +157 -77
- package/.server/client/javascripts/geospatial-map.js.map +1 -1
- package/.server/client/javascripts/govuk.js +2 -1
- package/.server/client/javascripts/govuk.js.map +1 -1
- package/.server/client/javascripts/location-map.d.ts +44 -0
- package/.server/client/javascripts/location-map.js +54 -5
- package/.server/client/javascripts/location-map.js.map +1 -1
- package/.server/client/javascripts/map-constants.d.ts +3 -0
- package/.server/client/javascripts/map-constants.js +4 -0
- package/.server/client/javascripts/map-constants.js.map +1 -0
- package/.server/client/javascripts/map.d.ts +10 -0
- package/.server/client/javascripts/map.js +42 -0
- package/.server/client/javascripts/map.js.map +1 -1
- package/.server/client/javascripts/maps.d.ts +5 -0
- package/.server/client/javascripts/maps.js +6 -0
- package/.server/client/javascripts/maps.js.map +1 -0
- package/.server/client/javascripts/shared.d.ts +1 -4
- package/.server/client/javascripts/shared.js +1 -4
- package/.server/client/javascripts/shared.js.map +1 -1
- package/.server/client/javascripts/sssi-dataset.d.ts +18 -20
- package/.server/client/javascripts/sssi-dataset.js +37 -39
- package/.server/client/javascripts/sssi-dataset.js.map +1 -1
- package/.server/client/stylesheets/maps.scss +4 -0
- package/.server/client/stylesheets/shared.scss +1 -5
- package/.server/server/constants.d.ts +2 -0
- package/.server/server/constants.js +2 -0
- package/.server/server/constants.js.map +1 -1
- package/.server/server/plugins/engine/__stubs__/definitions.d.ts +29 -0
- package/.server/server/plugins/engine/__stubs__/definitions.js +125 -0
- package/.server/server/plugins/engine/__stubs__/definitions.js.map +1 -0
- package/.server/server/plugins/engine/components/AutocompleteField.d.ts +9 -3
- package/.server/server/plugins/engine/components/AutocompleteField.js +12 -0
- package/.server/server/plugins/engine/components/AutocompleteField.js.map +1 -1
- package/.server/server/plugins/engine/components/CheckboxesField.d.ts +21 -0
- package/.server/server/plugins/engine/components/CheckboxesField.js +30 -5
- package/.server/server/plugins/engine/components/CheckboxesField.js.map +1 -1
- package/.server/server/plugins/engine/components/ComponentBase.d.ts +1 -0
- package/.server/server/plugins/engine/components/ComponentBase.js +2 -0
- package/.server/server/plugins/engine/components/ComponentBase.js.map +1 -1
- package/.server/server/plugins/engine/components/ComponentCollection.js +11 -6
- package/.server/server/plugins/engine/components/ComponentCollection.js.map +1 -1
- package/.server/server/plugins/engine/components/DatePartsField.d.ts +6 -3
- package/.server/server/plugins/engine/components/DatePartsField.js +12 -7
- package/.server/server/plugins/engine/components/DatePartsField.js.map +1 -1
- package/.server/server/plugins/engine/components/DeclarationField.d.ts +5 -2
- package/.server/server/plugins/engine/components/DeclarationField.js +6 -4
- package/.server/server/plugins/engine/components/DeclarationField.js.map +1 -1
- package/.server/server/plugins/engine/components/Details.d.ts +1 -0
- package/.server/server/plugins/engine/components/EastingNorthingField.d.ts +33 -2
- package/.server/server/plugins/engine/components/EastingNorthingField.js +110 -54
- package/.server/server/plugins/engine/components/EastingNorthingField.js.map +1 -1
- package/.server/server/plugins/engine/components/EmailAddressField.d.ts +4 -1
- package/.server/server/plugins/engine/components/EmailAddressField.js +2 -1
- package/.server/server/plugins/engine/components/EmailAddressField.js.map +1 -1
- package/.server/server/plugins/engine/components/FileUploadField.d.ts +21 -0
- package/.server/server/plugins/engine/components/FileUploadField.js +35 -3
- package/.server/server/plugins/engine/components/FileUploadField.js.map +1 -1
- package/.server/server/plugins/engine/components/FormComponent.d.ts +5 -1
- package/.server/server/plugins/engine/components/FormComponent.js +5 -2
- package/.server/server/plugins/engine/components/FormComponent.js.map +1 -1
- package/.server/server/plugins/engine/components/GeospatialField.d.ts +23 -0
- package/.server/server/plugins/engine/components/GeospatialField.js +33 -9
- package/.server/server/plugins/engine/components/GeospatialField.js.map +1 -1
- package/.server/server/plugins/engine/components/Html.d.ts +1 -0
- package/.server/server/plugins/engine/components/InsetText.d.ts +1 -0
- package/.server/server/plugins/engine/components/LatLongField.d.ts +32 -2
- package/.server/server/plugins/engine/components/LatLongField.js +85 -48
- package/.server/server/plugins/engine/components/LatLongField.js.map +1 -1
- package/.server/server/plugins/engine/components/List.d.ts +1 -0
- package/.server/server/plugins/engine/components/ListFormComponent.d.ts +1 -0
- package/.server/server/plugins/engine/components/LocationFieldBase.d.ts +8 -2
- package/.server/server/plugins/engine/components/LocationFieldBase.js +25 -6
- package/.server/server/plugins/engine/components/LocationFieldBase.js.map +1 -1
- package/.server/server/plugins/engine/components/LocationFieldHelpers.d.ts +12 -3
- package/.server/server/plugins/engine/components/LocationFieldHelpers.js +21 -13
- package/.server/server/plugins/engine/components/LocationFieldHelpers.js.map +1 -1
- package/.server/server/plugins/engine/components/Markdown.d.ts +1 -0
- package/.server/server/plugins/engine/components/Markdown.js +1 -1
- package/.server/server/plugins/engine/components/Markdown.js.map +1 -1
- package/.server/server/plugins/engine/components/MonthYearField.d.ts +5 -2
- package/.server/server/plugins/engine/components/MonthYearField.js +13 -9
- package/.server/server/plugins/engine/components/MonthYearField.js.map +1 -1
- package/.server/server/plugins/engine/components/MultilineTextField.d.ts +1 -0
- package/.server/server/plugins/engine/components/NationalGridFieldNumberField.d.ts +2 -1
- package/.server/server/plugins/engine/components/NationalGridFieldNumberField.js +4 -3
- package/.server/server/plugins/engine/components/NationalGridFieldNumberField.js.map +1 -1
- package/.server/server/plugins/engine/components/NotificationBanner.d.ts +1 -0
- package/.server/server/plugins/engine/components/NumberField.d.ts +5 -0
- package/.server/server/plugins/engine/components/NumberField.js +16 -0
- package/.server/server/plugins/engine/components/NumberField.js.map +1 -1
- package/.server/server/plugins/engine/components/OsGridRefField.d.ts +103 -1
- package/.server/server/plugins/engine/components/OsGridRefField.js +13 -3
- package/.server/server/plugins/engine/components/OsGridRefField.js.map +1 -1
- package/.server/server/plugins/engine/components/PaymentField.d.ts +3 -0
- package/.server/server/plugins/engine/components/PaymentField.js +17 -6
- package/.server/server/plugins/engine/components/PaymentField.js.map +1 -1
- package/.server/server/plugins/engine/components/SelectField.d.ts +1 -0
- package/.server/server/plugins/engine/components/SelectionControlField.d.ts +1 -0
- package/.server/server/plugins/engine/components/TelephoneNumberField.d.ts +1 -0
- package/.server/server/plugins/engine/components/UkAddressField.d.ts +1 -0
- package/.server/server/plugins/engine/components/UkAddressField.js +23 -8
- package/.server/server/plugins/engine/components/UkAddressField.js.map +1 -1
- package/.server/server/plugins/engine/components/YesNoField.d.ts +5 -2
- package/.server/server/plugins/engine/components/YesNoField.js +17 -8
- package/.server/server/plugins/engine/components/YesNoField.js.map +1 -1
- package/.server/server/plugins/engine/components/helpers/components.js +3 -3
- package/.server/server/plugins/engine/components/helpers/components.js.map +1 -1
- package/.server/server/plugins/engine/components/helpers/geospatial.d.ts +8 -1
- package/.server/server/plugins/engine/components/helpers/geospatial.js +56 -15
- package/.server/server/plugins/engine/components/helpers/geospatial.js.map +1 -1
- package/.server/server/plugins/engine/components/helpers/index.d.ts +7 -0
- package/.server/server/plugins/engine/components/helpers/index.js +13 -1
- package/.server/server/plugins/engine/components/helpers/index.js.map +1 -1
- package/.server/server/plugins/engine/components/types.d.ts +1 -0
- package/.server/server/plugins/engine/components/types.js.map +1 -1
- package/.server/server/plugins/engine/errors.d.ts +49 -0
- package/.server/server/plugins/engine/errors.js +75 -0
- package/.server/server/plugins/engine/errors.js.map +1 -0
- package/.server/server/plugins/engine/form-availability.d.ts +3 -2
- package/.server/server/plugins/engine/form-availability.js +3 -2
- package/.server/server/plugins/engine/form-availability.js.map +1 -1
- package/.server/server/plugins/engine/form-context.js +2 -2
- package/.server/server/plugins/engine/form-context.js.map +1 -1
- package/.server/server/plugins/engine/helpers.d.ts +22 -2
- package/.server/server/plugins/engine/helpers.js +44 -5
- package/.server/server/plugins/engine/helpers.js.map +1 -1
- package/.server/server/plugins/engine/i18n/buildValidationMessages.d.ts +4 -1
- package/.server/server/plugins/engine/i18n/buildValidationMessages.js +31 -7
- package/.server/server/plugins/engine/i18n/buildValidationMessages.js.map +1 -1
- package/.server/server/plugins/engine/i18n/createFormTranslator.d.ts +4 -4
- package/.server/server/plugins/engine/i18n/createFormTranslator.js +33 -4
- package/.server/server/plugins/engine/i18n/createFormTranslator.js.map +1 -1
- package/.server/server/plugins/engine/i18n/extractBaseTranslations.d.ts +1 -1
- package/.server/server/plugins/engine/i18n/extractBaseTranslations.js +9 -0
- package/.server/server/plugins/engine/i18n/extractBaseTranslations.js.map +1 -1
- package/.server/server/plugins/engine/i18n/form.d.ts +13 -0
- package/.server/server/plugins/engine/i18n/form.js +35 -0
- package/.server/server/plugins/engine/i18n/form.js.map +1 -0
- package/.server/server/plugins/engine/i18n/languages.d.ts +10 -0
- package/.server/server/plugins/engine/i18n/languages.js +19 -0
- package/.server/server/plugins/engine/i18n/languages.js.map +1 -0
- package/.server/server/plugins/engine/i18n/translations/cy.json +192 -9
- package/.server/server/plugins/engine/i18n/translations/en-GB.json +125 -7
- package/.server/server/plugins/engine/i18n/types.d.ts +3 -0
- package/.server/server/plugins/engine/i18n/types.js.map +1 -1
- package/.server/server/plugins/engine/index.d.ts +4 -0
- package/.server/server/plugins/engine/index.js +4 -0
- package/.server/server/plugins/engine/index.js.map +1 -1
- package/.server/server/plugins/engine/models/FormModel.d.ts +0 -4
- package/.server/server/plugins/engine/models/FormModel.js +35 -23
- package/.server/server/plugins/engine/models/FormModel.js.map +1 -1
- package/.server/server/plugins/engine/models/SummaryViewModel.js +9 -4
- package/.server/server/plugins/engine/models/SummaryViewModel.js.map +1 -1
- package/.server/server/plugins/engine/models/types.d.ts +28 -1
- package/.server/server/plugins/engine/models/types.js.map +1 -1
- package/.server/server/plugins/engine/models/unavailable-view-model.d.ts +11 -2
- package/.server/server/plugins/engine/models/unavailable-view-model.js +23 -4
- package/.server/server/plugins/engine/models/unavailable-view-model.js.map +1 -1
- package/.server/server/plugins/engine/outputFormatters/adapter/v1.js +14 -6
- package/.server/server/plugins/engine/outputFormatters/adapter/v1.js.map +1 -1
- package/.server/server/plugins/engine/outputFormatters/human/v1.js +2 -1
- package/.server/server/plugins/engine/outputFormatters/human/v1.js.map +1 -1
- package/.server/server/plugins/engine/outputFormatters/machine/v2.d.ts +2 -0
- package/.server/server/plugins/engine/outputFormatters/machine/v2.js +2 -0
- package/.server/server/plugins/engine/outputFormatters/machine/v2.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/FileUploadPageController.d.ts +7 -1
- package/.server/server/plugins/engine/pageControllers/FileUploadPageController.js +56 -10
- package/.server/server/plugins/engine/pageControllers/FileUploadPageController.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/QuestionPageController.d.ts +1 -1
- package/.server/server/plugins/engine/pageControllers/QuestionPageController.js +7 -3
- package/.server/server/plugins/engine/pageControllers/QuestionPageController.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/RepeatPageController.js +3 -4
- package/.server/server/plugins/engine/pageControllers/RepeatPageController.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/SummaryPageController.js +10 -4
- package/.server/server/plugins/engine/pageControllers/SummaryPageController.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/helpers/pages.js +2 -1
- package/.server/server/plugins/engine/pageControllers/helpers/pages.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/helpers/submission.d.ts +35 -2
- package/.server/server/plugins/engine/pageControllers/helpers/submission.js +100 -3
- package/.server/server/plugins/engine/pageControllers/helpers/submission.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/validationOptions.d.ts +1 -1
- package/.server/server/plugins/engine/pageControllers/validationOptions.js +24 -3
- package/.server/server/plugins/engine/pageControllers/validationOptions.js.map +1 -1
- package/.server/server/plugins/engine/types/enums.d.ts +3 -3
- package/.server/server/plugins/engine/types/enums.js +5 -4
- package/.server/server/plugins/engine/types/enums.js.map +1 -1
- package/.server/server/plugins/engine/types/schema.js +10 -3
- package/.server/server/plugins/engine/types/schema.js.map +1 -1
- package/.server/server/plugins/engine/types.d.ts +18 -2
- package/.server/server/plugins/engine/types.js.map +1 -1
- package/.server/server/plugins/engine/unavailable-response.js +5 -2
- package/.server/server/plugins/engine/unavailable-response.js.map +1 -1
- package/.server/server/plugins/engine/views/components/_location-field-base.html +4 -2
- package/.server/server/plugins/engine/views/components/fileuploadfield.html +1 -1
- package/.server/server/plugins/engine/views/components/geospatialfield.html +1 -0
- package/.server/server/plugins/engine/views/components/multilinetextfield.html +12 -1
- package/.server/server/plugins/engine/views/components/osgridreffield.html +4 -1
- package/.server/server/plugins/engine/views/components/paymentfield.html +1 -1
- package/.server/server/plugins/engine/views/components/ukaddressfield.html +1 -1
- package/.server/server/plugins/engine/views/file-upload.html +1 -1
- package/.server/server/plugins/engine/views/partials/preview-banner.html +3 -1
- package/.server/server/plugins/engine/views/unavailable.html +14 -11
- package/.server/server/plugins/nunjucks/filters/applyUrlParam.d.ts +9 -0
- package/.server/server/plugins/nunjucks/filters/applyUrlParam.js +17 -0
- package/.server/server/plugins/nunjucks/filters/applyUrlParam.js.map +1 -0
- package/.server/server/plugins/nunjucks/filters/applyUrlParam.test.js +17 -0
- package/.server/server/plugins/nunjucks/filters/applyUrlParam.test.js.map +1 -0
- package/.server/server/plugins/nunjucks/filters/field.d.ts +1 -1
- package/.server/server/plugins/nunjucks/filters/index.d.ts +1 -0
- package/.server/server/plugins/nunjucks/filters/index.js +1 -0
- package/.server/server/plugins/nunjucks/filters/index.js.map +1 -1
- package/.server/server/plugins/payment/helper.d.ts +11 -1
- package/.server/server/plugins/payment/helper.js +18 -2
- package/.server/server/plugins/payment/helper.js.map +1 -1
- package/.server/server/plugins/payment/helper.test.js +2 -1
- package/.server/server/plugins/payment/helper.test.js.map +1 -1
- package/.server/server/plugins/payment/service.d.ts +2 -1
- package/.server/server/plugins/payment/service.js +5 -2
- package/.server/server/plugins/payment/service.js.map +1 -1
- package/.server/server/plugins/payment/service.test.js +7 -3
- package/.server/server/plugins/payment/service.test.js.map +1 -1
- package/.server/server/plugins/payment/types.d.ts +4 -0
- package/.server/server/plugins/payment/types.js +1 -0
- package/.server/server/plugins/payment/types.js.map +1 -1
- package/.server/server/plugins/postcode-lookup/models/index.d.ts +249 -3
- package/.server/server/plugins/postcode-lookup/models/index.js +87 -33
- package/.server/server/plugins/postcode-lookup/models/index.js.map +1 -1
- package/.server/server/plugins/postcode-lookup/routes/index.d.ts +15 -1
- package/.server/server/plugins/postcode-lookup/routes/index.js +47 -15
- package/.server/server/plugins/postcode-lookup/routes/index.js.map +1 -1
- package/.server/server/plugins/postcode-lookup/routes/index.test.js +84 -0
- package/.server/server/plugins/postcode-lookup/routes/index.test.js.map +1 -0
- package/.server/server/plugins/postcode-lookup/types.d.ts +12 -0
- package/.server/server/plugins/postcode-lookup/types.js +6 -1
- package/.server/server/plugins/postcode-lookup/types.js.map +1 -1
- package/.server/server/plugins/postcode-lookup/views/postcode-lookup-details.html +3 -3
- package/.server/server/utils/type-utils.d.ts +1 -2
- package/.server/server/utils/type-utils.js +0 -3
- package/.server/server/utils/type-utils.js.map +1 -1
- package/.server/server/utils/utils.d.ts +6 -0
- package/.server/server/utils/utils.js +18 -1
- package/.server/server/utils/utils.js.map +1 -1
- package/.server/server/utils/utils.test.js +21 -1
- package/.server/server/utils/utils.test.js.map +1 -1
- package/package.json +20 -5
- package/src/client/javascripts/file-upload.js +11 -3
- package/src/client/javascripts/geospatial-map.js +176 -81
- package/src/client/javascripts/govuk.js +2 -0
- package/src/client/javascripts/location-map.js +60 -4
- package/src/client/javascripts/map-constants.js +3 -0
- package/src/client/javascripts/map.js +47 -0
- package/src/client/javascripts/maps.js +5 -0
- package/src/client/javascripts/shared.js +1 -4
- package/src/client/javascripts/sssi-dataset.js +39 -41
- package/src/client/stylesheets/maps.scss +4 -0
- package/src/client/stylesheets/shared.scss +1 -5
- package/src/server/constants.js +2 -0
- package/src/server/plugins/engine/__stubs__/definitions.ts +155 -0
- package/src/server/plugins/engine/components/AutocompleteField.ts +13 -0
- package/src/server/plugins/engine/components/CheckboxesField.ts +38 -5
- package/src/server/plugins/engine/components/ComponentBase.ts +2 -0
- package/src/server/plugins/engine/components/ComponentCollection.ts +16 -11
- package/src/server/plugins/engine/components/DatePartsField.ts +20 -9
- package/src/server/plugins/engine/components/DeclarationField.ts +7 -6
- package/src/server/plugins/engine/components/EastingNorthingField.ts +185 -89
- package/src/server/plugins/engine/components/EmailAddressField.ts +2 -1
- package/src/server/plugins/engine/components/FileUploadField.ts +44 -3
- package/src/server/plugins/engine/components/FormComponent.ts +6 -5
- package/src/server/plugins/engine/components/GeospatialField.ts +47 -9
- package/src/server/plugins/engine/components/LatLongField.ts +128 -58
- package/src/server/plugins/engine/components/LocationFieldBase.ts +30 -7
- package/src/server/plugins/engine/components/LocationFieldHelpers.ts +28 -14
- package/src/server/plugins/engine/components/Markdown.ts +2 -3
- package/src/server/plugins/engine/components/MonthYearField.ts +20 -15
- package/src/server/plugins/engine/components/NationalGridFieldNumberField.ts +9 -3
- package/src/server/plugins/engine/components/NumberField.ts +21 -1
- package/src/server/plugins/engine/components/OsGridRefField.ts +22 -3
- package/src/server/plugins/engine/components/PaymentField.ts +15 -5
- package/src/server/plugins/engine/components/UkAddressField.ts +30 -7
- package/src/server/plugins/engine/components/YesNoField.ts +17 -9
- package/src/server/plugins/engine/components/helpers/components.ts +3 -3
- package/src/server/plugins/engine/components/helpers/geospatial.ts +84 -21
- package/src/server/plugins/engine/components/helpers/index.ts +19 -0
- package/src/server/plugins/engine/components/types.ts +1 -0
- package/src/server/plugins/engine/errors.ts +78 -0
- package/src/server/plugins/engine/form-availability.ts +8 -2
- package/src/server/plugins/engine/form-context.ts +4 -2
- package/src/server/plugins/engine/helpers.ts +52 -5
- package/src/server/plugins/engine/i18n/buildValidationMessages.ts +16 -8
- package/src/server/plugins/engine/i18n/createFormTranslator.ts +62 -11
- package/src/server/plugins/engine/i18n/extractBaseTranslations.ts +7 -1
- package/src/server/plugins/engine/i18n/form.ts +54 -0
- package/src/server/plugins/engine/i18n/languages.ts +19 -0
- package/src/server/plugins/engine/i18n/translations/cy.json +192 -9
- package/src/server/plugins/engine/i18n/translations/en-GB.json +125 -7
- package/src/server/plugins/engine/i18n/types.ts +3 -0
- package/src/server/plugins/engine/index.ts +7 -0
- package/src/server/plugins/engine/models/FormModel.ts +46 -23
- package/src/server/plugins/engine/models/SummaryViewModel.ts +6 -5
- package/src/server/plugins/engine/models/types.ts +31 -0
- package/src/server/plugins/engine/models/unavailable-view-model.ts +26 -5
- package/src/server/plugins/engine/outputFormatters/adapter/v1.ts +18 -7
- package/src/server/plugins/engine/outputFormatters/human/v1.ts +2 -1
- package/src/server/plugins/engine/outputFormatters/machine/v2.ts +3 -0
- package/src/server/plugins/engine/pageControllers/FileUploadPageController.ts +60 -9
- package/src/server/plugins/engine/pageControllers/QuestionPageController.ts +10 -5
- package/src/server/plugins/engine/pageControllers/RepeatPageController.ts +2 -2
- package/src/server/plugins/engine/pageControllers/SummaryPageController.ts +15 -4
- package/src/server/plugins/engine/pageControllers/helpers/pages.ts +2 -1
- package/src/server/plugins/engine/pageControllers/helpers/submission.ts +143 -4
- package/src/server/plugins/engine/pageControllers/validationOptions.ts +29 -4
- package/src/server/plugins/engine/types/enums.ts +4 -3
- package/src/server/plugins/engine/types/schema.ts +17 -4
- package/src/server/plugins/engine/types.ts +19 -1
- package/src/server/plugins/engine/unavailable-response.ts +6 -2
- package/src/server/plugins/engine/views/components/_location-field-base.html +4 -2
- package/src/server/plugins/engine/views/components/fileuploadfield.html +1 -1
- package/src/server/plugins/engine/views/components/geospatialfield.html +1 -0
- package/src/server/plugins/engine/views/components/multilinetextfield.html +12 -1
- package/src/server/plugins/engine/views/components/osgridreffield.html +4 -1
- package/src/server/plugins/engine/views/components/paymentfield.html +1 -1
- package/src/server/plugins/engine/views/components/ukaddressfield.html +1 -1
- package/src/server/plugins/engine/views/file-upload.html +1 -1
- package/src/server/plugins/engine/views/partials/preview-banner.html +3 -1
- package/src/server/plugins/engine/views/unavailable.html +14 -11
- package/src/server/plugins/nunjucks/filters/applyUrlParam.js +17 -0
- package/src/server/plugins/nunjucks/filters/index.js +1 -0
- package/src/server/plugins/payment/helper.js +22 -2
- package/src/server/plugins/payment/service.js +6 -2
- package/src/server/plugins/payment/types.js +1 -0
- package/src/server/plugins/postcode-lookup/models/index.js +75 -43
- package/src/server/plugins/postcode-lookup/routes/index.js +73 -16
- package/src/server/plugins/postcode-lookup/types.js +6 -1
- package/src/server/plugins/postcode-lookup/views/postcode-lookup-details.html +3 -3
- package/src/server/utils/type-utils.ts +1 -11
- package/src/server/utils/utils.js +19 -1
|
@@ -4,21 +4,47 @@ import createDatasetsPlugin from '@defra/interactive-map/plugins/datasets'
|
|
|
4
4
|
import createDrawPlugin from '@defra/interactive-map/plugins/draw-ml'
|
|
5
5
|
import { bbox } from '@turf/bbox'
|
|
6
6
|
|
|
7
|
+
import {
|
|
8
|
+
DEFAULT_LANG,
|
|
9
|
+
ENGLISH_LANG,
|
|
10
|
+
WELSH_LANG
|
|
11
|
+
} from './map-constants.js'
|
|
7
12
|
import {
|
|
8
13
|
EVENTS,
|
|
9
14
|
createMap,
|
|
10
15
|
defaultConfig,
|
|
11
16
|
getCentroidGridRef,
|
|
12
17
|
getCoordinateGridRef,
|
|
18
|
+
getMapCountryLayers,
|
|
13
19
|
getMapLayers
|
|
14
20
|
} from './map.js'
|
|
15
21
|
import sssiDataset from './sssi-dataset.js'
|
|
16
22
|
import { formatDelimtedList } from './utils.js'
|
|
23
|
+
import cy from '../../server/plugins/engine/i18n/translations/cy.json' with { type: 'json' }
|
|
24
|
+
import enGB from '../../server/plugins/engine/i18n/translations/en-GB.json' with { type: 'json' }
|
|
25
|
+
|
|
26
|
+
const englishTranslations = enGB.components.geospatialField.map
|
|
27
|
+
const welshTranslations = cy.components.geospatialField.map
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* @type {Record<LanguageCode, GeospatialLanguageTexts>}
|
|
31
|
+
*/
|
|
32
|
+
export const languageTexts = {
|
|
33
|
+
[ENGLISH_LANG]: englishTranslations,
|
|
34
|
+
[WELSH_LANG]: welshTranslations
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Get the map texts for the given language code
|
|
39
|
+
* @param {LanguageCode} lang - the lanugae code
|
|
40
|
+
*/
|
|
41
|
+
export function getTexts(lang = DEFAULT_LANG) {
|
|
42
|
+
return languageTexts[lang]
|
|
43
|
+
}
|
|
17
44
|
|
|
18
45
|
const helpPanelConfig = {
|
|
19
46
|
focus: false,
|
|
20
47
|
showLabel: true,
|
|
21
|
-
label: 'How to use this map',
|
|
22
48
|
mobile: {
|
|
23
49
|
slot: 'drawer',
|
|
24
50
|
open: true,
|
|
@@ -40,59 +66,79 @@ const helpPanelConfig = {
|
|
|
40
66
|
}
|
|
41
67
|
|
|
42
68
|
/**
|
|
69
|
+
* @param {GeospatialPanelTexts} texts
|
|
43
70
|
* @param {boolean} allowLine
|
|
44
71
|
* @param {boolean} allowShape
|
|
45
72
|
*/
|
|
46
|
-
function getLineOrShapeText(allowLine, allowShape) {
|
|
73
|
+
function getLineOrShapeText(texts, allowLine, allowShape) {
|
|
47
74
|
if (allowLine && allowShape) {
|
|
48
|
-
return
|
|
75
|
+
return texts.lineOrShapeText
|
|
49
76
|
}
|
|
50
77
|
if (allowLine) {
|
|
51
|
-
return
|
|
78
|
+
return texts.lineText
|
|
52
79
|
}
|
|
53
80
|
if (allowShape) {
|
|
54
|
-
return
|
|
81
|
+
return texts.shapeText
|
|
55
82
|
}
|
|
56
83
|
return ''
|
|
57
84
|
}
|
|
58
85
|
|
|
59
86
|
/**
|
|
87
|
+
* @param {GeospatialPanelTexts} texts
|
|
60
88
|
* @param {boolean} allowPoint
|
|
61
89
|
* @param {boolean} allowLine
|
|
62
90
|
* @param {boolean} allowShape
|
|
63
91
|
*/
|
|
64
|
-
function getAllowedTypesPhrase(allowPoint, allowLine, allowShape) {
|
|
92
|
+
function getAllowedTypesPhrase(texts, allowPoint, allowLine, allowShape) {
|
|
65
93
|
const items = []
|
|
66
94
|
|
|
67
95
|
if (allowPoint) {
|
|
68
|
-
items.push(
|
|
96
|
+
items.push(texts.typesPhrasePoint)
|
|
69
97
|
}
|
|
70
98
|
if (allowLine) {
|
|
71
|
-
items.push(
|
|
99
|
+
items.push(texts.typesPhraseLine)
|
|
72
100
|
}
|
|
73
101
|
if (allowShape) {
|
|
74
|
-
items.push(
|
|
102
|
+
items.push(texts.typesPhraseShape)
|
|
75
103
|
}
|
|
76
104
|
|
|
77
|
-
return formatDelimtedList(items, ',',
|
|
105
|
+
return formatDelimtedList(items, ',', texts.typesPhraseOr)
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Gets the type description for a given feature
|
|
110
|
+
* @param {Feature} feature - the geojson feature
|
|
111
|
+
* @param {GeometryTexts} typeDescriptions
|
|
112
|
+
*/
|
|
113
|
+
function getTypeDescription(feature, typeDescriptions) {
|
|
114
|
+
switch (feature.geometry.type) {
|
|
115
|
+
case 'Point':
|
|
116
|
+
return typeDescriptions.point
|
|
117
|
+
case 'LineString':
|
|
118
|
+
return typeDescriptions.line
|
|
119
|
+
case 'Polygon':
|
|
120
|
+
return typeDescriptions.polygon
|
|
121
|
+
}
|
|
78
122
|
}
|
|
79
123
|
|
|
80
124
|
/**
|
|
125
|
+
* @param {GeospatialPanelTexts} texts
|
|
81
126
|
* @param {boolean} allowPoint
|
|
82
127
|
* @param {boolean} allowLine
|
|
83
128
|
* @param {boolean} allowShape
|
|
84
129
|
*/
|
|
85
|
-
export function getHelpPanelHtml(allowPoint, allowLine, allowShape) {
|
|
86
|
-
const lineOrShapeText = getLineOrShapeText(allowLine, allowShape)
|
|
87
|
-
const
|
|
88
|
-
? `<li
|
|
130
|
+
export function getHelpPanelHtml(texts, allowPoint, allowLine, allowShape) {
|
|
131
|
+
const lineOrShapeText = getLineOrShapeText(texts, allowLine, allowShape)
|
|
132
|
+
const point3 = lineOrShapeText
|
|
133
|
+
? `<li>${texts.point3} ${lineOrShapeText}</li>`
|
|
89
134
|
: ''
|
|
90
135
|
const allowedTypesText = getAllowedTypesPhrase(
|
|
136
|
+
texts,
|
|
91
137
|
allowPoint,
|
|
92
138
|
allowLine,
|
|
93
139
|
allowShape
|
|
94
140
|
)
|
|
95
|
-
return `<p class="govuk-body-s govuk-!-margin-bottom-2"
|
|
141
|
+
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>`
|
|
96
142
|
}
|
|
97
143
|
|
|
98
144
|
const lineFeatureProperties = {
|
|
@@ -107,15 +153,6 @@ const polygonFeatureProperties = {
|
|
|
107
153
|
strokeWidth: 2
|
|
108
154
|
}
|
|
109
155
|
|
|
110
|
-
/**
|
|
111
|
-
* @type {Record<'Point' | 'LineString' | 'Polygon', string>}
|
|
112
|
-
*/
|
|
113
|
-
const typeDescriptions = {
|
|
114
|
-
Point: 'Point',
|
|
115
|
-
LineString: 'Line',
|
|
116
|
-
Polygon: 'Shape'
|
|
117
|
-
}
|
|
118
|
-
|
|
119
156
|
const POINT_SVG =
|
|
120
157
|
'<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" />'
|
|
121
158
|
const POLYGON_SVG =
|
|
@@ -174,43 +211,15 @@ export function processGeospatial(config, geospatial, index) {
|
|
|
174
211
|
const plugins = [drawPlugin]
|
|
175
212
|
const country = geospatial.dataset.country
|
|
176
213
|
const mapLayers = getMapLayers(geospatial.dataset.maplayers)
|
|
214
|
+
const datasets = getMapCountryLayers(config.apiPath, country)
|
|
177
215
|
|
|
178
|
-
if (
|
|
179
|
-
|
|
180
|
-
// and provide feedback to the user when they add features outside of the bounds.
|
|
181
|
-
const countriesDatasetPlugin = createDatasetsPlugin({
|
|
182
|
-
datasets: [
|
|
183
|
-
{
|
|
184
|
-
id: 'invalid-area',
|
|
185
|
-
label: 'Invalid areas',
|
|
186
|
-
geojson: `${config.apiPath}/maps/countries.geojson?omit=${country}`,
|
|
187
|
-
showInKey: false,
|
|
188
|
-
showInMenu: false,
|
|
189
|
-
style: {
|
|
190
|
-
stroke: 'gray',
|
|
191
|
-
strokeWidth: 1,
|
|
192
|
-
fill: 'rgba(211,211,211,0.8)'
|
|
193
|
-
}
|
|
194
|
-
},
|
|
195
|
-
{
|
|
196
|
-
id: 'valid-area',
|
|
197
|
-
label: 'Valid areas',
|
|
198
|
-
geojson: `${config.apiPath}/maps/countries.geojson?only=${country}`,
|
|
199
|
-
showInKey: false,
|
|
200
|
-
showInMenu: false,
|
|
201
|
-
style: {
|
|
202
|
-
stroke: 'rgba(0,112,60,1)',
|
|
203
|
-
strokeWidth: 1
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
]
|
|
207
|
-
})
|
|
208
|
-
|
|
209
|
-
plugins.push(countriesDatasetPlugin)
|
|
216
|
+
if (mapLayers.includes('sssi')) {
|
|
217
|
+
datasets.push(...sssiDataset)
|
|
210
218
|
}
|
|
211
219
|
|
|
212
|
-
if
|
|
213
|
-
|
|
220
|
+
// Create a map dataset plugin if there are any present
|
|
221
|
+
if (datasets.length) {
|
|
222
|
+
plugins.push(createDatasetsPlugin({ datasets }))
|
|
214
223
|
}
|
|
215
224
|
|
|
216
225
|
const initConfig = {
|
|
@@ -226,19 +235,30 @@ export function processGeospatial(config, geospatial, index) {
|
|
|
226
235
|
const options = {
|
|
227
236
|
geometryTypes
|
|
228
237
|
}
|
|
238
|
+
const lang = /** @type {LanguageCode} */ (
|
|
239
|
+
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
|
|
240
|
+
geospatial.dataset.lang || DEFAULT_LANG
|
|
241
|
+
)
|
|
229
242
|
const uiManager = getUIManager(
|
|
230
243
|
geojson,
|
|
231
244
|
map,
|
|
232
245
|
mapId,
|
|
233
246
|
listEl,
|
|
234
247
|
geospatialInput,
|
|
235
|
-
options
|
|
248
|
+
options,
|
|
249
|
+
lang
|
|
236
250
|
)
|
|
237
251
|
|
|
252
|
+
const languageManager = {
|
|
253
|
+
lang,
|
|
254
|
+
texts: getTexts(lang)
|
|
255
|
+
}
|
|
256
|
+
|
|
238
257
|
/**
|
|
239
258
|
* @type {Context}
|
|
240
259
|
*/
|
|
241
260
|
const context = {
|
|
261
|
+
languageManager,
|
|
242
262
|
map,
|
|
243
263
|
featuresManager,
|
|
244
264
|
activeFeatureManager,
|
|
@@ -278,15 +298,17 @@ export function addFeatureToMap(feature, drawPlugin, map) {
|
|
|
278
298
|
* @param {string} mapId - the ID of the map
|
|
279
299
|
* @param {boolean} [disabled] - render the list with disabled links
|
|
280
300
|
* @param {boolean} [readonly] - render the list in readonly mode
|
|
301
|
+
* @param {LanguageCode} [lang] - the language for the feature details
|
|
281
302
|
*/
|
|
282
303
|
export function createFeaturesHTML(
|
|
283
304
|
features,
|
|
284
305
|
mapId,
|
|
285
306
|
disabled = false,
|
|
286
|
-
readonly = false
|
|
307
|
+
readonly = false,
|
|
308
|
+
lang = DEFAULT_LANG
|
|
287
309
|
) {
|
|
288
310
|
return `<dl class="govuk-summary-list">
|
|
289
|
-
${features.map((feature, index) => createFeatureHTML(feature, index, mapId, disabled, readonly)).join('\n')}
|
|
311
|
+
${features.map((feature, index) => createFeatureHTML(feature, index, mapId, disabled, readonly, lang)).join('\n')}
|
|
290
312
|
</dl>`
|
|
291
313
|
}
|
|
292
314
|
|
|
@@ -306,14 +328,17 @@ export function focusFeature(feature, mapProvider) {
|
|
|
306
328
|
* @param {string} mapId - the ID of the map
|
|
307
329
|
* @param {boolean} [disabled] - render the list with disabled links
|
|
308
330
|
* @param {boolean} [readonly] - render the list item in readonly mode
|
|
331
|
+
* @param {LanguageCode} [lang] - the language for the feature details
|
|
309
332
|
*/
|
|
310
333
|
export function createFeatureHTML(
|
|
311
334
|
feature,
|
|
312
335
|
index,
|
|
313
336
|
mapId,
|
|
314
337
|
disabled = false,
|
|
315
|
-
readonly = false
|
|
338
|
+
readonly = false,
|
|
339
|
+
lang = DEFAULT_LANG
|
|
316
340
|
) {
|
|
341
|
+
const texts = getTexts(lang)
|
|
317
342
|
const flattened = feature.geometry.coordinates.flat(2)
|
|
318
343
|
|
|
319
344
|
const points = []
|
|
@@ -329,28 +354,28 @@ export function createFeatureHTML(
|
|
|
329
354
|
// Change action link
|
|
330
355
|
const changeAction = () => `<li class="govuk-summary-list__actions-list-item">
|
|
331
356
|
<a class="govuk-link govuk-link--no-visited-state ${disabled ? 'govuk-link--disabled' : ''}" href="#${mapId}" data-action="edit" data-id="${feature.id}"
|
|
332
|
-
data-type="${feature.geometry.type}"
|
|
357
|
+
data-type="${feature.geometry.type}">${texts.itemUpdateLink}<span class="govuk-visually-hidden"> ${texts.itemVisuallyHidden}</span></a>
|
|
333
358
|
</li>`
|
|
334
359
|
|
|
335
360
|
// Delete action link
|
|
336
361
|
const deleteAction = () => `<li class="govuk-summary-list__actions-list-item">
|
|
337
362
|
<a class="govuk-link govuk-link--no-visited-state ${disabled ? 'govuk-link--disabled' : ''}" href="#" data-action="delete" data-id="${feature.id}"
|
|
338
|
-
data-type="${feature.geometry.type}"
|
|
363
|
+
data-type="${feature.geometry.type}">${texts.itemDeleteLink}<span class="govuk-visually-hidden"> ${texts.itemVisuallyHidden}</span></a>
|
|
339
364
|
</li>`
|
|
340
365
|
|
|
341
366
|
// Focus action link
|
|
342
367
|
const focusAction = () => `<li class="govuk-summary-list__actions-list-item">
|
|
343
|
-
<a class="govuk-link govuk-link--no-visited-state" href="#${mapId}" data-action="focus" data-id="${feature.id}"
|
|
368
|
+
<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>
|
|
344
369
|
</li>`
|
|
345
370
|
|
|
346
371
|
const links = readonly ? focusAction() : `${changeAction()}${deleteAction()}`
|
|
347
|
-
|
|
348
372
|
const actions = `<ul class="govuk-summary-list__actions-list">${links}</ul>`
|
|
373
|
+
const typeDescription = getTypeDescription(feature, texts.typeDescriptions)
|
|
349
374
|
|
|
350
375
|
return `<div class="govuk-summary-list__row govuk-summary-list__row--no-border">
|
|
351
376
|
<dt class="govuk-summary-list__key">
|
|
352
377
|
<div class="govuk-form-group">
|
|
353
|
-
<label class="govuk-label govuk-label--s" ${readonly ? '' : `for="description_${index}"`}
|
|
378
|
+
<label class="govuk-label govuk-label--s" ${readonly ? '' : `for="description_${index}"`}>${texts.itemLabel1} ${index + 1} ${texts.itemLabel2}</label>
|
|
354
379
|
${description}
|
|
355
380
|
</div>
|
|
356
381
|
</dt>
|
|
@@ -361,24 +386,24 @@ export function createFeatureHTML(
|
|
|
361
386
|
<div class="govuk-summary-list__row">
|
|
362
387
|
<details class="govuk-details govuk-!-margin-bottom-2">
|
|
363
388
|
<summary class="govuk-details__summary">
|
|
364
|
-
<span class="govuk-details__summary-text"
|
|
389
|
+
<span class="govuk-details__summary-text">${texts.details.summary}</span>
|
|
365
390
|
</summary>
|
|
366
391
|
<div class="govuk-details__text">
|
|
367
392
|
<dl class="govuk-summary-list">
|
|
368
393
|
<div class="govuk-summary-list__row">
|
|
369
|
-
<dt class="govuk-summary-list__key"
|
|
370
|
-
<dd class="govuk-summary-list__value">${
|
|
394
|
+
<dt class="govuk-summary-list__key">${texts.details.type}</dt>
|
|
395
|
+
<dd class="govuk-summary-list__value">${typeDescription}</dd>
|
|
371
396
|
</div>
|
|
372
397
|
<div class="govuk-summary-list__row">
|
|
373
|
-
<dt class="govuk-summary-list__key"
|
|
398
|
+
<dt class="govuk-summary-list__key">${texts.details.centroidGridReference}</dt>
|
|
374
399
|
<dd class="govuk-summary-list__value">${feature.properties.centroidGridReference}</dd>
|
|
375
400
|
</div>
|
|
376
401
|
<div class="govuk-summary-list__row">
|
|
377
|
-
<dt class="govuk-summary-list__key"
|
|
402
|
+
<dt class="govuk-summary-list__key">${texts.details.firstPointGridReference}</dt>
|
|
378
403
|
<dd class="govuk-summary-list__value">${feature.properties.coordinateGridReference}</dd>
|
|
379
404
|
</div>
|
|
380
405
|
<div class="govuk-summary-list__row">
|
|
381
|
-
<dt class="govuk-summary-list__key"
|
|
406
|
+
<dt class="govuk-summary-list__key">${texts.details.detailedCoordinates}</dt>
|
|
382
407
|
<dd class="govuk-summary-list__value">
|
|
383
408
|
<ol class="govuk-list govuk-list--number">${coordinates}</ol>
|
|
384
409
|
</dd>
|
|
@@ -537,11 +562,24 @@ function getFeaturesManager(geojson) {
|
|
|
537
562
|
* @param {string} mapId - the ID of the map
|
|
538
563
|
* @param {HTMLDivElement} listEl - where to render the feature list
|
|
539
564
|
* @param {Function} renderValue - function that renders the features JSON into the hidden textarea
|
|
565
|
+
* @param {LanguageCode} [lang] - the language for the feature details
|
|
540
566
|
* @returns {RenderList}
|
|
541
567
|
*/
|
|
542
|
-
function getListRenderer(
|
|
568
|
+
function getListRenderer(
|
|
569
|
+
geojson,
|
|
570
|
+
mapId,
|
|
571
|
+
listEl,
|
|
572
|
+
renderValue,
|
|
573
|
+
lang = DEFAULT_LANG
|
|
574
|
+
) {
|
|
543
575
|
return function renderList(disabled = false) {
|
|
544
|
-
const html = createFeaturesHTML(
|
|
576
|
+
const html = createFeaturesHTML(
|
|
577
|
+
geojson.features,
|
|
578
|
+
mapId,
|
|
579
|
+
disabled,
|
|
580
|
+
false,
|
|
581
|
+
lang
|
|
582
|
+
)
|
|
545
583
|
|
|
546
584
|
listEl.innerHTML = html
|
|
547
585
|
|
|
@@ -569,6 +607,7 @@ function getValueRenderer(geojson, geospatialInput) {
|
|
|
569
607
|
* @param {HTMLDivElement} listEl - where to render the feature list
|
|
570
608
|
* @param {HTMLTextAreaElement} geospatialInput - the geospatial textarea
|
|
571
609
|
* @param { UIManagerOptions | undefined } options - extra options such as allowable geometry types
|
|
610
|
+
* @param {LanguageCode} [lang] - the language for the feature details
|
|
572
611
|
*/
|
|
573
612
|
export function getUIManager(
|
|
574
613
|
geojson,
|
|
@@ -576,7 +615,8 @@ export function getUIManager(
|
|
|
576
615
|
mapId,
|
|
577
616
|
listEl,
|
|
578
617
|
geospatialInput,
|
|
579
|
-
options
|
|
618
|
+
options,
|
|
619
|
+
lang = DEFAULT_LANG
|
|
580
620
|
) {
|
|
581
621
|
/**
|
|
582
622
|
* Get a CSV list of geometry types the user can create
|
|
@@ -621,7 +661,7 @@ export function getUIManager(
|
|
|
621
661
|
}
|
|
622
662
|
|
|
623
663
|
const renderValue = getValueRenderer(geojson, geospatialInput)
|
|
624
|
-
const renderList = getListRenderer(geojson, mapId, listEl, renderValue)
|
|
664
|
+
const renderList = getListRenderer(geojson, mapId, listEl, renderValue, lang)
|
|
625
665
|
|
|
626
666
|
/** @type {UIManager} */
|
|
627
667
|
return {
|
|
@@ -688,17 +728,19 @@ function onMapReadyFactory(context) {
|
|
|
688
728
|
const allowPoint = types.includes('point')
|
|
689
729
|
const allowLine = types.includes('line')
|
|
690
730
|
const allowShape = types.includes('shape')
|
|
731
|
+
const { texts } = context.languageManager
|
|
691
732
|
|
|
692
733
|
// Add info panel
|
|
693
734
|
map.addPanel('info', {
|
|
694
735
|
...helpPanelConfig,
|
|
695
|
-
|
|
736
|
+
label: texts.helpPanel.label,
|
|
737
|
+
html: getHelpPanelHtml(texts.helpPanel, allowPoint, allowLine, allowShape)
|
|
696
738
|
})
|
|
697
739
|
|
|
698
740
|
if (allowPoint) {
|
|
699
741
|
map.addButton('btnAddPoint', {
|
|
700
742
|
variant: 'tertiary',
|
|
701
|
-
label:
|
|
743
|
+
label: texts.buttons.point,
|
|
702
744
|
iconSvgContent: POINT_SVG,
|
|
703
745
|
onClick: () => {
|
|
704
746
|
resetActiveFeature()
|
|
@@ -715,7 +757,7 @@ function onMapReadyFactory(context) {
|
|
|
715
757
|
if (allowShape) {
|
|
716
758
|
map.addButton('btnAddPolygon', {
|
|
717
759
|
variant: 'tertiary',
|
|
718
|
-
label:
|
|
760
|
+
label: texts.buttons.polygon,
|
|
719
761
|
iconSvgContent: POLYGON_SVG,
|
|
720
762
|
onClick: () => {
|
|
721
763
|
resetActiveFeature()
|
|
@@ -732,7 +774,7 @@ function onMapReadyFactory(context) {
|
|
|
732
774
|
if (allowLine) {
|
|
733
775
|
map.addButton('btnAddLine', {
|
|
734
776
|
variant: 'tertiary',
|
|
735
|
-
label:
|
|
777
|
+
label: texts.buttons.line,
|
|
736
778
|
iconSvgContent: LINE_SVG,
|
|
737
779
|
onClick: () => {
|
|
738
780
|
resetActiveFeature()
|
|
@@ -1156,6 +1198,7 @@ function onListElKeydownFactory() {
|
|
|
1156
1198
|
* Renders the features into the list
|
|
1157
1199
|
* @callback RenderList
|
|
1158
1200
|
* @param {boolean} [disabled] - whether to render the list with disabled links
|
|
1201
|
+
* @param {LanguageCode} [lang] - the language for the feature details
|
|
1159
1202
|
* @returns {void}
|
|
1160
1203
|
*/
|
|
1161
1204
|
|
|
@@ -1210,8 +1253,59 @@ function onListElKeydownFactory() {
|
|
|
1210
1253
|
* @property {GetAllowableGeometryTypes} getAllowableGeometryTypes - function that returns the array of geometry types a user can create
|
|
1211
1254
|
*/
|
|
1212
1255
|
|
|
1256
|
+
/**
|
|
1257
|
+
* @typedef {object} GeometryTexts
|
|
1258
|
+
* @property {string} point - the label for a point feature in the list
|
|
1259
|
+
* @property {string} line - the label for a line string feature in the list
|
|
1260
|
+
* @property {string} polygon - the label for a polygon feature in the list
|
|
1261
|
+
*/
|
|
1262
|
+
|
|
1263
|
+
/**
|
|
1264
|
+
* @typedef {object} GeospatialPanelTexts
|
|
1265
|
+
* @property {string} label - the label for the info panel
|
|
1266
|
+
* @property {string} ledeIntro - the lede intro text for the info panel
|
|
1267
|
+
* @property {string} ledeOutro - the lede outro text for the info panel
|
|
1268
|
+
* @property {string} lineText - the label for the info panel line text
|
|
1269
|
+
* @property {string} shapeText - the label for the info panel shape text
|
|
1270
|
+
* @property {string} point1 - the text for bullet point 1 in the info panel
|
|
1271
|
+
* @property {string} point2 - the text for bullet point 2 in the info panel
|
|
1272
|
+
* @property {string} point3 - the text for bullet point 3 in the info panel
|
|
1273
|
+
* @property {string} point4 - the text for bullet point 4 in the info panel
|
|
1274
|
+
* @property {string} lineOrShapeText - the label for the info panel line or shape text
|
|
1275
|
+
* @property {string} typesPhrasePoint - the label for the info panel types phrase point
|
|
1276
|
+
* @property {string} typesPhraseLine - the label for the info panel types phrase line
|
|
1277
|
+
* @property {string} typesPhraseShape - the label for the info panel types phrase shape
|
|
1278
|
+
* @property {string} typesPhraseOr - the label for the info panel types phrase "or"
|
|
1279
|
+
*/
|
|
1280
|
+
|
|
1281
|
+
/**
|
|
1282
|
+
* @typedef {object} GeospatialLanguageTexts
|
|
1283
|
+
* @property {GeometryTexts} typeDescriptions - the descriptions of the geometry types
|
|
1284
|
+
* @property {GeospatialPanelTexts} helpPanel - texts for the info panel
|
|
1285
|
+
* @property {GeometryTexts} buttons - the labels for the action buttons
|
|
1286
|
+
* @property {string} itemLabel1 - the first part of the label for a feature in the list
|
|
1287
|
+
* @property {string} itemLabel2 - the second part of the label for a feature in the list
|
|
1288
|
+
* @property {string} itemUpdateLink - the label for the "update" link for a feature in the list
|
|
1289
|
+
* @property {string} itemDeleteLink - the label for the "delete" link for a feature in the list
|
|
1290
|
+
* @property {string} itemFocusLink - the label for the "focus" link for a feature in the list
|
|
1291
|
+
* @property {string} itemVisuallyHidden - visually hidden text to add context to action links
|
|
1292
|
+
* @property {object} details - labels for the details section of a feature in the list
|
|
1293
|
+
* @property {string} details.summary - label for the summary of a feature in the list
|
|
1294
|
+
* @property {string} details.type - label for the type of a feature in the list
|
|
1295
|
+
* @property {string} details.centroidGridReference - label for the centroid grid reference of a feature in the list
|
|
1296
|
+
* @property {string} details.firstPointGridReference - label for the first point grid reference of a feature in the list
|
|
1297
|
+
* @property {string} details.detailedCoordinates - label for the detailed coordinates of a feature in the list
|
|
1298
|
+
*/
|
|
1299
|
+
|
|
1300
|
+
/**
|
|
1301
|
+
* @typedef {object} LanguageManager
|
|
1302
|
+
* @property {LanguageCode} lang - the language for the interactive map
|
|
1303
|
+
* @property {GeospatialLanguageTexts} texts - the descriptions of the geometry types
|
|
1304
|
+
*/
|
|
1305
|
+
|
|
1213
1306
|
/**
|
|
1214
1307
|
* @typedef {object} Context
|
|
1308
|
+
* @property {LanguageManager} languageManager - the language manager for the interactive map
|
|
1215
1309
|
* @property {InteractiveMap} map - the interactive map
|
|
1216
1310
|
* @property {MapLibreMap} [mapProvider] - the interactive map provider
|
|
1217
1311
|
* @property {FeaturesManager} featuresManager - the features manager
|
|
@@ -1222,5 +1316,6 @@ function onListElKeydownFactory() {
|
|
|
1222
1316
|
*/
|
|
1223
1317
|
|
|
1224
1318
|
/**
|
|
1319
|
+
* @import { LanguageCode } from './map.js'
|
|
1225
1320
|
* @import { MapLibreMap, UIManagerOptions } from './map.js'
|
|
1226
1321
|
*/
|
|
@@ -3,6 +3,7 @@ import {
|
|
|
3
3
|
CharacterCount,
|
|
4
4
|
Checkboxes,
|
|
5
5
|
ErrorSummary,
|
|
6
|
+
FileUpload,
|
|
6
7
|
Header,
|
|
7
8
|
NotificationBanner,
|
|
8
9
|
Radios,
|
|
@@ -16,6 +17,7 @@ export function initAllGovuk() {
|
|
|
16
17
|
createAll(Checkboxes)
|
|
17
18
|
createAll(ErrorSummary)
|
|
18
19
|
createAll(Header)
|
|
20
|
+
createAll(FileUpload)
|
|
19
21
|
createAll(NotificationBanner)
|
|
20
22
|
createAll(Radios)
|
|
21
23
|
createAll(SkipLink)
|
|
@@ -1,26 +1,53 @@
|
|
|
1
1
|
// @ts-expect-error - no types
|
|
2
2
|
import createDatasetsPlugin from '@defra/interactive-map/plugins/datasets'
|
|
3
3
|
|
|
4
|
+
import {
|
|
5
|
+
DEFAULT_LANG,
|
|
6
|
+
ENGLISH_LANG,
|
|
7
|
+
WELSH_LANG
|
|
8
|
+
} from './map-constants.js'
|
|
4
9
|
import {
|
|
5
10
|
EVENTS,
|
|
6
11
|
centerMap,
|
|
7
12
|
createMap,
|
|
8
13
|
defaultConfig,
|
|
9
14
|
eastingNorthingToLatLong,
|
|
15
|
+
getMapCountryLayers,
|
|
10
16
|
getMapLayers,
|
|
11
17
|
latLongToEastingNorthing,
|
|
12
18
|
latLongToOsGridRef,
|
|
13
19
|
osGridRefToLatLong
|
|
14
20
|
} from './map.js'
|
|
15
21
|
import sssiDataset from './sssi-dataset.js'
|
|
22
|
+
import cy from '../../server/plugins/engine/i18n/translations/cy.json' with { type: 'json' }
|
|
23
|
+
import enGB from '../../server/plugins/engine/i18n/translations/en-GB.json' with { type: 'json' }
|
|
24
|
+
|
|
25
|
+
const englishTranslations = enGB.components.locationFieldBase.map
|
|
26
|
+
const welshTranslations = cy.components.locationFieldBase.map
|
|
16
27
|
|
|
17
28
|
const LOCATION_FIELD_SELECTOR = 'input.govuk-input'
|
|
18
29
|
|
|
30
|
+
/**
|
|
31
|
+
* @type {Record<LanguageCode, LocationLanguageTexts>}
|
|
32
|
+
*/
|
|
33
|
+
export const languageTexts = {
|
|
34
|
+
[ENGLISH_LANG]: englishTranslations,
|
|
35
|
+
[WELSH_LANG]: welshTranslations
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Get the map texts for the given language code
|
|
40
|
+
* @param {LanguageCode} lang - the lanugae code
|
|
41
|
+
*/
|
|
42
|
+
export function getTexts(lang = DEFAULT_LANG) {
|
|
43
|
+
return languageTexts[lang]
|
|
44
|
+
}
|
|
45
|
+
|
|
19
46
|
/**
|
|
20
47
|
* Gets initial map config for a location field
|
|
21
48
|
* @param {HTMLDivElement} locationField - the location field element
|
|
22
49
|
*/
|
|
23
|
-
function getInitMapConfig(locationField) {
|
|
50
|
+
export function getInitMapConfig(locationField) {
|
|
24
51
|
const locationType = locationField.dataset.locationtype
|
|
25
52
|
|
|
26
53
|
switch (locationType) {
|
|
@@ -423,12 +450,24 @@ export function processLocation(config, location, index) {
|
|
|
423
450
|
|
|
424
451
|
locationInputs.after(mapContainer)
|
|
425
452
|
|
|
453
|
+
const country = location.dataset.country
|
|
426
454
|
const mapLayers = getMapLayers(location.dataset.maplayers)
|
|
455
|
+
const datasets = getMapCountryLayers(config.apiPath, country)
|
|
427
456
|
|
|
428
457
|
if (mapLayers.includes('sssi')) {
|
|
429
|
-
|
|
458
|
+
datasets.push(...sssiDataset)
|
|
430
459
|
}
|
|
431
460
|
|
|
461
|
+
// Create a map dataset plugin if there are any present
|
|
462
|
+
if (datasets.length) {
|
|
463
|
+
initConfig.plugins = [createDatasetsPlugin({ datasets })]
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
const lang = /** @type {LanguageCode} */ (
|
|
467
|
+
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
|
|
468
|
+
location.dataset.lang || DEFAULT_LANG
|
|
469
|
+
)
|
|
470
|
+
|
|
432
471
|
const { map, interactPlugin } = createMap(mapId, initConfig, config)
|
|
433
472
|
|
|
434
473
|
map.on(
|
|
@@ -453,11 +492,13 @@ export function processLocation(config, location, index) {
|
|
|
453
492
|
throw new Error('Not implemented')
|
|
454
493
|
}
|
|
455
494
|
|
|
495
|
+
const texts = getTexts(lang)
|
|
496
|
+
|
|
456
497
|
// Add info panel
|
|
457
498
|
map.addPanel('info', {
|
|
458
499
|
focus: false,
|
|
459
500
|
showLabel: true,
|
|
460
|
-
label:
|
|
501
|
+
label: texts.helpPanel.label,
|
|
461
502
|
mobile: {
|
|
462
503
|
slot: 'drawer',
|
|
463
504
|
open: true,
|
|
@@ -476,7 +517,7 @@ export function processLocation(config, location, index) {
|
|
|
476
517
|
dismissible: true,
|
|
477
518
|
modal: false
|
|
478
519
|
},
|
|
479
|
-
html:
|
|
520
|
+
html: `<ul><li>${texts.helpPanel.point1}</li><li>${texts.helpPanel.point2}</li><li>${texts.helpPanel.point3}</li><li>${texts.helpPanel.point4}</li></ul>`
|
|
480
521
|
})
|
|
481
522
|
|
|
482
523
|
// Enable the interact plugin
|
|
@@ -486,5 +527,20 @@ export function processLocation(config, location, index) {
|
|
|
486
527
|
}
|
|
487
528
|
|
|
488
529
|
/**
|
|
530
|
+
* @typedef {object} LocationPanelTexts
|
|
531
|
+
* @property {string} label - the label for the info panel
|
|
532
|
+
* @property {string} point1 - the text for bullet point 1 in the info panel
|
|
533
|
+
* @property {string} point2 - the text for bullet point 2 in the info panel
|
|
534
|
+
* @property {string} point3 - the text for bullet point 3 in the info panel
|
|
535
|
+
* @property {string} point4 - the text for bullet point 4 in the info panel
|
|
536
|
+
*/
|
|
537
|
+
|
|
538
|
+
/**
|
|
539
|
+
* @typedef {object} LocationLanguageTexts
|
|
540
|
+
* @property {LocationPanelTexts} helpPanel - texts for the info panel
|
|
541
|
+
*/
|
|
542
|
+
|
|
543
|
+
/**
|
|
544
|
+
* @import { LanguageCode } from './map.js'
|
|
489
545
|
* @import { InteractiveMap, InteractiveMapInitConfig, MapCenter, MapLibreMap, MapsEnvironmentConfig } from './map.js'
|
|
490
546
|
*/
|