@defra/forms-engine-plugin 4.22.0 → 5.0.0-alpha
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/.server/server/forms/register-as-a-unicorn-breeder.yaml +0 -14
- package/.server/server/forms/simple-form.yaml +106 -3
- package/.server/server/plugins/engine/components/AutocompleteField.d.ts +11 -11
- package/.server/server/plugins/engine/components/AutocompleteField.js +2 -2
- package/.server/server/plugins/engine/components/AutocompleteField.js.map +1 -1
- package/.server/server/plugins/engine/components/CheckboxesField.d.ts +3 -2
- package/.server/server/plugins/engine/components/CheckboxesField.js +4 -9
- package/.server/server/plugins/engine/components/CheckboxesField.js.map +1 -1
- package/.server/server/plugins/engine/components/ComponentCollection.d.ts +8 -7
- package/.server/server/plugins/engine/components/ComponentCollection.js +106 -51
- package/.server/server/plugins/engine/components/ComponentCollection.js.map +1 -1
- package/.server/server/plugins/engine/components/DatePartsField.d.ts +8 -6
- package/.server/server/plugins/engine/components/DatePartsField.js +27 -9
- package/.server/server/plugins/engine/components/DatePartsField.js.map +1 -1
- package/.server/server/plugins/engine/components/DeclarationField.d.ts +13 -11
- package/.server/server/plugins/engine/components/DeclarationField.js +31 -9
- package/.server/server/plugins/engine/components/DeclarationField.js.map +1 -1
- package/.server/server/plugins/engine/components/EastingNorthingField.d.ts +6 -5
- package/.server/server/plugins/engine/components/EastingNorthingField.js +42 -22
- package/.server/server/plugins/engine/components/EastingNorthingField.js.map +1 -1
- package/.server/server/plugins/engine/components/EmailAddressField.d.ts +11 -14
- package/.server/server/plugins/engine/components/EmailAddressField.js +2 -2
- package/.server/server/plugins/engine/components/EmailAddressField.js.map +1 -1
- package/.server/server/plugins/engine/components/FileUploadField.d.ts +14 -12
- package/.server/server/plugins/engine/components/FileUploadField.js +22 -12
- package/.server/server/plugins/engine/components/FileUploadField.js.map +1 -1
- package/.server/server/plugins/engine/components/FormComponent.d.ts +21 -12
- package/.server/server/plugins/engine/components/FormComponent.js +33 -14
- package/.server/server/plugins/engine/components/FormComponent.js.map +1 -1
- package/.server/server/plugins/engine/components/GeospatialField.d.ts +14 -12
- package/.server/server/plugins/engine/components/GeospatialField.js +19 -13
- package/.server/server/plugins/engine/components/GeospatialField.js.map +1 -1
- package/.server/server/plugins/engine/components/LatLongField.d.ts +6 -5
- package/.server/server/plugins/engine/components/LatLongField.js +32 -20
- package/.server/server/plugins/engine/components/LatLongField.js.map +1 -1
- package/.server/server/plugins/engine/components/ListFormComponent.d.ts +7 -6
- package/.server/server/plugins/engine/components/ListFormComponent.js +19 -7
- package/.server/server/plugins/engine/components/ListFormComponent.js.map +1 -1
- package/.server/server/plugins/engine/components/LocationFieldBase.d.ts +17 -16
- package/.server/server/plugins/engine/components/LocationFieldBase.js +2 -2
- package/.server/server/plugins/engine/components/LocationFieldBase.js.map +1 -1
- package/.server/server/plugins/engine/components/LocationFieldHelpers.d.ts +3 -3
- package/.server/server/plugins/engine/components/LocationFieldHelpers.js +2 -2
- package/.server/server/plugins/engine/components/LocationFieldHelpers.js.map +1 -1
- package/.server/server/plugins/engine/components/Markdown.d.ts +8 -7
- package/.server/server/plugins/engine/components/Markdown.js +5 -2
- package/.server/server/plugins/engine/components/Markdown.js.map +1 -1
- package/.server/server/plugins/engine/components/MonthYearField.d.ts +9 -7
- package/.server/server/plugins/engine/components/MonthYearField.js +26 -8
- package/.server/server/plugins/engine/components/MonthYearField.js.map +1 -1
- package/.server/server/plugins/engine/components/MultilineTextField.d.ts +10 -9
- package/.server/server/plugins/engine/components/MultilineTextField.js +2 -2
- package/.server/server/plugins/engine/components/MultilineTextField.js.map +1 -1
- package/.server/server/plugins/engine/components/NationalGridFieldNumberField.d.ts +2 -1
- package/.server/server/plugins/engine/components/NationalGridFieldNumberField.js +14 -6
- package/.server/server/plugins/engine/components/NationalGridFieldNumberField.js.map +1 -1
- package/.server/server/plugins/engine/components/NumberField.d.ts +10 -9
- package/.server/server/plugins/engine/components/NumberField.js +2 -2
- 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 +14 -6
- package/.server/server/plugins/engine/components/OsGridRefField.js.map +1 -1
- package/.server/server/plugins/engine/components/PaymentField.d.ts +12 -10
- package/.server/server/plugins/engine/components/PaymentField.js +21 -8
- package/.server/server/plugins/engine/components/PaymentField.js.map +1 -1
- package/.server/server/plugins/engine/components/SelectField.d.ts +11 -11
- package/.server/server/plugins/engine/components/SelectField.js +2 -2
- package/.server/server/plugins/engine/components/SelectField.js.map +1 -1
- package/.server/server/plugins/engine/components/SelectionControlField.d.ts +4 -4
- package/.server/server/plugins/engine/components/SelectionControlField.js +2 -2
- package/.server/server/plugins/engine/components/SelectionControlField.js.map +1 -1
- package/.server/server/plugins/engine/components/TelephoneNumberField.d.ts +10 -9
- package/.server/server/plugins/engine/components/TelephoneNumberField.js +2 -2
- package/.server/server/plugins/engine/components/TelephoneNumberField.js.map +1 -1
- package/.server/server/plugins/engine/components/UkAddressField.d.ts +12 -10
- package/.server/server/plugins/engine/components/UkAddressField.js +29 -17
- package/.server/server/plugins/engine/components/UkAddressField.js.map +1 -1
- package/.server/server/plugins/engine/components/YesNoField.d.ts +3 -0
- package/.server/server/plugins/engine/components/YesNoField.js +9 -0
- package/.server/server/plugins/engine/components/YesNoField.js.map +1 -1
- package/.server/server/plugins/engine/components/helpers/components.d.ts +3 -2
- package/.server/server/plugins/engine/components/helpers/components.js +11 -8
- package/.server/server/plugins/engine/components/helpers/components.js.map +1 -1
- package/.server/server/plugins/engine/components/types.d.ts +8 -1
- package/.server/server/plugins/engine/components/types.js.map +1 -1
- package/.server/server/plugins/engine/configureEnginePlugin.js +8 -1
- package/.server/server/plugins/engine/configureEnginePlugin.js.map +1 -1
- package/.server/server/plugins/engine/form-context.d.ts +1 -0
- package/.server/server/plugins/engine/form-context.js +4 -2
- package/.server/server/plugins/engine/form-context.js.map +1 -1
- package/.server/server/plugins/engine/helpers.d.ts +1 -1
- package/.server/server/plugins/engine/helpers.js +8 -13
- package/.server/server/plugins/engine/helpers.js.map +1 -1
- package/.server/server/plugins/engine/i18n/buildValidationMessages.d.ts +39 -0
- package/.server/server/plugins/engine/i18n/buildValidationMessages.js +50 -0
- package/.server/server/plugins/engine/i18n/buildValidationMessages.js.map +1 -0
- package/.server/server/plugins/engine/i18n/createFormTranslator.d.ts +5 -0
- package/.server/server/plugins/engine/i18n/createFormTranslator.js +18 -0
- package/.server/server/plugins/engine/i18n/createFormTranslator.js.map +1 -0
- package/.server/server/plugins/engine/i18n/createTranslator.d.ts +9 -0
- package/.server/server/plugins/engine/i18n/createTranslator.js +51 -0
- package/.server/server/plugins/engine/i18n/createTranslator.js.map +1 -0
- package/.server/server/plugins/engine/i18n/extractBaseTranslations.d.ts +5 -0
- package/.server/server/plugins/engine/i18n/extractBaseTranslations.js +57 -0
- package/.server/server/plugins/engine/i18n/extractBaseTranslations.js.map +1 -0
- package/.server/server/plugins/engine/i18n/index.d.ts +18 -0
- package/.server/server/plugins/engine/i18n/index.js +71 -0
- package/.server/server/plugins/engine/i18n/index.js.map +1 -0
- package/.server/server/plugins/engine/i18n/translations/cy.json +271 -0
- package/.server/server/plugins/engine/i18n/translations/en-GB.json +271 -0
- package/.server/server/plugins/engine/i18n/types.d.ts +41 -0
- package/.server/server/plugins/engine/i18n/types.js +2 -0
- package/.server/server/plugins/engine/i18n/types.js.map +1 -0
- package/.server/server/plugins/engine/index.js +3 -2
- package/.server/server/plugins/engine/index.js.map +1 -1
- package/.server/server/plugins/engine/models/FormModel.d.ts +9 -1
- package/.server/server/plugins/engine/models/FormModel.js +44 -18
- package/.server/server/plugins/engine/models/FormModel.js.map +1 -1
- package/.server/server/plugins/engine/models/SummaryViewModel.d.ts +5 -2
- package/.server/server/plugins/engine/models/SummaryViewModel.js +44 -18
- package/.server/server/plugins/engine/models/SummaryViewModel.js.map +1 -1
- package/.server/server/plugins/engine/options.js +2 -1
- package/.server/server/plugins/engine/options.js.map +1 -1
- package/.server/server/plugins/engine/outputFormatters/adapter/v1.js +4 -0
- 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/v1.js +7 -6
- package/.server/server/plugins/engine/outputFormatters/machine/v1.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/FileUploadPageController.d.ts +2 -1
- package/.server/server/plugins/engine/pageControllers/FileUploadPageController.js +6 -3
- package/.server/server/plugins/engine/pageControllers/FileUploadPageController.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/PageController.d.ts +3 -1
- package/.server/server/plugins/engine/pageControllers/PageController.js +11 -1
- package/.server/server/plugins/engine/pageControllers/PageController.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/QuestionPageController.d.ts +4 -2
- package/.server/server/plugins/engine/pageControllers/QuestionPageController.js +52 -21
- package/.server/server/plugins/engine/pageControllers/QuestionPageController.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/RepeatPageController.d.ts +3 -2
- package/.server/server/plugins/engine/pageControllers/RepeatPageController.js +63 -26
- package/.server/server/plugins/engine/pageControllers/RepeatPageController.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/StartPageController.d.ts +3 -1
- package/.server/server/plugins/engine/pageControllers/StartPageController.js +2 -2
- package/.server/server/plugins/engine/pageControllers/StartPageController.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/StatusPageController.js +12 -2
- package/.server/server/plugins/engine/pageControllers/StatusPageController.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/SummaryPageController.d.ts +4 -3
- package/.server/server/plugins/engine/pageControllers/SummaryPageController.js +45 -28
- package/.server/server/plugins/engine/pageControllers/SummaryPageController.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/__stubs__/translator.d.ts +2 -0
- package/.server/server/plugins/engine/pageControllers/__stubs__/translator.js +24 -0
- package/.server/server/plugins/engine/pageControllers/__stubs__/translator.js.map +1 -0
- package/.server/server/plugins/engine/pageControllers/errors.d.ts +1 -1
- package/.server/server/plugins/engine/pageControllers/errors.js +3 -2
- package/.server/server/plugins/engine/pageControllers/errors.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/helpers/submission.d.ts +3 -2
- package/.server/server/plugins/engine/pageControllers/helpers/submission.js +4 -4
- package/.server/server/plugins/engine/pageControllers/helpers/submission.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/validationOptions.d.ts +7 -3
- package/.server/server/plugins/engine/pageControllers/validationOptions.js +34 -33
- package/.server/server/plugins/engine/pageControllers/validationOptions.js.map +1 -1
- package/.server/server/plugins/engine/plugin.js +2 -0
- package/.server/server/plugins/engine/plugin.js.map +1 -1
- package/.server/server/plugins/engine/routes/index.js +4 -1
- package/.server/server/plugins/engine/routes/index.js.map +1 -1
- package/.server/server/plugins/engine/routes/questions.js +5 -2
- package/.server/server/plugins/engine/routes/questions.js.map +1 -1
- package/.server/server/plugins/engine/types/index.d.ts +1 -0
- package/.server/server/plugins/engine/types/index.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 +12 -1
- package/.server/server/plugins/engine/types.js.map +1 -1
- package/.server/server/plugins/engine/views/components/_location-field-base.html +1 -1
- package/.server/server/plugins/engine/views/components/fileuploadfield.html +3 -3
- package/.server/server/plugins/engine/views/components/nationalgridfieldnumberfield.html +1 -1
- package/.server/server/plugins/engine/views/components/osgridreffield.html +1 -1
- package/.server/server/plugins/engine/views/components/paymentfield.html +8 -8
- package/.server/server/plugins/engine/views/components/ukaddressfield.html +4 -4
- package/.server/server/plugins/engine/views/confirmation.html +4 -4
- package/.server/server/plugins/engine/views/exit.html +4 -4
- package/.server/server/plugins/engine/views/file-upload.html +3 -3
- package/.server/server/plugins/engine/views/index.html +3 -3
- package/.server/server/plugins/engine/views/item-delete.html +1 -1
- package/.server/server/plugins/engine/views/partials/form.html +3 -3
- package/.server/server/plugins/engine/views/partials/preview-banner.html +4 -4
- package/.server/server/plugins/engine/views/partials/warn-missing-notification-email.html +4 -5
- package/.server/server/plugins/engine/views/repeat-list-summary.html +4 -4
- package/.server/server/plugins/engine/views/summary.html +14 -7
- package/.server/server/plugins/nunjucks/enviroment.test.js +10 -0
- package/.server/server/plugins/nunjucks/enviroment.test.js.map +1 -1
- package/.server/server/plugins/nunjucks/environment.d.ts +8 -0
- package/.server/server/plugins/nunjucks/environment.js +13 -0
- package/.server/server/plugins/nunjucks/environment.js.map +1 -1
- package/.server/server/plugins/nunjucks/filters/answer.js +9 -1
- package/.server/server/plugins/nunjucks/filters/answer.js.map +1 -1
- package/.server/server/plugins/nunjucks/filters/answer.test.js +13 -2
- package/.server/server/plugins/nunjucks/filters/answer.test.js.map +1 -1
- package/.server/server/plugins/nunjucks/filters/field.d.ts +1 -1
- package/.server/server/plugins/postcode-lookup/models/index.d.ts +24 -19
- package/.server/server/plugins/postcode-lookup/models/index.js +83 -76
- package/.server/server/plugins/postcode-lookup/models/index.js.map +1 -1
- package/.server/server/plugins/postcode-lookup/routes/index.js +7 -13
- package/.server/server/plugins/postcode-lookup/routes/index.js.map +1 -1
- package/.server/server/plugins/postcode-lookup/types.d.ts +1 -0
- package/.server/server/plugins/postcode-lookup/types.js +1 -0
- 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/types.d.ts +2 -1
- package/.server/server/types.js.map +1 -1
- package/.server/server/utils/utils.d.ts +5 -0
- package/.server/server/utils/utils.js +16 -0
- package/.server/server/utils/utils.js.map +1 -1
- package/.server/typings/hapi/index.d.js.map +1 -1
- package/package.json +3 -2
- package/src/server/forms/register-as-a-unicorn-breeder.yaml +0 -14
- package/src/server/forms/simple-form.yaml +106 -3
- package/src/server/plugins/engine/components/AutocompleteField.ts +3 -6
- package/src/server/plugins/engine/components/CheckboxesField.ts +12 -11
- package/src/server/plugins/engine/components/ComponentCollection.ts +143 -61
- package/src/server/plugins/engine/components/DatePartsField.ts +33 -11
- package/src/server/plugins/engine/components/DeclarationField.ts +37 -14
- package/src/server/plugins/engine/components/EastingNorthingField.ts +83 -22
- package/src/server/plugins/engine/components/EmailAddressField.ts +4 -7
- package/src/server/plugins/engine/components/FileUploadField.ts +28 -22
- package/src/server/plugins/engine/components/FormComponent.ts +49 -12
- package/src/server/plugins/engine/components/GeospatialField.ts +36 -21
- package/src/server/plugins/engine/components/LatLongField.ts +52 -21
- package/src/server/plugins/engine/components/ListFormComponent.ts +26 -10
- package/src/server/plugins/engine/components/LocationFieldBase.ts +5 -8
- package/src/server/plugins/engine/components/LocationFieldHelpers.ts +3 -3
- package/src/server/plugins/engine/components/Markdown.ts +7 -3
- package/src/server/plugins/engine/components/MonthYearField.ts +32 -10
- package/src/server/plugins/engine/components/MultilineTextField.ts +5 -8
- package/src/server/plugins/engine/components/NationalGridFieldNumberField.ts +25 -11
- package/src/server/plugins/engine/components/NumberField.ts +3 -4
- package/src/server/plugins/engine/components/OsGridRefField.ts +25 -9
- package/src/server/plugins/engine/components/PaymentField.ts +22 -12
- package/src/server/plugins/engine/components/SelectField.ts +3 -6
- package/src/server/plugins/engine/components/SelectionControlField.ts +7 -8
- package/src/server/plugins/engine/components/TelephoneNumberField.ts +4 -7
- package/src/server/plugins/engine/components/UkAddressField.ts +33 -18
- package/src/server/plugins/engine/components/YesNoField.ts +10 -0
- package/src/server/plugins/engine/components/helpers/components.ts +13 -6
- package/src/server/plugins/engine/components/types.ts +9 -0
- package/src/server/plugins/engine/configureEnginePlugin.ts +12 -1
- package/src/server/plugins/engine/form-context.ts +8 -2
- package/src/server/plugins/engine/helpers.ts +10 -18
- package/src/server/plugins/engine/i18n/buildValidationMessages.ts +69 -0
- package/src/server/plugins/engine/i18n/createFormTranslator.ts +33 -0
- package/src/server/plugins/engine/i18n/createTranslator.ts +61 -0
- package/src/server/plugins/engine/i18n/extractBaseTranslations.ts +61 -0
- package/src/server/plugins/engine/i18n/index.ts +80 -0
- package/src/server/plugins/engine/i18n/translations/cy.json +271 -0
- package/src/server/plugins/engine/i18n/translations/en-GB.json +271 -0
- package/src/server/plugins/engine/i18n/types.ts +62 -0
- package/src/server/plugins/engine/index.ts +4 -2
- package/src/server/plugins/engine/models/FormModel.ts +59 -23
- package/src/server/plugins/engine/models/SummaryViewModel.ts +68 -25
- package/src/server/plugins/engine/options.js +2 -1
- package/src/server/plugins/engine/outputFormatters/adapter/v1.ts +5 -0
- package/src/server/plugins/engine/outputFormatters/human/v1.ts +2 -3
- package/src/server/plugins/engine/outputFormatters/machine/v1.ts +9 -8
- package/src/server/plugins/engine/pageControllers/FileUploadPageController.ts +7 -3
- package/src/server/plugins/engine/pageControllers/PageController.ts +12 -1
- package/src/server/plugins/engine/pageControllers/QuestionPageController.ts +53 -21
- package/src/server/plugins/engine/pageControllers/RepeatPageController.ts +66 -29
- package/src/server/plugins/engine/pageControllers/StartPageController.ts +7 -2
- package/src/server/plugins/engine/pageControllers/StatusPageController.ts +10 -2
- package/src/server/plugins/engine/pageControllers/SummaryPageController.ts +53 -24
- package/src/server/plugins/engine/pageControllers/__stubs__/translator.ts +28 -0
- package/src/server/plugins/engine/pageControllers/errors.ts +4 -2
- package/src/server/plugins/engine/pageControllers/helpers/submission.ts +11 -4
- package/src/server/plugins/engine/pageControllers/validationOptions.ts +43 -53
- package/src/server/plugins/engine/plugin.ts +2 -0
- package/src/server/plugins/engine/routes/index.ts +9 -1
- package/src/server/plugins/engine/routes/questions.ts +5 -1
- package/src/server/plugins/engine/types/index.ts +5 -0
- package/src/server/plugins/engine/types/schema.ts +1 -0
- package/src/server/plugins/engine/types.ts +10 -0
- package/src/server/plugins/engine/views/components/_location-field-base.html +1 -1
- package/src/server/plugins/engine/views/components/fileuploadfield.html +3 -3
- package/src/server/plugins/engine/views/components/nationalgridfieldnumberfield.html +1 -1
- package/src/server/plugins/engine/views/components/osgridreffield.html +1 -1
- package/src/server/plugins/engine/views/components/paymentfield.html +8 -8
- package/src/server/plugins/engine/views/components/ukaddressfield.html +4 -4
- package/src/server/plugins/engine/views/confirmation.html +4 -4
- package/src/server/plugins/engine/views/exit.html +4 -4
- package/src/server/plugins/engine/views/file-upload.html +3 -3
- package/src/server/plugins/engine/views/index.html +3 -3
- package/src/server/plugins/engine/views/item-delete.html +1 -1
- package/src/server/plugins/engine/views/partials/form.html +3 -3
- package/src/server/plugins/engine/views/partials/preview-banner.html +4 -4
- package/src/server/plugins/engine/views/partials/warn-missing-notification-email.html +4 -5
- package/src/server/plugins/engine/views/repeat-list-summary.html +4 -4
- package/src/server/plugins/engine/views/summary.html +14 -7
- package/src/server/plugins/nunjucks/environment.js +14 -0
- package/src/server/plugins/nunjucks/filters/answer.js +12 -1
- package/src/server/plugins/postcode-lookup/models/index.js +144 -87
- package/src/server/plugins/postcode-lookup/routes/index.js +13 -16
- package/src/server/plugins/postcode-lookup/types.js +1 -0
- package/src/server/plugins/postcode-lookup/views/postcode-lookup-details.html +3 -3
- package/src/server/types.ts +2 -0
- package/src/server/utils/utils.js +14 -0
- package/src/typings/hapi/index.d.ts +1 -0
- package/.server/server/plugins/engine/components/constants.d.ts +0 -1
- package/.server/server/plugins/engine/components/constants.js +0 -2
- package/.server/server/plugins/engine/components/constants.js.map +0 -1
- package/src/server/plugins/engine/components/constants.ts +0 -1
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
// Declaration above is needed for: https://github.com/hapijs/joi/issues/3064
|
|
2
2
|
|
|
3
|
-
import
|
|
4
|
-
type JoiExpression,
|
|
3
|
+
import {
|
|
5
4
|
type LanguageMessages,
|
|
6
5
|
type LanguageMessagesExt,
|
|
7
6
|
type ReferenceOptions,
|
|
@@ -9,6 +8,11 @@ import joi, {
|
|
|
9
8
|
} from 'joi'
|
|
10
9
|
|
|
11
10
|
import { lowerFirstPreserveProperNouns } from '../components/helpers/index.js'
|
|
11
|
+
import {
|
|
12
|
+
buildValidationMessages,
|
|
13
|
+
type ValidationMessages
|
|
14
|
+
} from '../i18n/buildValidationMessages.js'
|
|
15
|
+
import { t } from '../i18n/index.js'
|
|
12
16
|
|
|
13
17
|
export const opts = {
|
|
14
18
|
functions: {
|
|
@@ -17,58 +21,13 @@ export const opts = {
|
|
|
17
21
|
} as ReferenceOptions
|
|
18
22
|
|
|
19
23
|
/**
|
|
20
|
-
*
|
|
24
|
+
* Module-level English message templates — built via the same factory used per-form.
|
|
25
|
+
* Components that have not yet been migrated to use model.validationMessages still
|
|
26
|
+
* import messageTemplate directly and get the English version.
|
|
21
27
|
*/
|
|
22
|
-
export const messageTemplate:
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
opts
|
|
26
|
-
) as JoiExpression,
|
|
27
|
-
required: joi.expression(
|
|
28
|
-
'Enter {{lowerFirst(#label)}}',
|
|
29
|
-
opts
|
|
30
|
-
) as JoiExpression,
|
|
31
|
-
selectRequired: joi.expression(
|
|
32
|
-
'Select {{lowerFirst(#label)}}',
|
|
33
|
-
opts
|
|
34
|
-
) as JoiExpression,
|
|
35
|
-
selectYesNoRequired: '{{#label}} - select yes or no',
|
|
36
|
-
max: '{{#label}} must be {{#limit}} characters or less',
|
|
37
|
-
min: '{{#label}} must be {{#limit}} characters or more',
|
|
38
|
-
minMax: '{{#label}} must be between {{#min}} and {{#max}} characters',
|
|
39
|
-
pattern: joi.expression(
|
|
40
|
-
'Enter a valid {{lowerFirst(#label)}}',
|
|
41
|
-
opts
|
|
42
|
-
) as JoiExpression,
|
|
43
|
-
format: joi.expression(
|
|
44
|
-
'Enter {{lowerFirst(#label)}} in the correct format',
|
|
45
|
-
opts
|
|
46
|
-
) as JoiExpression,
|
|
47
|
-
unicode: '{{#label}} includes invalid characters, for example, long dashes',
|
|
48
|
-
number: '{{#label}} must be a number',
|
|
49
|
-
numberPrecision: '{{#label}} must have {{#limit}} or fewer decimal places',
|
|
50
|
-
numberInteger: '{{#label}} must be a whole number',
|
|
51
|
-
numberMin: '{{#label}} must be {{#limit}} or higher',
|
|
52
|
-
numberMax: '{{#label}} must be {{#limit}} or lower',
|
|
53
|
-
maxWords: '{{#label}} must be {{#limit}} words or fewer',
|
|
54
|
-
|
|
55
|
-
// Nested fields use component title
|
|
56
|
-
|
|
57
|
-
objectRequired: joi.expression('Enter {{#label}}', opts) as JoiExpression,
|
|
58
|
-
objectMissing: joi.expression(
|
|
59
|
-
'{{#title}} must include a {{lowerFirst(#label)}}',
|
|
60
|
-
opts
|
|
61
|
-
) as JoiExpression,
|
|
62
|
-
dateFormat: '{{#title}} must be a real date',
|
|
63
|
-
dateMin: '{{#title}} must be the same as or after {{#limit}}',
|
|
64
|
-
dateMax: '{{#title}} must be the same as or before {{#limit}}',
|
|
65
|
-
arrayMin: 'Select at least {{#limit}} options from the list',
|
|
66
|
-
arrayMax: 'Only {{#limit}} can be selected from the list',
|
|
67
|
-
arrayLength: 'Select only {{#limit}} options from the list',
|
|
68
|
-
featuresMin: 'Define at least {{#limit}} features',
|
|
69
|
-
featuresMax: 'Only {{#limit}} features can be defined',
|
|
70
|
-
featuresLength: 'Define exactly {{#limit}} features'
|
|
71
|
-
}
|
|
28
|
+
export const messageTemplate: ValidationMessages = buildValidationMessages(
|
|
29
|
+
(key) => t(key, 'en-GB')
|
|
30
|
+
)
|
|
72
31
|
|
|
73
32
|
export const messages: LanguageMessagesExt = {
|
|
74
33
|
'string.base': messageTemplate.required,
|
|
@@ -105,6 +64,37 @@ export const messages: LanguageMessagesExt = {
|
|
|
105
64
|
export const messagesPre: LanguageMessages =
|
|
106
65
|
messages as unknown as LanguageMessages
|
|
107
66
|
|
|
67
|
+
export function buildLanguageMessages(
|
|
68
|
+
t: (key: string) => string
|
|
69
|
+
): LanguageMessages {
|
|
70
|
+
const vm = buildValidationMessages(t)
|
|
71
|
+
return {
|
|
72
|
+
'string.base': vm.required,
|
|
73
|
+
'string.min': vm.min,
|
|
74
|
+
'string.empty': vm.required,
|
|
75
|
+
'string.max': vm.max,
|
|
76
|
+
'string.email': vm.format,
|
|
77
|
+
'string.pattern.base': vm.pattern,
|
|
78
|
+
'string.maxWords': vm.maxWords,
|
|
79
|
+
'number.base': vm.number,
|
|
80
|
+
'number.precision': vm.numberPrecision,
|
|
81
|
+
'number.integer': vm.numberInteger,
|
|
82
|
+
'number.unsafe': vm.format,
|
|
83
|
+
'number.min': vm.numberMin,
|
|
84
|
+
'number.max': vm.numberMax,
|
|
85
|
+
'object.required': vm.objectRequired,
|
|
86
|
+
'object.and': vm.objectMissing,
|
|
87
|
+
'any.only': vm.selectRequired,
|
|
88
|
+
'any.required': vm.selectRequired,
|
|
89
|
+
'any.empty': vm.required,
|
|
90
|
+
'date.base': vm.dateFormat,
|
|
91
|
+
'date.format': vm.dateFormat,
|
|
92
|
+
'date.min': vm.dateMin,
|
|
93
|
+
'date.max': vm.dateMax,
|
|
94
|
+
'object.invalidjson': vm.format
|
|
95
|
+
} as unknown as LanguageMessages
|
|
96
|
+
}
|
|
97
|
+
|
|
108
98
|
export const validationOptions: ValidationOptions = {
|
|
109
99
|
abortEarly: false,
|
|
110
100
|
messages: messagesPre,
|
|
@@ -36,6 +36,7 @@ export const plugin = {
|
|
|
36
36
|
model,
|
|
37
37
|
cache,
|
|
38
38
|
saveAndExit,
|
|
39
|
+
getLanguage,
|
|
39
40
|
nunjucks: nunjucksOptions,
|
|
40
41
|
viewContext,
|
|
41
42
|
preparePageEventRequestOptions,
|
|
@@ -78,6 +79,7 @@ export const plugin = {
|
|
|
78
79
|
server.expose('viewContext', viewContext)
|
|
79
80
|
server.expose('cacheService', cacheService)
|
|
80
81
|
server.expose('saveAndExit', saveAndExit)
|
|
82
|
+
server.expose('getLanguage', getLanguage)
|
|
81
83
|
server.expose('baseUrl', baseUrl)
|
|
82
84
|
server.expose('services', services)
|
|
83
85
|
|
|
@@ -43,6 +43,7 @@ import {
|
|
|
43
43
|
type FormRequest,
|
|
44
44
|
type FormResponseToolkit
|
|
45
45
|
} from '../../../routes/types.js'
|
|
46
|
+
import { resolveLanguage } from '../../../utils/utils.js'
|
|
46
47
|
|
|
47
48
|
export async function redirectOrMakeHandler(
|
|
48
49
|
request: AnyFormRequest,
|
|
@@ -82,7 +83,14 @@ export async function redirectOrMakeHandler(
|
|
|
82
83
|
state = await importExternalComponentState(request, page, state)
|
|
83
84
|
|
|
84
85
|
const flash = cacheService.getFlash(request)
|
|
85
|
-
const
|
|
86
|
+
const language = resolveLanguage(request)
|
|
87
|
+
const translator = model.createTranslator(language)
|
|
88
|
+
const context = model.getFormContext(
|
|
89
|
+
request,
|
|
90
|
+
state,
|
|
91
|
+
flash?.errors,
|
|
92
|
+
translator
|
|
93
|
+
)
|
|
86
94
|
|
|
87
95
|
await copyNotYetValidatedState(request, context)
|
|
88
96
|
|
|
@@ -44,6 +44,7 @@ import {
|
|
|
44
44
|
stateSchema
|
|
45
45
|
} from '../../../schemas/index.js'
|
|
46
46
|
import * as httpService from '../../../services/httpService.js'
|
|
47
|
+
import { resolveLanguage } from '../../../utils/utils.js'
|
|
47
48
|
|
|
48
49
|
async function handleHttpEvent(
|
|
49
50
|
request: AnyFormRequest,
|
|
@@ -58,10 +59,13 @@ async function handleHttpEvent(
|
|
|
58
59
|
|
|
59
60
|
// TODO: Update structured data POST payload with when helper
|
|
60
61
|
// is updated to removing the dependency on `SummaryViewModel` etc.
|
|
61
|
-
const
|
|
62
|
+
const language = resolveLanguage(request)
|
|
63
|
+
const translator = model.createTranslator(language)
|
|
64
|
+
const viewModel = new SummaryViewModel(request, page, context, translator)
|
|
62
65
|
const items = getFormSubmissionData(
|
|
63
66
|
viewModel.context,
|
|
64
67
|
viewModel.details,
|
|
68
|
+
translator,
|
|
65
69
|
model
|
|
66
70
|
)
|
|
67
71
|
|
|
@@ -32,6 +32,7 @@ export const formAdapterSubmissionMessageMetaSchema =
|
|
|
32
32
|
isPreview: Joi.boolean().required(),
|
|
33
33
|
notificationEmail: notificationEmailAddressSchema.required(),
|
|
34
34
|
versionMetadata: formVersionMetadataSchema.optional(),
|
|
35
|
+
language: Joi.string().optional(),
|
|
35
36
|
custom: Joi.object()
|
|
36
37
|
.pattern(/^/, Joi.any())
|
|
37
38
|
.unknown()
|
|
@@ -11,8 +11,10 @@ import {
|
|
|
11
11
|
import {
|
|
12
12
|
type PluginProperties,
|
|
13
13
|
type Request,
|
|
14
|
+
type RequestQuery,
|
|
14
15
|
type ResponseObject
|
|
15
16
|
} from '@hapi/hapi'
|
|
17
|
+
import { type Yar } from '@hapi/yar'
|
|
16
18
|
import { type JoiExpression, type ValidationErrorItem } from 'joi'
|
|
17
19
|
|
|
18
20
|
import { FormComponent } from './components/FormComponent.js'
|
|
@@ -31,6 +33,7 @@ import {
|
|
|
31
33
|
type LatLongState,
|
|
32
34
|
type MonthYearState
|
|
33
35
|
} from './components/types.js'
|
|
36
|
+
import { type Translator } from './i18n/types.js'
|
|
34
37
|
import { type FormModel } from './models/index.js'
|
|
35
38
|
import { type DetailItemField } from './models/types.js'
|
|
36
39
|
import { type PageController } from './pageControllers/PageController.js'
|
|
@@ -199,6 +202,8 @@ export interface FormContext {
|
|
|
199
202
|
pageMap: Map<string, PageControllerClass>
|
|
200
203
|
componentMap: Map<string, Component>
|
|
201
204
|
referenceNumber: string
|
|
205
|
+
languages: { name: string; code: string }[]
|
|
206
|
+
translator: Translator | undefined
|
|
202
207
|
}
|
|
203
208
|
|
|
204
209
|
export type FormContextRequest = (
|
|
@@ -394,6 +399,7 @@ export interface PageViewModelBase extends Partial<ViewContext> {
|
|
|
394
399
|
feedbackLink?: string
|
|
395
400
|
serviceUrl: string
|
|
396
401
|
phaseTag?: string
|
|
402
|
+
t?: (key: string, opts?: Record<string, unknown>) => string
|
|
397
403
|
}
|
|
398
404
|
|
|
399
405
|
export interface ItemDeletePageViewModel extends PageViewModelBase {
|
|
@@ -471,6 +477,8 @@ export type SaveAndExitHandler = (
|
|
|
471
477
|
context: FormContext
|
|
472
478
|
) => ResponseObject
|
|
473
479
|
|
|
480
|
+
export type GetLanguageHandler = (query?: RequestQuery, yar?: Yar) => string
|
|
481
|
+
|
|
474
482
|
export interface ExternalArgs {
|
|
475
483
|
component: ComponentDef
|
|
476
484
|
controller: QuestionPageController
|
|
@@ -510,6 +518,7 @@ export interface PluginOptions {
|
|
|
510
518
|
viewContext: PluginProperties['forms-engine-plugin']['viewContext']
|
|
511
519
|
preparePageEventRequestOptions?: PreparePageEventRequestOptions
|
|
512
520
|
onRequest?: OnRequestCallback
|
|
521
|
+
getLanguage?: GetLanguageHandler
|
|
513
522
|
baseUrl: string // base URL of the application, protocol and hostname e.g. "https://myapp.com"
|
|
514
523
|
ordnanceSurveyApiKey?: string
|
|
515
524
|
ordnanceSurveyApiSecret?: string
|
|
@@ -526,6 +535,7 @@ export interface FormAdapterSubmissionMessageMeta {
|
|
|
526
535
|
isPreview: boolean
|
|
527
536
|
notificationEmail: string
|
|
528
537
|
versionMetadata?: FormVersionMetadata
|
|
538
|
+
language?: string
|
|
529
539
|
custom?: Record<string, unknown>
|
|
530
540
|
}
|
|
531
541
|
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
{% set detailsHtml %}
|
|
62
62
|
{% if component.model.instructionText %}
|
|
63
63
|
{{ govukDetails({
|
|
64
|
-
summaryText:
|
|
64
|
+
summaryText: t('components.locationFieldBase.howToFind'),
|
|
65
65
|
html: component.model.instructionText | markdown | safe,
|
|
66
66
|
classes: "govuk-!-margin-top-3"
|
|
67
67
|
}) }}
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
{% set upload = component.model.upload %}
|
|
5
5
|
|
|
6
6
|
<div id="uploadedFilesContainer">
|
|
7
|
-
<h2 class="govuk-heading-m">
|
|
7
|
+
<h2 class="govuk-heading-m">{{ t('components.fileUploadField.uploadedFilesHeading') }}</h2>
|
|
8
8
|
{% if upload.count %}
|
|
9
|
-
<p class="govuk-body" role="alert">{{
|
|
9
|
+
<p class="govuk-body" role="alert">{{ t('components.fileUploadField.filesCount', { count: upload.count }) }}</p>
|
|
10
10
|
<p class="govuk-body">
|
|
11
11
|
</p>
|
|
12
12
|
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
{{ govukSummaryList(upload.summaryList) }}
|
|
15
15
|
{% endif %}
|
|
16
16
|
{% else %}
|
|
17
|
-
<p class="govuk-body">{{upload.count}}
|
|
17
|
+
<p class="govuk-body">{{ t('components.fileUploadField.filesCount', { count: upload.count }) }}</p>
|
|
18
18
|
{% endif %}
|
|
19
19
|
</div>
|
|
20
20
|
{% endmacro %}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
{% if component.model.instructionText %}
|
|
10
10
|
{{ govukDetails({
|
|
11
|
-
summaryText:
|
|
11
|
+
summaryText: t('components.nationalGridField.howToFind'),
|
|
12
12
|
html: component.model.instructionText | markdown | safe,
|
|
13
13
|
classes: "govuk-!-margin-top-3"
|
|
14
14
|
}) }}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
{% if component.model.instructionText %}
|
|
12
12
|
{{ govukDetails({
|
|
13
|
-
summaryText:
|
|
13
|
+
summaryText: t('components.osGridRefField.howToFind'),
|
|
14
14
|
html: component.model.instructionText | markdown | safe,
|
|
15
15
|
classes: "govuk-!-margin-top-3"
|
|
16
16
|
}) }}
|
|
@@ -11,27 +11,27 @@
|
|
|
11
11
|
<div class="app-payment-field">
|
|
12
12
|
{% if isPreAuthorised %}
|
|
13
13
|
{# Payment already pre-authorised - show confirmation message #}
|
|
14
|
-
<h2 class="govuk-heading-m">
|
|
14
|
+
<h2 class="govuk-heading-m">{{ t('components.paymentField.preAuthorisedTitle') }}</h2>
|
|
15
15
|
|
|
16
|
-
<p class="govuk-body">
|
|
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">{{ model.label.text if model.label and model.label.text else
|
|
19
|
+
<h2 class="govuk-heading-m">{{ model.label.text if model.label and model.label.text else t('components.paymentField.detailsRequired') }}</h2>
|
|
20
20
|
|
|
21
21
|
<p class="govuk-body">{{ description }}</p>
|
|
22
22
|
|
|
23
23
|
{{ govukWarningText({
|
|
24
|
-
text:
|
|
25
|
-
iconFallbackText:
|
|
24
|
+
text: t('components.paymentField.pendingTransaction'),
|
|
25
|
+
iconFallbackText: t('common.warningIconFallback')
|
|
26
26
|
}) }}
|
|
27
27
|
|
|
28
|
-
<p class="govuk-body">
|
|
28
|
+
<p class="govuk-body">{{ t('components.paymentField.canSubmitAfterPayment') }}</p>
|
|
29
29
|
|
|
30
|
-
<p class="govuk-body govuk-!-margin-bottom-1">
|
|
30
|
+
<p class="govuk-body govuk-!-margin-bottom-1">{{ t('components.paymentField.totalAmountLabel') }}</p>
|
|
31
31
|
<p class="govuk-heading-l govuk-!-margin-bottom-4 govuk-!-padding-top-0">{{ amount }}</p>
|
|
32
32
|
|
|
33
33
|
{{ govukButton({
|
|
34
|
-
text:
|
|
34
|
+
text: t('components.paymentField.addPaymentDetails'),
|
|
35
35
|
attributes: {
|
|
36
36
|
name: "action",
|
|
37
37
|
value: "external-" + model.name
|
|
@@ -37,13 +37,13 @@
|
|
|
37
37
|
|
|
38
38
|
{% if value %}
|
|
39
39
|
{% set insetHtml %}
|
|
40
|
-
<strong>
|
|
40
|
+
<strong>{{ t('components.addressField.selectedAddress') }}</strong>
|
|
41
41
|
<br><br>
|
|
42
42
|
{{ value }}
|
|
43
43
|
<br><br>
|
|
44
44
|
<p class="govuk-body">
|
|
45
45
|
<button class="govuk-link govuk-button--link govuk-!-margin-right-1" name="action"
|
|
46
|
-
value="external-{{component.model.name}}">
|
|
46
|
+
value="external-{{component.model.name}}">{{ t('components.addressField.useDifferentAddress') }}</button>
|
|
47
47
|
</p>
|
|
48
48
|
{% endset %}
|
|
49
49
|
|
|
@@ -54,14 +54,14 @@
|
|
|
54
54
|
{% else %}
|
|
55
55
|
<div class="govuk-button-group govuk-!-margin-bottom-0">
|
|
56
56
|
{{ govukButton({
|
|
57
|
-
text:
|
|
57
|
+
text: t('components.addressField.findAddress'),
|
|
58
58
|
attributes: {
|
|
59
59
|
name: "action",
|
|
60
60
|
value: "external-" + component.model.name
|
|
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">
|
|
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>
|
|
65
65
|
</div>
|
|
66
66
|
{# Include a line break if this is the last component #}
|
|
67
67
|
{% if components[components.length - 1] == component %}
|
|
@@ -8,16 +8,16 @@
|
|
|
8
8
|
<div class="govuk-grid-row">
|
|
9
9
|
<div class="govuk-grid-column-two-thirds">
|
|
10
10
|
{{ govukPanel({
|
|
11
|
-
titleText:
|
|
12
|
-
html:
|
|
11
|
+
titleText: t('pages.confirmation.formSubmitted'),
|
|
12
|
+
html: t('pages.confirmation.referenceNumber') + "<br><strong>" + referenceNumber + "</strong>" if showReferenceNumber
|
|
13
13
|
}) }}
|
|
14
|
-
<h2 class="govuk-heading-m">
|
|
14
|
+
<h2 class="govuk-heading-m">{{ t('pages.confirmation.whatHappensNext') }}</h2>
|
|
15
15
|
<div class="app-prose-scope">
|
|
16
16
|
{{ submissionGuidance | markdown(3) | safe }}
|
|
17
17
|
</div>
|
|
18
18
|
{% if feedbackLink %}
|
|
19
19
|
<p class="govuk-body">
|
|
20
|
-
<a href="{{ feedbackLink }}" class="govuk-link govuk-link--no-visited-state">
|
|
20
|
+
<a href="{{ feedbackLink }}" class="govuk-link govuk-link--no-visited-state">{{ t('pages.confirmation.feedbackLink') }}</a>
|
|
21
21
|
</p>
|
|
22
22
|
{% endif %}
|
|
23
23
|
</div>
|
|
@@ -9,17 +9,17 @@
|
|
|
9
9
|
<div class="govuk-grid-row">
|
|
10
10
|
<div class="govuk-grid-column-two-thirds">
|
|
11
11
|
{{ govukPanel({
|
|
12
|
-
titleText: pageTitle or
|
|
12
|
+
titleText: pageTitle or t('pages.exit.defaultTitle')
|
|
13
13
|
}) }}
|
|
14
14
|
|
|
15
|
-
<h2 class="govuk-heading-m">
|
|
15
|
+
<h2 class="govuk-heading-m">{{ t('pages.exit.whatHappensNext') }}</h2>
|
|
16
16
|
<div class="app-prose-scope">
|
|
17
|
-
<p class="govuk-body">
|
|
17
|
+
<p class="govuk-body">{{ t('pages.exit.body') }}</p>
|
|
18
18
|
|
|
19
19
|
{% if returnUrl %}
|
|
20
20
|
<p class="govuk-body">
|
|
21
21
|
{{ govukButton({
|
|
22
|
-
text:
|
|
22
|
+
text: t('pages.exit.returnToApplication'),
|
|
23
23
|
href: returnUrl,
|
|
24
24
|
classes: "govuk-button--secondary"
|
|
25
25
|
}) }}
|
|
@@ -14,15 +14,15 @@
|
|
|
14
14
|
|
|
15
15
|
{% if formAction %}
|
|
16
16
|
{{ govukButton({
|
|
17
|
-
text:
|
|
17
|
+
text: t('pages.fileUpload.upload'),
|
|
18
18
|
classes: "govuk-button--secondary upload-file-button",
|
|
19
19
|
preventDoubleClick: true,
|
|
20
20
|
disabled: context.isForceAccess
|
|
21
21
|
}) }}
|
|
22
22
|
{% else %}
|
|
23
23
|
{{ govukWarningText({
|
|
24
|
-
text:
|
|
25
|
-
iconFallbackText:
|
|
24
|
+
text: t('pages.fileUpload.maxFilesReached'),
|
|
25
|
+
iconFallbackText: t('common.warningIconFallback')
|
|
26
26
|
}) }}
|
|
27
27
|
{% endif %}
|
|
28
28
|
</form>
|
|
@@ -13,14 +13,14 @@
|
|
|
13
13
|
|
|
14
14
|
{% if showPaymentExpiredNotification %}
|
|
15
15
|
{{ govukNotificationBanner({
|
|
16
|
-
titleText:
|
|
17
|
-
html: '<h3 class="govuk-notification-banner__heading">
|
|
16
|
+
titleText: t('pages.question.paymentCancelledBannerTitle'),
|
|
17
|
+
html: '<h3 class="govuk-notification-banner__heading">' + t('pages.question.paymentCancelledTitle') + '</h3><p class="govuk-body">' + t('pages.question.paymentCancelledBody') + '</p><p class="govuk-body">' + t('pages.question.paymentCancelledAction') + '</p>'
|
|
18
18
|
}) }}
|
|
19
19
|
{% endif %}
|
|
20
20
|
|
|
21
21
|
{% if errors | length and not showPaymentExpiredNotification %}
|
|
22
22
|
{{ govukErrorSummary({
|
|
23
|
-
titleText:
|
|
23
|
+
titleText: t('errors.title'),
|
|
24
24
|
errorList: checkErrorTemplates(errors)
|
|
25
25
|
}) }}
|
|
26
26
|
{% endif %}
|
|
@@ -20,11 +20,11 @@
|
|
|
20
20
|
{{ componentList(components) }}
|
|
21
21
|
|
|
22
22
|
{% if isStartPage %}
|
|
23
|
-
{% set buttonText =
|
|
23
|
+
{% set buttonText = t('pages.question.startNow') %}
|
|
24
24
|
{% elif submitButtonText %}
|
|
25
25
|
{% set buttonText = submitButtonText %}
|
|
26
26
|
{% else %}
|
|
27
|
-
{% set buttonText =
|
|
27
|
+
{% set buttonText = t('common.continue') %}
|
|
28
28
|
{% endif %}
|
|
29
29
|
|
|
30
30
|
<div class="govuk-button-group">
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
|
|
39
39
|
{% if allowSaveAndExit %}
|
|
40
40
|
{{ govukButton({
|
|
41
|
-
text:
|
|
41
|
+
text: t('common.saveAndExit'),
|
|
42
42
|
classes: "govuk-button--secondary",
|
|
43
43
|
name: "action",
|
|
44
44
|
value: "save-and-exit",
|
|
@@ -9,23 +9,23 @@
|
|
|
9
9
|
{%- endmacro -%}
|
|
10
10
|
|
|
11
11
|
{% call govukNotificationBanner() %}
|
|
12
|
+
{% set previewModeTranslated = t('common.' + previewMode) %}
|
|
12
13
|
{% if not context.isForceAccess %}
|
|
13
14
|
<p class="govuk-notification-banner__heading govuk-!-margin-bottom-0">
|
|
14
|
-
|
|
15
|
+
{{ t('pages.preview.bannerForce', { previewMode: previewModeTranslated }) }}
|
|
15
16
|
</p>
|
|
16
17
|
|
|
17
18
|
{{ _closeLink() }}
|
|
18
19
|
{% else %}
|
|
19
20
|
<p class="govuk-notification-banner__heading govuk-!-margin-bottom-0">
|
|
20
|
-
|
|
21
|
+
{{ t('pages.preview.bannerText', { previewMode: previewModeTranslated }) }}
|
|
21
22
|
</p>
|
|
22
23
|
|
|
23
24
|
{{ _closeLink() }}
|
|
24
25
|
|
|
25
26
|
{% if hasPreviousPages %}
|
|
26
27
|
<p class="govuk-body govuk-!-margin-top-2">
|
|
27
|
-
|
|
28
|
-
version, users will need to complete those questions first.
|
|
28
|
+
{{ t('pages.preview.previousPages') }}
|
|
29
29
|
</p>
|
|
30
30
|
{% endif %}
|
|
31
31
|
{% endif %}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
{% from "govuk/components/warning-text/macro.njk" import govukWarningText %}
|
|
2
2
|
|
|
3
|
-
{% set
|
|
4
|
-
|
|
5
|
-
{% endset %}
|
|
3
|
+
{% set linkText %}{{ t('pages.preview.warnMissingNotificationEmail.linkText') }}{% endset %}
|
|
4
|
+
{% set linkHtml %}<a target="_blank" rel="noopener noreferrer" class="govuk-link" href="{{ config.designerUrl }}/library/{{ slug }}/edit/notification-email">{{ linkText }}</a>{% endset %}
|
|
6
5
|
|
|
7
6
|
{{ govukWarningText({
|
|
8
|
-
html:
|
|
9
|
-
iconFallbackText:
|
|
7
|
+
html: t('pages.preview.warnMissingNotificationEmail.body', { link: linkHtml }),
|
|
8
|
+
iconFallbackText: t('common.warningIconFallback')
|
|
10
9
|
}) }}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
|
|
14
14
|
{% if errors %}
|
|
15
15
|
{{ govukErrorSummary({
|
|
16
|
-
titleText:
|
|
16
|
+
titleText: t('errors.title'),
|
|
17
17
|
errorList: errors
|
|
18
18
|
}) }}
|
|
19
19
|
{% endif %}
|
|
@@ -29,14 +29,14 @@
|
|
|
29
29
|
|
|
30
30
|
<div class="govuk-button-group">
|
|
31
31
|
{{ govukButton({
|
|
32
|
-
text:
|
|
32
|
+
text: t('pages.repeater.continue'),
|
|
33
33
|
name: "action",
|
|
34
34
|
value: "continue",
|
|
35
35
|
preventDoubleClick: true
|
|
36
36
|
}) }}
|
|
37
37
|
|
|
38
38
|
{{ govukButton({
|
|
39
|
-
text:
|
|
39
|
+
text: t('pages.repeater.addAnother'),
|
|
40
40
|
name: "action",
|
|
41
41
|
value: "add-another",
|
|
42
42
|
classes: "govuk-button--secondary",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
|
|
46
46
|
{% if allowSaveAndExit %}
|
|
47
47
|
{{ govukButton({
|
|
48
|
-
text:
|
|
48
|
+
text: t('pages.repeater.saveAndExit'),
|
|
49
49
|
classes: "govuk-button--secondary",
|
|
50
50
|
name: "action",
|
|
51
51
|
value: "save-and-exit",
|
|
@@ -17,14 +17,14 @@
|
|
|
17
17
|
{% if paymentState and paymentState.preAuth and paymentState.preAuth.status == 'success' %}
|
|
18
18
|
{{ govukNotificationBanner({
|
|
19
19
|
type: "success",
|
|
20
|
-
titleText:
|
|
21
|
-
html: "<h3 class=\"govuk-notification-banner__heading\">
|
|
20
|
+
titleText: t('pages.summary.paymentSuccessBannerTitle'),
|
|
21
|
+
html: "<h3 class=\"govuk-notification-banner__heading\">" + t('pages.summary.paymentSuccessTitle') + "</h3><p class=\"govuk-body\">" + t('pages.summary.paymentSuccessBody') + "</p>"
|
|
22
22
|
}) }}
|
|
23
23
|
{% endif %}
|
|
24
24
|
|
|
25
25
|
{% if errors %}
|
|
26
26
|
{{ govukErrorSummary({
|
|
27
|
-
titleText:
|
|
27
|
+
titleText: t('errors.title'),
|
|
28
28
|
errorList: checkErrorTemplates(errors)
|
|
29
29
|
}) }}
|
|
30
30
|
{% endif %}
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
{{ componentList(components) }}
|
|
66
66
|
|
|
67
67
|
{% if declaration %}
|
|
68
|
-
<h2 class="govuk-heading-m" id="declaration">
|
|
68
|
+
<h2 class="govuk-heading-m" id="declaration">{{ t('pages.summary.declaration') }}</h2>
|
|
69
69
|
<div class="govuk-body">
|
|
70
70
|
{{ declaration | safe }}
|
|
71
71
|
</div>
|
|
@@ -75,12 +75,19 @@
|
|
|
75
75
|
{% set isDeclaration = declaration or components | length %}
|
|
76
76
|
{% set paymentPending = paymentRequired and not paymentState %}
|
|
77
77
|
|
|
78
|
+
{% set submitButtonText = t('pages.summary.submit') %}
|
|
79
|
+
{% if paymentPending %}
|
|
80
|
+
{% set submitButtonText = t('pages.summary.payAndSubmit') %}
|
|
81
|
+
{% endif %}
|
|
82
|
+
{% if isDeclaration %}
|
|
83
|
+
{% set submitButtonText = t('pages.summary.acceptAndSubmit') %}
|
|
84
|
+
{% endif %}
|
|
85
|
+
|
|
78
86
|
{# The prevent-multiple-clicks CSS class wires up to debounce-click.js to disable the button for 10s.
|
|
79
87
|
For those with JS enabled, it will help prevent multiple submissions when a large form is taking a while to submit.
|
|
80
88
|
When a better fix is implemented, this class can be removed and preventDoubleClick should be set back to true. #}
|
|
81
89
|
{{ govukButton({
|
|
82
|
-
text:
|
|
83
|
-
classes: "prevent-multiple-clicks",
|
|
90
|
+
text: submitButtonText,
|
|
84
91
|
name: "action",
|
|
85
92
|
value: "send",
|
|
86
93
|
preventDoubleClick: false
|
|
@@ -88,7 +95,7 @@
|
|
|
88
95
|
|
|
89
96
|
{% if allowSaveAndExit %}
|
|
90
97
|
{{ govukButton({
|
|
91
|
-
text:
|
|
98
|
+
text: t('pages.summary.saveAndExit'),
|
|
92
99
|
classes: "govuk-button--secondary",
|
|
93
100
|
name: "action",
|
|
94
101
|
value: "save-and-exit",
|