DT-2629 - fix multiselect combobox a11y #2520
Merged
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 & motivation 💭
When we added multiselect functionality to
<Combobox />
, we added a checkbox inside of<MenuItem />
, which hasrole="option"
. This caused an a11y error where there were nested interactive controls, asrole="option"
makes an element interactive in alistbox
. This PR solves the a11y issue by removing the checkbox and using our native<MenuItem />
'sselected
prop to show a static checkmark and highlighted text. I preferred the look of the checkboxes in the menu items, but I don't know if there's a way to retain that and keep the component accessible.Context: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/option_role
Screenshots (if applicable) 📸
Design Considerations 🎨
Testing 🧪
How was this tested 👻
Steps for others to test: 🚶🏽♂️🚶🏽♀️
Checklists
Draft Checklist
Merge Checklist
Issue(s) closed
Docs
Any docs updates needed?