index.js 5.5 KB

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