adui_dioxus/components/
control.rs1#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
3pub enum ControlStatus {
4 #[default]
5 Default,
6 Success,
7 Warning,
8 Error,
9}
10
11impl ControlStatus {
12 pub fn class(self) -> Option<&'static str> {
14 match self {
15 ControlStatus::Default => None,
16 ControlStatus::Success => Some("adui-control-status-success"),
17 ControlStatus::Warning => Some("adui-control-status-warning"),
18 ControlStatus::Error => Some("adui-control-status-error"),
19 }
20 }
21}
22
23pub fn push_status_class(classes: &mut Vec<String>, status: Option<ControlStatus>) {
25 if let Some(name) = status.and_then(ControlStatus::class) {
26 classes.push(name.to_string());
27 }
28}
29
30#[cfg(test)]
31mod tests {
32 use super::*;
33
34 #[test]
35 fn control_status_class_mapping() {
36 assert_eq!(ControlStatus::Default.class(), None);
37 assert_eq!(
38 ControlStatus::Success.class(),
39 Some("adui-control-status-success")
40 );
41 assert_eq!(
42 ControlStatus::Warning.class(),
43 Some("adui-control-status-warning")
44 );
45 assert_eq!(
46 ControlStatus::Error.class(),
47 Some("adui-control-status-error")
48 );
49 }
50
51 #[test]
52 fn push_status_class_appends_when_present() {
53 let mut classes = vec!["base".to_string()];
54 push_status_class(&mut classes, Some(ControlStatus::Error));
55 assert!(classes.contains(&"base".to_string()));
56 assert!(classes.contains(&"adui-control-status-error".to_string()));
57 }
58}