@softheon/armature 15.16.2 → 15.17.1

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.
@@ -0,0 +1,87 @@
1
+ import { Directive, HostListener, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * The letters and special characters directive
5
+ */
6
+ export class LettersCharactersDirective {
7
+ /**
8
+ * Constructs the directive
9
+ * @param el The element
10
+ */
11
+ constructor(el) {
12
+ this.el = el;
13
+ }
14
+ /**
15
+ * Only allows letter and special character inputs
16
+ * @param event Key Event
17
+ */
18
+ onKeyDown(event) {
19
+ const e = event;
20
+ if (this.sofArLettersAndSpecialCharacters) {
21
+ if ([46, 8, 9, 27, 13, 110, 190].indexOf(e.keyCode) !== -1 ||
22
+ // Allow: Ctrl+A
23
+ (e.keyCode === 65 && e.ctrlKey) ||
24
+ // Allow: Ctrl+C
25
+ (e.keyCode === 67 && e.ctrlKey) ||
26
+ // Allow: Ctrl+X
27
+ (e.keyCode === 88 && e.ctrlKey) ||
28
+ // Allow: spaces
29
+ (e.keyCode === 32) ||
30
+ // Allow: - (minus sign) on numpad or alphabet keyboard key
31
+ (e.keyCode === 109 || e.keyCode === 189) ||
32
+ // Allow: apostrophes
33
+ (e.keyCode === 48) ||
34
+ // Allow: home, end, left, right
35
+ (e.keyCode >= 35 && e.keyCode <= 39)) {
36
+ // let it happen, don't do anything
37
+ return;
38
+ }
39
+ // Ensure that it is a letter and stop the keypress if its not a letter
40
+ if (e.keyCode < 65 || e.keyCode > 90) {
41
+ e.preventDefault();
42
+ }
43
+ }
44
+ }
45
+ /**
46
+ * Allow user to copy and paste letters except special characters
47
+ * @param event the event
48
+ */
49
+ allowPaste(event) {
50
+ event.preventDefault();
51
+ let pasteData = event.clipboardData.getData('text/plain');
52
+ pasteData = pasteData.replace(/[0-9~`!@#$%^&*(){}\[\];:"<>,.?\/\\|_+=]*/g, '');
53
+ const inputElement = event.target;
54
+ const start = inputElement.selectionStart;
55
+ const end = inputElement.selectionEnd;
56
+ const originalValue = inputElement.value;
57
+ const newValue = [
58
+ originalValue.slice(0, start),
59
+ pasteData,
60
+ originalValue.slice(end)
61
+ ].join('');
62
+ inputElement.value = newValue;
63
+ inputElement.selectionStart = inputElement.selectionEnd = start + pasteData.length;
64
+ const evt = new Event('input', {
65
+ bubbles: true,
66
+ cancelable: true
67
+ });
68
+ inputElement.dispatchEvent(evt);
69
+ }
70
+ }
71
+ LettersCharactersDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: LettersCharactersDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
72
+ LettersCharactersDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: LettersCharactersDirective, selector: "[sofArLettersAndSpecialCharacters]", inputs: { sofArLettersAndSpecialCharacters: "sofArLettersAndSpecialCharacters" }, host: { listeners: { "keydown": "onKeyDown($event)", "paste": "allowPaste($event)" } }, ngImport: i0 });
73
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: LettersCharactersDirective, decorators: [{
74
+ type: Directive,
75
+ args: [{
76
+ selector: '[sofArLettersAndSpecialCharacters]'
77
+ }]
78
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { sofArLettersAndSpecialCharacters: [{
79
+ type: Input
80
+ }], onKeyDown: [{
81
+ type: HostListener,
82
+ args: ['keydown', ['$event']]
83
+ }], allowPaste: [{
84
+ type: HostListener,
85
+ args: ['paste', ['$event']]
86
+ }] } });
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGV0dGVycy1jaGFyYWN0ZXJzLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FybWF0dXJlL3NyYy9saWIvZm9ybXMvZGlyZWN0aXZlcy9sZXR0ZXJzLWNoYXJhY3RlcnMvbGV0dGVycy1jaGFyYWN0ZXJzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNFOztHQUVHO0FBSUgsTUFBTSxPQUFPLDBCQUEwQjtJQUtyQzs7O09BR0c7SUFDSCxZQUFvQixFQUFjO1FBQWQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtJQUFJLENBQUM7SUFHdkM7OztPQUdHO0lBQ2tDLFNBQVMsQ0FBQyxLQUFLO1FBQ2xELE1BQU0sQ0FBQyxHQUFHLEtBQXNCLENBQUM7UUFDakMsSUFBSSxJQUFJLENBQUMsZ0NBQWdDLEVBQUU7WUFDekMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN4RCxnQkFBZ0I7Z0JBQ2hCLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQztnQkFDL0IsZ0JBQWdCO2dCQUNoQixDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUM7Z0JBQy9CLGdCQUFnQjtnQkFDaEIsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDO2dCQUMvQixnQkFBZ0I7Z0JBQ2hCLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2xCLDJEQUEyRDtnQkFDM0QsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsT0FBTyxLQUFLLEdBQUcsQ0FBQztnQkFDeEMscUJBQXFCO2dCQUNyQixDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNsQixnQ0FBZ0M7Z0JBQ2hDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsRUFBRTtnQkFDdEMsbUNBQW1DO2dCQUNuQyxPQUFPO2FBQ1I7WUFDRCx1RUFBdUU7WUFDdkUsSUFBSSxDQUFDLENBQUMsT0FBTyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxHQUFHLEVBQUUsRUFBRTtnQkFDcEMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO2FBQ3BCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ2dDLFVBQVUsQ0FBQyxLQUFxQjtRQUNqRSxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDMUQsU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsMkNBQTJDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDL0UsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLE1BQTBCLENBQUM7UUFDdEQsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLGNBQWMsQ0FBQztRQUMxQyxNQUFNLEdBQUcsR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDO1FBQ3RDLE1BQU0sYUFBYSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFFekMsTUFBTSxRQUFRLEdBQUc7WUFDZixhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUM7WUFDN0IsU0FBUztZQUNULGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO1NBQ3pCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRVgsWUFBWSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUM7UUFDOUIsWUFBWSxDQUFDLGNBQWMsR0FBRyxZQUFZLENBQUMsWUFBWSxHQUFHLEtBQUssR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO1FBRW5GLE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUM3QixPQUFPLEVBQUUsSUFBSTtZQUNiLFVBQVUsRUFBRSxJQUFJO1NBQ2pCLENBQUMsQ0FBQztRQUNILFlBQVksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEMsQ0FBQzs7dUhBdkVVLDBCQUEwQjsyR0FBMUIsMEJBQTBCOzJGQUExQiwwQkFBMEI7a0JBSHRDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9DQUFvQztpQkFDL0M7aUdBSWlCLGdDQUFnQztzQkFBL0MsS0FBSztnQkFhK0IsU0FBUztzQkFBN0MsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBZ0NBLFVBQVU7c0JBQTVDLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vKipcclxuICogVGhlIGxldHRlcnMgYW5kIHNwZWNpYWwgY2hhcmFjdGVycyBkaXJlY3RpdmVcclxuICovXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW3NvZkFyTGV0dGVyc0FuZFNwZWNpYWxDaGFyYWN0ZXJzXSdcclxufSlcclxuZXhwb3J0IGNsYXNzIExldHRlcnNDaGFyYWN0ZXJzRGlyZWN0aXZlIHtcclxuXHJcbiAgLyoqIFRydWUgaWYgbGV0dGVycyBhbmQgc3BlY2lhbCBjaGFyYWN0ZXJzIGFsbG93ZWQgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgc29mQXJMZXR0ZXJzQW5kU3BlY2lhbENoYXJhY3RlcnM6IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnN0cnVjdHMgdGhlIGRpcmVjdGl2ZVxyXG4gICAqIEBwYXJhbSBlbCBUaGUgZWxlbWVudFxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHsgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogT25seSBhbGxvd3MgbGV0dGVyIGFuZCBzcGVjaWFsIGNoYXJhY3RlciBpbnB1dHNcclxuICAgKiBAcGFyYW0gZXZlbnQgS2V5IEV2ZW50XHJcbiAgICovXHJcbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pIG9uS2V5RG93bihldmVudCk6IHZvaWQge1xyXG4gICAgY29uc3QgZSA9IGV2ZW50IGFzIEtleWJvYXJkRXZlbnQ7XHJcbiAgICBpZiAodGhpcy5zb2ZBckxldHRlcnNBbmRTcGVjaWFsQ2hhcmFjdGVycykge1xyXG4gICAgICBpZiAoWzQ2LCA4LCA5LCAyNywgMTMsIDExMCwgMTkwXS5pbmRleE9mKGUua2V5Q29kZSkgIT09IC0xIHx8XHJcbiAgICAgICAgLy8gQWxsb3c6IEN0cmwrQVxyXG4gICAgICAgIChlLmtleUNvZGUgPT09IDY1ICYmIGUuY3RybEtleSkgfHxcclxuICAgICAgICAvLyBBbGxvdzogQ3RybCtDXHJcbiAgICAgICAgKGUua2V5Q29kZSA9PT0gNjcgJiYgZS5jdHJsS2V5KSB8fFxyXG4gICAgICAgIC8vIEFsbG93OiBDdHJsK1hcclxuICAgICAgICAoZS5rZXlDb2RlID09PSA4OCAmJiBlLmN0cmxLZXkpIHx8XHJcbiAgICAgICAgLy8gQWxsb3c6IHNwYWNlc1xyXG4gICAgICAgIChlLmtleUNvZGUgPT09IDMyKSB8fFxyXG4gICAgICAgIC8vIEFsbG93OiAtIChtaW51cyBzaWduKSBvbiBudW1wYWQgb3IgYWxwaGFiZXQga2V5Ym9hcmQga2V5XHJcbiAgICAgICAgKGUua2V5Q29kZSA9PT0gMTA5IHx8IGUua2V5Q29kZSA9PT0gMTg5KSB8fFxyXG4gICAgICAgIC8vIEFsbG93OiBhcG9zdHJvcGhlc1xyXG4gICAgICAgIChlLmtleUNvZGUgPT09IDQ4KSB8fFxyXG4gICAgICAgIC8vIEFsbG93OiBob21lLCBlbmQsIGxlZnQsIHJpZ2h0XHJcbiAgICAgICAgKGUua2V5Q29kZSA+PSAzNSAmJiBlLmtleUNvZGUgPD0gMzkpKSB7XHJcbiAgICAgICAgLy8gbGV0IGl0IGhhcHBlbiwgZG9uJ3QgZG8gYW55dGhpbmdcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgLy8gRW5zdXJlIHRoYXQgaXQgaXMgYSBsZXR0ZXIgYW5kIHN0b3AgdGhlIGtleXByZXNzIGlmIGl0cyBub3QgYSBsZXR0ZXJcclxuICAgICAgaWYgKGUua2V5Q29kZSA8IDY1IHx8IGUua2V5Q29kZSA+IDkwKSB7XHJcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBbGxvdyB1c2VyIHRvIGNvcHkgYW5kIHBhc3RlIGxldHRlcnMgZXhjZXB0IHNwZWNpYWwgY2hhcmFjdGVyc1xyXG4gICAqIEBwYXJhbSBldmVudCB0aGUgZXZlbnRcclxuICAgKi9cclxuICBASG9zdExpc3RlbmVyKCdwYXN0ZScsIFsnJGV2ZW50J10pIGFsbG93UGFzdGUoZXZlbnQ6IENsaXBib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgbGV0IHBhc3RlRGF0YSA9IGV2ZW50LmNsaXBib2FyZERhdGEuZ2V0RGF0YSgndGV4dC9wbGFpbicpO1xyXG4gICAgcGFzdGVEYXRhID0gcGFzdGVEYXRhLnJlcGxhY2UoL1swLTl+YCFAIyQlXiYqKCl7fVxcW1xcXTs6XCI8PiwuP1xcL1xcXFx8Xys9XSovZywgJycpO1xyXG4gICAgY29uc3QgaW5wdXRFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICBjb25zdCBzdGFydCA9IGlucHV0RWxlbWVudC5zZWxlY3Rpb25TdGFydDtcclxuICAgIGNvbnN0IGVuZCA9IGlucHV0RWxlbWVudC5zZWxlY3Rpb25FbmQ7XHJcbiAgICBjb25zdCBvcmlnaW5hbFZhbHVlID0gaW5wdXRFbGVtZW50LnZhbHVlO1xyXG5cclxuICAgIGNvbnN0IG5ld1ZhbHVlID0gW1xyXG4gICAgICBvcmlnaW5hbFZhbHVlLnNsaWNlKDAsIHN0YXJ0KSxcclxuICAgICAgcGFzdGVEYXRhLFxyXG4gICAgICBvcmlnaW5hbFZhbHVlLnNsaWNlKGVuZClcclxuICAgIF0uam9pbignJyk7XHJcblxyXG4gICAgaW5wdXRFbGVtZW50LnZhbHVlID0gbmV3VmFsdWU7XHJcbiAgICBpbnB1dEVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPSBpbnB1dEVsZW1lbnQuc2VsZWN0aW9uRW5kID0gc3RhcnQgKyBwYXN0ZURhdGEubGVuZ3RoO1xyXG5cclxuICAgIGNvbnN0IGV2dCA9IG5ldyBFdmVudCgnaW5wdXQnLCB7XHJcbiAgICAgIGJ1YmJsZXM6IHRydWUsXHJcbiAgICAgIGNhbmNlbGFibGU6IHRydWVcclxuICAgIH0pO1xyXG4gICAgaW5wdXRFbGVtZW50LmRpc3BhdGNoRXZlbnQoZXZ0KTtcclxuICB9XHJcbn1cclxuIl19
@@ -6,6 +6,7 @@ export * from './models/county';
6
6
  export * from './models/enums/states';
7
7
  export * from './models/constants';
8
8
  // directives
9
+ export * from './directives/letters-characters/letters-characters.directive';
9
10
  export * from './directives/letters-only/letters-only.directive';
10
11
  export * from './directives/numbers-only/numbers-only.directive';
11
12
  export * from './directives/alphanumeric/alphanumeric.directive';
@@ -16,4 +17,4 @@ export * from './components/sof-address/sof-address.component';
16
17
  export * from './services/alert.service';
17
18
  // pipes
18
19
  export * from './pipes/phone-format.pipe';
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMtYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJtYXR1cmUvc3JjL2xpYi9mb3Jtcy9mb3Jtcy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdUNBQXVDO0FBQ3ZDLGNBQWMsZ0JBQWdCLENBQUM7QUFFL0IsU0FBUztBQUNULGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsb0JBQW9CLENBQUM7QUFFbkMsYUFBYTtBQUNiLGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsOENBQThDLENBQUM7QUFFN0QsYUFBYTtBQUNiLGNBQWMsZ0RBQWdELENBQUM7QUFFL0QsV0FBVztBQUNYLGNBQWMsMEJBQTBCLENBQUM7QUFFekMsUUFBUTtBQUNSLGNBQWMsMkJBQTJCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogUHVibGljIEFQSSBzdXJmYWNlIGZvciB0aGUgZm9ybXMgKi9cclxuZXhwb3J0ICogZnJvbSAnLi9mb3Jtcy5tb2R1bGUnO1xyXG5cclxuLy8gbW9kZWxzXHJcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL2FkZHJlc3MnO1xyXG5leHBvcnQgKiBmcm9tICcuL21vZGVscy9jb3VudHknO1xyXG5leHBvcnQgKiBmcm9tICcuL21vZGVscy9lbnVtcy9zdGF0ZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuL21vZGVscy9jb25zdGFudHMnO1xyXG5cclxuLy8gZGlyZWN0aXZlc1xyXG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvbGV0dGVycy1vbmx5L2xldHRlcnMtb25seS5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvbnVtYmVycy1vbmx5L251bWJlcnMtb25seS5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvYWxwaGFudW1lcmljL2FscGhhbnVtZXJpYy5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvaW5wdXQtdHJpbS9pbnB1dC10cmltLmRpcmVjdGl2ZSc7XHJcblxyXG4vLyBjb21wb25lbnRzXHJcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9zb2YtYWRkcmVzcy9zb2YtYWRkcmVzcy5jb21wb25lbnQnO1xyXG5cclxuLy8gc2VydmljZXNcclxuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9hbGVydC5zZXJ2aWNlJztcclxuXHJcbi8vIHBpcGVzXHJcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvcGhvbmUtZm9ybWF0LnBpcGUnO1xyXG4iXX0=
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMtYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJtYXR1cmUvc3JjL2xpYi9mb3Jtcy9mb3Jtcy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdUNBQXVDO0FBQ3ZDLGNBQWMsZ0JBQWdCLENBQUM7QUFFL0IsU0FBUztBQUNULGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsb0JBQW9CLENBQUM7QUFFbkMsYUFBYTtBQUNiLGNBQWMsOERBQThELENBQUM7QUFDN0UsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyw4Q0FBOEMsQ0FBQztBQUU3RCxhQUFhO0FBQ2IsY0FBYyxnREFBZ0QsQ0FBQztBQUUvRCxXQUFXO0FBQ1gsY0FBYywwQkFBMEIsQ0FBQztBQUV6QyxRQUFRO0FBQ1IsY0FBYywyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBQdWJsaWMgQVBJIHN1cmZhY2UgZm9yIHRoZSBmb3JtcyAqL1xyXG5leHBvcnQgKiBmcm9tICcuL2Zvcm1zLm1vZHVsZSc7XHJcblxyXG4vLyBtb2RlbHNcclxuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvYWRkcmVzcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL2NvdW50eSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL2VudW1zL3N0YXRlcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL2NvbnN0YW50cyc7XHJcblxyXG4vLyBkaXJlY3RpdmVzXHJcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9sZXR0ZXJzLWNoYXJhY3RlcnMvbGV0dGVycy1jaGFyYWN0ZXJzLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9sZXR0ZXJzLW9ubHkvbGV0dGVycy1vbmx5LmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9udW1iZXJzLW9ubHkvbnVtYmVycy1vbmx5LmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9hbHBoYW51bWVyaWMvYWxwaGFudW1lcmljLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9pbnB1dC10cmltL2lucHV0LXRyaW0uZGlyZWN0aXZlJztcclxuXHJcbi8vIGNvbXBvbmVudHNcclxuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3NvZi1hZGRyZXNzL3NvZi1hZGRyZXNzLmNvbXBvbmVudCc7XHJcblxyXG4vLyBzZXJ2aWNlc1xyXG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2FsZXJ0LnNlcnZpY2UnO1xyXG5cclxuLy8gcGlwZXNcclxuZXhwb3J0ICogZnJvbSAnLi9waXBlcy9waG9uZS1mb3JtYXQucGlwZSc7XHJcbiJdfQ==
@@ -9,6 +9,7 @@ import { MatSnackBarModule } from '@angular/material/snack-bar';
9
9
  import { SofAddressComponent } from './components/sof-address/sof-address.component';
10
10
  import { AlphaNumericDirective } from './directives/alphanumeric/alphanumeric.directive';
11
11
  import { InputTrimDirective } from './directives/input-trim/input-trim.directive';
12
+ import { LettersCharactersDirective } from './directives/letters-characters/letters-characters.directive';
12
13
  import { LettersOnlyDirective } from './directives/letters-only/letters-only.directive';
13
14
  import { NumbersOnlyDirective } from './directives/numbers-only/numbers-only.directive';
14
15
  import { PhoneFormatPipe } from './pipes/phone-format.pipe';
@@ -20,8 +21,9 @@ const components = [
20
21
  ];
21
22
  /** The directives */
22
23
  const directives = [
23
- NumbersOnlyDirective,
24
+ LettersCharactersDirective,
24
25
  LettersOnlyDirective,
26
+ NumbersOnlyDirective,
25
27
  AlphaNumericDirective,
26
28
  InputTrimDirective
27
29
  ];
@@ -39,16 +41,18 @@ const materialModules = [
39
41
  export class FormsModule {
40
42
  }
41
43
  FormsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
42
- FormsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: FormsModule, declarations: [SofAddressComponent, NumbersOnlyDirective,
44
+ FormsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: FormsModule, declarations: [SofAddressComponent, LettersCharactersDirective,
43
45
  LettersOnlyDirective,
46
+ NumbersOnlyDirective,
44
47
  AlphaNumericDirective,
45
48
  InputTrimDirective, PhoneFormatPipe], imports: [CommonModule,
46
49
  FlexLayoutModule,
47
50
  ReactiveFormsModule, MatInputModule,
48
51
  MatFormFieldModule,
49
52
  MatSelectModule,
50
- MatSnackBarModule], exports: [SofAddressComponent, NumbersOnlyDirective,
53
+ MatSnackBarModule], exports: [SofAddressComponent, LettersCharactersDirective,
51
54
  LettersOnlyDirective,
55
+ NumbersOnlyDirective,
52
56
  AlphaNumericDirective,
53
57
  InputTrimDirective, PhoneFormatPipe] });
54
58
  FormsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FormsModule, providers: [
@@ -80,4 +84,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
80
84
  ]
81
85
  }]
82
86
  }] });
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJtYXR1cmUvc3JjL2xpYi9mb3Jtcy9mb3Jtcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNyRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN4RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN4RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQUV4RCxxQkFBcUI7QUFDckIsTUFBTSxVQUFVLEdBQUc7SUFDakIsbUJBQW1CO0NBQ3BCLENBQUM7QUFFRixxQkFBcUI7QUFDckIsTUFBTSxVQUFVLEdBQUc7SUFDakIsb0JBQW9CO0lBQ3BCLG9CQUFvQjtJQUNwQixxQkFBcUI7SUFDckIsa0JBQWtCO0NBQ25CLENBQUM7QUFFRixNQUFNLEtBQUssR0FBRztJQUNaLGVBQWU7Q0FDaEIsQ0FBQztBQUVGLDJCQUEyQjtBQUMzQixNQUFNLGVBQWUsR0FBRztJQUN0QixjQUFjO0lBQ2Qsa0JBQWtCO0lBQ2xCLGVBQWU7SUFDZixpQkFBaUI7Q0FDbEIsQ0FBQztBQUVGLDRCQUE0QjtBQXNCNUIsTUFBTSxPQUFPLFdBQVc7O3dHQUFYLFdBQVc7eUdBQVgsV0FBVyxpQkE3Q3RCLG1CQUFtQixFQUtuQixvQkFBb0I7UUFDcEIsb0JBQW9CO1FBQ3BCLHFCQUFxQjtRQUNyQixrQkFBa0IsRUFJbEIsZUFBZSxhQW1CYixZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLG1CQUFtQixFQWhCckIsY0FBYztRQUNkLGtCQUFrQjtRQUNsQixlQUFlO1FBQ2YsaUJBQWlCLGFBcEJqQixtQkFBbUIsRUFLbkIsb0JBQW9CO1FBQ3BCLG9CQUFvQjtRQUNwQixxQkFBcUI7UUFDckIsa0JBQWtCLEVBSWxCLGVBQWU7eUdBaUNKLFdBQVcsYUFUWDtRQUNULFlBQVk7S0FDYixZQVBDLFlBQVk7UUFDWixnQkFBZ0I7UUFDaEIsbUJBQW1CLEVBQ2hCLGVBQWU7MkZBV1QsV0FBVztrQkFyQnZCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLEdBQUcsVUFBVTt3QkFDYixHQUFHLFVBQVU7d0JBQ2IsR0FBRyxLQUFLO3FCQUNUO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3dCQUNuQixHQUFHLGVBQWU7cUJBQ25CO29CQUNELFNBQVMsRUFBRTt3QkFDVCxZQUFZO3FCQUNiO29CQUNELE9BQU8sRUFBRTt3QkFDUCxHQUFHLFVBQVU7d0JBQ2IsR0FBRyxVQUFVO3dCQUNiLEdBQUcsS0FBSztxQkFDVDtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZsZXhMYXlvdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mbGV4LWxheW91dCc7XHJcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxuaW1wb3J0IHsgTWF0U25hY2tCYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xyXG5pbXBvcnQgeyBTb2ZBZGRyZXNzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3NvZi1hZGRyZXNzL3NvZi1hZGRyZXNzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFscGhhTnVtZXJpY0RpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9hbHBoYW51bWVyaWMvYWxwaGFudW1lcmljLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IElucHV0VHJpbURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9pbnB1dC10cmltL2lucHV0LXRyaW0uZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTGV0dGVyc09ubHlEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvbGV0dGVycy1vbmx5L2xldHRlcnMtb25seS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBOdW1iZXJzT25seURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9udW1iZXJzLW9ubHkvbnVtYmVycy1vbmx5LmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFBob25lRm9ybWF0UGlwZSB9IGZyb20gJy4vcGlwZXMvcGhvbmUtZm9ybWF0LnBpcGUnO1xyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2FsZXJ0LnNlcnZpY2UnO1xyXG5cclxuLyoqIFRoZSBjb21wb25lbnRzICovXHJcbmNvbnN0IGNvbXBvbmVudHMgPSBbXHJcbiAgU29mQWRkcmVzc0NvbXBvbmVudFxyXG5dO1xyXG5cclxuLyoqIFRoZSBkaXJlY3RpdmVzICovXHJcbmNvbnN0IGRpcmVjdGl2ZXMgPSBbXHJcbiAgTnVtYmVyc09ubHlEaXJlY3RpdmUsXHJcbiAgTGV0dGVyc09ubHlEaXJlY3RpdmUsXHJcbiAgQWxwaGFOdW1lcmljRGlyZWN0aXZlLFxyXG4gIElucHV0VHJpbURpcmVjdGl2ZVxyXG5dO1xyXG5cclxuY29uc3QgcGlwZXMgPSBbXHJcbiAgUGhvbmVGb3JtYXRQaXBlXHJcbl07XHJcblxyXG4vKiogVGhlIG1hdGVyaWFsIG1vZHVsZXMgKi9cclxuY29uc3QgbWF0ZXJpYWxNb2R1bGVzID0gW1xyXG4gIE1hdElucHV0TW9kdWxlLFxyXG4gIE1hdEZvcm1GaWVsZE1vZHVsZSxcclxuICBNYXRTZWxlY3RNb2R1bGUsXHJcbiAgTWF0U25hY2tCYXJNb2R1bGVcclxuXTtcclxuXHJcbi8qKiBBcm1hdHVyZSBmb3JtcyBtb2R1bGUgKi9cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIC4uLmNvbXBvbmVudHMsXHJcbiAgICAuLi5kaXJlY3RpdmVzLFxyXG4gICAgLi4ucGlwZXNcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZsZXhMYXlvdXRNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgLi4ubWF0ZXJpYWxNb2R1bGVzXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIEFsZXJ0U2VydmljZVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgLi4uY29tcG9uZW50cyxcclxuICAgIC4uLmRpcmVjdGl2ZXMsXHJcbiAgICAuLi5waXBlc1xyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1zTW9kdWxlIHsgfVxyXG4iXX0=
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJtYXR1cmUvc3JjL2xpYi9mb3Jtcy9mb3Jtcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNyRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN4RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN4RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQUV4RCxxQkFBcUI7QUFDckIsTUFBTSxVQUFVLEdBQUc7SUFDakIsbUJBQW1CO0NBQ3BCLENBQUM7QUFFRixxQkFBcUI7QUFDckIsTUFBTSxVQUFVLEdBQUc7SUFDakIsMEJBQTBCO0lBQzFCLG9CQUFvQjtJQUNwQixvQkFBb0I7SUFDcEIscUJBQXFCO0lBQ3JCLGtCQUFrQjtDQUNuQixDQUFDO0FBRUYsTUFBTSxLQUFLLEdBQUc7SUFDWixlQUFlO0NBQ2hCLENBQUM7QUFFRiwyQkFBMkI7QUFDM0IsTUFBTSxlQUFlLEdBQUc7SUFDdEIsY0FBYztJQUNkLGtCQUFrQjtJQUNsQixlQUFlO0lBQ2YsaUJBQWlCO0NBQ2xCLENBQUM7QUFFRiw0QkFBNEI7QUFzQjVCLE1BQU0sT0FBTyxXQUFXOzt3R0FBWCxXQUFXO3lHQUFYLFdBQVcsaUJBOUN0QixtQkFBbUIsRUFLbkIsMEJBQTBCO1FBQzFCLG9CQUFvQjtRQUNwQixvQkFBb0I7UUFDcEIscUJBQXFCO1FBQ3JCLGtCQUFrQixFQUlsQixlQUFlLGFBbUJiLFlBQVk7UUFDWixnQkFBZ0I7UUFDaEIsbUJBQW1CLEVBaEJyQixjQUFjO1FBQ2Qsa0JBQWtCO1FBQ2xCLGVBQWU7UUFDZixpQkFBaUIsYUFyQmpCLG1CQUFtQixFQUtuQiwwQkFBMEI7UUFDMUIsb0JBQW9CO1FBQ3BCLG9CQUFvQjtRQUNwQixxQkFBcUI7UUFDckIsa0JBQWtCLEVBSWxCLGVBQWU7eUdBaUNKLFdBQVcsYUFUWDtRQUNULFlBQVk7S0FDYixZQVBDLFlBQVk7UUFDWixnQkFBZ0I7UUFDaEIsbUJBQW1CLEVBQ2hCLGVBQWU7MkZBV1QsV0FBVztrQkFyQnZCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLEdBQUcsVUFBVTt3QkFDYixHQUFHLFVBQVU7d0JBQ2IsR0FBRyxLQUFLO3FCQUNUO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3dCQUNuQixHQUFHLGVBQWU7cUJBQ25CO29CQUNELFNBQVMsRUFBRTt3QkFDVCxZQUFZO3FCQUNiO29CQUNELE9BQU8sRUFBRTt3QkFDUCxHQUFHLFVBQVU7d0JBQ2IsR0FBRyxVQUFVO3dCQUNiLEdBQUcsS0FBSztxQkFDVDtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZsZXhMYXlvdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mbGV4LWxheW91dCc7XHJcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxuaW1wb3J0IHsgTWF0U25hY2tCYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xyXG5pbXBvcnQgeyBTb2ZBZGRyZXNzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3NvZi1hZGRyZXNzL3NvZi1hZGRyZXNzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFscGhhTnVtZXJpY0RpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9hbHBoYW51bWVyaWMvYWxwaGFudW1lcmljLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IElucHV0VHJpbURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9pbnB1dC10cmltL2lucHV0LXRyaW0uZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTGV0dGVyc0NoYXJhY3RlcnNEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvbGV0dGVycy1jaGFyYWN0ZXJzL2xldHRlcnMtY2hhcmFjdGVycy5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBMZXR0ZXJzT25seURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9sZXR0ZXJzLW9ubHkvbGV0dGVycy1vbmx5LmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE51bWJlcnNPbmx5RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL251bWJlcnMtb25seS9udW1iZXJzLW9ubHkuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUGhvbmVGb3JtYXRQaXBlIH0gZnJvbSAnLi9waXBlcy9waG9uZS1mb3JtYXQucGlwZSc7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvYWxlcnQuc2VydmljZSc7XHJcblxyXG4vKiogVGhlIGNvbXBvbmVudHMgKi9cclxuY29uc3QgY29tcG9uZW50cyA9IFtcclxuICBTb2ZBZGRyZXNzQ29tcG9uZW50XHJcbl07XHJcblxyXG4vKiogVGhlIGRpcmVjdGl2ZXMgKi9cclxuY29uc3QgZGlyZWN0aXZlcyA9IFtcclxuICBMZXR0ZXJzQ2hhcmFjdGVyc0RpcmVjdGl2ZSxcclxuICBMZXR0ZXJzT25seURpcmVjdGl2ZSxcclxuICBOdW1iZXJzT25seURpcmVjdGl2ZSxcclxuICBBbHBoYU51bWVyaWNEaXJlY3RpdmUsXHJcbiAgSW5wdXRUcmltRGlyZWN0aXZlXHJcbl07XHJcblxyXG5jb25zdCBwaXBlcyA9IFtcclxuICBQaG9uZUZvcm1hdFBpcGVcclxuXTtcclxuXHJcbi8qKiBUaGUgbWF0ZXJpYWwgbW9kdWxlcyAqL1xyXG5jb25zdCBtYXRlcmlhbE1vZHVsZXMgPSBbXHJcbiAgTWF0SW5wdXRNb2R1bGUsXHJcbiAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxyXG4gIE1hdFNlbGVjdE1vZHVsZSxcclxuICBNYXRTbmFja0Jhck1vZHVsZVxyXG5dO1xyXG5cclxuLyoqIEFybWF0dXJlIGZvcm1zIG1vZHVsZSAqL1xyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgLi4uY29tcG9uZW50cyxcclxuICAgIC4uLmRpcmVjdGl2ZXMsXHJcbiAgICAuLi5waXBlc1xyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRmxleExheW91dE1vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICAuLi5tYXRlcmlhbE1vZHVsZXNcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgQWxlcnRTZXJ2aWNlXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICAuLi5jb21wb25lbnRzLFxyXG4gICAgLi4uZGlyZWN0aXZlcyxcclxuICAgIC4uLnBpcGVzXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybXNNb2R1bGUgeyB9XHJcbiJdfQ==
@@ -3606,6 +3606,91 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
3606
3606
  args: ["input", ["$event.type", "$event.target.value"]]
3607
3607
  }] } });
3608
3608
 
3609
+ /**
3610
+ * The letters and special characters directive
3611
+ */
3612
+ class LettersCharactersDirective {
3613
+ /**
3614
+ * Constructs the directive
3615
+ * @param el The element
3616
+ */
3617
+ constructor(el) {
3618
+ this.el = el;
3619
+ }
3620
+ /**
3621
+ * Only allows letter and special character inputs
3622
+ * @param event Key Event
3623
+ */
3624
+ onKeyDown(event) {
3625
+ const e = event;
3626
+ if (this.sofArLettersAndSpecialCharacters) {
3627
+ if ([46, 8, 9, 27, 13, 110, 190].indexOf(e.keyCode) !== -1 ||
3628
+ // Allow: Ctrl+A
3629
+ (e.keyCode === 65 && e.ctrlKey) ||
3630
+ // Allow: Ctrl+C
3631
+ (e.keyCode === 67 && e.ctrlKey) ||
3632
+ // Allow: Ctrl+X
3633
+ (e.keyCode === 88 && e.ctrlKey) ||
3634
+ // Allow: spaces
3635
+ (e.keyCode === 32) ||
3636
+ // Allow: - (minus sign) on numpad or alphabet keyboard key
3637
+ (e.keyCode === 109 || e.keyCode === 189) ||
3638
+ // Allow: apostrophes
3639
+ (e.keyCode === 48) ||
3640
+ // Allow: home, end, left, right
3641
+ (e.keyCode >= 35 && e.keyCode <= 39)) {
3642
+ // let it happen, don't do anything
3643
+ return;
3644
+ }
3645
+ // Ensure that it is a letter and stop the keypress if its not a letter
3646
+ if (e.keyCode < 65 || e.keyCode > 90) {
3647
+ e.preventDefault();
3648
+ }
3649
+ }
3650
+ }
3651
+ /**
3652
+ * Allow user to copy and paste letters except special characters
3653
+ * @param event the event
3654
+ */
3655
+ allowPaste(event) {
3656
+ event.preventDefault();
3657
+ let pasteData = event.clipboardData.getData('text/plain');
3658
+ pasteData = pasteData.replace(/[0-9~`!@#$%^&*(){}\[\];:"<>,.?\/\\|_+=]*/g, '');
3659
+ const inputElement = event.target;
3660
+ const start = inputElement.selectionStart;
3661
+ const end = inputElement.selectionEnd;
3662
+ const originalValue = inputElement.value;
3663
+ const newValue = [
3664
+ originalValue.slice(0, start),
3665
+ pasteData,
3666
+ originalValue.slice(end)
3667
+ ].join('');
3668
+ inputElement.value = newValue;
3669
+ inputElement.selectionStart = inputElement.selectionEnd = start + pasteData.length;
3670
+ const evt = new Event('input', {
3671
+ bubbles: true,
3672
+ cancelable: true
3673
+ });
3674
+ inputElement.dispatchEvent(evt);
3675
+ }
3676
+ }
3677
+ LettersCharactersDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: LettersCharactersDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
3678
+ LettersCharactersDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: LettersCharactersDirective, selector: "[sofArLettersAndSpecialCharacters]", inputs: { sofArLettersAndSpecialCharacters: "sofArLettersAndSpecialCharacters" }, host: { listeners: { "keydown": "onKeyDown($event)", "paste": "allowPaste($event)" } }, ngImport: i0 });
3679
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: LettersCharactersDirective, decorators: [{
3680
+ type: Directive,
3681
+ args: [{
3682
+ selector: '[sofArLettersAndSpecialCharacters]'
3683
+ }]
3684
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { sofArLettersAndSpecialCharacters: [{
3685
+ type: Input
3686
+ }], onKeyDown: [{
3687
+ type: HostListener,
3688
+ args: ['keydown', ['$event']]
3689
+ }], allowPaste: [{
3690
+ type: HostListener,
3691
+ args: ['paste', ['$event']]
3692
+ }] } });
3693
+
3609
3694
  /**
3610
3695
  * The letters only directive
3611
3696
  */
@@ -3896,8 +3981,9 @@ const components$4 = [
3896
3981
  ];
3897
3982
  /** The directives */
3898
3983
  const directives = [
3899
- NumbersOnlyDirective,
3984
+ LettersCharactersDirective,
3900
3985
  LettersOnlyDirective,
3986
+ NumbersOnlyDirective,
3901
3987
  AlphaNumericDirective,
3902
3988
  InputTrimDirective
3903
3989
  ];
@@ -3915,16 +4001,18 @@ const materialModules$4 = [
3915
4001
  class FormsModule {
3916
4002
  }
3917
4003
  FormsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
3918
- FormsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: FormsModule, declarations: [SofAddressComponent, NumbersOnlyDirective,
4004
+ FormsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: FormsModule, declarations: [SofAddressComponent, LettersCharactersDirective,
3919
4005
  LettersOnlyDirective,
4006
+ NumbersOnlyDirective,
3920
4007
  AlphaNumericDirective,
3921
4008
  InputTrimDirective, PhoneFormatPipe], imports: [CommonModule,
3922
4009
  FlexLayoutModule,
3923
4010
  ReactiveFormsModule, MatInputModule,
3924
4011
  MatFormFieldModule,
3925
4012
  MatSelectModule,
3926
- MatSnackBarModule], exports: [SofAddressComponent, NumbersOnlyDirective,
4013
+ MatSnackBarModule], exports: [SofAddressComponent, LettersCharactersDirective,
3927
4014
  LettersOnlyDirective,
4015
+ NumbersOnlyDirective,
3928
4016
  AlphaNumericDirective,
3929
4017
  InputTrimDirective, PhoneFormatPipe] });
3930
4018
  FormsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FormsModule, providers: [
@@ -7103,5 +7191,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
7103
7191
  * Generated bundle index. Do not edit.
7104
7192
  */
7105
7193
 
7106
- export { ALERT_BANNER_CONFIG, AbstractSamlEntryService, AbstractSamlService, AbstractStartupService, AccessTokenClaims, AlertBannerComponent, AlertBannerModule, AlertBannerService, AlertService, AlphaNumericDirective, AppTemplateComponent, ApplicationUserModel, ArRoleNavService, ArmError, ArmatureFooterComponent, ArmatureFooterModule, ArmatureHeaderComponent, ArmatureHeaderModule, ArmatureModule, ArmatureNavigationComponent, ArmatureResizePanelsModule, Attribute, AuthorizationService, BannerService, BannerType, BaseComponentModule, BaseConfigService, CacheExpirationType, ComponentSavePrintComponent, ComponentSavePrintService, Configuration, ConfirmAddressData, CoverageDetail, CssOverride, CssOverrideDirective, CustomAuthConfigService, DISABLE_ACCESS_FOR_NO_PAGES_ROLE, DISTRIBUTED_CACHE_BASE_PATH, DataStoreConfig, DecodedAccessToken, DefaultConfigService, DialogResult, DistributedCacheModule, ErrorCommonComponent, ErrorCommonConfig, ErrorModule, FAQ, FAQConfig, FaqComponent, FaqModule, FooterConfig, FormsModule, HYBRID_SAML_OAUTH_CONFIG, HeaderAuthSettings, HybridSamlOAuthConfig, HybridSamlOauthService, InputTrimDirective, LettersOnlyDirective, MobileHeaderMenuComponent, ModalData, NavigationModule, NumbersOnlyDirective, Oauth2RoleService, OauthModule, PhoneFormatPipe, PolicyPerson, RBAC_CONFIG, RbacActionDirective, RbacConfig, RbacModule, RedirectSamlComponent, RedirectSamlRequest, RedirectSessionConfigs, ResizePanelsComponent, RoleAccess, RoleNavService, RoutePath, RumConfig, RumModule, RumService, SESSION_CONFIG, SOF_BLANK_LANGUAGE_OVERRIDE, SOF_DATE_PIPE_FORMATS, SamlModule, SamlService, ServerCacheService, SessionConfig, SessionService, SharedErrorService, SiteMapComponent, SiteMapDirection, SofAddressComponent, SofAlertComponent, SofArComponentSavePrintModule, SofBadgeComponent, SofBannerComponent, SofBlankPipe, SofButtonToggleGroupComponent, SofConfirmAddressComponent, SofDatePipe, SofImageCheckboxComponent, SofModalComponent, SofPipeModule, SofProgressBarComponent, SofRadioCardComponent, SofSimpleAlertComponent, SofSsnPipe, SofStarRatingComponent, SoftheonErrorHandlerService, SsoGatewayEntryService, SsoGatewayModel, States, ThemeModule, ThemeService, TypedSession, USER_ENTITY_SERVICE_CONFIG, UserEntityService, UserEntityServiceConfig, ValidationKeys, WINDOW, httpVerb, initializerFactory, keyPathPrefix, languageStorageKey, newGuid, pascalToCamel, preSignInRouteStorageKey, sessionBasePathFactory };
7194
+ export { ALERT_BANNER_CONFIG, AbstractSamlEntryService, AbstractSamlService, AbstractStartupService, AccessTokenClaims, AlertBannerComponent, AlertBannerModule, AlertBannerService, AlertService, AlphaNumericDirective, AppTemplateComponent, ApplicationUserModel, ArRoleNavService, ArmError, ArmatureFooterComponent, ArmatureFooterModule, ArmatureHeaderComponent, ArmatureHeaderModule, ArmatureModule, ArmatureNavigationComponent, ArmatureResizePanelsModule, Attribute, AuthorizationService, BannerService, BannerType, BaseComponentModule, BaseConfigService, CacheExpirationType, ComponentSavePrintComponent, ComponentSavePrintService, Configuration, ConfirmAddressData, CoverageDetail, CssOverride, CssOverrideDirective, CustomAuthConfigService, DISABLE_ACCESS_FOR_NO_PAGES_ROLE, DISTRIBUTED_CACHE_BASE_PATH, DataStoreConfig, DecodedAccessToken, DefaultConfigService, DialogResult, DistributedCacheModule, ErrorCommonComponent, ErrorCommonConfig, ErrorModule, FAQ, FAQConfig, FaqComponent, FaqModule, FooterConfig, FormsModule, HYBRID_SAML_OAUTH_CONFIG, HeaderAuthSettings, HybridSamlOAuthConfig, HybridSamlOauthService, InputTrimDirective, LettersCharactersDirective, LettersOnlyDirective, MobileHeaderMenuComponent, ModalData, NavigationModule, NumbersOnlyDirective, Oauth2RoleService, OauthModule, PhoneFormatPipe, PolicyPerson, RBAC_CONFIG, RbacActionDirective, RbacConfig, RbacModule, RedirectSamlComponent, RedirectSamlRequest, RedirectSessionConfigs, ResizePanelsComponent, RoleAccess, RoleNavService, RoutePath, RumConfig, RumModule, RumService, SESSION_CONFIG, SOF_BLANK_LANGUAGE_OVERRIDE, SOF_DATE_PIPE_FORMATS, SamlModule, SamlService, ServerCacheService, SessionConfig, SessionService, SharedErrorService, SiteMapComponent, SiteMapDirection, SofAddressComponent, SofAlertComponent, SofArComponentSavePrintModule, SofBadgeComponent, SofBannerComponent, SofBlankPipe, SofButtonToggleGroupComponent, SofConfirmAddressComponent, SofDatePipe, SofImageCheckboxComponent, SofModalComponent, SofPipeModule, SofProgressBarComponent, SofRadioCardComponent, SofSimpleAlertComponent, SofSsnPipe, SofStarRatingComponent, SoftheonErrorHandlerService, SsoGatewayEntryService, SsoGatewayModel, States, ThemeModule, ThemeService, TypedSession, USER_ENTITY_SERVICE_CONFIG, UserEntityService, UserEntityServiceConfig, ValidationKeys, WINDOW, httpVerb, initializerFactory, keyPathPrefix, languageStorageKey, newGuid, pascalToCamel, preSignInRouteStorageKey, sessionBasePathFactory };
7107
7195
  //# sourceMappingURL=softheon-armature.mjs.map