UNPKG

antd-mobile

Version:
29 lines (28 loc) 810 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getScrollParent = getScrollParent; var _canUseDom = require("./can-use-dom"); const defaultRoot = _canUseDom.canUseDom ? window : undefined; const overflowStylePatterns = ['scroll', 'auto', 'overlay']; function isElement(node) { const ELEMENT_NODE_TYPE = 1; return node.nodeType === ELEMENT_NODE_TYPE; } function getScrollParent(el, root = defaultRoot) { let node = el; while (node && node !== root && isElement(node)) { if (node === document.body) { return root; } const { overflowY } = window.getComputedStyle(node); if (overflowStylePatterns.includes(overflowY) && node.scrollHeight > node.clientHeight) { return node; } node = node.parentNode; } return root; }