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 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
}

View file

@ -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
}

View file

@ -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
}

View file

@ -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
}

View file

@ -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
}

View file

@ -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
}

View file

@ -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
}

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 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
}

View file

@ -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
}

View file

@ -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
}

View file

@ -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
}

View file

@ -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
}

View file

@ -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
}

View file

@ -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
}

View file

@ -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
}

View file

@ -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 }
pub fn render_always(_: &InContext) -> bool { true }
pub fn render_never(_: &InContext) -> bool { false }