diff options
Diffstat (limited to 'popperjs/package/lib/modifiers/eventListeners.js')
-rw-r--r-- | popperjs/package/lib/modifiers/eventListeners.js | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/popperjs/package/lib/modifiers/eventListeners.js b/popperjs/package/lib/modifiers/eventListeners.js new file mode 100644 index 0000000..bc68f35 --- /dev/null +++ b/popperjs/package/lib/modifiers/eventListeners.js @@ -0,0 +1,49 @@ +import getWindow from "../dom-utils/getWindow.js"; // eslint-disable-next-line import/no-unused-modules + +var passive = { + passive: true +}; + +function effect(_ref) { + var state = _ref.state, + instance = _ref.instance, + options = _ref.options; + var _options$scroll = options.scroll, + scroll = _options$scroll === void 0 ? true : _options$scroll, + _options$resize = options.resize, + resize = _options$resize === void 0 ? true : _options$resize; + var window = getWindow(state.elements.popper); + var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper); + + if (scroll) { + scrollParents.forEach(function (scrollParent) { + scrollParent.addEventListener('scroll', instance.update, passive); + }); + } + + if (resize) { + window.addEventListener('resize', instance.update, passive); + } + + return function () { + if (scroll) { + scrollParents.forEach(function (scrollParent) { + scrollParent.removeEventListener('scroll', instance.update, passive); + }); + } + + if (resize) { + window.removeEventListener('resize', instance.update, passive); + } + }; +} // eslint-disable-next-line import/no-unused-modules + + +export default { + name: 'eventListeners', + enabled: true, + phase: 'write', + fn: function fn() {}, + effect: effect, + data: {} +};
\ No newline at end of file |