index.js 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  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. <button style={{ position: "absolute", top: '85px', left: 0 }} onClick={this.handleToggle}>HEADER TOGGLE</button>
  32. <div className="header__flex-wrapper">
  33. <nav className={`header__nav ${toggleStatus}`}>
  34. <ul className="header__nav nav__list" >
  35. <li>
  36. <Link className="header__nav nav__list-item" to={routes.HOME}>
  37. Home
  38. </Link>
  39. </li>
  40. <li>
  41. <Link className="header__nav nav__list-item" to={routes.PROFILE}>
  42. Profile
  43. </Link>
  44. </li>
  45. <li>
  46. <Link className="header__nav nav__list-item" to={routes.TESTS}>
  47. Test
  48. </Link>
  49. </li>
  50. <li>
  51. <Link className="header__nav nav__list-item" to={routes.CATEGORIES}>
  52. Categories
  53. </Link>
  54. </li>
  55. {
  56. data && data.is_admin && (
  57. <React.Fragment>
  58. <li>
  59. <Link className="header__nav nav__list-item--admin-only" to={routes.CREATE_TEST}>
  60. Create test
  61. </Link>
  62. </li>
  63. <li>
  64. <Link className="header__nav nav__list-item--admin-only" to={routes.CREATE_CATEGORY}>
  65. Create category
  66. </Link>
  67. </li>
  68. <li>
  69. <Link className="header__nav nav__list-item--admin-only" to={routes.DELETE_USER}>
  70. Delete data
  71. </Link>
  72. </li>
  73. </React.Fragment>
  74. )
  75. }
  76. </ul>
  77. </nav>
  78. <div className="header__links">
  79. {
  80. !data
  81. ? (
  82. <React.Fragment>
  83. <Link className="header__links--sign-in link--btn link--btn25" to={routes.SIGN_IN}>Sign in</Link>
  84. <Link className="header__links--sign-up link--btn link--btn25" to={routes.SIGN_UP}>Sign up</Link>
  85. </React.Fragment>
  86. )
  87. : (
  88. <button
  89. className="header__links--sign-in link--btn link--btn25"
  90. onClick={this.handleSignOut}
  91. >
  92. Sign out
  93. </button>
  94. )
  95. }
  96. </div>
  97. </div>
  98. </header>
  99. )
  100. }
  101. }