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

YUDS 文档

选择组件:值、范围与层级

复选框、单选组、开关、单项与多项选择、树、滑块、评分、分段控件、值帮助与云文件引用选择的行为契约与夹具。

状态:D01—D08 是代理依用户授权采用的初始设计输入;B3-CLOUDFILE 首期范围(已获准来源内的单文件引用选择)也由代理依授权决定;E/S 冻结范围算法、CMP-SELECT-KEYS 键盘模型等其余行为细则与范围策略仍是可修订的建议或候选。设计采用不等于组件 API、设计资产、平台支持或真实运行已经完成;全部夹具与测试运行均未执行。 更新:2026-10-19 所属章节:基础组件与交互契约

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

选择区分焦点、浏览项、已选值和已保存值;远程结果范围另见查询、选择范围与批量执行。

按任务进入下列主节;每节连续保留完整行为、例外和夹具。D01—D08 的已采用设计输入见决策与讨论记录「代理初始设计基线D01—D08」;其余行为细则仍可修订。设计采用不等于组件 API、设计资产、平台支持或真实运行已经完成;共同边界见基础组件与交互契约,具体来源限制在各节就近说明。

本页依次覆盖:

  • 选择共同契约与使用导读
  • CMP-13 / CHO-CHECK 复选框
  • CMP-14 / CHO-RADIO 单选组
  • CMP-15 / CHO-SWITCH 开关
  • CMP-16 / CMP-17 / SEL-SINGLE 单项选择与组合框
  • CMP-18 / SEL-MULTI 多项选择
  • CMP-19 树与 CMP-SELECT-KEYS 共享复合模型
  • INP-S01–INP-S05 滑块与范围
  • INP-R01–INP-R04 评分
  • INP-E01–INP-E05 分段控件
  • SEL-HELP 值帮助任务
  • B3-CLOUDFILE 云文件浏览与引用选择
  • 组合验证与主档索引

1. 选择共同契约与使用导读

始终区分焦点、当前浏览项、已选值和已保存值。选项有稳定标识、可理解名称、必要的消歧信息、可操作性及可披露原因。显示名称改变不应造成已选对象丢失;同名员工或项目不可只凭名称定位。

加载中、无匹配、全部无权限和加载失败各自表达。异步检索中保留用户查询;旧响应不得覆盖新查询。已选值不在当前加载页不代表不存在,不能自动删除。提交时仍需产品检查选项有效性与权限。

2. CMP-13 / CHO-CHECK 复选框

用途与结构

用于多个非互斥值、单项同意/包含值,或范围明确的集合选择;不是单选、未知状态指示或自动授权。

结构:组名称、子项稳定 ID/名称、checked、可操作性、描述/错误,必要时另有范围明确的父框。父框是选择摘要/入口,不自动把自身作为一个实体选入。层级导航与懒加载树使用现有树契约。

语义和键盘

  • 普通独立复选框各自 Tab 可达、Space 改变当前值;方向键不被擅自变成勾选命令。
  • 父框按真实的 none/some/all 暴露 unchecked/mixed/checked;checked 与 indeterminate 的实现必须在可访问输出中一致,不把视觉短横当作语义。
  • 加载未知是单独状态;父范围不完整时禁止声称「全选全部」。
  • 名称、组 legend、帮助和错误可关联;点击标签只改变对应项。说明里的链接位于不冲突的独立交互区域,不能一次标签点击同时打开链接和切换。

冻结范围与 mixed 算法(候选)

父框明示「选择本次范围中可操作的 n 项」。

  • E:当前声明范围内已解析、可读取且可操作的稳定 ID 快照。
  • S:本次草稿所选的 ID。

规则:

  • E 非空时,根据 S∩E 为零、部分或全部显示父状态。
  • E 为空时父框不可用,并说明没有可操作项;不用「空集全包含」把它算作 checked。
  • E 之外已选的不可操作项保持原值(若允许读取),另显示「另有 m 项保持不变」,不把父状态误说成整个组的总状态。
  • 未加载、后到、新增、当前页外的成员不自动加入 E;远程全量规则只能由产品另行定义。
  • mixed 或 unchecked 时激活均添加 E,checked 时激活只移除 E;不恢复历史子集。
  • 父级一次激活形成一次集合草稿变化,变化列表逐 ID 记录,不把每个子项的监听又当成 n 次远程提交。

保存、失效与冲突

  • 默认只改草稿。显式保存时传递声明范围/成员版本,校验最大/最少数量或冲突;失败时保留允许的有效选择并标明被拒绝项;取消回到本次会话基线。
  • 即时写入的实例需明示保存策略及部分成功回执,不假定所有子项原子成功。
  • 集合成员/权限、筛选查询、分页或所声明范围的版本在操作前变化时,先使旧父范围失效,更新说明与待确认范围;即使新旧成员碰巧相同,也必须核对当前范围身份。
  • 新范围尚未解析时父操作不可用;解析后建立新的明确范围,不能在新页点击「本页」仍改变旧页集合。
  • 跨页保留已选集合 S 不等于跨页保留父操作集合 E,E 不自动扩大;聚焦父框期间到来的新成员不能被下一次旧范围激活顺带选入。
  • 已选项被撤读权时,清除受限内容及可执行的提交值,但保留安全的「有失效选择待处理」提示;不能把失效项自动替换成新 ID。只撤写权时,按明确的产品规则保留可读原值与原因。

增长与 RTL

标签和必要否定可换行;多列改为一列时不改变 ID/Tab 逻辑;父范围/不变项摘要保持可读。大量选项可筛选、分页,但本地父框永远不暗示跨页全量选择。原生 mixed 与辅助技术映射必须实测,不靠截图判定。

精确夹具

夹具 前置 → 动作 → 预期
CHO-CHECK-N E={a,b},S={a,c},c 已选但只读 → 父框 mixed,Space → S={a,b,c},集合变化 1、远程提交 0;再 Space → S={c},说明 c 保持不变。
CHO-CHECK-F 草稿选择 a、b,保存时明确拒绝 b → 响应 → 不报全部保存,允许的 a/b 草稿及逐项结果按可披露规则保留,错误关联组;关闭错误不清空选择。
CHO-CHECK-R 父范围 E={a,b},激活前 b 撤权 → Space → 不按旧范围提交,解释范围已变并需重新明确操作;b 的受限信息清除,安全焦点可达。
CHO-CHECK-G 旧页 E={a,b} 且两项已选,分页到新页 c,长标签/RTL → 浏览后取消本次表单 → 旧 E 失效,新页父操作按当前范围重建;c 未自动加入选择;取消回到进入会话时允许保留的原始草稿快照,重排和分页提交 0;E 为空时父框非 checked。
CHO-CHECK-Q 查询 q1 父范围 E={a,b},切到 q2 新范围尚在读取 → 激活父框并收到 q1 旧回包 → 集合变化 0、旧 E 失效,q1 不复活;q2 解析后以新范围说明重建,即使 ID 相同也须与当前范围匹配。

例与验收

例:导出字段中「基本信息」汇总姓名、编号、部门三项;取消部门后显示部分选择。校验可要求至少一项;错误关联整个组。

验收:覆盖部分状态、禁用子项、长标签、键盘选择和未知成员;远程全量范围不得由本地复选框猜测。

CMP-13 基线正常夹具

三项选两项 → 父框部分态 → 激活后选中声明范围全部。

CMP-13 基线失败夹具

第三项权限未知 → 父框不能报三项全选,保留已知选择并提示待确认。

依据与来源

  • APG Checkbox:三态、Space 与名称。
  • OUDS Checkbox:原生输入/标签/描述结构。
  • E/S 算法、范围冻结、mixed → 全 E 为 YUDS 候选;不把 APG 可选的「恢复历史子集」行为默认为当前规则。

来源与边界见本组来源。

3. CMP-14 / CHO-RADIO 单选组

用途与结构

用于同一问题的一组互斥值,适合同时比较;不用于多个独立开关或切换页面内容(后者通常是 tabs)。

结构:组问题/说明/错误;每项有稳定 ID、名称、必要后果及可用性。普通/卡片外观不增加语义类型;卡片内不嵌套争夺激活的按钮或链接,附加链接独立可达且不选择该项。组内最多一个 checked,初始可无值;必填要求由产品给出,不自动替用户选第一项。

Web 普通模型

  • Tab 进入当前选中且可聚焦的项;无可用选中项时进入首个可用项,但仅进入、不选择。
  • 方向键按明确顺序移动并选择可用项,首尾循环;Space 选择当前项,不能再次按 Space 清空选中值;Tab 离开组。
  • 原生组无选中项时 Shift+Tab 可能进入末项,记录为平台差异,不为追求统一而重复模拟键盘。
  • 若允许空值,提供显式的「无」选项或组外清除入口并说明,不能让同一键产生非标准取消。

工具栏模型

  • 按导航组件:位置、切换与返回 toolbar 的 roving 焦点协调:方向键浏览 radio 不改变 checked;Space 明确选择。
  • 在工具栏边界,方向键按工具栏规则离开 radio 区,不困在组里循环。
  • Enter 是否选择必须预先确定,并避免整表提交;本稿默认不增加 Enter 选择。
  • 独立组与工具栏模型不能随屏幕宽度静默切换;若响应式布局迁入工具栏,必须显式建立并验收新焦点模型,值仍是同一 ID。

数据、草稿与恢复

  • 默认方向键选择只改草稿,不立即提交远程事务。
  • 切换条件字段时按选项 ID 分开保存允许的草稿,不把一种单位的值移给另一种;只校验当前参与提交的分支,未显示的旧分支不继续作为已选值提交。
  • 失败时关联组并保留有效草稿;取消时恢复 AC-COMMON 会话基线和允许的分支草稿。
  • 若用于即时本地视图,需直接明示;即时远程模式需另行声明单写/确认策略,不利用方向键浏览偷偷发送高后果动作。

