diff --git a/demo/src/screens/componentScreens/TabControllerScreen/index.tsx b/demo/src/screens/componentScreens/TabControllerScreen/index.tsx
index b9d73dd31c..b302337202 100644
--- a/demo/src/screens/componentScreens/TabControllerScreen/index.tsx
+++ b/demo/src/screens/componentScreens/TabControllerScreen/index.tsx
@@ -1,7 +1,6 @@
import _ from 'lodash';
import React, {Component} from 'react';
import {ActivityIndicator, StyleSheet} from 'react-native';
-import {SafeAreaProvider} from 'react-native-safe-area-context';
import {
Assets,
TabController,
@@ -163,65 +162,63 @@ class TabControllerScreen extends Component<{}, State> {
render() {
const {key, initialIndex, asCarousel, centerSelected, fewItems, items} = this.state;
return (
-
-
-
+
+
-
- {this.renderTabPages()}
-
-
-
-
-
-
+ // uppercase
+ // indicatorStyle={{backgroundColor: 'green', height: 3}}
+ // indicatorInsets={0}
+ spreadItems={!fewItems}
+ backgroundColor={fewItems ? 'transparent' : undefined}
+ // labelColor={'green'}
+ // selectedLabelColor={'red'}
+ labelStyle={styles.labelStyle}
+ selectedLabelStyle={styles.selectedLabelStyle}
+ // iconColor={'green'}
+ // selectedIconColor={'blue'}
+ enableShadow
+ activeBackgroundColor={Colors.$backgroundPrimaryMedium}
+ centerSelected={centerSelected}
+ />
+ {this.renderTabPages()}
+
+
+
+
+
+
-
+
);
}
}
diff --git a/docs/getting-started/setup.md b/docs/getting-started/setup.md
index 540fd638eb..ba839655b5 100644
--- a/docs/getting-started/setup.md
+++ b/docs/getting-started/setup.md
@@ -42,7 +42,7 @@ UILib supports additional features through optional dependencies. These packages
| @react-native-community/blur | Card component's blur effects |
| @react-native-community/datetimepicker | Date/time picker components |
| @react-native-community/netinfo | Network connectivity features |
-| react-native-safe-area-context | support useSafeAreaInsets inside Modal, usages of Modal and TabController |
+| react-native-safe-area-context | support useSafeAreaInsets inside and usages of Modal |
| react-native-haptic-feedback | Haptic feedback functionality |
| react-native-svg | SVG-based components |
| react-native-shimmer-placeholder | Shimmer loading effects |
diff --git a/packages/react-native-ui-lib/src/components/tabController/index.tsx b/packages/react-native-ui-lib/src/components/tabController/index.tsx
index 0197f3900e..acd2b06ffb 100644
--- a/packages/react-native-ui-lib/src/components/tabController/index.tsx
+++ b/packages/react-native-ui-lib/src/components/tabController/index.tsx
@@ -2,7 +2,6 @@
import _ from 'lodash';
import React, {PropsWithChildren, useMemo, useEffect, useState, useCallback} from 'react';
import {useAnimatedReaction, useSharedValue, withTiming, runOnJS} from 'react-native-reanimated';
-import {SafeAreaContextPackage} from '../../optionalDependencies';
import {useOrientation, useThemeProps} from '../../hooks';
import {Constants} from '../../commons/new';
import TabBarContext from './TabBarContext';
@@ -53,11 +52,9 @@ export interface TabControllerProps {
children?: React.ReactNode;
}
-const useSafeAreaInsets = SafeAreaContextPackage?.useSafeAreaInsets ?? (() => Constants.getSafeAreaInsets());
-
-
-const getScreenWidth = (useSafeArea: boolean, left: number, right: number) => {
- return Constants.windowWidth - (useSafeArea ? left + right : 0);
+const getScreenWidth = (useSafeArea: boolean) => {
+ const {left, right} = Constants.getSafeAreaInsets();
+ return Constants.windowWidth - (useSafeArea && Constants.isIphoneX ? left + right : 0);
};
/**
@@ -78,8 +75,7 @@ const TabController = React.forwardRef((props: PropsWithChildren(getScreenWidth(useSafeArea, left, right));
+ const [screenWidth, setScreenWidth] = useState(getScreenWidth(useSafeArea));
if (items?.length < 2) {
console.warn('TabController component expect a minimum of 2 items');
@@ -87,7 +83,7 @@ const TabController = React.forwardRef((props: PropsWithChildren {
- setScreenWidth(getScreenWidth(useSafeArea, left, right));
+ setScreenWidth(getScreenWidth(useSafeArea));
}
});