Socket
Socket
Sign inDemoInstall

react-native-smooth-pincode-input-custom

Package Overview
Dependencies
2
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    react-native-smooth-pincode-input-custom

A cross-platform, smooth, lightweight, customizable PIN code input component for React Native custom from react-native-smooth-pincode-input.


Version published
Weekly downloads
47
increased by34.29%
Maintainers
1
Install size
721 kB
Created
Weekly downloads
 

Readme

Source

React Native Smooth Pincode Input

A cross-platform, smooth, lightweight, customizable PIN code input component for React Native.

Most PIN code inputs components implemented by combining several TextInputs. They works, however, not good enough. When user types fast, or system sluggish, characters may lost when component switching focus between TextInputs. User need to type over and over again to get a correct input, gave a frustrated user experience.

React Native Smooth Pincode Input implemented with a different approach - It's based on single TextInput but only render it as seperated fields. In other words, it looks like a PIN code input, but works as smooth as a native TextInput.

React Native Smooth Pincode Input is also highly customizable. By exposing cells and text stylesheets, it can be fully customized to fit in your app design. Password mode also supported with customizable mask characters as well as placeholders.

  • Checkout the example/ for demo app.

Features

  • Smooth typing without losing inputs
  • Customizable cell style
  • Customizable text style
  • Password mode
  • Customizable password mask and placeholder characters
  • Built in animations (Credit to react-native-animatable)

Installation

# yarn
yarn add react-native-smooth-pincode-input

# npm
npm i react-native-smooth-pincode-input

Examples

Default style with event handling

<SmoothPinCodeInput
  ref={this.pinInput}
  value={code}
  onTextChange={code => this.setState({ code })}
  onFulfill={this._checkCode}
  onBackspace={this._focusePrevInput}
  />

Password with custom mask

<SmoothPinCodeInput password mask="﹡"
  cellSize={36}
  codeLength={8}
  value={password}
  onTextChange={password => this.setState({ password })}/>

Underline style

<SmoothPinCodeInput
  cellStyle={{
    borderBottomWidth: 2,
    borderColor: 'gray',
  }}
  cellStyleFocused={{
    borderColor: 'black',
  }}
  value={code}
  onTextChange={code => this.setState({ code })}
  />

Customized style

<SmoothPinCodeInput
  placeholder="⭑"
  cellStyle={{
    borderWidth: 2,
    borderRadius: 24,
    borderColor: 'mediumturquoise',
    backgroundColor: 'azure',
  }}
  cellStyleFocused={{
    borderColor: 'lightseagreen',
    backgroundColor: 'lightcyan',
  }}
  textStyle={{
    fontSize: 24,
    color: 'salmon'
  }}
  textStyleFocused={{
    color: 'crimson'
  }}
  value={code}
  onTextChange={code => this.setState({ code })}
  />

Custom placeholder and mask using a component

<SmoothPinCodeInput
  placeholder={<View style={{
    width: 10,
    height: 10,
    borderRadius: 25,
    opacity: 0.3,
    backgroundColor: 'blue',
  }}></View>}
  mask={<View style={{
    width: 10,
    height: 10,
    borderRadius: 25,
    backgroundColor: 'blue',
  }}></View>}
  maskDelay={1000}
  password={true}
  cellStyle={null}
  cellStyleFocused={null}
  value={code}
  onTextChange={code => this.setState({ code })}
/>

Available props

NameTypeDefaultDescription
valueString''The value to show for the input
codeLengthNumber4Number of character for the input
cellSizeNumber48Size for each cell in input
cellSpacingNumber4Space between each cell
placeholderStringElement''
maskStringElement'*'
maskDelayNumber200The delay in milliseconds before a character is masked
passwordBooleanfalseMask the input value. Each cell masked with mask props
autoFocusBooleanfalseIf true, focuses the input on componentDidMount
editableBooleantrueIf false, makes each cell not editable
animatedBooleantrueToggle animations
animationFocusedString, Object'pulse'The animation of the focused cell. This can be a preset animation in the form of a string or a custom animation object.
restrictToNumbersBooleanfalseRestrict input to numbers only
containerStyleReact View StyleSheet{}View style for whole cell containers
cellStyleReact View StyleSheet{ borderColor: 'gray', borderWidth: 1}View style for each cell
cellStyleFocusedReact View StyleSheet{ borderColor: 'black', borderWidth: 2 }View style for focused cell
textStyleReact Text StyleSheet{ color: 'gray', fontSize: 24 }Text style for cell value
textStyleFocusedReact Text StyleSheet{ color: 'black' }Text style for focused cell value
onFulfillFunctionnullCallback function that's called when the input is completely filled
onTextChangeFunctionnullCallback function that's called when the text changed
onBackspaceFunctionnullCallback function that's called when the input is empty and the backspace button is pressed
keyboardTypeEnum('default', 'number-pad', 'decimal-pad', 'numeric', 'email-address', 'phone-pad')'numeric'Determines which keyboard to open

Thanks to contributors

Keywords

FAQs

Last updated on 03 Jul 2022

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc