Skip to content

Commit 254f198

Browse files
committed
Revert "TabController - support react-native-safe-area-context (#3928)" (#3933)
This reverts commit b4f5c67.
1 parent 51bc68a commit 254f198

3 files changed

Lines changed: 61 additions & 68 deletions

File tree

  • demo/src/screens/componentScreens/TabControllerScreen
  • docs/getting-started
  • packages/react-native-ui-lib/src/components/tabController

demo/src/screens/componentScreens/TabControllerScreen/index.tsx

Lines changed: 55 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import _ from 'lodash';
22
import React, {Component} from 'react';
33
import {ActivityIndicator, StyleSheet} from 'react-native';
4-
import {SafeAreaProvider} from 'react-native-safe-area-context';
54
import {
65
Assets,
76
TabController,
@@ -163,65 +162,63 @@ class TabControllerScreen extends Component<{}, State> {
163162
render() {
164163
const {key, initialIndex, asCarousel, centerSelected, fewItems, items} = this.state;
165164
return (
166-
<SafeAreaProvider style={{flex: 1}}>
167-
<View flex bg-$backgroundDefault>
168-
<TabController
165+
<View flex bg-$backgroundDefault>
166+
<TabController
167+
key={key}
168+
ref={this.tabController}
169+
asCarousel={asCarousel}
170+
initialIndex={initialIndex}
171+
onChangeIndex={this.onChangeIndex}
172+
items={items}
173+
>
174+
<TabController.TabBar
175+
// items={items}
169176
key={key}
170-
ref={this.tabController}
171-
asCarousel={asCarousel}
172-
initialIndex={initialIndex}
173-
onChangeIndex={this.onChangeIndex}
174-
items={items}
175-
>
176-
<TabController.TabBar
177-
// items={items}
178-
key={key}
179-
// uppercase
180-
// indicatorStyle={{backgroundColor: 'green', height: 3}}
181-
// indicatorInsets={0}
182-
spreadItems={!fewItems}
183-
backgroundColor={fewItems ? 'transparent' : undefined}
184-
// labelColor={'green'}
185-
// selectedLabelColor={'red'}
186-
labelStyle={styles.labelStyle}
187-
selectedLabelStyle={styles.selectedLabelStyle}
188-
// iconColor={'green'}
189-
// selectedIconColor={'blue'}
190-
enableShadow
191-
activeBackgroundColor={Colors.$backgroundPrimaryMedium}
192-
centerSelected={centerSelected}
193-
/>
194-
{this.renderTabPages()}
195-
</TabController>
196-
<View absB left margin-20 marginB-100 style={{zIndex: 1}}>
197-
<Button
198-
bg-green10={!fewItems}
199-
bg-green30={fewItems}
200-
label={fewItems ? 'Show Many Items' : 'Show Few Items'}
201-
marginB-12
202-
size={Button.sizes.small}
203-
onPress={this.toggleItemsCount}
204-
/>
205-
<Button
206-
bg-grey20={!asCarousel}
207-
bg-green30={asCarousel}
208-
label={`Carousel : ${asCarousel ? 'ON' : 'OFF'}`}
209-
marginB-12
210-
size={Button.sizes.small}
211-
onPress={this.toggleCarouselMode}
212-
/>
213-
<Button
214-
bg-grey20={!centerSelected}
215-
bg-green30={centerSelected}
216-
label={`centerSelected : ${centerSelected ? 'ON' : 'OFF'}`}
217-
size={Button.sizes.small}
218-
marginB-12
219-
onPress={this.toggleCenterSelected}
220-
/>
221-
<Button label="setTab (Imperative)" bg-green10 onPress={this.setTab} size={Button.sizes.small}/>
222-
</View>
177+
// uppercase
178+
// indicatorStyle={{backgroundColor: 'green', height: 3}}
179+
// indicatorInsets={0}
180+
spreadItems={!fewItems}
181+
backgroundColor={fewItems ? 'transparent' : undefined}
182+
// labelColor={'green'}
183+
// selectedLabelColor={'red'}
184+
labelStyle={styles.labelStyle}
185+
selectedLabelStyle={styles.selectedLabelStyle}
186+
// iconColor={'green'}
187+
// selectedIconColor={'blue'}
188+
enableShadow
189+
activeBackgroundColor={Colors.$backgroundPrimaryMedium}
190+
centerSelected={centerSelected}
191+
/>
192+
{this.renderTabPages()}
193+
</TabController>
194+
<View absB left margin-20 marginB-100 style={{zIndex: 1}}>
195+
<Button
196+
bg-green10={!fewItems}
197+
bg-green30={fewItems}
198+
label={fewItems ? 'Show Many Items' : 'Show Few Items'}
199+
marginB-12
200+
size={Button.sizes.small}
201+
onPress={this.toggleItemsCount}
202+
/>
203+
<Button
204+
bg-grey20={!asCarousel}
205+
bg-green30={asCarousel}
206+
label={`Carousel : ${asCarousel ? 'ON' : 'OFF'}`}
207+
marginB-12
208+
size={Button.sizes.small}
209+
onPress={this.toggleCarouselMode}
210+
/>
211+
<Button
212+
bg-grey20={!centerSelected}
213+
bg-green30={centerSelected}
214+
label={`centerSelected : ${centerSelected ? 'ON' : 'OFF'}`}
215+
size={Button.sizes.small}
216+
marginB-12
217+
onPress={this.toggleCenterSelected}
218+
/>
219+
<Button label="setTab (Imperative)" bg-green10 onPress={this.setTab} size={Button.sizes.small}/>
223220
</View>
224-
</SafeAreaProvider>
221+
</View>
225222
);
226223
}
227224
}

docs/getting-started/setup.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ UILib supports additional features through optional dependencies. These packages
4242
| @react-native-community/blur | Card component's blur effects |
4343
| @react-native-community/datetimepicker | Date/time picker components |
4444
| @react-native-community/netinfo | Network connectivity features |
45-
| react-native-safe-area-context | support useSafeAreaInsets inside Modal, usages of Modal and TabController |
45+
| react-native-safe-area-context | support useSafeAreaInsets inside and usages of Modal |
4646
| react-native-haptic-feedback | Haptic feedback functionality |
4747
| react-native-svg | SVG-based components |
4848
| react-native-shimmer-placeholder | Shimmer loading effects |

packages/react-native-ui-lib/src/components/tabController/index.tsx

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
import _ from 'lodash';
33
import React, {PropsWithChildren, useMemo, useEffect, useState, useCallback} from 'react';
44
import {useAnimatedReaction, useSharedValue, withTiming, runOnJS} from 'react-native-reanimated';
5-
import {SafeAreaContextPackage} from '../../optionalDependencies';
65
import {useOrientation, useThemeProps} from '../../hooks';
76
import {Constants} from '../../commons/new';
87
import TabBarContext from './TabBarContext';
@@ -53,11 +52,9 @@ export interface TabControllerProps {
5352
children?: React.ReactNode;
5453
}
5554

56-
const useSafeAreaInsets = SafeAreaContextPackage?.useSafeAreaInsets ?? (() => Constants.getSafeAreaInsets());
57-
58-
59-
const getScreenWidth = (useSafeArea: boolean, left: number, right: number) => {
60-
return Constants.windowWidth - (useSafeArea ? left + right : 0);
55+
const getScreenWidth = (useSafeArea: boolean) => {
56+
const {left, right} = Constants.getSafeAreaInsets();
57+
return Constants.windowWidth - (useSafeArea && Constants.isIphoneX ? left + right : 0);
6158
};
6259

6360
/**
@@ -78,16 +75,15 @@ const TabController = React.forwardRef((props: PropsWithChildren<TabControllerPr
7875
useSafeArea = false,
7976
children
8077
} = themeProps;
81-
const {left, right} = useSafeAreaInsets();
82-
const [screenWidth, setScreenWidth] = useState<number>(getScreenWidth(useSafeArea, left, right));
78+
const [screenWidth, setScreenWidth] = useState<number>(getScreenWidth(useSafeArea));
8379

8480
if (items?.length < 2) {
8581
console.warn('TabController component expect a minimum of 2 items');
8682
}
8783

8884
useOrientation({
8985
onOrientationChange: () => {
90-
setScreenWidth(getScreenWidth(useSafeArea, left, right));
86+
setScreenWidth(getScreenWidth(useSafeArea));
9187
}
9288
});
9389

0 commit comments

Comments
 (0)