# useRovingFocus API

> Auto-generated API reference for `useRovingFocus` from @vuetify/v0 (Vuetify0).
> Source of truth: https://0.vuetifyjs.com/api/use-roving-focus

## Related

- https://0.vuetifyjs.com/composables/system/use-roving-focus
- https://0.vuetifyjs.com/components/disclosure/treeview
- https://0.vuetifyjs.com/composables/system/use-hotkey
- https://0.vuetifyjs.com/composables/system/use-event-listener
- https://0.vuetifyjs.com/composables/selection/create-step

## Functions

### useRovingFocus

```ts
(items: () => RovingItem[], options?: RovingFocusOptions) => RovingFocusReturn
```

## Options

| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| `target` | `MaybeRefOrGetter<HTMLElement \| null \| undefined>` | — | no | — |
| `orientation` | `"horizontal" \| "vertical" \| "both" \| undefined` | — | no | Arrow key mapping. Ignored when `columns` is set (grid uses all 4 arrows). |
| `circular` | `boolean \| undefined` | — | no | — |
| `columns` | `MaybeRefOrGetter<number> \| undefined` | — | no | Column count for grid navigation. When set, items are treated as a 2D grid in row-major order: Left/Right step ±1, Up/Down step ±columns, Home/End go to row start/end, Ctrl+Home/End go to first/last overall. |
| `onFocus` | `((id: ID) => void) \| undefined` | — | no | — |

## Methods

| Name | Type | Description |
|---|---|---|
| `isTabbable` | `(id: ID) => boolean` | — |
| `focus` | `(id: ID) => void` | — |
| `next` | `() => void` | — |
| `prev` | `() => void` | — |
| `first` | `() => void` | — |
| `last` | `() => void` | — |
| `onKeydown` | `(e: KeyboardEvent) => void` | — |

## Properties

| Name | Type | Description |
|---|---|---|
| `focusedId` | `ShallowRef<ID \| undefined>` | — |
