React Native Input List Components

A React Native library with input components.

Components

  • InputText - Text/Numeric input field
  • InputCountrySelector - Country selector input field
  • InputSwitch - Switch input field

Install

npm install --save react-native-input-list

Usage

import React, { Component } from 'react';
import { StyleSheet, Text, View, TouchableOpacity, Alert } from 'react-native';
import { InputText, InputCountrySelector, InputSwitch } from 'react-native-input-list';

export default class App extends Component {

  showValues = () => {
    const firstValue = `First input: ${this.refs.firstInput.value()}\n`;
    const secondValue = `Second input: ${this.refs.secondInput.value()}\n`;
    const thirdValue = `Third input: ${this.refs.thirdInput.value()}\n`;
    const fourthValue = `Fourth input: ${this.refs.fourthInput.value()}\n`;
    const fifthValue = `Fifth input: ${this.refs.fifthInput.value()}\n`;
    const sixthValue = `Sixth input: ${this.refs.sixthInput.value()}\n`;

    const text = firstValue + secondValue + thirdValue + fourthValue + fifthValue + sixthValue;

    Alert.alert(
      'Values',
      text
    );
  }

  areValid = () => {
    const firstValid = `First input: ${!!this.refs.firstInput.valid()}\n`;
    const secondValid = `Second input: ${!!this.refs.secondInput.valid()}\n`;
    const thirdValid = `Third input: ${!!this.refs.thirdInput.valid()}\n`;
    const fourthValid = `Fourth input: ${!!this.refs.fourthInput.valid()}\n`;
    const fifthValid = `Fifth input: ${!!this.refs.fifthInput.valid()}\n`;

    const text = firstValid + secondValid + thirdValid + fourthValid + fifthValid;

    Alert.alert(
      'Valid?',
      text
    );
  }

  showErrors = () => {
    this.refs.firstInput.showError();
    this.refs.secondInput.showError();
    this.refs.thirdInput.showError();
    this.refs.fourthInput.showError();
    this.refs.fifthInput.showError();
  }
  
  switchChanged = (value) => {
    alert(value);
  }

  render() {
    return (
      <View style={styles.container}>
        <Text style={styles.title}>Inputs</Text>
        <View>
          <InputText ref="firstInput" required type="withLabel" label="With label"/>
          <InputText ref="secondInput" label="Without label"/>
          <InputText ref="thirdInput" keyboardType="numeric" label="Numeric"/>
          <InputText ref="fourthInput" type="withLabel" label="With styles" containerStyles={styles.inputStyles}/>
          <InputCountrySelector ref="fifthInput" label="Select your country" />
          <InputSwitch ref="sixthInput" defaultValue={false} onChange={this.switchChanged} label="Are you alive?"/>
        </View>
        <View>
          <TouchableOpacity onPress={this.showValues}>
            <Text style={styles.action}>SHOW VALUES</Text>
          </TouchableOpacity>
          <TouchableOpacity onPress={this.areValid}>
            <Text style={styles.action}>VALID?</Text>
          </TouchableOpacity>
          <TouchableOpacity onPress={this.showErrors}>
            <Text style={styles.action}>SHOW ERRORS</Text>
          </TouchableOpacity>
        </View>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    flexDirection: 'column',
    marginVertical: 40
  },
  title: {
    fontSize: 20,
    textAlign: 'center',
    margin: 10
  },
  action: {
    fontSize: 18,
    textAlign: 'center',
    margin: 10,
    color: 'blue'
  },
  inputStyles: {
    backgroundColor: 'green'
  }
});

GitHub