弹窗(.modal 带 overflow-y:auto)里的下拉展开层是 absolute 定位, 会被弹窗滚动盒裁掉下半截(Git 同步设置里实测被遮挡)。展开层改经 Portal 挂到 body、按触发钮 rect 用 fixed 定位:下方空间不足时 向上翻,maxHeight 按可用空间夹取;窗口 resize 时关闭。 useDismiss 泛化为可传多个 ref(触发器与 Portal 菜单两棵子树都算内)。 CSS 相应去掉 .dropdown-menu 的 absolute 定位(几何改由内联给出)。 验证:vitest 124+2(新增翻转几何断言:贴底触发钮翻上展开、 Portal 落点不在组件容器内);无头 Chromium 实测弹窗内下拉菜单 完整落在视口内、8 项全显、已逃出弹窗 DOM。
3.3 KiB
3.3 KiB