Rev 3743 | AutorÃa | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useState } from 'react';import { Link, useNavigate } from 'react-router-dom';import { useSelector } from 'react-redux';import { AppBar, Box, Container, Toolbar } from '@mui/material';import Menu from '@mui/icons-material/Menu';import Chat from '@mui/icons-material/Chat';import Home from '@mui/icons-material/Home';import Sell from '@mui/icons-material/Sell';import School from '@mui/icons-material/School';import People from '@mui/icons-material/People';import Groups from '@mui/icons-material/Groups';import BusinessCenter from '@mui/icons-material/BusinessCenter';import Search from '@mui/icons-material/Search';import { useNavbar } from '@hooks';import MenuDrawer from './Drawer';import NavigationItem from './navigation-item';import UserOptions from './user-options';import Input from '@components/UI/inputs/Input';export default function Navbar() {const { menuData } = useNavbar();const {menu = [],image = '',fullName,linkAdmin,linkImpersonate,linkKnowledgeArea,routeKnowledgeArea,routeAbuseReport,urlImpersonate,urlAdmin,defaultNetwork} = menuData;const [showMenu, setShowMenu] = useState(false);const logo = useSelector(({ auth }) => auth.navbar_url);const labels = useSelector(({ intl }) => intl.labels);const navigate = useNavigate();const ICON_OPTIONS = [Home, People, BusinessCenter, Groups, Sell, Chat, School];const showDrawer = () => setShowMenu(true);const hideDrawer = () => setShowMenu(false);const handleSearch = ({ key, target }) => {if (key !== 'Enter') {return;}navigate(`/search/entity/user?keyword=${target.value}`);target.value = '';target.blur();};return (<><AppBarsx={{position: 'sticky',boxShadow: 'none',borderBottom: '1px solid var(--border-primary)'}}><Container><Toolbarsx={{gap: 2,minHeight: 'none',paddingLeft: 0,paddingRight: 0}}><Boxsx={{display: 'flex',alignItems: 'center',gap: { xs: 0, md: 2 },flexGrow: 1,'& img': {display: { xs: 'none', md: 'block' },height: { xs: '50px', md: '60px' },width: { xs: '50px', md: '60px' }}}}><Link to='/'><img src={logo} alt='Logo' /></Link><Inputplaceholder={labels.search}icon={<Search />}variant='search'onKeyDown={handleSearch}/></Box><Boxsx={{alignItems: 'center',display: 'flex','& > ul': {display: 'flex',flex: 1,justifyContent: 'space-evenly',gap: { xs: 1, md: 2 },'& > li': {position: 'relative',display: 'flex','&:not(:nth-last-of-type(-n + 4))': {display: { xs: 'none', md: 'flex' }},'&:nth-last-of-type(-n + 1)': {display: { xs: 'flex', md: 'none' }}}}}}><ul>{menu.map(({ label, href, childs, ajax }, index) => {const Icon = ICON_OPTIONS[index];return (<NavigationItem key={index} url={href} childs={childs} ajax={ajax}><Icon />{label}</NavigationItem>);})}<UserOptionsimage={image}name={fullName}adminUrl={linkAdmin}impersonateUrl={linkImpersonate}defaultNetwork={defaultNetwork}knowledgeAuth={linkKnowledgeArea}routeKnowledge={routeKnowledgeArea}routeAdmin={urlAdmin}routeImpersonate={urlImpersonate}routeAbuseReport={routeAbuseReport}/><NavigationItem onClick={showDrawer}><Menu /></NavigationItem></ul></Box></Toolbar></Container></AppBar><MenuDrawer items={menu} show={showMenu} onClose={hideDrawer} /></>);}