From e39caafb051f96c3008de251c5b46b2b5a006be6 Mon Sep 17 00:00:00 2001 From: deepak jaison Date: Tue, 9 Sep 2025 09:43:58 +0100 Subject: [PATCH] Change validation for interval question --- package-lock.json | 2 +- packages/validation/package.json | 2 +- .../validation/src/Questionary/interval.ts | 35 ++++++++++++++++++- 3 files changed, 36 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 735d8e7..42d3ff1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18866,7 +18866,7 @@ }, "packages/validation": { "name": "@user-office-software/duo-validation", - "version": "5.1.17", + "version": "5.1.19", "license": "ISC", "dependencies": { "luxon": "^2.5.0", diff --git a/packages/validation/package.json b/packages/validation/package.json index 346d3df..fd403be 100644 --- a/packages/validation/package.json +++ b/packages/validation/package.json @@ -1,6 +1,6 @@ { "name": "@user-office-software/duo-validation", - "version": "5.1.18", + "version": "5.1.19", "description": "Duo frontend and backend validation in one place.", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/validation/src/Questionary/interval.ts b/packages/validation/src/Questionary/interval.ts index 6b842d5..dc0c96f 100644 --- a/packages/validation/src/Questionary/interval.ts +++ b/packages/validation/src/Questionary/interval.ts @@ -1,6 +1,9 @@ import * as Yup from 'yup'; -export const intervalQuestionValidationSchema = (field: any) => { +export const intervalQuestionValidationSchema = ( + field: any, + NumberValueConstraint: any +) => { const config = field.config; let minSchema = Yup.number().transform((value) => @@ -15,6 +18,36 @@ export const intervalQuestionValidationSchema = (field: any) => { maxSchema = maxSchema.required('This is a required field'); } + switch (config.numberValueConstraint) { + case NumberValueConstraint.ONLY_NEGATIVE: + minSchema = minSchema.negative('Value must be a negative number'); + maxSchema = maxSchema.negative('Value must be a negative number'); + break; + + case NumberValueConstraint.ONLY_POSITIVE: + minSchema = minSchema.positive('Value must be a positive number'); + maxSchema = maxSchema.positive('Value must be a positive number'); + break; + + case NumberValueConstraint.ONLY_NEGATIVE_INTEGER: + minSchema = minSchema + .integer('Value must be negative whole number') + .negative('Value must be negative whole number'); + maxSchema = maxSchema + .integer('Value must be negative whole number') + .negative('Value must be negative whole number'); + break; + + case NumberValueConstraint.ONLY_POSITIVE_INTEGER: + minSchema = minSchema + .integer('Value must be positive whole number') + .positive('Value must be a positive whole number'); + maxSchema = maxSchema + .integer('Value must be positive whole number') + .positive('Value must be a positive whole number'); + break; + } + let unitSchema = Yup.object().nullable(); // available units are specified and the field is required