SEV-392: reusable fuzzy combobox component (+fuzzysort) v0.4.0 #4

Merged
bastian merged 1 commits from sev-392/combobox into main 2026-06-10 19:07:18 -04:00
Owner

comboboxData(config) Alpine factory — the foundation for replacing native <select> chrome across the frontends with inputs that match our text fields and are searchable.

  • Typeable input + fuzzysort-ranked dropdown (prefix / substring / abbreviation subsequence matching — fast + tiny; not edit-distance typo correction).
  • Keyboard nav (Arrow/Enter/Escape/Tab), a11y roles, x-modelable value binding.
  • allowFree (default) commits any typed value, so off-list entries (classics, kit cars) are never blocked and no separate "enter manually" mode is needed; allowFree:false (closed lists like US states) snaps back to a valid option on blur.
  • Adds fuzzysort dep, ./combobox export, v0.4.0. 17/17 tests pass.

Consumed next by the convert wizard (SEV-393), then the select sweep.

🤖 Generated with Claude Code

`comboboxData(config)` Alpine factory — the foundation for replacing native `<select>` chrome across the frontends with inputs that match our text fields and are searchable. - Typeable input + fuzzysort-ranked dropdown (prefix / substring / abbreviation **subsequence** matching — fast + tiny; not edit-distance typo correction). - Keyboard nav (Arrow/Enter/Escape/Tab), a11y roles, `x-modelable` value binding. - `allowFree` (default) commits any typed value, so off-list entries (classics, kit cars) are never blocked and no separate "enter manually" mode is needed; `allowFree:false` (closed lists like US states) snaps back to a valid option on blur. - Adds `fuzzysort` dep, `./combobox` export, v0.4.0. 17/17 tests pass. Consumed next by the convert wizard (SEV-393), then the select sweep. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
bastian added 1 commit 2026-06-10 19:07:10 -04:00
comboboxData(config) Alpine factory: typeable input + fuzzysort-ranked
dropdown (prefix/substring/abbreviation subsequence matching), keyboard
nav (Arrow/Enter/Escape/Tab), a11y roles, x-modelable value binding.
allowFree (default) accepts off-list typed values so classics/kit cars are
never blocked; allowFree:false for closed lists (US states) snaps back to a
valid option on blur. Foundation for replacing native <select> chrome with
inputs that match our text fields. 17/17 tests pass.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
bastian merged commit 6789da1574 into main 2026-06-10 19:07:18 -04:00
bastian deleted branch sev-392/combobox 2026-06-10 19:07:18 -04:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: SwitchEV/shared#4