UNPKG

@ui5/webcomponents-react

Version:

React Wrapper for UI5 Web Components and additional components

37 lines (36 loc) 1.26 kB
import { useEffect, useState } from 'react'; export const useGetHeaderHeight = dynamicPageRef => { const [headerHeight, setHeaderHeight] = useState(undefined); useEffect(() => { const headerObserver = new ResizeObserver(([header]) => { setHeaderHeight(header.contentRect.height); }); if (dynamicPageRef.current) { // wait for the custom element to be defined (adjust the tag-name if you're using the scoping feature) void customElements.whenDefined('ui5-dynamic-page').then(() => { const { shadowRoot } = dynamicPageRef.current; // wait for the shadowRoot to be populated const shadowRootObserver = new MutationObserver(() => { const header = shadowRoot.querySelector('header'); if (header) { shadowRootObserver.disconnect(); headerObserver.observe(header); } }); if (shadowRoot && shadowRoot.childElementCount) { headerObserver.observe(shadowRoot.querySelector('header')); } else { shadowRootObserver.observe(shadowRoot, { childList: true }); } }); } return () => { headerObserver.disconnect(); }; }, []); return headerHeight; };