Skip to main content

dioxus_element_plug/components/
option.rs

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