feat: add option component

This commit is contained in:
luoxiao 2023-05-15 12:52:03 +08:00
parent 13df204940
commit 10f5403826
4 changed files with 27 additions and 17 deletions

View file

@ -1,5 +1,5 @@
mod theme; mod theme;
use crate::{theme::*, utils::mount_style::mount_style}; use crate::{components::*, theme::*, utils::mount_style::mount_style};
use leptos::*; use leptos::*;
use leptos_icons::*; use leptos_icons::*;
use stylers::style_sheet_str; use stylers::style_sheet_str;
@ -77,22 +77,14 @@ pub fn Button(
class=("melt-button--round", move || round.get()) class=("melt-button--round", move || round.get())
style=move || css_vars.get() style=move || css_vars.get()
> >
{ <OptionComp value=icon view=move |cx, icon| {
if let Some(icon) = icon {
view!{cx, view!{cx,
<Icon icon=icon style=icon_style/> <Icon icon=icon style=icon_style/>
}.into()
} else {
None
}
}
{
if let Some(children) = children {
children(cx).into()
} else {
None
}
} }
}/>
<OptionComp value=children view=move |cx, children| {
children(cx).into_view(cx)
}/>
</button> </button>
} }
} }

3
src/components/mod.rs Normal file
View file

@ -0,0 +1,3 @@
mod option_comp;
pub use option_comp::*;

View file

@ -0,0 +1,14 @@
use leptos::*;
#[component]
pub fn OptionComp<T, VF, IV>(cx: Scope, value: Option<T>, 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)
}
}

View file

@ -1,6 +1,7 @@
mod button; mod button;
mod card; mod card;
mod checkbox; mod checkbox;
mod components;
mod input; mod input;
mod modal; mod modal;
mod progress; mod progress;