# Dropdown Menu Component API A context menu triggered by a button or other element. --- ## Installation ```toml # Cargo.toml [dependencies] shadcn-ui-leptos-dropdown-menu = "0.7" ``` ```rust use shadcn_ui_leptos_dropdown_menu::DropdownMenu; ``` --- ## Import ```rust use shadcn_ui_leptos_dropdown_menu::{ DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuShortcut }; ``` --- ## Component API ### DropdownMenu Root component managing menu state. | Prop | Type | Default | Description | |------|------|---------|-------------| | `open` | `Signal` | **Required** | Open state | | `on_open_change` | `Option>` | `None` | Change handler | ### DropdownMenuItem Individual menu item. | Prop | Type | Default | Description | |------|------|---------|-------------| | `disabled` | `Signal` | `false` | Disable item | | `on_click` | `Option>` | `None` | Click handler | --- ## Usage Examples ### Basic Dropdown Menu ```rust use leptos::prelude::*; use shadcn_ui_leptos_dropdown_menu::*; #[component] pub fn MyComponent() -> impl IntoView { let (open, set_open) = signal(false); view! { "Profile" "Settings" "Logout" } } ``` --- ## CSS Classes ```css .dropdown-menu-content { z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md animate-in fade-in-0 } .dropdown-menu-item { relative flex cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground } ``` --- ## Accessibility ### Keyboard Navigation | Key | Action | |-----|--------| | **Arrow Down** | Next item | | **Arrow Up** | Previous item | | **Enter** | Select item | | **Escape** | Close menu | --- ## TypeScript API ```typescript interface DropdownMenuProps { open: boolean; onOpenChange?: (open: boolean) => void; children?: React.ReactNode; } export const DropdownMenu: React.FC; export const DropdownMenuTrigger: React.FC; export const DropdownMenuContent: React.FC; export const DropdownMenuItem: React.FC; ``` --- *Source: [packages/leptos/dropdown-menu/src/default.rs](https://github.com/yourusername/leptos-shadcn-ui/blob/main/packages/leptos/dropdown-menu/src/default.rs)*