diff --git a/demo/src/pages/nav_bar/mod.rs b/demo/src/pages/nav_bar/mod.rs index b5c6890..90514a5 100644 --- a/demo/src/pages/nav_bar/mod.rs +++ b/demo/src/pages/nav_bar/mod.rs @@ -1,7 +1,8 @@ use super::NavBarMdPage; use crate::pages::MobilePage; use leptos::*; -use thaw::mobile::NavBar; +use thaw::mobile::{NavBar, NavBarRight}; +use thaw::Icon; #[component] pub fn NavBarPage() -> impl IntoView { @@ -27,11 +28,15 @@ pub fn NavBarDemoPage() -> impl IntoView { title="Home" left_arrow=true left_text="back" - right_text="add" on_click_left=on_click_left on_click_right=on_click_right - /> + > + + + +
{move || click_text.get()}
} } + diff --git a/demo_markdown/docs/_mobile/nav_bar/mod.md b/demo_markdown/docs/_mobile/nav_bar/mod.md index 5e6b743..d2275e2 100644 --- a/demo_markdown/docs/_mobile/nav_bar/mod.md +++ b/demo_markdown/docs/_mobile/nav_bar/mod.md @@ -13,10 +13,13 @@ view! { title="Home" left_arrow=true left_text="back" - right_text="add" on_click_left=on_click_left on_click_right=on_click_right - /> + > + + + +
{move || click_text.get()}
} @@ -33,3 +36,9 @@ view! { | on_click_left | `Option>` | `Default::default()` | NavBar left click. | | right_text | `MaybeSignal` | `Default::default()` | NavBar right text. | | on_click_right | `Option>` | `Default::default()` | NavBar right click. | + +### NavBarLeft and NavBarRight Props + +| Name | Type | Default | Description | +| --- | --- | --- | --- | +| class | `MaybeSignal` | `Default::default()` | Addtional classes for the element. | diff --git a/thaw/src/mobile/nav_bar/mod.rs b/thaw/src/mobile/nav_bar/mod.rs index 8739dd1..f28a431 100644 --- a/thaw/src/mobile/nav_bar/mod.rs +++ b/thaw/src/mobile/nav_bar/mod.rs @@ -10,13 +10,29 @@ use crate::{ use leptos::*; pub use theme::NavBarTheme; +#[slot] +pub struct NavBarLeft { + #[prop(optional, into)] + class: MaybeSignal, + children: Children, +} + +#[slot] +pub struct NavBarRight { + #[prop(optional, into)] + class: MaybeSignal, + children: Children, +} + #[component] pub fn NavBar( #[prop(optional, into)] title: MaybeSignal, #[prop(optional, into)] left_arrow: MaybeSignal, #[prop(optional, into)] left_text: MaybeSignal, + #[prop(optional)] nav_bar_left: Option, #[prop(optional, into)] on_click_left: Option>, #[prop(optional, into)] right_text: MaybeSignal, + #[prop(optional)] nav_bar_right: Option, #[prop(optional, into)] on_click_right: Option>, #[prop(optional, into)] class: MaybeSignal, ) -> impl IntoView { @@ -48,26 +64,50 @@ pub fn NavBar( view! {
- - -
- + { + if let Some(NavBarLeft { class, children }) = nav_bar_left { + view! { +
+ {children()} +
+ }.into_view() + } else { + view! { + - +
+ + + + + + {move || left_text.get()} +
- {move || left_text.get()} -
-
-
+ }.into_view() + } + }
{move || title.get()}
- - -
- {move || right_text.get()} -
-
-
+ { + if let Some(NavBarRight { class, children }) = nav_bar_right { + view! { +
+ {children()} +
+ }.into_view() + } else { + view! { + + +
+ {move || right_text.get()} +
+
+
+ }.into_view() + } + }
} }