@neocomplexx/ngx-neo-directives-mat
Version:
99 lines • 10.7 kB
JavaScript
import { __decorate, __metadata } from "tslib";
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;
}
NeoCompositeInputDirective.prototype.onKeyDown = 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
*/
NeoCompositeInputDirective.prototype.onKeyUp = function (e) {
if (isCommandKey(e)) {
return;
}
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
*/
NeoCompositeInputDirective.prototype.onFocus = function () {
this.el.nativeElement.select();
};
/**
* Method to check if the element is selected
*
*/
NeoCompositeInputDirective.prototype.elementIsSelected = function () {
return this.el.nativeElement.selectionStart === 0 && this.el.nativeElement.selectionEnd !== 0;
};
NeoCompositeInputDirective.ctorParameters = function () { return [
{ 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);
return NeoCompositeInputDirective;
}());
export { NeoCompositeInputDirective };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9zaXRlLWlucHV0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZW9jb21wbGV4eC9uZ3gtbmVvLWRpcmVjdGl2ZXMtbWF0LyIsInNvdXJjZXMiOlsibGliL2NvbXBvc2l0ZS1pbnB1dC9jb21wb3NpdGUtaW5wdXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUtyRDtJQU9FLG9DQUFvQixFQUFjO1FBQWQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUxsQyw0Q0FBNEM7UUFDbkMsa0JBQWEsR0FBUSxJQUFJLENBQUM7UUFDbkMsZ0RBQWdEO1FBQ3ZDLGNBQVMsR0FBUSxJQUFJLENBQUM7SUFHL0IsQ0FBQztJQUVvQyw4Q0FBUyxHQUFULFVBQVUsQ0FBZ0I7UUFDN0Qsb0ZBQW9GO1FBQ3BGLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxXQUFXLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUU7WUFDckQsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELGdIQUFnSDtRQUNoSCxnQ0FBZ0M7UUFDaEMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGNBQWMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2hJLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxZQUFZLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQzlHLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzNCLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7U0FDRjtRQUNELCtEQUErRDtRQUMvRCxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssWUFBWSxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssT0FBTyxFQUFFO1lBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxZQUFZLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ2xHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3ZCLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7U0FDRjtJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNnQyw0Q0FBTyxHQUFQLFVBQVEsQ0FBZ0I7UUFDekQsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFBRSxPQUFPO1NBQUU7UUFDaEMsSUFBTSxLQUFLLEdBQVcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO1FBQ2xELElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDdkUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUN4QjtJQUNILENBQUM7SUFFRDs7T0FFRztJQUN3Qiw0Q0FBTyxHQUFQO1FBQ3pCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7O09BR0c7SUFDSyxzREFBaUIsR0FBekI7UUFDRSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGNBQWMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsWUFBWSxLQUFLLENBQUMsQ0FBQztJQUNoRyxDQUFDOztnQkFyRHVCLFVBQVU7O0lBSnpCO1FBQVIsS0FBSyxFQUFFOztxRUFBMkI7SUFFMUI7UUFBUixLQUFLLEVBQUU7O2lFQUF1QjtJQUtNO1FBQXBDLFlBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs7eUNBQWMsYUFBYTs7K0RBcUI5RDtJQVFrQztRQUFsQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7O3lDQUFZLGFBQWE7OzZEQU0xRDtJQUswQjtRQUExQixZQUFZLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQzs7Ozs2REFFekI7SUFwRFUsMEJBQTBCO1FBSHRDLFNBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSxrQkFBa0I7U0FDN0IsQ0FBQzt5Q0FRd0IsVUFBVTtPQVB2QiwwQkFBMEIsQ0E4RHRDO0lBQUQsaUNBQUM7Q0FBQSxBQTlERCxJQThEQztTQTlEWSwwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgRWxlbWVudFJlZiwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgaXNDb21tYW5kS2V5IH0gZnJvbSAnLi9jb21tYW5kS2V5LmZ1bmN0aW9uJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2NvbXBvc2l0ZUlucHV0XSdcclxufSlcclxuZXhwb3J0IGNsYXNzIE5lb0NvbXBvc2l0ZUlucHV0RGlyZWN0aXZlIHtcclxuXHJcbiAgLy8gTmV4dCBpbnB1dCB0byBtb3ZlIGZyb20gdGhlIGN1cnJlbnQgaW5wdXRcclxuICBASW5wdXQoKSBwcmV2aW91c0lucHV0OiBhbnkgPSBudWxsO1xyXG4gIC8vIFByZXZpb3VzIGlucHV0IHRvIG1vdmUgZnJvbSB0aGUgY3VycmVudCBpbnB1dFxyXG4gIEBJbnB1dCgpIG5leHRJbnB1dDogYW55ID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZikge1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pIG9uS2V5RG93bihlOiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICAvLyBJZiB0aGUgZWxlbWVudCBpcyBzZWxlY3RlZCBhbmQgdGhlIHVzZXIgcHJlc3NlcyBiYWNrc3BhY2Ugd2UgbXVzdCBjbGVhciB0aGUgaW5wdXRcclxuICAgIGlmIChlLmtleSA9PT0gJ0JhY2tzcGFjZScgJiYgdGhpcy5lbGVtZW50SXNTZWxlY3RlZCgpKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFdlIG11c3QgbW92ZSB0byB0aGUgcHJldmlvdXMgaW5wdXQgaWYgdGhlIHVzZXIgcHJlc3NlcyBiYWNrc3BhY2UgYW5kIGhlIGlzIGluIHRoZSBmaXJzdCBwb3NpdGlvbiBvZiB0aGUgaW5wdXRcclxuICAgIC8vIG9yIGlmIGhlIHByZXNzZXMgdGhlIGxlZnQga2V5XHJcbiAgICBpZiAoKChlLmtleSA9PT0gJ0JhY2tzcGFjZScpICYmICh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPT09IDApIHx8ICgoZS5rZXkgPT09ICdBcnJvd0xlZnQnKSB8fCAoZS5rZXkgPT09ICdMZWZ0JykpKSkge1xyXG4gICAgICBpZiAoKHRoaXMucHJldmlvdXNJbnB1dCkgJiYgKHRoaXMucHJldmlvdXNJbnB1dCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQpICYmICghdGhpcy5wcmV2aW91c0lucHV0LmRpc2FibGVkKSkge1xyXG4gICAgICAgIHRoaXMucHJldmlvdXNJbnB1dC5mb2N1cygpO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gSWYgaGUgcHJlc3NlcyB0aGUgcmlnaHQgYXJyb3cgaXQgbXVzdCBtb3ZlIHRvIHRoZSBuZXh0IGlucHV0XHJcbiAgICBpZiAoZS5rZXkgPT09ICdBcnJvd1JpZ2h0JyB8fCBlLmtleSA9PT0gJ1JpZ2h0Jykge1xyXG4gICAgICBpZiAoKHRoaXMubmV4dElucHV0KSAmJiAodGhpcy5uZXh0SW5wdXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KSAmJiAoIXRoaXMubmV4dElucHV0LmRpc2FibGVkKSkge1xyXG4gICAgICAgIHRoaXMubmV4dElucHV0LmZvY3VzKCk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKlxyXG4gICAqIE1ldGhvZCBjYWxsZWQgb24ga2V5dXAgdG8gY2hlY2sgaWYgdGhlIHByZXNzZWQga2V5IGlzIGFsbG93LCBpZiBpdCBpcyBub3QgaXQgc3RvcHMgdGhlIGV2ZW50LlxyXG4gICAqIElmIHRoZSBlbGVtZW50IHJlYWNoZWQgaXRzIG1heGltdW0gbGVuZ3RoIG9uIGtleSBwcmVzc2VkIGl0IG11c3QganVtcCB0byB0aGUgbmV4dCBpbnB1dFxyXG4gICAqIEBwYXJhbSBlXHJcbiAgICovXHJcbiAgQEhvc3RMaXN0ZW5lcigna2V5dXAnLCBbJyRldmVudCddKSBvbktleVVwKGU6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmIChpc0NvbW1hbmRLZXkoZSkpIHsgcmV0dXJuOyB9XHJcbiAgICBjb25zdCB2YWx1ZTogc3RyaW5nID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnZhbHVlO1xyXG4gICAgaWYgKHRoaXMubmV4dElucHV0ICYmICh2YWx1ZS5sZW5ndGggPj0gdGhpcy5lbC5uYXRpdmVFbGVtZW50Lm1heExlbmd0aCkpIHtcclxuICAgICAgdGhpcy5uZXh0SW5wdXQuZm9jdXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uIGZvY3VzIHdlIHNlbGVjdCB0aGUgZW50aXJlIHZhbHVlIG9mIHRoZSBpbnB1dFxyXG4gICAqL1xyXG4gIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzJywgW10pIG9uRm9jdXMoKSB7XHJcbiAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc2VsZWN0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRob2QgdG8gY2hlY2sgaWYgdGhlIGVsZW1lbnQgaXMgc2VsZWN0ZWRcclxuICAgKlxyXG4gICAqL1xyXG4gIHByaXZhdGUgZWxlbWVudElzU2VsZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0ID09PSAwICYmIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQgIT09IDA7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=