diff --git a/web/src/pages/desktop/menu/index.tsx b/web/src/pages/desktop/menu/index.tsx index 97cc63c..611a0d0 100644 --- a/web/src/pages/desktop/menu/index.tsx +++ b/web/src/pages/desktop/menu/index.tsx @@ -26,9 +26,12 @@ export const Menu = () => { const [menuDisabledItems, setMenuDisabledItems] = useAtom(menuDisabledItemsAtom); const [isMenuOpen, setIsMenuOpen] = useState(true); + const [isMenuMoved, setIsMenuMoved] = useState(false); + const [isMenuHovered, setIsMenuHovered] = useState(true); const [bounds, setBounds] = useState({ left: 0, right: 0, top: 0, bottom: 0 }); - const nodeRef = useRef(null); + const nodeRef = useRef(null); + const timerRef = useRef | null>(null); useEffect(() => { // disabled menu items @@ -51,26 +54,63 @@ export const Menu = () => { }; handleResize(); + handleMouseLeave(); window.addEventListener('resize', handleResize); + return () => { window.removeEventListener('resize', handleResize); + if (timerRef.current) { + clearTimeout(timerRef.current); + } }; }, []); + function handleMouseEnter() { + if (timerRef.current) { + clearTimeout(timerRef.current); + timerRef.current = null; + } + setIsMenuHovered(true); + } + + function handleMouseLeave() { + timerRef.current = setTimeout(() => { + setIsMenuHovered(false); + }, 5000); + } + return ( { + if (data.x !== 0 || data.y !== 0) { + setIsMenuMoved(true); + } + }} > -
+
+ {/* Trigger area for auto-show when hidden */} + {isMenuOpen && ( +
+ )} +
diff --git a/web/src/pages/desktop/menu/power/index.tsx b/web/src/pages/desktop/menu/power/index.tsx index 14b3f99..a6c2983 100644 --- a/web/src/pages/desktop/menu/power/index.tsx +++ b/web/src/pages/desktop/menu/power/index.tsx @@ -48,7 +48,12 @@ export const Power = () => { } const icon = ( -
+
{isLoading ? ( ) : ( diff --git a/web/src/pages/desktop/menu/settings/index.tsx b/web/src/pages/desktop/menu/settings/index.tsx index 634ff79..55bacb6 100644 --- a/web/src/pages/desktop/menu/settings/index.tsx +++ b/web/src/pages/desktop/menu/settings/index.tsx @@ -107,11 +107,11 @@ export const Settings = () => { <>
-
+
diff --git a/web/src/pages/desktop/menu/wol/index.tsx b/web/src/pages/desktop/menu/wol/index.tsx index fd847e9..88b3f64 100644 --- a/web/src/pages/desktop/menu/wol/index.tsx +++ b/web/src/pages/desktop/menu/wol/index.tsx @@ -213,7 +213,7 @@ export const Wol = () => { return ( } + icon={} content={content} onOpenChange={handleOpenChange} />