@defra/forms-engine-plugin 5.0.0-alpha → 5.0.0-alpha.10
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/assets-manifest.json +3 -5
- package/.public/javascripts/application.min.js +1 -1
- package/.public/javascripts/application.min.js.map +1 -1
- package/.public/javascripts/im-core.min.js +2 -0
- package/.public/javascripts/im-core.min.js.map +1 -0
- package/.public/javascripts/shared.min.js +1 -1
- 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/stylesheets/application.min.css +1 -1
- package/.public/stylesheets/application.min.css.map +1 -1
- package/.server/client/javascripts/file-upload.js +5 -3
- package/.server/client/javascripts/file-upload.js.map +1 -1
- package/.server/client/javascripts/geospatial-map.js +36 -29
- package/.server/client/javascripts/geospatial-map.js.map +1 -1
- package/.server/client/javascripts/location-map.js +16 -1
- package/.server/client/javascripts/location-map.js.map +1 -1
- package/.server/client/javascripts/map.d.ts +6 -0
- package/.server/client/javascripts/map.js +10 -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 -3
- package/.server/client/javascripts/shared.js +1 -3
- package/.server/client/javascripts/shared.js.map +1 -1
- package/.server/client/javascripts/sssi-dataset.d.ts +32 -0
- package/.server/client/javascripts/sssi-dataset.js +99 -0
- package/.server/client/javascripts/sssi-dataset.js.map +1 -0
- package/.server/client/stylesheets/maps.scss +4 -0
- package/.server/client/stylesheets/shared.scss +1 -7
- 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/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 +4 -1
- package/.server/server/plugins/engine/components/CheckboxesField.js +13 -0
- 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 +28 -2
- package/.server/server/plugins/engine/components/EastingNorthingField.js +93 -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 +12 -0
- package/.server/server/plugins/engine/components/FileUploadField.js +20 -2
- 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 +2 -0
- package/.server/server/plugins/engine/components/GeospatialField.js +3 -1
- 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 +28 -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 +18 -5
- package/.server/server/plugins/engine/components/LocationFieldBase.js.map +1 -1
- package/.server/server/plugins/engine/components/LocationFieldHelpers.d.ts +10 -2
- package/.server/server/plugins/engine/components/LocationFieldHelpers.js +22 -12
- 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 +2 -1
- package/.server/server/plugins/engine/components/OsGridRefField.js +4 -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 +1 -2
- package/.server/server/plugins/engine/components/helpers/components.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/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 +3 -0
- package/.server/server/plugins/engine/i18n/buildValidationMessages.js +10 -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 +73 -6
- package/.server/server/plugins/engine/i18n/translations/en-GB.json +43 -4
- 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 +9 -15
- 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/outputFormatters/adapter/v1.js +3 -5
- 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 +1 -1
- package/.server/server/plugins/engine/pageControllers/FileUploadPageController.js +22 -9
- 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/submission.d.ts +1 -1
- package/.server/server/plugins/engine/pageControllers/helpers/submission.js +3 -3
- package/.server/server/plugins/engine/pageControllers/helpers/submission.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/validationOptions.js +23 -2
- package/.server/server/plugins/engine/pageControllers/validationOptions.js.map +1 -1
- package/.server/server/plugins/engine/types/schema.js +1 -0
- package/.server/server/plugins/engine/types/schema.js.map +1 -1
- package/.server/server/plugins/engine/types.d.ts +1 -0
- package/.server/server/plugins/engine/types.js.map +1 -1
- package/.server/server/plugins/engine/views/components/_location-field-base.html +3 -1
- package/.server/server/plugins/engine/views/components/fileuploadfield.html +1 -1
- package/.server/server/plugins/engine/views/components/geospatialfield.html +4 -1
- package/.server/server/plugins/engine/views/components/multilinetextfield.html +12 -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/partials/preview-banner.html +3 -1
- package/.server/server/plugins/map/routes/index.js +1 -1
- package/.server/server/plugins/map/routes/index.js.map +1 -1
- package/.server/server/plugins/map/types.d.ts +1 -25
- package/.server/server/plugins/map/types.js +1 -16
- package/.server/server/plugins/map/types.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 +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/package.json +9 -3
- package/src/client/javascripts/file-upload.js +10 -3
- package/src/client/javascripts/geospatial-map.js +38 -32
- package/src/client/javascripts/location-map.js +17 -0
- package/src/client/javascripts/map.js +10 -0
- package/src/client/javascripts/maps.js +5 -0
- package/src/client/javascripts/shared.js +1 -3
- package/src/client/javascripts/sssi-dataset.js +104 -0
- package/src/client/stylesheets/maps.scss +4 -0
- package/src/client/stylesheets/shared.scss +1 -7
- package/src/server/constants.js +2 -0
- package/src/server/plugins/engine/components/AutocompleteField.ts +13 -0
- package/src/server/plugins/engine/components/CheckboxesField.ts +13 -1
- 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 +154 -89
- package/src/server/plugins/engine/components/EmailAddressField.ts +2 -1
- package/src/server/plugins/engine/components/FileUploadField.ts +21 -2
- package/src/server/plugins/engine/components/FormComponent.ts +6 -5
- package/src/server/plugins/engine/components/GeospatialField.ts +8 -1
- package/src/server/plugins/engine/components/LatLongField.ts +128 -58
- package/src/server/plugins/engine/components/LocationFieldBase.ts +23 -6
- package/src/server/plugins/engine/components/LocationFieldHelpers.ts +35 -12
- 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 +9 -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 +1 -2
- 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/helpers.ts +52 -5
- package/src/server/plugins/engine/i18n/buildValidationMessages.ts +10 -7
- 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 +73 -6
- package/src/server/plugins/engine/i18n/translations/en-GB.json +43 -4
- 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 +9 -15
- package/src/server/plugins/engine/models/SummaryViewModel.ts +6 -5
- package/src/server/plugins/engine/outputFormatters/adapter/v1.ts +3 -6
- 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 +18 -8
- 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/submission.ts +6 -3
- package/src/server/plugins/engine/pageControllers/validationOptions.ts +27 -2
- package/src/server/plugins/engine/types/schema.ts +1 -0
- package/src/server/plugins/engine/types.ts +1 -0
- package/src/server/plugins/engine/views/components/_location-field-base.html +3 -1
- package/src/server/plugins/engine/views/components/fileuploadfield.html +1 -1
- package/src/server/plugins/engine/views/components/geospatialfield.html +4 -1
- package/src/server/plugins/engine/views/components/multilinetextfield.html +12 -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/partials/preview-banner.html +3 -1
- package/src/server/plugins/map/routes/index.js +1 -1
- package/src/server/plugins/map/types.js +1 -16
- 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/.public/javascripts/im-search-plugin.min.js +0 -2
- package/.public/javascripts/im-search-plugin.min.js.map +0 -1
- package/.public/javascripts/vendor/preact.min.js +0 -2
- package/.public/javascripts/vendor/preact.min.js.map +0 -1
|
@@ -58,7 +58,21 @@ export const messages: LanguageMessagesExt = {
|
|
|
58
58
|
'date.min': messageTemplate.dateMin,
|
|
59
59
|
'date.max': messageTemplate.dateMax,
|
|
60
60
|
|
|
61
|
-
'
|
|
61
|
+
'array.min': messageTemplate.arrayMin,
|
|
62
|
+
'array.max': messageTemplate.arrayMax,
|
|
63
|
+
'array.length': messageTemplate.arrayLength,
|
|
64
|
+
|
|
65
|
+
'features.min': messageTemplate.featuresMin,
|
|
66
|
+
'features.max': messageTemplate.featuresMax,
|
|
67
|
+
'features.length': messageTemplate.featuresLength,
|
|
68
|
+
|
|
69
|
+
'files.min': messageTemplate.filesMin,
|
|
70
|
+
'files.max': messageTemplate.filesMax,
|
|
71
|
+
'filees.length': messageTemplate.filesLength,
|
|
72
|
+
|
|
73
|
+
'object.invalidjson': messageTemplate.format,
|
|
74
|
+
|
|
75
|
+
'phoneNumber.invalid': messageTemplate.format
|
|
62
76
|
}
|
|
63
77
|
|
|
64
78
|
export const messagesPre: LanguageMessages =
|
|
@@ -76,6 +90,7 @@ export function buildLanguageMessages(
|
|
|
76
90
|
'string.email': vm.format,
|
|
77
91
|
'string.pattern.base': vm.pattern,
|
|
78
92
|
'string.maxWords': vm.maxWords,
|
|
93
|
+
'string.unicode': vm.unicode,
|
|
79
94
|
'number.base': vm.number,
|
|
80
95
|
'number.precision': vm.numberPrecision,
|
|
81
96
|
'number.integer': vm.numberInteger,
|
|
@@ -91,7 +106,17 @@ export function buildLanguageMessages(
|
|
|
91
106
|
'date.format': vm.dateFormat,
|
|
92
107
|
'date.min': vm.dateMin,
|
|
93
108
|
'date.max': vm.dateMax,
|
|
94
|
-
'
|
|
109
|
+
'array.min': vm.arrayMin,
|
|
110
|
+
'array.max': vm.arrayMax,
|
|
111
|
+
'array.length': vm.arrayLength,
|
|
112
|
+
'features.min': vm.featuresMin,
|
|
113
|
+
'features.max': vm.featuresMax,
|
|
114
|
+
'features.length': vm.featuresLength,
|
|
115
|
+
'files.min': vm.filesMin,
|
|
116
|
+
'files.max': vm.filesMax,
|
|
117
|
+
'files.length': vm.filesLength,
|
|
118
|
+
'object.invalidjson': vm.format,
|
|
119
|
+
'phoneNumber.invalid': vm.format
|
|
95
120
|
} as unknown as LanguageMessages
|
|
96
121
|
}
|
|
97
122
|
|
|
@@ -50,6 +50,7 @@ export const formAdapterSubmissionMessageDataSchema =
|
|
|
50
50
|
reference: Joi.string().required(),
|
|
51
51
|
amount: Joi.number().required(),
|
|
52
52
|
description: Joi.string().required(),
|
|
53
|
+
descriptionInEng: Joi.string().optional(),
|
|
53
54
|
createdAt: Joi.string().required()
|
|
54
55
|
})
|
|
55
56
|
.optional(),
|
|
@@ -70,7 +70,9 @@
|
|
|
70
70
|
|
|
71
71
|
{% set hasErrors = showFieldsetError and component.model.errorMessage %}
|
|
72
72
|
|
|
73
|
-
<div class="govuk-form-group app-location-field {{ "govuk-form-group--error" if hasErrors }}"
|
|
73
|
+
<div class="govuk-form-group app-location-field {{ "govuk-form-group--error" if hasErrors }}"
|
|
74
|
+
data-locationtype="{{component.type | lower}}"
|
|
75
|
+
data-maplayers="{{component.model.mapLayers}}">
|
|
74
76
|
{{ govukFieldset({
|
|
75
77
|
legend: {
|
|
76
78
|
text: component.model.fieldset.legend.text,
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
{% macro FileUploadField(component) %}
|
|
4
4
|
{% set upload = component.model.upload %}
|
|
5
5
|
|
|
6
|
-
<div id="uploadedFilesContainer">
|
|
6
|
+
<div id="uploadedFilesContainer" data-uploadinglabel="{{ upload.uploadingLabel }}">
|
|
7
7
|
<h2 class="govuk-heading-m">{{ t('components.fileUploadField.uploadedFilesHeading') }}</h2>
|
|
8
8
|
{% if upload.count %}
|
|
9
9
|
<p class="govuk-body" role="alert">{{ t('components.fileUploadField.filesCount', { count: upload.count }) }}</p>
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
{% from "govuk/components/textarea/macro.njk" import govukTextarea %}
|
|
2
2
|
|
|
3
3
|
{% macro GeospatialField(component) %}
|
|
4
|
-
<div class="app-geospatial-field"
|
|
4
|
+
<div class="app-geospatial-field"
|
|
5
|
+
data-country="{{component.model.country}}"
|
|
6
|
+
data-geometryTypes="{{component.model.geometryTypes}}"
|
|
7
|
+
data-maplayers="{{component.model.mapLayers}}">
|
|
5
8
|
{{ govukTextarea(component.model) }}
|
|
6
9
|
</div>
|
|
7
10
|
{% endmacro %}
|
|
@@ -3,7 +3,18 @@
|
|
|
3
3
|
|
|
4
4
|
{% macro MultilineTextField(component) %}
|
|
5
5
|
{% if component.model.isCharacterOrWordCount == true %}
|
|
6
|
-
{
|
|
6
|
+
{% set characterParams = component.model | merge({
|
|
7
|
+
charactersUnderLimitText: {
|
|
8
|
+
one: t('components.characterCount.underLimit.one'),
|
|
9
|
+
other: t('components.characterCount.underLimit.other')
|
|
10
|
+
},
|
|
11
|
+
charactersAtLimitText: t('components.characterCount.atLimit'),
|
|
12
|
+
charactersOverLimitText: {
|
|
13
|
+
one: t('components.characterCount.overLimit.one'),
|
|
14
|
+
other: t('components.characterCount.overLimit.other')
|
|
15
|
+
}
|
|
16
|
+
} ) %}
|
|
17
|
+
{{ govukCharacterCount(characterParams) }}
|
|
7
18
|
{% else %}
|
|
8
19
|
{{ govukTextarea(component.model) }}
|
|
9
20
|
{% endif %}
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
<p class="govuk-body">{{ t('components.paymentField.preAuthorisedBody') }}</p>
|
|
17
17
|
{% else %}
|
|
18
18
|
{# No pre-authorisation - show payment form #}
|
|
19
|
-
<h2 class="govuk-heading-m">{{
|
|
19
|
+
<h2 class="govuk-heading-m">{{ t('components.paymentField.detailsRequired') }}</h2>
|
|
20
20
|
|
|
21
21
|
<p class="govuk-body">{{ description }}</p>
|
|
22
22
|
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
},
|
|
62
62
|
classes: "govuk-button--secondary govuk-!-margin-right-1 govuk-!-margin-bottom-0"
|
|
63
63
|
}) }}
|
|
64
|
-
<p class="govuk-body govuk-!-margin-bottom-0">or <button class="govuk-link govuk-button--link govuk-!-margin-right-1 govuk-!-margin-bottom-0" name="action" value="external-{{component.model.name}}--step:manual">{{ t('components.addressField.enterManually') }}</button></p>
|
|
64
|
+
<p class="govuk-body govuk-!-margin-bottom-0">{{ t('common.or')}} <button class="govuk-link govuk-button--link govuk-!-margin-right-1 govuk-!-margin-bottom-0" name="action" value="external-{{component.model.name}}--step:manual">{{ t('components.addressField.enterManually') }}</button></p>
|
|
65
65
|
</div>
|
|
66
66
|
{# Include a line break if this is the last component #}
|
|
67
67
|
{% if components[components.length - 1] == component %}
|
|
@@ -8,7 +8,9 @@
|
|
|
8
8
|
</p>
|
|
9
9
|
{%- endmacro -%}
|
|
10
10
|
|
|
11
|
-
{% call govukNotificationBanner(
|
|
11
|
+
{% call govukNotificationBanner({
|
|
12
|
+
titleText: t('pages.preview.bannerTitle')
|
|
13
|
+
}) %}
|
|
12
14
|
{% set previewModeTranslated = t('common.' + previewMode) %}
|
|
13
15
|
{% if not context.isForceAccess %}
|
|
14
16
|
<p class="govuk-notification-banner__heading govuk-!-margin-bottom-0">
|
|
@@ -218,5 +218,5 @@ function getGeospatialCountries() {
|
|
|
218
218
|
/**
|
|
219
219
|
* @import { ServerRoute } from '@hapi/hapi'
|
|
220
220
|
* @import { FeatureCollection } from 'geojson'
|
|
221
|
-
* @import { MapConfiguration, MapProxyGetRequestRefs, MapGeocodeGetRequestRefs,
|
|
221
|
+
* @import { MapConfiguration, MapProxyGetRequestRefs, MapGeocodeGetRequestRefs, GeospatialCountriesGetRequestRefs } from '../types.js'
|
|
222
222
|
*/
|
|
@@ -21,13 +21,6 @@
|
|
|
21
21
|
* @property {string} query - name query
|
|
22
22
|
*/
|
|
23
23
|
|
|
24
|
-
/**
|
|
25
|
-
* Map reverse geocode query params
|
|
26
|
-
* @typedef {object} MapReverseGeocodeQuery
|
|
27
|
-
* @property {number} easting - the Easting point
|
|
28
|
-
* @property {number} northing - the Northing point
|
|
29
|
-
*/
|
|
30
|
-
|
|
31
24
|
/**
|
|
32
25
|
* Geospatial countries query params
|
|
33
26
|
* @typedef {object} GeospatialCountriesQuery
|
|
@@ -47,12 +40,6 @@
|
|
|
47
40
|
* @property {MapGeocodeQuery} Query - Request query
|
|
48
41
|
*/
|
|
49
42
|
|
|
50
|
-
/**
|
|
51
|
-
* Map reverse geocode get request
|
|
52
|
-
* @typedef {object} MapReverseGeocodeGetRequestRefs
|
|
53
|
-
* @property {MapReverseGeocodeQuery} Query - Request query
|
|
54
|
-
*/
|
|
55
|
-
|
|
56
43
|
/**
|
|
57
44
|
* Map countries geojson get request
|
|
58
45
|
* @typedef {object} GeospatialCountriesGetRequestRefs
|
|
@@ -62,11 +49,9 @@
|
|
|
62
49
|
/**
|
|
63
50
|
* @typedef {MapProxyGetRequestRefs} MapProxyRequestRefs
|
|
64
51
|
* @typedef {MapGeocodeGetRequestRefs} MapGeocodeRequestRefs
|
|
65
|
-
* @typedef {MapReverseGeocodeGetRequestRefs} MapReverseGeocodeRequestRefs
|
|
66
52
|
* @typedef {Request<MapGeocodeGetRequestRefs>} MapProxyGetRequest
|
|
67
53
|
* @typedef {Request<MapGeocodeGetRequestRefs>} MapGeocodeGetRequest
|
|
68
|
-
* @typedef {
|
|
69
|
-
* @typedef {MapProxyGetRequest | MapGeocodeGetRequest | MapReverseGeocodeGetRequest} MapRequest
|
|
54
|
+
* @typedef {MapProxyGetRequest | MapGeocodeGetRequest } MapRequest
|
|
70
55
|
*/
|
|
71
56
|
|
|
72
57
|
//
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Nunjucks filter to add/replace a parameter on a query string of a url.
|
|
3
|
+
* Currently only used in forms-runner.
|
|
4
|
+
* @param {string} urlPath - existing relative url with query string
|
|
5
|
+
* @param {string} paramName - name of parameter
|
|
6
|
+
* @param {string} paramValue - value of parameter
|
|
7
|
+
* @returns {string}
|
|
8
|
+
*/
|
|
9
|
+
export function applyUrlParam(urlPath, paramName, paramValue) {
|
|
10
|
+
if (typeof urlPath !== 'string') {
|
|
11
|
+
return ''
|
|
12
|
+
}
|
|
13
|
+
const url = new URL(urlPath, 'https://dummy')
|
|
14
|
+
url.searchParams.set(paramName, paramValue)
|
|
15
|
+
|
|
16
|
+
return url.pathname + url.search
|
|
17
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { format } from 'date-fns'
|
|
2
2
|
|
|
3
|
+
import { toLanguageLocale } from '../engine/helpers.js'
|
|
3
4
|
import { PaymentService } from './service.js'
|
|
4
5
|
|
|
5
6
|
export const DEFAULT_PAYMENT_HELP_URL =
|
|
@@ -28,10 +29,29 @@ export async function createPaymentService(
|
|
|
28
29
|
/**
|
|
29
30
|
* Formats a payment date for display
|
|
30
31
|
* @param {string} isoString - ISO date string
|
|
32
|
+
* @param {string} language - the target language
|
|
31
33
|
* @returns {string} Formatted date string (e.g., "26 January 2026 5:01pm")
|
|
32
34
|
*/
|
|
33
|
-
export function formatPaymentDate(isoString) {
|
|
34
|
-
return
|
|
35
|
+
export function formatPaymentDate(isoString, language) {
|
|
36
|
+
return formatDateForLanguage(
|
|
37
|
+
new Date(isoString),
|
|
38
|
+
'd MMMM yyyy h:mmaaa',
|
|
39
|
+
language
|
|
40
|
+
)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Formats a date for display in a specific language.
|
|
45
|
+
* To use additional languages, the appropriate module must be imported from 'date-fns/locale'
|
|
46
|
+
* @param { Date | string } date - the date
|
|
47
|
+
* @param {string} formatMask - the format mask
|
|
48
|
+
* @param {string} language - the target language
|
|
49
|
+
* @returns {string} Formatted date string (e.g., "26 January 2026 5:01pm")
|
|
50
|
+
*/
|
|
51
|
+
export function formatDateForLanguage(date, formatMask, language) {
|
|
52
|
+
return format(date, formatMask, {
|
|
53
|
+
locale: toLanguageLocale(language)
|
|
54
|
+
})
|
|
35
55
|
}
|
|
36
56
|
|
|
37
57
|
/**
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { StatusCodes } from 'http-status-codes'
|
|
2
2
|
|
|
3
3
|
import { logger } from '../../common/helpers/logging/logger.js'
|
|
4
|
+
import { toPayLanguageCode } from '../engine/helpers.js'
|
|
4
5
|
import {
|
|
5
6
|
buildPaymentInfo,
|
|
6
7
|
convertPenceToPounds
|
|
@@ -38,7 +39,7 @@ export class PaymentService {
|
|
|
38
39
|
* @param {string} returnUrl
|
|
39
40
|
* @param {string} reference
|
|
40
41
|
* @param {boolean} isLivePayment
|
|
41
|
-
* @param {{ formId: string, slug: string } | undefined } metadata
|
|
42
|
+
* @param {{ formId: string, slug: string, language: string } | undefined } metadata
|
|
42
43
|
* @param {string} [email] - optional email to prepopulate on GOV.UK Pay
|
|
43
44
|
*/
|
|
44
45
|
async createPayment(
|
|
@@ -50,6 +51,8 @@ export class PaymentService {
|
|
|
50
51
|
metadata,
|
|
51
52
|
email
|
|
52
53
|
) {
|
|
54
|
+
const language = toPayLanguageCode(metadata?.language)
|
|
55
|
+
|
|
53
56
|
try {
|
|
54
57
|
/** @type {CreatePaymentRequest} */
|
|
55
58
|
const payload = {
|
|
@@ -58,7 +61,8 @@ export class PaymentService {
|
|
|
58
61
|
reference,
|
|
59
62
|
metadata,
|
|
60
63
|
return_url: returnUrl,
|
|
61
|
-
delayed_capture: true
|
|
64
|
+
delayed_capture: true,
|
|
65
|
+
language
|
|
62
66
|
}
|
|
63
67
|
|
|
64
68
|
// Prepopulate email on GOV.UK Pay if provided
|
|
@@ -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)
|
|
@@ -16,6 +16,7 @@ const countyFieldName = 'county'
|
|
|
16
16
|
const postcodeFieldName = 'postcode'
|
|
17
17
|
|
|
18
18
|
const GOVUK_MARGIN_RIGHT_1 = 'govuk-!-margin-right-1'
|
|
19
|
+
const COMMON_BACK = 'common.back'
|
|
19
20
|
|
|
20
21
|
export const steps = {
|
|
21
22
|
// Step 1: Postcode/building name input
|
|
@@ -403,19 +404,20 @@ function getHref(step) {
|
|
|
403
404
|
/**
|
|
404
405
|
* The postcode lookup details form view model
|
|
405
406
|
* @param {PostcodeLookupSessionData} data
|
|
407
|
+
* @param {Translator} translator
|
|
406
408
|
* @param {PostcodeLookupDetailsData} [payload]
|
|
407
409
|
* @param {Error} [err]
|
|
408
410
|
*/
|
|
409
|
-
export function detailsViewModel(data, payload, err) {
|
|
410
|
-
const {
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
} = data.initial
|
|
411
|
+
export function detailsViewModel(data, translator, payload, err) {
|
|
412
|
+
const { componentId, componentHint, sourceUrl, languages } = data.initial
|
|
413
|
+
|
|
414
|
+
const { t, tComponent, tForm } = translator
|
|
415
|
+
|
|
416
|
+
const component = /** @type {ComponentDef} */ ({ id: componentId })
|
|
416
417
|
|
|
417
418
|
const backLink = {
|
|
418
|
-
href: sourceUrl
|
|
419
|
+
href: sourceUrl,
|
|
420
|
+
text: t(COMMON_BACK)
|
|
419
421
|
}
|
|
420
422
|
|
|
421
423
|
const { errors, postcodeQueryError, buildingNameQueryError } =
|
|
@@ -425,42 +427,53 @@ export function detailsViewModel(data, payload, err) {
|
|
|
425
427
|
payload ?? data.details,
|
|
426
428
|
postcodeQueryError,
|
|
427
429
|
buildingNameQueryError,
|
|
428
|
-
language
|
|
430
|
+
translator.language
|
|
429
431
|
)
|
|
430
432
|
|
|
433
|
+
const hint = componentHint && {
|
|
434
|
+
text: tComponent(component, 'hint')
|
|
435
|
+
}
|
|
436
|
+
|
|
431
437
|
const continueButton = {
|
|
432
|
-
text:
|
|
438
|
+
text: t('postcodeLookup.findAddress'),
|
|
433
439
|
classes: GOVUK_MARGIN_RIGHT_1
|
|
434
440
|
}
|
|
435
441
|
const manualLink = {
|
|
436
|
-
text:
|
|
442
|
+
text: t('postcodeLookup.enterManually'),
|
|
437
443
|
href: getHref(steps.manual)
|
|
438
444
|
}
|
|
439
445
|
|
|
446
|
+
const selector = languages?.length ? { languages } : {}
|
|
447
|
+
|
|
440
448
|
return {
|
|
441
449
|
step: steps.details,
|
|
442
450
|
showTitle: true,
|
|
443
|
-
name:
|
|
451
|
+
name: tForm('title'),
|
|
444
452
|
serviceUrl: sourceUrl,
|
|
445
|
-
pageTitle,
|
|
453
|
+
pageTitle: tComponent(component, 'title'),
|
|
454
|
+
hint,
|
|
446
455
|
backLink,
|
|
447
456
|
errors,
|
|
448
457
|
fields,
|
|
449
|
-
buttons: { continueButton, manualLink }
|
|
458
|
+
buttons: { continueButton, manualLink },
|
|
459
|
+
t,
|
|
460
|
+
language: translator.language,
|
|
461
|
+
...selector
|
|
450
462
|
}
|
|
451
463
|
}
|
|
452
464
|
|
|
453
465
|
/**
|
|
454
466
|
* The postcode lookup select form view model
|
|
455
467
|
* @param {{ session: PostcodeLookupSessionData, apiKey: string }} data
|
|
468
|
+
* @param {Translator} translator
|
|
456
469
|
* @param {PostcodeLookupSelectPayload} [payload]
|
|
457
470
|
* @param {Error} [err]
|
|
458
471
|
*/
|
|
459
|
-
export async function selectViewModel(data, payload, err) {
|
|
472
|
+
export async function selectViewModel(data, translator, payload, err) {
|
|
460
473
|
const { session, apiKey } = data
|
|
461
474
|
const { details, initial } = session
|
|
462
475
|
const { postcodeQuery, buildingNameQuery } = details
|
|
463
|
-
const language
|
|
476
|
+
const { language, t, tComponent, tForm } = translator
|
|
464
477
|
|
|
465
478
|
const {
|
|
466
479
|
hasAddresses,
|
|
@@ -471,12 +484,18 @@ export async function selectViewModel(data, payload, err) {
|
|
|
471
484
|
} = await getAddresses(postcodeQuery, buildingNameQuery, apiKey)
|
|
472
485
|
|
|
473
486
|
const title = hasAddresses
|
|
474
|
-
?
|
|
475
|
-
|
|
487
|
+
? tComponent(
|
|
488
|
+
/** @type {ComponentDef} */ ({ id: initial.componentId }),
|
|
489
|
+
'title'
|
|
490
|
+
)
|
|
491
|
+
: t('postcodeLookup.noAddressFoundTitle')
|
|
476
492
|
const formPath = initial.sourceUrl
|
|
477
493
|
const href = getHref()
|
|
478
494
|
|
|
479
|
-
const backLink = {
|
|
495
|
+
const backLink = {
|
|
496
|
+
href,
|
|
497
|
+
text: t(COMMON_BACK)
|
|
498
|
+
}
|
|
480
499
|
|
|
481
500
|
const { errors, uprnError } = buildErrors(err)
|
|
482
501
|
|
|
@@ -490,7 +509,7 @@ export async function selectViewModel(data, payload, err) {
|
|
|
490
509
|
language
|
|
491
510
|
)
|
|
492
511
|
|
|
493
|
-
const searchAgainText =
|
|
512
|
+
const searchAgainText = t('postcodeLookup.searchAgain')
|
|
494
513
|
|
|
495
514
|
const searchAgainLink = {
|
|
496
515
|
text: searchAgainText,
|
|
@@ -499,27 +518,29 @@ export async function selectViewModel(data, payload, err) {
|
|
|
499
518
|
|
|
500
519
|
const continueButton = {
|
|
501
520
|
href: hasAddresses ? undefined : href,
|
|
502
|
-
text: hasAddresses
|
|
503
|
-
? i18nT('postcodeLookup.useThisAddress', language)
|
|
504
|
-
: searchAgainText,
|
|
521
|
+
text: hasAddresses ? t('postcodeLookup.useThisAddress') : searchAgainText,
|
|
505
522
|
classes: GOVUK_MARGIN_RIGHT_1
|
|
506
523
|
}
|
|
507
524
|
const manualLink = {
|
|
508
|
-
text:
|
|
525
|
+
text: t('postcodeLookup.enterManually'),
|
|
509
526
|
href: `${href}?step=${steps.manual}`
|
|
510
527
|
}
|
|
511
528
|
|
|
512
529
|
const addressesFoundText = hasAddresses
|
|
513
|
-
?
|
|
530
|
+
? t('postcodeLookup.addressFound', { count: addressCount })
|
|
514
531
|
: undefined
|
|
515
532
|
const noAddressFoundText = !hasAddresses
|
|
516
|
-
?
|
|
533
|
+
? t('postcodeLookup.noAddressFoundBody')
|
|
517
534
|
: undefined
|
|
518
535
|
|
|
536
|
+
const selector = initial.languages?.length
|
|
537
|
+
? { languages: initial.languages }
|
|
538
|
+
: {}
|
|
539
|
+
|
|
519
540
|
return {
|
|
520
541
|
step: steps.select,
|
|
521
542
|
showTitle: true,
|
|
522
|
-
name: title,
|
|
543
|
+
name: tForm('title'),
|
|
523
544
|
serviceUrl: formPath,
|
|
524
545
|
pageTitle: title,
|
|
525
546
|
backLink,
|
|
@@ -533,28 +554,32 @@ export async function selectViewModel(data, payload, err) {
|
|
|
533
554
|
hasMultipleAddresses,
|
|
534
555
|
addressesFoundText,
|
|
535
556
|
noAddressFoundText,
|
|
536
|
-
buttons: { continueButton, manualLink }
|
|
557
|
+
buttons: { continueButton, manualLink },
|
|
558
|
+
t,
|
|
559
|
+
language,
|
|
560
|
+
...selector
|
|
537
561
|
}
|
|
538
562
|
}
|
|
539
563
|
|
|
540
564
|
/**
|
|
541
565
|
* The postcode lookup manual form view model
|
|
542
566
|
* @param {PostcodeLookupSessionData} data
|
|
567
|
+
* @param {Translator} translator
|
|
543
568
|
* @param {PostcodeLookupManualPayload} [payload]
|
|
544
569
|
* @param {Error} [err]
|
|
545
570
|
*/
|
|
546
|
-
export function manualViewModel(data, payload, err) {
|
|
547
|
-
const {
|
|
548
|
-
componentTitle,
|
|
549
|
-
sourceUrl,
|
|
550
|
-
componentHint,
|
|
551
|
-
language = 'en-GB'
|
|
552
|
-
} = data.initial
|
|
571
|
+
export function manualViewModel(data, translator, payload, err) {
|
|
572
|
+
const { componentId, sourceUrl, componentHint, languages } = data.initial
|
|
553
573
|
const formPath = sourceUrl
|
|
554
574
|
const href = getHref()
|
|
555
575
|
|
|
576
|
+
const { t, tComponent, tForm } = translator
|
|
577
|
+
|
|
578
|
+
const component = /** @type {ComponentDef} */ ({ id: componentId })
|
|
579
|
+
|
|
556
580
|
const backLink = {
|
|
557
|
-
href
|
|
581
|
+
href,
|
|
582
|
+
text: t(COMMON_BACK)
|
|
558
583
|
}
|
|
559
584
|
|
|
560
585
|
const {
|
|
@@ -567,7 +592,7 @@ export function manualViewModel(data, payload, err) {
|
|
|
567
592
|
} = buildErrors(err)
|
|
568
593
|
|
|
569
594
|
const hint = componentHint && {
|
|
570
|
-
text:
|
|
595
|
+
text: tComponent(component, 'hint')
|
|
571
596
|
}
|
|
572
597
|
|
|
573
598
|
const fields = getManualFields(
|
|
@@ -577,29 +602,34 @@ export function manualViewModel(data, payload, err) {
|
|
|
577
602
|
townError,
|
|
578
603
|
countyError,
|
|
579
604
|
postcodeError,
|
|
580
|
-
language
|
|
605
|
+
translator.language
|
|
581
606
|
)
|
|
582
607
|
|
|
583
608
|
const continueButton = {
|
|
584
|
-
text:
|
|
609
|
+
text: t('postcodeLookup.useThisAddress'),
|
|
585
610
|
classes: GOVUK_MARGIN_RIGHT_1
|
|
586
611
|
}
|
|
587
612
|
const detailsLink = {
|
|
588
|
-
text:
|
|
613
|
+
text: t('postcodeLookup.findAnAddressInstead'),
|
|
589
614
|
href
|
|
590
615
|
}
|
|
591
616
|
|
|
617
|
+
const selector = languages?.length ? { languages } : {}
|
|
618
|
+
|
|
592
619
|
return {
|
|
593
620
|
step: steps.manual,
|
|
594
621
|
showTitle: true,
|
|
595
|
-
name:
|
|
622
|
+
name: tForm('title'),
|
|
596
623
|
serviceUrl: formPath,
|
|
597
|
-
pageTitle:
|
|
624
|
+
pageTitle: tComponent(component, 'title'),
|
|
598
625
|
backLink,
|
|
599
626
|
errors,
|
|
600
627
|
hint,
|
|
601
628
|
fields,
|
|
602
|
-
buttons: { continueButton, detailsLink }
|
|
629
|
+
buttons: { continueButton, detailsLink },
|
|
630
|
+
t,
|
|
631
|
+
language: translator.language,
|
|
632
|
+
...selector
|
|
603
633
|
}
|
|
604
634
|
}
|
|
605
635
|
|
|
@@ -607,5 +637,7 @@ export function manualViewModel(data, payload, err) {
|
|
|
607
637
|
|
|
608
638
|
/**
|
|
609
639
|
* @import { ObjectSchema, ValidationErrorItem } from 'joi'
|
|
640
|
+
* @import { ComponentDef } from '@defra/forms-model'
|
|
610
641
|
* @import { Address, PostcodeLookupDetailsData, PostcodeLookupDetailsPayload, PostcodeLookupManualPayload, PostcodeLookupSelectPayload, PostcodeLookupSessionData } from '../types.js'
|
|
642
|
+
* @import { Translator } from '../../engine/i18n/types.js'
|
|
611
643
|
*/
|