From d9fa2e57afeda22217a9a6d6cd77179cd63df6fd Mon Sep 17 00:00:00 2001 From: Niklas <198754647+BlankAccountsUsername@users.noreply.github.com> Date: Wed, 18 Jun 2025 17:31:34 +0200 Subject: [PATCH] add drawer menu --- code/frontend/src/components/Header.tsx | 103 ++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 code/frontend/src/components/Header.tsx diff --git a/code/frontend/src/components/Header.tsx b/code/frontend/src/components/Header.tsx new file mode 100644 index 0000000..e5d36aa --- /dev/null +++ b/code/frontend/src/components/Header.tsx @@ -0,0 +1,103 @@ +import "./header.css"; +import React, { useState, useRef, useEffect } from "react"; +import { Divider, List, ListItem, ListItemButton, ListItemIcon, ListItemText, Menu, MenuItem, SwipeableDrawer } from '@mui/material'; +import Box from '@mui/material/Box'; +import InboxIcon from "@mui/icons-material/Inbox"; +import MailIcon from '@mui/icons-material/Mail'; +import MenuIcon from '@mui/icons-material/Menu'; + +function Header() { + const [isOpen, setIsOpen] = useState(false); + const iconRef = useRef(null); + const toggleMenu = () => { + setIsOpen(!isOpen); + }; + const iconList = [InboxIcon, MailIcon, InboxIcon, MailIcon, InboxIcon, MailIcon]; + + const DrawerList = ( + setIsOpen(false)}> + + {["Inbox", "Starred", "Send email", "Drafts"].map((text, index) => ( + + + + {index % 2 === 0 ? : } + + + + + ))} + + + + {["All mail", "Trash", "Spam"].map((text, index) => ( + + + + {index % 2 === 0 ? : } + + + + + ))} + + + ); + + return ( +
+
+
featherIcon
+

+ FeatherFeed +

+
{isOpen? close menu : menu}
+
+ setIsOpen(false)} + onOpen={() => setIsOpen(true)} + > + {DrawerList} + +
+ ); +} + + +function Menu1({isOpen, toggleMenu, setIsOpen, iconRef}: any) { + const menuRef = useRef(null); + + useEffect(() => { + function handleClickOutside(event: MouseEvent) { + if (menuRef.current && !menuRef.current.contains(event.target as Node) && !iconRef.current.contains(event.target as Node)) { + setIsOpen(false); + } + } + + document.addEventListener("mousedown", handleClickOutside); + return () => { + document.removeEventListener("mousedown", handleClickOutside); + }; + }, []); + + return ( +
+ + Option 1 + Option 2 + Option 3 + +
+ ); +}; + + + +// EXPORT VARIABLES +export default Header; \ No newline at end of file