Skip to content

Commit df8539d

Browse files
committed
fix: closing behavior and little closing animation
1 parent 9fe795e commit df8539d

File tree

4 files changed

+44
-24
lines changed

4 files changed

+44
-24
lines changed

web/src/components/DisputeView/DisputeInfo/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ const DisputeInfo: React.FC<IDisputeInfo> = ({
9595
{
9696
icon: CalendarIcon,
9797
name: getPeriodPhrase(period ?? 0),
98-
value: !displayAsList ? `${new Date(date * 1000).toLocaleString()} (Local Time)` : formatDate(date),
98+
value: !displayAsList ? new Date(date * 1000).toLocaleString() : formatDate(date),
9999
display: !isUndefined(period) && !isUndefined(date),
100100
style: "grid-column: 2 / 4;",
101101
},

web/src/components/LightButton.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@ const StyledButton = styled(Button)<{ isMobileNavbar?: boolean }>`
1313
font-weight: 400;
1414
}
1515
.button-svg {
16-
fill: ${({ theme, isMobileNavbar }) => (isMobileNavbar ? theme.secondaryText : `${theme.white}BF`)} !important;
16+
fill: ${({ theme, isMobileNavbar }) => (isMobileNavbar ? theme.secondaryPurple : `${theme.white}BF`)} !important;
1717
}
1818
1919
&:hover {
2020
.button-svg {
21-
fill: ${({ theme, isMobileNavbar }) => (isMobileNavbar ? theme.primaryText : `${theme.white}`)} !important;
21+
fill: ${({ theme, isMobileNavbar }) => (isMobileNavbar ? theme.secondaryPurple : `${theme.white}`)} !important;
2222
}
2323
transition: background-color 0.1s;
2424
background-color: ${({ theme }) => theme.whiteLowOpacityStrong};

web/src/layout/Header/DesktopHeader.tsx

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -151,13 +151,7 @@ const DesktopHeader: React.FC = () => {
151151
<Container>
152152
<LeftSide>
153153
<LightButtonContainer>
154-
<LightButton
155-
text=""
156-
onClick={() => {
157-
toggleIsDappListOpen();
158-
}}
159-
Icon={StyledKlerosSolutionsIcon}
160-
/>
154+
<LightButton text="" onClick={toggleIsDappListOpen} Icon={StyledKlerosSolutionsIcon} />
161155
</LightButtonContainer>
162156
<Logo />
163157
</LeftSide>

web/src/layout/Header/navbar/index.tsx

Lines changed: 40 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ const Container = styled.div<{ isOpen: boolean }>`
3131
top: 0;
3232
left: 0;
3333
right: 0;
34-
height: 92%;
34+
height: 76%;
3535
overflow-y: auto;
3636
z-index: 1;
3737
background-color: ${({ theme }) => theme.whiteBackground};
@@ -61,23 +61,29 @@ const DisconnectWalletButtonContainer = styled.div`
6161
align-items: center;
6262
`;
6363

64-
const PopupContainer = styled.div`
64+
const PopupContainer = styled.div<{ isClosing: boolean }>`
6565
position: fixed;
6666
top: 0;
6767
left: 0;
6868
width: 100%;
6969
height: 100%;
7070
z-index: 1;
7171
background-color: ${({ theme }) => theme.blackLowOpacity};
72+
opacity: ${({ isClosing }) => (isClosing ? 0 : 1)};
73+
transition: opacity 0.2s ease-in-out;
7274
`;
7375

74-
const StyledOverlay = styled.div`
76+
const NavbarOverlay = styled.div<{ hasPopupOpen: boolean; isClosing: boolean }>`
7577
position: fixed;
7678
top: 0;
7779
left: 0;
7880
width: 100%;
7981
height: 64px;
80-
z-index: 1;
82+
z-index: ${({ hasPopupOpen, isClosing }) => (hasPopupOpen || isClosing ? -1 : 1)};
83+
`;
84+
85+
const StyledOverlay = styled(Overlay)`
86+
top: unset;
8187
`;
8288

8389
export interface ISettings {
@@ -103,19 +109,35 @@ const NavBar: React.FC<INavBar> = ({ isOpen, handleCloseNavbar }) => {
103109
const [isDappListOpen, toggleIsDappListOpen] = useToggle(false);
104110
const [isHelpOpen, toggleIsHelpOpen] = useToggle(false);
105111
const [isSettingsOpen, toggleIsSettingsOpen] = useToggle(false);
112+
const [isClosing, toggleIsClosing] = useToggle(false);
113+
114+
const hasPopupOpen = isDappListOpen || isHelpOpen || isSettingsOpen;
115+
116+
const handleOpenPopup = (toggleFn: () => void) => {
117+
toggleIsClosing(false);
118+
toggleFn();
119+
};
120+
121+
const handleClosePopup = () => {
122+
toggleIsClosing(true);
123+
setTimeout(() => {
124+
if (isDappListOpen) toggleIsDappListOpen(false);
125+
if (isHelpOpen) toggleIsHelpOpen(false);
126+
if (isSettingsOpen) toggleIsSettingsOpen(false);
127+
toggleIsClosing(false);
128+
}, 200);
129+
};
106130

107131
return (
108132
<>
109-
{isOpen ? <Overlay {...{ isOpen }} onClick={handleCloseNavbar} /> : null}
133+
{isOpen && <NavbarOverlay onClick={handleCloseNavbar} {...{ hasPopupOpen, isClosing }} />}
110134
<Wrapper {...{ isOpen }}>
111135
<StyledOverlay>
112136
<Container {...{ isOpen }}>
113137
<LightButton
114138
isMobileNavbar={true}
115139
text="Kleros Solutions"
116-
onClick={() => {
117-
toggleIsDappListOpen();
118-
}}
140+
onClick={() => handleOpenPopup(toggleIsDappListOpen)}
119141
Icon={KlerosSolutionsIcon}
120142
/>
121143
<hr />
@@ -130,16 +152,20 @@ const NavBar: React.FC<INavBar> = ({ isOpen, handleCloseNavbar }) => {
130152
)}
131153
</WalletContainer>
132154
<hr />
133-
<Menu {...{ toggleIsHelpOpen, toggleIsSettingsOpen }} isMobileNavbar={true} />
155+
<Menu
156+
toggleIsHelpOpen={() => handleOpenPopup(toggleIsHelpOpen)}
157+
toggleIsSettingsOpen={() => handleOpenPopup(toggleIsSettingsOpen)}
158+
isMobileNavbar={true}
159+
/>
134160
<br />
135161
</Container>
136162
</StyledOverlay>
137163
</Wrapper>
138-
{(isDappListOpen || isHelpOpen || isSettingsOpen) && (
139-
<PopupContainer>
140-
{isDappListOpen && <DappList {...{ toggleIsDappListOpen }} />}
141-
{isHelpOpen && <Help {...{ toggleIsHelpOpen }} />}
142-
{isSettingsOpen && <Settings {...{ toggleIsSettingsOpen }} />}
164+
{hasPopupOpen && (
165+
<PopupContainer {...{ isClosing }} onTransitionEnd={() => isClosing && handleClosePopup()}>
166+
{isDappListOpen && <DappList toggleIsDappListOpen={handleClosePopup} />}
167+
{isHelpOpen && <Help toggleIsHelpOpen={handleClosePopup} />}
168+
{isSettingsOpen && <Settings toggleIsSettingsOpen={handleClosePopup} />}
143169
</PopupContainer>
144170
)}
145171
</>

0 commit comments

Comments
 (0)