import React, { useState } from 'react'; import { useNavigate, useLocation } from 'react-router-dom'; import AppBar from '@mui/material/AppBar'; import Box from '@mui/material/Box'; import Toolbar from '@mui/material/Toolbar'; import IconButton from '@mui/material/IconButton'; import Typography from '@mui/material/Typography'; import Menu from '@mui/material/Menu'; import MenuItem from '@mui/material/MenuItem'; import Container from '@mui/material/Container'; import Avatar from '@mui/material/Avatar'; import Tooltip from '@mui/material/Tooltip'; import { Button, Select, FormControl, InputLabel, } from '@mui/material'; import { Link } from 'react-router-dom'; import logo from '../assets/icons/psi_01_sn.svg'; import '../App.css'; import { clearToken } from '../utils/auth'; interface ResponsiveAppBarProps { activePgroup: string; onOpenAddressManager: () => void; onOpenContactsManager: () => void; pgroups: string[]; // Pass the pgroups from the server currentPgroup: string; // Currently selected pgroup onPgroupChange: (pgroup: string) => void; // Callback when selected pgroup changes } const ResponsiveAppBar: React.FC = ({ activePgroup, onOpenAddressManager, onOpenContactsManager, pgroups, currentPgroup, onPgroupChange }) => { const navigate = useNavigate(); const location = useLocation(); const [anchorElNav, setAnchorElNav] = useState(null); const [anchorElUser, setAnchorElUser] = useState(null); const [selectedPgroup, setSelectedPgroup] = useState(currentPgroup); console.log('Active Pgroup:', activePgroup); const handlePgroupChange = (event: React.ChangeEvent<{ value: unknown }>) => { const newPgroup = event.target.value as string; setSelectedPgroup(newPgroup); onPgroupChange(newPgroup); // Inform parent about the change }; const pages = [ { name: 'Home', path: '/' }, { name: 'Shipments', path: '/shipments' }, { name: 'Planning', path: '/planning' }, { name: 'Results', path: '/results' } ]; const userMenuItems = [ { name: 'My Contacts', action: 'contacts' }, { name: 'My Addresses', action: 'addresses' }, { name: 'DUO', path: '/duo' }, { name: 'Logout', action: 'logout' } ]; const handleOpenNavMenu = (event: React.MouseEvent) => { setAnchorElNav(event.currentTarget); }; const handleCloseNavMenu = () => { setAnchorElNav(null); }; const handleOpenUserMenu = (event: React.MouseEvent) => { setAnchorElUser(event.currentTarget); }; const handleCloseUserMenu = () => { setAnchorElUser(null); }; const handleLogout = () => { console.log("Performing logout..."); clearToken(); // Clear the token from localStorage and OpenAPI navigate('/login'); // Redirect to login page }; const handleMenuItemClick = (action: string) => { if (action === 'contacts') { onOpenContactsManager(); } else if (action === 'addresses') { onOpenAddressManager(); } else if (action === 'logout') { handleLogout(); } handleCloseUserMenu(); }; return (
PSI logo AARE v0.1 {pages.map((page) => ( ))} pgroup {userMenuItems.map((item) => ( handleMenuItemClick(item.action ?? '')}> {item.name} ))}
); }; export default ResponsiveAppBar;