Rev 3701 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useState } from 'react'import { Link, useNavigate } from 'react-router-dom'import { Badge, styled } from '@mui/material'import { useOutsideClick } from '@hooks'import ListItemDropdown from './ListItemDropdown'import './Dropdowns.scss'import { getAdminUrl } from '@app/services/admin'import { useDispatch } from 'react-redux'import { addNotification } from '@app/redux/notification/notification.actions'const NavItem = styled(Link)(({ theme }) => ({position: 'relative',display: 'flex',flexDirection: 'column',alignItems: 'center',justifyContent: 'center',padding: theme.spacing(1, 0),fontSize: '12px',fontWeight: 400,height: '100%','&::after': {borderBottom: '2px solid var(--font-color)',content: '""',bottom: '-1px',left: 0,position: 'absolute',transform: 'scaleX(0)',transition: 'transform 0.2s ease-in-out',width: '100%'},'&.active::after, &:hover::after': {transform: 'scaleX(1)'},[theme.breakpoints.up('lg')]: {minWidth: '60px'},[theme.breakpoints.down('md')]: {fontSize: 0}}))const NavigationItem = ({ajax = 0,url = '',childs = [],count = 0,onClick,children}) => {const [displayMenu, setDisplayMenu] = useState(false)const navigate = useNavigate()const dispatch = useDispatch()const [menu] = useOutsideClick(() => setDisplayMenu(false))const toggleMenu = () => setDisplayMenu(!displayMenu)const openAdmin = async () => {try {const adminUrl = await getAdminUrl(url)window.open(adminUrl, '_blank')} catch (error) {dispatch(addNotification({ style: 'danger', msg: error.message }))}}const handleClick = async (e) => {e.preventDefault()if (ajax) {openAdmin()return}if (onClick) {onClick()return}if (childs.length) {toggleMenu()return}navigate(`/${url}`)}return (<li ref={menu}><NavItemto={url}onClick={handleClick}className={displayMenu ? 'active' : ''}>{children}<BadgebadgeContent={count}color='error'sx={{ position: 'absolute', top: '1rem', right: '1rem' }}/></NavItem><ListItemDropdownisShow={displayMenu}options={childs}onSelect={toggleMenu}/></li>)}export default NavigationItem