♻️ (pagetop): Separa handle_component() en 2 métodos
`Theme::handle_component()` se divide en `setup_component()` (síncrono, muta por tipo con la macro homónima) y `render_component()` (async, decide el renderizado con su propia macro). Aplica mismo criterio que ya separa `Component::setup()` de `prepare()`.
This commit is contained in:
parent
1e2d171805
commit
28f1eee391
15 changed files with 185 additions and 170 deletions
|
|
@ -129,11 +129,7 @@ impl Theme for Bootsier {
|
|||
theme::BootsierColors::from(intent).as_str()
|
||||
}
|
||||
|
||||
async fn handle_component(
|
||||
&self,
|
||||
component: &mut dyn Component,
|
||||
cx: &mut Context,
|
||||
) -> Option<Result<Markup, ComponentError>> {
|
||||
fn setup_component(&self, component: &mut dyn Component, _cx: &mut Context) {
|
||||
setup_component!(component, {
|
||||
Badge => |c| theme::bs::badge::setup(c),
|
||||
Brand => |c| theme::bs::brand::setup(c),
|
||||
|
|
@ -148,7 +144,13 @@ impl Theme for Bootsier {
|
|||
form::select::Field => |c| theme::bs::form::select::setup(c),
|
||||
form::Textarea => |c| theme::bs::form::textarea::setup(c),
|
||||
});
|
||||
}
|
||||
|
||||
async fn render_component(
|
||||
&self,
|
||||
component: &dyn Component,
|
||||
cx: &mut Context,
|
||||
) -> Option<Result<Markup, ComponentError>> {
|
||||
render_component!(component, {
|
||||
layout::Region => |c| theme::bs::layout::region::render(c, cx).await?,
|
||||
layout::Template => |c| theme::bs::layout::template::render(c, cx).await?,
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
//! la shell completa de AdminLTE 4 (barra superior + barra lateral + área de contenido), que se
|
||||
//! activa creando la página con [`Page::admin()`](pagetop::response::Page::admin) en lugar de
|
||||
//! [`Page::new()`](pagetop::response::Page::new). No define sus propias variantes de plantilla:
|
||||
//! intercepta el componente `Template` en `handle_component()` (ver `bs::layout`).
|
||||
//! intercepta el componente `Template` en `render_component()` (ver `bs::layout`).
|
||||
//!
|
||||
//! ```rust,no_run
|
||||
//! use pagetop::prelude::*;
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ pub enum BootsierRegions {
|
|||
/// Los componentes registrados aquí se renderizan directamente dentro del
|
||||
/// `<ul class="sidebar-menu">`, sin el `<div>` envolvente que añade
|
||||
/// [`Region`](pagetop::base::component::layout::Region) por defecto --
|
||||
/// [`Bootsier`](crate::Bootsier) intercepta este componente en `handle_component()` para
|
||||
/// [`Bootsier`](crate::Bootsier) intercepta este componente en `render_component()` para
|
||||
/// renderizarlo así. Los elementos esperados son
|
||||
/// [`bs::sidebar::Item`](crate::theme::bs::sidebar::Item) y
|
||||
/// [`bs::sidebar::Section`](crate::theme::bs::sidebar::Section).
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue