adui_dioxus/foundation/
variant.rs1#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
9pub enum Variant {
10 #[default]
12 Outlined,
13 Filled,
15 Borderless,
17}
18
19impl Variant {
20 pub fn as_class_suffix(&self) -> &'static str {
22 match self {
23 Variant::Outlined => "outlined",
24 Variant::Filled => "filled",
25 Variant::Borderless => "borderless",
26 }
27 }
28
29 pub fn class_for(&self, prefix: &str) -> String {
31 format!("{}-{}", prefix, self.as_class_suffix())
32 }
33}
34
35pub fn variant_from_bordered(bordered: Option<bool>, variant: Option<Variant>) -> Variant {
40 if let Some(v) = variant {
42 return v;
43 }
44
45 match bordered {
47 Some(false) => Variant::Borderless,
48 _ => Variant::Outlined, }
50}
51
52#[cfg(test)]
53mod tests {
54 use super::*;
55
56 #[test]
57 fn variant_class_suffix() {
58 assert_eq!(Variant::Outlined.as_class_suffix(), "outlined");
59 assert_eq!(Variant::Filled.as_class_suffix(), "filled");
60 assert_eq!(Variant::Borderless.as_class_suffix(), "borderless");
61 }
62
63 #[test]
64 fn variant_class_for_prefix() {
65 assert_eq!(
66 Variant::Outlined.class_for("adui-input"),
67 "adui-input-outlined"
68 );
69 assert_eq!(
70 Variant::Filled.class_for("adui-select"),
71 "adui-select-filled"
72 );
73 }
74
75 #[test]
76 fn variant_from_bordered_priority() {
77 assert_eq!(
79 variant_from_bordered(Some(false), Some(Variant::Filled)),
80 Variant::Filled
81 );
82
83 assert_eq!(
85 variant_from_bordered(Some(false), None),
86 Variant::Borderless
87 );
88
89 assert_eq!(variant_from_bordered(Some(true), None), Variant::Outlined);
91 assert_eq!(variant_from_bordered(None, None), Variant::Outlined);
92 }
93}
94
95
96
97