react-focus-lock
react-focus-lock copied to clipboard
React focus lock breaks when using web components in a react wrapper
Hello!
In our projects, we have a component library, which is written in web components. That is later wrapped with a react wrapper, in order to support React applications.
When our react applications use the react focus lock in combination with our components, this is what happens:
Mockup code imagining this is a modal
<FocusLock>
<button>Go back</button>
<div>
<WebCReactComponentCard/>
<WebCReactComponentCard/>
<WebCReactComponentCard/>
<WebCReactComponentCard/>
<WebCReactComponentCard/>
<WebCReactComponentCard/>
</div>
</FocusLock
Expected behaviour:
Focused element when tabbing through the cards:
- Go back
- WebCReactComponentCard.
- Internal focusable elements in the WebCReactComponentCard.
- Next WebCReactComponentCard.
Focused element when shift-tab through the cards:
- E.g WebCReactComponentCard number 4
- Internal focusable elements in the WebCReactComponentCard.
- WebCReactComponentCard number 3.
Actual behaviour: Focused element when tabbing through the cards:
- Go back
- WebCReactComponentCard.
- Skipping some of the internal focusable elements in the WebCReactComponentCard showing the WebCReactComponentCard focus twice instead of internal focusable elements.
- Next WebCReactComponentCard.
Focused element when shift-tab through the cards:
- E.g WebCReactComponentCard number 4
- Go back
Issue: It skips the "previous" component, and goes straight to the Go back button.
Theory I believe that since the React components contains a web component with a shadowroot, the react-focus-lock believes it leaves the focus lock, and therefor goes back to the first element in the locked region. I suppose the issue when tabbing is related to why it is buggy when doing shift-tab as well.
Question: Is this supported, supposed to be working today? Or a feature request?
Regards, Daback (: