import { useContext, useState } from 'react'; import type { ChangeEventHandler, FC } from 'react'; import AccountCircleIcon from '@mui/icons-material/AccountCircle'; import AssessmentIcon from '@mui/icons-material/Assessment'; import CategoryIcon from '@mui/icons-material/Category'; import ConstructionIcon from '@mui/icons-material/Construction'; import KeyboardArrowDown from '@mui/icons-material/KeyboardArrowDown'; import LiveHelpIcon from '@mui/icons-material/LiveHelp'; import MoreTimeIcon from '@mui/icons-material/MoreTime'; import PersonIcon from '@mui/icons-material/Person'; import PlaylistAddIcon from '@mui/icons-material/PlaylistAdd'; import SensorsIcon from '@mui/icons-material/Sensors'; import SettingsIcon from '@mui/icons-material/Settings'; import { Avatar, Box, Button, Divider, List, ListItem, ListItemButton, ListItemIcon, ListItemText, MenuItem, Popover, TextField } from '@mui/material'; import LayoutMenuItem from 'components/layout/LayoutMenuItem'; import { AuthenticatedContext } from 'contexts/authentication'; import DEflag from 'i18n/DE.svg'; import FRflag from 'i18n/FR.svg'; import GBflag from 'i18n/GB.svg'; import ITflag from 'i18n/IT.svg'; import NLflag from 'i18n/NL.svg'; import NOflag from 'i18n/NO.svg'; import PLflag from 'i18n/PL.svg'; import SKflag from 'i18n/SK.svg'; import SVflag from 'i18n/SV.svg'; import TRflag from 'i18n/TR.svg'; import { I18nContext } from 'i18n/i18n-react'; import type { Locales } from 'i18n/i18n-types'; import { loadLocaleAsync } from 'i18n/i18n-util.async'; const LayoutMenu: FC = () => { const { me, signOut } = useContext(AuthenticatedContext); const { locale, LL, setLocale } = useContext(I18nContext); const [anchorEl, setAnchorEl] = useState(null); const open = Boolean(anchorEl); const id = anchorEl ? 'app-menu-popover' : undefined; const [menuOpen, setMenuOpen] = useState(true); const onLocaleSelected: ChangeEventHandler = async ({ target }) => { const loc = target.value as Locales; localStorage.setItem('lang', loc); await loadLocaleAsync(loc); setLocale(loc); }; const handleClick = (event: React.MouseEvent) => { setAnchorEl(event.currentTarget); }; const handleClose = () => { setAnchorEl(null); }; return ( <> setMenuOpen(!menuOpen)} sx={{ pt: 2.5, pb: menuOpen ? 0 : 2.5, '&:hover, &:focus': { '& svg': { opacity: 1 } } }} > {menuOpen && ( <> )} {me.username}  DE  EN  FR  IT  NL  NO  PL  SK  SV  TR ); }; export default LayoutMenu;