vuetifyjs / vuetifyjs/0

[Design] Listbox typeahead: naming, placement, and full APG parity

Open
#908 0 comments 0 reactions 1 assignee View on GitHub

@johnleider is already working on this.

Since Aug 24, 2026.

C: Select T: feature
Dominant language
TypeScript
Stars
735
Forks
10
Avg merge
10h 47m
Merged PRs (30d)
72

Description

Ask

Printable-character typeahead navigation for Select — and eventually any listbox-pattern surface — so keyboard users can jump the highlight to items by their leading character, matching native <select> behavior. Originates from the #543 WS4 accessibility audit; a working prototype was built in #635 and split out pending this design pass.

Open questions

  1. Name. The prototype exposed it as typeahead(char) on VirtualFocusReturn, which breaks the composable's imperative verb family (highlight / clear / next / prev / first / last). Candidates: find, match.
  2. Home. useVirtualFocus owns the cursor and the item registry, so it is the natural host — but the feature embeds DOM textContent reads into an otherwise DOM-light composable, and useRovingFocus will eventually want identical behavior. Options: keep it on useVirtualFocus, or extract a shared text-matching seam both focus composables consume.
  3. Scope / APG parity. The prototype was single-character only. Full APG listbox typeahead needs a timed multi-character buffer (useTimer is the obvious substrate) and a decision on closed-state semantics — native <select> responds to typeahead while closed (changing the value), whereas the prototype was inert unless the listbox was open.

Prototype

The removed implementation (composable method, SelectActivator keydown wiring, unit + browser tests) is recoverable at the pre-split head of #635: bdb78da8e.

Refs #543, #635.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.