pib-components-dx-base 0.0.0-upstream-snapshot.2026-09-19.1

temporary fork for Politik im Blick - Dioxus components
Documentation
use super::super::component::{
    DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger,
};
use dioxus::prelude::*;
use strum::IntoEnumIterator;

#[css_module("/src/components/dropdown_menu/style.css")]
struct Styles;

#[derive(Clone, Copy, strum::Display, strum::EnumIter, PartialEq)]
enum Operation {
    Edit,
    Undo,
    Duplicate,
    Delete,
}

#[component]
pub fn Demo() -> Element {
    let mut selected_operation = use_signal(|| None);

    let operations = Operation::iter().enumerate().map(|(i, o)| {
        rsx! {
            DropdownMenuItem::<Operation> {
                class: Styles::dx_dropdown_menu_item,
                value: o,
                index: i,
                disabled: matches!(o, Operation::Undo),
                on_select: move |value| {
                    selected_operation.set(Some(value));
                },
                {o.to_string()}
            }
        }
    });

    rsx! {
        DropdownMenu { class: Styles::dx_dropdown_menu, default_open: false,
            DropdownMenuTrigger { class: Styles::dx_dropdown_menu_trigger, "Open Menu" }
            DropdownMenuContent { class: Styles::dx_dropdown_menu_content, {operations} }
        }
        if let Some(op) = selected_operation() {
            "Selected: {op}"
        }
    }
}