options | UseListFocusOptions | {} | 列表焦点行为的配置对象,所有字段都可以不填。 |
options.itemSelector | string | '[role="menuitem"]' | 列表里可聚焦项的选择器。 |
options.boundarySelector | string | — | 列表边界的标志。列表里还嵌着同类列表时用(例如带子菜单弹出层的菜单)。设了之后,取项和按键处理都只在这一层自己的容器里。一般传 '[role="menu"]'。 |
options.wrap | boolean | true | 方向键到头之后是否绕回另一头。 |
options.onEscape | () => void | — | 按下 Escape 时调用(例如关闭菜单)。传了就会吃掉这个键(preventDefault);不传则 Escape 交给外层处理。 |
options.orientation | 'horizontal' | 'vertical' | 'both' | 'vertical' | 导航方向。'horizontal' 用左右方向键,'vertical' 用上下方向键,'both' 四个都收。横向时会看容器的书写方向,RTL 里左右对调。 |
options.hasHomeEnd | boolean | true | Home/End 是否跳到第一个/最后一个可用项。 |
options.hasPaging | boolean | false | PageDown/PageUp 是否按视口翻页:PageDown 跳到容器里最后一个完整可见的可用项,在那儿再按一次就往后再翻一屏;PageUp 反过来。两者都不绕回;列表不滚动时它们等于 End/Home。 |
options.hasRovingTabIndex | boolean | false | 交给它管 roving tabindex:只有一个项是 tabindex="0",其余是 -1;项挂载、卸载、切换禁用时它会修好,方向键移动焦点时它跟着挪。为 false 时只移动焦点,不碰 tabindex。 |
options.hasCaretGuard | boolean | false | 为 true 时,嵌在列表里的文本框如果光标不在移动方向的边界上(或者有选中内容),方向键就不抢走;嵌进来的 contenteditable 也永远不抢。列表里的行内编辑因此还能正常用。 |