One UI

OneDialog

对话框默认挂载到 body;自定义容器模式不会锁定 body 滚动。

查看代码收起代码
import { OneDialog, oneDialog } from '@geektech/one';

new OneDialog({ title: '编辑资料', defaultOpen: true });
const confirmed = await oneDialog.confirm({
  title: '保存更改?',
  description: '确认后将立即生效。',
});

异步确认

const saved = await oneDialog.confirm({ title: '保存更改?', onConfirm: async () => save() });

API

OneDialog 属性
名称签名说明
openopen?: boolean受控显示状态。
defaultOpendefaultOpen?: boolean非受控初始状态。
titletitle?: string标题;header 插槽优先。
descriptiondescription?: string说明;default 插槽优先。
closeOnOverlaycloseOnOverlay?: boolean是否允许点击遮罩关闭,默认 true。
closeOnEscapecloseOnEscape?: boolean是否允许 Escape 关闭,默认 true。
confirmLoadingconfirmLoading?: boolean确认中的加载与禁用状态。
containercontainer?: OneOverlayContainer自定义挂载容器。
childrenchildren?: Array<VNode | string>default、header、footer 插槽。
OneDialog 事件与服务
名称签名说明
confirm() => void点击默认确认按钮。
cancel(reason) => void取消、遮罩或 Escape 请求。
openChange(open: boolean) => void受控状态变更请求。
afterClose() => void视图实际卸载后发出。
oneDialog.open(options) => OneOverlayHandle创建可更新对话框。
oneDialog.confirm(options) => Promise<boolean>创建可等待的确认对话框。
oneDialog.closeAll() => void关闭全部 Dialog 并以 false 结算等待。

键盘与 ARIA

使用 role=dialog、aria-modal、aria-labelledby 和 aria-describedby。Tab / Shift+Tab 在最上层对话框内循环,Escape 按配置关闭,关闭后恢复原焦点。