RNSwipeVerify
A small componenent to Swipe Verify
Installation
npm install --save react-native-swipe-verify
yarn add react-native-swipe-verify
Preview
Important
If the RNSwipeVerify is inside another component with PanResponder the RNSwipeVerify will be cancelled.
Usage
import React, { Component } from 'react';
import {
View,
TouchableOpacity, Text,
Dimensions
} from 'react-native';
const { width } = Dimensions.get('window')
import RNSwipeVerify from 'react-native-swipe-verify'
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 }}>
<RNSwipeVerify 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>
</RNSwipeVerify>
</View>
{/** end Lottie example */}
<View style={{ marginTop: 20 }}>
<RNSwipeVerify ref={ref => this.swipeVerify3 = ref}
width={width - 50}
buttonSize={60}
borderColor="#fff"
buttonColor="#37474F"
backgroundColor="#ececec"
textColor="#37474F"
okButton={{ visible: false, duration: 400 }}
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>
</RNSwipeVerify>
</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 |
backgroundColor (optional) | string | #F50057 | background color |
buttonColor (optional) | string | #D50000 | button background color |
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 |
okButton (optional) | object | { visible: true, duration: 300 } | if visible is false the icon button will be hidden, duration (number) is the animation duration in miliseconds |
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 |