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
|
57 | };
|
58 | var KeyFilter = (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 = (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 |
|