Comments (2)
By stepping through the stack trace I can see that it's traversing up the DOM until it finds x.ownerDocument.body
which it will never be able to do being under a shadow boundary.
You can see above what it's trying to do — Draft is essentially traversing upwards to find the first element is encounters that has an overflow
of either auto
or scroll
:
You can fix with unknown consequences by applying the requested overflow
on an element inside the shadow boundary, so it doesn't need to keep traversing until it finds the x.ownerDocument.body
element:
<div style={{ overflow: 'scroll' }}>
See line #18 in the updated JSFiddle and notice how the focus now works without throwing errors.
Nevertheless, when you type in the div
it throws more errors, and by stepping through the stack trace of that error you can see it's caused by the findAncestorOffsetKey
method:
You can see that the method is expecting to stop traversing once it finds the doument.documentElement
node, which again because you've nested it under a shadow boundary, it will never be able to do.
Conclusion? You could attempt to find workarounds, but I think the problem essentially lies in the way Draft is written. It's simply making too many assumptions that it's always able to access either document.documentElement
or x.ownerDocument.body
which because of the nature of shadow boundaries, that just isn't true.
from reactshadow.
Thanks a lot for the super detailed response @Wildhoney. I'm going to close out this ticket as there's obviously nothing that can be done in this library. But I'm going to use what you've taught me here to try to come up with a workaround myself. Or (ugh) see if I can get some changes into Draft to support this use case better.
from reactshadow.
Related Issues (20)
- Can useLayoutEffect() be used instead of useEffect() to make rendering synchronous? HOT 3
- How to use ReactShadow with ChakraUI Drawers? HOT 1
- Is there any chance to have a working example with CRA and TS? HOT 1
- Lib stopped working on iOS 15? HOT 1
- Shadow tree inheriting from parent HOT 2
- Does it support new mui lib?
- [feature request] allow consumers to pass options to emotion
- global requires a polyfill. Shall we replace global with globalThis? HOT 2
- styled-components is not defined as a peer dependency HOT 1
- Update dependency to React 18? HOT 5
- Trouble Loading Custom Font Into Shadow DOM in my Chrome Extension
- template content is empty with react HOT 1
- Example links in readme are both broken
- Children of the shadow root cannot get retrieved at parent level within a useEffect
- Failed to execute 'attachShadow' on 'Element': Shadow root cannot be created on a host which already hosts a shadow tree HOT 1
- Remove react-use dependency due to package size
- shadowroot has been depricated need to update with shadowrootmode in template element HOT 2
- Next.js v13 failed to build "TypeError: e.createContext is not a function" HOT 1
- Css Variables from External URL link inside of a shadow dom not getting recognized
- Warning: z: Support for defaultProps will be removed from function components in a future major release. Use JavaScript default parameters instead.
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 reactshadow.