export function useTabOutside()

in src/hooks/useTabOutside/index.tsx [6:30]


export function useTabOutside(
  ref: RefObject<HTMLElement>,
  onTabOutside: (e: KeyboardEvent) => void
) {
  const isOutside = () => {
    return (
      !!ref.current &&
      !ref.current.contains(document.activeElement as HTMLElement)
    );
  };

  const keyUp = (e: KeyboardEvent) => {
    if (e.keyCode === 9 && isOutside()) {
      return onTabOutside(e);
    }
  };

  useEffect(() => {
    document.addEventListener('keyup', keyUp);
    return () => {
      document.removeEventListener('keyup', keyUp);
    };
  }),
    [onTabOutside];
}