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;
|