AdmSysV2【公共组件库】@前端(For Git Submodule)
edit | blame | history | raw

侧栏菜单(Side Menu)— 验收标准

验收项应对照 spec.md;技术实现基于 React + antd@6**,下列不重复验证 antd 默认组件能力(如 Menu 基础受控、Sider 常规折叠属性等),仅验证本文档约定与叠加逻辑**。

样本数据:可使用与 SPEC §2.3、§2.4 一致的静态骨架 + 合并规则构造最小样例树;文档不绑定某仓库内具体文件路径。


数据与展示

  • [ ] 空树不报错,侧栏可显示标题与空菜单区域。
  • [ ] 使用 SPEC 约定字段(idnamepageNamepath、可选 type)时,分组名与叶子文案展示正确。
  • [ ] typechart / setting 等与 spec 约定映射一致;缺省或 normal 时走默认图标分支。
  • [ ] idkey 混用时,选中与展开比较均正确(字符串语义一致);**数值型** curActivePaneKey(含负数 id 场景)与 Menu selectedKeys 类型转换正确。
  • [ ] 当前选中在深层叶子时,对应一级分组呈现「子树选中」样式(见 spec §4.1)。
  • [ ] 已打开页签对应的叶子显示「已打开」样式(pane.key === 菜单项 id,见 spec §2.2)。

展开行为(超出 antd 默认的同级互斥)

  • [ ] 三级结构下,在 antd Menu 层展开二级某分支时,其**同级**其它已展开分支被关闭(spec §4.2 手风琴)。
  • [ ] 三级自定义子菜单层:展开某一 key 时**兄弟** key 从 openKeys 移除;关闭时仅移除当前 key(spec §4.2)。
  • [ ] 展开/关闭动画结束后,滚动区域「是否需要滚动」的判定会更新(允许短延迟)。

滚动与遮罩(逻辑)

  • [ ] 内容超出阈值(约 10px)时出现自定义滚动条;滑块与 scrollTop 双向同步;触摸拖拽可用(spec §4.4)。
  • [ ] resize 后滚动条占位与是否需要滚动判断正确。
  • [ ] 固定模式且侧栏展开时显示遮罩;点遮罩触发收起;**滚动拖拽过程中**不因误点遮罩关闭(spec §4.5)。

自定义样式与动效(须对照 spec §5)

  • [ ] 无需滚动时自绘轨道不可见且 pointer-events 不阻挡菜单操作;**需要滚动**时轨道在约定 delay + duration 后出现(spec §5.3)。
  • [ ] 出现滚动条时菜单区有约定 padding-right,一级 SubMenu 与自定义子菜单的箭头位置与 spec §5.3 一致(不与轨道重叠)。
  • [ ] 滑块默认细、hover 加宽与变色有过渡(约 0.3s);**滚动拖拽**态下滑块保持展开态且 background 等关闭 transition(0s)(spec §5.3)。
  • [ ] 滚动拖拽时遮罩呈全透明、容器 z-index 与 §5.3 一致,与固定模式下半透明遮罩可区分。
  • [ ] 顶区标题条高度、主色底、ellipsis 符合 spec §5.1。
  • [ ] 固定模式全宽 class 与遮罩 rgba 层级符合 spec §5.2。

宿主契约与窄屏

  • [ ] 低于约定断点时进入固定模式;断点变化时宿主收到折叠同步(spec §3.2)。
  • [ ] onSetMenuCollapse:传入 boolean 时宿主折叠态与之一致;**无参**调用时符合 spec §6.2 约定的切换语义。
  • [ ] 固定模式下点击叶子:先触发收起,再于约定延迟后调用「打开页」回调,顺序符合 spec §4.3。
  • [ ] 点击叶子时,回调参数为**完整菜单项对象**,至少包含宿主开页所需字段(如 idnamepathpageName),与宿主标签/开页逻辑的消费方式一致(spec §2.5)。

修订记录

日期 摘要
2026-04-07 自 spec §6 迁入;标注 antd@6 与基线不验范围
2026-04-07 对齐静态配置字段与壳回调验收
2026-04-07 去除具体文件路径
2026-04-07 宿主契约节号改为 §6.2;新增 §5 动效验收