From 09ef9f8630c8e8103b9a809aae12ac4afccbb6f0 Mon Sep 17 00:00:00 2001 From: luoxiao Date: Wed, 11 Sep 2024 23:32:26 +0800 Subject: [PATCH] feat: Spinner adds children prop --- thaw/src/spinner/docs/mod.md | 22 +++++++++++++++++----- thaw/src/spinner/mod.rs | 36 +++++++++++++++++++++++++----------- 2 files changed, 42 insertions(+), 16 deletions(-) diff --git a/thaw/src/spinner/docs/mod.md b/thaw/src/spinner/docs/mod.md index 8176057..5f1c746 100644 --- a/thaw/src/spinner/docs/mod.md +++ b/thaw/src/spinner/docs/mod.md @@ -23,10 +23,22 @@ view! { } ``` +### Custom label + +```rust demo +view! { + + + "Label" + +} +``` + ### Spinner Props -| Name | Type | Default | Description | -| ----- | -------------------------- | --------------------- | ---------------------------------- | -| class | `MaybeProp` | `Default::default()` | | -| label | `MaybeProp` | `Default::default()` | An optional label for the Spinner. | -| size | `MaybeSignal` | `SpinnerSize::Medium` | The size of the spinner. | +| Name | Type | Default | Description | +| -------- | -------------------------- | --------------------- | ---------------------------------- | +| class | `MaybeProp` | `Default::default()` | | +| label | `MaybeProp` | `Default::default()` | An optional label for the Spinner. | +| size | `MaybeSignal` | `SpinnerSize::Medium` | The size of the spinner. | +| children | `Option` | `None` | | diff --git a/thaw/src/spinner/mod.rs b/thaw/src/spinner/mod.rs index ea1e23c..4b7e67b 100644 --- a/thaw/src/spinner/mod.rs +++ b/thaw/src/spinner/mod.rs @@ -38,14 +38,16 @@ pub fn Spinner( /// The size of the spinner. #[prop(optional, into)] size: MaybeSignal, + #[prop(optional)] children: Option, ) -> impl IntoView { mount_style("spinner", include_str!("./spinner.css")); let id = StoredValue::new(uuid::Uuid::new_v4().to_string()); let spinner_label = label.clone(); + let children_flag = children.is_some(); let labelledby = move || { spinner_label.with(|label| { - if label.is_some() { + if label.is_some() || children_flag { Some(id.get_value()) } else { None @@ -66,17 +68,29 @@ pub fn Spinner( - {move || { - if let Some(label) = label.get() { - view! { - - } - .into() - } else { - None + {if let Some(children) = children { + view! { + } + .into_any() + } else { + { + move || { + if let Some(label) = label.get() { + view! { + + } + .into() + } else { + None + } + } + } + .into_any() }} }