禁用、撤权、增长

  • 选中项变得不可操作但仍可读时,可保留 checked 的事实和原因;键盘进入其他可用项不自动改选;需重选才能保存时给出组级说明。
  • 选中项失去读取权时不泄露名称,也不自动选替代项;显示安全失效提示,提交受阻,由用户重新明确选择。
  • 全组无可用项时,说明和下一步仍可达。
  • 长后果说明不压成省略号;RTL 视觉顺序与所采用的原生/自定义方向键映射须逐端记录,不用 CSS 倒序造成焦点与可见顺序冲突。

精确夹具

夹具 前置 → 动作 → 预期
CHO-RADIO-N 普通组 a/b/c,基线 a → 方向键至 b、Tab 离开 → 草稿 b、已保存 a、远程写入 0;显式保存后才确认 b。
CHO-RADIO-F 选 b 并填其分支草稿,保存被拒绝 → 改回 a 再回 b → 允许的 b 草稿保留、拒绝说明可读,不把 b 的单位值写入 a 分支;取消回到会话基线。
CHO-RADIO-R 已选 b 被撤读权 → Tab 进入组后保存 → b 名称不泄露、不自动选择 a/c、保存受阻;明确选择 a 后才有新的合法草稿。
CHO-RADIO-G 工具栏内 a 已选、长标签/RTL,以无选中的原生组作对照 → 方向键浏览到 b → 工具栏仍为 a,Space 才选 b;普通组按其模型选择,重排本身变化 0,无选中时的 Shift+Tab 偏差被记录。

例与验收

例:「调整方式」选「固定值」或「百分比」;切换后显示对应单位及规则,不把两个模式的数字直接互用。

验收:覆盖全组禁用、无默认值、选中项权限失效、说明过长、方向键变化和条件字段错误。

CMP-14 基线正常夹具

固定值切换为百分比 → 显示新单位,数值不直接互用。

CMP-14 基线失败夹具

选项被撤权 → 显示失效并要求重新选择,不静默选第一项。

依据与来源

来源与边界见本组来源。

4. CMP-15 / CHO-SWITCH 开关

用途与结构

用于明确的二态设置,具有稳定的功能名称、on/off 值、作用范围、保存方式及状态说明。不是多选集合、瞬时命令或允许 mixed 的聚合。未知或读取失败时显示「状态尚未获取」,不暴露一个假的 off;控件未能取得有效值时不能激活写入。

键盘、状态与平台

  • Web 用 Space 切换;Enter 是可选映射,采用时不能再触发表单提交。
  • 使用原生 checkbox 作为 switch 时按该实现暴露 checked,与自定义 switch 的 aria-checked 不重复、不矛盾。
  • 焦点、disabled、只读、invalid 与布尔值相互独立;readonly 不依靠无效的原生属性实现。
  • 名称不因开关而变化;值不只靠颜色或滑块位置表达。

数据与恢复

  • 表单模式:当前值为草稿,旁注「保存后生效」;取消回到 AC-COMMON 会话基线。
  • 即时模式(本稿采用保守单写):confirmed=false → 用户改为 true → pending,显示「正在开启」及期望值 true;已确认值仍为 false,重复改变被阻止。
    • 成功才确认 true;
    • 明确拒绝时恢复 false,并通告未开启;
    • 超时保留「结果待核查」,不得直接回到 off 并声称失败。
  • 核查结果或迟到回执仍属于原对象。
  • 关闭高后果设置前是否先确认由产品指定;取消确认不改变值、不写入。

增长和撤权

  • 范围与后果直接显示,可换行;RTL 采用平台方向表现,但屏幕、读屏与数据中的布尔值一致。
  • 撤权时保留允许读的 confirmed 值及原因;失去读权则清除受限值且不给出假的 off,焦点留在安全的状态说明上。
  • 原生侧独立验证切换、辅助操作及 pending 阻断。

精确夹具

夹具 前置 → 动作 → 预期
CHO-SWITCH-N confirmed=false,即时模式 → Space → 写 true 1 次、pending;成功后为 true;表单模式下同样动作写入 0,显式保存才提交。
CHO-SWITCH-F false → true pending → 连击、超时 → 额外写入 0、结果未知而非 off;明确拒绝后 false/未开启可被感知,再次重试须有新的明确意图。
CHO-SWITCH-R true 且 focused → 撤写权后继续激活/旧授权返回 → 写入 0,可读的 true 与原因保留;读权也被撤回时移除受限值,但不伪造 false。
CHO-SWITCH-G 多行功能名/范围、RTL 窄布局,表单基线 false → 改为 true、重排、取消 → 重排写入 0、取消回到 false;再打开已确认的新版本时以新值为基线。

例与验收

例:「启用到期提醒」开启后显示正在保存;失败时显示仍未启用并保留重试。关闭会影响整个组织时直接注明范围,并按产品风险规则确认。

验收:覆盖未知值、只读、有权限但网络失败、请求乱序,以及辅助技术获知当前值与保存状态。

CMP-15 基线正常夹具

到期提醒关 → 开启 → 确认后显示已启用。

CMP-15 基线失败夹具

开启请求失败 → 显示确认值仍为关及失败,保留重试。

依据与来源

  • APG Switch:二态、稳定名称与 Space。
  • OUDS Switch:展示输入、名称与描述的结构。
  • 远程状态机及取消基线为 YUDS 推导。

来源与边界见本组来源。

5. CMP-16 / CMP-17 / SEL-SINGLE 单项选择与组合框

5.1 用途、模型与结构

单项选择从已定义集合中取一个值。短静态集合优先用平台原生 select,需要输入检索时用 editable combobox。自定义 select-only combobox 不可编辑;单选列表框是另一种直接显示列表的模型,须独立登记,不混入命令菜单角色。

字段有持久名称、当前值/空值、展开入口、清除策略、选项名称与消歧信息、说明/错误、结果状态。placeholder 不替代名称;分类标题不是实体候选。

必须声明「只接受已有实体」或「允许自由文本」。后者须明示文本值与实体值的类型及接受方式;输入未匹配的字符串不自动创建实体。若只有查询功能,沿用 QRY-SEARCH,不把搜索结果当作字段已接受的值。单选不能借 aria-multiselectable 扩成多选组合框;批量集合改用下一族。

5.2 候选、键盘和接受

自定义实体组合框采用「明确接受候选」模型:

  • 打开、上下浏览时,列表中候选的 aria-selected 与活动项同步,但不改变字段已接受的 ID。
  • Enter/触控明确接受当前已呈现、仍有效的候选一次,并关闭建议;接受不同时触发整表提交。候选自动高亮也不等于已接受。
  • Escape 先关闭建议;Tab 正常离开,且不接受未确认的候选。

这是 YUDS 对 APG 多种可选行为的限定,不声称 APG 禁止自动失焦接受。

文本编辑与导航:

  • editable 输入的左右、Home/End、删除、选择文字及输入法按文本编辑优先;不以 Space 选择候选而吞掉输入的空格。
  • Down 可进入/展开候选,边界默认不循环;非编辑的 select-only 可用前缀定位、Home/End 到当前已知可浏览的首尾,不能自动加载整个远端集合。
  • 没有有效候选时 Enter 不创建实体、不误交整表;查询输入自身的 Enter 依据 QRY-SEARCH 已声明的查询策略,最多发起一次查询。
  • 输入法组合确认不兼做候选接受。

焦点模型:

  • listbox 型组合框的 DOM 焦点留在输入上,并使用活动后代;dialog 型必须真正移焦,不能仍用输入的活动后代驱动对话框。
  • 原生 select 沿用平台的确认/导航/关闭语义;原生 change 可以改变字段草稿,但不触发业务保存。它与自定义「明确接受」策略的差异须在平台记录中列明,不能一边原生处理、一边脚本重复接受。

5.3 值、失效和清除

  • 编辑已接受实体的显示文字后,字段进入「尚未重新选定」,新文本不能配旧 ID 提交;原合法值保留为可解释的恢复基线,但不冒充当前已接受的输入。
  • 建议:Escape 只关闭建议列表,保留待解析文本;显式恢复字段或取消表单时才按对应基线恢复。
  • 允许清除时提供有名称的入口,一次明确清除产生空草稿;必填字段可允许清空后报错,或不提供清除并说明,实例须统一。不能把占位选项当作真实的「无」实体。
  • 候选失去可选资格但仍可读时说明原因,历史值是否可保留由产品声明;不得默认换成第一项。
  • 失去读权时清除受限的标签/候选/活动引用,字段显示安全失效状态,并阻止携带旧 ID 提交。
  • 仅检索失败时保留已接受的合法值与查询,不把失败变成无结果或清空值。
  • 只读允许了解已接受值,但不打开可更改路径;禁用原因另有可达说明。

5.4 复杂候选、虚拟化与平台

  • 只需文字差异的候选可显示名称及简短消歧信息,较长的辅助内容可另行提供说明。
  • listbox option 不含可操作的链接、复选框、详情按钮;需要多列可比较数据或行内交互时,转用有完整键盘合同的 grid/dialog,不能只是给 listbox 改 CSS。
  • 跨页浏览保持 ID;等待新页时不把「加载更多」当作实体,真实的加载按钮位于独立可达的位置。
  • 长名称的末尾差异必须能获取;RTL 混排的数字/标识不被错误重排。
  • 缩窄改用 sheet/dialog 时,保留文本、已接受值与活动身份,重新建立正确的模态与焦点模型,不隐式接受。
  • 移动端返回、键盘完成、外部点击关闭分别登记,不能假定与 Web 的 Tab/Enter 等价。

SEL-SINGLE 夹具:

夹具 前置 → 动作 → 预期
SEL-SINGLE-N 已接受 a,输入 q,候选 b/c → Down 到 b 后 Escape → 原合法 a 仅作恢复基线,当前 q 待解析,不可携 a 提交,接受 0、保存 0;重新打开并按 Enter 选 b 才接受 1。
SEL-SINGLE-F q1 在途,q2 返回 b,随后 q1 失败 → 查看/接受 b → q2 状态不被旧错误覆盖;当前失败不会显示为空结果。
SEL-SINGLE-R q 相同但授权轮次变更,旧候选 b 撤权后同一位置是 c → Enter 与旧响应返回 → b/c 接受均为 0,旧名称不复活,输入仍有权时焦点保留。
SEL-SINGLE-G 长同名前缀候选 b/c,虚拟化回收 b,200% 文字/RTL → 导航至 b 并渲染后确认 → 引用指向实际的 b,仅接受 b;若未渲染成功则接受 0,并有恢复路径。
SEL-SINGLE-I 已接受 a 后编辑名称,IME 确认新串后 Tab → 不接受首个建议、不带 a 的 ID 提交、不整表提交;显式恢复才回到合法的 a。
SEL-SINGLE-P 原生 select 与自定义 select-only 均无值 → 打开/方向导航/关闭 → 按各自登记的确认语义记录草稿,远程保存 0,不重复派发;placeholder 不成为实体。

