@softpak/components 0.0.0-beta.35 → 0.0.0-beta.36

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.
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LWNoYW5nZS1kZXRhaWxzLXZhbHVlLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NvZnRwYWsvY29tcG9uZW50cy9zcHgtY2hhbmdlLWRldGFpbHMvc3B4LWNoYW5nZS1kZXRhaWxzLXZhbHVlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3B4VmFsdWVQYWlyIH0gZnJvbSBcIkBzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWlucHV0c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNweENoYW5nZURldGFpbHNWYWx1ZUkge1xuICAgIGNvbnRhaW5lclR5cGU6IFNweFZhbHVlUGFpcjxzdHJpbmc+O1xuICAgIGxpY2Vuc2VQbGF0ZTogU3B4VmFsdWVQYWlyPHN0cmluZz47XG4gICAgdG9uc1Rlc3RlZDogU3B4VmFsdWVQYWlyPHN0cmluZz47XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LWNoYW5nZS1kZXRhaWxzLXZhbHVlLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NvZnRwYWsvY29tcG9uZW50cy9zcHgtY2hhbmdlLWRldGFpbHMvc3B4LWNoYW5nZS1kZXRhaWxzLXZhbHVlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3B4VmFsdWVQYWlyIH0gZnJvbSBcIkBzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWlucHV0c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNweENoYW5nZURldGFpbHNWYWx1ZUkge1xuICAgIGNhdGVnb3J5PzogU3B4VmFsdWVQYWlyPHN0cmluZz47XG4gICAgY29udGFpbmVyVHlwZTogU3B4VmFsdWVQYWlyPHN0cmluZz47XG4gICAgbGljZW5zZVBsYXRlOiBTcHhWYWx1ZVBhaXI8c3RyaW5nPjtcbiAgICB0b25zVGVzdGVkOiBTcHhWYWx1ZVBhaXI8c3RyaW5nPjtcbn1cbiJdfQ==
@@ -12,12 +12,15 @@ const sectionChangeDetails = 'changeDetails';
12
12
  const ctrlContainerType = 'containerType';
13
13
  const ctrlTonsTested = 'tonsTested';
14
14
  const ctrlLicensePlate = 'licensePlate';
