ngx-bootstrap
Version:
Angular Bootstrap
28 lines • 1.03 kB
JavaScript
/**
* Returns the scrolling parent of the given element
*/
import { getStyleComputedProperty } from './getStyleComputedProperty';
import { getParentNode } from './getParentNode';
// todo: valorkin fix
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export function getScrollParent(element) {
// Return body, `getScroll` will take care to get the correct `scrollTop` from it
if (!element) {
return document.body;
}
switch (element.nodeName) {
case 'HTML':
case 'BODY':
return element.ownerDocument.body;
case '#document':
return element.body;
default:
}
// Firefox want us to check `-x` and `-y` variations as well
const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);
if (/(auto|scroll|overlay)/.test(String(overflow) + String(overflowY) + String(overflowX))) {
return element;
}
return getScrollParent(getParentNode(element));
}
//# sourceMappingURL=getScrollParent.js.map