diff --git a/crates/ui/src/sidebar/menu.rs b/crates/ui/src/sidebar/menu.rs index 2e92a3b8..25c2d7eb 100644 --- a/crates/ui/src/sidebar/menu.rs +++ b/crates/ui/src/sidebar/menu.rs @@ -45,7 +45,11 @@ impl Collapsible for SidebarMenu { } impl RenderOnce for SidebarMenu { fn render(self, _window: &mut Window, _cx: &mut App) -> impl IntoElement { - v_flex().gap_2().children(self.items) + v_flex().gap_2().children( + self.items + .into_iter() + .map(|item| item.collapsed(self.collapsed)), + ) } } @@ -166,11 +170,12 @@ impl RenderOnce for SidebarMenuItem { fn render(self, window: &mut Window, cx: &mut App) -> impl IntoElement { let is_submenu = self.is_submenu(); let is_open = self.is_open(); + let is_collapsed = self.collapsed; div() .w_full() .child(self.render_menu_item(window, cx)) - .when(is_submenu && is_open, |this| { + .when(is_submenu && is_open && !is_collapsed, |this| { this.child( v_flex() .border_l_1() diff --git a/crates/ui/src/sidebar/mod.rs b/crates/ui/src/sidebar/mod.rs index f9591ae3..5efb4b38 100644 --- a/crates/ui/src/sidebar/mod.rs +++ b/crates/ui/src/sidebar/mod.rs @@ -182,7 +182,6 @@ impl RenderOnce for SidebarToggleButton { impl RenderOnce for Sidebar { fn render(mut self, _: &mut Window, cx: &mut App) -> impl IntoElement { - let is_collapsed = self.collapsed; v_flex() .id("sidebar") .w(self.width) @@ -204,7 +203,11 @@ impl RenderOnce for Sidebar { .child( v_flex().id("content").flex_1().min_h_0().child( div() - .children(self.content.into_iter().map(|c| c.collapsed(is_collapsed))) + .children( + self.content + .into_iter() + .map(|c| c.collapsed(self.collapsed)), + ) .gap_2() .scrollable(self.view_id, ScrollbarAxis::Vertical), ),