From 6b010e583808eb6ed200692b61af6d06cbfed8b1 Mon Sep 17 00:00:00 2001 From: Pouriya Jahanbakhsh Date: Tue, 5 Sep 2023 12:15:57 +0330 Subject: [PATCH 1/2] feat: support arrays for Classes/classes!() --- packages/yew-macro/tests/classes_macro/classes-pass.rs | 7 ++++++- packages/yew/src/html/classes.rs | 6 ++++++ website/docs/concepts/html/classes.mdx | 4 +--- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/packages/yew-macro/tests/classes_macro/classes-pass.rs b/packages/yew-macro/tests/classes_macro/classes-pass.rs index 4735e303d50..fb73e802e1c 100644 --- a/packages/yew-macro/tests/classes_macro/classes-pass.rs +++ b/packages/yew-macro/tests/classes_macro/classes-pass.rs @@ -49,6 +49,11 @@ fn compile_pass() { // single expression ::yew::classes!(::std::vec!["one", "two"]); + // single array + ::yew::classes!(["one", "two"]); + // multiple arrays + ::yew::classes!(["one"], ["two"]); + // optional classes ::yew::classes!( ::std::option::Option::Some("one"), @@ -58,7 +63,7 @@ fn compile_pass() { // mixed types { use ::std::borrow::ToOwned; - ::yew::classes!("one".to_owned(), "two", ::std::vec!["three"]); + ::yew::classes!("one".to_owned(), "two", ::std::vec!["three"], ["four", "five"]); } } diff --git a/packages/yew/src/html/classes.rs b/packages/yew/src/html/classes.rs index f7217278427..bd628642118 100644 --- a/packages/yew/src/html/classes.rs +++ b/packages/yew/src/html/classes.rs @@ -274,6 +274,12 @@ impl + Clone> From<&[T]> for Classes { } } +impl, const SIZE: usize> From<[T;SIZE]> for Classes { + fn from(t: [T;SIZE]) -> Self { + t.into_iter().collect() + } +} + impl PartialEq for Classes { fn eq(&self, other: &Self) -> bool { self.set.len() == other.set.len() && self.set.iter().eq(other.set.iter()) diff --git a/website/docs/concepts/html/classes.mdx b/website/docs/concepts/html/classes.mdx index 5cd87106813..1e6e85d1d53 100644 --- a/website/docs/concepts/html/classes.mdx +++ b/website/docs/concepts/html/classes.mdx @@ -84,10 +84,8 @@ html! { ```rust use yew::{classes, html}; -let my_classes = ["class-1", "class-2"]; - html! { -
+
}; ``` From 8f7d238ac67d8980ad77b7d0981bc1117dc1df66 Mon Sep 17 00:00:00 2001 From: Pouriya Jahanbakhsh Date: Tue, 5 Sep 2023 12:29:37 +0330 Subject: [PATCH 2/2] style: update --- packages/yew/src/html/classes.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/yew/src/html/classes.rs b/packages/yew/src/html/classes.rs index bd628642118..0a5bb9cc9b0 100644 --- a/packages/yew/src/html/classes.rs +++ b/packages/yew/src/html/classes.rs @@ -274,8 +274,8 @@ impl + Clone> From<&[T]> for Classes { } } -impl, const SIZE: usize> From<[T;SIZE]> for Classes { - fn from(t: [T;SIZE]) -> Self { +impl, const SIZE: usize> From<[T; SIZE]> for Classes { + fn from(t: [T; SIZE]) -> Self { t.into_iter().collect() } }