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 match self {
51 Some(a) => a.extend_classes(classes),
52 None => {}
53 }
54 }
55}
56
57impl<T> AsClasses for Vec<T>
58where
59 T: AsClasses,
60{
61 fn extend_classes(&self, classes: &mut Classes) {
62 for i in self {
63 classes.extend(i.as_classes());
64 }
65 }
66}
67
68pub trait ExtendClasses<A: AsClasses> {
70 fn extend_from(&mut self, from: &A);
72}
73
74impl<A: AsClasses> ExtendClasses<A> for Classes {
75 fn extend_from(&mut self, from: &A) {
76 from.extend_classes(self)
77 }
78}