diff --git a/src/lib/kit/i18n/en.json b/src/lib/kit/i18n/en.json index 823e273e..1629b47f 100644 --- a/src/lib/kit/i18n/en.json +++ b/src/lib/kit/i18n/en.json @@ -41,6 +41,8 @@ "label_error-space-start": "Value must not start with a space", "label_error-zero-start": "Value must not start with a zero", "label_error-dot-end": "Value must not end with a dot", + "label_error-invalid-zero-format": "Invalid zero value format", + "label_error-zero-end": "Value must not end with a zero", "label_delete": "Delete", "button_cancel": "Close", "button-upload_file": "Upload file", diff --git a/src/lib/kit/i18n/ru.json b/src/lib/kit/i18n/ru.json index 0d1909e1..0738f3d2 100644 --- a/src/lib/kit/i18n/ru.json +++ b/src/lib/kit/i18n/ru.json @@ -41,6 +41,8 @@ "label_error-space-start": "Значение не должно начинаться с пробела", "label_error-zero-start": "Значение не должно начинаться с нуля", "label_error-dot-end": "Значение не должно заканчиваться точкой", + "label_error-invalid-zero-format": "Неверный формат значения нуля", + "label_error-zero-end": "Значение не должно заканчиваться нулем", "label_delete": "Удалить", "button_cancel": "Закрыть", "button-upload_file": "Загрузить файл", diff --git a/src/lib/kit/validators/messages.ts b/src/lib/kit/validators/messages.ts index a670feec..50be056a 100644 --- a/src/lib/kit/validators/messages.ts +++ b/src/lib/kit/validators/messages.ts @@ -30,6 +30,8 @@ const getErrorMessages = (): ErrorMessagesType => ({ SPACE_END: i18n('label_error-space-end'), DOT_END: i18n('label_error-dot-end'), ZERO_START: i18n('label_error-zero-start'), + INVALID_ZERO_FORMAT: i18n('label_error-invalid-zero-format'), + ZERO_END: i18n('label_error-zero-end'), }); export let ErrorMessages: ErrorMessagesType = getErrorMessages(); diff --git a/src/lib/kit/validators/types.ts b/src/lib/kit/validators/types.ts index 53da49a5..f84b051f 100644 --- a/src/lib/kit/validators/types.ts +++ b/src/lib/kit/validators/types.ts @@ -13,4 +13,6 @@ export interface ErrorMessagesType { SPACE_END: string; DOT_END: string; ZERO_START: string; + INVALID_ZERO_FORMAT: string; + ZERO_END: string; } diff --git a/src/lib/kit/validators/validators.ts b/src/lib/kit/validators/validators.ts index a74d7c43..5754e526 100644 --- a/src/lib/kit/validators/validators.ts +++ b/src/lib/kit/validators/validators.ts @@ -84,6 +84,8 @@ export interface GetNumberValidatorParams extends CommonValidatorParams { ignoreIntCheck?: boolean; ignoreDotEnd?: boolean; ignoreZeroStart?: boolean; + ignoreInvalidZeroFormat?: boolean; + ignoreZeroEnd?: boolean; } export const getNumberValidator = (params: GetNumberValidatorParams = {}) => { @@ -97,6 +99,8 @@ export const getNumberValidator = (params: GetNumberValidatorParams = {}) => { ignoreIntCheck, ignoreDotEnd, ignoreZeroStart, + ignoreInvalidZeroFormat, + ignoreZeroEnd, customErrorMessages, } = params; @@ -136,6 +140,22 @@ export const getNumberValidator = (params: GetNumberValidatorParams = {}) => { ) { return errorMessages.ZERO_START; } + + if ( + !ignoreInvalidZeroFormat && + stringValue.trim().length > 1 && + Number(stringValue.trim()) === 0 + ) { + return errorMessages.INVALID_ZERO_FORMAT; + } + + if ( + !ignoreZeroEnd && + !isInt(stringValue) && + stringValue[stringValue.length - 1] === '0' + ) { + return errorMessages.ZERO_END; + } } if (