跳到正文
定位、使用者与职责边界
定位、使用者与职责边界
搜索 YUDS 文档

YUDS 文档

浮层组件:对话框、抽屉与提示

对话框、抽屉、弹出面板、快速预览与工具提示的共同浮层契约、关闭与焦点仲裁及验收夹具。

状态:LP-G01—LP-G06 与 CMP-LAYER 是本族浮层的共同契约,视觉只消费 D02/D05/D07 已采用基线;子层编辑、切换决策等多处细则标为保守候选,CMP-LAYER-RESP 是由既有原则推导的可修订契约(不批准新的平台 API),B2-PREVIEW 是已独立反审的通用深契约候选。输入/输出名称只是记录概念,CMP 编号只用于规范追踪,均不是已定组件 API;官方平台资料核查(2026-10-18、2026-10-19)不代表组件已自动完成草稿保护与焦点验收。全部夹具与测试、平台实际运行、读屏与视觉结果均未执行。 更新:2026-10-19 所属章节:基础组件与交互契约

本页是浮层组件族行为与参数引用的唯一主档;使用选型、解剖与正反例见组件使用手册:从任务选型到页面组合。

形状或出现方向不决定语义;是否模态、是否可交互、是否修改数据决定行为。命令菜单完整契约见操作组件:按钮与动作入口 CMP-05。

共同设计与验收边界见基础组件与交互契约,本章特殊条件与来源限制就近说明。本页依次覆盖:

  • 浮层共同契约与 CMP-LAYER 仲裁
  • CMP-26 / LP-DIALOG 对话框
  • CMP-27 / LP-DRAWER 抽屉与响应式
  • CMP-28 / LP-POPOVER 弹出面板
  • B2-PREVIEW:快速预览
  • CMP-29 工具提示
  • 组合验证与主档索引

1. 浮层共同契约与 CMP-LAYER 仲裁

1.1 LP-COMMON 层与容器的共同边界

LP-G01—LP-G06 定义本章浮层及引用它们的可交互容器的共同契约:身份、层关系、原始草稿、关闭仲裁、焦点与增长。各族只补自身用途和例外,CMP-LAYER 将这些规则连接到导航仲裁。

1.2 LP-G01 身份、状态和值

每个打开实例保留稳定任务 ID、对象/上下文 ID、实例代次、父层 ID、所属任务范围、当前授权代次、触发器身份与逻辑返回位置。标题、DOM 节点、列表索引、显示位置和外形均不作为身份。打开同一逻辑实例的重复事件不得制造多个提交入口;真正支持多实例时显式声明独立对象、草稿和返回路径。

分开记录:

  • 呈现:关闭、正在打开、已打开、正在退出;动画结束只说明呈现状态。
  • 层关系:模态/非模态、活动子层、当前输入拥有者、当前隔离范围。
  • 内容:未取到、已加载、部分加载、空、旧值、读取失败、不可披露。
  • 编辑:原始草稿、可解析候选、校验结果、是否相对当前会话基线有变化。
  • 写任务:未提交、处理中、明确成功、明确拒绝/失败、部分结果、结果未知、取消请求中、最终已取消。
  • 关闭请求:尚无、等待决策、获准、拒绝/撤回、呈现已结束。关闭请求结果不代替写任务结果。

允许“只读+旧值+刷新失败+面板展开”;不允许用 loading 覆盖已允许保留的原始输入。撤权先阻断新的修改及不允许披露的信息,不能为离开确认继续保留受限正文。仅失编辑权但仍有阅读权时保留获准值并说明只读;不要一律清空。

1.3 LP-G02 模态层树与输入仲裁

层管理按任务父子关系和输入所有权决定活动范围,不按谁的 z-index 最大判断。菜单/列表候选/日期控件即使通过 portal 在别处绘制,也要登记属于哪个任务;逻辑子层必须在该任务可访问范围内,不能因为不在同一个可见矩形就被当背景关闭。

  • 模态根、独立模态子任务及普通弹出子控件分别登记。父任务暂停不等于已经取消;父层草稿仍受自己的授权和会话约束。
  • 当前最高活动模态任务及它的有效子控件可以交互;其余受限背景的指针、键盘、辅助技术与滚动隔离一致。新的模态子任务不能把自己藏进父层的不可访问区域。
  • 关闭子模态只释放它持有的隔离,再恢复仍存在的父模态范围;不能全局解除背景锁。关闭普通子控件不释放父模态隔离。
  • 系统/输入法先处理其拥有的 Escape、返回或取消。事件尚未被消费时,应用才交给当前有效的最高子控件;子控件已处理后同一事件不再传到父层。不能以一次手势连关全部层。
  • 非模态层只有在焦点处于该层或其所属子控件、或用户明确点击其关闭入口时,才接管该层的关闭键。不能监听整个页面 Escape 便关闭所有非模态检查器。
  • 显示错误或状态通告不是自动开新模态的理由;不要让多个异步错误连续叠框。必须中断时合并成当前任务能够理解的一次说明。

1.4 LP-G03 父子编辑会话与取消快照

父层会话基线是打开该编辑会话时的原始草稿及确认版本,不必等于远端确认值。快照包括允许保留但尚未解析/当前无效的文本、选择及必要编辑上下文;不能只存“合法值”,使取消误删用户尚在输入的内容。

子层打开时记录父字段/对象/授权/草稿版本,并另建子层暂存。推荐的保守候选是子层编辑不修改父草稿;点“应用到字段”才在权限与父版本仍匹配时合并指定字段。子层应用不等于父表单远程保存,不能连带触发外层主操作。

子层“应用”的资格核验须捕获子实例、子草稿修订及其准确候选值、当前约束版本、父对象/字段/草稿版本和授权代次。异步校验或决策只授权该组快照;等待期间子草稿 C1 改成 C2、约束或父状态变化,旧通过结果既不能套到未检查的 C2,也不能把画面回写为 C1,更不能关闭当前层。保留当前允许保留的原始稿并重新核验。若写请求此前已经发出,其真实回执仍归原操作,不因资格失效而假称未执行;当前新草稿另行处理。

取消子层只丢子层本次变化,父草稿保持当前状态。不能无条件把打开子层时的快照写回父字段:父字段可能已由另一合法入口、程序更新或协作者改变。若支持即时本地预览,记录由该子层拥有的预览增量;取消仅撤销仍由它拥有且版本匹配的预览,不能回滚外部更新。发生冲突时保留最新允许保留的父状态,清楚说明候选尚未应用,并提供重新载入/重新核对;不自动覆盖双方。

关闭外层编辑任务也只处理该任务拥有的未提交变化;不能撤销已经获远端确认的写入或别的任务已提交的变化。若产品支持持久草稿、自动保存、撤销或跨进程恢复,必须另行证明能力和范围,不能由一个“取消”按钮推断。

1.5 LP-G04 关闭请求、异步决策与写回执

关闭按钮、Escape、系统返回、背景点击、关闭手势、对象切换、受保护导航共用一个离开请求。记录发起原因、目标层实例、当时草稿版本、待离开目标及授权代次;等待期间新的等效请求合并,不再开多个确认框,不重复提交保存。

等待异步保存/草稿检查期间,若产品允许继续编辑,晚到的“允许关闭”只对它核验的版本有效;草稿、对象、范围或权限改变后需重新核对,不能关掉更新后的草稿。若锁住编辑以形成稳定决策,仍保留可读状态、取消等待或真实安全退出路径;失败不能留下永久不可退出的遮罩。

发生的事实 呈现与任务的结果 不得发生
用户撤回离开,旧允许结果才返回 请求失效;保留当前任务与草稿 旧结果再次关框
保存后关闭的保存明确失败 保留允许保留的输入,说明失败;关闭尚未完成 用退出动画掩盖失败
保存回执丢失 写任务仍未知;关闭按 CMP-LAYER 的真实核查能力/期限说明 自动重发、宣称已取消或造任务中心
仅关闭进度视图 结束呈现;有真实查询能力时在其范围内按原身份核查,否则依 CMP-LAYER 说明会话期限、退出限制与真实可用处置路径 把关闭当作取消业务,或无查询能力仍承诺后台可查
取消请求与执行成功同时返回 以可核查终态和范围说明结果 用本地取消状态覆盖实际成功
层已关闭,后又打开同一对象新实例 旧写回执归原任务,旧读取不写进新实例 旧回调关闭新实例、复活旧内容或抢焦点
撤权发生于离开确认期间 先清理受限内容并撤销不再合法的动作,落安全说明 等用户决定是否保存后才清理

已发写任务的回执不能按“旧读取”直接丢弃,但其展示内容仍须通过当前披露权限检查。无持久查询服务时明确会话和退出边界,依 CMP-LAYER 提供真实可用渠道;允许用户理解限制后退出,不承诺恢复、不自动重发。

1.6 LP-G05 关闭原因决定焦点去向

打开到内容加载完成只建立一次初始焦点;后续加载、重排或晚到成功不抢走用户已移动的焦点。若目标暂不可用,先用可读标题/状态起点,数据到达后不再自动跳字段。

  • 用户在层内点击关闭/取消,或层拥有 Escape:恢复到仍存在、有权且可用的触发器;不存在则选同对象邻项、区块标题或明确后续任务入口。
  • 非模态层因用户点击一个合法外部目标而关闭:焦点留给该目标;不能立即拉回触发器。若外部动作会丢草稿或离开任务,先完成离开仲裁,不让该动作先执行再弹保护。
  • 非模态层因 Tab/Shift+Tab 离开而按约定关闭:继续到正常文档顺序的目标,不回到触发器造成循环。暂存编辑可以保持打开且保留草稿,不以保持焦点在内部作为保草稿的方法。
  • 子层关闭:优先回仍有效的父层触发位置;当前最高模态不是该父层时,不越过活动模态去恢复。
  • 关闭使工作流进入明确的新任务:可落新任务起点;不先闪回旧触发器再跳走。
  • 外层已经关闭/撤权而子层延迟返回:不恢复到隐藏父节点;只在当前焦点无效时安排安全后继,用户已在有效位置则不抢焦点。

1.7 LP-G06 共同视觉与增长

只消费 primary、neutral、focused、success、warning、failure、general 七角色 × 已批准固定职责 step;不新增 modal、panel、popover 色别名或私自定义层级色阶。label/prose/heading 各九档保持;本节不另定义数值,消费排版层级与文字可读性 D02、布局、响应式与信息密度 D05 和图标、层级与动态反馈 D07 已采用基线。阴影、全局断点及具体平台 API 依各自主档的未决或已采用状态处理;平台偏离须登记,不能借此绕过已有初始值。一个独立任务至多一个主操作,嵌套容器不是新增主按钮的理由;确为独立子确认时才建立自己的任务边界,活动子任务期间父操作不能同时执行。

标题、对象、危险后果和关闭路径能在长文/翻译增长/文字放大下理解。页脚可重排或进入正常滚动流,不能遮住错误或强迫正文仅剩很小视口。大字、软键盘、安全区及减少动态效果改变布局,不改变任务身份、提交次数和退出语义。RTL 按逻辑起止布局,ID 和用户内容不反转。

打开前记录触发位置和任务上下文;打开后明确标题、所处理对象与关闭路径;关闭后的焦点先按关闭原因判断:Escape/明确关闭在仍需恢复时回有效触发位置或合理后继;非模态外点/Tab 尊重有效目的目标,进入新任务由新任务接管,用户已移到别处不抢回。关闭入口先发起关闭请求;若会丢弃未保存内容,应进入明确的离开保护流程。

一个浮层的子菜单、日期选择等属于它的交互层次;在系统/输入法未消费事件后,Escape 交给当前有处理权的最上层子控件,不能一次穿透关闭所有层。优先减少多重模态堆叠,复杂任务应使用独立页面或有清楚返回关系的工作区。浮层层级需要实现级统一管理,不能由产品任意加极大层级值。

状态包括关闭、打开中、就绪、局部加载、提交中、提交失败、结果未知和关闭请求待处理。动画完成不代表业务完成。减少动态效果时任务路径与焦点不变。

来源与证据边界见本组来源。

1.8 CMP-LAYER:选择、关闭与背景仲裁

返回、关闭、取消及一个离开事件只处理一次的主档是导航、深链接与上下文保留第 9 节 NAV-01—NAV-05;本节把该仲裁落实到弹层,不另建导航规则。授权撤回优先于草稿保护和画面恢复,不能为等待离开确认继续展示受限内容。

先选任务语义再选外形:确认或短时独立任务用对话框;与主区并行查阅可用非模态抽屉;局部筛选/字段配置用弹出面板;有限命令用菜单按钮的菜单;无交互补充才用工具提示。sheet 是平台呈现方式,若承担模态任务沿用对话框契约,不另设“下滑即保存”语义。不能仅为视觉统一把所有菜单、帮助和编辑都做成模态。

模态打开时,只允许最上层活动任务接收指针、键盘和读屏浏览;背景控件、背景滚动和辅助技术路径同时隔离。仅加遮罩或只锁 Tab 不足。隔离不得隐藏活动浮层自身;读屏探索应能到达标题、说明、正文和全部动作。非模态层则保留背景阅读/滚动及可发现的往返路径,不假标模态。关闭后恢复原滚动位置,不能把页面跳回顶部;若布局已变化,以可见且仍有权访问的逻辑位置为准。

初始焦点:简单表单进入首个适合编辑字段;长说明先到标题/起始文本;不可逆确认优先安全动作或说明起点,不能默认聚焦危险执行。仅在关闭原因需要恢复焦点时,按顺序尝试:仍存在且可用的触发器 → 同对象相邻可操作项 → 区块标题或任务结果入口;非模态 Tab/外点、新任务接管及用户已经移焦时,遵循 LP-G05,不用此序列抢回焦点。目标已撤权时跳过该目标,不为恢复焦点重新显示受限信息。

当前层与关闭入口 仲裁结果 不能发生的行为
输入法候选/系统输入界面优先处理返回 先由系统消费该输入事件;若仅收起键盘,任务和草稿仍在 同一事件再穿透关闭面板并丢草稿
子菜单/日期选择活动,按 Escape 或平台返回 在平台将事件交给应用后,最上层可关闭子控件先处理;焦点回父触发器 一次关闭子控件、父对话框及背景页面
任务有未保存草稿,点关闭/外部点击/系统返回/拖拽关闭 同一离开保护:继续编辑、明确放弃,或产品支持的保存后离开;关闭尚未获准不卸载草稿 只有关闭按钮保护,手势绕过保护
写任务进行中或结果未知,关闭进度视图 关闭呈现与取消业务分开;仅在产品已证实查询/保留能力时提供该范围内有效的核查入口;缺少持久能力按下述限制说明与安全退出处理 把关闭当已取消;伪造持久任务入口;禁止所有退出困住用户
上层关闭而原触发项已删 按上述恢复序列进入有效目标并让结果可知 聚焦隐藏/已销毁节点,或无理由跳到页面起点

核查能力与退出边界

产品须在提交前声明结果核查方式、标识的保留位置和期限,以及是否支持关闭、刷新、进程退出后继续查询。只有这些能力有依据时,才能承诺相应任务入口。结果未知且没有持久任务服务时,保留当前仍有效的会话信息,并在关闭前明确说明“关闭/刷新后不能从本应用继续查询本次结果”等实际限制;用户仍可选择继续等待或在理解限制后关闭,不能无限锁住模态。

若产品确有人工核查渠道,可提供其真实入口和允许披露的参考编号、提交时间/范围摘要;编号只帮助定位,不是授权凭据或成功证据,不能暴露令牌、敏感对象详情或他人数据。没有可用参考编号或人工渠道时如实说明,不凭空生成查询能力。

无论留在原视图还是关闭,都不得自动重发写请求,也不得把未知改成成功、失败或已取消;再次执行须先取得可核查结果,或由产品明确的人工处置流程作出决定。离开保护主档仍为 NAV-03,恢复能力边界见异步执行、结果核查与恢复。

平台事实核查(2026-10-19)

Apple Modality 要求清楚的退出路径、关闭可能丢失内容时帮助避免损失,并避免连续堆叠模态;具体按钮/手势遵循平台。Android Dialog 区分预设 AlertDialog 与需自行提供尺寸形状及内部容器的 Dialog;Android Bottom sheets 要求隐藏后移除模态 sheet 的组合内容。这些实现事实不等于组件已自动完成 YUDS 草稿保护和焦点验收。

Web 的模态背景不可交互及焦点返回规则参考 APG Dialog。HarmonyOS 目标版本的原生返回与焦点 API 另由平台适配、国际化与输入能力核查,本页不把 Web Escape 或 Android 回调名复制成 HarmonyOS 承诺。

文档夹具

在窄屏打开含长中文标题和两个字段的模态编辑,放大文字、唤起软键盘,制造第二字段错误,再开该字段的日期选择。

  • 正常预期:错误、当前输入及关闭/提交通过滚动可达;先由系统/输入法消费其拥有的事件,未消费的事件才交当前应用最上层处理者;按目标平台实际顺序收起输入界面或子层,事件不穿透;明确放弃后回有效触发器。
  • 失败预期:若固定页脚挡住错误,先重排/滚动露出目标;若触发器已被删除,落相邻项/区块标题;若保存回执丢失,仅在已证实的查询/保留范围提供核查入口;无此能力则按上述限制说明与安全退出处理。

以上是可执行验收脚本,三平台真实运行、读屏隔离与键盘顺序均未执行。

无持久任务服务反例夹具(CMP-LAYER-F2)

  • 前置:写入已发出、响应丢失,产品只保留当前会话的请求标识,刷新后不能查询;人工支持是否存在分别测试。
  • 动作:关闭进度视图,再刷新/重新进入。
  • 预期:关闭前明确能力期限和退出后限制;有真实人工渠道时可保留安全参考编号并联系,无渠道时说明本应用无法继续核查;允许用户明确关闭,但重新进入不能伪造任务入口、自动重发或宣称原请求失败。另检查参考编号不含访问凭据和受限详情。

文档推演完成;关闭、刷新、人工渠道与平台实际运行均未执行。

2. CMP-26 / LP-DIALOG 对话框

2.1 用途、不适用与解剖

用于需暂时隔离当前上下文的短任务、提交前关键确认,或确实需要用户回应的重要消息。不用于每次轻微校验错误、普通加载、持续详情检查、需要反复对照背景的工作或可直接进入专用页面的长流程。

结构:可见任务标题与可访问名称、稳定对象/范围说明、必要后果与可恢复性、正文/输入、就地错误或结果、明确退出及动作区。长结构化内容保留自己的标题/列表/表格,不合并成一次冗长可访问描述。独立图标只表达辅助含义,不替代风险文字。

变体为短表单、受控确认、消息确认、只读集中查看;加载/错误/结果未知不是变体。消息确认与普通表单默认用普通对话框语义;只有需中断并获得回应的重要短消息才选 alertdialog,不因红色图标就提高通告优先级。无需回应的成功信息用就地反馈,不强迫点“知道了”。

2.2 输入、事件与动作语义

输入:当前对象和版本、允许执行的操作及范围、原始草稿、风险说明、可恢复能力、关闭政策、初始焦点候选与返回目标。输出分别记录打开意图/实际打开、草稿变化、提交意图/真实回执、关闭原因/决定/实际关闭。任何名称都是记录概念,不是已定 API。

同一激活最多形成一次提交意图。确认对象数量或范围发生变化时先重述变化,不让用户以旧范围确认新范围。确认按钮明确动作与必要对象;仅提醒已发生事实时不得伪装成执行按钮。不可逆动作的初始焦点选择安全动作或说明起点。Enter 仅按当前控件/表单明示模型处理;输入法组字、正文换行、子选择器确认不应冒泡执行外层危险动作。安全初始焦点不能代替真正的授权或确认。

后台校验失败保留输入、定位相关错误;字段提交失败仍可修正。对必须重新预览的对象版本冲突,先显示当前已知事实和候选差异,再让用户重新决定;不静默扩大范围。局部成功显示逐项范围与真实剩余路径,不用一个全局“失败”掩盖已生效部分。

2.3 模态、嵌套与增长

Web 模态使用本页的焦点与背景规则,不因采用原生 dialog 或组件库即假定完成所有验收。独立子确认允许复用 LP-G02 的短暂子任务机制,但优先把多步骤内容做成单任务内明确的前进/返回,避免无限模态堆叠。子选择器与独立子对话框不同:前者采用自己的键位,后者取得完整模态焦点范围。返回到上一步不等于关闭整个任务。

焦点进长说明的起点时,关闭按钮仍可键盘和触控找到;初始聚焦不应自动打开组合框候选。错误使正文变长时,标题、当前对象、错误字段、退出与一个主操作都可通过合理滚动到达。对话框不提供无依据的“可拖拽改变大小”承诺,只有实例支持 LP-RESIZE 时才暴露调整入口。

2.4 平台差异

Web 采用对话框及必要 alertdialog 语义、可见名称与读序,验证真实 Tab 范围和辅助技术隔离。

Apple 的模态建议强调清楚退出、避免损失与减少连续叠层;嵌套任务可改成同一呈现中的步骤,不能照搬 Web 的多个窗口栈。Apple Modality

Android 的 AlertDialog 有预设槽位,基础 Dialog 需自行提供内部容器/布局;示例回调只表示用户关闭请求,不证明保存已完成。Android Dialog

HarmonyOS 保留同样任务、关闭和权限语义,ArkUI 具体焦点/返回/窗口能力待目标版本官方资料核查;不声明与 Web Escape 等同。

2.5 精确夹具(全部运行未执行)

  • LP-D-N01 正常:R-01 短编辑会话带已存在的本地草稿“名称甲”;打开,改为“名称乙”,明确提交成功后关闭。预期一次写意图,回执归 R-01/本次版本,焦点到有效触发器或明确下一任务,重新打开基线为确认后的状态。
  • LP-D-N02 安全确认:R-01 删除确认显示对象及实际恢复能力;打开后按 Enter。预期初始焦点位于安全动作/说明;没有明确激活危险按钮便不发送删除。子组合框正在组字时 Enter 也不得发送删除。
  • LP-D-F01 嵌套:父对话框有原始草稿“1.”(尚未完成数字输入),子选择器打开后修改候选并取消。预期父原文仍为“1.”,不变为空或规范化的“1”;只关子层,写入 0 次,焦点回父触发处。
  • LP-D-F02 版本冲突:子层打开时父草稿版本 V1,期间另一合法入口改为 V2;子层取消。预期只丢子层变化,父 V2 完整保留;随后用旧候选应用时提示重新核对,不覆盖 V2。
  • LP-D-F03 关闭竞态:发起“保存后关闭”时草稿 G1,用户继续改成 G2;G1 获成功回执。预期记录 G1 已成功,但不把 G2 宣称已保存或卸载;按当前草稿重新核对离开。
  • LP-D-F04 未知结果:写入已发送,响应丢失且仅本会话可核查;用户关闭。预期按 CMP-LAYER 明示退出限制,允许理解后离开,不重发、不伪造持久任务入口,后到真实回执归原任务。
  • LP-D-R01 撤权:离开确认打开时 R-01 阅读权撤回,之后旧读取成功。预期受限正文、可访问名称、子层候选和应用可控缓存清理;不继续询问是否保存秘密内容,旧回包不复活;焦点到可披露说明。
  • LP-D-L01 增长:长中文/阿拉伯文标题、多段结构化说明、大字、软键盘、错误与活动日期子层。预期错误和关闭可达,读序不因视觉换行变化;先收系统拥有的输入界面/当前子层,单次事件不关父层;减少动态效果后结果一致。
  • LP-D-F05 重开:实例 A 正在退出,立即明确打开同对象实例 B;A 的关闭决定/读取/写回执随后返回。预期 A 关闭不能关 B,旧读取不填 B,写回执仍可按原任务安全呈现;焦点不被 A 抢走。

来源与证据边界见本组来源。

例:删除合同附件时展示名称与是否仍可恢复;删除失败保留附件与说明。若对象已被另一人删除,可显示已不存在并刷新,不把它归为本次已成功删除。

验收:打开及关闭焦点、循环 Tab、读屏标题、缩放与内部滚动、后台不可交互、子弹层 Escape、双击确认、取消请求与执行完成竞态、触发器已移除后的合理焦点。错误和焦点不能被页脚固定条遮挡。

CMP-26 基线正常夹具

删除 A 确认 → 取消 → 不发送删除且焦点回触发器。

CMP-26 基线失败夹具

仅会话内可查且提交超时 → 关闭前说明核查限制 → 允许安全关闭、不重发且仍未知;有持久能力才给其入口。

3. CMP-27 / LP-DRAWER 抽屉与响应式

3.1 用途、结构、状态与值

抽屉用于与主区有关的辅助阅读或有限编辑,不承担所有导航、完整工作区或高后果确认。模态抽屉遵循 LP-DIALOG;非模态抽屉保留主区操作。结构为任务标题、当前对象身份、是否跟随主区选择的明确说明、正文/局部状态、可达关闭/回主区、真实可用动作。

必须声明是“固定当前对象”还是“跟随用户明确选择”。固定查看 R-01 时主列表重排、焦点移到 R-02 不自动换对象;跟随选择时切换是有目标的请求,先核查 R-01 草稿、处理中写入及披露边界。主列表选择、键盘焦点、抽屉对象和草稿分别保存,不能只凭选中行索引关联。

输入:当前和请求对象 ID、标题/数据版本、跟随策略、草稿、权限、局部加载和返回位置。输出:打开、请求切换/实际切换、提交/回执、关闭;只查看另一个对象不自动保存。加载新对象时禁止新标题配旧值;可保留独立标明的旧对象任务状态,但不能伪装成新对象内容。

3.2 非模态往返与异步

打开编辑抽屉可把焦点移到合适起点;只读检查器可选择保留主区焦点,但需要可发现的进入路径。自然 Tab、明确“回到列表”/“进入详情”动作或平台已核查的区域切换机制至少能往返。不能用焦点陷阱迫使用户先关闭非模态抽屉。

用户正在主区时,后台抽屉加载、保存成功或错误不抢焦点;仅当前焦点节点失效时安排安全后继。非模态关闭后是否返回触发器仍按关闭原因:用户当前在主区安全位置则保持,不无故跳回已滚走的行。

连续请求 R-02、R-03 时,待确认的切换目标必须让用户看得清;新请求不得偷偷替换已展示确认中的目标。保守候选为一次只接受一个切换决策,取消或完成后再允许明确新目标,不缓存“稍后自动切换”的惊喜动作。读取乱序只允许当前已接受目标更新当前正文;旧写回执归旧任务,不宣称写入未发生。

只在仍获准时安全保留 R-01 未保存草稿;对象撤权优先清理,不能让固定抽屉冻结受限数据。对象不在当前筛选结果中不等于已删除,明确该区别;真正已删除要停止不再合法的编辑并给合理后续位置。

3.3 平台、增长与条件能力

Apple sheet 在不同平台的模态边界不同;本页不把所有 sheet 当非模态抽屉。Apple Sheets

Android ModalBottomSheet 的隐藏与从 composition 移除是呈现生命周期,数据草稿/写任务要由其任务状态承担,不能随视图丢失。Android Bottom sheets

窄窗口和大字可重排为完整可滚动内容,模态类型变化只引用 CMP-LAYER-RESP。拖动关闭须有显式按钮替代并通过同一离开保护;仅支持调整高度的抓手不能伪装成关闭,拖动滚动内容也不能误当关闭。HarmonyOS 目标版本的具体能力待核,不自造返回 API。

3.4 精确夹具(全部运行未执行)

  • LP-W-N01 正常:固定非模态 R-01 检查器打开;焦点在主列表移动到 R-02,再进入检查器并回主区。预期对象仍 R-01,两边均可达,检查器未假标模态,写入 0 次。
  • LP-W-F01 切换保护:R-01 原始草稿“1.”,请求切 R-02 后选择继续编辑。预期 R-01 和原文保留,R-02 未成为当前对象;不得出现 R-02 标题配 R-01 值。
  • LP-W-F02 乱序:获准从 R-01 切 R-02 再切 R-03;R-02 读取最后返回。预期当前标题/正文/错误始终属于 R-03;R-02 不抢焦点,旧 R-01 写结果仍归原任务。
  • LP-W-F03 切换失败:R-02 加载失败而主列表仍可用。预期说明 R-02 未取得与重试/返回,不显示 R-01 值顶替;主列表恢复路径保留。
  • LP-W-R01 撤权:焦点在抽屉受限字段时撤权。预期内容、摘要和子层清理,焦点到安全说明或有效主区;旧写回执仅保留允许披露事实,不再次显示秘密值。
  • LP-W-L01 增长:长对象名、记录退出筛选、窄屏、软键盘和大字。预期身份与“不在当前结果中”可理解,关闭可达;重排不产生关闭/提交,模态变化按唯一主档复验。

来源与证据边界见本组来源。

用途:在保持主任务上下文时查看或编辑辅助内容。解剖:抽屉标题、对象身份、正文、关闭与必要动作,宽度与高度随内容适配。抽屉只是呈现容器,必须声明它是模态还是非模态。

模态抽屉沿用对话框契约;非模态抽屉允许访问背景,不限制用户将焦点移到背景,并提供清楚的返回主区路径。窄窗口下变为全屏时,可以改变布局,但不能悄悄改变提交与关闭含义。

行为:从记录 A 切到 B 时,先处理 A 草稿,再加载 B;B 加载时不展示 A 值配 B 标题。若主列表滚动或刷新,抽屉仍能识别正在查看哪个对象及是否已不在当前结果中。

失败:详情加载失败不遮住主列表恢复路径;保存失败保留抽屉输入;对象权限被撤销时移除受限内容并说明可披露状态。关闭抽屉不会自动撤销已经保存的编辑。

例:列表右侧打开合同 A 摘要,用户仍可浏览别的行;需要编辑多个互相关联字段时可以转完整编辑页面。

验收:覆盖模式标识、焦点来回、未保存切换、窄窗口、列表重排、对象删除及长内容。

CMP-27 基线正常夹具

查看 A 非模态摘要 → 回列表 → A 身份仍清楚。

CMP-27 基线失败夹具

A 脏草稿切 B → 先保护,不允许 B 标题配 A 值。

3.5 CMP-LAYER-RESP:打开期间的响应式模态转换

本节是从现有任务身份、焦点和背景隔离原则推导的可修订契约,不批准新的平台 API。每个实例登记两种策略之一:打开期间保持模态类型,只重排尺寸;或在已声明断点允许模态类型转换。优先前者减少意外;不能仅根据全屏外形自动切换语义。若当前实现不能完成下面的转换,应保持原类型并采用可滚动布局,不能用错误的模态标记补救。

允许转换时,任务 ID、对象 ID、字段草稿、校验、活动子层及可恢复滚动位置不因重挂载丢失;转换不是关闭、重新提交或取消。

由非模态转模态时,在同一可观察交互更新内建立正确的背景隔离和有效层内焦点:焦点本就在有效内部控件则保留;焦点在背景则迁入当前最高活动模态任务内适合阅读/继续操作的目标;存在模态子层时不得迁回其父层。不能留下焦点在隔离区的中间可交互状态,也不把活动层自身设为不可访问。更新模态语义与视觉隔离一致,说明上下文变化但不重复播报全部内容。

由模态转非模态时,仅释放本层持有的键盘、指针、读屏及滚动隔离;由模态祖先或仍打开的模态子任务持有的隔离继续有效,不能全局解锁。焦点始终受当前最高活动模态任务约束;没有其它模态限制时保留仍有效的层内焦点,不因窗口变宽自动把焦点送回打开按钮。原触发器用于真正关闭时的恢复。子层若不适合新布局,先按其关闭契约迁移到有效父层位置,不让一次窗口事件取消父任务。输入法尚在组字时避免重建编辑器;若重排无法保证稳定输入,延后语义转换直到组字结束。撤权和对象消失仍优先按安全规则处理。

夹具 CMP-LAYER-RESP-F1:打开非模态面板,字段 A 草稿为“项目01”,焦点移到背景按钮;缩窄进入已声明模态布局。预期草稿、任务 ID 不变,焦点进入可见层内目标,背景三种交互路径均隔离,提交/关闭事件均为 0。再变宽,焦点仍在有效层内目标,背景可重新到达。分别以焦点原在字段 A、子组合框打开、独立模态确认子层仍开着、输入法组字、触发器已移除复测;子模态仍在时变宽不能释放其隔离或把焦点移到父层。不得丢草稿、悬空焦点或穿透关闭。运行、读屏与视觉结果均未执行。

依据:APG Modal Dialog 的模态焦点与背景不可交互边界(2026-10-19 读取);响应式原子转换是 YUDS 推导,并非该文直接给出的实现或跨端保证。

4. CMP-28 / LP-POPOVER 弹出面板

4.1 用途、不适用与结构

用于锚定一个明确触发器的少量相关查看或配置,例如局部字段配置、筛选候选、可交互帮助。只有命令的列表复用 CMP-05;字段取值复用相应选择器;无交互短补充用 CMP-29;复杂/长时编辑转有标题的任务页面或合适对话框。浮在上面不等于 menu、tooltip 或 modal。

结构:有名触发器与展开关系、面板标题/目的、当前对象与范围、内容/控件、必要状态、明确的应用/取消或关闭路径。锚箭头是视觉辅助,不是唯一归属标识。含字段与链接的面板不使用 tooltip 语义。

变体按任务选择:只读帮助、即时本地视图调整、暂存后应用、已声明即时远程操作;每个实例明确一种保存模型。另独立声明非模态或已采用对话框规则的模态呈现。外形/位置/宽度不定义其保存模型。

4.2 草稿、关闭与锚点

输入包括原有效值、允许保留的原始草稿、对象/字段版本、选项完整性、锚点身份、可用空间、保存和轻关闭政策。输出是展开/关闭、候选变化、应用意图、实际确认与关闭原因;滚动避让不产生重新打开事件或提交。

  • 即时本地调整:值改变即可影响声明的本地视图;关闭只收起面板,不假称远端保存;“取消”只有能准确恢复本会话且不覆盖外部更新时才出现。
  • 暂存后应用:焦点离开、外部点击、关闭手势和锚点失效都不等于应用。保守候选为保留面板和草稿,或经离开保护明确放弃;不能按失焦偷偷保存。取消按 LP-G03,应用失败保留草稿和原有效值。
  • 即时远程操作:一次改变与一个可核查写任务绑定,关闭不撤销;结果未知按共同异步契约,不把面板消失当成功。若多字段需要原子提交,不能伪装成多个即时动作。

锚点滚出可视区与锚点真正销毁是不同事件。仍存在时优先在许可空间内避让并保留对象关系;若已无法理解归属,按预先声明策略关闭或转稳定有标题的容器,草稿仍按保护规则。目标销毁/撤权时不能贴到屏幕同位置的另一行;主对象已撤权则清理受限内容,焦点退到安全路径。

点击属于该面板的 portal 子层不是外部点击;点击父面板可关闭更深的无草稿候选层而不取消父任务。一个点按不应同时关闭父面板并触发原来被覆盖的危险动作。对于真正的非模态合法外部目标,按 LP-G05 保留用户意图;需要保护时由统一离开仲裁决定,不能先执行再询问。

4.3 Web 语义与非模态焦点

按内容采用普通区域、对话框、菜单或列表框的完整模型,不给通用面板统一套 menu 键位。普通非模态表单面板中 Tab 按自然顺序,末项可离开;Escape 仅在它拥有输入时请求关闭。触发器用按钮语义及相应展开关联;显示型非模态帮助可保留触发焦点,但需保证后续键盘能进入其中真实链接/操作。进入编辑面板时可迁到适当字段;没有业务原因不自动提交或展开内部候选。

HTML Popover 标准 说明弹出呈现需结合所选元素语义;原生轻关闭和其他 popover 自动收起机制不等于 YUDS 草稿保护。需要异步决策的暂存表单不能假定任何隐藏通知都可取消。实现应选能在实际隐藏前完成仲裁的承载方式;做不到时保留明确关闭路径或换合适任务容器,不在已经卸载之后才补确认。

4.4 平台和增长

Apple Popovers 官方建议范围小、锚点明确并避免级联;其自动关闭保存指导不能被解释成 YUDS 未授权的自动远程写入。暂存型任务若不能满足平台关闭与草稿语义,应使用合适 sheet/对话框或单层步骤。macOS 的可脱离面板属于条件式平台能力,不推广为所有端默认支持。Apple Popovers

Android 依内容选菜单、对话框或已验证的 sheet,具体组件能力另核,不能把 Web popover 当原生 API。HarmonyOS 目前没有对应版本的正文证据,使用已能验证的普通可访问容器,不给出未核查属性。已声明的响应式模态转换继续直接引用 CMP-LAYER-RESP。

长标签、帮助、RTL、放大和软键盘下要能读到完整选项、错误、应用和关闭。避让可以换方向,不改对象身份与读序;当内容不适合局部浮层时允许升级为合适容器,不能仅压缩文字和命中区。

4.5 精确夹具(全部运行未执行)

  • LP-P-N01 正常:R-01 列设置原有效集合为 A/B,暂存勾选 C 后应用成功。预期有效集合 A/B/C,一次应用意图;关闭后重开显示确认值,关闭本身不重复应用。
  • LP-P-N02 非模态离开:只读帮助面板打开,Tab 到最后链接后再 Tab;随后重新打开并点击背景“记录 R-02”。预期分别进入正常下一目标和 R-02 入口,均不抢回帮助按钮;未发生背景禁用或假模态标记。
  • LP-P-F01 应用失败:暂存集合 A/B/C,远端明确拒绝。预期原有效 A/B 保留,候选 C 与就地错误可见;不先关面板再只给短暂失败提示。
  • LP-P-F02 子层:暂存面板里组合框通过 portal 打开;点击其选项后按 Escape。预期选项激活被识别为内部事件;单次 Escape 只处理当时有输入权的层,不取消整个父编辑会话。
  • LP-P-F03 锚点删除:R-01 面板有草稿,后台列表删除 R-01 并让 R-02 占同位置。预期不把旧面板解释为 R-02;只在允许保留范围处理 R-01 草稿并给有效退出,无旧读取填入 R-02。
  • LP-P-R01 撤权:受限帮助/候选面板正在加载,权限撤回后成功响应。预期不呈现受限内容、旧可访问名称及候选索引;焦点到安全说明,不能以隐藏面板但保留复制数据代替清理。
  • LP-P-L01 增长:长多语标签、放大、视口靠边、软键盘和 RTL,当前候选位于底端。预期避让/滚动保持聚焦项可见,动作和关闭可达,对象和候选 ID 不变,应用 0 次。
  • LP-P-F04 轻关闭保护:子面板原始候选是无效文本“–”,用户点背景导航。预期不自动应用/清空;先按离开策略保留或明确放弃,导航最多执行一次;选择继续编辑后原文仍可见。
  • LP-P-F05 父变化:打开子配置时父字段为 V1,后台确认值变 V2;子层预览过候选再取消。预期仅撤销仍属于本子层的预览增量,不回写 V1;V2 保留并说明未应用旧候选。
  • LP-P-F06 应用核验乱序:子实例 S1 的候选 C1 在约束 Q1/父字段 V1 下发起异步应用资格检查;未返回时用户改成 C2,再分别注入约束 Q2 和父字段 V2,随后 C1 通过。预期旧结果不应用 C2、不覆盖回 C1、不关闭层,当前允许保留的 C2 原文保留并需重新核验;仅匹配当前全部快照的确认才能合并。已实际发出的旧写请求另按真实回执处理。

例:列设置面板勾选 5 列后点“应用”,成功后关闭;失败仍显示原列和待应用选择。

验收:覆盖键盘打开、外部点击、Escape、内层下拉、滚动锚点、应用失败和再次打开时正确值。

CMP-28 基线正常夹具

列设置选 5 列 → 应用确认 → 5 列生效后关闭。

CMP-28 基线失败夹具

应用失败 → 原列不变、5 列草稿仍在、面板留错误。

来源与证据边界见本组来源。

5. B2-PREVIEW:快速预览

现行设计输入沿 D01–D08。以下是通用深契约候选(已经独立反审);具体 API、服务与平台实现须有真实证据,全部运行未执行。七个 role × 固定 step、三个文字角色各九档,以及每个独立任务至多一个主操作,这些约束不变。

5.1 B2-PREVIEW-01 用途与结构

快速预览是对象只读摘要与明确详情入口,适合不离开当前集合先辨认对象;不是完整编辑器、选择即应用、模态确认或 Tooltip。图片/PDF 等资源预览仍引用 DSP-PREVIEW,不因有内容预览而批准任意格式渲染器。正文里如含收藏/其他动作,逐一引用其独立合同及范围,不能整张预览变点击入口又嵌按钮。

结构为可识别对象/范围/版本或读取时间、标题、只读摘要、局部读取状态、明确详情入口(实际可用时)、关闭/返回和来源。支持内联、非模态锚定层、固定侧区、明确模态四种承载候选,各自遵 LP/B1-SIDE;不能由遮罩或全屏外形猜语义。非模态允许往返,模态必须真隔离背景并让有效子层位于最高模态范围。

5.2 B2-PREVIEW-02 对象请求与状态

分开触发目标、已接受预览对象、当前实际内容快照、呈现实例/可见性、读取与权限、焦点/定位意图。点击 A 后再点 B 建立新预览意图;标题不能换成 B 却让 A 正文冒充 B。读取失败可保留获准的 A 但必须仍标 A 且说明 B 未加载,或显示 B 失败空壳;本候选默认后者,提供明确重试/返回,不能把失败当 B 无内容。

读取、图片解码和来源摘要分别绑定主体/空间、预览实例、对象/版本、授权及请求代次。目标切换、关闭后重开同对象的新实例、锚点重用或权限变化使旧回包失效;旧成功不重开,旧失败不污染新实例。缓存只在真实对象/版本/授权兼容时使用并标时间;预览固定对象不因列表焦点/排序游走暗中跟随。跟随明确选择是另一个已声明模式,不能根据鼠标经过变更独立任务。

撤读权立即清理摘要、标题、图片/alt、详情链接、来源、tooltip、缓存和待播报;旧回包不复活。只失编辑权但仍可读不应抹掉纯只读预览。无法披露身份时以获准安全说明替代,不透露隐藏数量。进入完整详情时再核权限/目标版本;预览展示不授予后续动作权限。

5.3 B2-PREVIEW-03 打开、关闭、焦点与取消

本候选以明确按钮/链接操作打开,有可触控入口,不以 hover 作为唯一打开方式。若产品另做 hover 增强,它不能自动移动焦点,核心内容仍由显式入口取得,不放只能 hover 激活的动作。交互预览不是 tooltip 角色。Web 打开/关闭语义参考 APG Modal Dialog 的模态基础;非模态事件/并发政策由 YUDS LP-G05 定义。

模态初焦点按 LP-G05 只设置一次:长内容可在标题/状态,晚到数据不再自动跳详情。非模态由入口声明焦点留触发器并有自然可达内容路径,或进入首个有意义内容;本候选显式“预览”按钮默认进入标题/内容起点,重新渲染不重复聚焦。关闭原因决定去向:Escape/明确关闭在需要恢复时回有效触发器/后继;外点/Tab 保合法目的地;进入详情由新任务接管;若用户早已在另一有效位置,迟到关闭/加载不拉回。仅释放本层隔离,不能越过仍活动的最高模态。

Escape/系统返回先由 IME 和最上有效子控件消费;一次事件不关子菜单又关预览。锚点消失先安全关闭/迁移,若用户焦点在外不抢回;列表虚拟复用不能把旧 A 预览绑定同位置 B。关闭只结束本预览读取呈现,不取消父表单原始草稿、比较集合或收藏已发任务。预览本身无编辑草稿,局部编辑若另立子任务按 LP-G03 取消差量,不因关闭预览默认应用。

5.4 B2-PREVIEW-04 键盘、增长与平台

具名入口、标题、详情/关闭按自然顺序可达,静态摘要不逐行增加 Tab。非模态不陷 Tab;模态最高层循环。详情是导航时用真实链接/平台导航动作,读取重试是按钮。窄屏变全屏仍同对象/实例;模态类型若变只沿 CMP-LAYER-RESP,不卸载父草稿或输入法宿主。长名称/单位/时间/错误可读,大字体与软键盘下关闭和详情均可达,RTL 不反转 ID。状态通告沿 FB-LIVE 合并且不抢焦。

Web、iOS、Android、HarmonyOS 分别标容器映射与待测路径,不声称已核原生专门预览能力。没有快速预览能力时可直接提供同权限详情入口,不能用无动作的放大镜假承诺。

执行前冻结平台/浏览器或设备版本、实际视口、文字设置、方向、完整样本、真实能力前置与各子轮唯一预期。所有测试数值仅属夹具配置,不是全局组件默认;本文没有真实运行证据。

5.5 精确夹具(全部运行未执行)

B2-PREVIEW-F01 明确打开和详情

  • 前置:列表 A/v1,显式预览按钮,非模态默认进入标题;内容可读,详情可导航。
  • 动作:打开,读取成功,激活详情。
  • 预期:初焦点一次;内容 A/v1;详情导航一次接管焦点,不闪回旧触发器;业务写入 0。
  • 禁止事件:整层点击兼导航;读取到达再抢焦。
  • 规则:B2-PREVIEW-01、B2-PREVIEW-03

B2-PREVIEW-F02 切对象失败

  • 前置:A 已预览;明确预览 B 并用本候选 B 失败空壳;qB 在途。
  • 动作:qB 失败,之后 qA 旧成功到达。
  • 预期:B 失败状态/重试可达;不把 A 正文标 B,qA 不污染 B。
  • 禁止事件:B 无内容假结论;标题 B 正文 A。
  • 规则:B2-PREVIEW-02

B2-PREVIEW-F03 关闭重开同对象

  • 前置:实例 i1 对象 A 请求 q1;关闭后再开 A 为 i2/q2。
  • 动作:q2 成功,q1 成功/失败分别迟到。
  • 预期:只有 i2 状态更新;q1 不关/重开/污染 i2,初焦点不重复。
  • 禁止事件:仅对象 ID 相同就接收 q1。
  • 规则:B2-PREVIEW-02、B2-PREVIEW-03

B2-PREVIEW-F04 撤权与图片解码

  • 前置:A 预览包含标题、图片 alt 和来源;焦点在详情;旧解码/读取在途。
  • 动作:撤 A 读权,再送回旧结果。
  • 预期:受限各路径清理,焦点安全,旧图/alt/名称不复活。
  • 禁止事件:仅隐藏可见摘要;复活下载入口。
  • 规则:B2-PREVIEW-02

B2-PREVIEW-F05 只撤写权

  • 前置:A 只读预览可读,另有编辑入口;仅编辑权限撤回,读权及编辑入口存在的披露权保留;实例采用保留不可用入口与原因。
  • 动作:权限更新。
  • 预期:摘要仍可读;编辑入口保留、不可用且原因可达;所有激活编辑 0 次;没有预览清空或自动保存。
  • 禁止事件:一律清空全部值。
  • 规则:B2-PREVIEW-02

B2-PREVIEW-F06 外点关闭不回焦

  • 前置:非模态预览,外部按钮 B 合法且无离开保护,当前焦点在预览。
  • 动作:点击 B,按已声明政策关预览。
  • 预期:B 接收一次自身动作并持有效焦点;不回预览触发器。
  • 禁止事件:关闭再抢回;触发原遮挡危险控件。
  • 规则:B2-PREVIEW-03

B2-PREVIEW-F07 IME 和子层

  • 前置:预览内另立获准搜索子控件;独立应用建议列表 L 打开,同时系统 IME 组合候选打开。冻结测试宿主:第一次 Escape 由 IME 消费并结束组合及系统候选,应用 L 仍打开;预览本身无编辑。
  • 动作:第一次 Escape 仅交 IME;第二次独立 Escape 关闭应用建议 L;再明确关闭预览。
  • 预期:第一次 IME 结束而 L/预览仍开;第二次仅 L 关闭且预览仍开;每次仅当前拥有者处理,父原稿和已发收藏不被取消。
  • 禁止事件:一次 Escape 连关;关预览应用父稿。
  • 规则:B2-PREVIEW-03

