From 05f813673bee227a3cbd477dc789c93d1444ca6b Mon Sep 17 00:00:00 2001 From: spinline Date: Wed, 4 Feb 2026 18:18:21 +0300 Subject: [PATCH] fix(ui): use global window listener for dropdowns, remove overlays, restore theme logic --- frontend/src/components/layout/statusbar.rs | 83 ++++++++++----------- 1 file changed, 40 insertions(+), 43 deletions(-) diff --git a/frontend/src/components/layout/statusbar.rs b/frontend/src/components/layout/statusbar.rs index 1183d21..76fe0f9 100644 --- a/frontend/src/components/layout/statusbar.rs +++ b/frontend/src/components/layout/statusbar.rs @@ -85,6 +85,16 @@ pub fn StatusBar() -> impl IntoView { set_up_menu_open.set(false); }; + // Register global click listener to close menus when clicking outside + let close_menus = move |_| { + set_down_menu_open.set(false); + set_up_menu_open.set(false); + set_theme_open.set(false); + }; + + // Use window_event_listener from leptos + let _ = window_event_listener(ev::click, close_menus); + view! {
@@ -98,9 +108,11 @@ pub fn StatusBar() -> impl IntoView { role="button" class="flex items-center gap-2 cursor-pointer hover:text-primary transition-colors select-none" title="Global Download Speed - Click to Set Limit" - on:click=move |_| { - logging::log!("Current Down Limit: {:?}", stats.get().down_limit); - set_down_menu_open.update(|v| *v = !*v) + on:click=move |e| { + e.stop_propagation(); + set_down_menu_open.update(|v| *v = !*v); + set_up_menu_open.set(false); + set_theme_open.set(false); } > @@ -114,14 +126,11 @@ pub fn StatusBar() -> impl IntoView {
- -
-
- -