From d588d514739c1f9f6d9e50ff099e5b303454a1b4 Mon Sep 17 00:00:00 2001 From: luoxiao Date: Mon, 10 Apr 2023 14:03:55 +0800 Subject: [PATCH] feat: modal component ameliorate --- examples/basic/src/demo_modal.rs | 16 ++++++++++++++++ examples/basic/src/main.rs | 7 +++---- src/modal/mod.rs | 13 +++++++------ 3 files changed, 26 insertions(+), 10 deletions(-) create mode 100644 examples/basic/src/demo_modal.rs diff --git a/examples/basic/src/demo_modal.rs b/examples/basic/src/demo_modal.rs new file mode 100644 index 0000000..3888825 --- /dev/null +++ b/examples/basic/src/demo_modal.rs @@ -0,0 +1,16 @@ +use leptos::*; +use melt_ui::*; + +#[component] +pub fn DemoModal(cx: Scope) -> impl IntoView { + let (open, set_open) = create_signal(cx, false); + let on_cancel = SignalSetter::map(cx, move |_| { + set_open.set(false); + }); + view! {cx, + + + "sd" + + } +} \ No newline at end of file diff --git a/examples/basic/src/main.rs b/examples/basic/src/main.rs index e4f5548..156430b 100644 --- a/examples/basic/src/main.rs +++ b/examples/basic/src/main.rs @@ -1,5 +1,7 @@ use leptos::*; use melt_ui::*; +mod demo_modal; +pub use demo_modal::*; fn main() { mount_to_body(|cx| view! { cx, }) @@ -10,7 +12,6 @@ pub fn App(cx: Scope) -> impl IntoView { let (theme, set_theme) = create_signal(cx, Theme::light()); provide_context(cx, theme); let (count, set_count) = create_signal(cx, 0.0); - let (open, set_open) = create_signal(cx, true); let (button_type, set_button_type) = create_signal(cx, ButtonType::TEXT); let count_string = create_memo(cx, move |_| { @@ -27,9 +28,7 @@ pub fn App(cx: Scope) -> impl IntoView { {move || count.get()} - - "sd" {move || count.get()} - + } diff --git a/src/modal/mod.rs b/src/modal/mod.rs index d52dcd9..cff89ad 100644 --- a/src/modal/mod.rs +++ b/src/modal/mod.rs @@ -7,11 +7,11 @@ use stylers::style_sheet_str; #[component] pub fn Modal( cx: Scope, - #[prop(default = None)] title: Option, + #[prop(optional, into)] title: Option>, children: Children, - #[prop(default = None)] footer: Option, - open: ReadSignal, - #[prop(default = None)] on_cancel: Option>, + #[prop(optional)] footer: Option, + #[prop(optional, into)] open: MaybeSignal, + #[prop(optional)] on_cancel: Option>, ) -> impl IntoView { let class_name = mount_style("modal", || style_sheet_str!("./src/modal/modal.css")); let header = move |cx| { @@ -24,11 +24,12 @@ pub fn Modal( } }; - let header_extra = |cx| { + + let header_extra = move |cx| { view! { cx, <> - + { "x" }