Skip to content

Commit 11a71a8

Browse files
committed
Add profile menu
1 parent 408ccf0 commit 11a71a8

File tree

3 files changed

+50
-14
lines changed

3 files changed

+50
-14
lines changed

src/components/Header/HeaderContainer.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@ import { compose, withState, withHandlers } from 'recompose';
22
import HeaderView from './HeaderView';
33

44
export default compose(
5-
withState('mailMenu', 'setMailMenu', false),
5+
withState('mailMenu', 'setMailMenu', null),
66
withState('isMailsUnread', 'setIsMailsUnread', true),
7-
withState('notificationsMenu', 'setNotificationsMenu', false),
7+
withState('notificationsMenu', 'setNotificationsMenu', null),
88
withState('isNotificationsUnread', 'setIsNotificationsUnread', true),
9+
withState('profileMenu', 'setProfileMenu', null),
910
withState('isSearchOpen', 'setSearchOpen', false),
1011
withHandlers({
1112
openMailMenu: props => event => {
@@ -24,6 +25,12 @@ export default compose(
2425
},
2526
toggleSearch: props => () => {
2627
props.setSearchOpen(!props.isSearchOpen);
27-
}
28+
},
29+
openProfileMenu: props => event => {
30+
props.setProfileMenu(event.currentTarget);
31+
},
32+
closeProfileMenu: props => () => {
33+
props.setProfileMenu(null);
34+
},
2835
})
2936
)(HeaderView);

src/components/Header/HeaderView.js

Lines changed: 39 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,8 @@ const Header = ({ classes, isSidebarOpened, toggleSidebar, ...props }) => (
116116
aria-haspopup="true"
117117
color="inherit"
118118
className={classes.headerMenuButton}
119+
aria-controls="profile-menu"
120+
onClick={props.openProfileMenu}
119121
>
120122
<AccountIcon classes={{ root: classes.headerIcon }} />
121123
</IconButton>
@@ -159,6 +161,7 @@ const Header = ({ classes, isSidebarOpened, toggleSidebar, ...props }) => (
159161
<MenuItem
160162
key={notification.id}
161163
onClick={props.closeNotificationsMenu}
164+
className={classes.headerMenuItem}
162165
>
163166
<Notification {...notification} />
164167
</MenuItem>
@@ -170,18 +173,19 @@ const Header = ({ classes, isSidebarOpened, toggleSidebar, ...props }) => (
170173
anchorEl={props.profileMenu}
171174
onClose={props.closeProfileMenu}
172175
className={classes.headerMenu}
176+
classes={{ paper: classes.profileMenu }}
173177
disableAutoFocusItem
174178
>
175-
{notifications.map(notification => {
176-
console.log(notification);
177-
return (
178-
<MenuItem
179-
key={notification.id}
180-
onClick={props.closeNotificationsMenu}
181-
>
182-
<div>{notification.icon}</div>
183-
</MenuItem>
184-
)})}
179+
<div className={classes.profileMenuUser}>
180+
<Typography variant="h6">John Smith</Typography>
181+
<Typography className={classes.profileMenuLink} component="a" color="primary" href="https://flatlogic.com">Flalogic.com</Typography>
182+
</div>
183+
<MenuItem className={classNames(classes.profileMenuItem, classes.headerMenuItem)}><AccountIcon className={classes.profileMenuIcon}/> Profile</MenuItem>
184+
<MenuItem className={classNames(classes.profileMenuItem, classes.headerMenuItem)}><AccountIcon className={classes.profileMenuIcon}/> Tasks</MenuItem>
185+
<MenuItem className={classNames(classes.profileMenuItem, classes.headerMenuItem)}><AccountIcon className={classes.profileMenuIcon}/> Messages</MenuItem>
186+
<div className={classes.profileMenuUser}>
187+
<Typography className={classes.profileMenuLink} component="a" color="primary">Sign Out</Typography>
188+
</div>
185189
</Menu>
186190
</Toolbar>
187191
</AppBar>
@@ -273,6 +277,12 @@ const styles = theme => ({
273277
display: "flex",
274278
flexDirection: "column"
275279
},
280+
headerMenuItem: {
281+
'&:hover, &:focus': {
282+
backgroundColor: theme.palette.primary.main,
283+
color: 'white',
284+
}
285+
},
276286
headerMenuButton: {
277287
marginLeft: theme.spacing.unit * 2,
278288
padding: theme.spacing.unit / 2
@@ -287,6 +297,25 @@ const styles = theme => ({
287297
headerIconCollapse: {
288298
color: "white",
289299
},
300+
profileMenu: {
301+
minWidth: 265,
302+
},
303+
profileMenuUser: {
304+
display: 'flex',
305+
flexDirection: 'column',
306+
padding: theme.spacing.unit * 2,
307+
},
308+
profileMenuItem: {
309+
color: theme.palette.text.hint,
310+
},
311+
profileMenuIcon: {
312+
marginRight: theme.spacing.unit * 2,
313+
color: theme.palette.text.hint,
314+
},
315+
profileMenuLink: {
316+
fontSize: 16,
317+
textDecoration: 'none',
318+
}
290319
});
291320

292321
export default withStyles(styles)(Header);

src/components/Notification/Notification.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ const Notification = ({ classes, theme, ...props }) => {
3030
return (
3131
<div className={classes.notificationContainer}>
3232
{iconWithStyles}
33-
<Typography>{props.message}</Typography>
33+
<Typography variant="inherit">{props.message}</Typography>
3434
</div>
3535
);
3636
};

0 commit comments

Comments
 (0)