@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
JavaScript
/**
* @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=