react-native-screens 3.31.0 → 3.32.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 (119) hide show
  1. package/README.md +6 -0
  2. package/RNScreens.podspec +1 -0
  3. package/android/build.gradle +83 -4
  4. package/android/src/main/cpp/jni-adapter.cpp +86 -93
  5. package/android/src/main/java/com/swmansion/rnscreens/CustomSearchView.kt +2 -0
  6. package/android/src/main/java/com/swmansion/rnscreens/CustomToolbar.kt +2 -0
  7. package/android/src/main/java/com/swmansion/rnscreens/Screen.kt +17 -3
  8. package/android/src/main/java/com/swmansion/rnscreens/ScreenContainerViewManager.kt +14 -1
  9. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragment.kt +3 -2
  10. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.kt +6 -2
  11. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfigViewManager.kt +4 -0
  12. package/android/src/main/java/com/swmansion/rnscreens/ScreenViewManager.kt +5 -0
  13. package/android/src/main/java/com/swmansion/rnscreens/ScreenWindowTraits.kt +19 -2
  14. package/android/src/main/java/com/swmansion/rnscreens/ScreensModule.kt +1 -1
  15. package/android/src/main/java/com/swmansion/rnscreens/SearchBarManager.kt +82 -27
  16. package/android/src/main/java/com/swmansion/rnscreens/events/HeaderHeightChangeEvent.kt +0 -1
  17. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarBlurEvent.kt +1 -1
  18. package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarFocusEvent.kt +1 -1
  19. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenContainerManagerDelegate.java +25 -0
  20. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenContainerManagerInterface.java +16 -0
  21. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerDelegate.java +3 -0
  22. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerInterface.java +1 -0
  23. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerDelegate.java +3 -0
  24. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerInterface.java +1 -0
  25. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSSearchBarManagerDelegate.java +99 -0
  26. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSSearchBarManagerInterface.java +37 -0
  27. package/common/cpp/react/renderer/components/rnscreens/RNSModalScreenComponentDescriptor.h +8 -9
  28. package/common/cpp/react/renderer/components/rnscreens/RNSModalScreenShadowNode.h +8 -7
  29. package/common/cpp/react/renderer/components/rnscreens/RNSScreenComponentDescriptor.h +7 -9
  30. package/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.h +6 -6
  31. package/common/cpp/react/renderer/components/rnscreens/RNSScreenState.cpp +2 -1
  32. package/common/cpp/react/renderer/components/rnscreens/RNSScreenState.h +8 -10
  33. package/cpp/RNScreensTurboModule.cpp +31 -23
  34. package/cpp/RNScreensTurboModule.h +17 -20
  35. package/ios/RNSConvert.h +6 -0
  36. package/ios/RNSConvert.mm +24 -0
  37. package/ios/RNSModule.mm +1 -2
  38. package/ios/RNSScreen.mm +8 -0
  39. package/ios/RNSScreenContainer.mm +1 -1
  40. package/ios/RNSScreenStack.mm +71 -13
  41. package/ios/RNSScreenStackHeaderConfig.h +2 -0
  42. package/ios/RNSScreenStackHeaderConfig.mm +44 -17
  43. package/ios/RNSSearchBar.h +5 -5
  44. package/ios/RNSSearchBar.mm +11 -11
  45. package/ios/utils/RCTSurfaceTouchHandler+RNSUtility.h +15 -0
  46. package/ios/utils/RCTSurfaceTouchHandler+RNSUtility.mm +14 -0
  47. package/ios/utils/RCTTouchHandler+RNSUtility.h +15 -0
  48. package/ios/utils/RCTTouchHandler+RNSUtility.mm +15 -0
  49. package/lib/commonjs/components/Screen.js +119 -127
  50. package/lib/commonjs/components/Screen.js.map +1 -1
  51. package/lib/commonjs/components/SearchBar.js +39 -36
  52. package/lib/commonjs/components/SearchBar.js.map +1 -1
  53. package/lib/commonjs/fabric/ModalScreenNativeComponent.js.map +1 -1
  54. package/lib/commonjs/fabric/ScreenNativeComponent.js.map +1 -1
  55. package/lib/commonjs/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -1
  56. package/lib/commonjs/native-stack/views/HeaderConfig.js +2 -0
  57. package/lib/commonjs/native-stack/views/HeaderConfig.js.map +1 -1
  58. package/lib/commonjs/native-stack/views/NativeStackView.js +2 -0
  59. package/lib/commonjs/native-stack/views/NativeStackView.js.map +1 -1
  60. package/lib/module/components/Screen.js +118 -126
  61. package/lib/module/components/Screen.js.map +1 -1
  62. package/lib/module/components/SearchBar.js +39 -36
  63. package/lib/module/components/SearchBar.js.map +1 -1
  64. package/lib/module/fabric/ModalScreenNativeComponent.js.map +1 -1
  65. package/lib/module/fabric/ScreenNativeComponent.js.map +1 -1
  66. package/lib/module/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -1
  67. package/lib/module/native-stack/views/HeaderConfig.js +2 -0
  68. package/lib/module/native-stack/views/HeaderConfig.js.map +1 -1
  69. package/lib/module/native-stack/views/NativeStackView.js +2 -0
  70. package/lib/module/native-stack/views/NativeStackView.js.map +1 -1
  71. package/lib/typescript/TransitionProgressContext.d.ts +1 -1
  72. package/lib/typescript/TransitionProgressContext.d.ts.map +1 -1
  73. package/lib/typescript/components/Screen.d.ts +3 -14
  74. package/lib/typescript/components/Screen.d.ts.map +1 -1
  75. package/lib/typescript/components/SearchBar.d.ts +14 -21
  76. package/lib/typescript/components/SearchBar.d.ts.map +1 -1
  77. package/lib/typescript/fabric/ModalScreenNativeComponent.d.ts +11 -10
  78. package/lib/typescript/fabric/ModalScreenNativeComponent.d.ts.map +1 -1
  79. package/lib/typescript/fabric/ScreenNativeComponent.d.ts +11 -10
  80. package/lib/typescript/fabric/ScreenNativeComponent.d.ts.map +1 -1
  81. package/lib/typescript/fabric/ScreenStackHeaderConfigNativeComponent.d.ts +5 -3
  82. package/lib/typescript/fabric/ScreenStackHeaderConfigNativeComponent.d.ts.map +1 -1
  83. package/lib/typescript/fabric/ScreenStackHeaderSubviewNativeComponent.d.ts +1 -1
  84. package/lib/typescript/fabric/ScreenStackHeaderSubviewNativeComponent.d.ts.map +1 -1
  85. package/lib/typescript/fabric/ScreenStackNativeComponent.d.ts +1 -1
  86. package/lib/typescript/fabric/ScreenStackNativeComponent.d.ts.map +1 -1
  87. package/lib/typescript/fabric/SearchBarNativeComponent.d.ts +9 -9
  88. package/lib/typescript/fabric/SearchBarNativeComponent.d.ts.map +1 -1
  89. package/lib/typescript/gesture-handler/RNScreensTurboModule.d.ts +1 -1
  90. package/lib/typescript/gesture-handler/RNScreensTurboModule.d.ts.map +1 -1
  91. package/lib/typescript/native-stack/types.d.ts +29 -14
  92. package/lib/typescript/native-stack/types.d.ts.map +1 -1
  93. package/lib/typescript/native-stack/utils/SafeAreaProviderCompat.d.ts +1 -1
  94. package/lib/typescript/native-stack/utils/SafeAreaProviderCompat.d.ts.map +1 -1
  95. package/lib/typescript/native-stack/utils/getDefaultHeaderHeight.d.ts +1 -1
  96. package/lib/typescript/native-stack/utils/getDefaultHeaderHeight.d.ts.map +1 -1
  97. package/lib/typescript/native-stack/utils/useAnimatedHeaderHeight.d.ts +1 -1
  98. package/lib/typescript/native-stack/utils/useAnimatedHeaderHeight.d.ts.map +1 -1
  99. package/lib/typescript/native-stack/views/HeaderConfig.d.ts +2 -2
  100. package/lib/typescript/native-stack/views/HeaderConfig.d.ts.map +1 -1
  101. package/lib/typescript/native-stack/views/NativeStackView.d.ts +1 -1
  102. package/lib/typescript/native-stack/views/NativeStackView.d.ts.map +1 -1
  103. package/lib/typescript/reanimated/ReanimatedTransitionProgressContext.d.ts +1 -1
  104. package/lib/typescript/reanimated/ReanimatedTransitionProgressContext.d.ts.map +1 -1
  105. package/lib/typescript/types.d.ts +29 -13
  106. package/lib/typescript/types.d.ts.map +1 -1
  107. package/lib/typescript/useTransitionProgress.d.ts +3 -3
  108. package/native-stack/README.md +7 -0
  109. package/package.json +13 -7
  110. package/src/components/Screen.tsx +27 -33
  111. package/src/components/SearchBar.tsx +77 -65
  112. package/src/fabric/ModalScreenNativeComponent.ts +1 -0
  113. package/src/fabric/ScreenNativeComponent.ts +1 -0
  114. package/src/fabric/ScreenStackHeaderConfigNativeComponent.ts +3 -0
  115. package/src/fabric/SearchBarNativeComponent.ts +6 -6
  116. package/src/native-stack/types.tsx +15 -0
  117. package/src/native-stack/views/HeaderConfig.tsx +2 -0
  118. package/src/native-stack/views/NativeStackView.tsx +2 -0
  119. package/src/types.tsx +16 -0