15
+ const ctrlCategory = 'category';
15
16
  export class SpxChangeDetailsComponent {
17
+ get ctrlCategory() { return this.formGroup.get(ctrlCategory); }
16
18
  get ctrlContainerType() { return this.formGroup.get(ctrlContainerType); }
17
19
  get ctrlLicensePlate() { return this.formGroup.get(ctrlLicensePlate); }
18
20
  get ctrlTonsTested() { return this.formGroup.get(ctrlTonsTested); }
19
21
  constructor(formBuilder) {
20
22
  this.formBuilder = formBuilder;
23
+ this.showCategory = false;
21
24
  this.suggestions = {};
22
25
  this.submit = new EventEmitter();
23
26
  this.inputTypeAutocomplete = SpxInputTypeEnum.autocomplete;
@@ -27,6 +30,7 @@ export class SpxChangeDetailsComponent {
27
30
  this.sections = [
28
31
  {
29
32
  key: sectionChangeDetails,
33
+ showTitle: () => false,
30
34
  fields: [
31
35
  {
32
36
  key: ctrlContainerType,
@@ -41,18 +45,30 @@ export class SpxChangeDetailsComponent {
41
45
  key: ctrlTonsTested,
42
46
  type: () => SpxInputTypeEnum.radio,
43
47
  label: () => this.txtTonsTested,
44
- show: () => this.suggestions?.[ctrlTonsTested]
48
+ show: () => this.suggestions?.[ctrlTonsTested] && this.suggestions?.[ctrlTonsTested].length && this.suggestions?.[ctrlTonsTested].length > 0
45
49
  },
46
50
  {
47
51
  key: ctrlLicensePlate,
48
52
  type: () => SpxInputTypeEnum.text,
49
53
  label: () => this.txtLicensePlate,
50
54
  capitalize: () => true,
55
+ },
56
+ {
57
+ key: ctrlCategory,
58
+ type: () => SpxInputTypeEnum.text,
59
+ label: () => this.txtCategory,
60
+ capitalize: () => true,
61
+ show: () => this.showCategory,
62
+ validators: () => this.showCategory ? [spxValidatorRequired()] : [],
51
63
  }
52
64
  ]
53
65
  }
54
66
  ];
55
67
  this.formGroup = this.formBuilder.group({
68
+ [ctrlCategory]: [null, this.showCategory ? [
69
+ spxValidatorRequired()
70
+ ] : []
71
+ ],
56
72
  [ctrlContainerType]: [null, [
57
73
  spxValidatorRequired(),
58
74
  ]],
@@ -64,6 +80,9 @@ export class SpxChangeDetailsComponent {
64
80
  this.ctrlContainerType.setValue(this.value.containerType);
65
81
  this.ctrlLicensePlate.setValue(this.value.licensePlate);
66
82
  this.ctrlTonsTested.setValue(this.value.tonsTested);
83
+ if (this.value.category) {
84
+ this.ctrlCategory.setValue(this.value.category);
85
+ }
67
86
  }
68
87
  ngOnDestroy() {
69
88
  if (this.inputChanges) {
@@ -75,13 +94,14 @@ export class SpxChangeDetailsComponent {
75
94
  }
76
95
  onSubmit() {
77
96
  this.submit.emit({
97
+ category: this.ctrlCategory.value,
78
98
  containerType: this.ctrlContainerType.value,
79
99
  licensePlate: this.ctrlLicensePlate.value,
80
100
  tonsTested: this.ctrlTonsTested.value,
81
101
  });
82
102
  }
83
103
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SpxChangeDetailsComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
84
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: SpxChangeDetailsComponent, isStandalone: true, selector: "spx-change-details", inputs: { value: "value", txtContainerType: "txtContainerType", txtLicensePlate: "txtLicensePlate", txtTonsTested: "txtTonsTested", suggestions: "suggestions" }, outputs: { submit: "submit" }, ngImport: i0, template: "<form [formGroup]=\"formGroup\" class=\"max-w-lg mx-auto flex flex-col gap-3\" (ngSubmit)=\"onSubmit()\">\n <spx-form-view\n [spxFormGroup]=\"formGroup\"\n [spxSections]=\"sections\"\n [spxSuggestions]=\"suggestions\">\n </spx-form-view>\n <spx-button\n [spxFullWidth]=\"true\"\n [spxSeverity]=\"severitySuccess\">\n Save\n </spx-button>\n</form>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: SpxButtonComponent, selector: "spx-button", inputs: ["spxDisabled", "spxClass", "spxClassObject", "spxForm", "spxFullHeight", "spxFullWidth", "spxSeverity", "spxSize", "spxTabIndex", "spxType"], outputs: ["spxClick"] }, { kind: "component", type: SpxFormViewComponent, selector: "spx-form-view", inputs: ["spxFormGroup", "spxSections", "spxSuggestions"] }, { kind: "ngmodule", type: SpxValidationModule }] }); }
104
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: SpxChangeDetailsComponent, isStandalone: true, selector: "spx-change-details", inputs: { value: "value", showCategory: "showCategory", txtCategory: "txtCategory", txtContainerType: "txtContainerType", txtLicensePlate: "txtLicensePlate", txtTonsTested: "txtTonsTested", suggestions: "suggestions" }, outputs: { submit: "submit" }, ngImport: i0, template: "<form [formGroup]=\"formGroup\" class=\"max-w-lg mx-auto flex flex-col gap-3\" (ngSubmit)=\"onSubmit()\">\n <spx-form-view\n [spxFormGroup]=\"formGroup\"\n [spxSections]=\"sections\"\n [spxSuggestions]=\"suggestions\">\n </spx-form-view>\n <spx-button\n [spxFullWidth]=\"true\"\n [spxSeverity]=\"severitySuccess\">\n Save\n </spx-button>\n</form>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: SpxButtonComponent, selector: "spx-button", inputs: ["spxDisabled", "spxClass", "spxClassObject", "spxForm", "spxFullHeight", "spxFullWidth", "spxSeverity", "spxSize", "spxTabIndex", "spxType"], outputs: ["spxClick"] }, { kind: "component", type: SpxFormViewComponent, selector: "spx-form-view", inputs: ["spxFormGroup", "spxSections", "spxSuggestions"] }, { kind: "ngmodule", type: SpxValidationModule }] }); }
85
105
  }
86
106
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SpxChangeDetailsComponent, decorators: [{
87
107
  type: Component,
@@ -96,6 +116,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
96
116
  ], template: "<form [formGroup]=\"formGroup\" class=\"max-w-lg mx-auto flex flex-col gap-3\" (ngSubmit)=\"onSubmit()\">\n <spx-form-view\n [spxFormGroup]=\"formGroup\"\n [spxSections]=\"sections\"\n [spxSuggestions]=\"suggestions\">\n </spx-form-view>\n <spx-button\n [spxFullWidth]=\"true\"\n [spxSeverity]=\"severitySuccess\">\n Save\n </spx-button>\n</form>" }]
97
117
  }], ctorParameters: () => [{ type: i1.FormBuilder }], propDecorators: { value: [{
98
118
  type: Input
119
+ }], showCategory: [{
120
+ type: Input
121
+ }], txtCategory: [{
122
+ type: Input
99
123
  }], txtContainerType: [{
100
124
  type: Input
101
125
  }], txtLicensePlate: [{
@@ -107,4 +131,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
107
131
  }], submit: [{
108
132
  type: Output
109
133
  }] } });
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LWNoYW5nZS1kZXRhaWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NvZnRwYWsvY29tcG9uZW50cy9zcHgtY2hhbmdlLWRldGFpbHMvc3B4LWNoYW5nZS1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NvZnRwYWsvY29tcG9uZW50cy9zcHgtY2hhbmdlLWRldGFpbHMvc3B4LWNoYW5nZS1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUF1QyxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMvRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDckYsT0FBTyxFQUFtQixvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7O0FBR2xFLE1BQU0sb0JBQW9CLEdBQUcsZUFBZSxDQUFDO0FBQzdDLE1BQU0saUJBQWlCLEdBQUcsZUFBZSxDQUFDO0FBQzFDLE1BQU0sY0FBYyxHQUFHLFlBQVksQ0FBQztBQUNwQyxNQUFNLGdCQUFnQixHQUFHLGNBQWMsQ0FBQztBQWdCeEMsTUFBTSxPQUFPLHlCQUF5QjtJQTBDcEMsSUFBSSxpQkFBaUIsS0FBa0IsT0FB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O0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLFdBQXdCO1FBQ3ZDLE9BQVEsV0FBbUIsQ0FBQyxjQUFjLENBQUM7SUFDN0MsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztZQUNmLGFBQWEsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSztZQUMzQyxZQUFZLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUs7WUFDekMsVUFBVSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSztTQUN0QyxDQUFDLENBQUE7SUFDSixDQUFDOzhHQXBGVSx5QkFBeUI7a0dBQXpCLHlCQUF5QiwrUUM5QnRDLGtYQVdPLDJDRFVILFlBQVksOEJBQ1osV0FBVyxtU0FDWCxtQkFBbUIsZ0xBQ25CLGtCQUFrQixxT0FDbEIsb0JBQW9CLG9IQUVwQixtQkFBbUI7OzJGQUdWLHlCQUF5QjtrQkFkckMsU0FBUzsrQkFDRSxvQkFBb0IsY0FFbEIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIsb0JBQW9CO3dCQUNwQixpQkFBaUI7d0JBQ2pCLG1CQUFtQjtxQkFDcEI7Z0ZBR1EsS0FBSztzQkFBYixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDSSxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzcHhWYWxpZGF0b3JSZXF1aXJlZCwgU3B4VmFsaWRhdGlvbk1vZHVsZSB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LXZhbGlkYXRpb24nO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFNweElucHV0Q29tcG9uZW50LCBTcHhJbnB1dFR5cGVFbnVtIH0gZnJvbSAnQHNvZnRwYWsvY29tcG9uZW50cy9zcHgtaW5wdXRzJztcbmltcG9ydCB7IFNweEZvcm1TZWN0aW9uSSwgU3B4Rm9ybVZpZXdDb21wb25lbnQgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC1mb3JtLXZpZXcnO1xuaW1wb3J0IHsgU3B4QnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQHNvZnRwYWsvY29tcG9uZW50cy9zcHgtYnV0dG9uJztcbmltcG9ydCB7IFNweFNldmVyaXR5RW51bSB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWhlbHBlcnMnO1xuaW1wb3J0IHsgU3B4Q2hhbmdlRGV0YWlsc1ZhbHVlSSB9IGZyb20gJy4vc3B4LWNoYW5nZS1kZXRhaWxzLXZhbHVlLmludGVyZmFjZSc7XG5cbmNvbnN0IHNlY3Rpb25DaGFuZ2VEZXRhaWxzID0gJ2NoYW5nZURldGFpbHMnO1xuY29uc3QgY3RybENvbnRhaW5lclR5cGUgPSAnY29udGFpbmVyVHlwZSc7XG5jb25zdCBjdHJsVG9uc1Rlc3RlZCA9ICd0b25zVGVzdGVkJztcbmNvbnN0IGN0cmxMaWNlbnNlUGxhdGUgPSAnbGljZW5zZVBsYXRlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3B4LWNoYW5nZS1kZXRhaWxzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NweC1jaGFuZ2UtZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBTcHhCdXR0b25Db21wb25lbnQsXG4gICAgU3B4Rm9ybVZpZXdDb21wb25lbnQsXG4gICAgU3B4SW5wdXRDb21wb25lbnQsXG4gICAgU3B4VmFsaWRhdGlvbk1vZHVsZSxcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTcHhDaGFuZ2VEZXRhaWxzQ29tcG9uZW50IHtcbiAgQElucHV0KCkgdmFsdWUhOiBTcHhDaGFuZ2VEZXRhaWxzVmFsdWVJO1xuICBASW5wdXQoKSB0eHRDb250YWluZXJUeXBlITogc3RyaW5nO1xuICBASW5wdXQoKSB0eHRMaWNlbnNlUGxhdGUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHR4dFRvbnNUZXN0ZWQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHN1Z2dlc3Rpb25zOiBhbnkgPSB7fTtcbiAgQE91dHB1dCgpIHN1Ym1pdDogRXZlbnRFbWl0dGVyPFNweENoYW5nZURldGFpbHNWYWx1ZUk+ID0gbmV3IEV2ZW50RW1pdHRlcjxTcHhDaGFuZ2VEZXRhaWxzVmFsdWVJPigpO1xuICBpbnB1dFR5cGVBdXRvY29tcGxldGUgPSBTcHhJbnB1dFR5cGVFbnVtLmF1dG9jb21wbGV0ZTtcbiAgaW5wdXRUeXBlUmFkaW8gPSBTcHhJbnB1dFR5cGVFbnVtLnJhZGlvO1xuICBpbnB1dFR5cGVUZXh0ID0gU3B4SW5wdXRUeXBlRW51bS50ZXh0O1xuICBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgc2V2ZXJpdHlTdWNjZXNzID0gU3B4U2V2ZXJpdHlFbnVtLnN1Y2Nlc3M7XG4gIFxuICBzZWN0aW9uczogU3B4Rm9ybVNlY3Rpb25JW10gPSBbXG4gICAge1xuICAgICAga2V5OiBzZWN0aW9uQ2hhbmdlRGV0YWlscyxcbiAgICAgIGZpZWxkczogW1xuICAgICAgICB7XG4gICAgICAgICAga2V5OiBjdHJsQ29udGFpbmVyVHlwZSxcbiAgICAgICAgICB0eXBlOiAoKSA9PiBTcHhJbnB1dFR5cGVFbnVtLnRleHQsXG4gICAgICAgICAgbGFiZWw6ICgpID0+IHRoaXMudHh0Q29udGFpbmVyVHlwZSxcbiAgICAgICAgICBjYXBpdGFsaXplOiAoKSA9PiB0cnVlLFxuICAgICAgICAgIGFmdGVyVmFsdWVDaGFuZ2U6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3RybFRvbnNUZXN0ZWQuc2V0VmFsdWUobnVsbCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGtleTogY3RybFRvbnNUZXN0ZWQsXG4gICAgICAgICAgdHlwZTogKCkgPT4gU3B4SW5wdXRUeXBlRW51bS5yYWRpbyxcbiAgICAgICAgICBsYWJlbDogKCkgPT4gdGhpcy50eHRUb25zVGVzdGVkLFxuICAgICAgICAgIHNob3c6ICgpID0+IHRoaXMuc3VnZ2VzdGlvbnM/LltjdHJsVG9uc1Rlc3RlZF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGtleTogY3RybExpY2Vuc2VQbGF0ZSxcbiAgICAgICAgICB0eXBlOiAoKSA9PiBTcHhJbnB1dFR5cGVFbnVtLnRleHQsXG4gICAgICAgICAgbGFiZWw6ICgpID0+IHRoaXMudHh0TGljZW5zZVBsYXRlLFxuICAgICAgICAgIGNhcGl0YWxpemU6ICgpID0+IHRydWUsXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9XG4gIF07XG5cbiAgZ2V0IGN0cmxDb250YWluZXJUeXBlKCk6IEZvcm1Db250cm9sIHsgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmdldChjdHJsQ29udGFpbmVyVHlwZSkgYXMgRm9ybUNvbnRyb2w7IH1cbiAgZ2V0IGN0cmxMaWNlbnNlUGxhdGUoKTogRm9ybUNvbnRyb2wgeyByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KGN0cmxMaWNlbnNlUGxhdGUpIGFzIEZvcm1Db250cm9sOyB9XG4gIGdldCBjdHJsVG9uc1Rlc3RlZCgpOiBGb3JtQ29udHJvbCB7IHJldHVybiB0aGlzLmZvcm1Hcm91cC5nZXQoY3RybFRvbnNUZXN0ZWQpIGFzIEZvcm1Db250cm9sOyB9XG5cbiAgcHJpdmF0ZSBpbnB1dENoYW5nZXM/OiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICkge1xuICAgIHRoaXMuZm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBbY3RybENvbnRhaW5lclR5cGVdOiBbbnVsbCwgW1xuICAgICAgICBzcHhWYWxpZGF0b3JSZXF1aXJlZCgpLFxuICAgICAgXV0sXG4gICAgICBbY3RybFRvbnNUZXN0ZWRdOiBbbnVsbCwgW1xuICAgICAgXV0sXG4gICAgICBbY3RybExpY2Vuc2VQbGF0ZV06IFtudWxsLCBbXG4gICAgICBdXSxcbiAgICB9KVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jdHJsQ29udGFpbmVyVHlwZS5zZXRWYWx1ZSh0aGlzLnZhbHVlLmNvbnRhaW5lclR5cGUpO1xuICAgIHRoaXMuY3RybExpY2Vuc2VQbGF0ZS5zZXRWYWx1ZSh0aGlzLnZhbHVlLmxpY2Vuc2VQbGF0ZSk7XG4gICAgdGhpcy5jdHJsVG9uc1Rlc3RlZC5zZXRWYWx1ZSh0aGlzLnZhbHVlLnRvbnNUZXN0ZWQpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW5wdXRDaGFuZ2VzKSB7XG4gICAgICB0aGlzLmlucHV0Q2hhbmdlcy51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIGdldFJhd1ZhbGlkYXRvcnMoZm9ybUNvbnRyb2w6IEZvcm1Db250cm9sKSB7XG4gICAgcmV0dXJuIChmb3JtQ29udHJvbCBhcyBhbnkpLl9yYXdWYWxpZGF0b3JzO1xuICB9XG5cbiAgb25TdWJtaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJtaXQuZW1pdCh7XG4gICAgICBjb250YWluZXJUeXBlOiB0aGlzLmN0cmxDb250YWluZXJUeXBlLnZhbHVlLFxuICAgICAgbGljZW5zZVBsYXRlOiB0aGlzLmN0cmxMaWNlbnNlUGxhdGUudmFsdWUsXG4gICAgICB0b25zVGVzdGVkOiB0aGlzLmN0cmxUb25zVGVzdGVkLnZhbHVlLFxuICAgIH0pXG4gIH1cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCIgY2xhc3M9XCJtYXgtdy1sZyBteC1hdXRvIGZsZXggZmxleC1jb2wgZ2FwLTNcIiAobmdTdWJtaXQpPVwib25TdWJtaXQoKVwiPlxuICA8c3B4LWZvcm0tdmlld1xuICAgIFtzcHhGb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCJcbiAgICBbc3B4U2VjdGlvbnNdPVwic2VjdGlvbnNcIlxuICAgIFtzcHhTdWdnZXN0aW9uc109XCJzdWdnZXN0aW9uc1wiPlxuICA8L3NweC1mb3JtLXZpZXc+XG4gIDxzcHgtYnV0dG9uXG4gICAgW3NweEZ1bGxXaWR0aF09XCJ0cnVlXCJcbiAgICBbc3B4U2V2ZXJpdHldPVwic2V2ZXJpdHlTdWNjZXNzXCI+XG4gICAgU2F2ZVxuICA8L3NweC1idXR0b24+XG48L2Zvcm0+Il19
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LWNoYW5nZS1kZXRhaWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NvZnRwYWsvY29tcG9uZW50cy9zcHgtY2hhbmdlLWRldGFpbHMvc3B4LWNoYW5nZS1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NvZnRwYWsvY29tcG9uZW50cy9zcHgtY2hhbmdlLWRldGFpbHMvc3B4LWNoYW5nZS1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUF1QyxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMvRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDckYsT0FBTyxFQUFtQixvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7O0FBR2xFLE1BQU0sb0JBQW9CLEdBQUcsZUFBZSxDQUFDO0FBQzdDLE1BQU0saUJBQWlCLEdBQUcsZUFBZSxDQUFDO0FBQzFDLE1BQU0sY0FBYyxHQUFHLFlBQVksQ0FBQztBQUNwQyxNQUFNLGdCQUFnQixHQUFHLGNBQWMsQ0FBQztBQUN4QyxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUM7QUFnQmhDLE1BQU0sT0FBTyx5QkFB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QUFtQixDQUFDLGNBQWMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ2YsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSztZQUNqQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUs7WUFDM0MsWUFBWSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLO1lBQ3pDLFVBQVUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUs7U0FDdEMsQ0FBQyxDQUFBO0lBQ0osQ0FBQzs4R0F2R1UseUJBQXlCO2tHQUF6Qix5QkFBeUIseVVDL0J0QyxrWEFXTywyQ0RXSCxZQUFZLDhCQUNaLFdBQVcsbVNBQ1gsbUJBQW1CLGdMQUNuQixrQkFBa0IscU9BQ2xCLG9CQUFvQixvSEFFcEIsbUJBQW1COzsyRkFHVix5QkFBeUI7a0JBZHJDLFNBQVM7K0JBQ0Usb0JBQW9CLGNBRWxCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLG9CQUFvQjt3QkFDcEIsaUJBQWlCO3dCQUNqQixtQkFBbUI7cUJBQ3BCO2dGQUdRLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNJLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNweFZhbGlkYXRvclJlcXVpcmVkLCBTcHhWYWxpZGF0aW9uTW9kdWxlIH0gZnJvbSAnQHNvZnRwYWsvY29tcG9uZW50cy9zcHgtdmFsaWRhdGlvbic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU3B4SW5wdXRDb21wb25lbnQsIFNweElucHV0VHlwZUVudW0gfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC1pbnB1dHMnO1xuaW1wb3J0IHsgU3B4Rm9ybVNlY3Rpb25JLCBTcHhGb3JtVmlld0NvbXBvbmVudCB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWZvcm0tdmlldyc7XG5pbXBvcnQgeyBTcHhCdXR0b25Db21wb25lbnQgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC1idXR0b24nO1xuaW1wb3J0IHsgU3B4U2V2ZXJpdHlFbnVtIH0gZnJvbSAnQHNvZnRwYWsvY29tcG9uZW50cy9zcHgtaGVscGVycyc7XG5pbXBvcnQgeyBTcHhDaGFuZ2VEZXRhaWxzVmFsdWVJIH0gZnJvbSAnLi9zcHgtY2hhbmdlLWRldGFpbHMtdmFsdWUuaW50ZXJmYWNlJztcblxuY29uc3Qgc2VjdGlvbkNoYW5nZURldGFpbHMgPSAnY2hhbmdlRGV0YWlscyc7XG5jb25zdCBjdHJsQ29udGFpbmVyVHlwZSA9ICdjb250YWluZXJUeXBlJztcbmNvbnN0IGN0cmxUb25zVGVzdGVkID0gJ3RvbnNUZXN0ZWQnO1xuY29uc3QgY3RybExpY2Vuc2VQbGF0ZSA9ICdsaWNlbnNlUGxhdGUnO1xuY29uc3QgY3RybENhdGVnb3J5ID0gJ2NhdGVnb3J5JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3B4LWNoYW5nZS1kZXRhaWxzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NweC1jaGFuZ2UtZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBTcHhCdXR0b25Db21wb25lbnQsXG4gICAgU3B4Rm9ybVZpZXdDb21wb25lbnQsXG4gICAgU3B4SW5wdXRDb21wb25lbnQsXG4gICAgU3B4VmFsaWRhdGlvbk1vZHVsZSxcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTcHhDaGFuZ2VEZXRhaWxzQ29tcG9uZW50IHtcbiAgQElucHV0KCkgdmFsdWUhOiBTcHhDaGFuZ2VEZXRhaWxzVmFsdWVJO1xuICBASW5wdXQoKSBzaG93Q2F0ZWdvcnkgPSBmYWxzZTtcbiAgQElucHV0KCkgdHh0Q2F0ZWdvcnkhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHR4dENvbnRhaW5lclR5cGUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHR4dExpY2Vuc2VQbGF0ZSE6IHN0cmluZztcbiAgQElucHV0KCkgdHh0VG9uc1Rlc3RlZCE6IHN0cmluZztcbiAgQElucHV0KCkgc3VnZ2VzdGlvbnM6IGFueSA9IHt9O1xuICBAT3V0cHV0KCkgc3VibWl0OiBFdmVudEVtaXR0ZXI8U3B4Q2hhbmdlRGV0YWlsc1ZhbHVlST4gPSBuZXcgRXZlbnRFbWl0dGVyPFNweENoYW5nZURldGFpbHNWYWx1ZUk+KCk7XG4gIGlucHV0VHlwZUF1dG9jb21wbGV0ZSA9IFNweElucHV0VHlwZUVudW0uYXV0b2NvbXBsZXRlO1xuICBpbnB1dFR5cGVSYWRpbyA9IFNweElucHV0VHlwZUVudW0ucmFkaW87XG4gIGlucHV0VHlwZVRleHQgPSBTcHhJbnB1dFR5cGVFbnVtLnRleHQ7XG4gIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICBzZXZlcml0eVN1Y2Nlc3MgPSBTcHhTZXZlcml0eUVudW0uc3VjY2VzcztcbiAgXG4gIHNlY3Rpb25zOiBTcHhGb3JtU2VjdGlvbklbXSA9IFtcbiAgICB7XG4gICAgICBrZXk6IHNlY3Rpb25DaGFuZ2VEZXRhaWxzLFxuICAgICAgc2hvd1RpdGxlOiAoKSA9PiBmYWxzZSxcbiAgICAgIGZpZWxkczogW1xuICAgICAgICB7XG4gICAgICAgICAga2V5OiBjdHJsQ29udGFpbmVyVHlwZSxcbiAgICAgICAgICB0eXBlOiAoKSA9PiBTcHhJbnB1dFR5cGVFbnVtLnRleHQsXG4gICAgICAgICAgbGFiZWw6ICgpID0+IHRoaXMudHh0Q29udGFpbmVyVHlwZSxcbiAgICAgICAgICBjYXBpdGFsaXplOiAoKSA9PiB0cnVlLFxuICAgICAgICAgIGFmdGVyVmFsdWVDaGFuZ2U6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3RybFRvbnNUZXN0ZWQuc2V0VmFsdWUobnVsbCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGtleTogY3RybFRvbnNUZXN0ZWQsXG4gICAgICAgICAgdHlwZTogKCkgPT4gU3B4SW5wdXRUeXBlRW51bS5yYWRpbyxcbiAgICAgICAgICBsYWJlbDogKCkgPT4gdGhpcy50eHRUb25zVGVzdGVkLFxuICAgICAgICAgIHNob3c6ICgpID0+IHRoaXMuc3VnZ2VzdGlvbnM/LltjdHJsVG9uc1Rlc3RlZF0gJiYgdGhpcy5zdWdnZXN0aW9ucz8uW2N0cmxUb25zVGVzdGVkXS5sZW5ndGggJiYgdGhpcy5zdWdnZXN0aW9ucz8uW2N0cmxUb25zVGVzdGVkXS5sZW5ndGggPiAwXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBrZXk6IGN0cmxMaWNlbnNlUGxhdGUsXG4gICAgICAgICAgdHlwZTogKCkgPT4gU3B4SW5wdXRUeXBlRW51bS50ZXh0LFxuICAgICAgICAgIGxhYmVsOiAoKSA9PiB0aGlzLnR4dExpY2Vuc2VQbGF0ZSxcbiAgICAgICAgICBjYXBpdGFsaXplOiAoKSA9PiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAga2V5OiBjdHJsQ2F0ZWdvcnksXG4gICAgICAgICAgdHlwZTogKCkgPT4gU3B4SW5wdXRUeXBlRW51bS50ZXh0LFxuICAgICAgICAgIGxhYmVsOiAoKSA9PiB0aGlzLnR4dENhdGVnb3J5LFxuICAgICAgICAgIGNhcGl0YWxpemU6ICgpID0+IHRydWUsXG4gICAgICAgICAgc2hvdzogKCkgPT4gdGhpcy5zaG93Q2F0ZWdvcnksXG4gICAgICAgICAgdmFsaWRhdG9yczogKCkgPT4gdGhpcy5zaG93Q2F0ZWdvcnkgPyBbc3B4VmFsaWRhdG9yUmVxdWlyZWQoKV0gOiBbXSxcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH1cbiAgXTtcblxuICBnZXQgY3RybENhdGVnb3J5KCk6IEZvcm1Db250cm9sIHsgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmdldChjdHJsQ2F0ZWdvcnkpIGFzIEZvcm1Db250cm9sOyB9XG4gIGdldCBjdHJsQ29udGFpbmVyVHlwZSgpOiBGb3JtQ29udHJvbCB7IHJldHVybiB0aGlzLmZvcm1Hcm91cC5nZXQoY3RybENvbnRhaW5lclR5cGUpIGFzIEZvcm1Db250cm9sOyB9XG4gIGdldCBjdHJsTGljZW5zZVBsYXRlKCk6IEZvcm1Db250cm9sIHsgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmdldChjdHJsTGljZW5zZVBsYXRlKSBhcyBGb3JtQ29udHJvbDsgfVxuICBnZXQgY3RybFRvbnNUZXN0ZWQoKTogRm9ybUNvbnRyb2wgeyByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KGN0cmxUb25zVGVzdGVkKSBhcyBGb3JtQ29udHJvbDsgfVxuXG4gIHByaXZhdGUgaW5wdXRDaGFuZ2VzPzogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICApIHtcbiAgICB0aGlzLmZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgW2N0cmxDYXRlZ29yeV06IFtudWxsLCB0aGlzLnNob3dDYXRlZ29yeSA/IFtcbiAgICAgICAgc3B4VmFsaWRhdG9yUmVxdWlyZWQoKV0gOiBbXVxuICAgICAgXSxcbiAgICAgIFtjdHJsQ29udGFpbmVyVHlwZV06IFtudWxsLCBbXG4gICAgICAgIHNweFZhbGlkYXRvclJlcXVpcmVkKCksXG4gICAgICBdXSxcbiAgICAgIFtjdHJsVG9uc1Rlc3RlZF06IFtudWxsLCBbXG4gICAgICBdXSxcbiAgICAgIFtjdHJsTGljZW5zZVBsYXRlXTogW251bGwsIFtcbiAgICAgIF1dLFxuICAgIH0pXG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmN0cmxDb250YWluZXJUeXBlLnNldFZhbHVlKHRoaXMudmFsdWUuY29udGFpbmVyVHlwZSk7XG4gICAgdGhpcy5jdHJsTGljZW5zZVBsYXRlLnNldFZhbHVlKHRoaXMudmFsdWUubGljZW5zZVBsYXRlKTtcbiAgICB0aGlzLmN0cmxUb25zVGVzdGVkLnNldFZhbHVlKHRoaXMudmFsdWUudG9uc1Rlc3RlZCk7XG4gICAgaWYgKHRoaXMudmFsdWUuY2F0ZWdvcnkpIHtcbiAgICAgIHRoaXMuY3RybENhdGVnb3J5LnNldFZhbHVlKHRoaXMudmFsdWUuY2F0ZWdvcnkpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlucHV0Q2hhbmdlcykge1xuICAgICAgdGhpcy5pbnB1dENoYW5nZXMudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBnZXRSYXdWYWxpZGF0b3JzKGZvcm1Db250cm9sOiBGb3JtQ29udHJvbCkge1xuICAgIHJldHVybiAoZm9ybUNvbnRyb2wgYXMgYW55KS5fcmF3VmFsaWRhdG9ycztcbiAgfVxuXG4gIG9uU3VibWl0KCk6IHZvaWQge1xuICAgIHRoaXMuc3VibWl0LmVtaXQoe1xuICAgICAgY2F0ZWdvcnk6IHRoaXMuY3RybENhdGVnb3J5LnZhbHVlLFxuICAgICAgY29udGFpbmVyVHlwZTogdGhpcy5jdHJsQ29udGFpbmVyVHlwZS52YWx1ZSxcbiAgICAgIGxpY2Vuc2VQbGF0ZTogdGhpcy5jdHJsTGljZW5zZVBsYXRlLnZhbHVlLFxuICAgICAgdG9uc1Rlc3RlZDogdGhpcy5jdHJsVG9uc1Rlc3RlZC52YWx1ZSxcbiAgICB9KVxuICB9XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiIGNsYXNzPVwibWF4LXctbGcgbXgtYXV0byBmbGV4IGZsZXgtY29sIGdhcC0zXCIgKG5nU3VibWl0KT1cIm9uU3VibWl0KClcIj5cbiAgPHNweC1mb3JtLXZpZXdcbiAgICBbc3B4Rm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiXG4gICAgW3NweFNlY3Rpb25zXT1cInNlY3Rpb25zXCJcbiAgICBbc3B4U3VnZ2VzdGlvbnNdPVwic3VnZ2VzdGlvbnNcIj5cbiAgPC9zcHgtZm9ybS12aWV3PlxuICA8c3B4LWJ1dHRvblxuICAgIFtzcHhGdWxsV2lkdGhdPVwidHJ1ZVwiXG4gICAgW3NweFNldmVyaXR5XT1cInNldmVyaXR5U3VjY2Vzc1wiPlxuICAgIFNhdmVcbiAgPC9zcHgtYnV0dG9uPlxuPC9mb3JtPiJdfQ==
@@ -45,40 +45,42 @@ export class SpxFormViewComponent {
45
45
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SpxFormViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
46
46
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: SpxFormViewComponent, isStandalone: true, selector: "spx-form-view", inputs: { spxFormGroup: "spxFormGroup", spxSections: "spxSections", spxSuggestions: "spxSuggestions" }, ngImport: i0, template: `<spx-form-section
47
47
  *ngFor="let spxSection of spxSections; let spxSectionIndex = index;"
48
+ [spxShowTitle]="!spxSection.showTitle || spxSection.showTitle()"
48
49
  [spxIndex]="spxSectionIndex + 1"
49
50
  [spxTitle]="spxSection.title ? spxSection.title() : undefined">
50
51
  <ng-container *ngFor="let spxField of spxSection.fields; let spxFieldIndex = index;">
51
- <spx-input
52
- *ngIf="spxField.type() === typeOverlay || spxField.type() === typeOverlayNumber || spxField.type() === typeFloat || spxField.type() === typeNumber || spxField.type() === typeText || spxField.type() === typeAutocomplete || spxField.type() === typeNumericKeyboard"
53
- [formControl]="$any(this.spxFormGroup.get(spxField.key))"
54
- [spxAutofocus]="spxField.autofocus ? spxField.autofocus() : false"
55
- [spxCapitalize]="spxField.capitalize ? spxField.capitalize() : false"
56
- [spxLabel]="spxField.key | capitalize"
57
- [spxPattern]="spxField.type() === typeNumericKeyboard ? '\\d*' : undefined"
58
- [spxReadonly]="spxField.readonly ? spxField.readonly() : false"
59
- [spxRequired]="hasRequiredField(this.spxFormGroup.get(spxField.key)!)"
60
- [spxShowHelp]="false"
61
- [spxShowValidationMessages]="this.spxFormGroup.get(spxField.key)! && this.spxFormGroup.get(spxField.key)!.errors && this.spxFormGroup.get(spxField.key)!.touched"
62
- [spxStep]="spxField.step ? spxField.step() : undefined"
63
- [spxType]="spxField.type()"
64
- [spxValidators]="getRawValidators(this.spxFormGroup.get(spxField.key)!)"
65
- [spxSuggestions]="spxField.suggestionsFixed ? spxField.suggestionsFixed() : this.spxSuggestions[spxField.key]"
66
- (spxBlur)="onBlur(spxField)">
67
- </spx-input>
68
-
69
- <spx-input
70
- *ngIf="spxField.type() === typeRadio"
71
- [formControl]="$any(this.spxFormGroup.get(spxField.key))"
72
- [spxLabel]="spxField.key | capitalize"
73
- [spxReadonly]="spxField.readonly ? spxField.readonly() : false"
74
- [spxRequired]="hasRequiredField(this.spxFormGroup.get(spxField.key)!)"
75
- [spxShowHelp]="false"
76
- [spxShowValidationMessages]="this.spxFormGroup.get(spxField.key)! && this.spxFormGroup.get(spxField.key)!.errors && this.spxFormGroup.get(spxField.key)!.touched"
77
- [spxSuggestions]="spxField.suggestionsFixed ? spxField.suggestionsFixed() : this.spxSuggestions[spxField.key]"
78
- [spxType]="typeRadio"
79
- [spxValidators]="getRawValidators(this.spxFormGroup.get(spxField.key)!)">
80
- </spx-input>
52
+ <ng-container *ngIf="spxField.show === undefined || spxField.show()">
53
+ <spx-input
54
+ *ngIf="spxField.type() === typeOverlay || spxField.type() === typeOverlayNumber || spxField.type() === typeFloat || spxField.type() === typeNumber || spxField.type() === typeText || spxField.type() === typeAutocomplete || spxField.type() === typeNumericKeyboard"
55
+ [formControl]="$any(this.spxFormGroup.get(spxField.key))"
56
+ [spxAutofocus]="spxField.autofocus ? spxField.autofocus() : false"
57
+ [spxCapitalize]="spxField.capitalize ? spxField.capitalize() : false"
58
+ [spxLabel]="(spxField.label ? spxField.label() : spxField.key) | capitalize"
59
+ [spxPattern]="spxField.type() === typeNumericKeyboard ? '\\d*' : undefined"
60
+ [spxReadonly]="spxField.readonly ? spxField.readonly() : false"
61
+ [spxRequired]="hasRequiredField(this.spxFormGroup.get(spxField.key)!)"
62
+ [spxShowHelp]="false"
63
+ [spxShowValidationMessages]="this.spxFormGroup.get(spxField.key)! && this.spxFormGroup.get(spxField.key)!.errors && this.spxFormGroup.get(spxField.key)!.touched"
64
+ [spxStep]="spxField.step ? spxField.step() : undefined"
65
+ [spxType]="spxField.type()"
66
+ [spxValidators]="getRawValidators(this.spxFormGroup.get(spxField.key)!)"
67
+ [spxSuggestions]="spxField.suggestionsFixed ? spxField.suggestionsFixed() : this.spxSuggestions[spxField.key]"
68
+ (spxBlur)="onBlur(spxField)">
69
+ </spx-input>
81
70
 
71
+ <spx-input
72
+ *ngIf="spxField.type() === typeRadio"
73
+ [formControl]="$any(this.spxFormGroup.get(spxField.key))"
74
+ [spxLabel]="(spxField.label ? spxField.label() : spxField.key) | capitalize"
75
+ [spxReadonly]="spxField.readonly ? spxField.readonly() : false"
76
+ [spxRequired]="hasRequiredField(this.spxFormGroup.get(spxField.key)!)"
77
+ [spxShowHelp]="false"
78
+ [spxShowValidationMessages]="this.spxFormGroup.get(spxField.key)! && this.spxFormGroup.get(spxField.key)!.errors && this.spxFormGroup.get(spxField.key)!.touched"
79
+ [spxSuggestions]="spxField.suggestionsFixed ? spxField.suggestionsFixed() : this.spxSuggestions[spxField.key]"
80
+ [spxType]="typeRadio"
81
+ [spxValidators]="getRawValidators(this.spxFormGroup.get(spxField.key)!)">
82
+ </spx-input>
83
+ </ng-container>
82
84
  </ng-container>
83
85
  </spx-form-section>`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: SpxCapitalizePipe, name: "capitalize" }, { kind: "component", type: SpxFormSectionComponent, selector: "spx-form-section", inputs: ["spxIndex", "spxIndexSecondary", "spxTitle", "spxShowTitle"] }, { kind: "component", type: SpxInputComponent, selector: "spx-input", inputs: ["spxLabel", "spxMax", "spxMin", "spxName", "spxReadonly", "spxAutofocus", "spxInputMode", "spxPattern", "spxRequired", "spxSelectMonth", "spxSelectDay", "spxShowEdit", "spxShowHelp", "spxCompact", "spxShowClear", "spxShowSearch", "spxShowValidationMessages", "spxStep", "spxSuggestions", "spxType", "spxValidators", "value", "spxCapitalize", "spxFocused"], outputs: ["spxBlur", "spxClear", "spxChange", "spxFocus", "spxEdit", "spxHelp", "spxSearch"] }] }); }
84
86
  }
@@ -99,40 +101,42 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
99
101
  ],
100
102
  template: `<spx-form-section
101
103
  *ngFor="let spxSection of spxSections; let spxSectionIndex = index;"
104
+ [spxShowTitle]="!spxSection.showTitle || spxSection.showTitle()"
102
105
  [spxIndex]="spxSectionIndex + 1"
103
106
  [spxTitle]="spxSection.title ? spxSection.title() : undefined">
104
107
  <ng-container *ngFor="let spxField of spxSection.fields; let spxFieldIndex = index;">
105
- <spx-input
106
- *ngIf="spxField.type() === typeOverlay || spxField.type() === typeOverlayNumber || spxField.type() === typeFloat || spxField.type() === typeNumber || spxField.type() === typeText || spxField.type() === typeAutocomplete || spxField.type() === typeNumericKeyboard"
107
- [formControl]="$any(this.spxFormGroup.get(spxField.key))"
108
- [spxAutofocus]="spxField.autofocus ? spxField.autofocus() : false"
109
- [spxCapitalize]="spxField.capitalize ? spxField.capitalize() : false"
110
- [spxLabel]="spxField.key | capitalize"
111
- [spxPattern]="spxField.type() === typeNumericKeyboard ? '\\d*' : undefined"
112
- [spxReadonly]="spxField.readonly ? spxField.readonly() : false"
113
- [spxRequired]="hasRequiredField(this.spxFormGroup.get(spxField.key)!)"
114
- [spxShowHelp]="false"
115
- [spxShowValidationMessages]="this.spxFormGroup.get(spxField.key)! && this.spxFormGroup.get(spxField.key)!.errors && this.spxFormGroup.get(spxField.key)!.touched"
116
- [spxStep]="spxField.step ? spxField.step() : undefined"
117
- [spxType]="spxField.type()"
118
- [spxValidators]="getRawValidators(this.spxFormGroup.get(spxField.key)!)"
119
- [spxSuggestions]="spxField.suggestionsFixed ? spxField.suggestionsFixed() : this.spxSuggestions[spxField.key]"
120
- (spxBlur)="onBlur(spxField)">
121
- </spx-input>
122
-
123
- <spx-input
124
- *ngIf="spxField.type() === typeRadio"
125
- [formControl]="$any(this.spxFormGroup.get(spxField.key))"
126
- [spxLabel]="spxField.key | capitalize"
127
- [spxReadonly]="spxField.readonly ? spxField.readonly() : false"
128
- [spxRequired]="hasRequiredField(this.spxFormGroup.get(spxField.key)!)"
129
- [spxShowHelp]="false"
130
- [spxShowValidationMessages]="this.spxFormGroup.get(spxField.key)! && this.spxFormGroup.get(spxField.key)!.errors && this.spxFormGroup.get(spxField.key)!.touched"
131
- [spxSuggestions]="spxField.suggestionsFixed ? spxField.suggestionsFixed() : this.spxSuggestions[spxField.key]"
132
- [spxType]="typeRadio"
133
- [spxValidators]="getRawValidators(this.spxFormGroup.get(spxField.key)!)">
134
- </spx-input>
108
+ <ng-container *ngIf="spxField.show === undefined || spxField.show()">
109
+ <spx-input
110
+ *ngIf="spxField.type() === typeOverlay || spxField.type() === typeOverlayNumber || spxField.type() === typeFloat || spxField.type() === typeNumber || spxField.type() === typeText || spxField.type() === typeAutocomplete || spxField.type() === typeNumericKeyboard"
111
+ [formControl]="$any(this.spxFormGroup.get(spxField.key))"
112
+ [spxAutofocus]="spxField.autofocus ? spxField.autofocus() : false"
113
+ [spxCapitalize]="spxField.capitalize ? spxField.capitalize() : false"
114
+ [spxLabel]="(spxField.label ? spxField.label() : spxField.key) | capitalize"
115
+ [spxPattern]="spxField.type() === typeNumericKeyboard ? '\\d*' : undefined"
116
+ [spxReadonly]="spxField.readonly ? spxField.readonly() : false"
117
+ [spxRequired]="hasRequiredField(this.spxFormGroup.get(spxField.key)!)"
118
+ [spxShowHelp]="false"
119
+ [spxShowValidationMessages]="this.spxFormGroup.get(spxField.key)! && this.spxFormGroup.get(spxField.key)!.errors && this.spxFormGroup.get(spxField.key)!.touched"
120
+ [spxStep]="spxField.step ? spxField.step() : undefined"
121
+ [spxType]="spxField.type()"
122
+ [spxValidators]="getRawValidators(this.spxFormGroup.get(spxField.key)!)"
123
+ [spxSuggestions]="spxField.suggestionsFixed ? spxField.suggestionsFixed() : this.spxSuggestions[spxField.key]"
124
+ (spxBlur)="onBlur(spxField)">
125
+ </spx-input>
135
126
 
127
+ <spx-input
128
+ *ngIf="spxField.type() === typeRadio"
129
+ [formControl]="$any(this.spxFormGroup.get(spxField.key))"
130
+ [spxLabel]="(spxField.label ? spxField.label() : spxField.key) | capitalize"
131
+ [spxReadonly]="spxField.readonly ? spxField.readonly() : false"
132
+ [spxRequired]="hasRequiredField(this.spxFormGroup.get(spxField.key)!)"
133
+ [spxShowHelp]="false"
134
+ [spxShowValidationMessages]="this.spxFormGroup.get(spxField.key)! && this.spxFormGroup.get(spxField.key)!.errors && this.spxFormGroup.get(spxField.key)!.touched"
135
+ [spxSuggestions]="spxField.suggestionsFixed ? spxField.suggestionsFixed() : this.spxSuggestions[spxField.key]"
136
+ [spxType]="typeRadio"
137
+ [spxValidators]="getRawValidators(this.spxFormGroup.get(spxField.key)!)">
138
+ </spx-input>
139
+ </ng-container>
136
140
  </ng-container>
137
141
  </spx-form-section>`,
138
142
  }]
@@ -143,4 +147,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
143
147
  }], spxSuggestions: [{
144
148
  type: Input
145
149
  }] } });
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LWZvcm0tdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWZvcm0tdmlldy9zcHgtZm9ybS12aWV3LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQThCLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUF1RDlGLE1BQU0sT0FBTyxvQkFBb0I7SUFwRGpDO1FBeURFLHFCQUFnQixHQUFHLGdCQUFnQixDQUFDLFlBQVksQ0FBQztRQUNqRCxjQUFTLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO1FBQ25DLGVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7UUFDckMsY0FBUyxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQztRQUNuQyxhQUFRLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO1FBQ2pDLHdCQUFtQixHQUFHLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDO1FBQzNELGdCQUFXLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDO1FBQ3ZDLHNCQUFpQixHQUFHLGdCQUFnQixDQUFDLGFBQWEsQ0FBQztLQTZCcEQ7SUEzQkMsTUFBTSxDQUFDLEtBQW9CO1FBQ3pCLE9BQU87SUFDVCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsV0FBNEI7UUFDM0MsZ0RBQWdEO1FBQ2hELE9BQVEsV0FBbUIsQ0FBQyxjQUFjLENBQUM7SUFDN0MsQ0FBQztJQUVELGdCQUFnQixDQUFDLGVBQWdDO1FBQy9DLElBQUksZUFBZSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzlCLE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsRUFBcUIsQ0FBQyxDQUFDO1lBQ25FLElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUN2QyxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSyxlQUF1QixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDekMsS0FBSyxNQUFNLFdBQVcsSUFBSyxlQUF1QixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQy9ELElBQUssZUFBdUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO29CQUN0RCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBRSxlQUF1QixDQUFDLFVBQVUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3QkFDN0UsT0FBTyxJQUFJLENBQUM7b0JBQ2QsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7OEdBeENVLG9CQUFvQjtrR0FBcEIsb0JBQW9CLGlMQXZDckI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7c0JBcUNVLDJEQTlDbEIsV0FBVyxzSUFDWCxtQkFBbUIsa05BRW5CLElBQUksNkZBQ0osS0FBSyw4R0FDTCxpQkFBaUIsbURBQ2pCLHVCQUF1QixvSUFDdkIsaUJBQWlCOzsyRkF5Q1Isb0JBQW9CO2tCQXBEaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRTt3QkFDUCxXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsUUFBUTt3QkFDUixJQUFJO3dCQUNKLEtBQUs7d0JBQ0wsaUJBQWlCO3dCQUNqQix1QkFBdUI7d0JBQ3ZCLGlCQUFpQjtxQkFDbEI7b0JBQ0QsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCQXFDVTtpQkFDckI7OEJBRVUsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBKc29uUGlwZSwgTmdGb3IsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3B4Rm9ybVNlY3Rpb25JIH0gZnJvbSAnLi9zcHgtZm9ybS1zZWN0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTcHhGb3JtU2VjdGlvbkNvbXBvbmVudCB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWZvcm0tc2VjdGlvbic7XG5pbXBvcnQgeyBTcHhJbnB1dENvbXBvbmVudCwgU3B4SW5wdXRUeXBlRW51bSB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWlucHV0cyc7XG5pbXBvcnQgeyBTcHhDYXBpdGFsaXplUGlwZSB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWNhcGl0YWxpemUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXAsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3B4Rm9ybUZpZWxkSSB9IGZyb20gJy4vc3B4LWZvcm0tZmllbGQuaW50ZXJmYWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3B4LWZvcm0tdmlldycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEpzb25QaXBlLFxuICAgIE5nSWYsXG4gICAgTmdGb3IsXG4gICAgU3B4Q2FwaXRhbGl6ZVBpcGUsXG4gICAgU3B4Rm9ybVNlY3Rpb25Db21wb25lbnQsXG4gICAgU3B4SW5wdXRDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlOiBgPHNweC1mb3JtLXNlY3Rpb25cbiAgICAqbmdGb3I9XCJsZXQgc3B4U2VjdGlvbiBvZiBzcHhTZWN0aW9uczsgbGV0IHNweFNlY3Rpb25JbmRleCA9IGluZGV4O1wiXG4gICAgW3NweEluZGV4XT1cInNweFNlY3Rpb25JbmRleCArIDFcIlxuICAgIFtzcHhUaXRsZV09XCJzcHhTZWN0aW9uLnRpdGxlID8gc3B4U2VjdGlvbi50aXRsZSgpIDogdW5kZWZpbmVkXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3B4RmllbGQgb2Ygc3B4U2VjdGlvbi5maWVsZHM7IGxldCBzcHhGaWVsZEluZGV4ID0gaW5kZXg7XCI+XG4gICAgICA8c3B4LWlucHV0XG4gICAgICAgICpuZ0lmPVwic3B4RmllbGQudHlwZSgpID09PSB0eXBlT3ZlcmxheSB8fCBzcHhGaWVsZC50eXBlKCkgPT09IHR5cGVPdmVybGF5TnVtYmVyIHx8IHNweEZpZWxkLnR5cGUoKSA9PT0gdHlwZUZsb2F0IHx8IHNweEZpZWxkLnR5cGUoKSA9PT0gdHlwZU51bWJlciB8fCBzcHhGaWVsZC50eXBlKCkgPT09IHR5cGVUZXh0IHx8IHNweEZpZWxkLnR5cGUoKSA9PT0gdHlwZUF1dG9jb21wbGV0ZSB8fCBzcHhGaWVsZC50eXBlKCkgPT09IHR5cGVOdW1lcmljS2V5Ym9hcmRcIlxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiJGFueSh0aGlzLnNweEZvcm1Hcm91cC5nZXQoc3B4RmllbGQua2V5KSlcIlxuICAgICAgICBbc3B4QXV0b2ZvY3VzXT1cInNweEZpZWxkLmF1dG9mb2N1cyA/IHNweEZpZWxkLmF1dG9mb2N1cygpIDogZmFsc2VcIlxuICAgICAgICBbc3B4Q2FwaXRhbGl6ZV09XCJzcHhGaWVsZC5jYXBpdGFsaXplID8gc3B4RmllbGQuY2FwaXRhbGl6ZSgpIDogZmFsc2VcIlxuICAgICAgICBbc3B4TGFiZWxdPVwic3B4RmllbGQua2V5IHwgY2FwaXRhbGl6ZVwiXG4gICAgICAgIFtzcHhQYXR0ZXJuXT1cInNweEZpZWxkLnR5cGUoKSA9PT0gdHlwZU51bWVyaWNLZXlib2FyZCA/ICdcXFxcZConIDogdW5kZWZpbmVkXCJcbiAgICAgICAgW3NweFJlYWRvbmx5XT1cInNweEZpZWxkLnJlYWRvbmx5ID8gc3B4RmllbGQucmVhZG9ubHkoKSA6IGZhbHNlXCJcbiAgICAgICAgW3NweFJlcXVpcmVkXT1cImhhc1JlcXVpcmVkRmllbGQodGhpcy5zcHhGb3JtR3JvdXAuZ2V0KHNweEZpZWxkLmtleSkhKVwiXG4gICAgICAgIFtzcHhTaG93SGVscF09XCJmYWxzZVwiXG4gICAgICAgIFtzcHhTaG93VmFsaWRhdGlvbk1lc3NhZ2VzXT1cInRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpISAmJiB0aGlzLnNweEZvcm1Hcm91cC5nZXQoc3B4RmllbGQua2V5KSEuZXJyb3JzICYmIHRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpIS50b3VjaGVkXCJcbiAgICAgICAgW3NweFN0ZXBdPVwic3B4RmllbGQuc3RlcCA/IHNweEZpZWxkLnN0ZXAoKSA6IHVuZGVmaW5lZFwiXG4gICAgICAgIFtzcHhUeXBlXT1cInNweEZpZWxkLnR5cGUoKVwiXG4gICAgICAgIFtzcHhWYWxpZGF0b3JzXT1cImdldFJhd1ZhbGlkYXRvcnModGhpcy5zcHhGb3JtR3JvdXAuZ2V0KHNweEZpZWxkLmtleSkhKVwiXG4gICAgICAgIFtzcHhTdWdnZXN0aW9uc109XCJzcHhGaWVsZC5zdWdnZXN0aW9uc0ZpeGVkID8gc3B4RmllbGQuc3VnZ2VzdGlvbnNGaXhlZCgpIDogdGhpcy5zcHhTdWdnZXN0aW9uc1tzcHhGaWVsZC5rZXldXCJcbiAgICAgICAgKHNweEJsdXIpPVwib25CbHVyKHNweEZpZWxkKVwiPlxuICAgICAgPC9zcHgtaW5wdXQ+XG5cbiAgICAgIDxzcHgtaW5wdXRcbiAgICAgICAgKm5nSWY9XCJzcHhGaWVsZC50eXBlKCkgPT09IHR5cGVSYWRpb1wiXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCIkYW55KHRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpKVwiXG4gICAgICAgIFtzcHhMYWJlbF09XCJzcHhGaWVsZC5rZXkgfCBjYXBpdGFsaXplXCJcbiAgICAgICAgW3NweFJlYWRvbmx5XT1cInNweEZpZWxkLnJlYWRvbmx5ID8gc3B4RmllbGQucmVhZG9ubHkoKSA6IGZhbHNlXCJcbiAgICAgICAgW3NweFJlcXVpcmVkXT1cImhhc1JlcXVpcmVkRmllbGQodGhpcy5zcHhGb3JtR3JvdXAuZ2V0KHNweEZpZWxkLmtleSkhKVwiXG4gICAgICAgIFtzcHhTaG93SGVscF09XCJmYWxzZVwiXG4gICAgICAgIFtzcHhTaG93VmFsaWRhdGlvbk1lc3NhZ2VzXT1cInRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpISAmJiB0aGlzLnNweEZvcm1Hcm91cC5nZXQoc3B4RmllbGQua2V5KSEuZXJyb3JzICYmIHRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpIS50b3VjaGVkXCJcbiAgICAgICAgW3NweFN1Z2dlc3Rpb25zXT1cInNweEZpZWxkLnN1Z2dlc3Rpb25zRml4ZWQgPyBzcHhGaWVsZC5zdWdnZXN0aW9uc0ZpeGVkKCkgOiB0aGlzLnNweFN1Z2dlc3Rpb25zW3NweEZpZWxkLmtleV1cIlxuICAgICAgICBbc3B4VHlwZV09XCJ0eXBlUmFkaW9cIlxuICAgICAgICBbc3B4VmFsaWRhdG9yc109XCJnZXRSYXdWYWxpZGF0b3JzKHRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpISlcIj5cbiAgICAgIDwvc3B4LWlucHV0PlxuXG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvc3B4LWZvcm0tc2VjdGlvbj5gLFxufSlcbmV4cG9ydCBjbGFzcyBTcHhGb3JtVmlld0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHNweEZvcm1Hcm91cCE6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgc3B4U2VjdGlvbnMhOiBTcHhGb3JtU2VjdGlvbklbXTtcbiAgQElucHV0KCkgc3B4U3VnZ2VzdGlvbnMhOiBhbnk7XG5cbiAgdHlwZUF1dG9jb21wbGV0ZSA9IFNweElucHV0VHlwZUVudW0uYXV0b2NvbXBsZXRlO1xuICB0eXBlRmxvYXQgPSBTcHhJbnB1dFR5cGVFbnVtLmZsb2F0O1xuICB0eXBlTnVtYmVyID0gU3B4SW5wdXRUeXBlRW51bS5udW1iZXI7XG4gIHR5cGVSYWRpbyA9IFNweElucHV0VHlwZUVudW0ucmFkaW87XG4gIHR5cGVUZXh0ID0gU3B4SW5wdXRUeXBlRW51bS50ZXh0O1xuICB0eXBlTnVtZXJpY0tleWJvYXJkID0gU3B4SW5wdXRUeXBlRW51bS50ZXh0TnVtZXJpY0tleWJvYXJkO1xuICB0eXBlT3ZlcmxheSA9IFNweElucHV0VHlwZUVudW0ub3ZlcmxheTtcbiAgdHlwZU92ZXJsYXlOdW1iZXIgPSBTcHhJbnB1dFR5cGVFbnVtLm92ZXJsYXlOdW1iZXI7XG5cbiAgb25CbHVyKGZpZWxkOiBTcHhGb3JtRmllbGRJKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZ2V0UmF3VmFsaWRhdG9ycyhmb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVyc2NvcmUtZGFuZ2xlXG4gICAgcmV0dXJuIChmb3JtQ29udHJvbCBhcyBhbnkpLl9yYXdWYWxpZGF0b3JzO1xuICB9XG5cbiAgaGFzUmVxdWlyZWRGaWVsZChhYnN0cmFjdENvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IGJvb2xlYW4ge1xuICAgIGlmIChhYnN0cmFjdENvbnRyb2wudmFsaWRhdG9yKSB7XG4gICAgICBjb25zdCB2YWxpZGF0b3IgPSBhYnN0cmFjdENvbnRyb2wudmFsaWRhdG9yKHt9IGFzIEFic3RyYWN0Q29udHJvbCk7XG4gICAgICBpZiAodmFsaWRhdG9yICYmIHZhbGlkYXRvclsncmVxdWlyZWQnXSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKChhYnN0cmFjdENvbnRyb2wgYXMgYW55KVsnY29udHJvbHMnXSkge1xuICAgICAgZm9yIChjb25zdCBjb250cm9sTmFtZSBpbiAoYWJzdHJhY3RDb250cm9sIGFzIGFueSlbJ2NvbnRyb2xzJ10pIHtcbiAgICAgICAgaWYgKChhYnN0cmFjdENvbnRyb2wgYXMgYW55KVsnY29udHJvbHMnXVtjb250cm9sTmFtZV0pIHtcbiAgICAgICAgICBpZiAodGhpcy5oYXNSZXF1aXJlZEZpZWxkKChhYnN0cmFjdENvbnRyb2wgYXMgYW55KVsnY29udHJvbHMnXVtjb250cm9sTmFtZV0pKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LWZvcm0tdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWZvcm0tdmlldy9zcHgtZm9ybS12aWV3LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQThCLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUF5RDlGLE1BQU0sT0FBTyxvQkFBb0I7SUF0RGpDO1FBMkRFLHFCQUFnQixHQUFHLGdCQUFnQixDQUFDLFlBQVksQ0FBQztRQUNqRCxjQUFTLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO1FBQ25DLGVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7UUFDckMsY0FBUyxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQztRQUNuQyxhQUFRLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO1FBQ2pDLHdCQUFtQixHQUFHLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDO1FBQzNELGdCQUFXLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDO1FBQ3ZDLHNCQUFpQixHQUFHLGdCQUFnQixDQUFDLGFBQWEsQ0FBQztLQTZCcEQ7SUEzQkMsTUFBTSxDQUFDLEtBQW9CO1FBQ3pCLE9BQU87SUFDVCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsV0FBNEI7UUFDM0MsZ0RBQWdEO1FBQ2hELE9BQVEsV0FBbUIsQ0FBQyxjQUFjLENBQUM7SUFDN0MsQ0FBQztJQUVELGdCQUFnQixDQUFDLGVBQWdDO1FBQy9DLElBQUksZUFBZSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzlCLE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsRUFBcUIsQ0FBQyxDQUFDO1lBQ25FLElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUN2QyxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSyxlQUF1QixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDekMsS0FBSyxNQUFNLFdBQVcsSUFBSyxlQUF1QixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQy9ELElBQUssZUFBdUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO29CQUN0RCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBRSxlQUF1QixDQUFDLFVBQVUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3QkFDN0UsT0FBTyxJQUFJLENBQUM7b0JBQ2QsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7OEdBeENVLG9CQUFvQjtrR0FBcEIsb0JBQW9CLGlMQXpDckI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQkF1Q1UsMkRBaERsQixXQUFXLHNJQUNYLG1CQUFtQixrTkFFbkIsSUFBSSw2RkFDSixLQUFLLDhHQUNMLGlCQUFpQixtREFDakIsdUJBQXVCLG9JQUN2QixpQkFBaUI7OzJGQTJDUixvQkFBb0I7a0JBdERoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO29CQUN6QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFO3dCQUNQLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixRQUFRO3dCQUNSLElBQUk7d0JBQ0osS0FBSzt3QkFDTCxpQkFBaUI7d0JBQ2pCLHVCQUF1Qjt3QkFDdkIsaUJBQWlCO3FCQUNsQjtvQkFDRCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQkF1Q1U7aUJBQ3JCOzhCQUVVLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSnNvblBpcGUsIE5nRm9yLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNweEZvcm1TZWN0aW9uSSB9IGZyb20gJy4vc3B4LWZvcm0tc2VjdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU3B4Rm9ybVNlY3Rpb25Db21wb25lbnQgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC1mb3JtLXNlY3Rpb24nO1xuaW1wb3J0IHsgU3B4SW5wdXRDb21wb25lbnQsIFNweElucHV0VHlwZUVudW0gfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC1pbnB1dHMnO1xuaW1wb3J0IHsgU3B4Q2FwaXRhbGl6ZVBpcGUgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC1jYXBpdGFsaXplJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNweEZvcm1GaWVsZEkgfSBmcm9tICcuL3NweC1mb3JtLWZpZWxkLmludGVyZmFjZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NweC1mb3JtLXZpZXcnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBKc29uUGlwZSxcbiAgICBOZ0lmLFxuICAgIE5nRm9yLFxuICAgIFNweENhcGl0YWxpemVQaXBlLFxuICAgIFNweEZvcm1TZWN0aW9uQ29tcG9uZW50LFxuICAgIFNweElucHV0Q29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZTogYDxzcHgtZm9ybS1zZWN0aW9uXG4gICAgKm5nRm9yPVwibGV0IHNweFNlY3Rpb24gb2Ygc3B4U2VjdGlvbnM7IGxldCBzcHhTZWN0aW9uSW5kZXggPSBpbmRleDtcIlxuICAgIFtzcHhTaG93VGl0bGVdPVwiIXNweFNlY3Rpb24uc2hvd1RpdGxlIHx8IHNweFNlY3Rpb24uc2hvd1RpdGxlKClcIlxuICAgIFtzcHhJbmRleF09XCJzcHhTZWN0aW9uSW5kZXggKyAxXCJcbiAgICBbc3B4VGl0bGVdPVwic3B4U2VjdGlvbi50aXRsZSA/IHNweFNlY3Rpb24udGl0bGUoKSA6IHVuZGVmaW5lZFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHNweEZpZWxkIG9mIHNweFNlY3Rpb24uZmllbGRzOyBsZXQgc3B4RmllbGRJbmRleCA9IGluZGV4O1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNweEZpZWxkLnNob3cgPT09IHVuZGVmaW5lZCB8fCBzcHhGaWVsZC5zaG93KClcIj5cbiAgICAgICAgPHNweC1pbnB1dFxuICAgICAgICAgICpuZ0lmPVwic3B4RmllbGQudHlwZSgpID09PSB0eXBlT3ZlcmxheSB8fCBzcHhGaWVsZC50eXBlKCkgPT09IHR5cGVPdmVybGF5TnVtYmVyIHx8IHNweEZpZWxkLnR5cGUoKSA9PT0gdHlwZUZsb2F0IHx8IHNweEZpZWxkLnR5cGUoKSA9PT0gdHlwZU51bWJlciB8fCBzcHhGaWVsZC50eXBlKCkgPT09IHR5cGVUZXh0IHx8IHNweEZpZWxkLnR5cGUoKSA9PT0gdHlwZUF1dG9jb21wbGV0ZSB8fCBzcHhGaWVsZC50eXBlKCkgPT09IHR5cGVOdW1lcmljS2V5Ym9hcmRcIlxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCIkYW55KHRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpKVwiXG4gICAgICAgICAgW3NweEF1dG9mb2N1c109XCJzcHhGaWVsZC5hdXRvZm9jdXMgPyBzcHhGaWVsZC5hdXRvZm9jdXMoKSA6IGZhbHNlXCJcbiAgICAgICAgICBbc3B4Q2FwaXRhbGl6ZV09XCJzcHhGaWVsZC5jYXBpdGFsaXplID8gc3B4RmllbGQuY2FwaXRhbGl6ZSgpIDogZmFsc2VcIlxuICAgICAgICAgIFtzcHhMYWJlbF09XCIoc3B4RmllbGQubGFiZWwgPyBzcHhGaWVsZC5sYWJlbCgpIDogc3B4RmllbGQua2V5KSB8IGNhcGl0YWxpemVcIlxuICAgICAgICAgIFtzcHhQYXR0ZXJuXT1cInNweEZpZWxkLnR5cGUoKSA9PT0gdHlwZU51bWVyaWNLZXlib2FyZCA/ICdcXFxcZConIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICBbc3B4UmVhZG9ubHldPVwic3B4RmllbGQucmVhZG9ubHkgPyBzcHhGaWVsZC5yZWFkb25seSgpIDogZmFsc2VcIlxuICAgICAgICAgIFtzcHhSZXF1aXJlZF09XCJoYXNSZXF1aXJlZEZpZWxkKHRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpISlcIlxuICAgICAgICAgIFtzcHhTaG93SGVscF09XCJmYWxzZVwiXG4gICAgICAgICAgW3NweFNob3dWYWxpZGF0aW9uTWVzc2FnZXNdPVwidGhpcy5zcHhGb3JtR3JvdXAuZ2V0KHNweEZpZWxkLmtleSkhICYmIHRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpIS5lcnJvcnMgJiYgdGhpcy5zcHhGb3JtR3JvdXAuZ2V0KHNweEZpZWxkLmtleSkhLnRvdWNoZWRcIlxuICAgICAgICAgIFtzcHhTdGVwXT1cInNweEZpZWxkLnN0ZXAgPyBzcHhGaWVsZC5zdGVwKCkgOiB1bmRlZmluZWRcIlxuICAgICAgICAgIFtzcHhUeXBlXT1cInNweEZpZWxkLnR5cGUoKVwiXG4gICAgICAgICAgW3NweFZhbGlkYXRvcnNdPVwiZ2V0UmF3VmFsaWRhdG9ycyh0aGlzLnNweEZvcm1Hcm91cC5nZXQoc3B4RmllbGQua2V5KSEpXCJcbiAgICAgICAgICBbc3B4U3VnZ2VzdGlvbnNdPVwic3B4RmllbGQuc3VnZ2VzdGlvbnNGaXhlZCA/IHNweEZpZWxkLnN1Z2dlc3Rpb25zRml4ZWQoKSA6IHRoaXMuc3B4U3VnZ2VzdGlvbnNbc3B4RmllbGQua2V5XVwiXG4gICAgICAgICAgKHNweEJsdXIpPVwib25CbHVyKHNweEZpZWxkKVwiPlxuICAgICAgICA8L3NweC1pbnB1dD5cblxuICAgICAgICA8c3B4LWlucHV0XG4gICAgICAgICAgKm5nSWY9XCJzcHhGaWVsZC50eXBlKCkgPT09IHR5cGVSYWRpb1wiXG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cIiRhbnkodGhpcy5zcHhGb3JtR3JvdXAuZ2V0KHNweEZpZWxkLmtleSkpXCJcbiAgICAgICAgICBbc3B4TGFiZWxdPVwiKHNweEZpZWxkLmxhYmVsID8gc3B4RmllbGQubGFiZWwoKSA6IHNweEZpZWxkLmtleSkgfCBjYXBpdGFsaXplXCJcbiAgICAgICAgICBbc3B4UmVhZG9ubHldPVwic3B4RmllbGQucmVhZG9ubHkgPyBzcHhGaWVsZC5yZWFkb25seSgpIDogZmFsc2VcIlxuICAgICAgICAgIFtzcHhSZXF1aXJlZF09XCJoYXNSZXF1aXJlZEZpZWxkKHRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpISlcIlxuICAgICAgICAgIFtzcHhTaG93SGVscF09XCJmYWxzZVwiXG4gICAgICAgICAgW3NweFNob3dWYWxpZGF0aW9uTWVzc2FnZXNdPVwidGhpcy5zcHhGb3JtR3JvdXAuZ2V0KHNweEZpZWxkLmtleSkhICYmIHRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpIS5lcnJvcnMgJiYgdGhpcy5zcHhGb3JtR3JvdXAuZ2V0KHNweEZpZWxkLmtleSkhLnRvdWNoZWRcIlxuICAgICAgICAgIFtzcHhTdWdnZXN0aW9uc109XCJzcHhGaWVsZC5zdWdnZXN0aW9uc0ZpeGVkID8gc3B4RmllbGQuc3VnZ2VzdGlvbnNGaXhlZCgpIDogdGhpcy5zcHhTdWdnZXN0aW9uc1tzcHhGaWVsZC5rZXldXCJcbiAgICAgICAgICBbc3B4VHlwZV09XCJ0eXBlUmFkaW9cIlxuICAgICAgICAgIFtzcHhWYWxpZGF0b3JzXT1cImdldFJhd1ZhbGlkYXRvcnModGhpcy5zcHhGb3JtR3JvdXAuZ2V0KHNweEZpZWxkLmtleSkhKVwiPlxuICAgICAgICA8L3NweC1pbnB1dD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L3NweC1mb3JtLXNlY3Rpb24+YCxcbn0pXG5leHBvcnQgY2xhc3MgU3B4Rm9ybVZpZXdDb21wb25lbnQge1xuICBASW5wdXQoKSBzcHhGb3JtR3JvdXAhOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIHNweFNlY3Rpb25zITogU3B4Rm9ybVNlY3Rpb25JW107XG4gIEBJbnB1dCgpIHNweFN1Z2dlc3Rpb25zITogYW55O1xuXG4gIHR5cGVBdXRvY29tcGxldGUgPSBTcHhJbnB1dFR5cGVFbnVtLmF1dG9jb21wbGV0ZTtcbiAgdHlwZUZsb2F0ID0gU3B4SW5wdXRUeXBlRW51bS5mbG9hdDtcbiAgdHlwZU51bWJlciA9IFNweElucHV0VHlwZUVudW0ubnVtYmVyO1xuICB0eXBlUmFkaW8gPSBTcHhJbnB1dFR5cGVFbnVtLnJhZGlvO1xuICB0eXBlVGV4dCA9IFNweElucHV0VHlwZUVudW0udGV4dDtcbiAgdHlwZU51bWVyaWNLZXlib2FyZCA9IFNweElucHV0VHlwZUVudW0udGV4dE51bWVyaWNLZXlib2FyZDtcbiAgdHlwZU92ZXJsYXkgPSBTcHhJbnB1dFR5cGVFbnVtLm92ZXJsYXk7XG4gIHR5cGVPdmVybGF5TnVtYmVyID0gU3B4SW5wdXRUeXBlRW51bS5vdmVybGF5TnVtYmVyO1xuXG4gIG9uQmx1cihmaWVsZDogU3B4Rm9ybUZpZWxkSSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGdldFJhd1ZhbGlkYXRvcnMoZm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlcnNjb3JlLWRhbmdsZVxuICAgIHJldHVybiAoZm9ybUNvbnRyb2wgYXMgYW55KS5fcmF3VmFsaWRhdG9ycztcbiAgfVxuXG4gIGhhc1JlcXVpcmVkRmllbGQoYWJzdHJhY3RDb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBib29sZWFuIHtcbiAgICBpZiAoYWJzdHJhY3RDb250cm9sLnZhbGlkYXRvcikge1xuICAgICAgY29uc3QgdmFsaWRhdG9yID0gYWJzdHJhY3RDb250cm9sLnZhbGlkYXRvcih7fSBhcyBBYnN0cmFjdENvbnRyb2wpO1xuICAgICAgaWYgKHZhbGlkYXRvciAmJiB2YWxpZGF0b3JbJ3JlcXVpcmVkJ10pIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICgoYWJzdHJhY3RDb250cm9sIGFzIGFueSlbJ2NvbnRyb2xzJ10pIHtcbiAgICAgIGZvciAoY29uc3QgY29udHJvbE5hbWUgaW4gKGFic3RyYWN0Q29udHJvbCBhcyBhbnkpWydjb250cm9scyddKSB7XG4gICAgICAgIGlmICgoYWJzdHJhY3RDb250cm9sIGFzIGFueSlbJ2NvbnRyb2xzJ11bY29udHJvbE5hbWVdKSB7XG4gICAgICAgICAgaWYgKHRoaXMuaGFzUmVxdWlyZWRGaWVsZCgoYWJzdHJhY3RDb250cm9sIGFzIGFueSlbJ2NvbnRyb2xzJ11bY29udHJvbE5hbWVdKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19
@@ -13,12 +13,15 @@ const sectionChangeDetails = 'changeDetails';
13
13
  const ctrlContainerType = 'containerType';
14
14
  const ctrlTonsTested = 'tonsTested';
15
15
  const ctrlLicensePlate = 'licensePlate';
16
+ const ctrlCategory = 'category';
16
17
  class SpxChangeDetailsComponent {
18
+ get ctrlCategory() { return this.formGroup.get(ctrlCategory); }
17
19
  get ctrlContainerType() { return this.formGroup.get(ctrlContainerType); }
18
20
  get ctrlLicensePlate() { return this.formGroup.get(ctrlLicensePlate); }
19
21
  get ctrlTonsTested() { return this.formGroup.get(ctrlTonsTested); }
20
22
  constructor(formBuilder) {
21
23
  this.formBuilder = formBuilder;
24
+ this.showCategory = false;
22
25
  this.suggestions = {};
23
26
  this.submit = new EventEmitter();
24
27
  this.inputTypeAutocomplete = SpxInputTypeEnum.autocomplete;
@@ -28,6 +31,7 @@ class SpxChangeDetailsComponent {
28
31
  this.sections = [
29
32
  {
30
33
  key: sectionChangeDetails,
34
+ showTitle: () => false,
31
35
  fields: [
32
36
  {
33
37
  key: ctrlContainerType,
@@ -42,18 +46,30 @@ class SpxChangeDetailsComponent {
42
46
  key: ctrlTonsTested,
43
47
  type: () => SpxInputTypeEnum.radio,
44
48
  label: () => this.txtTonsTested,
45
- show: () => this.suggestions?.[ctrlTonsTested]
49
+ show: () => this.suggestions?.[ctrlTonsTested] && this.suggestions?.[ctrlTonsTested].length && this.suggestions?.[ctrlTonsTested].length > 0
46
50
  },
47
51
  {
48
52
  key: ctrlLicensePlate,
49
53
  type: () => SpxInputTypeEnum.text,
50
54
  label: () => this.txtLicensePlate,
51
55
  capitalize: () => true,
56
+ },
57
+ {
58
+ key: ctrlCategory,
59
+ type: () => SpxInputTypeEnum.text,
60
+ label: () => this.txtCategory,
61
+ capitalize: () => true,
62
+ show: () => this.showCategory,
63
+ validators: () => this.showCategory ? [spxValidatorRequired()] : [],
52
64
  }
53
65
  ]
54
66
  }
55
67
  ];
56
68
  this.formGroup = this.formBuilder.group({
69
+ [ctrlCategory]: [null, this.showCategory ? [
70
+ spxValidatorRequired()
71
+ ] : []
72
+ ],
57
73
  [ctrlContainerType]: [null, [
58
74
  spxValidatorRequired(),
59
75
  ]],
@@ -65,6 +81,9 @@ class SpxChangeDetailsComponent {
65
81
  this.ctrlContainerType.setValue(this.value.containerType);
66
82
  this.ctrlLicensePlate.setValue(this.value.licensePlate);
67
83
  this.ctrlTonsTested.setValue(this.value.tonsTested);
84
+ if (this.value.category) {
85
+ this.ctrlCategory.setValue(this.value.category);
86
+ }
68
87
  }
69
88
  ngOnDestroy() {
70
89
  if (this.inputChanges) {
@@ -76,13 +95,14 @@ class SpxChangeDetailsComponent {
76
95
  }
77
96
  onSubmit() {
78
97
  this.submit.emit({
98
+ category: this.ctrlCategory.value,
79
99
  containerType: this.ctrlContainerType.value,
80
100
  licensePlate: this.ctrlLicensePlate.value,
81
101
  tonsTested: this.ctrlTonsTested.value,
82
102
  });
83
103
  }
84
104
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SpxChangeDetailsComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
85
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: SpxChangeDetailsComponent, isStandalone: true, selector: "spx-change-details", inputs: { value: "value", txtContainerType: "txtContainerType", txtLicensePlate: "txtLicensePlate", txtTonsTested: "txtTonsTested", suggestions: "suggestions" }, outputs: { submit: "submit" }, ngImport: i0, template: "<form [formGroup]=\"formGroup\" class=\"max-w-lg mx-auto flex flex-col gap-3\" (ngSubmit)=\"onSubmit()\">\n <spx-form-view\n [spxFormGroup]=\"formGroup\"\n [spxSections]=\"sections\"\n [spxSuggestions]=\"suggestions\">\n </spx-form-view>\n <spx-button\n [spxFullWidth]=\"true\"\n [spxSeverity]=\"severitySuccess\">\n Save\n </spx-button>\n</form>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: SpxButtonComponent, selector: "spx-button", inputs: ["spxDisabled", "spxClass", "spxClassObject", "spxForm", "spxFullHeight", "spxFullWidth", "spxSeverity", "spxSize", "spxTabIndex", "spxType"], outputs: ["spxClick"] }, { kind: "component", type: SpxFormViewComponent, selector: "spx-form-view", inputs: ["spxFormGroup", "spxSections", "spxSuggestions"] }, { kind: "ngmodule", type: SpxValidationModule }] }); }
105
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: SpxChangeDetailsComponent, isStandalone: true, selector: "spx-change-details", inputs: { value: "value", showCategory: "showCategory", txtCategory: "txtCategory", txtContainerType: "txtContainerType", txtLicensePlate: "txtLicensePlate", txtTonsTested: "txtTonsTested", suggestions: "suggestions" }, outputs: { submit: "submit" }, ngImport: i0, template: "<form [formGroup]=\"formGroup\" class=\"max-w-lg mx-auto flex flex-col gap-3\" (ngSubmit)=\"onSubmit()\">\n <spx-form-view\n [spxFormGroup]=\"formGroup\"\n [spxSections]=\"sections\"\n [spxSuggestions]=\"suggestions\">\n </spx-form-view>\n <spx-button\n [spxFullWidth]=\"true\"\n [spxSeverity]=\"severitySuccess\">\n Save\n </spx-button>\n</form>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: SpxButtonComponent, selector: "spx-button", inputs: ["spxDisabled", "spxClass", "spxClassObject", "spxForm", "spxFullHeight", "spxFullWidth", "spxSeverity", "spxSize", "spxTabIndex", "spxType"], outputs: ["spxClick"] }, { kind: "component", type: SpxFormViewComponent, selector: "spx-form-view", inputs: ["spxFormGroup", "spxSections", "spxSuggestions"] }, { kind: "ngmodule", type: SpxValidationModule }] }); }
86
106
  }
87
107
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SpxChangeDetailsComponent, decorators: [{
88
108
  type: Component,
@@ -97,6 +117,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
97
117
  ], template: "<form [formGroup]=\"formGroup\" class=\"max-w-lg mx-auto flex flex-col gap-3\" (ngSubmit)=\"onSubmit()\">\n <spx-form-view\n [spxFormGroup]=\"formGroup\"\n [spxSections]=\"sections\"\n [spxSuggestions]=\"suggestions\">\n </spx-form-view>\n <spx-button\n [spxFullWidth]=\"true\"\n [spxSeverity]=\"severitySuccess\">\n Save\n </spx-button>\n</form>" }]
98
118
  }], ctorParameters: () => [{ type: i1.FormBuilder }], propDecorators: { value: [{
99
119
  type: Input
120
+ }], showCategory: [{
121
+ type: Input
122
+ }], txtCategory: [{
123
+ type: Input
100
124
  }], txtContainerType: [{
101
125
  type: Input
102
126
  }], txtLicensePlate: [{
@@ -1 +1 @@
1
- {"version":3,"file":"softpak-components-spx-change-details.mjs","sources":["../../../../projects/softpak/components/spx-change-details/spx-change-details.component.ts","../../../../projects/softpak/components/spx-change-details/spx-change-details.component.html","../../../../projects/softpak/components/spx-change-details/softpak-components-spx-change-details.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { spxValidatorRequired, SpxValidationModule } from '@softpak/components/spx-validation';\nimport { CommonModule } from '@angular/common';\nimport { SpxInputComponent, SpxInputTypeEnum } from '@softpak/components/spx-inputs';\nimport { SpxFormSectionI, SpxFormViewComponent } from '@softpak/components/spx-form-view';\nimport { SpxButtonComponent } from '@softpak/components/spx-button';\nimport { SpxSeverityEnum } from '@softpak/components/spx-helpers';\nimport { SpxChangeDetailsValueI } from './spx-change-details-value.interface';\n\nconst sectionChangeDetails = 'changeDetails';\nconst ctrlContainerType = 'containerType';\nconst ctrlTonsTested = 'tonsTested';\nconst ctrlLicensePlate = 'licensePlate';\n\n@Component({\n selector: 'spx-change-details',\n templateUrl: './spx-change-details.component.html',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SpxButtonComponent,\n SpxFormViewComponent,\n SpxInputComponent,\n SpxValidationModule,\n ]\n})\nexport class SpxChangeDetailsComponent {\n @Input() value!: SpxChangeDetailsValueI;\n @Input() txtContainerType!: string;\n @Input() txtLicensePlate!: string;\n @Input() txtTonsTested!: string;\n @Input() suggestions: any = {};\n @Output() submit: EventEmitter<SpxChangeDetailsValueI> = new EventEmitter<SpxChangeDetailsValueI>();\n inputTypeAutocomplete = SpxInputTypeEnum.autocomplete;\n inputTypeRadio = SpxInputTypeEnum.radio;\n inputTypeText = SpxInputTypeEnum.text;\n formGroup: FormGroup;\n severitySuccess = SpxSeverityEnum.success;\n \n sections: SpxFormSectionI[] = [\n {\n key: sectionChangeDetails,\n fields: [\n {\n key: ctrlContainerType,\n type: () => SpxInputTypeEnum.text,\n label: () => this.txtContainerType,\n capitalize: () => true,\n afterValueChange: () => {\n this.ctrlTonsTested.setValue(null);\n },\n },\n {\n key: ctrlTonsTested,\n type: () => SpxInputTypeEnum.radio,\n label: () => this.txtTonsTested,\n show: () => this.suggestions?.[ctrlTonsTested]\n },\n {\n key: ctrlLicensePlate,\n type: () => SpxInputTypeEnum.text,\n label: () => this.txtLicensePlate,\n capitalize: () => true,\n }\n ]\n }\n ];\n\n get ctrlContainerType(): FormControl { return this.formGroup.get(ctrlContainerType) as FormControl; }\n get ctrlLicensePlate(): FormControl { return this.formGroup.get(ctrlLicensePlate) as FormControl; }\n get ctrlTonsTested(): FormControl { return this.formGroup.get(ctrlTonsTested) as FormControl; }\n\n private inputChanges?: Subscription;\n\n constructor(\n private readonly formBuilder: FormBuilder,\n ) {\n this.formGroup = this.formBuilder.group({\n [ctrlContainerType]: [null, [\n spxValidatorRequired(),\n ]],\n [ctrlTonsTested]: [null, [\n ]],\n [ctrlLicensePlate]: [null, [\n ]],\n })\n }\n\n ngOnInit(): void {\n this.ctrlContainerType.setValue(this.value.containerType);\n this.ctrlLicensePlate.setValue(this.value.licensePlate);\n this.ctrlTonsTested.setValue(this.value.tonsTested);\n }\n\n ngOnDestroy(): void {\n if (this.inputChanges) {\n this.inputChanges.unsubscribe();\n }\n }\n\n getRawValidators(formControl: FormControl) {\n return (formControl as any)._rawValidators;\n }\n\n onSubmit(): void {\n this.submit.emit({\n containerType: this.ctrlContainerType.value,\n licensePlate: this.ctrlLicensePlate.value,\n tonsTested: this.ctrlTonsTested.value,\n })\n }\n}\n","<form [formGroup]=\"formGroup\" class=\"max-w-lg mx-auto flex flex-col gap-3\" (ngSubmit)=\"onSubmit()\">\n <spx-form-view\n [spxFormGroup]=\"formGroup\"\n [spxSections]=\"sections\"\n [spxSuggestions]=\"suggestions\">\n </spx-form-view>\n <spx-button\n [spxFullWidth]=\"true\"\n [spxSeverity]=\"severitySuccess\">\n Save\n </spx-button>\n</form>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"softpak-components-spx-change-details.mjs","sources":["../../../../projects/softpak/components/spx-change-details/spx-change-details.component.ts","../../../../projects/softpak/components/spx-change-details/spx-change-details.component.html","../../../../projects/softpak/components/spx-change-details/softpak-components-spx-change-details.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { spxValidatorRequired, SpxValidationModule } from '@softpak/components/spx-validation';\nimport { CommonModule } from '@angular/common';\nimport { SpxInputComponent, SpxInputTypeEnum } from '@softpak/components/spx-inputs';\nimport { SpxFormSectionI, SpxFormViewComponent } from '@softpak/components/spx-form-view';\nimport { SpxButtonComponent } from '@softpak/components/spx-button';\nimport { SpxSeverityEnum } from '@softpak/components/spx-helpers';\nimport { SpxChangeDetailsValueI } from './spx-change-details-value.interface';\n\nconst sectionChangeDetails = 'changeDetails';\nconst ctrlContainerType = 'containerType';\nconst ctrlTonsTested = 'tonsTested';\nconst ctrlLicensePlate = 'licensePlate';\nconst ctrlCategory = 'category';\n\n@Component({\n selector: 'spx-change-details',\n templateUrl: './spx-change-details.component.html',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SpxButtonComponent,\n SpxFormViewComponent,\n SpxInputComponent,\n SpxValidationModule,\n ]\n})\nexport class SpxChangeDetailsComponent {\n @Input() value!: SpxChangeDetailsValueI;\n @Input() showCategory = false;\n @Input() txtCategory!: string;\n @Input() txtContainerType!: string;\n @Input() txtLicensePlate!: string;\n @Input() txtTonsTested!: string;\n @Input() suggestions: any = {};\n @Output() submit: EventEmitter<SpxChangeDetailsValueI> = new EventEmitter<SpxChangeDetailsValueI>();\n inputTypeAutocomplete = SpxInputTypeEnum.autocomplete;\n inputTypeRadio = SpxInputTypeEnum.radio;\n inputTypeText = SpxInputTypeEnum.text;\n formGroup: FormGroup;\n severitySuccess = SpxSeverityEnum.success;\n \n sections: SpxFormSectionI[] = [\n {\n key: sectionChangeDetails,\n showTitle: () => false,\n fields: [\n {\n key: ctrlContainerType,\n type: () => SpxInputTypeEnum.text,\n label: () => this.txtContainerType,\n capitalize: () => true,\n afterValueChange: () => {\n this.ctrlTonsTested.setValue(null);\n },\n },\n {\n key: ctrlTonsTested,\n type: () => SpxInputTypeEnum.radio,\n label: () => this.txtTonsTested,\n show: () => this.suggestions?.[ctrlTonsTested] && this.suggestions?.[ctrlTonsTested].length && this.suggestions?.[ctrlTonsTested].length > 0\n },\n {\n key: ctrlLicensePlate,\n type: () => SpxInputTypeEnum.text,\n label: () => this.txtLicensePlate,\n capitalize: () => true,\n },\n {\n key: ctrlCategory,\n type: () => SpxInputTypeEnum.text,\n label: () => this.txtCategory,\n capitalize: () => true,\n show: () => this.showCategory,\n validators: () => this.showCategory ? [spxValidatorRequired()] : [],\n }\n ]\n }\n ];\n\n get ctrlCategory(): FormControl { return this.formGroup.get(ctrlCategory) as FormControl; }\n get ctrlContainerType(): FormControl { return this.formGroup.get(ctrlContainerType) as FormControl; }\n get ctrlLicensePlate(): FormControl { return this.formGroup.get(ctrlLicensePlate) as FormControl; }\n get ctrlTonsTested(): FormControl { return this.formGroup.get(ctrlTonsTested) as FormControl; }\n\n private inputChanges?: Subscription;\n\n constructor(\n private readonly formBuilder: FormBuilder,\n ) {\n this.formGroup = this.formBuilder.group({\n [ctrlCategory]: [null, this.showCategory ? [\n spxValidatorRequired()] : []\n ],\n [ctrlContainerType]: [null, [\n spxValidatorRequired(),\n ]],\n [ctrlTonsTested]: [null, [\n ]],\n [ctrlLicensePlate]: [null, [\n ]],\n })\n }\n\n ngOnInit(): void {\n this.ctrlContainerType.setValue(this.value.containerType);\n this.ctrlLicensePlate.setValue(this.value.licensePlate);\n this.ctrlTonsTested.setValue(this.value.tonsTested);\n if (this.value.category) {\n this.ctrlCategory.setValue(this.value.category);\n }\n }\n\n ngOnDestroy(): void {\n if (this.inputChanges) {\n this.inputChanges.unsubscribe();\n }\n }\n\n getRawValidators(formControl: FormControl) {\n return (formControl as any)._rawValidators;\n }\n\n onSubmit(): void {\n this.submit.emit({\n category: this.ctrlCategory.value,\n containerType: this.ctrlContainerType.value,\n licensePlate: this.ctrlLicensePlate.value,\n tonsTested: this.ctrlTonsTested.value,\n })\n }\n}\n","<form [formGroup]=\"formGroup\" class=\"max-w-lg mx-auto flex flex-col gap-3\" (ngSubmit)=\"onSubmit()\">\n <spx-form-view\n [spxFormGroup]=\"formGroup\"\n [spxSections]=\"sections\"\n [spxSuggestions]=\"suggestions\">\n </spx-form-view>\n <spx-button\n [spxFullWidth]=\"true\"\n [spxSeverity]=\"severitySuccess\">\n Save\n </spx-button>\n</form>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -46,40 +46,42 @@ class SpxFormViewComponent {
46
46
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SpxFormViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
47
47
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: SpxFormViewComponent, isStandalone: true, selector: "spx-form-view", inputs: { spxFormGroup: "spxFormGroup", spxSections: "spxSections", spxSuggestions: "spxSuggestions" }, ngImport: i0, template: `<spx-form-section
48
48
  *ngFor="let spxSection of spxSections; let spxSectionIndex = index;"
49
+ [spxShowTitle]="!spxSection.showTitle || spxSection.showTitle()"
49
50
  [spxIndex]="spxSectionIndex + 1"
50
51
  [spxTitle]="spxSection.title ? spxSection.title() : undefined">
51
52
  <ng-container *ngFor="let spxField of spxSection.fields; let spxFieldIndex = index;">
52
- <spx-input
53
- *ngIf="spxField.type() === typeOverlay || spxField.type() === typeOverlayNumber || spxField.type() === typeFloat || spxField.type() === typeNumber || spxField.type() === typeText || spxField.type() === typeAutocomplete || spxField.type() === typeNumericKeyboard"
54
- [formControl]="$any(this.spxFormGroup.get(spxField.key))"
55
- [spxAutofocus]="spxField.autofocus ? spxField.autofocus() : false"
56
- [spxCapitalize]="spxField.capitalize ? spxField.capitalize() : false"
57
- [spxLabel]="spxField.key | capitalize"
58
- [spxPattern]="spxField.type() === typeNumericKeyboard ? '\\d*' : undefined"
59
- [spxReadonly]="spxField.readonly ? spxField.readonly() : false"
60
- [spxRequired]="hasRequiredField(this.spxFormGroup.get(spxField.key)!)"
61
- [spxShowHelp]="false"
62
- [spxShowValidationMessages]="this.spxFormGroup.get(spxField.key)! && this.spxFormGroup.get(spxField.key)!.errors && this.spxFormGroup.get(spxField.key)!.touched"
63
- [spxStep]="spxField.step ? spxField.step() : undefined"
64
- [spxType]="spxField.type()"
65
- [spxValidators]="getRawValidators(this.spxFormGroup.get(spxField.key)!)"
66
- [spxSuggestions]="spxField.suggestionsFixed ? spxField.suggestionsFixed() : this.spxSuggestions[spxField.key]"
67
- (spxBlur)="onBlur(spxField)">
68
- </spx-input>
69
-
70
- <spx-input
71
- *ngIf="spxField.type() === typeRadio"
72
- [formControl]="$any(this.spxFormGroup.get(spxField.key))"
73
- [spxLabel]="spxField.key | capitalize"
74
- [spxReadonly]="spxField.readonly ? spxField.readonly() : false"
75
- [spxRequired]="hasRequiredField(this.spxFormGroup.get(spxField.key)!)"
76
- [spxShowHelp]="false"
77
- [spxShowValidationMessages]="this.spxFormGroup.get(spxField.key)! && this.spxFormGroup.get(spxField.key)!.errors && this.spxFormGroup.get(spxField.key)!.touched"
78
- [spxSuggestions]="spxField.suggestionsFixed ? spxField.suggestionsFixed() : this.spxSuggestions[spxField.key]"
79
- [spxType]="typeRadio"
80
- [spxValidators]="getRawValidators(this.spxFormGroup.get(spxField.key)!)">
81
- </spx-input>
53
+ <ng-container *ngIf="spxField.show === undefined || spxField.show()">
54
+ <spx-input
55
+ *ngIf="spxField.type() === typeOverlay || spxField.type() === typeOverlayNumber || spxField.type() === typeFloat || spxField.type() === typeNumber || spxField.type() === typeText || spxField.type() === typeAutocomplete || spxField.type() === typeNumericKeyboard"
56
+ [formControl]="$any(this.spxFormGroup.get(spxField.key))"
57
+ [spxAutofocus]="spxField.autofocus ? spxField.autofocus() : false"
58
+ [spxCapitalize]="spxField.capitalize ? spxField.capitalize() : false"
59
+ [spxLabel]="(spxField.label ? spxField.label() : spxField.key) | capitalize"
60
+ [spxPattern]="spxField.type() === typeNumericKeyboard ? '\\d*' : undefined"
61
+ [spxReadonly]="spxField.readonly ? spxField.readonly() : false"
62
+ [spxRequired]="hasRequiredField(this.spxFormGroup.get(spxField.key)!)"
63
+ [spxShowHelp]="false"
64
+ [spxShowValidationMessages]="this.spxFormGroup.get(spxField.key)! && this.spxFormGroup.get(spxField.key)!.errors && this.spxFormGroup.get(spxField.key)!.touched"
65
+ [spxStep]="spxField.step ? spxField.step() : undefined"
66
+ [spxType]="spxField.type()"
67
+ [spxValidators]="getRawValidators(this.spxFormGroup.get(spxField.key)!)"
68
+ [spxSuggestions]="spxField.suggestionsFixed ? spxField.suggestionsFixed() : this.spxSuggestions[spxField.key]"
69
+ (spxBlur)="onBlur(spxField)">
70
+ </spx-input>
82
71
 
72
+ <spx-input
73
+ *ngIf="spxField.type() === typeRadio"
74
+ [formControl]="$any(this.spxFormGroup.get(spxField.key))"
75
+ [spxLabel]="(spxField.label ? spxField.label() : spxField.key) | capitalize"
76
+ [spxReadonly]="spxField.readonly ? spxField.readonly() : false"
77
+ [spxRequired]="hasRequiredField(this.spxFormGroup.get(spxField.key)!)"
78
+ [spxShowHelp]="false"
79
+ [spxShowValidationMessages]="this.spxFormGroup.get(spxField.key)! && this.spxFormGroup.get(spxField.key)!.errors && this.spxFormGroup.get(spxField.key)!.touched"
80
+ [spxSuggestions]="spxField.suggestionsFixed ? spxField.suggestionsFixed() : this.spxSuggestions[spxField.key]"
81
+ [spxType]="typeRadio"
82
+ [spxValidators]="getRawValidators(this.spxFormGroup.get(spxField.key)!)">
83
+ </spx-input>
84
+ </ng-container>
83
85
  </ng-container>
84
86
  </spx-form-section>`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: SpxCapitalizePipe, name: "capitalize" }, { kind: "component", type: SpxFormSectionComponent, selector: "spx-form-section", inputs: ["spxIndex", "spxIndexSecondary", "spxTitle", "spxShowTitle"] }, { kind: "component", type: SpxInputComponent, selector: "spx-input", inputs: ["spxLabel", "spxMax", "spxMin", "spxName", "spxReadonly", "spxAutofocus", "spxInputMode", "spxPattern", "spxRequired", "spxSelectMonth", "spxSelectDay", "spxShowEdit", "spxShowHelp", "spxCompact", "spxShowClear", "spxShowSearch", "spxShowValidationMessages", "spxStep", "spxSuggestions", "spxType", "spxValidators", "value", "spxCapitalize", "spxFocused"], outputs: ["spxBlur", "spxClear", "spxChange", "spxFocus", "spxEdit", "spxHelp", "spxSearch"] }] }); }
85
87
  }
@@ -100,40 +102,42 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
100
102
  ],
101
103
  template: `<spx-form-section
102
104
  *ngFor="let spxSection of spxSections; let spxSectionIndex = index;"
105
+ [spxShowTitle]="!spxSection.showTitle || spxSection.showTitle()"
103
106
  [spxIndex]="spxSectionIndex + 1"
104
107
  [spxTitle]="spxSection.title ? spxSection.title() : undefined">
105
108
  <ng-container *ngFor="let spxField of spxSection.fields; let spxFieldIndex = index;">
106
- <spx-input
107
- *ngIf="spxField.type() === typeOverlay || spxField.type() === typeOverlayNumber || spxField.type() === typeFloat || spxField.type() === typeNumber || spxField.type() === typeText || spxField.type() === typeAutocomplete || spxField.type() === typeNumericKeyboard"
108
- [formControl]="$any(this.spxFormGroup.get(spxField.key))"
109
- [spxAutofocus]="spxField.autofocus ? spxField.autofocus() : false"
110
- [spxCapitalize]="spxField.capitalize ? spxField.capitalize() : false"
111
- [spxLabel]="spxField.key | capitalize"
112
- [spxPattern]="spxField.type() === typeNumericKeyboard ? '\\d*' : undefined"
113
- [spxReadonly]="spxField.readonly ? spxField.readonly() : false"
114
- [spxRequired]="hasRequiredField(this.spxFormGroup.get(spxField.key)!)"
115
- [spxShowHelp]="false"
116
- [spxShowValidationMessages]="this.spxFormGroup.get(spxField.key)! && this.spxFormGroup.get(spxField.key)!.errors && this.spxFormGroup.get(spxField.key)!.touched"
117
- [spxStep]="spxField.step ? spxField.step() : undefined"
118
- [spxType]="spxField.type()"
119
- [spxValidators]="getRawValidators(this.spxFormGroup.get(spxField.key)!)"
120
- [spxSuggestions]="spxField.suggestionsFixed ? spxField.suggestionsFixed() : this.spxSuggestions[spxField.key]"
121
- (spxBlur)="onBlur(spxField)">
122
- </spx-input>
123
-
124
- <spx-input
125
- *ngIf="spxField.type() === typeRadio"
126
- [formControl]="$any(this.spxFormGroup.get(spxField.key))"
127
- [spxLabel]="spxField.key | capitalize"
128
- [spxReadonly]="spxField.readonly ? spxField.readonly() : false"
129
- [spxRequired]="hasRequiredField(this.spxFormGroup.get(spxField.key)!)"
130
- [spxShowHelp]="false"
131
- [spxShowValidationMessages]="this.spxFormGroup.get(spxField.key)! && this.spxFormGroup.get(spxField.key)!.errors && this.spxFormGroup.get(spxField.key)!.touched"
132
- [spxSuggestions]="spxField.suggestionsFixed ? spxField.suggestionsFixed() : this.spxSuggestions[spxField.key]"
133
- [spxType]="typeRadio"
134
- [spxValidators]="getRawValidators(this.spxFormGroup.get(spxField.key)!)">
135
- </spx-input>
109
+ <ng-container *ngIf="spxField.show === undefined || spxField.show()">
110
+ <spx-input
111
+ *ngIf="spxField.type() === typeOverlay || spxField.type() === typeOverlayNumber || spxField.type() === typeFloat || spxField.type() === typeNumber || spxField.type() === typeText || spxField.type() === typeAutocomplete || spxField.type() === typeNumericKeyboard"
112
+ [formControl]="$any(this.spxFormGroup.get(spxField.key))"
113
+ [spxAutofocus]="spxField.autofocus ? spxField.autofocus() : false"
114
+ [spxCapitalize]="spxField.capitalize ? spxField.capitalize() : false"
115
+ [spxLabel]="(spxField.label ? spxField.label() : spxField.key) | capitalize"
116
+ [spxPattern]="spxField.type() === typeNumericKeyboard ? '\\d*' : undefined"
117
+ [spxReadonly]="spxField.readonly ? spxField.readonly() : false"
118
+ [spxRequired]="hasRequiredField(this.spxFormGroup.get(spxField.key)!)"
119
+ [spxShowHelp]="false"
120
+ [spxShowValidationMessages]="this.spxFormGroup.get(spxField.key)! && this.spxFormGroup.get(spxField.key)!.errors && this.spxFormGroup.get(spxField.key)!.touched"
121
+ [spxStep]="spxField.step ? spxField.step() : undefined"
122
+ [spxType]="spxField.type()"
123
+ [spxValidators]="getRawValidators(this.spxFormGroup.get(spxField.key)!)"
124
+ [spxSuggestions]="spxField.suggestionsFixed ? spxField.suggestionsFixed() : this.spxSuggestions[spxField.key]"
125
+ (spxBlur)="onBlur(spxField)">
126
+ </spx-input>
136
127
 
128
+ <spx-input
129
+ *ngIf="spxField.type() === typeRadio"
130
+ [formControl]="$any(this.spxFormGroup.get(spxField.key))"
131
+ [spxLabel]="(spxField.label ? spxField.label() : spxField.key) | capitalize"
132
+ [spxReadonly]="spxField.readonly ? spxField.readonly() : false"
133
+ [spxRequired]="hasRequiredField(this.spxFormGroup.get(spxField.key)!)"
134
+ [spxShowHelp]="false"
135
+ [spxShowValidationMessages]="this.spxFormGroup.get(spxField.key)! && this.spxFormGroup.get(spxField.key)!.errors && this.spxFormGroup.get(spxField.key)!.touched"
136
+ [spxSuggestions]="spxField.suggestionsFixed ? spxField.suggestionsFixed() : this.spxSuggestions[spxField.key]"
137
+ [spxType]="typeRadio"
138
+ [spxValidators]="getRawValidators(this.spxFormGroup.get(spxField.key)!)">
139
+ </spx-input>
140
+ </ng-container>
137
141
  </ng-container>
138
142
  </spx-form-section>`,
139
143
  }]
