DropdownMenu 下拉菜单

从明确触发器打开一组即时操作,并管理键盘焦点。

Beta

示例

直接操作示例,查看组件在具体任务中的状态与反馈。

菜单项表达即时动作;权限、确认、路由和业务副作用仍由宿主应用处理。
本地视图动作
当前本地视图:默认顺序 / 紧凑密度
图标、说明和快捷键帮助用户在打开菜单后快速区分动作。
危险动作与普通动作分隔,不可用项保持可见以说明权限边界。
宿主持有打开状态,并选择相对触发器的对齐方向。
菜单当前关闭

使用建议

用于动作而不是字段选择

下拉菜单适合打开、复制、排序或重置等即时动作;需要提交一个字段值时使用 Select 或 RadioGroup。

保持 value 稳定且唯一

每个 item 使用不会随文案改变的唯一 value,禁用项仍要说明不可执行的动作,不要静默复用值。

把危险副作用留给宿主确认

danger 只表达视觉语气;权限检查、二次确认、路由、请求和错误处理仍由宿主应用负责。

引入方式

从已验证的公开子路径导入组件;全局样式接入方式见安装指南。

import { BaseDropdownMenu } from '@inf-monkeys-tech/monkeys-design/components/base';

当前限制

  • DropdownMenu 不负责鉴权、确认、路由和业务副作用;宿主必须在执行动作前后处理这些合同。
  • T17 尚缺 deterministic visual、touch/mobile trigger 与最终 packed React 18/19 证据。
  • Deterministic visual evidence, touch/mobile trigger behavior, and final packed React 18/19 checks are pending T17/T23.
export interface BaseDropdownMenuProps
  extends Omit<
    HTMLAttributes<HTMLDivElement>,
    'children' | 'className' | 'defaultValue' | 'dir' | 'onSelect' | 'style'
  > {
  items?: BaseDropdownMenuItem[];
  label?: ReactNode;
  trigger?: ReactNode;
  triggerLabel?: ReactNode;
  triggerIcon?: ReactNode;
  disabled?: boolean;
  open?: boolean;
  defaultOpen?: boolean;
  placement?: BaseDropdownMenuPlacement;
  closeOnSelect?: boolean;
  portal?: boolean;
  dir?: 'ltr' | 'rtl';
  appearance?: BaseAppearance;
  className?: string;
  classNames?: BaseDropdownMenuClassNames;
  style?: CSSProperties;
  children?: ReactNode;
  onOpenChange?: (open: boolean) => void;
  onSelect?: (item: BaseDropdownMenuItem) => void;
}
属性说明类型默认值
items用于生成组件条目的一组结构化数据。BaseDropdownMenuItem[][]
label菜单触发控件的可访问名称。ReactNode
trigger用于触发打开、关闭或显示内容的元素。ReactNode
triggerLabel显示在触发控件中的标签内容。ReactNode
triggerIcon显示在触发控件中的图标。ReactNode
disabled是否禁用该组件及其可交互行为。booleanfalse
open组件当前的受控打开状态。boolean
defaultOpen非受控模式下是否默认打开。booleanfalse
placement浮层相对于触发元素的首选放置位置。BaseDropdownMenuPlacement'bottom-start'
closeOnSelect选择菜单项后是否自动关闭菜单。booleantrue
portal是否通过 Portal 将浮层挂载到外部容器。booleanfalse
dir弹出内容与键盘导航使用的文字方向。'ltr' | 'rtl'
appearance覆盖组件使用的外观令牌或局部样式配置。BaseAppearance
className追加到组件根元素的 CSS 类名。string
classNames按组件公开的结构插槽分别追加 CSS 类名。BaseDropdownMenuClassNames
style追加到组件根元素的内联样式。CSSProperties
children在 BaseDropdownMenu 内渲染的子内容;支持渲染函数时以对应的 Props 类型为准。ReactNode
onOpenChange打开状态变化时调用的回调,参数为新的打开状态。(open: boolean) => void
onSelect条目被选择时调用的回调。(item: BaseDropdownMenuItem) => void