iter(g28): 浮层 Esc 逐层关闭,阻止冒泡连带关外层
This commit is contained in:
@@ -580,6 +580,14 @@
|
||||
"acceptance": "modal/drawer 共用 overlay.ts 的 Esc 栈,后开先关;栈空自动摘全局监听;npm run check 全绿",
|
||||
"status": "done",
|
||||
"notes": "自补:既有组件可用性细节;去掉两处各自挂的 document keydown"
|
||||
},
|
||||
{
|
||||
"id": "g28",
|
||||
"title": "Esc 逐层关闭:浮层阻止冒泡",
|
||||
"motivation": "弹窗内的 select/menu/popover 展开时按 Esc,会先收下拉再冒泡到 document 的 Esc 栈,导致弹窗一起被关——一次 Esc 关两层",
|
||||
"acceptance": "menu/select/popover/tooltip/image 的 Esc 处理各自 stopPropagation,只关本层;演示页在弹窗内放下拉可复现逐层关闭;npm run check 全绿",
|
||||
"status": "open",
|
||||
"notes": "自补:既有组件可用性细节"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
+7
-4
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"$schema": "ui-arch-registry-index/0.1",
|
||||
"generatedAt": "2026-10-26T03:37:32.721Z",
|
||||
"generatedAt": "2026-10-26T03:38:39.607Z",
|
||||
"repoRoot": ".",
|
||||
"packages": [
|
||||
{
|
||||
@@ -627,7 +627,8 @@
|
||||
"准备 options 数组,value 是提交用值、label 是展示文案",
|
||||
"创建信号并传入 value;未传时组件内部自持状态",
|
||||
"点击触发器展开弹层,点选项写回信号并收起;点外部或按 Esc 也会收起",
|
||||
"选中项在弹层中用淡色弱化标记,不抢视觉焦点"
|
||||
"选中项在弹层中用淡色弱化标记,不抢视觉焦点",
|
||||
"弹层展开时按 Esc 只收起下拉并回焦触发器;若下拉在弹窗/抽屉内,再按一次 Esc 才关外层(逐层关闭)"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -673,7 +674,8 @@
|
||||
"点触发器展开弹层,点条目收起并触发 onSelect;点外部或按 Esc 也会收起(Esc 后焦点回到触发器)",
|
||||
"条目要给快捷键提示时传 shortcut(如 '⌘K'):右侧灰字展示,组件不绑定按键,实际快捷键由调用方在全局监听",
|
||||
"键盘:Tab 聚焦触发器,↑↓ 展开并在可用条目间环形移动,Enter / Space 选中;disabled 项自动跳过",
|
||||
"靠右对齐避免溢出时传 align: 'end';危险操作给条目加 danger: true"
|
||||
"靠右对齐避免溢出时传 align: 'end';危险操作给条目加 danger: true",
|
||||
"展开时按 Esc 只收起菜单并回焦触发器,不会连带关闭所在弹窗(逐层关闭)"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -1108,7 +1110,8 @@
|
||||
"点击触发器开合;点弹层外部或按 Esc 收起(Esc 后焦点回触发器)",
|
||||
"content 里可以放 button / checkbox 等交互元素(tooltip 只能纯文本),点击弹层内部不会误关",
|
||||
"hover 场景传 trigger: 'hover' + delay 控制多快出场;placement: 'top' 让弹层往上翻",
|
||||
"需要感知开合做副作用(如懒加载数据)时用 onOpenChange"
|
||||
"需要感知开合做副作用(如懒加载数据)时用 onOpenChange",
|
||||
"展开时按 Esc 只收起气泡并回焦触发器,不会连带关闭所在弹窗(逐层关闭)"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user