From 6186a0ef97796cf7bb1d15f629c6c70f111e186f Mon Sep 17 00:00:00 2001 From: himaniraghav3 Date: Mon, 12 Jan 2026 20:43:31 +0530 Subject: [PATCH 1/4] PM-3352 Validate skills during onboarding --- .../onboarding/src/pages/skills/index.tsx | 20 ++++++++++++++++++- .../src/pages/skills/styles.module.scss | 5 +++++ .../use-member-skill-editor.tsx | 12 +++++++++-- 3 files changed, 34 insertions(+), 3 deletions(-) diff --git a/src/apps/onboarding/src/pages/skills/index.tsx b/src/apps/onboarding/src/pages/skills/index.tsx index 064e02cc7..9ac5a1606 100644 --- a/src/apps/onboarding/src/pages/skills/index.tsx +++ b/src/apps/onboarding/src/pages/skills/index.tsx @@ -1,5 +1,5 @@ import { useNavigate } from 'react-router-dom' -import { FC, useState } from 'react' +import { FC, useEffect, useState } from 'react' import { connect } from 'react-redux' import classNames from 'classnames' @@ -17,8 +17,15 @@ export const PageSkillsContent: FC<{ const navigate: any = useNavigate() const [loading, setLoading] = useState(false) const editor: MemberSkillEditor = useMemberSkillEditor() + const [showValidationError, setShowValidationError] = useState(false) async function saveSkills(): Promise { + if (!editor.hasValidSkills()) { + setShowValidationError(true) + return + } + + setShowValidationError(false) setLoading(true) try { await editor.saveSkills() @@ -29,6 +36,12 @@ export const PageSkillsContent: FC<{ navigate('../open-to-work') } + useEffect(() => { + if (editor.hasValidSkills()) { + setShowValidationError(false) + } + }, [editor]) + return (

@@ -56,6 +69,11 @@ export const PageSkillsContent: FC<{ progress={1} maxStep={5} /> + {showValidationError && ( + + * Please select at least one skill in both Principal and Additional Skills. + + )}
- - I will complete this onboarding later, - skip for now - . - ) } diff --git a/src/apps/onboarding/src/pages/onboarding/styles.module.scss b/src/apps/onboarding/src/pages/onboarding/styles.module.scss index 6b05aae3e..585282491 100644 --- a/src/apps/onboarding/src/pages/onboarding/styles.module.scss +++ b/src/apps/onboarding/src/pages/onboarding/styles.module.scss @@ -68,19 +68,3 @@ text-transform: none; } } - -.textFooter { - color: $black-80; - margin-top: 64px; - text-align: center; - - @include ltemd { - margin-top: 32px; - max-width: 284px; - } - - a { - color: $turq-160; - font-weight: 500; - } -} \ No newline at end of file From b1ee60e8d35e0112c39682a787623a2fa7a9c70e Mon Sep 17 00:00:00 2001 From: himaniraghav3 Date: Mon, 12 Jan 2026 21:02:35 +0530 Subject: [PATCH 4/4] fix linting error --- src/apps/onboarding/src/pages/onboarding/index.tsx | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/apps/onboarding/src/pages/onboarding/index.tsx b/src/apps/onboarding/src/pages/onboarding/index.tsx index cf696cf04..525fd7485 100644 --- a/src/apps/onboarding/src/pages/onboarding/index.tsx +++ b/src/apps/onboarding/src/pages/onboarding/index.tsx @@ -1,12 +1,10 @@ import { FC, useContext, useEffect } from 'react' import { Outlet, Routes, useLocation } from 'react-router-dom' -import { Provider, useDispatch, useSelector } from 'react-redux' +import { Provider, useDispatch } from 'react-redux' import classNames from 'classnames' import { routerContext, RouterContextData } from '~/libs/core' -import { Member } from '~/apps/talent-search/src/lib/models' import { SharedSwrConfig } from '~/libs/shared' -import { EnvironmentConfig } from '~/config' import { onboardRouteId } from '../../onboarding.routes' import { fetchMemberInfo, fetchMemberTraits } from '../../redux/actions/member' @@ -20,7 +18,6 @@ const OnboardingContent: FC<{ const { getChildRoutes }: RouterContextData = useContext(routerContext) const location = useLocation() const dispatch = useDispatch() - const reduxMemberInfo: Member = useSelector((state: any) => state.member.memberInfo) useEffect(() => { dispatch(fetchMemberInfo())