patternfly_yew/core/
classes.rs1use yew::Classes;
2
3pub trait AsClasses {
11 fn as_classes(&self) -> Classes {
12 let mut classes = Classes::new();
13 self.extend_classes(&mut classes);
14 classes
15 }
16
17 fn extend_classes(&self, classes: &mut Classes);
18}
19
20impl AsClasses for String {
21 fn extend_classes(&self, classes: &mut Classes) {
22 classes.push(self)
23 }
24}
25
26impl AsClasses for &str {
27 fn extend_classes(&self, classes: &mut Classes) {
28 classes.push(self.to_string())
29 }
30}
31
32impl AsClasses for u16 {
33 fn extend_classes(&self, classes: &mut Classes) {
34 classes.push(self.to_string())
35 }
36}
37
38impl AsClasses for dyn ToString {
39 fn as_classes(&self) -> Classes {
40 Classes::from(self.to_string())
41 }
42
43 fn extend_classes(&self, classes: &mut Classes) {
44 classes.extend(Classes::from(self.to_string()))
45 }
46}
47
48impl<T: AsClasses> AsClasses for Option<T> {
49 fn extend_classes(&self, classes: &mut Classes) {
50 if let Some(a) = self {
51 a.extend_classes(classes)
52 }
53 }
54}
55
56impl<T> AsClasses for Vec<T>
57where
58 T: AsClasses,
59{
60 fn extend_classes(&self, classes: &mut Classes) {
61 for i in self {
62 classes.extend(i.as_classes());
63 }
64 }
65}
66
67pub trait ExtendClasses<A: AsClasses> {
69 fn extend_from(&mut self, from: &A);
71}
72
73impl<A: AsClasses> ExtendClasses<A> for Classes {
74 fn extend_from(&mut self, from: &A) {
75 from.extend_classes(self)
76 }
77}