@gechiui/dom
Version:
DOM utilities module for GeChiUI.
45 lines (35 loc) • 1.07 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = getScrollContainer;
var _getComputedStyle = _interopRequireDefault(require("./get-computed-style"));
/**
* Internal dependencies
*/
/**
* Given a DOM node, finds the closest scrollable container node.
*
* @param {Element | null} node Node from which to start.
*
* @return {Element | undefined} Scrollable container node, if found.
*/
function getScrollContainer(node) {
if (!node) {
return undefined;
} // Scrollable if scrollable height exceeds displayed...
if (node.scrollHeight > node.clientHeight) {
// ...except when overflow is defined to be hidden or visible
const {
overflowY
} = (0, _getComputedStyle.default)(node);
if (/(auto|scroll)/.test(overflowY)) {
return node;
}
} // Continue traversing
return getScrollContainer(
/** @type {Element} */
node.parentNode);
}
//# sourceMappingURL=get-scroll-container.js.map