1234567891011121314151617181920212223242526272829 |
- export function getScrollParent(el) {
- let includeHidden = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
- while (el) {
- if (includeHidden ? isPotentiallyScrollable(el) : hasScrollbar(el)) return el;
- el = el.parentElement;
- }
- return document.scrollingElement;
- }
- export function getScrollParents(el, stopAt) {
- const elements = [];
- if (stopAt && el && !stopAt.contains(el)) return elements;
- while (el) {
- if (hasScrollbar(el)) elements.push(el);
- if (el === stopAt) break;
- el = el.parentElement;
- }
- return elements;
- }
- export function hasScrollbar(el) {
- if (!el || el.nodeType !== Node.ELEMENT_NODE) return false;
- const style = window.getComputedStyle(el);
- return style.overflowY === 'scroll' || style.overflowY === 'auto' && el.scrollHeight > el.clientHeight;
- }
- function isPotentiallyScrollable(el) {
- if (!el || el.nodeType !== Node.ELEMENT_NODE) return false;
- const style = window.getComputedStyle(el);
- return ['scroll', 'auto'].includes(style.overflowY);
- }
- //# sourceMappingURL=getScrollParent.mjs.map
|