@@ -1 +1 @@
1
- {"version":3,"file":"useAnimatedHeaderHeight.d.ts","sourceRoot":"","sources":["../../../../src/native-stack/utils/useAnimatedHeaderHeight.tsx"],"names":[],"mappings":"AAIA,MAAM,CAAC,OAAO,UAAU,uBAAuB,gDAU9C"}
1
+ {"version":3,"file":"useAnimatedHeaderHeight.d.ts","sourceRoot":"","sources":["../../../../src/native-stack/utils/useAnimatedHeaderHeight.tsx"],"names":[],"mappings":"AAIA,MAAM,CAAC,OAAO,UAAU,uBAAuB,0CAU9C"}
@@ -1,9 +1,9 @@
1
1
  /// <reference types="react" />
2
2
  import { Route } from '@react-navigation/native';
3
3
  import { NativeStackNavigationOptions } from '../types';
4
- declare type Props = NativeStackNavigationOptions & {
4
+ type Props = NativeStackNavigationOptions & {
5
5
  route: Route<string>;
6
6
  };
7
- export default function HeaderConfig({ backButtonImage, backButtonInCustomView, direction, disableBackButtonMenu, headerBackTitle, headerBackTitleStyle, headerBackTitleVisible, headerCenter, headerHideBackButton, headerHideShadow, headerLargeStyle, headerLargeTitle, headerLargeTitleHideShadow, headerLargeTitleStyle, headerLeft, headerRight, headerShown, headerStyle, headerTintColor, headerTitle, headerTitleStyle, headerTopInsetEnabled, headerTranslucent, route, searchBar, title, }: Props): JSX.Element;
7
+ export default function HeaderConfig({ backButtonImage, backButtonInCustomView, direction, disableBackButtonMenu, backButtonDisplayMode, headerBackTitle, headerBackTitleStyle, headerBackTitleVisible, headerCenter, headerHideBackButton, headerHideShadow, headerLargeStyle, headerLargeTitle, headerLargeTitleHideShadow, headerLargeTitleStyle, headerLeft, headerRight, headerShown, headerStyle, headerTintColor, headerTitle, headerTitleStyle, headerTopInsetEnabled, headerTranslucent, route, searchBar, title, }: Props): JSX.Element;
8
8
  export {};
9
9
  //# sourceMappingURL=HeaderConfig.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderConfig.d.ts","sourceRoot":"","sources":["../../../../src/native-stack/views/HeaderConfig.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAY,MAAM,0BAA0B,CAAC;AAe3D,OAAO,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAC;AAKxD,aAAK,KAAK,GAAG,4BAA4B,GAAG;IAC1C,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACtB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EACnC,eAAe,EACf,sBAAsB,EACtB,SAAS,EACT,qBAAqB,EACrB,eAAe,EACf,oBAAyB,EACzB,sBAA6B,EAC7B,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,gBAAqB,EACrB,gBAAgB,EAChB,0BAA0B,EAC1B,qBAA0B,EAC1B,UAAU,EACV,WAAW,EACX,WAAW,EACX,WAAgB,EAChB,eAAe,EACf,WAAW,EACX,gBAAqB,EACrB,qBAA4B,EAC5B,iBAAiB,EACjB,KAAK,EACL,SAAS,EACT,KAAK,GACN,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,CAoIrB"}
1
+ {"version":3,"file":"HeaderConfig.d.ts","sourceRoot":"","sources":["../../../../src/native-stack/views/HeaderConfig.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAY,MAAM,0BAA0B,CAAC;AAe3D,OAAO,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAC;AAKxD,KAAK,KAAK,GAAG,4BAA4B,GAAG;IAC1C,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACtB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EACnC,eAAe,EACf,sBAAsB,EACtB,SAAS,EACT,qBAAqB,EACrB,qBAAiC,EACjC,eAAe,EACf,oBAAyB,EACzB,sBAA6B,EAC7B,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,gBAAqB,EACrB,gBAAgB,EAChB,0BAA0B,EAC1B,qBAA0B,EAC1B,UAAU,EACV,WAAW,EACX,WAAW,EACX,WAAgB,EAChB,eAAe,EACf,WAAW,EACX,gBAAqB,EACrB,qBAA4B,EAC5B,iBAAiB,EACjB,KAAK,EACL,SAAS,EACT,KAAK,GACN,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,CAqIrB"}
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { ParamListBase, StackNavigationState } from '@react-navigation/native';
3
3
  import { NativeStackDescriptorMap, NativeStackNavigationHelpers } from '../types';
4
- declare type Props = {
4
+ type Props = {
5
5
  state: StackNavigationState<ParamListBase>;
6
6
  navigation: NativeStackNavigationHelpers;
7
7
  descriptors: NativeStackDescriptorMap;
@@ -1 +1 @@
1
- {"version":3,"file":"NativeStackView.d.ts","sourceRoot":"","sources":["../../../../src/native-stack/views/NativeStackView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAa/B,OAAO,EACL,aAAa,EAEb,oBAAoB,EAKrB,MAAM,0BAA0B,CAAC;AAKlC,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAI7B,MAAM,UAAU,CAAC;AAuXlB,aAAK,KAAK,GAAG;IACX,KAAK,EAAE,oBAAoB,CAAC,aAAa,CAAC,CAAC;IAC3C,UAAU,EAAE,4BAA4B,CAAC;IACzC,WAAW,EAAE,wBAAwB,CAAC;CACvC,CAAC;AA8DF,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,KAAK,EAAE,KAAK,qBAMnD"}
1
+ {"version":3,"file":"NativeStackView.d.ts","sourceRoot":"","sources":["../../../../src/native-stack/views/NativeStackView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAa/B,OAAO,EACL,aAAa,EAEb,oBAAoB,EAKrB,MAAM,0BAA0B,CAAC;AAKlC,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAI7B,MAAM,UAAU,CAAC;AAyXlB,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,oBAAoB,CAAC,aAAa,CAAC,CAAC;IAC3C,UAAU,EAAE,4BAA4B,CAAC;IACzC,WAAW,EAAE,wBAAwB,CAAC;CACvC,CAAC;AA8DF,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,KAAK,EAAE,KAAK,qBAMnD"}
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import Animated from 'react-native-reanimated';
3
- declare type ReanimatedTransitionProgressContextBody = {
3
+ type ReanimatedTransitionProgressContextBody = {
4
4
  progress: Animated.SharedValue<number>;
5
5
  closing: Animated.SharedValue<number>;
6
6
  goingForward: Animated.SharedValue<number>;
@@ -1 +1 @@
1
- {"version":3,"file":"ReanimatedTransitionProgressContext.d.ts","sourceRoot":"","sources":["../../../src/reanimated/ReanimatedTransitionProgressContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAE/C,aAAK,uCAAuC,GAAG;IAC7C,QAAQ,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACvC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC,YAAY,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;CAC5C,CAAC;;AAEF,wBAEa"}
1
+ {"version":3,"file":"ReanimatedTransitionProgressContext.d.ts","sourceRoot":"","sources":["../../../src/reanimated/ReanimatedTransitionProgressContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAE/C,KAAK,uCAAuC,GAAG;IAC7C,QAAQ,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACvC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC,YAAY,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;CAC5C,CAAC;;AAEF,wBAEa"}
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { Animated, NativeSyntheticEvent, ViewProps, View, TargetedEvent, TextInputFocusEventData, ColorValue } from 'react-native';
3
3
  import { NativeStackNavigatorProps } from './native-stack/types';
4
- export declare type SearchBarCommands = {
4
+ export type SearchBarCommands = {
5
5
  focus: () => void;
6
6
  blur: () => void;
7
7
  clearText: () => void;
@@ -9,29 +9,30 @@ export declare type SearchBarCommands = {
9
9
  setText: (text: string) => void;
10
10
  cancelSearch: () => void;
11
11
  };
12
- export declare type StackPresentationTypes = 'push' | 'modal' | 'transparentModal' | 'containedModal' | 'containedTransparentModal' | 'fullScreenModal' | 'formSheet';
13
- export declare type StackAnimationTypes = 'default' | 'fade' | 'fade_from_bottom' | 'flip' | 'none' | 'simple_push' | 'slide_from_bottom' | 'slide_from_right' | 'slide_from_left' | 'ios';
14
- export declare type BlurEffectTypes = 'extraLight' | 'light' | 'dark' | 'regular' | 'prominent' | 'systemUltraThinMaterial' | 'systemThinMaterial' | 'systemMaterial' | 'systemThickMaterial' | 'systemChromeMaterial' | 'systemUltraThinMaterialLight' | 'systemThinMaterialLight' | 'systemMaterialLight' | 'systemThickMaterialLight' | 'systemChromeMaterialLight' | 'systemUltraThinMaterialDark' | 'systemThinMaterialDark' | 'systemMaterialDark' | 'systemThickMaterialDark' | 'systemChromeMaterialDark';
15
- export declare type ScreenReplaceTypes = 'push' | 'pop';
16
- export declare type SwipeDirectionTypes = 'vertical' | 'horizontal';
17
- export declare type ScreenOrientationTypes = 'default' | 'all' | 'portrait' | 'portrait_up' | 'portrait_down' | 'landscape' | 'landscape_left' | 'landscape_right';
18
- export declare type HeaderSubviewTypes = 'back' | 'right' | 'left' | 'center' | 'searchBar';
19
- export declare type HeaderHeightChangeEventType = {
12
+ export type BackButtonDisplayMode = 'default' | 'generic' | 'minimal';
13
+ export type StackPresentationTypes = 'push' | 'modal' | 'transparentModal' | 'containedModal' | 'containedTransparentModal' | 'fullScreenModal' | 'formSheet';
14
+ export type StackAnimationTypes = 'default' | 'fade' | 'fade_from_bottom' | 'flip' | 'none' | 'simple_push' | 'slide_from_bottom' | 'slide_from_right' | 'slide_from_left' | 'ios';
15
+ export type BlurEffectTypes = 'extraLight' | 'light' | 'dark' | 'regular' | 'prominent' | 'systemUltraThinMaterial' | 'systemThinMaterial' | 'systemMaterial' | 'systemThickMaterial' | 'systemChromeMaterial' | 'systemUltraThinMaterialLight' | 'systemThinMaterialLight' | 'systemMaterialLight' | 'systemThickMaterialLight' | 'systemChromeMaterialLight' | 'systemUltraThinMaterialDark' | 'systemThinMaterialDark' | 'systemMaterialDark' | 'systemThickMaterialDark' | 'systemChromeMaterialDark';
16
+ export type ScreenReplaceTypes = 'push' | 'pop';
17
+ export type SwipeDirectionTypes = 'vertical' | 'horizontal';
18
+ export type ScreenOrientationTypes = 'default' | 'all' | 'portrait' | 'portrait_up' | 'portrait_down' | 'landscape' | 'landscape_left' | 'landscape_right';
19
+ export type HeaderSubviewTypes = 'back' | 'right' | 'left' | 'center' | 'searchBar';
20
+ export type HeaderHeightChangeEventType = {
20
21
  headerHeight: number;
21
22
  };
22
- export declare type TransitionProgressEventType = {
23
+ export type TransitionProgressEventType = {
23
24
  progress: number;
24
25
  closing: number;
25
26
  goingForward: number;
26
27
  };
27
- export declare type GestureResponseDistanceType = {
28
+ export type GestureResponseDistanceType = {
28
29
  start?: number;
29
30
  end?: number;
30
31
  top?: number;
31
32
  bottom?: number;
32
33
  };
33
- export declare type SheetDetentTypes = 'medium' | 'large' | 'all';
34
- export declare type SearchBarPlacement = 'automatic' | 'inline' | 'stacked';
34
+ export type SheetDetentTypes = 'medium' | 'large' | 'all';
35
+ export type SearchBarPlacement = 'automatic' | 'inline' | 'stacked';
35
36
  export interface ScreenProps extends ViewProps {
36
37
  active?: 0 | 1 | Animated.AnimatedInterpolation<number>;
37
38
  activityState?: 0 | 1 | 2 | Animated.AnimatedInterpolation<number>;
@@ -105,6 +106,12 @@ export interface ScreenProps extends ViewProps {
105
106
  * @platform android
106
107
  */
107
108
  navigationBarColor?: ColorValue;
109
+ /**
110
+ * Boolean indicating whether the content should be visible behind the navigation bar. Defaults to `false`.
111
+ *
112
+ * @platform android
113
+ */
114
+ navigationBarTranslucent?: boolean;
108
115
  /**
109
116
  * Sets the visibility of the navigation bar. Defaults to `false`.
110
117
  *
@@ -388,6 +395,15 @@ export interface ScreenStackHeaderConfigProps extends ViewProps {
388
395
  * @platform ios
389
396
  */
390
397
  disableBackButtonMenu?: boolean;
398
+ /**
399
+ * How the back button behaves by default (when not customized). Available on iOS>=14, and is used only when none of: `backTitleFontFamily`, `backTitleFontSize`, `disableBackButtonMenu` or `backTitle` is set.
400
+ * The following values are currently supported (they correspond to https://developer.apple.com/documentation/uikit/uinavigationitembackbuttondisplaymode?language=objc):
401
+ * - "default" – show given back button previous controller title, system generic or just icon based on available space
402
+ * - "generic" – show given system generic or just icon based on available space
403
+ * - "minimal" – show just an icon
404
+ * @platform ios
405
+ */
406
+ backButtonDisplayMode?: BackButtonDisplayMode;
391
407
  /**
392
408
  * When set to true the header will be hidden while the parent Screen is on the top of the stack. The default value is false.
393
409
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  export default function useTransitionProgress(): {
2
- progress: import("react-native/types").Animated.Value;
3
- closing: import("react-native/types").Animated.Value;
4
- goingForward: import("react-native/types").Animated.Value;
2
+ progress: import("react-native").Animated.Value;
3
+ closing: import("react-native").Animated.Value;
4
+ goingForward: import("react-native").Animated.Value;
5
5
  };
6
6
  //# sourceMappingURL=useTransitionProgress.d.ts.map
@@ -79,6 +79,13 @@ String that applies `rtl` or `ltr` form to the stack. On Android, you have to ad
79
79
 
80
80
  Boolean indicating whether to show the menu on longPress of iOS >= 14 back button.
81
81
 
82
+ #### `backButtonDisplayMode` (iOS only)
83
+
84
+ Enum value indicating display mode of **default** back button. It works on iOS >= 14, and is used only when none of: `backTitleFontFamily`, `backTitleFontSize`, `disableBackButtonMenu` or `backTitle` is set. Otherwise, when the button is customized, under the hood we use iOS native `backButtonItem` which overrides `backButtonDisplayMode`. Read more [#2123](https://github.com/software-mansion/react-native-screens/pull/2123). Possible options:
85
+ - `default` – show given back button previous controller title, system generic or just icon based on available space
86
+ - `generic` – show given system generic or just icon based on available space
87
+ - `minimal` – show just an icon
88
+
82
89
  #### `fullScreenSwipeEnabled` (iOS only)
83
90
 
84
91
  Boolean indicating whether the swipe gesture should work on whole screen. Swiping with this option results in the same transition animation as `simple_push` by default. It can be changed to other custom animations with `customAnimationOnSwipe` prop, but default iOS swipe animation is not achievable due to usage of custom recognizer. Defaults to `false`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-screens",
3
- "version": "3.31.0",
3
+ "version": "3.32.0",
4
4
  "description": "Native navigation primitives for your React Native app.",
5
5
  "scripts": {
6
6
  "submodules": "git submodule update --init --recursive && (cd react-navigation && yarn)",
@@ -10,12 +10,15 @@
10
10
  "format-js": "prettier --write --list-different './{src,Example}/**/*.{js,ts,tsx}'",
11
11
  "format-android": "node ./scripts/format-android.js",
12
12
  "format-ios": "find ios/ -iname \"*.h\" -o -iname \"*.m\" -o -iname \"*.cpp\" -o -iname \"*.mm\" | xargs clang-format -i",
13
- "format": "yarn format-js && yarn format-android && yarn format-ios",
13
+ "format-common": "find common/ -iname \"*.h\" -o -iname \"*.cpp\" | xargs clang-format -i",
14
+ "format-cpp": "find cpp/ -iname \"*.h\" -o -iname \"*.cpp\" | xargs clang-format -i",
15
+ "format-android-cpp": "find android/src/main/cpp -iname \"*.h\" -o -iname \"*.cpp\" | xargs clang-format -i",
16
+ "format": "yarn format-js && yarn format-android && yarn format-ios && yarn format-common && yarn format-cpp && yarn format-android-cpp",
14
17
  "lint-js": "eslint --ext '.js,.ts,.tsx' --fix src",
15
18
  "lint-android": "./android/gradlew -p android spotlessCheck -q",
16
19
  "lint": "yarn lint-js && yarn lint-android",
17
- "release": "npm login && release-it",
18
- "postinstall": "bob build && husky install"
20
+ "release": "yarn prepare && npm login && release-it",
21
+ "prepare": "bob build && husky install"
19
22
  },
20
23
  "main": "lib/commonjs/index",
21
24
  "module": "lib/module/index",
@@ -78,7 +81,7 @@
78
81
  "@react-navigation/native": "^5.8.0",
79
82
  "@react-navigation/stack": "^5.10.0",
80
83
  "@types/jest": "^29.3.1",
81
- "@types/react": "^18.2.21",
84
+ "@types/react": "^18.2.72",
82
85
  "@types/react-test-renderer": "^18.0.0",
83
86
  "@typescript-eslint/eslint-plugin": "^6.5.0",
84
87
  "@typescript-eslint/parser": "^6.5.0",
@@ -109,17 +112,20 @@
109
112
  "react-native-windows": "^0.64.8",
110
113
  "react-test-renderer": "^18.2.0",
111
114
  "release-it": "^15.6.0",
112
- "typescript": "4.8.4"
115
+ "typescript": "5.4.3"
113
116
  },
114
117
  "resolutions": {
115
118
  "@react-native-community/cli-platform-android": "^11.3.6",
116
119
  "@react-native-community/cli": "^11.3.6",
117
120
  "@react-native-community/cli-platform-ios": "^11.3.6",
118
- "@types/react": "^18.2.21"
121
+ "@types/react": "^18.2.72"
119
122
  },
120
123
  "lint-staged": {
121
124
  "{src,Example}/**/*.{js,ts,tsx}": "yarn format-js",
122
125
  "src/**/*.{js,ts,tsx}": "yarn lint-js",
126
+ "common/**/*.{h,cpp}": "yarn format-common",
127
+ "cpp/**/*.{h,cpp}": "yarn format-cpp",
128
+ "android/src/main/cpp/.{cpp, h}": "yarn format-android-cpp",
123
129
  "android/**/*.kt": "yarn format-android",
124
130
  "ios/**/*.{h,m,mm,cpp}": "yarn format-ios"
125
131
  },
@@ -1,4 +1,3 @@
1
- /* eslint-disable @typescript-eslint/no-var-requires */
2
1
  import React from 'react';
3
2
  import { Animated, View, Platform } from 'react-native';
4
3
 
@@ -17,7 +16,7 @@ import ScreenNativeComponent from '../fabric/ScreenNativeComponent';
17
16
  import ModalScreenNativeComponent from '../fabric/ModalScreenNativeComponent';
18
17
 
19
18
  export const NativeScreen: React.ComponentType<ScreenProps> =
20
- ScreenNativeComponent as any;
19
+ ScreenNativeComponent as React.ComponentType<ScreenProps>;
21
20
  const AnimatedNativeScreen = Animated.createAnimatedComponent(NativeScreen);
22
21
  const AnimatedNativeModalScreen = Animated.createAnimatedComponent(
23
22
  ModalScreenNativeComponent as React.ComponentType<ScreenProps>
@@ -42,27 +41,25 @@ interface ViewConfig extends View {
42
41
  };
43
42
  }
44
43
 
45
- export class InnerScreen extends React.Component<ScreenProps> {
46
- private ref: React.ElementRef<typeof View> | null = null;
47
- private closing = new Animated.Value(0);
48
- private progress = new Animated.Value(0);
49
- private goingForward = new Animated.Value(0);
44
+ export const InnerScreen = React.forwardRef<View, ScreenProps>(
45
+ function InnerScreen(props, ref) {
46
+ const innerRef = React.useRef<ViewConfig | null>(null);
47
+ React.useImperativeHandle(ref, () => innerRef.current!, []);
50
48
 
51
- setNativeProps(props: ScreenProps): void {
52
- this.ref?.setNativeProps(props);
53
- }
49
+ const setRef = (ref: ViewConfig) => {
50
+ innerRef.current = ref;
51
+ props.onComponentRef?.(ref);
52
+ };
54
53
 
55
- setRef = (ref: React.ElementRef<typeof View> | null): void => {
56
- this.ref = ref;
57
- this.props.onComponentRef?.(ref);
58
- };
54
+ const closing = React.useRef(new Animated.Value(0)).current;
55
+ const progress = React.useRef(new Animated.Value(0)).current;
56
+ const goingForward = React.useRef(new Animated.Value(0)).current;
59
57
 
60
- render() {
61
58
  const {
62
59
  enabled = screensEnabled(),
63
60
  freezeOnBlur = freezeEnabled(),
64
61
  ...rest
65
- } = this.props;
62
+ } = props;
66
63
 
67
64
  // To maintain default behavior of formSheet stack presentation style and to have reasonable
68
65
  // defaults for new medium-detent iOS API we need to set defaults here
@@ -112,13 +109,13 @@ export class InnerScreen extends React.Component<ScreenProps> {
112
109
  ...ref.viewConfig.validAttributes.style,
113
110
  display: false,
114
111
  };
115
- this.setRef(ref);
112
+ setRef(ref);
116
113
  } else if (ref?._viewConfig?.validAttributes?.style) {
117
114
  ref._viewConfig.validAttributes.style = {
118
115
  ...ref._viewConfig.validAttributes.style,
119
116
  display: false,
120
117
  };
121
- this.setRef(ref);
118
+ setRef(ref);
122
119
  }
123
120
  };
124
121
 
@@ -148,9 +145,9 @@ export class InnerScreen extends React.Component<ScreenProps> {
148
145
  [
149
146
  {
150
147
  nativeEvent: {
151
- progress: this.progress,
152
- closing: this.closing,
153
- goingForward: this.goingForward,
148
+ progress,
149
+ closing,
150
+ goingForward,
154
151
  },
155
152
  },
156
153
  ],
@@ -168,9 +165,9 @@ export class InnerScreen extends React.Component<ScreenProps> {
168
165
  ) : (
169
166
  <TransitionProgressContext.Provider
170
167
  value={{
171
- progress: this.progress,
172
- closing: this.closing,
173
- goingForward: this.goingForward,
168
+ progress,
169
+ closing,
170
+ goingForward,
174
171
  }}>
175
172
  {children}
176
173
  </TransitionProgressContext.Provider>
@@ -195,25 +192,22 @@ export class InnerScreen extends React.Component<ScreenProps> {
195
192
  return (
196
193
  <Animated.View
197
194
  style={[style, { display: activityState !== 0 ? 'flex' : 'none' }]}
198
- ref={this.setRef}
195
+ ref={setRef}
199
196
  {...props}
200
197
  />
201
198
  );
202
199
  }
203
200
  }
204
- }
201
+ );
205
202
 
206
203
  // context to be used when the user wants to use enhanced implementation
207
204
  // e.g. to use `useReanimatedTransitionProgress` (see `reanimated` folder in repo)
208
205
  export const ScreenContext = React.createContext(InnerScreen);
209
206
 
210
- class Screen extends React.Component<ScreenProps> {
211
- static contextType = ScreenContext;
207
+ const Screen: React.FC<ScreenProps> = props => {
208
+ const ScreenWrapper = React.useContext(ScreenContext) || InnerScreen;
212
209
 
213
- render() {
214
- const ScreenWrapper = (this.context || InnerScreen) as React.ElementType;
215
- return <ScreenWrapper {...this.props} />;
216
- }
217
- }
210
+ return <ScreenWrapper {...props} />;
211
+ };
218
212
 
219
213
  export default Screen;
@@ -1,4 +1,4 @@
1
- import React, { ReactNode } from 'react';
1
+ import React from 'react';
2
2
  import {
3
3
  isSearchBarAvailableForCurrentPlatform,
4
4
  SearchBarCommands,
@@ -9,83 +9,95 @@ import { View } from 'react-native';
9
9
  // Native components
10
10
  import SearchBarNativeComponent, {
11
11
  Commands as SearchBarNativeCommands,
12
+ NativeProps as SearchBarNativeProps,
13
+ SearchBarEvent,
14
+ SearchButtonPressedEvent,
15
+ ChangeTextEvent,
12
16
  } from '../fabric/SearchBarNativeComponent';
17
+ import { DirectEventHandler } from 'react-native/Libraries/Types/CodegenTypes';
13
18
 
14
- export const NativeSearchBar: React.ComponentType<SearchBarProps> &
15
- typeof NativeSearchBarCommands = SearchBarNativeComponent as any;
19
+ export const NativeSearchBar: React.ComponentType<
20
+ SearchBarNativeProps & { ref?: React.RefObject<SearchBarCommands> }
21
+ > &
22
+ typeof NativeSearchBarCommands =
23
+ SearchBarNativeComponent as unknown as React.ComponentType<SearchBarNativeProps> &
24
+ SearchBarCommandsType;
16
25
  export const NativeSearchBarCommands: SearchBarCommandsType =
17
- SearchBarNativeCommands as any;
26
+ SearchBarNativeCommands as SearchBarCommandsType;
27
+
28
+ type NativeSearchBarRef = React.ElementRef<typeof NativeSearchBar>;
18
29
 
19
30
  type SearchBarCommandsType = {
20
- blur: (viewRef: React.ElementRef<typeof NativeSearchBar>) => void;
21
- focus: (viewRef: React.ElementRef<typeof NativeSearchBar>) => void;
22
- clearText: (viewRef: React.ElementRef<typeof NativeSearchBar>) => void;
23
- toggleCancelButton: (
24
- viewRef: React.ElementRef<typeof NativeSearchBar>,
25
- flag: boolean
26
- ) => void;
27
- setText: (
28
- viewRef: React.ElementRef<typeof NativeSearchBar>,
29
- text: string
30
- ) => void;
31
- cancelSearch: (viewRef: React.ElementRef<typeof NativeSearchBar>) => void;
31
+ blur: (viewRef: NativeSearchBarRef) => void;
32
+ focus: (viewRef: NativeSearchBarRef) => void;
33
+ clearText: (viewRef: NativeSearchBarRef) => void;
34
+ toggleCancelButton: (viewRef: NativeSearchBarRef, flag: boolean) => void;
35
+ setText: (viewRef: NativeSearchBarRef, text: string) => void;
36
+ cancelSearch: (viewRef: NativeSearchBarRef) => void;
32
37
  };
33
38
 
34
- class SearchBar extends React.Component<SearchBarProps> {
35
- nativeSearchBarRef: React.RefObject<SearchBarCommands>;
36
-
37
- constructor(props: SearchBarProps) {
38
- super(props);
39
- this.nativeSearchBarRef = React.createRef();
40
- }
39
+ function SearchBar(props: SearchBarProps, ref: React.Ref<SearchBarCommands>) {
40
+ const searchBarRef = React.useRef<SearchBarCommands | null>(null);
41
41
 
42
- _callMethodWithRef(method: (ref: SearchBarCommands) => void) {
43
- const ref = this.nativeSearchBarRef.current;
44
- if (ref) {
45
- method(ref);
46
- } else {
47
- console.warn(
48
- 'Reference to native search bar component has not been updated yet'
42
+ React.useImperativeHandle(ref, () => ({
43
+ blur: () => {
44
+ _callMethodWithRef(ref => NativeSearchBarCommands.blur(ref));
45
+ },
46
+ focus: () => {
47
+ _callMethodWithRef(ref => NativeSearchBarCommands.focus(ref));
48
+ },
49
+ toggleCancelButton: (flag: boolean) => {
50
+ _callMethodWithRef(ref =>
51
+ NativeSearchBarCommands.toggleCancelButton(ref, flag)
49
52
  );
50
- }
51
- }
53
+ },
54
+ clearText: () => {
55
+ _callMethodWithRef(ref => NativeSearchBarCommands.clearText(ref));
56
+ },
57
+ setText: (text: string) => {
58
+ _callMethodWithRef(ref => NativeSearchBarCommands.setText(ref, text));
59
+ },
60
+ cancelSearch: () => {
61
+ _callMethodWithRef(ref => NativeSearchBarCommands.cancelSearch(ref));
62
+ },
63
+ }));
52
64
 
53
- blur() {
54
- this._callMethodWithRef(ref => NativeSearchBarCommands.blur(ref));
55
- }
56
-
57
- focus() {
58
- this._callMethodWithRef(ref => NativeSearchBarCommands.focus(ref));
59
- }
65
+ const _callMethodWithRef = React.useCallback(
66
+ (method: (ref: SearchBarCommands) => void) => {
67
+ const ref = searchBarRef.current;
68
+ if (ref) {
69
+ method(ref);
70
+ } else {
71
+ console.warn(
72
+ 'Reference to native search bar component has not been updated yet'
73
+ );
74
+ }
75
+ },
76
+ [searchBarRef]
77
+ );
60
78
 
61
- toggleCancelButton(flag: boolean) {
62
- this._callMethodWithRef(ref =>
63
- NativeSearchBarCommands.toggleCancelButton(ref, flag)
79
+ if (!isSearchBarAvailableForCurrentPlatform) {
80
+ console.warn(
81
+ 'Importing SearchBar is only valid on iOS and Android devices.'
64
82
  );
83
+ return View as unknown as React.ReactNode;
65
84
  }
66
85
 
67
- clearText() {
68
- this._callMethodWithRef(ref => NativeSearchBarCommands.clearText(ref));
69
- }
70
-
71
- setText(text: string) {
72
- this._callMethodWithRef(ref => NativeSearchBarCommands.setText(ref, text));
73
- }
74
-
75
- cancelSearch() {
76
- this._callMethodWithRef(ref => NativeSearchBarCommands.cancelSearch(ref));
77
- }
78
-
79
- render() {
80
- if (!isSearchBarAvailableForCurrentPlatform) {
81
- console.warn(
82
- 'Importing SearchBar is only valid on iOS and Android devices.'
83
- );
84
- return View as any as ReactNode;
85
- }
86
-
87
- return <NativeSearchBar {...this.props} ref={this.nativeSearchBarRef} />;
88
- }
86
+ return (
87
+ <NativeSearchBar
88
+ ref={searchBarRef}
89
+ {...props}
90
+ onSearchFocus={props.onFocus as DirectEventHandler<SearchBarEvent>}
91
+ onSearchBlur={props.onBlur as DirectEventHandler<SearchBarEvent>}
92
+ onSearchButtonPress={
93
+ props.onSearchButtonPress as DirectEventHandler<SearchButtonPressedEvent>
94
+ }
95
+ onCancelButtonPress={
96
+ props.onCancelButtonPress as DirectEventHandler<SearchBarEvent>
97
+ }
98
+ onChangeText={props.onChangeText as DirectEventHandler<ChangeTextEvent>}
99
+ />
100
+ );
89
101
  }
90
102
 
91
- export default SearchBar;
103
+ export default React.forwardRef<SearchBarCommands, SearchBarProps>(SearchBar);
@@ -95,6 +95,7 @@ export interface NativeProps extends ViewProps {
95
95
  hideKeyboardOnSwipe?: boolean;
96
96
  activityState?: WithDefault<Float, -1.0>;
97
97
  navigationBarColor?: ColorValue;
98
+ navigationBarTranslucent?: boolean;
98
99
  navigationBarHidden?: boolean;
99
100
  nativeBackButtonDismissalEnabled?: boolean;
100
101
  }
@@ -95,6 +95,7 @@ export interface NativeProps extends ViewProps {
95
95
  hideKeyboardOnSwipe?: boolean;
96
96
  activityState?: WithDefault<Float, -1.0>;
97
97
  navigationBarColor?: ColorValue;
98
+ navigationBarTranslucent?: boolean;
98
99
  navigationBarHidden?: boolean;
99
100
  nativeBackButtonDismissalEnabled?: boolean;
100
101
  }
@@ -13,6 +13,8 @@ type OnAttachedEvent = Readonly<{}>;
13
13
  // eslint-disable-next-line @typescript-eslint/ban-types
14
14
  type OnDetachedEvent = Readonly<{}>;
15
15
 
16
+ type BackButtonDisplayMode = 'minimal' | 'default' | 'generic';
17
+
16
18
  export interface NativeProps extends ViewProps {
17
19
  onAttached?: DirectEventHandler<OnAttachedEvent>;
18
20
  onDetached?: DirectEventHandler<OnDetachedEvent>;
@@ -39,6 +41,7 @@ export interface NativeProps extends ViewProps {
39
41
  titleFontWeight?: string;
40
42
  titleColor?: ColorValue;
41
43
  disableBackButtonMenu?: boolean;
44
+ backButtonDisplayMode?: WithDefault<BackButtonDisplayMode, 'default'>;
42
45
  hideBackButton?: boolean;
43
46
  backButtonInCustomView?: boolean;
44
47
  // TODO: implement this props on iOS
@@ -7,13 +7,13 @@ import type {
7
7
  } from 'react-native/Libraries/Types/CodegenTypes';
8
8
  import codegenNativeCommands from 'react-native/Libraries/Utilities/codegenNativeCommands';
9
9
 
10
- type SearchBarEvent = Readonly<{}>;
10
+ export type SearchBarEvent = Readonly<{}>;
11
11
 
12
- type SearchButtonPressedEvent = Readonly<{
12
+ export type SearchButtonPressedEvent = Readonly<{
13
13
  text?: string;
14
14
  }>;
15
15
 
16
- type ChangeTextEvent = Readonly<{
16
+ export type ChangeTextEvent = Readonly<{
17
17
  text?: string;
18
18
  }>;
19
19
 
@@ -21,9 +21,9 @@ type SearchBarPlacement = 'automatic' | 'inline' | 'stacked';
21
21
 
22
22
  type AutoCapitalizeType = 'none' | 'words' | 'sentences' | 'characters';
23
23
 
24
- interface NativeProps extends ViewProps {
25
- onFocus?: DirectEventHandler<SearchBarEvent> | null;
26
- onBlur?: DirectEventHandler<SearchBarEvent> | null;
24
+ export interface NativeProps extends ViewProps {
25
+ onSearchFocus?: DirectEventHandler<SearchBarEvent> | null;
26
+ onSearchBlur?: DirectEventHandler<SearchBarEvent> | null;
27
27
  onSearchButtonPress?: DirectEventHandler<SearchButtonPressedEvent> | null;
28
28
  onCancelButtonPress?: DirectEventHandler<SearchBarEvent> | null;
29
29
  onChangeText?: DirectEventHandler<ChangeTextEvent> | null;