@klippa/ngx-enhancy-forms 18.26.10 → 18.26.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -13,6 +13,7 @@ export class FileInputComponent extends MultipleValueAccessorBase {
13
13
  this.clearable = false;
14
14
  this.onlyShowUploadButton = false;
15
15
  this.useFullParentSize = false;
16
+ this.fullyCustom = false;
16
17
  }
17
18
  onChange(files) {
18
19
  const result = [];
@@ -51,11 +52,11 @@ export class FileInputComponent extends MultipleValueAccessorBase {
51
52
  this.nativeInputRef.nativeElement.click();
52
53
  }
53
54
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: FileInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
54
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: FileInputComponent, selector: "klp-form-file-input", inputs: { isLoading: "isLoading", clearable: "clearable", onlyShowUploadButton: "onlyShowUploadButton", useFullParentSize: "useFullParentSize", buttonText: "buttonText" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: FileInputComponent, multi: true }], viewQueries: [{ propertyName: "nativeInputRef", first: true, predicate: ["nativeInputRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"componentContainer\" [ngClass]=\"{fullParentSize: useFullParentSize, showErrors: isInErrorState()}\">\n\t<div class=\"buttonContainer\">\n\t\t<input\n\t\t\ttype=\"file\"\n\t\t\t#nativeInputRef\n\t\t\t(change)=\"onChange($event.target.files)\"\n\t\t\t[multiple]=\"multiple\"\n\t\t\t[disabled]=\"disabled\"\n\t\t>\n\t\t<klp-form-button class=\"uploadButton\" [isLoading]=\"isLoading\" [disabled]=\"disabled\" (click)=\"uploadFileClicked()\">\n\t\t\t<div class=\"innerButton\">\n\t\t\t\t<span *ngIf=\"buttonText\">{{buttonText}}</span>\n\t\t\t\t<div *ngIf=\"!buttonText\"><ng-content></ng-content></div>\n\t\t\t\t<div class=\"tail\">\n\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"getTailTpl()\"></ng-container>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</klp-form-button>\n\t</div>\n\t<div class=\"fileName\" *ngIf=\"!onlyShowUploadButton\">\n\t\t{{getFileNames()}}\n\t</div>\n\t<klp-form-button class=\"clearButton\" variant=\"white\" *ngIf=\"shouldShowClearButton()\" (click)=\"resetToNull()\">X</klp-form-button>\n</div>\n", styles: [":host{display:block}:host input:disabled{cursor:not-allowed}.componentContainer{display:flex;align-items:center}.componentContainer.showErrors ::ng-deep button{border-color:#ff8000}.componentContainer.fullParentSize{height:100%;justify-content:center;position:relative}.componentContainer:not(.fullParentSize) .buttonContainer{position:relative}.componentContainer .buttonContainer{flex:0 0 auto}.innerButton{display:flex;align-items:center}.tail{margin-left:.4rem}input{position:absolute;cursor:pointer;opacity:0;inset:0}.fileName{flex:1 1 0px;margin-left:.625rem;color:#515365;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clearButton{flex:0 0 auto}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ButtonComponent, selector: "klp-form-button", inputs: ["variant", "size", "fullWidth", "hasBorder", "disabled", "isLoading", "type", "clickCallback"] }] }); }
55
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: FileInputComponent, selector: "klp-form-file-input", inputs: { isLoading: "isLoading", clearable: "clearable", onlyShowUploadButton: "onlyShowUploadButton", useFullParentSize: "useFullParentSize", buttonText: "buttonText", fullyCustom: "fullyCustom" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: FileInputComponent, multi: true }], viewQueries: [{ propertyName: "nativeInputRef", first: true, predicate: ["nativeInputRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"fullyCustom\" *ngIf=\"fullyCustom\">\n\t<input\n\t\ttype=\"file\"\n\t\t#nativeInputRef\n\t\t(change)=\"onChange($event.target.files)\"\n\t\t[multiple]=\"multiple\"\n\t\t[disabled]=\"disabled\"\n\t/>\n\t<div (click)=\"uploadFileClicked()\">\n\t\t<ng-container [ngTemplateOutlet]=\"contentTpl\"></ng-container>\n\t</div>\n</div>\n\n<div class=\"componentContainer\" [ngClass]=\"{fullParentSize: useFullParentSize, showErrors: isInErrorState()}\"\n\t\t *ngIf=\"!fullyCustom\">\n\t<div class=\"buttonContainer\">\n\t\t<input\n\t\t\ttype=\"file\"\n\t\t\t#nativeInputRef\n\t\t\t(change)=\"onChange($event.target.files)\"\n\t\t\t[multiple]=\"multiple\"\n\t\t\t[disabled]=\"disabled\"\n\t\t>\n\t\t<klp-form-button\n\t\t\tclass=\"uploadButton\"\n\t\t\t[isLoading]=\"isLoading\"\n\t\t\t[disabled]=\"disabled\"\n\t\t\t(click)=\"uploadFileClicked()\"\n\t\t>\n\t\t\t<div class=\"innerButton\">\n\t\t\t\t<span *ngIf=\"buttonText\">{{ buttonText }}</span>\n\t\t\t\t<div *ngIf=\"!buttonText\">\n\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"contentTpl\"></ng-container>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"tail\">\n\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"getTailTpl()\"></ng-container>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</klp-form-button>\n\t</div>\n\t<div class=\"fileName\" *ngIf=\"!onlyShowUploadButton\">\n\t\t{{ getFileNames() }}\n\t</div>\n\t<klp-form-button class=\"clearButton\" variant=\"white\" *ngIf=\"shouldShowClearButton()\" (click)=\"resetToNull()\">X\n\t</klp-form-button>\n</div>\n\n<ng-template #contentTpl>\n\t<ng-content></ng-content>\n</ng-template>\n", styles: [":host{display:block}:host input:disabled{cursor:not-allowed}.componentContainer{display:flex;align-items:center}.componentContainer.showErrors ::ng-deep button{border-color:#ff8000}.componentContainer.fullParentSize{height:100%;justify-content:center;position:relative}.componentContainer:not(.fullParentSize) .buttonContainer{position:relative}.componentContainer .buttonContainer{flex:0 0 auto}.innerButton{display:flex;align-items:center}.tail{margin-left:.4rem}input{position:absolute;cursor:pointer;opacity:0;inset:0}.fileName{flex:1 1 0px;margin-left:.625rem;color:#515365;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clearButton{flex:0 0 auto}.fullyCustom input{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ButtonComponent, selector: "klp-form-button", inputs: ["variant", "size", "fullWidth", "hasBorder", "disabled", "isLoading", "type", "clickCallback"] }] }); }
55
56
  }
56
57
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: FileInputComponent, decorators: [{
57
58
  type: Component,
58
- args: [{ selector: 'klp-form-file-input', providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: FileInputComponent, multi: true }], template: "<div class=\"componentContainer\" [ngClass]=\"{fullParentSize: useFullParentSize, showErrors: isInErrorState()}\">\n\t<div class=\"buttonContainer\">\n\t\t<input\n\t\t\ttype=\"file\"\n\t\t\t#nativeInputRef\n\t\t\t(change)=\"onChange($event.target.files)\"\n\t\t\t[multiple]=\"multiple\"\n\t\t\t[disabled]=\"disabled\"\n\t\t>\n\t\t<klp-form-button class=\"uploadButton\" [isLoading]=\"isLoading\" [disabled]=\"disabled\" (click)=\"uploadFileClicked()\">\n\t\t\t<div class=\"innerButton\">\n\t\t\t\t<span *ngIf=\"buttonText\">{{buttonText}}</span>\n\t\t\t\t<div *ngIf=\"!buttonText\"><ng-content></ng-content></div>\n\t\t\t\t<div class=\"tail\">\n\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"getTailTpl()\"></ng-container>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</klp-form-button>\n\t</div>\n\t<div class=\"fileName\" *ngIf=\"!onlyShowUploadButton\">\n\t\t{{getFileNames()}}\n\t</div>\n\t<klp-form-button class=\"clearButton\" variant=\"white\" *ngIf=\"shouldShowClearButton()\" (click)=\"resetToNull()\">X</klp-form-button>\n</div>\n", styles: [":host{display:block}:host input:disabled{cursor:not-allowed}.componentContainer{display:flex;align-items:center}.componentContainer.showErrors ::ng-deep button{border-color:#ff8000}.componentContainer.fullParentSize{height:100%;justify-content:center;position:relative}.componentContainer:not(.fullParentSize) .buttonContainer{position:relative}.componentContainer .buttonContainer{flex:0 0 auto}.innerButton{display:flex;align-items:center}.tail{margin-left:.4rem}input{position:absolute;cursor:pointer;opacity:0;inset:0}.fileName{flex:1 1 0px;margin-left:.625rem;color:#515365;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clearButton{flex:0 0 auto}\n"] }]
59
+ args: [{ selector: 'klp-form-file-input', providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: FileInputComponent, multi: true }], template: "<div class=\"fullyCustom\" *ngIf=\"fullyCustom\">\n\t<input\n\t\ttype=\"file\"\n\t\t#nativeInputRef\n\t\t(change)=\"onChange($event.target.files)\"\n\t\t[multiple]=\"multiple\"\n\t\t[disabled]=\"disabled\"\n\t/>\n\t<div (click)=\"uploadFileClicked()\">\n\t\t<ng-container [ngTemplateOutlet]=\"contentTpl\"></ng-container>\n\t</div>\n</div>\n\n<div class=\"componentContainer\" [ngClass]=\"{fullParentSize: useFullParentSize, showErrors: isInErrorState()}\"\n\t\t *ngIf=\"!fullyCustom\">\n\t<div class=\"buttonContainer\">\n\t\t<input\n\t\t\ttype=\"file\"\n\t\t\t#nativeInputRef\n\t\t\t(change)=\"onChange($event.target.files)\"\n\t\t\t[multiple]=\"multiple\"\n\t\t\t[disabled]=\"disabled\"\n\t\t>\n\t\t<klp-form-button\n\t\t\tclass=\"uploadButton\"\n\t\t\t[isLoading]=\"isLoading\"\n\t\t\t[disabled]=\"disabled\"\n\t\t\t(click)=\"uploadFileClicked()\"\n\t\t>\n\t\t\t<div class=\"innerButton\">\n\t\t\t\t<span *ngIf=\"buttonText\">{{ buttonText }}</span>\n\t\t\t\t<div *ngIf=\"!buttonText\">\n\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"contentTpl\"></ng-container>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"tail\">\n\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"getTailTpl()\"></ng-container>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</klp-form-button>\n\t</div>\n\t<div class=\"fileName\" *ngIf=\"!onlyShowUploadButton\">\n\t\t{{ getFileNames() }}\n\t</div>\n\t<klp-form-button class=\"clearButton\" variant=\"white\" *ngIf=\"shouldShowClearButton()\" (click)=\"resetToNull()\">X\n\t</klp-form-button>\n</div>\n\n<ng-template #contentTpl>\n\t<ng-content></ng-content>\n</ng-template>\n", styles: [":host{display:block}:host input:disabled{cursor:not-allowed}.componentContainer{display:flex;align-items:center}.componentContainer.showErrors ::ng-deep button{border-color:#ff8000}.componentContainer.fullParentSize{height:100%;justify-content:center;position:relative}.componentContainer:not(.fullParentSize) .buttonContainer{position:relative}.componentContainer .buttonContainer{flex:0 0 auto}.innerButton{display:flex;align-items:center}.tail{margin-left:.4rem}input{position:absolute;cursor:pointer;opacity:0;inset:0}.fileName{flex:1 1 0px;margin-left:.625rem;color:#515365;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clearButton{flex:0 0 auto}.fullyCustom input{display:none}\n"] }]
59
60
  }], propDecorators: { isLoading: [{
60
61
  type: Input
61
62
  }], clearable: [{
@@ -66,8 +67,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
66
67
  type: Input
67
68
  }], buttonText: [{
68
69
  type: Input
70
+ }], fullyCustom: [{
71
+ type: Input
69
72
  }], nativeInputRef: [{
70
73
  type: ViewChild,
71
74
  args: ['nativeInputRef']
72
75
  }] } });
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9lbGVtZW50cy9maWxlLWlucHV0L2ZpbGUtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy9saWIvZWxlbWVudHMvZmlsZS1pbnB1dC9maWxlLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQWMsS0FBSyxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSwrREFBK0QsQ0FBQztBQUN4RyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7QUFReEQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLHlCQUErQjtJQU52RTs7UUFPVSxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQzdCLHNCQUFpQixHQUFHLEtBQUssQ0FBQztLQTBDbkM7SUF0Q08sUUFBUSxDQUFDLEtBQWU7UUFDOUIsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDdkMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsQ0FBQztRQUNELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwQyxpREFBaUQ7UUFDakQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztJQUNoRCxDQUFDO0lBRU0sWUFBWTtRQUNsQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDcEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEQsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsWUFBWSxJQUFJLEVBQUUsQ0FBQztZQUM1QyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1FBQzdCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7SUFFTSxxQkFBcUI7UUFDM0IsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUMvQixPQUFPLEtBQUssQ0FBQztRQUNkLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQixJQUFJLG1CQUFtQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUMxQyxPQUFPLElBQUksQ0FBQztZQUNiLENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNkLENBQUM7UUFDRCxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNqQyxPQUFPLElBQUksQ0FBQztRQUNiLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNkLENBQUM7SUFFTSxpQkFBaUI7UUFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDM0MsQ0FBQzs4R0E3Q1csa0JBQWtCO2tHQUFsQixrQkFBa0IsME5BRm5CLENBQUMsRUFBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUMsQ0FBQyxtS0NWeEYsc2dDQXdCQTs7MkZEWmEsa0JBQWtCO2tCQU45QixTQUFTOytCQUNDLHFCQUFxQixhQUdwQixDQUFDLEVBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQyxDQUFDOzhCQUc5RSxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUN1QixjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TXVsdGlwbGVWYWx1ZUFjY2Vzc29yQmFzZX0gZnJvbSAnLi4vdmFsdWUtYWNjZXNzb3ItYmFzZS9tdWx0aXBsZS12YWx1ZS1hY2Nlc3Nvci1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQge2lzVmFsdWVTZXR9IGZyb20gJy4uLy4uL3V0aWwvdmFsdWVzJztcbmltcG9ydCB7IGFycmF5SXNTZXRBbmRGaWxsZWQgfSBmcm9tICcuLi8uLi91dGlsL2FycmF5cyc7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ2tscC1mb3JtLWZpbGUtaW5wdXQnLFxuXHR0ZW1wbGF0ZVVybDogJy4vZmlsZS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsczogWycuL2ZpbGUtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcblx0cHJvdmlkZXJzOiBbe3Byb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogRmlsZUlucHV0Q29tcG9uZW50LCBtdWx0aTogdHJ1ZX1dLFxufSlcbmV4cG9ydCBjbGFzcyBGaWxlSW5wdXRDb21wb25lbnQgZXh0ZW5kcyBNdWx0aXBsZVZhbHVlQWNjZXNzb3JCYXNlPEZpbGU+IHtcblx0QElucHV0KCkgaXNMb2FkaW5nID0gZmFsc2U7XG5cdEBJbnB1dCgpIGNsZWFyYWJsZSA9IGZhbHNlO1xuXHRASW5wdXQoKSBvbmx5U2hvd1VwbG9hZEJ1dHRvbiA9IGZhbHNlO1xuXHRASW5wdXQoKSB1c2VGdWxsUGFyZW50U2l6ZSA9IGZhbHNlO1xuXHRASW5wdXQoKSBidXR0b25UZXh0OiBzdHJpbmc7XG5cdEBWaWV3Q2hpbGQoJ25hdGl2ZUlucHV0UmVmJykgbmF0aXZlSW5wdXRSZWY6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cblx0cHVibGljIG9uQ2hhbmdlKGZpbGVzOiBGaWxlTGlzdCk6IHZvaWQge1xuXHRcdGNvbnN0IHJlc3VsdCA9IFtdO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHJlc3VsdC5wdXNoKGZpbGVzLml0ZW0oaSkpO1xuXHRcdH1cblx0XHR0aGlzLnNldElubmVyVmFsdWVBbmROb3RpZnkocmVzdWx0KTtcblx0XHQvLyB0byBtYWtlIHN1cmUgd2UgY2FuIHNlbGVjdCB0aGUgc2FtZSBmaWxlIGFnYWluXG5cdFx0dGhpcy5uYXRpdmVJbnB1dFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlID0gbnVsbDtcblx0fVxuXG5cdHB1YmxpYyBnZXRGaWxlTmFtZXMoKTogc3RyaW5nIHtcblx0XHRpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmlubmVyVmFsdWUpKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5pbm5lclZhbHVlLm1hcChlID0+IGUubmFtZSkuam9pbignLCAnKTtcblx0XHR9IGVsc2UgaWYgKHRoaXMuaW5uZXJWYWx1ZSBpbnN0YW5jZW9mIEZpbGUpIHtcblx0XHRcdHJldHVybiB0aGlzLmlubmVyVmFsdWUubmFtZTtcblx0XHR9XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHRwdWJsaWMgc2hvdWxkU2hvd0NsZWFyQnV0dG9uKCk6IGJvb2xlYW4ge1xuXHRcdGlmICh0aGlzLm9ubHlTaG93VXBsb2FkQnV0dG9uKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdGlmICh0aGlzLm11bHRpcGxlKSB7XG5cdFx0XHRpZiAoYXJyYXlJc1NldEFuZEZpbGxlZCh0aGlzLmlubmVyVmFsdWUpKSB7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRpZiAoaXNWYWx1ZVNldCh0aGlzLmlubmVyVmFsdWUpKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0cHVibGljIHVwbG9hZEZpbGVDbGlja2VkKCk6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlSW5wdXRSZWYubmF0aXZlRWxlbWVudC5jbGljaygpO1xuXHR9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29tcG9uZW50Q29udGFpbmVyXCIgW25nQ2xhc3NdPVwie2Z1bGxQYXJlbnRTaXplOiB1c2VGdWxsUGFyZW50U2l6ZSwgc2hvd0Vycm9yczogaXNJbkVycm9yU3RhdGUoKX1cIj5cblx0PGRpdiBjbGFzcz1cImJ1dHRvbkNvbnRhaW5lclwiPlxuXHRcdDxpbnB1dFxuXHRcdFx0dHlwZT1cImZpbGVcIlxuXHRcdFx0I25hdGl2ZUlucHV0UmVmXG5cdFx0XHQoY2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudC50YXJnZXQuZmlsZXMpXCJcblx0XHRcdFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXG5cdFx0XHRbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuXHRcdD5cblx0XHQ8a2xwLWZvcm0tYnV0dG9uIGNsYXNzPVwidXBsb2FkQnV0dG9uXCIgW2lzTG9hZGluZ109XCJpc0xvYWRpbmdcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiAoY2xpY2spPVwidXBsb2FkRmlsZUNsaWNrZWQoKVwiPlxuXHRcdFx0PGRpdiBjbGFzcz1cImlubmVyQnV0dG9uXCI+XG5cdFx0XHRcdDxzcGFuICpuZ0lmPVwiYnV0dG9uVGV4dFwiPnt7YnV0dG9uVGV4dH19PC9zcGFuPlxuXHRcdFx0XHQ8ZGl2ICpuZ0lmPVwiIWJ1dHRvblRleHRcIj48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9kaXY+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJ0YWlsXCI+XG5cdFx0XHRcdFx0PG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJnZXRUYWlsVHBsKClcIj48L25nLWNvbnRhaW5lcj5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2tscC1mb3JtLWJ1dHRvbj5cblx0PC9kaXY+XG5cdDxkaXYgY2xhc3M9XCJmaWxlTmFtZVwiICpuZ0lmPVwiIW9ubHlTaG93VXBsb2FkQnV0dG9uXCI+XG5cdFx0e3tnZXRGaWxlTmFtZXMoKX19XG5cdDwvZGl2PlxuXHQ8a2xwLWZvcm0tYnV0dG9uIGNsYXNzPVwiY2xlYXJCdXR0b25cIiB2YXJpYW50PVwid2hpdGVcIiAqbmdJZj1cInNob3VsZFNob3dDbGVhckJ1dHRvbigpXCIgKGNsaWNrKT1cInJlc2V0VG9OdWxsKClcIj5YPC9rbHAtZm9ybS1idXR0b24+XG48L2Rpdj5cbiJdfQ==
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9lbGVtZW50cy9maWxlLWlucHV0L2ZpbGUtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy9saWIvZWxlbWVudHMvZmlsZS1pbnB1dC9maWxlLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQWMsS0FBSyxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSwrREFBK0QsQ0FBQztBQUN4RyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7QUFReEQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLHlCQUErQjtJQU52RTs7UUFPVSxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQzdCLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUUxQixnQkFBVyxHQUFHLEtBQUssQ0FBQztLQXlDN0I7SUF0Q08sUUFBUSxDQUFDLEtBQWU7UUFDOUIsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDdkMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsQ0FBQztRQUNELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwQyxpREFBaUQ7UUFDakQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztJQUNoRCxDQUFDO0lBRU0sWUFBWTtRQUNsQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDcEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEQsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsWUFBWSxJQUFJLEVBQUUsQ0FBQztZQUM1QyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1FBQzdCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7SUFFTSxxQkFBcUI7UUFDM0IsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUMvQixPQUFPLEtBQUssQ0FBQztRQUNkLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQixJQUFJLG1CQUFtQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUMxQyxPQUFPLElBQUksQ0FBQztZQUNiLENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNkLENBQUM7UUFDRCxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNqQyxPQUFPLElBQUksQ0FBQztRQUNiLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNkLENBQUM7SUFFTSxpQkFBaUI7UUFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDM0MsQ0FBQzs4R0E5Q1csa0JBQWtCO2tHQUFsQixrQkFBa0Isc1BBRm5CLENBQUMsRUFBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUMsQ0FBQyxtS0NWeEYsMGlEQWtEQTs7MkZEdENhLGtCQUFrQjtrQkFOOUIsU0FBUzsrQkFDQyxxQkFBcUIsYUFHcEIsQ0FBQyxFQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLG9CQUFvQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUMsQ0FBQzs4QkFHOUUsU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUN1QixjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TXVsdGlwbGVWYWx1ZUFjY2Vzc29yQmFzZX0gZnJvbSAnLi4vdmFsdWUtYWNjZXNzb3ItYmFzZS9tdWx0aXBsZS12YWx1ZS1hY2Nlc3Nvci1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQge2lzVmFsdWVTZXR9IGZyb20gJy4uLy4uL3V0aWwvdmFsdWVzJztcbmltcG9ydCB7IGFycmF5SXNTZXRBbmRGaWxsZWQgfSBmcm9tICcuLi8uLi91dGlsL2FycmF5cyc7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ2tscC1mb3JtLWZpbGUtaW5wdXQnLFxuXHR0ZW1wbGF0ZVVybDogJy4vZmlsZS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsczogWycuL2ZpbGUtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcblx0cHJvdmlkZXJzOiBbe3Byb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogRmlsZUlucHV0Q29tcG9uZW50LCBtdWx0aTogdHJ1ZX1dLFxufSlcbmV4cG9ydCBjbGFzcyBGaWxlSW5wdXRDb21wb25lbnQgZXh0ZW5kcyBNdWx0aXBsZVZhbHVlQWNjZXNzb3JCYXNlPEZpbGU+IHtcblx0QElucHV0KCkgaXNMb2FkaW5nID0gZmFsc2U7XG5cdEBJbnB1dCgpIGNsZWFyYWJsZSA9IGZhbHNlO1xuXHRASW5wdXQoKSBvbmx5U2hvd1VwbG9hZEJ1dHRvbiA9IGZhbHNlO1xuXHRASW5wdXQoKSB1c2VGdWxsUGFyZW50U2l6ZSA9IGZhbHNlO1xuXHRASW5wdXQoKSBidXR0b25UZXh0OiBzdHJpbmc7XG5cdEBJbnB1dCgpIGZ1bGx5Q3VzdG9tID0gZmFsc2U7XG5cdEBWaWV3Q2hpbGQoJ25hdGl2ZUlucHV0UmVmJykgbmF0aXZlSW5wdXRSZWY6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cblx0cHVibGljIG9uQ2hhbmdlKGZpbGVzOiBGaWxlTGlzdCk6IHZvaWQge1xuXHRcdGNvbnN0IHJlc3VsdCA9IFtdO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHJlc3VsdC5wdXNoKGZpbGVzLml0ZW0oaSkpO1xuXHRcdH1cblx0XHR0aGlzLnNldElubmVyVmFsdWVBbmROb3RpZnkocmVzdWx0KTtcblx0XHQvLyB0byBtYWtlIHN1cmUgd2UgY2FuIHNlbGVjdCB0aGUgc2FtZSBmaWxlIGFnYWluXG5cdFx0dGhpcy5uYXRpdmVJbnB1dFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlID0gbnVsbDtcblx0fVxuXG5cdHB1YmxpYyBnZXRGaWxlTmFtZXMoKTogc3RyaW5nIHtcblx0XHRpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmlubmVyVmFsdWUpKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5pbm5lclZhbHVlLm1hcChlID0+IGUubmFtZSkuam9pbignLCAnKTtcblx0XHR9IGVsc2UgaWYgKHRoaXMuaW5uZXJWYWx1ZSBpbnN0YW5jZW9mIEZpbGUpIHtcblx0XHRcdHJldHVybiB0aGlzLmlubmVyVmFsdWUubmFtZTtcblx0XHR9XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHRwdWJsaWMgc2hvdWxkU2hvd0NsZWFyQnV0dG9uKCk6IGJvb2xlYW4ge1xuXHRcdGlmICh0aGlzLm9ubHlTaG93VXBsb2FkQnV0dG9uKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdGlmICh0aGlzLm11bHRpcGxlKSB7XG5cdFx0XHRpZiAoYXJyYXlJc1NldEFuZEZpbGxlZCh0aGlzLmlubmVyVmFsdWUpKSB7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRpZiAoaXNWYWx1ZVNldCh0aGlzLmlubmVyVmFsdWUpKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0cHVibGljIHVwbG9hZEZpbGVDbGlja2VkKCk6IHZvaWQge1xuXHRcdHRoaXMubmF0aXZlSW5wdXRSZWYubmF0aXZlRWxlbWVudC5jbGljaygpO1xuXHR9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZnVsbHlDdXN0b21cIiAqbmdJZj1cImZ1bGx5Q3VzdG9tXCI+XG5cdDxpbnB1dFxuXHRcdHR5cGU9XCJmaWxlXCJcblx0XHQjbmF0aXZlSW5wdXRSZWZcblx0XHQoY2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudC50YXJnZXQuZmlsZXMpXCJcblx0XHRbbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxuXHRcdFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG5cdC8+XG5cdDxkaXYgKGNsaWNrKT1cInVwbG9hZEZpbGVDbGlja2VkKClcIj5cblx0XHQ8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRlbnRUcGxcIj48L25nLWNvbnRhaW5lcj5cblx0PC9kaXY+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cImNvbXBvbmVudENvbnRhaW5lclwiIFtuZ0NsYXNzXT1cIntmdWxsUGFyZW50U2l6ZTogdXNlRnVsbFBhcmVudFNpemUsIHNob3dFcnJvcnM6IGlzSW5FcnJvclN0YXRlKCl9XCJcblx0XHQgKm5nSWY9XCIhZnVsbHlDdXN0b21cIj5cblx0PGRpdiBjbGFzcz1cImJ1dHRvbkNvbnRhaW5lclwiPlxuXHRcdDxpbnB1dFxuXHRcdFx0dHlwZT1cImZpbGVcIlxuXHRcdFx0I25hdGl2ZUlucHV0UmVmXG5cdFx0XHQoY2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudC50YXJnZXQuZmlsZXMpXCJcblx0XHRcdFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXG5cdFx0XHRbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuXHRcdD5cblx0XHQ8a2xwLWZvcm0tYnV0dG9uXG5cdFx0XHRjbGFzcz1cInVwbG9hZEJ1dHRvblwiXG5cdFx0XHRbaXNMb2FkaW5nXT1cImlzTG9hZGluZ1wiXG5cdFx0XHRbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuXHRcdFx0KGNsaWNrKT1cInVwbG9hZEZpbGVDbGlja2VkKClcIlxuXHRcdD5cblx0XHRcdDxkaXYgY2xhc3M9XCJpbm5lckJ1dHRvblwiPlxuXHRcdFx0XHQ8c3BhbiAqbmdJZj1cImJ1dHRvblRleHRcIj57eyBidXR0b25UZXh0IH19PC9zcGFuPlxuXHRcdFx0XHQ8ZGl2ICpuZ0lmPVwiIWJ1dHRvblRleHRcIj5cblx0XHRcdFx0XHQ8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRlbnRUcGxcIj48L25nLWNvbnRhaW5lcj5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJ0YWlsXCI+XG5cdFx0XHRcdFx0PG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJnZXRUYWlsVHBsKClcIj48L25nLWNvbnRhaW5lcj5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2tscC1mb3JtLWJ1dHRvbj5cblx0PC9kaXY+XG5cdDxkaXYgY2xhc3M9XCJmaWxlTmFtZVwiICpuZ0lmPVwiIW9ubHlTaG93VXBsb2FkQnV0dG9uXCI+XG5cdFx0e3sgZ2V0RmlsZU5hbWVzKCkgfX1cblx0PC9kaXY+XG5cdDxrbHAtZm9ybS1idXR0b24gY2xhc3M9XCJjbGVhckJ1dHRvblwiIHZhcmlhbnQ9XCJ3aGl0ZVwiICpuZ0lmPVwic2hvdWxkU2hvd0NsZWFyQnV0dG9uKClcIiAoY2xpY2spPVwicmVzZXRUb051bGwoKVwiPlhcblx0PC9rbHAtZm9ybS1idXR0b24+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNjb250ZW50VHBsPlxuXHQ8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -1,5 +1,4 @@
1
1
  import { Component, Host, Input, Optional, ViewChild } from '@angular/core';
