EtDialog · 模态对话框
模态:焦点陷阱 + Esc 收敛 + 焦点归还,与 Backstage、命令面板同一套焦点管理。
API
Props
| 名称 | 类型 | 默认 | 说明 |
|---|---|---|---|
| modelValue | Boolean | false | 开关 |
| title | String | '' | 标题(aria-label 取它,缺省「对话框」) |
| width | String | Number | '520px' | '520px' |
| closeOnClickMask | Boolean | true | 点遮罩关闭(只认遮罩自身,面板冒泡已过滤) |
| closeOnEsc | Boolean | true | Esc 收敛;false 时 Esc 不关(焦点陷阱仍生效) |
| confirmText | String | '' | 给了才渲染对应钮;footer 槽整体接管时以槽为准 |
| cancelText | String | '' | 取消钮文案;给了才渲染 |
Emits
| 事件 | 载荷 | 说明 |
|---|---|---|
| update:modelValue | false | v-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 提取器误判防护)。