UNPKG

9.73 kBJavaScriptView Raw
1(function (global, factory) {
2 typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('primeng/dom'), require('@angular/forms')) :
3 typeof define === 'function' && define.amd ? define('primeng/keyfilter', ['exports', '@angular/core', '@angular/common', 'primeng/dom', '@angular/forms'], factory) :
4 (global = global || self, factory((global.primeng = global.primeng || {}, global.primeng.keyfilter = {}), global.ng.core, global.ng.common, global.primeng.dom, global.ng.forms));
5}(this, (function (exports, core, common, dom, forms) { 'use strict';
6
7 var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
8 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
9 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
10 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
11 return c > 3 && r && Object.defineProperty(target, key, r), r;
12 };
13 var __values = (this && this.__values) || function(o) {
14 var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
15 if (m) return m.call(o);
16 if (o && typeof o.length === "number") return {
17 next: function () {
18 if (o && i >= o.length) o = void 0;
19 return { value: o && o[i++], done: !o };
20 }
21 };
22 throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
23 };
24 var KEYFILTER_VALIDATOR = {
25 provide: forms.NG_VALIDATORS,
26 useExisting: core.forwardRef(function () { return KeyFilter; }),
27 multi: true
28 };
29 var DEFAULT_MASKS = {
30 pint: /[\d]/,
31 'int': /[\d\-]/,
32 pnum: /[\d\.]/,
33 money: /[\d\.\s,]/,
34 num: /[\d\-\.]/,
35 hex: /[0-9a-f]/i,
36 email: /[a-z0-9_\.\-@]/i,
37 alpha: /[a-z_]/i,
38 alphanum: /[a-z0-9_]/i
39 };
40 var KEYS = {
41 TAB: 9,
42 RETURN: 13,
43 ESC: 27,
44 BACKSPACE: 8,
45 DELETE: 46
46 };
47 var SAFARI_KEYS = {
48 63234: 37,
49 63235: 39,
50 63232: 38,
51 63233: 40,
52 63276: 33,
53 63277: 34,
54 63272: 46,
55 63273: 36,
56 63275: 35 // end
57 };
58 var KeyFilter = /** @class */ (function () {
59 function KeyFilter(el) {
60 this.el = el;
61 this.ngModelChange = new core.EventEmitter();
62 this.isAndroid = dom.DomHandler.isAndroid();
63 }
64 Object.defineProperty(KeyFilter.prototype, "pattern", {
65 get: function () {
66 return this._pattern;
67 },
68 set: function (_pattern) {
69 this._pattern = _pattern;
70 this.regex = DEFAULT_MASKS[this._pattern] || this._pattern;
71 },
72 enumerable: true,
73 configurable: true
74 });
75 KeyFilter.prototype.isNavKeyPress = function (e) {
76 var k = e.keyCode;
77 k = dom.DomHandler.getBrowser().safari ? (SAFARI_KEYS[k] || k) : k;
78 return (k >= 33 && k <= 40) || k == KEYS.RETURN || k == KEYS.TAB || k == KEYS.ESC;
79 };
80 ;
81 KeyFilter.prototype.isSpecialKey = function (e) {
82 var k = e.keyCode || e.charCode;
83 return k == 9 || k == 13 || k == 27 || k == 16 || k == 17 || (k >= 18 && k <= 20) ||
84 (dom.DomHandler.getBrowser().opera && !e.shiftKey && (k == 8 || (k >= 33 && k <= 35) || (k >= 36 && k <= 39) || (k >= 44 && k <= 45)));
85 };
86 KeyFilter.prototype.getKey = function (e) {
87 var k = e.keyCode || e.charCode;
88 return dom.DomHandler.getBrowser().safari ? (SAFARI_KEYS[k] || k) : k;
89 };
90 KeyFilter.prototype.getCharCode = function (e) {
91 return e.charCode || e.keyCode || e.which;
92 };
93 KeyFilter.prototype.findDelta = function (value, prevValue) {
94 var delta = '';
95 for (var i = 0; i < value.length; i++) {
96 var str = value.substr(0, i) + value.substr(i + value.length - prevValue.length);
97 if (str === prevValue)
98 delta = value.substr(i, value.length - prevValue.length);
99 }
100 return delta;
101 };
102 KeyFilter.prototype.isValidChar = function (c) {
103 return this.regex.test(c);
104 };
105 KeyFilter.prototype.isValidString = function (str) {
106 for (var i = 0; i < str.length; i++) {
107 if (!this.isValidChar(str.substr(i, 1))) {
108 return false;
109 }
110 }
111 return true;
112 };
113 KeyFilter.prototype.onInput = function (e) {
114 if (this.isAndroid && !this.pValidateOnly) {
115 var val = this.el.nativeElement.value;
116 var lastVal = this.lastValue || '';
117 var inserted = this.findDelta(val, lastVal);
118 var removed = this.findDelta(lastVal, val);
119 var pasted = inserted.length > 1 || (!inserted && !removed);
120 if (pasted) {
121 if (!this.isValidString(val)) {
122 this.el.nativeElement.value = lastVal;
123 this.ngModelChange.emit(lastVal);
124 }
125 }
126 else if (!removed) {
127 if (!this.isValidChar(inserted)) {
128 this.el.nativeElement.value = lastVal;
129 this.ngModelChange.emit(lastVal);
130 }
131 }
132 val = this.el.nativeElement.value;
133 if (this.isValidString(val)) {
134 this.lastValue = val;
135 }
136 }
137 };
138 KeyFilter.prototype.onKeyPress = function (e) {
139 if (this.isAndroid || this.pValidateOnly) {
140 return;
141 }
142 var browser = dom.DomHandler.getBrowser();
143 var k = this.getKey(e);
144 if (browser.mozilla && (e.ctrlKey || e.altKey)) {
145 return;
146 }
147 else if (k == 17 || k == 18) {
148 return;
149 }
150 var c = this.getCharCode(e);
151 var cc = String.fromCharCode(c);
152 var ok = true;
153 if (!browser.mozilla && (this.isSpecialKey(e) || !cc)) {
154 return;
155 }
156 ok = this.regex.test(cc);
157 if (!ok) {
158 e.preventDefault();
159 }
160 };
161 KeyFilter.prototype.onPaste = function (e) {
162 var e_1, _a;
163 var clipboardData = e.clipboardData || window.clipboardData.getData('text');
164 if (clipboardData) {
165 var pastedText = clipboardData.getData('text');
166 try {
167 for (var _b = __values(pastedText.toString()), _c = _b.next(); !_c.done; _c = _b.next()) {
168 var char = _c.value;
169 if (!this.regex.test(char)) {
170 e.preventDefault();
171 return;
172 }
173 }
174 }
175 catch (e_1_1) { e_1 = { error: e_1_1 }; }
176 finally {
177 try {
178 if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
179 }
180 finally { if (e_1) throw e_1.error; }
181 }
182 }
183 };
184 KeyFilter.prototype.validate = function (c) {
185 if (this.pValidateOnly) {
186 var value = this.el.nativeElement.value;
187 if (value && !this.regex.test(value)) {
188 return {
189 validatePattern: false
190 };
191 }
192 }
193 };
194 KeyFilter.ctorParameters = function () { return [
195 { type: core.ElementRef }
196 ]; };
197 __decorate([
198 core.Input()
199 ], KeyFilter.prototype, "pValidateOnly", void 0);
200 __decorate([
201 core.Output()
202 ], KeyFilter.prototype, "ngModelChange", void 0);
203 __decorate([
204 core.Input('pKeyFilter')
205 ], KeyFilter.prototype, "pattern", null);
206 __decorate([
207 core.HostListener('input', ['$event'])
208 ], KeyFilter.prototype, "onInput", null);
209 __decorate([
210 core.HostListener('keypress', ['$event'])
211 ], KeyFilter.prototype, "onKeyPress", null);
212 __decorate([
213 core.HostListener('paste', ['$event'])
214 ], KeyFilter.prototype, "onPaste", null);
215 KeyFilter = __decorate([
216 core.Directive({
217 selector: '[pKeyFilter]',
218 providers: [KEYFILTER_VALIDATOR]
219 })
220 ], KeyFilter);
221 return KeyFilter;
222 }());
223 var KeyFilterModule = /** @class */ (function () {
224 function KeyFilterModule() {
225 }
226 KeyFilterModule = __decorate([
227 core.NgModule({
228 imports: [common.CommonModule],
229 exports: [KeyFilter],
230 declarations: [KeyFilter]
231 })
232 ], KeyFilterModule);
233 return KeyFilterModule;
234 }());
235
236 exports.KEYFILTER_VALIDATOR = KEYFILTER_VALIDATOR;
237 exports.KeyFilter = KeyFilter;
238 exports.KeyFilterModule = KeyFilterModule;
239
240 Object.defineProperty(exports, '__esModule', { value: true });
241
242})));
243//# sourceMappingURL=primeng-keyfilter.umd.js.map