UNPKG

12.2 kBSource Map (JSON)View Raw
1{"version":3,"file":"primeng-keyfilter.umd.js","sources":["ng://primeng/keyfilter/keyfilter.ts"],"sourcesContent":["import { NgModule, Directive, ElementRef, HostListener, Input, forwardRef, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler } from 'primeng/dom';\nimport { Validator, AbstractControl, NG_VALIDATORS } from '@angular/forms';\n\nexport const KEYFILTER_VALIDATOR: any = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => KeyFilter),\n multi: true\n};\n\nconst DEFAULT_MASKS = {\n pint: /[\\d]/,\n 'int': /[\\d\\-]/,\n pnum: /[\\d\\.]/,\n money: /[\\d\\.\\s,]/,\n num: /[\\d\\-\\.]/,\n hex: /[0-9a-f]/i,\n email: /[a-z0-9_\\.\\-@]/i,\n alpha: /[a-z_]/i,\n alphanum: /[a-z0-9_]/i\n};\n\nconst KEYS = {\n TAB: 9,\n RETURN: 13,\n ESC: 27,\n BACKSPACE: 8,\n DELETE: 46\n};\n\nconst SAFARI_KEYS = {\n 63234: 37, // left\n 63235: 39, // right\n 63232: 38, // up\n 63233: 40, // down\n 63276: 33, // page up\n 63277: 34, // page down\n 63272: 46, // delete\n 63273: 36, // home\n 63275: 35 // end\n};\n\n@Directive({\n selector: '[pKeyFilter]',\n providers: [KEYFILTER_VALIDATOR]\n})\nexport class KeyFilter implements Validator {\n\n @Input() pValidateOnly: boolean;\n\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\n\n regex: RegExp;\n\n _pattern: any;\n\n isAndroid: boolean;\n\n lastValue: any;\n\n constructor(public el: ElementRef) {\n this.isAndroid = DomHandler.isAndroid();\n }\n\n get pattern(): any {\n return this._pattern;\n }\n\n @Input('pKeyFilter') set pattern(_pattern: any) {\n this._pattern = _pattern;\n this.regex = DEFAULT_MASKS[this._pattern] || this._pattern;\n }\n\n isNavKeyPress(e: KeyboardEvent) {\n let k = e.keyCode;\n k = DomHandler.getBrowser().safari ? (SAFARI_KEYS[k] || k) : k;\n\n return (k >= 33 && k <= 40) || k == KEYS.RETURN || k == KEYS.TAB || k == KEYS.ESC;\n };\n\n isSpecialKey(e: KeyboardEvent) {\n let k = e.keyCode || e.charCode;\n\n return k == 9 || k == 13 || k == 27 || k == 16 || k == 17 ||(k >= 18 && k <= 20) ||\n (DomHandler.getBrowser().opera && !e.shiftKey && (k == 8 || (k >= 33 && k <= 35) || (k >= 36 && k <= 39) || (k >= 44 && k <= 45)));\n }\n\n\n getKey(e: KeyboardEvent) {\n let k = e.keyCode || e.charCode;\n return DomHandler.getBrowser().safari ? (SAFARI_KEYS[k] || k) : k;\n }\n\n getCharCode(e: KeyboardEvent) {\n return e.charCode || e.keyCode || e.which;\n }\n\n findDelta(value: string, prevValue: string) {\n let delta = '';\n\n for (let i = 0; i < value.length; i++) {\n let str = value.substr(0, i) + value.substr(i + value.length - prevValue.length);\n\n if (str === prevValue)\n delta = value.substr(i, value.length - prevValue.length);\n }\n\n return delta;\n }\n\n isValidChar(c: string) {\n return this.regex.test(c);\n }\n\n isValidString(str: string) {\n for (let i = 0; i < str.length; i++) {\n if (!this.isValidChar(str.substr(i, 1))) {\n return false;\n }\n }\n\n return true;\n }\n\n @HostListener('input', ['$event'])\n onInput(e: KeyboardEvent) {\n if (this.isAndroid && !this.pValidateOnly) {\n let val = this.el.nativeElement.value;\n let lastVal = this.lastValue || '';\n\n let inserted = this.findDelta(val, lastVal);\n let removed = this.findDelta(lastVal, val);\n let pasted = inserted.length > 1 || (!inserted && !removed);\n\n if (pasted) {\n if (!this.isValidString(val)) {\n this.el.nativeElement.value = lastVal;\n this.ngModelChange.emit(lastVal);\n }\n }\n else if (!removed) {\n if (!this.isValidChar(inserted)) {\n this.el.nativeElement.value = lastVal;\n this.ngModelChange.emit(lastVal);\n }\n }\n\n val = this.el.nativeElement.value;\n if (this.isValidString(val)) {\n this.lastValue = val;\n }\n }\n }\n\n @HostListener('keypress', ['$event'])\n onKeyPress(e: KeyboardEvent) {\n if (this.isAndroid || this.pValidateOnly) {\n return;\n }\n\n let browser = DomHandler.getBrowser();\n let k = this.getKey(e);\n\n if (browser.mozilla && (e.ctrlKey || e.altKey)) {\n return;\n }\n else if (k == 17 || k == 18) {\n return;\n }\n\n let c = this.getCharCode(e);\n let cc = String.fromCharCode(c);\n let ok = true;\n\n if (!browser.mozilla && (this.isSpecialKey(e) || !cc)) {\n return;\n }\n\n ok = this.regex.test(cc);\n\n if (!ok) {\n e.preventDefault();\n }\n }\n\n @HostListener('paste', ['$event'])\n onPaste(e) {\n const clipboardData = e.clipboardData || (<any>window).clipboardData.getData('text');\n if (clipboardData) {\n const pastedText = clipboardData.getData('text');\n for (let char of pastedText.toString()) {\n if (!this.regex.test(char)) {\n e.preventDefault();\n return;\n }\n }\n }\n }\n\n validate(c: AbstractControl): { [key: string]: any } {\n if (this.pValidateOnly) {\n let value = this.el.nativeElement.value;\n if (value && !this.regex.test(value)) {\n return {\n validatePattern: false\n }\n }\n }\n }\n\n}\n\n@NgModule({\n imports: [CommonModule],\n exports: [KeyFilter],\n declarations: [KeyFilter]\n})\nexport class KeyFilterModule { }\n"],"names":["NG_VALIDATORS","forwardRef","EventEmitter","DomHandler","ElementRef","Input","Output","HostListener","Directive","NgModule","CommonModule"],"mappings":"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"}
\No newline at end of file