Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 4247 | Rev 4250 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
4243 stevensc 1
/* eslint-disable react/prop-types */
2
import React, { useEffect, useState } from 'react'
3
import SearchIcon from '@mui/icons-material/Search'
4
import HomeIcon from '@mui/icons-material/Home'
5
import SupervisorAccountIcon from '@mui/icons-material/SupervisorAccount'
6
import BusinessCenterIcon from '@mui/icons-material/BusinessCenter'
7
import ChatIcon from '@mui/icons-material/Chat'
8
import NotificationsIcon from '@mui/icons-material/Notifications'
4248 stevensc 9
import CalendarViewDayIcon from '@mui/icons-material/CalendarViewDay'
4243 stevensc 10
import HeaderOptions from './HeaderOptions'
4247 stevensc 11
import './Header.scss'
4243 stevensc 12
 
13
const ICON_OPTIONS = [
14
  HomeIcon,
15
  SupervisorAccountIcon,
16
  BusinessCenterIcon,
17
  ChatIcon,
4248 stevensc 18
  NotificationsIcon,
19
  CalendarViewDayIcon
4243 stevensc 20
]
21
 
4248 stevensc 22
const Header = ({ logoForNavbar, menu: menuItems }) => {
4243 stevensc 23
 
24
  const [navbarOpen, setNavbarOpen] = useState(false);
25
  const [sessionImage, setSessionImage] = useState(null)
26
  const [showMobileSearch, setShowMobileSearch] = useState(false)
27
  const [loading, setLoading] = useState(false);
28
 
29
  useEffect(() => {
30
    let timer;
31
    if (!loading) {
32
      timer = setTimeout(() => checkSessionImage(), 1000);
33
    }
34
    return () => {
35
      clearTimeout(timer);
36
    };
37
  }, [loading])
38
 
39
  const checkSessionImage = async () => {
40
    setLoading(true);
41
    const session_image = sessionStorage.getItem('user_session_image')
42
    if (session_image) {
43
      await setSessionImage(session_image)
44
      sessionStorage.removeItem('user_session_image')
45
    }
46
    setLoading(false);
47
  }
48
 
49
 
50
  const handleDisplayMobileSearch = () => {
51
    if (window.innerWidth < 768) {
52
      setShowMobileSearch(true)
53
    }
54
  }
55
 
56
  return (
57
    <div className='header'>
58
      <div className='container'>
59
        <div className='header__nav'>
60
 
61
          <div className='header__left'>
62
            <img src={logoForNavbar} alt='Logo' />
63
 
64
            <div
65
              className={`header__search ${showMobileSearch && 'show'}`}
66
              onClick={handleDisplayMobileSearch}
67
            >
68
              <SearchIcon />
69
              <input
70
                type='text'
71
                placeholder='Search'
72
              />
73
            </div>
74
          </div>
75
 
4247 stevensc 76
          <nav className={`header__right ${showMobileSearch && 'd-none'}`}>
77
            <ul>
78
              {menuItems.map((item, index) => {
79
                return (
80
                  <HeaderOptions
81
                    key={index}
82
                    Icon={ICON_OPTIONS[index]}
83
                    title={item.label}
84
                    url={item.href}
85
                  />
86
                )
87
              })}
88
            </ul>
89
          </nav>
4243 stevensc 90
 
91
        </div>
92
      </div>
93
    </div>
94
  )
95
}
96
 
97
export default Header