sidebar: Fix collapsed to display icon only. (#743)
<img width="1056" alt="image" src="https://github.com/user-attachments/assets/162f9e47-72ef-47c2-b3a4-9bc10682a624" />
This commit is contained in:
parent
a70a0f168d
commit
e582d22f11
2 changed files with 12 additions and 4 deletions
|
|
@ -45,7 +45,11 @@ impl Collapsible for SidebarMenu {
|
||||||
}
|
}
|
||||||
impl RenderOnce for SidebarMenu {
|
impl RenderOnce for SidebarMenu {
|
||||||
fn render(self, _window: &mut Window, _cx: &mut App) -> impl IntoElement {
|
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 {
|
fn render(self, window: &mut Window, cx: &mut App) -> impl IntoElement {
|
||||||
let is_submenu = self.is_submenu();
|
let is_submenu = self.is_submenu();
|
||||||
let is_open = self.is_open();
|
let is_open = self.is_open();
|
||||||
|
let is_collapsed = self.collapsed;
|
||||||
|
|
||||||
div()
|
div()
|
||||||
.w_full()
|
.w_full()
|
||||||
.child(self.render_menu_item(window, cx))
|
.child(self.render_menu_item(window, cx))
|
||||||
.when(is_submenu && is_open, |this| {
|
.when(is_submenu && is_open && !is_collapsed, |this| {
|
||||||
this.child(
|
this.child(
|
||||||
v_flex()
|
v_flex()
|
||||||
.border_l_1()
|
.border_l_1()
|
||||||
|
|
|
||||||
|
|
@ -182,7 +182,6 @@ impl RenderOnce for SidebarToggleButton {
|
||||||
|
|
||||||
impl<E: Collapsible + IntoElement> RenderOnce for Sidebar<E> {
|
impl<E: Collapsible + IntoElement> RenderOnce for Sidebar<E> {
|
||||||
fn render(mut self, _: &mut Window, cx: &mut App) -> impl IntoElement {
|
fn render(mut self, _: &mut Window, cx: &mut App) -> impl IntoElement {
|
||||||
let is_collapsed = self.collapsed;
|
|
||||||
v_flex()
|
v_flex()
|
||||||
.id("sidebar")
|
.id("sidebar")
|
||||||
.w(self.width)
|
.w(self.width)
|
||||||
|
|
@ -204,7 +203,11 @@ impl<E: Collapsible + IntoElement> RenderOnce for Sidebar<E> {
|
||||||
.child(
|
.child(
|
||||||
v_flex().id("content").flex_1().min_h_0().child(
|
v_flex().id("content").flex_1().min_h_0().child(
|
||||||
div()
|
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()
|
.gap_2()
|
||||||
.scrollable(self.view_id, ScrollbarAxis::Vertical),
|
.scrollable(self.view_id, ScrollbarAxis::Vertical),
|
||||||
),
|
),
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue