|
1 |
| -// https://github.com/vercel/next.js/issues/11230#issuecomment-643595034 |
| 1 | +import Divider from '@material-ui/core/Divider'; |
| 2 | +import Drawer from '@material-ui/core/Drawer'; |
| 3 | +import IconButton from '@material-ui/core/IconButton'; |
| 4 | +import List from '@material-ui/core/List'; |
| 5 | +import ListItem from "@material-ui/core/ListItem"; |
| 6 | +import ListItemIcon from "@material-ui/core/ListItemIcon"; |
| 7 | +import ListItemText from "@material-ui/core/ListItemText"; |
| 8 | +import {makeStyles} from '@material-ui/core/styles'; |
| 9 | +import ChevronLeftIcon from '@material-ui/icons/ChevronLeft'; |
| 10 | +import DashboardIcon from "@material-ui/icons/Dashboard"; |
| 11 | +import clsx from 'clsx'; |
| 12 | +import * as React from 'react'; |
2 | 13 |
|
3 |
| -import React, {useState} from "react"; |
4 |
| -import {Link} from "react-router-dom"; |
5 |
| -import {ReactComponent as SearchIcon} from "../../assets/icons/search2.svg"; |
6 |
| -import {ReactComponent as TimesIcon} from "../../assets/icons/times.svg"; |
7 |
| -import seleniumIcon from "../../assets/selenium.svg"; |
8 |
| -import "../../css/icons.css"; |
9 |
| -import styles from "./NavBar.module.css"; |
10 |
| -import searchHighlight from "../../core/Search"; |
11 |
| -import "./NavBar.css"; |
| 14 | +const drawerWidth = 240; |
12 | 15 |
|
13 |
| -/** |
14 |
| - * NavBar component, includes search bar and search functions |
15 |
| - * Look at `core/Search.ts` for the highlight function |
16 |
| - */ |
17 |
| -export default function NavBar() { |
18 |
| - let [prevSearch, setPrevSearch] = useState<any>(); |
19 |
| - let [prevTerm, setPrevTerm] = useState<string>(""); |
| 16 | +const useStyles = makeStyles((theme) => ({ |
| 17 | + root: { |
| 18 | + display: 'flex', |
| 19 | + }, |
| 20 | + toolbarIcon: { |
| 21 | + display: 'flex', |
| 22 | + alignItems: 'center', |
| 23 | + justifyContent: 'flex-end', |
| 24 | + padding: '0 8px', |
| 25 | + ...theme.mixins.toolbar, |
| 26 | + backgroundColor: theme.palette.primary.main, |
| 27 | + }, |
| 28 | + drawerPaper: { |
| 29 | + position: 'relative', |
| 30 | + whiteSpace: 'nowrap', |
| 31 | + width: drawerWidth, |
| 32 | + minHeight: '100vh', |
| 33 | + transition: theme.transitions.create('width', { |
| 34 | + easing: theme.transitions.easing.sharp, |
| 35 | + duration: theme.transitions.duration.enteringScreen, |
| 36 | + }), |
| 37 | + }, |
| 38 | + drawerPaperClose: { |
| 39 | + overflowX: 'hidden', |
| 40 | + minHeight: '100vh', |
| 41 | + transition: theme.transitions.create('width', { |
| 42 | + easing: theme.transitions.easing.sharp, |
| 43 | + duration: theme.transitions.duration.leavingScreen, |
| 44 | + }), |
| 45 | + width: theme.spacing(7), |
| 46 | + [theme.breakpoints.up('sm')]: { |
| 47 | + width: theme.spacing(9), |
| 48 | + }, |
| 49 | + }, |
| 50 | +})); |
20 | 51 |
|
21 |
| - const searchTerminDOM = (term: string) => { |
22 |
| - if (prevSearch) { |
23 |
| - prevSearch.revert(); |
24 |
| - } |
25 |
| - if (term && term !== "") { |
26 |
| - prevSearch = searchHighlight(term); |
27 |
| - setPrevSearch(prevSearch); |
28 |
| - } |
29 |
| - setPrevTerm(term); |
30 |
| - }; |
31 |
| - |
32 |
| - const rerunSearch = () => searchTerminDOM(prevTerm); |
33 |
| - window.rerunSearch = rerunSearch; |
| 52 | +function ListItemLink(props) { |
| 53 | + return <ListItem button component="a" {...props} />; |
| 54 | +} |
34 | 55 |
|
35 |
| - const clearSearch = () => { |
36 |
| - const searchBar = document.getElementById("search-by") as HTMLInputElement; |
37 |
| - searchBar.value = ""; |
38 |
| - // revert prev search as well |
39 |
| - searchTerminDOM(""); |
40 |
| - }; |
| 56 | +export default function NavBar(props) { |
| 57 | + const classes = useStyles(); |
| 58 | + const open = props.open; |
41 | 59 |
|
42 | 60 | return (
|
43 |
| - <React.Fragment> |
44 |
| - <nav id="sidebar"> |
45 |
| - <div id="header-wrapper"> |
46 |
| - <div id="header" style={{ height: "70px" }}> |
47 |
| - <Link id="logo" to="/home"> |
48 |
| - <img |
49 |
| - src={seleniumIcon} |
50 |
| - alt="logo" |
51 |
| - className={styles.iconDetails} |
52 |
| - /> |
53 |
| - <div |
54 |
| - style={{ |
55 |
| - marginLeft: "60px", |
56 |
| - marginTop: "5px", |
57 |
| - }} |
58 |
| - > |
59 |
| - <h3 className={styles.h4}>Selenium Grid</h3> |
60 |
| - </div> |
61 |
| - </Link> |
62 |
| - </div> |
63 |
| - |
64 |
| - <div className="searchbox"> |
65 |
| - <label htmlFor="search-by"> |
66 |
| - <SearchIcon className="icon-green" /> |
67 |
| - </label> |
68 |
| - <input |
69 |
| - data-search-input="" |
70 |
| - id="search-by" |
71 |
| - type="search" |
72 |
| - placeholder="Search..." |
73 |
| - autoComplete="off" |
74 |
| - onChange={(ev) => searchTerminDOM(ev.target.value)} |
75 |
| - /> |
76 |
| - <span data-search-clear=""> |
77 |
| - <TimesIcon className="icon-green" onClick={clearSearch} /> |
78 |
| - </span> |
79 |
| - </div> |
| 61 | + <Drawer |
| 62 | + variant="permanent" |
| 63 | + classes={{ |
| 64 | + paper: clsx(classes.drawerPaper, !open && classes.drawerPaperClose), |
| 65 | + }} |
| 66 | + open={open} |
| 67 | + > |
| 68 | + <div className={classes.toolbarIcon}> |
| 69 | + <IconButton color={"secondary"}> |
| 70 | + <ChevronLeftIcon/> |
| 71 | + </IconButton> |
| 72 | + </div> |
| 73 | + <Divider/> |
| 74 | + <List> |
| 75 | + <div> |
| 76 | + <ListItemLink href={"#"}> |
| 77 | + <ListItemIcon> |
| 78 | + <DashboardIcon/> |
| 79 | + </ListItemIcon> |
| 80 | + <ListItemText primary="Overview"/> |
| 81 | + </ListItemLink> |
80 | 82 | </div>
|
81 |
| - <div className="highlightable ps-container ps-theme-default ps-active-y"> |
82 |
| - <ul className="topics"> |
83 |
| - <li data-nav-id="/console" title="Console" className="dd-item"> |
84 |
| - <Link to="/console">Console</Link> |
85 |
| - </li> |
86 |
| - <li data-nav-id="/docs/" title="Docs" className="dd-item parent"> |
87 |
| - <a href="https://www.selenium.dev/documentation/en/grid/"> |
88 |
| - Docs |
89 |
| - <i className="fas fa-check read-icon"></i> |
90 |
| - </a> |
91 |
| - |
92 |
| - <ul> |
93 |
| - <li |
94 |
| - data-nav-id="/grid/purposes_and_main_functionalities/" |
95 |
| - title="Purposes and main functionalities" |
96 |
| - className="dd-item " |
97 |
| - > |
98 |
| - <a href="https://www.selenium.dev/documentation/en/grid/purposes_and_main_functionalities/"> |
99 |
| - Purposes and functionalities |
100 |
| - <i className="fas fa-check read-icon"></i> |
101 |
| - </a> |
102 |
| - </li> |
103 |
| - |
104 |
| - <li |
105 |
| - data-nav-id="/grid/when_to_use_grid/" |
106 |
| - title="When to use Grid" |
107 |
| - className="dd-item " |
108 |
| - > |
109 |
| - <a href="https://www.selenium.dev/documentation/en/grid/when_to_use_grid/"> |
110 |
| - When to use Grid |
111 |
| - <i className="fas fa-check read-icon"></i> |
112 |
| - </a> |
113 |
| - </li> |
114 |
| - |
115 |
| - <li |
116 |
| - data-nav-id="/grid/grid_4/" |
117 |
| - title="Grid 4" |
118 |
| - className="dd-item" |
119 |
| - > |
120 |
| - <a href="https://www.selenium.dev/documentation/en/grid/grid_4/"> |
121 |
| - Grid 4<i className="fas fa-check read-icon"></i> |
122 |
| - </a> |
123 |
| - |
124 |
| - <ul> |
125 |
| - <li |
126 |
| - data-nav-id="/grid/grid_4/components_of_a_grid/" |
127 |
| - title="Components" |
128 |
| - className="dd-item " |
129 |
| - > |
130 |
| - <a href="https://www.selenium.dev/documentation/en/grid/grid_4/components_of_a_grid/"> |
131 |
| - Components |
132 |
| - <i className="fas fa-check read-icon"></i> |
133 |
| - </a> |
134 |
| - </li> |
135 |
| - </ul> |
136 |
| - </li> |
137 |
| - </ul> |
138 |
| - </li> |
139 |
| - </ul> |
140 |
| - </div> |
141 |
| - </nav> |
142 |
| - </React.Fragment> |
| 83 | + </List> |
| 84 | + {/*<Divider/>*/} |
| 85 | + {/*<List>{secondaryListItems}</List>*/} |
| 86 | + </Drawer> |
143 | 87 | );
|
144 | 88 | }
|
| 89 | + |
0 commit comments