From cd7020c77d5aafe78861db2f7fc1b66ca920c3de Mon Sep 17 00:00:00 2001 From: Manuel Cillero Date: Fri, 29 Apr 2022 20:06:44 +0200 Subject: [PATCH] =?UTF-8?q?A=C3=B1ade=20func.=20component=5Fxxx()=20par?= =?UTF-8?q?a=20capturar=20comp.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pagetop/src/base/component/block.rs | 2 +- pagetop/src/base/component/chunck.rs | 2 +- pagetop/src/base/component/container.rs | 2 +- pagetop/src/base/component/form/button.rs | 2 +- pagetop/src/base/component/form/date.rs | 2 +- pagetop/src/base/component/form/form.rs | 2 +- pagetop/src/base/component/form/hidden.rs | 2 +- pagetop/src/base/component/form/input.rs | 2 +- pagetop/src/base/component/grid/column.rs | 2 +- pagetop/src/base/component/grid/row.rs | 2 +- pagetop/src/base/component/image.rs | 2 +- pagetop/src/base/component/menu.rs | 4 ++-- pagetop/src/base/theme/bulmix/mod.rs | 4 ++-- pagetop/src/response/page/component.rs | 10 +++++++++- pagetop/src/response/page/mod.rs | 7 ++++++- pagetop/src/theme/definition.rs | 4 ++-- 16 files changed, 32 insertions(+), 19 deletions(-) diff --git a/pagetop/src/base/component/block.rs b/pagetop/src/base/component/block.rs index 727ff86e..881a4ac5 100644 --- a/pagetop/src/base/component/block.rs +++ b/pagetop/src/base/component/block.rs @@ -46,7 +46,7 @@ impl PageComponent for Block { } } - fn as_any(&self) -> &dyn AnyComponent { + fn as_ref_any(&self) -> &dyn AnyComponent { self } diff --git a/pagetop/src/base/component/chunck.rs b/pagetop/src/base/component/chunck.rs index e0613d3b..3fa5db9e 100644 --- a/pagetop/src/base/component/chunck.rs +++ b/pagetop/src/base/component/chunck.rs @@ -29,7 +29,7 @@ impl PageComponent for Chunck { html! { (*self.html()) } } - fn as_any(&self) -> &dyn AnyComponent { + fn as_ref_any(&self) -> &dyn AnyComponent { self } diff --git a/pagetop/src/base/component/container.rs b/pagetop/src/base/component/container.rs index 86e907a9..8e53c8b2 100644 --- a/pagetop/src/base/component/container.rs +++ b/pagetop/src/base/component/container.rs @@ -73,7 +73,7 @@ impl PageComponent for Container { } } - fn as_any(&self) -> &dyn AnyComponent { + fn as_ref_any(&self) -> &dyn AnyComponent { self } diff --git a/pagetop/src/base/component/form/button.rs b/pagetop/src/base/component/form/button.rs index 7f7ada99..ff7c7ef4 100644 --- a/pagetop/src/base/component/form/button.rs +++ b/pagetop/src/base/component/form/button.rs @@ -66,7 +66,7 @@ impl PageComponent for Button { } } - fn as_any(&self) -> &dyn AnyComponent { + fn as_ref_any(&self) -> &dyn AnyComponent { self } diff --git a/pagetop/src/base/component/form/date.rs b/pagetop/src/base/component/form/date.rs index a062630d..f24f2bc2 100644 --- a/pagetop/src/base/component/form/date.rs +++ b/pagetop/src/base/component/form/date.rs @@ -85,7 +85,7 @@ impl PageComponent for Date { } } - fn as_any(&self) -> &dyn AnyComponent { + fn as_ref_any(&self) -> &dyn AnyComponent { self } diff --git a/pagetop/src/base/component/form/form.rs b/pagetop/src/base/component/form/form.rs index 0470436f..05d6296c 100644 --- a/pagetop/src/base/component/form/form.rs +++ b/pagetop/src/base/component/form/form.rs @@ -55,7 +55,7 @@ impl PageComponent for Form { } } - fn as_any(&self) -> &dyn AnyComponent { + fn as_ref_any(&self) -> &dyn AnyComponent { self } diff --git a/pagetop/src/base/component/form/hidden.rs b/pagetop/src/base/component/form/hidden.rs index 6e3edecc..ae19cf0b 100644 --- a/pagetop/src/base/component/form/hidden.rs +++ b/pagetop/src/base/component/form/hidden.rs @@ -29,7 +29,7 @@ impl PageComponent for Hidden { } } - fn as_any(&self) -> &dyn AnyComponent { + fn as_ref_any(&self) -> &dyn AnyComponent { self } diff --git a/pagetop/src/base/component/form/input.rs b/pagetop/src/base/component/form/input.rs index 01158ac5..08318bd3 100644 --- a/pagetop/src/base/component/form/input.rs +++ b/pagetop/src/base/component/form/input.rs @@ -113,7 +113,7 @@ impl PageComponent for Input { } } - fn as_any(&self) -> &dyn AnyComponent { + fn as_ref_any(&self) -> &dyn AnyComponent { self } diff --git a/pagetop/src/base/component/grid/column.rs b/pagetop/src/base/component/grid/column.rs index 59948416..d48da98d 100644 --- a/pagetop/src/base/component/grid/column.rs +++ b/pagetop/src/base/component/grid/column.rs @@ -41,7 +41,7 @@ impl PageComponent for Column { } } - fn as_any(&self) -> &dyn AnyComponent { + fn as_ref_any(&self) -> &dyn AnyComponent { self } diff --git a/pagetop/src/base/component/grid/row.rs b/pagetop/src/base/component/grid/row.rs index 15b87cef..761fdb49 100644 --- a/pagetop/src/base/component/grid/row.rs +++ b/pagetop/src/base/component/grid/row.rs @@ -41,7 +41,7 @@ impl PageComponent for Row { } } - fn as_any(&self) -> &dyn AnyComponent { + fn as_ref_any(&self) -> &dyn AnyComponent { self } diff --git a/pagetop/src/base/component/image.rs b/pagetop/src/base/component/image.rs index 0b4b4168..c785f099 100644 --- a/pagetop/src/base/component/image.rs +++ b/pagetop/src/base/component/image.rs @@ -38,7 +38,7 @@ impl PageComponent for Image { } } - fn as_any(&self) -> &dyn AnyComponent { + fn as_ref_any(&self) -> &dyn AnyComponent { self } diff --git a/pagetop/src/base/component/menu.rs b/pagetop/src/base/component/menu.rs index e5fb46cf..805f4dbb 100644 --- a/pagetop/src/base/component/menu.rs +++ b/pagetop/src/base/component/menu.rs @@ -68,7 +68,7 @@ impl PageComponent for MenuItem { } } - fn as_any(&self) -> &dyn AnyComponent { + fn as_ref_any(&self) -> &dyn AnyComponent { self } @@ -226,7 +226,7 @@ impl PageComponent for Menu { } } - fn as_any(&self) -> &dyn AnyComponent { + fn as_ref_any(&self) -> &dyn AnyComponent { self } diff --git a/pagetop/src/base/theme/bulmix/mod.rs b/pagetop/src/base/theme/bulmix/mod.rs index 340b8c35..22a03efe 100644 --- a/pagetop/src/base/theme/bulmix/mod.rs +++ b/pagetop/src/base/theme/bulmix/mod.rs @@ -39,11 +39,11 @@ impl ThemeTrait for BulmixTheme { ) { match component.name() { "GridRow" => { - let row = component.as_mut_any().downcast_mut::().unwrap(); + let row = component_mut::(component); row.alter_classes("columns", ClassesOp::SetDefault); }, "GridColumn" => { - let col = component.as_mut_any().downcast_mut::().unwrap(); + let col = component_mut::(component); col.alter_classes("column", ClassesOp::SetDefault); }, _ => {}, diff --git a/pagetop/src/response/page/component.rs b/pagetop/src/response/page/component.rs index e4d6b61c..de726704 100644 --- a/pagetop/src/response/page/component.rs +++ b/pagetop/src/response/page/component.rs @@ -42,7 +42,15 @@ pub trait PageComponent: AnyComponent + Send + Sync { html! {} } - fn as_any(&self) -> &dyn AnyComponent; + fn as_ref_any(&self) -> &dyn AnyComponent; fn as_mut_any(&mut self) -> &mut dyn AnyComponent; } + +pub fn component_ref(component: &dyn PageComponent) -> &T { + component.as_ref_any().downcast_ref::().unwrap() +} + +pub fn component_mut(component: &mut dyn PageComponent) -> &mut T { + component.as_mut_any().downcast_mut::().unwrap() +} diff --git a/pagetop/src/response/page/mod.rs b/pagetop/src/response/page/mod.rs index e238954b..5f0bf0e6 100644 --- a/pagetop/src/response/page/mod.rs +++ b/pagetop/src/response/page/mod.rs @@ -7,7 +7,12 @@ pub use assets::{ }; mod component; -pub use component::{AnyComponent, PageComponent}; +pub use component::{ + AnyComponent, + PageComponent, + component_ref, + component_mut, +}; mod container; pub use container::PageContainer; diff --git a/pagetop/src/theme/definition.rs b/pagetop/src/theme/definition.rs index 29b20d4c..41113639 100644 --- a/pagetop/src/theme/definition.rs +++ b/pagetop/src/theme/definition.rs @@ -85,7 +85,7 @@ pub trait ThemeTrait: Send + Sync { match component.name() { "Block" => { - let block = component.as_mut_any().downcast_mut::().unwrap(); + let block = component_mut::(component); block.alter_title("New title"); }, _ => {}, @@ -105,7 +105,7 @@ pub trait ThemeTrait: Send + Sync { match component.name() { "Block" => { - let block = component.as_any().downcast_ref::().unwrap(); + let block = component_ref::(component); match block.template() { "default" => Some(block_default(block)), _ => None,