Añade func. component_xxx<T>() para capturar comp.
This commit is contained in:
parent
42a4731bdd
commit
cd7020c77d
16 changed files with 32 additions and 19 deletions
|
|
@ -46,7 +46,7 @@ impl PageComponent for Block {
|
|||
}
|
||||
}
|
||||
|
||||
fn as_any(&self) -> &dyn AnyComponent {
|
||||
fn as_ref_any(&self) -> &dyn AnyComponent {
|
||||
self
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ impl PageComponent for Container {
|
|||
}
|
||||
}
|
||||
|
||||
fn as_any(&self) -> &dyn AnyComponent {
|
||||
fn as_ref_any(&self) -> &dyn AnyComponent {
|
||||
self
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ impl PageComponent for Button {
|
|||
}
|
||||
}
|
||||
|
||||
fn as_any(&self) -> &dyn AnyComponent {
|
||||
fn as_ref_any(&self) -> &dyn AnyComponent {
|
||||
self
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ impl PageComponent for Date {
|
|||
}
|
||||
}
|
||||
|
||||
fn as_any(&self) -> &dyn AnyComponent {
|
||||
fn as_ref_any(&self) -> &dyn AnyComponent {
|
||||
self
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ impl PageComponent for Form {
|
|||
}
|
||||
}
|
||||
|
||||
fn as_any(&self) -> &dyn AnyComponent {
|
||||
fn as_ref_any(&self) -> &dyn AnyComponent {
|
||||
self
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ impl PageComponent for Hidden {
|
|||
}
|
||||
}
|
||||
|
||||
fn as_any(&self) -> &dyn AnyComponent {
|
||||
fn as_ref_any(&self) -> &dyn AnyComponent {
|
||||
self
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -113,7 +113,7 @@ impl PageComponent for Input {
|
|||
}
|
||||
}
|
||||
|
||||
fn as_any(&self) -> &dyn AnyComponent {
|
||||
fn as_ref_any(&self) -> &dyn AnyComponent {
|
||||
self
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ impl PageComponent for Column {
|
|||
}
|
||||
}
|
||||
|
||||
fn as_any(&self) -> &dyn AnyComponent {
|
||||
fn as_ref_any(&self) -> &dyn AnyComponent {
|
||||
self
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ impl PageComponent for Row {
|
|||
}
|
||||
}
|
||||
|
||||
fn as_any(&self) -> &dyn AnyComponent {
|
||||
fn as_ref_any(&self) -> &dyn AnyComponent {
|
||||
self
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ impl PageComponent for Image {
|
|||
}
|
||||
}
|
||||
|
||||
fn as_any(&self) -> &dyn AnyComponent {
|
||||
fn as_ref_any(&self) -> &dyn AnyComponent {
|
||||
self
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -39,11 +39,11 @@ impl ThemeTrait for BulmixTheme {
|
|||
) {
|
||||
match component.name() {
|
||||
"GridRow" => {
|
||||
let row = component.as_mut_any().downcast_mut::<grid::Row>().unwrap();
|
||||
let row = component_mut::<grid::Row>(component);
|
||||
row.alter_classes("columns", ClassesOp::SetDefault);
|
||||
},
|
||||
"GridColumn" => {
|
||||
let col = component.as_mut_any().downcast_mut::<grid::Column>().unwrap();
|
||||
let col = component_mut::<grid::Column>(component);
|
||||
col.alter_classes("column", ClassesOp::SetDefault);
|
||||
},
|
||||
_ => {},
|
||||
|
|
|
|||
|
|
@ -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<T: 'static>(component: &dyn PageComponent) -> &T {
|
||||
component.as_ref_any().downcast_ref::<T>().unwrap()
|
||||
}
|
||||
|
||||
pub fn component_mut<T: 'static>(component: &mut dyn PageComponent) -> &mut T {
|
||||
component.as_mut_any().downcast_mut::<T>().unwrap()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ pub trait ThemeTrait: Send + Sync {
|
|||
|
||||
match component.name() {
|
||||
"Block" => {
|
||||
let block = component.as_mut_any().downcast_mut::<Block>().unwrap();
|
||||
let block = component_mut::<Block>(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::<Block>().unwrap();
|
||||
let block = component_ref::<Block>(component);
|
||||
match block.template() {
|
||||
"default" => Some(block_default(block)),
|
||||
_ => None,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue