File: /var/www/quadcode/frontend/src/js/helpers/click-outside.js
export function clickOutside(element, callback = undefined, listenOnMount = true) {
let isMounted = false;
const handleClick = (event) => {
if (!element.contains(event.target)) {
if(callback) {
callback(event);
}
}
};
const addListener = () => {
document.addEventListener('click', handleClick, true);
isMounted = true;
};
const removeListener = () => {
document.removeEventListener('click', handleClick, true);
isMounted = false;
};
if (listenOnMount) {
addListener();
}
return {
destroy: removeListener,
addListener,
removeListener,
isMounted: () => isMounted,
};
}