dxc_components/menu/
menu.rs

1use dioxus::prelude::*;
2
3#[component]
4pub fn DxcMenu(children: Element, class: Option<String>) -> Element {
5    let combined_class = format!("menu {}", class.unwrap_or_default());
6
7    rsx! {
8        ul {
9            role: "menu",
10            class: combined_class,
11            tabindex: "-1",
12            { children }
13        }
14    }
15}
16
17// #[component]
18// pub fn DxcMenuItem(
19//     children: Element,
20//     class: Option<String>,
21//     disabled: Option<bool>,
22//     index: Option<u32>,
23//     route: Option<&'static str>,
24// ) -> Element {
25//     let disabled = disabled.unwrap_or(false);
26//     let index = index.unwrap_or(0);
27//     let mut classes = format!("menu-item {}", class.unwrap_or_default());
28
29//     if disabled {
30//         classes += " menu-item-disabled";
31//     }
32
33//     rsx! {
34//         li {
35//             class: classes,
36//             "index": index,
37//             tabindex: "-1",
38//             aria_disabled: disabled.then(|| "true"),
39
40//             if !disabled {
41//                 if let Some(target_route) = route {
42//                     Link {
43//                         to: target_route,
44//                         { children }
45//                     }
46//                 } else {
47//                     { children }  // 没有路由时直接显示
48//                 }
49//             } else {
50//                 { children }  // 禁用时不响应点击
51//             }
52//         }
53//     }
54// }