@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
|
@@ -2,7 +2,6 @@ import {
|
|
|
2
2
|
ComponentType,
|
|
3
3
|
hasFormComponents,
|
|
4
4
|
isFormType,
|
|
5
|
-
type ComponentDef,
|
|
6
5
|
type DeclarationFieldComponent,
|
|
7
6
|
type Item
|
|
8
7
|
} from '@defra/forms-model'
|
|
@@ -121,10 +120,12 @@ export class DeclarationField extends FormComponent {
|
|
|
121
120
|
const { declarationRequired } = buildValidationMessages(translator.t)
|
|
122
121
|
const msg = declarationRequired as unknown as string
|
|
123
122
|
return {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
123
|
+
[this.name]: {
|
|
124
|
+
'any.required': msg,
|
|
125
|
+
'any.unknown': msg,
|
|
126
|
+
'array.includesRequiredUnknowns': msg
|
|
127
|
+
} as unknown as LanguageMessages
|
|
128
|
+
}
|
|
128
129
|
}
|
|
129
130
|
|
|
130
131
|
getDisplayStringFromFormValue(
|
|
@@ -148,7 +149,7 @@ export class DeclarationField extends FormComponent {
|
|
|
148
149
|
'components.declarationField.defaultLabel'
|
|
149
150
|
)
|
|
150
151
|
} = this
|
|
151
|
-
const content = tComponent(this
|
|
152
|
+
const content = tComponent(this.def, 'content')
|
|
152
153
|
|
|
153
154
|
const viewModel = super.getViewModel(context)
|
|
154
155
|
let { fieldset, label } = viewModel
|
|
@@ -15,7 +15,10 @@ import {
|
|
|
15
15
|
getLocationFieldViewModel
|
|
16
16
|
} from './LocationFieldHelpers.js'
|
|
17
17
|
import { NumberField } from './NumberField.js'
|
|
18
|
-
import {
|
|
18
|
+
import {
|
|
19
|
+
createLowerFirstExpression,
|
|
20
|
+
getTranslatedLabel
|
|
21
|
+
} from './helpers/index.js'
|
|
19
22
|
import {
|
|
20
23
|
type EastingNorthingState,
|
|
21
24
|
type RenderContext
|
|
@@ -31,7 +34,6 @@ import {
|
|
|
31
34
|
type FormSubmissionError,
|
|
32
35
|
type FormSubmissionState
|
|
33
36
|
} from '../types.js'
|
|
34
|
-
import { convertToLanguageMessages } from '../../../utils/type-utils.js'
|
|
35
37
|
|
|
36
38
|
// British National Grid coordinate limits
|
|
37
39
|
const DEFAULT_EASTING_MIN = 0
|
|
@@ -55,89 +57,18 @@ export class EastingNorthingField extends FormComponent {
|
|
|
55
57
|
|
|
56
58
|
const isRequired = options.required !== false
|
|
57
59
|
|
|
58
|
-
const eastingMin
|
|
59
|
-
|
|
60
|
-
const northingMin = schema?.northing?.min ?? DEFAULT_NORTHING_MIN
|
|
61
|
-
const northingMax = schema?.northing?.max ?? DEFAULT_NORTHING_MAX
|
|
62
|
-
|
|
63
|
-
const fieldLabel = lowerFirst(this.label)
|
|
60
|
+
const { eastingMin, eastingMax, northingMin, northingMax } =
|
|
61
|
+
EastingNorthingField.getMinMax(schema)
|
|
64
62
|
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
)
|
|
75
|
-
|
|
76
|
-
const customValidationMessages: LanguageMessages =
|
|
77
|
-
convertToLanguageMessages({
|
|
78
|
-
'any.required': tPlugin(
|
|
79
|
-
'components.eastingNorthingField.eastingRequired',
|
|
80
|
-
'en-GB'
|
|
81
|
-
),
|
|
82
|
-
'number.base': tPlugin(
|
|
83
|
-
'components.eastingNorthingField.eastingRequired',
|
|
84
|
-
'en-GB'
|
|
85
|
-
),
|
|
86
|
-
'number.min': tPlugin(
|
|
87
|
-
'components.eastingNorthingField.eastingRange',
|
|
88
|
-
'en-GB',
|
|
89
|
-
{
|
|
90
|
-
fieldLabel,
|
|
91
|
-
min: eastingMin,
|
|
92
|
-
max: eastingMax
|
|
93
|
-
}
|
|
94
|
-
),
|
|
95
|
-
'number.max': tPlugin(
|
|
96
|
-
'components.eastingNorthingField.eastingRange',
|
|
97
|
-
'en-GB',
|
|
98
|
-
{
|
|
99
|
-
fieldLabel,
|
|
100
|
-
min: eastingMin,
|
|
101
|
-
max: eastingMax
|
|
102
|
-
}
|
|
103
|
-
),
|
|
104
|
-
'number.precision': eastingDigitsMessage,
|
|
105
|
-
'number.integer': eastingDigitsMessage,
|
|
106
|
-
'number.unsafe': eastingDigitsMessage
|
|
107
|
-
})
|
|
108
|
-
|
|
109
|
-
const northingValidationMessages: LanguageMessages =
|
|
110
|
-
convertToLanguageMessages({
|
|
111
|
-
'any.required': tPlugin(
|
|
112
|
-
'components.eastingNorthingField.northingRequired',
|
|
113
|
-
'en-GB'
|
|
114
|
-
),
|
|
115
|
-
'number.base': tPlugin(
|
|
116
|
-
'components.eastingNorthingField.northingRequired',
|
|
117
|
-
'en-GB'
|
|
118
|
-
),
|
|
119
|
-
'number.min': tPlugin(
|
|
120
|
-
'components.eastingNorthingField.northingRange',
|
|
121
|
-
'en-GB',
|
|
122
|
-
{
|
|
123
|
-
fieldLabel,
|
|
124
|
-
min: northingMin,
|
|
125
|
-
max: northingMax
|
|
126
|
-
}
|
|
127
|
-
),
|
|
128
|
-
'number.max': tPlugin(
|
|
129
|
-
'components.eastingNorthingField.northingRange',
|
|
130
|
-
'en-GB',
|
|
131
|
-
{
|
|
132
|
-
fieldLabel,
|
|
133
|
-
min: northingMin,
|
|
134
|
-
max: northingMax
|
|
135
|
-
}
|
|
136
|
-
),
|
|
137
|
-
'number.precision': northingDigitsMessage,
|
|
138
|
-
'number.integer': northingDigitsMessage,
|
|
139
|
-
'number.unsafe': northingDigitsMessage
|
|
140
|
-
})
|
|
63
|
+
const { eastingValidationMessages, northingValidationMessages } =
|
|
64
|
+
EastingNorthingField.buildErrorMessages(
|
|
65
|
+
this.label,
|
|
66
|
+
eastingMin,
|
|
67
|
+
eastingMax,
|
|
68
|
+
northingMin,
|
|
69
|
+
northingMax,
|
|
70
|
+
'en-GB'
|
|
71
|
+
)
|
|
141
72
|
|
|
142
73
|
this.collection = new ComponentCollection(
|
|
143
74
|
[
|
|
@@ -154,7 +85,7 @@ export class EastingNorthingField extends FormComponent {
|
|
|
154
85
|
required: isRequired,
|
|
155
86
|
optionalText: true,
|
|
156
87
|
classes: 'govuk-input--width-10',
|
|
157
|
-
customValidationMessages
|
|
88
|
+
customValidationMessages: eastingValidationMessages
|
|
158
89
|
}
|
|
159
90
|
},
|
|
160
91
|
{
|
|
@@ -192,14 +123,15 @@ export class EastingNorthingField extends FormComponent {
|
|
|
192
123
|
|
|
193
124
|
getDisplayStringFromFormValue(
|
|
194
125
|
value: EastingNorthingState | undefined,
|
|
195
|
-
|
|
126
|
+
translator: Translator
|
|
196
127
|
): string {
|
|
197
128
|
if (!value) {
|
|
198
129
|
return ''
|
|
199
130
|
}
|
|
200
131
|
|
|
201
|
-
|
|
202
|
-
|
|
132
|
+
const { t } = translator
|
|
133
|
+
|
|
134
|
+
return `${t('components.eastingNorthingField.easting')}: ${value.easting}\n${t('components.eastingNorthingField.northing')}: ${value.northing}`
|
|
203
135
|
}
|
|
204
136
|
|
|
205
137
|
getDisplayStringFromState(
|
|
@@ -218,7 +150,7 @@ export class EastingNorthingField extends FormComponent {
|
|
|
218
150
|
return null
|
|
219
151
|
}
|
|
220
152
|
|
|
221
|
-
return
|
|
153
|
+
return `${value.easting}, ${value.northing}`
|
|
222
154
|
}
|
|
223
155
|
|
|
224
156
|
getContextValueFromState(state: FormSubmissionState) {
|
|
@@ -244,6 +176,26 @@ export class EastingNorthingField extends FormComponent {
|
|
|
244
176
|
return EastingNorthingField.isEastingNorthing(value)
|
|
245
177
|
}
|
|
246
178
|
|
|
179
|
+
getValidationMessagesOverride(translator: Translator) {
|
|
180
|
+
const def = this.def as EastingNorthingFieldComponent
|
|
181
|
+
const translatedLabel = getTranslatedLabel(def, translator)
|
|
182
|
+
const { eastingMin, eastingMax, northingMin, northingMax } =
|
|
183
|
+
EastingNorthingField.getMinMax(def.schema)
|
|
184
|
+
const { eastingValidationMessages, northingValidationMessages } =
|
|
185
|
+
EastingNorthingField.buildErrorMessages(
|
|
186
|
+
translatedLabel,
|
|
187
|
+
eastingMin,
|
|
188
|
+
eastingMax,
|
|
189
|
+
northingMin,
|
|
190
|
+
northingMax,
|
|
191
|
+
translator.language
|
|
192
|
+
)
|
|
193
|
+
return {
|
|
194
|
+
[`${this.name}__easting`]: eastingValidationMessages,
|
|
195
|
+
[`${this.name}__northing`]: northingValidationMessages
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
|
|
247
199
|
/**
|
|
248
200
|
* For error preview page that shows all possible errors on a component
|
|
249
201
|
*/
|
|
@@ -309,4 +261,117 @@ export class EastingNorthingField extends FormComponent {
|
|
|
309
261
|
NumberField.isNumber(value.northing)
|
|
310
262
|
)
|
|
311
263
|
}
|
|
264
|
+
|
|
265
|
+
static buildErrorMessages(
|
|
266
|
+
label: string,
|
|
267
|
+
eastingMin: number,
|
|
268
|
+
eastingMax: number,
|
|
269
|
+
northingMin: number,
|
|
270
|
+
northingMax: number,
|
|
271
|
+
language: string
|
|
272
|
+
) {
|
|
273
|
+
const fieldLabel = lowerFirst(label)
|
|
274
|
+
|
|
275
|
+
const eastingDigitsMessage = tPlugin(
|
|
276
|
+
'components.eastingNorthingField.eastingDigits',
|
|
277
|
+
language,
|
|
278
|
+
{ fieldLabel }
|
|
279
|
+
)
|
|
280
|
+
const northingDigitsMessage = tPlugin(
|
|
281
|
+
'components.eastingNorthingField.northingDigits',
|
|
282
|
+
language,
|
|
283
|
+
{ fieldLabel }
|
|
284
|
+
)
|
|
285
|
+
|
|
286
|
+
const eastingValidationMessages: LanguageMessages = {
|
|
287
|
+
'any.required': tPlugin(
|
|
288
|
+
'components.eastingNorthingField.eastingRequired',
|
|
289
|
+
language
|
|
290
|
+
),
|
|
291
|
+
'number.base': tPlugin(
|
|
292
|
+
'components.eastingNorthingField.eastingRequired',
|
|
293
|
+
language
|
|
294
|
+
),
|
|
295
|
+
'number.min': tPlugin(
|
|
296
|
+
'components.eastingNorthingField.eastingRange',
|
|
297
|
+
language,
|
|
298
|
+
{
|
|
299
|
+
fieldLabel,
|
|
300
|
+
min: eastingMin,
|
|
301
|
+
max: eastingMax
|
|
302
|
+
}
|
|
303
|
+
),
|
|
304
|
+
'number.max': tPlugin(
|
|
305
|
+
'components.eastingNorthingField.eastingRange',
|
|
306
|
+
language,
|
|
307
|
+
{
|
|
308
|
+
fieldLabel,
|
|
309
|
+
min: eastingMin,
|
|
310
|
+
max: eastingMax
|
|
311
|
+
}
|
|
312
|
+
),
|
|
313
|
+
'number.precision': eastingDigitsMessage,
|
|
314
|
+
'number.integer': eastingDigitsMessage,
|
|
315
|
+
'number.unsafe': eastingDigitsMessage
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
const northingValidationMessages: LanguageMessages = {
|
|
319
|
+
'any.required': tPlugin(
|
|
320
|
+
'components.eastingNorthingField.northingRequired',
|
|
321
|
+
language
|
|
322
|
+
),
|
|
323
|
+
'number.base': tPlugin(
|
|
324
|
+
'components.eastingNorthingField.northingRequired',
|
|
325
|
+
language
|
|
326
|
+
),
|
|
327
|
+
'number.min': tPlugin(
|
|
328
|
+
'components.eastingNorthingField.northingRange',
|
|
329
|
+
language,
|
|
330
|
+
{
|
|
331
|
+
fieldLabel,
|
|
332
|
+
min: northingMin,
|
|
333
|
+
max: northingMax
|
|
334
|
+
}
|
|
335
|
+
),
|
|
336
|
+
'number.max': tPlugin(
|
|
337
|
+
'components.eastingNorthingField.northingRange',
|
|
338
|
+
language,
|
|
339
|
+
{
|
|
340
|
+
fieldLabel,
|
|
341
|
+
min: northingMin,
|
|
342
|
+
max: northingMax
|
|
343
|
+
}
|
|
344
|
+
),
|
|
345
|
+
'number.precision': northingDigitsMessage,
|
|
346
|
+
'number.integer': northingDigitsMessage,
|
|
347
|
+
'number.unsafe': northingDigitsMessage
|
|
348
|
+
}
|
|
349
|
+
return {
|
|
350
|
+
eastingValidationMessages,
|
|
351
|
+
northingValidationMessages
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
// Read schema values from def.schema with fallback defaults
|
|
356
|
+
static getMinMax(
|
|
357
|
+
schema:
|
|
358
|
+
| {
|
|
359
|
+
easting?: {
|
|
360
|
+
min?: number
|
|
361
|
+
max?: number
|
|
362
|
+
}
|
|
363
|
+
northing?: {
|
|
364
|
+
min?: number
|
|
365
|
+
max?: number
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
| undefined
|
|
369
|
+
) {
|
|
370
|
+
return {
|
|
371
|
+
eastingMin: schema?.easting?.min ?? DEFAULT_EASTING_MIN,
|
|
372
|
+
eastingMax: schema?.easting?.max ?? DEFAULT_EASTING_MAX,
|
|
373
|
+
northingMin: schema?.northing?.min ?? DEFAULT_NORTHING_MIN,
|
|
374
|
+
northingMax: schema?.northing?.max ?? DEFAULT_NORTHING_MAX
|
|
375
|
+
}
|
|
376
|
+
}
|
|
312
377
|
}
|
|
@@ -40,7 +40,8 @@ export class EmailAddressField extends FormComponent {
|
|
|
40
40
|
formSchema = formSchema.messages({
|
|
41
41
|
'any.required': message,
|
|
42
42
|
'string.empty': message,
|
|
43
|
-
'string.email': message
|
|
43
|
+
'string.email': message,
|
|
44
|
+
'string.unicode': message
|
|
44
45
|
})
|
|
45
46
|
} else if (options.customValidationMessages) {
|
|
46
47
|
formSchema = formSchema.messages(options.customValidationMessages)
|
|
@@ -5,11 +5,13 @@ import {
|
|
|
5
5
|
import Boom from '@hapi/boom'
|
|
6
6
|
import joi, { type ArraySchema } from 'joi'
|
|
7
7
|
|
|
8
|
+
import { EN_GB } from '../../../constants.js'
|
|
8
9
|
import {
|
|
9
10
|
FormComponent,
|
|
10
11
|
isUploadState
|
|
11
12
|
} from './FormComponent.js'
|
|
12
13
|
import { type RenderContext } from './types.js'
|
|
14
|
+
import { t as tPlugin } from '../i18n/index.js'
|
|
13
15
|
import { type Translator } from '../i18n/types.js'
|
|
14
16
|
import { InvalidComponentStateError } from '../pageControllers/errors.js'
|
|
15
17
|
import { messageTemplate } from '../pageControllers/validationOptions.js'
|
|
@@ -142,6 +144,8 @@ export class FileUploadField extends FormComponent {
|
|
|
142
144
|
formSchema = formSchema.length(schema.length)
|
|
143
145
|
}
|
|
144
146
|
|
|
147
|
+
formSchema = formSchema.messages(FileUploadField.buildErrorMessages(EN_GB))
|
|
148
|
+
|
|
145
149
|
this.formSchema = formSchema.items(formItemSchema)
|
|
146
150
|
this.stateSchema = formSchema
|
|
147
151
|
.items(formItemSchema)
|
|
@@ -169,7 +173,7 @@ export class FileUploadField extends FormComponent {
|
|
|
169
173
|
return ''
|
|
170
174
|
}
|
|
171
175
|
|
|
172
|
-
return translator.t('
|
|
176
|
+
return translator.t('pages.summary.fileUpload', {
|
|
173
177
|
count: files.length
|
|
174
178
|
})
|
|
175
179
|
}
|
|
@@ -244,7 +248,7 @@ export class FileUploadField extends FormComponent {
|
|
|
244
248
|
|
|
245
249
|
items.push({
|
|
246
250
|
href,
|
|
247
|
-
text: '
|
|
251
|
+
text: t('pages.fileUpload.remove'),
|
|
248
252
|
classes: 'govuk-link--no-visited-state',
|
|
249
253
|
attributes: { id: `${id}__${index}` },
|
|
250
254
|
visuallyHiddenText: file.filename
|
|
@@ -300,6 +304,13 @@ export class FileUploadField extends FormComponent {
|
|
|
300
304
|
return isUploadState(value)
|
|
301
305
|
}
|
|
302
306
|
|
|
307
|
+
getValidationMessagesOverride(translator: Translator) {
|
|
308
|
+
const { language } = translator
|
|
309
|
+
return {
|
|
310
|
+
[this.name]: FileUploadField.buildErrorMessages(language)
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
|
|
303
314
|
/**
|
|
304
315
|
* For error preview page that shows all possible errors on a component
|
|
305
316
|
*/
|
|
@@ -403,4 +414,12 @@ export class FileUploadField extends FormComponent {
|
|
|
403
414
|
]
|
|
404
415
|
}
|
|
405
416
|
}
|
|
417
|
+
|
|
418
|
+
static buildErrorMessages(language: string) {
|
|
419
|
+
return {
|
|
420
|
+
'array.min': tPlugin('validation.filesMin', language),
|
|
421
|
+
'array.max': tPlugin('validation.filesMax', language),
|
|
422
|
+
'array.length': tPlugin('validation.filesLength', language)
|
|
423
|
+
}
|
|
424
|
+
}
|
|
406
425
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import {
|
|
2
|
-
type ComponentDef,
|
|
3
2
|
type FormComponentsDef,
|
|
4
3
|
type FormMetadata,
|
|
5
4
|
type Item
|
|
@@ -158,10 +157,13 @@ export class FormComponent extends ComponentBase {
|
|
|
158
157
|
* Override in composite fields to return translated Joi message overrides for
|
|
159
158
|
* their sub-fields, applied at validation time so schema-level English messages
|
|
160
159
|
* are replaced with the correct language. Return null to skip message patching.
|
|
160
|
+
* The return object may contain message overrides at component-level, or sub-field-level.
|
|
161
|
+
* This would allow different error message overrides per field within a collection e.g.
|
|
162
|
+
* for EastingNothingField
|
|
161
163
|
*/
|
|
162
164
|
getValidationMessagesOverride(
|
|
163
165
|
_translator: Translator
|
|
164
|
-
): LanguageMessages | null {
|
|
166
|
+
): Record<string, LanguageMessages> | null {
|
|
165
167
|
return null
|
|
166
168
|
}
|
|
167
169
|
|
|
@@ -178,15 +180,14 @@ export class FormComponent extends ComponentBase {
|
|
|
178
180
|
const isRequired = !('required' in options) || options.required !== false
|
|
179
181
|
const hideOptional = 'optionalText' in options && options.optionalText
|
|
180
182
|
|
|
181
|
-
const resolvedTitle =
|
|
182
|
-
tComponent(this as unknown as ComponentDef, 'title') || title
|
|
183
|
+
const resolvedTitle = tComponent(this.def, 'title') || title
|
|
183
184
|
const optionalTag =
|
|
184
185
|
!isRequired && !hideOptional ? ` ${t('common.optional')}` : ''
|
|
185
186
|
const label = `${resolvedTitle}${optionalTag}`
|
|
186
187
|
|
|
187
188
|
if (hint) {
|
|
188
189
|
viewModel.hint = {
|
|
189
|
-
text: tComponent(this
|
|
190
|
+
text: tComponent(this.def, 'hint') || hint
|
|
190
191
|
}
|
|
191
192
|
}
|
|
192
193
|
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
FormComponent,
|
|
7
7
|
isGeospatialState
|
|
8
8
|
} from './FormComponent.js'
|
|
9
|
+
import { getMapLayers } from './LocationFieldHelpers.js'
|
|
9
10
|
import { getGeospatialSchema } from './helpers/geospatial.js'
|
|
10
11
|
import { type RenderContext } from './types.js'
|
|
11
12
|
import { type Translator } from '../i18n/types.js'
|
|
@@ -102,6 +103,7 @@ export class GeospatialField extends FormComponent {
|
|
|
102
103
|
...viewModel,
|
|
103
104
|
country: this.options.countries?.at(0),
|
|
104
105
|
geometryTypes: this.options.geometryTypes,
|
|
106
|
+
mapLayers: getMapLayers(this),
|
|
105
107
|
value
|
|
106
108
|
}
|
|
107
109
|
}
|
|
@@ -123,7 +125,12 @@ export class GeospatialField extends FormComponent {
|
|
|
123
125
|
err.href = `#description_${err.path[1]}`
|
|
124
126
|
err.text = translator.t(
|
|
125
127
|
'components.geospatialField.validation.wrongCountry',
|
|
126
|
-
{
|
|
128
|
+
{
|
|
129
|
+
count: Number(err.path[1]) + 1,
|
|
130
|
+
country: translator.t(
|
|
131
|
+
`common.${(err.context.country as string).toLowerCase()}`
|
|
132
|
+
)
|
|
133
|
+
}
|
|
127
134
|
)
|
|
128
135
|
}
|
|
129
136
|
})
|