diff --git a/addons/phone/index.html b/addons/phone/index.html index 8e1add548..5ad4af0fb 100644 --- a/addons/phone/index.html +++ b/addons/phone/index.html @@ -22,7 +22,7 @@ -

Phone
PHONE

This mask is based on the libphonenumber-js package.

Use maskitoPhoneOptionsGenerator to create a mask for phone input.
Coming soon

Basic

Kazakhstan phone example

Validation

For validating phone number you can use isValidPhoneNumber , isPossiblePhoneNumber functions from libphonenumber-js package. Read more

Below is an example of a Hungarian phone mask with an angular validator.

+

Phone
PHONE

This mask is based on the libphonenumber-js package.

Use maskitoPhoneOptionsGenerator to create a mask for phone input.
Coming soon

Basic

Kazakhstan phone example

Validation

For validating phone number you can use isValidPhoneNumber , isPossiblePhoneNumber functions from libphonenumber-js package. Read more

Below is an example of a Hungarian phone mask with an angular validator.

diff --git a/browser-support/index.html b/browser-support/index.html index 2da12b1ae..4f43fe121 100644 --- a/browser-support/index.html +++ b/browser-support/index.html @@ -22,7 +22,7 @@ -

Browser support

Desktop

BrowserVersion
Google Chrome 74+
Mozilla Firefox 55+
Safari 12.1+
Opera 62+
Edge (Chromium) 74+
Microsoft Internet ExplorerNot supported
Edge (EdgeHTML)Not supported

Mobile

BrowserVersion
Google Chrome90+
Mozilla Firefox99+
Safari12.2+
Opera64+
+

Browser support

Desktop

BrowserVersion
Google Chrome 74+
Mozilla Firefox 55+
Safari 12.1+
Opera 62+
Edge (Chromium) 74+
Microsoft Internet ExplorerNot supported
Edge (EdgeHTML)Not supported

Mobile

BrowserVersion
Google Chrome90+
Mozilla Firefox99+
Safari12.2+
Opera64+
diff --git a/changelog/index.html b/changelog/index.html index 5e984ab06..3fc111c50 100644 --- a/changelog/index.html +++ b/changelog/index.html @@ -23,7 +23,7 @@ -

Changelog

Changelog

+

Changelog

Changelog

All notable changes to this project will be documented in this file. See standard-version for commit guidelines.

1.5.0 (2023-09-04)

diff --git a/core-concepts/element-state/index.html b/core-concepts/element-state/index.html index 4f1600f36..d16f3e708 100644 --- a/core-concepts/element-state/index.html +++ b/core-concepts/element-state/index.html @@ -22,7 +22,7 @@ -

Element state

Element state is a concept which describes the main properties of the masked element at the certain period of time.

It is an object which implements the following interface:

This concept is actively used throughout Maskito libraries, and you can find its usage in the following topics:

+

Element state

Element state is a concept which describes the main properties of the masked element at the certain period of time.

It is an object which implements the following interface:

This concept is actively used throughout Maskito libraries, and you can find its usage in the following topics:

diff --git a/core-concepts/mask-expression/index.html b/core-concepts/mask-expression/index.html index 748f6501b..1d3b02ea2 100644 --- a/core-concepts/mask-expression/index.html +++ b/core-concepts/mask-expression/index.html @@ -22,7 +22,7 @@ -

Mask expression

Mask expression is the the main concept of Maskito core library. It provides the developer with opportunity to predefine format of user's input. For example, you can set mask expression to accept only digits, only Latin letters or you can configure more complex patterns like a date string.

You can set mask expression using mask parameter of MaskitoOptions .

Types of mask expression

  • RegExp mask expression

    The most basic and comprehensible type. The only required knowledge is understanding of native JavaScript Regular expression .

    See the following example:

    Make sure that mask expression works with any of intermediate states, not just the final value.

    For example, imagine that you have to create mask for 4-digits PIN code.

    /^\d{4}$/ is a wrong mask expression. It does not match intermediate states (you cannot complete 4-digit string without possibility to type 1-, 2- or 3-digit string).

    /^\d{0,4}$/ is the right solution for our example.

  • Pattern mask expression

    It is a good choice for more complex masks that are fixed in size. This type of mask expression is presented as array. Each element in the array has to be either a string or a regular expression. Each string is a fixed character and each regular expression is validator of character at the same index.

    Fixed character — a predefined character at a certain position (the same as its index inside mask expression array). It is automatically added when user forgets to type it. It cannot be erased or replaced with another character.

    For example, imagine that you have to create mask for a time-string with HH:MM format. It consists of 4 digits and 1 fixed-character separator : .

    This mask expression forbids anything excepts digits and limits length of the value to 5 characters.

    Also, it manages user interactions with fixed character.

    For example, user can just type four digits 1159 and the value becomes 11:59

    Another example, if caret position is after the colon and user presses Backspace , the input's value will not change but caret will be moved to the left of the colon.

  • Dynamic mask expression

    mask parameter can also accepts function which generates mask expression. This function will be called every time before input changes to generate a new version of mask expression.

    An "Element state" object with raw value and current selection is passed as an argument to the function.
    Be careful! It can be not performance-friendly to generate new mask expression on every input change.

    Think about optimization and memoization of the such function.

Next steps

The following sections are recommended to explore core concepts further:

+

Mask expression

Mask expression is the the main concept of Maskito core library. It provides the developer with opportunity to predefine format of user's input. For example, you can set mask expression to accept only digits, only Latin letters or you can configure more complex patterns like a date string.

You can set mask expression using mask parameter of MaskitoOptions .

Types of mask expression

  • RegExp mask expression

    The most basic and comprehensible type. The only required knowledge is understanding of native JavaScript Regular expression .

    See the following example:

    Make sure that mask expression works with any of intermediate states, not just the final value.

    For example, imagine that you have to create mask for 4-digits PIN code.

    /^\d{4}$/ is a wrong mask expression. It does not match intermediate states (you cannot complete 4-digit string without possibility to type 1-, 2- or 3-digit string).

    /^\d{0,4}$/ is the right solution for our example.

  • Pattern mask expression

    It is a good choice for more complex masks that are fixed in size. This type of mask expression is presented as array. Each element in the array has to be either a string or a regular expression. Each string is a fixed character and each regular expression is validator of character at the same index.

    Fixed character — a predefined character at a certain position (the same as its index inside mask expression array). It is automatically added when user forgets to type it. It cannot be erased or replaced with another character.

    For example, imagine that you have to create mask for a time-string with HH:MM format. It consists of 4 digits and 1 fixed-character separator : .

    This mask expression forbids anything excepts digits and limits length of the value to 5 characters.

    Also, it manages user interactions with fixed character.

    For example, user can just type four digits 1159 and the value becomes 11:59

    Another example, if caret position is after the colon and user presses Backspace , the input's value will not change but caret will be moved to the left of the colon.

  • Dynamic mask expression

    mask parameter can also accepts function which generates mask expression. This function will be called every time before input changes to generate a new version of mask expression.

    An "Element state" object with raw value and current selection is passed as an argument to the function.
    Be careful! It can be not performance-friendly to generate new mask expression on every input change.

    Think about optimization and memoization of the such function.

Next steps

The following sections are recommended to explore core concepts further:

diff --git a/core-concepts/overview/index.html b/core-concepts/overview/index.html index 8df716bce..b29dca465 100644 --- a/core-concepts/overview/index.html +++ b/core-concepts/overview/index.html @@ -22,7 +22,7 @@ -

Core concepts

The main entity of Maskito core library is Maskito class which accepts 2 arguments in constructor:

  1. native HTMLInputElement or HTMLTextAreaElement
  2. set of configurable MaskitoOptions
Avoid wasting computation power or memory resources!

The only available public method destroy removes all created event listeners. Call it to clean everything up when the work is finished.

To understand the capabilities of the Maskito library, you need to learn about the following features and concepts:

+

Core concepts

The main entity of Maskito core library is Maskito class which accepts 2 arguments in constructor:

  1. native HTMLInputElement or HTMLTextAreaElement
  2. set of configurable MaskitoOptions
Avoid wasting computation power or memory resources!

The only available public method destroy removes all created event listeners. Call it to clean everything up when the work is finished.

To understand the capabilities of the Maskito library, you need to learn about the following features and concepts:

diff --git a/core-concepts/overwrite-mode/index.html b/core-concepts/overwrite-mode/index.html index c6ded501b..65cab6e03 100644 --- a/core-concepts/overwrite-mode/index.html +++ b/core-concepts/overwrite-mode/index.html @@ -22,7 +22,7 @@ -

Overwrite mode

Overwrite mode regulates behaviour of the mask when user inserts a new character somewhere in the middle of text field, overwriting the character at the current index.

overwriteMode can be of a following type:

  • shift (default)
  • replace
  • function that receives element state as an argument and returns shift or replace

Shift mode

The classic mode that everyone is used to. Inserting a new character in the middle of the text field value shifts all following characters to the right.

Replace mode

All new inserted characters replace the old characters at the same position. No character shifts. The length of the value remains the same after inserting new character somewhere in middle of the text field.

Dynamically detected mode

Parameter overwriteMode also accepts function that will called before each insertion of new characters. This function has one argument — current element state (read more about it in the "Element state" section). And this function should return one of two possible values: shift or replace .

Next steps

The following sections are recommended to explore core concepts further:

+

Overwrite mode

Overwrite mode regulates behaviour of the mask when user inserts a new character somewhere in the middle of text field, overwriting the character at the current index.

overwriteMode can be of a following type:

  • shift (default)
  • replace
  • function that receives element state as an argument and returns shift or replace

Shift mode

The classic mode that everyone is used to. Inserting a new character in the middle of the text field value shifts all following characters to the right.

Replace mode

All new inserted characters replace the old characters at the same position. No character shifts. The length of the value remains the same after inserting new character somewhere in middle of the text field.

Dynamically detected mode

Parameter overwriteMode also accepts function that will called before each insertion of new characters. This function has one argument — current element state (read more about it in the "Element state" section). And this function should return one of two possible values: shift or replace .

Next steps

The following sections are recommended to explore core concepts further:

diff --git a/core-concepts/plugins/index.html b/core-concepts/plugins/index.html index 5fe17b6da..342cc25ea 100644 --- a/core-concepts/plugins/index.html +++ b/core-concepts/plugins/index.html @@ -22,7 +22,7 @@ -

Plugins

Plugins are functions that are called with input/textarea element and mask options as arguments upon mask initialization. They can optionally return cleanup logic and allow you to extend mask with arbitrary additional behavior.

Visualize rejected characters

This plugin is available as maskitoRejectEvent in @maskito/kit

Next steps

The following sections are recommended to explore core concepts further:

+

Plugins

Plugins are functions that are called with input/textarea element and mask options as arguments upon mask initialization. They can optionally return cleanup logic and allow you to extend mask with arbitrary additional behavior.

Visualize rejected characters

This plugin is available as maskitoRejectEvent in @maskito/kit

Next steps

The following sections are recommended to explore core concepts further:

diff --git a/core-concepts/processors/index.html b/core-concepts/processors/index.html index 816d50dd6..ed60fd803 100644 --- a/core-concepts/processors/index.html +++ b/core-concepts/processors/index.html @@ -22,7 +22,7 @@ -

Processors

MaskitoOptions have optional parameters preprocessors and postprocessors . Both accept array of pure functions. These functions are triggered on every user's input ( beforeinput and input events). They provide an opportunity to modify value before / after the mask is applied.

Preprocessors and postprocessors accept different types of arguments but they have two important similarities:

  • The first argument always contains object with information that you can change. Object with the same properties and updated values can be returned from the processor. It means that you can keep all properties untouched or you can change any or all of these properties.
  • The rest arguments contain information that can be useful to build some complex logic, but you cannot change it.
Before you learn more about processors, you should learn a single prerequisite — meaning of the term "Element state" .

Preprocessors

Each preprocessor is a function that is called before mask is applied.

For example, if user types a new character, all preprocessors will be called first, and only then final value that they returned will be passed into the mask, and finally the mask will accept or reject new typed character and update actual value of the text field.

Preprocessor accepts two arguments:

  1. Object with two properties: elementState and data . Object of the same interface with updated or unchanged properties can be returned from the preprocessor.
  2. Name of the action which triggers current execution. It can be one of the following possible values:

Preprocessor returns an objects of the same interface as the first argument.

