UNPKG

ng6-text-restrictions

Version:

This is a project for restrict the use of caracteres in forms inputs.

110 lines (109 loc) 7.77 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { Directive, HostListener } from '@angular/core'; import { NgControl } from '@angular/forms'; export class DigitDirective { /** * @param {?} ngControl */ constructor(ngControl) { this.ngControl = ngControl; /** * Expreción regular que se evalua */ this.DIGIT = '^[0-9]*$'; /** * Nuevo objeto RegExp */ this.regExp = new RegExp(this.DIGIT); } /** * Maneja evento de cambio en el input y se ejecuta la funcion onInputChange. * {*} event Valor de input * \@memberof AlphaMxDirective * @param {?} event * @return {?} */ onModelChange(event) { if (event !== null) { this.onInputChange(event, false); } else { this.ngControl.valueAccessor.writeValue(this.valorActual); } } /** * Maneja el evento de tecla de retroceso enviando true como segundo parametro. * {*} event Evento de tecla de retroceso * \@memberof AlphaMxDirective * @param {?} event * @return {?} */ keydownBackspace(event) { this.onInputChange(event.target.value, true); } /** * Evalua los parametros con RegExp y actualiza el contenido del input * por medio de ngControl.valueAccessor, si el valor no es valido se remplaza * el contenido con la funcion replace. * {*} event Valor que se obtiene del input. * {*} backSpace Bandera valor true si el evento es desatado por esta tecla. * \@memberof AlphaMxDirective * @param {?} event * @param {?} backSpace * @return {?} */ onInputChange(event, backSpace) { /** @type {?} */ let newVal; if (backSpace) { newVal = event; this.ngControl.valueAccessor.writeValue(newVal); } else { if ((this.regExp.test(event))) { this.valorActual = event; this.ngControl.valueAccessor.writeValue(this.valorActual); } else { newVal = event.replace(/[^0-9]/g, ''); this.ngControl.valueAccessor.writeValue(newVal); } } } } DigitDirective.decorators = [ { type: Directive, args: [{ selector: '[alhDigit]' },] }, ]; /** @nocollapse */ DigitDirective.ctorParameters = () => [ { type: NgControl } ]; DigitDirective.propDecorators = { onModelChange: [{ type: HostListener, args: ['ngModelChange', ['$event'],] }], keydownBackspace: [{ type: HostListener, args: ['keydown.backspace', ['$event'],] }] }; if (false) { /** * Expreción regular que se evalua * @type {?} */ DigitDirective.prototype.DIGIT; /** * Nuevo objeto RegExp * @type {?} */ DigitDirective.prototype.regExp; /** * Valor ingresado en el input * @type {?} */ DigitDirective.prototype.valorActual; /** @type {?} */ DigitDirective.prototype.ngControl; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmc2LXRleHQtcmVzdHJpY3Rpb25zLyIsInNvdXJjZXMiOlsibGliL2RpZ2l0L2RpZ2l0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSzNDLE1BQU07Ozs7SUFXSixZQUNVO1FBQUEsY0FBUyxHQUFULFNBQVM7Ozs7cUJBVEosVUFBVTs7OztzQkFHaEIsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztLQU8xQjs7Ozs7Ozs7SUFRTCxhQUFhLENBQUMsS0FBSztRQUNqQixFQUFFLENBQUMsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNuQixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNsQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUM3RDtLQUNGOzs7Ozs7OztJQVFELGdCQUFnQixDQUFDLEtBQUs7UUFDcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztLQUM5Qzs7Ozs7Ozs7Ozs7O0lBVUQsYUFBYSxDQUFDLEtBQUssRUFBRSxTQUFTOztRQUM1QixJQUFJLE1BQU0sQ0FBUztRQUNuQixFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ2QsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUNmLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNqRDtRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ04sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDM0Q7WUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDTixNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUNqRDtTQUNGO0tBQ0Y7OztZQWhFRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFlBQVk7YUFDdkI7Ozs7WUFKUSxTQUFTOzs7NEJBeUJmLFlBQVksU0FBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7K0JBY3hDLFlBQVksU0FBQyxtQkFBbUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1thbGhEaWdpdF0nXG59KVxuZXhwb3J0IGNsYXNzIERpZ2l0RGlyZWN0aXZlIHtcblxuICAvKiogRXhwcmVjacOzbiByZWd1bGFyIHF1ZSBzZSBldmFsdWEgKi9cbiAgcHVibGljIERJR0lUID0gJ15bMC05XSokJztcblxuICAvKiogIE51ZXZvIG9iamV0byBSZWdFeHAgKi9cbiAgcmVnRXhwID0gbmV3IFJlZ0V4cCh0aGlzLkRJR0lUKTtcblxuICAvKiogVmFsb3IgaW5ncmVzYWRvIGVuIGVsIGlucHV0ICovXG4gIHZhbG9yQWN0dWFsOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBuZ0NvbnRyb2w6IE5nQ29udHJvbFxuICApIHsgfVxuXG4gIC8qKlxuICAgKiBNYW5lamEgZXZlbnRvIGRlIGNhbWJpbyBlbiBlbCBpbnB1dCB5IHNlIGVqZWN1dGEgbGEgZnVuY2lvbiBvbklucHV0Q2hhbmdlLlxuICAgKiB7Kn0gZXZlbnQgVmFsb3IgZGUgaW5wdXRcbiAgICogQG1lbWJlcm9mIEFscGhhTXhEaXJlY3RpdmVcbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ25nTW9kZWxDaGFuZ2UnLCBbJyRldmVudCddKVxuICBvbk1vZGVsQ2hhbmdlKGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50ICE9PSBudWxsKSB7XG4gICAgICB0aGlzLm9uSW5wdXRDaGFuZ2UoZXZlbnQsIGZhbHNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yLndyaXRlVmFsdWUodGhpcy52YWxvckFjdHVhbCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1hbmVqYSBlbCBldmVudG8gZGUgdGVjbGEgZGUgcmV0cm9jZXNvIGVudmlhbmRvIHRydWUgY29tbyBzZWd1bmRvIHBhcmFtZXRyby5cbiAgICogeyp9IGV2ZW50IEV2ZW50byBkZSB0ZWNsYSBkZSByZXRyb2Nlc29cbiAgICogQG1lbWJlcm9mIEFscGhhTXhEaXJlY3RpdmVcbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uYmFja3NwYWNlJywgWyckZXZlbnQnXSlcbiAga2V5ZG93bkJhY2tzcGFjZShldmVudCkge1xuICAgIHRoaXMub25JbnB1dENoYW5nZShldmVudC50YXJnZXQudmFsdWUsIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV2YWx1YSBsb3MgcGFyYW1ldHJvcyBjb24gUmVnRXhwIHkgYWN0dWFsaXphIGVsIGNvbnRlbmlkbyBkZWwgaW5wdXRcbiAgICogcG9yIG1lZGlvIGRlIG5nQ29udHJvbC52YWx1ZUFjY2Vzc29yLCBzaSBlbCB2YWxvciBubyBlcyB2YWxpZG8gc2UgcmVtcGxhemFcbiAgICogZWwgY29udGVuaWRvIGNvbiBsYSBmdW5jaW9uIHJlcGxhY2UuXG4gICAqIHsqfSBldmVudCBWYWxvciBxdWUgc2Ugb2J0aWVuZSBkZWwgaW5wdXQuXG4gICAqIHsqfSBiYWNrU3BhY2UgQmFuZGVyYSB2YWxvciB0cnVlIHNpIGVsIGV2ZW50byBlcyBkZXNhdGFkbyBwb3IgZXN0YSB0ZWNsYS5cbiAgICogQG1lbWJlcm9mIEFscGhhTXhEaXJlY3RpdmVcbiAgICovXG4gIG9uSW5wdXRDaGFuZ2UoZXZlbnQsIGJhY2tTcGFjZSkge1xuICAgIGxldCBuZXdWYWw6IHN0cmluZztcbiAgICBpZiAoYmFja1NwYWNlKSB7XG4gICAgICBuZXdWYWwgPSBldmVudDtcbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3Iud3JpdGVWYWx1ZShuZXdWYWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoKHRoaXMucmVnRXhwLnRlc3QoZXZlbnQpKSkge1xuICAgICAgICB0aGlzLnZhbG9yQWN0dWFsID0gZXZlbnQ7XG4gICAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3Iud3JpdGVWYWx1ZSh0aGlzLnZhbG9yQWN0dWFsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld1ZhbCA9IGV2ZW50LnJlcGxhY2UoL1teMC05XS9nLCAnJyk7XG4gICAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3Iud3JpdGVWYWx1ZShuZXdWYWwpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG5cbn1cbiJdfQ==