@defra/forms-engine-plugin 5.0.0-alpha.3 → 5.0.0-alpha.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.public/37c964ca545c240f010a.mjs +2 -0
- package/.public/37c964ca545c240f010a.mjs.LICENSE.txt +4 -0
- package/.public/assets-manifest.json +3 -0
- 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 +9 -0
- package/.public/javascripts/shared.min.js.map +1 -1
- package/.public/javascripts/vendor/@defra.min.js +1 -1
- package/.public/javascripts/vendor/@defra.min.js.map +1 -1
- package/.public/javascripts/vendor/maplibre-gl.min.js +1 -1
- package/.public/javascripts/vendor/maplibre-gl.min.js.LICENSE.txt +3 -3
- package/.public/javascripts/vendor/maplibre-gl.min.js.map +1 -1
- package/.public/stylesheets/application.min.css +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 +159 -5
- package/.server/client/javascripts/geospatial-map.js +161 -81
- package/.server/client/javascripts/geospatial-map.js.map +1 -1
- package/.server/client/javascripts/geospatial-map.test.js +152 -0
- package/.server/client/javascripts/geospatial-map.test.js.map +1 -0
- 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 +55 -6
- 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 +17 -4
- package/.server/client/javascripts/map.js +59 -6
- 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/forms/components.json +8 -0
- package/.server/server/forms/register-as-a-unicorn-breeder.yaml +4 -0
- 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 +8 -3
- package/.server/server/plugins/engine/components/AutocompleteField.js +17 -0
- package/.server/server/plugins/engine/components/AutocompleteField.js.map +1 -1
- package/.server/server/plugins/engine/components/CheckboxesField.d.ts +23 -2
- 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 +2 -1
- 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 +12 -7
- 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 +6 -3
- 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 +23 -2
- 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 +3 -2
- package/.server/server/plugins/engine/components/ListFormComponent.js.map +1 -1
- package/.server/server/plugins/engine/components/LocationFieldBase.d.ts +8 -2
- package/.server/server/plugins/engine/components/LocationFieldBase.js +31 -7
- 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 +22 -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 +2 -0
- package/.server/server/plugins/engine/components/PaymentField.js +9 -5
- 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/TrackingField.d.ts +21 -0
- package/.server/server/plugins/engine/components/TrackingField.js +46 -0
- package/.server/server/plugins/engine/components/TrackingField.js.map +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 +3 -2
- package/.server/server/plugins/engine/components/YesNoField.js +22 -8
- package/.server/server/plugins/engine/components/YesNoField.js.map +1 -1
- package/.server/server/plugins/engine/components/helpers/components.d.ts +1 -1
- package/.server/server/plugins/engine/components/helpers/components.js +6 -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 +58 -17
- package/.server/server/plugins/engine/components/helpers/geospatial.js.map +1 -1
- package/.server/server/plugins/engine/components/helpers/index.d.ts +21 -1
- package/.server/server/plugins/engine/components/helpers/index.js +45 -1
- package/.server/server/plugins/engine/components/helpers/index.js.map +1 -1
- package/.server/server/plugins/engine/components/index.d.ts +1 -0
- package/.server/server/plugins/engine/components/index.js +1 -0
- package/.server/server/plugins/engine/components/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 +23 -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 +27 -5
- 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 +176 -7
- package/.server/server/plugins/engine/i18n/translations/en-GB.json +110 -6
- package/.server/server/plugins/engine/i18n/types.d.ts +2 -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/options.js +2 -1
- package/.server/server/plugins/engine/options.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 +2 -2
- 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/plugin.js +3 -0
- package/.server/server/plugins/engine/plugin.js.map +1 -1
- package/.server/server/plugins/engine/referenceNumbers.d.ts +1 -0
- package/.server/server/plugins/engine/referenceNumbers.js +1 -0
- package/.server/server/plugins/engine/referenceNumbers.js.map +1 -1
- package/.server/server/plugins/engine/routes/index.js +9 -4
- package/.server/server/plugins/engine/routes/index.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 +15 -4
- package/.server/server/plugins/engine/types/schema.js.map +1 -1
- package/.server/server/plugins/engine/types.d.ts +24 -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/osgridreffield.html +4 -1
- package/.server/server/plugins/engine/views/components/trackingfield.html +3 -0
- 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/summary.html +1 -0
- package/.server/server/plugins/engine/views/unavailable.html +14 -11
- package/.server/server/plugins/map/routes/index.d.ts +4 -0
- package/.server/server/plugins/map/routes/index.js +12 -4
- package/.server/server/plugins/map/routes/index.js.map +1 -1
- package/.server/server/plugins/map/routes/index.test.js +7 -0
- package/.server/server/plugins/map/routes/index.test.js.map +1 -0
- package/.server/server/plugins/map/routes/vts/README.md +38 -0
- package/.server/server/plugins/map/routes/vts/countries-5dp.geojson +4 -0
- package/.server/server/plugins/map/routes/vts/countries.geojson +10 -39283
- package/.server/server/plugins/map/types.d.ts +24 -2
- package/.server/server/plugins/map/types.js +9 -2
- package/.server/server/plugins/map/types.js.map +1 -1
- package/.server/server/plugins/nunjucks/enviroment.test.js +11 -4
- package/.server/server/plugins/nunjucks/enviroment.test.js.map +1 -1
- 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 +103 -36
- 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 +64 -18
- 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/.server/typings/geodesy/index.d.js +2 -0
- package/.server/typings/geodesy/index.d.js.map +1 -0
- package/.server/typings/hapi/index.d.js.map +1 -1
- package/package.json +24 -9
- package/src/client/javascripts/file-upload.js +11 -3
- package/src/client/javascripts/geospatial-map.js +181 -86
- package/src/client/javascripts/govuk.js +2 -0
- package/src/client/javascripts/location-map.js +62 -6
- package/src/client/javascripts/map-constants.js +3 -0
- package/src/client/javascripts/map.js +66 -9
- 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/forms/components.json +8 -0
- package/src/server/forms/register-as-a-unicorn-breeder.yaml +4 -0
- package/src/server/plugins/engine/__stubs__/definitions.ts +155 -0
- package/src/server/plugins/engine/components/AutocompleteField.ts +20 -0
- package/src/server/plugins/engine/components/CheckboxesField.ts +41 -8
- package/src/server/plugins/engine/components/ComponentBase.ts +6 -4
- package/src/server/plugins/engine/components/ComponentCollection.ts +17 -15
- package/src/server/plugins/engine/components/DatePartsField.ts +20 -9
- package/src/server/plugins/engine/components/DeclarationField.ts +10 -10
- 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 +46 -5
- 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/ListFormComponent.ts +4 -4
- package/src/server/plugins/engine/components/LocationFieldBase.ts +41 -8
- 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 +24 -0
- package/src/server/plugins/engine/components/OsGridRefField.ts +22 -3
- package/src/server/plugins/engine/components/PaymentField.ts +9 -4
- package/src/server/plugins/engine/components/TrackingField.ts +64 -0
- package/src/server/plugins/engine/components/UkAddressField.ts +30 -7
- package/src/server/plugins/engine/components/YesNoField.ts +27 -9
- package/src/server/plugins/engine/components/helpers/components.ts +8 -3
- package/src/server/plugins/engine/components/helpers/geospatial.ts +87 -24
- package/src/server/plugins/engine/components/helpers/index.ts +64 -1
- package/src/server/plugins/engine/components/index.ts +1 -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 +43 -12
- 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 +176 -7
- package/src/server/plugins/engine/i18n/translations/en-GB.json +110 -6
- package/src/server/plugins/engine/i18n/types.ts +2 -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/options.js +2 -1
- 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 +2 -2
- 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/plugin.ts +6 -0
- package/src/server/plugins/engine/referenceNumbers.ts +2 -0
- package/src/server/plugins/engine/routes/index.ts +9 -3
- package/src/server/plugins/engine/types/enums.ts +4 -3
- package/src/server/plugins/engine/types/schema.ts +22 -5
- package/src/server/plugins/engine/types.ts +28 -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/osgridreffield.html +4 -1
- package/src/server/plugins/engine/views/components/trackingfield.html +3 -0
- 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/summary.html +1 -0
- package/src/server/plugins/engine/views/unavailable.html +14 -11
- package/src/server/plugins/map/routes/index.js +29 -4
- package/src/server/plugins/map/routes/vts/README.md +38 -0
- package/src/server/plugins/map/routes/vts/countries-5dp.geojson +4 -0
- package/src/server/plugins/map/routes/vts/countries.geojson +10 -39283
- package/src/server/plugins/map/types.js +9 -2
- 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 +91 -46
- package/src/server/plugins/postcode-lookup/routes/index.js +96 -24
- 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
- package/src/typings/geodesy/index.d.ts +18 -0
- package/src/typings/hapi/index.d.ts +2 -0
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
* @property {string} reference - Unique reference for the payment
|
|
19
19
|
* @property {string} description - Human-readable description of the payment
|
|
20
20
|
* @property {string} return_url - URL to redirect the user to after payment
|
|
21
|
+
* @property {string} language - the desired language for translations
|
|
21
22
|
* @property {boolean} [delayed_capture] - Whether to delay capturing the payment
|
|
22
23
|
* @property {{ formId: string, slug: string }} [metadata] - Additional metadata for the payment
|
|
23
24
|
* @property {string} [email] - Email to prepopulate on GOV.UK Pay (max 254 chars)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../../../src/server/plugins/payment/types.js"],"sourcesContent":["/**\n * @typedef {object} PaymentResponseState\n * @property {'created' | 'started' | 'submitted' | 'capturable' | 'success' | 'failed' | 'cancelled' | 'error'} status - Current status of the payment\n * @property {boolean} finished - Whether the payment process has completed\n * @property {string} [message] - Human-readable message about the payment state\n * @property {string} [code] - Error or status code for the payment state\n */\n\n/**\n * @typedef {object} PaymentLink\n * @property {string} href - URL of the linked resource\n * @property {string} method - HTTP method to use for the link\n */\n\n/**\n * @typedef {object} CreatePaymentRequest\n * @property {number} amount - Payment amount in pence\n * @property {string} reference - Unique reference for the payment\n * @property {string} description - Human-readable description of the payment\n * @property {string} return_url - URL to redirect the user to after payment\n * @property {boolean} [delayed_capture] - Whether to delay capturing the payment\n * @property {{ formId: string, slug: string }} [metadata] - Additional metadata for the payment\n * @property {string} [email] - Email to prepopulate on GOV.UK Pay (max 254 chars)\n */\n\n/**\n * @typedef {object} CreatePaymentResponse\n * @property {string} payment_id - Unique identifier for the created payment\n * @property {PaymentResponseState} state - Current state of the payment\n * @property {{ next_url: PaymentLink }} _links - HATEOAS links for the payment\n */\n\n/**\n * Base response from GOV.UK Pay GET /v1/payments/{PAYMENT_ID} endpoint\n * @typedef {object} GetPaymentResponseBase\n * @property {PaymentResponseState} state - Current state of the payment\n * @property {{ self: PaymentLink, next_url?: PaymentLink }} _links - HATEOAS links for the payment\n * @property {string} [email] - The paying user's email address\n */\n\n/**\n * Response from GOV.UK Pay GET /v1/payments/{PAYMENT_ID} endpoint - not underscore in property name\n * @typedef {object} GetPaymentApiResponsePaymentProp\n * @property {string} payment_id - Unique identifier for the payment\n * @property {number} amount - amount of the payment\n */\n\n/**\n * Response from GOV.UK Pay GET /v1/payments/{PAYMENT_ID} endpoint\n * @typedef {GetPaymentResponseBase & GetPaymentApiResponsePaymentProp} GetPaymentApiResponse\n */\n\n/**\n * Response returned from getPaymentStatus - subtley different from GetPaymentApiResponse\n * @typedef {object} GetPaymentResponsePaymentProp\n * @property {string} paymentId - Unique identifier for the payment - note no underscore in property name\n * @property {number} amount - amount of the payment\n */\n\n/**\n * Response returned from getPaymentStatus - subtley different from GetPaymentApiResponse\n * @typedef {GetPaymentResponseBase & GetPaymentResponsePaymentProp} GetPaymentResponse\n */\n\n/**\n * Payment session data stored when dispatching to GOV.UK Pay\n * @typedef {object} PaymentSessionData\n * @property {string} uuid - unique identifier for this payment attempt\n * @property {string} formId - id of the form\n * @property {string} reference - form reference number\n * @property {number} amount - amount in pounds\n * @property {string} description - payment description\n * @property {string} paymentId - GOV.UK Pay payment ID\n * @property {string} componentName - name of the PaymentField component\n * @property {string} returnUrl - URL to redirect to after successful payment\n * @property {string} failureUrl - URL to redirect to after failed/cancelled payment\n * @property {boolean} isLivePayment - whether the payment is using live API key\n */\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../../src/server/plugins/payment/types.js"],"sourcesContent":["/**\n * @typedef {object} PaymentResponseState\n * @property {'created' | 'started' | 'submitted' | 'capturable' | 'success' | 'failed' | 'cancelled' | 'error'} status - Current status of the payment\n * @property {boolean} finished - Whether the payment process has completed\n * @property {string} [message] - Human-readable message about the payment state\n * @property {string} [code] - Error or status code for the payment state\n */\n\n/**\n * @typedef {object} PaymentLink\n * @property {string} href - URL of the linked resource\n * @property {string} method - HTTP method to use for the link\n */\n\n/**\n * @typedef {object} CreatePaymentRequest\n * @property {number} amount - Payment amount in pence\n * @property {string} reference - Unique reference for the payment\n * @property {string} description - Human-readable description of the payment\n * @property {string} return_url - URL to redirect the user to after payment\n * @property {string} language - the desired language for translations\n * @property {boolean} [delayed_capture] - Whether to delay capturing the payment\n * @property {{ formId: string, slug: string }} [metadata] - Additional metadata for the payment\n * @property {string} [email] - Email to prepopulate on GOV.UK Pay (max 254 chars)\n */\n\n/**\n * @typedef {object} CreatePaymentResponse\n * @property {string} payment_id - Unique identifier for the created payment\n * @property {PaymentResponseState} state - Current state of the payment\n * @property {{ next_url: PaymentLink }} _links - HATEOAS links for the payment\n */\n\n/**\n * Base response from GOV.UK Pay GET /v1/payments/{PAYMENT_ID} endpoint\n * @typedef {object} GetPaymentResponseBase\n * @property {PaymentResponseState} state - Current state of the payment\n * @property {{ self: PaymentLink, next_url?: PaymentLink }} _links - HATEOAS links for the payment\n * @property {string} [email] - The paying user's email address\n */\n\n/**\n * Response from GOV.UK Pay GET /v1/payments/{PAYMENT_ID} endpoint - not underscore in property name\n * @typedef {object} GetPaymentApiResponsePaymentProp\n * @property {string} payment_id - Unique identifier for the payment\n * @property {number} amount - amount of the payment\n */\n\n/**\n * Response from GOV.UK Pay GET /v1/payments/{PAYMENT_ID} endpoint\n * @typedef {GetPaymentResponseBase & GetPaymentApiResponsePaymentProp} GetPaymentApiResponse\n */\n\n/**\n * Response returned from getPaymentStatus - subtley different from GetPaymentApiResponse\n * @typedef {object} GetPaymentResponsePaymentProp\n * @property {string} paymentId - Unique identifier for the payment - note no underscore in property name\n * @property {number} amount - amount of the payment\n */\n\n/**\n * Response returned from getPaymentStatus - subtley different from GetPaymentApiResponse\n * @typedef {GetPaymentResponseBase & GetPaymentResponsePaymentProp} GetPaymentResponse\n */\n\n/**\n * Payment session data stored when dispatching to GOV.UK Pay\n * @typedef {object} PaymentSessionData\n * @property {string} uuid - unique identifier for this payment attempt\n * @property {string} formId - id of the form\n * @property {string} reference - form reference number\n * @property {number} amount - amount in pounds\n * @property {string} description - payment description\n * @property {string} paymentId - GOV.UK Pay payment ID\n * @property {string} componentName - name of the PaymentField component\n * @property {string} returnUrl - URL to redirect to after successful payment\n * @property {string} failureUrl - URL to redirect to after failed/cancelled payment\n * @property {boolean} isLivePayment - whether the payment is using live API key\n */\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","ignoreList":[]}
|
|
@@ -19,17 +19,86 @@ export function createManualPayloadSchema(language?: string): Joi.ObjectSchema<P
|
|
|
19
19
|
/**
|
|
20
20
|
* The postcode lookup details form view model
|
|
21
21
|
* @param {PostcodeLookupSessionData} data
|
|
22
|
+
* @param {Translator} translator
|
|
22
23
|
* @param {PostcodeLookupDetailsData} [payload]
|
|
23
24
|
* @param {Error} [err]
|
|
24
25
|
*/
|
|
25
|
-
export function detailsViewModel(data: PostcodeLookupSessionData, payload?: PostcodeLookupDetailsData, err?: Error): {
|
|
26
|
+
export function detailsViewModel(data: PostcodeLookupSessionData, translator: Translator, payload?: PostcodeLookupDetailsData, err?: Error): {
|
|
27
|
+
languages: {
|
|
28
|
+
name: string;
|
|
29
|
+
code: string;
|
|
30
|
+
}[];
|
|
26
31
|
step: string;
|
|
27
32
|
showTitle: boolean;
|
|
28
33
|
name: string;
|
|
29
34
|
serviceUrl: string;
|
|
30
35
|
pageTitle: string;
|
|
36
|
+
hint: "" | {
|
|
37
|
+
text: string;
|
|
38
|
+
} | undefined;
|
|
39
|
+
backLink: {
|
|
40
|
+
href: string;
|
|
41
|
+
text: string;
|
|
42
|
+
};
|
|
43
|
+
errors: {
|
|
44
|
+
text: string;
|
|
45
|
+
href: string;
|
|
46
|
+
}[] | undefined;
|
|
47
|
+
fields: {
|
|
48
|
+
postcodeQuery: {
|
|
49
|
+
id: string;
|
|
50
|
+
name: string;
|
|
51
|
+
label: {
|
|
52
|
+
text: string;
|
|
53
|
+
};
|
|
54
|
+
hint: {
|
|
55
|
+
text: string;
|
|
56
|
+
};
|
|
57
|
+
value: string | undefined;
|
|
58
|
+
errorMessage: {
|
|
59
|
+
text: string;
|
|
60
|
+
} | undefined;
|
|
61
|
+
};
|
|
62
|
+
buildingNameQuery: {
|
|
63
|
+
id: string;
|
|
64
|
+
name: string;
|
|
65
|
+
label: {
|
|
66
|
+
text: string;
|
|
67
|
+
};
|
|
68
|
+
hint: {
|
|
69
|
+
text: string;
|
|
70
|
+
};
|
|
71
|
+
value: string | undefined;
|
|
72
|
+
errorMessage: {
|
|
73
|
+
text: string;
|
|
74
|
+
} | undefined;
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
buttons: {
|
|
78
|
+
continueButton: {
|
|
79
|
+
text: string;
|
|
80
|
+
classes: string;
|
|
81
|
+
};
|
|
82
|
+
manualLink: {
|
|
83
|
+
text: string;
|
|
84
|
+
href: string;
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
t: (key: string, opts?: Record<string, unknown>) => string;
|
|
88
|
+
language: string;
|
|
89
|
+
} | {
|
|
90
|
+
languages?: undefined;
|
|
91
|
+
step: string;
|
|
92
|
+
showTitle: boolean;
|
|
93
|
+
name: string;
|
|
94
|
+
serviceUrl: string;
|
|
95
|
+
pageTitle: string;
|
|
96
|
+
hint: "" | {
|
|
97
|
+
text: string;
|
|
98
|
+
} | undefined;
|
|
31
99
|
backLink: {
|
|
32
100
|
href: string;
|
|
101
|
+
text: string;
|
|
33
102
|
};
|
|
34
103
|
errors: {
|
|
35
104
|
text: string;
|
|
@@ -75,17 +144,93 @@ export function detailsViewModel(data: PostcodeLookupSessionData, payload?: Post
|
|
|
75
144
|
href: string;
|
|
76
145
|
};
|
|
77
146
|
};
|
|
147
|
+
t: (key: string, opts?: Record<string, unknown>) => string;
|
|
148
|
+
language: string;
|
|
78
149
|
};
|
|
79
150
|
/**
|
|
80
151
|
* The postcode lookup select form view model
|
|
81
152
|
* @param {{ session: PostcodeLookupSessionData, apiKey: string }} data
|
|
153
|
+
* @param {Translator} translator
|
|
82
154
|
* @param {PostcodeLookupSelectPayload} [payload]
|
|
83
155
|
* @param {Error} [err]
|
|
84
156
|
*/
|
|
85
157
|
export function selectViewModel(data: {
|
|
86
158
|
session: PostcodeLookupSessionData;
|
|
87
159
|
apiKey: string;
|
|
88
|
-
}, payload?: PostcodeLookupSelectPayload, err?: Error): Promise<{
|
|
160
|
+
}, translator: Translator, payload?: PostcodeLookupSelectPayload, err?: Error): Promise<{
|
|
161
|
+
languages: {
|
|
162
|
+
name: string;
|
|
163
|
+
code: string;
|
|
164
|
+
}[];
|
|
165
|
+
step: string;
|
|
166
|
+
showTitle: boolean;
|
|
167
|
+
name: string;
|
|
168
|
+
serviceUrl: string;
|
|
169
|
+
pageTitle: string;
|
|
170
|
+
backLink: {
|
|
171
|
+
href: string;
|
|
172
|
+
text: string;
|
|
173
|
+
};
|
|
174
|
+
errors: {
|
|
175
|
+
text: string;
|
|
176
|
+
href: string;
|
|
177
|
+
}[] | undefined;
|
|
178
|
+
searchAgainLink: {
|
|
179
|
+
text: string;
|
|
180
|
+
href: string;
|
|
181
|
+
};
|
|
182
|
+
fields: {
|
|
183
|
+
postcodeQuery: {
|
|
184
|
+
id: string;
|
|
185
|
+
name: string;
|
|
186
|
+
type: string;
|
|
187
|
+
value: string;
|
|
188
|
+
};
|
|
189
|
+
buildingNameQuery: {
|
|
190
|
+
id: string;
|
|
191
|
+
name: string;
|
|
192
|
+
type: string;
|
|
193
|
+
value: string;
|
|
194
|
+
};
|
|
195
|
+
uprn: {
|
|
196
|
+
id: string;
|
|
197
|
+
name: string;
|
|
198
|
+
label: {
|
|
199
|
+
text: string;
|
|
200
|
+
} | undefined;
|
|
201
|
+
value: string | undefined;
|
|
202
|
+
errorMessage: {
|
|
203
|
+
text: string;
|
|
204
|
+
} | undefined;
|
|
205
|
+
items: {
|
|
206
|
+
text: string;
|
|
207
|
+
value: string;
|
|
208
|
+
}[] | undefined;
|
|
209
|
+
type: string | undefined;
|
|
210
|
+
};
|
|
211
|
+
};
|
|
212
|
+
details: PostcodeLookupDetailsData;
|
|
213
|
+
addressCount: number;
|
|
214
|
+
singleAddress: Address | undefined;
|
|
215
|
+
hasAddresses: boolean;
|
|
216
|
+
hasMultipleAddresses: boolean;
|
|
217
|
+
addressesFoundText: string | undefined;
|
|
218
|
+
noAddressFoundText: string | undefined;
|
|
219
|
+
buttons: {
|
|
220
|
+
continueButton: {
|
|
221
|
+
href: string | undefined;
|
|
222
|
+
text: string;
|
|
223
|
+
classes: string;
|
|
224
|
+
};
|
|
225
|
+
manualLink: {
|
|
226
|
+
text: string;
|
|
227
|
+
href: string;
|
|
228
|
+
};
|
|
229
|
+
};
|
|
230
|
+
t: (key: string, opts?: Record<string, unknown>) => string;
|
|
231
|
+
language: string;
|
|
232
|
+
} | {
|
|
233
|
+
languages?: undefined;
|
|
89
234
|
step: string;
|
|
90
235
|
showTitle: boolean;
|
|
91
236
|
name: string;
|
|
@@ -93,6 +238,7 @@ export function selectViewModel(data: {
|
|
|
93
238
|
pageTitle: string;
|
|
94
239
|
backLink: {
|
|
95
240
|
href: string;
|
|
241
|
+
text: string;
|
|
96
242
|
};
|
|
97
243
|
errors: {
|
|
98
244
|
text: string;
|
|
@@ -150,14 +296,110 @@ export function selectViewModel(data: {
|
|
|
150
296
|
href: string;
|
|
151
297
|
};
|
|
152
298
|
};
|
|
299
|
+
t: (key: string, opts?: Record<string, unknown>) => string;
|
|
300
|
+
language: string;
|
|
153
301
|
}>;
|
|
154
302
|
/**
|
|
155
303
|
* The postcode lookup manual form view model
|
|
156
304
|
* @param {PostcodeLookupSessionData} data
|
|
305
|
+
* @param {Translator} translator
|
|
157
306
|
* @param {PostcodeLookupManualPayload} [payload]
|
|
158
307
|
* @param {Error} [err]
|
|
159
308
|
*/
|
|
160
|
-
export function manualViewModel(data: PostcodeLookupSessionData, payload?: PostcodeLookupManualPayload, err?: Error): {
|
|
309
|
+
export function manualViewModel(data: PostcodeLookupSessionData, translator: Translator, payload?: PostcodeLookupManualPayload, err?: Error): {
|
|
310
|
+
languages: {
|
|
311
|
+
name: string;
|
|
312
|
+
code: string;
|
|
313
|
+
}[];
|
|
314
|
+
step: string;
|
|
315
|
+
showTitle: boolean;
|
|
316
|
+
name: string;
|
|
317
|
+
serviceUrl: string;
|
|
318
|
+
pageTitle: string;
|
|
319
|
+
backLink: {
|
|
320
|
+
href: string;
|
|
321
|
+
text: string;
|
|
322
|
+
};
|
|
323
|
+
errors: {
|
|
324
|
+
text: string;
|
|
325
|
+
href: string;
|
|
326
|
+
}[] | undefined;
|
|
327
|
+
hint: "" | {
|
|
328
|
+
text: string;
|
|
329
|
+
} | undefined;
|
|
330
|
+
fields: {
|
|
331
|
+
addressLine1: {
|
|
332
|
+
id: string;
|
|
333
|
+
name: string;
|
|
334
|
+
label: {
|
|
335
|
+
text: string;
|
|
336
|
+
};
|
|
337
|
+
value: string | undefined;
|
|
338
|
+
errorMessage: {
|
|
339
|
+
text: string;
|
|
340
|
+
} | undefined;
|
|
341
|
+
};
|
|
342
|
+
addressLine2: {
|
|
343
|
+
id: string;
|
|
344
|
+
name: string;
|
|
345
|
+
label: {
|
|
346
|
+
text: string;
|
|
347
|
+
};
|
|
348
|
+
value: string | undefined;
|
|
349
|
+
errorMessage: {
|
|
350
|
+
text: string;
|
|
351
|
+
} | undefined;
|
|
352
|
+
};
|
|
353
|
+
town: {
|
|
354
|
+
id: string;
|
|
355
|
+
name: string;
|
|
356
|
+
label: {
|
|
357
|
+
text: string;
|
|
358
|
+
};
|
|
359
|
+
classes: string;
|
|
360
|
+
value: string | undefined;
|
|
361
|
+
errorMessage: {
|
|
362
|
+
text: string;
|
|
363
|
+
} | undefined;
|
|
364
|
+
};
|
|
365
|
+
county: {
|
|
366
|
+
id: string;
|
|
367
|
+
name: string;
|
|
368
|
+
label: {
|
|
369
|
+
text: string;
|
|
370
|
+
};
|
|
371
|
+
value: string | undefined;
|
|
372
|
+
errorMessage: {
|
|
373
|
+
text: string;
|
|
374
|
+
} | undefined;
|
|
375
|
+
};
|
|
376
|
+
postcode: {
|
|
377
|
+
id: string;
|
|
378
|
+
name: string;
|
|
379
|
+
label: {
|
|
380
|
+
text: string;
|
|
381
|
+
};
|
|
382
|
+
classes: string;
|
|
383
|
+
value: string | undefined;
|
|
384
|
+
errorMessage: {
|
|
385
|
+
text: string;
|
|
386
|
+
} | undefined;
|
|
387
|
+
};
|
|
388
|
+
};
|
|
389
|
+
buttons: {
|
|
390
|
+
continueButton: {
|
|
391
|
+
text: string;
|
|
392
|
+
classes: string;
|
|
393
|
+
};
|
|
394
|
+
detailsLink: {
|
|
395
|
+
text: string;
|
|
396
|
+
href: string;
|
|
397
|
+
};
|
|
398
|
+
};
|
|
399
|
+
t: (key: string, opts?: Record<string, unknown>) => string;
|
|
400
|
+
language: string;
|
|
401
|
+
} | {
|
|
402
|
+
languages?: undefined;
|
|
161
403
|
step: string;
|
|
162
404
|
showTitle: boolean;
|
|
163
405
|
name: string;
|
|
@@ -165,6 +407,7 @@ export function manualViewModel(data: PostcodeLookupSessionData, payload?: Postc
|
|
|
165
407
|
pageTitle: string;
|
|
166
408
|
backLink: {
|
|
167
409
|
href: string;
|
|
410
|
+
text: string;
|
|
168
411
|
};
|
|
169
412
|
errors: {
|
|
170
413
|
text: string;
|
|
@@ -242,6 +485,8 @@ export function manualViewModel(data: PostcodeLookupSessionData, payload?: Postc
|
|
|
242
485
|
href: string;
|
|
243
486
|
};
|
|
244
487
|
};
|
|
488
|
+
t: (key: string, opts?: Record<string, unknown>) => string;
|
|
489
|
+
language: string;
|
|
245
490
|
};
|
|
246
491
|
export namespace steps {
|
|
247
492
|
let details: string;
|
|
@@ -256,5 +501,6 @@ import Joi from 'joi';
|
|
|
256
501
|
import type { PostcodeLookupSelectPayload } from '../../../../server/plugins/postcode-lookup/types.js';
|
|
257
502
|
import type { PostcodeLookupManualPayload } from '../../../../server/plugins/postcode-lookup/types.js';
|
|
258
503
|
import type { PostcodeLookupSessionData } from '../../../../server/plugins/postcode-lookup/types.js';
|
|
504
|
+
import type { Translator } from '../../../../server/plugins/engine/i18n/types.js';
|
|
259
505
|
import type { PostcodeLookupDetailsData } from '../../../../server/plugins/postcode-lookup/types.js';
|
|
260
506
|
import type { Address } from '../../../../server/plugins/postcode-lookup/types.js';
|
|
@@ -13,6 +13,7 @@ const townFieldName = 'town';
|
|
|
13
13
|
const countyFieldName = 'county';
|
|
14
14
|
const postcodeFieldName = 'postcode';
|
|
15
15
|
const GOVUK_MARGIN_RIGHT_1 = 'govuk-!-margin-right-1';
|
|
16
|
+
const COMMON_BACK = 'common.back';
|
|
16
17
|
export const steps = {
|
|
17
18
|
// Step 1: Postcode/building name input
|
|
18
19
|
details: 'details',
|
|
@@ -268,6 +269,19 @@ function getManualFields(payload, line1Error, line2Error, townError, countyError
|
|
|
268
269
|
};
|
|
269
270
|
}
|
|
270
271
|
export const stepSchema = Joi.string().valid(...Object.keys(steps)).required();
|
|
272
|
+
|
|
273
|
+
/**
|
|
274
|
+
* Joi object schema factories typed with their payload, as JavaScript files
|
|
275
|
+
* cannot pass type arguments to `Joi.object<T>()`
|
|
276
|
+
*/
|
|
277
|
+
/** @type {() => ObjectSchema<PostcodeLookupDetailsPayload>} */
|
|
278
|
+
const detailsObjectSchema = Joi.object.bind(Joi);
|
|
279
|
+
|
|
280
|
+
/** @type {() => ObjectSchema<PostcodeLookupSelectPayload>} */
|
|
281
|
+
const selectObjectSchema = Joi.object.bind(Joi);
|
|
282
|
+
|
|
283
|
+
/** @type {() => ObjectSchema<PostcodeLookupManualPayload>} */
|
|
284
|
+
const manualObjectSchema = Joi.object.bind(Joi);
|
|
271
285
|
const sharedPayloadSchemaKeys = {
|
|
272
286
|
crumb: crumbSchema,
|
|
273
287
|
step: stepSchema
|
|
@@ -279,7 +293,7 @@ const sharedPayloadSchemaKeys = {
|
|
|
279
293
|
* @returns {ObjectSchema<PostcodeLookupDetailsPayload>}
|
|
280
294
|
*/
|
|
281
295
|
export function createDetailsPayloadSchema(language = 'en-GB') {
|
|
282
|
-
return
|
|
296
|
+
return detailsObjectSchema().keys({
|
|
283
297
|
...sharedPayloadSchemaKeys,
|
|
284
298
|
[postcodeQueryFieldName]: Joi.string().pattern(/^[a-zA-Z]{1,2}\d[a-zA-Z\d]?\s?\d[a-zA-Z]{2}$/).trim().required().messages({
|
|
285
299
|
'string.pattern.base': i18nT('postcodeLookup.validation.invalidPostcode', language),
|
|
@@ -295,7 +309,7 @@ export function createDetailsPayloadSchema(language = 'en-GB') {
|
|
|
295
309
|
* @returns {ObjectSchema<PostcodeLookupSelectPayload>}
|
|
296
310
|
*/
|
|
297
311
|
export function createSelectPayloadSchema(language = 'en-GB') {
|
|
298
|
-
return
|
|
312
|
+
return selectObjectSchema().keys({
|
|
299
313
|
...sharedPayloadSchemaKeys,
|
|
300
314
|
[uprnFieldName]: Joi.string().required().messages({
|
|
301
315
|
'*': i18nT('postcodeLookup.validation.selectAddress', language)
|
|
@@ -309,7 +323,7 @@ export function createSelectPayloadSchema(language = 'en-GB') {
|
|
|
309
323
|
* @returns {ObjectSchema<PostcodeLookupManualPayload>}
|
|
310
324
|
*/
|
|
311
325
|
export function createManualPayloadSchema(language = 'en-GB') {
|
|
312
|
-
return
|
|
326
|
+
return manualObjectSchema().keys({
|
|
313
327
|
...sharedPayloadSchemaKeys,
|
|
314
328
|
[line1FieldName]: Joi.string().trim().required().messages({
|
|
315
329
|
'*': i18nT('postcodeLookup.validation.requiredAddressLine1', language)
|
|
@@ -338,56 +352,77 @@ function getHref(step) {
|
|
|
338
352
|
/**
|
|
339
353
|
* The postcode lookup details form view model
|
|
340
354
|
* @param {PostcodeLookupSessionData} data
|
|
355
|
+
* @param {Translator} translator
|
|
341
356
|
* @param {PostcodeLookupDetailsData} [payload]
|
|
342
357
|
* @param {Error} [err]
|
|
343
358
|
*/
|
|
344
|
-
export function detailsViewModel(data, payload, err) {
|
|
359
|
+
export function detailsViewModel(data, translator, payload, err) {
|
|
345
360
|
const {
|
|
346
|
-
|
|
347
|
-
|
|
361
|
+
componentId,
|
|
362
|
+
componentHint,
|
|
348
363
|
sourceUrl,
|
|
349
|
-
|
|
364
|
+
languages
|
|
350
365
|
} = data.initial;
|
|
366
|
+
const {
|
|
367
|
+
t,
|
|
368
|
+
tComponent,
|
|
369
|
+
tForm
|
|
370
|
+
} = translator;
|
|
371
|
+
const component = /** @type {ComponentDef} */{
|
|
372
|
+
id: componentId
|
|
373
|
+
};
|
|
351
374
|
const backLink = {
|
|
352
|
-
href: sourceUrl
|
|
375
|
+
href: sourceUrl,
|
|
376
|
+
text: t(COMMON_BACK)
|
|
353
377
|
};
|
|
354
378
|
const {
|
|
355
379
|
errors,
|
|
356
380
|
postcodeQueryError,
|
|
357
381
|
buildingNameQueryError
|
|
358
382
|
} = buildErrors(err);
|
|
359
|
-
const fields = getDetailsFields(payload ?? data.details, postcodeQueryError, buildingNameQueryError, language);
|
|
383
|
+
const fields = getDetailsFields(payload ?? data.details, postcodeQueryError, buildingNameQueryError, translator.language);
|
|
384
|
+
const hint = componentHint && {
|
|
385
|
+
text: tComponent(component, 'hint')
|
|
386
|
+
};
|
|
360
387
|
const continueButton = {
|
|
361
|
-
text:
|
|
388
|
+
text: t('postcodeLookup.findAddress'),
|
|
362
389
|
classes: GOVUK_MARGIN_RIGHT_1
|
|
363
390
|
};
|
|
364
391
|
const manualLink = {
|
|
365
|
-
text:
|
|
392
|
+
text: t('postcodeLookup.enterManually'),
|
|
366
393
|
href: getHref(steps.manual)
|
|
367
394
|
};
|
|
395
|
+
const selector = languages?.length ? {
|
|
396
|
+
languages
|
|
397
|
+
} : {};
|
|
368
398
|
return {
|
|
369
399
|
step: steps.details,
|
|
370
400
|
showTitle: true,
|
|
371
|
-
name:
|
|
401
|
+
name: tForm('title'),
|
|
372
402
|
serviceUrl: sourceUrl,
|
|
373
|
-
pageTitle,
|
|
403
|
+
pageTitle: tComponent(component, 'title'),
|
|
404
|
+
hint,
|
|
374
405
|
backLink,
|
|
375
406
|
errors,
|
|
376
407
|
fields,
|
|
377
408
|
buttons: {
|
|
378
409
|
continueButton,
|
|
379
410
|
manualLink
|
|
380
|
-
}
|
|
411
|
+
},
|
|
412
|
+
t,
|
|
413
|
+
language: translator.language,
|
|
414
|
+
...selector
|
|
381
415
|
};
|
|
382
416
|
}
|
|
383
417
|
|
|
384
418
|
/**
|
|
385
419
|
* The postcode lookup select form view model
|
|
386
420
|
* @param {{ session: PostcodeLookupSessionData, apiKey: string }} data
|
|
421
|
+
* @param {Translator} translator
|
|
387
422
|
* @param {PostcodeLookupSelectPayload} [payload]
|
|
388
423
|
* @param {Error} [err]
|
|
389
424
|
*/
|
|
390
|
-
export async function selectViewModel(data, payload, err) {
|
|
425
|
+
export async function selectViewModel(data, translator, payload, err) {
|
|
391
426
|
const {
|
|
392
427
|
session,
|
|
393
428
|
apiKey
|
|
@@ -400,7 +435,12 @@ export async function selectViewModel(data, payload, err) {
|
|
|
400
435
|
postcodeQuery,
|
|
401
436
|
buildingNameQuery
|
|
402
437
|
} = details;
|
|
403
|
-
const
|
|
438
|
+
const {
|
|
439
|
+
language,
|
|
440
|
+
t,
|
|
441
|
+
tComponent,
|
|
442
|
+
tForm
|
|
443
|
+
} = translator;
|
|
404
444
|
const {
|
|
405
445
|
hasAddresses,
|
|
406
446
|
hasMultipleAddresses,
|
|
@@ -408,39 +448,45 @@ export async function selectViewModel(data, payload, err) {
|
|
|
408
448
|
addresses,
|
|
409
449
|
addressCount
|
|
410
450
|
} = await getAddresses(postcodeQuery, buildingNameQuery, apiKey);
|
|
411
|
-
const title = hasAddresses ?
|
|
451
|
+
const title = hasAddresses ? tComponent(/** @type {ComponentDef} */{
|
|
452
|
+
id: initial.componentId
|
|
453
|
+
}, 'title') : t('postcodeLookup.noAddressFoundTitle');
|
|
412
454
|
const formPath = initial.sourceUrl;
|
|
413
455
|
const href = getHref();
|
|
414
456
|
const backLink = {
|
|
415
|
-
href
|
|
457
|
+
href,
|
|
458
|
+
text: t(COMMON_BACK)
|
|
416
459
|
};
|
|
417
460
|
const {
|
|
418
461
|
errors,
|
|
419
462
|
uprnError
|
|
420
463
|
} = buildErrors(err);
|
|
421
464
|
const fields = getSelectFields(details, hasMultipleAddresses, singleAddress, payload, uprnError, addresses, language);
|
|
422
|
-
const searchAgainText =
|
|
465
|
+
const searchAgainText = t('postcodeLookup.searchAgain');
|
|
423
466
|
const searchAgainLink = {
|
|
424
467
|
text: searchAgainText,
|
|
425
468
|
href
|
|
426
469
|
};
|
|
427
470
|
const continueButton = {
|
|
428
471
|
href: hasAddresses ? undefined : href,
|
|
429
|
-
text: hasAddresses ?
|
|
472
|
+
text: hasAddresses ? t('postcodeLookup.useThisAddress') : searchAgainText,
|
|
430
473
|
classes: GOVUK_MARGIN_RIGHT_1
|
|
431
474
|
};
|
|
432
475
|
const manualLink = {
|
|
433
|
-
text:
|
|
476
|
+
text: t('postcodeLookup.enterManually'),
|
|
434
477
|
href: `${href}?step=${steps.manual}`
|
|
435
478
|
};
|
|
436
|
-
const addressesFoundText = hasAddresses ?
|
|
479
|
+
const addressesFoundText = hasAddresses ? t('postcodeLookup.addressFound', {
|
|
437
480
|
count: addressCount
|
|
438
481
|
}) : undefined;
|
|
439
|
-
const noAddressFoundText = !hasAddresses ?
|
|
482
|
+
const noAddressFoundText = !hasAddresses ? t('postcodeLookup.noAddressFoundBody') : undefined;
|
|
483
|
+
const selector = initial.languages?.length ? {
|
|
484
|
+
languages: initial.languages
|
|
485
|
+
} : {};
|
|
440
486
|
return {
|
|
441
487
|
step: steps.select,
|
|
442
488
|
showTitle: true,
|
|
443
|
-
name: title,
|
|
489
|
+
name: tForm('title'),
|
|
444
490
|
serviceUrl: formPath,
|
|
445
491
|
pageTitle: title,
|
|
446
492
|
backLink,
|
|
@@ -457,27 +503,40 @@ export async function selectViewModel(data, payload, err) {
|
|
|
457
503
|
buttons: {
|
|
458
504
|
continueButton,
|
|
459
505
|
manualLink
|
|
460
|
-
}
|
|
506
|
+
},
|
|
507
|
+
t,
|
|
508
|
+
language,
|
|
509
|
+
...selector
|
|
461
510
|
};
|
|
462
511
|
}
|
|
463
512
|
|
|
464
513
|
/**
|
|
465
514
|
* The postcode lookup manual form view model
|
|
466
515
|
* @param {PostcodeLookupSessionData} data
|
|
516
|
+
* @param {Translator} translator
|
|
467
517
|
* @param {PostcodeLookupManualPayload} [payload]
|
|
468
518
|
* @param {Error} [err]
|
|
469
519
|
*/
|
|
470
|
-
export function manualViewModel(data, payload, err) {
|
|
520
|
+
export function manualViewModel(data, translator, payload, err) {
|
|
471
521
|
const {
|
|
472
|
-
|
|
522
|
+
componentId,
|
|
473
523
|
sourceUrl,
|
|
474
524
|
componentHint,
|
|
475
|
-
|
|
525
|
+
languages
|
|
476
526
|
} = data.initial;
|
|
477
527
|
const formPath = sourceUrl;
|
|
478
528
|
const href = getHref();
|
|
529
|
+
const {
|
|
530
|
+
t,
|
|
531
|
+
tComponent,
|
|
532
|
+
tForm
|
|
533
|
+
} = translator;
|
|
534
|
+
const component = /** @type {ComponentDef} */{
|
|
535
|
+
id: componentId
|
|
536
|
+
};
|
|
479
537
|
const backLink = {
|
|
480
|
-
href
|
|
538
|
+
href,
|
|
539
|
+
text: t(COMMON_BACK)
|
|
481
540
|
};
|
|
482
541
|
const {
|
|
483
542
|
errors,
|
|
@@ -488,23 +547,26 @@ export function manualViewModel(data, payload, err) {
|
|
|
488
547
|
postcodeError
|
|
489
548
|
} = buildErrors(err);
|
|
490
549
|
const hint = componentHint && {
|
|
491
|
-
text:
|
|
550
|
+
text: tComponent(component, 'hint')
|
|
492
551
|
};
|
|
493
|
-
const fields = getManualFields(payload, line1Error, line2Error, townError, countyError, postcodeError, language);
|
|
552
|
+
const fields = getManualFields(payload, line1Error, line2Error, townError, countyError, postcodeError, translator.language);
|
|
494
553
|
const continueButton = {
|
|
495
|
-
text:
|
|
554
|
+
text: t('postcodeLookup.useThisAddress'),
|
|
496
555
|
classes: GOVUK_MARGIN_RIGHT_1
|
|
497
556
|
};
|
|
498
557
|
const detailsLink = {
|
|
499
|
-
text:
|
|
558
|
+
text: t('postcodeLookup.findAnAddressInstead'),
|
|
500
559
|
href
|
|
501
560
|
};
|
|
561
|
+
const selector = languages?.length ? {
|
|
562
|
+
languages
|
|
563
|
+
} : {};
|
|
502
564
|
return {
|
|
503
565
|
step: steps.manual,
|
|
504
566
|
showTitle: true,
|
|
505
|
-
name:
|
|
567
|
+
name: tForm('title'),
|
|
506
568
|
serviceUrl: formPath,
|
|
507
|
-
pageTitle:
|
|
569
|
+
pageTitle: tComponent(component, 'title'),
|
|
508
570
|
backLink,
|
|
509
571
|
errors,
|
|
510
572
|
hint,
|
|
@@ -512,7 +574,10 @@ export function manualViewModel(data, payload, err) {
|
|
|
512
574
|
buttons: {
|
|
513
575
|
continueButton,
|
|
514
576
|
detailsLink
|
|
515
|
-
}
|
|
577
|
+
},
|
|
578
|
+
t,
|
|
579
|
+
language: translator.language,
|
|
580
|
+
...selector
|
|
516
581
|
};
|
|
517
582
|
}
|
|
518
583
|
|
|
@@ -520,6 +585,8 @@ export function manualViewModel(data, payload, err) {
|
|
|
520
585
|
|
|
521
586
|
/**
|
|
522
587
|
* @import { ObjectSchema, ValidationErrorItem } from 'joi'
|
|
588
|
+
* @import { ComponentDef } from '@defra/forms-model'
|
|
523
589
|
* @import { Address, PostcodeLookupDetailsData, PostcodeLookupDetailsPayload, PostcodeLookupManualPayload, PostcodeLookupSelectPayload, PostcodeLookupSessionData } from '../../../../server/plugins/postcode-lookup/types.js'
|
|
590
|
+
* @import { Translator } from '../../../../server/plugins/engine/i18n/types.js'
|
|
524
591
|
*/
|
|
525
592
|
//# sourceMappingURL=index.js.map
|