options | UseGridFocusOptions | — | 必填。网格焦点行为的配置对象。 |
options.columns | number | MaybeRefOrGetter<number> | — | 必填。网格列数。上下方向键按这个数跨格。 |
options.cellSelector | string | 'button:not([disabled]), [tabindex]:not([tabindex="-1"])' | 选格子的选择器。要按 DOM 顺序选中所有位置,禁用和空的也算,这样行列几何才对得上。 |
options.isCellFocusable | (cell: HTMLElement) => boolean | 每个选中的格子都能接焦点 | 判断某个格子能不能接焦点。不传就当成都能接。 |
options.getFocusTarget | (cell: HTMLElement) => HTMLElement | null | 格子本身 | 从一个格子算出真正要聚焦的元素,例如 role="gridcell" 里包着的按钮。 |
options.onNavigateBefore | (column: number, offset: number) => void | — | 焦点要走到第一个格子之前时调用。拿到当前列序号和步长(横向是 1,纵向是列数)。 |
options.onNavigateAfter | (column: number, offset: number) => void | — | 焦点要走到最后一个格子之后时调用。参数同上。 |
options.onPageUp | () => void | — | 按 Page Up 时调用(例如日历翻到上个月)。不传就不拦这个键。 |
options.onPageDown | () => void | — | 按 Page Down 时调用(例如日历翻到下个月)。不传就不拦这个键。 |
options.hasRovingTabIndex | boolean | MaybeRefOrGetter<boolean> | false | 整张网格只留一个 Tab 落脚点:当前格子的目标元素 tabindex="0",其余 -1。挂载后补上,方向键移动时跟着走。 |