mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	Follows up on https://github.com/Unleash/unleash/pull/4853 to add Biome to the frontend as well.  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]);
 | 
						|
};
 |