Close popover when clicking outside it

This commit is contained in:
Ramon Wenger 2024-01-08 22:27:10 +01:00
parent 6e85b3a9dc
commit 50bca2cca9
1 changed files with 13 additions and 0 deletions

View File

@ -15,8 +15,17 @@ export default {
_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 = () => {
mountEl?.parentNode?.removeChild(mountEl);
document.removeEventListener('click', clickOutsideElementListener);
popover.unmount();
};
@ -33,6 +42,10 @@ export default {
});
popover.mount(mountEl);
setTimeout(() => {
document.addEventListener('click', clickOutsideElementListener);
}, 1); // do not triger ont the same event that created the popover
return promise;
},
};