@ui5/webcomponents-react
Version:
React Wrapper for UI5 Web Components and additional components
37 lines (36 loc) • 1.26 kB
JavaScript
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;
};