Breadcrumb 折叠下拉打开时不再锁住整页滚动 (WEB-1496)
版本: 0.9.1 · 类型: 🐛 Bug 修复
问题
文件详情页中,点击面包屑省略号展开折叠项下拉菜单后,整个页面无法滚动——下拉打开期间 wheel / touchmove 在页面级被整体拦截。
根因
BreadcrumbEllipsisMenu 渲染 <DropdownMenu items={menuItems} align="start"> 时没有传 modal,链路上其余环节也没有提供默认值兜底,最终落到 Radix DropdownMenu.Root 默认的 modal={true}。modal 模式会挂载 react-remove-scroll,在 document 层拦截 wheel / touchmove,并在菜单打开期间给 body 设 pointer-events: none。而面包屑的省略号菜单只是一个普通的导航辅助入口,本不需要这种页面级锁定。
改动文件
packages/design/src/components/Breadcrumb/Breadcrumb.tsxpackages/design/src/components/Breadcrumb/__tests__/Breadcrumb.test.tsx
改动内容
BreadcrumbEllipsisMenu给DropdownMenu显式传入modal={false},并加注释说明该菜单是导航辅助、并非 modal 交互。- 新增单测:打开省略号下拉后,断言渲染容器不带
aria-hidden属性。Radix modal 模式会对菜单外的兄弟元素调用hideOthers打上aria-hidden,非 modal 模式不会,因此这是判断下拉是否进入 modal 模式的可靠信号。
影响
- 打开面包屑省略号下拉菜单后,页面滚动与其余区域的交互不再被阻断。
- 无视觉变化;下拉自身的滚动与点击外部关闭行为不受影响。