refactor(responsive menu): define a custom width for the collapsed menu

This can be much smaller than a regular menu to save space
This commit is contained in:
Ashley Wulber 2025-04-15 17:58:20 -04:00 committed by Ashley Wulber
parent bbcd874d9c
commit 1abd6d7578

View file

@ -14,6 +14,7 @@ pub fn responsive_menu_bar() -> ResponsiveMenuBar {
} }
pub struct ResponsiveMenuBar { pub struct ResponsiveMenuBar {
collapsed_item_width: ItemWidth,
item_width: ItemWidth, item_width: ItemWidth,
item_height: ItemHeight, item_height: ItemHeight,
spacing: f32, spacing: f32,
@ -22,6 +23,7 @@ pub struct ResponsiveMenuBar {
impl Default for ResponsiveMenuBar { impl Default for ResponsiveMenuBar {
fn default() -> ResponsiveMenuBar { fn default() -> ResponsiveMenuBar {
ResponsiveMenuBar { ResponsiveMenuBar {
collapsed_item_width: ItemWidth::Static(84),
item_width: ItemWidth::Uniform(150), item_width: ItemWidth::Uniform(150),
item_height: ItemHeight::Uniform(30), item_height: ItemHeight::Uniform(30),
spacing: 0., spacing: 0.,
@ -110,10 +112,17 @@ impl ResponsiveMenuBar {
.into_iter() .into_iter()
.map(|mt| menu::Item::Folder(mt.0, mt.1.into())) .map(|mt| menu::Item::Folder(mt.0, mt.1.into()))
.collect(), .collect(),
), )
.into_iter()
.map(|t| {
t.width(match self.item_width {
ItemWidth::Uniform(w) | ItemWidth::Static(w) => w,
})
})
.collect(),
)]) )])
.item_height(self.item_height) .item_height(self.item_height)
.item_width(self.item_width) .item_width(self.collapsed_item_width)
.spacing(self.spacing), .spacing(self.spacing),
crate::widget::Id::new(format!("menu_bar_collapsed_{id}")), crate::widget::Id::new(format!("menu_bar_collapsed_{id}")),
), ),