signoz/frontend/src/hooks/useClickOutside.tsx
SagarRajput-7 fe73ca63a0
fix: fixed view trace or logs button on graph not disappearing on outside click (#7177)
* fix: fixed view trace or logs button on graph not disappearing on outside click

* fix: removed older function
2025-03-03 11:22:14 +05:30

31 lines
767 B
TypeScript

import { useEffect } from 'react';
type UseClickOutsideProps = {
ref: React.RefObject<HTMLElement>;
onClickOutside: () => void;
eventType?: 'mousedown' | 'mouseup' | 'click' | 'dblclick';
};
const useClickOutside = ({
ref,
onClickOutside,
eventType,
}: UseClickOutsideProps): void => {
const handleClickOutside = (event: MouseEvent): void => {
if (ref.current && !ref.current.contains(event.target as Node)) {
onClickOutside();
}
};
useEffect(() => {
document.addEventListener(eventType ?? 'click', handleClickOutside);
return (): void => {
document.removeEventListener(eventType ?? 'click', handleClickOutside);
};
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [ref, onClickOutside]);
};
export default useClickOutside;