diff --git a/addons/phone/index.html b/addons/phone/index.html index 1914a608e..4a53022b8 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 23ed79ea2..ae59fcc7e 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 2bbf8e4e1..b500d45fa 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.4.0 (2023-07-27)

diff --git a/core-concepts/element-state/index.html b/core-concepts/element-state/index.html index a3155448f..eea18f5b6 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 1de43cb24..ca8ee5037 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 4e534608a..30d603514 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 03315cdf2..4c6c92fd8 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 05b433fb2..5f28cb11a 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 98fbe0846..fb9b992bb 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 5e1fde426..9ac03823e 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. Programatic (by developer) changes of input's value don't trigger these events!

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

If you need to programatically 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. Programatic (by developer) changes of input's value don't trigger these events!

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

If you need to programatically 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 8574fa252..9a5bdb345 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 c3ce28588..cbdee1645 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 74b594086..accb92708 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 70c8a4993..d10b3b62f 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 01d2c1906..1ce84623d 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 0a7ed7c8b..96343366a 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 66c4b6fe5..7804d1072 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 d6f96ba04..9f2205da1 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 35574e2f4..5b152f3bc 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 85672a9c9..ebfcd38c4 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 cc3f2e8f6..9788e6e5a 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 10bca0709..6e477bc74 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 d94f5b07e..9e55de5b6 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 f2ec560a8..5ceaca541 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 e05d3caaa..c03d5329d 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 be2c496bb..93b33d0b9 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 fbe0ef9e7..db502e734 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 12ac2d40f..52e0f3c90 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 ebc6bd06e..4de7a3c55 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 4c590e965..982c42f53 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 dd1835f7f..ed9c658a4 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 ca4ecd97a..9f8ff6e94 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 e9de3647c..6b0dbab3a 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 98f25448a..d32186667 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 5c4da2c31..0277493df 100644 --- a/stackblitz/index.html +++ b/stackblitz/index.html @@ -22,7 +22,7 @@ -
        Stackblitz loading...
        +
        Stackblitz loading...