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"