ngx-mask 14.2.3 → 14.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/README.md +124 -23
  2. package/esm2020/index.mjs +6 -8
  3. package/esm2020/lib/custom-keyboard-event.mjs +2 -1
  4. package/esm2020/lib/ngx-mask-applier.service.mjs +643 -0
  5. package/esm2020/lib/ngx-mask-expression.enum.mjs +2 -0
  6. package/esm2020/lib/ngx-mask.config.mjs +90 -0
  7. package/esm2020/lib/ngx-mask.directive.mjs +909 -0
  8. package/esm2020/lib/ngx-mask.pipe.mjs +104 -0
  9. package/esm2020/lib/ngx-mask.providers.mjs +34 -0
  10. package/esm2020/lib/ngx-mask.service.mjs +570 -0
  11. package/fesm2015/ngx-mask.mjs +1205 -559
  12. package/fesm2015/ngx-mask.mjs.map +1 -1
  13. package/fesm2020/ngx-mask.mjs +1204 -547
  14. package/fesm2020/ngx-mask.mjs.map +1 -1
  15. package/index.d.ts +5 -7
  16. package/lib/custom-keyboard-event.d.ts +1 -1
  17. package/lib/{mask-applier.service.d.ts → ngx-mask-applier.service.d.ts} +21 -14
  18. package/lib/ngx-mask-expression.enum.d.ts +42 -0
  19. package/lib/{config.d.ts → ngx-mask.config.d.ts} +16 -5
  20. package/lib/ngx-mask.directive.d.ts +71 -0
  21. package/lib/ngx-mask.pipe.d.ts +13 -0
  22. package/lib/ngx-mask.providers.d.ts +4 -0
  23. package/lib/{mask.service.d.ts → ngx-mask.service.d.ts} +21 -17
  24. package/package.json +4 -4
  25. package/esm2020/lib/config.mjs +0 -81
  26. package/esm2020/lib/mask-applier.service.mjs +0 -519
  27. package/esm2020/lib/mask.directive.mjs +0 -599
  28. package/esm2020/lib/mask.pipe.mjs +0 -30
  29. package/esm2020/lib/mask.service.mjs +0 -400
  30. package/esm2020/lib/ngx-mask.module.mjs +0 -53
  31. package/lib/mask.directive.d.ts +0 -69
  32. package/lib/mask.pipe.d.ts +0 -11
  33. package/lib/ngx-mask.module.d.ts +0 -16
package/README.md CHANGED
@@ -1,8 +1,12 @@
1
- <a href="https://jsdaddy.github.io/ngx-mask">
2
- <h1 align="center">ngx-mask</h1>
1
+ <a href="http://jsdaddy.io/img/logo.png">
2
+ <h1 align="center">NGX MASK</h1>
3
3
  </a>
4
4
 
