Allow setting tabIndex
on the Tab.Panel
#2214
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.
This PR adds the ability to override the
tabIndex
of theTab.Panel
.The problem:
Right now the
Tab.Panel
will always be focusable this allows assistive technology to know that the moment you press tab that you are in atabpanel
container.However, it can be that your
Tab.Panel
only consists of focusable elements (like links, buttons, ...), which means that you have to tab twice to get to the first focusable element. Sometimes you don't want this behaviour and just want to go straight to the first item, even if this means that we potentially skip elements (like paragraphs, images, ...).Potential solutions:
Tab.Panel
includes focusable elements and make theTab.Panel
itself have atabIndex=-1
. The downside here is that you potentially skip a lot of information (like paragraphs). This is what React Aria does (https://react-spectrum.adobe.com/react-aria/useTabList.html#focusable-content), but for us that will technically result in a breaking change.tabIndex
and opt-in this behaviour and skip the focus of theTab.Panel
itself.We currently implemented the 3rd option where it is opt-in using the
tabIndex
prop. This way you can technically break accessibility if you have important paragraphs before the first focusable element.Resolves: #2110