Skip to content

Commit ddcbd1c

Browse files
committed
fix: clicking on join court leads to court menu but doesn't change the highlight
1 parent ce28c50 commit ddcbd1c

File tree

5 files changed

+118
-55
lines changed

5 files changed

+118
-55
lines changed

src/bootstrap/app.js

Lines changed: 5 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import React, { useState } from "react";
44
import t from "prop-types";
55
import loadable from "@loadable/component";
66
import styled from "styled-components/macro";
7-
import { Col, Layout, Menu, Row, Spin } from "antd";
7+
import { Col, Layout, Row, Spin } from "antd";
88
import { Helmet } from "react-helmet";
99
import { BrowserRouter, NavLink, Route, Switch, useParams } from "react-router-dom";
1010
import { ReactComponent as Logo } from "../assets/images/kleros-logo-flat-light.svg";
@@ -17,6 +17,8 @@ import ChainChangeWatcher from "./chain-change-watcher";
1717
import drizzle, { DrizzleProvider, Initializer, useDrizzle } from "./drizzle";
1818
import ErrorBoundary from "../components/error-boundary";
1919
import SwitchChainFallback from "../components/error-fallback/switch-chain";
20+
import MenuMobile from "../components/menu/index";
21+
import MenuPc from "../components/menu/styledMenu";
2022

