detach Popup listeners on route blur

This commit is contained in:
nklhrstv 2020-03-17 18:43:19 +02:00
parent 57dacc7cd4
commit b0c7687f2b

View file

@ -2,9 +2,11 @@ const React = require('react');
const PropTypes = require('prop-types');
const classnames = require('classnames');
const FocusLock = require('react-focus-lock').default;
const { useRouteFocused } = require('stremio-router');
const styles = require('./styles');
const Popup = ({ open, direction, renderLabel, renderMenu, dataset, onCloseRequest, ...props }) => {
const routeFocused = useRouteFocused();
const labelRef = React.useRef(null);
const menuRef = React.useRef(null);
const [autoDirection, setAutoDirection] = React.useState(null);
@ -36,7 +38,7 @@ const Popup = ({ open, direction, renderLabel, renderMenu, dataset, onCloseReque
}
}
};
if (open) {
if (routeFocused && open) {
window.addEventListener('resize', onCloseEvent);
window.addEventListener('keydown', onCloseEvent);
window.addEventListener('mousedown', onCloseEvent);
@ -46,7 +48,7 @@ const Popup = ({ open, direction, renderLabel, renderMenu, dataset, onCloseReque
window.removeEventListener('keydown', onCloseEvent);
window.removeEventListener('mousedown', onCloseEvent);
};
}, [open, onCloseRequest, dataset]);
}, [routeFocused, open, onCloseRequest, dataset]);
React.useLayoutEffect(() => {
if (open) {
const autoDirection = [];