From 341f8965bfdf61b315c2a5321e634dbbb35b45b4 Mon Sep 17 00:00:00 2001 From: AbhishekA1509 Date: Fri, 23 May 2025 19:02:51 +0530 Subject: [PATCH 1/5] feat: add email validation function and include email icon --- src/Assets/IconV2/ic-email.svg | 3 +++ src/Shared/Components/Icon/Icon.tsx | 2 ++ src/Shared/validations.tsx | 25 +++++++++++++++++++++++++ 3 files changed, 30 insertions(+) create mode 100644 src/Assets/IconV2/ic-email.svg diff --git a/src/Assets/IconV2/ic-email.svg b/src/Assets/IconV2/ic-email.svg new file mode 100644 index 000000000..27c3e1fd8 --- /dev/null +++ b/src/Assets/IconV2/ic-email.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/Shared/Components/Icon/Icon.tsx b/src/Shared/Components/Icon/Icon.tsx index d26e99da4..0e8384eb0 100644 --- a/src/Shared/Components/Icon/Icon.tsx +++ b/src/Shared/Components/Icon/Icon.tsx @@ -56,6 +56,7 @@ import { ReactComponent as ICDiscordFill } from '@IconsV2/ic-discord-fill.svg' import { ReactComponent as ICDockerhub } from '@IconsV2/ic-dockerhub.svg' import { ReactComponent as ICEcr } from '@IconsV2/ic-ecr.svg' import { ReactComponent as ICEdit } from '@IconsV2/ic-edit.svg' +import { ReactComponent as ICEmail } from '@IconsV2/ic-email.svg' import { ReactComponent as ICEnterpriseFeat } from '@IconsV2/ic-enterprise-feat.svg' import { ReactComponent as ICEnterpriseTag } from '@IconsV2/ic-enterprise-tag.svg' import { ReactComponent as ICEnv } from '@IconsV2/ic-env.svg' @@ -215,6 +216,7 @@ export const iconMap = { 'ic-dockerhub': ICDockerhub, 'ic-ecr': ICEcr, 'ic-edit': ICEdit, + 'ic-email': ICEmail, 'ic-enterprise-feat': ICEnterpriseFeat, 'ic-enterprise-tag': ICEnterpriseTag, 'ic-env': ICEnv, diff --git a/src/Shared/validations.tsx b/src/Shared/validations.tsx index 7f2c3cf06..aa744ccf1 100644 --- a/src/Shared/validations.tsx +++ b/src/Shared/validations.tsx @@ -497,3 +497,28 @@ export const validateYAML = (yamlString: string, isRequired?: boolean): Validati } } } + +export const validateEmail = (email: string): ValidationResponseType => { + if (!email) { + return { + isValid: false, + message: 'Email is required', + } + } + + const re = + // eslint-disable-next-line no-useless-escape + /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ + const result = re.test(String(email).toLowerCase()) + + if (result) { + return { + isValid: true, + } + } + + return { + isValid: false, + message: 'Please provide a valid email address', + } +} From df25b0469edaac878e4aa3a21c4edefe54fa6d93 Mon Sep 17 00:00:00 2001 From: AbhishekA1509 Date: Fri, 23 May 2025 21:22:24 +0530 Subject: [PATCH 2/5] chore: update version to 1.14.1-beta-1 in package.json and package-lock.json --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4c5ea27c8..dbdcb46f0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "1.14.1", + "version": "1.14.1-beta-1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "1.14.1", + "version": "1.14.1-beta-1", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index 89ae92f13..86fd2bbcf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "1.14.1", + "version": "1.14.1-beta-1", "description": "Supporting common component library", "type": "module", "main": "dist/index.js", From dbb0b5cf75b9aa84b26230e5265ca5bc8ce0027c Mon Sep 17 00:00:00 2001 From: AbhishekA1509 Date: Mon, 26 May 2025 21:36:28 +0530 Subject: [PATCH 3/5] feat: add email regex pattern to constants and refactor email validation function --- src/Common/Constants.ts | 2 ++ src/Shared/validations.tsx | 5 +---- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/Common/Constants.ts b/src/Common/Constants.ts index 49ce89f06..74f9c4817 100644 --- a/src/Common/Constants.ts +++ b/src/Common/Constants.ts @@ -51,6 +51,8 @@ export const PATTERNS = { CONFIG_MAP_AND_SECRET_KEY: /^[-._a-zA-Z0-9]+$/, CONFIGMAP_AND_SECRET_NAME: /^[a-z0-9][a-z0-9-.]*[a-z0-9]$/, ALPHANUMERIC_WITH_SPECIAL_CHAR_AND_SLASH: /^[A-Za-z0-9._/-]+$/, // allow alphanumeric,(.) ,(-),(_),(/) + // eslint-disable-next-line no-useless-escape + EMAIL: /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/, } const GLOBAL_CONFIG_TEMPLATES_DEVTRON_APP = '/global-config/templates/devtron-apps' diff --git a/src/Shared/validations.tsx b/src/Shared/validations.tsx index aa744ccf1..c55244015 100644 --- a/src/Shared/validations.tsx +++ b/src/Shared/validations.tsx @@ -506,10 +506,7 @@ export const validateEmail = (email: string): ValidationResponseType => { } } - const re = - // eslint-disable-next-line no-useless-escape - /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ - const result = re.test(String(email).toLowerCase()) + const result = PATTERNS.EMAIL.test(String(email).toLowerCase()) if (result) { return { From 1681702a7768407d7cbf38a906eb952cca621821 Mon Sep 17 00:00:00 2001 From: AbhishekA1509 Date: Tue, 27 May 2025 17:18:31 +0530 Subject: [PATCH 4/5] chore: bump version to 1.14.1-beta-2 in package.json and package-lock.json fix: update email regex pattern in Constants.ts for improved validation --- package-lock.json | 4 ++-- package.json | 2 +- src/Common/Constants.ts | 3 +-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index dbdcb46f0..f44f1df10 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "1.14.1-beta-1", + "version": "1.14.1-beta-2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "1.14.1-beta-1", + "version": "1.14.1-beta-2", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index 86fd2bbcf..a598b7509 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "1.14.1-beta-1", + "version": "1.14.1-beta-2", "description": "Supporting common component library", "type": "module", "main": "dist/index.js", diff --git a/src/Common/Constants.ts b/src/Common/Constants.ts index 74f9c4817..4243fc0b2 100644 --- a/src/Common/Constants.ts +++ b/src/Common/Constants.ts @@ -51,8 +51,7 @@ export const PATTERNS = { CONFIG_MAP_AND_SECRET_KEY: /^[-._a-zA-Z0-9]+$/, CONFIGMAP_AND_SECRET_NAME: /^[a-z0-9][a-z0-9-.]*[a-z0-9]$/, ALPHANUMERIC_WITH_SPECIAL_CHAR_AND_SLASH: /^[A-Za-z0-9._/-]+$/, // allow alphanumeric,(.) ,(-),(_),(/) - // eslint-disable-next-line no-useless-escape - EMAIL: /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/, + EMAIL: /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/, } const GLOBAL_CONFIG_TEMPLATES_DEVTRON_APP = '/global-config/templates/devtron-apps' From 8ca7525f329539f13d921b80828faf68d7a22667 Mon Sep 17 00:00:00 2001 From: AbhishekA1509 Date: Thu, 29 May 2025 15:16:22 +0530 Subject: [PATCH 5/5] chore: update version to 1.14.1-pre-7 in package.json and package-lock.json --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index e559e8400..7715e01ff 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "1.14.1-pre-6", + "version": "1.14.1-pre-7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "1.14.1-pre-6", + "version": "1.14.1-pre-7", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index 07b7862cb..e86923f23 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@devtron-labs/devtron-fe-common-lib", - "version": "1.14.1-pre-6", + "version": "1.14.1-pre-7", "description": "Supporting common component library", "type": "module", "main": "dist/index.js",