Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 6848 | | 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,
7331 stevensc 38
  urlImpersonate,
39
  urlAdmin,
6632 stevensc 40
  defaultNetwork,
6753 stevensc 41
  notificationsCount,
42
  messagesCount,
6632 stevensc 43
}) => {
44
  const [showDrawer, setShowDrawer] = useState(false)
45
 
46
  return (
47
    <>
48
      <div className="header">
49
        <div className="container px-0">
50
          <div className="header__nav">
6753 stevensc 51
            <div className="header__left">
6632 stevensc 52
              <a href="/">
53
                <img src={logoForNavbar} alt="Logo" />
54
              </a>
6694 stevensc 55
              <NavSearch />
6632 stevensc 56
            </div>
6753 stevensc 57
            <nav className="header__right">
6632 stevensc 58
              <ul>
6753 stevensc 59
                {menu.map((item, index) => {
6632 stevensc 60
                  return (
61
                    <HeaderOptions
62
                      key={index}
63
                      Icon={ICON_OPTIONS[index]}
64
                      title={item.label}
65
                      url={item.href}
66
                      childs={item.childs}
67
                      ajaxRequest={item.ajax}
6753 stevensc 68
                      isMobile={['Conocimiento', 'Comunicación'].includes(
69
                        item.label
70
                      )}
6848 stevensc 71
                      count={
6845 stevensc 72
                        !menu[index + 1] &&
6753 stevensc 73
                        (notificationsCount || messagesCount)
74
                      }
6632 stevensc 75
                    />
76
                  )
77
                })}
78
                <UserOptions
6753 stevensc 79
                  image={image}
6632 stevensc 80
                  name={fullName}
81
                  adminUrl={linkAdmin}
82
                  impersonateUrl={linkImpersonate}
83
                  defaultNetwork={defaultNetwork}
84
                  knowledgeAuth={linkKnowledgeArea}
85
                  routeKnowledge={routeKnowledgeArea}
7331 stevensc 86
                  routeAdmin={urlAdmin}
87
                  routeImpersonate={urlImpersonate}
6632 stevensc 88
                />
89
                {MenuDrawer && (
90
                  <li className="d-md-none">
91
                    <a
92
                      href="/"
93
                      className={'header__option mobile'}
94
                      onClick={(e) => {
95
                        e.preventDefault()
96
                        setShowDrawer(!showDrawer)
97
                      }}
98
                    >
99
                      <MenuIcon />
100
                    </a>
101
                  </li>
102
                )}
103
              </ul>
104
            </nav>
105
          </div>
106
        </div>
107
      </div>
6694 stevensc 108
      <Suspense fallback={null}>
109
        <MenuDrawer
110
          items={[
6753 stevensc 111
            ...menu,
6694 stevensc 112
            {
113
              label: 'Conocimiento',
114
              href: 'Conocimiento',
115
              img: '/images/navbar/market-place.svg',
116
              ajax: 0,
6753 stevensc 117
              childs: [],
6694 stevensc 118
            },
119
          ]}
120
          icons={ICON_OPTIONS}
121
          isOpen={showDrawer}
122
          closeDrawer={() => setShowDrawer(false)}
123
        />
124
      </Suspense>
6632 stevensc 125
    </>
126
  )
127
}
128
 
129
export default Header