Skip to main content

dioxus_element_plug/components/
cascader_panel.rs

1use dioxus::prelude::*;
2pub use super::cascader::{CascaderOption, CascaderProps};
3
4/// CascaderPanel props
5#[derive(Props, Clone, PartialEq)]
6pub struct CascaderPanelProps {
7    #[props(default)]
8    pub options: Vec<CascaderOption>,
9
10    #[props(default)]
11    pub on_change: Option<EventHandler<String>>,
12
13    #[props(default)]
14    pub class: Option<String>,
15
16    #[props(default)]
17    pub style: Option<String>,
18}
19
20/// CascaderPanel component - core panel for cascader
21#[component]
22pub fn CascaderPanel(props: CascaderPanelProps) -> Element {
23    let mut class_names = vec!["el-cascader-panel".to_string()];
24    if let Some(ref c) = props.class { class_names.push(c.clone()); }
25
26    rsx! {
27        div {
28            class: "{class_names.join(\" \")}",
29            style: props.style.clone().unwrap_or_default(),
30            div {
31                class: "el-cascader-menu",
32                for opt in props.options.iter() {
33                    div {
34                        class: "el-cascader-menu__item",
35                        "{opt.label}"
36                    }
37                }
38            }
39        }
40    }
41}