Corrige asignación de contexto a is_renderable()

This commit is contained in:
Manuel Cillero 2022-07-15 22:20:24 +02:00
parent bc70527ecf
commit 068f3d8520
16 changed files with 106 additions and 104 deletions

View file

@ -19,8 +19,8 @@ pub enum AnchorTarget {
pub type AnchorIcon = ComponentsBundle; pub type AnchorIcon = ComponentsBundle;
pub struct Anchor { pub struct Anchor {
renderable : fn() -> bool,
weight : isize, weight : isize,
renderable : Renderable,
id : IdentifierValue, id : IdentifierValue,
classes : Classes, classes : Classes,
anchor_type: AnchorType, anchor_type: AnchorType,
@ -35,8 +35,8 @@ pub struct Anchor {
impl ComponentTrait for Anchor { impl ComponentTrait for Anchor {
fn new() -> Self { fn new() -> Self {
Anchor { Anchor {
renderable : render_always,
weight : 0, weight : 0,
renderable : render_always,
id : IdentifierValue::new(), id : IdentifierValue::new(),
classes : Classes::new(), classes : Classes::new(),
anchor_type: AnchorType::Link, anchor_type: AnchorType::Link,
@ -57,8 +57,8 @@ impl ComponentTrait for Anchor {
self.weight self.weight
} }
fn is_renderable(&self, _: &InContext) -> bool { fn is_renderable(&self, context: &InContext) -> bool {
(self.renderable)() (self.renderable)(context)
} }
fn default_render(&self, context: &mut InContext) -> Markup { fn default_render(&self, context: &mut InContext) -> Markup {
@ -112,7 +112,7 @@ impl Anchor {
self 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.alter_renderable(renderable);
self self
} }
@ -169,7 +169,7 @@ impl Anchor {
self 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.renderable = renderable;
self self
} }

View file

@ -3,8 +3,8 @@ use crate::prelude::*;
pub const COMPONENT_BLOCK: &str = "pagetop::component::block"; pub const COMPONENT_BLOCK: &str = "pagetop::component::block";
pub struct Block { pub struct Block {
renderable: fn() -> bool,
weight : isize, weight : isize,
renderable: Renderable,
id : IdentifierValue, id : IdentifierValue,
classes : Classes, classes : Classes,
title : AttributeValue, title : AttributeValue,
@ -15,8 +15,8 @@ pub struct Block {
impl ComponentTrait for Block { impl ComponentTrait for Block {
fn new() -> Self { fn new() -> Self {
Block { Block {
renderable: render_always,
weight : 0, weight : 0,
renderable: render_always,
id : IdentifierValue::new(), id : IdentifierValue::new(),
classes : Classes::new_with_default("block"), classes : Classes::new_with_default("block"),
title : AttributeValue::new(), title : AttributeValue::new(),
@ -33,8 +33,8 @@ impl ComponentTrait for Block {
self.weight self.weight
} }
fn is_renderable(&self, _: &InContext) -> bool { fn is_renderable(&self, context: &InContext) -> bool {
(self.renderable)() (self.renderable)(context)
} }
fn default_render(&self, context: &mut InContext) -> Markup { fn default_render(&self, context: &mut InContext) -> Markup {
@ -70,7 +70,7 @@ impl Block {
self 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.alter_renderable(renderable);
self self
} }
@ -107,7 +107,7 @@ impl Block {
self 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.renderable = renderable;
self self
} }

View file

@ -3,8 +3,8 @@ use crate::prelude::*;
pub const COMPONENT_CHUNCK: &str = "pagetop::component::chunck"; pub const COMPONENT_CHUNCK: &str = "pagetop::component::chunck";
pub struct Chunck { pub struct Chunck {
renderable: fn() -> bool,
weight : isize, weight : isize,
renderable: Renderable,
html : Markup, html : Markup,
template : String, template : String,
} }
@ -12,8 +12,8 @@ pub struct Chunck {
impl ComponentTrait for Chunck { impl ComponentTrait for Chunck {
fn new() -> Self { fn new() -> Self {
Chunck { Chunck {
renderable: render_always,
weight : 0, weight : 0,
renderable: render_always,
html : html! {}, html : html! {},
template : "default".to_owned(), template : "default".to_owned(),
} }
@ -27,8 +27,8 @@ impl ComponentTrait for Chunck {
self.weight self.weight
} }
fn is_renderable(&self, _: &InContext) -> bool { fn is_renderable(&self, context: &InContext) -> bool {
(self.renderable)() (self.renderable)(context)
} }
fn default_render(&self, _: &mut InContext) -> Markup { fn default_render(&self, _: &mut InContext) -> Markup {
@ -56,7 +56,7 @@ impl Chunck {
self 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.alter_renderable(renderable);
self self
} }
@ -78,7 +78,7 @@ impl Chunck {
self 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.renderable = renderable;
self self
} }

View file

@ -5,8 +5,8 @@ pub const COMPONENT_CONTAINER: &str = "pagetop::component::container";
pub enum ContainerType { Header, Footer, Main, Section, Wrapper } pub enum ContainerType { Header, Footer, Main, Section, Wrapper }
pub struct Container { pub struct Container {
renderable : fn() -> bool,
weight : isize, weight : isize,
renderable : Renderable,
id : IdentifierValue, id : IdentifierValue,
classes : Classes, classes : Classes,
inner_classes : Classes, inner_classes : Classes,
@ -18,8 +18,8 @@ pub struct Container {
impl ComponentTrait for Container { impl ComponentTrait for Container {
fn new() -> Self { fn new() -> Self {
Container { Container {
renderable : render_always,
weight : 0, weight : 0,
renderable : render_always,
id : IdentifierValue::new(), id : IdentifierValue::new(),
classes : Classes::new_with_default("container"), classes : Classes::new_with_default("container"),
inner_classes : Classes::new_with_default("container"), inner_classes : Classes::new_with_default("container"),
@ -37,8 +37,8 @@ impl ComponentTrait for Container {
self.weight self.weight
} }
fn is_renderable(&self, _: &InContext) -> bool { fn is_renderable(&self, context: &InContext) -> bool {
(self.renderable)() (self.renderable)(context)
} }
fn default_render(&self, context: &mut InContext) -> Markup { fn default_render(&self, context: &mut InContext) -> Markup {
@ -120,7 +120,7 @@ impl Container {
self 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.alter_renderable(renderable);
self self
} }
@ -157,7 +157,7 @@ impl Container {
self 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.renderable = renderable;
self self
} }

View file

@ -5,8 +5,8 @@ pub const COMPONENT_BUTTON: &str = "pagetop::component::form::button";
pub enum ButtonType {Button, Reset, Submit} pub enum ButtonType {Button, Reset, Submit}
pub struct Button { pub struct Button {
renderable : fn() -> bool,
weight : isize, weight : isize,
renderable : Renderable,
classes : Classes, classes : Classes,
button_type: ButtonType, button_type: ButtonType,
name : AttributeValue, name : AttributeValue,
@ -19,8 +19,8 @@ pub struct Button {
impl ComponentTrait for Button { impl ComponentTrait for Button {
fn new() -> Self { fn new() -> Self {
Button { Button {
renderable : render_always,
weight : 0, weight : 0,
renderable : render_always,
classes : Classes::new_with_default("btn btn-primary"), classes : Classes::new_with_default("btn btn-primary"),
button_type: ButtonType::Button, button_type: ButtonType::Button,
name : AttributeValue::new(), name : AttributeValue::new(),
@ -40,8 +40,8 @@ impl ComponentTrait for Button {
self.weight self.weight
} }
fn is_renderable(&self, _: &InContext) -> bool { fn is_renderable(&self, context: &InContext) -> bool {
(self.renderable)() (self.renderable)(context)
} }
fn default_render(&self, _: &mut InContext) -> Markup { fn default_render(&self, _: &mut InContext) -> Markup {
@ -109,7 +109,7 @@ impl Button {
self 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.alter_renderable(renderable);
self self
} }
@ -151,7 +151,7 @@ impl Button {
self 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.renderable = renderable;
self self
} }

View file

@ -3,8 +3,8 @@ use crate::prelude::*;
pub const COMPONENT_DATE: &str = "pagetop::component::form::date"; pub const COMPONENT_DATE: &str = "pagetop::component::form::date";
pub struct Date { pub struct Date {
renderable : fn() -> bool,
weight : isize, weight : isize,
renderable : Renderable,
classes : Classes, classes : Classes,
name : AttributeValue, name : AttributeValue,
value : AttributeValue, value : AttributeValue,
@ -22,8 +22,8 @@ pub struct Date {
impl ComponentTrait for Date { impl ComponentTrait for Date {
fn new() -> Self { fn new() -> Self {
Date { Date {
renderable : render_always,
weight : 0, weight : 0,
renderable : render_always,
classes : Classes::new_with_default("form-item"), classes : Classes::new_with_default("form-item"),
name : AttributeValue::new(), name : AttributeValue::new(),
value : AttributeValue::new(), value : AttributeValue::new(),
@ -48,8 +48,8 @@ impl ComponentTrait for Date {
self.weight self.weight
} }
fn is_renderable(&self, _: &InContext) -> bool { fn is_renderable(&self, context: &InContext) -> bool {
(self.renderable)() (self.renderable)(context)
} }
fn default_render(&self, _: &mut InContext) -> Markup { fn default_render(&self, _: &mut InContext) -> Markup {
@ -109,7 +109,7 @@ impl Date {
self 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.alter_renderable(renderable);
self self
} }
@ -181,7 +181,7 @@ impl Date {
self 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.renderable = renderable;
self self
} }

View file

@ -5,8 +5,8 @@ pub const COMPONENT_FORM: &str = "pagetop::component::form";
pub enum FormMethod {Get, Post} pub enum FormMethod {Get, Post}
pub struct Form { pub struct Form {
renderable: fn() -> bool,
weight : isize, weight : isize,
renderable: Renderable,
id : IdentifierValue, id : IdentifierValue,
classes : Classes, classes : Classes,
action : AttributeValue, action : AttributeValue,
@ -19,8 +19,8 @@ pub struct Form {
impl ComponentTrait for Form { impl ComponentTrait for Form {
fn new() -> Self { fn new() -> Self {
Form { Form {
renderable: render_always,
weight : 0, weight : 0,
renderable: render_always,
id : IdentifierValue::new(), id : IdentifierValue::new(),
classes : Classes::new_with_default("form"), classes : Classes::new_with_default("form"),
action : AttributeValue::new(), action : AttributeValue::new(),
@ -39,8 +39,8 @@ impl ComponentTrait for Form {
self.weight self.weight
} }
fn is_renderable(&self, _: &InContext) -> bool { fn is_renderable(&self, context: &InContext) -> bool {
(self.renderable)() (self.renderable)(context)
} }
fn default_render(&self, context: &mut InContext) -> Markup { fn default_render(&self, context: &mut InContext) -> Markup {
@ -79,7 +79,7 @@ impl Form {
self 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.alter_renderable(renderable);
self self
} }
@ -126,7 +126,7 @@ impl Form {
self 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.renderable = renderable;
self self
} }

View file

@ -5,8 +5,8 @@ pub const COMPONENT_INPUT: &str = "pagetop::component::form::input";
pub enum InputType {Email, Password, Search, Telephone, Textfield, Url} pub enum InputType {Email, Password, Search, Telephone, Textfield, Url}
pub struct Input { pub struct Input {
renderable : fn() -> bool,
weight : isize, weight : isize,
renderable : Renderable,
classes : Classes, classes : Classes,
input_type : InputType, input_type : InputType,
name : IdentifierValue, name : IdentifierValue,
@ -28,8 +28,8 @@ pub struct Input {
impl ComponentTrait for Input { impl ComponentTrait for Input {
fn new() -> Self { fn new() -> Self {
Input { Input {
renderable : render_always,
weight : 0, weight : 0,
renderable : render_always,
classes : Classes::new_with_default("form-item"), classes : Classes::new_with_default("form-item"),
input_type : InputType::Textfield, input_type : InputType::Textfield,
name : IdentifierValue::new(), name : IdentifierValue::new(),
@ -58,8 +58,8 @@ impl ComponentTrait for Input {
self.weight self.weight
} }
fn is_renderable(&self, _: &InContext) -> bool { fn is_renderable(&self, context: &InContext) -> bool {
(self.renderable)() (self.renderable)(context)
} }
fn default_render(&self, _: &mut InContext) -> Markup { fn default_render(&self, _: &mut InContext) -> Markup {
@ -168,7 +168,7 @@ impl Input {
self 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.alter_renderable(renderable);
self self
} }
@ -255,7 +255,7 @@ impl Input {
self 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.renderable = renderable;
self self
} }

View file

@ -32,8 +32,8 @@ pub enum ColumnSize {
IsFull, IsFull,
} }
pub struct Column { pub struct Column {
renderable: fn() -> bool,
weight : isize, weight : isize,
renderable: Renderable,
id : IdentifierValue, id : IdentifierValue,
classes : Classes, classes : Classes,
size : ColumnSize, size : ColumnSize,
@ -44,8 +44,8 @@ pub struct Column {
impl ComponentTrait for Column { impl ComponentTrait for Column {
fn new() -> Self { fn new() -> Self {
Column { Column {
renderable: render_always,
weight : 0, weight : 0,
renderable: render_always,
id : IdentifierValue::new(), id : IdentifierValue::new(),
classes : Classes::new_with_default(SIZE_DEFAULT), classes : Classes::new_with_default(SIZE_DEFAULT),
size : ColumnSize::Default, size : ColumnSize::Default,
@ -62,8 +62,8 @@ impl ComponentTrait for Column {
self.weight self.weight
} }
fn is_renderable(&self, _: &InContext) -> bool { fn is_renderable(&self, context: &InContext) -> bool {
(self.renderable)() (self.renderable)(context)
} }
fn default_render(&self, context: &mut InContext) -> Markup { fn default_render(&self, context: &mut InContext) -> Markup {
@ -92,7 +92,7 @@ impl Column {
self 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.alter_renderable(renderable);
self self
} }
@ -129,7 +129,7 @@ impl Column {
self 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.renderable = renderable;
self self
} }

View file

@ -3,8 +3,8 @@ use crate::prelude::*;
pub const COMPONENT_ROW: &str = "pagetop::component::grid::row"; pub const COMPONENT_ROW: &str = "pagetop::component::grid::row";
pub struct Row { pub struct Row {
renderable: fn() -> bool,
weight : isize, weight : isize,
renderable: Renderable,
id : IdentifierValue, id : IdentifierValue,
classes : Classes, classes : Classes,
columns : ComponentsBundle, columns : ComponentsBundle,
@ -14,8 +14,8 @@ pub struct Row {
impl ComponentTrait for Row { impl ComponentTrait for Row {
fn new() -> Self { fn new() -> Self {
Row { Row {
renderable: render_always,
weight : 0, weight : 0,
renderable: render_always,
id : IdentifierValue::new(), id : IdentifierValue::new(),
classes : Classes::new_with_default("row"), classes : Classes::new_with_default("row"),
columns : ComponentsBundle::new(), columns : ComponentsBundle::new(),
@ -31,8 +31,8 @@ impl ComponentTrait for Row {
self.weight self.weight
} }
fn is_renderable(&self, _: &InContext) -> bool { fn is_renderable(&self, context: &InContext) -> bool {
(self.renderable)() (self.renderable)(context)
} }
fn default_render(&self, context: &mut InContext) -> Markup { fn default_render(&self, context: &mut InContext) -> Markup {
@ -61,7 +61,7 @@ impl Row {
self 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.alter_renderable(renderable);
self self
} }
@ -93,7 +93,7 @@ impl Row {
self 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.renderable = renderable;
self self
} }

View file

@ -15,8 +15,8 @@ pub enum HeadingDisplay {
} }
pub struct Heading { pub struct Heading {
renderable : fn() -> bool,
weight : isize, weight : isize,
renderable : Renderable,
id : IdentifierValue, id : IdentifierValue,
classes : Classes, classes : Classes,
heading_type: HeadingType, heading_type: HeadingType,
@ -28,8 +28,8 @@ pub struct Heading {
impl ComponentTrait for Heading { impl ComponentTrait for Heading {
fn new() -> Self { fn new() -> Self {
Heading { Heading {
renderable : render_always,
weight : 0, weight : 0,
renderable : render_always,
id : IdentifierValue::new(), id : IdentifierValue::new(),
classes : Classes::new(), classes : Classes::new(),
heading_type: HeadingType::H1, heading_type: HeadingType::H1,
@ -47,8 +47,8 @@ impl ComponentTrait for Heading {
self.weight self.weight
} }
fn is_renderable(&self, _: &InContext) -> bool { fn is_renderable(&self, context: &InContext) -> bool {
(self.renderable)() (self.renderable)(context)
} }
fn default_render(&self, _: &mut InContext) -> Markup { fn default_render(&self, _: &mut InContext) -> Markup {
@ -105,7 +105,7 @@ impl Heading {
self 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.alter_renderable(renderable);
self self
} }
@ -147,7 +147,7 @@ impl Heading {
self 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.renderable = renderable;
self self
} }

View file

@ -3,8 +3,8 @@ use crate::prelude::*;
pub const COMPONENT_ICON: &str = "pagetop::component::icon"; pub const COMPONENT_ICON: &str = "pagetop::component::icon";
pub struct Icon { pub struct Icon {
renderable: fn() -> bool,
weight : isize, weight : isize,
renderable: Renderable,
icon_name : String, icon_name : String,
classes : Classes, classes : Classes,
} }
@ -12,8 +12,8 @@ pub struct Icon {
impl ComponentTrait for Icon { impl ComponentTrait for Icon {
fn new() -> Self { fn new() -> Self {
Icon { Icon {
renderable: render_always,
weight : 0, weight : 0,
renderable: render_always,
icon_name : "question-circle-fill".to_owned(), icon_name : "question-circle-fill".to_owned(),
classes : Classes::new_with_default("bi-question-circle-fill"), classes : Classes::new_with_default("bi-question-circle-fill"),
} }
@ -27,8 +27,8 @@ impl ComponentTrait for Icon {
self.weight self.weight
} }
fn is_renderable(&self, _: &InContext) -> bool { fn is_renderable(&self, context: &InContext) -> bool {
(self.renderable)() (self.renderable)(context)
} }
fn default_render(&self, context: &mut InContext) -> Markup { fn default_render(&self, context: &mut InContext) -> Markup {
@ -62,7 +62,7 @@ impl Icon {
self 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.alter_renderable(renderable);
self self
} }
@ -84,7 +84,7 @@ impl Icon {
self 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.renderable = renderable;
self self
} }

View file

@ -3,8 +3,8 @@ use crate::prelude::*;
pub const COMPONENT_IMAGE: &str = "pagetop::component::image"; pub const COMPONENT_IMAGE: &str = "pagetop::component::image";
pub struct Image { pub struct Image {
renderable: fn() -> bool,
weight : isize, weight : isize,
renderable: Renderable,
id : IdentifierValue, id : IdentifierValue,
classes : Classes, classes : Classes,
source : AttributeValue, source : AttributeValue,
@ -14,8 +14,8 @@ pub struct Image {
impl ComponentTrait for Image { impl ComponentTrait for Image {
fn new() -> Self { fn new() -> Self {
Image { Image {
renderable: render_always,
weight : 0, weight : 0,
renderable: render_always,
id : IdentifierValue::new(), id : IdentifierValue::new(),
classes : Classes::new_with_default("img-fluid"), classes : Classes::new_with_default("img-fluid"),
source : AttributeValue::new(), source : AttributeValue::new(),
@ -31,8 +31,8 @@ impl ComponentTrait for Image {
self.weight self.weight
} }
fn is_renderable(&self, _: &InContext) -> bool { fn is_renderable(&self, context: &InContext) -> bool {
(self.renderable)() (self.renderable)(context)
} }
fn default_render(&self, _: &mut InContext) -> Markup { fn default_render(&self, _: &mut InContext) -> Markup {
@ -65,7 +65,7 @@ impl Image {
self 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.alter_renderable(renderable);
self self
} }
@ -97,7 +97,7 @@ impl Image {
self 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.renderable = renderable;
self self
} }

View file

@ -16,16 +16,16 @@ pub enum MenuItemType {
// MenuItem. // MenuItem.
pub struct MenuItem { pub struct MenuItem {
renderable: fn() -> bool,
weight : isize, weight : isize,
renderable: Renderable,
item_type : MenuItemType, item_type : MenuItemType,
} }
impl ComponentTrait for MenuItem { impl ComponentTrait for MenuItem {
fn new() -> Self { fn new() -> Self {
MenuItem { MenuItem {
renderable: render_always,
weight : 0, weight : 0,
renderable: render_always,
item_type : MenuItemType::Void, item_type : MenuItemType::Void,
} }
} }
@ -38,8 +38,8 @@ impl ComponentTrait for MenuItem {
self.weight self.weight
} }
fn is_renderable(&self, _: &InContext) -> bool { fn is_renderable(&self, context: &InContext) -> bool {
(self.renderable)() (self.renderable)(context)
} }
fn default_render(&self, context: &mut InContext) -> Markup { fn default_render(&self, context: &mut InContext) -> Markup {
@ -85,16 +85,16 @@ impl ComponentTrait for MenuItem {
impl MenuItem { impl MenuItem {
pub fn label(label: &str) -> Self { pub fn label(label: &str) -> Self {
MenuItem { MenuItem {
renderable: render_always,
weight : 0, weight : 0,
renderable: render_always,
item_type : MenuItemType::Label(label.to_owned()), item_type : MenuItemType::Label(label.to_owned()),
} }
} }
pub fn link(label: &str, path: &str) -> Self { pub fn link(label: &str, path: &str) -> Self {
MenuItem { MenuItem {
renderable: render_always,
weight : 0, weight : 0,
renderable: render_always,
item_type : MenuItemType::Link( item_type : MenuItemType::Link(
label.to_owned(), label.to_owned(),
path.to_owned(), path.to_owned(),
@ -104,8 +104,8 @@ impl MenuItem {
pub fn link_blank(label: &str, path: &str) -> Self { pub fn link_blank(label: &str, path: &str) -> Self {
MenuItem { MenuItem {
renderable: render_always,
weight : 0, weight : 0,
renderable: render_always,
item_type : MenuItemType::LinkBlank( item_type : MenuItemType::LinkBlank(
label.to_owned(), label.to_owned(),
path.to_owned(), path.to_owned(),
@ -115,24 +115,24 @@ impl MenuItem {
pub fn html(html: Markup) -> Self { pub fn html(html: Markup) -> Self {
MenuItem { MenuItem {
renderable: render_always,
weight : 0, weight : 0,
renderable: render_always,
item_type : MenuItemType::Html(html), item_type : MenuItemType::Html(html),
} }
} }
pub fn separator() -> Self { pub fn separator() -> Self {
MenuItem { MenuItem {
renderable: render_always,
weight : 0, weight : 0,
renderable: render_always,
item_type : MenuItemType::Separator, item_type : MenuItemType::Separator,
} }
} }
pub fn submenu(label: &str, menu: Menu) -> Self { pub fn submenu(label: &str, menu: Menu) -> Self {
MenuItem { MenuItem {
renderable: render_always,
weight : 0, weight : 0,
renderable: render_always,
item_type : MenuItemType::Submenu( item_type : MenuItemType::Submenu(
label.to_owned(), label.to_owned(),
menu menu
@ -147,7 +147,7 @@ impl MenuItem {
self 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.alter_renderable(renderable);
self self
} }
@ -159,7 +159,7 @@ impl MenuItem {
self 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.renderable = renderable;
self self
} }
@ -174,8 +174,8 @@ impl MenuItem {
// Menu. // Menu.
pub struct Menu { pub struct Menu {
renderable: fn() -> bool,
weight : isize, weight : isize,
renderable: Renderable,
id : IdentifierValue, id : IdentifierValue,
classes : Classes, classes : Classes,
items : ComponentsBundle, items : ComponentsBundle,
@ -185,8 +185,8 @@ pub struct Menu {
impl ComponentTrait for Menu { impl ComponentTrait for Menu {
fn new() -> Self { fn new() -> Self {
Menu { Menu {
renderable: render_always,
weight : 0, weight : 0,
renderable: render_always,
items : ComponentsBundle::new(), items : ComponentsBundle::new(),
id : IdentifierValue::new(), id : IdentifierValue::new(),
classes : Classes::new_with_default("sm sm-clean"), classes : Classes::new_with_default("sm sm-clean"),
@ -202,8 +202,8 @@ impl ComponentTrait for Menu {
self.weight self.weight
} }
fn is_renderable(&self, _: &InContext) -> bool { fn is_renderable(&self, context: &InContext) -> bool {
(self.renderable)() (self.renderable)(context)
} }
fn default_render(&self, context: &mut InContext) -> Markup { fn default_render(&self, context: &mut InContext) -> Markup {
@ -255,7 +255,7 @@ impl Menu {
self 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.alter_renderable(renderable);
self self
} }
@ -287,7 +287,7 @@ impl Menu {
self 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.renderable = renderable;
self self
} }

View file

@ -12,8 +12,8 @@ pub enum ParagraphDisplay {
} }
pub struct Paragraph { pub struct Paragraph {
renderable: fn() -> bool,
weight : isize, weight : isize,
renderable: Renderable,
id : IdentifierValue, id : IdentifierValue,
classes : Classes, classes : Classes,
html : Markup, html : Markup,
@ -24,8 +24,8 @@ pub struct Paragraph {
impl ComponentTrait for Paragraph { impl ComponentTrait for Paragraph {
fn new() -> Self { fn new() -> Self {
Paragraph { Paragraph {
renderable: render_always,
weight : 0, weight : 0,
renderable: render_always,
id : IdentifierValue::new(), id : IdentifierValue::new(),
classes : Classes::new(), classes : Classes::new(),
html : html! {}, html : html! {},
@ -42,8 +42,8 @@ impl ComponentTrait for Paragraph {
self.weight self.weight
} }
fn is_renderable(&self, _: &InContext) -> bool { fn is_renderable(&self, context: &InContext) -> bool {
(self.renderable)() (self.renderable)(context)
} }
fn default_render(&self, _: &mut InContext) -> Markup { fn default_render(&self, _: &mut InContext) -> Markup {
@ -73,7 +73,7 @@ impl Paragraph {
self 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.alter_renderable(renderable);
self self
} }
@ -110,7 +110,7 @@ impl Paragraph {
self 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.renderable = renderable;
self self
} }

View file

@ -23,6 +23,8 @@ mod all;
pub use all::add_component_to; pub use all::add_component_to;
pub(crate) use all::common_components; pub(crate) use all::common_components;
pub fn render_always() -> bool { true } pub type Renderable = fn(_: &InContext) -> bool;
pub fn render_never() -> bool { false } pub fn render_always(_: &InContext) -> bool { true }
pub fn render_never(_: &InContext) -> bool { false }