Close popover when clicking outside it
This commit is contained in:
parent
6e85b3a9dc
commit
50bca2cca9
|
|
@ -15,8 +15,17 @@ export default {
|
||||||
_reject = reject;
|
_reject = reject;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const clickOutsideElementListener = (event: Event) => {
|
||||||
|
// inspired by https://stackoverflow.com/a/3028037/6071058
|
||||||
|
if (!mountEl.contains(event.target as Node)) {
|
||||||
|
_reject();
|
||||||
|
cleanUp();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
const cleanUp = () => {
|
const cleanUp = () => {
|
||||||
mountEl?.parentNode?.removeChild(mountEl);
|
mountEl?.parentNode?.removeChild(mountEl);
|
||||||
|
document.removeEventListener('click', clickOutsideElementListener);
|
||||||
popover.unmount();
|
popover.unmount();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -33,6 +42,10 @@ export default {
|
||||||
});
|
});
|
||||||
|
|
||||||
popover.mount(mountEl);
|
popover.mount(mountEl);
|
||||||
|
|
||||||
|
setTimeout(() => {
|
||||||
|
document.addEventListener('click', clickOutsideElementListener);
|
||||||
|
}, 1); // do not triger ont the same event that created the popover
|
||||||
return promise;
|
return promise;
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue