mirror of
https://github.com/yewstack/yew.git
synced 2025-12-08 21:26:25 +00:00
Add From<&[T]> for Classes (#1448)
* Add From<&[T]> for Classes * Round out the test cases for From<&[T]> for Classes
This commit is contained in:
parent
07dcbb9982
commit
bfc71626d2
@ -155,6 +155,12 @@ impl<T: AsRef<str>> From<&Option<T>> for Classes {
|
|||||||
|
|
||||||
impl<T: AsRef<str>> From<Vec<T>> for Classes {
|
impl<T: AsRef<str>> From<Vec<T>> for Classes {
|
||||||
fn from(t: Vec<T>) -> Self {
|
fn from(t: Vec<T>) -> Self {
|
||||||
|
Classes::from(t.as_slice())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<T: AsRef<str>> From<&[T]> for Classes {
|
||||||
|
fn from(t: &[T]) -> Self {
|
||||||
let set = t
|
let set = t
|
||||||
.iter()
|
.iter()
|
||||||
.map(|x| x.as_ref())
|
.map(|x| x.as_ref())
|
||||||
|
|||||||
@ -750,6 +750,38 @@ mod tests {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn supports_multiple_classes_slice() {
|
||||||
|
let classes = ["class-1", "class-2"];
|
||||||
|
let a = html! {
|
||||||
|
<div class=&classes[..]></div>
|
||||||
|
};
|
||||||
|
|
||||||
|
if let VNode::VTag(vtag) = a {
|
||||||
|
assert!(get_class_str(&vtag).contains("class-1"));
|
||||||
|
assert!(get_class_str(&vtag).contains("class-2"));
|
||||||
|
assert!(!get_class_str(&vtag).contains("class-3"));
|
||||||
|
} else {
|
||||||
|
panic!("vtag expected");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn supports_multiple_classes_one_value_slice() {
|
||||||
|
let classes = ["class-1 class-2", "class-1"];
|
||||||
|
let a = html! {
|
||||||
|
<div class=&classes[..]></div>
|
||||||
|
};
|
||||||
|
|
||||||
|
if let VNode::VTag(vtag) = a {
|
||||||
|
assert!(get_class_str(&vtag).contains("class-1"));
|
||||||
|
assert!(get_class_str(&vtag).contains("class-2"));
|
||||||
|
assert!(!get_class_str(&vtag).contains("class-3"));
|
||||||
|
} else {
|
||||||
|
panic!("vtag expected");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn supports_multiple_classes_vec() {
|
fn supports_multiple_classes_vec() {
|
||||||
let mut classes = vec!["class-1"];
|
let mut classes = vec!["class-1"];
|
||||||
@ -784,12 +816,12 @@ mod tests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn filter_empty_string_classes_vec() {
|
fn filter_empty_string_classes() {
|
||||||
let mut classes = vec![""];
|
|
||||||
classes.push("class-2");
|
|
||||||
let a = html! { <div class=vec![""]></div> };
|
let a = html! { <div class=vec![""]></div> };
|
||||||
let b = html! { <div class=("")></div> };
|
let b = html! { <div class=("")></div> };
|
||||||
let c = html! { <div class=""></div> };
|
let c = html! { <div class=""></div> };
|
||||||
|
let d_arr = [""];
|
||||||
|
let d = html! { <div class=&d_arr[..]></div> };
|
||||||
|
|
||||||
if let VNode::VTag(vtag) = a {
|
if let VNode::VTag(vtag) = a {
|
||||||
assert!(!vtag.attributes.contains_key("class"));
|
assert!(!vtag.attributes.contains_key("class"));
|
||||||
@ -808,6 +840,12 @@ mod tests {
|
|||||||
} else {
|
} else {
|
||||||
panic!("vtag expected");
|
panic!("vtag expected");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if let VNode::VTag(vtag) = d {
|
||||||
|
assert!(!vtag.attributes.contains_key("class"));
|
||||||
|
} else {
|
||||||
|
panic!("vtag expected");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn assert_vtag(node: &mut VNode) -> &mut VTag {
|
fn assert_vtag(node: &mut VNode) -> &mut VTag {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user