Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kirankalyan5/react-native-segmented-control-tab
react-native-segmented-control-tab(for Android/iOS)
https://github.com/kirankalyan5/react-native-segmented-control-tab
Last synced: about 14 hours ago
JSON representation
react-native-segmented-control-tab(for Android/iOS)
- Host: GitHub
- URL: https://github.com/kirankalyan5/react-native-segmented-control-tab
- Owner: kirankalyan5
- License: mit
- Created: 2016-09-26T04:01:22.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2024-10-26T06:07:05.000Z (about 2 months ago)
- Last Synced: 2024-10-29T15:19:07.766Z (about 1 month ago)
- Language: JavaScript
- Homepage:
- Size: 2.09 MB
- Stars: 619
- Watchers: 7
- Forks: 117
- Open Issues: 25
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-react-native - react-native-segmented-control-tab ★252 - native-segmented-control-tab (for Android/iOS) (Components / UI)
- awesome-reactnative-ui - react-native-segmented-control-tab - native-segmented-control-tab(for Android/iOS)|<ul><li>Last updated : This week</li><li>Stars : 308</li><li>Open issues : 4</li></ul>|![](https://nodei.co/npm/react-native-segmented-control-tab.png?compact=true)| (Others)
- awesome-react-native - react-native-segmented-control-tab ★252 - native-segmented-control-tab (for Android/iOS) (Components / UI)
- awesome-reactnative-ui - react-native-segmented-control-tab - native-segmented-control-tab(for Android/iOS)|<ul><li>Last updated : This week</li><li>Stars : 308</li><li>Open issues : 4</li></ul>|![](https://nodei.co/npm/react-native-segmented-control-tab.png?compact=true)| (Others)
- awesome-react-native - react-native-segmented-control-tab ★252 - native-segmented-control-tab(for Android/iOS) (Components / UI)
- awesome-react-native - react-native-segmented-control-tab ★252 - native-segmented-control-tab (for Android/iOS) (Components / UI)
README
# react-native-segmented-control-tab(for Android/iOS) 🚀
[![npm](https://img.shields.io/npm/v/react-native-segmented-control-tab.svg?style=flat-square "npm version")](https://www.npmjs.com/package/react-native-segmented-control-tab)
[![Build Status](https://travis-ci.com/kirankalyan5/react-native-segmented-control-tab.svg?branch=master)](https://travis-ci.com/kirankalyan5/react-native-segmented-control-tab)
[![Monthly Downloads](https://img.shields.io/npm/dm/react-native-segmented-control-tab.svg?style=flat-square)](https://npmjs.org/package/react-native-segmented-control-tab)
[![GitHub stars](https://img.shields.io/github/stars/kirankalyan5/react-native-segmented-control-tab.svg?style=flat)](https://npmjs.org/package/react-native-segmented-control-tab)
[ ![PRs Welcome](https://img.shields.io/badge/PRs-Welcome-brightgreen.svg?style=flat-square)](https://github.com/kirankalyan5/react-native-segmented-control-tab/pulls)[![NPM](https://nodei.co/npm/react-native-segmented-control-tab.png?compact=true)](https://npmjs.org/package/react-native-segmented-control-tab)
A react native component with the same concept of react native's SegmantedControlIOS, Primarily built to support both IOS and Android. 💡
## ScreenShots
### Android
![Demo](https://github.com/kirankalyan5/react-native-segmented-control-tab/blob/master/Sample/screenshots/screenshot_android.png)
### iOS
![Demo](https://github.com/kirankalyan5/react-native-segmented-control-tab/blob/master/Sample/screenshots/screenshot_ios.png)
## Install
```shell
npm install react-native-segmented-control-tab --save
```## Usage
### IMPORTANT
This has been made into a controlled component from 3.0. Those who are familiar with 2.0, read below for the updated usage.
```javascript
import SegmentedControlTab from "react-native-segmented-control-tab";class ConsumerComponent extends Component {
constructor() {
super();
this.state = {
selectedIndex: 0
};
}handleIndexChange = index => {
this.setState({
...this.state,
selectedIndex: index
});
};render() {
return (
);
}
}
```## Props
| Name | Description | Default | Type |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------- | ------------------------- |
| values | titles of tabs | `['One', 'Two', 'Three']` | array |
| selectedIndex | index of tab item to be selected initially | [0] | number |
| selectedIndices | Array of indices of tab items to be selected initially - when multiple prop is true else it will take selectedIndex | [0] | arrayOf(PropTypes.number) |
| enabled | Boolean to enable or disable the component | true | bool |
| multiple | Boolean which enables the multiple selection option | false | bool |
| borderRadius | borderRadius of whole tab | 5 | number |
| tabsContainerStyle | external styles can be passed to override the default styles of the segmentedControl wrapper | base styles added in SegmentedControlTab.js | object(styles) |
| tabsContainerDisableStyle | Custom style that can be passed when `enable` is set to false | default style `opacity: 0.6` | object(styles) |
| tabStyle | external styles can be passed to override the default styles of the tabs | base styles added in SegmentedControlTab.js | object(styles) |
| firstTabStyle | external styles can be passed to override the default styles of the first tab | base styles added in SegmentedControlTab.js | object(styles) |
| lastTabStyle | external styles can be passed to override the default styles of the last tab | base styles added in SegmentedControlTab.js | object(styles) |
| tabTextStyle | external styles can be passed to override the default styles of the tab title | base styles added in SegmentedControlTab.js | object(styles) |
| activeTabStyle | external styles can be passed to override the default styles of the active tab | base styles added in SegmentedControlTab.js | object(styles) |
| activeTabTextStyle | external styles can be passed to override the default styles of the active tab text | base styles added in SegmentedControlTab.js | object(styles) |
| badges | badges values to display | `[1, 2, 3]` | array |
| tabBadgeContainerStyle | external style can be passed to override the default style of the badge container | base styles added in SegmentedControlTab.js | object(styles) |
| activeTabBadgeContainerStyle | external style can be passed to override the default style of the active badge container | base styles added in SegmentedControlTab.js | object(styles) |
| tabBadgeStyle | external style can be passed to override the default style of the badge text | base styles added in SegmentedControlTab.js | object(styles) |
| activeTabBadgeStyle | external style can be passed to override the default style of the active badge text | base styles added in SegmentedControlTab.js | object(styles) |
| onTabPress | call-back function when a tab is selected | () => {} | func |
| allowFontScaling | whether the segment & badge text should allow font scaling (default matches React Native default) | true | bool |
| accessible | enables accessibility for each tab | true | bool |
| accessibilityLabels | Reads out the given text on each tab press when voice over is enabled. If not set, uses the text passed in as values in props as a fallback | ['Label 1', 'Label 2', 'Label 3'] | array |
| activeTabOpacity | Opacity value to customize tab press | 1 | number |## Custom styling
```javascript
this.setState({ selected: index })}
/>;const styles = StyleSheet.create({
tabsContainerStyle: {
//custom styles
},
tabStyle: {
//custom styles
},
firstTabStyle: {
//custom styles
},
lastTabStyle: {
//custom styles
},
tabTextStyle: {
//custom styles
},
activeTabStyle: {
//custom styles
},
activeTabTextStyle: {
//custom styles
},
tabBadgeContainerStyle: {
//custom styles
},
activeTabBadgeContainerStyle: {
//custom styles
},
tabBadgeStyle: {
//custom styles
},
activeTabBadgeStyle: {
//custom styles
}
});
```## P.S.
🙏 credits to all the other devs who had built the similar concept, had referred some of the their components on the github, to get a fair idea 💡 to build this.😊
If you have any idea in implementing this further, let me know or you can update it and raise a PR.😊🚀## License
_MIT_