I have an appbar containing two menus. On clicking any of the menu items of either menus, the menu list is shifted to the left of the page when the new page renders.
My appbar code is as following :
const styles = theme => ({
logo: {
maxHeight: '80px',
maxWidth: '100px'
},
logoContainer: {
flexGrow: 1
},
contentBase: {
zIndex: 1,
overflow: 'hidden',
position: 'relative',
marginTop: theme.spacing.unit * 2,
marginLeft: 'auto',
marginRight: 'auto',
width: `100%`
},
contentRoot: {
zIndex: 1,
overflow: 'hidden',
position: 'relative',
display: 'flex',
width: '100%',
marginLeft: 'auto',
marginRight: 'auto',
},
content: {
flexGrow: 1,
padding: theme.spacing.unit * 2,
marginTop: '40px'
}
})
const mapStateToProps = (state, ownProps) => {
return {
user: state.users['xyz@gmail.com'],
auth: state.users.auth,
profileMenuAnchorEl: state.ui.profileMenuAnchorEl,
daoMenuAnchorEl: state.ui.daoMenuAnchorEl
}
}
const mapDispatchToProps = (dispatch, ownProps) => {
return {
getUser: email => {
return dispatch(getUser(email))
},
handleNewProposalClick: () => {
dispatch(resetNewProposal())
ownProps.history.push('/proposals/new')
},
handleProfileMenu: (event) => {
dispatch(handleProfileMenu(event.currentTarget))
},
handleCloseProfileMenu: () => {
dispatch(handleProfileMenu(null))
},
handleDaoMenu: (event) => {
dispatch(handleDaoMenu(event.currentTarget))
},
handleCloseDaoMenu: () => {
dispatch(handleDaoMenu(null))
}
}
}
const LayoutHOC = Page => class Layout extends React.Component {
componentDidMount() {
// TODO : Remove hard coding
this.props.getUser('xyz@gmail.com')
}
render () {
return (
<div>
<AppBar position="static">
<Toolbar>
<div className={this.props.classes.logoContainer}>
<img src={logoImage} className={this.props.classes.logo} alt='Test' />
</div>
<Typography>
SEM Balance: <b>{this.props.user ? this.props.user.sem: ''}</b>
</Typography>
<Typography>
REP Balance: <b>{this.props.user ? this.props.user.rep: ''}</b>
</Typography>
<Button
aria-owns={Boolean(this.props.daoMenuAnchorEl) ? 'render-props-menu' : null}
aria-haspopup="true"
onClick={this.props.handleDaoMenu}
color="inherit"
>
<ListIcon />
DAOS
</Button>
<Menu
id="render-props-menu"
anchorEl={this.props.daoMenuAnchorEl}
anchorOrigin={{
vertical: 'top',
horizontal: 'right',
}}
transformOrigin={{
vertical: 'top',
horizontal: 'right',
}}
open={Boolean(this.props.daoMenuAnchorEl)}
onClose={this.props.handleCloseDaoMenu}>
<MenuItem onClick={() => this.props.history.push('/daos')}>Daos</MenuItem>
<MenuItem onClick={() => this.props.history.push('/proposals')}>Proposals</MenuItem>
</Menu>
<Button color='inherit'
onClick={() => {
this.props.handleNewProposalClick()
}}
>
<AddIcon />
New Proposal
</Button>
{ this.props.auth && (
<div>
<IconButton
aria-owns={ Boolean(this.props.profileMenuAnchorEl) ? 'menu-appbar' : null}
aria-haspopup="true"
onClick={this.props.handleProfileMenu}
color="inherit"
>
<AccountCircle />
</IconButton>
<Menu
id="menu-appbar"
anchorEl={this.props.profileMenuAnchorEl}
anchorOrigin={{
vertical: 'top',
horizontal: 'right',
}}
transformOrigin={{
vertical: 'top',
horizontal: 'right',
}}
open={ Boolean(this.props.profileMenuAnchorEl) }
onClose={this.props.handleCloseProfileMenu}
>
<MenuItem onClick={() => this.props.history.push(`/users/${this.props.user.email}`)} >Profile</MenuItem>
<MenuItem onClick={this.props.handleCloseProfileMenu} >My account</MenuItem>
</Menu>
</div>
)}
</Toolbar>
</AppBar>
<div className={this.props.classes.contentBase}>
<div className={this.props.classes.contentRoot}>
<div className={this.props.classes.content}>
<Page {...this.props} />
</div>
</div>
</div>
</div>
)
}
}
export default Page => withStyles(styles)(AppWrapper(
connect(mapStateToProps, mapDispatchToProps)(LayoutHOC(Page))
))
When I was using only one menu in the appbar, I did not face this issue. I am using Menu, MenuItem, Button etc from MaterialUI. When the new page is rendered, why is my menu moving to the left? What am I missing?