Skip to main content

dioxus_element_plug/components/
option_group.rs

1use dioxus::prelude::*;
2
3/// OptionGroup props
4#[derive(Props, Clone, PartialEq)]
5pub struct OptionGroupProps {
6    /// Group label
7    pub label: String,
8
9    /// Group content (options)
10    #[props(default)]
11    pub children: Element,
12
13    /// Whether the group is disabled
14    #[props(default = false)]
15    pub disabled: bool,
16
17    /// Additional CSS classes
18    #[props(default)]
19    pub class: Option<String>,
20}
21
22/// OptionGroup component for grouping options in a Select
23#[component]
24pub fn OptionGroup(props: OptionGroupProps) -> Element {
25    let mut class_names = vec!["el-select-group".to_string()];
26
27    if props.disabled {
28        class_names.push("is-disabled".to_string());
29    }
30
31    if let Some(ref custom_class) = props.class {
32        class_names.push(custom_class.clone());
33    }
34
35    let class_string = class_names.join(" ");
36
37    rsx! {
38        div {
39            class: "el-select-group__wrap",
40            div {
41                class: "el-select-group__title",
42                "{props.label}"
43            }
44            div {
45                class: "{class_string}",
46                {props.children}
47            }
48        }
49    }
50}