diff --git a/web/src/pages/public.rs b/web/src/pages/public.rs index 59651de..e932700 100644 --- a/web/src/pages/public.rs +++ b/web/src/pages/public.rs @@ -14,14 +14,21 @@ pub mod layout { pub fn view( url: Url, content: Node, - categories: &[model::api::Category], + categories: Option<&[model::api::Category]>, ) -> Node { + let sidebar = match categories { + Some(categories) => { + let sidebar = super::sidebar::view(url, categories); + div![ + C!["flex flex-col w-64 h-screen px-4 py-8 overflow-y-auto border-r"], + sidebar + ] + } + _ => empty![], + }; div![ C!["flex"], - div![ - C!["flex flex-col w-64 h-screen px-4 py-8 overflow-y-auto border-r"], - super::sidebar::view(url, categories) - ], + sidebar, div![C!["w-full h-full p-4 m-8 overflow-y-auto"], content] ] } diff --git a/web/src/pages/public/listing.rs b/web/src/pages/public/listing.rs index 7344dfe..625c572 100644 --- a/web/src/pages/public/listing.rs +++ b/web/src/pages/public/listing.rs @@ -126,7 +126,7 @@ pub fn view(model: &crate::Model, page: &ListingPage) -> Node { div![ crate::shared::view::public_navbar(model), - super::layout::view(page.url.clone(), content, &page.categories) + super::layout::view(model.url.clone(), content, Some(&page.categories)) ] } diff --git a/web/src/pages/public/product.rs b/web/src/pages/public/product.rs index 514c3de..5f9c0f3 100644 --- a/web/src/pages/public/product.rs +++ b/web/src/pages/public/product.rs @@ -26,9 +26,9 @@ pub fn init(mut url: Url, orders: &mut impl Orders) -> ProductPage { } } -pub fn page_changed(url: Url, model: &mut ProductPage) {} +pub fn page_changed(_url: Url, _model: &mut ProductPage) {} -pub fn update(msg: Msg, model: &mut ProductPage, orders: &mut impl Orders) { +pub fn update(msg: Msg, model: &mut ProductPage, _orders: &mut impl Orders) { match msg { Msg::ProductFetched(Ok(product)) => { model.product = Some(product); @@ -39,7 +39,7 @@ pub fn update(msg: Msg, model: &mut ProductPage, orders: &mut impl Orders) } } -pub fn view(_model: &crate::Model, page: &ProductPage) -> Node { +pub fn view(model: &crate::Model, page: &ProductPage) -> Node { let product = match page.product.as_ref() { None => return empty!(), Some(product) => product, @@ -48,8 +48,8 @@ pub fn view(_model: &crate::Model, page: &ProductPage) -> Node { .photos .iter() .enumerate() - .map(|(idx, img)| image(idx, img).map_msg(map_to_global)); - div![ + .map(|(idx, img)| image(idx, img)); + let content = div![ C!["max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 mt-6"], div![ C!["flex flex-col md:flex-row -mx-4"], @@ -68,6 +68,10 @@ pub fn view(_model: &crate::Model, page: &ProductPage) -> Node { ] ] ] + ].map_msg(map_to_global); + div![ + crate::shared::view::public_navbar(model), + super::layout::view(model.url.clone(), content, None) ] }