close user menu on outside click
This commit is contained in:
@@ -226,6 +226,20 @@ export default function App() {
|
|||||||
const selectedDataset = libraryData.find(item => item.id === selectedLibraryId) || libraryData[0];
|
const selectedDataset = libraryData.find(item => item.id === selectedLibraryId) || libraryData[0];
|
||||||
const selectedInputDir = selectedDataset?.dicomPath || '';
|
const selectedInputDir = selectedDataset?.dicomPath || '';
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!activeUserMenu) return;
|
||||||
|
|
||||||
|
const closeUserMenuOnOutsideClick = (event: PointerEvent) => {
|
||||||
|
const target = event.target as HTMLElement | null;
|
||||||
|
if (!target?.closest('[data-user-menu-root="true"]')) {
|
||||||
|
setActiveUserMenu(null);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
document.addEventListener('pointerdown', closeUserMenuOnOutsideClick);
|
||||||
|
return () => document.removeEventListener('pointerdown', closeUserMenuOnOutsideClick);
|
||||||
|
}, [activeUserMenu]);
|
||||||
|
|
||||||
const showToast = (message: string) => {
|
const showToast = (message: string) => {
|
||||||
setToastMessage(message);
|
setToastMessage(message);
|
||||||
setTimeout(() => setToastMessage(""), 3000);
|
setTimeout(() => setToastMessage(""), 3000);
|
||||||
@@ -1073,7 +1087,7 @@ export default function App() {
|
|||||||
|
|
||||||
<div className="flex items-center gap-4">
|
<div className="flex items-center gap-4">
|
||||||
{currentUser?.role === 'admin' || u.id === currentUser?.id ? (
|
{currentUser?.role === 'admin' || u.id === currentUser?.id ? (
|
||||||
<div className="relative">
|
<div className="relative" data-user-menu-root="true">
|
||||||
<button
|
<button
|
||||||
onClick={() => setActiveUserMenu(activeUserMenu === u.id ? null : u.id)}
|
onClick={() => setActiveUserMenu(activeUserMenu === u.id ? null : u.id)}
|
||||||
className={`p-3 rounded-2xl transition-all ${activeUserMenu === u.id ? 'bg-blue-600 text-white shadow-lg' : 'text-slate-300 hover:text-blue-600 hover:bg-blue-50'}`}
|
className={`p-3 rounded-2xl transition-all ${activeUserMenu === u.id ? 'bg-blue-600 text-white shadow-lg' : 'text-slate-300 hover:text-blue-600 hover:bg-blue-50'}`}
|
||||||
|
|||||||
Reference in New Issue
Block a user