react-native-screens 3.27.0 → 3.28.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.
Files changed (34) hide show
  1. package/README.md +22 -0
  2. package/android/build.gradle +9 -0
  3. package/android/src/main/java/com/swmansion/rnscreens/Screen.kt +1 -1
  4. package/android/src/main/java/com/swmansion/rnscreens/ScreenStack.kt +4 -1
  5. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragment.kt +1 -0
  6. package/android/src/main/java/com/swmansion/rnscreens/ScreenViewManager.kt +15 -0
  7. package/android/src/main/res/base/anim/rns_slide_in_from_left_ios.xml +5 -0
  8. package/android/src/main/res/base/anim/rns_slide_in_from_right_ios.xml +6 -0
  9. package/android/src/main/res/base/anim/rns_slide_out_to_left_ios.xml +5 -0
  10. package/android/src/main/res/base/anim/rns_slide_out_to_right_ios.xml +6 -0
  11. package/android/src/paper/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt +4 -0
  12. package/common/cpp/react/renderer/components/rnscreens/RNSScreenComponentDescriptor.h +9 -9
  13. package/ios/RNSConvert.mm +2 -1
  14. package/ios/RNSScreen.mm +10 -0
  15. package/lib/commonjs/fabric/ScreenNativeComponent.js.map +1 -1
  16. package/lib/commonjs/index.native.js +9 -6
  17. package/lib/commonjs/index.native.js.map +1 -1
  18. package/lib/commonjs/native-stack/types.js.map +1 -1
  19. package/lib/commonjs/types.js.map +1 -1
  20. package/lib/module/fabric/ScreenNativeComponent.js.map +1 -1
  21. package/lib/module/index.native.js +7 -6
  22. package/lib/module/index.native.js.map +1 -1
  23. package/lib/module/native-stack/types.js.map +1 -1
  24. package/lib/module/types.js.map +1 -1
  25. package/lib/typescript/fabric/ScreenNativeComponent.d.ts +1 -1
  26. package/lib/typescript/native-stack/types.d.ts +1 -0
  27. package/lib/typescript/types.d.ts +2 -1
  28. package/native-stack/README.md +1 -0
  29. package/package.json +1 -1
  30. package/src/fabric/ScreenNativeComponent.ts +2 -1
  31. package/src/index.native.tsx +7 -6
  32. package/src/native-stack/types.tsx +1 -0
  33. package/src/types.tsx +3 -1
  34. package/windows/RNScreens/Screen.h +2 -1
@@ -8,7 +8,7 @@ export declare type SearchBarCommands = {
8
8
  setText: (text: string) => void;
9
9
  };
10
10
  export declare type StackPresentationTypes = 'push' | 'modal' | 'transparentModal' | 'containedModal' | 'containedTransparentModal' | 'fullScreenModal' | 'formSheet';
11
- export declare type StackAnimationTypes = 'default' | 'fade' | 'fade_from_bottom' | 'flip' | 'none' | 'simple_push' | 'slide_from_bottom' | 'slide_from_right' | 'slide_from_left';
11
+ export declare type StackAnimationTypes = 'default' | 'fade' | 'fade_from_bottom' | 'flip' | 'none' | 'simple_push' | 'slide_from_bottom' | 'slide_from_right' | 'slide_from_left' | 'ios';
12
12
  export declare type BlurEffectTypes = 'extraLight' | 'light' | 'dark' | 'regular' | 'prominent' | 'systemUltraThinMaterial' | 'systemThinMaterial' | 'systemMaterial' | 'systemThickMaterial' | 'systemChromeMaterial' | 'systemUltraThinMaterialLight' | 'systemThinMaterialLight' | 'systemMaterialLight' | 'systemThickMaterialLight' | 'systemChromeMaterialLight' | 'systemUltraThinMaterialDark' | 'systemThinMaterialDark' | 'systemMaterialDark' | 'systemThickMaterialDark' | 'systemChromeMaterialDark';
13
13
  export declare type ScreenReplaceTypes = 'push' | 'pop';
14
14
  export declare type SwipeDirectionTypes = 'vertical' | 'horizontal';
@@ -254,6 +254,7 @@ export interface ScreenProps extends ViewProps {
254
254
  * - `slide_from_bottom` – performs a slide from bottom animation
255
255
  * - "slide_from_right" - slide in the new screen from right to left (Android only, resolves to default transition on iOS)
256
256
  * - "slide_from_left" - slide in the new screen from left to right (Android only, resolves to default transition on iOS)
257
+ * - "ios" - iOS like slide in animation (Android only, resolves to default transition on iOS)
257
258
  * - "none" – the screen appears/dissapears without an animation
258
259
  */
259
260
  stackAnimation?: StackAnimationTypes;
@@ -287,6 +287,7 @@ How the given screen should appear/disappear when pushed or popped at the top of
287
287
  - `slide_from_bottom` – performs a slide from bottom animation
288
288
  - `slide_from_right` - slide in the new screen from right to left (Android only, resolves to default transition on iOS)
289
289
  - `slide_from_left` - slide in the new screen from left to right (Android only, resolves to default transition on iOS)
290
+ - `ios` - iOS like slide in animation (Android only, resolves to default transition on iOS)
290
291
  - `none` - the screen appears/disappears without an animation.
291
292
 
292
293
  Defaults to `default`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-screens",
3
- "version": "3.27.0",
3
+ "version": "3.28.0",
4
4
  "description": "Native navigation primitives for your React Native app.",
5
5
  "scripts": {
6
6
  "check-types": "tsc --noEmit",
@@ -50,7 +50,8 @@ type StackAnimation =
50
50
  | 'slide_from_right'
51
51
  | 'slide_from_left'
52
52
  | 'slide_from_bottom'
53
- | 'fade_from_bottom';
53
+ | 'fade_from_bottom'
54
+ | 'ios';
54
55
 
55
56
  type SwipeDirection = 'vertical' | 'horizontal';
56
57
 
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable @typescript-eslint/no-var-requires */
2
- import React, { PropsWithChildren, ReactNode } from 'react';
2
+ import React, { useEffect, PropsWithChildren, ReactNode } from 'react';
3
3
  import {
4
4
  Animated,
5
5
  Image,
@@ -194,13 +194,14 @@ function DelayedFreeze({ freeze, children }: FreezeWrapperProps) {
194
194
  // flag used for determining whether freeze should be enabled
195
195
  const [freezeState, setFreezeState] = React.useState(false);
196
196
 
197
- if (freeze !== freezeState) {
198
- // setImmediate is executed at the end of the JS execution block.
199
- // Used here for changing the state right after the render.
200
- setImmediate(() => {
197
+ useEffect(() => {
198
+ const id = setImmediate(() => {
201
199
  setFreezeState(freeze);
202
200
  });
203
- }
201
+ return () => {
202
+ clearImmediate(id);
203
+ }
204
+ }, [freeze])
204
205
 
205
206
  return <Freeze freeze={freeze ? freezeState : false}>{children}</Freeze>;
206
207
  }
@@ -391,6 +391,7 @@ export type NativeStackNavigationOptions = {
391
391
  * - "slide_from_bottom" – performs a slide from bottom animation
392
392
  * - "slide_from_right" - slide in the new screen from right to left (Android only, resolves to default transition on iOS)
393
393
  * - "slide_from_left" - slide in the new screen from left to right (Android only, resolves to default transition on iOS)
394
+ * - "ios" - iOS like slide in animation (Android only, resolves to default transition on iOS)
394
395
  * - "none" – the screen appears/dissapears without an animation
395
396
  */
396
397
  stackAnimation?: ScreenProps['stackAnimation'];
package/src/types.tsx CHANGED
@@ -33,7 +33,8 @@ export type StackAnimationTypes =
33
33
  | 'simple_push'
34
34
  | 'slide_from_bottom'
35
35
  | 'slide_from_right'
36
- | 'slide_from_left';
36
+ | 'slide_from_left'
37
+ | 'ios';
37
38
  export type BlurEffectTypes =
38
39
  | 'extraLight'
39
40
  | 'light'
@@ -319,6 +320,7 @@ export interface ScreenProps extends ViewProps {
319
320
  * - `slide_from_bottom` – performs a slide from bottom animation
320
321
  * - "slide_from_right" - slide in the new screen from right to left (Android only, resolves to default transition on iOS)
321
322
  * - "slide_from_left" - slide in the new screen from left to right (Android only, resolves to default transition on iOS)
323
+ * - "ios" - iOS like slide in animation (Android only, resolves to default transition on iOS)
322
324
  * - "none" – the screen appears/dissapears without an animation
323
325
  */
324
326
  stackAnimation?: StackAnimationTypes;
@@ -10,7 +10,8 @@ enum class StackAnimation {
10
10
  FADE,
11
11
  SIMPLE_FROM_BOTTOM,
12
12
  SLIDE_FROM_RIGHT,
13
- SLIDE_FROM_LEFT
13
+ SLIDE_FROM_LEFT,
14
+ IOS
14
15
  };
15
16
 
16
17
  enum class ReplaceAnimation { PUSH, POP };