Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 4247 | Ir a la última revisión | | 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'
10
import './Header.css'
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
 
85
          <div className={`header__right ${showMobileSearch && 'd-none'}`}>
86
            {menuItems.map((item, index) => {
87
              return (
88
                <HeaderOptions
89
                  key={index}
90
                  Icon={ICON_OPTIONS[index]}
91
                  title={item.label}
92
                  url={item.href}
93
                />
94
              )
95
            })}
96
          </div>
97
 
98
        </div>
99
      </div>
100
    </div>
101
  )
102
}
103
 
104
export default Header