react-native-slider-icon-button
TypeScript icon, indicating that this package has built-in type declarations

0.1.16 • Public • Published

RNSliderIconButton

A component to swipe and verify which is compatible with low-end mobiles.

Installation

npm install --save react-native-slider-icon-button or yarn add react-native-slider-icon-button

import React, { Component } from 'react';

import {
  View,
  TouchableOpacity, Text,
  Dimensions
} from 'react-native';


const { width } = Dimensions.get('window')

import RNSliderIconButton from 'react-native-slider-icon-button'

import LottieView from 'lottie-react-native';

export default class App extends Component {

  constructor(props) {
    super(props)

    this.state = { isUnlocked: false, isUploaded: false }

  }

  render() {


    const { isUnlocked, isUploaded } = this.state

    const lottieSizeIcon = isUploaded ? 60 : 40;

    return (
      <View style={{ flex: 1, alignItems: 'center', justifyContent: 'flex-end', backgroundColor: '#fff', paddingBottom: 40 }}>


        {/** Lottie example */}
        <View style={{ marginTop: 20 }}>
          <RNSliderIconButton ref={ref => this.swipeVerify2 = ref}
            width={width - 50}
            buttonSize={60}
            buttonColor="#2962FF"
            borderColor="#2962FF"
            backgroundColor="#fff"
            textColor="#37474F"
            borderRadius={30}
            okButton={{ visible: true, duration: 400 }}
            onVerified={() => {
              this.setState({ isUploaded: true })
            }}
            icon={
              <View style={{ width: lottieSizeIcon, height: lottieSizeIcon }}>
                <LottieView
                  source={isUploaded ? require('./lottie_files/ready_to_upload.json') : require('./lottie_files/cloud_upload.json')}
                  autoPlay

                  resizeMode='contain'
                  loop={!isUploaded}
                />
              </View>
            }
          >

            <Text>{isUploaded ? 'UPLOADED' : 'slide to upload'}</Text>

          </RNSliderIconButton>
        </View>
        {/** end Lottie example */}






        <View style={{ marginTop: 20 }}>
          <RNSliderIconButton
            width={width - 50}
            loading={false}
            iconColor="#37474F"
            disabled={false}
            buttonSize={60}
            initialColor="#37474F"
            finalColor="#D50000"
            textStyle={}
            onVerified={() => {
              this.setState({ isUnlocked: true })
            }}
            icon={<Image source={isUnlocked ? require('./img/unlocked.png') : require('./img/locked.png')} style={{ width: 40, height: 40 }} />}
          >

            <Text>{isUnlocked ? 'UNLOCKED' : 'slide to unlock'}</Text>

          </RNSliderIconButton>
        </View>


        <TouchableOpacity onPress={() => {

          this.swipeVerify2.reset()
          this.swipeVerify3.reset()
          this.setState({ isUnlocked: false, isUploaded: false })
        }} style={{ marginTop: 30 }}>
          <Text style={{ padding: 10, color: '#f00', fontSize: 25 }}>RESET</Text>
        </TouchableOpacity>



      </View>
    );
  }
}

Props

name type default description
width (required) number required the width of swipe-verify
buttonSize (required) number required the button (Icon) size of swipe-verify
initialColor (optional) string #D50000 button background color towards the right
finalColor (optional) string #D50000 button background color towards the left
textStyle (optional) object {} text style for the text on the slider button
icon (optional) component see the example to more information
borderColor (optional) string #D50000 border color
borderRadius (optional) number 0 border radius to the button and container
loading (optional) boolean {true} if ActivityIndicator is shown or not
iconColor (optional) string #D50000 icon background color
disabled (optional) boolean {true} if disabled or not

Callbacks

name arguments notes
onVerified (required) bool listener to check if the swipe is verified (user has completed swipe)

Methods

name arguments notes
reset() none reset the swipe-verify to default values

Package Sidebar

Install

npm i react-native-slider-icon-button

Weekly Downloads

16

Version

0.1.16

License

MIT

Unpacked Size

28.6 kB

Total Files

11

Last publish

Collaborators

  • aditiasi