@asi-ngtools/lib
Version:
This project is a little components library, simple to use, which will help you to simplify your project.
252 lines (251 loc) • 14.5 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { DefaultControlValueAccessor } from './../common/default-control-value-accessor';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
import { Component, forwardRef, Input, ElementRef, ViewChild, Renderer2 } from '@angular/core';
import * as nh from '../../native-helper';
var AsiInputChipsComponent = /** @class */ (function (_super) {
tslib_1.__extends(AsiInputChipsComponent, _super);
function AsiInputChipsComponent(renderer, elementRef) {
var _this = _super.call(this) || this;
_this.renderer = renderer;
_this.elementRef = elementRef;
/**
* Label position
*/
_this.labelPosition = 'top';
/**
* Placeholder to display
*/
_this.placeholder = '';
/**
* Max length of the text
*/
_this.maxlength = -1;
/**
* Must be a number (internaly set the regex to ^-*[0-9,\.]*$
*/
_this.number = false;
/**
* Delay before the component change value
*/
_this.delay = 0;
/**
* Allow you to define only one value
*/
_this.uniq = false;
_this.onChangeCallback = function () { };
return _this;
}
Object.defineProperty(AsiInputChipsComponent.prototype, "value", {
get: /**
* @return {?}
*/
function () {
return this._inputValue;
},
set: /**
* @param {?} v
* @return {?}
*/
function (v) {
if (v !== this._inputValue) {
this._inputValue = v;
this.onChangeCallback(v);
}
},
enumerable: true,
configurable: true
});
;
/**
* @return {?}
*/
AsiInputChipsComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
this.renderer.addClass(this.elementRef.nativeElement, 'label-' + this.labelPosition);
if (!nh.isArray(this.chips)) {
this.chips = new Array();
}
};
/**
* Catch on key event to add a chip on pressing 'Enter'
* @param $event the event thrown by pressing 'Enter' only
*/
/**
* Catch on key event to add a chip on pressing 'Enter'
* @return {?}
*/
AsiInputChipsComponent.prototype.onKey = /**
* Catch on key event to add a chip on pressing 'Enter'
* @return {?}
*/
function () {
/** @type {?} */
var inputValue = this.inputElm.nativeElement.value;
if (this.validateValue(inputValue)) {
this.chips.push(inputValue);
this.inputElm.nativeElement.value = '';
}
else {
// TODO: Push alert
}
};
/**
* @param {?} chipIndex
* @return {?}
*/
AsiInputChipsComponent.prototype.removeChip = /**
* @param {?} chipIndex
* @return {?}
*/
function (chipIndex) {
nh.removeAtIndex(this.chips, chipIndex);
};
/**
* @param {?} value
* @return {?}
*/
AsiInputChipsComponent.prototype.validateValue = /**
* @param {?} value
* @return {?}
*/
function (value) {
return value.length > 0 && !(this.uniq && nh.indexOf(this.chips, value) >= 0);
};
/**
* @param {?} value
* @return {?}
*/
AsiInputChipsComponent.prototype.writeValue = /**
* @param {?} value
* @return {?}
*/
function (value) {
this._inputValue = value;
};
/**
* @param {?} fn
* @return {?}
*/
AsiInputChipsComponent.prototype.registerOnChange = /**
* @param {?} fn
* @return {?}
*/
function (fn) {
this.onChangeCallback = fn;
};
/**
* @param {?} _chipIndex
* @return {?}
*/
AsiInputChipsComponent.prototype.focusChip = /**
* @param {?} _chipIndex
* @return {?}
*/
function (_chipIndex) {
// defaut implementation
};
AsiInputChipsComponent.decorators = [
{ type: Component, args: [{
selector: 'asi-input-chips',
host: { 'class': 'asi-component asi-input-chips' },
template: "<div class=\"chips\">\n <div class=\"chip\" *ngFor=\"let chip of chips; let i = index\" (click)=\"focusChip(i)\" tabindex=\"0\">\n {{chip}}\n <i class=\"fa fa-times\" (click)=\"removeChip(i)\"></i>\n </div>\n <input #asiInputChips type=\"text\" class=\"asi-focus-error\"\n [attr.id]=\"id\"\n [attr.name]=\"name\"\n [(ngModel)]=\"value\"\n (keydown.enter)=\"onKey()\"\n [attr.disabled]=\"disabled ? '' : null\" \n [placeholder]=\"placeholder\" />\n</div>\n",
providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(function () { return AsiInputChipsComponent; }),
multi: true
}
]
}] }
];
/** @nocollapse */
AsiInputChipsComponent.ctorParameters = function () { return [
{ type: Renderer2 },
{ type: ElementRef }
]; };
AsiInputChipsComponent.propDecorators = {
id: [{ type: Input }],
name: [{ type: Input }],
label: [{ type: Input }],
labelPosition: [{ type: Input }],
placeholder: [{ type: Input }],
maxlength: [{ type: Input }],
number: [{ type: Input }],
delay: [{ type: Input }],
uniq: [{ type: Input }],
chips: [{ type: Input }],
inputElm: [{ type: ViewChild, args: ['asiInputChips',] }]
};
return AsiInputChipsComponent;
}(DefaultControlValueAccessor));
export { AsiInputChipsComponent };
if (false) {
/**
* html id
* @type {?}
*/
AsiInputChipsComponent.prototype.id;
/**
* html name
* @type {?}
*/
AsiInputChipsComponent.prototype.name;
/**
* Label to display (is translated)
* @type {?}
*/
AsiInputChipsComponent.prototype.label;
/**
* Label position
* @type {?}
*/
AsiInputChipsComponent.prototype.labelPosition;
/**
* Placeholder to display
* @type {?}
*/
AsiInputChipsComponent.prototype.placeholder;
/**
* Max length of the text
* @type {?}
*/
AsiInputChipsComponent.prototype.maxlength;
/**
* Must be a number (internaly set the regex to ^-*[0-9,\.]*$
* @type {?}
*/
AsiInputChipsComponent.prototype.number;
/**
* Delay before the component change value
* @type {?}
*/
AsiInputChipsComponent.prototype.delay;
/**
* Allow you to define only one value
* @type {?}
*/
AsiInputChipsComponent.prototype.uniq;
/**
* Init data
* @type {?}
*/
AsiInputChipsComponent.prototype.chips;
/** @type {?} */
AsiInputChipsComponent.prototype.inputElm;
/** @type {?} */
AsiInputChipsComponent.prototype._inputValue;
/** @type {?} */
AsiInputChipsComponent.prototype.onChangeCallback;
/** @type {?} */
AsiInputChipsComponent.prototype.renderer;
/** @type {?} */
AsiInputChipsComponent.prototype.elementRef;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNpLWlucHV0LWNoaXBzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bhc2ktbmd0b29scy9saWIvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9hc2ktaW5wdXQtY2hpcHMvYXNpLWlucHV0LWNoaXBzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDOztJQWNFLGtEQUEyQjtJQThDckUsZ0NBQW9CLFFBQW1CLEVBQzdCO1FBRFYsWUFFRSxpQkFBTyxTQUNSO1FBSG1CLGNBQVEsR0FBUixRQUFRLENBQVc7UUFDN0IsZ0JBQVUsR0FBVixVQUFVOzs7OzhCQXJDMkUsS0FBSzs7Ozs0QkFHN0UsRUFBRTs7OzswQkFHSixDQUFDLENBQUM7Ozs7dUJBR0wsS0FBSzs7OztzQkFHTixDQUFDOzs7O3FCQUdGLEtBQUs7aUNBUXdCLGVBQVM7O0tBZ0JyRDtJQWRELHNCQUFJLHlDQUFLOzs7O1FBQVQ7WUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUN6Qjs7Ozs7UUFFRCxVQUFVLENBQU07WUFDZCxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO2dCQUNyQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDMUI7U0FDRjs7O09BUEE7SUFBQSxDQUFDOzs7O0lBY0YseUNBQVE7OztJQUFSO1FBQ0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNyRixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7U0FDbEM7S0FDRjtJQUVEOzs7T0FHRzs7Ozs7SUFDSCxzQ0FBSzs7OztJQUFMOztRQUNFLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztRQUNuRCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1NBQ3hDO1FBQUMsSUFBSSxDQUFDLENBQUM7O1NBRVA7S0FDRjs7Ozs7SUFFRCwyQ0FBVTs7OztJQUFWLFVBQVcsU0FBaUI7UUFDMUIsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0tBQ3pDOzs7OztJQUVELDhDQUFhOzs7O0lBQWIsVUFBYyxLQUFhO1FBQ3pCLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7S0FDL0U7Ozs7O0lBRUQsMkNBQVU7Ozs7SUFBVixVQUFXLEtBQWE7UUFDdEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7S0FDMUI7Ozs7O0lBRUQsaURBQWdCOzs7O0lBQWhCLFVBQWlCLEVBQU87UUFDdEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztLQUM1Qjs7Ozs7SUFFRCwwQ0FBUzs7OztJQUFULFVBQVUsVUFBa0I7O0tBRTNCOztnQkF0R0YsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRTtvQkFDbEQsb2hCQUE2QztvQkFDN0MsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsY0FBTSxPQUFBLHNCQUFzQixFQUF0QixDQUFzQixDQUFDOzRCQUNyRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpQkFDRjs7OztnQkFkcUUsU0FBUztnQkFBeEMsVUFBVTs7O3FCQWtCOUMsS0FBSzt1QkFFTCxLQUFLO3dCQUdMLEtBQUs7Z0NBRUwsS0FBSzs4QkFHTCxLQUFLOzRCQUdMLEtBQUs7eUJBR0wsS0FBSzt3QkFHTCxLQUFLO3VCQUdMLEtBQUs7d0JBR0wsS0FBSzsyQkFFTCxTQUFTLFNBQUMsZUFBZTs7aUNBL0M1QjtFQWlCNEMsMkJBQTJCO1NBQTFELHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlZmF1bHRDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJy4vLi4vY29tbW9uL2RlZmF1bHQtY29udHJvbC12YWx1ZS1hY2Nlc3Nvcic7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXQsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCwgT25Jbml0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIG5oIGZyb20gJy4uLy4uL25hdGl2ZS1oZWxwZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhc2ktaW5wdXQtY2hpcHMnLFxuICBob3N0OiB7ICdjbGFzcyc6ICdhc2ktY29tcG9uZW50IGFzaS1pbnB1dC1jaGlwcycgfSxcbiAgdGVtcGxhdGVVcmw6ICdhc2ktaW5wdXQtY2hpcHMuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEFzaUlucHV0Q2hpcHNDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQXNpSW5wdXRDaGlwc0NvbXBvbmVudCBleHRlbmRzIERlZmF1bHRDb250cm9sVmFsdWVBY2Nlc3NvciBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgLyoqIGh0bWwgaWQgKi9cbiAgQElucHV0KCkgaWQ6IHN0cmluZztcbiAgLyoqIGh0bWwgbmFtZSAqL1xuICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqIExhYmVsIHRvIGRpc3BsYXkgKGlzIHRyYW5zbGF0ZWQpICovXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XG4gIC8qKkxhYmVsIHBvc2l0aW9uICovXG4gIEBJbnB1dCgpIGxhYmVsUG9zaXRpb246ICd0b3AnIHwgJ2xlZnQnIHwgJ3JpZ2h0JyB8ICdib3R0b20nIHwgJ2JvdHRvbS1jZW50ZXInIHwgJ3RvcC1jZW50ZXInID0gJ3RvcCc7XG5cbiAgLyoqIFBsYWNlaG9sZGVyIHRvIGRpc3BsYXkgKi9cbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcblxuICAvKiogTWF4IGxlbmd0aCBvZiB0aGUgdGV4dCAqL1xuICBASW5wdXQoKSBtYXhsZW5ndGggPSAtMTtcblxuICAvKiogTXVzdCBiZSBhIG51bWJlciAoaW50ZXJuYWx5IHNldCB0aGUgcmVnZXggdG8gXi0qWzAtOSxcXC5dKiQgKi9cbiAgQElucHV0KCkgbnVtYmVyID0gZmFsc2U7XG5cbiAgLyoqIERlbGF5IGJlZm9yZSB0aGUgY29tcG9uZW50IGNoYW5nZSB2YWx1ZSAqL1xuICBASW5wdXQoKSBkZWxheSA9IDA7XG5cbiAgLyoqIEFsbG93IHlvdSB0byBkZWZpbmUgb25seSBvbmUgdmFsdWUgKi9cbiAgQElucHV0KCkgdW5pcSA9IGZhbHNlO1xuXG4gIC8qKiBJbml0IGRhdGEgKi9cbiAgQElucHV0KCkgY2hpcHM6IEFycmF5PHN0cmluZz47XG5cbiAgQFZpZXdDaGlsZCgnYXNpSW5wdXRDaGlwcycpIGlucHV0RWxtOiBFbGVtZW50UmVmO1xuXG4gIHByaXZhdGUgX2lucHV0VmFsdWU6IGFueTtcbiAgcHJpdmF0ZSBvbkNoYW5nZUNhbGxiYWNrOiAoXzogYW55KSA9PiB2b2lkID0gKCkgPT4geyB9O1xuXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dFZhbHVlO1xuICB9O1xuXG4gIHNldCB2YWx1ZSh2OiBhbnkpIHtcbiAgICBpZiAodiAhPT0gdGhpcy5faW5wdXRWYWx1ZSkge1xuICAgICAgdGhpcy5faW5wdXRWYWx1ZSA9IHY7XG4gICAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sodik7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnbGFiZWwtJyArIHRoaXMubGFiZWxQb3NpdGlvbik7XG4gICAgaWYgKCFuaC5pc0FycmF5KHRoaXMuY2hpcHMpKSB7XG4gICAgICB0aGlzLmNoaXBzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2F0Y2ggb24ga2V5IGV2ZW50IHRvIGFkZCBhIGNoaXAgb24gcHJlc3NpbmcgJ0VudGVyJ1xuICAgKiBAcGFyYW0gJGV2ZW50IHRoZSBldmVudCB0aHJvd24gYnkgcHJlc3NpbmcgJ0VudGVyJyBvbmx5XG4gICAqL1xuICBvbktleSgpIHtcbiAgICBsZXQgaW5wdXRWYWx1ZSA9IHRoaXMuaW5wdXRFbG0ubmF0aXZlRWxlbWVudC52YWx1ZTtcbiAgICBpZiAodGhpcy52YWxpZGF0ZVZhbHVlKGlucHV0VmFsdWUpKSB7XG4gICAgICB0aGlzLmNoaXBzLnB1c2goaW5wdXRWYWx1ZSk7XG4gICAgICB0aGlzLmlucHV0RWxtLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVE9ETzogUHVzaCBhbGVydFxuICAgIH1cbiAgfVxuXG4gIHJlbW92ZUNoaXAoY2hpcEluZGV4OiBudW1iZXIpIHtcbiAgICBuaC5yZW1vdmVBdEluZGV4KHRoaXMuY2hpcHMsIGNoaXBJbmRleCk7XG4gIH1cblxuICB2YWxpZGF0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdmFsdWUubGVuZ3RoID4gMCAmJiAhKHRoaXMudW5pcSAmJiBuaC5pbmRleE9mKHRoaXMuY2hpcHMsIHZhbHVlKSA+PSAwKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2lucHV0VmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xuICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayA9IGZuO1xuICB9XG5cbiAgZm9jdXNDaGlwKF9jaGlwSW5kZXg6IG51bWJlcikge1xuICAgIC8vIGRlZmF1dCBpbXBsZW1lbnRhdGlvblxuICB9XG59XG4iXX0=