Appearance
焦点陷阱工具
系统概览
为弹窗/对话框提供焦点陷阱(Focus Trap)与焦点恢复功能(ADR-153 Phase 1)。Tab 键在容器内循环,Shift+Tab 反向循环,Escape 触发关闭回调。返回的 restore 函数在弹窗关闭后恢复焦点到之前的位置,避免焦点丢失到 <body>。
核心职责
ui-focus-trap.ts— 焦点陷阱创建、焦点恢复。
对外 API(节选)
createFocusTrap({ container, onEscape })— 创建焦点陷阱,返回 restore 函数。- 自动获取
document.activeElement作为previousFocus。 - Tab 在可聚焦元素间循环,Shift+Tab 反向循环。
- Escape 触发
onEscape回调。 - restore() 移除 keydown 监听器,若 previousFocus 仍可聚焦则回打焦点。
- 自动获取
与其他子系统关系
- 被弹窗/对话框组件(dialog、fullscreen-overlay 等)引用。