v1.0.0
12 Sep 2026First release.
Added
createSelect(target, options): enhances a<select>(keeping it as the form control) or any input.- Search with folded matching — accents, Arabic and Urdu letter shapes, Arabic-Indic and full-width digits — over labels, descriptions and keywords, with the matched letters highlighted.
- Ranking: whole match, prefix, word start, substring, then a fuzzy subsequence rescue when nothing else matched.
- Groups that keep their headings while filtering, pinned values, and
preserveOrderfor lists that are already in a meaningful order. - A windowed list: about sixteen rows in the DOM at 100 000 options, with an arithmetic fast path when every row is the same height.
- Multiple selection with chips,
maxSelected,hideSelected, and Backspace to remove the last. - Tags: free text on Enter, comma, Tab or paste, with
creatableas a validator. - Remote data: debounce,
AbortController, per-query cache, cursor paging and infinite scroll. - The panel renders in the top layer (Popover API), so clipping ancestors, modals and transforms can't cut it off; a bottom sheet with its own search box on touch phones.
- WAI-ARIA combobox pattern,
aria-activedescendant, type-ahead without a search box, and a live region that announces results and selections. - Theming: CSS variables for everything,
classNameson every part,icons,renderhooks,strings,theme: 'auto'that follows the page, and a@layer devixstylesheet. - Wrappers for React, Vue, Svelte, a form-associated
<dx-select>and jQuery, plus aselect2adapter that translates the common options. @devix-labs/select/core: matching, ranking and grouping with no DOM, for your own UI.