Добавление диалогового окна по клику на + (#59)

This commit is contained in:
Вигдорова Алина
2021-01-09 20:41:26 +03:00
committed by GitHub
parent 15b77ef4bd
commit 59c9bd47c0
4 changed files with 50 additions and 1 deletions

View File

@ -10,6 +10,7 @@ import {NavLink} from 'react-router-dom';
import {ROUTES} from '_consts/common'; import {ROUTES} from '_consts/common';
import ToggleMenu from '../toggle-menu'; import ToggleMenu from '../toggle-menu';
import {BOTH_MENU_LINKS} from '../../consts'; import {BOTH_MENU_LINKS} from '../../consts';
import PopupList from '../popup-list/PopupList';
const useStyles = makeStyles((theme: Theme) => const useStyles = makeStyles((theme: Theme) =>
createStyles({ createStyles({
@ -31,6 +32,9 @@ const useStyles = makeStyles((theme: Theme) =>
right: 0, right: 0,
margin: '0 auto', margin: '0 auto',
}, },
addButton: {
paddingTop: '5px'
},
}), }),
); );
@ -70,7 +74,9 @@ const BothMenu: React.FC<Props> = ({trigger}) => {
color="secondary" color="secondary"
className={classes.fabButton} className={classes.fabButton}
> >
<AddIcon /> <PopupList>
<AddIcon className={classes.addButton} />
</PopupList>
</Fab> </Fab>
<div className={classes.grow} /> <div className={classes.grow} />
<IconButton <IconButton

View File

@ -0,0 +1,38 @@
import {Dialog, List, ListItem, ListItemText} from '@material-ui/core';
import React, {Fragment, memo, PropsWithChildren, useCallback} from 'react';
import {v4} from 'uuid';
import {MENU_ADDS} from '../../consts';
type Props = PropsWithChildren<{
}>;
const PopupList: React.FC<Props> = ({children}) => {
const [open, setOpen] = React.useState(false);
const handleClickOpen = useCallback(() => {
setOpen(true);
}, [setOpen]);
const handleClose = useCallback(() => {
setOpen(false);
}, [setOpen]);
return (
<Fragment>
<Dialog onClose={handleClose} aria-labelledby="simple-dialog-title" open={open}>
<List>
{MENU_ADDS.map(item => (
<ListItem button onClick={handleClose} key={v4()}>
<ListItemText primary={item} />
</ListItem>
))}
</List>
</Dialog>
<div onClick={handleClickOpen}>
{children}
</div>
</Fragment>
);
};
export default memo(PopupList);

View File

View File

@ -2,6 +2,9 @@ import {ROUTES} from '_consts/common';
export const LABELS = { export const LABELS = {
SEACRH: 'Поиск', SEACRH: 'Поиск',
ADD_TASK: 'Добавить задачу',
ADD_FOLDER: 'Добавить папку',
ADD_TAG: 'Добавить тег',
} as const; } as const;
export const BOTH_MENU_LINKS = [ export const BOTH_MENU_LINKS = [
@ -18,3 +21,5 @@ export const BOTH_MENU_LINKS = [
url: ROUTES.INFORMATION url: ROUTES.INFORMATION
} }
]; ];
export const MENU_ADDS = [LABELS.ADD_TASK, LABELS.ADD_FOLDER, LABELS.ADD_TAG];