diff options
Diffstat (limited to 'popperjs/package/lib/dom-utils/getScrollParent.js.flow')
-rw-r--r-- | popperjs/package/lib/dom-utils/getScrollParent.js.flow | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/popperjs/package/lib/dom-utils/getScrollParent.js.flow b/popperjs/package/lib/dom-utils/getScrollParent.js.flow new file mode 100644 index 0000000..ee0002d --- /dev/null +++ b/popperjs/package/lib/dom-utils/getScrollParent.js.flow @@ -0,0 +1,18 @@ +// @flow +import getParentNode from './getParentNode'; +import isScrollParent from './isScrollParent'; +import getNodeName from './getNodeName'; +import { isHTMLElement } from './instanceOf'; + +export default function getScrollParent(node: Node): HTMLElement { + if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) { + // $FlowFixMe[incompatible-return]: assume body is always available + return node.ownerDocument.body; + } + + if (isHTMLElement(node) && isScrollParent(node)) { + return node; + } + + return getScrollParent(getParentNode(node)); +} |