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()
+ }
+ }
}
}