diff --git a/plugins/techdocs/src/reader/components/Reader.tsx b/plugins/techdocs/src/reader/components/Reader.tsx
index 31ccbbb57a..4f89b9296f 100644
--- a/plugins/techdocs/src/reader/components/Reader.tsx
+++ b/plugins/techdocs/src/reader/components/Reader.tsx
@@ -69,7 +69,7 @@ export const Reader = () => {
const location = useLocation();
const { componentId, '*': path } = useParams();
- const [ref, shadowRoot] = useShadowDom(componentId, path);
+ const [ref, shadowRoot] = useShadowDom();
const navigate = useNavigate();
const normalizedUrl = new URLFormatter(
`${docStorageURL}${location.pathname.replace('/docs', '')}`,
diff --git a/plugins/techdocs/src/reader/hooks/shadowDom.test.tsx b/plugins/techdocs/src/reader/hooks/shadowDom.test.tsx
index b8a6a78c1f..31956ccb06 100644
--- a/plugins/techdocs/src/reader/hooks/shadowDom.test.tsx
+++ b/plugins/techdocs/src/reader/hooks/shadowDom.test.tsx
@@ -23,7 +23,7 @@ const ComponentWithoutHook = () => {
};
const ComponentWithHook = () => {
- const [ref] = useShadowDom('mkdocs', 'about/license/');
+ const [ref] = useShadowDom();
return
;
};
@@ -31,19 +31,14 @@ describe('useShadowDom', () => {
it('does not create a Shadow DOM instance', async () => {
const rendered = await renderWithEffects();
- const outerDivElement = rendered.getByTestId('root');
- expect(outerDivElement.shadowRoot).not.toBeInstanceOf(ShadowRoot);
- expect(outerDivElement.children.length).toBe(0);
+ const divElement = rendered.getByTestId('root');
+ expect(divElement.shadowRoot).not.toBeInstanceOf(ShadowRoot);
});
it('create a Shadow DOM instance', async () => {
const rendered = await renderWithEffects();
- const outerDivElement = rendered.getByTestId('root');
- expect(outerDivElement.shadowRoot).not.toBeInstanceOf(ShadowRoot);
- expect(outerDivElement.children.length).toBe(1);
-
- const innerDivElement = outerDivElement.children[0];
- expect(innerDivElement.shadowRoot).toBeInstanceOf(ShadowRoot);
+ const divElement = rendered.getByTestId('root');
+ expect(divElement.shadowRoot).toBeInstanceOf(ShadowRoot);
});
});
diff --git a/plugins/techdocs/src/reader/hooks/shadowDom.ts b/plugins/techdocs/src/reader/hooks/shadowDom.ts
index 90b287e343..93e4c1d375 100644
--- a/plugins/techdocs/src/reader/hooks/shadowDom.ts
+++ b/plugins/techdocs/src/reader/hooks/shadowDom.ts
@@ -17,30 +17,15 @@
import { useEffect, useRef } from 'react';
import type { RefObject } from 'react';
-type IUseShadowDOM = (
- componentId: string,
- path: string,
-) => [RefObject, ShadowRoot?];
+type IUseShadowDOM = () => [RefObject, ShadowRoot?];
-export const useShadowDom: IUseShadowDOM = (componentId, path) => {
+export const useShadowDom: IUseShadowDOM = () => {
const ref = useRef(null);
useEffect(() => {
- const innerDivElement = document.createElement('div');
- innerDivElement.attachShadow({ mode: 'open' });
+ const divElement = ref.current;
+ divElement?.attachShadow({ mode: 'open' });
+ }, []);
- const outerDivElement = ref.current;
- outerDivElement?.appendChild(innerDivElement);
-
- return function cancel() {
- outerDivElement?.removeChild(innerDivElement);
- };
- }, [componentId, path]);
-
- const shadowRoot =
- ref.current?.children && ref.current?.children[0].shadowRoot
- ? ref.current?.children[0].shadowRoot
- : undefined;
-
- return [ref, shadowRoot];
+ return [ref, ref.current?.shadowRoot || undefined];
};