Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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