Basic page structure no routing

This commit is contained in:
Jeremy Wall 2022-06-28 20:29:09 -04:00
parent ab019ea072
commit 24fd30af8b
4 changed files with 40 additions and 0 deletions

View File

@ -17,4 +17,5 @@ pub enum AppRoutes {
Plan,
Inventory,
Cook,
Recipe(usize),
}

View File

@ -18,10 +18,12 @@ use crate::app_state::AppRoutes;
mod cook;
mod inventory;
mod plan;
mod recipe;
pub use cook::*;
pub use inventory::*;
pub use plan::*;
pub use recipe::*;
#[derive(Clone)]
pub struct PageState {

34
web/src/pages/recipe.rs Normal file
View File

@ -0,0 +1,34 @@
// Copyright 2022 Jeremy Wall (jeremy@marzhillstudios.com)
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
use crate::components::{recipe::Recipe, tabs::*};
use crate::pages::PageState;
use sycamore::prelude::*;
pub struct RecipePageProps {
pub page_state: PageState,
pub recipe: Signal<usize>,
}
#[component(RecipePage<G>)]
pub fn recipe_page(props: RecipePageProps) -> View<G> {
view! {
TabbedView(TabState {
route: props.page_state.route.clone(),
inner: view! {
Recipe(props.recipe.handle())
}
})
}
}

View File

@ -35,6 +35,9 @@ fn route_switch<G: Html>(page_state: PageState) -> View<G> {
AppRoutes::Cook => view! {
CookPage(CookPageProps { page_state: page_state.clone() })
},
AppRoutes::Recipe(idx) => view! {
RecipePage(RecipePageProps { page_state: page_state.clone(), recipe: Signal::new(*idx) })
}
})
})
}