项目正在快速迭代中,API 与视觉细节可能随版本调整,请勿用于生产环境。

EtDialog · 模态对话框 ​

模态:焦点陷阱 + Esc 收敛 + 焦点归还,与 Backstage、命令面板同一套焦点管理。

API ​

import { EtDialog } from '@wil-works/evoke-tools-ui'公共工具反馈功能块

Props

名称类型默认说明
modelValueBooleanfalse开关
titleString''标题(aria-label 取它,缺省「对话框」)
widthString | Number'520px''520px'
closeOnClickMaskBooleantrue点遮罩关闭(只认遮罩自身,面板冒泡已过滤)
closeOnEscBooleantrueEsc 收敛;false 时 Esc 不关(焦点陷阱仍生效)
confirmTextString''给了才渲染对应钮;footer 槽整体接管时以槽为准
cancelTextString''取消钮文案;给了才渲染

Emits

事件载荷说明
update:modelValuefalsev-model(modelValue)的写入
confirm—主按钮按下(本件不收自己,收起由 v-model 决定)
cancel—取消路径:取消钮 / 遮罩 / Esc 三条路共用同一出口
opened—进场动画结束(此刻读焦点位才准,陷阱已在挂载时就位)
closed—退场动画结束(焦点归还触发元素之后)

Slots

槽吃什么作用域
#footer底部动作区(默认渲染取消 / 确认)—
default对话框正文

键盘 · 可访问名 · 密度

键盘不接管按键
可访问名aria-labelaria-modalrole=dialogaria-label ← title
密度--et-chrome-bg--et-density-base-font--et-density-caption-font--et-density-control-height--et-density-line-height

行为 ​

  • Teleport 到 body,遮罩与面板同走 --et-z-modal(面板在遮罩之后渲染,同档后者居上)。
  • 焦点陷阱:打开后焦点落面板内第一个可聚焦元素,Tab 在陷阱内循环;关闭后归还触发器,触发器已卸载则落容器内第一个。
  • Esc 只发 update:modelValue,关闭态由消费方掌握。
  • confirm / cancel 点击后都关闭并 emit;footer 槽或空文案都不渲染对应钮。

令牌与门禁 ​

  • --et-z-modal(3000)、过渡时长走 --eb-duration-*。
  • M3 验收:焦点陷阱与 Esc 收敛在 Dialog / Backstage / 命令面板三处一致。
  • 过渡名走常量绑定(G2 提取器误判防护)。