fix: show deprecation warning for 'keyboardHandlingEnabled' prop

This commit is contained in:
Satyajit Sahoo
2021-08-12 00:06:15 +02:00
parent 0cc96d5ff1
commit 8c89c45be4

View File

@@ -40,14 +40,14 @@ function StackNavigator({
// @ts-expect-error: mode is deprecated
const mode = rest.mode as 'card' | 'modal' | undefined;
// @ts-expect-error: headerMode='none' is deprecated
const headerMode = rest.headerMode as StackHeaderMode | 'none' | undefined;
warnOnce(
mode != null,
`Stack Navigator: 'mode="${mode}"' is deprecated. Use 'presentation: "${mode}"' in 'screenOptions' instead.\n\nSee https://reactnavigation.org/docs/stack-navigator#presentation for more details.`
);
// @ts-expect-error: headerMode='none' is deprecated
const headerMode = rest.headerMode as StackHeaderMode | 'none' | undefined;
warnOnce(
headerMode === 'none',
`Stack Navigator: 'headerMode="none"' is deprecated. Use 'headerShown: false' in 'screenOptions' instead.\n\nSee https://reactnavigation.org/docs/stack-navigator/#headershown for more details.`
@@ -58,6 +58,21 @@ function StackNavigator({
`Stack Navigator: 'headerMode' is moved to 'options'. Moved it to 'screenOptions' to keep current behavior.\n\nSee https://reactnavigation.org/docs/stack-navigator/#headermode for more details.`
);
// @ts-expect-error: headerMode='none' is deprecated
const keyboardHandlingEnabled = rest.keyboardHandlingEnabled;
warnOnce(
keyboardHandlingEnabled !== undefined,
`Stack Navigator: 'keyboardHandlingEnabled' is moved to 'options'. Moved it to 'screenOptions' to keep current behavior.\n\nSee https://reactnavigation.org/docs/stack-navigator/#keyboardhandlingenabled for more details.`
);
const defaultScreenOptions: StackNavigationOptions = {
presentation: mode,
headerShown: headerMode ? headerMode !== 'none' : true,
headerMode: headerMode && headerMode !== 'none' ? headerMode : undefined,
keyboardHandlingEnabled,
};
const { state, descriptors, navigation, NavigationContent } =
useNavigationBuilder<
StackNavigationState<ParamListBase>,
@@ -70,12 +85,7 @@ function StackNavigator({
children,
screenListeners,
screenOptions,
defaultScreenOptions: () => ({
presentation: mode,
headerShown: headerMode ? headerMode !== 'none' : true,
headerMode:
headerMode && headerMode !== 'none' ? headerMode : undefined,
}),
defaultScreenOptions,
});
React.useEffect(