1.0.0 • Published 8 months ago

@termehui/vmask v1.0.0

Weekly downloads
-
License
ISC
Repository
github
Last release
8 months ago

vMask

Input and text mask library for vue 3 (based on text-mask-core).

Installation

CDN

this package published as vMask module in umd.

<script src="https://unpkg.com/@termehui/vmask"></script>

NPM

npm i @termehui/vmask

Patterns

You can use regex array as mask (like text-mask-core). For easy usage you can use string patterns instead of regex array. Pattern characters are helper character for easily define pattern.

You can pass string, regex array or function as mask input. All following types are valid:

mask("12345", "###-##");
mask("12345", [/\d/, /\d/, /\d/, "-", /\d/, /\d/]);
mask("12345", (v:string) => { ... });

Predefined patterns is:

CharacterRegExpDescription
"#"/[0-9]/match number
"A"/[a-z]/imatch any alpha character (uppercase and lowercase)
"N"/[a-z0-9]/imatch any alpha character and number (uppercase and lowercase)
"X"/./match any character
"!"-escape next character (use before pattern characters. e.g. !#)

registerPattern

Register new pattern character.

// Signature:
registerPattern(key: string, pattern: RegExp): void;

// Example:
registerPattern("$", /\d/);

removePattern

Remove registered pattern.

// Signature:
removePattern(key: string): void;
// Example:
registerPattern("$");

Functions

mask

Mask string by pattern. Mask function accept conformToMask methods config.

// Signature:
mask(input: string, mask: Mask, options: Object = null): string;

// Example:
mask("123456", "####-##"); // 1234-56

unMask

Get raw string from masked string.

// Signature:
unMask(input: string, mask: Mask): string;

// Example:
unMask("1234-56", "####-##"); // 123456

Directive

Caution: directive only work on input with v-model!

import { vMask } from "@termehui/vmask";
app.directive("mask", vMask);

Options

You can pass only mask or mask and options as vMask directive parameter. vMask directive accept createTextMaskInputElement options.

<input v-mask="'####-##'" />
<input v-mask="{ mask: '####-##', options: { guide: true} }" />
1.0.0

8 months ago