Postprocessors

Each postprocessor is a function that is called after the mask is applied. When all preprocessors are already called, all mask operations happened and the input's value is about to be updated. You can change everything manually inside a postprocessor.

Postprocessor accepts two arguments:

  1. Element state after mask had been applied. Postprocessor can return updated element state which would then be reflected by the actual text field.
  2. Initial element state before preprocessors and mask execution. It is a readonly argument, the past cannot be changed...

Postprocessor returns an objects of the same interface as the first argument.

With great power comes great responsibility!

Postprocessor is the final step before input's value update which gives a lot of flexibility. Use postprocessor wisely and return a valid value!

Stacking of multiple processors

The Maskito team likes code decomposition and promotes it! Don't put all complex logic inside a single processor. Both parameters preprocessors and postprocessors accepts array of same type processors. Break your code into the several independent processors so that each processor implements only a single task.

Next steps

The following sections are recommended to explore core concepts further:

+

Processors

MaskitoOptions have optional parameters preprocessors and postprocessors . Both accept array of pure functions. These functions are triggered on every user's input ( beforeinput and input events). They provide an opportunity to modify value before / after the mask is applied.

Preprocessors and postprocessors accept different types of arguments but they have two important similarities:

  • The first argument always contains object with information that you can change. Object with the same properties and updated values can be returned from the processor. It means that you can keep all properties untouched or you can change any or all of these properties.
  • The rest arguments contain information that can be useful to build some complex logic, but you cannot change it.
Before you learn more about processors, you should learn a single prerequisite — meaning of the term "Element state" .

Preprocessors

Each preprocessor is a function that is called before mask is applied.

For example, if user types a new character, all preprocessors will be called first, and only then final value that they returned will be passed into the mask, and finally the mask will accept or reject new typed character and update actual value of the text field.

Preprocessor accepts two arguments:

  1. Object with two properties: elementState and data . Object of the same interface with updated or unchanged properties can be returned from the preprocessor.
  2. Name of the action which triggers current execution. It can be one of the following possible values:

Preprocessor returns an objects of the same interface as the first argument.

Postprocessors

Each postprocessor is a function that is called after the mask is applied. When all preprocessors are already called, all mask operations happened and the input's value is about to be updated. You can change everything manually inside a postprocessor.

Postprocessor accepts two arguments:

  1. Element state after mask had been applied. Postprocessor can return updated element state which would then be reflected by the actual text field.
  2. Initial element state before preprocessors and mask execution. It is a readonly argument, the past cannot be changed...

Postprocessor returns an objects of the same interface as the first argument.

With great power comes great responsibility!

Postprocessor is the final step before input's value update which gives a lot of flexibility. Use postprocessor wisely and return a valid value!

Stacking of multiple processors

The Maskito team likes code decomposition and promotes it! Don't put all complex logic inside a single processor. Both parameters preprocessors and postprocessors accepts array of same type processors. Break your code into the several independent processors so that each processor implements only a single task.

Next steps

The following sections are recommended to explore core concepts further:

diff --git a/core-concepts/transformer/index.html b/core-concepts/transformer/index.html index f001c162f..d286d7a2a 100644 --- a/core-concepts/transformer/index.html +++ b/core-concepts/transformer/index.html @@ -22,7 +22,7 @@ -

Transformer
CORE

Maskito libraries were created to prevent user from typing invalid value.
Maskito listens beforeinput and input events. Programmatic (by developer) changes of input's value don't trigger these events!

Maskito is based on the assumption that developer is capable to programmatically patch input with valid value!

If you need to programmatically patch input's value but you are not sure that your value is valid (for example, you get it from the server), you should use maskitoTransform utility .

Next steps

The following sections are recommended to explore core concepts further:

+

Transformer
CORE

Maskito libraries were created to prevent user from typing invalid value.
Maskito listens beforeinput and input events. Programmatic (by developer) changes of input's value don't trigger these events!

Maskito is based on the assumption that developer is capable to programmatically patch input with valid value!

If you need to programmatically patch input's value but you are not sure that your value is valid (for example, you get it from the server), you should use maskitoTransform utility .

Next steps

The following sections are recommended to explore core concepts further:

diff --git a/cypress/index.html b/cypress/index.html index a4a26e4a6..faa1ca5cc 100644 --- a/cypress/index.html +++ b/cypress/index.html @@ -22,7 +22,7 @@ -

Cypress

+

Cypress

diff --git a/frameworks/angular/Setup/index.html b/frameworks/angular/Setup/index.html index 04460ec8d..ab8ab7df5 100644 --- a/frameworks/angular/Setup/index.html +++ b/frameworks/angular/Setup/index.html @@ -22,7 +22,7 @@ -

