@react-navigation/stack 7.0.0-alpha.1 → 7.0.0-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/TransitionConfigs/CardStyleInterpolators.js.map +1 -1
- package/lib/commonjs/TransitionConfigs/HeaderStyleInterpolators.js +19 -12
- package/lib/commonjs/TransitionConfigs/HeaderStyleInterpolators.js.map +1 -1
- package/lib/commonjs/TransitionConfigs/TransitionPresets.js +11 -21
- package/lib/commonjs/TransitionConfigs/TransitionPresets.js.map +1 -1
- package/lib/commonjs/TransitionConfigs/TransitionSpecs.js +7 -14
- package/lib/commonjs/TransitionConfigs/TransitionSpecs.js.map +1 -1
- package/lib/commonjs/index.js +2 -2
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/navigators/createStackNavigator.js +32 -24
- package/lib/commonjs/navigators/createStackNavigator.js.map +1 -1
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/utils/CardAnimationContext.js +3 -4
- package/lib/commonjs/utils/CardAnimationContext.js.map +1 -1
- package/lib/commonjs/utils/GestureHandlerRefContext.js +3 -4
- package/lib/commonjs/utils/GestureHandlerRefContext.js.map +1 -1
- package/lib/commonjs/utils/ModalPresentationContext.js +3 -4
- package/lib/commonjs/utils/ModalPresentationContext.js.map +1 -1
- package/lib/commonjs/utils/conditional.js.map +1 -1
- package/lib/commonjs/utils/debounce.js.map +1 -1
- package/lib/commonjs/utils/findLastIndex.js +1 -1
- package/lib/commonjs/utils/findLastIndex.js.map +1 -1
- package/lib/commonjs/utils/getDistanceForDirection.js +2 -2
- package/lib/commonjs/utils/getDistanceForDirection.js.map +1 -1
- package/lib/commonjs/utils/getInvertedMultiplier.js +3 -4
- package/lib/commonjs/utils/getInvertedMultiplier.js.map +1 -1
- package/lib/commonjs/utils/memoize.js.map +1 -1
- package/lib/commonjs/utils/useCardAnimation.js +2 -2
- package/lib/commonjs/utils/useCardAnimation.js.map +1 -1
- package/lib/commonjs/utils/useGestureHandlerRef.js +2 -2
- package/lib/commonjs/utils/useGestureHandlerRef.js.map +1 -1
- package/lib/commonjs/utils/useKeyboardManager.js +6 -6
- package/lib/commonjs/utils/useKeyboardManager.js.map +1 -1
- package/lib/commonjs/views/GestureHandler.android.js.map +1 -1
- package/lib/commonjs/views/GestureHandler.ios.js.map +1 -1
- package/lib/commonjs/views/GestureHandler.js +5 -8
- package/lib/commonjs/views/GestureHandler.js.map +1 -1
- package/lib/commonjs/views/GestureHandlerNative.js +2 -2
- package/lib/commonjs/views/GestureHandlerNative.js.map +1 -1
- package/lib/commonjs/views/Header/Header.js +4 -4
- package/lib/commonjs/views/Header/Header.js.map +1 -1
- package/lib/commonjs/views/Header/HeaderContainer.js +12 -9
- package/lib/commonjs/views/Header/HeaderContainer.js.map +1 -1
- package/lib/commonjs/views/Header/HeaderSegment.js +11 -3
- package/lib/commonjs/views/Header/HeaderSegment.js.map +1 -1
- package/lib/commonjs/views/Screens.js +2 -2
- package/lib/commonjs/views/Screens.js.map +1 -1
- package/lib/commonjs/views/Stack/Card.js +48 -41
- package/lib/commonjs/views/Stack/Card.js.map +1 -1
- package/lib/commonjs/views/Stack/CardContainer.js +25 -21
- package/lib/commonjs/views/Stack/CardContainer.js.map +1 -1
- package/lib/commonjs/views/Stack/CardSheet.js +24 -4
- package/lib/commonjs/views/Stack/CardSheet.js.map +1 -1
- package/lib/commonjs/views/Stack/CardStack.js +58 -60
- package/lib/commonjs/views/Stack/CardStack.js.map +1 -1
- package/lib/commonjs/views/Stack/StackView.js +26 -30
- package/lib/commonjs/views/Stack/StackView.js.map +1 -1
- package/lib/module/TransitionConfigs/CardStyleInterpolators.js.map +1 -1
- package/lib/module/TransitionConfigs/HeaderStyleInterpolators.js +20 -13
- package/lib/module/TransitionConfigs/HeaderStyleInterpolators.js.map +1 -1
- package/lib/module/TransitionConfigs/TransitionPresets.js +1 -1
- package/lib/module/TransitionConfigs/TransitionPresets.js.map +1 -1
- package/lib/module/TransitionConfigs/TransitionSpecs.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/navigators/createStackNavigator.js +30 -21
- package/lib/module/navigators/createStackNavigator.js.map +1 -1
- package/lib/module/types.js.map +1 -1
- package/lib/module/utils/CardAnimationContext.js.map +1 -1
- package/lib/module/utils/GestureHandlerRefContext.js.map +1 -1
- package/lib/module/utils/ModalPresentationContext.js.map +1 -1
- package/lib/module/utils/conditional.js.map +1 -1
- package/lib/module/utils/debounce.js.map +1 -1
- package/lib/module/utils/findLastIndex.js +1 -1
- package/lib/module/utils/findLastIndex.js.map +1 -1
- package/lib/module/utils/getDistanceForDirection.js +2 -2
- package/lib/module/utils/getDistanceForDirection.js.map +1 -1
- package/lib/module/utils/getInvertedMultiplier.js +3 -4
- package/lib/module/utils/getInvertedMultiplier.js.map +1 -1
- package/lib/module/utils/memoize.js.map +1 -1
- package/lib/module/utils/useCardAnimation.js.map +1 -1
- package/lib/module/utils/useGestureHandlerRef.js.map +1 -1
- package/lib/module/utils/useKeyboardManager.js +4 -4
- package/lib/module/utils/useKeyboardManager.js.map +1 -1
- package/lib/module/views/GestureHandler.android.js.map +1 -1
- package/lib/module/views/GestureHandler.ios.js.map +1 -1
- package/lib/module/views/GestureHandler.js.map +1 -1
- package/lib/module/views/GestureHandlerNative.js.map +1 -1
- package/lib/module/views/Header/Header.js +1 -0
- package/lib/module/views/Header/Header.js.map +1 -1
- package/lib/module/views/Header/HeaderContainer.js +11 -8
- package/lib/module/views/Header/HeaderContainer.js.map +1 -1
- package/lib/module/views/Header/HeaderSegment.js +9 -1
- package/lib/module/views/Header/HeaderSegment.js.map +1 -1
- package/lib/module/views/Screens.js.map +1 -1
- package/lib/module/views/Stack/Card.js +45 -37
- package/lib/module/views/Stack/Card.js.map +1 -1
- package/lib/module/views/Stack/CardContainer.js +23 -18
- package/lib/module/views/Stack/CardContainer.js.map +1 -1
- package/lib/module/views/Stack/CardSheet.js +21 -0
- package/lib/module/views/Stack/CardSheet.js.map +1 -1
- package/lib/module/views/Stack/CardStack.js +53 -54
- package/lib/module/views/Stack/CardStack.js.map +1 -1
- package/lib/module/views/Stack/StackView.js +24 -28
- package/lib/module/views/Stack/StackView.js.map +1 -1
- package/lib/typescript/src/TransitionConfigs/HeaderStyleInterpolators.d.ts +3 -3
- package/lib/typescript/src/TransitionConfigs/HeaderStyleInterpolators.d.ts.map +1 -1
- package/lib/typescript/src/navigators/createStackNavigator.d.ts +4 -4
- package/lib/typescript/src/navigators/createStackNavigator.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +47 -9
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/lib/typescript/src/utils/getDistanceForDirection.d.ts +1 -1
- package/lib/typescript/src/utils/getDistanceForDirection.d.ts.map +1 -1
- package/lib/typescript/src/utils/getInvertedMultiplier.d.ts +1 -1
- package/lib/typescript/src/utils/getInvertedMultiplier.d.ts.map +1 -1
- package/lib/typescript/src/views/GestureHandlerNative.d.ts +3 -3
- package/lib/typescript/src/views/GestureHandlerNative.d.ts.map +1 -1
- package/lib/typescript/src/views/Header/Header.d.ts.map +1 -1
- package/lib/typescript/src/views/Header/HeaderContainer.d.ts +4 -4
- package/lib/typescript/src/views/Header/HeaderContainer.d.ts.map +1 -1
- package/lib/typescript/src/views/Header/HeaderSegment.d.ts +3 -2
- package/lib/typescript/src/views/Header/HeaderSegment.d.ts.map +1 -1
- package/lib/typescript/src/views/Screens.d.ts +4 -3
- package/lib/typescript/src/views/Screens.d.ts.map +1 -1
- package/lib/typescript/src/views/Stack/Card.d.ts +6 -5
- package/lib/typescript/src/views/Stack/Card.d.ts.map +1 -1
- package/lib/typescript/src/views/Stack/CardContainer.d.ts +3 -6
- package/lib/typescript/src/views/Stack/CardContainer.d.ts.map +1 -1
- package/lib/typescript/src/views/Stack/CardSheet.d.ts +1 -1
- package/lib/typescript/src/views/Stack/CardSheet.d.ts.map +1 -1
- package/lib/typescript/src/views/Stack/CardStack.d.ts +4 -5
- package/lib/typescript/src/views/Stack/CardStack.d.ts.map +1 -1
- package/lib/typescript/src/views/Stack/StackView.d.ts +9 -80
- package/lib/typescript/src/views/Stack/StackView.d.ts.map +1 -1
- package/package.json +20 -21
- package/src/TransitionConfigs/CardStyleInterpolators.tsx +5 -5
- package/src/TransitionConfigs/HeaderStyleInterpolators.tsx +32 -22
- package/src/TransitionConfigs/TransitionPresets.tsx +4 -4
- package/src/navigators/createStackNavigator.tsx +18 -7
- package/src/types.tsx +50 -10
- package/src/utils/findLastIndex.tsx +1 -1
- package/src/utils/getDistanceForDirection.tsx +3 -2
- package/src/utils/getInvertedMultiplier.tsx +4 -5
- package/src/utils/useKeyboardManager.tsx +1 -1
- package/src/views/GestureHandlerNative.tsx +1 -1
- package/src/views/Header/Header.tsx +3 -2
- package/src/views/Header/HeaderContainer.tsx +17 -6
- package/src/views/Header/HeaderSegment.tsx +12 -4
- package/src/views/Screens.tsx +2 -1
- package/src/views/Stack/Card.tsx +75 -56
- package/src/views/Stack/CardContainer.tsx +18 -9
- package/src/views/Stack/CardSheet.tsx +25 -1
- package/src/views/Stack/CardStack.tsx +216 -186
- package/src/views/Stack/StackView.tsx +24 -27
- package/lib/commonjs/views/ModalStatusBarManager.js +0 -44
- package/lib/commonjs/views/ModalStatusBarManager.js.map +0 -1
- package/lib/module/views/ModalStatusBarManager.js +0 -36
- package/lib/module/views/ModalStatusBarManager.js.map +0 -1
- package/lib/typescript/src/views/ModalStatusBarManager.d.ts +0 -12
- package/lib/typescript/src/views/ModalStatusBarManager.d.ts.map +0 -1
- package/src/views/ModalStatusBarManager.tsx +0 -45
|
@@ -4,7 +4,12 @@ import {
|
|
|
4
4
|
HeaderHeightContext,
|
|
5
5
|
HeaderShownContext,
|
|
6
6
|
} from '@react-navigation/elements';
|
|
7
|
-
import {
|
|
7
|
+
import {
|
|
8
|
+
type Route,
|
|
9
|
+
useLinkBuilder,
|
|
10
|
+
useLocale,
|
|
11
|
+
useTheme,
|
|
12
|
+
} from '@react-navigation/native';
|
|
8
13
|
import * as React from 'react';
|
|
9
14
|
import { Animated, StyleSheet, View } from 'react-native';
|
|
10
15
|
|
|
@@ -23,8 +28,8 @@ type Props = {
|
|
|
23
28
|
modal: boolean;
|
|
24
29
|
layout: Layout;
|
|
25
30
|
gesture: Animated.Value;
|
|
31
|
+
preloaded: boolean;
|
|
26
32
|
scene: Scene;
|
|
27
|
-
headerDarkContent: boolean | undefined;
|
|
28
33
|
safeAreaInsetTop: number;
|
|
29
34
|
safeAreaInsetRight: number;
|
|
30
35
|
safeAreaInsetBottom: number;
|
|
@@ -32,7 +37,6 @@ type Props = {
|
|
|
32
37
|
getPreviousScene: (props: { route: Route<string> }) => Scene | undefined;
|
|
33
38
|
getFocusedRoute: () => Route<string>;
|
|
34
39
|
renderHeader: (props: HeaderContainerProps) => React.ReactNode;
|
|
35
|
-
renderScene: (props: { route: Route<string> }) => React.ReactNode;
|
|
36
40
|
onOpenRoute: (props: { route: Route<string> }) => void;
|
|
37
41
|
onCloseRoute: (props: { route: Route<string> }) => void;
|
|
38
42
|
onTransitionStart: (
|
|
@@ -66,7 +70,6 @@ function CardContainerInner({
|
|
|
66
70
|
modal,
|
|
67
71
|
getPreviousScene,
|
|
68
72
|
getFocusedRoute,
|
|
69
|
-
headerDarkContent,
|
|
70
73
|
hasAbsoluteFloatHeader,
|
|
71
74
|
headerHeight,
|
|
72
75
|
onHeaderHeightChange,
|
|
@@ -81,14 +84,16 @@ function CardContainerInner({
|
|
|
81
84
|
onGestureStart,
|
|
82
85
|
onTransitionEnd,
|
|
83
86
|
onTransitionStart,
|
|
87
|
+
preloaded,
|
|
84
88
|
renderHeader,
|
|
85
|
-
renderScene,
|
|
86
89
|
safeAreaInsetBottom,
|
|
87
90
|
safeAreaInsetLeft,
|
|
88
91
|
safeAreaInsetRight,
|
|
89
92
|
safeAreaInsetTop,
|
|
90
93
|
scene,
|
|
91
94
|
}: Props) {
|
|
95
|
+
const { direction } = useLocale();
|
|
96
|
+
|
|
92
97
|
const parentHeaderHeight = React.useContext(HeaderHeightContext);
|
|
93
98
|
|
|
94
99
|
const { onPageChangeStart, onPageChangeCancel, onPageChangeConfirm } =
|
|
@@ -200,19 +205,22 @@ function CardContainerInner({
|
|
|
200
205
|
transitionSpec,
|
|
201
206
|
} = scene.descriptor.options;
|
|
202
207
|
|
|
208
|
+
const { buildHref } = useLinkBuilder();
|
|
203
209
|
const previousScene = getPreviousScene({ route: scene.descriptor.route });
|
|
204
210
|
|
|
205
211
|
let backTitle: string | undefined;
|
|
212
|
+
let href: string | undefined;
|
|
206
213
|
|
|
207
214
|
if (previousScene) {
|
|
208
215
|
const { options, route } = previousScene.descriptor;
|
|
209
216
|
|
|
210
217
|
backTitle = getHeaderTitle(options, route.name);
|
|
218
|
+
href = buildHref(route.name, route.params);
|
|
211
219
|
}
|
|
212
220
|
|
|
213
221
|
const headerBack = React.useMemo(
|
|
214
|
-
() => (
|
|
215
|
-
[backTitle]
|
|
222
|
+
() => ({ title: backTitle, href }),
|
|
223
|
+
[backTitle, href]
|
|
216
224
|
);
|
|
217
225
|
|
|
218
226
|
return (
|
|
@@ -221,6 +229,7 @@ function CardContainerInner({
|
|
|
221
229
|
gestureDirection={gestureDirection}
|
|
222
230
|
layout={layout}
|
|
223
231
|
insets={insets}
|
|
232
|
+
direction={direction}
|
|
224
233
|
gesture={gesture}
|
|
225
234
|
current={scene.progress.current}
|
|
226
235
|
next={scene.progress.next}
|
|
@@ -243,7 +252,7 @@ function CardContainerInner({
|
|
|
243
252
|
importantForAccessibility={focused ? 'auto' : 'no-hide-descendants'}
|
|
244
253
|
pointerEvents={active ? 'box-none' : pointerEvents}
|
|
245
254
|
pageOverflowEnabled={headerMode !== 'float' && presentation !== 'modal'}
|
|
246
|
-
|
|
255
|
+
preloaded={preloaded}
|
|
247
256
|
containerStyle={
|
|
248
257
|
hasAbsoluteFloatHeader && headerMode !== 'screen'
|
|
249
258
|
? { marginTop: headerHeight }
|
|
@@ -286,7 +295,7 @@ function CardContainerInner({
|
|
|
286
295
|
<HeaderHeightContext.Provider
|
|
287
296
|
value={headerShown ? headerHeight : parentHeaderHeight ?? 0}
|
|
288
297
|
>
|
|
289
|
-
{
|
|
298
|
+
{scene.descriptor.render()}
|
|
290
299
|
</HeaderHeightContext.Provider>
|
|
291
300
|
</HeaderShownContext.Provider>
|
|
292
301
|
</HeaderBackContext.Provider>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { StyleSheet, View, ViewProps } from 'react-native';
|
|
2
|
+
import { StyleSheet, View, type ViewProps } from 'react-native';
|
|
3
3
|
|
|
4
4
|
type Props = ViewProps & {
|
|
5
5
|
enabled: boolean;
|
|
@@ -27,6 +27,7 @@ export const CardSheet = React.forwardRef<CardSheetRef, Props>(
|
|
|
27
27
|
return { setPointerEvents };
|
|
28
28
|
});
|
|
29
29
|
|
|
30
|
+
const workaroundApplied = React.useRef(false);
|
|
30
31
|
React.useEffect(() => {
|
|
31
32
|
if (typeof document === 'undefined' || !document.body) {
|
|
32
33
|
// Only run when DOM is available
|
|
@@ -36,6 +37,29 @@ export const CardSheet = React.forwardRef<CardSheetRef, Props>(
|
|
|
36
37
|
const width = document.body.clientWidth;
|
|
37
38
|
const height = document.body.clientHeight;
|
|
38
39
|
|
|
40
|
+
// Workaround for mobile Chrome, necessary when a navigation happens
|
|
41
|
+
// when the address bar has already collapsed, which resulted in an
|
|
42
|
+
// empty space at the bottom of the page (matching the height of the
|
|
43
|
+
// address bar). To fix this, it's necessary to update the height of
|
|
44
|
+
// the DOM with the current height of the window.
|
|
45
|
+
// See https://css-tricks.com/the-trick-to-viewport-units-on-mobile/
|
|
46
|
+
const fillHeight = height === layout.height;
|
|
47
|
+
if (fillHeight) {
|
|
48
|
+
const vh = window.innerHeight * 0.01;
|
|
49
|
+
document.documentElement.style.setProperty('--vh', `${vh}px`);
|
|
50
|
+
document.body.setAttribute(
|
|
51
|
+
'style',
|
|
52
|
+
`height: calc(var(--vh, 1vh) * 100);`
|
|
53
|
+
);
|
|
54
|
+
workaroundApplied.current = true;
|
|
55
|
+
} else {
|
|
56
|
+
// Revert the workaround if the stack does not occupy the whole
|
|
57
|
+
// height of the page
|
|
58
|
+
if (workaroundApplied.current) {
|
|
59
|
+
document.documentElement.style.removeProperty('--vh');
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
39
63
|
setFill(width === layout.width && height === layout.height);
|
|
40
64
|
}, [layout.height, layout.width]);
|
|
41
65
|
|