CMP-16 单项选择器

用途:从一个离散集合中选择一个值,适用于空间或数量不适合单选组的情况。

解剖:字段标签、当前值或未选择状态、展开入口、选项及错误。短且静态的集合优先使用平台原生能力。

行为:明确允许空值、清除及默认值。不要把第一项自动当成用户选择。提交选择时保存稳定标识;不可用的历史值可保留并说明,不能静默替换为列表第一项。大量或远程选项应转用组合框。

键盘:原生选择遵循平台操作;自定义选择器明确采用选择式组合框或列表框模型,不能混合菜单命令与表单值角色。关闭后能理解当前已选值。

例:合同币种原为已停用选项,编辑历史记录时只读保留,是否可更换由产品规则决定。

验收:覆盖空值、同名异 ID、选项列表更新、只读复制、窄空间和无可用选项说明。

CMP-16 基线正常夹具

币种从 USD 选为 CNY → 记录 CNY 标识及名称。

CMP-16 基线失败夹具

历史币种停用 → 仍可读原值及原因,不默认换成第一项。

CMP-17 组合框

用途:可输入文字并从建议中选择,例如搜索项目、人员或可自由输入的标签。必须区分「只能选择已有对象」和「允许自由文本」;输入文字不等于已经选中一个实体。

解剖:标签、输入、展开状态、候选列表、候选名称及消歧信息、加载/无结果/错误区。查询文本与最终值分开;实体选择建议采用明确接受候选的模型,不因失焦把第一项当作用户决定。

Web 组合框可使用方向键浏览建议、Enter 接受、Escape 关闭;保留平台文本编辑键,不劫持光标移动。辅助技术需要知道弹出状态与活动候选。APG Combobox

行为:查询版本与返回的候选绑定;候选失效或权限变化在提交时重新校验。关闭建议不会清空已确认值;再次编辑名称导致原实体失效时,明确进入「尚未选定」状态,不能留下旧标识与新名称不一致。

活动候选身份(GEN-AR02/CMP-17 补充)

当前浏览的候选(概念上称 activeCandidate,不是正式 API)绑定稳定对象标识、本次查询版本及有效候选集合,不能只保存列表索引。

  • 同一查询下重排或合并结果时,仍存在且可选的候选保留同一对象。
  • 对象消失、禁用、失去权限或查询更换时,清除可接受的活动项,并说明候选已变化。不能自动把原位置的新对象当成用户刚才浏览的对象。
  • Web 使用活动后代引用时,该引用必须指向当前实际存在的候选;失效时一并清除,不保留悬空引用。

Enter 接受的是按键时已呈现、仍有效且由用户明确浏览的活动对象:

  • 接受前按标识和候选集合核对,不得在更新中按索引换成替位项。
  • 活动项失效时,本次按键不产生实体接受结果,用户需重新明确选择。
  • 加载、无结果、错误和重试说明不是实体候选,不能被当作选中值;查询文本与原确认值分别保留,失效和披露规则仍适用。
  • 允许自由文本的实例按已声明的值模型处理,不把候选失效自动解释为允许创建实体。

此规则由本页的稳定身份与明确接受原则具体化;APG Combobox 提供焦点/活动后代模型,不代表 APG 规定了这套异步更新规则。

通用身份夹具:在候选 [A(id=a), B(id=b)] 中浏览 B,刷新为 [B(id=b), C(id=c)] 后按 Enter,只接受 b;若 B 已消失、禁用、失权或查询已更换,接受次数为 0,不接受原索引位置的 C。另测试加载/错误行不能成为实体值、活动后代引用无悬空,以及输入和原确认值分别保留。夹具尚未实现,候选更新、键盘、读屏及触控运行均未执行。

例:搜索「王敏」时显示部门和业务邮箱,选择人员 ID;查不到不等于可以自动新建用户。

验收:包括输入法、两位同名人、远程分页、失败后重试、清除与撤销、焦点关闭、提交未确认文本。

CMP-17 基线正常夹具

同名王敏两人 → 按部门选 ID2 → 提交 ID2。

CMP-17 基线失败夹具

编辑显示名却未重选 → 显示未选定,不带旧 ID 提交。

依据与来源

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

6. CMP-18 / SEL-MULTI 多项选择

6.1 用途、结构及分型

用于选择多个已有实体,或录入多个允许的文本值,必须先选定数据模型。实体集合按 ID 去重,文本按产品声明的规范化与重复策略处理,不能按显示名合并两位同名对象。

结构含组/字段名称、输入或展开入口、已选摘要及完整清单、逐项移除、范围明确的清空/全选、候选区、数量/约束/错误。单个布尔设置、互斥值、命令菜单不使用此族。

本稿区分两种可实现的组合,不能混称为同一个 APG 多选 combobox:

  1. 逐个添加的多值输入:一个单选建议输入每次明确接受一个候选,把 ID 加入外部集合;输入自身的建议仍是单选,已选标签/清单是单独的集合展示。输入接受与集合新增分开记录,重复 ID 时提示已添加且集合变化 0。不让候选列表的 aria-selected 同时承担整个已选集合的状态。
  2. 直接多选列表/面板:搜索是独立的查询输入,结果区为有名称的 multiselect listbox(简单项)或明确的复选框列表/复杂 grid(需另行验证)。进入结果区有显式的 Tab/点击路径,不把整个多选面板套用 APG 单选 combobox。焦点与集合选中分离,使用 CMP-SELECT-KEYS。

6.2 键盘、删除和复杂交互

直接多选列表:

  • 方向键只浏览,Space 切换当前可选项一次,Enter 不切换也不提交;Home/End 到当前可见集合的首尾。
  • Tab 以一个入口进出,不逐项遍历所有 option;首次进入优先到可见的已选项,否则到首个可聚焦项。
  • 可披露的禁用项可浏览以读出原因,但不可改变值;只读可浏览已选项。
  • 搜索输入的字符/Space/IME 不被结果区抢占。
  • 全选/清空使用独立、可见作用范围的入口;本稿默认不增加修饰键范围选择。

逐个添加输入:

  • 有有效候选时 Enter 只接受候选;无候选时,仅在明确允许自由文本且当前不处于组合输入时接受一条文本;默认不在失焦时自动添加。
  • 粘贴多个值:若实例声明支持分隔符,先展示解析预览、重复/无效项与可添加数量,明确确认后再批量加入;未声明则作为普通输入文字,不自动拆分并新增。分隔符、顺序是否重要及最大数量由产品指定。

删除与焦点:

  • 每个已选项提供可访问的「移除 名称/消歧」动作,不要求必须用 Backspace 删除。
  • 输入非空时 Backspace 只删文字;本稿候选默认在输入为空时也不直接删除标签,用户通过 Tab/明确导航到移除入口再激活。如另需「二阶段 Backspace 先聚焦后删除」,须独立声明、测试,不冒充基线。
  • 删除后焦点移到允许的邻项移除按钮或输入;清空后回到输入/集合入口,只在焦点原位被移除时才移动焦点。
  • listbox option 内不能藏真实的按钮/checkbox;需要它们时选择明确的复选框行,或有完整导航/交互模式的 grid,而不是假 listbox。

6.3 集合、范围、保存及失败

输入:集合 S、查询版本、候选资格、最少/最多数量及允许的值类型。输出:逐 ID 的增删/范围变更草稿;显式的外层保存另计。

  • 达到上限时保留已选项、拒绝额外项并说明,不静默删除旧项腾出位置;只有撤权等规则要求时才清除受限数据。
  • 被搜索隐藏的已选项仍在摘要/完整清单中;「清空当前匹配项」与「清空全部已选」是不同命令。
  • 标签折叠为「+n」时须有完整清单入口。

本地全选复用 CHO-CHECK 的 E/S 分离:

  • E 为当前声明、已解析、允许操作的冻结 ID 集合,S 为完整的已选草稿集合。全选只令 S 增加 E,取消本范围选择只从 S 移除 E;E 外仍合法的已选值保留,并另示摘要。
  • 父级 none/some/all 仅根据 S∩E 计算;E 为空时不可用,也不算全选。
  • 查询、分页、范围、成员资格或授权版本更新时,旧 E 的操作上下文失效:先更新范围说明并要求重新明确操作,不把旧范围的意图转给新页;晚到的结果不得扩充 E 或触发选择。
  • 显示示例:「选择本页可操作的20项」。
  • 未知总数时,不提供伪装成全结果的按钮。若服务支持跨页全结果,必须有显式的查询/授权/数据快照和集合语义、排除项、动态新增规则,并在确认时再次验证;没有该能力时只提供逐页/逐项的真实路径。
  • 选择当前页不是授权未来结果。即使服务给出估算总数,也须标明为估算,不能以估算宣告全量已选完。

保存与取消:

  • 默认只改表单草稿;关闭非事务式候选面板时保留已改草稿。若实例提供独立的「应用/取消」面板,须采用下一族的临时集合快照,不暗中改变取消的含义。
  • 外层取消回到本次表单基线,失权部分不恢复。
  • 保存失败时保留允许持有的草稿(包括待纠正的非法/未解析部分),并按当前快照映射错误;只有服务确实提供部分成功时才展示逐项状态,不统一报已保存。
  • 已发出写入但结果未知时,关闭界面不取消远端操作。

