Skip to content

Input Mask ​

Format user input and process only the characters valuable to your application. Use this plugin to format phone numbers, credit card numbers, and more.

This plugin makes the native libraries InputMask (Android) and InputMask (iOS) compatible with NativeScript.

Installation ​

bash
npm install @nstudio/nativescript-input-mask

Usage ​

Angular ​

Register the element in your app module:

typescript
import { registerElement } from '@nativescript/angular';
import { InputMask } from '@nstudio/nativescript-input-mask';

registerElement('InputMask', () => InputMask);

Use in your component:

typescript
import { Component } from '@angular/core';

@Component({
  selector: 'app-phone',
  template: `
    <StackLayout>
      <InputMask 
        mask="([000]) [000]-[0000]" 
        text="1235551111" 
        (maskedValueChange)="onMaskedValueChange($event)" 
        (completedChange)="onCompletedChange($event)">
      </InputMask>
    </StackLayout>
  `,
})
export class PhoneComponent {
  onMaskedValueChange(args) {
    console.log('Masked value:', args.value); // e.g. "(123) 555-1111"
  }

  onCompletedChange(args) {
    console.log('Completed:', args.value); // true when all required chars filled
  }
}

Mask Syntax ​

Masks consist of blocks of symbols:

[] - Block for User Input ​

  • 0 - Mandatory digit. [000] allows "123"
  • 9 - Optional digit. [00099] allows 3 to 5 digits
  • A - Mandatory letter. [AAA] allows "abc"
  • a - Optional letter. [AAAaaa] allows 3 to 6 letters
  • _ - Mandatory symbol (digit or letter)
  • - - Optional symbol (digit or letter)

{} - Fixed Symbols ​

Symbols within curly brackets are part of the extracted value but cannot be altered.

  • [00]-[00] formats to "12-34", extracts "1234"
  • [00]{-}[00] formats to "12-34", extracts "12-34"

Mask Examples ​

MaskDescription
[00000000000]Simple number
+1 ([000]) [000]-[0000]US phone number
[0000]{-}[00]Date with separator
[AAAA] [0000] [0000] [0000]Credit card
8([000])[000]-[00]-[00]Russian phone

Properties ​

PropertyDefaultDescription
mask""The mask pattern to apply
maskedValue""Formatted value with mask applied
text""Raw extracted value
completedfalseTrue when all mandatory characters filled

Events ​

EventDescription
maskedValueChangeFired when the masked value changes
completedChangeFired when completion status changes

Notes ​

  • Masks can be changed on the fly
  • The text property contains the extracted value (without mask formatting)
  • The maskedValue property contains the formatted display value
  • InputMask extends TextField so all TextField properties are available

License ​

Apache License Version 2.0