index.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. import React, { Component } from 'react';
  2. import { Link } from "react-router-dom";
  3. import * as routes from './../../../constants/routes';
  4. import { UserContext } from './../../../containers/header';
  5. import token from './../../../utils/token';
  6. export default class header extends Component {
  7. state = {
  8. togglerClosed: true,
  9. }
  10. handleToggle = event => {
  11. this.setState((prevState) => ({ togglerClosed: !prevState.togglerClosed }))
  12. }
  13. handleSignOut = () => {
  14. console.log("signOut", this.props);
  15. this.props.signOut();
  16. localStorage.removeItem(token);
  17. }
  18. render() {
  19. const { togglerClosed } = this.state;
  20. const { user: { data } } = this.props;
  21. const toggleStatus = togglerClosed ? "toggle-status--closed" : "toggle-status--opened";
  22. return (
  23. <header className="header">
  24. <Link to={routes.LANDING}>
  25. <h1 className="header__logo">Test.<span className="header__logo--i-letter">i</span>o</h1>
  26. </Link>
  27. <hr className="header__logo--divider" />
  28. <span className="header__toggle-trigger" onClick={this.handleToggle} >
  29. <span />
  30. </span>
  31. <div className="header__flex-wrapper">
  32. <nav className={`header__nav ${toggleStatus}`}>
  33. <ul className="header__nav nav__list" >
  34. <li>
  35. <Link className="header__nav nav__list-item" to={routes.HOME}>
  36. Home
  37. </Link>
  38. </li>
  39. <li>
  40. <Link className="header__nav nav__list-item" to={routes.PROFILE}>
  41. Profile
  42. </Link>
  43. </li>
  44. <li>
  45. <Link className="header__nav nav__list-item" to={routes.TESTS}>
  46. Test
  47. </Link>
  48. </li>
  49. <li>
  50. <Link className="header__nav nav__list-item" to={routes.CATEGORIES}>
  51. Categories
  52. </Link>
  53. </li>
  54. {
  55. data && data['is_admin'] && (
  56. <React.Fragment>
  57. <li>
  58. <Link className="header__nav nav__list-item--admin-only" to={routes.CREATE_TEST}>
  59. Create test
  60. </Link>
  61. </li>
  62. <li>
  63. <Link className="header__nav nav__list-item--admin-only" to={routes.CREATE_CATEGORY}>
  64. Create category
  65. </Link>
  66. </li>
  67. <li>
  68. <Link className="header__nav nav__list-item--admin-only" to={routes.DELETE_USER}>
  69. Delete data
  70. </Link>
  71. </li>
  72. </React.Fragment>
  73. )
  74. }
  75. </ul>
  76. </nav>
  77. <div className="header__links">
  78. {
  79. !data
  80. ? (
  81. <React.Fragment>
  82. <Link className="header__links--sign-in link--btn link--btn25" to={routes.SIGN_IN}>Sign in</Link>
  83. <Link className="header__links--sign-up link--btn link--btn25" to={routes.SIGN_UP}>Sign up</Link>
  84. </React.Fragment>
  85. )
  86. : (
  87. <button
  88. className="header__links--sign-in link--btn link--btn25"
  89. onClick={this.handleSignOut}
  90. >
  91. Sign out
  92. </button>
  93. )
  94. }
  95. </div>
  96. </div>
  97. </header>
  98. )
  99. }
  100. }