6.4 异步、撤权与增长

  • 实体可读但暂停选择时,保留已选事实并标明是否仍可提交;撤读权时清除受限标签、详情、缓存输出并标为安全失效状态,不能用空标签继续提交旧 ID。
  • 异步解析已选标签与候选检索分开,不能因当前搜索无结果而清除历史选中。旧权限的回包不得重建标签。
  • 虚拟化只影响呈现,不改变 S;活动 ID/被聚焦的移除入口失效时,先安排安全焦点,不把当前位置的新实体绑定到旧的移除动作。
  • 长标签、RTL、多行标签和窄屏下,保持输入/清空/完整清单可达;原生多选有不同的修饰键模型,须登记映射,不将桌面模型强推到触控端。

SEL-MULTI 夹具:

夹具 前置 → 动作 → 预期
SEL-MULTI-N S={a},直接多选列表活动项 a → Down 到 b、Space、Down 到 c、Enter → S={a,b},变化 1、保存 0;Enter 无选择、无提交。
SEL-MULTI-F 逐个添加,S={a},再接受 a;粘贴含 b/无效串但尚未确认 → 重复新增 0、预览新增 0;确认后仅合法明确的成员加入,且无隐式整表保存。
SEL-MULTI-R 已选 b 被撤读权,旧标签请求随后返回 → 列表/标签/完整清单均不显示 b 的受限内容;不可继续提交 b,旧响应不能恢复;有效的 a 保留。
SEL-MULTI-G 总数未知、已加载 20 项且 S 含外页 a → 本页全选、换页、窄屏折叠标签 → 仅增加本页可操作的快照;a 保留,不宣告全结果,完整清单仍可达。
SEL-MULTI-K 输入非空 q、已有标签 a/b → Backspace;再清空文本并 Backspace → 第一次只编辑文字,第二次默认删除 0;明确激活移除 b 才有集合变化 1。
SEL-MULTI-S S={a},页 1 冻结 E={b,c},全选资格读取在途时换到页 2 或改查询/授权 → 旧页 1 响应返回 → 旧意图不执行,S 仍为 {a}、变化 0;页 2 需重新明确本页选择,旧回包不能扩充当前 E 或冒充全结果。
SEL-MULTI-C 表单基线 {a},非事务面板选 b 后 Escape,再打开值帮助选 c 后取消 → 字段仍为 {a,b};取消整表才回到合法的 {a},不得混同三个取消范围。

CMP-18 多项选择器

用途:明确集合里的多个值。

解剖:组标签、选择入口、已选摘要/标签列表、各项移除、清空范围与数量。选项过多时显示摘要,但提供完整的已选清单,不能仅显示「+18」而无可访问的展开入口。

行为:增删值与最终提交分开;当前筛选下的「全选」只作用于声明范围。清空全部可能比单项移除风险更高,是否确认由可恢复性决定;不能因搜索新词而清除之前的已选项。

键盘:列表与已选项有明确的焦点路径;删除最后一个标签后回到前一项或输入,不掉到页面起点。输入非空时 Backspace 优先编辑文字,不能同时删除一个选项。复杂交互选项不硬塞进简单列表框。APG Listbox

校验:最大数量、互斥组合或最低数量由产品提供,提示具体冲突项并保留其他有效选择。例:分配 3 位协作者时其中 1 位失去访问权限,保留 2 位并说明第 3 位待处理;不能清空整组选择。

验收:覆盖大量选项、移除后焦点、异步名称加载、隐藏的已选项和完整数量。

CMP-18 基线正常夹具

选 A、B 后搜索 C 并加入 → 保留 A、B、C。

CMP-18 基线失败夹具

B 仅被撤写权且仍可披露 → 标记 B 待处理,保留 A、C;B 被撤读权时,清理受限身份和可执行的提交值,以安全失效提示替代,不清空 A、C。

依据与来源

  • APG Listbox:多选的焦点/选择分离、无修饰键模型,以及 option 不承载交互控件的边界。
  • Geist Multi Select 仅作为集合摘要/独立动作的示例:其行内 checkbox+button 和智能动作不是本页的 listbox 模型;同页的 Tab 离开与 trap-focus 建议不一致,故不作为 YUDS 焦点规范。
  • 新增、去重、解析预览、范围快照均为 YUDS 推导。

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

7. CMP-19 树与 CMP-SELECT-KEYS 共享复合模型

本节负责树形选择;层级数据展示、treegrid cells-only 键盘、分支加载与虚拟化的主契约见数据表与交互网格契约「B1-TREE:树与树表」。不要将本节的选择模型直接套作表格单元格导航。

用途:选择具有真实父子关系的对象,例如组织、空间或分类;层级只是视觉分组时无需使用树。

解剖:树名称、节点标签、层级、展开状态、选择状态、必要路径和分支加载状态。

父子范围必须在产品中选择一种可解释模型:

  • 仅当前节点;
  • 父节点代表整个子树;
  • 只选择叶节点。

不能默认「勾选父节点」同时意味着选中节点本体及所有未知后代。级联模式须说明未加载子项、不可操作子项、未来新增子项是否包含,以及父项部分状态怎样计算。

建议默认选择冻结于本次解析集合;若产品需要「动态包含未来后代」,必须明确标签、确认影响并保留审计依据。这是业务权限或集合规则的产品决定,组件不自行授予继承权限。

键盘:垂直树按上下移动可见节点,左右展开/折叠及进入/回到父子层级;多选中焦点与选中分开,不能因方向键浏览就丢失先前选择。APG Tree View

失败:分支加载失败仍保留父节点及重试,不显示空分支冒充无子项。树搜索结果展示路径,结果中的父子范围与原树一致;过滤掉的已选后代仍计入已选摘要并可查看。

例:选择「华东区域」用于资产查询时显示「含当前有权访问的下属项目」;用于授权配置时不得复用这条隐含规则,必须由权限产品定义继承与排除。

验收:覆盖异步新增后代、部分权限、跨分支同名节点、搜索后清除、收起已选子树与移除焦点节点。

CMP-19 基线正常夹具

叶子模型:展开华东 → 选项目 A → 只输出 A。(夹具运行未执行。)

CMP-19 基线失败夹具

华东子项加载失败 → 不得当作无子项或全选完成,保留父节点与重试。(夹具运行未执行。)

7.1 CMP-SELECT-KEYS:多选与树的有界 Web 键盘模型

以下是候选默认行为,不是已发布 API。实例若使用原生控件,登记其平台行为及等效结果;自定义 Web 多选列表和多选树默认采用「移动焦点不改变选择、无需按住修饰键保留选择」的模型。

  • 方向键只浏览;Space 切换当前可选项一次。
  • Enter 在纯多选列表中不另作切换或整表提交;在树中仅执行已声明的节点默认动作。没有已声明默认动作时 Enter 不操作,也不触发表单提交。
  • 默认动作若是展开,不可同时选择;若是打开详情,不能隐式变更集合。
  • 单选树若采用 Enter 确认或选择随焦点移动,须单独登记,不把单选行为套进多选。

入口与定位:

  • Tab 进入复合控件的一个活动入口,再次 Tab 离开,不逐项遍历所有节点。
  • 首次进入优先第一个可见的已选项,否则第一个可聚焦项;后续返回可保留仍有效的活动 ID。
  • Home/End 到当前可见集合首尾,不触发远程全选或自动展开隐藏分支。
  • 非文本编辑环境提供按名称前缀定位;输入法、搜索输入的文字键不被树抢走。
  • 选择列表的全选/清空使用有可见作用范围的独立入口;修饰键批量范围选择仅在完整说明锚点、范围、隐藏项与禁用项处理后启用,本稿默认不启用。

禁用、只读与空集合:可披露但禁用的项可在复合控件的浏览路径中聚焦以读出原因,不能选择、改变已有值或执行默认动作;如实现选择跳过,应另有可达原因与完整列表,不能让用户误以为项不存在。无权披露的项不因键盘浏览重新暴露。禁用与只读不同:只读集合仍可浏览已选值及说明,不允许切换。空集合由容器/邻近状态说明提供可达目标,不捏造一个可选的「无结果」项。

树的展开控制与选择控制保持不同意图。上下移动可见节点,左右操作层级。

  • 折叠当前祖先时,若焦点或活动后代位于将隐藏的子树内,先在同一更新中迁至该可见祖先,保留仍有效的已选 ID 及摘要。
  • 子项被删除或不可披露时,焦点转到最近仍可见且允许的祖先/相邻节点,再无节点则进入树的状态说明;不能把焦点留在已回收的 DOM。
  • 远程加载完成不强制聚焦新子项;原展开请求对象已失效的响应不接入另一节点。

来源:APG Listbox 与 APG Tree View(2026-10-19 读取)提供焦点/选择分离与推荐的无修饰键模型。禁用浏览策略、折叠恢复、远程身份及事件计数是本稿的明确选择;每个目标原生平台仍须独立映射、实测。

以下夹具运行均未执行(本节所有夹具,含上文 CMP-19 基线夹具,均未执行)。

CMP-SELECT-KEYS-F1

  • 前置:三项 A/B/C,已选 A,焦点在 A。
  • 动作:Down 到 B,按 Space,再 Down 到 C。
  • 预期:焦点在 C,已选 A+B,选择事件一次;Enter 不提交表单。
  • 继续:B 禁用后再聚焦 B 并按 Space,变更事件 0,原因可读,A 仍保留。
  • 继续:搜索隐藏 A,不能使 A 从集合消失。

CMP-SELECT-KEYS-F2

  • 前置:父 P 展开,子 A 已选且聚焦。
  • 动作:通过可点击的折叠入口收起 P。
  • 预期:焦点在 P,A 仍在有效已选摘要中,活动引用指向可见目标。
  • 继续:再展开 P,不能因重现就重复发送选择事件;加载失败时保留 P 与重试。
  • 另需分别测试:P 也被删除、子项撤权、未知后代,以及 RTL 下的层级键位映射。

8. INP-S01–INP-S05 滑块与范围

本族正常/失败/撤权/长文本与键盘的精确初态、事件、预期见输入选择夹具;来源及读取限制见登记。

INP-S01 适用性与结构

用于有界数量的快速调节;精确、高后果数值或大量离散命名项不得只给拖柄。

  • 单值:组/字段标签、轨道、一个柄、值与单位、端点/刻度、精确输入。
  • 范围:包括两个有稳定身份的柄和上下限编辑入口。

非线性刻度必须显式说明映射,不能让等距外观暗示等差。

SAP 较早正文展示精确输入与图形调节组合;其默认边界/像素阈值不是 YUDS 决定。SAP Slider,v1-108

INP-S02 值及事件

  • 声明上下界、步长、步长基准、合法集合、单位、端点是否包含。
  • 步长必须有效;配置冲突时报不可用原因,不偷偷套默认值。
  • 拖动预览、结束操作接受、显式应用及远端确认分开;何时触发昂贵请求需登记。
  • 浮点显示与实际量化一致。
  • 键盘到边界不循环;轨道点击候选按声明规则量化。
  • 精确输入超界时保持文本并报错,不能自动夹到边界并当作同意。

INP-S03 双柄身份与交叉

范围模式默认「下限 ≤ 上限且不互换身份」;最小间隔由产品规定。

  • 拖下限超过上限时停在合法边界,并说明限制;文字输入逆序则保留两值并报组级错误。
  • 不能偷偷交换、推走另一柄或改变 Tab 次序。
  • 若真实任务允许交叉,使用固定命名的两个独立标记(如 A/B),明确该变体不是有序上下限;交叉后焦点仍在原标记,Tab 顺序固定。
  • 依赖另一端的可访问边界同步更新;重合时两个柄仍分别可通过键盘/触控替代入口访问。

APG 多柄 Slider

INP-S04 键盘与 AT

  • Web 每柄可聚焦,并读出自身名称、值、单位、合法上下界及方向。
  • 通常右/上增加、左/下减少一步,Home/End 到该柄当前合法边界;可选的大步键须一致记录。
  • 值不是直观数字时提供可理解文本。
  • Tab 穿过各柄,不把轨道再做成一个重复滑块。
  • RTL 或竖向若改变方向映射,需验证与提示,不能只镜像绘制而保留误导操作。

APG Slider

INP-S05 触控、独立轴与恢复

值/范围、当前操作柄、预览值、已接受值是不同轴。

触控 AT 支持存在风险,必须以真实设备测试;无可靠支持时,让同一值模型的输入或增减按钮完成等效任务。提供无需拖动的操作。

拖动与取消:

  • 每次拖动开始,分别记录原始精确输入草稿、已接受数值/有效拖柄表示、校验状态及对象身份/版本。
  • 手势取消按 GEN-SNAPSHOT(见基础组件与交互契约)恢复允许保留的原始草稿及拖动前的有效拖柄表示,接受事件及写请求均为 0;不把最后预览值保存,也不以已接受数值替换未完成或无效的原始文本。
  • 草稿校验无效本身不禁止恢复,且不得把无效文本写成拖柄的无效 ARIA 数值。
  • 若边界/权限/对象版本变化,先核对披露权限、对象身份和外部版本兼容性,不盲目覆盖新版本;不能恢复时保留可披露状态与复核说明。
  • 实例若禁止无效草稿开始拖动,须显式登记该门禁,不能静默归一化。

其他行为:

  • 不要在垂直页面滚动时意外改数。
  • 边界从远端更新时,旧草稿超界需可见复核,不静默改值。
  • 保存失败保留草稿并标未保存;结果未知时先核实后重试。
  • 刻度长文字可减少密度,但保留端点、当前值与完整说明;长标签不得重叠。
  • 只读范围用可读文字/图形呈现,不保留假的可拖动外观。

9. INP-R01–INP-R04 评分

本族正常/失败/撤权/长文本与键盘的精确初态、事件、预期见输入选择夹具;来源及读取限制见登记。

INP-R01 适用性与解剖

用于在说明清楚的量表上评价对象;排名、风险等级、进度不是评分。

结构:组标签(说明评价对象及量表端点)、评分符号/选项、文字当前值、未评分说明、可选清除、保存状态。

个人评分与聚合评分分开命名;聚合值应给出适用样本数及精度说明,缺数据不能伪造 0。

SAP 对象页文档证明存在只读聚合呈现场景,不证明所有评分组件具有同样编辑能力。SAP 只读评分页头说明,1.150

INP-R02 值与事件

  • 声明量表最小/最大、离散步长、是否半分、空与零的意义、是否允许撤销评分。
  • 视觉半个符号不意味着支持半分输入;聚合 3.7 即使画近似符号,仍须显示实际值,不把显示舍入写回。
  • 悬浮预览不修改已选值,移出后恢复;明确激活修改本地评分,保存确认另行记录。
  • 再次点已选档默认不隐式清空;清除用独立可理解的入口,或明确的「未评分」选项。

INP-R03 可编辑、只读、禁用

  • 只读评分是可读取的信息,不能伪装成交互式单选组却仅拦截点击;符号可装饰性隐藏,并以完整文字读出量表和值。
  • 禁用编辑保留原因,不降低重要信息的可读性。
  • 权限撤回立即停止新评分;已显示的聚合不因个人权限变化消失,除非内容权限也撤回。
  • 状态轴包括:未评分/有值/未知,个人/聚合,预览/已选/已确认,可编辑性,保存状态。

INP-R04 操作与适配

  • 小离散量表可采用单选组:Tab 进入已选项或首项,方向键选相邻档,Space 选择,端点是否循环按所选原生/APG 模式保持一致。
  • 每档名称包含「几分/满分多少」及必要语义,焦点与选中分别可见。
  • 较细量表可用滑块,但继承滑块的触控 AT 风险和精确替代。
  • 只靠半颗星的狭小命中区不可接受;触控提供完整可点选项。
  • RTL 下保留量表意义,读出顺序和视觉顺序一致;长语义标签可换行,或转换为普通单选列表。

APG 评分单选示例

10. INP-E01–INP-E05 分段控件

本族正常/失败/撤权/长文本与键盘的精确初态、事件、预期见输入选择夹具;来源及读取限制见登记。

INP-E01 先定语义

视觉相邻的分段不是一个独立的 ARIA 角色。先按任务定语义:

任务 采用的语义
少量互斥值 单选语义
独立多选 复选/切换语义
切换相关内容面板 标签页
跳转新资源 链接导航
命令集合 保留按钮组,不用「选中」冒充命令完成

选定一种模型后,贯穿标签、键位、状态、焦点和输出。

SAP 旧 Web Components 页同时出现不推荐多选与描述多选变体,属于证据内部张力,不合并成 YUDS 必须支持多选的结论。SAP 历史分段控件页

INP-E02 解剖与值

结构:组名、带稳定 ID 的选项、短而可辨的标签、选中标记、独立焦点、可选计数/说明。

  • 互斥模式的值是一个 ID 或明确空值,点击已选项不清空;不以第一项暗作用户决定。
  • 图标须有可访问名及触控可获取的说明;计数变化不改变选项身份。
  • 多选若采用独立变体,必须明示集合值和全不选语义,不能复用互斥事件的含义。

INP-E03 键盘与内容切换

  • 普通互斥组沿用单选组模式:Tab 出入、方向键移动并选择、Space 选择。
  • 置于工具栏时,方向导航与选择应解耦,Space 确认;不得用普通组行为抢占工具栏导航。APG Radio
  • 面板切换采用 tabs 的面板关联;内容有明显延迟时采用手动激活,浏览焦点不强发请求。APG Tabs
  • 这两种模型不得混用成「单选角色+标签页面板键位」。

INP-E04 状态与恢复

额外的状态轴包括浏览焦点、选中 ID、已呈现视图 ID、请求版本、选项权限。

  • 远端视图切换中,清楚标识旧内容对应旧选项;失败时可保留原视图及失败意图,不能显示新选项却无标记地呈现旧数据。
  • 选项变为不可用时保留历史值及原因并要求重选,不自动跳到第一项。
  • 焦点所在项被删除后,焦点移到合理邻项,且不自动提交新值。
  • 权限变化由最新请求校验。

INP-E05 增长与组合

长文本、翻译增长、窄屏和大字下,按原语义提供等效布局:

  • 互斥值可改为单选列表/选择器;
  • 多选仍是集合选择;
  • tabs 保留面板关联和激活模式;
  • 链接仍导航;
  • 命令仍是按钮。

不能仅为布局更改角色或值类型,也不隐藏已选项或挤成含义不明的多行分段;转换时保持 ID、草稿、错误和焦点的合理落点。

触控时每段有独立命中区,选中不依赖颜色或 hover;RTL 下重新验证顺序与方向键。

用于表格过滤时,与其他过滤条件合成一个明示的查询,不重复叠加同一条件。外层表单提交不因切换显示方式而隐式发生。

11. SEL-HELP 值帮助任务

11.1 用途、结构与边界

用于需检索、筛选、多属性比较、查看已选或跨页选择的通用字段取值。它帮助确定一个值或集合,不执行业务审批、不授予权限、不自动创建实体,也不把「应用到字段」说成「已保存」。简单少量选项无需增加模态层;只读说明用信息面板即可。

结构:可理解的标题和目标字段、单/多选模式、范围说明、搜索/筛选、结果区、已选摘要/清单、状态与计数、唯一主要操作「应用选择」及取消/关闭。入口有名称。

复杂候选用普通语义表格+明确选择控件,或确有必要时使用数据表与交互网格契约中的交互 grid;不因显示表格就强制使用 grid。只读比较列不变成交互字段。筛选、分页、详情按钮和应用均是独立意图,点击详情不选择整行。

11.2 事务边界、值事件与冲突

打开时捕获字段草稿快照 B、字段版本、范围/授权版本;对话框临时值 D 初始复制 B。检索、分页、勾选只改变 D 或候选,不改变外层字段。单选也采用明确应用,不默认双击即应用;多选采用 CMP-SELECT-KEYS 或明确的复选框模型,不借单选 combobox 批量选择。

应用:

  • 应用时核验 D 中成员资格与当前字段版本,成功后仅一次将 D 接受为外层字段的新草稿并关闭,远程业务保存 0。
  • 若需远程资格检查,显示检查中并阻止重复应用;检查失败时留在对话框,保留允许的 D 和逐项原因。不能应用半个集合,除非产品事先明示部分应用策略并由用户确认。
  • 资格核验绑定发起时 D 的修订号、完整候选集合/值、约束版本、外层字段版本及授权版本。检查 D1 期间若用户编辑成 D2,旧结果只属于 D1:不得据此应用未经核验的 D2,也不得覆盖回 D1;当前 D2 保留并标为需重新核验,下一次明确应用时捕获 D2 的新快照。约束、字段或授权变化同样使旧结论失效。
  • 只读校验成功,但对话框已取消或已换字段,则不接受、不重开。
  • 若外层字段在打开期间被协作者/程序更新,提示冲突并要求重新审阅,不默默用旧 D 覆盖新字段;取消只丢弃 D,不把外层重置成 B。

取消与关闭:

  • 取消/关闭只丢弃本次临时变化;默认仅做只读检索/资格核验,未发业务写入。
  • 外层当前仍允许保留的原始草稿完整保留,含未解析/待修正内容;不以取消把它替换成已确认的旧值,提交仍须核验。
  • 已接受 D 后关闭即完成,对话框之后不可再用旧 B 回滚;外层取消按外层会话规则。
  • 若产品将帮助动作变成即时远程写入,就已超出本稿的纯值帮助合同,须另设明确的提交、结果未知和恢复合同。

11.3 模态、键盘及响应式

采用 modal dialog 时,焦点进入适当的内部位置(简单检索可进搜索,复杂说明可进标题),Tab/Shift+Tab 在当前最高模态层内循环,背景不可交互。

按键归属:

  • 按键首先由当前输入法组合会话占有。Escape 若用于取消组合,只取消该次组合,不再关闭建议或帮助;Enter 若确认组合,也不接受候选/查询/应用。完成该子事件处理后,必须阻止同一次事件继续触发祖先的处理,不以刚结束组合后的状态把该键重解释为关闭。
  • 无组合占有时,搜索自己的建议再拥有 Enter/Escape:第一次 Escape 关闭建议,之后才能取消帮助;Enter 接受建议或查询,不能同时应用 D。
  • 结果列表按其自身模型处理,纯多选中 Enter 不提交;「应用选择」按钮明确可达,不用整层默认 Enter 偷偷提交。

焦点返回与层级:

  • 取消/应用关闭后,返回仍存在且允许的字段入口或逻辑后继。失权时清除受限的 D/候选并转到安全说明或退出,不能强行回到已撤权的入口。
  • 关闭仅释放本层隔离;若其上仍有子模态,不越层抢焦点;子层关闭先回到父层的合法目标。
  • 展开详情建议优先放在本层的明确区域,确需子模态时记录层级。
  • 响应式从居中框变为全屏只改变布局,字段身份、D、焦点与模态不变;若改为非模态,必须另立并验收转换合同,不能仅卸掉焦点限制。

11.4 范围、授权、虚拟化与增长

当前页选择、当前已加载集合、全结果选择三者分开命名。

  • 总数未知时显示已加载数;分页尾未确定时不报最后一页。加载失败保留 D 和旧页身份,重试不清空选择。
  • 跨页全结果选择仅当后端可明确解析、校验并回传集合/快照语义时启用,否则不提供假的全量。
  • 确认摘要列出可确定的已选 ID 数、失效/待核查数、范围条件与排除项,不能把不可知对象包装成已审核。

授权与身份:

  • 搜索/排序不会丢掉合法的 D;撤权时去掉不允许持有的细节,并阻止携带旧身份应用。
  • 只撤写/选择资格但仍可读时,可标为失效供纠正;成员消失不按索引替换。服务重新返回同名但不同 ID 的对象,也需用户明确选择。

虚拟化与增长:

  • 虚拟行保留活动/焦点所属的对象,回收不能改变 D;具有内部控件的候选行按表格或 grid 的真实焦点规则处理,不能给容器一个 listbox 名义就忽略按钮。
  • 大字体与 RTL 下保留主操作/取消入口、结果信息/已选清单,滚动结果不把对话框的退出路径滚走;移动端软键盘不能遮蔽唯一的应用/取消路径。

SEL-HELP 夹具:

夹具 前置 动作 预期
SEL-HELP-N 外层未保存草稿 B={a,b} 打开,D 加 c,应用一次 外层草稿 {a,b,c},接受 1、业务保存 0,焦点回到合法的字段入口。
SEL-HELP-F D={a,b},资格核验 b 失败 应用 接受 0,保留允许的 D 并标出 b 的原因,焦点仍在本层;不能悄悄只应用 a。
SEL-HELP-R D 含 b,撤读权后旧检索/核验成功返回 应用 b 的内容不复活、旧核验无效、接受 0;安全取消不把 b 恢复到外层。
SEL-HELP-G 已加载 20/总数未知 选择本页后换页,并变为移动端全屏 只保留声明的 ID,未宣告全部结果;D 不变,焦点仍在最高模态,应用/取消可达。
SEL-HELP-C B={a,b},D 加 c,外层被更新为 {a,d} 应用,再取消 应用因版本冲突为 0;取消保留外层 {a,d},不回写旧 B。
SEL-HELP-V D1={a} 发起资格核验 编辑为 D2={a,b};D1 核验成功返回 应用 0,D2 保持且待重新核验;不得应用未核验的 b,也不得回退成 D1;约束/字段/授权版本变化同样拒绝旧结论。
SEL-HELP-I 帮助内搜索处于 IME 组合中、建议已打开、D={a} Escape 取消组合 建议及帮助均保留,D 不变,接受/应用 0;下一次独立的 Escape 才按「建议 → 帮助」层次关闭。
SEL-HELP-E 搜索建议打开、活动候选 x、D={a} Enter,然后 Escape Enter 最多接受建议或发一次查询,不应用 D;Escape 按当前子层优先,关闭后晚到的核验不能自动接受或重开。

参考:APG Modal Dialog 提供模态隔离及焦点进入/循环/退出的基础;APG Combobox 的 dialog popup 将真实焦点移入对话框。值帮助事务、范围/权限快照、取消与字段版本冲突是 YUDS 的通用组合推导,不声称来自 SAP 具体组件正文。

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

12. B3-CLOUDFILE 云文件浏览与引用选择

代理依据用户授权决定的首期范围

云文件首期为已获准来源内的单文件引用选择;多文件、目录与跨提供者集合仍待对应能力与契约。

本节继承:

保持七个 role × step 与 label/prose/heading 各九档,每个独立任务最多一个主操作;状态图标不代表取得授权、验证通过或已保存。文中事件是可观察的意图/事实,不定义公共 API 或服务协议。

12.1 B3-CLOUDFILE-SCOPE 用途、非用途与能力表

在宿主已获准的提供者、连接/账户及库范围内,浏览可披露的文件元数据,并把一个明确的文件引用接受为父字段草稿。文件选择不代表下载、上传、复制、移动、共享、持久访问授权、永久有效链接或已成功关联业务对象。浏览本身也不授予对内容的读取/预览权。

首期只选择单文件;文件夹用于进入获准范围,不是可提交的文件值。多文件、目录选择、跨库/跨提供者集合属于后续可扩展能力,须复用 SEL-MULTI 及明确的范围/原子或部分接受规则,不能拿本节的单选夹具证明已完成。返回多文件而本实例只允许一个时,保留父值,呈现“本次只能选择一个”,让用户明确从合法返回项中选一项或重新选择;禁止取第一个、最后一个或按名称合并。

启动前声明以下能力的真假/未知及范围;未知不当作真:

能力 首期处理
已获准连接、账户与库的元数据列举/检索 只有当前允许范围才显示入口;无此能力时给出真实的不可用说明
单文件引用解析、资格与当前版本核验 接受前必须能取得足以满足所选引用语义的证明;不能以文件名代替
固定版本引用 仅当提供者真实可重读同一版本时才称固定版本;版本号存在不自动证明内容不可变
当前对象引用 仅在任务明确接受未来读取可能变化时采用,摘要标“当前对象引用,内容可能更新”,登记本次观察版本;不得冒作固定快照
内容预览/下载/本地导入/上传 不由浏览选择自动发起;需要时转到对应的、已定义的独立任务和授权
个人最近记录、离线库、跨会话恢复、持久访问 首期不默认存在;缺失时不展示假的历史/恢复入口
新连接、OAuth 或权限扩大 不属于本组件的选择意图;只能给出真实的独立连接入口,并按其授权流程处理,不在搜索/重试时暗中启动

WHATWG File Upload state 描述的本地选中文件与类型提示,不能为远端库的提供者/账户/对象身份或持久授权作证。本地文件选择如可用,是 INP-UPLOAD 的另一项任务;不能把本地字节对象伪造成同一个云引用。

12.2 B3-CLOUDFILE-STRUCT 结构与键盘/触控

结构包括:当前提供者/账户的可披露名称、库与当前位置、父字段用途、引用模式、范围内搜索、路径导航、普通语义的文件列表或表格、当前临时选择摘要、状态与分页、唯一的主要操作“使用此引用”及取消。内容类型/大小/版本只有真实可得才显示,未知就写未知;不为美观猜测类型、总量或最新版本。

首期用普通列表/表格+明确的单选控件;名称、进入文件夹、预览如存在,都是独立入口,点击它们不会同时选择或应用。行不做成包住其他按钮的整行按钮。名称相同时,显示可披露的提供者、账户、库/路径与版本差异;名称、缩略图、路径字符串都不是稳定 ID。目录层级若用树,继承 B1-TREE;无必要不增加 treegrid。

Web 上 Tab 自然遍历搜索、路径、列表选择、分页和应用;普通单选继承 CHO-RADIO,焦点、临时选择与父字段接受彼此分开。搜索中的 Enter 只按查询合同发起检索,不能顺便应用;双击文件、按 Enter 打开文件夹也不隐式应用。IME 先拥有 Enter/Escape,其次是搜索建议,再到当前选择层;同一次事件不再关闭父表单。触控有显式的进入/选取/分页/使用入口,不只靠双击、长按或拖动。

12.3 B3-CLOUDFILE-ID 身份、引用与版本

每条候选至少绑定:提供者命名空间、实际连接/账户的安全范围、库 ID、对象稳定 ID、所选引用策略及可用版本身份、授权代次。当前工作区/任务/字段、子层实例、查询/排序/筛选修订和请求身份也进入回调及接受核验。不同提供者或账户即使都返回对象 ID F1,仍是不同对象;账户昵称、同名文件和同一路径都不能合并身份。

固定版本模式必须明确具体版本,并验证它仍可用。无法验证固定版本时标为待核查/不可接受,不能用修改时间、文件名或假版本代替。当前对象引用模式必须事前明确,可记录观察版本用于比较,但不保证未来取到同样的字节。两种模式不能在失败时静默互换。返回的 URL 或临时句柄不等于普遍或持久的访问授权;若它本身携带可用的访问能力,须按敏感访问凭据保护,不默认展示、写入日志、复制或分享。它仍不保证其他主体、地点或时间可以读取,也不替代本任务的对象/版本与授权核验。

快捷方式/别名/跨库链接若不能在已获准范围内解析目标身份与版本,保持不可接受;有真实解析能力时,仍要展示实际目标范围并重新核验,不自动追随到新的提供者/账户,不顺着未知 URL 抓取内容。文件移动/删除/修订变化不按同名对象替换:已选项标为失效或需重核,保留允许的原稿供用户纠正。

12.4 B3-CLOUDFILE-QUERY 查询、分页与来源切换

分开维护查询原稿、已接受的查询/范围、当前结果页、临时选择及父字段当前稿。输入查询原稿不等于接受新查询;已接受 Q1 的有效结果可以到达并更新 Q1 结果,但不能改原稿。明确接受 Q2 后,Q1 的读取不得覆盖 Q2 的列表、总数、状态、通告或候选资格。

分页身份绑定同一已接受查询、提供者/账户/库/文件夹、排序/筛选、游标/快照语义及授权。失败时保留当前获准页及临时选择,重试是对当前页的新读取尝试;重复的页回包不得重复插入同一稳定引用,游标失效时给出重新检索入口,不伪造连续的完整页或最后一页。总数未知时只说已加载,不以已加载数宣称全库;后代未知时不推断为空文件夹。首期没有“全选所有文件”。

在同一有效来源内搜索、分页和进入文件夹,可以保留临时已选摘要,摘要不因该文件不在当前页而消失;再次应用仍要重核其资格。切到另一提供者/账户/库时,不能把旧的临时选择搬给新的安全范围:若已有临时选择,先明确说明本次切换将放弃该子层选择,让用户确认切换或留在原范围;父字段始终不因此改变。确认切换后,失效旧的查询/核验代次,清理旧范围的可控内容,新范围从获准能力重新列举。撤权触发的切换/清理不等待保稿确认。

重新认证或连接恢复只说明通道恢复,不证明旧对象、选择或权限仍然有效;须重新核查并由用户明确应用,不用迟到的认证成功自动恢复旧页或接受旧引用。

12.5 B3-CLOUDFILE-ACCEPT 草稿、取消、核验与撤权

打开选择层时,捕获父字段允许保留的原始草稿与修订,包括未解析的引用文本、非法/待纠正值;它不被净化为“最近合法值”。子层的浏览和选择只改临时值。取消仅丢弃子层变化,不把打开时的快照写回父字段;若另一合法入口更新了父字段,保留最新父稿,不能被旧快照回滚。

“使用此引用”捕获:子实例/临时选择修订,完整的提供者/账户/库/对象/版本/引用策略,约束与来源目录修订,父字段/对象修订,授权代次。只读资格核验的通过仅对该组快照有效。C1 核验期间改为 C2、来源切换、父字段变更、文件版本或约束改变时,旧的通过不得应用 C2、回写 C1 或关闭当前层;保留当前获准稿并重新核验。取消后,晚到的结果也不重新打开或应用。

匹配且仍合法的接受最多一次改变父字段草稿,并按 LP-G05 回焦;未发生值变化时不制造重复变更。父业务的保存/关联仍是外层的独立任务。浏览、分页、重试读取、选择、取消所产生的下载/上传/复制/共享/权限扩大/业务保存意图均为 0;有内容预览独立任务时单独记录,不归入纯浏览成功。

只撤销选择/编辑资格而仍可读时,保留可披露的身份及失效原因,不偷偷换成另一个文件;撤销读权时,清理名称、路径、计数、摘要、候选、错误详情、缓存和待发通告中的受限信息,子层和父字段中受限表示的清理依统一权限合同进行。旧响应不得复活内容;已合法输出到外部的副本不承诺追回。没有当前查询能力时,不把“换个账户”或手贴 URL 当作绕过授权的后门。

12.6 B3-CLOUDFILE-PLATFORM 四端适配与增长

Web 可以用宿主已获准提供者的浏览面板/受控选择器,也可以用身份明确的列表组合;不要把浏览器的本地文件选择器当作云引用协议。iOS、Android、HarmonyOS 可以采用真实支持的文档提供者/系统选择承载,但必须逐端证明它返回的究竟是临时可读字节、临时句柄、稳定对象引用,还是可保持的授权。若只返回本地副本而当前任务需要云引用,则说明二者不等价、拒绝自动替代并保留父稿。

无云浏览能力时,若宿主有已获准的“手工引用解析”能力,可输入原始参考,并按相同的身份/版本/权限规则核验;不得任意访问粘贴的 URL。否则说明此任务当前不可选,保留原稿与取消/真实替代任务的入口。即使存在本地上传功能,也不能不告知用户就改变任务。

四端实际的提供者列表、目标 OS/SDK、临时/持久授权、键盘/触控/读屏与进入后台的行为均待实现证据。长同名文件、RTL 混排、窄屏与大字下保留身份差异、引用模式、错误和应用/取消;重排不改变对象,也不替用户应用。

12.7 B3-CLOUDFILE-FIX 精确夹具

多平台增长夹具执行前,逐端冻结真实平台/系统或浏览器版本、视口尺寸及单位、实际文字尺寸/放大设置、方向与输入方式;窄屏与文字放大分别记录,不用整页缩放冒充文字放大,无法建立前置则记为未执行。

执行前逐端冻结实际能力、系统/浏览器、视口、方向、输入方式,以及每个独立分支的唯一前置与预期;夹具中的占位身份/码制须绑定真实适配,不是服务 API 或支持声明。全部真实运行未执行。

B3-CLOUDFILE-F01 单文件固定版本引用

  • 前置:提供者 P1/账户 A1/库 L1 已获准列举和固定版本引用;文件 F1 的版本 v3 真实可重读;提供者同时返回携带限时访问能力的临时句柄 H1,H1 是纯合成占位而非真实密钥;父字段原稿 D0。
  • 动作:打开浏览;明确选择 F1/v3;使用此引用;对应的完整身份核验成功。
  • 预期:父草稿最多一次接受 P1/A1/L1/F1/v3 固定引用;层按 LP-G05 关闭;H1 不默认展示、写入日志、复制或分享,也不视为持久授权;下载/上传/复制/分享/权限扩大/业务保存为 0。
  • 禁止事件:选中即下载;把引用当作永久授权;单次激活重复接受;出现“业务关联已成功”文案。
  • 规则:B3-CLOUDFILE-SCOPE、B3-CLOUDFILE-ACCEPT
  • 实际运行:未执行。

B3-CLOUDFILE-F02 无固定版本能力不偷换

  • 前置:P1 只能提供当前对象,观察版本为 v3;目标字段要求固定版本。
  • 动作:选择 F1;尝试使用;另开一个明确允许当前对象引用的独立实例,再选 F1。
  • 预期:固定模式接受为 0,并说明能力不足;第二个实例的摘要写明内容可能更新,记录观察版本 v3;不保证未来取到同样的字节。
  • 禁止事件:用修改时间充当固定版本;固定失败时静默改为当前对象;假的不可变快照。
  • 规则:B3-CLOUDFILE-ID、B3-CLOUDFILE-SCOPE
  • 实际运行:未执行。

B3-CLOUDFILE-F03 跨账户同 ID 与明确切换

  • 前置:已在 P1/A1/L1 中临时选择 F1/v1;P1/A2/L1 中也有 F1/v1,但是另一个文件,A2 也已获准;A1 的读取 q1 在途。
  • 动作:请求切到 A2,先取消切换;再次请求,并明确确认清除本子层选择;A2 的读取 q2 成功;A1 的旧 q1 成功。
  • 预期:取消切换后仍是 A1 及其临时选择;确认切换后清除旧的子层选择,但父稿不变;当前只有 A2 身份;旧 q1 不写入 A2 的候选/名称/计数。
  • 禁止事件:仅按 F1 去重而跨账户合并;旧选择变成 A2 的文件;未确认切换就丢弃子层选择;旧回包复活 A1。
  • 规则:B3-CLOUDFILE-ID、B3-CLOUDFILE-QUERY
  • 实际运行:未执行。

B3-CLOUDFILE-F04 查询原稿与已接受查询分离

  • 前置:当前已接受 Q1,范围为文件夹 L1/folderA;q1 在途;搜索原稿已改为 Q2 但未接受。
  • 动作:q1 成功;随后明确接受 Q2,发出 q2 并成功;旧 Q1 的另一次读取 q1r 晚回。
  • 预期:未接受 Q2 时,q1 可更新 Q1 结果,但不改原稿;Q2 接受后,结果/计数/错误绑定 Q2;q1r 不覆盖。
  • 禁止事件:仅因打字就丢弃有效的 Q1 结果;旧查询污染新页;回包改动搜索原文。
  • 规则:B3-CLOUDFILE-QUERY
  • 实际运行:未执行。

B3-CLOUDFILE-F05 分页失败、重复与未知总数

  • 前置:Q1 当前页含 F1、F2,临时选择 F2;总数未知,游标 c2 来自 Q1;翻页请求 r2 在途。
  • 动作:r2 失败;明确重试 r3,成功并带回 F3、F4;同一 r3 重复回包;另测试 c2 被服务判为失效。
  • 预期:失败时保留当前页与 F2;成功时仅插入一组 F3、F4,F2 摘要保留;显示已加载而不称全库;游标失效时提示重新检索,且不伪造尾页。
  • 禁止事件:失败时清除选择;重复页产生重复对象;把未知总数当作 4;游标跨查询复用。
  • 规则:B3-CLOUDFILE-QUERY
  • 实际运行:未执行。

