|
@@ -1,4 +1,5 @@
|
|
|
import React, { Component } from 'react'
|
|
|
+import { connect } from 'react-redux'
|
|
|
import AppBar from 'material-ui/AppBar'
|
|
|
import Toolbar from 'material-ui/Toolbar'
|
|
|
import Typography from 'material-ui/Typography'
|
|
@@ -6,6 +7,7 @@ import Avatar from 'material-ui/Avatar'
|
|
|
import Button from 'material-ui/Button'
|
|
|
import Menu, { MenuItem } from 'material-ui/Menu'
|
|
|
import UserIcon from '../icons/UserIcon'
|
|
|
+import { LOGOUT } from '../../constants/ActionTypes'
|
|
|
import { withStyles } from 'material-ui/styles'
|
|
|
|
|
|
const styles = theme => ({
|
|
@@ -29,16 +31,36 @@ class Topbar extends Component {
|
|
|
super(props)
|
|
|
|
|
|
this.state = {
|
|
|
- menuOpened: false
|
|
|
+ anchorEl: null
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ *
|
|
|
+ */
|
|
|
+ handleOpenMenu = e => {
|
|
|
+ this.setState({
|
|
|
+ anchorEl: e.target
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ *
|
|
|
+ */
|
|
|
+ handleSesionClose = e => {
|
|
|
+ this.setState({
|
|
|
+ anchorEl: null
|
|
|
+ })
|
|
|
+ this.props.logout()
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
*
|
|
|
*/
|
|
|
render() {
|
|
|
const { classes } = this.props
|
|
|
- const { menuOpened } = this.state
|
|
|
+ const { anchorEl } = this.state
|
|
|
+ const openMenu = Boolean(anchorEl)
|
|
|
|
|
|
return (
|
|
|
<AppBar position="absolute" className={classes.root}>
|
|
@@ -50,10 +72,19 @@ class Topbar extends Component {
|
|
|
<Avatar className={classes.avatar}>
|
|
|
<UserIcon />
|
|
|
</Avatar>
|
|
|
- <Button color="inherit">Anónimo</Button>
|
|
|
- <Menu open={menuOpened}>
|
|
|
- <MenuItem>Mi Perfil</MenuItem>
|
|
|
- <MenuItem>Salir</MenuItem>
|
|
|
+ <Button color="inherit" onClick={this.handleOpenMenu}>Anónimo</Button>
|
|
|
+ <Menu
|
|
|
+ open={openMenu}
|
|
|
+ anchorEl={anchorEl}
|
|
|
+ anchorOrigin={{
|
|
|
+ vertical: 'top',
|
|
|
+ horizontal: 'right',
|
|
|
+ }}
|
|
|
+ transformOrigin={{
|
|
|
+ vertical: 'top',
|
|
|
+ horizontal: 'right',
|
|
|
+ }}>
|
|
|
+ <MenuItem onClick={this.handleSesionClose}>Cerrar sesión</MenuItem>
|
|
|
</Menu>
|
|
|
</div>
|
|
|
</Toolbar>
|
|
@@ -62,4 +93,19 @@ class Topbar extends Component {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-export default withStyles(styles)(Topbar)
|
|
|
+/**
|
|
|
+ *
|
|
|
+ * @param {*} dispatch
|
|
|
+ * @param {*} props
|
|
|
+ */
|
|
|
+const mapDispatchToProps = (dispatch, props) => ({
|
|
|
+ logout() {
|
|
|
+ dispatch({
|
|
|
+ type: LOGOUT
|
|
|
+ })
|
|
|
+ }
|
|
|
+})
|
|
|
+
|
|
|
+Topbar = withStyles(styles)(Topbar)
|
|
|
+
|
|
|
+export default connect(null, mapDispatchToProps)(Topbar)
|