B2-PREVIEW-F08 锚点虚拟复用

  • 前置:A 预览锚点在列表位置 1;该位置将回收为 B;焦点已在外部有效 C;本实例明确锚点失效安全关闭,不迁移宿主。
  • 动作:排序回收锚点,qA 迟到。
  • 预期:A 预览关闭一次,qA 不重开;C 焦点保持,不将旧预览当 B。
  • 禁止事件:同位置继承对象;强拉回隐藏 A。
  • 规则:B2-PREVIEW-02、B2-PREVIEW-03

B2-PREVIEW-F09 模态子层响应式

  • 前置:非模态预览 A 中独立模态子任务 C 活动;允许断点转换。
  • 动作:缩窄使父预览呈模态,再变宽;一次 Escape 关 C。
  • 预期:最高 C 隔离保持;只释放 C 持有隔离,父按当前模式;对象/父原稿不变。
  • 禁止事件:全局解锁;一次连关父子。
  • 规则:B2-PREVIEW-03、B2-PREVIEW-04

B2-PREVIEW-F10 长文触控退出

  • 前置:长名称/时间/来源/失败说明,窄屏与大字体;无 hover 设备。
  • 动作:触控显式打开,键盘遍历详情/关闭;独立默认 320px 与 200% 子轮。
  • 预期:完整身份/状态可读,退出均可达;没有仅 hover 路径或伪 tooltip 交互。
  • 禁止事件:标题被裁无替代;Tab 陷非模态。
  • 规则:B2-PREVIEW-01、B2-PREVIEW-04

B2-PREVIEW-F11 晚到读取不夺焦

  • 前置:模态预览初以标题/加载状态聚焦一次;用户已移到关闭按钮。
  • 动作:摘要成功加载。
  • 预期:内容更新但焦点仍在关闭按钮;不跳详情;只一次合并状态通知。
  • 禁止事件:每次数据到达重设初焦点。
  • 规则:B2-PREVIEW-03、B2-PREVIEW-04

B2-PREVIEW-F12 关闭与收藏未知分离

  • 前置:预览内即时远端收藏 F1 已发、结果未知;父表单有未解析原稿 q;无后台核查能力。
  • 动作:关闭预览并继续父任务。
  • 预期:q 保持;F1 仍未知且无重发,真实限制可理解;关闭只结束预览。
  • 禁止事件:回退远端收藏状态声称取消;清父 q。
  • 规则:B2-PREVIEW-03

证据:完整夹具 · 来源与适用边界 · 独立反审。原始草案仅以 b2 冻结源稿 存证,不是第二份现行正文。来源语义范围不等于 SAP 对等或平台运行通过。

6. CMP-29 工具提示

用途:简短补充名称或非关键解释。解剖:触发元素、与其关联的短文本,不放输入、链接、确认按钮或必须阅读才能安全执行的内容。关键单位、错误和后果直接显示或用可交互帮助面板。

Web 模式说明:工具提示在悬浮或焦点时出现,本身不接收焦点,Escape 可以关闭;焦点留在触发元素。该 APG 模式仍标注在进行中的共识工作,不能据此声称组件已通过全部辅助技术验证。APG Tooltip

行为:文字长到需要交互阅读时改用帮助面板;触控无悬浮时仍有可理解动作名称,不要求长按才知道关键含义。提示不遮住正在解释的操作或相邻关键字段;出现和消失不影响布局。

持续与关闭(GEN-AR01/CMP-29 补充):作者控制的自定义提示允许指针从触发器移入提示内容而不消失;触发器或提示仍处于悬浮状态,或触发器仍有相关焦点时,保持显示,直到用户主动关闭、相关触发条件均已解除或信息失效。Escape 主动关闭后,即使原焦点/悬浮尚在,也不能因重渲染立即重开;先等待该次触发结束,随后新的移入或聚焦才可重新触发。关闭不移动焦点,提示本身仍不接收焦点,不设置固定阅读超时。这将可关闭、可移入及持续性落实为局部契约,依据 W3C SC 1.4.13 说明;由用户代理控制且未经作者修改的原生提示属于该准则的例外,不据此强改原生行为,也不让原生提示承担唯一关键信息。

通用提示夹具:放大后从触发器移入提示文本,提示持续可读;保持触发器焦点时按 Escape,提示关闭,随后重渲染仍不重开;离开本次触发再重新进入后才允许显示。失败反例是移入即消失、阅读中自动超时,或按 Escape 后立即再出现。夹具尚未实现,指针迁移、键盘、放大和读屏运行均未执行。

失败与校验:本地即可提供的提示内容,优先避免依赖远程加载;加载失败不留下空白气泡。被截断的核心对象名称若必须借提示才能读全,还需要可触达的完整查看路径。

例:信息图标解释“预计完成数包含已批准计划”;涉及结果口径时正文同时提供简明标识,不能只靠提示承载。

验收:覆盖鼠标移入提示、焦点触发、Escape、缩放、触控路径和屏幕阅读描述不重复。

CMP-29 基线正常夹具

聚焦信息按钮 → 读补充说明 → Esc 关闭。

CMP-29 基线失败夹具

无悬浮触控环境 → 仍能从正文理解口径,不要求长按找关键风险。

7. 组合验证与主档索引

浮层打开期间权限、对象版本和网络条件都可能变化。最终执行以产品服务端验证为准;把提交按钮隐藏不等于安全控制。对话框里显示过的对象数量不能无限期作为提交范围,应在需要时重新预览或提示变化。

多次连续打开同一浮层只产生一个当前实例或明确定义的多实例关系,不把旧回调写进新实例。异步回调在关闭后仍可能返回;关闭只结束呈现,是否取消请求由任务协议决定。

全部测试未执行。交付记录至少包括模态类型、关闭策略、焦点路径、草稿规则、请求关闭后的结果处理、失败恢复及目标平台。官方来源核查:2026-10-18。相关动作见操作组件:按钮与动作入口,字段与选择见输入组件:文本、结构化编辑与专用输入、选择组件:值、范围与层级。

本节仅提供追踪导航;完整契约及基线正常/失败夹具已归入同名组件主节。CMP 编号只用于规范追踪,不是组件 API;用途、结构和变体见同名组件主节。输入/输出指可观察信息与意图,不把意图当作业务完成。正常与失败列均为“前置条件 → 动作 → 预期”,实际平台执行全部为未执行。键位为已注明的 Web 模型,原生端按本章平台映射另验;触控必须有显式可点入口,不依赖悬浮或拖拽。

  • CMP-26 对话框:本页「CMP-26 / LP-DIALOG 对话框」
  • CMP-27 抽屉:本页「CMP-27 / LP-DRAWER 抽屉与响应式」
  • CMP-28 弹出面板:本页「CMP-28 / LP-POPOVER 弹出面板」
  • CMP-29 工具提示:本页「CMP-29 工具提示」