B3-CLOUDFILE-F06 选择不在当前页与文件修订

  • 前置:已临时选择固定版本 P1/A1/L1/F1/v3;当前检索过滤掉了 F1;随后服务表示 v3 不可再读,但 v4 存在。
  • 动作:保持当前检索;尝试应用 F1/v3。
  • 预期:摘要保留获准的 F1/v3,不因过滤而清除选择;应用受阻并将 v3 标为失效;须由用户重新审阅/选择 v4;不静默替换。
  • 禁止事件:过滤即丢弃选择;同 ID 自动升版本;用 v4 冒充 v3 的固定内容。
  • 规则:B3-CLOUDFILE-QUERY、B3-CLOUDFILE-ID
  • 实际运行:未执行。

B3-CLOUDFILE-F07 C1 核验与 C2

  • 前置:子实例 I1 的临时值 C1 = P1/A1/L1/F1/v3,父 d1、约束 k1、授权 a1;资格核验 q1 在途。
  • 动作:子层改为 C2 = P1/A1/L1/F2/v2;q1 通过;再按 C2 发起新核验 q2,通过。
  • 预期:q1 的应用为 0,不覆盖回 C1,不关闭层;当前 C2 待重核;q2 完全匹配时最多一次接受 C2。
  • 禁止事件:旧 q1 套用到 F2;q1 覆盖回 F1;旧结果关闭层;父业务写入。
  • 规则:B3-CLOUDFILE-ACCEPT
  • 实际运行:未执行。

B3-CLOUDFILE-F08 取消保留未解析的父原稿

  • 前置:父字段的确认值是 F0;父字段当前保留了允许保留的原文 cloud-ref:未完成,尚未解析;子层打开后临时选择 F1。
  • 动作:取消子层;随后旧的选择核验返回通过。
  • 预期:父字段仍是原始的 cloud-ref:未完成;旧核验不接受、不重开;不回到确认值 F0;写入为 0。
  • 禁止事件:用合法快照丢弃原稿;旧的通过重开层;取消时写回 F0。
  • 规则:B3-CLOUDFILE-ACCEPT
  • 实际运行:未执行。

B3-CLOUDFILE-F09 父字段并发版本冲突

  • 前置:打开时父 d1 = F0;子层临时选择 F1;另一合法入口将父更新为 d2 = F2;子层申请应用,核验 q1。
  • 动作:q1 按旧父 d1 返回通过;随后取消。
  • 预期:应用为 0,且冲突可读;取消只丢弃子层的 F1,父 d2/F2 保留;不回到 d1/F0。
  • 禁止事件:覆盖新的父稿;取消时回到旧快照;过期资格关闭层。
  • 规则:B3-CLOUDFILE-ACCEPT
  • 实际运行:未执行。

B3-CLOUDFILE-F10 撤权与缓存输出

  • 前置:已选 F1,并有名称/路径/摘要/计数/缓存,检索和资格回调在途;当前读授权为 a1。
  • 动作:a2 撤销 F1 的读取权;交付 a1 下的旧回调;尝试复制和使用。
  • 预期:受限且应用可控的名称/路径/计数/摘要/缓存/通告被清理;接受及新的受限复制为 0;焦点安全;旧回包不恢复。
  • 禁止事件:只做遮罩;错误泄露受限路径;旧授权恢复;保证收回此前的系统副本。
  • 规则:B3-CLOUDFILE-ACCEPT
  • 实际运行:未执行。

B3-CLOUDFILE-F11 认证失效不自动恢复选择

  • 前置:A1 连接失效,F1 为临时选择;外部独立认证流程曾经开始,但浏览实例 I1 已取消,并已改为手工原稿 D2。
  • 动作:认证迟到成功;旧的列举和资格核验成功。
  • 预期:当前 D2 和父稿不被改写;I1 不重开;再次打开时仍重新核验范围/对象,不自动接受 F1。
  • 禁止事件:把登录成功等同于旧权限有效;迟到的认证启动读取/应用;恢复旧账户的页面。
  • 规则:B3-CLOUDFILE-QUERY
  • 实际运行:未执行。

B3-CLOUDFILE-F12 无能力与本地文件非等价

  • 前置:任务需要 P1 的云固定引用;云列举/解析均无能力;系统本地选择器可返回 X.txt 的字节。
  • 动作:打开浏览入口;选择本地 X.txt 作为可能的替代;粘贴 URL,但宿主没有手工解析能力。
  • 预期:说明云引用不可用并保留原稿;本地字节不被接受为云引用;URL 保持原文、不抓取;可以取消,或由用户另行转到已存在的上传任务。
  • 禁止事件:把字节伪造成 P1/F1;自动下载 URL;假的连接/授权入口;静默改为上传任务。
  • 规则:B3-CLOUDFILE-SCOPE、B3-CLOUDFILE-PLATFORM
  • 实际运行:未执行。

B3-CLOUDFILE-F13 单选实例收到多文件

  • 前置:实例仅允许单文件,父值 F0;获准提供者返回 F1/v1 和 F2/v2 两项。
  • 动作:确认该返回;用户明确从两项中选择 F2,再使用。
  • 预期:初次返回不改父值、不取首项或末项,说明只能选一个;用户明确选择 F2 且核验后,才最多一次接受 F2;可以取消并保留 F0。
  • 禁止事件:默认取 F1;拼成集合;静默丢弃 F2;把多选算作首期已全覆盖。
  • 规则:B3-CLOUDFILE-SCOPE
  • 实际运行:未执行。

B3-CLOUDFILE-F14 文件夹及跨源别名

  • 前置:目录 D1 可进入,但不能作为文件;别名 S1 指向未获准的 P2/A9/L9/F9,且没有合法的目标解析能力。
  • 动作:进入 D1;尝试把 D1 选为文件;激活 S1。
  • 预期:进入只读取获准目录的元数据;D1 作为文件的接受为 0;S1 不能自动跨源跟随/抓取,保留原稿并说明可披露的限制。
  • 禁止事件:把文件夹当作文件引用;别名绕过账户范围;把未知后代当作空目录、无文件。
  • 规则:B3-CLOUDFILE-SCOPE、B3-CLOUDFILE-ID
  • 实际运行:未执行。

B3-CLOUDFILE-F15 平台临时句柄与失效

  • 前置:某原生提供者只返回当前会话的临时可读句柄 h1,无法提供任务要求的稳定云对象/版本;父稿 D0。
  • 动作:返回 h1;应用后续检查;另测试句柄已失效的情况。
  • 预期:稳定引用的接受为 0,并说明返回类型不满足任务;h1 失效时表现为不可读,不冒充对象已删除或上传失败;父稿 D0 保留。
  • 禁止事件:把临时路径称作永久授权;旧句柄自动重获持久权限;用本地副本替代云快照。
  • 规则:B3-CLOUDFILE-PLATFORM、B3-CLOUDFILE-ID
  • 实际运行:未执行。

B3-CLOUDFILE-F16 键盘、IME、增长与四端入口

  • 前置:选择层有独立应用的搜索建议 L、IME 组字、临时选择 F1;宿主明确 Enter 仅结束 IME,且 L 保持打开;长同名文件/RTL,窄屏下文字增长。
  • 动作:按 Enter 确认组字;下一次独立的 Escape 关闭仍打开的 L;再一次独立的 Escape 取消选择层;触控分别进入文件夹、选择文件。
  • 预期:Enter 只结束组字,L 仍打开,不应用;第一次独立 Escape 只关闭 L,不关闭选择层或父表单;第二次独立 Escape 取消选择层并按 LP 回焦;完整身份/使用/取消均可达,点击进入不等于选择。
  • 禁止事件:默认 Enter 即使用引用;一键连带关闭父层;双击作为唯一的选择方式;名称被当作 HTML。
  • 规则:B3-CLOUDFILE-STRUCT、B3-CLOUDFILE-PLATFORM
  • 实际运行:未执行。

来源与冻结夹具见本组来源及完整夹具数据。WHATWG 仅实读了 File Upload state 的选中文件模型、类型提示与信任边界,不据此证明云提供者协议。本节没有新的 SAP/OUDS/Geist/Sail 逐族正文证据,Apps 不等于 Sail;身份、会话与接受策略为 YUDS 的有界合同,不能以首期夹具宣称全族完成。设计、代码和运行分别登记,真实运行全部未执行。

13. 组合验证与主档索引

共同测试:空、全选、部分选、失效值、只读、禁用、请求失败与未知;用键盘完成选择和纠错;读屏区分焦点与当前值;长名称、数字数量和窄布局下不丢失对象身份。所有测试当前未执行。

树与远程多选的成员解析、权限和快照由产品/服务端提供;YUDS 要求范围可解释、结果可校验。未知总数不能显示为已精确选中全部。官方来源核查于 2026-10-18;组件业务行为与范围策略为建议。

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

  • CMP-13 复选框:本页「CMP-13 / CHO-CHECK 复选框」(第 2 节)
  • CMP-14 单选组:本页「CMP-14 / CHO-RADIO 单选组」(第 3 节)
  • CMP-15 开关:本页「CMP-15 / CHO-SWITCH 开关」(第 4 节)
  • CMP-16 单项选择器:本页「CMP-16 / CMP-17 / SEL-SINGLE 单项选择与组合框」(第 5 节)
  • CMP-17 组合框:本页「CMP-16 / CMP-17 / SEL-SINGLE 单项选择与组合框」(第 5 节)
  • CMP-18 多项选择器:本页「CMP-18 / SEL-MULTI 多项选择」(第 6 节)
  • CMP-19 树形选择器:本页「CMP-19 树与 CMP-SELECT-KEYS 共享复合模型」(第 7 节)
  • B3-CLOUDFILE:本页「B3-CLOUDFILE 云文件浏览与引用选择」(第 12 节)