@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
|
@@ -12,7 +12,10 @@ import {
|
|
|
12
12
|
getLocationFieldViewModel
|
|
13
13
|
} from './LocationFieldHelpers.js'
|
|
14
14
|
import { NumberField } from './NumberField.js'
|
|
15
|
-
import {
|
|
15
|
+
import {
|
|
16
|
+
createLowerFirstExpression,
|
|
17
|
+
getTranslatedLabel
|
|
18
|
+
} from './helpers/index.js'
|
|
16
19
|
import {
|
|
17
20
|
type LatLongState,
|
|
18
21
|
type RenderContext
|
|
@@ -28,7 +31,6 @@ import {
|
|
|
28
31
|
type FormSubmissionError,
|
|
29
32
|
type FormSubmissionState
|
|
30
33
|
} from '../types.js'
|
|
31
|
-
import { convertToLanguageMessages } from '../../../utils/type-utils.js'
|
|
32
34
|
|
|
33
35
|
// Precision constants
|
|
34
36
|
// UK latitude/longitude requires high precision for accurate location (within ~11mm)
|
|
@@ -50,59 +52,18 @@ export class LatLongField extends FormComponent {
|
|
|
50
52
|
|
|
51
53
|
const isRequired = options.required !== false
|
|
52
54
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
const latitudeMax = schema?.latitude?.max ?? 60.859
|
|
56
|
-
const longitudeMin = schema?.longitude?.min ?? -13.687
|
|
57
|
-
const longitudeMax = schema?.longitude?.max ?? 1.767
|
|
58
|
-
|
|
59
|
-
const fieldLabel = lowerFirst(this.label)
|
|
60
|
-
|
|
61
|
-
const customValidationMessages: LanguageMessages =
|
|
62
|
-
convertToLanguageMessages({
|
|
63
|
-
'number.precision': tPlugin(
|
|
64
|
-
'components.latLongField.precision',
|
|
65
|
-
'en-GB'
|
|
66
|
-
),
|
|
67
|
-
'number.unsafe': tPlugin('components.latLongField.notANumber', 'en-GB')
|
|
68
|
-
})
|
|
69
|
-
|
|
70
|
-
const latitudeRangeMessage = tPlugin(
|
|
71
|
-
'components.latLongField.latitudeRange',
|
|
72
|
-
'en-GB',
|
|
73
|
-
{ fieldLabel, min: latitudeMin, max: latitudeMax }
|
|
74
|
-
)
|
|
75
|
-
const longitudeRangeMessage = tPlugin(
|
|
76
|
-
'components.latLongField.longitudeRange',
|
|
77
|
-
'en-GB',
|
|
78
|
-
{ fieldLabel, min: longitudeMin, max: longitudeMax }
|
|
79
|
-
)
|
|
80
|
-
|
|
81
|
-
const latitudeMessages: LanguageMessages = convertToLanguageMessages({
|
|
82
|
-
...customValidationMessages,
|
|
83
|
-
'any.required': tPlugin(
|
|
84
|
-
'components.latLongField.latitudeRequired',
|
|
85
|
-
'en-GB'
|
|
86
|
-
),
|
|
87
|
-
'number.base': tPlugin('components.latLongField.latitudeBase', 'en-GB', {
|
|
88
|
-
fieldLabel
|
|
89
|
-
}),
|
|
90
|
-
'number.min': latitudeRangeMessage,
|
|
91
|
-
'number.max': latitudeRangeMessage
|
|
92
|
-
})
|
|
55
|
+
const { latitudeMin, latitudeMax, longitudeMin, longitudeMax } =
|
|
56
|
+
LatLongField.getMinMax(schema)
|
|
93
57
|
|
|
94
|
-
const longitudeMessages
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
58
|
+
const { latitudeMessages, longitudeMessages } =
|
|
59
|
+
LatLongField.buildErrorMessages(
|
|
60
|
+
this.label,
|
|
61
|
+
latitudeMin,
|
|
62
|
+
latitudeMax,
|
|
63
|
+
longitudeMin,
|
|
64
|
+
longitudeMax,
|
|
98
65
|
'en-GB'
|
|
99
|
-
)
|
|
100
|
-
'number.base': tPlugin('components.latLongField.longitudeBase', 'en-GB', {
|
|
101
|
-
fieldLabel
|
|
102
|
-
}),
|
|
103
|
-
'number.min': longitudeRangeMessage,
|
|
104
|
-
'number.max': longitudeRangeMessage
|
|
105
|
-
})
|
|
66
|
+
)
|
|
106
67
|
|
|
107
68
|
this.collection = new ComponentCollection(
|
|
108
69
|
[
|
|
@@ -159,14 +120,16 @@ export class LatLongField extends FormComponent {
|
|
|
159
120
|
|
|
160
121
|
getDisplayStringFromFormValue(
|
|
161
122
|
value: LatLongState | undefined,
|
|
162
|
-
|
|
123
|
+
translator: Translator
|
|
163
124
|
): string {
|
|
164
125
|
if (!value) {
|
|
165
126
|
return ''
|
|
166
127
|
}
|
|
167
128
|
|
|
168
|
-
|
|
169
|
-
|
|
129
|
+
const { t } = translator
|
|
130
|
+
|
|
131
|
+
// Output format: Latitude: <<entry>>\nLongitude: <<entry>>
|
|
132
|
+
return `${t('components.latLongField.latitude')}: ${value.latitude}\n${t('components.latLongField.longitude')}: ${value.longitude}`
|
|
170
133
|
}
|
|
171
134
|
|
|
172
135
|
getDisplayStringFromState(
|
|
@@ -183,8 +146,7 @@ export class LatLongField extends FormComponent {
|
|
|
183
146
|
return null
|
|
184
147
|
}
|
|
185
148
|
|
|
186
|
-
|
|
187
|
-
return `Latitude: ${value.latitude}\nLongitude: ${value.longitude}`
|
|
149
|
+
return `${value.latitude}, ${value.longitude}`
|
|
188
150
|
}
|
|
189
151
|
|
|
190
152
|
getContextValueFromState(state: FormSubmissionState) {
|
|
@@ -210,6 +172,26 @@ export class LatLongField extends FormComponent {
|
|
|
210
172
|
return LatLongField.isLatLong(value)
|
|
211
173
|
}
|
|
212
174
|
|
|
175
|
+
getValidationMessagesOverride(translator: Translator) {
|
|
176
|
+
const def = this.def as LatLongFieldComponent
|
|
177
|
+
const translatedLabel = getTranslatedLabel(def, translator)
|
|
178
|
+
const { latitudeMin, latitudeMax, longitudeMin, longitudeMax } =
|
|
179
|
+
LatLongField.getMinMax(def.schema)
|
|
180
|
+
const { latitudeMessages, longitudeMessages } =
|
|
181
|
+
LatLongField.buildErrorMessages(
|
|
182
|
+
translatedLabel,
|
|
183
|
+
latitudeMin,
|
|
184
|
+
latitudeMax,
|
|
185
|
+
longitudeMin,
|
|
186
|
+
longitudeMax,
|
|
187
|
+
translator.language
|
|
188
|
+
)
|
|
189
|
+
return {
|
|
190
|
+
[`${this.name}__latitude`]: latitudeMessages,
|
|
191
|
+
[`${this.name}__longitude`]: longitudeMessages
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
|
|
213
195
|
/**
|
|
214
196
|
* For error preview page that shows all possible errors on a component
|
|
215
197
|
*/
|
|
@@ -273,4 +255,92 @@ export class LatLongField extends FormComponent {
|
|
|
273
255
|
NumberField.isNumber(value.longitude)
|
|
274
256
|
)
|
|
275
257
|
}
|
|
258
|
+
|
|
259
|
+
static buildErrorMessages(
|
|
260
|
+
label: string,
|
|
261
|
+
latitudeMin: number,
|
|
262
|
+
latitudeMax: number,
|
|
263
|
+
longitudeMin: number,
|
|
264
|
+
longitudeMax: number,
|
|
265
|
+
language: string
|
|
266
|
+
) {
|
|
267
|
+
const fieldLabel = lowerFirst(label)
|
|
268
|
+
|
|
269
|
+
const customValidationMessages: LanguageMessages = {
|
|
270
|
+
'number.precision': tPlugin(
|
|
271
|
+
'components.latLongField.precision',
|
|
272
|
+
language
|
|
273
|
+
),
|
|
274
|
+
'number.unsafe': tPlugin('components.latLongField.notANumber', language)
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
const latitudeRangeMessage = tPlugin(
|
|
278
|
+
'components.latLongField.latitudeRange',
|
|
279
|
+
language,
|
|
280
|
+
{ fieldLabel, min: latitudeMin, max: latitudeMax }
|
|
281
|
+
)
|
|
282
|
+
const longitudeRangeMessage = tPlugin(
|
|
283
|
+
'components.latLongField.longitudeRange',
|
|
284
|
+
language,
|
|
285
|
+
{ fieldLabel, min: longitudeMin, max: longitudeMax }
|
|
286
|
+
)
|
|
287
|
+
|
|
288
|
+
const latitudeMessages: LanguageMessages = {
|
|
289
|
+
...customValidationMessages,
|
|
290
|
+
'any.required': tPlugin(
|
|
291
|
+
'components.latLongField.latitudeRequired',
|
|
292
|
+
language
|
|
293
|
+
),
|
|
294
|
+
'number.base': tPlugin('components.latLongField.latitudeBase', language, {
|
|
295
|
+
fieldLabel
|
|
296
|
+
}),
|
|
297
|
+
'number.min': latitudeRangeMessage,
|
|
298
|
+
'number.max': latitudeRangeMessage
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
const longitudeMessages: LanguageMessages = {
|
|
302
|
+
...customValidationMessages,
|
|
303
|
+
'any.required': tPlugin(
|
|
304
|
+
'components.latLongField.longitudeRequired',
|
|
305
|
+
language
|
|
306
|
+
),
|
|
307
|
+
'number.base': tPlugin(
|
|
308
|
+
'components.latLongField.longitudeBase',
|
|
309
|
+
language,
|
|
310
|
+
{
|
|
311
|
+
fieldLabel
|
|
312
|
+
}
|
|
313
|
+
),
|
|
314
|
+
'number.min': longitudeRangeMessage,
|
|
315
|
+
'number.max': longitudeRangeMessage
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
return {
|
|
319
|
+
latitudeMessages,
|
|
320
|
+
longitudeMessages
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
// Read schema values from def.schema with fallback defaults
|
|
325
|
+
static getMinMax(
|
|
326
|
+
schema:
|
|
327
|
+
| {
|
|
328
|
+
latitude?: {
|
|
329
|
+
min?: number
|
|
330
|
+
max?: number
|
|
331
|
+
}
|
|
332
|
+
longitude?: {
|
|
333
|
+
min?: number
|
|
334
|
+
max?: number
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
| undefined
|
|
338
|
+
) {
|
|
339
|
+
return {
|
|
340
|
+
latitudeMin: schema?.latitude?.min ?? 49.85,
|
|
341
|
+
latitudeMax: schema?.latitude?.max ?? 60.859,
|
|
342
|
+
longitudeMin: schema?.longitude?.min ?? -13.687,
|
|
343
|
+
longitudeMax: schema?.longitude?.max ?? 1.767
|
|
344
|
+
}
|
|
345
|
+
}
|
|
276
346
|
}
|
|
@@ -11,14 +11,15 @@ import {
|
|
|
11
11
|
} from './FormComponent.js'
|
|
12
12
|
import { addClassOptionIfNone } from './helpers/index.js'
|
|
13
13
|
import { type RenderContext } from './types.js'
|
|
14
|
+
import { buildValidationMessages } from '../i18n/buildValidationMessages.js'
|
|
14
15
|
import { messageTemplate } from '../pageControllers/validationOptions.js'
|
|
16
|
+
import { type Translator } from '../types/index.js'
|
|
15
17
|
import {
|
|
16
18
|
type ErrorMessageTemplateList,
|
|
17
19
|
type FormState,
|
|
18
20
|
type FormStateValue,
|
|
19
21
|
type FormSubmissionState
|
|
20
22
|
} from '../types.js'
|
|
21
|
-
import { convertToLanguageMessages } from '../../../utils/type-utils.js'
|
|
22
23
|
|
|
23
24
|
interface LocationFieldOptions {
|
|
24
25
|
instructionText?: string
|
|
@@ -43,7 +44,9 @@ export abstract class LocationFieldBase extends FormComponent {
|
|
|
43
44
|
declare stateSchema: StringSchema
|
|
44
45
|
instructionText?: string
|
|
45
46
|
|
|
46
|
-
protected abstract getValidationConfig(
|
|
47
|
+
protected abstract getValidationConfig(
|
|
48
|
+
translator: Translator | undefined
|
|
49
|
+
): ValidationConfig
|
|
47
50
|
protected abstract getErrorTemplates(): {
|
|
48
51
|
type: string
|
|
49
52
|
template: JoiExpression
|
|
@@ -61,14 +64,14 @@ export abstract class LocationFieldBase extends FormComponent {
|
|
|
61
64
|
|
|
62
65
|
addClassOptionIfNone(locationOptions, 'govuk-input--width-10')
|
|
63
66
|
|
|
64
|
-
const config = this.getValidationConfig()
|
|
67
|
+
const config = this.getValidationConfig(undefined)
|
|
65
68
|
const requiredMessage = config.requiredMessage ?? messageTemplate.required
|
|
66
69
|
|
|
67
|
-
const messages =
|
|
70
|
+
const messages = {
|
|
68
71
|
'any.required': requiredMessage,
|
|
69
72
|
'string.empty': requiredMessage,
|
|
70
73
|
'string.pattern.base': config.patternErrorMessage
|
|
71
|
-
}
|
|
74
|
+
} as LanguageMessages
|
|
72
75
|
|
|
73
76
|
let formSchema = joi
|
|
74
77
|
.string()
|
|
@@ -121,18 +124,38 @@ export abstract class LocationFieldBase extends FormComponent {
|
|
|
121
124
|
getViewModel(context: RenderContext) {
|
|
122
125
|
const viewModel = super.getViewModel(context)
|
|
123
126
|
|
|
127
|
+
Object.assign(viewModel, {
|
|
128
|
+
lang: context.translator.language
|
|
129
|
+
})
|
|
130
|
+
|
|
124
131
|
if (this.instructionText) {
|
|
132
|
+
const { tComponent } = context.translator
|
|
125
133
|
return {
|
|
126
134
|
...viewModel,
|
|
127
|
-
instructionText:
|
|
135
|
+
instructionText:
|
|
136
|
+
tComponent(this.def, 'instructionText') || this.instructionText
|
|
128
137
|
}
|
|
129
138
|
}
|
|
130
139
|
|
|
131
140
|
return viewModel
|
|
132
141
|
}
|
|
133
142
|
|
|
143
|
+
getValidationMessagesOverride(translator: Translator) {
|
|
144
|
+
const { t } = translator
|
|
145
|
+
const config = this.getValidationConfig(translator)
|
|
146
|
+
return {
|
|
147
|
+
[this.name]: {
|
|
148
|
+
'any.required':
|
|
149
|
+
config.requiredMessage ?? buildValidationMessages(t).objectRequired,
|
|
150
|
+
'string.empty':
|
|
151
|
+
config.requiredMessage ?? buildValidationMessages(t).objectRequired,
|
|
152
|
+
'string.pattern.base': config.patternErrorMessage
|
|
153
|
+
} as LanguageMessages
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
134
157
|
getAllPossibleErrors(): ErrorMessageTemplateList {
|
|
135
|
-
const config = this.getValidationConfig()
|
|
158
|
+
const config = this.getValidationConfig(undefined)
|
|
136
159
|
|
|
137
160
|
return {
|
|
138
161
|
baseErrors: [
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type Context, type CustomValidator } from 'joi'
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { EastingNorthingField } from './EastingNorthingField.js'
|
|
4
4
|
import { isFormValue } from './FormComponent.js'
|
|
5
5
|
import { type GeospatialField } from './GeospatialField.js'
|
|
6
6
|
import { type LatLongField } from './LatLongField.js'
|
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
type RenderContext,
|
|
12
12
|
type ViewModel
|
|
13
13
|
} from './types.js'
|
|
14
|
+
import { type Translator } from '../i18n/types.js'
|
|
14
15
|
import {
|
|
15
16
|
type FormPayload,
|
|
16
17
|
type FormSubmissionError,
|
|
@@ -29,25 +30,25 @@ export type LocationField =
|
|
|
29
30
|
* - "latitude must be..." -> "latitude must be..."
|
|
30
31
|
*/
|
|
31
32
|
function lowercaseMessageStart(message: string): string {
|
|
32
|
-
|
|
33
|
-
return 'enter' + message.slice(5)
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
// Lowercase first character for any other message
|
|
33
|
+
// Lowercase first character for a message
|
|
37
34
|
return message.charAt(0).toLowerCase() + message.slice(1)
|
|
38
35
|
}
|
|
39
36
|
|
|
40
|
-
export function joinWithAnd(items: string[]): string {
|
|
37
|
+
export function joinWithAnd(items: string[], translator: Translator): string {
|
|
38
|
+
const { t } = translator
|
|
41
39
|
if (items.length === 2) {
|
|
42
|
-
return `${items[0]} and ${items[1]}`
|
|
40
|
+
return `${items[0]} ${t('common.and')} ${items[1]}`
|
|
43
41
|
}
|
|
44
42
|
|
|
45
43
|
const leading = items.slice(0, -1).join(', ')
|
|
46
44
|
const last = items[items.length - 1]
|
|
47
|
-
return `${leading} and ${last}`
|
|
45
|
+
return `${leading} ${t('common.and')} ${last}`
|
|
48
46
|
}
|
|
49
47
|
|
|
50
|
-
export function formatErrorList(
|
|
48
|
+
export function formatErrorList(
|
|
49
|
+
messages: string[],
|
|
50
|
+
translator: Translator
|
|
51
|
+
): string {
|
|
51
52
|
if (!messages.length) {
|
|
52
53
|
return ''
|
|
53
54
|
}
|
|
@@ -60,7 +61,7 @@ export function formatErrorList(messages: string[]): string {
|
|
|
60
61
|
index === 0 ? msg : lowercaseMessageStart(msg)
|
|
61
62
|
)
|
|
62
63
|
|
|
63
|
-
return joinWithAnd(formattedMessages)
|
|
64
|
+
return joinWithAnd(formattedMessages, translator)
|
|
64
65
|
}
|
|
65
66
|
|
|
66
67
|
export function mergeCssClasses(...classNames: (string | undefined)[]) {
|
|
@@ -172,7 +173,9 @@ export function getLocationFieldViewModel(
|
|
|
172
173
|
if (hasFieldErrors) {
|
|
173
174
|
viewModel.errorMessage = {
|
|
174
175
|
text:
|
|
175
|
-
fieldErrors.length === 1
|
|
176
|
+
fieldErrors.length === 1
|
|
177
|
+
? fieldErrors[0]
|
|
178
|
+
: formatErrorList(fieldErrors, context.translator)
|
|
176
179
|
}
|
|
177
180
|
}
|
|
178
181
|
|
|
@@ -187,13 +190,24 @@ export function getLocationFieldViewModel(
|
|
|
187
190
|
...viewModel,
|
|
188
191
|
fieldset,
|
|
189
192
|
items,
|
|
190
|
-
mapLayers: getMapLayers(component)
|
|
193
|
+
mapLayers: getMapLayers(component),
|
|
194
|
+
country:
|
|
195
|
+
component instanceof EastingNorthingField
|
|
196
|
+
? component.options.countries?.at(0)
|
|
197
|
+
: undefined,
|
|
198
|
+
lang: context.translator.language
|
|
191
199
|
}
|
|
192
200
|
|
|
193
201
|
if (component.options.instructionText) {
|
|
202
|
+
const { t, tComponent } = context.translator
|
|
203
|
+
|
|
194
204
|
return {
|
|
195
205
|
...result,
|
|
196
|
-
|
|
206
|
+
instructionSummary: t('components.locationFieldBase.howToFind'),
|
|
207
|
+
instructionText:
|
|
208
|
+
tComponent(component.def, 'instructionText') ||
|
|
209
|
+
component.options.instructionText,
|
|
210
|
+
t
|
|
197
211
|
}
|
|
198
212
|
}
|
|
199
213
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type MarkdownComponent } from '@defra/forms-model'
|
|
2
2
|
|
|
3
3
|
import { ComponentBase } from './ComponentBase.js'
|
|
4
4
|
import { type RenderContext } from './types.js'
|
|
@@ -28,8 +28,7 @@ export class Markdown extends ComponentBase {
|
|
|
28
28
|
|
|
29
29
|
return {
|
|
30
30
|
...viewModel,
|
|
31
|
-
content:
|
|
32
|
-
tComponent(this as unknown as ComponentDef, 'content') || content,
|
|
31
|
+
content: tComponent(this.def, 'content') || content,
|
|
33
32
|
headerStartLevel: this.headerStartLevel
|
|
34
33
|
}
|
|
35
34
|
}
|
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
type FormStateValue,
|
|
31
31
|
type FormSubmissionState
|
|
32
32
|
} from '../types.js'
|
|
33
|
-
import {
|
|
33
|
+
import { formatDateForLanguage } from '../../payment/helper.js'
|
|
34
34
|
|
|
35
35
|
export class MonthYearField extends FormComponent {
|
|
36
36
|
declare options: MonthYearFieldComponent['options']
|
|
@@ -48,16 +48,15 @@ export class MonthYearField extends FormComponent {
|
|
|
48
48
|
|
|
49
49
|
const isRequired = options.required !== false
|
|
50
50
|
|
|
51
|
-
const customValidationMessages
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
})
|
|
51
|
+
const customValidationMessages = {
|
|
52
|
+
'any.required': messageTemplate.objectMissing,
|
|
53
|
+
'number.base': messageTemplate.objectMissing,
|
|
54
|
+
'number.precision': messageTemplate.dateFormat,
|
|
55
|
+
'number.integer': messageTemplate.dateFormat,
|
|
56
|
+
'number.unsafe': messageTemplate.dateFormat,
|
|
57
|
+
'number.min': messageTemplate.dateFormat,
|
|
58
|
+
'number.max': messageTemplate.dateFormat
|
|
59
|
+
} as LanguageMessages
|
|
61
60
|
|
|
62
61
|
this.collection = new ComponentCollection(
|
|
63
62
|
[
|
|
@@ -105,16 +104,18 @@ export class MonthYearField extends FormComponent {
|
|
|
105
104
|
|
|
106
105
|
getDisplayStringFromFormValue(
|
|
107
106
|
value: MonthYearState | undefined,
|
|
108
|
-
|
|
107
|
+
translator: Translator
|
|
109
108
|
): string {
|
|
110
109
|
if (!value) {
|
|
111
110
|
return ''
|
|
112
111
|
}
|
|
113
112
|
|
|
114
113
|
const date = new Date()
|
|
114
|
+
// Force to first day of month in case current date was say 31st and specified month has fewer than 31 days
|
|
115
|
+
date.setDate(1)
|
|
115
116
|
date.setMonth(value.month - 1)
|
|
116
117
|
|
|
117
|
-
const monthString = date
|
|
118
|
+
const monthString = formatDateForLanguage(date, 'LLLL', translator.language)
|
|
118
119
|
return `${monthString} ${value.year}`
|
|
119
120
|
}
|
|
120
121
|
|
|
@@ -155,7 +156,7 @@ export class MonthYearField extends FormComponent {
|
|
|
155
156
|
|
|
156
157
|
getValidationMessagesOverride(translator: Translator) {
|
|
157
158
|
const { t } = translator
|
|
158
|
-
|
|
159
|
+
const messages = {
|
|
159
160
|
'any.required': buildValidationMessages(t).objectMissing,
|
|
160
161
|
'number.base': buildValidationMessages(t).objectMissing,
|
|
161
162
|
'number.precision': buildValidationMessages(t).dateFormat,
|
|
@@ -163,7 +164,11 @@ export class MonthYearField extends FormComponent {
|
|
|
163
164
|
'number.unsafe': buildValidationMessages(t).dateFormat,
|
|
164
165
|
'number.min': buildValidationMessages(t).dateFormat,
|
|
165
166
|
'number.max': buildValidationMessages(t).dateFormat
|
|
166
|
-
}
|
|
167
|
+
} as LanguageMessages
|
|
168
|
+
return {
|
|
169
|
+
[`${this.name}__month`]: messages,
|
|
170
|
+
[`${this.name}__year`]: messages
|
|
171
|
+
}
|
|
167
172
|
}
|
|
168
173
|
|
|
169
174
|
getViewModel(context: RenderContext) {
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { type NationalGridFieldNumberFieldComponent } from '@defra/forms-model'
|
|
2
2
|
|
|
3
|
+
import { EN_GB } from '../../../constants.js'
|
|
3
4
|
import { LocationFieldBase } from './LocationFieldBase.js'
|
|
4
5
|
import { createLowerFirstExpression } from './helpers/index.js'
|
|
5
6
|
import { t } from '../i18n/index.js'
|
|
7
|
+
import { type Translator } from '../i18n/types.js'
|
|
6
8
|
import { type ErrorMessageTemplateList } from '../types.js'
|
|
7
9
|
|
|
8
10
|
export class NationalGridFieldNumberField extends LocationFieldBase {
|
|
9
11
|
declare options: NationalGridFieldNumberFieldComponent['options']
|
|
10
12
|
|
|
11
|
-
protected getValidationConfig() {
|
|
13
|
+
protected getValidationConfig(translator: Translator | undefined) {
|
|
12
14
|
// Regex for OS national grid field references (NGFR)
|
|
13
15
|
// Validates specific valid OS grid letter combinations with:
|
|
14
16
|
// - 2 letters & 8 digits in 2 blocks of 4 e.g. ST 6789 6789
|
|
@@ -18,10 +20,14 @@ export class NationalGridFieldNumberField extends LocationFieldBase {
|
|
|
18
20
|
return {
|
|
19
21
|
pattern,
|
|
20
22
|
patternErrorMessage: createLowerFirstExpression(
|
|
21
|
-
|
|
23
|
+
translator
|
|
24
|
+
? translator.t('components.nationalGridField.pattern')
|
|
25
|
+
: t('components.nationalGridField.pattern', EN_GB)
|
|
22
26
|
),
|
|
23
27
|
requiredMessage: createLowerFirstExpression(
|
|
24
|
-
|
|
28
|
+
translator
|
|
29
|
+
? translator.t('components.nationalGridField.required')
|
|
30
|
+
: t('components.nationalGridField.required', EN_GB)
|
|
25
31
|
)
|
|
26
32
|
}
|
|
27
33
|
}
|
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
import { type NumberFieldComponent } from '@defra/forms-model'
|
|
2
|
-
import joi, {
|
|
2
|
+
import joi, {
|
|
3
|
+
type CustomValidator,
|
|
4
|
+
type LanguageMessages,
|
|
5
|
+
type NumberSchema
|
|
6
|
+
} from 'joi'
|
|
3
7
|
|
|
4
8
|
import {
|
|
5
9
|
FormComponent,
|
|
6
10
|
isFormValue
|
|
7
11
|
} from './FormComponent.js'
|
|
8
12
|
import { type RenderContext } from './types.js'
|
|
13
|
+
import { buildValidationMessages } from '../i18n/buildValidationMessages.js'
|
|
9
14
|
import { messageTemplate } from '../pageControllers/validationOptions.js'
|
|
15
|
+
import { type Translator } from '../types/index.js'
|
|
10
16
|
import {
|
|
11
17
|
type ErrorMessageTemplateList,
|
|
12
18
|
type FormState,
|
|
@@ -130,6 +136,20 @@ export class NumberField extends FormComponent {
|
|
|
130
136
|
return NumberField.isNumber(value)
|
|
131
137
|
}
|
|
132
138
|
|
|
139
|
+
getValidationMessagesOverride(translator: Translator) {
|
|
140
|
+
const { t } = translator
|
|
141
|
+
return {
|
|
142
|
+
[this.name]: {
|
|
143
|
+
'any.required': buildValidationMessages(t).objectRequired,
|
|
144
|
+
'number.base': buildValidationMessages(t).objectMissing,
|
|
145
|
+
'number.precision': buildValidationMessages(t).numberPrecision,
|
|
146
|
+
'number.integer': buildValidationMessages(t).numberInteger,
|
|
147
|
+
'number.min': buildValidationMessages(t).numberMin,
|
|
148
|
+
'number.max': buildValidationMessages(t).numberMax
|
|
149
|
+
} as LanguageMessages
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
133
153
|
/**
|
|
134
154
|
* For error preview page that shows all possible errors on a component
|
|
135
155
|
*/
|
|
@@ -1,14 +1,29 @@
|
|
|
1
1
|
import { type OsGridRefFieldComponent } from '@defra/forms-model'
|
|
2
2
|
|
|
3
|
+
import { EN_GB } from '../../../constants.js'
|
|
3
4
|
import { LocationFieldBase } from './LocationFieldBase.js'
|
|
5
|
+
import { getMapLayers } from './LocationFieldHelpers.js'
|
|
4
6
|
import { createLowerFirstExpression } from './helpers/index.js'
|
|
7
|
+
import { type RenderContext } from './types.js'
|
|
5
8
|
import { t } from '../i18n/index.js'
|
|
9
|
+
import { type Translator } from '../types/index.js'
|
|
6
10
|
import { type ErrorMessageTemplateList } from '../types.js'
|
|
7
11
|
|
|
8
12
|
export class OsGridRefField extends LocationFieldBase {
|
|
9
13
|
declare options: OsGridRefFieldComponent['options']
|
|
10
14
|
|
|
11
|
-
|
|
15
|
+
getViewModel(context: RenderContext) {
|
|
16
|
+
const viewModel = super.getViewModel(context)
|
|
17
|
+
|
|
18
|
+
Object.assign(viewModel, {
|
|
19
|
+
lang: context.translator.language,
|
|
20
|
+
mapLayers: getMapLayers(this)
|
|
21
|
+
})
|
|
22
|
+
|
|
23
|
+
return viewModel
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
protected getValidationConfig(translator: Translator | undefined) {
|
|
12
27
|
// Regex for OS national grid references (NGR)
|
|
13
28
|
// Validates specific valid OS grid letter combinations with:
|
|
14
29
|
// - 2 letters & 6 digits in 2 blocks of 3 e.g. ST 678 678
|
|
@@ -21,10 +36,14 @@ export class OsGridRefField extends LocationFieldBase {
|
|
|
21
36
|
return {
|
|
22
37
|
pattern,
|
|
23
38
|
patternErrorMessage: createLowerFirstExpression(
|
|
24
|
-
|
|
39
|
+
translator
|
|
40
|
+
? translator.t('components.osGridRefField.pattern')
|
|
41
|
+
: t('components.osGridRefField.pattern', EN_GB)
|
|
25
42
|
),
|
|
26
43
|
requiredMessage: createLowerFirstExpression(
|
|
27
|
-
|
|
44
|
+
translator
|
|
45
|
+
? translator.t('components.osGridRefField.required')
|
|
46
|
+
: t('components.osGridRefField.required', EN_GB)
|
|
28
47
|
)
|
|
29
48
|
}
|
|
30
49
|
}
|