UNPKG

@neocomplexx/ngx-neo-directives

Version:

This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.0.5.

138 lines 11 kB
/** * @fileoverview added by tsickle * Generated from: lib/composite-input/composite-input.directive.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Directive, HostListener, ElementRef, Input } from '@angular/core'; import { isCommandKey } from './commandKey.function'; var NeoCompositeInputDirective = /** @class */ (function () { function NeoCompositeInputDirective(el) { this.el = el; // Next input to move from the current input this.previousInput = null; // Previous input to move from the current input this.nextInput = null; } /** * @param {?} e * @return {?} */ NeoCompositeInputDirective.prototype.onKeyDown = /** * @param {?} e * @return {?} */ function (e) { // If the element is selected and the user presses backspace we must clear the input if (e.key === 'Backspace' && this.elementIsSelected()) { return true; } // We must move to the previous input if the user presses backspace and he is in the first position of the input // or if he presses the left key if (((e.key === 'Backspace') && (this.el.nativeElement.selectionStart === 0) || ((e.key === 'ArrowLeft') || (e.key === 'Left')))) { if ((this.previousInput) && (this.previousInput instanceof HTMLInputElement) && (!this.previousInput.disabled)) { this.previousInput.focus(); return false; } } // If he presses the right arrow it must move to the next input if (e.key === 'ArrowRight' || e.key === 'Right') { if ((this.nextInput) && (this.nextInput instanceof HTMLInputElement) && (!this.nextInput.disabled)) { this.nextInput.focus(); return false; } } }; /** * * Method called on keyup to check if the pressed key is allow, if it is not it stops the event. * If the element reached its maximum length on key pressed it must jump to the next input * @param e */ /** * * Method called on keyup to check if the pressed key is allow, if it is not it stops the event. * If the element reached its maximum length on key pressed it must jump to the next input * @param {?} e * @return {?} */ NeoCompositeInputDirective.prototype.onKeyUp = /** * * Method called on keyup to check if the pressed key is allow, if it is not it stops the event. * If the element reached its maximum length on key pressed it must jump to the next input * @param {?} e * @return {?} */ function (e) { if (isCommandKey(e)) { return; } /** @type {?} */ var value = this.el.nativeElement.value; if (this.nextInput && (value.length >= this.el.nativeElement.maxLength)) { this.nextInput.focus(); } }; /** * On focus we select the entire value of the input */ /** * On focus we select the entire value of the input * @return {?} */ NeoCompositeInputDirective.prototype.onFocus = /** * On focus we select the entire value of the input * @return {?} */ function () { this.el.nativeElement.select(); }; /** * Method to check if the element is selected * */ /** * Method to check if the element is selected * * @private * @return {?} */ NeoCompositeInputDirective.prototype.elementIsSelected = /** * Method to check if the element is selected * * @private * @return {?} */ function () { return this.el.nativeElement.selectionStart === 0 && this.el.nativeElement.selectionEnd !== 0; }; NeoCompositeInputDirective.decorators = [ { type: Directive, args: [{ selector: '[compositeInput]' },] } ]; /** @nocollapse */ NeoCompositeInputDirective.ctorParameters = function () { return [ { type: ElementRef } ]; }; NeoCompositeInputDirective.propDecorators = { previousInput: [{ type: Input }], nextInput: [{ type: Input }], onKeyDown: [{ type: HostListener, args: ['keydown', ['$event'],] }], onKeyUp: [{ type: HostListener, args: ['keyup', ['$event'],] }], onFocus: [{ type: HostListener, args: ['focus', [],] }] }; return NeoCompositeInputDirective; }()); export { NeoCompositeInputDirective }; if (false) { /** @type {?} */ NeoCompositeInputDirective.prototype.previousInput; /** @type {?} */ NeoCompositeInputDirective.prototype.nextInput; /** * @type {?} * @private */ NeoCompositeInputDirective.prototype.el; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9zaXRlLWlucHV0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZW9jb21wbGV4eC9uZ3gtbmVvLWRpcmVjdGl2ZXMvIiwic291cmNlcyI6WyJsaWIvY29tcG9zaXRlLWlucHV0L2NvbXBvc2l0ZS1pbnB1dC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVyRDtJQVVFLG9DQUFvQixFQUFjO1FBQWQsT0FBRSxHQUFGLEVBQUUsQ0FBWTs7UUFKekIsa0JBQWEsR0FBUSxJQUFJLENBQUM7O1FBRTFCLGNBQVMsR0FBUSxJQUFJLENBQUM7SUFHL0IsQ0FBQzs7Ozs7SUFFb0MsOENBQVM7Ozs7SUFBOUMsVUFBK0MsQ0FBZ0I7UUFDN0Qsb0ZBQW9GO1FBQ3BGLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxXQUFXLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUU7WUFDckQsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELGdIQUFnSDtRQUNoSCxnQ0FBZ0M7UUFDaEMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGNBQWMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2hJLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxZQUFZLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQzlHLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzNCLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7U0FDRjtRQUNELCtEQUErRDtRQUMvRCxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssWUFBWSxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssT0FBTyxFQUFFO1lBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxZQUFZLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ2xHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3ZCLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7U0FDRjtJQUNILENBQUM7SUFFRDs7Ozs7T0FLRzs7Ozs7Ozs7SUFDZ0MsNENBQU87Ozs7Ozs7SUFBMUMsVUFBMkMsQ0FBZ0I7UUFDekQsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFBRSxPQUFPO1NBQUU7O1lBQzFCLEtBQUssR0FBVyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLO1FBQ2pELElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDdkUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUN4QjtJQUNILENBQUM7SUFFRDs7T0FFRzs7Ozs7SUFDd0IsNENBQU87Ozs7SUFBbEM7UUFDRSxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7OztPQUdHOzs7Ozs7O0lBQ0ssc0RBQWlCOzs7Ozs7SUFBekI7UUFDRSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGNBQWMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsWUFBWSxLQUFLLENBQUMsQ0FBQztJQUNoRyxDQUFDOztnQkEvREYsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7aUJBQzdCOzs7O2dCQUxpQyxVQUFVOzs7Z0NBU3pDLEtBQUs7NEJBRUwsS0FBSzs0QkFLTCxZQUFZLFNBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDOzBCQTZCbEMsWUFBWSxTQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQzswQkFXaEMsWUFBWSxTQUFDLE9BQU8sRUFBRSxFQUFFOztJQVkzQixpQ0FBQztDQUFBLEFBakVELElBaUVDO1NBOURZLDBCQUEwQjs7O0lBR3JDLG1EQUFtQzs7SUFFbkMsK0NBQStCOzs7OztJQUVuQix3Q0FBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgRWxlbWVudFJlZiwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzQ29tbWFuZEtleSB9IGZyb20gJy4vY29tbWFuZEtleS5mdW5jdGlvbic7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjb21wb3NpdGVJbnB1dF0nXG59KVxuZXhwb3J0IGNsYXNzIE5lb0NvbXBvc2l0ZUlucHV0RGlyZWN0aXZlIHtcblxuICAvLyBOZXh0IGlucHV0IHRvIG1vdmUgZnJvbSB0aGUgY3VycmVudCBpbnB1dFxuICBASW5wdXQoKSBwcmV2aW91c0lucHV0OiBhbnkgPSBudWxsO1xuICAvLyBQcmV2aW91cyBpbnB1dCB0byBtb3ZlIGZyb20gdGhlIGN1cnJlbnQgaW5wdXRcbiAgQElucHV0KCkgbmV4dElucHV0OiBhbnkgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKSBvbktleURvd24oZTogS2V5Ym9hcmRFdmVudCkge1xuICAgIC8vIElmIHRoZSBlbGVtZW50IGlzIHNlbGVjdGVkIGFuZCB0aGUgdXNlciBwcmVzc2VzIGJhY2tzcGFjZSB3ZSBtdXN0IGNsZWFyIHRoZSBpbnB1dFxuICAgIGlmIChlLmtleSA9PT0gJ0JhY2tzcGFjZScgJiYgdGhpcy5lbGVtZW50SXNTZWxlY3RlZCgpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBXZSBtdXN0IG1vdmUgdG8gdGhlIHByZXZpb3VzIGlucHV0IGlmIHRoZSB1c2VyIHByZXNzZXMgYmFja3NwYWNlIGFuZCBoZSBpcyBpbiB0aGUgZmlyc3QgcG9zaXRpb24gb2YgdGhlIGlucHV0XG4gICAgLy8gb3IgaWYgaGUgcHJlc3NlcyB0aGUgbGVmdCBrZXlcbiAgICBpZiAoKChlLmtleSA9PT0gJ0JhY2tzcGFjZScpICYmICh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPT09IDApIHx8ICgoZS5rZXkgPT09ICdBcnJvd0xlZnQnKSB8fCAoZS5rZXkgPT09ICdMZWZ0JykpKSkge1xuICAgICAgaWYgKCh0aGlzLnByZXZpb3VzSW5wdXQpICYmICh0aGlzLnByZXZpb3VzSW5wdXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KSAmJiAoIXRoaXMucHJldmlvdXNJbnB1dC5kaXNhYmxlZCkpIHtcbiAgICAgICAgdGhpcy5wcmV2aW91c0lucHV0LmZvY3VzKCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gSWYgaGUgcHJlc3NlcyB0aGUgcmlnaHQgYXJyb3cgaXQgbXVzdCBtb3ZlIHRvIHRoZSBuZXh0IGlucHV0XG4gICAgaWYgKGUua2V5ID09PSAnQXJyb3dSaWdodCcgfHwgZS5rZXkgPT09ICdSaWdodCcpIHtcbiAgICAgIGlmICgodGhpcy5uZXh0SW5wdXQpICYmICh0aGlzLm5leHRJbnB1dCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQpICYmICghdGhpcy5uZXh0SW5wdXQuZGlzYWJsZWQpKSB7XG4gICAgICAgIHRoaXMubmV4dElucHV0LmZvY3VzKCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogTWV0aG9kIGNhbGxlZCBvbiBrZXl1cCB0byBjaGVjayBpZiB0aGUgcHJlc3NlZCBrZXkgaXMgYWxsb3csIGlmIGl0IGlzIG5vdCBpdCBzdG9wcyB0aGUgZXZlbnQuXG4gICAqIElmIHRoZSBlbGVtZW50IHJlYWNoZWQgaXRzIG1heGltdW0gbGVuZ3RoIG9uIGtleSBwcmVzc2VkIGl0IG11c3QganVtcCB0byB0aGUgbmV4dCBpbnB1dFxuICAgKiBAcGFyYW0gZVxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcigna2V5dXAnLCBbJyRldmVudCddKSBvbktleVVwKGU6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoaXNDb21tYW5kS2V5KGUpKSB7IHJldHVybjsgfVxuICAgIGNvbnN0IHZhbHVlOiBzdHJpbmcgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gICAgaWYgKHRoaXMubmV4dElucHV0ICYmICh2YWx1ZS5sZW5ndGggPj0gdGhpcy5lbC5uYXRpdmVFbGVtZW50Lm1heExlbmd0aCkpIHtcbiAgICAgIHRoaXMubmV4dElucHV0LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE9uIGZvY3VzIHdlIHNlbGVjdCB0aGUgZW50aXJlIHZhbHVlIG9mIHRoZSBpbnB1dFxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcignZm9jdXMnLCBbXSkgb25Gb2N1cygpIHtcbiAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc2VsZWN0KCk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHRvIGNoZWNrIGlmIHRoZSBlbGVtZW50IGlzIHNlbGVjdGVkXG4gICAqXG4gICAqL1xuICBwcml2YXRlIGVsZW1lbnRJc1NlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPT09IDAgJiYgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZCAhPT0gMDtcbiAgfVxuXG59XG4iXX0=