2.1.0 • Published 6 years ago

react-native-tag-select-max v2.1.0

Weekly downloads
6
License
ISC
Repository
github
Last release
6 years ago

react-native-tag-select

npm version

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-max

or

npm install --save react-native-tag-select-max

Usage

import React from 'react';
import {
  View,
  StyleSheet,
  Button,
  Alert,
  Text,
} from 'react-native';

import { TagSelect } from 'react-native-tag-select-max';

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

NameTypeDefaultDescription
valuearray[]Array with pre-defined values
dataarray[]Data to render
labelAttrstring'label'Key attribute name to render label text, if the data props is an array of objects
keyAttrstring'id'Key attribute name to render key property to the list, if the data props is an array of objects
maxnumbernullMax itens permitted
onMaxErrorfuncnullCallback after user reach max itens
onItemPressfuncnullCallback after user press on item
themestring'default'Default theme inspired on bootstrap colors. You can check the options available above
containerStyleany{}Style of the list container
itemStyleany{}Style of item container
itemStyleSelectedany{}Style of item container selected
itemLabelStyleany{}Style of item label
itemLabelStyleSelectedany{}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