mirror of
https://github.com/Unleash/unleash.git
synced 2025-01-01 00:08:27 +01:00
4167a60588
Follows up on https://github.com/Unleash/unleash/pull/4853 to add Biome to the frontend as well. ![image](https://github.com/Unleash/unleash/assets/14320932/1906faf1-fc29-4172-a4d4-b2716d72cd65) Added a few `biome-ignore` to speed up the process but we may want to check and fix them in the future.
30 lines
883 B
TypeScript
30 lines
883 B
TypeScript
import { useEffect } from 'react';
|
|
|
|
/**
|
|
* Hook to handle outside clicks for a given list of refs.
|
|
*
|
|
* @param {Array<React.RefObject>} refs - List of refs to the target elements.
|
|
* @param {Function} callback - Callback to execute on outside click.
|
|
*/
|
|
export const useOnClickOutside = (
|
|
refs: Array<React.RefObject<HTMLElement>>,
|
|
callback: Function,
|
|
) => {
|
|
useEffect(() => {
|
|
const handleClickOutside = (event: MouseEvent) => {
|
|
// Check if event target is outside all provided refs
|
|
if (
|
|
!refs.some((ref) => ref.current?.contains(event.target as Node))
|
|
) {
|
|
callback();
|
|
}
|
|
};
|
|
|
|
document.addEventListener('click', handleClickOutside);
|
|
|
|
return () => {
|
|
document.removeEventListener('click', handleClickOutside);
|
|
};
|
|
}, [refs, callback]);
|
|
};
|