@k4ung/svelte-otp
Version:
A simple lightweight OTP input component for svelte.
112 lines (77 loc) • 3.47 kB
Markdown
# svelte-otp
A simple lightweight OTP input component for svelte.
- [Documentation](https://k4ung-svelte-otp.netlify.app/usage)
- [Playground](https://k4ung-svelte-otp.netlify.app/playground)
<br/>
# Installing
```
npm install @k4ung/svelte-otp
```
or
```
yarn add @k4ung/svelte-otp
```
<br/>
<br/>
# Usage
## Simplest form
Getting started is as easy as importing the `SvelteOtp` component and just using it.
<br/>
```js
<script>
import SvelteOtp from ‘@k4ung/svelte-otp’;
</script>
<SvelteOtp />
```
## Controlling the state
You can easily control the state of the value by binding it to the `value` prop.
You can also change the number of inputs through the `numOfInputs` prop.
<br/>
```js
<script>
import SvelteOtp from ‘@k4ung/svelte-otp’;
let value = 'abc12'
</script>
<SvelteOtp numOfInputs={5} bind:value />
```
You can also restrict it to only accept numbers by adding the `numberOnly` attribute.
Separators can be set through the `separator` prop. Placeholders can be added through `placeholder` prop.
<br/>
```js
<script>
import SvelteOtp from ‘@k4ung/svelte-otp’;
let value = '12';
</script>
<SvelteOtp
numberOnly
bind:value
separator="-"
placeholder="********"
/>
```
## Customizing the look
You can style the component however you want by passing one of `inputStyle`, `wrapperStyle`, `separatorStyle` or add custom class names through `inputClass`, `wrapperClass`, `separatorClass`. You can also disable all the default styling by adding the `disableDefaultStyle` attribute.
Here's an example component, styled using [tailwindcss](https://tailwindcss.com/ 'Tailwind css framework')
```js
<SvelteOtp
inputClass="rounded-md bg-gray-200"
separatorClass="border-blue-700 text-3xl font-bold"
separator="-"
/>
```
## Available Options
| **Name** | **Default Value** | **Description** |
| ----------------------- | ----------------- | ----------------------------------------------------------- |
| numOfInputs | 6 | Quantity of input to show |
| value | '' | The value of the input |
| separator | '' | Separator between the individual inputs |
| onlyShowMiddleSeparator | false | Only show one separator in the middle (numOfInputs % 2 = 0) |
| placeholder | '' | Placeholder value for the inputs |
| numberOnly | false | Restrict the values to numbers only |
| disableDefaultStyle | false | Disable default styling of component |
| wrapperClass | '' | Custom class to be added to the wrapper element |
| inputClass | '' | Custom class to be added to the individual inputs |
| separatorClass | '' | Custom class to be added to the separators |
| wrapperStyle | '' | Inline style to be added to the wrapper element |
| inputStyle | '' | Inline style to be added to the individual inputs |
| separatorStyle | '' | Inline style to be added to the separators |