Files

29 lines
1.0 KiB
TypeScript

import * as React from 'react';
import { KeyboardAvoidingViewProps, KeyboardAvoidingView as NativeKeyboardAvoidingView } from 'react-native';
import useKeyboardState from '../utils/hooks/useKeyboardState';
interface Props extends KeyboardAvoidingViewProps {}
const KeyboardAvoidingView: React.FC<Props> = ({ enabled, children, ...forwardedProps }) => {
const keyboardState = useKeyboardState();
enabled &&= (
// When the floating keyboard is enabled, the KeyboardAvoidingView can have a very small
// height. Don't use the KeyboardAvoidingView when the floating keyboard is enabled.
// See https://github.com/facebook/react-native/issues/29473
// Also disable the keyboard avoiding view when the keyboard is not visible, to avoid sizing issues:
// https://github.com/laurent22/joplin/issues/14722
!keyboardState.isFloatingKeyboard && keyboardState.keyboardVisible
);
return <NativeKeyboardAvoidingView
behavior='padding'
{...forwardedProps}
enabled={enabled}
>
{children}
</NativeKeyboardAvoidingView>;
};
export default KeyboardAvoidingView;