Package Exports
- react-pin-field
- react-pin-field/dist/index.js
- react-pin-field/dist/react-pin-field.esm.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (react-pin-field) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
📟 React PIN Field

React component for entering PIN codes.

Live demo at https://soywod.github.io/react-pin-field/.
Installation
yarn add react-pin-field
# or
npm install react-pin-fieldUsage
import PinField from "react-pin-field"Props
type PinFieldProps = {
ref?: React.Ref<HTMLInputElement[]>
className?: string
length?: number
validate?: string | string[] | RegExp | ((key: string) => boolean)
format?: (char: string) => string
onResolveKey?: (key: string, ref?: HTMLInputElement) => any
onRejectKey?: (key: string, ref?: HTMLInputElement) => any
onChange?: (code: string) => void
onComplete?: (code: string) => void
style?: React.CSSProperties
} & React.InputHTMLAttributes<HTMLInputElement>
const defaultProps = {
ref: {current: []},
className: "",
length: 5,
validate: /^[a-zA-Z0-9]$/,
format: key => key,
onResolveKey: () => {},
onRejectKey: () => {},
onChange: () => {},
onComplete: () => {},
style: {},
}Reference
Every input can be controlled thanks to the React reference:
<PinField ref={ref} />
// reset all inputs
ref.current.forEach(input => (input.value = ""))
// focus the third input
ref.current[2].focus()Style
The pin field can be styled either with style or className. This
last one allows you to use pseudo-classes like :nth-of-type,
:focus, :hover, :valid, :invalid…
Length
Length of the code (number of characters).
Validate
Characters can be validated with a validator. A validator can take the form of:
- a String of allowed characters:
abcABC123 - an Array of allowed characters:
["a", "b", "c", "1", "2", "3"] - a RegExp:
/^[a-zA-Z0-9]$/ - a predicate:
(char: string) => boolean
Format
Characters can be formatted with a formatter (char: string) => string.
Events
onResolveKey: when a key passes the validatoronRejectKey: when a key is rejected by the validatoronChange: when the code changesonComplete: when the code has been fully filled
Examples
See the live demo.
Development
git clone https://github.com/soywod/react-pin-field.git
cd react-pin-field
yarn installTo start the development server:
yarn startTo build the lib:
yarn buildTo build the demo:
yarn build:demoTests
Unit tests
Unit tests are handled by Jest (.test files)
and Enzyme (.spec files).
yarn test:unitEnd-to-end tests
End-to-end tests are handled by Cypress
(.e2e files).
yarn start
yarn test:e2e