diff --git a/src/withPseudoState.js b/src/withPseudoState.js index 74827f2..0fef499 100644 --- a/src/withPseudoState.js +++ b/src/withPseudoState.js @@ -52,13 +52,15 @@ function initPseudoStyles(shadowRoot) { // Reinitialize CSS enhancements every time the story changes addons.getChannel().on(STORY_RENDERED, () => initPseudoStyles()) -// Monkeypatch the attachShadow method so we can handle pseudo styles inside shadow DOM -Element.prototype._attachShadow = Element.prototype.attachShadow -Element.prototype.attachShadow = function attachShadow(init) { - if (!this._attachShadow) return // IE doesn't support shadow DOM - const shadowRoot = this._attachShadow({ ...init, mode: "open" }) - setTimeout(() => initPseudoStyles(shadowRoot)) - return shadowRoot +// IE doesn't support shadow DOM +if (Element.prototype.attachShadow) { + // Monkeypatch the attachShadow method so we can handle pseudo styles inside shadow DOM + Element.prototype._attachShadow = Element.prototype.attachShadow + Element.prototype.attachShadow = function attachShadow(init) { + const shadowRoot = this._attachShadow({ ...init, mode: "open" }) + setTimeout(() => initPseudoStyles(shadowRoot)) + return shadowRoot + } } export const withPseudoState = (StoryFn) => { diff --git a/stories/ShadowRoot.js b/stories/ShadowRoot.js index 4868472..84ffceb 100644 --- a/stories/ShadowRoot.js +++ b/stories/ShadowRoot.js @@ -4,6 +4,7 @@ export const ShadowRoot = () => { const ref = React.useRef() React.useEffect(() => { + if (!ref.current.attachShadow) return ref.current.attachShadow({ mode: "closed" }) ref.current.shadowRoot.innerHTML = `