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

EtBackstage · 全屏页骨架 ​

全屏页(文件菜单那种):左导航 + 内容区 + 返回/Esc,开关不引发画布尺寸跳动。

API ​

import { EtBackstage } from '@wil-works/evoke-tools-ui'办公子类壳功能块

Props

名称类型默认说明
modelValueBooleanfalse开关
titleString''标题(aria-label 取它,缺省「全屏页」)
navWidthNumbernull左导航宽(px);null = 走 CSS 令牌默认档

Emits

事件载荷说明
update:modelValuefalsev-model(modelValue)的写入
opened—进场动画结束(此刻才可读焦点位)
closed—退场动画结束(Esc 与点外部都走同一条收起路径)

Slots

槽吃什么作用域
#nav左分节导航(产品填分节项)—
default后台页内容区(新建 / 打开 / 账户等页面)

键盘 · 可访问名 · 密度

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

行为 ​

  • 不引发画布尺寸跳动的三条结构保证:Teleport 到 body 不参与文档流、挂载点只留零尺寸锚点、打开期间 documentElement 挂计数式锁滚动 class(overflow: hidden + 实测滚动条缺口补 padding-right——有滚动条才补、没有就是 0;不用 scrollbar-gutter: stable,它在无滚动条页面会凭空造槽位,实测抓过 5px 横跳)。
  • 焦点陷阱 / Esc 收敛 / 焦点归还与 EtDialog、EtCommandPalette 共用 useModalFocus(同一套契约)。
  • role="dialog" + aria-modal="true",tabindex="-1"。
  • 锁滚动计数在模块作用域:多实例叠加时只有最后一个个例摘 class。

令牌与门禁 ​

  • 左导航宽缺省走 --eb-sidebar-width。
  • M3 验收:backstage 开关不引发画布尺寸跳动;焦点三处一致。
  • 过渡名走常量绑定(G2 图标名提取器会把过渡名的字面属性当图标名)。