[A11y][Filters] position hidden proxy container offscreen to prevent focus #4073
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.
WHY are these changes introduced?
Fixes @shopify/web issue #37890
Currently, if you tab into a
<Filters>
component from a component that relies on thefocus.ts
utility to determine the nextFocuseableNode (e.g. Popover, Modal, etc), the focus state is lost and returned to thewindow
.This happens because the
ConnectedFilterControl
subcomponent onFilters
has a hiddenProxyButtonContainer
thatfocus.ts
picks as the next focusable node programmatically, although you can't tab to it normally.(similar approach on an IndexTable fix here)
👀 before 👀
before.mp4
👀 after 👀
after.mp4
WHAT is this pull request doing?
This PR positions the hidden button container out of the viewport so the
focus
utility skips over it.How to 🎩
🖥 Local development instructions
🗒 General tophatting guidelines
📄 Changelog guidelines
Copy-paste this code in
playground/Playground.tsx
:🎩 checklist
README.md
with documentation changes