[bootsier] Nuevos componentes Navbar y Offcanvas

This commit is contained in:
Manuel Cillero 2025-01-05 09:23:56 +01:00
parent 83e09c38ce
commit db13a6ab8b
17 changed files with 743 additions and 16 deletions

View file

@ -0,0 +1,63 @@
use pagetop::prelude::*;
use crate::bs::navbar;
#[derive(AutoDefault)]
pub enum ElementType {
#[default]
None,
Nav(navbar::Nav),
Text(L10n),
}
// Element.
#[rustfmt::skip]
#[derive(AutoDefault)]
pub struct Element {
element_type: ElementType,
}
impl ComponentTrait for Element {
fn new() -> Self {
Element::default()
}
fn prepare_component(&self, cx: &mut Context) -> PrepareMarkup {
match self.element_type() {
ElementType::None => PrepareMarkup::None,
ElementType::Nav(_nav) => PrepareMarkup::With(html! {
span class="navbar-text" {
("Prueba")
}
}),
ElementType::Text(label) => PrepareMarkup::With(html! {
span class="navbar-text" {
(label.escaped(cx.langid()))
}
}),
}
}
}
impl Element {
pub fn nav(nav: navbar::Nav) -> Self {
Element {
element_type: ElementType::Nav(nav),
..Default::default()
}
}
pub fn text(label: L10n) -> Self {
Element {
element_type: ElementType::Text(label),
..Default::default()
}
}
// Element GETTERS.
pub fn element_type(&self) -> &ElementType {
&self.element_type
}
}