5
- [![CI](https://github.com/JsDaddy/ngx-mask/actions/workflows/main.yml/badge.svg?branch=develop)](https://github.com/JsDaddy/ngx-mask/actions/workflows/main.yml)
5
+ <p align="center">
6
+ NGX MASK is the best directive to solve masking input with needed pattern
7
+ </p>
8
+
9
+ [![CI](https://github.com/JsDaddy/ngx-mask/actions/workflows/quality-check.yml/badge.svg?branch=develop)](https://github.com/JsDaddy/ngx-mask/actions/workflows/main.yml)
6
10
  [![npm](https://img.shields.io/npm/v/ngx-mask.svg)](https://www.npmjs.com/package/ngx-mask)
7
11
  [![npm downloads](https://img.shields.io/npm/dt/ngx-mask.svg)](https://npmjs.org/ngx-mask)
8
12
 
@@ -12,10 +16,11 @@
12
16
 
13
17
  [![GitHub stars](https://img.shields.io/github/stars/JSDaddy/ngx-mask.svg?label=GitHub%20Stars&style=flat)](https://github.com/JSDaddy/ngx-mask)
14
18
 
15
- You can also try our [NGX LOADER INDICATOR](https://www.npmjs.com/package/ngx-loader-indicator).
16
- You can also try our [NGX COPYPASTE](https://www.npmjs.com/package/ngx-copypaste).
19
+ You can also try our NGX LOADER INDICATOR [check](https://www.npmjs.com/package/ngx-loader-indicator).
20
+ You can also try our NGX COPYPASTE [check](https://www.npmjs.com/package/ngx-copypaste).
21
+
22
+ ### You can try live [documentation](https://jsdaddy.github.io/ngx-mask/) with examples
17
23
 
18
- ### You can see the full [documentation](https://jsdaddy.github.io/ngx-mask-page/) with examples
19
24
 
20
25
  ## Installing
21
26
 
@@ -23,8 +28,92 @@ You can also try our [NGX COPYPASTE](https://www.npmjs.com/package/ngx-copypaste
23
28
  $ npm install --save ngx-mask
24
29
  ```
25
30
 
26
- ## Quickstart
31
+ ## Quickstart if ngx-mask version >= 15.0.0
32
+
33
+ Import **ngx-mask** directive, pipe and provide NgxMask providers with `provideNgxMask` function.
34
+
35
+ ### With default config options application level
36
+
37
+ ```typescript
38
+ bootstrapApplication(AppComponent, {
39
+ providers: [
40
+ (...)
41
+ provideEnvironmentNgxMask(),
42
+ (...)
43
+ ],
44
+ }).catch((err) => console.error(err));
45
+ ```
46
+
47
+ ### Passing your own mask config options
48
+
49
+ ```typescript
50
+ import { IConfig } from 'ngx-mask'
51
+
52
+ const maskConfig: Partial<IConfig> = {
53
+ validation: false,
54
+ };
55
+
56
+ bootstrapApplication(AppComponent, {
57
+ providers: [
58
+ (...)
59
+ provideEnvironmentNgxMask(maskConfig),
60
+ (...)
61
+ ],
62
+ }).catch((err) => console.error(err));
63
+ ```
64
+
65
+ ### Using a function to configure:
66
+
67
+ ```typescript
68
+ const maskConfigFunction: () => Partial<IConfig> = () => {
69
+ return {
70
+ validation: false,
71
+ };
72
+ };
73
+
74
+ bootstrapApplication(AppComponent, {
75
+ providers: [
76
+ (...)
77
+ provideEnvironmentNgxMask(maskConfigFunction),
78
+ (...)
79
+ ],
80
+ }).catch((err) => console.error(err));
81
+ ```
82
+
83
+ ### With config options feature level
84
+
85
+ ```typescript
86
+ @Component({
87
+ selector: 'my-feature',
88
+ templateUrl: './my-feature.component.html',
89
+ styleUrls: ['./my-feature.component.css'],
90
+ standalone: true,
91
+ imports: [NgxMaskDirective, (...)],
92
+ providers: [
93
+ (...)
94
+ provideNgxMask(),
95
+ (...)
96
+ ],
97
+ })
98
+ export class MyFeatureComponent {}
99
+ ```
100
+
101
+ Then, import directive, pipe to needed standalone component and just define masks in inputs.
102
+
103
+ ### With Angular modules
104
+
105
+ ```typescript
106
+ @NgModule({
107
+ imports: [
108
+ NgxMaskDirective, NgxMaskPipe
109
+ ],
110
+ providers: [provideNgxMask()]
111
+ })
112
+ ```
113
+
114
+ ## Quickstart if ngx-mask version < 15.0.0
27
115
 
116
+ For version ngx-mask < 15.0.0
28
117
  Import **ngx-mask** module in Angular app.
29
118
 
30
119
  ### With default mask config options
@@ -75,7 +164,7 @@ const maskConfigFunction: () => Partial<IConfig> = () => {
75
164
 
76
165
  Then, just define masks in inputs.
77
166
 
78
- ### Usage
167
+ ## Usage
79
168
 
80
169
  ```html
81
170
  <input type="text" mask="<here goes your mask>" />
@@ -89,21 +178,17 @@ or
89
178
 
90
179
  Also, you can use mask pipe.
91
180
 
92
- ### Usage
93
-
94
181
  ```html
95
182
  <span>{{phone | mask: '(000) 000-0000'}}</span>
96
183
  ```
97
184
 
98
- For separator you can add thousandSeparator
99
-
100
- ### Usage
185
+ You could path any valid config options, for example thousandSeparator and suffix
101
186
 
102
187
  ```html
103
- <span>{{value | mask: 'separator':','}}</span>
188
+ <span>{{value | mask: 'separator': {thousandSeparator: ',', suffix: ' sm'}}</span>
104
189
  ```
105
190
 
106
- #### Examples
191
+ ### Examples
107
192
 
108
193
  | mask | example |
109
194
  | -------------- | -------------- |
@@ -193,10 +278,10 @@ You can define custom pattern and specify symbol to be rendered in input field.
193
278
 
194
279
  ```typescript
195
280
  pattern = {
196
- B: {
197
- pattern: new RegExp('\\d'),
198
- symbol: 'X',
199
- },
281
+ B: {
282
+ pattern: new RegExp('\\d'),
283
+ symbol: 'X',
284
+ },
200
285
  };
201
286
  ```
202
287
 
@@ -294,9 +379,9 @@ and in your component
294
379
  customMask: [string, pattern];
295
380
 
296
381
  pattern = {
297
- P: {
298
- pattern: new RegExp('\\d'),
299
- },
382
+ P: {
383
+ pattern: new RegExp('\\d'),
384
+ },
300
385
  };
301
386
 
302
387
  this.customMask = ['PPP-PPP', this.pattern];
@@ -367,6 +452,18 @@ Masked value: 1.234
367
452
  Input value: 1234.56
368
453
  Masked value: 1,234
369
454
  ```
455
+ ```html
456
+ <input type="text" mask="separator.2" [leadZero]="true" />
457
+ ```
458
+ To add zeros to the model at the end
459
+
460
+ ```text
461
+ Input value: 12
462
+ Masked value: 12.00
463
+
464
+ Input value: 12.1
465
+ Masked value: 12.10
466
+ ```
370
467
 
371
468
  ```html
372
469
  <input type="text" mask="separator.2" separatorLimit="1000" />
@@ -469,7 +566,7 @@ You can hide symbols in input field and get the actual value in `formcontrol`.
469
566
  <input mask="CPF_CNPJ" />
470
567
  ```
471
568
 
472
- ### Dynamic valid mask
569
+ ### Allow few mask in one expression
473
570
 
474
571
  #### Usage
475
572
 
@@ -483,6 +580,10 @@ You can pass into mask pattern with `||`.
483
580
  <input mask="(00) 0000-0000||(00) 0 0000-0000" />
484
581
  ```
485
582
 
583
+ ```html
584
+ <input mask="00||SS" />
585
+ ```
586
+
486
587
  ### Function maskFilled
487
588
 
488
589
  #### Usage
package/esm2020/index.mjs CHANGED
@@ -1,8 +1,6 @@
1
- export * from './lib/ngx-mask.module';
2
- export * from './lib/mask.directive';
3
- export * from './lib/mask.pipe';
4
- export * from './lib/mask.service';
5
- export * from './lib/mask-applier.service';
6
- export * from './lib/config';
7
- export * from './lib/custom-keyboard-event';
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWFzay1saWIvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvbmd4LW1hc2subW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21hc2suZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21hc2sucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tYXNrLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWFzay1hcHBsaWVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2N1c3RvbS1rZXlib2FyZC1ldmVudCc7XG4iXX0=
1
+ export * from './lib/ngx-mask.providers';
2
+ export * from './lib/ngx-mask.directive';
3
+ export * from './lib/ngx-mask.pipe';
4
+ export * from './lib/ngx-mask.service';
5
+ export * from './lib/ngx-mask.config';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWFzay1saWIvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL25neC1tYXNrLnByb3ZpZGVycyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9uZ3gtbWFzay5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbmd4LW1hc2sucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9uZ3gtbWFzay5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL25neC1tYXNrLmNvbmZpZyc7XG4iXX0=
@@ -9,8 +9,9 @@ const commonjsGlobal = typeof globalThis !== 'undefined'
9
9
  : {};
10
10
  (function () {
11
11
  if (!commonjsGlobal.KeyboardEvent) {
12
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
12
13
  commonjsGlobal.KeyboardEvent = function (_eventType, _init) { };
13
14
  }
14
15
  })();
15
16
  export {};
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWtleWJvYXJkLWV2ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hc2stbGliL3NyYy9saWIvY3VzdG9tLWtleWJvYXJkLWV2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sY0FBYyxHQUNuQixPQUFPLFVBQVUsS0FBSyxXQUFXO0lBQ2hDLENBQUMsQ0FBQyxVQUFVO0lBQ1osQ0FBQyxDQUFDLE9BQU8sTUFBTSxLQUFLLFdBQVc7UUFDL0IsQ0FBQyxDQUFDLE1BQU07UUFDUixDQUFDLENBQUMsT0FBTyxNQUFNLEtBQUssV0FBVztZQUMvQixDQUFDLENBQUMsTUFBTTtZQUNSLENBQUMsQ0FBQyxPQUFPLElBQUksS0FBSyxXQUFXO2dCQUM3QixDQUFDLENBQUMsSUFBSTtnQkFDTixDQUFDLENBQUMsRUFBRSxDQUFDO0FBRVAsQ0FBQztJQUNBLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFO1FBQ2xDLGNBQWMsQ0FBQyxhQUFhLEdBQUcsVUFBVSxVQUFlLEVBQUUsS0FBVSxJQUFHLENBQUMsQ0FBQztLQUN6RTtBQUNGLENBQUMsQ0FBQyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5kZWNsYXJlIHZhciBnbG9iYWw6IGFueTtcblxuY29uc3QgY29tbW9uanNHbG9iYWwgPVxuXHR0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gJ3VuZGVmaW5lZCdcblx0XHQ/IGdsb2JhbFRoaXNcblx0XHQ6IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnXG5cdFx0PyB3aW5kb3dcblx0XHQ6IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnXG5cdFx0PyBnbG9iYWxcblx0XHQ6IHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJ1xuXHRcdD8gc2VsZlxuXHRcdDoge307XG5cbihmdW5jdGlvbiAoKSB7XG5cdGlmICghY29tbW9uanNHbG9iYWwuS2V5Ym9hcmRFdmVudCkge1xuXHRcdGNvbW1vbmpzR2xvYmFsLktleWJvYXJkRXZlbnQgPSBmdW5jdGlvbiAoX2V2ZW50VHlwZTogYW55LCBfaW5pdDogYW55KSB7fTtcblx0fVxufSkoKTtcblxuZXhwb3J0IHR5cGUgQ3VzdG9tS2V5Ym9hcmRFdmVudCA9IEtleWJvYXJkRXZlbnQ7XG4iXX0=
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWtleWJvYXJkLWV2ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hc2stbGliL3NyYy9saWIvY3VzdG9tLWtleWJvYXJkLWV2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sY0FBYyxHQUNoQixPQUFPLFVBQVUsS0FBSyxXQUFXO0lBQzdCLENBQUMsQ0FBQyxVQUFVO0lBQ1osQ0FBQyxDQUFDLE9BQU8sTUFBTSxLQUFLLFdBQVc7UUFDL0IsQ0FBQyxDQUFDLE1BQU07UUFDUixDQUFDLENBQUMsT0FBTyxNQUFNLEtBQUssV0FBVztZQUMvQixDQUFDLENBQUMsTUFBTTtZQUNSLENBQUMsQ0FBQyxPQUFPLElBQUksS0FBSyxXQUFXO2dCQUM3QixDQUFDLENBQUMsSUFBSTtnQkFDTixDQUFDLENBQUMsRUFBRSxDQUFDO0FBRWIsQ0FBQztJQUNHLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFO1FBQy9CLGdFQUFnRTtRQUNoRSxjQUFjLENBQUMsYUFBYSxHQUFHLFVBQVUsVUFBZSxFQUFFLEtBQVUsSUFBRyxDQUFDLENBQUM7S0FDNUU7QUFDTCxDQUFDLENBQUMsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuZGVjbGFyZSBsZXQgZ2xvYmFsOiBhbnk7XG5cbmNvbnN0IGNvbW1vbmpzR2xvYmFsID1cbiAgICB0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgPyBnbG9iYWxUaGlzXG4gICAgICAgIDogdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgPyB3aW5kb3dcbiAgICAgICAgOiB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICA/IGdsb2JhbFxuICAgICAgICA6IHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICA/IHNlbGZcbiAgICAgICAgOiB7fTtcblxuKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWNvbW1vbmpzR2xvYmFsLktleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgICAgICBjb21tb25qc0dsb2JhbC5LZXlib2FyZEV2ZW50ID0gZnVuY3Rpb24gKF9ldmVudFR5cGU6IGFueSwgX2luaXQ6IGFueSkge307XG4gICAgfVxufSkoKTtcblxuZXhwb3J0IHR5cGUgQ3VzdG9tS2V5Ym9hcmRFdmVudCA9IEtleWJvYXJkRXZlbnQ7XG4iXX0=