react-native-tag-select-option
v3.0.2
Published
[![npm version](https://badge.fury.io/js/react-native-tag-select.svg)](https://badge.fury.io/js/react-native-tag-select)
Downloads
1
Readme
react-native-tag-select
A simple tag component to act as radio button / checkbox
Features
- Suports Array of objects or array of strings
- Support max itens selected
- Built in themes
- Plain simple and flexible API
Demo
You can try on expo: https://exp.host/@rafaelmotta021/react-native-tag-select-demo
or just check the image bellow:
Setup
yarn add react-native-tag-select
or
npm install --save react-native-tag-select
Usage
import React from 'react';
import {
View,
StyleSheet,
Button,
Alert,
Text,
} from 'react-native';
import { TagSelect } from 'react-native-tag-select';
export default class App extends React.Component {
render() {
const data = [
{ id: 1, label: 'Money' },
{ id: 2, label: 'Credit card' },
{ id: 3, label: 'Debit card' },
{ id: 4, label: 'Online payment' },
{ id: 5, label: 'Bitcoin' },
];
return (
<View style={styles.container}>
<Text style={styles.labelText}>Payment:</Text>
<TagSelect
data={data}
max={3}
ref={(tag) => {
this.tag = tag;
}}
onMaxError={() => {
Alert.alert('Ops', 'Max reached');
}}
/>
<View style={styles.buttonContainer}>
<View style={styles.buttonInner}>
<Button
title="Get selected count"
style={styles.button}
onPress={() => {
Alert.alert('Selected count', `Total: ${this.tag.totalSelected}`);
}}
/>
</View>
<View>
<Button
title="Get selected"
onPress={() => {
Alert.alert('Selected items:', JSON.stringify(this.tag.itemsSelected));
}}
/>
</View>
</View>
<Text style={styles.labelText}>With custom style:</Text>
<TagSelect
data={data}
itemStyle={styles.item}
itemLabelStyle={styles.label}
itemStyleSelected={styles.itemSelected}
itemLabelStyleSelected={styles.labelSelected}
/>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#FFF',
marginTop: 50,
marginLeft: 15,
},
buttonContainer: {
padding: 15,
},
buttonInner: {
marginBottom: 15,
},
labelText: {
color: '#333',
fontSize: 15,
fontWeight: '500',
marginBottom: 15,
},
item: {
borderWidth: 1,
borderColor: '#333',
backgroundColor: '#FFF',
},
label: {
color: '#333'
},
itemSelected: {
backgroundColor: '#333',
},
labelSelected: {
color: '#FFF',
},
});
Demo
You can customized the look and feel of this library the way you want, but, if you prefer, we ship 6 themes for you:
default
inverse
success
info
danger
warning
Available props
| Name | Type| Default | Description | | --- | --- | --- | --- | | value | array | [] | Array with pre-defined values | | data | array | [] | Data to render | | labelAttr | string | 'label' | Key attribute name to render label text, if the data props is an array of objects | | keyAttr | string | 'id' | Key attribute name to render key property to the list, if the data props is an array of objects | | max | number | null | Max itens permitted | | onMaxError | func | null | Callback after user reach max itens | | onItemPress | func | null | Callback after user press on item | | theme | string | 'default' | Default theme inspired on bootstrap colors. You can check the options available above | | containerStyle | any | {} | Style of the list container | | itemStyle | any | {} | Style of item container | | itemStyleSelected | any | {} | Style of item container selected | | itemLabelStyle | any | {} | Style of item label | | itemLabelStyleSelected | any | {} | Style of item label selected |
Methods
To access tag select methods you must get the ref property first.
- Get the number of itens selected. Returns a boolean.
this.ref.totalSelected
- Get itens selected. Returns an array.
this.ref.itemsSelected