@@ -1 +1 @@
1
- {"version":3,"file":"softpak-components-spx-form-view.mjs","sources":["../../../../projects/softpak/components/spx-form-view/spx-form-view.component.ts","../../../../projects/softpak/components/spx-form-view/softpak-components-spx-form-view.ts"],"sourcesContent":["import { JsonPipe, NgFor, NgIf } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { SpxFormSectionI } from './spx-form-section.interface';\nimport { SpxFormSectionComponent } from '@softpak/components/spx-form-section';\nimport { SpxInputComponent, SpxInputTypeEnum } from '@softpak/components/spx-inputs';\nimport { SpxCapitalizePipe } from '@softpak/components/spx-capitalize';\nimport { AbstractControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SpxFormFieldI } from './spx-form-field.interface';\n\n@Component({\n selector: 'spx-form-view',\n standalone: true,\n imports: [\n FormsModule,\n ReactiveFormsModule,\n JsonPipe,\n NgIf,\n NgFor,\n SpxCapitalizePipe,\n SpxFormSectionComponent,\n SpxInputComponent,\n ],\n template: `<spx-form-section\n *ngFor=\"let spxSection of spxSections; let spxSectionIndex = index;\"\n [spxIndex]=\"spxSectionIndex + 1\"\n [spxTitle]=\"spxSection.title ? spxSection.title() : undefined\">\n <ng-container *ngFor=\"let spxField of spxSection.fields; let spxFieldIndex = index;\">\n <spx-input\n *ngIf=\"spxField.type() === typeOverlay || spxField.type() === typeOverlayNumber || spxField.type() === typeFloat || spxField.type() === typeNumber || spxField.type() === typeText || spxField.type() === typeAutocomplete || spxField.type() === typeNumericKeyboard\"\n [formControl]=\"$any(this.spxFormGroup.get(spxField.key))\"\n [spxAutofocus]=\"spxField.autofocus ? spxField.autofocus() : false\"\n [spxCapitalize]=\"spxField.capitalize ? spxField.capitalize() : false\"\n [spxLabel]=\"spxField.key | capitalize\"\n [spxPattern]=\"spxField.type() === typeNumericKeyboard ? '\\\\d*' : undefined\"\n [spxReadonly]=\"spxField.readonly ? spxField.readonly() : false\"\n [spxRequired]=\"hasRequiredField(this.spxFormGroup.get(spxField.key)!)\"\n [spxShowHelp]=\"false\"\n [spxShowValidationMessages]=\"this.spxFormGroup.get(spxField.key)! && this.spxFormGroup.get(spxField.key)!.errors && this.spxFormGroup.get(spxField.key)!.touched\"\n [spxStep]=\"spxField.step ? spxField.step() : undefined\"\n [spxType]=\"spxField.type()\"\n [spxValidators]=\"getRawValidators(this.spxFormGroup.get(spxField.key)!)\"\n [spxSuggestions]=\"spxField.suggestionsFixed ? spxField.suggestionsFixed() : this.spxSuggestions[spxField.key]\"\n (spxBlur)=\"onBlur(spxField)\">\n </spx-input>\n\n <spx-input\n *ngIf=\"spxField.type() === typeRadio\"\n [formControl]=\"$any(this.spxFormGroup.get(spxField.key))\"\n [spxLabel]=\"spxField.key | capitalize\"\n [spxReadonly]=\"spxField.readonly ? spxField.readonly() : false\"\n [spxRequired]=\"hasRequiredField(this.spxFormGroup.get(spxField.key)!)\"\n [spxShowHelp]=\"false\"\n [spxShowValidationMessages]=\"this.spxFormGroup.get(spxField.key)! && this.spxFormGroup.get(spxField.key)!.errors && this.spxFormGroup.get(spxField.key)!.touched\"\n [spxSuggestions]=\"spxField.suggestionsFixed ? spxField.suggestionsFixed() : this.spxSuggestions[spxField.key]\"\n [spxType]=\"typeRadio\"\n [spxValidators]=\"getRawValidators(this.spxFormGroup.get(spxField.key)!)\">\n </spx-input>\n\n </ng-container>\n </spx-form-section>`,\n})\nexport class SpxFormViewComponent {\n @Input() spxFormGroup!: FormGroup;\n @Input() spxSections!: SpxFormSectionI[];\n @Input() spxSuggestions!: any;\n\n typeAutocomplete = SpxInputTypeEnum.autocomplete;\n typeFloat = SpxInputTypeEnum.float;\n typeNumber = SpxInputTypeEnum.number;\n typeRadio = SpxInputTypeEnum.radio;\n typeText = SpxInputTypeEnum.text;\n typeNumericKeyboard = SpxInputTypeEnum.textNumericKeyboard;\n typeOverlay = SpxInputTypeEnum.overlay;\n typeOverlayNumber = SpxInputTypeEnum.overlayNumber;\n\n onBlur(field: SpxFormFieldI) {\n return;\n }\n\n getRawValidators(formControl: AbstractControl) {\n // eslint-disable-next-line no-underscore-dangle\n return (formControl as any)._rawValidators;\n }\n\n hasRequiredField(abstractControl: AbstractControl): boolean {\n if (abstractControl.validator) {\n const validator = abstractControl.validator({} as AbstractControl);\n if (validator && validator['required']) {\n return true;\n }\n }\n if ((abstractControl as any)['controls']) {\n for (const controlName in (abstractControl as any)['controls']) {\n if ((abstractControl as any)['controls'][controlName]) {\n if (this.hasRequiredField((abstractControl as any)['controls'][controlName])) {\n return true;\n }\n }\n }\n }\n return false;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"softpak-components-spx-form-view.mjs","sources":["../../../../projects/softpak/components/spx-form-view/spx-form-view.component.ts","../../../../projects/softpak/components/spx-form-view/softpak-components-spx-form-view.ts"],"sourcesContent":["import { JsonPipe, NgFor, NgIf } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { SpxFormSectionI } from './spx-form-section.interface';\nimport { SpxFormSectionComponent } from '@softpak/components/spx-form-section';\nimport { SpxInputComponent, SpxInputTypeEnum } from '@softpak/components/spx-inputs';\nimport { SpxCapitalizePipe } from '@softpak/components/spx-capitalize';\nimport { AbstractControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SpxFormFieldI } from './spx-form-field.interface';\n\n@Component({\n selector: 'spx-form-view',\n standalone: true,\n imports: [\n FormsModule,\n ReactiveFormsModule,\n JsonPipe,\n NgIf,\n NgFor,\n SpxCapitalizePipe,\n SpxFormSectionComponent,\n SpxInputComponent,\n ],\n template: `<spx-form-section\n *ngFor=\"let spxSection of spxSections; let spxSectionIndex = index;\"\n [spxShowTitle]=\"!spxSection.showTitle || spxSection.showTitle()\"\n [spxIndex]=\"spxSectionIndex + 1\"\n [spxTitle]=\"spxSection.title ? spxSection.title() : undefined\">\n <ng-container *ngFor=\"let spxField of spxSection.fields; let spxFieldIndex = index;\">\n <ng-container *ngIf=\"spxField.show === undefined || spxField.show()\">\n <spx-input\n *ngIf=\"spxField.type() === typeOverlay || spxField.type() === typeOverlayNumber || spxField.type() === typeFloat || spxField.type() === typeNumber || spxField.type() === typeText || spxField.type() === typeAutocomplete || spxField.type() === typeNumericKeyboard\"\n [formControl]=\"$any(this.spxFormGroup.get(spxField.key))\"\n [spxAutofocus]=\"spxField.autofocus ? spxField.autofocus() : false\"\n [spxCapitalize]=\"spxField.capitalize ? spxField.capitalize() : false\"\n [spxLabel]=\"(spxField.label ? spxField.label() : spxField.key) | capitalize\"\n [spxPattern]=\"spxField.type() === typeNumericKeyboard ? '\\\\d*' : undefined\"\n [spxReadonly]=\"spxField.readonly ? spxField.readonly() : false\"\n [spxRequired]=\"hasRequiredField(this.spxFormGroup.get(spxField.key)!)\"\n [spxShowHelp]=\"false\"\n [spxShowValidationMessages]=\"this.spxFormGroup.get(spxField.key)! && this.spxFormGroup.get(spxField.key)!.errors && this.spxFormGroup.get(spxField.key)!.touched\"\n [spxStep]=\"spxField.step ? spxField.step() : undefined\"\n [spxType]=\"spxField.type()\"\n [spxValidators]=\"getRawValidators(this.spxFormGroup.get(spxField.key)!)\"\n [spxSuggestions]=\"spxField.suggestionsFixed ? spxField.suggestionsFixed() : this.spxSuggestions[spxField.key]\"\n (spxBlur)=\"onBlur(spxField)\">\n </spx-input>\n\n <spx-input\n *ngIf=\"spxField.type() === typeRadio\"\n [formControl]=\"$any(this.spxFormGroup.get(spxField.key))\"\n [spxLabel]=\"(spxField.label ? spxField.label() : spxField.key) | capitalize\"\n [spxReadonly]=\"spxField.readonly ? spxField.readonly() : false\"\n [spxRequired]=\"hasRequiredField(this.spxFormGroup.get(spxField.key)!)\"\n [spxShowHelp]=\"false\"\n [spxShowValidationMessages]=\"this.spxFormGroup.get(spxField.key)! && this.spxFormGroup.get(spxField.key)!.errors && this.spxFormGroup.get(spxField.key)!.touched\"\n [spxSuggestions]=\"spxField.suggestionsFixed ? spxField.suggestionsFixed() : this.spxSuggestions[spxField.key]\"\n [spxType]=\"typeRadio\"\n [spxValidators]=\"getRawValidators(this.spxFormGroup.get(spxField.key)!)\">\n </spx-input>\n </ng-container>\n </ng-container>\n </spx-form-section>`,\n})\nexport class SpxFormViewComponent {\n @Input() spxFormGroup!: FormGroup;\n @Input() spxSections!: SpxFormSectionI[];\n @Input() spxSuggestions!: any;\n\n typeAutocomplete = SpxInputTypeEnum.autocomplete;\n typeFloat = SpxInputTypeEnum.float;\n typeNumber = SpxInputTypeEnum.number;\n typeRadio = SpxInputTypeEnum.radio;\n typeText = SpxInputTypeEnum.text;\n typeNumericKeyboard = SpxInputTypeEnum.textNumericKeyboard;\n typeOverlay = SpxInputTypeEnum.overlay;\n typeOverlayNumber = SpxInputTypeEnum.overlayNumber;\n\n onBlur(field: SpxFormFieldI) {\n return;\n }\n\n getRawValidators(formControl: AbstractControl) {\n // eslint-disable-next-line no-underscore-dangle\n return (formControl as any)._rawValidators;\n }\n\n hasRequiredField(abstractControl: AbstractControl): boolean {\n if (abstractControl.validator) {\n const validator = abstractControl.validator({} as AbstractControl);\n if (validator && validator['required']) {\n return true;\n }\n }\n if ((abstractControl as any)['controls']) {\n for (const controlName in (abstractControl as any)['controls']) {\n if ((abstractControl as any)['controls'][controlName]) {\n if (this.hasRequiredField((abstractControl as any)['controls'][controlName])) {\n return true;\n }\n }\n }\n }\n return false;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@softpak/components",
3
- "version": "0.0.0-beta.35",
3
+ "version": "0.0.0-beta.36",
4
4
  "private": false,
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^17.x.x",
@@ -41,18 +41,18 @@
41
41
  "esm": "./esm2022/spx-button/softpak-components-spx-button.mjs",
42
42
  "default": "./fesm2022/softpak-components-spx-button.mjs"
43
43
  },
44
- "./spx-capitalize": {
45
- "types": "./spx-capitalize/index.d.ts",
46
- "esm2022": "./esm2022/spx-capitalize/softpak-components-spx-capitalize.mjs",
47
- "esm": "./esm2022/spx-capitalize/softpak-components-spx-capitalize.mjs",
48
- "default": "./fesm2022/softpak-components-spx-capitalize.mjs"
49
- },
50
44
  "./spx-change-details": {
51
45
  "types": "./spx-change-details/index.d.ts",
52
46
  "esm2022": "./esm2022/spx-change-details/softpak-components-spx-change-details.mjs",
53
47
  "esm": "./esm2022/spx-change-details/softpak-components-spx-change-details.mjs",
54
48
  "default": "./fesm2022/softpak-components-spx-change-details.mjs"
55
49
  },
50
+ "./spx-capitalize": {
51
+ "types": "./spx-capitalize/index.d.ts",
52
+ "esm2022": "./esm2022/spx-capitalize/softpak-components-spx-capitalize.mjs",
53
+ "esm": "./esm2022/spx-capitalize/softpak-components-spx-capitalize.mjs",
54
+ "default": "./fesm2022/softpak-components-spx-capitalize.mjs"
55
+ },
56
56
  "./spx-channel-selection": {
57
57
  "types": "./spx-channel-selection/index.d.ts",
58
58
  "esm2022": "./esm2022/spx-channel-selection/softpak-components-spx-channel-selection.mjs",
@@ -1,5 +1,6 @@
1
1
  import { SpxValuePair } from "@softpak/components/spx-inputs";
2
2
  export interface SpxChangeDetailsValueI {
3
+ category?: SpxValuePair<string>;
3
4
  containerType: SpxValuePair<string>;
4
5
  licensePlate: SpxValuePair<string>;
5
6
  tonsTested: SpxValuePair<string>;
@@ -8,6 +8,8 @@ import * as i0 from "@angular/core";
8
8
  export declare class SpxChangeDetailsComponent {
9
9
  private readonly formBuilder;
10
10
  value: SpxChangeDetailsValueI;
11
+ showCategory: boolean;
12
+ txtCategory: string;
11
13
  txtContainerType: string;
12
14
  txtLicensePlate: string;
13
15
  txtTonsTested: string;
@@ -19,6 +21,7 @@ export declare class SpxChangeDetailsComponent {
19
21
  formGroup: FormGroup;
20
22
  severitySuccess: SpxSeverityEnum;
21
23
  sections: SpxFormSectionI[];
24
+ get ctrlCategory(): FormControl;
22
25
  get ctrlContainerType(): FormControl;
23
26
  get ctrlLicensePlate(): FormControl;
24
27
  get ctrlTonsTested(): FormControl;
@@ -29,5 +32,5 @@ export declare class SpxChangeDetailsComponent {
29
32
  getRawValidators(formControl: FormControl): any;
30
33
  onSubmit(): void;
31
34
  static ɵfac: i0.ɵɵFactoryDeclaration<SpxChangeDetailsComponent, never>;
32
- static ɵcmp: i0.ɵɵComponentDeclaration<SpxChangeDetailsComponent, "spx-change-details", never, { "value": { "alias": "value"; "required": false; }; "txtContainerType": { "alias": "txtContainerType"; "required": false; }; "txtLicensePlate": { "alias": "txtLicensePlate"; "required": false; }; "txtTonsTested": { "alias": "txtTonsTested"; "required": false; }; "suggestions": { "alias": "suggestions"; "required": false; }; }, { "submit": "submit"; }, never, never, true, never>;
35
+ static ɵcmp: i0.ɵɵComponentDeclaration<SpxChangeDetailsComponent, "spx-change-details", never, { "value": { "alias": "value"; "required": false; }; "showCategory": { "alias": "showCategory"; "required": false; }; "txtCategory": { "alias": "txtCategory"; "required": false; }; "txtContainerType": { "alias": "txtContainerType"; "required": false; }; "txtLicensePlate": { "alias": "txtLicensePlate"; "required": false; }; "txtTonsTested": { "alias": "txtTonsTested"; "required": false; }; "suggestions": { "alias": "suggestions"; "required": false; }; }, { "submit": "submit"; }, never, never, true, never>;
33
36
  }