Package Exports
- react-pin-component
Readme
A Simple React Pin Component inspired by React Pin Input. This has types included and is React v18 supported.
Install
yarn add react-pin-component
npm install react-pin-component.Pin Props
| Property | Type | Description |
|---|---|---|
| length | number | Length of the pin |
| disabled | boolean | Whether pin input is disabled |
| secret | boolean | Add the type of password to the input. |
| type | numeric | custom | Pattern checking on whether it's a number or anything. |
| validate | Function | This function is used to validate the inputs and should return a boolean. |
| inputStyle | CSSProperties | Additional style properties to add or override to the pin input component |
| inputFocusStyle | CSSProperties | Additional style properties when the input is in focus |
| regexCriteria | RegExp | A regex string to check the input by. |
| ariaLabel | AriaRole | Custom Aria roles |
| placeholder | string | A placeholder for each input. |
| debug | boolean | Choose whether to have console.logs shown or not |
| initialValue | number | string | The initial value to be loaded into the pin input. This does not have to match the length property. |
| style | CSSProperties | Additional style properties to add or override to the pin component |
| focus | boolean | Choosing whether or not to focus on the first input when rendered |
| onChange | Function | This function outputs the current pin and a completed boolean. |
| addSplit | Object | Pass in {component: JSX.Element, every: number} to add a splitting character. |
Example
import React from "react";
import PinComponent from 'react-pin-component';
const MfaTokenInput = () => {
return (
<PinComponent
length={6}
onChange={(pin, completed) => console.log({pin, completed})}
initialValue={6}
validate={(value) => Number(value) < 8}
regexCriteria={/^[0-9]*$/}
style={{
backgroundColor: "lightgrey"
}}
inputStyle={{
backgroundColor: 'darkgrey',
borderRadius: '50%',
margin: '5px'
}}
inputFocusStyle={{
border: '2px solid blue',
// If you want to remove the browser focus outline set this.
outline:0
}}
// Adds a divider component into the pin input every 3 values.
addSplit={{
component: <h1>-</h1>,
every: 3
}}
/>
)
}
export default MfaTokenInput;