@react-navigation/bottom-tabs 6.0.7 → 6.2.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 (41) hide show
  1. package/lib/commonjs/index.js +6 -6
  2. package/lib/commonjs/index.js.map +1 -1
  3. package/lib/commonjs/navigators/createBottomTabNavigator.js +17 -13
  4. package/lib/commonjs/navigators/createBottomTabNavigator.js.map +1 -1
  5. package/lib/commonjs/views/Badge.js +23 -20
  6. package/lib/commonjs/views/Badge.js.map +1 -1
  7. package/lib/commonjs/views/BottomTabBar.js +39 -31
  8. package/lib/commonjs/views/BottomTabBar.js.map +1 -1
  9. package/lib/commonjs/views/BottomTabItem.js +63 -56
  10. package/lib/commonjs/views/BottomTabItem.js.map +1 -1
  11. package/lib/commonjs/views/BottomTabView.js +11 -7
  12. package/lib/commonjs/views/BottomTabView.js.map +1 -1
  13. package/lib/commonjs/views/ScreenFallback.js +13 -9
  14. package/lib/commonjs/views/ScreenFallback.js.map +1 -1
  15. package/lib/commonjs/views/TabBarIcon.js +13 -12
  16. package/lib/commonjs/views/TabBarIcon.js.map +1 -1
  17. package/lib/module/index.js.map +1 -1
  18. package/lib/module/navigators/createBottomTabNavigator.js +17 -13
  19. package/lib/module/navigators/createBottomTabNavigator.js.map +1 -1
  20. package/lib/module/views/Badge.js +23 -20
  21. package/lib/module/views/Badge.js.map +1 -1
  22. package/lib/module/views/BottomTabBar.js +39 -31
  23. package/lib/module/views/BottomTabBar.js.map +1 -1
  24. package/lib/module/views/BottomTabItem.js +63 -56
  25. package/lib/module/views/BottomTabItem.js.map +1 -1
  26. package/lib/module/views/BottomTabView.js +11 -7
  27. package/lib/module/views/BottomTabView.js.map +1 -1
  28. package/lib/module/views/ScreenFallback.js +13 -9
  29. package/lib/module/views/ScreenFallback.js.map +1 -1
  30. package/lib/module/views/TabBarIcon.js +13 -12
  31. package/lib/module/views/TabBarIcon.js.map +1 -1
  32. package/lib/typescript/src/index.d.ts +1 -1
  33. package/lib/typescript/src/navigators/createBottomTabNavigator.d.ts +1 -1
  34. package/lib/typescript/src/views/Badge.d.ts +1 -1
  35. package/lib/typescript/src/views/ScreenFallback.d.ts +1 -0
  36. package/package.json +8 -8
  37. package/src/index.tsx +1 -0
  38. package/src/navigators/createBottomTabNavigator.tsx +9 -5
  39. package/src/views/Badge.tsx +12 -12
  40. package/src/views/BottomTabView.tsx +1 -0
  41. package/src/views/ScreenFallback.tsx +1 -0
package/src/index.tsx CHANGED
@@ -22,6 +22,7 @@ export type {
22
22
  BottomTabBarButtonProps,
23
23
  BottomTabBarProps,
24
24
  BottomTabHeaderProps,
25
+ BottomTabNavigationEventMap,
25
26
  BottomTabNavigationOptions,
26
27
  BottomTabNavigationProp,
27
28
  BottomTabScreenProps,
@@ -34,12 +34,16 @@ function BottomTabNavigator({
34
34
  screenListeners,
35
35
  screenOptions,
36
36
  sceneContainerStyle,
37
- // @ts-expect-error: lazy is deprecated
38
- lazy,
39
- // @ts-expect-error: tabBarOptions is deprecated
40
- tabBarOptions,
41
- ...rest
37
+ ...restWithDeprecated
42
38
  }: Props) {
39
+ const {
40
+ // @ts-expect-error: lazy is deprecated
41
+ lazy,
42
+ // @ts-expect-error: tabBarOptions is deprecated
43
+ tabBarOptions,
44
+ ...rest
45
+ } = restWithDeprecated;
46
+
43
47
  let defaultScreenOptions: BottomTabNavigationOptions = {};
44
48
 
45
49
  if (tabBarOptions) {
@@ -23,14 +23,14 @@ type Props = {
23
23
  };
24
24
 
25
25
  export default function Badge({
26
- visible = true,
27
- size = 18,
28
26
  children,
29
27
  style,
28
+ visible = true,
29
+ size = 18,
30
30
  ...rest
31
31
  }: Props) {
32
32
  const [opacity] = React.useState(() => new Animated.Value(visible ? 1 : 0));
33
- const [rendered, setRendered] = React.useState(visible ? true : false);
33
+ const [rendered, setRendered] = React.useState(visible);
34
34
 
35
35
  const theme = useTheme();
36
36
 
@@ -52,12 +52,12 @@ export default function Badge({
52
52
  return () => opacity.stopAnimation();
53
53
  }, [opacity, rendered, visible]);
54
54
 
55
- if (visible && !rendered) {
56
- setRendered(true);
57
- }
58
-
59
- if (!visible && !rendered) {
60
- return null;
55
+ if (!rendered) {
56
+ if (visible) {
57
+ setRendered(true);
58
+ } else {
59
+ return null;
60
+ }
61
61
  }
62
62
 
63
63
  // @ts-expect-error: backgroundColor definitely exists
@@ -73,7 +73,6 @@ export default function Badge({
73
73
  numberOfLines={1}
74
74
  style={[
75
75
  {
76
- opacity,
77
76
  transform: [
78
77
  {
79
78
  scale: opacity.interpolate({
@@ -82,12 +81,13 @@ export default function Badge({
82
81
  }),
83
82
  },
84
83
  ],
85
- backgroundColor,
86
84
  color: textColor,
87
- fontSize,
88
85
  lineHeight: size - 1,
89
86
  height: size,
90
87
  minWidth: size,
88
+ opacity,
89
+ backgroundColor,
90
+ fontSize,
91
91
  borderRadius,
92
92
  },
93
93
  styles.container,
@@ -92,6 +92,7 @@ export default function BottomTabView(props: Props) {
92
92
  <SafeAreaProviderCompat>
93
93
  <MaybeScreenContainer
94
94
  enabled={detachInactiveScreens}
95
+ hasTwoStates
95
96
  style={styles.container}
96
97
  >
97
98
  {routes.map((route, index) => {
@@ -22,6 +22,7 @@ export const MaybeScreenContainer = ({
22
22
  ...rest
23
23
  }: ViewProps & {
24
24
  enabled: boolean;
25
+ hasTwoStates: boolean;
25
26
  children: React.ReactNode;
26
27
  }) => {
27
28
  if (Screens?.screensEnabled?.()) {