GitHub - xnimorz/svelte-input-mask: Input masking component for Svelte with simple API and rich customization (original) (raw)
Mask input with simple API and rich customization.
If you need to create an input for:
- credit card
- phone number
- date
- birthday
- numbers
- Or other custom mask
This project could help you in all this situations!
Take a look at our demos: https://codesandbox.io/s/svelte-input-mask-demo-xurgr
How to use it:
Install it:
npm install --save svelte-input-mask
or if you're using yarn:
yarn add svelte-input-mask
Import MaskInput component:
import MaskInput from "svelte-input-mask/MaskInput.svelte";
Use it (for example for CreditCard):
Add event listeners:
<MaskInput alwaysShowMask maskChar="_" {mask} on:change={handleChange} />
Congrats! You made the first masked input :)
Checkout more usecases here: https://codesandbox.io/s/romantic-franklin-xurgr
Where to use?
Credit cards:
Phones (you still can change prefixes, country code like in credit card example):
Dates:
<MaskInput alwaysShowMask {maskString} {mask} on:change={handleChange}/>
Numbers:
Which props it has?
Mask input has next props:
| Prop | Default value | Description |
|---|---|---|
| value | - | The value of the input. Will be processed to masked one. In this case you can control the value of the component |
| defaultValue | - | The default value of the input. Will be applied only during the first render |
| maskString | - | The mask string to show if there are no filled chars. It's length should be the same as mask. Example: 'DD.MM.YYYY' |
| maskChar | '' | In case you don't need a custom string you can define only a definite char for mask. Example: maskChar = '_' and mask = '0000-0000-0000-0000' will give: ____-____-____-____ |
| mask | - | The mask of the input. Could be a credit card: '0000-0000-0000-0000', date: 00.00.0000 or whatever you want :) Doesn't work if reformat prop is setted |
| maskFormat | regexp | The regexp for custom formatting. You may use it if you want to define a specific mask. See example here: https://github.com/xnimorz/masked-input/blob/master/packages/input-core/src/index.ts#L16-L28 |
| alwaysShowMask | false | Flag to show the mask |
| showMask | false | Show mask if there is any data in input |
| reformat | - | The function, which defines a custom formatting rules. In case if you can't describe the format only with mask (e.g. numbers). If you use this prop mask prop will be ignored |
Svelte mask input pass all props that it doesn't handle right to input html element.
Quick start examples at local machine
git clone git@github.com:xnimorz/svelte-input-mask.git
cd svelte-input-mask/example
yarn install
yarn dev
Requirements:
Svelte should be installed in your project. Check the minimal Svelte version here: https://github.com/xnimorz/svelte-input-mask/blob/master/package.json#L42