diff --git a/browser-support/index.html b/browser-support/index.html index 42e3baf88..5130947dd 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 d6824791c..897502731 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 93f5133af..62a95b655 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 b380f6e12..0f119484a 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 447b88059..f1952c307 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 eae9696f9..b070ba580 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 555f321b4..3e4bee735 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 7d1d2663f..6e59810f9 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 8f9fb7bfd..eed93e867 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 771ae7ed6..9a9945f7e 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 345f99534..befe3c51f 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 445b98ec4..2a883f1c8 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 616e26fd8..28a8df83a 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 168a9f128..42e7cf2ba 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 a1a5d691b..9a9ec7fcd 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/angular

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

        /your/project/path>

        Learn more about this library in "Angular" section.

      • @maskito/react

        The React-specific library. It provides a convenient way to use Maskito as a hook.

        /your/project/path> diff --git a/getting-started/what-is-maskito/index.html b/getting-started/what-is-maskito/index.html index 101c4ccd2..66016901b 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 614040ad3..732c0f0d8 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 d59a420f1..9d448d320 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 50df3d49c..82906bb5c 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 cafe5662f..cf43feeb5 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 9761b7217..a4e8ef036 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 044f107ba..dfcabac99 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 851ea37d6..9b9af18f3 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 cac800138..e079a20ad 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 e313093a8..14ee25ab0 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 beef27802..19f0fde22 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 0cbdbcd8e..dbe4edf09 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 a9199779f..0af0d336d 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 d4ca8300e..9f55ee7e2 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 792e4c70f..4cbd86c9a 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 4e6bd309f..43f5a2d62 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 8277d4e34..68e09d95c 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 88746b4b1..cf8554fa0 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 6ec5a9ba8..11975f90e 100644 --- a/stackblitz/index.html +++ b/stackblitz/index.html @@ -22,7 +22,7 @@ -
        Stackblitz loading...
        +
        Stackblitz loading...