diff --git a/pagetop/src/base/component/anchor.rs b/pagetop/src/base/component/anchor.rs index 26644db7..e1532888 100644 --- a/pagetop/src/base/component/anchor.rs +++ b/pagetop/src/base/component/anchor.rs @@ -19,8 +19,8 @@ pub enum AnchorTarget { pub type AnchorIcon = ComponentsBundle; pub struct Anchor { - renderable : fn() -> bool, weight : isize, + renderable : Renderable, id : IdentifierValue, classes : Classes, anchor_type: AnchorType, @@ -35,8 +35,8 @@ pub struct Anchor { impl ComponentTrait for Anchor { fn new() -> Self { Anchor { - renderable : render_always, weight : 0, + renderable : render_always, id : IdentifierValue::new(), classes : Classes::new(), anchor_type: AnchorType::Link, @@ -57,8 +57,8 @@ impl ComponentTrait for Anchor { self.weight } - fn is_renderable(&self, _: &InContext) -> bool { - (self.renderable)() + fn is_renderable(&self, context: &InContext) -> bool { + (self.renderable)(context) } fn default_render(&self, context: &mut InContext) -> Markup { @@ -112,7 +112,7 @@ impl Anchor { self } - pub fn with_renderable(mut self, renderable: fn() -> bool) -> Self { + pub fn with_renderable(mut self, renderable: Renderable) -> Self { self.alter_renderable(renderable); self } @@ -169,7 +169,7 @@ impl Anchor { self } - pub fn alter_renderable(&mut self, renderable: fn() -> bool) -> &mut Self { + pub fn alter_renderable(&mut self, renderable: Renderable) -> &mut Self { self.renderable = renderable; self } diff --git a/pagetop/src/base/component/block.rs b/pagetop/src/base/component/block.rs index fec21328..868751fc 100644 --- a/pagetop/src/base/component/block.rs +++ b/pagetop/src/base/component/block.rs @@ -3,8 +3,8 @@ use crate::prelude::*; pub const COMPONENT_BLOCK: &str = "pagetop::component::block"; pub struct Block { - renderable: fn() -> bool, weight : isize, + renderable: Renderable, id : IdentifierValue, classes : Classes, title : AttributeValue, @@ -15,8 +15,8 @@ pub struct Block { impl ComponentTrait for Block { fn new() -> Self { Block { - renderable: render_always, weight : 0, + renderable: render_always, id : IdentifierValue::new(), classes : Classes::new_with_default("block"), title : AttributeValue::new(), @@ -33,8 +33,8 @@ impl ComponentTrait for Block { self.weight } - fn is_renderable(&self, _: &InContext) -> bool { - (self.renderable)() + fn is_renderable(&self, context: &InContext) -> bool { + (self.renderable)(context) } fn default_render(&self, context: &mut InContext) -> Markup { @@ -70,7 +70,7 @@ impl Block { self } - pub fn with_renderable(mut self, renderable: fn() -> bool) -> Self { + pub fn with_renderable(mut self, renderable: Renderable) -> Self { self.alter_renderable(renderable); self } @@ -107,7 +107,7 @@ impl Block { self } - pub fn alter_renderable(&mut self, renderable: fn() -> bool) -> &mut Self { + pub fn alter_renderable(&mut self, renderable: Renderable) -> &mut Self { self.renderable = renderable; self } diff --git a/pagetop/src/base/component/chunck.rs b/pagetop/src/base/component/chunck.rs index 59d29b12..9622923a 100644 --- a/pagetop/src/base/component/chunck.rs +++ b/pagetop/src/base/component/chunck.rs @@ -3,8 +3,8 @@ use crate::prelude::*; pub const COMPONENT_CHUNCK: &str = "pagetop::component::chunck"; pub struct Chunck { - renderable: fn() -> bool, weight : isize, + renderable: Renderable, html : Markup, template : String, } @@ -12,8 +12,8 @@ pub struct Chunck { impl ComponentTrait for Chunck { fn new() -> Self { Chunck { - renderable: render_always, weight : 0, + renderable: render_always, html : html! {}, template : "default".to_owned(), } @@ -27,8 +27,8 @@ impl ComponentTrait for Chunck { self.weight } - fn is_renderable(&self, _: &InContext) -> bool { - (self.renderable)() + fn is_renderable(&self, context: &InContext) -> bool { + (self.renderable)(context) } fn default_render(&self, _: &mut InContext) -> Markup { @@ -56,7 +56,7 @@ impl Chunck { self } - pub fn with_renderable(mut self, renderable: fn() -> bool) -> Self { + pub fn with_renderable(mut self, renderable: Renderable) -> Self { self.alter_renderable(renderable); self } @@ -78,7 +78,7 @@ impl Chunck { self } - pub fn alter_renderable(&mut self, renderable: fn() -> bool) -> &mut Self { + pub fn alter_renderable(&mut self, renderable: Renderable) -> &mut Self { self.renderable = renderable; self } diff --git a/pagetop/src/base/component/container.rs b/pagetop/src/base/component/container.rs index 94634943..fe49e224 100644 --- a/pagetop/src/base/component/container.rs +++ b/pagetop/src/base/component/container.rs @@ -5,8 +5,8 @@ pub const COMPONENT_CONTAINER: &str = "pagetop::component::container"; pub enum ContainerType { Header, Footer, Main, Section, Wrapper } pub struct Container { - renderable : fn() -> bool, weight : isize, + renderable : Renderable, id : IdentifierValue, classes : Classes, inner_classes : Classes, @@ -18,8 +18,8 @@ pub struct Container { impl ComponentTrait for Container { fn new() -> Self { Container { - renderable : render_always, weight : 0, + renderable : render_always, id : IdentifierValue::new(), classes : Classes::new_with_default("container"), inner_classes : Classes::new_with_default("container"), @@ -37,8 +37,8 @@ impl ComponentTrait for Container { self.weight } - fn is_renderable(&self, _: &InContext) -> bool { - (self.renderable)() + fn is_renderable(&self, context: &InContext) -> bool { + (self.renderable)(context) } fn default_render(&self, context: &mut InContext) -> Markup { @@ -120,7 +120,7 @@ impl Container { self } - pub fn with_renderable(mut self, renderable: fn() -> bool) -> Self { + pub fn with_renderable(mut self, renderable: Renderable) -> Self { self.alter_renderable(renderable); self } @@ -157,7 +157,7 @@ impl Container { self } - pub fn alter_renderable(&mut self, renderable: fn() -> bool) -> &mut Self { + pub fn alter_renderable(&mut self, renderable: Renderable) -> &mut Self { self.renderable = renderable; self } diff --git a/pagetop/src/base/component/form/button.rs b/pagetop/src/base/component/form/button.rs index e9ba40ec..1414f6a8 100644 --- a/pagetop/src/base/component/form/button.rs +++ b/pagetop/src/base/component/form/button.rs @@ -5,8 +5,8 @@ pub const COMPONENT_BUTTON: &str = "pagetop::component::form::button"; pub enum ButtonType {Button, Reset, Submit} pub struct Button { - renderable : fn() -> bool, weight : isize, + renderable : Renderable, classes : Classes, button_type: ButtonType, name : AttributeValue, @@ -19,8 +19,8 @@ pub struct Button { impl ComponentTrait for Button { fn new() -> Self { Button { - renderable : render_always, weight : 0, + renderable : render_always, classes : Classes::new_with_default("btn btn-primary"), button_type: ButtonType::Button, name : AttributeValue::new(), @@ -40,8 +40,8 @@ impl ComponentTrait for Button { self.weight } - fn is_renderable(&self, _: &InContext) -> bool { - (self.renderable)() + fn is_renderable(&self, context: &InContext) -> bool { + (self.renderable)(context) } fn default_render(&self, _: &mut InContext) -> Markup { @@ -109,7 +109,7 @@ impl Button { self } - pub fn with_renderable(mut self, renderable: fn() -> bool) -> Self { + pub fn with_renderable(mut self, renderable: Renderable) -> Self { self.alter_renderable(renderable); self } @@ -151,7 +151,7 @@ impl Button { self } - pub fn alter_renderable(&mut self, renderable: fn() -> bool) -> &mut Self { + pub fn alter_renderable(&mut self, renderable: Renderable) -> &mut Self { self.renderable = renderable; self } diff --git a/pagetop/src/base/component/form/date.rs b/pagetop/src/base/component/form/date.rs index 5151cead..cbb6593f 100644 --- a/pagetop/src/base/component/form/date.rs +++ b/pagetop/src/base/component/form/date.rs @@ -3,8 +3,8 @@ use crate::prelude::*; pub const COMPONENT_DATE: &str = "pagetop::component::form::date"; pub struct Date { - renderable : fn() -> bool, weight : isize, + renderable : Renderable, classes : Classes, name : AttributeValue, value : AttributeValue, @@ -22,8 +22,8 @@ pub struct Date { impl ComponentTrait for Date { fn new() -> Self { Date { - renderable : render_always, weight : 0, + renderable : render_always, classes : Classes::new_with_default("form-item"), name : AttributeValue::new(), value : AttributeValue::new(), @@ -48,8 +48,8 @@ impl ComponentTrait for Date { self.weight } - fn is_renderable(&self, _: &InContext) -> bool { - (self.renderable)() + fn is_renderable(&self, context: &InContext) -> bool { + (self.renderable)(context) } fn default_render(&self, _: &mut InContext) -> Markup { @@ -109,7 +109,7 @@ impl Date { self } - pub fn with_renderable(mut self, renderable: fn() -> bool) -> Self { + pub fn with_renderable(mut self, renderable: Renderable) -> Self { self.alter_renderable(renderable); self } @@ -181,7 +181,7 @@ impl Date { self } - pub fn alter_renderable(&mut self, renderable: fn() -> bool) -> &mut Self { + pub fn alter_renderable(&mut self, renderable: Renderable) -> &mut Self { self.renderable = renderable; self } diff --git a/pagetop/src/base/component/form/form.rs b/pagetop/src/base/component/form/form.rs index 17059a02..f331700d 100644 --- a/pagetop/src/base/component/form/form.rs +++ b/pagetop/src/base/component/form/form.rs @@ -5,8 +5,8 @@ pub const COMPONENT_FORM: &str = "pagetop::component::form"; pub enum FormMethod {Get, Post} pub struct Form { - renderable: fn() -> bool, weight : isize, + renderable: Renderable, id : IdentifierValue, classes : Classes, action : AttributeValue, @@ -19,8 +19,8 @@ pub struct Form { impl ComponentTrait for Form { fn new() -> Self { Form { - renderable: render_always, weight : 0, + renderable: render_always, id : IdentifierValue::new(), classes : Classes::new_with_default("form"), action : AttributeValue::new(), @@ -39,8 +39,8 @@ impl ComponentTrait for Form { self.weight } - fn is_renderable(&self, _: &InContext) -> bool { - (self.renderable)() + fn is_renderable(&self, context: &InContext) -> bool { + (self.renderable)(context) } fn default_render(&self, context: &mut InContext) -> Markup { @@ -79,7 +79,7 @@ impl Form { self } - pub fn with_renderable(mut self, renderable: fn() -> bool) -> Self { + pub fn with_renderable(mut self, renderable: Renderable) -> Self { self.alter_renderable(renderable); self } @@ -126,7 +126,7 @@ impl Form { self } - pub fn alter_renderable(&mut self, renderable: fn() -> bool) -> &mut Self { + pub fn alter_renderable(&mut self, renderable: Renderable) -> &mut Self { self.renderable = renderable; self } diff --git a/pagetop/src/base/component/form/input.rs b/pagetop/src/base/component/form/input.rs index 8dac6678..505014e4 100644 --- a/pagetop/src/base/component/form/input.rs +++ b/pagetop/src/base/component/form/input.rs @@ -5,8 +5,8 @@ pub const COMPONENT_INPUT: &str = "pagetop::component::form::input"; pub enum InputType {Email, Password, Search, Telephone, Textfield, Url} pub struct Input { - renderable : fn() -> bool, weight : isize, + renderable : Renderable, classes : Classes, input_type : InputType, name : IdentifierValue, @@ -28,8 +28,8 @@ pub struct Input { impl ComponentTrait for Input { fn new() -> Self { Input { - renderable : render_always, weight : 0, + renderable : render_always, classes : Classes::new_with_default("form-item"), input_type : InputType::Textfield, name : IdentifierValue::new(), @@ -58,8 +58,8 @@ impl ComponentTrait for Input { self.weight } - fn is_renderable(&self, _: &InContext) -> bool { - (self.renderable)() + fn is_renderable(&self, context: &InContext) -> bool { + (self.renderable)(context) } fn default_render(&self, _: &mut InContext) -> Markup { @@ -168,7 +168,7 @@ impl Input { self } - pub fn with_renderable(mut self, renderable: fn() -> bool) -> Self { + pub fn with_renderable(mut self, renderable: Renderable) -> Self { self.alter_renderable(renderable); self } @@ -255,7 +255,7 @@ impl Input { self } - pub fn alter_renderable(&mut self, renderable: fn() -> bool) -> &mut Self { + pub fn alter_renderable(&mut self, renderable: Renderable) -> &mut Self { self.renderable = renderable; self } diff --git a/pagetop/src/base/component/grid/column.rs b/pagetop/src/base/component/grid/column.rs index 5aabb947..80d70fd0 100644 --- a/pagetop/src/base/component/grid/column.rs +++ b/pagetop/src/base/component/grid/column.rs @@ -32,8 +32,8 @@ pub enum ColumnSize { IsFull, } pub struct Column { - renderable: fn() -> bool, weight : isize, + renderable: Renderable, id : IdentifierValue, classes : Classes, size : ColumnSize, @@ -44,8 +44,8 @@ pub struct Column { impl ComponentTrait for Column { fn new() -> Self { Column { - renderable: render_always, weight : 0, + renderable: render_always, id : IdentifierValue::new(), classes : Classes::new_with_default(SIZE_DEFAULT), size : ColumnSize::Default, @@ -62,8 +62,8 @@ impl ComponentTrait for Column { self.weight } - fn is_renderable(&self, _: &InContext) -> bool { - (self.renderable)() + fn is_renderable(&self, context: &InContext) -> bool { + (self.renderable)(context) } fn default_render(&self, context: &mut InContext) -> Markup { @@ -92,7 +92,7 @@ impl Column { self } - pub fn with_renderable(mut self, renderable: fn() -> bool) -> Self { + pub fn with_renderable(mut self, renderable: Renderable) -> Self { self.alter_renderable(renderable); self } @@ -129,7 +129,7 @@ impl Column { self } - pub fn alter_renderable(&mut self, renderable: fn() -> bool) -> &mut Self { + pub fn alter_renderable(&mut self, renderable: Renderable) -> &mut Self { self.renderable = renderable; self } diff --git a/pagetop/src/base/component/grid/row.rs b/pagetop/src/base/component/grid/row.rs index 2e67c6f4..5bfa8ad2 100644 --- a/pagetop/src/base/component/grid/row.rs +++ b/pagetop/src/base/component/grid/row.rs @@ -3,8 +3,8 @@ use crate::prelude::*; pub const COMPONENT_ROW: &str = "pagetop::component::grid::row"; pub struct Row { - renderable: fn() -> bool, weight : isize, + renderable: Renderable, id : IdentifierValue, classes : Classes, columns : ComponentsBundle, @@ -14,8 +14,8 @@ pub struct Row { impl ComponentTrait for Row { fn new() -> Self { Row { - renderable: render_always, weight : 0, + renderable: render_always, id : IdentifierValue::new(), classes : Classes::new_with_default("row"), columns : ComponentsBundle::new(), @@ -31,8 +31,8 @@ impl ComponentTrait for Row { self.weight } - fn is_renderable(&self, _: &InContext) -> bool { - (self.renderable)() + fn is_renderable(&self, context: &InContext) -> bool { + (self.renderable)(context) } fn default_render(&self, context: &mut InContext) -> Markup { @@ -61,7 +61,7 @@ impl Row { self } - pub fn with_renderable(mut self, renderable: fn() -> bool) -> Self { + pub fn with_renderable(mut self, renderable: Renderable) -> Self { self.alter_renderable(renderable); self } @@ -93,7 +93,7 @@ impl Row { self } - pub fn alter_renderable(&mut self, renderable: fn() -> bool) -> &mut Self { + pub fn alter_renderable(&mut self, renderable: Renderable) -> &mut Self { self.renderable = renderable; self } diff --git a/pagetop/src/base/component/heading.rs b/pagetop/src/base/component/heading.rs index 23fb0af1..65685c12 100644 --- a/pagetop/src/base/component/heading.rs +++ b/pagetop/src/base/component/heading.rs @@ -15,8 +15,8 @@ pub enum HeadingDisplay { } pub struct Heading { - renderable : fn() -> bool, weight : isize, + renderable : Renderable, id : IdentifierValue, classes : Classes, heading_type: HeadingType, @@ -28,8 +28,8 @@ pub struct Heading { impl ComponentTrait for Heading { fn new() -> Self { Heading { - renderable : render_always, weight : 0, + renderable : render_always, id : IdentifierValue::new(), classes : Classes::new(), heading_type: HeadingType::H1, @@ -47,8 +47,8 @@ impl ComponentTrait for Heading { self.weight } - fn is_renderable(&self, _: &InContext) -> bool { - (self.renderable)() + fn is_renderable(&self, context: &InContext) -> bool { + (self.renderable)(context) } fn default_render(&self, _: &mut InContext) -> Markup { @@ -105,7 +105,7 @@ impl Heading { self } - pub fn with_renderable(mut self, renderable: fn() -> bool) -> Self { + pub fn with_renderable(mut self, renderable: Renderable) -> Self { self.alter_renderable(renderable); self } @@ -147,7 +147,7 @@ impl Heading { self } - pub fn alter_renderable(&mut self, renderable: fn() -> bool) -> &mut Self { + pub fn alter_renderable(&mut self, renderable: Renderable) -> &mut Self { self.renderable = renderable; self } diff --git a/pagetop/src/base/component/icon.rs b/pagetop/src/base/component/icon.rs index a45ebf20..c8f95fa2 100644 --- a/pagetop/src/base/component/icon.rs +++ b/pagetop/src/base/component/icon.rs @@ -3,8 +3,8 @@ use crate::prelude::*; pub const COMPONENT_ICON: &str = "pagetop::component::icon"; pub struct Icon { - renderable: fn() -> bool, weight : isize, + renderable: Renderable, icon_name : String, classes : Classes, } @@ -12,8 +12,8 @@ pub struct Icon { impl ComponentTrait for Icon { fn new() -> Self { Icon { - renderable: render_always, weight : 0, + renderable: render_always, icon_name : "question-circle-fill".to_owned(), classes : Classes::new_with_default("bi-question-circle-fill"), } @@ -27,8 +27,8 @@ impl ComponentTrait for Icon { self.weight } - fn is_renderable(&self, _: &InContext) -> bool { - (self.renderable)() + fn is_renderable(&self, context: &InContext) -> bool { + (self.renderable)(context) } fn default_render(&self, context: &mut InContext) -> Markup { @@ -62,7 +62,7 @@ impl Icon { self } - pub fn with_renderable(mut self, renderable: fn() -> bool) -> Self { + pub fn with_renderable(mut self, renderable: Renderable) -> Self { self.alter_renderable(renderable); self } @@ -84,7 +84,7 @@ impl Icon { self } - pub fn alter_renderable(&mut self, renderable: fn() -> bool) -> &mut Self { + pub fn alter_renderable(&mut self, renderable: Renderable) -> &mut Self { self.renderable = renderable; self } diff --git a/pagetop/src/base/component/image.rs b/pagetop/src/base/component/image.rs index 8a28aba9..66a8b8c8 100644 --- a/pagetop/src/base/component/image.rs +++ b/pagetop/src/base/component/image.rs @@ -3,8 +3,8 @@ use crate::prelude::*; pub const COMPONENT_IMAGE: &str = "pagetop::component::image"; pub struct Image { - renderable: fn() -> bool, weight : isize, + renderable: Renderable, id : IdentifierValue, classes : Classes, source : AttributeValue, @@ -14,8 +14,8 @@ pub struct Image { impl ComponentTrait for Image { fn new() -> Self { Image { - renderable: render_always, weight : 0, + renderable: render_always, id : IdentifierValue::new(), classes : Classes::new_with_default("img-fluid"), source : AttributeValue::new(), @@ -31,8 +31,8 @@ impl ComponentTrait for Image { self.weight } - fn is_renderable(&self, _: &InContext) -> bool { - (self.renderable)() + fn is_renderable(&self, context: &InContext) -> bool { + (self.renderable)(context) } fn default_render(&self, _: &mut InContext) -> Markup { @@ -65,7 +65,7 @@ impl Image { self } - pub fn with_renderable(mut self, renderable: fn() -> bool) -> Self { + pub fn with_renderable(mut self, renderable: Renderable) -> Self { self.alter_renderable(renderable); self } @@ -97,7 +97,7 @@ impl Image { self } - pub fn alter_renderable(&mut self, renderable: fn() -> bool) -> &mut Self { + pub fn alter_renderable(&mut self, renderable: Renderable) -> &mut Self { self.renderable = renderable; self } diff --git a/pagetop/src/base/component/menu.rs b/pagetop/src/base/component/menu.rs index cef6abee..95fd16a6 100644 --- a/pagetop/src/base/component/menu.rs +++ b/pagetop/src/base/component/menu.rs @@ -16,16 +16,16 @@ pub enum MenuItemType { // MenuItem. pub struct MenuItem { - renderable: fn() -> bool, weight : isize, + renderable: Renderable, item_type : MenuItemType, } impl ComponentTrait for MenuItem { fn new() -> Self { MenuItem { - renderable: render_always, weight : 0, + renderable: render_always, item_type : MenuItemType::Void, } } @@ -38,8 +38,8 @@ impl ComponentTrait for MenuItem { self.weight } - fn is_renderable(&self, _: &InContext) -> bool { - (self.renderable)() + fn is_renderable(&self, context: &InContext) -> bool { + (self.renderable)(context) } fn default_render(&self, context: &mut InContext) -> Markup { @@ -85,16 +85,16 @@ impl ComponentTrait for MenuItem { impl MenuItem { pub fn label(label: &str) -> Self { MenuItem { - renderable: render_always, weight : 0, + renderable: render_always, item_type : MenuItemType::Label(label.to_owned()), } } pub fn link(label: &str, path: &str) -> Self { MenuItem { - renderable: render_always, weight : 0, + renderable: render_always, item_type : MenuItemType::Link( label.to_owned(), path.to_owned(), @@ -104,8 +104,8 @@ impl MenuItem { pub fn link_blank(label: &str, path: &str) -> Self { MenuItem { - renderable: render_always, weight : 0, + renderable: render_always, item_type : MenuItemType::LinkBlank( label.to_owned(), path.to_owned(), @@ -115,24 +115,24 @@ impl MenuItem { pub fn html(html: Markup) -> Self { MenuItem { - renderable: render_always, weight : 0, + renderable: render_always, item_type : MenuItemType::Html(html), } } pub fn separator() -> Self { MenuItem { - renderable: render_always, weight : 0, + renderable: render_always, item_type : MenuItemType::Separator, } } pub fn submenu(label: &str, menu: Menu) -> Self { MenuItem { - renderable: render_always, weight : 0, + renderable: render_always, item_type : MenuItemType::Submenu( label.to_owned(), menu @@ -147,7 +147,7 @@ impl MenuItem { self } - pub fn with_renderable(mut self, renderable: fn() -> bool) -> Self { + pub fn with_renderable(mut self, renderable: Renderable) -> Self { self.alter_renderable(renderable); self } @@ -159,7 +159,7 @@ impl MenuItem { self } - pub fn alter_renderable(&mut self, renderable: fn() -> bool) -> &mut Self { + pub fn alter_renderable(&mut self, renderable: Renderable) -> &mut Self { self.renderable = renderable; self } @@ -174,8 +174,8 @@ impl MenuItem { // Menu. pub struct Menu { - renderable: fn() -> bool, weight : isize, + renderable: Renderable, id : IdentifierValue, classes : Classes, items : ComponentsBundle, @@ -185,8 +185,8 @@ pub struct Menu { impl ComponentTrait for Menu { fn new() -> Self { Menu { - renderable: render_always, weight : 0, + renderable: render_always, items : ComponentsBundle::new(), id : IdentifierValue::new(), classes : Classes::new_with_default("sm sm-clean"), @@ -202,8 +202,8 @@ impl ComponentTrait for Menu { self.weight } - fn is_renderable(&self, _: &InContext) -> bool { - (self.renderable)() + fn is_renderable(&self, context: &InContext) -> bool { + (self.renderable)(context) } fn default_render(&self, context: &mut InContext) -> Markup { @@ -255,7 +255,7 @@ impl Menu { self } - pub fn with_renderable(mut self, renderable: fn() -> bool) -> Self { + pub fn with_renderable(mut self, renderable: Renderable) -> Self { self.alter_renderable(renderable); self } @@ -287,7 +287,7 @@ impl Menu { self } - pub fn alter_renderable(&mut self, renderable: fn() -> bool) -> &mut Self { + pub fn alter_renderable(&mut self, renderable: Renderable) -> &mut Self { self.renderable = renderable; self } diff --git a/pagetop/src/base/component/paragraph.rs b/pagetop/src/base/component/paragraph.rs index 6329b312..21750a8b 100644 --- a/pagetop/src/base/component/paragraph.rs +++ b/pagetop/src/base/component/paragraph.rs @@ -12,8 +12,8 @@ pub enum ParagraphDisplay { } pub struct Paragraph { - renderable: fn() -> bool, weight : isize, + renderable: Renderable, id : IdentifierValue, classes : Classes, html : Markup, @@ -24,8 +24,8 @@ pub struct Paragraph { impl ComponentTrait for Paragraph { fn new() -> Self { Paragraph { - renderable: render_always, weight : 0, + renderable: render_always, id : IdentifierValue::new(), classes : Classes::new(), html : html! {}, @@ -42,8 +42,8 @@ impl ComponentTrait for Paragraph { self.weight } - fn is_renderable(&self, _: &InContext) -> bool { - (self.renderable)() + fn is_renderable(&self, context: &InContext) -> bool { + (self.renderable)(context) } fn default_render(&self, _: &mut InContext) -> Markup { @@ -73,7 +73,7 @@ impl Paragraph { self } - pub fn with_renderable(mut self, renderable: fn() -> bool) -> Self { + pub fn with_renderable(mut self, renderable: Renderable) -> Self { self.alter_renderable(renderable); self } @@ -110,7 +110,7 @@ impl Paragraph { self } - pub fn alter_renderable(&mut self, renderable: fn() -> bool) -> &mut Self { + pub fn alter_renderable(&mut self, renderable: Renderable) -> &mut Self { self.renderable = renderable; self } diff --git a/pagetop/src/core/component.rs b/pagetop/src/core/component.rs index adcf0192..a6d91d21 100644 --- a/pagetop/src/core/component.rs +++ b/pagetop/src/core/component.rs @@ -23,6 +23,8 @@ mod all; pub use all::add_component_to; pub(crate) use all::common_components; -pub fn render_always() -> bool { true } +pub type Renderable = fn(_: &InContext) -> bool; -pub fn render_never() -> bool { false } \ No newline at end of file +pub fn render_always(_: &InContext) -> bool { true } + +pub fn render_never(_: &InContext) -> bool { false } \ No newline at end of file