@anjuna/angular-core
Version:
<p align="center"> <img src="//cdn.zuora.com/theme/0.6.0/assets/anjuna/anjuna-logo.svg"/> <br/><br/> </p>
172 lines • 19 kB
JavaScript
import { __decorate, __metadata, __param } from "tslib";
import { AfterViewInit, ChangeDetectorRef, Directive, ElementRef, EventEmitter, HostBinding, HostListener, Inject, Injector, Input, LOCALE_ID, OnChanges, OnInit, Optional, Output, Self } from '@angular/core';
import { FormArray, ControlValueAccessor, FormControl, NgForm, FormGroupDirective, NgControl, NG_VALUE_ACCESSOR, NgModel } from '@angular/forms';
/* tslint:disable:directive-selector */
var ListValueDirective = /** @class */ (function () {
function ListValueDirective(_element, changeRef, parentForm, parentGroup, ngControl) {
this._element = _element;
this.changeRef = changeRef;
this.ngControl = ngControl;
this.valueChange = new EventEmitter();
this.onChange = function () { };
this.onTouch = function () { };
this.parent = parentForm ? parentForm : parentGroup ? parentGroup : null;
if (this.ngControl) {
this.ngControl.valueAccessor = this;
}
}
Object.defineProperty(ListValueDirective.prototype, "parsedField", {
get: function () {
return (this.field) ? this.field.parsedList : undefined;
},
enumerable: true,
configurable: true
});
Object.defineProperty(ListValueDirective.prototype, "list", {
get: function () {
if (!this._list) {
this.list = this._element.nativeElement;
}
return this._list;
},
set: function (el) {
this._list = el;
},
enumerable: true,
configurable: true
});
ListValueDirective.prototype.onAnjBlur = function () {
this.onTouch();
};
ListValueDirective.prototype.onAnjChange = function (target) {
if (!target.matches('anj-list')) {
return;
}
this.changeHandler(target.value.slice(0));
};
Object.defineProperty(ListValueDirective.prototype, "isInvalid", {
get: function () {
if (this.ngControl) {
var isSubmitted = (this.parent && this.parent.submitted);
return (this.ngControl.invalid && (this.ngControl.touched || isSubmitted));
}
if (this.control) {
return this.control.invalid;
}
},
enumerable: true,
configurable: true
});
ListValueDirective.prototype.ngAfterViewInit = function () {
if ((this.ngControl && this.ngControl.value) || this.ngModel) {
this.value = this.ngModel || this.ngControl.value;
this.list.value = this.value;
this.changeRef.detectChanges();
}
};
ListValueDirective.prototype.ngOnChanges = function () {
this.setAttributes();
if (this.control && this.control.value) {
this.value = this.control.value;
this.list.value = this.value;
this.changeRef.detectChanges();
}
};
ListValueDirective.prototype.setAttributes = function () {
if (this.field) {
this.list.setAttribute('min', this.field.minItems || this.list.min);
this.list.setAttribute('max', this.field.maxItems || this.list.max);
}
if (this.parsedField) {
this.list.setAttribute('options', this.parsedField.options || this.list.options);
this.list.setAttribute('type', this.parsedField.toInputType() || this.list.type);
}
};
// Start: ControlValueAccessor requirements
ListValueDirective.prototype.writeValue = function (newValue) {
this.value = newValue;
this.list.value = this.value;
};
ListValueDirective.prototype.registerOnChange = function (fn) {
this.onChange = fn;
};
ListValueDirective.prototype.registerOnTouched = function (fn) {
this.onTouch = fn;
};
// End: ControlValueAccessor requirements
ListValueDirective.prototype.changeHandler = function (changedVal) {
this.onTouch();
this.value = changedVal;
this.valueChange.emit(this.value);
this.propogateValueChange();
};
ListValueDirective.prototype.propogateValueChange = function () {
var _this = this;
if (this.ngControl) {
this.ngControl.control.patchValue(this.value);
}
else if (this.control) {
this.control.controls = [];
this.value.map(function (value) {
return _this.control.push(new FormControl(value));
});
}
this.changeRef.detectChanges();
};
ListValueDirective.ctorParameters = function () { return [
{ type: ElementRef },
{ type: ChangeDetectorRef },
{ type: NgForm, decorators: [{ type: Optional }] },
{ type: FormGroupDirective, decorators: [{ type: Optional }] },
{ type: NgControl, decorators: [{ type: Optional }, { type: Self }] }
]; };
__decorate([
Input(),
__metadata("design:type", NgModel)
], ListValueDirective.prototype, "ngModel", void 0);
__decorate([
Input(),
__metadata("design:type", Object)
], ListValueDirective.prototype, "control", void 0);
__decorate([
Input(),
__metadata("design:type", Object)
], ListValueDirective.prototype, "field", void 0);
__decorate([
Output(),
__metadata("design:type", EventEmitter)
], ListValueDirective.prototype, "valueChange", void 0);
__decorate([
HostListener('anjBlur'),
__metadata("design:type", Function),
__metadata("design:paramtypes", []),
__metadata("design:returntype", void 0)
], ListValueDirective.prototype, "onAnjBlur", null);
__decorate([
HostListener('anjChange', ['$event.target']),
__metadata("design:type", Function),
__metadata("design:paramtypes", [HTMLInputElement]),
__metadata("design:returntype", void 0)
], ListValueDirective.prototype, "onAnjChange", null);
__decorate([
HostBinding('attr.invalid'),
__metadata("design:type", Boolean),
__metadata("design:paramtypes", [])
], ListValueDirective.prototype, "isInvalid", null);
ListValueDirective = __decorate([
Directive({
selector: 'anj-list'
}),
__param(2, Optional()),
__param(3, Optional()),
__param(4, Optional()), __param(4, Self()),
__metadata("design:paramtypes", [ElementRef,
ChangeDetectorRef,
NgForm,
FormGroupDirective,
NgControl])
], ListValueDirective);
return ListValueDirective;
}());
export { ListValueDirective };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC12YWx1ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYW5qdW5hL2FuZ3VsYXItY29yZS8iLCJzb3VyY2VzIjpbImxpYi9mb3Jtcy9kaXJlY3RpdmVzL2xpc3QtdmFsdWUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQzlCLEtBQUssRUFBRSxTQUFTLEVBQ2hCLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQzVDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxTQUFTLEVBQ1Qsb0JBQW9CLEVBQ3BCLFdBQVcsRUFBRSxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE9BQU8sRUFDakYsTUFBTSxnQkFBZ0IsQ0FBQztBQUl4Qix1Q0FBdUM7QUFJdkM7SUFvREksNEJBQW9CLFFBQW9CLEVBQ3BCLFNBQTRCLEVBQ3hCLFVBQWtCLEVBQ2xCLFdBQStCLEVBQ2YsU0FBcUI7UUFKekMsYUFBUSxHQUFSLFFBQVEsQ0FBWTtRQUNwQixjQUFTLEdBQVQsU0FBUyxDQUFtQjtRQUdSLGNBQVMsR0FBVCxTQUFTLENBQVk7UUFoQ25DLGdCQUFXLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUE4RTVFLGFBQVEsR0FBeUIsY0FBVyxDQUFDLENBQUM7UUFDOUMsWUFBTyxHQUFlLGNBQVcsQ0FBQyxDQUFDO1FBOUN0QyxJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRXpFLElBQUksSUFBSSxDQUFDLFNBQVMsRUFB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QUUsQ0FBQTt5Q0FKRCxVQUFVO1lBQ1QsaUJBQWlCO1lBQ1osTUFBTTtZQUNMLGtCQUFrQjtZQUNILFNBQVM7T0F4RHBELGtCQUFrQixDQXNJOUI7SUFBRCx5QkFBQztDQUFBLEFBdElELElBc0lDO1NBdElZLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLCBJbmplY3QsIEluamVjdG9yLFxuICAgIElucHV0LCBMT0NBTEVfSUQsXG4gICAgT25DaGFuZ2VzLCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQsIFNlbGZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEZvcm1BcnJheSxcbiAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBGb3JtQ29udHJvbCwgTmdGb3JtLCBGb3JtR3JvdXBEaXJlY3RpdmUsIE5nQ29udHJvbCwgTkdfVkFMVUVfQUNDRVNTT1IsIE5nTW9kZWxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVmFsdWVBY2Nlc3NvciB9IGZyb20gJy4vdmFsdWUtYWNjZXNzb3InO1xuaW1wb3J0IHsgVElNRV9NRVJJRElFTSB9IGZyb20gJy4uL2ludGVyZmFjZXMvVG9rZW5zJztcblxuLyogdHNsaW50OmRpc2FibGU6ZGlyZWN0aXZlLXNlbGVjdG9yICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2Fuai1saXN0J1xufSlcbmV4cG9ydCBjbGFzcyBMaXN0VmFsdWVEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25DaGFuZ2VzIHtcbiAgICBwcml2YXRlIF9saXN0O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFyZW50OiBOZ0Zvcm0gfCBGb3JtR3JvdXBEaXJlY3RpdmUgfCBudWxsO1xuXG4gICAgcHVibGljIHZhbHVlOiBzdHJpbmdbXTtcblxuICAgIGdldCBwYXJzZWRGaWVsZCgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLmZpZWxkKSA/IHRoaXMuZmllbGQucGFyc2VkTGlzdCA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBnZXQgbGlzdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9saXN0KSB7XG4gICAgICAgICAgICB0aGlzLmxpc3QgPSB0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2xpc3Q7XG4gICAgfVxuICAgIHNldCBsaXN0KGVsKSB7XG4gICAgICAgIHRoaXMuX2xpc3QgPSBlbDtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBuZ01vZGVsOiBOZ01vZGVsO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBjb250cm9sOiBhbnk7XG4gICAgQElucHV0KCkgcHVibGljIGZpZWxkOiBhbnk7XG5cbiAgICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgQEhvc3RMaXN0ZW5lcignYW5qQmx1cicpXG4gICAgb25BbmpCbHVyKCkge1xuICAgICAgICB0aGlzLm9uVG91Y2goKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdhbmpDaGFuZ2UnLCBbJyRldmVudC50YXJnZXQnXSlcbiAgICBwdWJsaWMgb25BbmpDaGFuZ2UodGFyZ2V0OiBIVE1MSW5wdXRFbGVtZW50KSB7XG5cbiAgICAgICAgaWYgKCF0YXJnZXQubWF0Y2hlcygnYW5qLWxpc3QnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VIYW5kbGVyKHRhcmdldC52YWx1ZS5zbGljZSgwKSk7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmludmFsaWQnKSBnZXQgaXNJbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzU3VibWl0dGVkID0gKHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LnN1Ym1pdHRlZCk7XG4gICAgICAgICAgICByZXR1cm4gKHRoaXMubmdDb250cm9sLmludmFsaWQgJiYgKHRoaXMubmdDb250cm9sLnRvdWNoZWQgfHwgaXNTdWJtaXR0ZWQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnRyb2wuaW52YWxpZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2VsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBjaGFuZ2VSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIHBhcmVudEZvcm06IE5nRm9ybSxcbiAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBwYXJlbnRHcm91cDogRm9ybUdyb3VwRGlyZWN0aXZlLFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHJpdmF0ZSBuZ0NvbnRyb2w/OiBOZ0NvbnRyb2wpIHtcbiAgICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnRGb3JtID8gcGFyZW50Rm9ybSA6IHBhcmVudEdyb3VwID8gcGFyZW50R3JvdXAgOiBudWxsO1xuXG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICgodGhpcy5uZ0NvbnRyb2wgJiYgdGhpcy5uZ0NvbnRyb2wudmFsdWUpIHx8IHRoaXMubmdNb2RlbCkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMubmdNb2RlbCB8fCB0aGlzLm5nQ29udHJvbC52YWx1ZTtcbiAgICAgICAgICAgIHRoaXMubGlzdC52YWx1ZSA9IHRoaXMudmFsdWU7XG5cbiAgICAgICAgICAgIHRoaXMuY2hhbmdlUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKCkge1xuICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZXMoKTtcblxuICAgICAgICBpZiAodGhpcy5jb250cm9sICYmIHRoaXMuY29udHJvbC52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY29udHJvbC52YWx1ZTtcbiAgICAgICAgICAgIHRoaXMubGlzdC52YWx1ZSA9IHRoaXMudmFsdWU7XG5cbiAgICAgICAgICAgIHRoaXMuY2hhbmdlUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldEF0dHJpYnV0ZXMoKSB7XG4gICAgICAgIGlmICh0aGlzLmZpZWxkKSB7XG4gICAgICAgICAgICB0aGlzLmxpc3Quc2V0QXR0cmlidXRlKCdtaW4nLCB0aGlzLmZpZWxkLm1pbkl0ZW1zIHx8IHRoaXMubGlzdC5taW4pO1xuICAgICAgICAgICAgdGhpcy5saXN0LnNldEF0dHJpYnV0ZSgnbWF4JywgdGhpcy5maWVsZC5tYXhJdGVtcyB8fCB0aGlzLmxpc3QubWF4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnBhcnNlZEZpZWxkKSB7XG4gICAgICAgICAgICB0aGlzLmxpc3Quc2V0QXR0cmlidXRlKCdvcHRpb25zJywgdGhpcy5wYXJzZWRGaWVsZC5vcHRpb25zIHx8IHRoaXMubGlzdC5vcHRpb25zKTtcbiAgICAgICAgICAgIHRoaXMubGlzdC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCB0aGlzLnBhcnNlZEZpZWxkLnRvSW5wdXRUeXBlKCkgfHwgdGhpcy5saXN0LnR5cGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU3RhcnQ6IENvbnRyb2xWYWx1ZUFjY2Vzc29yIHJlcXVpcmVtZW50c1xuICAgIHB1YmxpYyB3cml0ZVZhbHVlKG5ld1ZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgICB0aGlzLmxpc3QudmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7LyoqL307XG4gICAgcHVibGljIG9uVG91Y2g6ICgpID0+IHZvaWQgPSAoKSA9PiB7LyoqL307XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgICB9XG4gICAgLy8gRW5kOiBDb250cm9sVmFsdWVBY2Nlc3NvciByZXF1aXJlbWVudHNcblxuICAgIHByaXZhdGUgY2hhbmdlSGFuZGxlcihjaGFuZ2VkVmFsKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaCgpO1xuICAgICAgICB0aGlzLnZhbHVlID0gY2hhbmdlZFZhbDtcblxuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMucHJvcG9nYXRlVmFsdWVDaGFuZ2UoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb3BvZ2F0ZVZhbHVlQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2wucGF0Y2hWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbC5jb250cm9scyA9IFtdO1xuICAgICAgICAgICAgdGhpcy52YWx1ZS5tYXAodmFsdWUgPT5cbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2wucHVzaChuZXcgRm9ybUNvbnRyb2wodmFsdWUpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2hhbmdlUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG59XG4iXX0=