@openziti/ziti-console-lib 0.6.4 → 0.6.6

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.
Files changed (21) hide show
  1. package/README.md +5 -6
  2. package/assets/styles/global.scss +45 -0
  3. package/esm2022/lib/features/data-table/data-table.component.mjs +2 -2
  4. package/esm2022/lib/features/dynamic-widgets/number/number-input.component.mjs +27 -6
  5. package/esm2022/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.mjs +1 -1
  6. package/esm2022/lib/features/dynamic-widgets/selector/selector-input.component.mjs +88 -33
  7. package/esm2022/lib/features/dynamic-widgets/string/string-input.component.mjs +27 -6
  8. package/esm2022/lib/features/projectable-forms/identity/identity-form.component.mjs +9 -3
  9. package/esm2022/lib/services/schema.service.mjs +2 -2
  10. package/esm2022/lib/services/settings-service.class.mjs +2 -2
  11. package/fesm2022/openziti-ziti-console-lib.mjs +149 -49
  12. package/fesm2022/openziti-ziti-console-lib.mjs.map +1 -1
  13. package/lib/features/dynamic-widgets/number/number-input.component.d.ts +2 -1
  14. package/lib/features/dynamic-widgets/number/number-input.component.d.ts.map +1 -1
  15. package/lib/features/dynamic-widgets/selector/selector-input.component.d.ts +7 -2
  16. package/lib/features/dynamic-widgets/selector/selector-input.component.d.ts.map +1 -1
  17. package/lib/features/dynamic-widgets/string/string-input.component.d.ts +2 -1
  18. package/lib/features/dynamic-widgets/string/string-input.component.d.ts.map +1 -1
  19. package/lib/features/projectable-forms/identity/identity-form.component.d.ts.map +1 -1
  20. package/lib/services/settings-service.class.d.ts +1 -1
  21. package/package.json +2 -2
@@ -4,6 +4,7 @@ import { debounce } from "lodash";
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/common";
6
6
  import * as i2 from "@angular/forms";
7
+ import * as i3 from "@angular/material/tooltip";
7
8
  class NumberInputComponent {
8
9
  constructor() {
9
10
  this._fieldName = 'Field Label';
@@ -31,32 +32,52 @@ class NumberInputComponent {
31
32
  }, 500)();
32
33
  }
33
34
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NumberInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
34
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NumberInputComponent, selector: "lib-number-input", inputs: { fieldName: "fieldName", fieldValue: "fieldValue", placeholder: "placeholder", parentage: "parentage", labelColor: "labelColor", fieldClass: "fieldClass", error: "error" }, outputs: { fieldValueChange: "fieldValueChange" }, ngImport: i0, template: `
35
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NumberInputComponent, selector: "lib-number-input", inputs: { fieldName: "fieldName", helpText: "helpText", fieldValue: "fieldValue", placeholder: "placeholder", parentage: "parentage", labelColor: "labelColor", fieldClass: "fieldClass", error: "error" }, outputs: { fieldValueChange: "fieldValueChange" }, ngImport: i0, template: `
35
36
  <div [ngClass]="fieldClass + (!_isValid ? 'invalid' : '')" class="{{!_isValid ? 'invalid' : ''}} number-input-container">
36
- <label for="schema_{{parentage?parentage+'_':''}}{{_idName}}" [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
37
+ <div class="label-container">
38
+ <label for="schema_{{parentage?parentage+'_':''}}{{_idName}}" [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
39
+ <div
40
+ *ngIf="helpText"
41
+ class="form-field-info infoicon"
42
+ matTooltip="{{helpText}}"
43
+ matTooltipPosition="above"
44
+ matTooltipClass="wide-tooltip"
45
+ ></div>
46
+ </div>
37
47
  <input id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
38
48
  type="number" class="jsonEntry"
39
49
  [ngClass]="{'error': error}"
40
50
  [placeholder]="placeholder" [(ngModel)]="fieldValue" (paste)="onKeyup()" (keyup)="onKeyup()"/>
41
51
  <div *ngIf="error" class="error">{{error}}</div>
42
52
  </div>
43
- `, isInline: true, styles: [".number-input-container{margin:var(--marginSmall) 0}.number-input-container label{margin-bottom:0;margin-top:0}.number-input-container input.error{border-color:red}.number-input-container div.error{color:red}\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.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
53
+ `, isInline: true, styles: [".number-input-container{margin:var(--marginSmall) 0}.number-input-container label{margin-bottom:0;margin-top:0}.number-input-container input.error{border-color:red}.number-input-container div.error{color:red}.label-container{display:flex;gap:5px;margin-bottom:var(--marginSmall);margin-top:var(--marginMedium)}\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.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] }); }
44
54
  }
45
55
  export { NumberInputComponent };
46
56
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NumberInputComponent, decorators: [{
47
57
  type: Component,
48
58
  args: [{ selector: 'lib-number-input', template: `
49
59
  <div [ngClass]="fieldClass + (!_isValid ? 'invalid' : '')" class="{{!_isValid ? 'invalid' : ''}} number-input-container">
50
- <label for="schema_{{parentage?parentage+'_':''}}{{_idName}}" [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
60
+ <div class="label-container">
61
+ <label for="schema_{{parentage?parentage+'_':''}}{{_idName}}" [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
62
+ <div
63
+ *ngIf="helpText"
64
+ class="form-field-info infoicon"
65
+ matTooltip="{{helpText}}"
66
+ matTooltipPosition="above"
67
+ matTooltipClass="wide-tooltip"
68
+ ></div>
69
+ </div>
51
70
  <input id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
52
71
  type="number" class="jsonEntry"
53
72
  [ngClass]="{'error': error}"
54
73
  [placeholder]="placeholder" [(ngModel)]="fieldValue" (paste)="onKeyup()" (keyup)="onKeyup()"/>
55
74
  <div *ngIf="error" class="error">{{error}}</div>
56
75
  </div>
57
- `, styles: [".number-input-container{margin:var(--marginSmall) 0}.number-input-container label{margin-bottom:0;margin-top:0}.number-input-container input.error{border-color:red}.number-input-container div.error{color:red}\n"] }]
76
+ `, styles: [".number-input-container{margin:var(--marginSmall) 0}.number-input-container label{margin-bottom:0;margin-top:0}.number-input-container input.error{border-color:red}.number-input-container div.error{color:red}.label-container{display:flex;gap:5px;margin-bottom:var(--marginSmall);margin-top:var(--marginMedium)}\n"] }]
58
77
  }], propDecorators: { fieldName: [{
59
78
  type: Input
79
+ }], helpText: [{
80
+ type: Input
60
81
  }], fieldValue: [{
61
82
  type: Input
62
83
  }], placeholder: [{
@@ -72,4 +93,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
72
93
  }], fieldValueChange: [{
73
94
  type: Output
74
95
  }] } });
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9keW5hbWljLXdpZGdldHMvbnVtYmVyL251bWJlci1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxRQUFRLENBQUM7Ozs7QUFFaEMsTUFjYSxvQkFBb0I7SUFkakM7UUFlRSxlQUFVLEdBQUcsYUFBYSxDQUFDO1FBQzNCLFlBQU8sR0FBRyxXQUFXLENBQUM7UUFNYixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixjQUFTLEdBQWEsRUFBRSxDQUFDO1FBQ3pCLGVBQVUsR0FBRyxTQUFTLENBQUM7UUFDdkIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1YscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQXFCLENBQUM7UUFDbkUsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBc0IsQ0FBQztRQUVoRCxhQUFRLEdBQUcsSUFBSSxDQUFDO0tBV2pCO0lBeEJDLElBQWEsU0FBUyxDQUFDLElBQVk7UUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBV00sVUFBVSxDQUFDLE9BQU87UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDMUIsQ0FBQztJQUVELE9BQU87UUFDTCxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ1osQ0FBQzsrR0ExQlUsb0JBQW9CO21HQUFwQixvQkFBb0IsaVNBWnJCOzs7Ozs7Ozs7R0FTVDs7U0FHVSxvQkFBb0I7NEZBQXBCLG9CQUFvQjtrQkFkaEMsU0FBUzsrQkFDRSxrQkFBa0IsWUFDbEI7Ozs7Ozs7OztHQVNUOzhCQU1ZLFNBQVM7c0JBQXJCLEtBQUs7Z0JBSUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U3ViamVjdH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7ZGVib3VuY2V9IGZyb20gXCJsb2Rhc2hcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLW51bWJlci1pbnB1dCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBbbmdDbGFzc109XCJmaWVsZENsYXNzICsgKCFfaXNWYWxpZCA/ICdpbnZhbGlkJyA6ICcnKVwiIGNsYXNzPVwie3shX2lzVmFsaWQgPyAnaW52YWxpZCcgOiAnJ319IG51bWJlci1pbnB1dC1jb250YWluZXJcIj5cbiAgICAgIDxsYWJlbCBmb3I9XCJzY2hlbWFfe3twYXJlbnRhZ2U/cGFyZW50YWdlKydfJzonJ319e3tfaWROYW1lfX1cIiAgW25nU3R5bGVdPVwieydjb2xvcic6IGxhYmVsQ29sb3J9XCI+e3tfZmllbGROYW1lfX08L2xhYmVsPlxuICAgICAgPGlucHV0IGlkPVwic2NoZW1hX3t7cGFyZW50YWdlP3BhcmVudGFnZSsnXyc6Jyd9fXt7X2lkTmFtZX19XCJcbiAgICAgICAgIHR5cGU9XCJudW1iZXJcIiBjbGFzcz1cImpzb25FbnRyeVwiXG4gICAgICAgICAgICAgW25nQ2xhc3NdPVwieydlcnJvcic6IGVycm9yfVwiXG4gICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbKG5nTW9kZWwpXT1cImZpZWxkVmFsdWVcIiAocGFzdGUpPVwib25LZXl1cCgpXCIgKGtleXVwKT1cIm9uS2V5dXAoKVwiLz5cbiAgICAgIDxkaXYgKm5nSWY9XCJlcnJvclwiIGNsYXNzPVwiZXJyb3JcIj57e2Vycm9yfX08L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJ251bWJlci1pbnB1dC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIE51bWJlcklucHV0Q29tcG9uZW50IHtcbiAgX2ZpZWxkTmFtZSA9ICdGaWVsZCBMYWJlbCc7XG4gIF9pZE5hbWUgPSAnZmllbGRuYW1lJztcbiAgQElucHV0KCkgc2V0IGZpZWxkTmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9maWVsZE5hbWUgPSBuYW1lO1xuICAgIHRoaXMuX2lkTmFtZSA9IG5hbWUucmVwbGFjZSgvXFxzL2csICcnKS50b0xvd2VyQ2FzZSgpO1xuICB9XG4gIEBJbnB1dCgpIGZpZWxkVmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcbiAgQElucHV0KCkgcGFyZW50YWdlOiBzdHJpbmdbXSA9IFtdO1xuICBASW5wdXQoKSBsYWJlbENvbG9yID0gJyMwMDAwMDAnO1xuICBASW5wdXQoKSBmaWVsZENsYXNzID0gJyc7XG4gIEBJbnB1dCgpIGVycm9yID0gJyc7XG4gIEBPdXRwdXQoKSBmaWVsZFZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXJ8IHVuZGVmaW5lZD4oKTtcbiAgdmFsdWVDaGFuZ2UgPSBuZXcgU3ViamVjdDxudW1iZXJ8IHVuZGVmaW5lZD4gKCk7XG5cbiAgX2lzVmFsaWQgPSB0cnVlO1xuICBwdWJsaWMgc2V0SXNWYWxpZChpc1ZhbGlkKSB7XG4gICAgdGhpcy5faXNWYWxpZCA9IGlzVmFsaWQ7XG4gIH1cblxuICBvbktleXVwKCkge1xuICAgIGRlYm91bmNlKCgpID0+IHtcbiAgICAgIHRoaXMuZmllbGRWYWx1ZUNoYW5nZS5lbWl0KHRoaXMuZmllbGRWYWx1ZSk7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLm5leHQodGhpcy5maWVsZFZhbHVlKTtcbiAgICB9LCA1MDApKCk7XG4gIH1cbn1cbiJdfQ==
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9keW5hbWljLXdpZGdldHMvbnVtYmVyL251bWJlci1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxRQUFRLENBQUM7Ozs7O0FBRWhDLE1BdUJhLG9CQUFvQjtJQXZCakM7UUF3QkUsZUFBVSxHQUFHLGFBQWEsQ0FBQztRQUMzQixZQUFPLEdBQUcsV0FBVyxDQUFDO1FBT2IsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsY0FBUyxHQUFhLEVBQUUsQ0FBQztRQUN6QixlQUFVLEdBQUcsU0FBUyxDQUFDO1FBQ3ZCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNWLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO1FBQ25FLGdCQUFXLEdBQUcsSUFBSSxPQUFPLEVBQXNCLENBQUM7UUFFaEQsYUFBUSxHQUFHLElBQUksQ0FBQztLQVdqQjtJQXpCQyxJQUFhLFNBQVMsQ0FBQyxJQUFZO1FBQ2pDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkQsQ0FBQztJQVlNLFVBQVUsQ0FBQyxPQUFPO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0lBQzFCLENBQUM7SUFFRCxPQUFPO1FBQ0wsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6QyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUNaLENBQUM7K0dBM0JVLG9CQUFvQjttR0FBcEIsb0JBQW9CLHVUQXJCckI7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCVDs7U0FHVSxvQkFBb0I7NEZBQXBCLG9CQUFvQjtrQkF2QmhDLFNBQVM7K0JBQ0Usa0JBQWtCLFlBQ2xCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQlQ7OEJBTVksU0FBUztzQkFBckIsS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksZ0JBQWdCO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1N1YmplY3R9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge2RlYm91bmNlfSBmcm9tIFwibG9kYXNoXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1udW1iZXItaW5wdXQnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgW25nQ2xhc3NdPVwiZmllbGRDbGFzcyArICghX2lzVmFsaWQgPyAnaW52YWxpZCcgOiAnJylcIiBjbGFzcz1cInt7IV9pc1ZhbGlkID8gJ2ludmFsaWQnIDogJyd9fSBudW1iZXItaW5wdXQtY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtY29udGFpbmVyXCI+XG4gICAgICAgIDxsYWJlbCBmb3I9XCJzY2hlbWFfe3twYXJlbnRhZ2U/cGFyZW50YWdlKydfJzonJ319e3tfaWROYW1lfX1cIiAgW25nU3R5bGVdPVwieydjb2xvcic6IGxhYmVsQ29sb3J9XCI+e3tfZmllbGROYW1lfX08L2xhYmVsPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cImhlbHBUZXh0XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1pbmZvIGluZm9pY29uXCJcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7e2hlbHBUZXh0fX1cIlxuICAgICAgICAgICAgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIlxuICAgICAgICAgICAgbWF0VG9vbHRpcENsYXNzPVwid2lkZS10b29sdGlwXCJcbiAgICAgICAgPjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8aW5wdXQgaWQ9XCJzY2hlbWFfe3twYXJlbnRhZ2U/cGFyZW50YWdlKydfJzonJ319e3tfaWROYW1lfX1cIlxuICAgICAgICAgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwianNvbkVudHJ5XCJcbiAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2Vycm9yJzogZXJyb3J9XCJcbiAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFsobmdNb2RlbCldPVwiZmllbGRWYWx1ZVwiIChwYXN0ZSk9XCJvbktleXVwKClcIiAoa2V5dXApPVwib25LZXl1cCgpXCIvPlxuICAgICAgPGRpdiAqbmdJZj1cImVycm9yXCIgY2xhc3M9XCJlcnJvclwiPnt7ZXJyb3J9fTwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnbnVtYmVyLWlucHV0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTnVtYmVySW5wdXRDb21wb25lbnQge1xuICBfZmllbGROYW1lID0gJ0ZpZWxkIExhYmVsJztcbiAgX2lkTmFtZSA9ICdmaWVsZG5hbWUnO1xuICBASW5wdXQoKSBzZXQgZmllbGROYW1lKG5hbWU6IHN0cmluZykge1xuICAgIHRoaXMuX2ZpZWxkTmFtZSA9IG5hbWU7XG4gICAgdGhpcy5faWROYW1lID0gbmFtZS5yZXBsYWNlKC9cXHMvZywgJycpLnRvTG93ZXJDYXNlKCk7XG4gIH1cbiAgQElucHV0KCkgaGVscFRleHQ7XG4gIEBJbnB1dCgpIGZpZWxkVmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcbiAgQElucHV0KCkgcGFyZW50YWdlOiBzdHJpbmdbXSA9IFtdO1xuICBASW5wdXQoKSBsYWJlbENvbG9yID0gJyMwMDAwMDAnO1xuICBASW5wdXQoKSBmaWVsZENsYXNzID0gJyc7XG4gIEBJbnB1dCgpIGVycm9yID0gJyc7XG4gIEBPdXRwdXQoKSBmaWVsZFZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXJ8IHVuZGVmaW5lZD4oKTtcbiAgdmFsdWVDaGFuZ2UgPSBuZXcgU3ViamVjdDxudW1iZXJ8IHVuZGVmaW5lZD4gKCk7XG5cbiAgX2lzVmFsaWQgPSB0cnVlO1xuICBwdWJsaWMgc2V0SXNWYWxpZChpc1ZhbGlkKSB7XG4gICAgdGhpcy5faXNWYWxpZCA9IGlzVmFsaWQ7XG4gIH1cblxuICBvbktleXVwKCkge1xuICAgIGRlYm91bmNlKCgpID0+IHtcbiAgICAgIHRoaXMuZmllbGRWYWx1ZUNoYW5nZS5lbWl0KHRoaXMuZmllbGRWYWx1ZSk7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLm5leHQodGhpcy5maWVsZFZhbHVlKTtcbiAgICB9LCA1MDApKCk7XG4gIH1cbn1cbiJdfQ==
@@ -146,7 +146,7 @@ class ProtocolAddressPortInputComponent {
146
146
  this.hostname = data.hostname;
147
147
  }
148
148
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ProtocolAddressPortInputComponent, deps: [{ token: i1.ValidationService }], target: i0.ɵɵFactoryTarget.Component }); }
149
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ProtocolAddressPortInputComponent, selector: "lib-protocol-address-port-input", inputs: { protocolList: "protocolList", showProtocol: "showProtocol", showAddress: "showAddress", showHostName: "showHostName", showPort: "showPort", disableProtocol: "disableProtocol", disableAddress: "disableAddress", disableHostName: "disableHostName", disablePort: "disablePort", protocol: "protocol", address: "address", hostname: "hostname", port: "port", parentage: "parentage", labelColor: "labelColor", labelPrefix: "labelPrefix", fieldClass: "fieldClass", error: "error" }, outputs: { fieldValueChange: "fieldValueChange", portChange: "portChange", addressChange: "addressChange", hostnameChange: "hostnameChange", protocolChange: "protocolChange" }, ngImport: i0, template: "<div class=\"grid {{className}}\">\n <div *ngIf=\"showProtocol\" [ngClass]=\"{disabled: disableProtocol, invalid: errors['protocol']}\">\n <lib-selector-input [fieldName]=\"protocolFieldName\"\n [(fieldValue)]=\"protocol\"\n [labelColor]=\"labelColor\"\n [placeholder]=\"undefined\"\n [valueList]=\"['tcp', 'udp']\"\n (fieldValueChange)=\"update()\"\n ></lib-selector-input>\n </div>\n <div *ngIf=\"showAddress\" [ngClass]=\"{disabled: disableAddress, invalid: errors['address']}\">\n <lib-string-input [fieldName]=\"addressFieldName\"\n [(fieldValue)]=\"address\"\n [labelColor]=\"labelColor\"\n [placeholder]=\"'host.name'\"\n (fieldValueChange)=\"update()\"\n ></lib-string-input>\n </div>\n <div *ngIf=\"showHostName\" [ngClass]=\"{disabled: disableHostName, invalid: errors['hostname']}\">\n <lib-string-input [fieldName]=\"hostnameFieldName\"\n [(fieldValue)]=\"hostname\"\n [labelColor]=\"labelColor\"\n [placeholder]=\"'host.name'\"\n (fieldValueChange)=\"update()\"\n ></lib-string-input>\n </div>\n <div *ngIf=\"showPort\" [ngClass]=\"{disabled: disablePort, invalid: errors['port']}\">\n <lib-number-input [fieldName]=\"portFieldName\"\n [(fieldValue)]=\"port\"\n [labelColor]=\"labelColor\"\n [placeholder]=\"'0'\"\n (fieldValueChange)=\"update()\"\n ></lib-number-input>\n </div>\n</div>\n", styles: [".grid{display:grid;grid-template-columns:auto;grid-gap:10px}.grid.addressFull{grid-template-columns:75px auto 75px}.grid.addressFull .disabled{opacity:.5;pointer-events:none}.grid.address-only{grid-template-columns:auto}.host-name-port{grid-template-columns:auto 75px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.StringInputComponent, selector: "lib-string-input", inputs: ["fieldName", "fieldValue", "placeholder", "parentage", "labelColor", "fieldClass", "error"], outputs: ["fieldValueChange"] }, { kind: "component", type: i4.NumberInputComponent, selector: "lib-number-input", inputs: ["fieldName", "fieldValue", "placeholder", "parentage", "labelColor", "fieldClass", "error"], outputs: ["fieldValueChange"] }, { kind: "component", type: i5.SelectorInputComponent, selector: "lib-selector-input", inputs: ["fieldName", "fieldValue", "placeholder", "parentage", "valueList", "labelColor", "fieldClass", "error"], outputs: ["fieldValueChange"] }] }); }
149
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ProtocolAddressPortInputComponent, selector: "lib-protocol-address-port-input", inputs: { protocolList: "protocolList", showProtocol: "showProtocol", showAddress: "showAddress", showHostName: "showHostName", showPort: "showPort", disableProtocol: "disableProtocol", disableAddress: "disableAddress", disableHostName: "disableHostName", disablePort: "disablePort", protocol: "protocol", address: "address", hostname: "hostname", port: "port", parentage: "parentage", labelColor: "labelColor", labelPrefix: "labelPrefix", fieldClass: "fieldClass", error: "error" }, outputs: { fieldValueChange: "fieldValueChange", portChange: "portChange", addressChange: "addressChange", hostnameChange: "hostnameChange", protocolChange: "protocolChange" }, ngImport: i0, template: "<div class=\"grid {{className}}\">\n <div *ngIf=\"showProtocol\" [ngClass]=\"{disabled: disableProtocol, invalid: errors['protocol']}\">\n <lib-selector-input [fieldName]=\"protocolFieldName\"\n [(fieldValue)]=\"protocol\"\n [labelColor]=\"labelColor\"\n [placeholder]=\"undefined\"\n [valueList]=\"['tcp', 'udp']\"\n (fieldValueChange)=\"update()\"\n ></lib-selector-input>\n </div>\n <div *ngIf=\"showAddress\" [ngClass]=\"{disabled: disableAddress, invalid: errors['address']}\">\n <lib-string-input [fieldName]=\"addressFieldName\"\n [(fieldValue)]=\"address\"\n [labelColor]=\"labelColor\"\n [placeholder]=\"'host.name'\"\n (fieldValueChange)=\"update()\"\n ></lib-string-input>\n </div>\n <div *ngIf=\"showHostName\" [ngClass]=\"{disabled: disableHostName, invalid: errors['hostname']}\">\n <lib-string-input [fieldName]=\"hostnameFieldName\"\n [(fieldValue)]=\"hostname\"\n [labelColor]=\"labelColor\"\n [placeholder]=\"'host.name'\"\n (fieldValueChange)=\"update()\"\n ></lib-string-input>\n </div>\n <div *ngIf=\"showPort\" [ngClass]=\"{disabled: disablePort, invalid: errors['port']}\">\n <lib-number-input [fieldName]=\"portFieldName\"\n [(fieldValue)]=\"port\"\n [labelColor]=\"labelColor\"\n [placeholder]=\"'0'\"\n (fieldValueChange)=\"update()\"\n ></lib-number-input>\n </div>\n</div>\n", styles: [".grid{display:grid;grid-template-columns:auto;grid-gap:10px}.grid.addressFull{grid-template-columns:75px auto 75px}.grid.addressFull .disabled{opacity:.5;pointer-events:none}.grid.address-only{grid-template-columns:auto}.host-name-port{grid-template-columns:auto 75px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.StringInputComponent, selector: "lib-string-input", inputs: ["fieldName", "helpText", "fieldValue", "placeholder", "parentage", "labelColor", "fieldClass", "error"], outputs: ["fieldValueChange"] }, { kind: "component", type: i4.NumberInputComponent, selector: "lib-number-input", inputs: ["fieldName", "helpText", "fieldValue", "placeholder", "parentage", "labelColor", "fieldClass", "error"], outputs: ["fieldValueChange"] }, { kind: "component", type: i5.SelectorInputComponent, selector: "lib-selector-input", inputs: ["fieldName", "fieldValue", "helpText", "placeholder", "parentage", "valueList", "labelColor", "fieldClass", "error"], outputs: ["fieldValueChange"] }] }); }
150
150
  }
151
151
  export { ProtocolAddressPortInputComponent };
152
152
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ProtocolAddressPortInputComponent, decorators: [{
@@ -4,13 +4,14 @@ import { debounce, defer } from "lodash";
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/common";
6
6
  import * as i2 from "@angular/forms";
7
+ import * as i3 from "@angular/material/tooltip";
7
8
  class SelectorInputComponent {
8
9
  constructor() {
9
10
  this._fieldName = 'Field Label';
10
11
  this._idName = 'fieldname';
11
12
  this._valueList = [];
12
13
  this.listIsObject = false;
13
- this.fieldValue = '';
14
+ this.hideSelect = false;
14
15
  this.placeholder = '';
15
16
  this.parentage = [];
16
17
  this.labelColor = '#000000';
@@ -24,6 +25,12 @@ class SelectorInputComponent {
24
25
  this._fieldName = name;
25
26
  this._idName = name.replace(/\s/g, '').toLowerCase();
26
27
  }
28
+ set fieldValue(val) {
29
+ this._fieldValue = val;
30
+ }
31
+ get fieldValue() {
32
+ return this._fieldValue;
33
+ }
27
34
  set valueList(list) {
28
35
  this.listIsObject = list?.length > 0 && typeof list[0] !== 'string';
29
36
  this._valueList = list;
@@ -34,10 +41,7 @@ class SelectorInputComponent {
34
41
  }
35
42
  });
36
43
  valToSet = valToSet || this.fieldValue;
37
- this.fieldValue = undefined;
38
- defer(() => {
39
- this.fieldValue = valToSet;
40
- });
44
+ this.reInitSelect();
41
45
  }
42
46
  ;
43
47
  setIsValid(isValid) {
@@ -45,55 +49,106 @@ class SelectorInputComponent {
45
49
  }
46
50
  selected() {
47
51
  debounce(() => {
52
+ if (this.fieldValue === 'undefined') {
53
+ this.fieldValue = undefined;
54
+ }
48
55
  this.fieldValueChange.emit(this.fieldValue);
49
56
  this.valueChange.next(this.fieldValue);
50
57
  }, 500)();
51
58
  }
59
+ reInitSelect() {
60
+ this.hideSelect = true;
61
+ defer(() => {
62
+ this.hideSelect = false;
63
+ });
64
+ }
52
65
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SelectorInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
53
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SelectorInputComponent, selector: "lib-selector-input", inputs: { fieldName: "fieldName", fieldValue: "fieldValue", placeholder: "placeholder", parentage: "parentage", valueList: "valueList", labelColor: "labelColor", fieldClass: "fieldClass", error: "error" }, outputs: { fieldValueChange: "fieldValueChange" }, ngImport: i0, template: `
66
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SelectorInputComponent, selector: "lib-selector-input", inputs: { fieldName: "fieldName", fieldValue: "fieldValue", helpText: "helpText", placeholder: "placeholder", parentage: "parentage", valueList: "valueList", labelColor: "labelColor", fieldClass: "fieldClass", error: "error" }, outputs: { fieldValueChange: "fieldValueChange" }, ngImport: i0, template: `
54
67
  <div [ngClass]="fieldClass + (!_isValid ? 'invalid' : '')" class="selector-input-container">
55
- <label [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
56
- <select id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
57
- class="jsonEntry"
58
- [ngClass]="{'error': error}"
59
- [(ngModel)]="fieldValue" (change)="selected()">
60
- <option value="" *ngIf="placeholder">{{placeholder}}</option>
61
- <ng-container *ngIf="!listIsObject">
62
- <option *ngFor="let name of _valueList" [value]="name">{{name}}</option>
63
- </ng-container>
64
- <ng-container *ngIf="listIsObject">
65
- <option *ngFor="let data of _valueList" [value]="data.value">{{data.name}}</option>
66
- </ng-container>
68
+ <div class="label-container">
69
+ <label [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
70
+ <div
71
+ *ngIf="helpText"
72
+ class="form-field-info infoicon"
73
+ matTooltip="{{helpText}}"
74
+ matTooltipPosition="above"
75
+ matTooltipClass="wide-tooltip"
76
+ ></div>
77
+ </div>
78
+ <select
79
+ *ngIf="!hideSelect"
80
+ id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
81
+ class="jsonEntry"
82
+ [ngClass]="{'error': error}"
83
+ [(ngModel)]="fieldValue"
84
+ (change)="selected()"
85
+ >
86
+ <option [value]="undefined" *ngIf="placeholder">{{placeholder}}</option>
87
+ <ng-container *ngIf="!listIsObject">
88
+ <option *ngFor="let name of _valueList" [value]="name">{{name}}</option>
89
+ </ng-container>
90
+ <ng-container *ngIf="listIsObject">
91
+ <option *ngFor="let data of _valueList" [value]="data.value">{{data.name}}</option>
92
+ </ng-container>
93
+ </select>
94
+ <select
95
+ *ngIf="hideSelect"
96
+ class="placeholder-select"
97
+ [ngClass]="{'error': error}"
98
+ [(ngModel)]="fieldValue"
99
+ >
67
100
  </select>
68
101
  <div *ngIf="error" class="error">{{error}}</div>
69
102
  </div>
70
- `, isInline: true, styles: [".selector-input-container{margin:var(--marginSmall) 0}.selector-input-container label{margin-bottom:0;margin-top:0}.selector-input-container input.error{border-color:red}.selector-input-container div.error{color:red}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
103
+ `, isInline: true, styles: [".selector-input-container{margin:var(--marginSmall) 0}.selector-input-container label{margin-bottom:0;margin-top:0;width:-moz-fit-content;width:fit-content}.selector-input-container input.error{border-color:red}.selector-input-container div.error{color:red}.label-container{display:flex;gap:5px;margin-bottom:5px;margin-top:10px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] }); }
71
104
  }
72
105
  export { SelectorInputComponent };
73
106
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SelectorInputComponent, decorators: [{
74
107
  type: Component,
75
108
  args: [{ selector: 'lib-selector-input', template: `
76
109
  <div [ngClass]="fieldClass + (!_isValid ? 'invalid' : '')" class="selector-input-container">
77
- <label [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
78
- <select id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
79
- class="jsonEntry"
80
- [ngClass]="{'error': error}"
81
- [(ngModel)]="fieldValue" (change)="selected()">
82
- <option value="" *ngIf="placeholder">{{placeholder}}</option>
83
- <ng-container *ngIf="!listIsObject">
84
- <option *ngFor="let name of _valueList" [value]="name">{{name}}</option>
85
- </ng-container>
86
- <ng-container *ngIf="listIsObject">
87
- <option *ngFor="let data of _valueList" [value]="data.value">{{data.name}}</option>
88
- </ng-container>
110
+ <div class="label-container">
111
+ <label [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
112
+ <div
113
+ *ngIf="helpText"
114
+ class="form-field-info infoicon"
115
+ matTooltip="{{helpText}}"
116
+ matTooltipPosition="above"
117
+ matTooltipClass="wide-tooltip"
118
+ ></div>
119
+ </div>
120
+ <select
121
+ *ngIf="!hideSelect"
122
+ id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
123
+ class="jsonEntry"
124
+ [ngClass]="{'error': error}"
125
+ [(ngModel)]="fieldValue"
126
+ (change)="selected()"
127
+ >
128
+ <option [value]="undefined" *ngIf="placeholder">{{placeholder}}</option>
129
+ <ng-container *ngIf="!listIsObject">
130
+ <option *ngFor="let name of _valueList" [value]="name">{{name}}</option>
131
+ </ng-container>
132
+ <ng-container *ngIf="listIsObject">
133
+ <option *ngFor="let data of _valueList" [value]="data.value">{{data.name}}</option>
134
+ </ng-container>
135
+ </select>
136
+ <select
137
+ *ngIf="hideSelect"
138
+ class="placeholder-select"
139
+ [ngClass]="{'error': error}"
140
+ [(ngModel)]="fieldValue"
141
+ >
89
142
  </select>
90
143
  <div *ngIf="error" class="error">{{error}}</div>
91
144
  </div>
92
- `, styles: [".selector-input-container{margin:var(--marginSmall) 0}.selector-input-container label{margin-bottom:0;margin-top:0}.selector-input-container input.error{border-color:red}.selector-input-container div.error{color:red}\n"] }]
145
+ `, styles: [".selector-input-container{margin:var(--marginSmall) 0}.selector-input-container label{margin-bottom:0;margin-top:0;width:-moz-fit-content;width:fit-content}.selector-input-container input.error{border-color:red}.selector-input-container div.error{color:red}.label-container{display:flex;gap:5px;margin-bottom:5px;margin-top:10px}\n"] }]
93
146
  }], propDecorators: { fieldName: [{
94
147
  type: Input
95
148
  }], fieldValue: [{
96
149
  type: Input
150
+ }], helpText: [{
151
+ type: Input
97
152
  }], placeholder: [{
98
153
  type: Input
99
154
  }], parentage: [{
@@ -109,4 +164,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
109
164
  }], fieldValueChange: [{
110
165
  type: Output
111
166
  }] } });
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0b3ItaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL2R5bmFtaWMtd2lkZ2V0cy9zZWxlY3Rvci9zZWxlY3Rvci1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxRQUFRLEVBQUUsS0FBSyxFQUFDLE1BQU0sUUFBUSxDQUFDOzs7O0FBRXZDLE1Bc0JhLHNCQUFzQjtJQXRCbkM7UUF1QkUsZUFBVSxHQUFHLGFBQWEsQ0FBQztRQUMzQixZQUFPLEdBQUcsV0FBVyxDQUFDO1FBQ3RCLGVBQVUsR0FBVSxFQUFFLENBQUM7UUFDdkIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFLWixlQUFVLEdBQU8sRUFBRSxDQUFDO1FBQ3BCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGNBQVMsR0FBYSxFQUFFLENBQUM7UUFpQnpCLGVBQVUsR0FBRyxTQUFTLENBQUM7UUFDdkIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1YscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN4RCxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFFckMsYUFBUSxHQUFHLElBQUksQ0FBQztLQVdqQjtJQXhDQyxJQUFhLFNBQVMsQ0FBQyxJQUFZO1FBQ2pDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkQsQ0FBQztJQUlELElBQWEsU0FBUyxDQUFDLElBQVc7UUFDaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLEVBQUUsTUFBTSxHQUFHLENBQUMsSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLENBQUM7UUFDcEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxRQUFRLENBQUM7UUFDYixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2xCLElBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDZixRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQzthQUN2QjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsUUFBUSxHQUFHLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzVCLEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDVCxJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFBQSxDQUFDO0lBU0ssVUFBVSxDQUFFLE9BQU87UUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDMUIsQ0FBQztJQUVELFFBQVE7UUFDTixRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ1osQ0FBQzsrR0E1Q1Usc0JBQXNCO21HQUF0QixzQkFBc0IsMlRBcEJ2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQlQ7O1NBR1Usc0JBQXNCOzRGQUF0QixzQkFBc0I7a0JBdEJsQyxTQUFTOytCQUNFLG9CQUFvQixZQUNwQjs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQlQ7OEJBUVksU0FBUztzQkFBckIsS0FBSztnQkFJRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDTyxTQUFTO3NCQUFyQixLQUFLO2dCQWdCRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNJLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtkZWJvdW5jZSwgZGVmZXJ9IGZyb20gXCJsb2Rhc2hcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXNlbGVjdG9yLWlucHV0JyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IFtuZ0NsYXNzXT1cImZpZWxkQ2xhc3MgKyAoIV9pc1ZhbGlkID8gJ2ludmFsaWQnIDogJycpXCIgY2xhc3M9XCJzZWxlY3Rvci1pbnB1dC1jb250YWluZXJcIj5cbiAgICAgIDxsYWJlbCBbbmdTdHlsZV09XCJ7J2NvbG9yJzogbGFiZWxDb2xvcn1cIj57e19maWVsZE5hbWV9fTwvbGFiZWw+XG4gICAgICA8c2VsZWN0IGlkPVwic2NoZW1hX3t7cGFyZW50YWdlP3BhcmVudGFnZSsnXyc6Jyd9fXt7X2lkTmFtZX19XCJcbiAgICAgICAgICAgICBjbGFzcz1cImpzb25FbnRyeVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZXJyb3InOiBlcnJvcn1cIlxuICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGRWYWx1ZVwiIChjaGFuZ2UpPVwic2VsZWN0ZWQoKVwiPlxuICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIiAqbmdJZj1cInBsYWNlaG9sZGVyXCI+e3twbGFjZWhvbGRlcn19PC9vcHRpb24+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbGlzdElzT2JqZWN0XCI+XG4gICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgbmFtZSBvZiBfdmFsdWVMaXN0XCIgW3ZhbHVlXT1cIm5hbWVcIj57e25hbWV9fTwvb3B0aW9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxpc3RJc09iamVjdFwiPlxuICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGRhdGEgb2YgX3ZhbHVlTGlzdFwiIFt2YWx1ZV09XCJkYXRhLnZhbHVlXCI+e3tkYXRhLm5hbWV9fTwvb3B0aW9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvc2VsZWN0PlxuICAgICAgPGRpdiAqbmdJZj1cImVycm9yXCIgY2xhc3M9XCJlcnJvclwiPnt7ZXJyb3J9fTwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnc2VsZWN0b3ItaW5wdXQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RvcklucHV0Q29tcG9uZW50IHtcbiAgX2ZpZWxkTmFtZSA9ICdGaWVsZCBMYWJlbCc7XG4gIF9pZE5hbWUgPSAnZmllbGRuYW1lJztcbiAgX3ZhbHVlTGlzdDogYW55W10gPSBbXTtcbiAgbGlzdElzT2JqZWN0ID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNldCBmaWVsZE5hbWUobmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fZmllbGROYW1lID0gbmFtZTtcbiAgICB0aGlzLl9pZE5hbWUgPSBuYW1lLnJlcGxhY2UoL1xccy9nLCAnJykudG9Mb3dlckNhc2UoKTtcbiAgfVxuICBASW5wdXQoKSBmaWVsZFZhbHVlOmFueSA9ICcnO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xuICBASW5wdXQoKSBwYXJlbnRhZ2U6IHN0cmluZ1tdID0gW107XG4gIEBJbnB1dCgpIHNldCB2YWx1ZUxpc3QobGlzdDogYW55W10pIHtcbiAgICB0aGlzLmxpc3RJc09iamVjdCA9IGxpc3Q/Lmxlbmd0aCA+IDAgJiYgdHlwZW9mIGxpc3RbMF0gIT09ICdzdHJpbmcnO1xuICAgIHRoaXMuX3ZhbHVlTGlzdCA9IGxpc3Q7XG4gICAgbGV0IHZhbFRvU2V0O1xuICAgIGxpc3QuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGlmKGl0ZW0uZGVmYXVsdCkge1xuICAgICAgICB2YWxUb1NldCA9IGl0ZW0udmFsdWU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdmFsVG9TZXQgPSB2YWxUb1NldCB8fCB0aGlzLmZpZWxkVmFsdWU7XG4gICAgdGhpcy5maWVsZFZhbHVlID0gdW5kZWZpbmVkO1xuICAgIGRlZmVyKCgpID0+IHtcbiAgICAgIHRoaXMuZmllbGRWYWx1ZSA9IHZhbFRvU2V0O1xuICAgIH0pO1xuICB9O1xuXG4gIEBJbnB1dCgpIGxhYmVsQ29sb3IgPSAnIzAwMDAwMCc7XG4gIEBJbnB1dCgpIGZpZWxkQ2xhc3MgPSAnJztcbiAgQElucHV0KCkgZXJyb3IgPSAnJztcbiAgQE91dHB1dCgpIGZpZWxkVmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgdmFsdWVDaGFuZ2UgPSBuZXcgU3ViamVjdDxzdHJpbmc+ICgpO1xuXG4gIF9pc1ZhbGlkID0gdHJ1ZTtcbiAgcHVibGljIHNldElzVmFsaWQgKGlzVmFsaWQpIHtcbiAgICB0aGlzLl9pc1ZhbGlkID0gaXNWYWxpZDtcbiAgfVxuXG4gIHNlbGVjdGVkKCkge1xuICAgIGRlYm91bmNlKCgpID0+IHtcbiAgICAgIHRoaXMuZmllbGRWYWx1ZUNoYW5nZS5lbWl0KHRoaXMuZmllbGRWYWx1ZSk7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLm5leHQodGhpcy5maWVsZFZhbHVlKTtcbiAgICB9LCA1MDApKCk7XG4gIH1cbn1cbiJdfQ==
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0b3ItaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL2R5bmFtaWMtd2lkZ2V0cy9zZWxlY3Rvci9zZWxlY3Rvci1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxRQUFRLEVBQUUsS0FBSyxFQUFDLE1BQU0sUUFBUSxDQUFDOzs7OztBQUV2QyxNQTBDYSxzQkFBc0I7SUExQ25DO1FBMkNFLGVBQVUsR0FBRyxhQUFhLENBQUM7UUFDM0IsWUFBTyxHQUFHLFdBQVcsQ0FBQztRQUN0QixlQUFVLEdBQVUsRUFBRSxDQUFDO1FBQ3ZCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFlVixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixjQUFTLEdBQWEsRUFBRSxDQUFDO1FBY3pCLGVBQVUsR0FBRyxTQUFTLENBQUM7UUFDdkIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1YscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN4RCxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFFckMsYUFBUSxHQUFHLElBQUksQ0FBQztLQXFCakI7SUF2REMsSUFBYSxTQUFTLENBQUMsSUFBWTtRQUNqQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3ZELENBQUM7SUFFRCxJQUFhLFVBQVUsQ0FBQyxHQUFXO1FBQ2pDLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO0lBQ3pCLENBQUM7SUFDRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUtELElBQWEsU0FBUyxDQUFDLElBQVc7UUFDaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLEVBQUUsTUFBTSxHQUFHLENBQUMsSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLENBQUM7UUFDcEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxRQUFRLENBQUM7UUFDYixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2xCLElBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDZixRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQzthQUN2QjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsUUFBUSxHQUFHLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBQUEsQ0FBQztJQVNLLFVBQVUsQ0FBRSxPQUFPO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0lBQzFCLENBQUM7SUFFRCxRQUFRO1FBQ04sUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxXQUFXLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO2FBQzdCO1lBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ1QsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQTdEVSxzQkFBc0I7bUdBQXRCLHNCQUFzQixpVkF4Q3ZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNUOztTQUdVLHNCQUFzQjs0RkFBdEIsc0JBQXNCO2tCQTFDbEMsU0FBUzsrQkFDRSxvQkFBb0IsWUFDcEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQ1Q7OEJBVVksU0FBUztzQkFBckIsS0FBSztnQkFLTyxVQUFVO3NCQUF0QixLQUFLO2dCQU9HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNPLFNBQVM7c0JBQXJCLEtBQUs7Z0JBYUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U3ViamVjdH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7ZGVib3VuY2UsIGRlZmVyfSBmcm9tIFwibG9kYXNoXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1zZWxlY3Rvci1pbnB1dCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBbbmdDbGFzc109XCJmaWVsZENsYXNzICsgKCFfaXNWYWxpZCA/ICdpbnZhbGlkJyA6ICcnKVwiIGNsYXNzPVwic2VsZWN0b3ItaW5wdXQtY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtY29udGFpbmVyXCI+XG4gICAgICAgIDxsYWJlbCBbbmdTdHlsZV09XCJ7J2NvbG9yJzogbGFiZWxDb2xvcn1cIj57e19maWVsZE5hbWV9fTwvbGFiZWw+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwiaGVscFRleHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWZpZWxkLWluZm8gaW5mb2ljb25cIlxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cInt7aGVscFRleHR9fVwiXG4gICAgICAgICAgICBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiXG4gICAgICAgICAgICBtYXRUb29sdGlwQ2xhc3M9XCJ3aWRlLXRvb2x0aXBcIlxuICAgICAgICA+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxzZWxlY3RcbiAgICAgICAgICAqbmdJZj1cIiFoaWRlU2VsZWN0XCJcbiAgICAgICAgICBpZD1cInNjaGVtYV97e3BhcmVudGFnZT9wYXJlbnRhZ2UrJ18nOicnfX17e19pZE5hbWV9fVwiXG4gICAgICAgICAgY2xhc3M9XCJqc29uRW50cnlcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZXJyb3InOiBlcnJvcn1cIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGRWYWx1ZVwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJzZWxlY3RlZCgpXCJcbiAgICAgID5cbiAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJ1bmRlZmluZWRcIiAqbmdJZj1cInBsYWNlaG9sZGVyXCI+e3twbGFjZWhvbGRlcn19PC9vcHRpb24+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsaXN0SXNPYmplY3RcIj5cbiAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG5hbWUgb2YgX3ZhbHVlTGlzdFwiIFt2YWx1ZV09XCJuYW1lXCI+e3tuYW1lfX08L29wdGlvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGlzdElzT2JqZWN0XCI+XG4gICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBkYXRhIG9mIF92YWx1ZUxpc3RcIiBbdmFsdWVdPVwiZGF0YS52YWx1ZVwiPnt7ZGF0YS5uYW1lfX08L29wdGlvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvc2VsZWN0PlxuICAgICAgPHNlbGVjdFxuICAgICAgICAgICpuZ0lmPVwiaGlkZVNlbGVjdFwiXG4gICAgICAgICAgY2xhc3M9XCJwbGFjZWhvbGRlci1zZWxlY3RcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZXJyb3InOiBlcnJvcn1cIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGRWYWx1ZVwiXG4gICAgICA+XG4gICAgICA8L3NlbGVjdD5cbiAgICAgIDxkaXYgKm5nSWY9XCJlcnJvclwiIGNsYXNzPVwiZXJyb3JcIj57e2Vycm9yfX08L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJ3NlbGVjdG9yLWlucHV0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0b3JJbnB1dENvbXBvbmVudCB7XG4gIF9maWVsZE5hbWUgPSAnRmllbGQgTGFiZWwnO1xuICBfaWROYW1lID0gJ2ZpZWxkbmFtZSc7XG4gIF92YWx1ZUxpc3Q6IGFueVtdID0gW107XG4gIGxpc3RJc09iamVjdCA9IGZhbHNlO1xuICBoaWRlU2VsZWN0ID0gZmFsc2U7XG5cbiAgQElucHV0KCkgc2V0IGZpZWxkTmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9maWVsZE5hbWUgPSBuYW1lO1xuICAgIHRoaXMuX2lkTmFtZSA9IG5hbWUucmVwbGFjZSgvXFxzL2csICcnKS50b0xvd2VyQ2FzZSgpO1xuICB9XG4gIF9maWVsZFZhbHVlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNldCBmaWVsZFZhbHVlKHZhbDogc3RyaW5nKSB7XG4gICAgdGhpcy5fZmllbGRWYWx1ZSA9IHZhbDtcbiAgfVxuICBnZXQgZmllbGRWYWx1ZSgpOnN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkVmFsdWU7XG4gIH1cblxuICBASW5wdXQoKSBoZWxwVGV4dDtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcbiAgQElucHV0KCkgcGFyZW50YWdlOiBzdHJpbmdbXSA9IFtdO1xuICBASW5wdXQoKSBzZXQgdmFsdWVMaXN0KGxpc3Q6IGFueVtdKSB7XG4gICAgdGhpcy5saXN0SXNPYmplY3QgPSBsaXN0Py5sZW5ndGggPiAwICYmIHR5cGVvZiBsaXN0WzBdICE9PSAnc3RyaW5nJztcbiAgICB0aGlzLl92YWx1ZUxpc3QgPSBsaXN0O1xuICAgIGxldCB2YWxUb1NldDtcbiAgICBsaXN0LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBpZihpdGVtLmRlZmF1bHQpIHtcbiAgICAgICAgdmFsVG9TZXQgPSBpdGVtLnZhbHVlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHZhbFRvU2V0ID0gdmFsVG9TZXQgfHwgdGhpcy5maWVsZFZhbHVlO1xuICAgIHRoaXMucmVJbml0U2VsZWN0KCk7XG4gIH07XG5cbiAgQElucHV0KCkgbGFiZWxDb2xvciA9ICcjMDAwMDAwJztcbiAgQElucHV0KCkgZmllbGRDbGFzcyA9ICcnO1xuICBASW5wdXQoKSBlcnJvciA9ICcnO1xuICBAT3V0cHV0KCkgZmllbGRWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICB2YWx1ZUNoYW5nZSA9IG5ldyBTdWJqZWN0PHN0cmluZz4gKCk7XG5cbiAgX2lzVmFsaWQgPSB0cnVlO1xuICBwdWJsaWMgc2V0SXNWYWxpZCAoaXNWYWxpZCkge1xuICAgIHRoaXMuX2lzVmFsaWQgPSBpc1ZhbGlkO1xuICB9XG5cbiAgc2VsZWN0ZWQoKSB7XG4gICAgZGVib3VuY2UoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZmllbGRWYWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhpcy5maWVsZFZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgdGhpcy5maWVsZFZhbHVlQ2hhbmdlLmVtaXQodGhpcy5maWVsZFZhbHVlKTtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UubmV4dCh0aGlzLmZpZWxkVmFsdWUpO1xuICAgIH0sIDUwMCkoKTtcbiAgfVxuXG4gIHJlSW5pdFNlbGVjdCgpIHtcbiAgICB0aGlzLmhpZGVTZWxlY3QgPSB0cnVlO1xuICAgIGRlZmVyKCgpID0+IHtcbiAgICAgIHRoaXMuaGlkZVNlbGVjdCA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -4,6 +4,7 @@ import { debounce } from "lodash";
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/common";
6
6
  import * as i2 from "@angular/forms";
7
+ import * as i3 from "@angular/material/tooltip";
7
8
  class StringInputComponent {
8
9
  constructor() {
9
10
  this._fieldName = 'Field Label';
@@ -32,32 +33,52 @@ class StringInputComponent {
32
33
  }, 500)();
33
34
  }
34
35
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: StringInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
35
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: StringInputComponent, selector: "lib-string-input", inputs: { fieldName: "fieldName", fieldValue: "fieldValue", placeholder: "placeholder", parentage: "parentage", labelColor: "labelColor", fieldClass: "fieldClass", error: "error" }, outputs: { fieldValueChange: "fieldValueChange" }, ngImport: i0, template: `
36
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: StringInputComponent, selector: "lib-string-input", inputs: { fieldName: "fieldName", helpText: "helpText", fieldValue: "fieldValue", placeholder: "placeholder", parentage: "parentage", labelColor: "labelColor", fieldClass: "fieldClass", error: "error" }, outputs: { fieldValueChange: "fieldValueChange" }, ngImport: i0, template: `
36
37
  <div [ngClass]="fieldClass + (!_isValid ? 'invalid' : '')" class="string-input-container">
37
- <label for="schema_{{parentage?parentage+'_':''}}{{_idName}}" [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
38
+ <div class="label-container">
39
+ <label for="schema_{{parentage?parentage+'_':''}}{{_idName}}" [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
40
+ <div
41
+ *ngIf="helpText"
42
+ class="form-field-info infoicon"
43
+ matTooltip="{{helpText}}"
44
+ matTooltipPosition="above"
45
+ matTooltipClass="wide-tooltip"
46
+ ></div>
47
+ </div>
38
48
  <input id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
39
49
  type="text" class="jsonEntry"
40
50
  [ngClass]="{'error': error}"
41
51
  [placeholder]="placeholder" [(ngModel)]="fieldValue" (paste)="onKeyup()" (keyup)="onKeyup()"/>
42
52
  <div *ngIf="error" class="error">{{error}}</div>
43
53
  </div>
44
- `, isInline: true, styles: [".string-input-container{margin:var(--marginSmall) 0}.string-input-container label{margin-bottom:0;margin-top:0}.string-input-container input.error{border-color:red}.string-input-container div.error{color:red}\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.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
54
+ `, isInline: true, styles: [".string-input-container{margin:var(--marginSmall) 0}.string-input-container label{margin-bottom:0;margin-top:0;width:-moz-fit-content;width:fit-content}.string-input-container input.error{border-color:red}.string-input-container div.error{color:red}.label-container{display:flex;gap:5px;margin-bottom:5px;margin-top:10px}\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.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] }); }
45
55
  }
46
56
  export { StringInputComponent };
47
57
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: StringInputComponent, decorators: [{
48
58
  type: Component,
49
59
  args: [{ selector: 'lib-string-input', template: `
50
60
  <div [ngClass]="fieldClass + (!_isValid ? 'invalid' : '')" class="string-input-container">
51
- <label for="schema_{{parentage?parentage+'_':''}}{{_idName}}" [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
61
+ <div class="label-container">
62
+ <label for="schema_{{parentage?parentage+'_':''}}{{_idName}}" [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
63
+ <div
64
+ *ngIf="helpText"
65
+ class="form-field-info infoicon"
66
+ matTooltip="{{helpText}}"
67
+ matTooltipPosition="above"
68
+ matTooltipClass="wide-tooltip"
69
+ ></div>
70
+ </div>
52
71
  <input id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
53
72
  type="text" class="jsonEntry"
54
73
  [ngClass]="{'error': error}"
55
74
  [placeholder]="placeholder" [(ngModel)]="fieldValue" (paste)="onKeyup()" (keyup)="onKeyup()"/>
56
75
  <div *ngIf="error" class="error">{{error}}</div>
57
76
  </div>
58
- `, styles: [".string-input-container{margin:var(--marginSmall) 0}.string-input-container label{margin-bottom:0;margin-top:0}.string-input-container input.error{border-color:red}.string-input-container div.error{color:red}\n"] }]
77
+ `, styles: [".string-input-container{margin:var(--marginSmall) 0}.string-input-container label{margin-bottom:0;margin-top:0;width:-moz-fit-content;width:fit-content}.string-input-container input.error{border-color:red}.string-input-container div.error{color:red}.label-container{display:flex;gap:5px;margin-bottom:5px;margin-top:10px}\n"] }]
59
78
  }], propDecorators: { fieldName: [{
60
79
  type: Input
80
+ }], helpText: [{
81
+ type: Input
61
82
  }], fieldValue: [{
62
83
  type: Input
63
84
  }], placeholder: [{
@@ -73,4 +94,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
73
94
  }], fieldValueChange: [{
74
95
  type: Output
75
96
  }] } });
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9keW5hbWljLXdpZGdldHMvc3RyaW5nL3N0cmluZy1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxRQUFRLENBQUM7Ozs7QUFFaEMsTUFjYSxvQkFBb0I7SUFkakM7UUFlSSxlQUFVLEdBQUcsYUFBYSxDQUFDO1FBQzNCLFlBQU8sR0FBRyxXQUFXLENBQUM7UUFLYixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGNBQVMsR0FBYSxFQUFFLENBQUM7UUFDekIsZUFBVSxHQUFHLFNBQVMsQ0FBQztRQUN2QixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDVixxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3hELGdCQUFXLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUVyQyxhQUFRLEdBQUcsSUFBSSxDQUFDO0tBV25CO0lBeEJHLElBQWEsU0FBUyxDQUFDLElBQVk7UUFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN6RCxDQUFDO0lBV00sVUFBVSxDQUFFLE9BQU87UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDNUIsQ0FBQztJQUVELE9BQU87UUFDSCxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ2QsQ0FBQzsrR0ExQlEsb0JBQW9CO21HQUFwQixvQkFBb0IsaVNBWnJCOzs7Ozs7Ozs7R0FTVDs7U0FHVSxvQkFBb0I7NEZBQXBCLG9CQUFvQjtrQkFkaEMsU0FBUzsrQkFDRSxrQkFBa0IsWUFDbEI7Ozs7Ozs7OztHQVNUOzhCQU1jLFNBQVM7c0JBQXJCLEtBQUs7Z0JBSUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtkZWJvdW5jZX0gZnJvbSBcImxvZGFzaFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItc3RyaW5nLWlucHV0JyxcbiAgdGVtcGxhdGU6IGBcbiAgICAgIDxkaXYgW25nQ2xhc3NdPVwiZmllbGRDbGFzcyArICghX2lzVmFsaWQgPyAnaW52YWxpZCcgOiAnJylcIiBjbGFzcz1cInN0cmluZy1pbnB1dC1jb250YWluZXJcIj5cbiAgICAgICAgICA8bGFiZWwgZm9yPVwic2NoZW1hX3t7cGFyZW50YWdlP3BhcmVudGFnZSsnXyc6Jyd9fXt7X2lkTmFtZX19XCIgIFtuZ1N0eWxlXT1cInsnY29sb3InOiBsYWJlbENvbG9yfVwiPnt7X2ZpZWxkTmFtZX19PC9sYWJlbD5cbiAgICAgICAgICA8aW5wdXQgaWQ9XCJzY2hlbWFfe3twYXJlbnRhZ2U/cGFyZW50YWdlKydfJzonJ319e3tfaWROYW1lfX1cIlxuICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiIGNsYXNzPVwianNvbkVudHJ5XCJcbiAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydlcnJvcic6IGVycm9yfVwiXG4gICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFsobmdNb2RlbCldPVwiZmllbGRWYWx1ZVwiIChwYXN0ZSk9XCJvbktleXVwKClcIiAoa2V5dXApPVwib25LZXl1cCgpXCIvPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJlcnJvclwiIGNsYXNzPVwiZXJyb3JcIj57e2Vycm9yfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICBgLFxuICAgIHN0eWxlVXJsczogWydzdHJpbmctaW5wdXQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTdHJpbmdJbnB1dENvbXBvbmVudCB7XG4gICAgX2ZpZWxkTmFtZSA9ICdGaWVsZCBMYWJlbCc7XG4gICAgX2lkTmFtZSA9ICdmaWVsZG5hbWUnO1xuICAgIEBJbnB1dCgpIHNldCBmaWVsZE5hbWUobmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2ZpZWxkTmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuX2lkTmFtZSA9IG5hbWUucmVwbGFjZSgvXFxzL2csICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbiAgICBASW5wdXQoKSBmaWVsZFZhbHVlID0gJyc7XG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcbiAgICBASW5wdXQoKSBwYXJlbnRhZ2U6IHN0cmluZ1tdID0gW107XG4gICAgQElucHV0KCkgbGFiZWxDb2xvciA9ICcjMDAwMDAwJztcbiAgICBASW5wdXQoKSBmaWVsZENsYXNzID0gJyc7XG4gICAgQElucHV0KCkgZXJyb3IgPSAnJztcbiAgICBAT3V0cHV0KCkgZmllbGRWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICAgIHZhbHVlQ2hhbmdlID0gbmV3IFN1YmplY3Q8c3RyaW5nPiAoKTtcblxuICAgIF9pc1ZhbGlkID0gdHJ1ZTtcbiAgICBwdWJsaWMgc2V0SXNWYWxpZCAoaXNWYWxpZCkge1xuICAgICAgICB0aGlzLl9pc1ZhbGlkID0gaXNWYWxpZDtcbiAgICB9XG5cbiAgICBvbktleXVwKCkge1xuICAgICAgICBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkVmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmZpZWxkVmFsdWUpO1xuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5uZXh0KHRoaXMuZmllbGRWYWx1ZSk7XG4gICAgICAgIH0sIDUwMCkoKTtcbiAgICB9XG59XG4iXX0=
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9keW5hbWljLXdpZGdldHMvc3RyaW5nL3N0cmluZy1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxRQUFRLENBQUM7Ozs7O0FBRWhDLE1BdUJhLG9CQUFvQjtJQXZCakM7UUF3QkksZUFBVSxHQUFHLGFBQWEsQ0FBQztRQUMzQixZQUFPLEdBQUcsV0FBVyxDQUFDO1FBTWIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixjQUFTLEdBQWEsRUFBRSxDQUFDO1FBQ3pCLGVBQVUsR0FBRyxTQUFTLENBQUM7UUFDdkIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1YscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN4RCxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFFckMsYUFBUSxHQUFHLElBQUksQ0FBQztLQVduQjtJQXpCRyxJQUFhLFNBQVMsQ0FBQyxJQUFZO1FBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDekQsQ0FBQztJQVlNLFVBQVUsQ0FBRSxPQUFPO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0lBQzVCLENBQUM7SUFFRCxPQUFPO1FBQ0gsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNWLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUNkLENBQUM7K0dBM0JRLG9CQUFvQjttR0FBcEIsb0JBQW9CLHVUQXJCckI7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCVDs7U0FHVSxvQkFBb0I7NEZBQXBCLG9CQUFvQjtrQkF2QmhDLFNBQVM7K0JBQ0Usa0JBQWtCLFlBQ2xCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQlQ7OEJBTWMsU0FBUztzQkFBckIsS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksZ0JBQWdCO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U3ViamVjdH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7ZGVib3VuY2V9IGZyb20gXCJsb2Rhc2hcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXN0cmluZy1pbnB1dCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgICA8ZGl2IFtuZ0NsYXNzXT1cImZpZWxkQ2xhc3MgKyAoIV9pc1ZhbGlkID8gJ2ludmFsaWQnIDogJycpXCIgY2xhc3M9XCJzdHJpbmctaW5wdXQtY29udGFpbmVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwic2NoZW1hX3t7cGFyZW50YWdlP3BhcmVudGFnZSsnXyc6Jyd9fXt7X2lkTmFtZX19XCIgIFtuZ1N0eWxlXT1cInsnY29sb3InOiBsYWJlbENvbG9yfVwiPnt7X2ZpZWxkTmFtZX19PC9sYWJlbD5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJoZWxwVGV4dFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtaW5mbyBpbmZvaWNvblwiXG4gICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwie3toZWxwVGV4dH19XCJcbiAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCJcbiAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBDbGFzcz1cIndpZGUtdG9vbHRpcFwiXG4gICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8aW5wdXQgaWQ9XCJzY2hlbWFfe3twYXJlbnRhZ2U/cGFyZW50YWdlKydfJzonJ319e3tfaWROYW1lfX1cIlxuICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiIGNsYXNzPVwianNvbkVudHJ5XCJcbiAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydlcnJvcic6IGVycm9yfVwiXG4gICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFsobmdNb2RlbCldPVwiZmllbGRWYWx1ZVwiIChwYXN0ZSk9XCJvbktleXVwKClcIiAoa2V5dXApPVwib25LZXl1cCgpXCIvPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJlcnJvclwiIGNsYXNzPVwiZXJyb3JcIj57e2Vycm9yfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICBgLFxuICAgIHN0eWxlVXJsczogWydzdHJpbmctaW5wdXQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTdHJpbmdJbnB1dENvbXBvbmVudCB7XG4gICAgX2ZpZWxkTmFtZSA9ICdGaWVsZCBMYWJlbCc7XG4gICAgX2lkTmFtZSA9ICdmaWVsZG5hbWUnO1xuICAgIEBJbnB1dCgpIHNldCBmaWVsZE5hbWUobmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2ZpZWxkTmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuX2lkTmFtZSA9IG5hbWUucmVwbGFjZSgvXFxzL2csICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbiAgICBASW5wdXQoKSBoZWxwVGV4dDtcbiAgICBASW5wdXQoKSBmaWVsZFZhbHVlID0gJyc7XG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcbiAgICBASW5wdXQoKSBwYXJlbnRhZ2U6IHN0cmluZ1tdID0gW107XG4gICAgQElucHV0KCkgbGFiZWxDb2xvciA9ICcjMDAwMDAwJztcbiAgICBASW5wdXQoKSBmaWVsZENsYXNzID0gJyc7XG4gICAgQElucHV0KCkgZXJyb3IgPSAnJztcbiAgICBAT3V0cHV0KCkgZmllbGRWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICAgIHZhbHVlQ2hhbmdlID0gbmV3IFN1YmplY3Q8c3RyaW5nPiAoKTtcblxuICAgIF9pc1ZhbGlkID0gdHJ1ZTtcbiAgICBwdWJsaWMgc2V0SXNWYWxpZCAoaXNWYWxpZCkge1xuICAgICAgICB0aGlzLl9pc1ZhbGlkID0gaXNWYWxpZDtcbiAgICB9XG5cbiAgICBvbktleXVwKCkge1xuICAgICAgICBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkVmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmZpZWxkVmFsdWUpO1xuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5uZXh0KHRoaXMuZmllbGRWYWx1ZSk7XG4gICAgICAgIH0sIDUwMCkoKTtcbiAgICB9XG59XG4iXX0=