49 lines
1.3 KiB
JavaScript
49 lines
1.3 KiB
JavaScript
|
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: {}
|
||
|
};
|