Files
rezervovator/src/app.rs
T

105 lines
2.8 KiB
Rust
Raw Normal View History

2023-09-22 21:26:13 +02:00
use crate::locales::init_locales;
2023-09-18 13:10:59 +02:00
use crate::pages::home_page::HomePage;
use crate::pages::settings::Settings;
2023-08-18 12:22:23 +02:00
use leptos::*;
use leptos_meta::*;
use leptos_router::*;
2023-09-22 21:26:13 +02:00
use crate::components::admin_portal::AdminPortal;
use crate::components::header::Header;
use crate::components::user_menu::MenuOpener;
2024-02-14 16:46:31 +01:00
use crate::pages::all_reservations::Bookings;
2023-09-22 21:26:13 +02:00
use crate::pages::login::Login;
2024-02-10 19:52:20 +01:00
use crate::pages::mail_settings::MailSettings;
2023-09-22 21:26:13 +02:00
use crate::pages::public::Public;
2023-08-18 12:22:23 +02:00
#[derive(Clone, Copy)]
pub struct MenuHelper {
opened: RwSignal<MenuOpener>
}
impl MenuHelper {
pub fn new() -> Self {
let opened = create_rw_signal(MenuOpener::new());
Self {
opened
}
}
pub fn set_opened(&self, opened: MenuOpener) {
self.opened.set(opened);
}
pub fn close(&self) {
self.opened.get().close();
}
pub fn reset(&self) {
self.opened.set(MenuOpener::new());
}
}
#[derive(Clone, Copy)]
pub struct DialogHelper {
opened: RwSignal<bool>
}
impl DialogHelper {
pub fn new() -> Self {
let opened = create_rw_signal(false);
Self {
opened
}
}
pub fn set_opened(&self, opened: bool) {
self.opened.set(opened);
}
pub fn is_open(&self) -> bool {
self.opened.get()
}
}
2023-08-18 12:22:23 +02:00
#[component]
2023-09-15 13:55:01 +02:00
pub fn App() -> impl IntoView {
2023-08-18 12:22:23 +02:00
// Provides context that manages stylesheets, titles, meta tags, etc.
2023-09-15 13:55:01 +02:00
provide_meta_context();
2023-09-18 13:10:59 +02:00
init_locales();
2024-02-10 19:52:20 +01:00
provide_context(MenuHelper::new()); // Only one menu can be opened
provide_context(MenuOpener::new()); // Drawer opener
provide_context(DialogHelper::new()); // Gray dialog background
2023-08-18 12:22:23 +02:00
view! {
2023-09-22 21:26:13 +02:00
<Header/>
2023-08-18 12:22:23 +02:00
<Router>
<main>
<Routes>
2023-09-22 21:26:13 +02:00
<Route path="" view=|| view! { <Public/> }/>
<Route path="login" view=|| view! { <Login/> }/>
<Route path="admin" view=|| view! {
<AdminPortal>
<HomePage/>
</AdminPortal>
}/>
<Route path="admin/settings" view=|| view! {
<AdminPortal>
<Settings/>
</AdminPortal>
}/>
2024-02-10 19:52:20 +01:00
<Route path="admin/mail_settings" view=|| view! {
<AdminPortal>
<MailSettings/>
</AdminPortal>
}/>
2024-02-14 16:46:31 +01:00
<Route path="admin/bookings" view=|| view! {
<AdminPortal>
<Bookings/>
</AdminPortal>
}/>
2023-08-18 12:22:23 +02:00
</Routes>
</main>
</Router>
}
}