diff --git a/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfigViewManager.kt b/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfigViewManager.kt index ec09178054..22a5710c7b 100644 --- a/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfigViewManager.kt +++ b/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfigViewManager.kt @@ -340,4 +340,11 @@ class ScreenStackHeaderConfigViewManager : ) { logNotAvailable("headerRightBarButtonItems") } + + override fun setUserInterfaceStyle( + view: ScreenStackHeaderConfig?, + value: String?, + ) { + logNotAvailable("userInterfaceStyle") + } } diff --git a/android/src/main/java/com/swmansion/rnscreens/gamma/tabs/TabScreenViewManager.kt b/android/src/main/java/com/swmansion/rnscreens/gamma/tabs/TabScreenViewManager.kt index 3d0fbaa248..e5a0a06734 100644 --- a/android/src/main/java/com/swmansion/rnscreens/gamma/tabs/TabScreenViewManager.kt +++ b/android/src/main/java/com/swmansion/rnscreens/gamma/tabs/TabScreenViewManager.kt @@ -190,6 +190,11 @@ class TabScreenViewManager : value: String?, ) = Unit + override fun setUserInterfaceStyle( + view: TabScreen, + value: String?, + ) = Unit + @ReactProp(name = "imageIconResource") override fun setImageIconResource( view: TabScreen, diff --git a/android/src/paper/java/com/facebook/react/viewmanagers/RNSBottomTabsScreenManagerDelegate.java b/android/src/paper/java/com/facebook/react/viewmanagers/RNSBottomTabsScreenManagerDelegate.java index 8db05361df..5f8b030f34 100644 --- a/android/src/paper/java/com/facebook/react/viewmanagers/RNSBottomTabsScreenManagerDelegate.java +++ b/android/src/paper/java/com/facebook/react/viewmanagers/RNSBottomTabsScreenManagerDelegate.java @@ -98,6 +98,9 @@ public void setProperty(T view, String propName, @Nullable Object value) { case "topScrollEdgeEffect": mViewManager.setTopScrollEdgeEffect(view, (String) value); break; + case "userInterfaceStyle": + mViewManager.setUserInterfaceStyle(view, (String) value); + break; default: super.setProperty(view, propName, value); } diff --git a/android/src/paper/java/com/facebook/react/viewmanagers/RNSBottomTabsScreenManagerInterface.java b/android/src/paper/java/com/facebook/react/viewmanagers/RNSBottomTabsScreenManagerInterface.java index ac3e0737a3..82535a3890 100644 --- a/android/src/paper/java/com/facebook/react/viewmanagers/RNSBottomTabsScreenManagerInterface.java +++ b/android/src/paper/java/com/facebook/react/viewmanagers/RNSBottomTabsScreenManagerInterface.java @@ -40,4 +40,5 @@ public interface RNSBottomTabsScreenManagerInterface { void setLeftScrollEdgeEffect(T view, @Nullable String value); void setRightScrollEdgeEffect(T view, @Nullable String value); void setTopScrollEdgeEffect(T view, @Nullable String value); + void setUserInterfaceStyle(T view, @Nullable String value); } diff --git a/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerDelegate.java b/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerDelegate.java index 331f711000..c5bc2301ad 100644 --- a/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerDelegate.java +++ b/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerDelegate.java @@ -118,6 +118,9 @@ public void setProperty(T view, String propName, @Nullable Object value) { case "synchronousShadowStateUpdatesEnabled": mViewManager.setSynchronousShadowStateUpdatesEnabled(view, value == null ? false : (boolean) value); break; + case "userInterfaceStyle": + mViewManager.setUserInterfaceStyle(view, (String) value); + break; default: super.setProperty(view, propName, value); } diff --git a/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerInterface.java b/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerInterface.java index 58917121a6..c890ff59a5 100644 --- a/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerInterface.java +++ b/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerInterface.java @@ -46,4 +46,5 @@ public interface RNSScreenStackHeaderConfigManagerInterface { void setHeaderLeftBarButtonItems(T view, @Nullable ReadableArray value); void setHeaderRightBarButtonItems(T view, @Nullable ReadableArray value); void setSynchronousShadowStateUpdatesEnabled(T view, boolean value); + void setUserInterfaceStyle(T view, @Nullable String value); } diff --git a/apps/src/tests/Test3342.tsx b/apps/src/tests/Test3342.tsx new file mode 100644 index 0000000000..a0119c9aed --- /dev/null +++ b/apps/src/tests/Test3342.tsx @@ -0,0 +1,153 @@ +import React from 'react'; +import { + DefaultTheme, + NavigationContainer, + ParamListBase, +} from '@react-navigation/native'; +import { + NativeStackNavigationProp, + createNativeStackNavigator, +} from '@react-navigation/native-stack'; +import { Button, StyleSheet, Text, TextInput, View } from 'react-native'; +import ConfigWrapperContext, { + Configuration, + DEFAULT_GLOBAL_CONFIGURATION, +} from '../shared/gamma/containers/bottom-tabs/ConfigWrapperContext'; +import { + BottomTabsContainer, + TabConfiguration, +} from '../shared/gamma/containers/bottom-tabs/BottomTabsContainer'; +import Colors from '../shared/styling/Colors'; + +type RouteParamList = { + Screen1: undefined; + Screen2: undefined; + Screen3: undefined; +}; + +type NavigationProp = { + navigation: NativeStackNavigationProp; +}; + +type StackNavigationProp = NavigationProp; + +const Stack = createNativeStackNavigator(); + +function Screen1({ navigation }: StackNavigationProp) { + return ( + + Enable system dark mode and observe the back button. +