all repos — caroster @ c80cbefe100adb668a178d435e42662d93467833

[Octree] Group carpool to your event https://caroster.io

: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
commit

c80cbefe100adb668a178d435e42662d93467833

parent

b2a5134b5c341777cf857dc3e253ef93bbbc3215

M app/src/containers/EventBar/index.jsapp/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.jsapp/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.jsapp/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.jsapp/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.jsapp/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 />;