react-native-external-keyboard
Version:
Toolkit for improving physical keyboard support in React Native
29 lines (26 loc) • 638 B
text/typescript
import { useCallback } from 'react';
import type { OnFocusChangeFn } from '../types';
type UseFocusChange = {
onFocusChange?: (f: boolean, tag?: number) => void;
onFocus?: () => void;
onBlur?: () => void;
};
export const useOnFocusChange = ({
onFocusChange,
onFocus,
onBlur,
}: UseFocusChange) =>
useCallback<OnFocusChangeFn>(
(e) => {
onFocusChange?.(
e.nativeEvent.isFocused,
(e?.nativeEvent as unknown as { target?: number })?.target
);
if (e.nativeEvent.isFocused) {
onFocus?.();
} else {
onBlur?.();
}
},
[onBlur, onFocus, onFocusChange]
);