Skip to content

Commit d0d1087

Browse files
committed
feat(web): link all the miniguides to onboarding miniguide, create mechanism to close the popups
1 parent 7bfbe00 commit d0d1087

File tree

7 files changed

+69
-12
lines changed

7 files changed

+69
-12
lines changed

web/src/components/Popup/MiniGuides/Appeal/index.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ const Appeal: React.FC<IAppeal> = ({ toggleMiniGuide }) => {
8181
setCurrentPage={setCurrentPage}
8282
numPages={leftPageContents.length}
8383
isOnboarding={false}
84+
canClose={true}
8485
/>
8586
);
8687
};

web/src/components/Popup/MiniGuides/BinaryVoting/index.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ const BinaryVoting: React.FC<IBinaryVoting> = ({ toggleMiniGuide }) => {
6262
setCurrentPage={setCurrentPage}
6363
numPages={leftPageContents.length}
6464
isOnboarding={false}
65+
canClose={true}
6566
/>
6667
);
6768
};

web/src/components/Popup/MiniGuides/JurorLevels.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ const JurorLevels: React.FC<IJurorLevels> = ({ toggleMiniGuide }) => {
133133
setCurrentPage={setCurrentPage}
134134
numPages={leftPageContents.length}
135135
isOnboarding={false}
136+
canClose={true}
136137
/>
137138
);
138139
};

web/src/components/Popup/MiniGuides/Onboarding/index.tsx

Lines changed: 59 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
11
import React, { useState } from "react";
22
import styled from "styled-components";
3+
import { useToggle } from "react-use";
34
import HowItWorks from "./HowItWorks";
45
import PnkLogoAndTitle from "./PnkLogoAndTitle";
56
import WhatDoINeed from "./WhatDoINeed";
7+
import Staking from "../Staking";
8+
import BinaryVoting from "../BinaryVoting";
9+
import RankedVoting from "../RankedVoting";
10+
import Appeal from "../Appeal";
11+
import JurorLevels from "../JurorLevels";
612
import Template, { Title, ParagraphsContainer, LeftContentContainer } from "../Template";
713

814
const StyledLabel = styled.label`
@@ -44,7 +50,12 @@ const leftPageContents = [
4450

4551
const rightPageComponents = [() => <PnkLogoAndTitle />, () => <WhatDoINeed />, () => <HowItWorks />];
4652

47-
const LeftContent: React.FC<{ currentPage: number }> = ({ currentPage }) => {
53+
const extractGuideName = (linkText) => linkText.split(". ")[1];
54+
55+
const LeftContent: React.FC<{ currentPage: number; toggleMiniGuide: (guideName: string) => void }> = ({
56+
currentPage,
57+
toggleMiniGuide,
58+
}) => {
4859
const { title, paragraphs, links } = leftPageContents[currentPage - 1];
4960

5061
return (
@@ -57,7 +68,9 @@ const LeftContent: React.FC<{ currentPage: number }> = ({ currentPage }) => {
5768
</ParagraphsContainer>
5869
<LinksContainer>
5970
{links.map((link, index) => (
60-
<StyledLabel key={index}>{link}</StyledLabel>
71+
<StyledLabel key={index} onClick={() => toggleMiniGuide(extractGuideName(link))}>
72+
{link}
73+
</StyledLabel>
6174
))}
6275
</LinksContainer>
6376
</LeftContentContainer>
@@ -76,17 +89,52 @@ interface IOnboarding {
7689

7790
const Onboarding: React.FC<IOnboarding> = ({ toggleIsOnboardingMiniGuidesOpen }) => {
7891
const [currentPage, setCurrentPage] = useState(1);
92+
const [isStakingMiniGuideOpen, toggleStakingMiniGuide] = useToggle(false);
93+
const [isBinaryVotingMiniGuideOpen, toggleBinaryVotingMiniGuide] = useToggle(false);
94+
const [isRankedVotingMiniGuideOpen, toggleRankedVotingMiniGuide] = useToggle(false);
95+
const [isAppealMiniGuideOpen, toggleAppealMiniGuide] = useToggle(false);
96+
const [isJurorLevelsMiniGuideOpen, toggleJurorLevelsMiniGuide] = useToggle(false);
97+
98+
const canCloseOnboarding =
99+
!isStakingMiniGuideOpen &&
100+
!isBinaryVotingMiniGuideOpen &&
101+
!isRankedVotingMiniGuideOpen &&
102+
!isAppealMiniGuideOpen &&
103+
!isJurorLevelsMiniGuideOpen;
104+
105+
const toggleMiniGuide = (guideName: string) => {
106+
if (guideName === "Staking") {
107+
toggleStakingMiniGuide();
108+
} else if (guideName === "Binary Voting") {
109+
toggleBinaryVotingMiniGuide();
110+
} else if (guideName === "Ranked Voting") {
111+
toggleRankedVotingMiniGuide();
112+
} else if (guideName === "Appeal") {
113+
toggleAppealMiniGuide();
114+
} else if (guideName === "Juror Levels") {
115+
toggleJurorLevelsMiniGuide();
116+
}
117+
};
79118

80119
return (
81-
<Template
82-
LeftContent={<LeftContent currentPage={currentPage} />}
83-
RightContent={<RightContent currentPage={currentPage} />}
84-
onClose={toggleIsOnboardingMiniGuidesOpen}
85-
currentPage={currentPage}
86-
setCurrentPage={setCurrentPage}
87-
numPages={leftPageContents.length}
88-
isOnboarding={true}
89-
/>
120+
<>
121+
<Template
122+
LeftContent={<LeftContent currentPage={currentPage} toggleMiniGuide={toggleMiniGuide} />}
123+
RightContent={<RightContent currentPage={currentPage} />}
124+
onClose={toggleIsOnboardingMiniGuidesOpen}
125+
currentPage={currentPage}
126+
setCurrentPage={setCurrentPage}
127+
numPages={leftPageContents.length}
128+
isOnboarding={true}
129+
canClose={canCloseOnboarding}
130+
/>
131+
132+
{isStakingMiniGuideOpen && <Staking toggleMiniGuide={toggleStakingMiniGuide} />}
133+
{isBinaryVotingMiniGuideOpen && <BinaryVoting toggleMiniGuide={toggleBinaryVotingMiniGuide} />}
134+
{isRankedVotingMiniGuideOpen && <RankedVoting toggleMiniGuide={toggleRankedVotingMiniGuide} />}
135+
{isAppealMiniGuideOpen && <Appeal toggleMiniGuide={toggleAppealMiniGuide} />}
136+
{isJurorLevelsMiniGuideOpen && <JurorLevels toggleMiniGuide={toggleJurorLevelsMiniGuide} />}
137+
</>
90138
);
91139
};
92140

web/src/components/Popup/MiniGuides/RankedVoting/index.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ const RankedVoting: React.FC<IRankedVoting> = ({ toggleMiniGuide }) => {
6464
setCurrentPage={setCurrentPage}
6565
numPages={leftPageContents.length}
6666
isOnboarding={false}
67+
canClose={true}
6768
/>
6869
);
6970
};

web/src/components/Popup/MiniGuides/Staking/index.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ const Staking: React.FC<IStaking> = ({ toggleMiniGuide }) => {
8787
setCurrentPage={setCurrentPage}
8888
numPages={leftPageContents.length}
8989
isOnboarding={false}
90+
canClose={true}
9091
/>
9192
);
9293
};

web/src/components/Popup/MiniGuides/Template.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@ interface ITemplate {
160160
setCurrentPage: Dispatch<SetStateAction<number>>;
161161
numPages: number;
162162
isOnboarding: boolean;
163+
canClose: boolean;
163164
}
164165

165166
const Template: React.FC<ITemplate> = ({
@@ -170,10 +171,13 @@ const Template: React.FC<ITemplate> = ({
170171
setCurrentPage,
171172
numPages,
172173
isOnboarding,
174+
canClose,
173175
}) => {
174176
const containerRef = useRef(null);
175177
useFocusOutside(containerRef, () => {
176-
onClose();
178+
if (canClose) {
179+
onClose();
180+
}
177181
});
178182
return (
179183
<>

0 commit comments

Comments
 (0)