♻️ (pagetop): Refactorización de Contextual

Los métodos `required_id()` y `push_message()` son operaciones de tiempo
de renderizado, no de construcción. Se trasladan como métodos inherentes
de `Context`. También se ajustan los métodos asociados a parámetros.
This commit is contained in:
Manuel Cillero 2026-04-12 13:43:32 +02:00
parent 318d7de2b6
commit 0419658192
7 changed files with 121 additions and 189 deletions

View file

@ -79,10 +79,10 @@ impl Component for Navbar {
}
// Asegura que la barra tiene un `id` para poder asociarlo al colapso/offcanvas.
let id = cx.required_id::<Self>(self.id());
let id = cx.required_id::<Self>(self.id(), 1);
Ok(html! {
nav id=(id) class=[self.classes().get()] {
nav id=(&id) class=[self.classes().get()] {
div class="container-fluid" {
@match self.layout() {
// Barra más sencilla: sólo contenido.
@ -95,7 +95,7 @@ impl Component for Navbar {
@let id_content = util::join!(id, "-content");
(button(cx, TOGGLE_COLLAPSE, &id_content))
div id=(id_content) class="collapse navbar-collapse" {
div id=(&id_content) class="collapse navbar-collapse" {
(items)
}
},
@ -112,7 +112,7 @@ impl Component for Navbar {
(brand.render(cx))
(button(cx, TOGGLE_COLLAPSE, &id_content))
div id=(id_content) class="collapse navbar-collapse" {
div id=(&id_content) class="collapse navbar-collapse" {
(items)
}
},
@ -123,7 +123,7 @@ impl Component for Navbar {
(button(cx, TOGGLE_COLLAPSE, &id_content))
(brand.render(cx))
div id=(id_content) class="collapse navbar-collapse" {
div id=(&id_content) class="collapse navbar-collapse" {
(items)
}
},

View file

@ -152,7 +152,7 @@ impl Offcanvas {
return html! {};
}
let id = cx.required_id::<Self>(self.id());
let id = cx.required_id::<Self>(self.id(), 1);
let id_label = util::join!(id, "-label");
let id_target = util::join!("#", id);
@ -171,7 +171,7 @@ impl Offcanvas {
html! {
div
id=(id)
id=(&id)
class=[self.classes().get()]
tabindex="-1"
data-bs-scroll=[body_scroll]
@ -180,7 +180,7 @@ impl Offcanvas {
{
div class="offcanvas-header" {
@if !title.is_empty() {
h5 class="offcanvas-title" id=(id_label) { (title) }
h5 id=(&id_label) class="offcanvas-title" { (title) }
}
button
type="button"