2123
export default function App() {
2224
const [isMenuClosed, setIsMenuClosed] = useState(true);
@@ -45,7 +47,7 @@ export default function App() {
4547
collapsed={isMenuClosed}
4648
onClick={() => setIsMenuClosed((previousState) => !previousState)}
4749
>
48-
<Menu theme="dark">{MenuItems}</Menu>
50+
<MenuMobile></MenuMobile>
4951
</StyledLayoutSider>
5052
<Layout>
5153
<StyledLayoutHeader>
@@ -56,9 +58,7 @@ export default function App() {
5658
</LogoNavLink>
5759
</StyledLogoCol>
5860
<Col lg={14} md={12} xs={0} style={{ padding: "0 16px" }}>
59-
<StyledMenu mode="horizontal" theme="dark">
60-
{MenuItems}
61-
</StyledMenu>
61+
<MenuPc></MenuPc>
6262
</Col>
6363
<StyledTrayCol lg={6} md={8} sm={12} xs={24}>
6464
<StyledTray>
@@ -172,27 +172,6 @@ const ConvertPnk = loadable(() => import(/* webpackPrefetch: true */ "../contain
172172
fallback: <StyledSpin />,
173173
});
174174

175-
const MenuItems = [
176-
<Menu.Item key="home">
177-
<NavLink to="/">Home</NavLink>
178-
</Menu.Item>,
179-
<Menu.Item key="courts">
180-
<NavLink to="/courts">Courts</NavLink>
181-
</Menu.Item>,
182-
<Menu.Item key="cases">
183-
<NavLink to="/cases">My Cases</NavLink>
184-
</Menu.Item>,
185-
<Menu.Item key="guide">
186-
<a
187-
href="https://blog.kleros.io/become-a-juror-blockchain-dispute-resolution-on-ethereum/"
188-
rel="noopener noreferrer"
189-
target="_blank"
190-
>
191-
Guide
192-
</a>
193-
</Menu.Item>,
194-
];
195-
196175
const settings = {
197176
draw: "When I am drawn as a juror.",
198177
appeal: "When a case I ruled is appealed.",
@@ -247,35 +226,6 @@ const StyledTrayCol = styled(Col)`
247226
height: 64px;
248227
`;
249228

250-
const StyledMenu = styled(Menu)`
251-
font-weight: 500;
252-
line-height: 64px !important;
253-
text-align: center;
254-
255-
&.ant-menu-dark {
256-
background-color: transparent;
257-
}
258-
259-
&& {
260-
.ant-menu-item > a {
261-
color: rgba(255, 255, 255, 0.85);
262-
263-
&.hover,
264-
&.focus {
265-
color: rgba(255, 255, 255, 1);
266-
}
267-
}
268-
269-
.ant-menu-item-selected {
270-
background-color: transparent !important;
271-
272-
> a {
273-
color: rgba(255, 255, 255, 1);
274-
}
275-
}
276-
}
277-
`;
278-
279229
const StyledLayoutContent = styled(Layout.Content)`
280230
background: #f2e3ff;
281231
// The header takes exactly 64px

src/components/menu/index.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import React from "react";
2+
import { Menu } from "antd";
3+
import MenuItems from "./menuItems";
4+
import useMenuSelectkey from "../../hooks/use-menu-selectkey";
5+
6+
const MenuMobile = () => {
7+
let selectKey = useMenuSelectkey();
8+
return (
9+
<Menu theme="dark" selectedKeys={[selectKey]}>
10+
{MenuItems()}
11+
</Menu>
12+
);
13+
};
14+
15+
export default MenuMobile;

src/components/menu/menuItems.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import React from "react";
2+
import { Menu } from "antd";
3+
import { NavLink } from "react-router-dom";
4+
5+
const menuItems = () => {
6+
return [
7+
<Menu.Item key="home">
8+
<NavLink to="/">Home</NavLink>
9+
</Menu.Item>,
10+
<Menu.Item key="courts">
11+
<NavLink to="/courts">Courts</NavLink>
12+
</Menu.Item>,
13+
<Menu.Item key="cases">
14+
<NavLink to="/cases">My Cases</NavLink>
15+
</Menu.Item>,
16+
<Menu.Item key="guide">
17+
<a
18+
href="https://blog.kleros.io/become-a-juror-blockchain-dispute-resolution-on-ethereum/"
19+
rel="noopener noreferrer"
20+
target="_blank"
21+
>
22+
Guide
23+
</a>
24+
</Menu.Item>,
25+
];
26+
};
27+
28+
export default menuItems;

src/components/menu/styledMenu.js

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import React from "react";
2+
import styled from "styled-components/macro";
3+
import { Menu } from "antd";
4+
import MenuItems from "./menuItems";
5+
import useMenuSelectkey from "../../hooks/use-menu-selectkey";
6+
7+
const StyledMenu = styled(Menu)`
8+
font-weight: 500;
9+
line-height: 64px !important;
10+
text-align: center;
11+
12+
&.ant-menu-dark {
13+
background-color: transparent;
14+
}
15+
16+
&& {
17+
.ant-menu-item > a {
18+
color: rgba(255, 255, 255, 0.85);
19+
20+
&.hover,
21+
&.focus {
22+
color: rgba(255, 255, 255, 1);
23+
}
24+
}
25+
26+
.ant-menu-item-selected {
27+
background-color: transparent !important;
28+
29+
> a {
30+
color: rgba(255, 255, 255, 1);
31+
}
32+
}
33+
}
34+
`;
35+
36+
const StyleMenu = () => {
37+
let selectKey = useMenuSelectkey();
38+
39+
return (
40+
<StyledMenu mode="horizontal" theme="dark" selectedKeys={[selectKey]}>
41+
{MenuItems()}
42+
</StyledMenu>
43+
);
44+
};
45+
46+
export default StyleMenu;

src/hooks/use-menu-selectkey.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { useEffect, useState } from "react";
2+
import { useLocation } from "react-router-dom";
3+
4+
export default function useMenuSelectkey() {
5+
let [selectKey, SetSelectKey] = useState("");
6+
let location = useLocation();
7+
8+
useEffect(() => {
9+
let pathname = location.pathname;
10+
switch (pathname) {
11+
case "/courts":
12+
SetSelectKey("courts");
13+
break;
14+
case "/cases":
15+
SetSelectKey("cases");
16+
break;
17+
default:
18+
SetSelectKey("home");
19+
break;
20+
}
21+
}, [location]);
22+
23+
return selectKey;
24+
}

0 commit comments

Comments
 (0)