All files / hooks useActiveElement.js

9.09% Statements 1/11
100% Branches 0/0
0% Functions 0/5
9.09% Lines 1/11

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25      27x                                          
import { useEffect, useState } from 'react';
 
 
const useActiveElement = () => {
  const [active, setActive] = useState(document.activeElement);
 
  const handleFocusIn = () => {
    setActive(document.activeElement);
  };
  const hasParent = (id) => {
    return active.closest(`[id^=${id}]`) !== null;
  };
 
  useEffect(() => {
    document.addEventListener('focusin', handleFocusIn);
    return () => {
      document.removeEventListener('focusin', handleFocusIn);
  };
  }, []);
 
  return { active, hasParent };
};
 
export default useActiveElement;