示例
直接操作示例,查看组件在具体任务中的状态与反馈。
本地文件操作
季度报告.md
右键此区域
季度报告
右键此区域
内容列表
右键文件区域
发布清单.md
使用建议
只提供当前对象的即时动作
上下文菜单应围绕已聚焦或已指向的对象组织短动作;全局导航、长流程和字段选择应使用持续可见的专用入口。
同时提供键盘与可见入口
触发区域必须可以聚焦并支持 Shift+F10;关键动作还应提供可见替代入口,避免把右键作为唯一发现方式。
由宿主持有状态和副作用
Checkbox、Radio 与 onSelect 只上报交互意图;权限、确认、请求、路由、持久化和失败恢复都由宿主应用负责。
引入方式
从已验证的公开子路径导入组件;全局样式接入方式见安装指南。
import {
BaseContextMenu,
BaseContextMenuCheckboxItem,
BaseContextMenuContent,
BaseContextMenuItem,
BaseContextMenuLabel,
BaseContextMenuRadioGroup,
BaseContextMenuRadioItem,
BaseContextMenuSeparator,
BaseContextMenuSub,
BaseContextMenuSubContent,
BaseContextMenuSubTrigger,
BaseContextMenuTrigger,
} from '@inf-monkeys-tech/monkeys-design/components/base';当前限制
- ContextMenu 不应成为关键动作的唯一入口;触摸发现性、权限判断、危险操作确认和业务副作用仍由宿主负责。
- T17 尚缺 deterministic visual、touch/mobile、manual screen-reader 与最终 packed React 18/19 证据。
- Deterministic visual evidence and final packed React 18/19 checks are pending T17/T23.
API
BaseContextMenu
查看组件源码export interface BaseContextMenuProps {
children?: ReactNode;
trigger?: ReactNode;
content?: ReactNode;
disabled?: boolean;
modal?: boolean;
dir?: 'ltr' | 'rtl';
appearance?: BaseAppearance;
className?: string;
classNames?: BaseContextMenuClassNames;
onOpenChange?: (open: boolean) => void;
}| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
children | 在 BaseContextMenu 内渲染的子内容;支持渲染函数时以对应的 Props 类型为准。 | ReactNode | — |
trigger | 用于触发打开、关闭或显示内容的元素。 | ReactNode | — |
content | 浮层或弹出区域中呈现的内容。 | ReactNode | — |
disabled | 是否禁用该组件及其可交互行为。 | boolean | false |
modal | 上下文菜单打开时是否阻止与页面其他区域交互。 | boolean | true |
dir | 弹出内容与键盘导航使用的文字方向。 | 'ltr' | 'rtl' | — |
appearance | 覆盖组件使用的外观令牌或局部样式配置。 | BaseAppearance | — |
className | 追加到组件根元素的 CSS 类名。 | string | — |
classNames | 按组件公开的结构插槽分别追加 CSS 类名。 | BaseContextMenuClassNames | — |
onOpenChange | 打开状态变化时调用的回调,参数为新的打开状态。 | (open: boolean) => void | — |
BaseContextMenuCheckboxItem
查看组件源码export interface BaseContextMenuCheckboxItemProps
extends Omit<
BaseContextMenuItemProps,
'checked' | 'onChange' | 'onCheckedChange'
> {
checked?: boolean | 'indeterminate';
onCheckedChange?: (checked: boolean) => void;
}| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
checked | 复选菜单项当前的受控选中状态。 | boolean | 'indeterminate' | — |
onCheckedChange | 复选菜单项选中状态变化时调用的回调。 | (checked: boolean) => void | — |
BaseContextMenuContent
查看组件源码export interface BaseContextMenuContentProps
extends Omit<
ComponentPropsWithoutRef<typeof ContextMenu.Content>,
'children' | 'className' | 'style'
> {
children?: ReactNode;
appearance?: BaseAppearance;
className?: string;
classNames?: BaseContextMenuContentClassNames;
style?: CSSProperties;
}| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
children | 在 BaseContextMenuContent 内渲染的子内容;支持渲染函数时以对应的 Props 类型为准。 | ReactNode | — |
appearance | 覆盖组件使用的外观令牌或局部样式配置。 | BaseAppearance | — |
className | 追加到组件根元素的 CSS 类名。 | string | — |
classNames | 按组件公开的结构插槽分别追加 CSS 类名。 | BaseContextMenuContentClassNames | — |
style | 追加到组件根元素的内联样式。 | CSSProperties | — |
BaseContextMenuItem
查看组件源码export interface BaseContextMenuItemProps
extends Omit<
ComponentPropsWithoutRef<typeof ContextMenu.Item>,
'children' | 'className' | 'disabled' | 'onSelect' | 'style'
> {
children?: ReactNode;
label?: ReactNode;
icon?: ReactNode;
shortcut?: ReactNode;
tone?: BaseControlTone;
disabled?: boolean;
inset?: boolean;
appearance?: BaseAppearance;
className?: string;
classNames?: BaseContextMenuItemClassNames;
style?: CSSProperties;
onSelect?: (event: Event) => void;
}| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
children | 在 BaseContextMenuItem 内渲染的子内容;支持渲染函数时以对应的 Props 类型为准。 | ReactNode | — |
label | 菜单项显示的主要文字内容。 | ReactNode | — |
icon | 显示在主要内容旁的图标。 | ReactNode | — |
shortcut | 显示在菜单项末端的快捷键信息。 | ReactNode | — |
tone | 组件使用的语义色调。 | BaseControlTone | — |
disabled | 是否禁用该组件及其可交互行为。 | boolean | false |
inset | 菜单项内容是否使用与带图标条目对齐的缩进。 | boolean | false |
appearance | 覆盖组件使用的外观令牌或局部样式配置。 | BaseAppearance | — |
className | 追加到组件根元素的 CSS 类名。 | string | — |
classNames | 按组件公开的结构插槽分别追加 CSS 类名。 | BaseContextMenuItemClassNames | — |
style | 追加到组件根元素的内联样式。 | CSSProperties | — |
onSelect | 条目被选择时调用的回调。 | (event: Event) => void | — |
BaseContextMenuLabel
查看组件源码export interface BaseContextMenuLabelProps
extends Omit<
ComponentPropsWithoutRef<typeof ContextMenu.Label>,
'children' | 'className' | 'style'
> {
children?: ReactNode;
appearance?: BaseAppearance;
className?: string;
style?: CSSProperties;
}| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
children | 在 BaseContextMenuLabel 内渲染的子内容;支持渲染函数时以对应的 Props 类型为准。 | ReactNode | — |
appearance | 覆盖组件使用的外观令牌或局部样式配置。 | BaseAppearance | — |
className | 追加到组件根元素的 CSS 类名。 | string | — |
style | 追加到组件根元素的内联样式。 | CSSProperties | — |
BaseContextMenuRadioGroup
查看组件源码export interface BaseContextMenuRadioGroupProps {
children?: ReactNode;
value?: string;
onValueChange?: (value: string) => void;
}| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
children | 在 BaseContextMenuRadioGroup 内渲染的子内容;支持渲染函数时以对应的 Props 类型为准。 | ReactNode | — |
value | 单选菜单组当前选中项的受控值。 | string | — |
onValueChange | 值变化时调用的回调;参数结构以当前组件的 Props 类型为准。 | (value: string) => void | — |
BaseContextMenuRadioItem
查看组件源码export interface BaseContextMenuRadioItemProps
extends Omit<BaseContextMenuItemProps, 'onChange' | 'value'> {
value: string;
}| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
value必填 | 该单选菜单项提交给所属组的唯一值。 | string | — |
BaseContextMenuSeparator
查看组件源码export interface BaseContextMenuSeparatorProps
extends Omit<
ComponentPropsWithoutRef<typeof ContextMenu.Separator>,
'className' | 'style'
> {
appearance?: BaseAppearance;
className?: string;
style?: CSSProperties;
}| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
appearance | 覆盖组件使用的外观令牌或局部样式配置。 | BaseAppearance | — |
className | 追加到组件根元素的 CSS 类名。 | string | — |
style | 追加到组件根元素的内联样式。 | CSSProperties | — |
BaseContextMenuSub
查看组件源码export interface BaseContextMenuSubProps {
children?: ReactNode;
open?: boolean;
defaultOpen?: boolean;
onOpenChange?: (open: boolean) => void;
}| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
children | 在 BaseContextMenuSub 内渲染的子内容;支持渲染函数时以对应的 Props 类型为准。 | ReactNode | — |
open | 组件当前的受控打开状态。 | boolean | — |
defaultOpen | 非受控模式下是否默认打开。 | boolean | — |
onOpenChange | 打开状态变化时调用的回调,参数为新的打开状态。 | (open: boolean) => void | — |
BaseContextMenuSubContent
查看组件源码export interface BaseContextMenuSubContentProps
extends Omit<
ComponentPropsWithoutRef<typeof ContextMenu.SubContent>,
'children' | 'className' | 'style'
> {
children?: ReactNode;
appearance?: BaseAppearance;
className?: string;
classNames?: BaseContextMenuContentClassNames;
style?: CSSProperties;
}| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
children | 在 BaseContextMenuSubContent 内渲染的子内容;支持渲染函数时以对应的 Props 类型为准。 | ReactNode | — |
appearance | 覆盖组件使用的外观令牌或局部样式配置。 | BaseAppearance | — |
className | 追加到组件根元素的 CSS 类名。 | string | — |
classNames | 按组件公开的结构插槽分别追加 CSS 类名。 | BaseContextMenuContentClassNames | — |
style | 追加到组件根元素的内联样式。 | CSSProperties | — |
BaseContextMenuSubTrigger
查看组件源码export interface BaseContextMenuSubTriggerProps
extends Omit<BaseContextMenuItemProps, 'onSelect' | 'shortcut'> {}| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| 此导出没有独立声明的 Props;请以上方类型声明及其继承约束为准。 | |||
BaseContextMenuTrigger
查看组件源码export interface BaseContextMenuTriggerProps
extends Omit<
ComponentPropsWithoutRef<typeof ContextMenu.Trigger>,
'asChild' | 'children' | 'className' | 'disabled' | 'style'
> {
children?: ReactNode;
disabled?: boolean;
asChild?: boolean;
appearance?: BaseAppearance;
className?: string;
style?: CSSProperties;
}