mirror of
https://gitlab.nic.cz/turris/reforis/foris-js.git
synced 2025-06-16 13:46:16 +02:00
Detect clicks outside element with a hook
This commit is contained in:
@ -18,3 +18,19 @@ export function useConditionalTimeout({ callback, timeout = 125 }, ...callbackAr
|
||||
}, [condition, callback, timeout, callbackArgs]);
|
||||
return setCondition;
|
||||
}
|
||||
|
||||
/** Execute callback when user clicks outside specified element. */
|
||||
export function useClickOutside(element, callback) {
|
||||
function handleClickOutside(event) {
|
||||
if (element.current && !element.current.contains(event.target)) {
|
||||
callback(event);
|
||||
}
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
document.addEventListener("mousedown", handleClickOutside);
|
||||
return () => {
|
||||
document.removeEventListener("mousedown", handleClickOutside);
|
||||
};
|
||||
});
|
||||
}
|
||||
|
Reference in New Issue
Block a user