@defra/forms-engine-plugin 5.0.0-alpha.3 → 5.0.0-alpha.30
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/37c964ca545c240f010a.mjs +2 -0
- package/.public/37c964ca545c240f010a.mjs.LICENSE.txt +4 -0
- package/.public/assets-manifest.json +3 -0
- package/.public/javascripts/application.min.js +1 -1
- package/.public/javascripts/application.min.js.LICENSE.txt +7 -0
- package/.public/javascripts/application.min.js.map +1 -1
- package/.public/javascripts/shared.min.js +1 -1
- package/.public/javascripts/shared.min.js.LICENSE.txt +9 -0
- 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/javascripts/vendor/maplibre-gl.min.js +1 -1
- package/.public/javascripts/vendor/maplibre-gl.min.js.LICENSE.txt +3 -3
- package/.public/javascripts/vendor/maplibre-gl.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 +6 -3
- package/.server/client/javascripts/file-upload.js.map +1 -1
- package/.server/client/javascripts/geospatial-map.d.ts +159 -5
- package/.server/client/javascripts/geospatial-map.js +161 -81
- package/.server/client/javascripts/geospatial-map.js.map +1 -1
- package/.server/client/javascripts/geospatial-map.test.js +152 -0
- package/.server/client/javascripts/geospatial-map.test.js.map +1 -0
- package/.server/client/javascripts/govuk.js +2 -1
- package/.server/client/javascripts/govuk.js.map +1 -1
- package/.server/client/javascripts/location-map.d.ts +44 -0
- package/.server/client/javascripts/location-map.js +55 -6
- package/.server/client/javascripts/location-map.js.map +1 -1
- package/.server/client/javascripts/map-constants.d.ts +3 -0
- package/.server/client/javascripts/map-constants.js +4 -0
- package/.server/client/javascripts/map-constants.js.map +1 -0
- package/.server/client/javascripts/map.d.ts +17 -4
- package/.server/client/javascripts/map.js +59 -6
- package/.server/client/javascripts/map.js.map +1 -1
- package/.server/client/javascripts/maps.d.ts +5 -0
- package/.server/client/javascripts/maps.js +6 -0
- package/.server/client/javascripts/maps.js.map +1 -0
- package/.server/client/javascripts/shared.d.ts +1 -4
- package/.server/client/javascripts/shared.js +1 -4
- package/.server/client/javascripts/shared.js.map +1 -1
- package/.server/client/javascripts/sssi-dataset.d.ts +18 -20
- package/.server/client/javascripts/sssi-dataset.js +37 -39
- package/.server/client/javascripts/sssi-dataset.js.map +1 -1
- package/.server/client/stylesheets/maps.scss +4 -0
- package/.server/client/stylesheets/shared.scss +1 -5
- package/.server/server/constants.d.ts +2 -0
- package/.server/server/constants.js +2 -0
- package/.server/server/constants.js.map +1 -1
- package/.server/server/forms/components.json +8 -0
- package/.server/server/forms/register-as-a-unicorn-breeder.yaml +4 -0
- package/.server/server/plugins/engine/__stubs__/definitions.d.ts +29 -0
- package/.server/server/plugins/engine/__stubs__/definitions.js +125 -0
- package/.server/server/plugins/engine/__stubs__/definitions.js.map +1 -0
- package/.server/server/plugins/engine/components/AutocompleteField.d.ts +8 -3
- package/.server/server/plugins/engine/components/AutocompleteField.js +17 -0
- package/.server/server/plugins/engine/components/AutocompleteField.js.map +1 -1
- package/.server/server/plugins/engine/components/CheckboxesField.d.ts +23 -2
- package/.server/server/plugins/engine/components/CheckboxesField.js +30 -5
- package/.server/server/plugins/engine/components/CheckboxesField.js.map +1 -1
- package/.server/server/plugins/engine/components/ComponentBase.d.ts +2 -1
- 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 +12 -7
- 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 +6 -3
- package/.server/server/plugins/engine/components/DeclarationField.js +6 -4
- package/.server/server/plugins/engine/components/DeclarationField.js.map +1 -1
- package/.server/server/plugins/engine/components/Details.d.ts +1 -0
- package/.server/server/plugins/engine/components/EastingNorthingField.d.ts +33 -2
- package/.server/server/plugins/engine/components/EastingNorthingField.js +110 -54
- package/.server/server/plugins/engine/components/EastingNorthingField.js.map +1 -1
- package/.server/server/plugins/engine/components/EmailAddressField.d.ts +4 -1
- package/.server/server/plugins/engine/components/EmailAddressField.js +2 -1
- package/.server/server/plugins/engine/components/EmailAddressField.js.map +1 -1
- package/.server/server/plugins/engine/components/FileUploadField.d.ts +23 -2
- package/.server/server/plugins/engine/components/FileUploadField.js +35 -3
- package/.server/server/plugins/engine/components/FileUploadField.js.map +1 -1
- package/.server/server/plugins/engine/components/FormComponent.d.ts +5 -1
- package/.server/server/plugins/engine/components/FormComponent.js +5 -2
- package/.server/server/plugins/engine/components/FormComponent.js.map +1 -1
- package/.server/server/plugins/engine/components/GeospatialField.d.ts +23 -0
- package/.server/server/plugins/engine/components/GeospatialField.js +33 -9
- package/.server/server/plugins/engine/components/GeospatialField.js.map +1 -1
- package/.server/server/plugins/engine/components/Html.d.ts +1 -0
- package/.server/server/plugins/engine/components/InsetText.d.ts +1 -0
- package/.server/server/plugins/engine/components/LatLongField.d.ts +32 -2
- package/.server/server/plugins/engine/components/LatLongField.js +85 -48
- package/.server/server/plugins/engine/components/LatLongField.js.map +1 -1
- package/.server/server/plugins/engine/components/List.d.ts +1 -0
- package/.server/server/plugins/engine/components/ListFormComponent.d.ts +3 -2
- package/.server/server/plugins/engine/components/ListFormComponent.js.map +1 -1
- package/.server/server/plugins/engine/components/LocationFieldBase.d.ts +8 -2
- package/.server/server/plugins/engine/components/LocationFieldBase.js +31 -7
- package/.server/server/plugins/engine/components/LocationFieldBase.js.map +1 -1
- package/.server/server/plugins/engine/components/LocationFieldHelpers.d.ts +12 -3
- package/.server/server/plugins/engine/components/LocationFieldHelpers.js +21 -13
- package/.server/server/plugins/engine/components/LocationFieldHelpers.js.map +1 -1
- package/.server/server/plugins/engine/components/Markdown.d.ts +1 -0
- package/.server/server/plugins/engine/components/Markdown.js +1 -1
- package/.server/server/plugins/engine/components/Markdown.js.map +1 -1
- package/.server/server/plugins/engine/components/MonthYearField.d.ts +5 -2
- package/.server/server/plugins/engine/components/MonthYearField.js +13 -9
- package/.server/server/plugins/engine/components/MonthYearField.js.map +1 -1
- package/.server/server/plugins/engine/components/MultilineTextField.d.ts +1 -0
- package/.server/server/plugins/engine/components/NationalGridFieldNumberField.d.ts +2 -1
- package/.server/server/plugins/engine/components/NationalGridFieldNumberField.js +4 -3
- package/.server/server/plugins/engine/components/NationalGridFieldNumberField.js.map +1 -1
- package/.server/server/plugins/engine/components/NotificationBanner.d.ts +1 -0
- package/.server/server/plugins/engine/components/NumberField.d.ts +5 -0
- package/.server/server/plugins/engine/components/NumberField.js +22 -0
- package/.server/server/plugins/engine/components/NumberField.js.map +1 -1
- package/.server/server/plugins/engine/components/OsGridRefField.d.ts +103 -1
- package/.server/server/plugins/engine/components/OsGridRefField.js +13 -3
- package/.server/server/plugins/engine/components/OsGridRefField.js.map +1 -1
- package/.server/server/plugins/engine/components/PaymentField.d.ts +2 -0
- package/.server/server/plugins/engine/components/PaymentField.js +9 -5
- 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/TrackingField.d.ts +21 -0
- package/.server/server/plugins/engine/components/TrackingField.js +46 -0
- package/.server/server/plugins/engine/components/TrackingField.js.map +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 +3 -2
- package/.server/server/plugins/engine/components/YesNoField.js +22 -8
- package/.server/server/plugins/engine/components/YesNoField.js.map +1 -1
- package/.server/server/plugins/engine/components/helpers/components.d.ts +1 -1
- package/.server/server/plugins/engine/components/helpers/components.js +6 -3
- package/.server/server/plugins/engine/components/helpers/components.js.map +1 -1
- package/.server/server/plugins/engine/components/helpers/geospatial.d.ts +8 -1
- package/.server/server/plugins/engine/components/helpers/geospatial.js +58 -17
- package/.server/server/plugins/engine/components/helpers/geospatial.js.map +1 -1
- package/.server/server/plugins/engine/components/helpers/index.d.ts +21 -1
- package/.server/server/plugins/engine/components/helpers/index.js +45 -1
- package/.server/server/plugins/engine/components/helpers/index.js.map +1 -1
- package/.server/server/plugins/engine/components/index.d.ts +1 -0
- package/.server/server/plugins/engine/components/index.js +1 -0
- package/.server/server/plugins/engine/components/index.js.map +1 -1
- package/.server/server/plugins/engine/components/types.d.ts +1 -0
- package/.server/server/plugins/engine/components/types.js.map +1 -1
- package/.server/server/plugins/engine/errors.d.ts +49 -0
- package/.server/server/plugins/engine/errors.js +75 -0
- package/.server/server/plugins/engine/errors.js.map +1 -0
- package/.server/server/plugins/engine/form-availability.d.ts +3 -2
- package/.server/server/plugins/engine/form-availability.js +3 -2
- package/.server/server/plugins/engine/form-availability.js.map +1 -1
- package/.server/server/plugins/engine/form-context.js +2 -2
- package/.server/server/plugins/engine/form-context.js.map +1 -1
- package/.server/server/plugins/engine/helpers.d.ts +23 -2
- package/.server/server/plugins/engine/helpers.js +44 -5
- package/.server/server/plugins/engine/helpers.js.map +1 -1
- package/.server/server/plugins/engine/i18n/buildValidationMessages.d.ts +4 -1
- package/.server/server/plugins/engine/i18n/buildValidationMessages.js +31 -7
- package/.server/server/plugins/engine/i18n/buildValidationMessages.js.map +1 -1
- package/.server/server/plugins/engine/i18n/createFormTranslator.d.ts +4 -4
- package/.server/server/plugins/engine/i18n/createFormTranslator.js +27 -5
- 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 +176 -7
- package/.server/server/plugins/engine/i18n/translations/en-GB.json +110 -6
- 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 +35 -23
- package/.server/server/plugins/engine/models/FormModel.js.map +1 -1
- package/.server/server/plugins/engine/models/SummaryViewModel.js +9 -4
- package/.server/server/plugins/engine/models/SummaryViewModel.js.map +1 -1
- package/.server/server/plugins/engine/models/types.d.ts +28 -1
- package/.server/server/plugins/engine/models/types.js.map +1 -1
- package/.server/server/plugins/engine/models/unavailable-view-model.d.ts +11 -2
- package/.server/server/plugins/engine/models/unavailable-view-model.js +23 -4
- package/.server/server/plugins/engine/models/unavailable-view-model.js.map +1 -1
- package/.server/server/plugins/engine/options.js +2 -1
- package/.server/server/plugins/engine/options.js.map +1 -1
- package/.server/server/plugins/engine/outputFormatters/adapter/v1.js +14 -6
- package/.server/server/plugins/engine/outputFormatters/adapter/v1.js.map +1 -1
- package/.server/server/plugins/engine/outputFormatters/human/v1.js +2 -1
- package/.server/server/plugins/engine/outputFormatters/human/v1.js.map +1 -1
- package/.server/server/plugins/engine/outputFormatters/machine/v2.d.ts +2 -0
- package/.server/server/plugins/engine/outputFormatters/machine/v2.js +2 -0
- package/.server/server/plugins/engine/outputFormatters/machine/v2.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/FileUploadPageController.d.ts +7 -1
- package/.server/server/plugins/engine/pageControllers/FileUploadPageController.js +56 -10
- package/.server/server/plugins/engine/pageControllers/FileUploadPageController.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/QuestionPageController.d.ts +1 -1
- package/.server/server/plugins/engine/pageControllers/QuestionPageController.js +2 -2
- package/.server/server/plugins/engine/pageControllers/QuestionPageController.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/RepeatPageController.js +3 -4
- package/.server/server/plugins/engine/pageControllers/RepeatPageController.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/SummaryPageController.js +10 -4
- package/.server/server/plugins/engine/pageControllers/SummaryPageController.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/helpers/pages.js +2 -1
- package/.server/server/plugins/engine/pageControllers/helpers/pages.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/helpers/submission.d.ts +35 -2
- package/.server/server/plugins/engine/pageControllers/helpers/submission.js +100 -3
- package/.server/server/plugins/engine/pageControllers/helpers/submission.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/validationOptions.d.ts +1 -1
- package/.server/server/plugins/engine/pageControllers/validationOptions.js +24 -3
- package/.server/server/plugins/engine/pageControllers/validationOptions.js.map +1 -1
- package/.server/server/plugins/engine/plugin.js +3 -0
- package/.server/server/plugins/engine/plugin.js.map +1 -1
- package/.server/server/plugins/engine/referenceNumbers.d.ts +1 -0
- package/.server/server/plugins/engine/referenceNumbers.js +1 -0
- package/.server/server/plugins/engine/referenceNumbers.js.map +1 -1
- package/.server/server/plugins/engine/routes/index.js +9 -4
- package/.server/server/plugins/engine/routes/index.js.map +1 -1
- package/.server/server/plugins/engine/types/enums.d.ts +3 -3
- package/.server/server/plugins/engine/types/enums.js +5 -4
- package/.server/server/plugins/engine/types/enums.js.map +1 -1
- package/.server/server/plugins/engine/types/schema.js +15 -4
- package/.server/server/plugins/engine/types/schema.js.map +1 -1
- package/.server/server/plugins/engine/types.d.ts +24 -2
- package/.server/server/plugins/engine/types.js.map +1 -1
- package/.server/server/plugins/engine/unavailable-response.js +5 -2
- package/.server/server/plugins/engine/unavailable-response.js.map +1 -1
- package/.server/server/plugins/engine/views/components/_location-field-base.html +4 -2
- package/.server/server/plugins/engine/views/components/fileuploadfield.html +1 -1
- package/.server/server/plugins/engine/views/components/geospatialfield.html +1 -0
- package/.server/server/plugins/engine/views/components/osgridreffield.html +4 -1
- package/.server/server/plugins/engine/views/components/trackingfield.html +3 -0
- package/.server/server/plugins/engine/views/components/ukaddressfield.html +1 -1
- package/.server/server/plugins/engine/views/file-upload.html +1 -1
- package/.server/server/plugins/engine/views/summary.html +1 -0
- package/.server/server/plugins/engine/views/unavailable.html +14 -11
- package/.server/server/plugins/map/routes/index.d.ts +4 -0
- package/.server/server/plugins/map/routes/index.js +12 -4
- package/.server/server/plugins/map/routes/index.js.map +1 -1
- package/.server/server/plugins/map/routes/index.test.js +7 -0
- package/.server/server/plugins/map/routes/index.test.js.map +1 -0
- package/.server/server/plugins/map/routes/vts/README.md +38 -0
- package/.server/server/plugins/map/routes/vts/countries-5dp.geojson +4 -0
- package/.server/server/plugins/map/routes/vts/countries.geojson +10 -39283
- package/.server/server/plugins/map/types.d.ts +24 -2
- package/.server/server/plugins/map/types.js +9 -2
- package/.server/server/plugins/map/types.js.map +1 -1
- package/.server/server/plugins/nunjucks/enviroment.test.js +11 -4
- package/.server/server/plugins/nunjucks/enviroment.test.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 +103 -36
- 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 +64 -18
- package/.server/server/plugins/postcode-lookup/routes/index.js.map +1 -1
- package/.server/server/plugins/postcode-lookup/routes/index.test.js +84 -0
- package/.server/server/plugins/postcode-lookup/routes/index.test.js.map +1 -0
- package/.server/server/plugins/postcode-lookup/types.d.ts +12 -0
- package/.server/server/plugins/postcode-lookup/types.js +6 -1
- package/.server/server/plugins/postcode-lookup/types.js.map +1 -1
- package/.server/server/plugins/postcode-lookup/views/postcode-lookup-details.html +3 -3
- package/.server/server/utils/type-utils.d.ts +1 -2
- package/.server/server/utils/type-utils.js +0 -3
- package/.server/server/utils/type-utils.js.map +1 -1
- package/.server/server/utils/utils.d.ts +6 -0
- package/.server/server/utils/utils.js +18 -1
- package/.server/server/utils/utils.js.map +1 -1
- package/.server/server/utils/utils.test.js +21 -1
- package/.server/server/utils/utils.test.js.map +1 -1
- package/.server/typings/geodesy/index.d.js +2 -0
- package/.server/typings/geodesy/index.d.js.map +1 -0
- package/.server/typings/hapi/index.d.js.map +1 -1
- package/package.json +24 -9
- package/src/client/javascripts/file-upload.js +11 -3
- package/src/client/javascripts/geospatial-map.js +181 -86
- package/src/client/javascripts/govuk.js +2 -0
- package/src/client/javascripts/location-map.js +62 -6
- package/src/client/javascripts/map-constants.js +3 -0
- package/src/client/javascripts/map.js +66 -9
- package/src/client/javascripts/maps.js +5 -0
- package/src/client/javascripts/shared.js +1 -4
- package/src/client/javascripts/sssi-dataset.js +39 -41
- package/src/client/stylesheets/maps.scss +4 -0
- package/src/client/stylesheets/shared.scss +1 -5
- package/src/server/constants.js +2 -0
- package/src/server/forms/components.json +8 -0
- package/src/server/forms/register-as-a-unicorn-breeder.yaml +4 -0
- package/src/server/plugins/engine/__stubs__/definitions.ts +155 -0
- package/src/server/plugins/engine/components/AutocompleteField.ts +20 -0
- package/src/server/plugins/engine/components/CheckboxesField.ts +41 -8
- package/src/server/plugins/engine/components/ComponentBase.ts +6 -4
- package/src/server/plugins/engine/components/ComponentCollection.ts +17 -15
- package/src/server/plugins/engine/components/DatePartsField.ts +20 -9
- package/src/server/plugins/engine/components/DeclarationField.ts +10 -10
- package/src/server/plugins/engine/components/EastingNorthingField.ts +185 -89
- package/src/server/plugins/engine/components/EmailAddressField.ts +2 -1
- package/src/server/plugins/engine/components/FileUploadField.ts +46 -5
- package/src/server/plugins/engine/components/FormComponent.ts +6 -5
- package/src/server/plugins/engine/components/GeospatialField.ts +47 -9
- package/src/server/plugins/engine/components/LatLongField.ts +128 -58
- package/src/server/plugins/engine/components/ListFormComponent.ts +4 -4
- package/src/server/plugins/engine/components/LocationFieldBase.ts +41 -8
- package/src/server/plugins/engine/components/LocationFieldHelpers.ts +28 -14
- package/src/server/plugins/engine/components/Markdown.ts +2 -3
- package/src/server/plugins/engine/components/MonthYearField.ts +20 -15
- package/src/server/plugins/engine/components/NationalGridFieldNumberField.ts +9 -3
- package/src/server/plugins/engine/components/NumberField.ts +24 -0
- package/src/server/plugins/engine/components/OsGridRefField.ts +22 -3
- package/src/server/plugins/engine/components/PaymentField.ts +9 -4
- package/src/server/plugins/engine/components/TrackingField.ts +64 -0
- package/src/server/plugins/engine/components/UkAddressField.ts +30 -7
- package/src/server/plugins/engine/components/YesNoField.ts +27 -9
- package/src/server/plugins/engine/components/helpers/components.ts +8 -3
- package/src/server/plugins/engine/components/helpers/geospatial.ts +87 -24
- package/src/server/plugins/engine/components/helpers/index.ts +64 -1
- package/src/server/plugins/engine/components/index.ts +1 -0
- package/src/server/plugins/engine/components/types.ts +1 -0
- package/src/server/plugins/engine/errors.ts +78 -0
- package/src/server/plugins/engine/form-availability.ts +8 -2
- package/src/server/plugins/engine/form-context.ts +4 -2
- package/src/server/plugins/engine/helpers.ts +52 -5
- package/src/server/plugins/engine/i18n/buildValidationMessages.ts +16 -8
- package/src/server/plugins/engine/i18n/createFormTranslator.ts +43 -12
- 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 +176 -7
- package/src/server/plugins/engine/i18n/translations/en-GB.json +110 -6
- 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 +46 -23
- package/src/server/plugins/engine/models/SummaryViewModel.ts +6 -5
- package/src/server/plugins/engine/models/types.ts +31 -0
- package/src/server/plugins/engine/models/unavailable-view-model.ts +26 -5
- package/src/server/plugins/engine/options.js +2 -1
- package/src/server/plugins/engine/outputFormatters/adapter/v1.ts +18 -7
- package/src/server/plugins/engine/outputFormatters/human/v1.ts +2 -1
- package/src/server/plugins/engine/outputFormatters/machine/v2.ts +3 -0
- package/src/server/plugins/engine/pageControllers/FileUploadPageController.ts +60 -9
- package/src/server/plugins/engine/pageControllers/QuestionPageController.ts +2 -2
- package/src/server/plugins/engine/pageControllers/RepeatPageController.ts +2 -2
- package/src/server/plugins/engine/pageControllers/SummaryPageController.ts +15 -4
- package/src/server/plugins/engine/pageControllers/helpers/pages.ts +2 -1
- package/src/server/plugins/engine/pageControllers/helpers/submission.ts +143 -4
- package/src/server/plugins/engine/pageControllers/validationOptions.ts +29 -4
- package/src/server/plugins/engine/plugin.ts +6 -0
- package/src/server/plugins/engine/referenceNumbers.ts +2 -0
- package/src/server/plugins/engine/routes/index.ts +9 -3
- package/src/server/plugins/engine/types/enums.ts +4 -3
- package/src/server/plugins/engine/types/schema.ts +22 -5
- package/src/server/plugins/engine/types.ts +28 -1
- package/src/server/plugins/engine/unavailable-response.ts +6 -2
- package/src/server/plugins/engine/views/components/_location-field-base.html +4 -2
- package/src/server/plugins/engine/views/components/fileuploadfield.html +1 -1
- package/src/server/plugins/engine/views/components/geospatialfield.html +1 -0
- package/src/server/plugins/engine/views/components/osgridreffield.html +4 -1
- package/src/server/plugins/engine/views/components/trackingfield.html +3 -0
- package/src/server/plugins/engine/views/components/ukaddressfield.html +1 -1
- package/src/server/plugins/engine/views/file-upload.html +1 -1
- package/src/server/plugins/engine/views/summary.html +1 -0
- package/src/server/plugins/engine/views/unavailable.html +14 -11
- package/src/server/plugins/map/routes/index.js +29 -4
- package/src/server/plugins/map/routes/vts/README.md +38 -0
- package/src/server/plugins/map/routes/vts/countries-5dp.geojson +4 -0
- package/src/server/plugins/map/routes/vts/countries.geojson +10 -39283
- package/src/server/plugins/map/types.js +9 -2
- 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 +91 -46
- package/src/server/plugins/postcode-lookup/routes/index.js +96 -24
- package/src/server/plugins/postcode-lookup/types.js +6 -1
- package/src/server/plugins/postcode-lookup/views/postcode-lookup-details.html +3 -3
- package/src/server/utils/type-utils.ts +1 -11
- package/src/server/utils/utils.js +19 -1
- package/src/typings/geodesy/index.d.ts +18 -0
- package/src/typings/hapi/index.d.ts +2 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","names":["initAllAutocomplete","initAllAutocompleteImp","initDebounceClick","initDebounceClickImp","initFileUpload","initFileUploadImp","initAllGovuk","initAllGovukImp","initPreviewCloseLink","initPreviewCloseLinkImp","
|
|
1
|
+
{"version":3,"file":"shared.js","names":["initAllAutocomplete","initAllAutocompleteImp","initDebounceClick","initDebounceClickImp","initFileUpload","initFileUploadImp","initAllGovuk","initAllGovukImp","initPreviewCloseLink","initPreviewCloseLinkImp","initAll"],"sources":["../../../src/client/javascripts/shared.js"],"sourcesContent":["import { initAllAutocomplete as initAllAutocompleteImp } from '~/src/client/javascripts/autocomplete.js'\nimport { initDebounceClick as initDebounceClickImp } from '~/src/client/javascripts/debounce-click.js'\nimport { initFileUpload as initFileUploadImp } from '~/src/client/javascripts/file-upload.js'\nimport { initAllGovuk as initAllGovukImp } from '~/src/client/javascripts/govuk.js'\nimport { initPreviewCloseLink as initPreviewCloseLinkImp } from '~/src/client/javascripts/preview-close-link.js'\nexport * from '~/src/client/javascripts/maps.js'\n\nexport const initAllGovuk = initAllGovukImp\nexport const initAllAutocomplete = initAllAutocompleteImp\nexport const initDebounceClick = initDebounceClickImp\nexport const initFileUpload = initFileUploadImp\nexport const initPreviewCloseLink = initPreviewCloseLinkImp\n\n/**\n * Initialise all clientside components (but not maps as this will be an opt-in for now given the additional UMD assets that are required)\n */\nexport function initAll() {\n initAllGovuk()\n initAllAutocomplete()\n initDebounceClick()\n initFileUpload()\n initPreviewCloseLink()\n}\n"],"mappings":"AAAA,SAASA,mBAAmB,IAAIC,sBAAsB;AACtD,SAASC,iBAAiB,IAAIC,oBAAoB;AAClD,SAASC,cAAc,IAAIC,iBAAiB;AAC5C,SAASC,YAAY,IAAIC,eAAe;AACxC,SAASC,oBAAoB,IAAIC,uBAAuB;AACxD;AAEA,OAAO,MAAMH,YAAY,GAAGC,eAAe;AAC3C,OAAO,MAAMP,mBAAmB,GAAGC,sBAAsB;AACzD,OAAO,MAAMC,iBAAiB,GAAGC,oBAAoB;AACrD,OAAO,MAAMC,cAAc,GAAGC,iBAAiB;AAC/C,OAAO,MAAMG,oBAAoB,GAAGC,uBAAuB;;AAE3D;AACA;AACA;AACA,OAAO,SAASC,OAAOA,CAAA,EAAG;EACxBJ,YAAY,CAAC,CAAC;EACdN,mBAAmB,CAAC,CAAC;EACrBE,iBAAiB,CAAC,CAAC;EACnBE,cAAc,CAAC,CAAC;EAChBI,oBAAoB,CAAC,CAAC;AACxB","ignoreList":[]}
|
|
@@ -1,26 +1,24 @@
|
|
|
1
1
|
export function sssiEnglandRequestTransformer(url: string, options: TransformRequestOptions): any;
|
|
2
2
|
export function sssiWalesRequestTransformer(url: string, options: TransformRequestOptions): any;
|
|
3
3
|
export function sssiScotlandRequestTransformer(url: string, options: TransformRequestOptions): any;
|
|
4
|
-
declare
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
}[];
|
|
23
|
-
}
|
|
4
|
+
declare const _default: {
|
|
5
|
+
id: string;
|
|
6
|
+
label: string;
|
|
7
|
+
dynamicGeoJSON: {
|
|
8
|
+
url: string;
|
|
9
|
+
idProperty: string;
|
|
10
|
+
transformRequest: typeof sssiEnglandRequestTransformer;
|
|
11
|
+
};
|
|
12
|
+
minZoom: number;
|
|
13
|
+
style: {
|
|
14
|
+
stroke: string;
|
|
15
|
+
fillPattern: string;
|
|
16
|
+
fillPatternForegroundColor: string;
|
|
17
|
+
fillPatternBackgroundColor: string;
|
|
18
|
+
};
|
|
19
|
+
showInKey: boolean;
|
|
20
|
+
showInMenu: boolean;
|
|
21
|
+
}[];
|
|
24
22
|
export default _default;
|
|
25
23
|
export type TransformRequestOptions = {
|
|
26
24
|
/**
|
|
@@ -47,45 +47,43 @@ export function sssiScotlandRequestTransformer(url, {
|
|
|
47
47
|
url: uri.toString()
|
|
48
48
|
};
|
|
49
49
|
}
|
|
50
|
-
export default {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
}]
|
|
88
|
-
};
|
|
50
|
+
export default [{
|
|
51
|
+
id: 'sssi-england',
|
|
52
|
+
label: 'Sites of Special Scientific Interest',
|
|
53
|
+
dynamicGeoJSON: {
|
|
54
|
+
url: englandWFS,
|
|
55
|
+
idProperty: 'ref_code',
|
|
56
|
+
transformRequest: sssiEnglandRequestTransformer
|
|
57
|
+
},
|
|
58
|
+
minZoom,
|
|
59
|
+
style,
|
|
60
|
+
showInKey: true,
|
|
61
|
+
showInMenu: false
|
|
62
|
+
}, {
|
|
63
|
+
id: 'sssi-wales',
|
|
64
|
+
label: 'SSSI Wales',
|
|
65
|
+
dynamicGeoJSON: {
|
|
66
|
+
url: walesWFS,
|
|
67
|
+
idProperty: 'id',
|
|
68
|
+
transformRequest: sssiWalesRequestTransformer
|
|
69
|
+
},
|
|
70
|
+
minZoom,
|
|
71
|
+
style,
|
|
72
|
+
showInKey: false,
|
|
73
|
+
showInMenu: false
|
|
74
|
+
}, {
|
|
75
|
+
id: 'sssi-scotland',
|
|
76
|
+
label: 'SSSI Scotland',
|
|
77
|
+
dynamicGeoJSON: {
|
|
78
|
+
url: scotlandWFS,
|
|
79
|
+
idProperty: 'OBJECTID',
|
|
80
|
+
transformRequest: sssiScotlandRequestTransformer
|
|
81
|
+
},
|
|
82
|
+
minZoom,
|
|
83
|
+
style,
|
|
84
|
+
showInKey: false,
|
|
85
|
+
showInMenu: false
|
|
86
|
+
}];
|
|
89
87
|
|
|
90
88
|
/**
|
|
91
89
|
* @typedef {object} TransformRequestOptions
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sssi-dataset.js","names":["style","stroke","fillPattern","fillPatternForegroundColor","fillPatternBackgroundColor","minZoom","englandWFS","walesWFS","scotlandWFS","sssiEnglandRequestTransformer","url","bbox","uri","URL","searchParams","set","join","toString","sssiWalesRequestTransformer","sssiScotlandRequestTransformer","
|
|
1
|
+
{"version":3,"file":"sssi-dataset.js","names":["style","stroke","fillPattern","fillPatternForegroundColor","fillPatternBackgroundColor","minZoom","englandWFS","walesWFS","scotlandWFS","sssiEnglandRequestTransformer","url","bbox","uri","URL","searchParams","set","join","toString","sssiWalesRequestTransformer","sssiScotlandRequestTransformer","id","label","dynamicGeoJSON","idProperty","transformRequest","showInKey","showInMenu"],"sources":["../../../src/client/javascripts/sssi-dataset.js"],"sourcesContent":["const style = {\n stroke: '#00897B',\n fillPattern: 'diagonal-cross-hatch',\n fillPatternForegroundColor: '#00897B',\n fillPatternBackgroundColor: 'transparent'\n}\nconst minZoom = 12\n\nconst englandWFS =\n 'https://environment.data.gov.uk/geoservices/datasets/ba8dc201-66ef-4983-9d46-7378af21027e/ogc/features/v1/collections/Sites_of_Special_Scientific_Interest_England/items?f=json'\nconst walesWFS =\n 'https://datamap.gov.wales/geoserver/wfs?service=WFS&version=2.0.0&request=GetFeature&typeNames=inspire-nrw:NRW_SSSI&outputFormat=application/json&srsName=EPSG:4326'\nconst scotlandWFS =\n 'https://services1.arcgis.com/LM9GyVFsughzHdbO/ArcGIS/rest/services/Sites_of_Special_Scientific_Interest/FeatureServer/0/query?f=geojson&where=1%3D1&geometryType=esriGeometryEnvelope&inSR=4326&spatialRel=esriSpatialRelIntersects&returnGeometry=true&outFields=*'\n\n/**\n * @type {TransformRequestArgs}\n */\nexport function sssiEnglandRequestTransformer(url, { bbox }) {\n const uri = new URL(url)\n uri.searchParams.set('bbox', bbox.join(','))\n\n return {\n url: uri.toString()\n }\n}\n\n/**\n * @type {TransformRequestArgs}\n */\nexport function sssiWalesRequestTransformer(url, { bbox }) {\n const uri = new URL(url)\n uri.searchParams.set('bbox', `${bbox.join(',')},EPSG:4326`)\n\n return {\n url: uri.toString()\n }\n}\n\n/**\n * @type {TransformRequestArgs}\n */\nexport function sssiScotlandRequestTransformer(url, { bbox }) {\n const uri = new URL(url)\n uri.searchParams.set('geometry', bbox.join(','))\n\n return {\n url: uri.toString()\n }\n}\n\nexport default [\n {\n id: 'sssi-england',\n label: 'Sites of Special Scientific Interest',\n dynamicGeoJSON: {\n url: englandWFS,\n idProperty: 'ref_code',\n transformRequest: sssiEnglandRequestTransformer\n },\n minZoom,\n style,\n showInKey: true,\n showInMenu: false\n },\n {\n id: 'sssi-wales',\n label: 'SSSI Wales',\n dynamicGeoJSON: {\n url: walesWFS,\n idProperty: 'id',\n transformRequest: sssiWalesRequestTransformer\n },\n minZoom,\n style,\n showInKey: false,\n showInMenu: false\n },\n {\n id: 'sssi-scotland',\n label: 'SSSI Scotland',\n dynamicGeoJSON: {\n url: scotlandWFS,\n idProperty: 'OBJECTID',\n transformRequest: sssiScotlandRequestTransformer\n },\n minZoom,\n style,\n showInKey: false,\n showInMenu: false\n }\n]\n\n/**\n * @typedef {object} TransformRequestOptions\n * @property {string[]} bbox - the bounding box coordinates\n */\n\n/**\n * Transforms the request URL with bounding box parameters\n * @callback TransformRequestArgs\n * @param {string} url - the request URL\n * @param {TransformRequestOptions} options - the bounding box coordinates\n */\n"],"mappings":"AAAA,MAAMA,KAAK,GAAG;EACZC,MAAM,EAAE,SAAS;EACjBC,WAAW,EAAE,sBAAsB;EACnCC,0BAA0B,EAAE,SAAS;EACrCC,0BAA0B,EAAE;AAC9B,CAAC;AACD,MAAMC,OAAO,GAAG,EAAE;AAElB,MAAMC,UAAU,GACd,iLAAiL;AACnL,MAAMC,QAAQ,GACZ,qKAAqK;AACvK,MAAMC,WAAW,GACf,qQAAqQ;;AAEvQ;AACA;AACA;AACA,OAAO,SAASC,6BAA6BA,CAACC,GAAG,EAAE;EAAEC;AAAK,CAAC,EAAE;EAC3D,MAAMC,GAAG,GAAG,IAAIC,GAAG,CAACH,GAAG,CAAC;EACxBE,GAAG,CAACE,YAAY,CAACC,GAAG,CAAC,MAAM,EAAEJ,IAAI,CAACK,IAAI,CAAC,GAAG,CAAC,CAAC;EAE5C,OAAO;IACLN,GAAG,EAAEE,GAAG,CAACK,QAAQ,CAAC;EACpB,CAAC;AACH;;AAEA;AACA;AACA;AACA,OAAO,SAASC,2BAA2BA,CAACR,GAAG,EAAE;EAAEC;AAAK,CAAC,EAAE;EACzD,MAAMC,GAAG,GAAG,IAAIC,GAAG,CAACH,GAAG,CAAC;EACxBE,GAAG,CAACE,YAAY,CAACC,GAAG,CAAC,MAAM,EAAE,GAAGJ,IAAI,CAACK,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;EAE3D,OAAO;IACLN,GAAG,EAAEE,GAAG,CAACK,QAAQ,CAAC;EACpB,CAAC;AACH;;AAEA;AACA;AACA;AACA,OAAO,SAASE,8BAA8BA,CAACT,GAAG,EAAE;EAAEC;AAAK,CAAC,EAAE;EAC5D,MAAMC,GAAG,GAAG,IAAIC,GAAG,CAACH,GAAG,CAAC;EACxBE,GAAG,CAACE,YAAY,CAACC,GAAG,CAAC,UAAU,EAAEJ,IAAI,CAACK,IAAI,CAAC,GAAG,CAAC,CAAC;EAEhD,OAAO;IACLN,GAAG,EAAEE,GAAG,CAACK,QAAQ,CAAC;EACpB,CAAC;AACH;AAEA,eAAe,CACb;EACEG,EAAE,EAAE,cAAc;EAClBC,KAAK,EAAE,sCAAsC;EAC7CC,cAAc,EAAE;IACdZ,GAAG,EAAEJ,UAAU;IACfiB,UAAU,EAAE,UAAU;IACtBC,gBAAgB,EAAEf;EACpB,CAAC;EACDJ,OAAO;EACPL,KAAK;EACLyB,SAAS,EAAE,IAAI;EACfC,UAAU,EAAE;AACd,CAAC,EACD;EACEN,EAAE,EAAE,YAAY;EAChBC,KAAK,EAAE,YAAY;EACnBC,cAAc,EAAE;IACdZ,GAAG,EAAEH,QAAQ;IACbgB,UAAU,EAAE,IAAI;IAChBC,gBAAgB,EAAEN;EACpB,CAAC;EACDb,OAAO;EACPL,KAAK;EACLyB,SAAS,EAAE,KAAK;EAChBC,UAAU,EAAE;AACd,CAAC,EACD;EACEN,EAAE,EAAE,eAAe;EACnBC,KAAK,EAAE,eAAe;EACtBC,cAAc,EAAE;IACdZ,GAAG,EAAEF,WAAW;IAChBe,UAAU,EAAE,UAAU;IACtBC,gBAAgB,EAAEL;EACpB,CAAC;EACDd,OAAO;EACPL,KAAK;EACLyB,SAAS,EAAE,KAAK;EAChBC,UAAU,EAAE;AACd,CAAC,CACF;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA","ignoreList":[]}
|
|
@@ -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,
|
|
@@ -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";
|
|
9
|
+
export const CY: "cy";
|
|
@@ -5,4 +5,6 @@ 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
|
|
8
10
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","names":["FORM_VERSION_METADATA_KEY","PREVIEW_PATH_PREFIX","FORM_PREFIX","EXTERNAL_STATE_PAYLOAD","EXTERNAL_STATE_APPENDAGE","COMPONENT_STATE_ERROR","PAYMENT_EXPIRED_NOTIFICATION"],"sources":["../../src/server/constants.js"],"sourcesContent":["export const FORM_VERSION_METADATA_KEY = '$$__formVersion'\nexport const PREVIEW_PATH_PREFIX = '/preview'\nexport const FORM_PREFIX = ''\nexport const EXTERNAL_STATE_PAYLOAD = 'EXTERNAL_STATE_PAYLOAD'\nexport const EXTERNAL_STATE_APPENDAGE = 'EXTERNAL_STATE_APPENDAGE'\nexport const COMPONENT_STATE_ERROR = 'COMPONENT_STATE_ERROR'\nexport const PAYMENT_EXPIRED_NOTIFICATION = 'PAYMENT_EXPIRED_NOTIFICATION'\n"],"mappings":"AAAA,OAAO,MAAMA,yBAAyB,GAAG,iBAAiB;AAC1D,OAAO,MAAMC,mBAAmB,GAAG,UAAU;AAC7C,OAAO,MAAMC,WAAW,GAAG,EAAE;AAC7B,OAAO,MAAMC,sBAAsB,GAAG,wBAAwB;AAC9D,OAAO,MAAMC,wBAAwB,GAAG,0BAA0B;AAClE,OAAO,MAAMC,qBAAqB,GAAG,uBAAuB;AAC5D,OAAO,MAAMC,4BAA4B,GAAG,8BAA8B","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"constants.js","names":["FORM_VERSION_METADATA_KEY","PREVIEW_PATH_PREFIX","FORM_PREFIX","EXTERNAL_STATE_PAYLOAD","EXTERNAL_STATE_APPENDAGE","COMPONENT_STATE_ERROR","PAYMENT_EXPIRED_NOTIFICATION","EN_GB","CY"],"sources":["../../src/server/constants.js"],"sourcesContent":["export const FORM_VERSION_METADATA_KEY = '$$__formVersion'\nexport const PREVIEW_PATH_PREFIX = '/preview'\nexport const FORM_PREFIX = ''\nexport const EXTERNAL_STATE_PAYLOAD = 'EXTERNAL_STATE_PAYLOAD'\nexport const EXTERNAL_STATE_APPENDAGE = 'EXTERNAL_STATE_APPENDAGE'\nexport const COMPONENT_STATE_ERROR = 'COMPONENT_STATE_ERROR'\nexport const PAYMENT_EXPIRED_NOTIFICATION = 'PAYMENT_EXPIRED_NOTIFICATION'\nexport const EN_GB = 'en-GB' // English language\nexport const CY = 'cy' // Welsh language\n"],"mappings":"AAAA,OAAO,MAAMA,yBAAyB,GAAG,iBAAiB;AAC1D,OAAO,MAAMC,mBAAmB,GAAG,UAAU;AAC7C,OAAO,MAAMC,WAAW,GAAG,EAAE;AAC7B,OAAO,MAAMC,sBAAsB,GAAG,wBAAwB;AAC9D,OAAO,MAAMC,wBAAwB,GAAG,0BAA0B;AAClE,OAAO,MAAMC,qBAAqB,GAAG,uBAAuB;AAC5D,OAAO,MAAMC,4BAA4B,GAAG,8BAA8B;AAC1E,OAAO,MAAMC,KAAK,GAAG,OAAO,EAAC;AAC7B,OAAO,MAAMC,EAAE,GAAG,IAAI,EAAC","ignoreList":[]}
|
|
@@ -6,6 +6,14 @@
|
|
|
6
6
|
"path": "/all-components",
|
|
7
7
|
"title": "All Components",
|
|
8
8
|
"components": [
|
|
9
|
+
{
|
|
10
|
+
"type": "TrackingField",
|
|
11
|
+
"name": "trackingField",
|
|
12
|
+
"title": "Tracking field",
|
|
13
|
+
"hint": "Help text",
|
|
14
|
+
"options": {},
|
|
15
|
+
"schema": {}
|
|
16
|
+
},
|
|
9
17
|
{
|
|
10
18
|
"type": "TextField",
|
|
11
19
|
"name": "textField",
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type FormDefinition } from '@defra/forms-model';
|
|
2
|
+
/**
|
|
3
|
+
* A minimal, schema-valid V2 definition: one YesNo question page and a
|
|
4
|
+
* summary page. Each call returns a fresh object, so tests can mutate their
|
|
5
|
+
* copy freely without affecting each other.
|
|
6
|
+
*/
|
|
7
|
+
export declare function buildDefinition(): FormDefinition;
|
|
8
|
+
/**
|
|
9
|
+
* A definition that passes schema validation but cannot be used by the
|
|
10
|
+
* engine: a ListItemRef condition points at the YesNoField (boolean), so the
|
|
11
|
+
* condition expression builder produces an unparseable expression. Distilled
|
|
12
|
+
* from a real production incident.
|
|
13
|
+
*/
|
|
14
|
+
export declare function buildBrokenConditionDefinition(): FormDefinition;
|
|
15
|
+
/**
|
|
16
|
+
* A schema-valid definition whose first page names a controller that is
|
|
17
|
+
* neither built in nor registered by the host application.
|
|
18
|
+
*/
|
|
19
|
+
export declare function buildUnknownControllerDefinition(): FormDefinition;
|
|
20
|
+
/**
|
|
21
|
+
* Schema-valid (component types are free strings in the schema), but the
|
|
22
|
+
* question uses a type the engine has no component class for.
|
|
23
|
+
*/
|
|
24
|
+
export declare function buildUnknownComponentDefinition(): FormDefinition;
|
|
25
|
+
/**
|
|
26
|
+
* A definition that fails schema validation: the question page appears
|
|
27
|
+
* twice, violating the pages uniqueness rule.
|
|
28
|
+
*/
|
|
29
|
+
export declare function buildSchemaInvalidDefinition(): FormDefinition;
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { ComponentType, ConditionType, ControllerType, Engine, OperatorName, SchemaVersion } from '@defra/forms-model';
|
|
2
|
+
const YES_NO_COMPONENT_ID = 'a7c0242f-2a31-45b2-8c71-ff2ac7f53288';
|
|
3
|
+
const USER_TYPE_LIST_ID = '4fa26e9c-07cf-47cd-a9dd-5cec0dd3f544';
|
|
4
|
+
const EXISTING_USER_ITEM_ID = '55fe0067-d011-4d33-886c-e1aa266637c3';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* A minimal, schema-valid V2 definition: one YesNo question page and a
|
|
8
|
+
* summary page. Each call returns a fresh object, so tests can mutate their
|
|
9
|
+
* copy freely without affecting each other.
|
|
10
|
+
*/
|
|
11
|
+
export function buildDefinition() {
|
|
12
|
+
return {
|
|
13
|
+
name: 'Stub definition',
|
|
14
|
+
engine: Engine.V2,
|
|
15
|
+
schema: SchemaVersion.V2,
|
|
16
|
+
startPage: '/summary',
|
|
17
|
+
pages: [{
|
|
18
|
+
id: '449c053b-9201-4312-9a75-187afc6ba48b',
|
|
19
|
+
path: '/licence',
|
|
20
|
+
title: 'Licence',
|
|
21
|
+
components: [{
|
|
22
|
+
id: YES_NO_COMPONENT_ID,
|
|
23
|
+
name: 'xVrYaJ',
|
|
24
|
+
type: ComponentType.YesNoField,
|
|
25
|
+
title: 'Do you have a licence?',
|
|
26
|
+
shortDescription: 'Licence',
|
|
27
|
+
options: {
|
|
28
|
+
required: true
|
|
29
|
+
}
|
|
30
|
+
}],
|
|
31
|
+
next: []
|
|
32
|
+
}, {
|
|
33
|
+
id: '449c053b-9201-4312-9a75-187afc6ba48c',
|
|
34
|
+
path: '/summary',
|
|
35
|
+
title: 'Summary',
|
|
36
|
+
controller: ControllerType.Summary,
|
|
37
|
+
components: []
|
|
38
|
+
}],
|
|
39
|
+
lists: [],
|
|
40
|
+
sections: [],
|
|
41
|
+
conditions: []
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* A definition that passes schema validation but cannot be used by the
|
|
47
|
+
* engine: a ListItemRef condition points at the YesNoField (boolean), so the
|
|
48
|
+
* condition expression builder produces an unparseable expression. Distilled
|
|
49
|
+
* from a real production incident.
|
|
50
|
+
*/
|
|
51
|
+
export function buildBrokenConditionDefinition() {
|
|
52
|
+
const definition = buildDefinition();
|
|
53
|
+
definition.name = 'Broken condition fixture';
|
|
54
|
+
const questionPage = definition.pages[0]
|
|
55
|
+
// A YesNoField cannot legitimately carry a custom list — that is the
|
|
56
|
+
// corruption this fixture models — so the TS component types (rightly)
|
|
57
|
+
// have no `list` property here and a cast is required.
|
|
58
|
+
;
|
|
59
|
+
questionPage.components[0].list = USER_TYPE_LIST_ID;
|
|
60
|
+
definition.lists = [{
|
|
61
|
+
id: USER_TYPE_LIST_ID,
|
|
62
|
+
name: 'XtfRYR',
|
|
63
|
+
title: 'User type list',
|
|
64
|
+
type: 'string',
|
|
65
|
+
items: [{
|
|
66
|
+
id: EXISTING_USER_ITEM_ID,
|
|
67
|
+
text: 'existing user',
|
|
68
|
+
value: 'existing user'
|
|
69
|
+
}, {
|
|
70
|
+
id: '2277c7e5-7fef-46c6-993b-d294116d6d6b',
|
|
71
|
+
text: 'new user',
|
|
72
|
+
value: 'new user'
|
|
73
|
+
}]
|
|
74
|
+
}];
|
|
75
|
+
definition.conditions = [{
|
|
76
|
+
id: '3f9d3a35-6dee-4706-806c-3f776129f631',
|
|
77
|
+
displayName: 'Existing user',
|
|
78
|
+
items: [{
|
|
79
|
+
id: '7d7f58ee-c860-4d24-8a13-de5cb9af53d8',
|
|
80
|
+
componentId: YES_NO_COMPONENT_ID,
|
|
81
|
+
operator: OperatorName.Is,
|
|
82
|
+
type: ConditionType.ListItemRef,
|
|
83
|
+
value: {
|
|
84
|
+
listId: USER_TYPE_LIST_ID,
|
|
85
|
+
itemId: [EXISTING_USER_ITEM_ID]
|
|
86
|
+
}
|
|
87
|
+
}]
|
|
88
|
+
}];
|
|
89
|
+
return definition;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* A schema-valid definition whose first page names a controller that is
|
|
94
|
+
* neither built in nor registered by the host application.
|
|
95
|
+
*/
|
|
96
|
+
export function buildUnknownControllerDefinition() {
|
|
97
|
+
const definition = buildDefinition();
|
|
98
|
+
definition.name = 'Unknown controller fixture';
|
|
99
|
+
definition.pages[0].controller = 'NoSuchPageController';
|
|
100
|
+
return definition;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Schema-valid (component types are free strings in the schema), but the
|
|
105
|
+
* question uses a type the engine has no component class for.
|
|
106
|
+
*/
|
|
107
|
+
export function buildUnknownComponentDefinition() {
|
|
108
|
+
const definition = buildDefinition();
|
|
109
|
+
definition.name = 'Unknown component fixture';
|
|
110
|
+
const questionPage = definition.pages[0];
|
|
111
|
+
questionPage.components[0].type = 'MyUnknownField';
|
|
112
|
+
return definition;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* A definition that fails schema validation: the question page appears
|
|
117
|
+
* twice, violating the pages uniqueness rule.
|
|
118
|
+
*/
|
|
119
|
+
export function buildSchemaInvalidDefinition() {
|
|
120
|
+
const definition = buildDefinition();
|
|
121
|
+
definition.name = 'Schema invalid fixture';
|
|
122
|
+
definition.pages.push(buildDefinition().pages[0]);
|
|
123
|
+
return definition;
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=definitions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definitions.js","names":["ComponentType","ConditionType","ControllerType","Engine","OperatorName","SchemaVersion","YES_NO_COMPONENT_ID","USER_TYPE_LIST_ID","EXISTING_USER_ITEM_ID","buildDefinition","name","engine","V2","schema","startPage","pages","id","path","title","components","type","YesNoField","shortDescription","options","required","next","controller","Summary","lists","sections","conditions","buildBrokenConditionDefinition","definition","questionPage","list","items","text","value","displayName","componentId","operator","Is","ListItemRef","listId","itemId","buildUnknownControllerDefinition","buildUnknownComponentDefinition","buildSchemaInvalidDefinition","push"],"sources":["../../../../../src/server/plugins/engine/__stubs__/definitions.ts"],"sourcesContent":["import {\n ComponentType,\n ConditionType,\n ControllerType,\n Engine,\n OperatorName,\n SchemaVersion,\n type FormDefinition,\n type PageQuestion\n} from '@defra/forms-model'\n\nconst YES_NO_COMPONENT_ID = 'a7c0242f-2a31-45b2-8c71-ff2ac7f53288'\nconst USER_TYPE_LIST_ID = '4fa26e9c-07cf-47cd-a9dd-5cec0dd3f544'\nconst EXISTING_USER_ITEM_ID = '55fe0067-d011-4d33-886c-e1aa266637c3'\n\n/**\n * A minimal, schema-valid V2 definition: one YesNo question page and a\n * summary page. Each call returns a fresh object, so tests can mutate their\n * copy freely without affecting each other.\n */\nexport function buildDefinition(): FormDefinition {\n return {\n name: 'Stub definition',\n engine: Engine.V2,\n schema: SchemaVersion.V2,\n startPage: '/summary',\n pages: [\n {\n id: '449c053b-9201-4312-9a75-187afc6ba48b',\n path: '/licence',\n title: 'Licence',\n components: [\n {\n id: YES_NO_COMPONENT_ID,\n name: 'xVrYaJ',\n type: ComponentType.YesNoField,\n title: 'Do you have a licence?',\n shortDescription: 'Licence',\n options: { required: true }\n }\n ],\n next: []\n },\n {\n id: '449c053b-9201-4312-9a75-187afc6ba48c',\n path: '/summary',\n title: 'Summary',\n controller: ControllerType.Summary,\n components: []\n }\n ],\n lists: [],\n sections: [],\n conditions: []\n }\n}\n\n/**\n * A definition that passes schema validation but cannot be used by the\n * engine: a ListItemRef condition points at the YesNoField (boolean), so the\n * condition expression builder produces an unparseable expression. Distilled\n * from a real production incident.\n */\nexport function buildBrokenConditionDefinition(): FormDefinition {\n const definition = buildDefinition()\n\n definition.name = 'Broken condition fixture'\n\n const questionPage = definition.pages[0] as PageQuestion\n // A YesNoField cannot legitimately carry a custom list — that is the\n // corruption this fixture models — so the TS component types (rightly)\n // have no `list` property here and a cast is required.\n ;(questionPage.components[0] as { list?: string }).list = USER_TYPE_LIST_ID\n definition.lists = [\n {\n id: USER_TYPE_LIST_ID,\n name: 'XtfRYR',\n title: 'User type list',\n type: 'string',\n items: [\n {\n id: EXISTING_USER_ITEM_ID,\n text: 'existing user',\n value: 'existing user'\n },\n {\n id: '2277c7e5-7fef-46c6-993b-d294116d6d6b',\n text: 'new user',\n value: 'new user'\n }\n ]\n }\n ]\n definition.conditions = [\n {\n id: '3f9d3a35-6dee-4706-806c-3f776129f631',\n displayName: 'Existing user',\n items: [\n {\n id: '7d7f58ee-c860-4d24-8a13-de5cb9af53d8',\n componentId: YES_NO_COMPONENT_ID,\n operator: OperatorName.Is,\n type: ConditionType.ListItemRef,\n value: {\n listId: USER_TYPE_LIST_ID,\n itemId: [EXISTING_USER_ITEM_ID]\n }\n }\n ]\n }\n ]\n\n return definition\n}\n\n/**\n * A schema-valid definition whose first page names a controller that is\n * neither built in nor registered by the host application.\n */\nexport function buildUnknownControllerDefinition(): FormDefinition {\n const definition = buildDefinition()\n\n definition.name = 'Unknown controller fixture'\n definition.pages[0].controller =\n 'NoSuchPageController' as unknown as ControllerType\n\n return definition\n}\n\n/**\n * Schema-valid (component types are free strings in the schema), but the\n * question uses a type the engine has no component class for.\n */\nexport function buildUnknownComponentDefinition(): FormDefinition {\n const definition = buildDefinition()\n\n definition.name = 'Unknown component fixture'\n const questionPage = definition.pages[0] as PageQuestion\n questionPage.components[0].type = 'MyUnknownField' as unknown as ComponentType\n\n return definition\n}\n\n/**\n * A definition that fails schema validation: the question page appears\n * twice, violating the pages uniqueness rule.\n */\nexport function buildSchemaInvalidDefinition(): FormDefinition {\n const definition = buildDefinition()\n\n definition.name = 'Schema invalid fixture'\n definition.pages.push(buildDefinition().pages[0])\n\n return definition\n}\n"],"mappings":"AAAA,SACEA,aAAa,EACbC,aAAa,EACbC,cAAc,EACdC,MAAM,EACNC,YAAY,EACZC,aAAa,QAGR,oBAAoB;AAE3B,MAAMC,mBAAmB,GAAG,sCAAsC;AAClE,MAAMC,iBAAiB,GAAG,sCAAsC;AAChE,MAAMC,qBAAqB,GAAG,sCAAsC;;AAEpE;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,eAAeA,CAAA,EAAmB;EAChD,OAAO;IACLC,IAAI,EAAE,iBAAiB;IACvBC,MAAM,EAAER,MAAM,CAACS,EAAE;IACjBC,MAAM,EAAER,aAAa,CAACO,EAAE;IACxBE,SAAS,EAAE,UAAU;IACrBC,KAAK,EAAE,CACL;MACEC,EAAE,EAAE,sCAAsC;MAC1CC,IAAI,EAAE,UAAU;MAChBC,KAAK,EAAE,SAAS;MAChBC,UAAU,EAAE,CACV;QACEH,EAAE,EAAEV,mBAAmB;QACvBI,IAAI,EAAE,QAAQ;QACdU,IAAI,EAAEpB,aAAa,CAACqB,UAAU;QAC9BH,KAAK,EAAE,wBAAwB;QAC/BI,gBAAgB,EAAE,SAAS;QAC3BC,OAAO,EAAE;UAAEC,QAAQ,EAAE;QAAK;MAC5B,CAAC,CACF;MACDC,IAAI,EAAE;IACR,CAAC,EACD;MACET,EAAE,EAAE,sCAAsC;MAC1CC,IAAI,EAAE,UAAU;MAChBC,KAAK,EAAE,SAAS;MAChBQ,UAAU,EAAExB,cAAc,CAACyB,OAAO;MAClCR,UAAU,EAAE;IACd,CAAC,CACF;IACDS,KAAK,EAAE,EAAE;IACTC,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE;EACd,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,8BAA8BA,CAAA,EAAmB;EAC/D,MAAMC,UAAU,GAAGvB,eAAe,CAAC,CAAC;EAEpCuB,UAAU,CAACtB,IAAI,GAAG,0BAA0B;EAE5C,MAAMuB,YAAY,GAAGD,UAAU,CAACjB,KAAK,CAAC,CAAC;EACvC;EACA;EACA;AAAA;EACEkB,YAAY,CAACd,UAAU,CAAC,CAAC,CAAC,CAAuBe,IAAI,GAAG3B,iBAAiB;EAC3EyB,UAAU,CAACJ,KAAK,GAAG,CACjB;IACEZ,EAAE,EAAET,iBAAiB;IACrBG,IAAI,EAAE,QAAQ;IACdQ,KAAK,EAAE,gBAAgB;IACvBE,IAAI,EAAE,QAAQ;IACde,KAAK,EAAE,CACL;MACEnB,EAAE,EAAER,qBAAqB;MACzB4B,IAAI,EAAE,eAAe;MACrBC,KAAK,EAAE;IACT,CAAC,EACD;MACErB,EAAE,EAAE,sCAAsC;MAC1CoB,IAAI,EAAE,UAAU;MAChBC,KAAK,EAAE;IACT,CAAC;EAEL,CAAC,CACF;EACDL,UAAU,CAACF,UAAU,GAAG,CACtB;IACEd,EAAE,EAAE,sCAAsC;IAC1CsB,WAAW,EAAE,eAAe;IAC5BH,KAAK,EAAE,CACL;MACEnB,EAAE,EAAE,sCAAsC;MAC1CuB,WAAW,EAAEjC,mBAAmB;MAChCkC,QAAQ,EAAEpC,YAAY,CAACqC,EAAE;MACzBrB,IAAI,EAAEnB,aAAa,CAACyC,WAAW;MAC/BL,KAAK,EAAE;QACLM,MAAM,EAAEpC,iBAAiB;QACzBqC,MAAM,EAAE,CAACpC,qBAAqB;MAChC;IACF,CAAC;EAEL,CAAC,CACF;EAED,OAAOwB,UAAU;AACnB;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASa,gCAAgCA,CAAA,EAAmB;EACjE,MAAMb,UAAU,GAAGvB,eAAe,CAAC,CAAC;EAEpCuB,UAAU,CAACtB,IAAI,GAAG,4BAA4B;EAC9CsB,UAAU,CAACjB,KAAK,CAAC,CAAC,CAAC,CAACW,UAAU,GAC5B,sBAAmD;EAErD,OAAOM,UAAU;AACnB;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASc,+BAA+BA,CAAA,EAAmB;EAChE,MAAMd,UAAU,GAAGvB,eAAe,CAAC,CAAC;EAEpCuB,UAAU,CAACtB,IAAI,GAAG,2BAA2B;EAC7C,MAAMuB,YAAY,GAAGD,UAAU,CAACjB,KAAK,CAAC,CAAC,CAAiB;EACxDkB,YAAY,CAACd,UAAU,CAAC,CAAC,CAAC,CAACC,IAAI,GAAG,gBAA4C;EAE9E,OAAOY,UAAU;AACnB;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASe,4BAA4BA,CAAA,EAAmB;EAC7D,MAAMf,UAAU,GAAGvB,eAAe,CAAC,CAAC;EAEpCuB,UAAU,CAACtB,IAAI,GAAG,wBAAwB;EAC1CsB,UAAU,CAACjB,KAAK,CAACiC,IAAI,CAACvC,eAAe,CAAC,CAAC,CAACM,KAAK,CAAC,CAAC,CAAC,CAAC;EAEjD,OAAOiB,UAAU;AACnB","ignoreList":[]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type AutocompleteFieldComponent } from '@defra/forms-model';
|
|
2
2
|
import { SelectField } from '../../../../server/plugins/engine/components/SelectField.js';
|
|
3
3
|
import { type RenderContext } from '../../../../server/plugins/engine/components/types.js';
|
|
4
|
+
import { type Translator } from '../../../../server/plugins/engine/types/index.js';
|
|
4
5
|
export declare class AutocompleteField extends SelectField {
|
|
5
6
|
options: AutocompleteFieldComponent['options'];
|
|
6
7
|
constructor(def: AutocompleteFieldComponent, props: ConstructorParameters<typeof SelectField>[1]);
|
|
@@ -15,7 +16,7 @@ export declare class AutocompleteField extends SelectField {
|
|
|
15
16
|
};
|
|
16
17
|
id: string;
|
|
17
18
|
name: string;
|
|
18
|
-
value: import("
|
|
19
|
+
value: import("../../../../server/plugins/engine/types/index.js").FormValue;
|
|
19
20
|
type?: string;
|
|
20
21
|
hint?: {
|
|
21
22
|
id?: string;
|
|
@@ -25,7 +26,7 @@ export declare class AutocompleteField extends SelectField {
|
|
|
25
26
|
suffix?: import("../../../../server/plugins/engine/components/types.js").ComponentText;
|
|
26
27
|
classes?: string;
|
|
27
28
|
condition?: string;
|
|
28
|
-
errors?: import("
|
|
29
|
+
errors?: import("../../../../server/plugins/engine/types/index.js").FormSubmissionError[];
|
|
29
30
|
errorMessage?: {
|
|
30
31
|
text: string;
|
|
31
32
|
};
|
|
@@ -50,7 +51,11 @@ export declare class AutocompleteField extends SelectField {
|
|
|
50
51
|
components?: import("../../../../server/plugins/engine/components/types.js").ComponentViewModel[];
|
|
51
52
|
upload?: {
|
|
52
53
|
count: number;
|
|
53
|
-
summaryList: import("
|
|
54
|
+
summaryList: import("../../../../server/plugins/engine/types/index.js").SummaryList;
|
|
55
|
+
uploadingLabel?: string;
|
|
54
56
|
};
|
|
55
57
|
};
|
|
58
|
+
getValidationMessagesOverride(translator: Translator): {
|
|
59
|
+
[x: string]: import("joi").LanguageMessages;
|
|
60
|
+
};
|
|
56
61
|
}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { SelectField } from "./SelectField.js";
|
|
2
|
+
import { withCustomValidationOverrides } from "./helpers/index.js";
|
|
3
|
+
import { buildValidationMessages } from "../i18n/buildValidationMessages.js";
|
|
2
4
|
import { messageTemplate } from "../pageControllers/validationOptions.js";
|
|
3
5
|
export class AutocompleteField extends SelectField {
|
|
4
6
|
constructor(def, props) {
|
|
@@ -33,5 +35,20 @@ export class AutocompleteField extends SelectField {
|
|
|
33
35
|
formGroup
|
|
34
36
|
};
|
|
35
37
|
}
|
|
38
|
+
getValidationMessagesOverride(translator) {
|
|
39
|
+
const {
|
|
40
|
+
customValidationMessages
|
|
41
|
+
} = this.options;
|
|
42
|
+
const {
|
|
43
|
+
t
|
|
44
|
+
} = translator;
|
|
45
|
+
const defaults = {
|
|
46
|
+
'any.required': buildValidationMessages(t).objectRequired,
|
|
47
|
+
'any.only': buildValidationMessages(t).objectRequired
|
|
48
|
+
};
|
|
49
|
+
return {
|
|
50
|
+
[this.name]: withCustomValidationOverrides(defaults, undefined, customValidationMessages)
|
|
51
|
+
};
|
|
52
|
+
}
|
|
36
53
|
}
|
|
37
54
|
//# sourceMappingURL=AutocompleteField.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutocompleteField.js","names":["SelectField","messageTemplate","AutocompleteField","constructor","def","props","options","formSchema","required","messages","customValidationMessages","getViewModel","context","viewModel","formGroup","attributes"],"sources":["../../../../../src/server/plugins/engine/components/AutocompleteField.ts"],"sourcesContent":["import { type AutocompleteFieldComponent } from '@defra/forms-model'\n\nimport { SelectField } from '~/src/server/plugins/engine/components/SelectField.js'\nimport { type RenderContext } from '~/src/server/plugins/engine/components/types.js'\nimport { messageTemplate } from '~/src/server/plugins/engine/pageControllers/validationOptions.js'\n\nexport class AutocompleteField extends SelectField {\n declare options: AutocompleteFieldComponent['options']\n\n constructor(\n def: AutocompleteFieldComponent,\n props: ConstructorParameters<typeof SelectField>[1]\n ) {\n super(def, props)\n\n const { options } = def\n let { formSchema } = this\n\n if (options.required !== false) {\n const messages = options.customValidationMessages\n\n formSchema = formSchema.messages({\n 'any.only':\n messages?.['any.only'] ?? (messageTemplate.required as string),\n 'any.required':\n messages?.['any.required'] ?? (messageTemplate.required as string)\n })\n }\n\n this.options = options\n this.formSchema = formSchema\n }\n\n getViewModel(context: RenderContext) {\n const viewModel = super.getViewModel(context)\n let { formGroup } = viewModel\n\n formGroup ??= {}\n formGroup.attributes = {\n 'data-module': 'govuk-accessible-autocomplete'\n }\n\n return {\n ...viewModel,\n formGroup\n }\n }\n}\n"],"mappings":"AAEA,SAASA,WAAW;
|
|
1
|
+
{"version":3,"file":"AutocompleteField.js","names":["SelectField","withCustomValidationOverrides","buildValidationMessages","messageTemplate","AutocompleteField","constructor","def","props","options","formSchema","required","messages","customValidationMessages","getViewModel","context","viewModel","formGroup","attributes","getValidationMessagesOverride","translator","t","defaults","objectRequired","name","undefined"],"sources":["../../../../../src/server/plugins/engine/components/AutocompleteField.ts"],"sourcesContent":["import { type AutocompleteFieldComponent } from '@defra/forms-model'\n\nimport { SelectField } from '~/src/server/plugins/engine/components/SelectField.js'\nimport { withCustomValidationOverrides } from '~/src/server/plugins/engine/components/helpers/index.js'\nimport { type RenderContext } from '~/src/server/plugins/engine/components/types.js'\nimport { buildValidationMessages } from '~/src/server/plugins/engine/i18n/buildValidationMessages.js'\nimport { messageTemplate } from '~/src/server/plugins/engine/pageControllers/validationOptions.js'\nimport { type Translator } from '~/src/server/plugins/engine/types/index.js'\n\nexport class AutocompleteField extends SelectField {\n declare options: AutocompleteFieldComponent['options']\n\n constructor(\n def: AutocompleteFieldComponent,\n props: ConstructorParameters<typeof SelectField>[1]\n ) {\n super(def, props)\n\n const { options } = def\n let { formSchema } = this\n\n if (options.required !== false) {\n const messages = options.customValidationMessages\n\n formSchema = formSchema.messages({\n 'any.only':\n messages?.['any.only'] ?? (messageTemplate.required as string),\n 'any.required':\n messages?.['any.required'] ?? (messageTemplate.required as string)\n })\n }\n\n this.options = options\n this.formSchema = formSchema\n }\n\n getViewModel(context: RenderContext) {\n const viewModel = super.getViewModel(context)\n let { formGroup } = viewModel\n\n formGroup ??= {}\n formGroup.attributes = {\n 'data-module': 'govuk-accessible-autocomplete'\n }\n\n return {\n ...viewModel,\n formGroup\n }\n }\n\n getValidationMessagesOverride(translator: Translator) {\n const { customValidationMessages } = this.options\n const { t } = translator\n const defaults = {\n 'any.required': buildValidationMessages(t).objectRequired,\n 'any.only': buildValidationMessages(t).objectRequired\n }\n\n return {\n [this.name]: withCustomValidationOverrides(\n defaults,\n undefined,\n customValidationMessages\n )\n }\n }\n}\n"],"mappings":"AAEA,SAASA,WAAW;AACpB,SAASC,6BAA6B;AAEtC,SAASC,uBAAuB;AAChC,SAASC,eAAe;AAGxB,OAAO,MAAMC,iBAAiB,SAASJ,WAAW,CAAC;EAGjDK,WAAWA,CACTC,GAA+B,EAC/BC,KAAmD,EACnD;IACA,KAAK,CAACD,GAAG,EAAEC,KAAK,CAAC;IAEjB,MAAM;MAAEC;IAAQ,CAAC,GAAGF,GAAG;IACvB,IAAI;MAAEG;IAAW,CAAC,GAAG,IAAI;IAEzB,IAAID,OAAO,CAACE,QAAQ,KAAK,KAAK,EAAE;MAC9B,MAAMC,QAAQ,GAAGH,OAAO,CAACI,wBAAwB;MAEjDH,UAAU,GAAGA,UAAU,CAACE,QAAQ,CAAC;QAC/B,UAAU,EACRA,QAAQ,GAAG,UAAU,CAAC,IAAKR,eAAe,CAACO,QAAmB;QAChE,cAAc,EACZC,QAAQ,GAAG,cAAc,CAAC,IAAKR,eAAe,CAACO;MACnD,CAAC,CAAC;IACJ;IAEA,IAAI,CAACF,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,UAAU,GAAGA,UAAU;EAC9B;EAEAI,YAAYA,CAACC,OAAsB,EAAE;IACnC,MAAMC,SAAS,GAAG,KAAK,CAACF,YAAY,CAACC,OAAO,CAAC;IAC7C,IAAI;MAAEE;IAAU,CAAC,GAAGD,SAAS;IAE7BC,SAAS,KAAK,CAAC,CAAC;IAChBA,SAAS,CAACC,UAAU,GAAG;MACrB,aAAa,EAAE;IACjB,CAAC;IAED,OAAO;MACL,GAAGF,SAAS;MACZC;IACF,CAAC;EACH;EAEAE,6BAA6BA,CAACC,UAAsB,EAAE;IACpD,MAAM;MAAEP;IAAyB,CAAC,GAAG,IAAI,CAACJ,OAAO;IACjD,MAAM;MAAEY;IAAE,CAAC,GAAGD,UAAU;IACxB,MAAME,QAAQ,GAAG;MACf,cAAc,EAAEnB,uBAAuB,CAACkB,CAAC,CAAC,CAACE,cAAc;MACzD,UAAU,EAAEpB,uBAAuB,CAACkB,CAAC,CAAC,CAACE;IACzC,CAAC;IAED,OAAO;MACL,CAAC,IAAI,CAACC,IAAI,GAAGtB,6BAA6B,CACxCoB,QAAQ,EACRG,SAAS,EACTZ,wBACF;IACF,CAAC;EACH;AACF","ignoreList":[]}
|
|
@@ -6,8 +6,13 @@ import { type ErrorMessageTemplateList, type FormState, type FormStateValue, typ
|
|
|
6
6
|
export declare class CheckboxesField extends SelectionControlField {
|
|
7
7
|
options: CheckboxesFieldComponent['options'];
|
|
8
8
|
schema: CheckboxesFieldComponent['schema'];
|
|
9
|
-
formSchema: ArraySchema<string> | ArraySchema<number>;
|
|
10
|
-
stateSchema: ArraySchema<string> | ArraySchema<number>;
|
|
9
|
+
formSchema: ArraySchema<string[]> | ArraySchema<number[]>;
|
|
10
|
+
stateSchema: ArraySchema<string[]> | ArraySchema<number[]>;
|
|
11
|
+
limits: {
|
|
12
|
+
min?: number;
|
|
13
|
+
max?: number;
|
|
14
|
+
length?: number;
|
|
15
|
+
};
|
|
11
16
|
constructor(def: CheckboxesFieldComponent, props: ConstructorParameters<typeof SelectionControlField>[1]);
|
|
12
17
|
getFormValueFromState(state: FormSubmissionState): (string | number | boolean)[] | undefined;
|
|
13
18
|
getFormValue(value?: FormStateValue | FormState): (string | number | boolean)[] | undefined;
|
|
@@ -15,6 +20,13 @@ export declare class CheckboxesField extends SelectionControlField {
|
|
|
15
20
|
getContextValueFromFormValue(values: (string | number | boolean)[] | undefined): (string | number | boolean)[];
|
|
16
21
|
getDisplayStringFromState(state: FormSubmissionState, translator: Translator): string;
|
|
17
22
|
getContextValueFromState(state: FormSubmissionState): (string | number | boolean)[];
|
|
23
|
+
getValidationMessagesOverride(translator: Translator): {
|
|
24
|
+
[x: string]: {
|
|
25
|
+
'array.min': string;
|
|
26
|
+
'array.max': string;
|
|
27
|
+
'array.length': string;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
18
30
|
/**
|
|
19
31
|
* For error preview page that shows all possible errors on a component
|
|
20
32
|
*/
|
|
@@ -24,4 +36,13 @@ export declare class CheckboxesField extends SelectionControlField {
|
|
|
24
36
|
*/
|
|
25
37
|
static getAllPossibleErrors(): ErrorMessageTemplateList;
|
|
26
38
|
isValue(value?: FormStateValue | FormState): value is Item['value'][];
|
|
39
|
+
static buildErrorMessages(language: string, limits?: {
|
|
40
|
+
min?: number;
|
|
41
|
+
max?: number;
|
|
42
|
+
length?: number;
|
|
43
|
+
}): {
|
|
44
|
+
'array.min': string;
|
|
45
|
+
'array.max': string;
|
|
46
|
+
'array.length': string;
|
|
47
|
+
};
|
|
27
48
|
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import joi from 'joi';
|
|
2
|
+
import { EN_GB } from "../../../constants.js";
|
|
2
3
|
import { isFormValue } from "./FormComponent.js";
|
|
3
4
|
import { SelectionControlField } from "./SelectionControlField.js";
|
|
5
|
+
import { t as tPlugin } from "../i18n/index.js";
|
|
4
6
|
import { messageTemplate } from "../pageControllers/validationOptions.js";
|
|
5
7
|
export class CheckboxesField extends SelectionControlField {
|
|
6
8
|
constructor(def, props) {
|
|
@@ -14,24 +16,26 @@ export class CheckboxesField extends SelectionControlField {
|
|
|
14
16
|
} = def;
|
|
15
17
|
let formSchema = type === 'string' ? joi.array() : joi.array();
|
|
16
18
|
const itemsSchema = joi[type]().valid(...this.values).label(this.label);
|
|
17
|
-
formSchema = formSchema.items(itemsSchema).single().label(this.label).required()
|
|
18
|
-
|
|
19
|
-
'array.max': messageTemplate.arrayMax,
|
|
20
|
-
'array.length': messageTemplate.arrayLength
|
|
21
|
-
});
|
|
19
|
+
formSchema = formSchema.items(itemsSchema).single().label(this.label).required();
|
|
20
|
+
const limits = {};
|
|
22
21
|
if (options.required === false) {
|
|
23
22
|
formSchema = formSchema.optional();
|
|
24
23
|
}
|
|
25
24
|
if (typeof schema?.length === 'number') {
|
|
26
25
|
formSchema = formSchema.length(schema.length);
|
|
26
|
+
limits.length = schema.length;
|
|
27
27
|
} else {
|
|
28
28
|
if (typeof schema?.min === 'number') {
|
|
29
29
|
formSchema = formSchema.min(schema.min);
|
|
30
|
+
limits.min = schema.min;
|
|
30
31
|
}
|
|
31
32
|
if (typeof schema?.max === 'number') {
|
|
32
33
|
formSchema = formSchema.max(schema.max);
|
|
34
|
+
limits.max = schema.max;
|
|
33
35
|
}
|
|
34
36
|
}
|
|
37
|
+
this.limits = limits;
|
|
38
|
+
formSchema = formSchema.messages(CheckboxesField.buildErrorMessages(EN_GB, limits));
|
|
35
39
|
this.formSchema = formSchema.default([]);
|
|
36
40
|
this.stateSchema = formSchema.default(null).allow(null);
|
|
37
41
|
this.options = options;
|
|
@@ -83,6 +87,14 @@ export class CheckboxesField extends SelectionControlField {
|
|
|
83
87
|
const values = this.getFormValueFromState(state);
|
|
84
88
|
return this.getContextValueFromFormValue(values);
|
|
85
89
|
}
|
|
90
|
+
getValidationMessagesOverride(translator) {
|
|
91
|
+
const {
|
|
92
|
+
language
|
|
93
|
+
} = translator;
|
|
94
|
+
return {
|
|
95
|
+
[this.name]: CheckboxesField.buildErrorMessages(language, this.limits)
|
|
96
|
+
};
|
|
97
|
+
}
|
|
86
98
|
|
|
87
99
|
/**
|
|
88
100
|
* For error preview page that shows all possible errors on a component
|
|
@@ -121,5 +133,18 @@ export class CheckboxesField extends SelectionControlField {
|
|
|
121
133
|
}
|
|
122
134
|
return value.every(isFormValue);
|
|
123
135
|
}
|
|
136
|
+
static buildErrorMessages(language, limits = {}) {
|
|
137
|
+
return {
|
|
138
|
+
'array.min': tPlugin('validation.arrayMin', language, {
|
|
139
|
+
count: limits.min ?? 1
|
|
140
|
+
}),
|
|
141
|
+
'array.max': tPlugin('validation.arrayMax', language, {
|
|
142
|
+
count: limits.max ?? 1
|
|
143
|
+
}),
|
|
144
|
+
'array.length': tPlugin('validation.arrayLength', language, {
|
|
145
|
+
count: limits.length ?? 1
|
|
146
|
+
})
|
|
147
|
+
};
|
|
148
|
+
}
|
|
124
149
|
}
|
|
125
150
|
//# sourceMappingURL=CheckboxesField.js.map
|