import React, { useState, useEffect, useContext, MouseEvent } from 'react'; import { useTranslation } from 'react-i18next'; import Button from '../../muiComponents/Button'; import ThemeContext from '../../design-tokens/ThemeContext'; import { RightSide } from './styles'; import HeaderToolTip from './HeaderToolTip'; import HeaderMenu from './HeaderMenu'; interface Props { withoutSearch?: boolean; username?: string; onToggleLogin: () => void; onOpenRegistryInfoDialog: () => void; onToggleMobileNav: () => void; onLogout: () => void; } const HeaderRight: React.FC = ({ withoutSearch = false, username, onToggleLogin, onLogout, onToggleMobileNav, onOpenRegistryInfoDialog, }) => { const themeContext = useContext(ThemeContext); const [anchorEl, setAnchorEl] = useState(); const [isMenuOpen, setIsMenuOpen] = useState(); const { t } = useTranslation(); if (!themeContext) { throw Error(t('theme-context-not-correct-used')); } useEffect(() => { setIsMenuOpen(Boolean(anchorEl)); }, [anchorEl]); /** * opens popover menu for logged in user. */ const handleLoggedInMenu = (event: MouseEvent) => { setAnchorEl(event.currentTarget); }; /** * closes popover menu for logged in user */ const handleLoggedInMenuClose = () => { setAnchorEl(null); }; /** * close/open popover menu for logged in users. */ const handleToggleLogin = () => { setAnchorEl(null); onToggleLogin(); }; const handleToggleDarkLightMode = () => { setTimeout(() => { themeContext.setIsDarkMode(!themeContext.isDarkMode); }, 300); }; return ( {!withoutSearch && ( )} {username ? ( ) : ( )} ); }; export default HeaderRight;