import React, { useState, useRef, useEffect } from 'react';
import './UserMenu.css';
const UserMenu = ({ onSelect, token, onResetTournament, tournamentStarted }) => {
const [open, setOpen] = useState(false);
const menuRef = useRef(null);
useEffect(() => {
const handleClickOutside = (event) => {
if (menuRef.current && !menuRef.current.contains(event.target)) {
setOpen(false);
}
};
document.addEventListener('mousedown', handleClickOutside);
return () => {
document.removeEventListener('mousedown', handleClickOutside);
};
}, []);
const handleSelect = (option) => {
setOpen(false);
if (onSelect) onSelect(option);
};
return (
{open && (
{!token ? (
- handleSelect('profile')}>Login
) : (
<>
- handleSelect('create-tournament')}>Create tournament
- handleSelect('load-tournaments')}>Load tournaments
- handleSelect('start-tournament')}
style={tournamentStarted ? { cursor: 'not-allowed', opacity: 0.6, position: 'relative' } : {}}
{...(tournamentStarted ? { 'data-tooltip': 'The tournament has already started. You cannot start it again.' } : {})}
>
Start tournament
{tournamentStarted && (
The tournament has already started. You cannot start it again.
)}
- handleSelect('logout')}>Logout
- { setOpen(false); if (onResetTournament) onResetTournament(); }}>Reset Tournament
>
)}
)}
);
};
export default UserMenu;