All files / src/components/common/FilePreview/hooks useInputFieldFocusListener.tsx

6.66% Statements 1/15
0% Branches 0/6
0% Functions 0/5
8.33% Lines 1/12

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 26 27 28 29 30 31 32 33    3x                                                            
import { RefObject, useEffect } from "react";
 
const useInputFieldFocusListener = ({
  inputRef,
  onFocus,
  autofocus,
}: {
  inputRef: RefObject<HTMLInputElement>;
  onFocus?: (isFocused: boolean) => void;
  autofocus?: boolean;
}) => {
  useEffect(() => {
    const inputElement = inputRef.current;
 
    if (inputElement && onFocus) {
      const focusCb = () => onFocus(true);
      const blurCb = () => onFocus(false);
 
      inputElement.addEventListener("focus", focusCb);
      inputElement.addEventListener("blur", blurCb);
 
      if (autofocus) focusCb();
 
      return () => {
        inputElement.removeEventListener("focus", focusCb);
        inputElement.removeEventListener("blur", blurCb);
      };
    }
  }, []);
};
 
export default useInputFieldFocusListener;