2
- import { isNullOrUndefined } from "../../util/values";
3
2
  import * as i0 from "@angular/core";
4
3
  import * as i1 from "../form-element/form-element.component";
5
4
  import * as i2 from "@angular/common";
@@ -14,11 +13,7 @@ export class FormErrorComponent {
14
13
  // <some-input />
15
14
  // That would fail, because the logic of the form error is run first, and at that moment, the `some-input` isnt registered yet
16
15
  setTimeout(() => {
17
- const attachedControl = this.parent.getAttachedControl();
18
16
  this.parent.registerErrorHandler(this.error, this.contentRef);
19
- if (isNullOrUndefined(attachedControl)) {
20
- throw new Error('You added a Form Error component without an attached Form Control');
21
- }
22
17
  });
23
18
  }
24
19
  getErrorValueMessage() {
@@ -40,4 +35,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
40
35
  type: ViewChild,
41
36
  args: ['contentRef']
42
37
  }] } });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9mb3JtL2Zvcm0tZXJyb3IvZm9ybS1lcnJvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9mb3JtL2Zvcm0tZXJyb3IvZm9ybS1lcnJvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQVUsUUFBUSxFQUFlLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUUvRixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQzs7OztBQVFwRCxNQUFNLE9BQU8sa0JBQWtCO0lBSTlCLFlBQXdDLE1BQTRCO1FBQTVCLFdBQU0sR0FBTixNQUFNLENBQXNCO1FBRjdELGNBQVMsR0FBRyxLQUFLLENBQUM7SUFFOEMsQ0FBQztJQUV4RSxRQUFRO1FBQ1AsdUdBQXVHO1FBQ3ZHLHFCQUFxQjtRQUNyQixpQkFBaUI7UUFDakIsOEhBQThIO1FBQzlILFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDekQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM5RCxJQUFJLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hDLE1BQU0sSUFBSSxLQUFLLENBQUMsbUVBQW1FLENBQUMsQ0FBQztZQUN0RixDQUFDO1FBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRU0sb0JBQW9CO1FBQzFCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUQsQ0FBQzs4R0F0Qlcsa0JBQWtCO2tHQUFsQixrQkFBa0IsNExDVi9CLDJLQUlBOzsyRkRNYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0MsZ0JBQWdCOzswQkFRYixJQUFJOzswQkFBSSxRQUFRO3lDQUhwQixLQUFLO3NCQUFiLEtBQUs7Z0JBRTBCLFVBQVU7c0JBQXpDLFNBQVM7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBIb3N0LCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1FbGVtZW50Q29tcG9uZW50fSBmcm9tIFwiLi4vZm9ybS1lbGVtZW50L2Zvcm0tZWxlbWVudC5jb21wb25lbnRcIjtcbmltcG9ydCB7aXNOdWxsT3JVbmRlZmluZWR9IGZyb20gXCIuLi8uLi91dGlsL3ZhbHVlc1wiO1xuaW1wb3J0IHtFcnJvclR5cGVzfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAna2xwLWZvcm0tZXJyb3InLFxuXHR0ZW1wbGF0ZVVybDogJy4vZm9ybS1lcnJvci5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsczogWycuL2Zvcm0tZXJyb3IuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUVycm9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblx0QElucHV0KCkgZXJyb3I6IEVycm9yVHlwZXM7XG5cdHB1YmxpYyBzaG93RXJyb3IgPSBmYWxzZTtcblx0QFZpZXdDaGlsZCgnY29udGVudFJlZicpIHB1YmxpYyBjb250ZW50UmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXHRjb25zdHJ1Y3RvcihASG9zdCgpIEBPcHRpb25hbCgpIHByaXZhdGUgcGFyZW50OiBGb3JtRWxlbWVudENvbXBvbmVudCkge31cblxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcblx0XHQvLyB0aGlzIGlzIGJlaW5nIHJ1biBuZXh0IGN5Y2xlLCBiZWNhdXNlIHdlIGRvbnQgd2FudCB0byBmYWlsIGlmIHRoZSBvcmRlciBvZiBjb21wb25lbnRzIGlzIGFzIGZvbGxvd3M6XG5cdFx0Ly8gPGFwcC1mb3JtLWVycm9yIC8+XG5cdFx0Ly8gPHNvbWUtaW5wdXQgLz5cblx0XHQvLyBUaGF0IHdvdWxkIGZhaWwsIGJlY2F1c2UgdGhlIGxvZ2ljIG9mIHRoZSBmb3JtIGVycm9yIGlzIHJ1biBmaXJzdCwgYW5kIGF0IHRoYXQgbW9tZW50LCB0aGUgYHNvbWUtaW5wdXRgIGlzbnQgcmVnaXN0ZXJlZCB5ZXRcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdGNvbnN0IGF0dGFjaGVkQ29udHJvbCA9IHRoaXMucGFyZW50LmdldEF0dGFjaGVkQ29udHJvbCgpO1xuXHRcdFx0dGhpcy5wYXJlbnQucmVnaXN0ZXJFcnJvckhhbmRsZXIodGhpcy5lcnJvciwgdGhpcy5jb250ZW50UmVmKTtcblx0XHRcdGlmIChpc051bGxPclVuZGVmaW5lZChhdHRhY2hlZENvbnRyb2wpKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcignWW91IGFkZGVkIGEgRm9ybSBFcnJvciBjb21wb25lbnQgd2l0aG91dCBhbiBhdHRhY2hlZCBGb3JtIENvbnRyb2wnKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdHB1YmxpYyBnZXRFcnJvclZhbHVlTWVzc2FnZSgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLnBhcmVudC5nZXRBdHRhY2hlZENvbnRyb2woKS5lcnJvcnNbdGhpcy5lcnJvcl07XG5cdH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjY29udGVudFJlZj5cblx0PG5nLWNvbnRlbnQgKm5nSWY9XCJlcnJvciAhPT0gJ2FzeW5jJ1wiPjwvbmctY29udGVudD5cblx0PGRpdiAqbmdJZj1cImVycm9yID09PSAnYXN5bmMnXCI+e3tnZXRFcnJvclZhbHVlTWVzc2FnZSgpfX08L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9mb3JtL2Zvcm0tZXJyb3IvZm9ybS1lcnJvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9mb3JtL2Zvcm0tZXJyb3IvZm9ybS1lcnJvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQVUsUUFBUSxFQUFlLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7OztBQVMvRixNQUFNLE9BQU8sa0JBQWtCO0lBSTlCLFlBQXdDLE1BQTRCO1FBQTVCLFdBQU0sR0FBTixNQUFNLENBQXNCO1FBRjdELGNBQVMsR0FBRyxLQUFLLENBQUM7SUFFOEMsQ0FBQztJQUV4RSxRQUFRO1FBQ1AsdUdBQXVHO1FBQ3ZHLHFCQUFxQjtRQUNyQixpQkFBaUI7UUFDakIsOEhBQThIO1FBQzlILFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQy9ELENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVNLG9CQUFvQjtRQUMxQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVELENBQUM7OEdBbEJXLGtCQUFrQjtrR0FBbEIsa0JBQWtCLDRMQ1QvQiwyS0FJQTs7MkZES2Esa0JBQWtCO2tCQUw5QixTQUFTOytCQUNDLGdCQUFnQjs7MEJBUWIsSUFBSTs7MEJBQUksUUFBUTt5Q0FIcEIsS0FBSztzQkFBYixLQUFLO2dCQUUwQixVQUFVO3NCQUF6QyxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSG9zdCwgSW5wdXQsIE9uSW5pdCwgT3B0aW9uYWwsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtRWxlbWVudENvbXBvbmVudH0gZnJvbSBcIi4uL2Zvcm0tZWxlbWVudC9mb3JtLWVsZW1lbnQuY29tcG9uZW50XCI7XG5pbXBvcnQge0Vycm9yVHlwZXN9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdrbHAtZm9ybS1lcnJvcicsXG5cdHRlbXBsYXRlVXJsOiAnLi9mb3JtLWVycm9yLmNvbXBvbmVudC5odG1sJyxcblx0c3R5bGVVcmxzOiBbJy4vZm9ybS1lcnJvci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtRXJyb3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXHRASW5wdXQoKSBlcnJvcjogRXJyb3JUeXBlcztcblx0cHVibGljIHNob3dFcnJvciA9IGZhbHNlO1xuXHRAVmlld0NoaWxkKCdjb250ZW50UmVmJykgcHVibGljIGNvbnRlbnRSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cdGNvbnN0cnVjdG9yKEBIb3N0KCkgQE9wdGlvbmFsKCkgcHJpdmF0ZSBwYXJlbnQ6IEZvcm1FbGVtZW50Q29tcG9uZW50KSB7fVxuXG5cdG5nT25Jbml0KCk6IHZvaWQge1xuXHRcdC8vIHRoaXMgaXMgYmVpbmcgcnVuIG5leHQgY3ljbGUsIGJlY2F1c2Ugd2UgZG9udCB3YW50IHRvIGZhaWwgaWYgdGhlIG9yZGVyIG9mIGNvbXBvbmVudHMgaXMgYXMgZm9sbG93czpcblx0XHQvLyA8YXBwLWZvcm0tZXJyb3IgLz5cblx0XHQvLyA8c29tZS1pbnB1dCAvPlxuXHRcdC8vIFRoYXQgd291bGQgZmFpbCwgYmVjYXVzZSB0aGUgbG9naWMgb2YgdGhlIGZvcm0gZXJyb3IgaXMgcnVuIGZpcnN0LCBhbmQgYXQgdGhhdCBtb21lbnQsIHRoZSBgc29tZS1pbnB1dGAgaXNudCByZWdpc3RlcmVkIHlldFxuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0dGhpcy5wYXJlbnQucmVnaXN0ZXJFcnJvckhhbmRsZXIodGhpcy5lcnJvciwgdGhpcy5jb250ZW50UmVmKTtcblx0XHR9KTtcblx0fVxuXG5cdHB1YmxpYyBnZXRFcnJvclZhbHVlTWVzc2FnZSgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLnBhcmVudC5nZXRBdHRhY2hlZENvbnRyb2woKS5lcnJvcnNbdGhpcy5lcnJvcl07XG5cdH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjY29udGVudFJlZj5cblx0PG5nLWNvbnRlbnQgKm5nSWY9XCJlcnJvciAhPT0gJ2FzeW5jJ1wiPjwvbmctY29udGVudD5cblx0PGRpdiAqbmdJZj1cImVycm9yID09PSAnYXN5bmMnXCI+e3tnZXRFcnJvclZhbHVlTWVzc2FnZSgpfX08L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -1849,11 +1849,7 @@ class FormErrorComponent {
1849
1849
  // <some-input />
1850
1850
  // That would fail, because the logic of the form error is run first, and at that moment, the `some-input` isnt registered yet
1851
1851
  setTimeout(() => {
1852
- const attachedControl = this.parent.getAttachedControl();
1853
1852
  this.parent.registerErrorHandler(this.error, this.contentRef);
1854
- if (isNullOrUndefined(attachedControl)) {
1855
- throw new Error('You added a Form Error component without an attached Form Control');
1856
- }
1857
1853
  });
1858
1854
  }
