@innovaccer/design-system
Version:
React components library project for Innovaccer Design System
45 lines (34 loc) • 1.31 kB
text/typescript
export const getWrapperElement = (): Element => {
let element = document.querySelector('.Overlay-wrapper');
if (element === null) {
element = document.createElement('div');
element.classList.add('Overlay-wrapper');
document.body.appendChild(element);
}
return element;
};
interface elementData {
element: Element;
containerClassName: string;
elementRef: React.RefObject<HTMLDivElement>;
}
export const getUpdatedZIndex = (ele: elementData): number | undefined => {
const { containerClassName, elementRef, element } = ele;
if (element === null) return;
const elements = element.querySelectorAll(containerClassName);
if (elements.length < 1) return;
const siblings = Array.from(elements).filter((el) => el !== elementRef.current);
let zIndex = -1;
siblings.forEach((element) => {
const prevZIndex = parseInt(window.getComputedStyle(element).zIndex || '0', 10);
zIndex = Math.max(zIndex, prevZIndex + 10);
});
return zIndex > 0 ? zIndex : undefined;
};
export const closeOnEscapeKeypress = (event: KeyboardEvent, isTopOverlay: boolean | undefined, onClose: Function) => {
if (event.key === 'Escape' && isTopOverlay) {
onClose(event);
// prevent browser-specific escape key behavior (Safari exits fullscreen)
event.preventDefault();
}
}