diff options
author | Quentin Gliech <quentingliech@gmail.com> | 2020-02-13 20:00:03 +0100 |
---|---|---|
committer | Quentin Gliech <quentingliech@gmail.com> | 2020-02-13 20:00:03 +0100 |
commit | ce6f6a984b374b189141116433ced80dfa0c2aae (patch) | |
tree | e6487b9b480e6b18767ae310b702b57e5cbef000 /webui/src/pages/bug/Bug.tsx | |
parent | 8b85780d76ad45675582f4478eedb026b7ac25e1 (diff) | |
download | git-bug-ce6f6a984b374b189141116433ced80dfa0c2aae.tar.gz |
webui: move pages components
Diffstat (limited to 'webui/src/pages/bug/Bug.tsx')
-rw-r--r-- | webui/src/pages/bug/Bug.tsx | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/webui/src/pages/bug/Bug.tsx b/webui/src/pages/bug/Bug.tsx new file mode 100644 index 00000000..998c9528 --- /dev/null +++ b/webui/src/pages/bug/Bug.tsx @@ -0,0 +1,98 @@ +import React from 'react'; + +import Typography from '@material-ui/core/Typography/Typography'; +import { makeStyles } from '@material-ui/core/styles'; + +import Author from 'src/components/Author'; +import Date from 'src/components/Date'; +import Label from 'src/components/Label'; + +import { BugFragment } from './Bug.generated'; +import CommentForm from './CommentForm'; +import TimelineQuery from './TimelineQuery'; + +const useStyles = makeStyles(theme => ({ + main: { + maxWidth: 800, + margin: 'auto', + marginTop: theme.spacing(4), + }, + header: { + marginLeft: theme.spacing(1) + 40, + }, + title: { + ...theme.typography.h5, + }, + id: { + ...theme.typography.subtitle1, + marginLeft: theme.spacing(1), + }, + container: { + display: 'flex', + marginBottom: theme.spacing(1), + }, + timeline: { + flex: 1, + marginTop: theme.spacing(2), + marginRight: theme.spacing(2), + minWidth: 0, + }, + sidebar: { + marginTop: theme.spacing(2), + flex: '0 0 200px', + }, + labelList: { + listStyle: 'none', + padding: 0, + margin: 0, + }, + label: { + marginTop: theme.spacing(1), + marginBottom: theme.spacing(1), + '& > *': { + display: 'block', + }, + }, +})); + +type Props = { + bug: BugFragment; +}; + +function Bug({ bug }: Props) { + const classes = useStyles(); + return ( + <main className={classes.main}> + <div className={classes.header}> + <span className={classes.title}>{bug.title}</span> + <span className={classes.id}>{bug.humanId}</span> + + <Typography color={'textSecondary'}> + <Author author={bug.author} /> + {' opened this bug '} + <Date date={bug.createdAt} /> + </Typography> + </div> + + <div className={classes.container}> + <div className={classes.timeline}> + <TimelineQuery id={bug.id} /> + </div> + <div className={classes.sidebar}> + <Typography variant={'subtitle1'}>Labels</Typography> + <ul className={classes.labelList}> + {bug.labels.map(l => ( + <li className={classes.label} key={l.name}> + <Label label={l} key={l.name} /> + </li> + ))} + </ul> + </div> + </div> + + <CommentForm bugId={bug.id} /> + </main> + ); +} + +export default Bug; |