Dropdown Menu

用于将多条命令、勾选设置或删除操作收纳在一个按钮后。

预览

工作区操作菜单

查看页面命令、受控深度辅助线勾选项、主题单选子菜单和工作区删除项目。

安装

首次使用此 Registry?请先完成 基础配置与共享样式安装 。

npx shadcn@latest add @neumorphism-ui/dropdown-menu

先安装一次共享 base,然后使用 CLI 添加组件及其依赖。

工作区操作菜单

npx shadcn@latest add @neumorphism-ui/button @neumorphism-ui/dropdown-menu
Registry JSON

用法

组合 DropdownMenuTrigger 与 DropdownMenuContent,并对相关项目分组。表示偏好的复选或单选项目需连接到应用状态。

"use client";

import { useState } from "react";
import { Button } from "@/components/ui/button";
import { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuTrigger } from "@/components/ui/dropdown-menu";

export default function Example() {
  const [visible, setVisible] = useState(true);
  return (
    <div>
      <DropdownMenu>
        <DropdownMenuTrigger render={<Button />}>View options</DropdownMenuTrigger>
        <DropdownMenuContent>
          <DropdownMenuCheckboxItem checked={visible} onCheckedChange={setVisible}>Show details</DropdownMenuCheckboxItem>
        </DropdownMenuContent>
      </DropdownMenu>
      {visible && <p>Project details are visible.</p>}
    </div>
  );
}

API 参考

基于 Base UI Menu 的完整组合式 API。可在同一表面中组织普通 item、checkbox、radio group、label、separator、shortcut 和嵌套 submenu。

组件属性类型默认值说明
DropdownMenuopen / defaultOpenbooleanfalse受控的菜单打开状态或非受控初始状态。
DropdownMenuonOpenChange(open: boolean) => void—菜单打开状态变化时调用。
DropdownMenuTriggerrenderReactElement | (props, state) => ReactElement—将 trigger 行为组合到按钮或链接上。
DropdownMenuContentside / align"top" | "right" | "bottom" | "left" / "start" | "center" | "end""bottom" / "start"相对于 trigger 设置 popup 的位置。
DropdownMenuContentsideOffsetnumber8设置 trigger 与 popup 之间的间距。
DropdownMenuItemvariant"default" | "destructive""default"选择普通操作或危险操作样式。
DropdownMenuItem / Labelinsetbooleanfalse对齐带 indicator 的行与文本起始位置。
DropdownMenuCheckboxItemcheckedboolean—checkbox item 的受控选中状态。
DropdownMenuCheckboxItemonCheckedChange(checked) => void—checkbox item 状态变化时调用。

无障碍

  • 01

    Base UI 负责 Arrow 键导航、Home、End、键入搜索、Escape 关闭和焦点返回。

  • 02

    DropdownMenuItem 应使用清晰文字描述命令;危险操作除了 variant 外,也要通过文案明确区分。

  • 03

    CheckboxItem 应同时使用 checked 和 onCheckedChange 维护状态。