♻️ Cambia en prepare_component() el tipo devuelto

Elimina `PrepareMarkup` como tipo de retorno de prepare_component() y de
`FnPrepareRender`, sustituyéndolo directamente por `Markup`. Se elimina
una capa innecesaria, ya que html! {} y html! { ... } cubren todos los
casos que ofrecía `PrepareMarkup`.
This commit is contained in:
Manuel Cillero 2026-03-17 20:04:26 +01:00 committed by Manuel Cillero
parent 6203a02b89
commit 908fd969e4
28 changed files with 241 additions and 335 deletions

View file

@ -36,20 +36,20 @@ impl Component for Brand {
self.id.get()
}
fn prepare_component(&self, cx: &mut Context) -> PrepareMarkup {
fn prepare_component(&self, cx: &mut Context) -> Markup {
let image = self.image().render(cx);
let title = self.title().using(cx);
if title.is_empty() && image.is_empty() {
return PrepareMarkup::None;
return html! {};
}
let slogan = self.slogan().using(cx);
PrepareMarkup::With(html! {
html! {
@if let Some(route) = self.route() {
a class="navbar-brand" href=(route(cx)) { (image) (title) (slogan) }
} @else {
span class="navbar-brand" { (image) (title) (slogan) }
}
})
}
}
}

View file

@ -48,7 +48,7 @@ impl Component for Navbar {
});
}
fn prepare_component(&self, cx: &mut Context) -> PrepareMarkup {
fn prepare_component(&self, cx: &mut Context) -> Markup {
// Botón de despliegue (colapso u offcanvas) para la barra.
fn button(cx: &mut Context, data_bs_toggle: &str, id_content: &str) -> Markup {
let id_content_target = util::join!("#", id_content);
@ -75,13 +75,13 @@ impl Component for Navbar {
// Si no hay contenidos, no tiene sentido mostrar una barra vacía.
let items = self.items().render(cx);
if items.is_empty() {
return PrepareMarkup::None;
return html! {};
}
// Asegura que la barra tiene un `id` para poder asociarlo al colapso/offcanvas.
let id = cx.required_id::<Self>(self.id());
PrepareMarkup::With(html! {
html! {
nav id=(id) class=[self.classes().get()] {
div class="container-fluid" {
@match self.layout() {
@ -162,7 +162,7 @@ impl Component for Navbar {
}
}
}
})
}
}
}

View file

@ -46,30 +46,30 @@ impl Component for Item {
}
}
fn prepare_component(&self, cx: &mut Context) -> PrepareMarkup {
fn prepare_component(&self, cx: &mut Context) -> Markup {
match self {
Self::Void => PrepareMarkup::None,
Self::Brand(brand) => PrepareMarkup::With(html! { (brand.render(cx)) }),
Self::Void => html! {},
Self::Brand(brand) => html! { (brand.render(cx)) },
Self::Nav(nav) => {
if let Some(nav) = nav.borrow() {
let items = nav.items().render(cx);
if items.is_empty() {
return PrepareMarkup::None;
return html! {};
}
PrepareMarkup::With(html! {
html! {
ul id=[nav.id()] class=[nav.classes().get()] {
(items)
}
})
}
} else {
PrepareMarkup::None
html! {}
}
}
Self::Text(text) => PrepareMarkup::With(html! {
Self::Text(text) => html! {
span class="navbar-text" {
(text.using(cx))
}
}),
},
}
}
}