From 10f540382650cfe6e6504aa7abe3159c2342be3c Mon Sep 17 00:00:00 2001 From: luoxiao Date: Mon, 15 May 2023 12:52:03 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat:=20add=20option=20component?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/button/mod.rs | 26 +++++++++----------------- src/components/mod.rs | 3 +++ src/components/option_comp.rs | 14 ++++++++++++++ src/lib.rs | 1 + 4 files changed, 27 insertions(+), 17 deletions(-) create mode 100644 src/components/mod.rs create mode 100644 src/components/option_comp.rs diff --git a/src/button/mod.rs b/src/button/mod.rs index e03b0b6..ef0d0d5 100644 --- a/src/button/mod.rs +++ b/src/button/mod.rs @@ -1,5 +1,5 @@ mod theme; -use crate::{theme::*, utils::mount_style::mount_style}; +use crate::{components::*, theme::*, utils::mount_style::mount_style}; use leptos::*; use leptos_icons::*; use stylers::style_sheet_str; @@ -63,7 +63,7 @@ pub fn Button( }); let class_name = mount_style("button", || style_sheet_str!("./src/button/button.css")); - let icon_style= if children.is_some() { + let icon_style = if children.is_some() { "margin-right: 6px" } else { "" @@ -77,22 +77,14 @@ pub fn Button( class=("melt-button--round", move || round.get()) style=move || css_vars.get() > - { - if let Some(icon) = icon { + - }.into() - } else { - None - } - } - { - if let Some(children) = children { - children(cx).into() - } else { - None - } - } + + } + }/> + } } diff --git a/src/components/mod.rs b/src/components/mod.rs new file mode 100644 index 0000000..fd5606f --- /dev/null +++ b/src/components/mod.rs @@ -0,0 +1,3 @@ +mod option_comp; + +pub use option_comp::*; \ No newline at end of file diff --git a/src/components/option_comp.rs b/src/components/option_comp.rs new file mode 100644 index 0000000..4c277bc --- /dev/null +++ b/src/components/option_comp.rs @@ -0,0 +1,14 @@ +use leptos::*; + +#[component] +pub fn OptionComp(cx: Scope, value: Option, view: VF) -> impl IntoView +where + VF: Fn(Scope, T) -> IV + 'static, + IV: IntoView, +{ + if let Some(value) = value { + view(cx, value).into_view(cx) + } else { + ().into_view(cx) + } +} diff --git a/src/lib.rs b/src/lib.rs index 34259d6..ec538d4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,6 +1,7 @@ mod button; mod card; mod checkbox; +mod components; mod input; mod modal; mod progress;