Skip to content

Commit 1c2189a

Browse files
authored
Merge pull request #493 from topcoder-platform/PROD-2142_old-webdesign
PROD-2142 added the breadcrumbs for the legacy designs -> Develop
2 parents 130e3c9 + 9371788 commit 1c2189a

File tree

18 files changed

+296
-161
lines changed

18 files changed

+296
-161
lines changed

src-ts/lib/breadcrumb/Breadcrumb.tsx

+2
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ const Breadcrumb: FC<BreadcrumbProps> = (props: BreadcrumbProps) => {
3636
<BreadcrumbItem
3737
index={0}
3838
item={{
39+
...props.items[props.items.length - 2],
3940
isElipsis: true,
4041
name: '...',
4142
url: props.items[props.items.length - 2].url,
@@ -44,6 +45,7 @@ const Breadcrumb: FC<BreadcrumbProps> = (props: BreadcrumbProps) => {
4445
<BreadcrumbItem
4546
index={1}
4647
item={{
48+
...props.items[props.items.length - 1],
4749
name: props.items[props.items.length - 1].name,
4850
url: props.items[props.items.length - 1].url,
4951
}}

src-ts/lib/breadcrumb/breadcrumb-item/BreadcrumbItem.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ interface BreadcrumbItemProps {
1111

1212
const BreadcrumbItem: FC<BreadcrumbItemProps> = (props: BreadcrumbItemProps) => {
1313
return (
14-
<li key={props.index}>
14+
<li key={props.index} onClick={() => props.item.onClick?.(props.item)}>
1515
<Link className={props.item.isElipsis && styles['elipsis']} to={props.item.url}>
1616
{props.item.name}
1717
</Link>
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
export interface BreadcrumbItemModel {
22
isElipsis?: boolean
33
name: string
4+
onClick?: (item: BreadcrumbItemModel) => void
45
url: string
56
}

src/autoSaveBeforeLogin.js

+1
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ export const saveUpdatesMiddleware = ({ dispatch, getState }) => {
7474
const result = next(action);
7575

7676
if ([ACTIONS.AUTO_SAVE.TRIGGER_COOKIE_CLEARED].includes(result.type)) {
77+
clearCachedChallengeId();
7778
clearCache();
7879
} else if ([ACTIONS.AUTO_SAVE.TRIGGER_AUTO_SAVE].includes(result.type)) {
7980
handleAutoSave();

src/components/Banners/WebsiteDesignBannerLegacy/styles.module.scss

-2
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,11 @@
55
min-width: 610px;
66
left: 0px;
77
top: 0px;
8-
margin: 16px 0px;
98

109
display: grid;
1110
grid-template-columns: 1fr 359px;
1211

1312
background: linear-gradient(263.22deg, #038664 2.65%, #075F96 98.14%), #FFFFFF;
14-
border-radius: 8px;
1513
margin-bottom: -35px;
1614
border-bottom-left-radius: 0;
1715
border-bottom-right-radius: 0;

src/components/ServicePrice/index.jsx

+1-3
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,7 @@ const ServicePrice = ({
2121
return (
2222
<div styleName="container">
2323
<PageRow styleName="inline">
24-
<div styleName="iconWrapper">
25-
{showIcon && icon && <>{icon}</>}
26-
</div>
24+
<div styleName="iconWrapper">{showIcon && icon && <>{icon}</>}</div>
2725
{showIcon && !icon && <WebsiteDesignIcon />}
2826
<div>
2927
{!hideTitle && <p styleName="serviceTitle">{serviceType}</p>}

src/constants/index.js

+9-2
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,21 @@ export const ROUTES = {
3636
INTAKE_FORM: "/self-service/wizard",
3737
HOME_PAGE: "/self-service",
3838
DASHBOARD_PAGE: "/work/dashboard",
39-
WEBSITE_DESIGN: "/self-service/work/new/website-design/basic-info",
40-
WEBSITE_DESIGN_REVIEW: "/self-service/work/new/website-design/review",
39+
WEBSITE_DESIGN: "/self-service/work/new/website-design-new/basic-info",
40+
WEBSITE_DESIGN_REVIEW: "/self-service/work/new/website-design-new/review",
4141
DATA_EXPLORATION: "/self-service/work/new/data-exploration/basic-info",
4242
DATA_EXPLORATION_REVIEW: "/self-service/work/new/data-exploration/review",
4343
PROBLEM_STATEMENT: "/self-service/work/new/data-advisory/basic-info",
4444
PROBLEM_STATEMENT_REVIEW: "/self-service/work/new/data-advisory/review",
4545
FIND_ME_DATA: "/self-service/work/new/find-me-data/basic-info",
4646
FIND_ME_DATA_REVIEW: "/self-service/work/new/find-me-data/review",
47+
WEBSITE_DESIGN_LEGACY: "/self-service/work/new/website-design/basic-info",
48+
WEBSITE_DESIGN_PURPOSE_LEGACY:
49+
"/self-service/work/new/website-design/website-purpose",
50+
WEBSITE_DESIGN_PAGE_DETAILS_LEGACY:
51+
"/self-service/work/new/website-design/page-details",
52+
WEBSITE_DESIGN_BRANDING_LEGACY:
53+
"/self-service/work/new/website-design/branding",
4754
};
4855

4956
/**

src/routes/BasicInfoLegacy/index.jsx

+22-2
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,18 @@ import PageFoot from "../../components/PageElements/PageFoot";
1111
import PageH2 from "../../components/PageElements/PageH2";
1212
import Progress from "../../components/Progress";
1313
import { WebsiteDesignBannerLegacy } from "../../components/Banners/WebsiteDesignBannerLegacy";
14-
import { BUTTON_SIZE, BUTTON_TYPE, PageOptions } from "../../constants/";
14+
import {
15+
BUTTON_SIZE,
16+
BUTTON_TYPE,
17+
PageOptions,
18+
ROUTES,
19+
} from "../../constants/";
1520
import {
1621
saveBasicInfo,
1722
toggleSupportModal,
1823
savePageDetails,
1924
saveWorkType,
25+
resetIntakeForm,
2026
} from "../../actions/form";
2127
import { triggerAutoSave } from "../../actions/autoSave";
2228
import { setProgressItem } from "../../actions/progress";
@@ -29,7 +35,7 @@ import {
2935
currencyFormat,
3036
} from "../../utils/";
3137

32-
import { ContactSupportModal } from "../../../src-ts";
38+
import { Breadcrumb, ContactSupportModal } from "../../../src-ts";
3339

3440
/**
3541
* Basic Info Page
@@ -63,6 +69,7 @@ const BasicInfoLegacy = ({
6369
const estimate = getDynamicPriceAndTimelineEstimate(fullState);
6470

6571
const onBack = () => {
72+
dispatch(resetIntakeForm(true));
6673
navigate("/self-service/wizard");
6774
};
6875

@@ -141,6 +148,18 @@ const BasicInfoLegacy = ({
141148
toggleSupportModal(false);
142149
};
143150

151+
const breadcrumbs = [
152+
{ url: ROUTES.DASHBOARD_PAGE, name: "My work" },
153+
{
154+
url: ROUTES.INTAKE_FORM,
155+
name: "Start work",
156+
onClick: () => {
157+
dispatch(resetIntakeForm(true));
158+
},
159+
},
160+
{ url: ROUTES.WEBSITE_DESIGN_LEGACY, name: "Basic Info" },
161+
];
162+
144163
return (
145164
<>
146165
<LoadingSpinner show={isLoading} />
@@ -150,6 +169,7 @@ const BasicInfoLegacy = ({
150169
onClose={onHideSupportModal}
151170
/>
152171
<Page>
172+
<Breadcrumb items={breadcrumbs} />
153173
<WebsiteDesignBannerLegacy />
154174
<PageContent styleName="container">
155175
<PageH2>BASIC INFO</PageH2>

src/routes/BrandingLegacy/index.jsx

+19-1
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,15 @@ import React, { useEffect, useState } from "react";
1212
import { connect, useDispatch, useSelector } from "react-redux";
1313
import withAuthentication from "hoc/withAuthentication";
1414
import { triggerAutoSave } from "../../actions/autoSave";
15-
import { saveBranding } from "../../actions/form";
15+
import { resetIntakeForm, saveBranding } from "../../actions/form";
1616
import { setProgressItem } from "../../actions/progress";
1717
import BackIcon from "../../assets/images/icon-back-arrow.svg";
1818
import BrandingForm from "./components/BrandingForm";
1919
import "./styles.module.scss";
2020
import { getDynamicPriceAndTimelineEstimate } from "utils/";
2121
import { WebsiteDesignBannerLegacy } from "../../components/Banners/WebsiteDesignBannerLegacy";
22+
import { ROUTES } from "../../constants";
23+
import { Breadcrumb } from "../../../src-ts";
2224

2325
/**
2426
* Branding Page
@@ -106,10 +108,26 @@ const BrandingLegacy = ({ saveBranding, setProgressItem }) => {
106108
setProgressItem(6);
107109
};
108110

111+
const breadcrumbs = [
112+
{ url: ROUTES.DASHBOARD_PAGE, name: "My work" },
113+
{
114+
url: ROUTES.INTAKE_FORM,
115+
name: "Start work",
116+
onClick: () => {
117+
dispatch(resetIntakeForm(true));
118+
},
119+
},
120+
{ url: ROUTES.WEBSITE_DESIGN_LEGACY, name: "Basic Info" },
121+
{ url: ROUTES.WEBSITE_DESIGN_PURPOSE_LEGACY, name: "Website purpose" },
122+
{ url: ROUTES.WEBSITE_DESIGN_PAGE_DETAILS_LEGACY, name: "Page details" },
123+
{ url: "#", name: "Branding" },
124+
];
125+
109126
return (
110127
<>
111128
<LoadingSpinner show={isLoading} />
112129
<Page>
130+
<Breadcrumb items={breadcrumbs} />
113131
<WebsiteDesignBannerLegacy />
114132
<PageContent>
115133
<PageH2>BRANDING</PageH2>

src/routes/PageDetailsLegacy/index.jsx

+18-1
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,14 @@ import React, { useEffect, useRef, useState } from "react";
1212
import { connect, useDispatch, useSelector } from "react-redux";
1313
import { getDynamicPriceAndTimelineEstimate } from "utils/";
1414
import { triggerAutoSave } from "../../actions/autoSave";
15-
import { savePageDetails } from "../../actions/form";
15+
import { resetIntakeForm, savePageDetails } from "../../actions/form";
1616
import { setProgressItem } from "../../actions/progress";
1717
import BackIcon from "../../assets/images/icon-back-arrow.svg";
1818
import PageDetailsForm from "./components/PageDetailsForm";
1919
import { WebsiteDesignBannerLegacy } from "../../components/Banners/WebsiteDesignBannerLegacy";
2020
import "./styles.module.scss";
21+
import { ROUTES } from "../../constants";
22+
import { Breadcrumb } from "../../../src-ts";
2123

2224
/**
2325
* Page Details Page
@@ -82,10 +84,25 @@ const PageDetailsLegacy = ({ savePageDetails, setProgressItem }) => {
8284
return isValid;
8385
};
8486

87+
const breadcrumbs = [
88+
{ url: ROUTES.DASHBOARD_PAGE, name: "My work" },
89+
{
90+
url: ROUTES.INTAKE_FORM,
91+
name: "Start work",
92+
onClick: () => {
93+
dispatch(resetIntakeForm(true));
94+
},
95+
},
96+
{ url: ROUTES.WEBSITE_DESIGN_LEGACY, name: "Basic Info" },
97+
{ url: ROUTES.WEBSITE_DESIGN_PURPOSE_LEGACY, name: "Website purpose" },
98+
{ url: "#", name: "Page details" },
99+
];
100+
85101
return (
86102
<>
87103
<LoadingSpinner show={isLoading} />
88104
<Page>
105+
<Breadcrumb items={breadcrumbs} />
89106
<WebsiteDesignBannerLegacy />
90107
<PageContent>
91108
<PageH2>PAGE DETAILS</PageH2>

src/routes/Products/components/BasicInfo/index.jsx

+15-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import {
1919
toggleSupportModal,
2020
savePageDetails,
2121
saveWorkType,
22+
resetIntakeForm,
2223
} from "../../../../actions/form";
2324
import { triggerAutoSave, triggerCookieClear } from "../../../../actions/autoSave";
2425
import { setProgressItem } from "../../../../actions/progress";
@@ -220,6 +221,14 @@ const BasicInfo = ({
220221
if (autoSave) navigate("/self-service");
221222
};
222223

224+
const onClickBreadcrumbItem = (item) => {
225+
if (item.name === "Start work") {
226+
dispatch(resetIntakeForm(true));
227+
dispatch(triggerCookieClear());
228+
saveBasicInfo(defaultFormData);
229+
}
230+
};
231+
223232
return (
224233
<>
225234
<LoadingSpinner show={isLoading} />
@@ -229,7 +238,12 @@ const BasicInfo = ({
229238
onClose={onHideSupportModal}
230239
/>
231240
<Page>
232-
<Breadcrumb items={breadcrumb} />
241+
<Breadcrumb
242+
items={breadcrumb.map((item) => ({
243+
...item,
244+
onClick: onClickBreadcrumbItem,
245+
}))}
246+
/>
233247
<FeaturedWorkTypeBanner
234248
title={workItemConfig.title}
235249
subTitle={workItemConfig.subTitle}

src/routes/Review/components/AboutYourProject/index.jsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import PageUl from "../../../../components/PageElements/PageUl";
55
const AboutYourProject = () => {
66
return (
77
<HelpBanner
8-
styles={["turqoise", "marginTop24Mobile"]}
8+
styles={["turqoise"]}
99
title="Important things to know about your project"
1010
>
1111
<PageUl>

src/routes/Review/index.jsx

+14-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import { BUTTON_SIZE, BUTTON_TYPE, MAX_COMPLETED_STEP } from "constants/";
1515
import React, { useEffect, useState } from "react";
1616
import { connect, useDispatch, useSelector } from "react-redux";
1717
import PaymentForm from "./components/PaymentForm";
18-
import { triggerAutoSave } from "../../actions/autoSave";
18+
import { triggerAutoSave, triggerCookieClear } from "../../actions/autoSave";
1919
import { setProgressItem } from "../../actions/progress";
2020
import BackIcon from "../../assets/images/icon-back-arrow.svg";
2121
import ReviewTable from "./components/ReviewTable";
@@ -203,6 +203,13 @@ const Review = ({
203203
formData.zipCode &&
204204
formData.checked;
205205

206+
const onClickBreadcrumbItem = (item) => {
207+
if (item.name === "Start work") {
208+
dispatch(resetIntakeForm(true));
209+
dispatch(triggerCookieClear());
210+
}
211+
};
212+
206213
return (
207214
<>
208215
<OrderContractModal
@@ -211,7 +218,12 @@ const Review = ({
211218
/>
212219
<LoadingSpinner show={isLoading} />
213220
<Page>
214-
<Breadcrumb items={breadcrumb} />
221+
<Breadcrumb
222+
items={breadcrumb.map((item) => ({
223+
...item,
224+
onClick: onClickBreadcrumbItem,
225+
}))}
226+
/>
215227
{banner}
216228
<PageContent styleName="container">
217229
<ServicePrice

src/routes/ReviewLegacy/index.jsx

+24-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,12 @@ import PageDivider from "../../components/PageDivider";
1515
import PageFoot from "../../components/PageElements/PageFoot";
1616
import { resetIntakeForm } from "../../actions/form";
1717
import Progress from "../../components/Progress";
18-
import { BUTTON_SIZE, BUTTON_TYPE, MAX_COMPLETED_STEP } from "../../constants/";
18+
import {
19+
BUTTON_SIZE,
20+
BUTTON_TYPE,
21+
MAX_COMPLETED_STEP,
22+
ROUTES,
23+
} from "../../constants/";
1924
import PaymentForm from "../Review/components/PaymentForm";
2025
import { triggerAutoSave } from "../../actions/autoSave";
2126
import { setProgressItem } from "../../actions/progress";
@@ -36,7 +41,7 @@ import {
3641
setCookie,
3742
clearCachedChallengeId,
3843
} from "../../autoSaveBeforeLogin";
39-
import { OrderContractModal } from "../../../src-ts";
44+
import { Breadcrumb, OrderContractModal } from "../../../src-ts";
4045
import AboutYourProject from "../../routes/Review/components/AboutYourProject";
4146
import PageH2 from "../../components/PageElements/PageH2";
4247

@@ -187,6 +192,22 @@ const ReviewLegacy = ({
187192
formData.zipCode &&
188193
formData.checked;
189194

195+
const breadcrumbs = [
196+
{ url: ROUTES.DASHBOARD_PAGE, name: "My work" },
197+
{
198+
url: ROUTES.INTAKE_FORM,
199+
name: "Start work",
200+
onClick: () => {
201+
dispatch(resetIntakeForm(true));
202+
},
203+
},
204+
{ url: ROUTES.WEBSITE_DESIGN_LEGACY, name: "Basic Info" },
205+
{ url: ROUTES.WEBSITE_DESIGN_PURPOSE_LEGACY, name: "Website purpose" },
206+
{ url: ROUTES.WEBSITE_DESIGN_PAGE_DETAILS_LEGACY, name: "Page details" },
207+
{ url: ROUTES.WEBSITE_DESIGN_BRANDING_LEGACY, name: "Branding" },
208+
{ url: "#", name: "Review" },
209+
];
210+
190211
return (
191212
<>
192213
<OrderContractModal
@@ -195,6 +216,7 @@ const ReviewLegacy = ({
195216
/>
196217
<LoadingSpinner show={isLoading} />
197218
<Page>
219+
<Breadcrumb items={breadcrumbs} />
198220
{banner}
199221
<PageContent styleName="container">
200222
<PageH2>REVIEW & PAYMENT</PageH2>

0 commit comments

Comments
 (0)