From efebe2fa80969546cca4d871308a829e1e0d1630 Mon Sep 17 00:00:00 2001 From: Philippe Loctaux Date: Fri, 24 Mar 2023 22:15:07 +0100 Subject: [PATCH] ezidam: new menu system, with main and submenus --- crates/ezidam/src/menu.rs | 32 +++++---- crates/ezidam/src/menu/icons.rs | 1 + crates/ezidam/src/menu/items.rs | 4 +- crates/ezidam/src/menu/items/admin.rs | 79 ++++++++++++--------- crates/ezidam/src/menu/items/user.rs | 42 ++++------- crates/ezidam/src/menu/template.rs | 37 +++------- crates/ezidam/src/page.rs | 11 ++- crates/ezidam/src/page/template.rs | 8 ++- crates/ezidam/templates/shell/nav.html.tera | 39 ++++++++-- 9 files changed, 133 insertions(+), 120 deletions(-) diff --git a/crates/ezidam/src/menu.rs b/crates/ezidam/src/menu.rs index 14ba2c1..37f2753 100644 --- a/crates/ezidam/src/menu.rs +++ b/crates/ezidam/src/menu.rs @@ -2,38 +2,40 @@ mod icons; mod items; mod template; -pub use items::{Admin, User}; -pub use template::Template; +pub use self::items::{AdminMenu, UserMenu}; +pub use self::template::{MainItem, SubItem}; -pub enum Menu { - User(User), - Admin(Admin), +pub enum MenuWithActiveItem { + User(UserMenu), + Admin(AdminMenu), } -impl Menu { +impl MenuWithActiveItem { + /// ID of selected menu item pub fn selected(&self) -> &'static str { match self { - Menu::User(user) => user.id(), - Menu::Admin(admin) => admin.id(), + MenuWithActiveItem::User(selected) => selected.id(), + MenuWithActiveItem::Admin(selected) => selected.id(), } } - pub fn list(&self) -> Vec