ng-form-helper
Version:
Feature set to use in your angular form
90 lines • 6.54 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: lib/regexed-field.directive.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Directive, ElementRef, forwardRef, HostListener, Input, Renderer2 } from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
import { FormFieldDirective } from './form-field.directive';
export class RegexedFieldDirective extends FormFieldDirective {
/**
* @param {?} element
* @param {?} renderer
*/
constructor(element, renderer) {
super();
this.element = element;
this.renderer = renderer;
this.regexRule = /(?:)/;
}
/**
* @param {?} regex
* @return {?}
*/
set setRegex(regex) {
this.regexRule = new RegExp(regex);
}
/**
* @param {?} event
* @return {?}
*/
onInput(event) {
/** @type {?} */
const value = this.getValueFromKeyboardEvent(event);
// this validation is here for IE11 or lower... it emmits the input event for anything
// and create a loop
if (value === this.oldState.value) {
return;
}
if (this.regexRule.test(value)) {
/** @type {?} */
const cursorInitialPosition = this.element.nativeElement.selectionStart;
this.updateFieldValue(value);
this.setCursorPosition(cursorInitialPosition);
return;
}
this.resetField();
}
}
RegexedFieldDirective.decorators = [
{ type: Directive, args: [{
selector: '[formRegexedField]',
providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef((/**
* @return {?}
*/
() => RegexedFieldDirective)),
multi: true
}
]
},] }
];
/** @nocollapse */
RegexedFieldDirective.ctorParameters = () => [
{ type: ElementRef },
{ type: Renderer2 }
];
RegexedFieldDirective.propDecorators = {
setRegex: [{ type: Input, args: ['formRegexedField',] }],
onInput: [{ type: HostListener, args: ['input', ['$event'],] }]
};
if (false) {
/**
* @type {?}
* @private
*/
RegexedFieldDirective.prototype.regexRule;
/**
* @type {?}
* @protected
*/
RegexedFieldDirective.prototype.element;
/**
* @type {?}
* @protected
*/
RegexedFieldDirective.prototype.renderer;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnZXhlZC1maWVsZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1mb3JtLWhlbHBlci8iLCJzb3VyY2VzIjpbImxpYi9yZWdleGVkLWZpZWxkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQVk1RCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsa0JBQWtCOzs7OztJQVMzRCxZQUNZLE9BQW1CLEVBQ25CLFFBQW1CO1FBRTdCLEtBQUssRUFBRSxDQUFDO1FBSEUsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUNuQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBSnZCLGNBQVMsR0FBRyxNQUFNLENBQUM7SUFPM0IsQ0FBQzs7Ozs7SUFaRCxJQUNJLFFBQVEsQ0FBQyxLQUFhO1FBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQzs7Ozs7SUFZRCxPQUFPLENBQUMsS0FBb0I7O2NBQ3BCLEtBQUssR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDO1FBQ25ELHVGQUF1RjtRQUN2RixxQkFBcUI7UUFDckIsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUU7WUFDakMsT0FBTztTQUNSO1FBRUQsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTs7a0JBQ3hCLHFCQUFxQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGNBQWM7WUFDdkUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQzlDLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDOzs7WUEzQ0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxvQkFBb0I7Z0JBQzlCLFNBQVMsRUFBRTtvQkFDVDt3QkFDRSxPQUFPLEVBQUUsaUJBQWlCO3dCQUMxQixXQUFXLEVBQUUsVUFBVTs7O3dCQUFDLEdBQUcsRUFBRSxDQUFDLHFCQUFxQixFQUFDO3dCQUNwRCxLQUFLLEVBQUUsSUFBSTtxQkFDWjtpQkFDRjthQUNGOzs7O1lBYm1CLFVBQVU7WUFBbUMsU0FBUzs7O3VCQWdCdkUsS0FBSyxTQUFDLGtCQUFrQjtzQkFjeEIsWUFBWSxTQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQzs7Ozs7OztJQVRqQywwQ0FBMkI7Ozs7O0lBR3pCLHdDQUE2Qjs7Ozs7SUFDN0IseUNBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmLCBIb3N0TGlzdGVuZXIsIElucHV0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZvcm1GaWVsZERpcmVjdGl2ZSB9IGZyb20gJy4vZm9ybS1maWVsZC5kaXJlY3RpdmUnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbZm9ybVJlZ2V4ZWRGaWVsZF0nLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUmVnZXhlZEZpZWxkRGlyZWN0aXZlKSxcclxuICAgICAgbXVsdGk6IHRydWVcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWdleGVkRmllbGREaXJlY3RpdmUgZXh0ZW5kcyBGb3JtRmllbGREaXJlY3RpdmUge1xyXG5cclxuICBASW5wdXQoJ2Zvcm1SZWdleGVkRmllbGQnKVxyXG4gIHNldCBzZXRSZWdleChyZWdleDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnJlZ2V4UnVsZSA9IG5ldyBSZWdFeHAocmVnZXgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWdleFJ1bGUgPSAvKD86KS87XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJvdGVjdGVkIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXHJcbiAgICBwcm90ZWN0ZWQgcmVuZGVyZXI6IFJlbmRlcmVyMlxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2lucHV0JywgWyckZXZlbnQnXSlcclxuICBvbklucHV0KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWVGcm9tS2V5Ym9hcmRFdmVudChldmVudCk7XHJcbiAgICAvLyAgdGhpcyB2YWxpZGF0aW9uIGlzIGhlcmUgZm9yIElFMTEgb3IgbG93ZXIuLi4gaXQgZW1taXRzIHRoZSBpbnB1dCBldmVudCBmb3IgYW55dGhpbmdcclxuICAgIC8vICBhbmQgY3JlYXRlIGEgbG9vcFxyXG4gICAgaWYgKHZhbHVlID09PSB0aGlzLm9sZFN0YXRlLnZhbHVlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5yZWdleFJ1bGUudGVzdCh2YWx1ZSkpIHtcclxuICAgICAgY29uc3QgY3Vyc29ySW5pdGlhbFBvc2l0aW9uID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQ7XHJcbiAgICAgIHRoaXMudXBkYXRlRmllbGRWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgIHRoaXMuc2V0Q3Vyc29yUG9zaXRpb24oY3Vyc29ySW5pdGlhbFBvc2l0aW9uKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucmVzZXRGaWVsZCgpO1xyXG4gIH1cclxufVxyXG4iXX0=