react-native-screens 3.32.0 → 3.33.0
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/README.md +17 -13
- package/RNScreens.podspec +10 -52
- package/android/CMakeLists.txt +48 -4
- package/android/build.gradle +9 -81
- package/android/src/fabric/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt +25 -16
- package/android/src/fabric/java/com/swmansion/rnscreens/NativeProxy.kt +53 -0
- package/android/src/main/cpp/NativeProxy.cpp +51 -0
- package/android/src/main/cpp/NativeProxy.h +35 -0
- package/android/src/main/cpp/OnLoad.cpp +8 -0
- package/android/src/main/java/com/swmansion/rnscreens/CustomSearchView.kt +5 -2
- package/android/src/main/java/com/swmansion/rnscreens/CustomToolbar.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/FragmentBackPressOverrider.kt +2 -2
- package/android/src/main/java/com/swmansion/rnscreens/RNScreensPackage.kt +36 -17
- package/android/src/main/java/com/swmansion/rnscreens/Screen.kt +134 -38
- package/android/src/main/java/com/swmansion/rnscreens/ScreenContainer.kt +52 -30
- package/android/src/main/java/com/swmansion/rnscreens/ScreenContainerViewManager.kt +17 -7
- package/android/src/main/java/com/swmansion/rnscreens/ScreenEventDispatcher.kt +10 -2
- package/android/src/main/java/com/swmansion/rnscreens/ScreenFragment.kt +56 -27
- package/android/src/main/java/com/swmansion/rnscreens/ScreenFragmentWrapper.kt +8 -1
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStack.kt +50 -19
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragment.kt +60 -37
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragmentWrapper.kt +4 -0
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.kt +85 -58
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfigViewManager.kt +128 -37
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderSubview.kt +19 -4
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderSubviewManager.kt +16 -10
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackViewManager.kt +28 -25
- package/android/src/main/java/com/swmansion/rnscreens/ScreenViewManager.kt +173 -78
- package/android/src/main/java/com/swmansion/rnscreens/ScreenWindowTraits.kt +59 -24
- package/android/src/main/java/com/swmansion/rnscreens/ScreensModule.kt +30 -8
- package/android/src/main/java/com/swmansion/rnscreens/ScreensShadowNode.kt +3 -1
- package/android/src/main/java/com/swmansion/rnscreens/SearchBarManager.kt +101 -50
- package/android/src/main/java/com/swmansion/rnscreens/SearchBarView.kt +29 -22
- package/android/src/main/java/com/swmansion/rnscreens/SearchViewFormatter.kt +7 -2
- package/android/src/main/java/com/swmansion/rnscreens/events/HeaderAttachedEvent.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/events/HeaderBackButtonClickedEvent.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/events/HeaderDetachedEvent.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/events/HeaderHeightChangeEvent.kt +5 -5
- package/android/src/main/java/com/swmansion/rnscreens/events/ScreenAppearEvent.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/events/ScreenDisappearEvent.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/events/ScreenDismissedEvent.kt +8 -4
- package/android/src/main/java/com/swmansion/rnscreens/events/ScreenTransitionProgressEvent.kt +7 -6
- package/android/src/main/java/com/swmansion/rnscreens/events/ScreenWillAppearEvent.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/events/ScreenWillDisappearEvent.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarBlurEvent.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarChangeTextEvent.kt +4 -3
- package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarCloseEvent.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarFocusEvent.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarOpenEvent.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarSearchButtonPressEvent.kt +9 -4
- package/android/src/main/java/com/swmansion/rnscreens/events/StackFinishTransitioningEvent.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/utils/DeviceUtils.kt +1 -5
- package/android/src/main/java/com/swmansion/rnscreens/utils/ScreenDummyLayoutHelper.kt +214 -0
- package/android/src/main/jni/CMakeLists.txt +5 -4
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerDelegate.java +3 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerInterface.java +1 -0
- package/android/src/paper/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt +10 -5
- package/android/src/paper/java/com/swmansion/rnscreens/NativeProxy.kt +19 -0
- package/android/src/paper/java/com/swmansion/rnscreens/NativeScreensModuleSpec.java +4 -0
- package/common/cpp/react/renderer/components/rnscreens/FrameCorrectionModes.h +51 -0
- package/common/cpp/react/renderer/components/rnscreens/RNSModalScreenShadowNode.cpp +2 -1
- package/common/cpp/react/renderer/components/rnscreens/RNSModalScreenShadowNode.h +1 -1
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenComponentDescriptor.h +140 -1
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.cpp +51 -1
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.h +23 -1
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenState.cpp +20 -0
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenState.h +23 -1
- package/common/cpp/react/renderer/components/rnscreens/utils/RectUtil.h +36 -0
- package/cpp/RNSScreenRemovalListener.cpp +25 -0
- package/cpp/RNSScreenRemovalListener.h +20 -0
- package/ios/RNSConvert.h +1 -0
- package/ios/RNSModalScreen.mm +22 -0
- package/ios/RNSModule.mm +1 -1
- package/ios/RNSScreen.h +2 -1
- package/ios/RNSScreen.mm +27 -19
- package/ios/RNSScreenStack.mm +24 -77
- package/ios/RNSScreenStackAnimator.mm +43 -6
- package/ios/RNSScreenStackHeaderConfig.mm +49 -11
- package/ios/RNSScreenStackHeaderSubview.mm +8 -0
- package/ios/utils/UIView+RNSUtility.h +23 -0
- package/ios/utils/UIView+RNSUtility.mm +55 -0
- package/lib/commonjs/components/ScreenStack.js +8 -1
- package/lib/commonjs/components/ScreenStack.js.map +1 -1
- package/lib/commonjs/fabric/ModalScreenNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/ScreenNativeComponent.js.map +1 -1
- package/lib/commonjs/native-stack/views/NativeStackView.js +2 -0
- package/lib/commonjs/native-stack/views/NativeStackView.js.map +1 -1
- package/lib/module/components/ScreenStack.js +8 -1
- package/lib/module/components/ScreenStack.js.map +1 -1
- package/lib/module/fabric/ModalScreenNativeComponent.js.map +1 -1
- package/lib/module/fabric/ScreenNativeComponent.js.map +1 -1
- package/lib/module/native-stack/views/NativeStackView.js +2 -0
- package/lib/module/native-stack/views/NativeStackView.js.map +1 -1
- package/lib/typescript/components/ScreenStack.d.ts.map +1 -1
- package/lib/typescript/fabric/ModalScreenNativeComponent.d.ts +1 -0
- package/lib/typescript/fabric/ModalScreenNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/ScreenNativeComponent.d.ts +1 -0
- package/lib/typescript/fabric/ScreenNativeComponent.d.ts.map +1 -1
- package/lib/typescript/native-stack/types.d.ts +10 -0
- package/lib/typescript/native-stack/types.d.ts.map +1 -1
- package/lib/typescript/native-stack/views/NativeStackView.d.ts.map +1 -1
- package/lib/typescript/types.d.ts +10 -0
- package/lib/typescript/types.d.ts.map +1 -1
- package/native-stack/README.md +110 -99
- package/package.json +6 -3
- package/react-native.config.js +17 -15
- package/src/TransitionProgressContext.tsx +1 -1
- package/src/components/Screen.tsx +4 -4
- package/src/components/ScreenStack.tsx +11 -1
- package/src/components/ScreenStackHeaderConfig.tsx +5 -5
- package/src/components/ScreenStackHeaderConfig.web.tsx +6 -6
- package/src/components/SearchBar.tsx +4 -4
- package/src/core.ts +1 -1
- package/src/fabric/ModalScreenNativeComponent.ts +1 -0
- package/src/fabric/ScreenNativeComponent.ts +1 -0
- package/src/fabric/ScreenNavigationContainerNativeComponent.ts +1 -1
- package/src/fabric/ScreenStackHeaderConfigNativeComponent.ts +1 -1
- package/src/fabric/ScreenStackHeaderSubviewNativeComponent.ts +1 -1
- package/src/fabric/SearchBarNativeComponent.ts +1 -1
- package/src/gesture-handler/ScreenGestureDetector.tsx +5 -5
- package/src/gesture-handler/constraints.ts +5 -5
- package/src/gesture-handler/fabricUtils.ts +1 -1
- package/src/native-stack/contexts/GHContext.tsx +1 -1
- package/src/native-stack/navigators/createNativeStackNavigator.tsx +3 -3
- package/src/native-stack/types.tsx +14 -4
- package/src/native-stack/utils/getDefaultHeaderHeight.tsx +1 -1
- package/src/native-stack/utils/getStatusBarHeight.tsx +1 -1
- package/src/native-stack/utils/useAnimatedHeaderHeight.tsx +1 -1
- package/src/native-stack/utils/useBackPressSubscription.tsx +1 -1
- package/src/native-stack/utils/useHeaderHeight.tsx +1 -1
- package/src/native-stack/views/FontProcessor.tsx +1 -1
- package/src/native-stack/views/HeaderConfig.tsx +1 -1
- package/src/native-stack/views/NativeStackView.tsx +11 -9
- package/src/reanimated/ReanimatedHeaderHeightContext.tsx +1 -1
- package/src/reanimated/ReanimatedNativeStackScreen.tsx +5 -5
- package/src/reanimated/ReanimatedScreen.tsx +2 -2
- package/src/reanimated/ReanimatedScreenProvider.tsx +1 -1
- package/src/reanimated/useReanimatedHeaderHeight.tsx +1 -1
- package/src/reanimated/useReanimatedTransitionProgress.tsx +1 -1
- package/src/types.tsx +15 -5
- package/src/useTransitionProgress.tsx +1 -1
- package/windows/README.md +4 -1
|
@@ -19,7 +19,7 @@ import getStatusBarHeight from '../native-stack/utils/getStatusBarHeight';
|
|
|
19
19
|
import ReanimatedHeaderHeightContext from './ReanimatedHeaderHeightContext';
|
|
20
20
|
|
|
21
21
|
const AnimatedScreen = Animated.createAnimatedComponent(
|
|
22
|
-
InnerScreen as unknown as React.ComponentClass
|
|
22
|
+
InnerScreen as unknown as React.ComponentClass,
|
|
23
23
|
);
|
|
24
24
|
|
|
25
25
|
// We use prop added to global by reanimated since it seems safer than the one from RN. See:
|
|
@@ -40,7 +40,7 @@ const ReanimatedNativeStackScreen = React.forwardRef<
|
|
|
40
40
|
const statusBarHeight = getStatusBarHeight(
|
|
41
41
|
topInset,
|
|
42
42
|
dimensions,
|
|
43
|
-
isStatusBarTranslucent
|
|
43
|
+
isStatusBarTranslucent,
|
|
44
44
|
);
|
|
45
45
|
|
|
46
46
|
// Default header height, normally used in `useHeaderHeight` hook.
|
|
@@ -49,7 +49,7 @@ const ReanimatedNativeStackScreen = React.forwardRef<
|
|
|
49
49
|
dimensions,
|
|
50
50
|
statusBarHeight,
|
|
51
51
|
stackPresentation,
|
|
52
|
-
hasLargeHeader
|
|
52
|
+
hasLargeHeader,
|
|
53
53
|
);
|
|
54
54
|
|
|
55
55
|
const cachedHeaderHeight = React.useRef(defaultHeaderHeight);
|
|
@@ -79,7 +79,7 @@ const ReanimatedNativeStackScreen = React.forwardRef<
|
|
|
79
79
|
ENABLE_FABRIC
|
|
80
80
|
? 'onTransitionProgress'
|
|
81
81
|
: 'topTransitionProgress',
|
|
82
|
-
]
|
|
82
|
+
],
|
|
83
83
|
)}
|
|
84
84
|
onHeaderHeightChangeReanimated={useEvent(
|
|
85
85
|
(event: HeaderHeightChangeEventType) => {
|
|
@@ -96,7 +96,7 @@ const ReanimatedNativeStackScreen = React.forwardRef<
|
|
|
96
96
|
: ENABLE_FABRIC
|
|
97
97
|
? 'onHeaderHeightChange'
|
|
98
98
|
: 'topHeaderHeightChange',
|
|
99
|
-
]
|
|
99
|
+
],
|
|
100
100
|
)}
|
|
101
101
|
{...rest}>
|
|
102
102
|
<ReanimatedHeaderHeightContext.Provider value={headerHeight}>
|
|
@@ -5,7 +5,7 @@ import { InnerScreen, ScreenProps } from 'react-native-screens';
|
|
|
5
5
|
import Animated from 'react-native-reanimated';
|
|
6
6
|
|
|
7
7
|
const AnimatedScreen = Animated.createAnimatedComponent(
|
|
8
|
-
InnerScreen as unknown as React.ComponentClass
|
|
8
|
+
InnerScreen as unknown as React.ComponentClass,
|
|
9
9
|
);
|
|
10
10
|
|
|
11
11
|
const ReanimatedScreen = React.forwardRef<typeof AnimatedScreen, ScreenProps>(
|
|
@@ -17,7 +17,7 @@ const ReanimatedScreen = React.forwardRef<typeof AnimatedScreen, ScreenProps>(
|
|
|
17
17
|
{...props}
|
|
18
18
|
/>
|
|
19
19
|
);
|
|
20
|
-
}
|
|
20
|
+
},
|
|
21
21
|
);
|
|
22
22
|
|
|
23
23
|
ReanimatedScreen.displayName = 'ReanimatedScreen';
|
|
@@ -31,7 +31,7 @@ class ReanimatedScreenWrapper extends React.Component<ScreenProps> {
|
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
export default function ReanimatedScreenProvider(
|
|
34
|
-
props: PropsWithChildren<unknown
|
|
34
|
+
props: PropsWithChildren<unknown>,
|
|
35
35
|
) {
|
|
36
36
|
return (
|
|
37
37
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -6,7 +6,7 @@ export default function useReanimatedHeaderHeight() {
|
|
|
6
6
|
|
|
7
7
|
if (height === undefined) {
|
|
8
8
|
throw new Error(
|
|
9
|
-
"Couldn't find the header height using Reanimated. Are you inside a screen in a navigator with a header and your NavigationContainer is wrapped in ReanimatedScreenProvider?"
|
|
9
|
+
"Couldn't find the header height using Reanimated. Are you inside a screen in a navigator with a header and your NavigationContainer is wrapped in ReanimatedScreenProvider?",
|
|
10
10
|
);
|
|
11
11
|
}
|
|
12
12
|
|
|
@@ -6,7 +6,7 @@ export default function useReanimatedTransitionProgress() {
|
|
|
6
6
|
|
|
7
7
|
if (progress === undefined) {
|
|
8
8
|
throw new Error(
|
|
9
|
-
"Couldn't find values for reanimated transition progress. Are you inside a screen in Native Stack?"
|
|
9
|
+
"Couldn't find values for reanimated transition progress. Are you inside a screen in Native Stack?",
|
|
10
10
|
);
|
|
11
11
|
}
|
|
12
12
|
|
package/src/types.tsx
CHANGED
|
@@ -133,6 +133,16 @@ export interface ScreenProps extends ViewProps {
|
|
|
133
133
|
* @platform ios
|
|
134
134
|
*/
|
|
135
135
|
fullScreenSwipeEnabled?: boolean;
|
|
136
|
+
/**
|
|
137
|
+
* Whether the full screen dismiss gesture has shadow under view during transition. The gesture uses custom transition and thus
|
|
138
|
+
* doesn't have a shadow by default. When enabled, a custom shadow view is added during the transition which tries to mimic the
|
|
139
|
+
* default iOS shadow. Defaults to `false`.
|
|
140
|
+
*
|
|
141
|
+
* This does not affect the behavior of transitions that don't use gestures, enabled by `fullScreenGestureEnabled` prop.
|
|
142
|
+
*
|
|
143
|
+
* @platform ios
|
|
144
|
+
*/
|
|
145
|
+
fullScreenSwipeShadowEnabled?: boolean;
|
|
136
146
|
/**
|
|
137
147
|
* Whether you can use gestures to dismiss this screen. Defaults to `true`.
|
|
138
148
|
*
|
|
@@ -201,7 +211,7 @@ export interface ScreenProps extends ViewProps {
|
|
|
201
211
|
* A callback that gets called when the header height has changed.
|
|
202
212
|
*/
|
|
203
213
|
onHeaderHeightChange?: (
|
|
204
|
-
e: NativeSyntheticEvent<HeaderHeightChangeEventType
|
|
214
|
+
e: NativeSyntheticEvent<HeaderHeightChangeEventType>,
|
|
205
215
|
) => void;
|
|
206
216
|
/**
|
|
207
217
|
* A callback that gets called after swipe back is canceled.
|
|
@@ -219,13 +229,13 @@ export interface ScreenProps extends ViewProps {
|
|
|
219
229
|
* @platform ios
|
|
220
230
|
*/
|
|
221
231
|
onNativeDismissCancelled?: (
|
|
222
|
-
e: NativeSyntheticEvent<{ dismissCount: number }
|
|
232
|
+
e: NativeSyntheticEvent<{ dismissCount: number }>,
|
|
223
233
|
) => void;
|
|
224
234
|
/**
|
|
225
235
|
* An internal callback called every frame during the transition of screens of `native-stack`, used to feed transition context.
|
|
226
236
|
*/
|
|
227
237
|
onTransitionProgress?: (
|
|
228
|
-
e: NativeSyntheticEvent<TransitionProgressEventType
|
|
238
|
+
e: NativeSyntheticEvent<TransitionProgressEventType>,
|
|
229
239
|
) => void;
|
|
230
240
|
/**
|
|
231
241
|
* A callback that gets called when the current screen will appear. This is called as soon as the transition begins.
|
|
@@ -403,7 +413,7 @@ export interface ScreenContainerProps extends ViewProps {
|
|
|
403
413
|
|
|
404
414
|
export interface GestureDetectorBridge {
|
|
405
415
|
stackUseEffectCallback: (
|
|
406
|
-
stackRef: React.MutableRefObject<React.Ref<NativeStackNavigatorProps
|
|
416
|
+
stackRef: React.MutableRefObject<React.Ref<NativeStackNavigatorProps>>,
|
|
407
417
|
) => void;
|
|
408
418
|
}
|
|
409
419
|
|
|
@@ -675,7 +685,7 @@ export interface SearchBarProps {
|
|
|
675
685
|
* A callback that gets called when the search button is pressed. It receives the current text value of the search bar.
|
|
676
686
|
*/
|
|
677
687
|
onSearchButtonPress?: (
|
|
678
|
-
e: NativeSyntheticEvent<TextInputFocusEventData
|
|
688
|
+
e: NativeSyntheticEvent<TextInputFocusEventData>,
|
|
679
689
|
) => void;
|
|
680
690
|
/**
|
|
681
691
|
* Text displayed when search field is empty
|
|
@@ -7,7 +7,7 @@ export default function useTransitionProgress() {
|
|
|
7
7
|
|
|
8
8
|
if (progress === undefined) {
|
|
9
9
|
throw new Error(
|
|
10
|
-
"Couldn't find values for transition progress. Are you inside a screen in Native Stack?"
|
|
10
|
+
"Couldn't find values for transition progress. Are you inside a screen in Native Stack?",
|
|
11
11
|
);
|
|
12
12
|
}
|
|
13
13
|
|
package/windows/README.md
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
# react-native-screens Windows Implementation
|
|
2
2
|
|
|
3
3
|
## Module Installation
|
|
4
|
+
|
|
4
5
|
You can either use autolinking on react-native-windows 0.63 and later or manually link the module on earlier releases.
|
|
5
6
|
|
|
6
7
|
## Automatic install with autolinking on RNW >= 0.63
|
|
8
|
+
|
|
7
9
|
RNScreens supports autolinking. Just call: `npm i react-native-screens --save`
|
|
8
10
|
|
|
9
11
|
## Manual installation on RNW >= 0.62
|
|
12
|
+
|
|
10
13
|
1. `npm install react-native-screens --save`
|
|
11
14
|
2. Open your solution in Visual Studio 2019 (eg. `windows\yourapp.sln`)
|
|
12
15
|
3. Right-click Solution icon in Solution Explorer > Add > Existing Project...
|
|
@@ -22,4 +25,4 @@ If you want to contribute to this module Windows implementation, first you must
|
|
|
22
25
|
|
|
23
26
|
You must temporarily install the `react-native-windows` package. Versions of `react-native-windows` and `react-native` must match, e.g. if the module uses `react-native@0.62`, install `npm i react-native-windows@^0.62 --dev`.
|
|
24
27
|
|
|
25
|
-
Now, you will be able to open corresponding `RNScreens...sln` file, e.g. `RNScreens62.sln` for `react-native-windows@0.62`.
|
|
28
|
+
Now, you will be able to open corresponding `RNScreens...sln` file, e.g. `RNScreens62.sln` for `react-native-windows@0.62`.
|