diff --git a/pagetop/src/base/component/anchor.rs b/pagetop/src/base/component/anchor.rs index 6f345a81..0ab91907 100644 --- a/pagetop/src/base/component/anchor.rs +++ b/pagetop/src/base/component/anchor.rs @@ -38,17 +38,15 @@ pub struct Anchor { template : String, } -impl ModuleTrait for Anchor { - fn handle(&self) -> Handle { - COMPONENT_ANCHOR - } -} - impl ComponentTrait for Anchor { fn new() -> Self { Anchor::default() } + fn handle(&self) -> Handle { + COMPONENT_ANCHOR + } + fn weight(&self) -> isize { self.weight } diff --git a/pagetop/src/base/component/block.rs b/pagetop/src/base/component/block.rs index 06f955df..a97b18f4 100644 --- a/pagetop/src/base/component/block.rs +++ b/pagetop/src/base/component/block.rs @@ -16,17 +16,15 @@ pub struct Block { template : String, } -impl ModuleTrait for Block { - fn handle(&self) -> Handle { - COMPONENT_BLOCK - } -} - impl ComponentTrait for Block { fn new() -> Self { Block::default().with_classes(ClassesOp::SetDefault, "block") } + fn handle(&self) -> Handle { + COMPONENT_BLOCK + } + fn weight(&self) -> isize { self.weight } diff --git a/pagetop/src/base/component/container.rs b/pagetop/src/base/component/container.rs index c351a1e5..55081a9d 100644 --- a/pagetop/src/base/component/container.rs +++ b/pagetop/src/base/component/container.rs @@ -27,12 +27,6 @@ pub struct Container { template : String, } -impl ModuleTrait for Container { - fn handle(&self) -> Handle { - COMPONENT_CONTAINER - } -} - impl ComponentTrait for Container { fn new() -> Self { Container::default() @@ -40,6 +34,10 @@ impl ComponentTrait for Container { .with_inner_classes(ClassesOp::SetDefault, "container") } + fn handle(&self) -> Handle { + COMPONENT_CONTAINER + } + fn weight(&self) -> isize { self.weight } diff --git a/pagetop/src/base/component/form_element/button.rs b/pagetop/src/base/component/form_element/button.rs index 616df9c1..c9eb1fc1 100644 --- a/pagetop/src/base/component/form_element/button.rs +++ b/pagetop/src/base/component/form_element/button.rs @@ -24,12 +24,6 @@ pub struct Button { template : String, } -impl ModuleTrait for Button { - fn handle(&self) -> Handle { - COMPONENT_BUTTON - } -} - impl ComponentTrait for Button { fn new() -> Self { Button::default() @@ -37,6 +31,10 @@ impl ComponentTrait for Button { .with_classes(ClassesOp::AddFirst, "form-button") } + fn handle(&self) -> Handle { + COMPONENT_BUTTON + } + fn weight(&self) -> isize { self.weight } diff --git a/pagetop/src/base/component/form_element/date.rs b/pagetop/src/base/component/form_element/date.rs index b6f675bd..c35cc185 100644 --- a/pagetop/src/base/component/form_element/date.rs +++ b/pagetop/src/base/component/form_element/date.rs @@ -21,12 +21,6 @@ pub struct Date { template : String, } -impl ModuleTrait for Date { - fn handle(&self) -> Handle { - COMPONENT_DATE - } -} - impl ComponentTrait for Date { fn new() -> Self { Date::default() @@ -34,6 +28,10 @@ impl ComponentTrait for Date { .with_classes(ClassesOp::AddFirst, "form-type-date") } + fn handle(&self) -> Handle { + COMPONENT_DATE + } + fn weight(&self) -> isize { self.weight } diff --git a/pagetop/src/base/component/form_element/form.rs b/pagetop/src/base/component/form_element/form.rs index 12d3c384..78a90c52 100644 --- a/pagetop/src/base/component/form_element/form.rs +++ b/pagetop/src/base/component/form_element/form.rs @@ -25,12 +25,6 @@ pub struct Form { template : String, } -impl ModuleTrait for Form { - fn handle(&self) -> Handle { - COMPONENT_FORM - } -} - impl ComponentTrait for Form { fn new() -> Self { Form::default() @@ -38,6 +32,10 @@ impl ComponentTrait for Form { .with_charset("UTF-8") } + fn handle(&self) -> Handle { + COMPONENT_FORM + } + fn weight(&self) -> isize { self.weight } diff --git a/pagetop/src/base/component/form_element/hidden.rs b/pagetop/src/base/component/form_element/hidden.rs index 298bbdcd..034b0bde 100644 --- a/pagetop/src/base/component/form_element/hidden.rs +++ b/pagetop/src/base/component/form_element/hidden.rs @@ -10,17 +10,15 @@ pub struct Hidden { value : AttributeValue, } -impl ModuleTrait for Hidden { - fn handle(&self) -> Handle { - COMPONENT_HIDDEN - } -} - impl ComponentTrait for Hidden { fn new() -> Self { Hidden::default() } + fn handle(&self) -> Handle { + COMPONENT_HIDDEN + } + fn weight(&self) -> isize { self.weight } diff --git a/pagetop/src/base/component/form_element/input.rs b/pagetop/src/base/component/form_element/input.rs index 73840429..6ff17690 100644 --- a/pagetop/src/base/component/form_element/input.rs +++ b/pagetop/src/base/component/form_element/input.rs @@ -36,12 +36,6 @@ pub struct Input { template : String, } -impl ModuleTrait for Input { - fn handle(&self) -> Handle { - COMPONENT_INPUT - } -} - impl ComponentTrait for Input { fn new() -> Self { Input::default() @@ -51,6 +45,10 @@ impl ComponentTrait for Input { .with_maxlength(Some(128)) } + fn handle(&self) -> Handle { + COMPONENT_INPUT + } + fn weight(&self) -> isize { self.weight } diff --git a/pagetop/src/base/component/grid/column.rs b/pagetop/src/base/component/grid/column.rs index cb8b1087..51271c5d 100644 --- a/pagetop/src/base/component/grid/column.rs +++ b/pagetop/src/base/component/grid/column.rs @@ -48,17 +48,15 @@ pub struct Column { template : String, } -impl ModuleTrait for Column { - fn handle(&self) -> Handle { - COMPONENT_COLUMN - } -} - impl ComponentTrait for Column { fn new() -> Self { Column::default().with_classes(ClassesOp::SetDefault, SIZE__DEFAULT) } + fn handle(&self) -> Handle { + COMPONENT_COLUMN + } + fn weight(&self) -> isize { self.weight } diff --git a/pagetop/src/base/component/grid/row.rs b/pagetop/src/base/component/grid/row.rs index 899c50f7..8371dadd 100644 --- a/pagetop/src/base/component/grid/row.rs +++ b/pagetop/src/base/component/grid/row.rs @@ -15,17 +15,15 @@ pub struct Row { template : String, } -impl ModuleTrait for Row { - fn handle(&self) -> Handle { - COMPONENT_ROW - } -} - impl ComponentTrait for Row { fn new() -> Self { Row::default().with_classes(ClassesOp::SetDefault, "row") } + fn handle(&self) -> Handle { + COMPONENT_ROW + } + fn weight(&self) -> isize { self.weight } diff --git a/pagetop/src/base/component/heading.rs b/pagetop/src/base/component/heading.rs index 888fa4cb..fb554b32 100644 --- a/pagetop/src/base/component/heading.rs +++ b/pagetop/src/base/component/heading.rs @@ -38,17 +38,15 @@ pub struct Heading { template : String, } -impl ModuleTrait for Heading { - fn handle(&self) -> Handle { - COMPONENT_HEADING - } -} - impl ComponentTrait for Heading { fn new() -> Self { Heading::default() } + fn handle(&self) -> Handle { + COMPONENT_HEADING + } + fn weight(&self) -> isize { self.weight } diff --git a/pagetop/src/base/component/html.rs b/pagetop/src/base/component/html.rs index 7c403f5b..2f135d46 100644 --- a/pagetop/src/base/component/html.rs +++ b/pagetop/src/base/component/html.rs @@ -11,17 +11,15 @@ pub struct Html { template : String, } -impl ModuleTrait for Html { - fn handle(&self) -> Handle { - COMPONENT_HTML - } -} - impl ComponentTrait for Html { fn new() -> Self { Html::default() } + fn handle(&self) -> Handle { + COMPONENT_HTML + } + fn weight(&self) -> isize { self.weight } diff --git a/pagetop/src/base/component/icon.rs b/pagetop/src/base/component/icon.rs index c1612836..8282c631 100644 --- a/pagetop/src/base/component/icon.rs +++ b/pagetop/src/base/component/icon.rs @@ -11,17 +11,15 @@ pub struct Icon { classes : Classes, } -impl ModuleTrait for Icon { - fn handle(&self) -> Handle { - COMPONENT_ICON - } -} - impl ComponentTrait for Icon { fn new() -> Self { Icon::default().with_classes(ClassesOp::SetDefault, "bi-question-circle-fill") } + fn handle(&self) -> Handle { + COMPONENT_ICON + } + fn weight(&self) -> isize { self.weight } diff --git a/pagetop/src/base/component/image.rs b/pagetop/src/base/component/image.rs index e2dd1ba7..e8e9def6 100644 --- a/pagetop/src/base/component/image.rs +++ b/pagetop/src/base/component/image.rs @@ -13,17 +13,15 @@ pub struct Image { template : String, } -impl ModuleTrait for Image { - fn handle(&self) -> Handle { - COMPONENT_IMAGE - } -} - impl ComponentTrait for Image { fn new() -> Self { Image::default().with_classes(ClassesOp::SetDefault, "img-fluid") } + fn handle(&self) -> Handle { + COMPONENT_IMAGE + } + fn weight(&self) -> isize { self.weight } diff --git a/pagetop/src/base/component/paragraph.rs b/pagetop/src/base/component/paragraph.rs index 46edaa31..2ae521f8 100644 --- a/pagetop/src/base/component/paragraph.rs +++ b/pagetop/src/base/component/paragraph.rs @@ -25,17 +25,15 @@ pub struct Paragraph { template : String, } -impl ModuleTrait for Paragraph { - fn handle(&self) -> Handle { - COMPONENT_PARAGRAPH - } -} - impl ComponentTrait for Paragraph { fn new() -> Self { Paragraph::default() } + fn handle(&self) -> Handle { + COMPONENT_PARAGRAPH + } + fn weight(&self) -> isize { self.weight } diff --git a/pagetop/src/core/component/definition.rs b/pagetop/src/core/component/definition.rs index 78943fe1..14608885 100644 --- a/pagetop/src/core/component/definition.rs +++ b/pagetop/src/core/component/definition.rs @@ -1,7 +1,7 @@ use super::RenderContext; -use crate::core::module::ModuleTrait; use crate::html::{html, Markup}; +use crate::util::{single_type_name, Handle}; pub use std::any::Any as AnyComponent; @@ -9,11 +9,21 @@ pub trait BaseComponent { fn render(&mut self, rcx: &mut RenderContext) -> Markup; } -pub trait ComponentTrait: AnyComponent + BaseComponent + ModuleTrait + Send + Sync { +pub trait ComponentTrait: AnyComponent + BaseComponent + Send + Sync { fn new() -> Self where Self: Sized; + fn handle(&self) -> Handle; + + fn name(&self) -> String { + single_type_name::().to_owned() + } + + fn description(&self) -> Option { + None + } + fn weight(&self) -> isize { 0 }