From 149de417619bb8089e3c010dff7799afd2567025 Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Thu, 27 Apr 2023 13:04:26 +0300 Subject: [PATCH] TCA-1280 - handle breadcrumbs navigation within course pages --- .../breadcrumb-item/BreadcrumbItem.tsx | 1 + .../breadcrumb-item/breadcrumb-item.model.ts | 1 + .../course-card/CourseCard.tsx | 33 +++---- .../course-completed/CourseCompletedPage.tsx | 55 ++++------- .../course-details/CourseDetailsPage.tsx | 40 ++------ .../CoursePage.context.tsx | 90 ++++++++++++++++++ .../course-page-wrapper/CoursePageWrapper.tsx | 27 ++++++ .../tools/learn/course-page-wrapper/index.ts | 2 + .../learn/free-code-camp/FreeCodeCamp.tsx | 91 ++++++------------- .../collapsible-item/CollapsibleItem.tsx | 10 +- src-ts/tools/learn/learn.routes.tsx | 67 ++++++++------ 11 files changed, 234 insertions(+), 183 deletions(-) create mode 100644 src-ts/tools/learn/course-page-wrapper/CoursePage.context.tsx create mode 100644 src-ts/tools/learn/course-page-wrapper/CoursePageWrapper.tsx create mode 100644 src-ts/tools/learn/course-page-wrapper/index.ts diff --git a/src-ts/lib/breadcrumb/breadcrumb-item/BreadcrumbItem.tsx b/src-ts/lib/breadcrumb/breadcrumb-item/BreadcrumbItem.tsx index c262355aa..b27c7aa3d 100644 --- a/src-ts/lib/breadcrumb/breadcrumb-item/BreadcrumbItem.tsx +++ b/src-ts/lib/breadcrumb/breadcrumb-item/BreadcrumbItem.tsx @@ -26,6 +26,7 @@ const BreadcrumbItem: FC = (props: BreadcrumbItemProps) => {props.item.name} diff --git a/src-ts/lib/breadcrumb/breadcrumb-item/breadcrumb-item.model.ts b/src-ts/lib/breadcrumb/breadcrumb-item/breadcrumb-item.model.ts index 16a96414c..909c70e4f 100644 --- a/src-ts/lib/breadcrumb/breadcrumb-item/breadcrumb-item.model.ts +++ b/src-ts/lib/breadcrumb/breadcrumb-item/breadcrumb-item.model.ts @@ -3,4 +3,5 @@ export interface BreadcrumbItemModel { name: string onClick?: (item: BreadcrumbItemModel) => void url: string + state?: any } diff --git a/src-ts/tools/learn/certification-details/certification-curriculum/curriculum-cards/course-card/CourseCard.tsx b/src-ts/tools/learn/certification-details/certification-curriculum/curriculum-cards/course-card/CourseCard.tsx index f562d0b43..cacaf631e 100644 --- a/src-ts/tools/learn/certification-details/certification-curriculum/curriculum-cards/course-card/CourseCard.tsx +++ b/src-ts/tools/learn/certification-details/certification-curriculum/curriculum-cards/course-card/CourseCard.tsx @@ -1,6 +1,6 @@ import { FC, ReactNode } from 'react' -import { Button, IconSolid, ProgressBar } from '../../../../../../lib' +import { BreadcrumbItemModel, Button, IconSolid, ProgressBar } from '../../../../../../lib' import { clearFCCCertificationTitle, CompletionTimeRange, @@ -20,6 +20,7 @@ import { getCertificatePath, getCoursePath, getLessonPathFromCurrentLesson, + getTCACertificationPath, } from '../../../../learn.routes' import CurriculumCard from '../CurriculumCard' @@ -36,7 +37,16 @@ interface CourseCardProps { } const CourseCard: FC = (props: CourseCardProps) => { + function renderCta(): ReactNode { + + const routeState: { tcaCertInfo: BreadcrumbItemModel } = { + tcaCertInfo: { + name: props.tcaCertification.title, + url: getTCACertificationPath(props.tcaCertification.dashedName), + }, + } + switch (props.progress?.status) { case UserCertificationProgressStatus.completed: return ( @@ -49,12 +59,7 @@ const CourseCard: FC = (props: CourseCardProps) => { props.provider, props.certification.certification, )} - routeState={{ - tcaCertInfo: { - dashedName: props.tcaCertification.dashedName, - title: props.tcaCertification.title, - }, - }} + routeState={routeState} />