diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 9ca043e..fd8778d 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -1,25 +1,53 @@ -import React from 'react'; +import React, { useState } from 'react'; import { BrowserRouter as Router, Route, Routes } from 'react-router-dom'; import ResponsiveAppBar from './components/ResponsiveAppBar'; import ShipmentView from './pages/ShipmentView'; -import HomePage from './pages/HomeView'; // Assuming this is a default export +import HomePage from './pages/HomeView'; import ResultsView from './pages/ResultsView'; import PlanningView from './pages/PlanningView'; -import ContactsManager from './pages/ContactsManagerView'; +import Modal from './components/Modal'; import AddressManager from './pages/AddressManagerView'; +import ContactsManager from './pages/ContactsManagerView'; const App: React.FC = () => { + const [openAddressManager, setOpenAddressManager] = useState(false); + const [openContactsManager, setOpenContactsManager] = useState(false); + + const handleOpenAddressManager = () => { + setOpenAddressManager(true); + }; + + const handleCloseAddressManager = () => { + setOpenAddressManager(false); + }; + + const handleOpenContactsManager = () => { + setOpenContactsManager(true); + }; + + const handleCloseContactsManager = () => { + setOpenContactsManager(false); + }; + return ( - + } /> } /> } /> } /> - } /> - } /> + {/* Other routes as necessary */} + + + + + + ); }; diff --git a/frontend/src/components/Modal.tsx b/frontend/src/components/Modal.tsx new file mode 100644 index 0000000..4479334 --- /dev/null +++ b/frontend/src/components/Modal.tsx @@ -0,0 +1,27 @@ +import * as React from 'react'; +import { Dialog, DialogTitle, DialogContent, DialogActions, Button } from '@mui/material'; + +interface ModalProps { + open: boolean; + onClose: () => void; + title: string; + children: React.ReactNode; +} + +const Modal: React.FC = ({ open, onClose, title, children }) => { + return ( + + {title} + + {children} + + + + + + ); +}; + +export default Modal; \ No newline at end of file diff --git a/frontend/src/components/ResponsiveAppBar.tsx b/frontend/src/components/ResponsiveAppBar.tsx index 6f4787d..7c77b52 100644 --- a/frontend/src/components/ResponsiveAppBar.tsx +++ b/frontend/src/components/ResponsiveAppBar.tsx @@ -11,11 +11,15 @@ import Container from '@mui/material/Container'; import Avatar from '@mui/material/Avatar'; import Tooltip from '@mui/material/Tooltip'; import { Button } from '@mui/material'; -import { Link } from 'react-router-dom'; // Import Link for navigation +import { Link } from 'react-router-dom'; import logo from '../assets/icons/psi_01_sn.svg'; import '../App.css'; -// Page definitions for navigation +interface ResponsiveAppBarProps { + onOpenAddressManager: () => void; + onOpenContactsManager: () => void; +} + const pages = [ { name: 'Home', path: '/' }, { name: 'Shipments', path: '/shipments' }, @@ -23,15 +27,14 @@ const pages = [ { name: 'Results', path: '/results' } ]; -// User menu items const userMenuItems = [ - { name: 'My Contacts', path: '/contacts_manager' }, - { name: 'My Addresses', path: '/addresses_manager' }, + { name: 'My Contacts', action: 'contacts' }, + { name: 'My Addresses', action: 'addresses' }, { name: 'DUO', path: '/duo' }, { name: 'Logout', path: '/logout' } ]; -const ResponsiveAppBar: React.FC = () => { +const ResponsiveAppBar: React.FC = ({ onOpenAddressManager, onOpenContactsManager }) => { const [anchorElNav, setAnchorElNav] = useState(null); const [anchorElUser, setAnchorElUser] = useState(null); @@ -51,12 +54,20 @@ const ResponsiveAppBar: React.FC = () => { setAnchorElUser(null); }; + const handleMenuItemClick = (action: string) => { + if (action === 'contacts') { + onOpenContactsManager(); + } else if (action === 'addresses') { + onOpenAddressManager(); + } + handleCloseUserMenu(); + }; + return (
- {/* Logo and Title */} PSI logo @@ -77,7 +88,6 @@ const ResponsiveAppBar: React.FC = () => { Heidi v2 - {/* Mobile Menu */} { - {/* Desktop Menu */} {pages.map((page) => (