diff --git a/packages/stack/package.json b/packages/stack/package.json
index 30cbe2c0..2ef6a661 100644
--- a/packages/stack/package.json
+++ b/packages/stack/package.json
@@ -45,7 +45,7 @@
"devDependencies": {
"@react-native-community/bob": "^0.16.2",
"@react-native-community/masked-view": "0.1.10",
- "@react-navigation/stack": "^5.12.3",
+ "@react-navigation/stack": "^5.12.6",
"@types/color": "^3.0.1",
"@types/react": "^16.9.53",
"@types/react-native": "^0.63.30",
diff --git a/packages/stack/scripts/stack.patch b/packages/stack/scripts/stack.patch
index a3988b88..219b4962 100644
Binary files a/packages/stack/scripts/stack.patch and b/packages/stack/scripts/stack.patch differ
diff --git a/packages/stack/src/navigators/__tests__/__snapshots__/NestedNavigator.test.tsx.snap b/packages/stack/src/navigators/__tests__/__snapshots__/NestedNavigator.test.tsx.snap
index 7a08583d..87cced32 100644
--- a/packages/stack/src/navigators/__tests__/__snapshots__/NestedNavigator.test.tsx.snap
+++ b/packages/stack/src/navigators/__tests__/__snapshots__/NestedNavigator.test.tsx.snap
@@ -155,13 +155,18 @@ exports[`Nested navigators renders succesfully as direct child 1`] = `
onTransitionStart={[Function]}
pointerEvents="box-none"
style={
- Object {
- "bottom": 0,
- "left": 0,
- "position": "absolute",
- "right": 0,
- "top": 0,
- }
+ Array [
+ Object {
+ "overflow": undefined,
+ },
+ Object {
+ "bottom": 0,
+ "left": 0,
+ "position": "absolute",
+ "right": 0,
+ "top": 0,
+ },
+ ]
}
transitionSpec={
Object {
@@ -283,6 +288,112 @@ exports[`Nested navigators renders succesfully as direct child 1`] = `
}
}
>
+
+
+
+
+
+
+
+
+
+
+ Home
+
+
+
+
+
+
@@ -454,19 +569,6 @@ exports[`Nested navigators renders succesfully as direct child 1`] = `
-
diff --git a/packages/stack/src/navigators/__tests__/__snapshots__/StackNavigator.test.tsx.snap b/packages/stack/src/navigators/__tests__/__snapshots__/StackNavigator.test.tsx.snap
index 68fbd641..79eee638 100644
--- a/packages/stack/src/navigators/__tests__/__snapshots__/StackNavigator.test.tsx.snap
+++ b/packages/stack/src/navigators/__tests__/__snapshots__/StackNavigator.test.tsx.snap
@@ -172,13 +172,18 @@ exports[`StackNavigator applies correct values when headerRight is present 1`] =
onTransitionStart={[Function]}
pointerEvents="box-none"
style={
- Object {
- "bottom": 0,
- "left": 0,
- "position": "absolute",
- "right": 0,
- "top": 0,
- }
+ Array [
+ Object {
+ "overflow": undefined,
+ },
+ Object {
+ "bottom": 0,
+ "left": 0,
+ "position": "absolute",
+ "right": 0,
+ "top": 0,
+ },
+ ]
}
transitionSpec={
Object {
@@ -460,13 +465,18 @@ exports[`StackNavigator renders successfully 1`] = `
onTransitionStart={[Function]}
pointerEvents="box-none"
style={
- Object {
- "bottom": 0,
- "left": 0,
- "position": "absolute",
- "right": 0,
- "top": 0,
- }
+ Array [
+ Object {
+ "overflow": undefined,
+ },
+ Object {
+ "bottom": 0,
+ "left": 0,
+ "position": "absolute",
+ "right": 0,
+ "top": 0,
+ },
+ ]
}
transitionSpec={
Object {
diff --git a/packages/stack/src/vendor/views/Header/HeaderContainer.tsx b/packages/stack/src/vendor/views/Header/HeaderContainer.tsx
index 12d9389c..b724ea86 100644
--- a/packages/stack/src/vendor/views/Header/HeaderContainer.tsx
+++ b/packages/stack/src/vendor/views/Header/HeaderContainer.tsx
@@ -10,7 +10,6 @@ import {
forNoAnimation,
forSlideRight,
} from '../../TransitionConfigs/HeaderStyleInterpolators';
-import HeaderShownContext from '../../utils/HeaderShownContext';
import PreviousSceneContext from '../../utils/PreviousSceneContext';
import type {
Layout,
@@ -52,7 +51,6 @@ export default function HeaderContainer({
style,
}: Props) {
const focusedRoute = getFocusedRoute();
- const isParentHeaderShown = React.useContext(HeaderShownContext);
const parentPreviousScene = React.useContext(PreviousSceneContext);
return (
@@ -62,11 +60,8 @@ export default function HeaderContainer({
return null;
}
- const {
- header,
- headerShown = isParentHeaderShown === false,
- headerTransparent,
- } = scene.descriptor.options || {};
+ const { header, headerShown = true, headerTransparent } =
+ scene.descriptor.options || {};
if (!headerShown) {
return null;
@@ -81,11 +76,10 @@ export default function HeaderContainer({
const previousScene = self[i - 1];
const nextScene = self[i + 1];
- const {
- headerShown: previousHeaderShown = isParentHeaderShown === false,
- } = previousScene?.descriptor.options || {};
+ const { headerShown: previousHeaderShown = true } =
+ previousScene?.descriptor.options || {};
- const { headerShown: nextHeaderShown = isParentHeaderShown === false } =
+ const { headerShown: nextHeaderShown = true } =
nextScene?.descriptor.options || {};
const isHeaderStatic =
diff --git a/packages/stack/src/vendor/views/Stack/CardContainer.tsx b/packages/stack/src/vendor/views/Stack/CardContainer.tsx
index aa1c9ead..8790e8ef 100644
--- a/packages/stack/src/vendor/views/Stack/CardContainer.tsx
+++ b/packages/stack/src/vendor/views/Stack/CardContainer.tsx
@@ -217,7 +217,14 @@ function CardContainer({
pageOverflowEnabled={headerMode === 'screen' && mode === 'card'}
containerStyle={hasAbsoluteHeader ? { marginTop: headerHeight } : null}
contentStyle={[{ backgroundColor: colors.background }, cardStyle]}
- style={StyleSheet.absoluteFill}
+ style={[
+ {
+ // This is necessary to avoid unfocused larger pages increasing scroll area
+ // The issue can be seen on the web when a smaller screen is pushed over a larger one
+ overflow: active ? undefined : 'hidden',
+ },
+ StyleSheet.absoluteFill,
+ ]}
>
diff --git a/packages/stack/src/vendor/views/Stack/CardStack.tsx b/packages/stack/src/vendor/views/Stack/CardStack.tsx
index a3aa7c95..1b77ad7a 100755
--- a/packages/stack/src/vendor/views/Stack/CardStack.tsx
+++ b/packages/stack/src/vendor/views/Stack/CardStack.tsx
@@ -444,10 +444,7 @@ export default class CardStack extends React.Component {
? this.state.scenes.slice(-2).some((scene) => {
const { descriptor } = scene;
const options = descriptor ? descriptor.options : {};
- const {
- headerTransparent,
- headerShown = isParentHeaderShown === false,
- } = options;
+ const { headerTransparent, headerShown = true } = options;
if (headerTransparent || headerShown === false) {
return true;
@@ -539,7 +536,7 @@ export default class CardStack extends React.Component {
const {
safeAreaInsets,
- headerShown = isParentHeaderShown === false,
+ headerShown = true,
headerTransparent,
cardShadowEnabled,
cardOverlayEnabled,
diff --git a/yarn.lock b/yarn.lock
index 515d82b6..ef9c4603 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4179,10 +4179,10 @@
resolved "https://registry.yarnpkg.com/@react-native-community/masked-view/-/masked-view-0.1.10.tgz#5dda643e19e587793bc2034dd9bf7398ad43d401"
integrity sha512-rk4sWFsmtOw8oyx8SD3KSvawwaK7gRBSEIy2TAwURyGt+3TizssXP1r8nx3zY+R7v2vYYHXZ+k2/GULAT/bcaQ==
-"@react-navigation/stack@^5.12.3":
- version "5.12.3"
- resolved "https://registry.yarnpkg.com/@react-navigation/stack/-/stack-5.12.3.tgz#a9ad55b9ab8c2337a6298e92d5c38dc376cdfe83"
- integrity sha512-qJBX6+3JKFi252b/98eijCM2yB+t5GVvZjod3lWpl+44By5EAo4gMGlAVTXbLBLqDEE+LDtHRFE3AMt1IjLVmw==
+"@react-navigation/stack@^5.12.6":
+ version "5.12.6"
+ resolved "https://registry.yarnpkg.com/@react-navigation/stack/-/stack-5.12.6.tgz#a6f2caf66da78ad2afa80f7a960c36db6b83bcff"
+ integrity sha512-pf9AigAIVtCQuCpZAZqBux4kNqQwj98ngvd6JEryFrqTQ1CYsUH6jfpQE7SKyHggVRFSQVMf24aCgwtRixBvjw==
dependencies:
color "^3.1.3"
react-native-iphone-x-helper "^1.3.0"