Comments (2)
So - portals are working now - https://codesandbox.io/s/w2l1q3m5w7
But only if you were able to "tab" inside. The example above have to disable focusGuards
to let tab from content to portal. So "portals" are "supported" by just understanding that you are inside a portal and thus allowing to leave a trap. It does not help you to get into trap.
If you want to manage portaled content as a part of Lock - you have to use scattered trap. Just place another FocusLock inside a portal and assign the same focus group.
<FocusLock group="focus1">
<h2>Start editing to see some magic happen {"\u2728"}</h2>
<button>I'm jailed</button>
<button>And I'm too...</button>
{createPortal(
<div>portal
<FocusLock group="focus1">
<button>I'm in portal 1</button>
<button>I'm in portal 2</button>
<button>I'm in portal 3</button>
</FocusLock>
</div>,
document.getElementById("portal-root")
)}
</FocusLock>
from react-focus-lock.
This is a hard problem and it is impossible to solve it using the current logic, cos current logic is about making some boundaries you could not escape, but you do.
How this can be made:
- I have a plan to work with more than one FocusLock on "one level". Currently, you can "nest" them, but what about one level, and next you can tab from the first lock, to the second? That's is a requirement for my another project. WIP.
- React handles evens, occurred in portaled code, as they occur in normal code. It is possible to detect focus "outside" of a lock, which occurs "inside".
- And after that detection - create a virtual lock around the portal.
Sounds doable, should be doable. But devil, usually, is hidden in realization details.
from react-focus-lock.
Related Issues (20)
- Set crossFrame as false by default HOT 3
- Why is `focusOptions` showing as deprecated? HOT 3
- Trap loosing focus in case focusable is portaled, within shards, and the last child of the body HOT 5
- When autoFocus=false, it takes two "tab" presses to focus on the first element in the trap. HOT 3
- Preact 10.11.2 is now rendering with data-focus-lock-disabled="false" HOT 1
- [feature] add possibility to pass id to the `FocusLock` element HOT 2
- Console warning for react 18 users HOT 1
- react-focus-lock with [email protected] throws when focus taken from cross-origin iframe HOT 4
- Add browser level integration test HOT 1
- preventScroll is affecting scroll inside a modal
- react-focus-lock breaks password managers' autofill features HOT 7
- Socket dev picking up some security issues. HOT 3
- Add an `onError` callback for when focus fighting is detected HOT 2
- Feature request - Clickaway deactivation HOT 2
- `crossFrame={false}` has cross-browser Safari issues HOT 7
- Can't click without scroll being changed HOT 3
- Invalid hook call when using it inside a library HOT 3
- Issue with importing FocusLock component HOT 18
- /*#__PURE__*/ comment throws warning in Rollup HOT 3
- Unclear behavior during loosing focus in unmanaged area HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from react-focus-lock.