basecoat_core/classes/
dropdown.rs1use crate::props::dropdown::DropdownProps;
2
3pub fn dropdown(p: &DropdownProps) -> String {
7 match &p.class {
8 Some(extra) if !extra.is_empty() => format!("dropdown-menu {extra}"),
9 _ => "dropdown-menu".to_string(),
10 }
11}
12
13#[cfg(test)]
14mod tests {
15 use super::*;
16 use crate::props::dropdown::DropdownProps;
17
18 #[test]
19 fn base_class() {
20 assert_eq!(dropdown(&DropdownProps::default()), "dropdown-menu");
21 }
22
23 #[test]
24 fn with_extra_class() {
25 let p = DropdownProps {
26 class: Some("w-56".into()),
27 ..Default::default()
28 };
29 assert_eq!(dropdown(&p), "dropdown-menu w-56");
30 }
31
32 #[test]
33 fn empty_extra_class_is_ignored() {
34 let p = DropdownProps {
35 class: Some("".into()),
36 ..Default::default()
37 };
38 assert_eq!(dropdown(&p), "dropdown-menu");
39 }
40}