Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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

Rev Autor Línea Nro. Línea
6753 stevensc 1
import React, { Suspense, lazy, useState } from 'react'
6632 stevensc 2
import HomeIcon from '@mui/icons-material/Home'
3
import BusinessCenterIcon from '@mui/icons-material/BusinessCenter'
4
import SellIcon from '@mui/icons-material/Sell'
5
import PeopleIcon from '@mui/icons-material/People'
6
import GroupsIcon from '@mui/icons-material/Groups'
7
import MenuIcon from '@mui/icons-material/Menu'
8
import SchoolIcon from '@mui/icons-material/School'
6753 stevensc 9
import ChatIcon from '@mui/icons-material/Chat'
6632 stevensc 10
 
6753 stevensc 11
import UserOptions from './UserOptions'
6632 stevensc 12
import HeaderOptions from './HeaderOptions'
6753 stevensc 13
import NavSearch from './nav-search/NavSearch'
6632 stevensc 14
 
15
import './Header.scss'
6753 stevensc 16
 
6694 stevensc 17
const MenuDrawer = lazy(() => import('./Drawer'))
6632 stevensc 18
 
19
const ICON_OPTIONS = [
20
  HomeIcon,
21
  PeopleIcon,
22
  BusinessCenterIcon,
23
  GroupsIcon,
24
  SellIcon,
25
  SchoolIcon,
6753 stevensc 26
  ChatIcon,
6632 stevensc 27
]
28
 
29
const Header = ({
6753 stevensc 30
  menu = [],
6632 stevensc 31
  image = '',
32
  logoForNavbar = '',
33
  fullName,
34
  linkAdmin,
35
  linkImpersonate,
36
  linkKnowledgeArea,
37
  routeKnowledgeArea,
38
  defaultNetwork,
6753 stevensc 39
  notificationsCount,
40
  messagesCount,
6632 stevensc 41
}) => {
42
  const [showDrawer, setShowDrawer] = useState(false)
43
 
44
  return (
45
    <>
46
      <div className="header">
47
        <div className="container px-0">
48
          <div className="header__nav">
6753 stevensc 49
            <div className="header__left">
6632 stevensc 50
              <a href="/">
51
                <img src={logoForNavbar} alt="Logo" />
52
              </a>
6694 stevensc 53
              <NavSearch />
6632 stevensc 54
            </div>
6753 stevensc 55
            <nav className="header__right">
6632 stevensc 56
              <ul>
6753 stevensc 57
                {menu.map((item, index) => {
6632 stevensc 58
                  return (
59
                    <HeaderOptions
60
                      key={index}
61
                      Icon={ICON_OPTIONS[index]}
62
                      title={item.label}
63
                      url={item.href}
64
                      childs={item.childs}
65
                      ajaxRequest={item.ajax}
6753 stevensc 66
                      isMobile={['Conocimiento', 'Comunicación'].includes(
67
                        item.label
68
                      )}
6848 stevensc 69
                      count={
6845 stevensc 70
                        !menu[index + 1] &&
6753 stevensc 71
                        (notificationsCount || messagesCount)
72
                      }
6632 stevensc 73
                    />
74
                  )
75
                })}
76
                <UserOptions
6753 stevensc 77
                  image={image}
6632 stevensc 78
                  name={fullName}
79
                  adminUrl={linkAdmin}
80
                  impersonateUrl={linkImpersonate}
81
                  defaultNetwork={defaultNetwork}
82
                  knowledgeAuth={linkKnowledgeArea}
83
                  routeKnowledge={routeKnowledgeArea}
84
                />
85
                {MenuDrawer && (
86
                  <li className="d-md-none">
87
                    <a
88
                      href="/"
89
                      className={'header__option mobile'}
90
                      onClick={(e) => {
91
                        e.preventDefault()
92
                        setShowDrawer(!showDrawer)
93
                      }}
94
                    >
95
                      <MenuIcon />
96
                    </a>
97
                  </li>
98
                )}
99
              </ul>
100
            </nav>
101
          </div>
102
        </div>
103
      </div>
6694 stevensc 104
      <Suspense fallback={null}>
105
        <MenuDrawer
106
          items={[
6753 stevensc 107
            ...menu,
6694 stevensc 108
            {
109
              label: 'Conocimiento',
110
              href: 'Conocimiento',
111
              img: '/images/navbar/market-place.svg',
112
              ajax: 0,
6753 stevensc 113
              childs: [],
6694 stevensc 114
            },
115
          ]}
116
          icons={ICON_OPTIONS}
117
          isOpen={showDrawer}
118
          closeDrawer={() => setShowDrawer(false)}
119
        />
120
      </Suspense>
6632 stevensc 121
    </>
122
  )
123
}
124
 
125
export default Header