From 0bf38ef90f4a59c0d260f21d6274d8f21e63a5cb Mon Sep 17 00:00:00 2001 From: Kathryn Dale Date: Mon, 17 Jun 2024 16:45:38 +0100 Subject: [PATCH 1/2] OOC-4943 Update phone number validation --- model/src/components/types.ts | 1 + runner/src/server/forms/ReportAnOutbreak.json | 8 ++++---- .../plugins/engine/components/TelephoneNumberField.ts | 11 ++++++++++- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/model/src/components/types.ts b/model/src/components/types.ts index 00544ebe4b..a4a177bc1a 100644 --- a/model/src/components/types.ts +++ b/model/src/components/types.ts @@ -181,6 +181,7 @@ export interface TelephoneNumberFieldComponent extends TextFieldBase { type: "TelephoneNumberField"; options: TextFieldBase["options"] & { customValidationMessage?: string; + requiredFieldValidationMessage?: string; }; } diff --git a/runner/src/server/forms/ReportAnOutbreak.json b/runner/src/server/forms/ReportAnOutbreak.json index 1bf02b898d..9ed9458222 100644 --- a/runner/src/server/forms/ReportAnOutbreak.json +++ b/runner/src/server/forms/ReportAnOutbreak.json @@ -135,7 +135,7 @@ "title": "S1Q7. Telephone number/s of Key Contact Person", "hint": "Please consider using a non-personal number.", "nameHasError": false, - "schema": {} + "schema": { "regex": "^(\\+44|0)(\\d\\s?){10,11}$" } }, { "name": "S1Q8", @@ -194,7 +194,7 @@ "title": "S1Q7. Telephone number/s of Key Contact Person", "hint": "Please consider using a non-personal number.", "nameHasError": false, - "schema": {} + "schema": { "regex": "^(\\+44|0)(\\d\\s?){10,11}$" } }, { "name": "S1Q8", @@ -252,12 +252,12 @@ }, { "name": "S1Q7", - "options": {}, + "options": { "required": "true" }, "type": "TelephoneNumberField", "title": "S1Q7. Telephone number/s of Key Contact Person", "hint": "Please consider using a non-personal number.", "nameHasError": false, - "schema": {} + "schema": { "regex": "^(\\+44|0)(\\d\\s?){10,11}$" } }, { "name": "S1Q8", diff --git a/runner/src/server/plugins/engine/components/TelephoneNumberField.ts b/runner/src/server/plugins/engine/components/TelephoneNumberField.ts index cdef659a02..33d1c91bda 100644 --- a/runner/src/server/plugins/engine/components/TelephoneNumberField.ts +++ b/runner/src/server/plugins/engine/components/TelephoneNumberField.ts @@ -15,6 +15,8 @@ import joi, { Schema } from "joi"; const PATTERN = /^((\+\d{0,4})|(0))[0-9\s()+]{0,20}$/; const DEFAULT_MESSAGE = "Enter a telephone number in the correct format"; +const REQUIRED_MESSAGE = + "Enter a telephone number, like 01632 960 001, 07700 900 982 or +44 808 157 0192"; export class TelephoneNumberField extends FormComponent { constructor(def: TelephoneNumberFieldComponent, model: FormModel) { super(def, model); @@ -28,7 +30,14 @@ export class TelephoneNumberField extends FormComponent { } componentSchema = componentSchema .pattern(pattern) - .message(def.options?.customValidationMessage ?? DEFAULT_MESSAGE) + .messages({ + "any.required": + def.options?.requiredFieldValidationMessage ?? REQUIRED_MESSAGE, + "string.empty": + def.options?.requiredFieldValidationMessage ?? REQUIRED_MESSAGE, + "string.pattern.base": + def.options?.customValidationMessage ?? DEFAULT_MESSAGE, + }) .label(def.title); if (schema.max) { From 2515a0bfb4369823418a00d3d2bc50ef70e699cf Mon Sep 17 00:00:00 2001 From: Kathryn Dale Date: Tue, 18 Jun 2024 15:03:32 +0100 Subject: [PATCH 2/2] Remove typo --- runner/src/server/forms/ReportAnOutbreak.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runner/src/server/forms/ReportAnOutbreak.json b/runner/src/server/forms/ReportAnOutbreak.json index 9ed9458222..84e1fa50f7 100644 --- a/runner/src/server/forms/ReportAnOutbreak.json +++ b/runner/src/server/forms/ReportAnOutbreak.json @@ -252,7 +252,7 @@ }, { "name": "S1Q7", - "options": { "required": "true" }, + "options": {}, "type": "TelephoneNumberField", "title": "S1Q7. Telephone number/s of Key Contact Person", "hint": "Please consider using a non-personal number.",