:recycle: refactor code for divider management, to have margins around the divider
Hadrien Froger hadrien@octree.ch
Tue, 08 Sep 2020 07:53:33 +0100
5 files changed,
66 insertions(+),
54 deletions(-)
M
app/src/containers/EventBar/index.js
→
app/src/containers/EventBar/index.js
@@ -41,6 +41,7 @@ onAdd(true);
}, id: 'AddToMyEventsTab', }, + {divider: true}, { label: t('menu.login'), onClick: signIn,@@ -64,6 +65,7 @@ label: t('menu.profile'),
onClick: goProfile, id: 'ProfileTab', }, + {divider: true}, ]; const menuActions = token ? loggedMenuActions : noUserMenuActions;@@ -128,15 +130,13 @@ <EventMenu
anchorEl={anchorEl} setAnchorEl={setAnchorEl} actions={[ - ...[ - { - label: detailsOpen - ? t('event.actions.hide_details') - : t('event.actions.show_details'), - onClick: toggleDetails, - id: 'DetailsTab', - }, - ], + { + label: detailsOpen + ? t('event.actions.hide_details') + : t('event.actions.show_details'), + onClick: toggleDetails, + id: 'DetailsTab', + }, ...menuActions, ]} />@@ -170,6 +170,9 @@ alignItems: 'center',
}, shareIcon: { marginRight: theme.spacing(0), + }, + withDivider: { + borderBottom: `1px solid ${theme.palette.divider}`, }, }));
M
app/src/containers/EventMenu/index.js
→
app/src/containers/EventMenu/index.js
@@ -1,5 +1,6 @@
import React from 'react'; import Menu from '@material-ui/core/Menu'; +import Divider from '@material-ui/core/Divider'; import MenuItem from '@material-ui/core/MenuItem'; import {makeStyles} from '@material-ui/core/styles'; import {useTranslation} from 'react-i18next';@@ -8,9 +9,8 @@
const EventMenu = ({anchorEl, setAnchorEl, actions = []}) => { const {t} = useTranslation(); const strapi = useStrapi(); - const classes = useStyles(); const {logout, authState} = useAuth(); - + const classes = useStyles(); const [settings] = strapi.stores?.settings || [{}]; const logoutMenuItem = authState?.user ? {label: t('menu.logout'), onClick: logout, id: 'LogoutTabs'}@@ -19,7 +19,6 @@ const aboutMenuItem = {
label: t('menu.about'), onClick: () => (window.location.href = settings['about_link']), id: 'AboutTabs', - className: classes.withDivider, }; return (@@ -40,26 +39,29 @@ >
{actions && [...actions, aboutMenuItem, logoutMenuItem] .filter(Boolean) - .map(({label, id, onClick, ...attributes}, idx) => ( - <MenuItem - onClick={() => { - onClick(); - setAnchorEl(null); - }} - key={idx} - id={id || `MenuItem${idx}`} - {...attributes} - > - {label} - </MenuItem> - ))} + .map(({label, id, onClick, divider = false, ...attributes}, idx) => + divider ? ( + <Divider variant="fullWidth" className={classes.divider} /> + ) : ( + <MenuItem + onClick={() => { + onClick(); + setAnchorEl(null); + }} + key={idx} + id={id || `MenuItem${idx}`} + {...attributes} + > + {label} + </MenuItem> + ) + )} </Menu> ); }; - const useStyles = makeStyles(theme => ({ - withDivider: { - borderTop: `1px solid ${theme.palette.divider}`, + divider: { + margin: theme.spacing(1, 0), }, })); export default EventMenu;
M
app/src/containers/GenericMenu/Toolbar.js
→
app/src/containers/GenericMenu/Toolbar.js
@@ -1,8 +1,11 @@
import React from 'react'; +import Divider from '@material-ui/core/Divider'; +import {makeStyles} from '@material-ui/core/styles'; import Menu from '@material-ui/core/Menu'; import MenuItem from '@material-ui/core/MenuItem'; const Toolbar = ({anchorEl, setAnchorEl, actions = []}) => { + const classes = useStyles(); if (actions.length === 0) return null; return ( <Menu@@ -20,21 +23,31 @@ open={!!anchorEl}
onClose={() => setAnchorEl(null)} > {actions && - actions.map(({onClick, id, label, ...menuItemProps}, idx) => ( - <MenuItem - onClick={() => { - if (!onClick) return; - onClick(); - setAnchorEl(null); - }} - key={idx} - id={id || `MenuItem${idx}`} - {...menuItemProps} - > - {label} - </MenuItem> - ))} + actions.map( + ({onClick, id, label, divider = false, ...menuItemProps}, idx) => + divider ? ( + <Divider variant="fullWidth" className={classes.divider} /> + ) : ( + <MenuItem + onClick={() => { + if (!!onClick) onClick(); + setAnchorEl(null); + }} + key={idx} + id={id || `MenuItem${idx}`} + {...menuItemProps} + > + {label} + </MenuItem> + ) + )} </Menu> ); }; + +const useStyles = makeStyles(theme => ({ + divider: { + margin: theme.spacing(1, 0), + }, +})); export default Toolbar;
M
app/src/containers/GenericMenu/index.js
→
app/src/containers/GenericMenu/index.js
@@ -25,7 +25,6 @@ const aboutMenuItem = {
label: t('menu.about'), onClick: () => (window.location.href = settings['about_link']), id: 'AboutTabs', - className: classes.withDivider, }; useEffect(() => { window.scrollTo(0, 0);@@ -58,9 +57,12 @@
<GenericToolbar anchorEl={anchorEl} setAnchorEl={setAnchorEl} - actions={[...validActions, aboutMenuItem, logoutMenuItem].filter( - Boolean - )} + actions={[ + ...validActions, + {divider: true}, + aboutMenuItem, + logoutMenuItem, + ].filter(Boolean)} /> </> )}@@ -88,9 +90,6 @@ alignItems: 'center',
}, shareIcon: { marginRight: theme.spacing(0), - }, - withDivider: { - borderTop: `1px solid ${theme.palette.divider}`, }, }));
M
app/src/pages/Profile.js
→
app/src/pages/Profile.js
@@ -24,11 +24,6 @@ label: t('menu.dashboard'),
onClick: () => history.push('/dashboard'), id: 'DashboardTabs', }, - { - label: t('menu.logout'), - onClick: logout, - id: 'LogoutTabs', - }, ]; if (!profile) return <Loading />;