You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
115 lines
3.7 KiB
115 lines
3.7 KiB
import React from 'react'; |
|
import MuiAppBar from '@material-ui/core/AppBar'; |
|
import Toolbar from '@material-ui/core/Toolbar'; |
|
import IconButton from '@material-ui/core/IconButton'; |
|
import Typography from '@material-ui/core/Typography'; |
|
import InputBase from '@material-ui/core/InputBase'; |
|
import { createStyles, fade, Theme, makeStyles } from '@material-ui/core/styles'; |
|
import MenuIcon from '@material-ui/icons/Menu'; |
|
import SearchIcon from '@material-ui/icons/Search'; |
|
import Tabs from '@material-ui/core/Tabs'; |
|
import Tab from '@material-ui/core/Tab'; |
|
|
|
const useStyles = makeStyles((theme: Theme) => |
|
createStyles({ |
|
root: { |
|
flexGrow: 1, |
|
}, |
|
menuButton: { |
|
marginRight: theme.spacing(2), |
|
}, |
|
title: { |
|
flexGrow: 1, |
|
display: 'none', |
|
[theme.breakpoints.up('sm')]: { |
|
display: 'block', |
|
}, |
|
}, |
|
search: { |
|
position: 'relative', |
|
borderRadius: theme.shape.borderRadius, |
|
backgroundColor: fade(theme.palette.common.white, 0.15), |
|
'&:hover': { |
|
backgroundColor: fade(theme.palette.common.white, 0.25), |
|
}, |
|
marginLeft: 0, |
|
width: '100%', |
|
[theme.breakpoints.up('sm')]: { |
|
marginLeft: theme.spacing(1), |
|
width: 'auto', |
|
}, |
|
}, |
|
searchIcon: { |
|
padding: theme.spacing(0, 2), |
|
height: '100%', |
|
position: 'absolute', |
|
pointerEvents: 'none', |
|
display: 'flex', |
|
alignItems: 'center', |
|
justifyContent: 'center', |
|
}, |
|
inputRoot: { |
|
color: 'inherit', |
|
}, |
|
inputInput: { |
|
padding: theme.spacing(1, 1, 1, 0), |
|
// vertical padding + font size from searchIcon |
|
paddingLeft: `calc(1em + ${theme.spacing(4)}px)`, |
|
transition: theme.transitions.create('width'), |
|
width: '100%', |
|
[theme.breakpoints.up('sm')]: { |
|
width: '12ch', |
|
'&:focus': { |
|
width: '20ch', |
|
}, |
|
}, |
|
}, |
|
}), |
|
); |
|
|
|
export enum ActiveTab { |
|
Query = 0, |
|
} |
|
|
|
export interface IProps { |
|
activeTab: ActiveTab, |
|
onActiveTabChange: (tab:ActiveTab) => void |
|
} |
|
|
|
export default function AppBar(props: IProps) { |
|
const classes = useStyles(); |
|
|
|
return ( |
|
<div className={classes.root}> |
|
<MuiAppBar position="static"> |
|
<Toolbar> |
|
<IconButton |
|
edge="start" |
|
className={classes.menuButton} |
|
color="inherit" |
|
aria-label="open drawer" |
|
> |
|
<MenuIcon /> |
|
</IconButton> |
|
<Typography className={classes.title} variant="h6" noWrap>MuDBase</Typography> |
|
<div className={classes.search}> |
|
<div className={classes.searchIcon}> |
|
<SearchIcon /> |
|
</div> |
|
<InputBase |
|
placeholder="Search…" |
|
classes={{ |
|
root: classes.inputRoot, |
|
input: classes.inputInput, |
|
}} |
|
inputProps={{ 'aria-label': 'search' }} |
|
/> |
|
</div> |
|
</Toolbar> |
|
<Tabs value={props.activeTab} onChange={(evt:any, idx:any) => { props.onActiveTabChange(idx); }}> |
|
<Tab label="Query"/> |
|
</Tabs> |
|
</MuiAppBar> |
|
</div> |
|
); |
|
}
|
|
|