✨ Añade ejemplo de barra de menú de navegación
This commit is contained in:
parent
93b669de43
commit
13fbdbe007
3 changed files with 149 additions and 0 deletions
101
examples/navbar-menus.rs
Normal file
101
examples/navbar-menus.rs
Normal file
|
|
@ -0,0 +1,101 @@
|
||||||
|
use pagetop::prelude::*;
|
||||||
|
|
||||||
|
use pagetop_bootsier::prelude::*;
|
||||||
|
|
||||||
|
struct SuperMenu;
|
||||||
|
|
||||||
|
impl Extension for SuperMenu {
|
||||||
|
fn dependencies(&self) -> Vec<ExtensionRef> {
|
||||||
|
vec![&pagetop_aliner::Aliner, &pagetop_bootsier::Bootsier]
|
||||||
|
}
|
||||||
|
|
||||||
|
fn initialize(&self) {
|
||||||
|
let home_path = |cx: &Context| match cx.langid().language.as_str() {
|
||||||
|
"en" => "/en",
|
||||||
|
_ => "/",
|
||||||
|
};
|
||||||
|
|
||||||
|
let navbar_menu = Navbar::brand_left(navbar::Brand::new().with_path(Some(home_path)))
|
||||||
|
.with_expand(BreakPoint::LG)
|
||||||
|
.add_item(navbar::Item::nav(
|
||||||
|
Nav::new()
|
||||||
|
.add_item(nav::Item::link(
|
||||||
|
L10n::l("sample_menus_item_link"),
|
||||||
|
home_path,
|
||||||
|
))
|
||||||
|
.add_item(nav::Item::link_blank(
|
||||||
|
L10n::l("sample_menus_item_blank"),
|
||||||
|
|_| "https://docs.rs/pagetop",
|
||||||
|
))
|
||||||
|
.add_item(nav::Item::dropdown(
|
||||||
|
Dropdown::new()
|
||||||
|
.with_title(L10n::l("sample_menus_test_title"))
|
||||||
|
.add_item(dropdown::Item::header(L10n::l("sample_menus_dev_header")))
|
||||||
|
.add_item(dropdown::Item::link(
|
||||||
|
L10n::l("sample_menus_dev_getting_started"),
|
||||||
|
|_| "/dev/getting-started",
|
||||||
|
))
|
||||||
|
.add_item(dropdown::Item::link(
|
||||||
|
L10n::l("sample_menus_dev_guides"),
|
||||||
|
|_| "/dev/guides",
|
||||||
|
))
|
||||||
|
.add_item(dropdown::Item::link_blank(
|
||||||
|
L10n::l("sample_menus_dev_forum"),
|
||||||
|
|_| "https://forum.example.dev",
|
||||||
|
))
|
||||||
|
.add_item(dropdown::Item::divider())
|
||||||
|
.add_item(dropdown::Item::header(L10n::l("sample_menus_sdk_header")))
|
||||||
|
.add_item(dropdown::Item::link(
|
||||||
|
L10n::l("sample_menus_sdk_rust"),
|
||||||
|
|_| "/dev/sdks/rust",
|
||||||
|
))
|
||||||
|
.add_item(dropdown::Item::link(L10n::l("sample_menus_sdk_js"), |_| {
|
||||||
|
"/dev/sdks/js"
|
||||||
|
}))
|
||||||
|
.add_item(dropdown::Item::link(
|
||||||
|
L10n::l("sample_menus_sdk_python"),
|
||||||
|
|_| "/dev/sdks/python",
|
||||||
|
))
|
||||||
|
.add_item(dropdown::Item::divider())
|
||||||
|
.add_item(dropdown::Item::header(L10n::l(
|
||||||
|
"sample_menus_plugin_header",
|
||||||
|
)))
|
||||||
|
.add_item(dropdown::Item::link(
|
||||||
|
L10n::l("sample_menus_plugin_auth"),
|
||||||
|
|_| "/dev/sdks/rust/plugins/auth",
|
||||||
|
))
|
||||||
|
.add_item(dropdown::Item::link(
|
||||||
|
L10n::l("sample_menus_plugin_cache"),
|
||||||
|
|_| "/dev/sdks/rust/plugins/cache",
|
||||||
|
))
|
||||||
|
.add_item(dropdown::Item::divider())
|
||||||
|
.add_item(dropdown::Item::label(L10n::l("sample_menus_item_label")))
|
||||||
|
.add_item(dropdown::Item::link_disabled(
|
||||||
|
L10n::l("sample_menus_item_disabled"),
|
||||||
|
|_| "#",
|
||||||
|
)),
|
||||||
|
))
|
||||||
|
.add_item(nav::Item::link_disabled(
|
||||||
|
L10n::l("sample_menus_item_disabled"),
|
||||||
|
|_| "#",
|
||||||
|
)),
|
||||||
|
))
|
||||||
|
.add_item(navbar::Item::nav(
|
||||||
|
Nav::new()
|
||||||
|
.add_item(nav::Item::link(
|
||||||
|
L10n::l("sample_menus_item_sign_up"),
|
||||||
|
|_| "/auth/sign-up",
|
||||||
|
))
|
||||||
|
.add_item(nav::Item::link(L10n::l("sample_menus_item_login"), |_| {
|
||||||
|
"/auth/login"
|
||||||
|
})),
|
||||||
|
));
|
||||||
|
|
||||||
|
InRegion::Key("header").add(Child::with(navbar_menu));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[pagetop::main]
|
||||||
|
async fn main() -> std::io::Result<()> {
|
||||||
|
Application::prepare(&SuperMenu).run()?.await
|
||||||
|
}
|
||||||
24
src/locale/en-US/sample.ftl
Normal file
24
src/locale/en-US/sample.ftl
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
# menus.rs
|
||||||
|
sample_menus_item_label = Label
|
||||||
|
sample_menus_item_link = Link
|
||||||
|
sample_menus_item_blank = External link
|
||||||
|
sample_menus_item_disabled = Disabled link
|
||||||
|
|
||||||
|
sample_menus_test_title = Dropdown
|
||||||
|
|
||||||
|
sample_menus_dev_header = Intro
|
||||||
|
sample_menus_dev_getting_started = Getting started
|
||||||
|
sample_menus_dev_guides = Development guides
|
||||||
|
sample_menus_dev_forum = Developers forum
|
||||||
|
|
||||||
|
sample_menus_sdk_header = Software Development Kits
|
||||||
|
sample_menus_sdk_rust = SDKs Rust
|
||||||
|
sample_menus_sdk_js = SDKs JavaScript
|
||||||
|
sample_menus_sdk_python = SDKs Python
|
||||||
|
|
||||||
|
sample_menus_plugin_header = Plugins
|
||||||
|
sample_menus_plugin_auth = Rust Plugin Auth
|
||||||
|
sample_menus_plugin_cache = Rust Plugin Cache
|
||||||
|
|
||||||
|
sample_menus_item_sign_up = Sign up
|
||||||
|
sample_menus_item_login = Login
|
||||||
24
src/locale/es-ES/sample.ftl
Normal file
24
src/locale/es-ES/sample.ftl
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
# menus.rs
|
||||||
|
sample_menus_item_label = Etiqueta
|
||||||
|
sample_menus_item_link = Enlace
|
||||||
|
sample_menus_item_blank = Enlace externo
|
||||||
|
sample_menus_item_disabled = Enlace deshabilitado
|
||||||
|
|
||||||
|
sample_menus_test_title = Desplegable
|
||||||
|
|
||||||
|
sample_menus_dev_header = Introducción
|
||||||
|
sample_menus_dev_getting_started = Primeros pasos
|
||||||
|
sample_menus_dev_guides = Guías de desarrollo
|
||||||
|
sample_menus_dev_forum = Foro de desarrolladores
|
||||||
|
|
||||||
|
sample_menus_sdk_header = Kits de Desarrollo Software
|
||||||
|
sample_menus_sdk_rust = SDKs de Rust
|
||||||
|
sample_menus_sdk_js = SDKs de JavaScript
|
||||||
|
sample_menus_sdk_python = SDKs de Python
|
||||||
|
|
||||||
|
sample_menus_plugin_header = Plugins
|
||||||
|
sample_menus_plugin_auth = Plugin Rust de autenticación
|
||||||
|
sample_menus_plugin_cache = Plugin Rust de caché
|
||||||
|
|
||||||
|
sample_menus_item_sign_up = Registrarse
|
||||||
|
sample_menus_item_login = Iniciar sesión
|
||||||
Loading…
Add table
Add a link
Reference in a new issue