From ae030b58897220f6e587b09d518809fa3021e302 Mon Sep 17 00:00:00 2001 From: Manuel Cillero Date: Mon, 26 Feb 2024 07:45:46 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Add=20OptionId=20value=20to=20page?= =?UTF-8?q?=20body?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/pagetop-bootsier/src/lib.rs | 4 ++-- src/core/theme/definition.rs | 2 +- src/response/page.rs | 12 ++++++++++++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/packages/pagetop-bootsier/src/lib.rs b/packages/pagetop-bootsier/src/lib.rs index eb4f06b8..24b01c34 100644 --- a/packages/pagetop-bootsier/src/lib.rs +++ b/packages/pagetop-bootsier/src/lib.rs @@ -35,7 +35,7 @@ impl ThemeTrait for Bootsier { fn prepare_body(&self, page: &mut Page) -> Markup { match page.template() { "admin" => html! { - body class=[page.body_classes().get()] { + body id=[page.body_id().get()] class=[page.body_classes().get()] { @for region in &[ "top-menu", "side-menu", @@ -46,7 +46,7 @@ impl ThemeTrait for Bootsier { } }, _ => html! { - body class=[page.body_classes().get()] { + body id=[page.body_id().get()] class=[page.body_classes().get()] { (self.prepare_region(page, "header")) (self.prepare_region(page, "nav_branding")) (self.prepare_region(page, "nav_main")) diff --git a/src/core/theme/definition.rs b/src/core/theme/definition.rs index 9c6fbc76..8de0f883 100644 --- a/src/core/theme/definition.rs +++ b/src/core/theme/definition.rs @@ -44,7 +44,7 @@ pub trait ThemeTrait: PackageTrait + Send + Sync { let skip_to = concat_string!("#", page.skip_to().get().unwrap_or("content".to_owned())); html! { - body class=[page.body_classes().get()] { + body id=[page.body_id().get()] class=[page.body_classes().get()] { @if let Some(skip) = L10n::l("skip_to_content").using(page.context().langid()) { div class="pt-body__skip" { a href=(skip_to) { (skip) } diff --git a/src/response/page.rs b/src/response/page.rs index 5c0ae234..35fe73c3 100644 --- a/src/response/page.rs +++ b/src/response/page.rs @@ -22,6 +22,7 @@ pub struct Page { properties : Vec<(&'static str, &'static str)>, favicon : Option, context : Context, + body_id : OptionId, body_classes: OptionClasses, skip_to : OptionId, regions : ComponentsInRegions, @@ -38,6 +39,7 @@ impl Page { properties : Vec::default(), favicon : None, context : Context::new(request), + body_id : OptionId::default(), body_classes: OptionClasses::default(), skip_to : OptionId::default(), regions : ComponentsInRegions::default(), @@ -83,6 +85,12 @@ impl Page { self } + #[fn_with] + pub fn alter_body_id(&mut self, id: impl Into) -> &mut Self { + self.body_id.alter_value(id); + self + } + #[fn_with] pub fn alter_body_classes(&mut self, op: ClassesOp, classes: impl Into) -> &mut Self { self.body_classes.alter_value(op, classes); @@ -138,6 +146,10 @@ impl Page { &mut self.context } + pub fn body_id(&self) -> &OptionId { + &self.body_id + } + pub fn body_classes(&self) -> &OptionClasses { &self.body_classes }