Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 4243 | Rev 4248 | 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'
9
import HeaderOptions from './HeaderOptions'
4247 stevensc 10
import './Header.scss'
4243 stevensc 11
 
12
const ICON_OPTIONS = [
13
  HomeIcon,
14
  SupervisorAccountIcon,
15
  BusinessCenterIcon,
16
  ChatIcon,
17
  NotificationsIcon
18
]
19
 
20
const Header = ({ navbarVars }) => {
21
  const {
22
    image,
23
    fullName,
24
    companyVars,
25
    isChatPage,
26
    linkAdmin,
27
    linkImpersonate,
28
    routeCheckSession,
29
    logoForNavbar,
30
    menu: menuItems
31
  } = navbarVars;
32
 
33
  const [navbarOpen, setNavbarOpen] = useState(false);
34
  const [sessionImage, setSessionImage] = useState(null)
35
  const [showMobileSearch, setShowMobileSearch] = useState(false)
36
  const [loading, setLoading] = useState(false);
37
 
38
  useEffect(() => {
39
    let timer;
40
    if (!loading) {
41
      timer = setTimeout(() => checkSessionImage(), 1000);
42
    }
43
    return () => {
44
      clearTimeout(timer);
45
    };
46
  }, [loading])
47
 
48
  const checkSessionImage = async () => {
49
    setLoading(true);
50
    const session_image = sessionStorage.getItem('user_session_image')
51
    if (session_image) {
52
      await setSessionImage(session_image)
53
      sessionStorage.removeItem('user_session_image')
54
    }
55
    setLoading(false);
56
  }
57
 
58
 
59
  const handleDisplayMobileSearch = () => {
60
    if (window.innerWidth < 768) {
61
      setShowMobileSearch(true)
62
    }
63
  }
64
 
65
  return (
66
    <div className='header'>
67
      <div className='container'>
68
        <div className='header__nav'>
69
 
70
          <div className='header__left'>
71
            <img src={logoForNavbar} alt='Logo' />
72
 
73
            <div
74
              className={`header__search ${showMobileSearch && 'show'}`}
75
              onClick={handleDisplayMobileSearch}
76
            >
77
              <SearchIcon />
78
              <input
79
                type='text'
80
                placeholder='Search'
81
              />
82
            </div>
83
          </div>
84
 
4247 stevensc 85
          <nav className={`header__right ${showMobileSearch && 'd-none'}`}>
86
            <ul>
87
              {menuItems.map((item, index) => {
88
                return (
89
                  <HeaderOptions
90
                    key={index}
91
                    Icon={ICON_OPTIONS[index]}
92
                    title={item.label}
93
                    url={item.href}
94
                  />
95
                )
96
              })}
97
            </ul>
98
          </nav>
4243 stevensc 99
 
100
        </div>
101
      </div>
102
    </div>
103
  )
104
}
105
 
106
export default Header