@neocomplexx/ngx-neo-directives-mat
Version:
98 lines • 10.3 kB
JavaScript
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=