Angular

  1. Install libraries

    /your/project/path> +

    Angular

    1. Install libraries

      /your/project/path>

    2. Import MaskitoModule to your module

      your.module.ts

    diff --git a/frameworks/angular/index.html b/frameworks/angular/index.html index 45990010c..cc82a73a7 100644 --- a/frameworks/angular/index.html +++ b/frameworks/angular/index.html @@ -22,11 +22,11 @@ -

    Angular

    @maskito/angular is a light-weighted library to use Maskito in an Angular-way.
    Prerequisites

    To get the most out of this guide, you should review the topic "Core Concepts" first.

    Write less code

    • No need to query element from DOM. Just pass all required options to [maskito] directive.
    • No need to worry about clean-ups. All created event listeners are automatically removed after element is detached from DOM.

    Basic directive approach

    Use it when you have direct access to native input element.

    your.component.ts +

    Angular

    @maskito/angular is a light-weighted library to use Maskito in an Angular-way.
    Prerequisites

    To get the most out of this guide, you should review the topic "Core Concepts" first.

    Write less code

    • No need to query element from DOM. Just pass all required options to [maskito] directive.
    • No need to worry about clean-ups. All created event listeners are automatically removed after element is detached from DOM.

    Basic directive approach

    Use it when you have direct access to native input element.

    your.component.ts

    Nested input element

    Pass a predicate to maskito to find input element for you, if you do not have a direct access to it.

    By default maskito will try to find input/textarea by querying its host: host.querySelector('input,textarea') so that might be sufficient. Use custom predicate if you need custom logic.

    your.component.ts -

    Custom input

    See querying nested input in action

    Default behavior is enough for Taiga UI inputs
    Custom predicate is required if target input is not the first on in the DOM

    Custom input

    See querying nested input in action

    Default behavior is enough for Taiga UI inputs
    Custom predicate is required if target input is not the first on in the DOM

    Form controls

    When directly on native input/textarea tag, maskito directive formats value set programmatically with Angular forms.

    Pipe

    Format arbitrary value with the same options

    Balance: $12 345.67
    diff --git a/frameworks/react/index.html b/frameworks/react/index.html index 983f12d8c..378474b0b 100644 --- a/frameworks/react/index.html +++ b/frameworks/react/index.html @@ -22,7 +22,7 @@ -

    React

    @maskito/react is a light-weighted library to use Maskito in an React-way.

    Prerequisites

    To get the most out of this guide, you should review the topic "Core Concepts" first.

    Getting Started

    Install libraries

    and use Maskito

    Query nested input element

    Pass a predicate to elementPredicate to find input element for you, if you do not have a direct access to it. For example, you use component from some UI Kit library.

    By default Maskito will try to find input/textarea by querying its host: host.querySelector('input,textarea') so that might be sufficient. Use custom predicate if you need custom logic.

    Controlled masked input

    Maskito core is developed as framework-agnostic library. It does not depend on any JS-framework's peculiarities. It uses only native browser API. That is why you should use native onInput instead of React-specific onChange event. Do not worry, both events works similarly! Read more about it in the official React documentation.

    Best practices & Anti-Patterns

    Pass named variables to avoid unnecessary hook runs with Maskito recreation:

    +

    React

    @maskito/react is a light-weighted library to use Maskito in an React-way.

    Prerequisites

    To get the most out of this guide, you should review the topic "Core Concepts" first.

    Getting Started

    Install libraries

    and use Maskito

    Query nested input element

    Pass a predicate to elementPredicate to find input element for you, if you do not have a direct access to it. For example, you use component from some UI Kit library.

    By default Maskito will try to find input/textarea by querying its host: host.querySelector('input,textarea') so that might be sufficient. Use custom predicate if you need custom logic.

    Controlled masked input

    Maskito core is developed as framework-agnostic library. It does not depend on any JS-framework's peculiarities. It uses only native browser API. That is why you should use native onInput instead of React-specific onChange event. Do not worry, both events works similarly! Read more about it in the official React documentation.

    Best practices & Anti-Patterns

    Pass named variables to avoid unnecessary hook runs with Maskito recreation:

    diff --git a/frameworks/vue/index.html b/frameworks/vue/index.html index b4433dab2..81613817b 100644 --- a/frameworks/vue/index.html +++ b/frameworks/vue/index.html @@ -22,7 +22,7 @@ -

    Vue

    @maskito/vue is a light-weighted library to use Maskito in as a Vue directive.

    Prerequisites

    To get the most out of this guide, you should review the topic "Core Concepts" first.

    Getting Started

    Install libraries

    and use Maskito

    Above code example in practice

    Query nested input element

    Pass a predicate to elementPredicate to find input element for you, if you do not have a direct access to it. For example, you use component from some UI Kit library.

    By default Maskito will try to find input/textarea by querying its host: host.querySelector('input,textarea') so that might be sufficient. Use custom predicate if you need custom logic.

    Best practices & Anti-Patterns

    Avoid inlining options object, otherwise Maskito will be recreated on every update:

    +

    Vue

    @maskito/vue is a light-weighted library to use Maskito in as a Vue directive.

    Prerequisites

    To get the most out of this guide, you should review the topic "Core Concepts" first.

    Getting Started

    Install libraries

    and use Maskito

    Above code example in practice

    Query nested input element

    Pass a predicate to elementPredicate to find input element for you, if you do not have a direct access to it. For example, you use component from some UI Kit library.

    By default Maskito will try to find input/textarea by querying its host: host.querySelector('input,textarea') so that might be sufficient. Use custom predicate if you need custom logic.

    Best practices & Anti-Patterns

    Avoid inlining options object, otherwise Maskito will be recreated on every update:

    diff --git a/getting-started/maskito-libraries/index.html b/getting-started/maskito-libraries/index.html index 33ded6678..de8952e6b 100644 --- a/getting-started/maskito-libraries/index.html +++ b/getting-started/maskito-libraries/index.html @@ -22,7 +22,7 @@ -

    Maskito libraries

    Maskito is a collection of libraries. Explore them and learn how to install and use them.

    • @maskito/core

      It is the main zero-dependency and framework-agnostic package. It can be used alone in vanilla JavaScript project. It listens to beforeinput and input events to validate and calibrate text field value.

      All other Maskito's packages require @maskito/core as peer-dependency.

      /your/project/path> +

      Maskito libraries

      Maskito is a collection of libraries. Explore them and learn how to install and use them.

      • @maskito/core

        It is the main zero-dependency and framework-agnostic package. It can be used alone in vanilla JavaScript project. It listens to beforeinput and input events to validate and calibrate text field value.

        All other Maskito's packages require @maskito/core as peer-dependency.

        /your/project/path>

        Learn more about this library in "Core Concepts" section.

      • @maskito/kit

        The optional framework-agnostic package. It contains ready-to-use masks with configurable parameters.

        /your/project/path>

        See examples: Number or Time .

      • @maskito/phone

        The optional framework-agnostic package. It contains ready-to-use international phone mask based on popular libphonenumber-js package.

        /your/project/path>

        See example Phone Mask

      • @maskito/angular

        The Angular-specific library. It provides a convenient way to use Maskito as a directive.

        /your/project/path> diff --git a/getting-started/what-is-maskito/index.html b/getting-started/what-is-maskito/index.html index 58abcc5ba..0147eaa7f 100644 --- a/getting-started/what-is-maskito/index.html +++ b/getting-started/what-is-maskito/index.html @@ -22,7 +22,7 @@ -

        What is Maskito?

        Maskito is a collection of libraries, built with TypeScript. It helps you to create an input mask which ensures that users type values according to predefined format.

        Core concepts of the libraries are simple but they provide flexible API to set any format you wish: numbers, phone, date, credit card number etc.

        Why Maskito?

        • Maskito supports all user’s interactions with text fields: basic typing and deleting via keyboard, pasting, dropping text inside with a pointer, browser autofill, predictive text from mobile native keyboard.
        • Maskito is robust. The whole project is developed with strict TypeScript mode. Our code is covered by hundreds of Cypress tests.
        • Server Side Rendering and Shadow DOM support.
        • You can use it with HTMLInputElement and HTMLTextAreaElement .
        • Maskito core is zero-dependency package. You can mask input in your vanilla JavaScript project. However, we have separate packages for Angular , React and Vue as well.
        • Maskito includes optional framework-agnostic package with configurable ready-to-use masks.

        No textfield with invalid value! Use Maskito. Mask it!

        Learn about Maskito

        +

        What is Maskito?

        Maskito is a collection of libraries, built with TypeScript. It helps you to create an input mask which ensures that users type values according to predefined format.

        Core concepts of the libraries are simple but they provide flexible API to set any format you wish: numbers, phone, date, credit card number etc.

        Why Maskito?

        • Maskito supports all user’s interactions with text fields: basic typing and deleting via keyboard, pasting, dropping text inside with a pointer, browser autofill, predictive text from mobile native keyboard.
        • Maskito is robust. The whole project is developed with strict TypeScript mode. Our code is covered by hundreds of Cypress tests.
        • Server Side Rendering and Shadow DOM support.
        • You can use it with HTMLInputElement and HTMLTextAreaElement .
        • Maskito core is zero-dependency package. You can mask input in your vanilla JavaScript project. However, we have separate packages for Angular , React and Vue as well.
        • Maskito includes optional framework-agnostic package with configurable ready-to-use masks.

        No textfield with invalid value! Use Maskito. Mask it!

        Learn about Maskito

        diff --git a/index.html b/index.html index 41940ec03..e1232b020 100644 --- a/index.html +++ b/index.html @@ -22,7 +22,7 @@ -

        What is Maskito?

        Maskito is a collection of libraries, built with TypeScript. It helps you to create an input mask which ensures that users type values according to predefined format.

        Core concepts of the libraries are simple but they provide flexible API to set any format you wish: numbers, phone, date, credit card number etc.

        Why Maskito?

        • Maskito supports all user’s interactions with text fields: basic typing and deleting via keyboard, pasting, dropping text inside with a pointer, browser autofill, predictive text from mobile native keyboard.
        • Maskito is robust. The whole project is developed with strict TypeScript mode. Our code is covered by hundreds of Cypress tests.
        • Server Side Rendering and Shadow DOM support.
        • You can use it with HTMLInputElement and HTMLTextAreaElement .
        • Maskito core is zero-dependency package. You can mask input in your vanilla JavaScript project. However, we have separate packages for Angular , React and Vue as well.
        • Maskito includes optional framework-agnostic package with configurable ready-to-use masks.

        No textfield with invalid value! Use Maskito. Mask it!

        Learn about Maskito

        +

        What is Maskito?

        Maskito is a collection of libraries, built with TypeScript. It helps you to create an input mask which ensures that users type values according to predefined format.

        Core concepts of the libraries are simple but they provide flexible API to set any format you wish: numbers, phone, date, credit card number etc.

        Why Maskito?

        • Maskito supports all user’s interactions with text fields: basic typing and deleting via keyboard, pasting, dropping text inside with a pointer, browser autofill, predictive text from mobile native keyboard.
        • Maskito is robust. The whole project is developed with strict TypeScript mode. Our code is covered by hundreds of Cypress tests.
        • Server Side Rendering and Shadow DOM support.
        • You can use it with HTMLInputElement and HTMLTextAreaElement .
        • Maskito core is zero-dependency package. You can mask input in your vanilla JavaScript project. However, we have separate packages for Angular , React and Vue as well.
        • Maskito includes optional framework-agnostic package with configurable ready-to-use masks.

        No textfield with invalid value! Use Maskito. Mask it!

        Learn about Maskito

        diff --git a/kit/date-range/API/index.html b/kit/date-range/API/index.html index 291811f0c..a69706ff4 100644 --- a/kit/date-range/API/index.html +++ b/kit/date-range/API/index.html @@ -22,7 +22,7 @@ -

        DateRange
        KIT

        tuiMode:
        -
        Name and descriptionType Value
        [mode]
        Date format mode
        MaskitoDateMode
        'dd/mm/yyyy'
        [dateSeparator]
        Separator between date segments (days, months and years).

        Default:. (dot).

        string
        [rangeSeparator]
        Separator between dates of the date range.

        Default: â€“ 

        string
        [min]
        Earliest date
        Date
        '0001-01-01'
        [max]
        Latest date
        Date
        '9999-12-31'
        [minLength]
        Minimal length of the range
        MaskitoDateSegments<number>
        {}
        [maxLength]
        Maximal length of the range
        MaskitoDateSegments<number>
        {}
        [separator]
        deprecated Use dateSeparator instead.

        Default:. (dot).

        +

        DateRange
        KIT

        tuiMode:
        -
        Name and descriptionType Value
        [mode]
        Date format mode
        MaskitoDateMode
        'dd/mm/yyyy'
        [dateSeparator]
        Separator between date segments (days, months and years).

        Default:. (dot).

        string
        [rangeSeparator]
        Separator between dates of the date range.

        Default: â€“ 

        string
        [min]
        Earliest date
        Date
        '0001-01-01'
        [max]
        Latest date
        Date
        '9999-12-31'
        [minLength]
        Minimal length of the range
        MaskitoDateSegments<number>
        {}
        [maxLength]
        Maximal length of the range
        MaskitoDateSegments<number>
        {}
        [separator]
        deprecated Use dateSeparator instead.

        Default:. (dot).

        diff --git a/kit/date-range/index.html b/kit/date-range/index.html index 3e7cc4657..0aaee5ac7 100644 --- a/kit/date-range/index.html +++ b/kit/date-range/index.html @@ -22,7 +22,7 @@ -

        DateRange
        KIT

        Use maskitoDateRangeOptionsGenerator to create a mask to input a range of dates.

        Date localization

        Use mode and separator parameters to get a mask with a locale specific representation of dates.

        Min and max dates

        Parameters min and max allow you to set the earliest and the latest available dates. They accept native Date .

        Min and max length of range

        Use minLength and maxLength parameters to set minimal and maximal length of the date range.

        Custom range separator

        Use rangeSeparator parameter to customize separator between dates of the date range.

        +

        DateRange
        KIT

        Use maskitoDateRangeOptionsGenerator to create a mask to input a range of dates.

        Date localization

        Use mode and separator parameters to get a mask with a locale specific representation of dates.

        Min and max dates

        Parameters min and max allow you to set the earliest and the latest available dates. They accept native Date .

        Min and max length of range

        Use minLength and maxLength parameters to set minimal and maximal length of the date range.

        Custom range separator

        Use rangeSeparator parameter to customize separator between dates of the date range.

        diff --git a/kit/date-time/API/index.html b/kit/date-time/API/index.html index 8b0371319..b6122dae5 100644 --- a/kit/date-time/API/index.html +++ b/kit/date-time/API/index.html @@ -22,7 +22,7 @@ -

        DateTime
        KIT

        tuiMode:
        -
        Name and descriptionType Value
        [dateMode]
        Date format mode
        MaskitoDateMode
        'dd/mm/yyyy'
        [timeMode]
        Time format mode
        MaskitoTimeMode
        'HH:MM'
        [dateSeparator]
        Date separator

        Default:. (dot).

        string
        [min]
        Earliest date
        Date
        '0001-01-01T00:00:00'
        [max]
        Latest date
        Date
        '9999-12-31T23:59:59'
        +

        DateTime
        KIT

        tuiMode:
        -
        Name and descriptionType Value
        [dateMode]
        Date format mode
        MaskitoDateMode
        'dd/mm/yyyy'
        [timeMode]
        Time format mode
        MaskitoTimeMode
        'HH:MM'
        [dateSeparator]
        Date separator

        Default:. (dot).

        string
        [min]
        Earliest date
        Date
        '0001-01-01T00:00:00'
        [max]
        Latest date
        Date
        '9999-12-31T23:59:59'
        diff --git a/kit/date-time/index.html b/kit/date-time/index.html index 4c046c4fd..13452ef34 100644 --- a/kit/date-time/index.html +++ b/kit/date-time/index.html @@ -22,7 +22,7 @@ -

        DateTime
        KIT

        Use maskitoDateTimeOptionsGenerator to create a mask to input both date and time.

        Localization

        Use dateMode , timeMode and dateSeparator parameters to get a mask with a locale specific representation of dates.

        Min and max

        Parameters min and max allow to set the earliest and the latest available dates. They accept native Date .

        +

        DateTime
        KIT

        Use maskitoDateTimeOptionsGenerator to create a mask to input both date and time.

        Localization

        Use dateMode , timeMode and dateSeparator parameters to get a mask with a locale specific representation of dates.

        Min and max

        Parameters min and max allow to set the earliest and the latest available dates. They accept native Date .

        diff --git a/kit/date/API/index.html b/kit/date/API/index.html index c0be90c3d..0f336adf1 100644 --- a/kit/date/API/index.html +++ b/kit/date/API/index.html @@ -22,7 +22,7 @@ -

        Date
        KIT

        tuiMode:
        -
        Name and descriptionType Value
        [mode]
        Date format mode
        MaskitoDateMode
        'dd/mm/yyyy'
        [separator]
        Symbol for separating date-segments (days, months, years)

        Default:. (dot)

        string
        '.'
        [min]
        Earliest date

        Default:new Date('0001-01-01')

        Date
        '0001-01-01'
        [max]
        Latest date

        Default:new Date('9999-12-31')

        Date
        '9999-12-31'
        +

        Date
        KIT

        tuiMode:
        -
        Name and descriptionType Value
        [mode]
        Date format mode
        MaskitoDateMode
        'dd/mm/yyyy'
        [separator]
        Symbol for separating date-segments (days, months, years)

        Default:. (dot)

        string
        '.'
        [min]
        Earliest date

        Default:new Date('0001-01-01')

        Date
        '0001-01-01'
        [max]
        Latest date

        Default:new Date('9999-12-31')

        Date
        '9999-12-31'
        diff --git a/kit/date/index.html b/kit/date/index.html index ba5f7b8a9..d0453bc0d 100644 --- a/kit/date/index.html +++ b/kit/date/index.html @@ -22,7 +22,7 @@ -

        Date
        KIT

        Use maskitoDateOptionsGenerator to create a mask for date input.

        Date localization

        Use mode and separator properties to get a mask with a locale specific representation of dates.

        Min/Max

        Properties min and max allow you to set the earliest and the latest available dates. They accept native Date .

        +

        Date
        KIT

        Use maskitoDateOptionsGenerator to create a mask for date input.

        Date localization

        Use mode and separator properties to get a mask with a locale specific representation of dates.

        Min/Max

        Properties min and max allow you to set the earliest and the latest available dates. They accept native Date .

        diff --git a/kit/number/API/index.html b/kit/number/API/index.html index 09aec11ab..a2119bbed 100644 --- a/kit/number/API/index.html +++ b/kit/number/API/index.html @@ -22,7 +22,7 @@ -

        Number
        KIT

        tuiMode:
        -
        Name and descriptionType Value
        [precision]
        A number of digits after decimalSeparator .

        Use Infinity for an untouched decimal part.

        Default:0 (decimal part is forbidden).

        number
        0
        [decimalSeparator]
        Symbol for separating fraction.

        Default: dot.

        string
        [decimalPseudoSeparators]
        Symbols to be replaced with decimalSeparator .

        Default:['.', 'ю', 'б'] .

        string[]
        ['.', ',', 'б', 'ю']
        [decimalZeroPadding]
        If number of digits after decimalSeparator is always equal to the precision .

        Default:false (number of digits can be less than precision) .

        boolean
        [thousandSeparator]
        Symbol for separating thousands.

        Default: non-breaking space.

        string
        [min]
        The lowest permitted value.

        Default:Number.MIN_SAFE_INTEGER .

        number
        [max]
        The greatest permitted value.

        Default:Number.MAX_SAFE_INTEGER .

        number
        [prefix]
        A prefix symbol, like currency.

        Default: empty string (no prefix).

        string
        [postfix]
        A postfix symbol, like currency.

        Default: empty string (no postfix).

        string
        +

        Number
        KIT

        tuiMode:
        -
        Name and descriptionType Value
        [precision]
        A number of digits after decimalSeparator .

        Use Infinity for an untouched decimal part.

        Default:0 (decimal part is forbidden).

        number
        0
        [decimalSeparator]
        Symbol for separating fraction.

        Default: dot.

        string
        [decimalPseudoSeparators]
        Symbols to be replaced with decimalSeparator .

        Default:['.', 'ю', 'б'] .

        string[]
        ['.', ',', 'б', 'ю']
        [decimalZeroPadding]
        If number of digits after decimalSeparator is always equal to the precision .

        Default:false (number of digits can be less than precision) .

        boolean
        [thousandSeparator]
        Symbol for separating thousands.

        Default: non-breaking space.

        string
        [min]
        The lowest permitted value.

        Default:Number.MIN_SAFE_INTEGER .

        number
        [max]
        The greatest permitted value.

        Default:Number.MAX_SAFE_INTEGER .

        number
        [prefix]
        A prefix symbol, like currency.

        Default: empty string (no prefix).

        string
        [postfix]
        A postfix symbol, like currency.

        Default: empty string (no postfix).

        string
        diff --git a/kit/number/index.html b/kit/number/index.html index ca1cd2a07..007bc1f9a 100644 --- a/kit/number/index.html +++ b/kit/number/index.html @@ -22,7 +22,7 @@ -

        Number
        KIT

        Use maskitoNumberOptionsGenerator to create a mask for entering a formatted number.
        Despite the name of the mask, element's raw value is still string.

        Use maskitoParseNumber to get number-type value.

        High precision

        Use precision parameter to configure the number of digits after decimal separator.

        Separators

        Use decimalSeparator and thousandSeparator to get mask with locale specific representation of numbers.

        In Germany people use comma as decimal separator and dot for thousands

        Postfix

        Use postfix parameter to set non-removable text after the number.
        Additionally you can use maskitoCaretGuard to clamp caret inside allowable range.
        This example also shows how to restrict the greatest permitted value via max parameter.

        Decimal zero padding

        Set decimalZeroPadding: true to always show trailing zeroes.

        Non removable dollar sign is achieved by using prefix parameter.

        Dynamic decimal zero padding

        You can change options on the fly to build complex logic.
        This example shows how to initially disable decimalZeroPadding and enable it only after user inserts decimal separator.

        +

        Number
        KIT

        Use maskitoNumberOptionsGenerator to create a mask for entering a formatted number.
        Despite the name of the mask, element's raw value is still string.

        Use maskitoParseNumber to get number-type value.

        High precision

        Use precision parameter to configure the number of digits after decimal separator.

        Separators

        Use decimalSeparator and thousandSeparator to get mask with locale specific representation of numbers.

        In Germany people use comma as decimal separator and dot for thousands

        Postfix

        Use postfix parameter to set non-removable text after the number.
        Additionally you can use maskitoCaretGuard to clamp caret inside allowable range.
        This example also shows how to restrict the greatest permitted value via max parameter.

        Decimal zero padding

        Set decimalZeroPadding: true to always show trailing zeroes.

        Non removable dollar sign is achieved by using prefix parameter.

        Dynamic decimal zero padding

        You can change options on the fly to build complex logic.
        This example shows how to initially disable decimalZeroPadding and enable it only after user inserts decimal separator.

        diff --git a/kit/time/API/index.html b/kit/time/API/index.html index 06ecf2aa2..37787098d 100644 --- a/kit/time/API/index.html +++ b/kit/time/API/index.html @@ -22,7 +22,7 @@ -

        Time
        KIT

        tuiMode:
        -
        Name and descriptionType Value
        [mode]
        Time format mode
        MaskitoTimeMode
        'HH:MM'
        [timeSegmentMaxValues]
        Max value for every time segment
        MaskitoTimeSegments<number>
        {hours: 23, minutes: 59, seconds: 59, milliseconds: 999}
        +

        Time
        KIT

        tuiMode:
        -
        Name and descriptionType Value
        [mode]
        Time format mode
        MaskitoTimeMode
        'HH:MM'
        [timeSegmentMaxValues]
        Max value for every time segment
        MaskitoTimeSegments<number>
        {hours: 23, minutes: 59, seconds: 59, milliseconds: 999}
        diff --git a/kit/time/index.html b/kit/time/index.html index 63a9a150e..8f2eb0f72 100644 --- a/kit/time/index.html +++ b/kit/time/index.html @@ -22,7 +22,7 @@ -

        Time
        KIT

        Use maskitoTimeOptionsGenerator to create a mask for time input.

        Mode

        Use mode property to set time format.

        Available options : HH:MM , HH:MM:SS or HH:MM:SS.MSS .

        12-hours format

        Property timeSegmentMaxValues allows you to set max value for every time segment.

        Time segments are units of the time which form time string. For example, HH:MM consists of two time segments: hours and minutes.

        +

        Time
        KIT

        Use maskitoTimeOptionsGenerator to create a mask for time input.

        Mode

        Use mode property to set time format.

        Available options : HH:MM , HH:MM:SS or HH:MM:SS.MSS .

        12-hours format

        Property timeSegmentMaxValues allows you to set max value for every time segment.

        Time segments are units of the time which form time string. For example, HH:MM consists of two time segments: hours and minutes.

        diff --git a/recipes/card/index.html b/recipes/card/index.html index 897271406..cdac938f9 100644 --- a/recipes/card/index.html +++ b/recipes/card/index.html @@ -22,7 +22,7 @@ -

        Card
        Recipes

        Creating mask for credit card input requires basic understanding of the following topics:

        +

        Card
        Recipes

        Creating mask for credit card input requires basic understanding of the following topics:

        diff --git a/recipes/phone/index.html b/recipes/phone/index.html index 66a032177..3643277b0 100644 --- a/recipes/phone/index.html +++ b/recipes/phone/index.html @@ -22,7 +22,7 @@ -

        Phone
        Recipes

        Creating mask for a phone number is simple. The only required knowledge is the pattern mask expression with fixed characters . Read more about it in "Mask expression" section.

        This page demonstrates some examples for different countries.

        United States

        Flag of the United States

        Kazakhstan

        The following example demonstrates a more complex mask. It shows how to make the country prefix non-removable. It is achieved by built-in postprocessor from @maskito/kit .

        Read more about it in "With prefix" section.

        Flag of Kazakhstan
        +

        Phone
        Recipes

        Creating mask for a phone number is simple. The only required knowledge is the pattern mask expression with fixed characters . Read more about it in "Mask expression" section.

        This page demonstrates some examples for different countries.

        United States

        Flag of the United States

        Kazakhstan

        The following example demonstrates a more complex mask. It shows how to make the country prefix non-removable. It is achieved by built-in postprocessor from @maskito/kit .

        Read more about it in "With prefix" section.

        Flag of Kazakhstan
        diff --git a/recipes/placeholder/index.html b/recipes/placeholder/index.html index a2773c268..564237907 100644 --- a/recipes/placeholder/index.html +++ b/recipes/placeholder/index.html @@ -22,7 +22,7 @@ -

        With placeholder
        Recipes

        maskitoWithPlaceholder helps to show placeholder mask characters. The placeholder character represents the fillable spot in the mask.

        Card Verification Code

        This example is the simplest demonstration how to create masked input with placeholder .

        The only required prerequisite is basic understanding of "Mask expression" concept.

        Phone

        The following example explains return type of maskitoWithPlaceholder utility — an object which partially implements MaskitoOptions interface. It contains its own processor and postprocessor and plugins to keep caret from getting into placeholder part of the value.

        Also, this complex example uses built-in postprocessor maskitoPrefixPostprocessorGenerator from @maskito/kit .

        Flag of the United States

        Date

        This last example demonstrates how to integrate maskitoWithPlaceholder with any built-in mask from @maskito/kit .

        +

        With placeholder
        Recipes

        maskitoWithPlaceholder helps to show placeholder mask characters. The placeholder character represents the fillable spot in the mask.

        Card Verification Code

        This example is the simplest demonstration how to create masked input with placeholder .

        The only required prerequisite is basic understanding of "Mask expression" concept.

        Phone

        The following example explains return type of maskitoWithPlaceholder utility — an object which partially implements MaskitoOptions interface. It contains its own processor and postprocessor and plugins to keep caret from getting into placeholder part of the value.

        Also, this complex example uses built-in postprocessor maskitoPrefixPostprocessorGenerator from @maskito/kit .

        Flag of the United States

        Date

        This last example demonstrates how to integrate maskitoWithPlaceholder with any built-in mask from @maskito/kit .

        diff --git a/recipes/postfix/index.html b/recipes/postfix/index.html index e22a64788..ee00973f6 100644 --- a/recipes/postfix/index.html +++ b/recipes/postfix/index.html @@ -22,7 +22,7 @@ -

        With postfix
        Recipes

        There are two approaches to add postfix for masked input. Every approach has its own behaviour and requires basic understanding of different core concepts.

        By pattern mask expression

        This example demonstrates how to create postfix via dynamic pattern mask expression . Percent symbol is a trailing fixed character, which will be automatically added when user enters the first digit.

        By postprocessor

        This example demonstrates how to create postfix via postprocessor . It provides more flexibility, and you can configure any desired behaviour. You can use built-in maskitoPostfixPostprocessorGenerator or create your own.

        Don't forget that mask property should be compatible with a new prefix / postfix!

        +

        With postfix
        Recipes

        There are two approaches to add postfix for masked input. Every approach has its own behaviour and requires basic understanding of different core concepts.

        By pattern mask expression

        This example demonstrates how to create postfix via dynamic pattern mask expression . Percent symbol is a trailing fixed character, which will be automatically added when user enters the first digit.

        By postprocessor

        This example demonstrates how to create postfix via postprocessor . It provides more flexibility, and you can configure any desired behaviour. You can use built-in maskitoPostfixPostprocessorGenerator or create your own.

        Don't forget that mask property should be compatible with a new prefix / postfix!

        diff --git a/recipes/prefix/index.html b/recipes/prefix/index.html index 3d1c121e3..962b88ebe 100644 --- a/recipes/prefix/index.html +++ b/recipes/prefix/index.html @@ -22,7 +22,7 @@ -

        With prefix
        Recipes

        Use prefixes to indicate things like currencies, area / phone country codes and etc.

        There are two approaches to add prefix for masked input. Every approach has its own behaviour and requires basic understanding of different core concepts.

        By pattern mask expression

        This example demonstrates how to create prefix via dynamic pattern mask expression . Dollar symbol is a fixed character, which will be automatically added when user forgets to type it or deleted when user erase all digits.

        By postprocessor

        This example demonstrates how to create prefix via postprocessor . It provides more flexibility, and you can configure any desired behaviour. You can use built-in maskitoPrefixPostprocessorGenerator or create your own.

        Don't forget that mask property should be compatible with a new prefix!

        +

        With prefix
        Recipes

        Use prefixes to indicate things like currencies, area / phone country codes and etc.

        There are two approaches to add prefix for masked input. Every approach has its own behaviour and requires basic understanding of different core concepts.

        By pattern mask expression

        This example demonstrates how to create prefix via dynamic pattern mask expression . Dollar symbol is a fixed character, which will be automatically added when user forgets to type it or deleted when user erase all digits.

        By postprocessor

        This example demonstrates how to create prefix via postprocessor . It provides more flexibility, and you can configure any desired behaviour. You can use built-in maskitoPrefixPostprocessorGenerator or create your own.

        Don't forget that mask property should be compatible with a new prefix!

        diff --git a/recipes/textarea/index.html b/recipes/textarea/index.html index 1b13d7e1b..343a7645c 100644 --- a/recipes/textarea/index.html +++ b/recipes/textarea/index.html @@ -22,7 +22,7 @@ -

        Textarea
        Recipes

        You can use Maskito with HTMLTextAreaElement too. API is the same as for HTMLInputElement .

        Learn more in the "Core Concepts" section.

        Latin letters and digits

        +

        Textarea
        Recipes

        You can use Maskito with HTMLTextAreaElement too. API is the same as for HTMLInputElement .

        Learn more in the "Core Concepts" section.

        Latin letters and digits

        diff --git a/stackblitz/index.html b/stackblitz/index.html index c8afd6375..b09ee7a73 100644 --- a/stackblitz/index.html +++ b/stackblitz/index.html @@ -22,7 +22,7 @@ -
        Stackblitz loading...
        +
        Stackblitz loading...