Добавление страницы information (#41)
This commit is contained in:
@ -1,11 +1,16 @@
|
||||
import {AppBar, createStyles, Fab, IconButton, makeStyles, Theme, Toolbar} from '@material-ui/core';
|
||||
import React, {memo} from 'react';
|
||||
import Slide from '@material-ui/core/Slide';
|
||||
import MoreIcon from '@material-ui/icons/MoreVert';
|
||||
import AddIcon from '@material-ui/icons/Add';
|
||||
import MoveToInboxIcon from '@material-ui/icons/MoveToInbox';
|
||||
import CalendarTodayIcon from '@material-ui/icons/CalendarToday';
|
||||
import ListAltIcon from '@material-ui/icons/ListAlt';
|
||||
|
||||
type Props = {
|
||||
trigger: boolean;
|
||||
}
|
||||
|
||||
const useStyles = makeStyles((theme: Theme) =>
|
||||
createStyles({
|
||||
iconRight: {
|
||||
@ -29,51 +34,52 @@ const useStyles = makeStyles((theme: Theme) =>
|
||||
}),
|
||||
);
|
||||
|
||||
const BothMenu: React.FC = () => {
|
||||
const BothMenu: React.FC<Props> = ({trigger}) => {
|
||||
const classes = useStyles();
|
||||
|
||||
return (
|
||||
<AppBar
|
||||
position="fixed"
|
||||
color="primary"
|
||||
className={classes.appBar}
|
||||
>
|
||||
<Toolbar>
|
||||
<IconButton
|
||||
className={classes.iconRight}
|
||||
edge="start"
|
||||
color="inherit"
|
||||
>
|
||||
<MoveToInboxIcon />
|
||||
</IconButton>
|
||||
<IconButton
|
||||
edge="end"
|
||||
color="inherit"
|
||||
>
|
||||
<ListAltIcon />
|
||||
</IconButton>
|
||||
<Fab
|
||||
color="secondary"
|
||||
className={classes.fabButton}
|
||||
>
|
||||
<AddIcon />
|
||||
</Fab>
|
||||
<div className={classes.grow} />
|
||||
<IconButton
|
||||
className={classes.iconRight}
|
||||
edge="start"
|
||||
color="inherit"
|
||||
>
|
||||
<CalendarTodayIcon />
|
||||
</IconButton>
|
||||
<IconButton
|
||||
edge="end"
|
||||
color="inherit"
|
||||
>
|
||||
<MoreIcon />
|
||||
</IconButton>
|
||||
</Toolbar>
|
||||
</AppBar>
|
||||
<Slide appear={false} direction="up" in={!trigger}>
|
||||
<AppBar
|
||||
color="primary"
|
||||
className={classes.appBar}
|
||||
>
|
||||
<Toolbar>
|
||||
<IconButton
|
||||
className={classes.iconRight}
|
||||
edge="start"
|
||||
color="inherit"
|
||||
>
|
||||
<MoveToInboxIcon />
|
||||
</IconButton>
|
||||
<IconButton
|
||||
edge="end"
|
||||
color="inherit"
|
||||
>
|
||||
<ListAltIcon />
|
||||
</IconButton>
|
||||
<Fab
|
||||
color="secondary"
|
||||
className={classes.fabButton}
|
||||
>
|
||||
<AddIcon />
|
||||
</Fab>
|
||||
<div className={classes.grow} />
|
||||
<IconButton
|
||||
className={classes.iconRight}
|
||||
edge="start"
|
||||
color="inherit"
|
||||
>
|
||||
<CalendarTodayIcon />
|
||||
</IconButton>
|
||||
<IconButton
|
||||
edge="end"
|
||||
color="inherit"
|
||||
>
|
||||
<MoreIcon />
|
||||
</IconButton>
|
||||
</Toolbar>
|
||||
</AppBar>
|
||||
</Slide>
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
import React, {Fragment, memo} from 'react';
|
||||
import {Route, Switch} from 'react-router-dom';
|
||||
import {Container, createStyles, makeStyles, useScrollTrigger} from '@material-ui/core';
|
||||
|
||||
import mainPageRouter from '_pages/main/routing';
|
||||
import chaosBoxPageRouter from '_pages/chaos-box/routing';
|
||||
import calendarPageRouter from '_pages/calendar/routing';
|
||||
@ -13,26 +15,40 @@ import TopMenu from '../top-menu';
|
||||
import './Page.scss';
|
||||
import BothMenu from '../both-menu';
|
||||
|
||||
const useStyles = makeStyles(() =>
|
||||
createStyles({
|
||||
container: {
|
||||
height: '100hv',
|
||||
display: 'flex',
|
||||
flexDirection: 'column',
|
||||
},
|
||||
}),
|
||||
);
|
||||
|
||||
const Page: React.FC = () => {
|
||||
const classes = useStyles();
|
||||
const trigger = useScrollTrigger();
|
||||
return (
|
||||
<Fragment>
|
||||
<TopMenu />
|
||||
<div>
|
||||
<Switch>
|
||||
{mainPageRouter}
|
||||
{chaosBoxPageRouter}
|
||||
{calendarPageRouter}
|
||||
{informationPageRouter}
|
||||
{projectsPageRouter}
|
||||
{settingsPageRouter}
|
||||
{signInPageRouter}
|
||||
{tagsPageRouter}
|
||||
<Route>
|
||||
<NotFoundPage />
|
||||
</Route>
|
||||
</Switch>
|
||||
<div className={classes.container}>
|
||||
<TopMenu trigger={trigger} />
|
||||
<Container>
|
||||
<Switch>
|
||||
{mainPageRouter}
|
||||
{chaosBoxPageRouter}
|
||||
{calendarPageRouter}
|
||||
{informationPageRouter}
|
||||
{projectsPageRouter}
|
||||
{settingsPageRouter}
|
||||
{signInPageRouter}
|
||||
{tagsPageRouter}
|
||||
<Route>
|
||||
<NotFoundPage />
|
||||
</Route>
|
||||
</Switch>
|
||||
</Container>
|
||||
<BothMenu trigger={trigger} />
|
||||
</div>
|
||||
<BothMenu />
|
||||
</Fragment>
|
||||
);
|
||||
};
|
||||
|
||||
@ -3,6 +3,7 @@ import {useHistory} from 'react-router-dom';
|
||||
import {createStyles, makeStyles} from '@material-ui/core/styles';
|
||||
import AppBar from '@material-ui/core/AppBar';
|
||||
import Toolbar from '@material-ui/core/Toolbar';
|
||||
import Slide from '@material-ui/core/Slide';
|
||||
import Typography from '@material-ui/core/Typography';
|
||||
import IconButton from '@material-ui/core/IconButton';
|
||||
import ArrowBackIosIcon from '@material-ui/icons/ArrowBackIos';
|
||||
@ -13,13 +14,14 @@ import {PAGE_TITLE} from '_consts/common';
|
||||
import {usePageType} from '_hooks/usePageType';
|
||||
import {buildPath} from '_utils/buildPath';
|
||||
|
||||
type Props = {
|
||||
trigger: boolean;
|
||||
}
|
||||
|
||||
const NO_NAME_AVATAR = 'https://d.newsweek.com/en/full/425257/02-10-putin-economy.jpg';
|
||||
|
||||
const useStyles = makeStyles(() =>
|
||||
createStyles({
|
||||
root: {
|
||||
flexGrow: 1,
|
||||
},
|
||||
title: {
|
||||
flexGrow: 1,
|
||||
display: 'flex',
|
||||
@ -28,7 +30,7 @@ const useStyles = makeStyles(() =>
|
||||
}),
|
||||
);
|
||||
|
||||
const TopMenu: React.FC = () => {
|
||||
const TopMenu: React.FC<Props> = ({trigger}) => {
|
||||
const classes = useStyles();
|
||||
const pageType = usePageType();
|
||||
const history = useHistory();
|
||||
@ -39,8 +41,8 @@ const TopMenu: React.FC = () => {
|
||||
|
||||
const title = PAGE_TITLE[pageType];
|
||||
return (
|
||||
<div className={classes.root}>
|
||||
<AppBar position="static">
|
||||
<Slide appear={false} direction="down" in={!trigger}>
|
||||
<AppBar position="sticky">
|
||||
<Toolbar>
|
||||
{pageType === PageType.Main && (
|
||||
<IconButton
|
||||
@ -70,7 +72,7 @@ const TopMenu: React.FC = () => {
|
||||
<Avatar src={NO_NAME_AVATAR} />
|
||||
</Toolbar>
|
||||
</AppBar>
|
||||
</div>
|
||||
</Slide>
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
@ -4,10 +4,14 @@ import {HashRouter} from 'react-router-dom';
|
||||
import App from './components/page';
|
||||
|
||||
ReactDOM.render(
|
||||
<React.StrictMode>
|
||||
<HashRouter >
|
||||
<App />
|
||||
</HashRouter>
|
||||
</React.StrictMode>,
|
||||
/*
|
||||
* Выключаем стрикт мод, пока не починят
|
||||
* https://github.com/mui-org/material-ui/issues/13394
|
||||
*/
|
||||
// <React.StrictMode>
|
||||
<HashRouter >
|
||||
<App />
|
||||
</HashRouter>,
|
||||
// </React.StrictMode>
|
||||
document.getElementById('root')
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user