Repository navigation
Conversation
amanabiy
changed the base branch from
main
to
refactor/move-shared-listbox-parts
October 29, 2026 17:50
amanabiy
force-pushed
the
fix/select-multiselect-listbox-alignment
branch
from
November 2, 2026 10:46
655a821 to
24a3847
Compare
amanabiy
changed the base branch from
refactor/move-shared-listbox-parts
to
feat/add-option-list
November 2, 2026 10:47
Select and Multiselect built the parent group item of renderOption with the option's disabled state instead of the group's. In an enabled group with one disabled option, that option's renderer got item.parent.disabled === true while its sibling got false for the same group. Use the group's own disabled state in both components.
With renderOption, a disabled option kept aria-describedby pointing to its disabled reason, but the hidden description element wasn't rendered, so the reference was dangling and screen readers couldn't announce the reason. Keep the hidden description mounted for custom content in Select and Multiselect. The tooltip stays limited to the default content.
When the dropdown list has focus, Home and End moved the highlight but the browser also ran its native action, scrolling the page or scroll container to the top or bottom. Prevent the native action when there is no filter. With a filter, focus is in the input, so Home and End keep moving the text cursor.
Without interactive groups, group headers can't be highlighted, and an empty group leaves a header row at the start or end of the list. ArrowUp and ArrowDown checked the raw first and last rows, so they didn't wrap and the highlight got stuck. Check against the first and last highlightable options instead.
With interactive groups, a group can share its value with one of its options. Repeating a character looked up the current highlight by value, found the group header first, and moved to the option that was already highlighted, so cycling got stuck. Find the highlight by identity instead, and fall back to the value when the highlight isn't one of the given objects. Select passes its selectedOption prop while the dropdown is closed, which can be an equal copy. Identity is safe: useSelect takes highlightedOption from options[highlightedIndex] in useHighlightedOption, Multiselect passes that same visibleOptions array to useTypeAhead, and findMatchingOption filters the array without copying its entries.
amanabiy
force-pushed
the
fix/select-multiselect-listbox-alignment
branch
from
November 2, 2026 10:51
a47f825 to
617320f
Compare
The arrow-key wrap fix removed highlightedOption from the shared getListboxNavigation props. useListbox still passed it, which failed type checking.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## feat/add-option-list #5208 +/- ##
========================================================
+ Coverage 97.78% 97.80% +0.02%
========================================================
Files 1009 1009
Lines 32781 32787 +6
Branches 12152 12152
========================================================
+ Hits 32055 32068 +13
+ Misses 720 713 -7
Partials 6 6 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Related links, issue #, if available: n/a
How has this been tested?
Review checklist
The following items are to be evaluated by the author(s) and the reviewer(s).
Correctness
CONTRIBUTING.md.CONTRIBUTING.md.Security
checkSafeUrlfunction.Testing
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.