Skip to content

Commit 98107db

Browse files
committed
added task rubric sidemenu
1 parent 2e12910 commit 98107db

File tree

4 files changed

+139
-11
lines changed

4 files changed

+139
-11
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
"aws-amplify": "^3.3.26",
2626
"aws-amplify-react": "^4.2.30",
2727
"bootstrap": "^4.6.0",
28+
"clsx": "^1.1.1",
2829
"eslint-plugin-react": "^7.23.1",
2930
"formik": "^2.2.6",
3031
"get-video-id": "^3.2.0",

src/Screens/TaskView/Rubric/Rubric.tsx

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
import { Checkbox, MenuItem } from '@material-ui/core';
1+
import { Checkbox, MenuItem, Typography } from '@material-ui/core';
22
import { useState } from 'react';
3-
import { Navbar, Nav, Form, Button, Dropdown } from 'react-bootstrap';
3+
4+
import { Form } from 'react-bootstrap';
45
import { RubricRequirement } from '../../../__generated__/types';
56

67
function Rubric({ requirement }: { requirement: RubricRequirement }) {
@@ -9,17 +10,17 @@ function Rubric({ requirement }: { requirement: RubricRequirement }) {
910
const handleChange = () => {
1011
setComplete(!complete);
1112
};
13+
1214
return (
13-
<MenuItem>
15+
<MenuItem style={{ width: '100%' }}>
1416
<Form.Group>
1517
<Checkbox
1618
checked={complete}
1719
onChange={handleChange}
1820
inputProps={{ 'aria-label': 'primary checkbox' }}
1921
color="default"
2022
/>
21-
{/* <Form.Check required checked={requirement.isComplete} /> */}
22-
<Form.Label>{requirement.description}</Form.Label>
23+
<Typography>{requirement.description}</Typography>
2324
</Form.Group>
2425
</MenuItem>
2526
);
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
import {
2+
createStyles,
3+
Divider,
4+
Drawer,
5+
IconButton,
6+
makeStyles,
7+
Theme,
8+
useTheme,
9+
Typography,
10+
} from '@material-ui/core';
11+
import { Form, Button, NavDropdown } from 'react-bootstrap';
12+
import { ChevronLeft, ChevronRight, Menu } from '@material-ui/icons';
13+
import clsx from 'clsx';
14+
import React from 'react';
15+
import { RubricRequirement } from '../../../__generated__/types';
16+
import Rubric from './Rubric';
17+
18+
const useStyles = makeStyles((theme: Theme) =>
19+
createStyles({
20+
root: {
21+
display: 'flex',
22+
},
23+
appBar: {
24+
transition: theme.transitions.create(['margin', 'width'], {
25+
easing: theme.transitions.easing.sharp,
26+
duration: theme.transitions.duration.leavingScreen,
27+
}),
28+
},
29+
appBarShift: {
30+
transition: theme.transitions.create(['margin', 'width'], {
31+
easing: theme.transitions.easing.easeOut,
32+
duration: theme.transitions.duration.enteringScreen,
33+
}),
34+
},
35+
title: {
36+
flexGrow: 1,
37+
},
38+
hide: {
39+
display: 'none',
40+
},
41+
drawer: {
42+
flexShrink: 0,
43+
},
44+
drawerPaper: {},
45+
drawerHeader: {
46+
display: 'flex',
47+
alignItems: 'center',
48+
padding: theme.spacing(0, 1),
49+
// necessary for content to be below app bar
50+
...theme.mixins.toolbar,
51+
justifyContent: 'flex-start',
52+
},
53+
content: {
54+
flexGrow: 1,
55+
padding: theme.spacing(3),
56+
transition: theme.transitions.create('margin', {
57+
easing: theme.transitions.easing.sharp,
58+
duration: theme.transitions.duration.leavingScreen,
59+
}),
60+
},
61+
contentShift: {
62+
transition: theme.transitions.create('margin', {
63+
easing: theme.transitions.easing.easeOut,
64+
duration: theme.transitions.duration.enteringScreen,
65+
}),
66+
marginRight: 0,
67+
},
68+
})
69+
);
70+
71+
function RubricMenu({ requirements }: { requirements: RubricRequirement[] }) {
72+
const classes = useStyles();
73+
const theme = useTheme();
74+
const [open, setOpen] = React.useState(false);
75+
76+
const handleDrawerOpen = () => {
77+
setOpen(true);
78+
};
79+
80+
const handleDrawerClose = () => {
81+
setOpen(false);
82+
};
83+
return (
84+
<div>
85+
<IconButton
86+
color="inherit"
87+
aria-label="open drawer"
88+
edge="end"
89+
onClick={handleDrawerOpen}
90+
className={clsx(open && classes.hide)}
91+
>
92+
<Menu />
93+
<Typography>Task Rubric</Typography>
94+
</IconButton>
95+
<Drawer
96+
className={classes.drawer}
97+
variant="persistent"
98+
anchor="right"
99+
open={open}
100+
classes={{
101+
paper: classes.drawerPaper,
102+
}}
103+
>
104+
<div className={classes.drawerHeader}>
105+
<IconButton onClick={handleDrawerClose}>
106+
{theme.direction === 'rtl' ? <ChevronLeft /> : <ChevronRight />}
107+
</IconButton>
108+
<Typography>Task Rubric</Typography>
109+
</div>
110+
<Divider />
111+
<Form>
112+
{requirements.map((requirement: RubricRequirement) => (
113+
<Rubric requirement={requirement} />
114+
))}
115+
<NavDropdown.Divider />
116+
<Button className="mx-auto" type="submit">
117+
Submit Task
118+
</Button>
119+
</Form>
120+
</Drawer>
121+
</div>
122+
);
123+
}
124+
125+
export default RubricMenu;

src/Screens/TaskView/TaskNavbar/TaskNavbar.tsx

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,16 @@ import { Dispatch, SetStateAction } from 'react';
44
import { Navbar, Nav, Form, Button, NavDropdown, Dropdown } from 'react-bootstrap';
55
import { RubricRequirement } from '../../../__generated__/types';
66
import Rubric from '../Rubric/Rubric';
7+
import RubricMenu from '../Rubric/RubricMenu';
78
import './TaskNavbar.css';
89

9-
function handleToggle() {}
10-
1110
function TaskNavbar({ rubric }: { rubric: RubricRequirement[] }) {
1211
return (
1312
<Navbar collapseOnSelect expand="sm" bg="primary" variant="light">
1413
<Navbar.Toggle aria-controls="responsive-navbar-nav" />
1514
<Navbar.Collapse id="responsive-navbar-nav">
1615
<Nav className="container-fluid">
17-
<Form inline>
16+
<Form className="mr-3" inline>
1817
<Button className="rounded-circle btn-light" type="submit" href="/">
1918
<FontAwesomeIcon icon={faCaretLeft} />
2019
</Button>
@@ -24,8 +23,10 @@ function TaskNavbar({ rubric }: { rubric: RubricRequirement[] }) {
2423
<FontAwesomeIcon icon={faHandPaper} />
2524
</Button>
2625
</Form>
27-
28-
<NavDropdown drop="left" title="Task Rubric" id="rubric-dropdown" className="ml-2">
26+
<div className="ml-1 mr-0">
27+
<RubricMenu requirements={rubric} />
28+
</div>
29+
{/* <NavDropdown drop="left" title="Task Rubric" id="rubric-dropdown" className="ml-2">
2930
<Form>
3031
{rubric.map((requirement: RubricRequirement) => (
3132
<Rubric requirement={requirement} />
@@ -35,7 +36,7 @@ function TaskNavbar({ rubric }: { rubric: RubricRequirement[] }) {
3536
Submit Task
3637
</Button>
3738
</Form>
38-
</NavDropdown>
39+
</NavDropdown> */}
3940
</Nav>
4041
</Navbar.Collapse>
4142
</Navbar>

0 commit comments

Comments
 (0)