1859
1855
  getErrorValueMessage() {
@@ -2553,6 +2549,7 @@ class FileInputComponent extends MultipleValueAccessorBase {
2553
2549
  this.clearable = false;
2554
2550
  this.onlyShowUploadButton = false;
2555
2551
  this.useFullParentSize = false;
2552
+ this.fullyCustom = false;
2556
2553
  }
2557
2554
  onChange(files) {
2558
2555
  const result = [];
@@ -2591,11 +2588,11 @@ class FileInputComponent extends MultipleValueAccessorBase {
2591
2588
  this.nativeInputRef.nativeElement.click();
2592
2589
  }
2593
2590
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: FileInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2594
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: FileInputComponent, selector: "klp-form-file-input", inputs: { isLoading: "isLoading", clearable: "clearable", onlyShowUploadButton: "onlyShowUploadButton", useFullParentSize: "useFullParentSize", buttonText: "buttonText" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: FileInputComponent, multi: true }], viewQueries: [{ propertyName: "nativeInputRef", first: true, predicate: ["nativeInputRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"componentContainer\" [ngClass]=\"{fullParentSize: useFullParentSize, showErrors: isInErrorState()}\">\n\t<div class=\"buttonContainer\">\n\t\t<input\n\t\t\ttype=\"file\"\n\t\t\t#nativeInputRef\n\t\t\t(change)=\"onChange($event.target.files)\"\n\t\t\t[multiple]=\"multiple\"\n\t\t\t[disabled]=\"disabled\"\n\t\t>\n\t\t<klp-form-button class=\"uploadButton\" [isLoading]=\"isLoading\" [disabled]=\"disabled\" (click)=\"uploadFileClicked()\">\n\t\t\t<div class=\"innerButton\">\n\t\t\t\t<span *ngIf=\"buttonText\">{{buttonText}}</span>\n\t\t\t\t<div *ngIf=\"!buttonText\"><ng-content></ng-content></div>\n\t\t\t\t<div class=\"tail\">\n\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"getTailTpl()\"></ng-container>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</klp-form-button>\n\t</div>\n\t<div class=\"fileName\" *ngIf=\"!onlyShowUploadButton\">\n\t\t{{getFileNames()}}\n\t</div>\n\t<klp-form-button class=\"clearButton\" variant=\"white\" *ngIf=\"shouldShowClearButton()\" (click)=\"resetToNull()\">X</klp-form-button>\n</div>\n", styles: [":host{display:block}:host input:disabled{cursor:not-allowed}.componentContainer{display:flex;align-items:center}.componentContainer.showErrors ::ng-deep button{border-color:#ff8000}.componentContainer.fullParentSize{height:100%;justify-content:center;position:relative}.componentContainer:not(.fullParentSize) .buttonContainer{position:relative}.componentContainer .buttonContainer{flex:0 0 auto}.innerButton{display:flex;align-items:center}.tail{margin-left:.4rem}input{position:absolute;cursor:pointer;opacity:0;inset:0}.fileName{flex:1 1 0px;margin-left:.625rem;color:#515365;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clearButton{flex:0 0 auto}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ButtonComponent, selector: "klp-form-button", inputs: ["variant", "size", "fullWidth", "hasBorder", "disabled", "isLoading", "type", "clickCallback"] }] }); }
2591
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: FileInputComponent, selector: "klp-form-file-input", inputs: { isLoading: "isLoading", clearable: "clearable", onlyShowUploadButton: "onlyShowUploadButton", useFullParentSize: "useFullParentSize", buttonText: "buttonText", fullyCustom: "fullyCustom" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: FileInputComponent, multi: true }], viewQueries: [{ propertyName: "nativeInputRef", first: true, predicate: ["nativeInputRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"fullyCustom\" *ngIf=\"fullyCustom\">\n\t<input\n\t\ttype=\"file\"\n\t\t#nativeInputRef\n\t\t(change)=\"onChange($event.target.files)\"\n\t\t[multiple]=\"multiple\"\n\t\t[disabled]=\"disabled\"\n\t/>\n\t<div (click)=\"uploadFileClicked()\">\n\t\t<ng-container [ngTemplateOutlet]=\"contentTpl\"></ng-container>\n\t</div>\n</div>\n\n<div class=\"componentContainer\" [ngClass]=\"{fullParentSize: useFullParentSize, showErrors: isInErrorState()}\"\n\t\t *ngIf=\"!fullyCustom\">\n\t<div class=\"buttonContainer\">\n\t\t<input\n\t\t\ttype=\"file\"\n\t\t\t#nativeInputRef\n\t\t\t(change)=\"onChange($event.target.files)\"\n\t\t\t[multiple]=\"multiple\"\n\t\t\t[disabled]=\"disabled\"\n\t\t>\n\t\t<klp-form-button\n\t\t\tclass=\"uploadButton\"\n\t\t\t[isLoading]=\"isLoading\"\n\t\t\t[disabled]=\"disabled\"\n\t\t\t(click)=\"uploadFileClicked()\"\n\t\t>\n\t\t\t<div class=\"innerButton\">\n\t\t\t\t<span *ngIf=\"buttonText\">{{ buttonText }}</span>\n\t\t\t\t<div *ngIf=\"!buttonText\">\n\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"contentTpl\"></ng-container>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"tail\">\n\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"getTailTpl()\"></ng-container>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</klp-form-button>\n\t</div>\n\t<div class=\"fileName\" *ngIf=\"!onlyShowUploadButton\">\n\t\t{{ getFileNames() }}\n\t</div>\n\t<klp-form-button class=\"clearButton\" variant=\"white\" *ngIf=\"shouldShowClearButton()\" (click)=\"resetToNull()\">X\n\t</klp-form-button>\n</div>\n\n<ng-template #contentTpl>\n\t<ng-content></ng-content>\n</ng-template>\n", styles: [":host{display:block}:host input:disabled{cursor:not-allowed}.componentContainer{display:flex;align-items:center}.componentContainer.showErrors ::ng-deep button{border-color:#ff8000}.componentContainer.fullParentSize{height:100%;justify-content:center;position:relative}.componentContainer:not(.fullParentSize) .buttonContainer{position:relative}.componentContainer .buttonContainer{flex:0 0 auto}.innerButton{display:flex;align-items:center}.tail{margin-left:.4rem}input{position:absolute;cursor:pointer;opacity:0;inset:0}.fileName{flex:1 1 0px;margin-left:.625rem;color:#515365;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clearButton{flex:0 0 auto}.fullyCustom input{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ButtonComponent, selector: "klp-form-button", inputs: ["variant", "size", "fullWidth", "hasBorder", "disabled", "isLoading", "type", "clickCallback"] }] }); }
2595
2592
  }
2596
2593
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: FileInputComponent, decorators: [{
2597
2594
  type: Component,
2598
- args: [{ selector: 'klp-form-file-input', providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: FileInputComponent, multi: true }], template: "<div class=\"componentContainer\" [ngClass]=\"{fullParentSize: useFullParentSize, showErrors: isInErrorState()}\">\n\t<div class=\"buttonContainer\">\n\t\t<input\n\t\t\ttype=\"file\"\n\t\t\t#nativeInputRef\n\t\t\t(change)=\"onChange($event.target.files)\"\n\t\t\t[multiple]=\"multiple\"\n\t\t\t[disabled]=\"disabled\"\n\t\t>\n\t\t<klp-form-button class=\"uploadButton\" [isLoading]=\"isLoading\" [disabled]=\"disabled\" (click)=\"uploadFileClicked()\">\n\t\t\t<div class=\"innerButton\">\n\t\t\t\t<span *ngIf=\"buttonText\">{{buttonText}}</span>\n\t\t\t\t<div *ngIf=\"!buttonText\"><ng-content></ng-content></div>\n\t\t\t\t<div class=\"tail\">\n\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"getTailTpl()\"></ng-container>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</klp-form-button>\n\t</div>\n\t<div class=\"fileName\" *ngIf=\"!onlyShowUploadButton\">\n\t\t{{getFileNames()}}\n\t</div>\n\t<klp-form-button class=\"clearButton\" variant=\"white\" *ngIf=\"shouldShowClearButton()\" (click)=\"resetToNull()\">X</klp-form-button>\n</div>\n", styles: [":host{display:block}:host input:disabled{cursor:not-allowed}.componentContainer{display:flex;align-items:center}.componentContainer.showErrors ::ng-deep button{border-color:#ff8000}.componentContainer.fullParentSize{height:100%;justify-content:center;position:relative}.componentContainer:not(.fullParentSize) .buttonContainer{position:relative}.componentContainer .buttonContainer{flex:0 0 auto}.innerButton{display:flex;align-items:center}.tail{margin-left:.4rem}input{position:absolute;cursor:pointer;opacity:0;inset:0}.fileName{flex:1 1 0px;margin-left:.625rem;color:#515365;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clearButton{flex:0 0 auto}\n"] }]
2595
+ args: [{ selector: 'klp-form-file-input', providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: FileInputComponent, multi: true }], template: "<div class=\"fullyCustom\" *ngIf=\"fullyCustom\">\n\t<input\n\t\ttype=\"file\"\n\t\t#nativeInputRef\n\t\t(change)=\"onChange($event.target.files)\"\n\t\t[multiple]=\"multiple\"\n\t\t[disabled]=\"disabled\"\n\t/>\n\t<div (click)=\"uploadFileClicked()\">\n\t\t<ng-container [ngTemplateOutlet]=\"contentTpl\"></ng-container>\n\t</div>\n</div>\n\n<div class=\"componentContainer\" [ngClass]=\"{fullParentSize: useFullParentSize, showErrors: isInErrorState()}\"\n\t\t *ngIf=\"!fullyCustom\">\n\t<div class=\"buttonContainer\">\n\t\t<input\n\t\t\ttype=\"file\"\n\t\t\t#nativeInputRef\n\t\t\t(change)=\"onChange($event.target.files)\"\n\t\t\t[multiple]=\"multiple\"\n\t\t\t[disabled]=\"disabled\"\n\t\t>\n\t\t<klp-form-button\n\t\t\tclass=\"uploadButton\"\n\t\t\t[isLoading]=\"isLoading\"\n\t\t\t[disabled]=\"disabled\"\n\t\t\t(click)=\"uploadFileClicked()\"\n\t\t>\n\t\t\t<div class=\"innerButton\">\n\t\t\t\t<span *ngIf=\"buttonText\">{{ buttonText }}</span>\n\t\t\t\t<div *ngIf=\"!buttonText\">\n\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"contentTpl\"></ng-container>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"tail\">\n\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"getTailTpl()\"></ng-container>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</klp-form-button>\n\t</div>\n\t<div class=\"fileName\" *ngIf=\"!onlyShowUploadButton\">\n\t\t{{ getFileNames() }}\n\t</div>\n\t<klp-form-button class=\"clearButton\" variant=\"white\" *ngIf=\"shouldShowClearButton()\" (click)=\"resetToNull()\">X\n\t</klp-form-button>\n</div>\n\n<ng-template #contentTpl>\n\t<ng-content></ng-content>\n</ng-template>\n", styles: [":host{display:block}:host input:disabled{cursor:not-allowed}.componentContainer{display:flex;align-items:center}.componentContainer.showErrors ::ng-deep button{border-color:#ff8000}.componentContainer.fullParentSize{height:100%;justify-content:center;position:relative}.componentContainer:not(.fullParentSize) .buttonContainer{position:relative}.componentContainer .buttonContainer{flex:0 0 auto}.innerButton{display:flex;align-items:center}.tail{margin-left:.4rem}input{position:absolute;cursor:pointer;opacity:0;inset:0}.fileName{flex:1 1 0px;margin-left:.625rem;color:#515365;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clearButton{flex:0 0 auto}.fullyCustom input{display:none}\n"] }]
2599
2596
  }], propDecorators: { isLoading: [{
2600
2597
  type: Input
2601
2598
  }], clearable: [{
@@ -2606,6 +2603,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
2606
2603
  type: Input
2607
2604
  }], buttonText: [{
2608
2605
  type: Input
2606
+ }], fullyCustom: [{
2607
+ type: Input
2609
2608
  }], nativeInputRef: [{
2610
2609
  type: ViewChild,
2611
2610
  args: ['nativeInputRef']