Sidebar.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. import React from 'react';
  2. import { Link, withRouter } from "react-router-dom";
  3. import { connect } from "react-redux";
  4. import { showSidebar } from "../../actions/show-sidebar";
  5. import { getLogoutUserSubmit } from "../../actions/logout";
  6. import './sidebar.scss';
  7. const siteMenu = [
  8. {
  9. text: 'Home',
  10. href: '/',
  11. id: 0
  12. },
  13. {
  14. text: 'Events',
  15. href: '/events',
  16. id: 1
  17. },
  18. {
  19. text: 'Results',
  20. href: '/results',
  21. id: 2
  22. },
  23. {
  24. text: 'Gallery',
  25. href: '/gallery',
  26. id: 3
  27. },
  28. {
  29. text: 'Reviews',
  30. href: '/reviews',
  31. id: 4
  32. }
  33. ];
  34. export class Sidebar extends React.Component {
  35. logoutHandler = () => {
  36. localStorage.removeItem('user');
  37. this.props.history.push('/');
  38. this.props.getLogoutUserSubmit()
  39. }
  40. render() {
  41. const { showSidebar, showSidebarFlag } = this.props;
  42. const role = localStorage.user && JSON.parse(localStorage.user).user.role;
  43. return (
  44. <div className={ !showSidebarFlag ? 'menu close' : 'menu' }>
  45. <nav>
  46. <div className="logo">
  47. <Link to="/">
  48. Just_<span>tri</span>_it
  49. </Link>
  50. </div>
  51. <ul>
  52. {
  53. role && <li><Link to="/profile">Profile</Link></li>
  54. }
  55. {
  56. siteMenu.map(link =>
  57. <li key={link.id}>
  58. <Link to={link.href}>{link.text}</Link>
  59. </li>
  60. )
  61. }
  62. {
  63. !role && <li><Link to="/login">Login</Link></li>
  64. }
  65. {
  66. role && <li>
  67. <button className="logout" onClick={this.logoutHandler}>
  68. <i className="fa fa-sign-out"></i>
  69. </button>
  70. </li>
  71. }
  72. </ul>
  73. </nav>
  74. <div className="menu-skew">
  75. <div className="img-bg"></div>
  76. </div>
  77. <button className={ showSidebarFlag ? 'burgerIcon open' : 'burgerIcon' } type="button" onClick={showSidebar}><span></span></button>
  78. </div>
  79. )
  80. }
  81. }
  82. const mapStateToProps = state => {
  83. return {
  84. showProfile: state.login.showProfile,
  85. showSidebarFlag: state.sidebar.showSidebar
  86. };
  87. };
  88. export default connect(
  89. mapStateToProps,
  90. { showSidebar, getLogoutUserSubmit }
  91. )(withRouter(Sidebar));