Dropdown Menu
基于 Base UI Menu 的完整组合式 API。可在同一表面中组织普通 item、checkbox、radio group、label、separator、shortcut 和嵌套 submenu。
@neumorphism-ui/dropdown-menu预览
安装
安装: dropdown-menu
npx shadcn@latest add @neumorphism-ui/dropdown-menuCLI 会依次处理 npm 依赖、base token、utils 和组件源码。
首次使用此 Registry?请先完成 namespace 配置 。
用法
用法: 安装
npx shadcn@latest add @neumorphism-ui/button @neumorphism-ui/dropdown-menuImport
Dropdown Menu import 代码
import * as React from "react"
import { Button } from "@/components/ui/button"
import {
DropdownMenu,
DropdownMenuCheckboxItem,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuGroup,
DropdownMenuLabel,
DropdownMenuSeparator,
DropdownMenuShortcut,
DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu"Example
Dropdown Menu 用法代码
export function WorkspaceMenu() {
const [showDepthGrid, setShowDepthGrid] = React.useState(true)
return (
<DropdownMenu>
<DropdownMenuTrigger render={<Button variant="soft" />}>
打开菜单
</DropdownMenuTrigger>
<DropdownMenuContent align="start">
<DropdownMenuGroup>
<DropdownMenuLabel>工作区</DropdownMenuLabel>
<DropdownMenuSeparator />
<DropdownMenuItem>
创建副本
<DropdownMenuShortcut>⌘D</DropdownMenuShortcut>
</DropdownMenuItem>
<DropdownMenuCheckboxItem
checked={showDepthGrid}
onCheckedChange={setShowDepthGrid}
>
显示深度网格
</DropdownMenuCheckboxItem>
<DropdownMenuItem variant="destructive">删除</DropdownMenuItem>
</DropdownMenuGroup>
</DropdownMenuContent>
</DropdownMenu>
)
}API 参考
| 组件 | 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|---|
DropdownMenu | open / defaultOpen | boolean | false | 受控的菜单打开状态或非受控初始状态。 |
DropdownMenu | onOpenChange | (open: boolean) => void | — | 菜单打开状态变化时调用。 |
DropdownMenuTrigger | render | ReactElement | (props, state) => ReactElement | — | 将 trigger 行为组合到按钮或链接上。 |
DropdownMenuContent | side / align | "top" | "right" | "bottom" | "left" / "start" | "center" | "end" | "bottom" / "start" | 相对于 trigger 设置 popup 的位置。 |
DropdownMenuContent | sideOffset | number | 8 | 设置 trigger 与 popup 之间的间距。 |
DropdownMenuItem | variant | "default" | "destructive" | "default" | 选择普通操作或危险操作样式。 |
DropdownMenuItem / Label | inset | boolean | false | 对齐带 indicator 的行与文本起始位置。 |
DropdownMenuCheckboxItem | checked | boolean | "indeterminate" | — | checkbox item 的受控选中状态。 |
DropdownMenuCheckboxItem | onCheckedChange | (checked) => void | — | checkbox item 状态变化时调用。 |
无障碍
- 01
Base UI 负责 Arrow 键导航、Home、End、键入搜索、Escape 关闭和焦点返回。
- 02
DropdownMenuItem 应使用清晰文字描述命令;危险操作除了 variant 外,也要通过文案明确区分。
- 03
CheckboxItem 应同时使用 checked 和 onCheckedChange 维护状态。