Dialog 对话框

在具名模态层中承载需要用户关注和确认的短流程。

Beta

示例

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

对话框始终提供标题和说明;确认只修改当前示例的本地状态。
设置区域显示偏好
当前密度舒适
保存范围仅当前示例
显示密度设置
当前密度:舒适尚未重置
对话框标题描述任务,表单字段保持标签关联,提交只更新本地结果。
当前名称:组件文档
根据任务风险选择是否允许 Escape、遮罩点击和关闭按钮。
危险操作要求显式确认,完成后只更新当前示例的确定性状态。
记录仍然保留。

使用建议

始终提供明确标题和说明

title 说明正在处理的对象或决定,description 说明影响与退出方式,避免只靠自定义 header 提供可访问名称。

由宿主持有完成结果

受控 open 只表达对话框状态;确认后的请求、错误、重试和成功反馈由宿主执行,再决定何时关闭。

限制中断和嵌套

只在必须阻断背景操作时使用模态对话框,避免连续嵌套或把长表单、长文档塞进短确认流程。

引入方式

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

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

当前限制

  • titleless 或仅 custom-header 的可访问命名策略尚未定案;公开使用应同时提供非空 title。
  • T17 尚缺 mobile virtual keyboard、long-content、touch、nested overlay、deterministic visual 与最终 packed React 18/19 证据。
  • Deterministic visual evidence; final packed React 18/19 checks; mobile virtual keyboard, long-content, and touch-device checks; a titleless/custom-header-only accessible-name strategy; and cross-overlay nested matrices remain pending T17/T23.
export interface BaseDialogProps
  extends Omit<
    HTMLAttributes<HTMLDivElement>,
    'children' | 'className' | 'defaultValue' | 'onChange' | 'style' | 'title'
  > {
  open?: boolean;
  defaultOpen?: boolean;
  title?: ReactNode;
  description?: ReactNode;
  header?: ReactNode;
  footer?: ReactNode;
  trigger?: ReactNode;
  triggerLabel?: ReactNode;
  triggerIcon?: ReactNode;
  triggerTone?: BaseControlTone;
  triggerDisabled?: boolean;
  closeLabel?: string;
  closeOnEscape?: boolean;
  closeOnOverlayClick?: boolean;
  showCloseButton?: boolean;
  portal?: boolean;
  appearance?: BaseAppearance;
  className?: string;
  classNames?: BaseDialogClassNames;
  style?: CSSProperties;
  children?: ReactNode;
  onOpenChange?: (open: boolean) => void;
}
属性说明类型默认值
open组件当前的受控打开状态。boolean
defaultOpen非受控模式下是否默认打开。booleanfalse
title对话框显示并用于可访问性关联的标题内容。ReactNode
description用于补充标题或标签含义的说明内容。ReactNode
header组件顶部区域呈现的内容。ReactNode
footer组件底部区域呈现的内容。ReactNode
trigger用于触发打开、关闭或显示内容的元素。ReactNode
triggerLabel显示在触发控件中的标签内容。ReactNode
triggerIcon显示在触发控件中的图标。ReactNode
triggerTone对话框触发控件使用的语义色调。BaseControlTone'default'
triggerDisabled是否禁用对话框触发控件。booleanfalse
closeLabel关闭按钮的可访问名称。string
closeOnEscape按下 Escape 键时是否关闭对话框。booleantrue
closeOnOverlayClick点击遮罩区域时是否关闭对话框。booleantrue
showCloseButton是否在对话框中显示内置关闭按钮。booleantrue
portal是否通过 Portal 将浮层挂载到外部容器。booleanfalse
appearance覆盖组件使用的外观令牌或局部样式配置。BaseAppearance
className追加到组件根元素的 CSS 类名。string
classNames按组件公开的结构插槽分别追加 CSS 类名。BaseDialogClassNames
style追加到组件根元素的内联样式。CSSProperties
children在 BaseDialog 内渲染的子内容;支持渲染函数时以对应的 Props 类型为准。ReactNode
onOpenChange打开状态变化时调用的回调,参数为新的打开状态。(open: boolean) => void