@defra/forms-engine-plugin 5.0.0-alpha.1 → 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/javascripts/application.min.js +1 -1
- package/.public/javascripts/application.min.js.map +1 -1
- package/.public/javascripts/shared.min.js +1 -1
- 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 +5 -3
- package/.server/client/javascripts/file-upload.js.map +1 -1
- package/.server/client/javascripts/geospatial-map.js +31 -26
- package/.server/client/javascripts/geospatial-map.js.map +1 -1
- package/.server/client/javascripts/location-map.js +9 -1
- package/.server/client/javascripts/location-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 +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/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 +26 -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 +1 -0
- package/.server/server/plugins/engine/components/GeospatialField.js +1 -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 +26 -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 +5 -2
- package/.server/server/plugins/engine/components/LocationFieldHelpers.js +10 -11
- 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/fileuploadfield.html +1 -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/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 +8 -2
- package/src/client/javascripts/file-upload.js +10 -3
- package/src/client/javascripts/geospatial-map.js +32 -30
- package/src/client/javascripts/location-map.js +7 -1
- package/src/client/javascripts/maps.js +5 -0
- package/src/client/javascripts/shared.js +1 -3
- 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/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 +6 -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 +14 -11
- 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/fileuploadfield.html +1 -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/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
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
<!-- Postcode lookup select -->
|
|
34
34
|
<!-- Postcode lookup details display -->
|
|
35
35
|
{%- set detailsHtml -%}
|
|
36
|
-
<strong>{{ details.postcodeQuery }}</strong>{% if details.buildingNameQuery %} and <strong>{{ details.buildingNameQuery }}</strong>{% endif %}
|
|
36
|
+
<strong>{{ details.postcodeQuery }}</strong>{% if details.buildingNameQuery %} {{ t('common.and')}} <strong>{{ details.buildingNameQuery }}</strong>{% endif %}
|
|
37
37
|
{%- endset -%}
|
|
38
38
|
|
|
39
39
|
{% if hasAddresses %}
|
|
@@ -72,9 +72,9 @@
|
|
|
72
72
|
{{ govukButton(buttons.continueButton) }}
|
|
73
73
|
|
|
74
74
|
{% if buttons.manualLink %}
|
|
75
|
-
<p class="govuk-body">or <a class="govuk-link govuk-link--no-visited-state" href="{{ buttons.manualLink.href }}">{{buttons.manualLink.text}}</a></p>
|
|
75
|
+
<p class="govuk-body">{{ t('common.or')}} <a class="govuk-link govuk-link--no-visited-state" href="{{ buttons.manualLink.href }}">{{buttons.manualLink.text}}</a></p>
|
|
76
76
|
{% elif buttons.detailsLink %}
|
|
77
|
-
<p class="govuk-body">or <a class="govuk-link govuk-link--no-visited-state" href="{{ buttons.detailsLink.href }}">{{buttons.detailsLink.text}}</a></p>
|
|
77
|
+
<p class="govuk-body">{{ t('common.or')}} <a class="govuk-link govuk-link--no-visited-state" href="{{ buttons.detailsLink.href }}">{{buttons.detailsLink.text}}</a></p>
|
|
78
78
|
{% endif %}
|
|
79
79
|
</div>
|
|
80
80
|
</form>
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
import { type JoiExpression
|
|
2
|
-
export declare function convertToLanguageMessages(extLanguageMessages: LanguageMessagesExt): LanguageMessages;
|
|
1
|
+
import { type JoiExpression } from 'joi';
|
|
3
2
|
export declare function createJoiExpression(expr: string): JoiExpression;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-utils.js","names":["Joi","
|
|
1
|
+
{"version":3,"file":"type-utils.js","names":["Joi","createJoiExpression","expr","expression"],"sources":["../../../src/server/utils/type-utils.ts"],"sourcesContent":["import Joi, { type JoiExpression } from 'joi'\n\nexport function createJoiExpression(expr: string): JoiExpression {\n return Joi.expression(expr) as unknown as JoiExpression\n}\n"],"mappings":"AAAA,OAAOA,GAAG,MAA8B,KAAK;AAE7C,OAAO,SAASC,mBAAmBA,CAACC,IAAY,EAAiB;EAC/D,OAAOF,GAAG,CAACG,UAAU,CAACD,IAAI,CAAC;AAC7B","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@defra/forms-engine-plugin",
|
|
3
|
-
"version": "5.0.0-alpha.
|
|
3
|
+
"version": "5.0.0-alpha.10",
|
|
4
4
|
"description": "Defra forms engine",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -19,6 +19,11 @@
|
|
|
19
19
|
"import": "./.server/server/plugins/engine/types/index.js",
|
|
20
20
|
"default": "./.server/server/plugins/engine/types/index.js"
|
|
21
21
|
},
|
|
22
|
+
"./maps": {
|
|
23
|
+
"sass": "./.server/client/stylesheets/maps.scss",
|
|
24
|
+
"import": "./.server/client/javascripts/maps.js",
|
|
25
|
+
"default": "./.server/client/javascripts/maps.js"
|
|
26
|
+
},
|
|
22
27
|
"./shared.js": "./.server/client/javascripts/shared.js",
|
|
23
28
|
"./shared.min.js": "./.public/javascripts/shared.min.js",
|
|
24
29
|
"./shared.min.js.map": "./.public/javascripts/shared.min.js.map",
|
|
@@ -87,7 +92,7 @@
|
|
|
87
92
|
},
|
|
88
93
|
"license": "SEE LICENSE IN LICENSE",
|
|
89
94
|
"dependencies": {
|
|
90
|
-
"@defra/forms-model": "^3.0.
|
|
95
|
+
"@defra/forms-model": "^3.0.693",
|
|
91
96
|
"@defra/hapi-tracing": "^1.29.0",
|
|
92
97
|
"@defra/interactive-map": "^0.0.33-alpha",
|
|
93
98
|
"@elastic/ecs-pino-format": "^1.5.0",
|
|
@@ -131,6 +136,7 @@
|
|
|
131
136
|
"joi": "^17.13.3",
|
|
132
137
|
"liquidjs": "^10.24.0",
|
|
133
138
|
"lodash": "^4.17.21",
|
|
139
|
+
"lru-cache": "^11.5.1",
|
|
134
140
|
"maplibre-gl": "^5.24.0",
|
|
135
141
|
"marked": "^15.0.12",
|
|
136
142
|
"nunjucks": "^3.2.4",
|
|
@@ -305,17 +305,19 @@ function pollUploadStatus(uploadId) {
|
|
|
305
305
|
* @param {HTMLButtonElement} uploadButton - The upload button
|
|
306
306
|
* @param {HTMLButtonElement} continueButton - The continue button
|
|
307
307
|
* @param {File[]} selectedFiles - The selected files
|
|
308
|
+
* @param {string} uploadingLabel - The text to display while uploading (can be multiple languages)
|
|
308
309
|
*/
|
|
309
310
|
function handleStandardFormSubmission(
|
|
310
311
|
formElement,
|
|
311
312
|
fileInput,
|
|
312
313
|
uploadButton,
|
|
313
314
|
continueButton,
|
|
314
|
-
selectedFiles
|
|
315
|
+
selectedFiles,
|
|
316
|
+
uploadingLabel
|
|
315
317
|
) {
|
|
316
318
|
// Render in reverse so first file ends up at the top of the summary list
|
|
317
319
|
for (let i = selectedFiles.length - 1; i >= 0; i--) {
|
|
318
|
-
renderSummary(selectedFiles[i],
|
|
320
|
+
renderSummary(selectedFiles[i], uploadingLabel, formElement)
|
|
319
321
|
}
|
|
320
322
|
|
|
321
323
|
fileInput.focus()
|
|
@@ -405,6 +407,10 @@ function initUpload() {
|
|
|
405
407
|
return
|
|
406
408
|
}
|
|
407
409
|
|
|
410
|
+
const uploadingLabel =
|
|
411
|
+
document.getElementById('uploadedFilesContainer')?.dataset.uploadinglabel ??
|
|
412
|
+
'Uploading…'
|
|
413
|
+
|
|
408
414
|
const formElement = /** @type {HTMLFormElement} */ (form)
|
|
409
415
|
/** @type {File[]} */
|
|
410
416
|
let selectedFiles = []
|
|
@@ -445,7 +451,8 @@ function initUpload() {
|
|
|
445
451
|
fileInput,
|
|
446
452
|
uploadButton,
|
|
447
453
|
continueButton,
|
|
448
|
-
selectedFiles
|
|
454
|
+
selectedFiles,
|
|
455
|
+
uploadingLabel
|
|
449
456
|
)
|
|
450
457
|
|
|
451
458
|
handleAjaxFormSubmission(
|
|
@@ -172,45 +172,47 @@ export function processGeospatial(config, geospatial, index) {
|
|
|
172
172
|
const bounds = geojson.features.length ? getBoundingBox(geojson) : undefined
|
|
173
173
|
const drawPlugin = createDrawPlugin()
|
|
174
174
|
const plugins = [drawPlugin]
|
|
175
|
+
const datasets = []
|
|
175
176
|
const country = geospatial.dataset.country
|
|
176
177
|
const mapLayers = getMapLayers(geospatial.dataset.maplayers)
|
|
177
178
|
|
|
178
179
|
if (country) {
|
|
179
|
-
// Add the country bounds
|
|
180
|
+
// Add the country bounds to the datasets array to show the valid area on the map
|
|
180
181
|
// and provide feedback to the user when they add features outside of the bounds.
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
fill: 'rgba(211,211,211,0.8)'
|
|
193
|
-
}
|
|
194
|
-
},
|
|
195
|
-
{
|
|
196
|
-
id: 'valid-area',
|
|
197
|
-
label: 'Valid areas',
|
|
198
|
-
geojson: `${config.apiPath}/maps/countries.geojson?only=${country}`,
|
|
199
|
-
showInKey: false,
|
|
200
|
-
showInMenu: false,
|
|
201
|
-
style: {
|
|
202
|
-
stroke: 'rgba(0,112,60,1)',
|
|
203
|
-
strokeWidth: 1
|
|
204
|
-
}
|
|
182
|
+
datasets.push(
|
|
183
|
+
{
|
|
184
|
+
id: 'invalid-area',
|
|
185
|
+
label: 'Invalid areas',
|
|
186
|
+
geojson: `${config.apiPath}/maps/countries.geojson?omit=${country}`,
|
|
187
|
+
showInKey: false,
|
|
188
|
+
showInMenu: false,
|
|
189
|
+
style: {
|
|
190
|
+
stroke: 'gray',
|
|
191
|
+
strokeWidth: 1,
|
|
192
|
+
fill: 'rgba(211,211,211,0.8)'
|
|
205
193
|
}
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
id: 'valid-area',
|
|
197
|
+
label: 'Valid areas',
|
|
198
|
+
geojson: `${config.apiPath}/maps/countries.geojson?only=${country}`,
|
|
199
|
+
showInKey: false,
|
|
200
|
+
showInMenu: false,
|
|
201
|
+
style: {
|
|
202
|
+
stroke: 'rgba(0,112,60,1)',
|
|
203
|
+
strokeWidth: 1
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
)
|
|
210
207
|
}
|
|
211
208
|
|
|
212
209
|
if (mapLayers.includes('sssi')) {
|
|
213
|
-
|
|
210
|
+
datasets.push(...sssiDataset)
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
// Create a map dataset plugin if there are any present
|
|
214
|
+
if (datasets.length) {
|
|
215
|
+
plugins.push(createDatasetsPlugin({ datasets }))
|
|
214
216
|
}
|
|
215
217
|
|
|
216
218
|
const initConfig = {
|
|
@@ -423,10 +423,16 @@ export function processLocation(config, location, index) {
|
|
|
423
423
|
|
|
424
424
|
locationInputs.after(mapContainer)
|
|
425
425
|
|
|
426
|
+
const datasets = []
|
|
426
427
|
const mapLayers = getMapLayers(location.dataset.maplayers)
|
|
427
428
|
|
|
428
429
|
if (mapLayers.includes('sssi')) {
|
|
429
|
-
|
|
430
|
+
datasets.push(...sssiDataset)
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
// Create a map dataset plugin if there are any present
|
|
434
|
+
if (datasets.length) {
|
|
435
|
+
initConfig.plugins = [createDatasetsPlugin({ datasets })]
|
|
430
436
|
}
|
|
431
437
|
|
|
432
438
|
const { map, interactPlugin } = createMap(mapId, initConfig, config)
|
|
@@ -3,9 +3,7 @@ import { initDebounceClick as initDebounceClickImp } from './debounce-click.js'
|
|
|
3
3
|
import { initFileUpload as initFileUploadImp } from './file-upload.js'
|
|
4
4
|
import { initAllGovuk as initAllGovukImp } from './govuk.js'
|
|
5
5
|
import { initPreviewCloseLink as initPreviewCloseLinkImp } from './preview-close-link.js'
|
|
6
|
-
export
|
|
7
|
-
export * as map from './map.js'
|
|
8
|
-
export * as geospatialMap from './geospatial-map.js'
|
|
6
|
+
export * from './maps.js'
|
|
9
7
|
|
|
10
8
|
export const initAllGovuk = initAllGovukImp
|
|
11
9
|
export const initAllAutocomplete = initAllAutocompleteImp
|
|
@@ -49,49 +49,47 @@ export function sssiScotlandRequestTransformer(url, { bbox }) {
|
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
-
export default
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
transformRequest: sssiEnglandRequestTransformer
|
|
61
|
-
},
|
|
62
|
-
minZoom,
|
|
63
|
-
style,
|
|
64
|
-
showInKey: true,
|
|
65
|
-
showInMenu: false
|
|
52
|
+
export default [
|
|
53
|
+
{
|
|
54
|
+
id: 'sssi-england',
|
|
55
|
+
label: 'Sites of Special Scientific Interest',
|
|
56
|
+
dynamicGeoJSON: {
|
|
57
|
+
url: englandWFS,
|
|
58
|
+
idProperty: 'ref_code',
|
|
59
|
+
transformRequest: sssiEnglandRequestTransformer
|
|
66
60
|
},
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
61
|
+
minZoom,
|
|
62
|
+
style,
|
|
63
|
+
showInKey: true,
|
|
64
|
+
showInMenu: false
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
id: 'sssi-wales',
|
|
68
|
+
label: 'SSSI Wales',
|
|
69
|
+
dynamicGeoJSON: {
|
|
70
|
+
url: walesWFS,
|
|
71
|
+
idProperty: 'id',
|
|
72
|
+
transformRequest: sssiWalesRequestTransformer
|
|
79
73
|
},
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
|
|
74
|
+
minZoom,
|
|
75
|
+
style,
|
|
76
|
+
showInKey: false,
|
|
77
|
+
showInMenu: false
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
id: 'sssi-scotland',
|
|
81
|
+
label: 'SSSI Scotland',
|
|
82
|
+
dynamicGeoJSON: {
|
|
83
|
+
url: scotlandWFS,
|
|
84
|
+
idProperty: 'OBJECTID',
|
|
85
|
+
transformRequest: sssiScotlandRequestTransformer
|
|
86
|
+
},
|
|
87
|
+
minZoom,
|
|
88
|
+
style,
|
|
89
|
+
showInKey: false,
|
|
90
|
+
showInMenu: false
|
|
91
|
+
}
|
|
92
|
+
]
|
|
95
93
|
|
|
96
94
|
/**
|
|
97
95
|
* @typedef {object} TransformRequestOptions
|
|
@@ -3,11 +3,7 @@
|
|
|
3
3
|
@use "prose";
|
|
4
4
|
@use "summary-list";
|
|
5
5
|
@use "location-fields";
|
|
6
|
-
|
|
7
|
-
@use "@defra/interactive-map/css" as core;
|
|
8
|
-
@use "@defra/interactive-map/plugins/map-styles/css" as mapStyles;
|
|
9
|
-
@use "@defra/interactive-map/plugins/search/css" as search;
|
|
10
|
-
@use "@defra/interactive-map/plugins/scale-bar/css" as scaleBar;
|
|
6
|
+
@use "maps";
|
|
11
7
|
|
|
12
8
|
// Use default GDS Transport font for autocomplete
|
|
13
9
|
.autocomplete__hint,
|
package/src/server/constants.js
CHANGED
|
@@ -5,3 +5,5 @@ export const EXTERNAL_STATE_PAYLOAD = 'EXTERNAL_STATE_PAYLOAD'
|
|
|
5
5
|
export const EXTERNAL_STATE_APPENDAGE = 'EXTERNAL_STATE_APPENDAGE'
|
|
6
6
|
export const COMPONENT_STATE_ERROR = 'COMPONENT_STATE_ERROR'
|
|
7
7
|
export const PAYMENT_EXPIRED_NOTIFICATION = 'PAYMENT_EXPIRED_NOTIFICATION'
|
|
8
|
+
export const EN_GB = 'en-GB' // English language
|
|
9
|
+
export const CY = 'cy' // Welsh language
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { type AutocompleteFieldComponent } from '@defra/forms-model'
|
|
2
|
+
import { type LanguageMessages } from 'joi'
|
|
2
3
|
|
|
3
4
|
import { SelectField } from './SelectField.js'
|
|
4
5
|
import { type RenderContext } from './types.js'
|
|
6
|
+
import { buildValidationMessages } from '../i18n/buildValidationMessages.js'
|
|
5
7
|
import { messageTemplate } from '../pageControllers/validationOptions.js'
|
|
8
|
+
import { type Translator } from '../types/index.js'
|
|
6
9
|
|
|
7
10
|
export class AutocompleteField extends SelectField {
|
|
8
11
|
declare options: AutocompleteFieldComponent['options']
|
|
@@ -45,4 +48,14 @@ export class AutocompleteField extends SelectField {
|
|
|
45
48
|
formGroup
|
|
46
49
|
}
|
|
47
50
|
}
|
|
51
|
+
|
|
52
|
+
getValidationMessagesOverride(translator: Translator) {
|
|
53
|
+
const { t } = translator
|
|
54
|
+
return {
|
|
55
|
+
[this.name]: {
|
|
56
|
+
'any.required': buildValidationMessages(t).objectRequired,
|
|
57
|
+
'any.only': buildValidationMessages(t).objectRequired
|
|
58
|
+
} as LanguageMessages
|
|
59
|
+
}
|
|
60
|
+
}
|
|
48
61
|
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { type CheckboxesFieldComponent, type Item } from '@defra/forms-model'
|
|
2
|
-
import joi, { type ArraySchema } from 'joi'
|
|
2
|
+
import joi, { type ArraySchema, type LanguageMessages } from 'joi'
|
|
3
3
|
|
|
4
4
|
import { isFormValue } from './FormComponent.js'
|
|
5
5
|
import { SelectionControlField } from './SelectionControlField.js'
|
|
6
|
+
import { buildValidationMessages } from '../i18n/buildValidationMessages.js'
|
|
6
7
|
import { type Translator } from '../i18n/types.js'
|
|
7
8
|
import { type FormModel } from '../models/FormModel.js'
|
|
8
9
|
import { type QuestionPageController } from '../pageControllers/QuestionPageController.js'
|
|
@@ -133,6 +134,17 @@ export class CheckboxesField extends SelectionControlField {
|
|
|
133
134
|
return this.getContextValueFromFormValue(values)
|
|
134
135
|
}
|
|
135
136
|
|
|
137
|
+
getValidationMessagesOverride(translator: Translator) {
|
|
138
|
+
const { t } = translator
|
|
139
|
+
return {
|
|
140
|
+
[this.name]: {
|
|
141
|
+
'array.min': buildValidationMessages(t).arrayMin,
|
|
142
|
+
'array.max': buildValidationMessages(t).arrayMax,
|
|
143
|
+
'array.length': buildValidationMessages(t).arrayLength
|
|
144
|
+
} as LanguageMessages
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
136
148
|
/**
|
|
137
149
|
* For error preview page that shows all possible errors on a component
|
|
138
150
|
*/
|
|
@@ -28,6 +28,7 @@ export class ComponentBase {
|
|
|
28
28
|
|
|
29
29
|
isFormComponent = false
|
|
30
30
|
model: FormModel
|
|
31
|
+
def: ComponentDef
|
|
31
32
|
|
|
32
33
|
/** joi schemas based on a component defined in the form JSON. This validates a user's answer and is generated from {@link ComponentDef} */
|
|
33
34
|
formSchema: ComponentSchema = joi.string()
|
|
@@ -45,6 +46,7 @@ export class ComponentBase {
|
|
|
45
46
|
this.type = def.type
|
|
46
47
|
this.name = def.name
|
|
47
48
|
this.title = def.title
|
|
49
|
+
this.def = def
|
|
48
50
|
|
|
49
51
|
if ('schema' in def) {
|
|
50
52
|
this.schema = def.schema
|
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
type Field,
|
|
16
16
|
type Guidance
|
|
17
17
|
} from './helpers/components.js'
|
|
18
|
+
import { getTranslatedLabel } from './helpers/index.js'
|
|
18
19
|
import {
|
|
19
20
|
type ComponentViewModel,
|
|
20
21
|
type RenderContext
|
|
@@ -302,26 +303,28 @@ export class ComponentCollection {
|
|
|
302
303
|
for (const subField of field.collection.fields) {
|
|
303
304
|
const translatedSubLabel = t(subField.title) || subField.label
|
|
304
305
|
let patchedSchema = subField.formSchema.label(translatedSubLabel)
|
|
305
|
-
|
|
306
|
-
|
|
306
|
+
const subFieldMessages = messagesOverride
|
|
307
|
+
? messagesOverride[subField.name]
|
|
308
|
+
: undefined
|
|
309
|
+
if (subFieldMessages) {
|
|
310
|
+
patchedSchema = patchedSchema.messages(subFieldMessages)
|
|
307
311
|
}
|
|
308
312
|
labelOverrides[subField.name] = patchedSchema
|
|
309
313
|
}
|
|
310
314
|
} else {
|
|
311
|
-
const
|
|
312
|
-
|
|
313
|
-
field as unknown as ComponentDef,
|
|
314
|
-
'shortDescription'
|
|
315
|
-
) ||
|
|
316
|
-
translator.tComponent(field as unknown as ComponentDef, 'title')
|
|
315
|
+
const fieldDef = field.def
|
|
316
|
+
const translatedLabel = getTranslatedLabel(fieldDef, translator)
|
|
317
317
|
const messagesOverride =
|
|
318
318
|
field.getValidationMessagesOverride(translator)
|
|
319
319
|
let patchedSchema = field.formSchema
|
|
320
320
|
if (translatedLabel && translatedLabel !== field.label) {
|
|
321
321
|
patchedSchema = patchedSchema.label(translatedLabel)
|
|
322
322
|
}
|
|
323
|
-
|
|
324
|
-
|
|
323
|
+
const fieldMessages = messagesOverride
|
|
324
|
+
? messagesOverride[field.name]
|
|
325
|
+
: undefined
|
|
326
|
+
if (fieldMessages) {
|
|
327
|
+
patchedSchema = patchedSchema.messages(fieldMessages)
|
|
325
328
|
}
|
|
326
329
|
if (patchedSchema !== field.formSchema) {
|
|
327
330
|
labelOverrides[field.name] = patchedSchema
|
|
@@ -340,10 +343,12 @@ export class ComponentCollection {
|
|
|
340
343
|
})
|
|
341
344
|
|
|
342
345
|
const details = result.error?.details
|
|
346
|
+
const language = translator?.language
|
|
343
347
|
|
|
344
348
|
return {
|
|
345
349
|
value: (result.value ?? {}) as typeof value,
|
|
346
|
-
errors:
|
|
350
|
+
errors:
|
|
351
|
+
this.page?.getErrors(details, language) ?? getErrors(language, details)
|
|
347
352
|
}
|
|
348
353
|
}
|
|
349
354
|
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { ComponentType, type DatePartsFieldComponent } from '@defra/forms-model'
|
|
2
2
|
import { add, format, isValid, parse, startOfToday, sub } from 'date-fns'
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
type Context,
|
|
5
|
+
type CustomValidator,
|
|
6
|
+
type LanguageMessages,
|
|
7
|
+
type ObjectSchema
|
|
8
|
+
} from 'joi'
|
|
4
9
|
|
|
5
10
|
import { ComponentCollection } from './ComponentCollection.js'
|
|
6
11
|
import {
|
|
@@ -25,7 +30,7 @@ import {
|
|
|
25
30
|
type FormStateValue,
|
|
26
31
|
type FormSubmissionState
|
|
27
32
|
} from '../types.js'
|
|
28
|
-
import {
|
|
33
|
+
import { formatDateForLanguage } from '../../payment/helper.js'
|
|
29
34
|
|
|
30
35
|
export class DatePartsField extends FormComponent {
|
|
31
36
|
declare options: DatePartsFieldComponent['options']
|
|
@@ -43,7 +48,7 @@ export class DatePartsField extends FormComponent {
|
|
|
43
48
|
|
|
44
49
|
const isRequired = options.required !== false
|
|
45
50
|
|
|
46
|
-
const customValidationMessages =
|
|
51
|
+
const customValidationMessages = {
|
|
47
52
|
'any.required': messageTemplate.objectMissing,
|
|
48
53
|
'number.base': messageTemplate.objectMissing,
|
|
49
54
|
'number.precision': messageTemplate.dateFormat,
|
|
@@ -51,7 +56,7 @@ export class DatePartsField extends FormComponent {
|
|
|
51
56
|
'number.unsafe': messageTemplate.dateFormat,
|
|
52
57
|
'number.min': messageTemplate.dateFormat,
|
|
53
58
|
'number.max': messageTemplate.dateFormat
|
|
54
|
-
}
|
|
59
|
+
} as LanguageMessages
|
|
55
60
|
|
|
56
61
|
this.collection = new ComponentCollection(
|
|
57
62
|
[
|
|
@@ -111,15 +116,16 @@ export class DatePartsField extends FormComponent {
|
|
|
111
116
|
|
|
112
117
|
getDisplayStringFromFormValue(
|
|
113
118
|
formValue: DatePartsState | undefined,
|
|
114
|
-
|
|
119
|
+
translator: Translator
|
|
115
120
|
) {
|
|
116
121
|
if (!formValue) {
|
|
117
122
|
return ''
|
|
118
123
|
}
|
|
119
124
|
|
|
120
|
-
return
|
|
125
|
+
return formatDateForLanguage(
|
|
121
126
|
`${formValue.year}-${formValue.month}-${formValue.day}`,
|
|
122
|
-
'd MMMM yyyy'
|
|
127
|
+
'd MMMM yyyy',
|
|
128
|
+
translator.language
|
|
123
129
|
)
|
|
124
130
|
}
|
|
125
131
|
|
|
@@ -158,7 +164,7 @@ export class DatePartsField extends FormComponent {
|
|
|
158
164
|
|
|
159
165
|
getValidationMessagesOverride(translator: Translator) {
|
|
160
166
|
const { t } = translator
|
|
161
|
-
|
|
167
|
+
const messages = {
|
|
162
168
|
'any.required': buildValidationMessages(t).objectMissing,
|
|
163
169
|
'number.base': buildValidationMessages(t).objectMissing,
|
|
164
170
|
'number.precision': buildValidationMessages(t).dateFormat,
|
|
@@ -166,7 +172,12 @@ export class DatePartsField extends FormComponent {
|
|
|
166
172
|
'number.unsafe': buildValidationMessages(t).dateFormat,
|
|
167
173
|
'number.min': buildValidationMessages(t).dateFormat,
|
|
168
174
|
'number.max': buildValidationMessages(t).dateFormat
|
|
169
|
-
}
|
|
175
|
+
} as LanguageMessages
|
|
176
|
+
return {
|
|
177
|
+
[`${this.name}__day`]: messages,
|
|
178
|
+
[`${this.name}__month`]: messages,
|
|
179
|
+
[`${this.name}__year`]: messages
|
|
180
|
+
}
|
|
170
181
|
}
|
|
171
182
|
|
|
172
183
|
getViewModel(context: RenderContext) {
|
|
@@ -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
|