UNPKG

@neocomplexx/ngx-neo-directives-mat

Version:
98 lines 10.3 kB
import { __decorate, __metadata } from "tslib"; import { Directive, HostListener, ElementRef, Input } from '@angular/core'; import { isCommandKey } from './commandKey.function'; let NeoCompositeInputDirective = class NeoCompositeInputDirective { constructor(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; } onKeyDown(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 */ onKeyUp(e) { if (isCommandKey(e)) { return; } const 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 */ onFocus() { this.el.nativeElement.select(); } /** * Method to check if the element is selected * */ elementIsSelected() { return this.el.nativeElement.selectionStart === 0 && this.el.nativeElement.selectionEnd !== 0; } }; NeoCompositeInputDirective.ctorParameters = () => [ { type: ElementRef } ]; __decorate([ Input(), __metadata("design:type", Object) ], NeoCompositeInputDirective.prototype, "previousInput", void 0); __decorate([ Input(), __metadata("design:type", Object) ], NeoCompositeInputDirective.prototype, "nextInput", void 0); __decorate([ HostListener('keydown', ['$event']), __metadata("design:type", Function), __metadata("design:paramtypes", [KeyboardEvent]), __metadata("design:returntype", void 0) ], NeoCompositeInputDirective.prototype, "onKeyDown", null); __decorate([ HostListener('keyup', ['$event']), __metadata("design:type", Function), __metadata("design:paramtypes", [KeyboardEvent]), __metadata("design:returntype", void 0) ], NeoCompositeInputDirective.prototype, "onKeyUp", null); __decorate([ HostListener('focus', []), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", void 0) ], NeoCompositeInputDirective.prototype, "onFocus", null); NeoCompositeInputDirective = __decorate([ Directive({ selector: '[compositeInput]' }), __metadata("design:paramtypes", [ElementRef]) ], NeoCompositeInputDirective); export { NeoCompositeInputDirective }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9zaXRlLWlucHV0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZW9jb21wbGV4eC9uZ3gtbmVvLWRpcmVjdGl2ZXMtbWF0LyIsInNvdXJjZXMiOlsibGliL2NvbXBvc2l0ZS1pbnB1dC9jb21wb3NpdGUtaW5wdXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUtyRCxJQUFhLDBCQUEwQixHQUF2QyxNQUFhLDBCQUEwQjtJQU9yQyxZQUFvQixFQUFjO1FBQWQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUxsQyw0Q0FBNEM7UUFDbkMsa0JBQWEsR0FBUSxJQUFJLENBQUM7UUFDbkMsZ0RBQWdEO1FBQ3ZDLGNBQVMsR0FBUSxJQUFJLENBQUM7SUFHL0IsQ0FBQztJQUVvQyxTQUFTLENBQUMsQ0FBZ0I7UUFDN0Qsb0ZBQW9GO1FBQ3BGLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxXQUFXLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUU7WUFDckQsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELGdIQUFnSDtRQUNoSCxnQ0FBZ0M7UUFDaEMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGNBQWMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2hJLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxZQUFZLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQzlHLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzNCLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7U0FDRjtRQUNELCtEQUErRDtRQUMvRCxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssWUFBWSxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssT0FBTyxFQUFFO1lBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxZQUFZLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ2xHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3ZCLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7U0FDRjtJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNnQyxPQUFPLENBQUMsQ0FBZ0I7UUFDekQsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFBRSxPQUFPO1NBQUU7UUFDaEMsTUFBTSxLQUFLLEdBQVcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO1FBQ2xELElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDdkUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUN4QjtJQUNILENBQUM7SUFFRDs7T0FFRztJQUN3QixPQUFPO1FBQ2hDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7O09BR0c7SUFDSyxpQkFBaUI7UUFDdkIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxjQUFjLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFlBQVksS0FBSyxDQUFDLENBQUM7SUFDaEcsQ0FBQztDQUVGLENBQUE7O1lBdkR5QixVQUFVOztBQUp6QjtJQUFSLEtBQUssRUFBRTs7aUVBQTJCO0FBRTFCO0lBQVIsS0FBSyxFQUFFOzs2REFBdUI7QUFLTTtJQUFwQyxZQUFZLENBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7O3FDQUFjLGFBQWE7OzJEQXFCOUQ7QUFRa0M7SUFBbEMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDOztxQ0FBWSxhQUFhOzt5REFNMUQ7QUFLMEI7SUFBMUIsWUFBWSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7Ozs7eURBRXpCO0FBcERVLDBCQUEwQjtJQUh0QyxTQUFTLENBQUM7UUFDVCxRQUFRLEVBQUUsa0JBQWtCO0tBQzdCLENBQUM7cUNBUXdCLFVBQVU7R0FQdkIsMEJBQTBCLENBOER0QztTQTlEWSwwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgRWxlbWVudFJlZiwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgaXNDb21tYW5kS2V5IH0gZnJvbSAnLi9jb21tYW5kS2V5LmZ1bmN0aW9uJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2NvbXBvc2l0ZUlucHV0XSdcclxufSlcclxuZXhwb3J0IGNsYXNzIE5lb0NvbXBvc2l0ZUlucHV0RGlyZWN0aXZlIHtcclxuXHJcbiAgLy8gTmV4dCBpbnB1dCB0byBtb3ZlIGZyb20gdGhlIGN1cnJlbnQgaW5wdXRcclxuICBASW5wdXQoKSBwcmV2aW91c0lucHV0OiBhbnkgPSBudWxsO1xyXG4gIC8vIFByZXZpb3VzIGlucHV0IHRvIG1vdmUgZnJvbSB0aGUgY3VycmVudCBpbnB1dFxyXG4gIEBJbnB1dCgpIG5leHRJbnB1dDogYW55ID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZikge1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pIG9uS2V5RG93bihlOiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICAvLyBJZiB0aGUgZWxlbWVudCBpcyBzZWxlY3RlZCBhbmQgdGhlIHVzZXIgcHJlc3NlcyBiYWNrc3BhY2Ugd2UgbXVzdCBjbGVhciB0aGUgaW5wdXRcclxuICAgIGlmIChlLmtleSA9PT0gJ0JhY2tzcGFjZScgJiYgdGhpcy5lbGVtZW50SXNTZWxlY3RlZCgpKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFdlIG11c3QgbW92ZSB0byB0aGUgcHJldmlvdXMgaW5wdXQgaWYgdGhlIHVzZXIgcHJlc3NlcyBiYWNrc3BhY2UgYW5kIGhlIGlzIGluIHRoZSBmaXJzdCBwb3NpdGlvbiBvZiB0aGUgaW5wdXRcclxuICAgIC8vIG9yIGlmIGhlIHByZXNzZXMgdGhlIGxlZnQga2V5XHJcbiAgICBpZiAoKChlLmtleSA9PT0gJ0JhY2tzcGFjZScpICYmICh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPT09IDApIHx8ICgoZS5rZXkgPT09ICdBcnJvd0xlZnQnKSB8fCAoZS5rZXkgPT09ICdMZWZ0JykpKSkge1xyXG4gICAgICBpZiAoKHRoaXMucHJldmlvdXNJbnB1dCkgJiYgKHRoaXMucHJldmlvdXNJbnB1dCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQpICYmICghdGhpcy5wcmV2aW91c0lucHV0LmRpc2FibGVkKSkge1xyXG4gICAgICAgIHRoaXMucHJldmlvdXNJbnB1dC5mb2N1cygpO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gSWYgaGUgcHJlc3NlcyB0aGUgcmlnaHQgYXJyb3cgaXQgbXVzdCBtb3ZlIHRvIHRoZSBuZXh0IGlucHV0XHJcbiAgICBpZiAoZS5rZXkgPT09ICdBcnJvd1JpZ2h0JyB8fCBlLmtleSA9PT0gJ1JpZ2h0Jykge1xyXG4gICAgICBpZiAoKHRoaXMubmV4dElucHV0KSAmJiAodGhpcy5uZXh0SW5wdXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KSAmJiAoIXRoaXMubmV4dElucHV0LmRpc2FibGVkKSkge1xyXG4gICAgICAgIHRoaXMubmV4dElucHV0LmZvY3VzKCk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKlxyXG4gICAqIE1ldGhvZCBjYWxsZWQgb24ga2V5dXAgdG8gY2hlY2sgaWYgdGhlIHByZXNzZWQga2V5IGlzIGFsbG93LCBpZiBpdCBpcyBub3QgaXQgc3RvcHMgdGhlIGV2ZW50LlxyXG4gICAqIElmIHRoZSBlbGVtZW50IHJlYWNoZWQgaXRzIG1heGltdW0gbGVuZ3RoIG9uIGtleSBwcmVzc2VkIGl0IG11c3QganVtcCB0byB0aGUgbmV4dCBpbnB1dFxyXG4gICAqIEBwYXJhbSBlXHJcbiAgICovXHJcbiAgQEhvc3RMaXN0ZW5lcigna2V5dXAnLCBbJyRldmVudCddKSBvbktleVVwKGU6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmIChpc0NvbW1hbmRLZXkoZSkpIHsgcmV0dXJuOyB9XHJcbiAgICBjb25zdCB2YWx1ZTogc3RyaW5nID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnZhbHVlO1xyXG4gICAgaWYgKHRoaXMubmV4dElucHV0ICYmICh2YWx1ZS5sZW5ndGggPj0gdGhpcy5lbC5uYXRpdmVFbGVtZW50Lm1heExlbmd0aCkpIHtcclxuICAgICAgdGhpcy5uZXh0SW5wdXQuZm9jdXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uIGZvY3VzIHdlIHNlbGVjdCB0aGUgZW50aXJlIHZhbHVlIG9mIHRoZSBpbnB1dFxyXG4gICAqL1xyXG4gIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzJywgW10pIG9uRm9jdXMoKSB7XHJcbiAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc2VsZWN0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRob2QgdG8gY2hlY2sgaWYgdGhlIGVsZW1lbnQgaXMgc2VsZWN0ZWRcclxuICAgKlxyXG4gICAqL1xyXG4gIHByaXZhdGUgZWxlbWVudElzU2VsZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0ID09PSAwICYmIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQgIT09IDA7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=