UNPKG

@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
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=