@dsivd/prestations-ng 15.5.4 → 15.5.5-beta1

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.
package/CHANGELOG.md CHANGED
@@ -26,6 +26,14 @@ A change is considered **breaking** if you have to change your code or update yo
26
26
 
27
27
  ---
28
28
 
29
+ ## [15.5.5]
30
+
31
+ ### Updated
32
+
33
+ - [foehn-select.component.ts](projects/prestations-ng/src/foehn-checkables/foehn-select.component.ts)
34
+ - an empty option is displayed if `[required]="true"` as long as no choice has been made
35
+ - fixes bug https://github.com/angular/angular/issues/14505
36
+
29
37
  ## [15.5.4]
30
38
 
31
39
  ### Updated
@@ -27,6 +27,9 @@ export class FoehnSelectComponent extends FoehnCheckableGroupComponent {
27
27
  compareFn(value1, value2) {
28
28
  return this.areValuesEquals(value1, value2);
29
29
  }
30
+ showEmptyOption() {
31
+ return this.required && this.isEmpty(this.model);
32
+ }
30
33
  }
31
34
  FoehnSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FoehnSelectComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
32
35
  FoehnSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: FoehnSelectComponent, selector: "foehn-select", inputs: { multiple: "multiple", noSelectionLabel: "noSelectionLabel" }, providers: [
@@ -35,7 +38,7 @@ FoehnSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
35
38
  useExisting: forwardRef(() => FoehnSelectComponent),
36
39
  multi: true
37
40
  }
38
- ], usesInheritance: true, ngImport: i0, template: "<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <div class=\"d-flex justify-content-between\">\n <label\n [attr.for]=\"buildChildId()\"\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : labelStyleModifier\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </label>\n <foehn-help-modal\n class=\"removePaddingButton\"\n *ngIf=\"!!helpModal\"\n [modalContent]=\"helpModal\"\n ></foehn-help-modal>\n </div>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <div *ngIf=\"!elements\">Chargement...</div>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <select\n *ngIf=\"!multiple\"\n [class.is-invalid]=\"hasErrorsToDisplay() || hasInheritErrorFromParent()\"\n class=\"form-control\"\n [name]=\"name || label\"\n [attr.id]=\"buildChildId()\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-required]=\"required || null\"\n [attr.autocomplete]=\"getAutoComplete()\"\n [ngModel]=\"model\"\n (ngModelChange)=\"updateNgModel($event)\"\n [compareWith]=\"compareFn.bind(this)\"\n (change)=\"handleChange(model)\"\n #entryComponent\n ngDefaultControl\n >\n <option [ngValue]=\"null\" [attr.disabled]=\"required ? 'disabled' : null\">\n <!-- option always displayed even if required=true to fix https://github.com/angular/angular/issues/14505-->\n {{ noSelectionLabel | fromDictionary }}\n </option>\n <option\n *ngFor=\"let element of elements\"\n [ngValue]=\"getValue(element)\"\n [attr.selected]=\"isElementSelected(element) ? 'selected' : null\"\n [attr.disabled]=\"getDisabled(element) ? 'disabled' : null\"\n >\n {{ getLabel(element) }}\n </option>\n </select>\n <select\n *ngIf=\"multiple\"\n multiple\n [attr.aria-multiselectable]=\"true\"\n [class.is-invalid]=\"hasErrorsToDisplay() || hasInheritErrorFromParent()\"\n class=\"form-control\"\n [name]=\"name || label\"\n [attr.id]=\"buildChildId()\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-required]=\"required || null\"\n [ngModel]=\"model\"\n (ngModelChange)=\"updateNgModel($event)\"\n [compareWith]=\"compareFn.bind(this)\"\n (change)=\"handleChange(model)\"\n #entryComponent\n ngDefaultControl\n >\n <option\n *ngFor=\"let element of elements\"\n [ngValue]=\"getValue(element)\"\n [attr.selected]=\"isElementSelected(element) ? 'selected' : null\"\n [attr.aria-selected]=\"isElementSelected(element)\"\n >\n {{ getLabel(element) }}\n </option>\n </select>\n</div>\n", components: [{ type: i1.FoehnHelpModalComponent, selector: "foehn-help-modal", inputs: ["modalContent"] }, { type: i2.FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.SelectMultipleControlValueAccessor, selector: "select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]", inputs: ["compareWith"] }], pipes: { "fromDictionary": i5.SdkDictionaryPipe } });
41
+ ], usesInheritance: true, ngImport: i0, template: "<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <div class=\"d-flex justify-content-between\">\n <label\n [attr.for]=\"buildChildId()\"\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : labelStyleModifier\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </label>\n <foehn-help-modal\n class=\"removePaddingButton\"\n *ngIf=\"!!helpModal\"\n [modalContent]=\"helpModal\"\n ></foehn-help-modal>\n </div>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <div *ngIf=\"!elements\">Chargement...</div>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <select\n *ngIf=\"!multiple\"\n [class.is-invalid]=\"hasErrorsToDisplay() || hasInheritErrorFromParent()\"\n class=\"form-control\"\n [name]=\"name || label\"\n [attr.id]=\"buildChildId()\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-required]=\"required || null\"\n [attr.autocomplete]=\"getAutoComplete()\"\n [ngModel]=\"model\"\n (ngModelChange)=\"updateNgModel($event)\"\n [compareWith]=\"compareFn.bind(this)\"\n (change)=\"handleChange(model)\"\n #entryComponent\n ngDefaultControl\n >\n <option *ngIf=\"showEmptyOption()\" [ngValue]=\"null\">\n <!-- empty option displayed even if required=true as long as there's no model to fix https://github.com/angular/angular/issues/14505 -->\n </option>\n <option *ngIf=\"!required\" [ngValue]=\"null\">\n {{ noSelectionLabel | fromDictionary }}\n </option>\n <option\n *ngFor=\"let element of elements\"\n [ngValue]=\"getValue(element)\"\n [attr.selected]=\"isElementSelected(element) ? 'selected' : null\"\n [attr.disabled]=\"getDisabled(element) ? 'disabled' : null\"\n >\n {{ getLabel(element) }}\n </option>\n </select>\n <select\n *ngIf=\"multiple\"\n multiple\n [attr.aria-multiselectable]=\"true\"\n [class.is-invalid]=\"hasErrorsToDisplay() || hasInheritErrorFromParent()\"\n class=\"form-control\"\n [name]=\"name || label\"\n [attr.id]=\"buildChildId()\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-required]=\"required || null\"\n [ngModel]=\"model\"\n (ngModelChange)=\"updateNgModel($event)\"\n [compareWith]=\"compareFn.bind(this)\"\n (change)=\"handleChange(model)\"\n #entryComponent\n ngDefaultControl\n >\n <option\n *ngFor=\"let element of elements\"\n [ngValue]=\"getValue(element)\"\n [attr.selected]=\"isElementSelected(element) ? 'selected' : null\"\n [attr.aria-selected]=\"isElementSelected(element)\"\n >\n {{ getLabel(element) }}\n </option>\n </select>\n</div>\n", components: [{ type: i1.FoehnHelpModalComponent, selector: "foehn-help-modal", inputs: ["modalContent"] }, { type: i2.FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.SelectMultipleControlValueAccessor, selector: "select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]", inputs: ["compareWith"] }], pipes: { "fromDictionary": i5.SdkDictionaryPipe } });
39
42
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FoehnSelectComponent, decorators: [{
40
43
  type: Component,
41
44
  args: [{ selector: 'foehn-select', providers: [
@@ -44,10 +47,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
44
47
  useExisting: forwardRef(() => FoehnSelectComponent),
45
48
  multi: true
46
49
  }
47
- ], template: "<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <div class=\"d-flex justify-content-between\">\n <label\n [attr.for]=\"buildChildId()\"\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : labelStyleModifier\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </label>\n <foehn-help-modal\n class=\"removePaddingButton\"\n *ngIf=\"!!helpModal\"\n [modalContent]=\"helpModal\"\n ></foehn-help-modal>\n </div>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <div *ngIf=\"!elements\">Chargement...</div>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <select\n *ngIf=\"!multiple\"\n [class.is-invalid]=\"hasErrorsToDisplay() || hasInheritErrorFromParent()\"\n class=\"form-control\"\n [name]=\"name || label\"\n [attr.id]=\"buildChildId()\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-required]=\"required || null\"\n [attr.autocomplete]=\"getAutoComplete()\"\n [ngModel]=\"model\"\n (ngModelChange)=\"updateNgModel($event)\"\n [compareWith]=\"compareFn.bind(this)\"\n (change)=\"handleChange(model)\"\n #entryComponent\n ngDefaultControl\n >\n <option [ngValue]=\"null\" [attr.disabled]=\"required ? 'disabled' : null\">\n <!-- option always displayed even if required=true to fix https://github.com/angular/angular/issues/14505-->\n {{ noSelectionLabel | fromDictionary }}\n </option>\n <option\n *ngFor=\"let element of elements\"\n [ngValue]=\"getValue(element)\"\n [attr.selected]=\"isElementSelected(element) ? 'selected' : null\"\n [attr.disabled]=\"getDisabled(element) ? 'disabled' : null\"\n >\n {{ getLabel(element) }}\n </option>\n </select>\n <select\n *ngIf=\"multiple\"\n multiple\n [attr.aria-multiselectable]=\"true\"\n [class.is-invalid]=\"hasErrorsToDisplay() || hasInheritErrorFromParent()\"\n class=\"form-control\"\n [name]=\"name || label\"\n [attr.id]=\"buildChildId()\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-required]=\"required || null\"\n [ngModel]=\"model\"\n (ngModelChange)=\"updateNgModel($event)\"\n [compareWith]=\"compareFn.bind(this)\"\n (change)=\"handleChange(model)\"\n #entryComponent\n ngDefaultControl\n >\n <option\n *ngFor=\"let element of elements\"\n [ngValue]=\"getValue(element)\"\n [attr.selected]=\"isElementSelected(element) ? 'selected' : null\"\n [attr.aria-selected]=\"isElementSelected(element)\"\n >\n {{ getLabel(element) }}\n </option>\n </select>\n</div>\n" }]
50
+ ], template: "<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <div class=\"d-flex justify-content-between\">\n <label\n [attr.for]=\"buildChildId()\"\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : labelStyleModifier\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </label>\n <foehn-help-modal\n class=\"removePaddingButton\"\n *ngIf=\"!!helpModal\"\n [modalContent]=\"helpModal\"\n ></foehn-help-modal>\n </div>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <div *ngIf=\"!elements\">Chargement...</div>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <select\n *ngIf=\"!multiple\"\n [class.is-invalid]=\"hasErrorsToDisplay() || hasInheritErrorFromParent()\"\n class=\"form-control\"\n [name]=\"name || label\"\n [attr.id]=\"buildChildId()\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-required]=\"required || null\"\n [attr.autocomplete]=\"getAutoComplete()\"\n [ngModel]=\"model\"\n (ngModelChange)=\"updateNgModel($event)\"\n [compareWith]=\"compareFn.bind(this)\"\n (change)=\"handleChange(model)\"\n #entryComponent\n ngDefaultControl\n >\n <option *ngIf=\"showEmptyOption()\" [ngValue]=\"null\">\n <!-- empty option displayed even if required=true as long as there's no model to fix https://github.com/angular/angular/issues/14505 -->\n </option>\n <option *ngIf=\"!required\" [ngValue]=\"null\">\n {{ noSelectionLabel | fromDictionary }}\n </option>\n <option\n *ngFor=\"let element of elements\"\n [ngValue]=\"getValue(element)\"\n [attr.selected]=\"isElementSelected(element) ? 'selected' : null\"\n [attr.disabled]=\"getDisabled(element) ? 'disabled' : null\"\n >\n {{ getLabel(element) }}\n </option>\n </select>\n <select\n *ngIf=\"multiple\"\n multiple\n [attr.aria-multiselectable]=\"true\"\n [class.is-invalid]=\"hasErrorsToDisplay() || hasInheritErrorFromParent()\"\n class=\"form-control\"\n [name]=\"name || label\"\n [attr.id]=\"buildChildId()\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-required]=\"required || null\"\n [ngModel]=\"model\"\n (ngModelChange)=\"updateNgModel($event)\"\n [compareWith]=\"compareFn.bind(this)\"\n (change)=\"handleChange(model)\"\n #entryComponent\n ngDefaultControl\n >\n <option\n *ngFor=\"let element of elements\"\n [ngValue]=\"getValue(element)\"\n [attr.selected]=\"isElementSelected(element) ? 'selected' : null\"\n [attr.aria-selected]=\"isElementSelected(element)\"\n >\n {{ getLabel(element) }}\n </option>\n </select>\n</div>\n" }]
48
51
  }], ctorParameters: function () { return [{ type: i0.NgZone }]; }, propDecorators: { multiple: [{
49
52
  type: Input
50
53
  }], noSelectionLabel: [{
51
54
  type: Input
52
55
  }] } });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1jaGVja2FibGVzL2ZvZWhuLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tY2hlY2thYmxlcy9mb2Vobi1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7Ozs7OztBQWEzRSxNQUFNLE9BQU8sb0JBQ1QsU0FBUSw0QkFBNEI7SUFRcEMsWUFBb0IsSUFBWTtRQUM1QixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFESSxTQUFJLEdBQUosSUFBSSxDQUFRO1FBRmhDLHFCQUFnQixHQUFHLGlDQUFpQyxDQUFDO0lBSXJELENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCw4REFBOEQ7SUFDOUQsU0FBUyxDQUFDLE1BQVcsRUFBRSxNQUFXO1FBQzlCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEQsQ0FBQzs7a0hBMUJRLG9CQUFvQjtzR0FBcEIsb0JBQW9CLCtHQVJsQjtRQUNQO1lBQ0ksT0FBTyxFQUFFLG1CQUFtQjtZQUM1QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDO1lBQ25ELEtBQUssRUFBRSxJQUFJO1NBQ2Q7S0FDSixpRENiTCxnb0hBcUdBOzRGRHRGYSxvQkFBb0I7a0JBWGhDLFNBQVM7K0JBQ0ksY0FBYyxhQUViO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxtQkFBbUI7NEJBQzVCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDOzRCQUNuRCxLQUFLLEVBQUUsSUFBSTt5QkFDZDtxQkFDSjs2RkFNRCxRQUFRO3NCQURQLEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0LCBOZ1pvbmUsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9laG5DaGVja2FibGVHcm91cENvbXBvbmVudCB9IGZyb20gJy4vZm9laG4tY2hlY2thYmxlLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb2VobklucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vZm9laG4taW5wdXQvZm9laG4taW5wdXQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmb2Vobi1zZWxlY3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb2Vobi1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGb2VobklucHV0Q29tcG9uZW50LFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRm9laG5TZWxlY3RDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRm9laG5TZWxlY3RDb21wb25lbnRcbiAgICBleHRlbmRzIEZvZWhuQ2hlY2thYmxlR3JvdXBDb21wb25lbnRcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KClcbiAgICBtdWx0aXBsZTogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpXG4gICAgbm9TZWxlY3Rpb25MYWJlbCA9ICdmb2Vobi1zZWxlY3Qubm8tc2VsZWN0aW9uLmxhYmVsJztcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgem9uZTogTmdab25lKSB7XG4gICAgICAgIHN1cGVyKHpvbmUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFuZ3VsYXIgdXNlcyBvYmplY3QgaWRlbnRpdHkgdG8gc2VsZWN0IG9wdGlvbi4gSXQncyBwb3NzaWJsZSBmb3IgdGhlIGlkZW50aXRpZXMgb2YgaXRlbXMgdG8gY2hhbmdlIHdoaWxlIHRoZSBkYXRhIGRvZXMgbm90LlxuICAgICAqIFRoaXMgY2FuIGhhcHBlbiwgZm9yIGV4YW1wbGUsIGlmIHRoZSBpdGVtcyBhcmUgcHJvZHVjZWQgZnJvbSBhbiBSUEMgdG8gdGhlIHNlcnZlciwgYW5kIHRoYXQgUlBDIGlzIHJlLXJ1bi5cbiAgICAgKiBFdmVuIGlmIHRoZSBkYXRhIGhhc24ndCBjaGFuZ2VkLCB0aGUgc2Vjb25kIHJlc3BvbnNlIHdpbGwgcHJvZHVjZSBvYmplY3RzIHdpdGggZGlmZmVyZW50IGlkZW50aXRpZXMuXG4gICAgICogKHNlZTogaHR0cHM6Ly9hbmd1bGFyLmlvL2FwaS9mb3Jtcy9TZWxlY3RDb250cm9sVmFsdWVBY2Nlc3NvciNjdXN0b21pemluZy1vcHRpb24tc2VsZWN0aW9uKVxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlMSBhcyBmaXJzdCB2YWx1ZSB0byBjb21wYXJlIHRvXG4gICAgICogQHBhcmFtIHZhbHVlMiBhcyB2YWx1ZSB0byBiZSBjb21wYXJlZCB0b1xuICAgICAqIEByZXR1cm5zIGJvb2xlYW5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGNvbXBhcmVGbih2YWx1ZTE6IGFueSwgdmFsdWUyOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXJlVmFsdWVzRXF1YWxzKHZhbHVlMSwgdmFsdWUyKTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwXCJcbiAgICBbY2xhc3MuaGFzLWRhbmdlcl09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKVwiXG4gICAgW2NsYXNzLnZkLWZvcm0tZ3JvdXAtZGFuZ2VyXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpXCJcbiAgICBbYXR0ci5pZF09XCJidWlsZElkKCdDb250YWluZXInKVwiXG4gICAgdGFiaW5kZXg9XCItMVwiXG4+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIFthdHRyLmZvcl09XCJidWlsZENoaWxkSWQoKVwiXG4gICAgICAgICAgICAqbmdJZj1cIiEhbGFiZWxcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiaXNMYWJlbFNyT25seSA/ICdzci1vbmx5JyA6IGxhYmVsU3R5bGVNb2RpZmllclwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwibGFiZWxcIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIXJlcXVpcmVkICYmICFoaWRlTm90UmVxdWlyZWRFeHRyYUxhYmVsXCJcbiAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7ICdmb2Vobi1pbnB1dC5vcHRpb25hbCcgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8Zm9laG4taGVscC1tb2RhbFxuICAgICAgICAgICAgY2xhc3M9XCJyZW1vdmVQYWRkaW5nQnV0dG9uXCJcbiAgICAgICAgICAgICpuZ0lmPVwiISFoZWxwTW9kYWxcIlxuICAgICAgICAgICAgW21vZGFsQ29udGVudF09XCJoZWxwTW9kYWxcIlxuICAgICAgICA+PC9mb2Vobi1oZWxwLW1vZGFsPlxuICAgIDwvZGl2PlxuXG4gICAgPGZvZWhuLXZhbGlkYXRpb24tYWxlcnRzIFtjb21wb25lbnRdPVwidGhpc1wiPjwvZm9laG4tdmFsaWRhdGlvbi1hbGVydHM+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiIWVsZW1lbnRzXCI+Q2hhcmdlbWVudC4uLjwvZGl2PlxuXG4gICAgPHNtYWxsXG4gICAgICAgICpuZ0lmPVwiaGVscFRleHRcIlxuICAgICAgICBbYXR0ci5pZF09XCJidWlsZENoaWxkSWQoKSArICdIZWxwJ1wiXG4gICAgICAgIGNsYXNzPVwiZm9ybS10ZXh0IHRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgW2lubmVySFRNTF09XCJoZWxwVGV4dFwiXG4gICAgPjwvc21hbGw+XG5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbiAgICA8c2VsZWN0XG4gICAgICAgICpuZ0lmPVwiIW11bHRpcGxlXCJcbiAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KCkgfHwgaGFzSW5oZXJpdEVycm9yRnJvbVBhcmVudCgpXCJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICBbbmFtZV09XCJuYW1lIHx8IGxhYmVsXCJcbiAgICAgICAgW2F0dHIuaWRdPVwiYnVpbGRDaGlsZElkKClcIlxuICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICdkaXNhYmxlZCcgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJnZXREZXNjcmliZWRCeSgpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpIHx8IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cInJlcXVpcmVkIHx8IG51bGxcIlxuICAgICAgICBbYXR0ci5hdXRvY29tcGxldGVdPVwiZ2V0QXV0b0NvbXBsZXRlKClcIlxuICAgICAgICBbbmdNb2RlbF09XCJtb2RlbFwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZU5nTW9kZWwoJGV2ZW50KVwiXG4gICAgICAgIFtjb21wYXJlV2l0aF09XCJjb21wYXJlRm4uYmluZCh0aGlzKVwiXG4gICAgICAgIChjaGFuZ2UpPVwiaGFuZGxlQ2hhbmdlKG1vZGVsKVwiXG4gICAgICAgICNlbnRyeUNvbXBvbmVudFxuICAgICAgICBuZ0RlZmF1bHRDb250cm9sXG4gICAgPlxuICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIm51bGxcIiBbYXR0ci5kaXNhYmxlZF09XCJyZXF1aXJlZCA/ICdkaXNhYmxlZCcgOiBudWxsXCI+XG4gICAgICAgICAgICA8IS0tIG9wdGlvbiBhbHdheXMgZGlzcGxheWVkIGV2ZW4gaWYgcmVxdWlyZWQ9dHJ1ZSB0byBmaXggaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTQ1MDUtLT5cbiAgICAgICAgICAgIHt7IG5vU2VsZWN0aW9uTGFiZWwgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGVsZW1lbnQgb2YgZWxlbWVudHNcIlxuICAgICAgICAgICAgW25nVmFsdWVdPVwiZ2V0VmFsdWUoZWxlbWVudClcIlxuICAgICAgICAgICAgW2F0dHIuc2VsZWN0ZWRdPVwiaXNFbGVtZW50U2VsZWN0ZWQoZWxlbWVudCkgPyAnc2VsZWN0ZWQnIDogbnVsbFwiXG4gICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJnZXREaXNhYmxlZChlbGVtZW50KSA/ICdkaXNhYmxlZCcgOiBudWxsXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgZ2V0TGFiZWwoZWxlbWVudCkgfX1cbiAgICAgICAgPC9vcHRpb24+XG4gICAgPC9zZWxlY3Q+XG4gICAgPHNlbGVjdFxuICAgICAgICAqbmdJZj1cIm11bHRpcGxlXCJcbiAgICAgICAgbXVsdGlwbGVcbiAgICAgICAgW2F0dHIuYXJpYS1tdWx0aXNlbGVjdGFibGVdPVwidHJ1ZVwiXG4gICAgICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpIHx8IGhhc0luaGVyaXRFcnJvckZyb21QYXJlbnQoKVwiXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgW25hbWVdPVwibmFtZSB8fCBsYWJlbFwiXG4gICAgICAgIFthdHRyLmlkXT1cImJ1aWxkQ2hpbGRJZCgpXCJcbiAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnZGlzYWJsZWQnIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiZ2V0RGVzY3JpYmVkQnkoKVwiXG4gICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKSB8fCBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJyZXF1aXJlZCB8fCBudWxsXCJcbiAgICAgICAgW25nTW9kZWxdPVwibW9kZWxcIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVOZ01vZGVsKCRldmVudClcIlxuICAgICAgICBbY29tcGFyZVdpdGhdPVwiY29tcGFyZUZuLmJpbmQodGhpcylcIlxuICAgICAgICAoY2hhbmdlKT1cImhhbmRsZUNoYW5nZShtb2RlbClcIlxuICAgICAgICAjZW50cnlDb21wb25lbnRcbiAgICAgICAgbmdEZWZhdWx0Q29udHJvbFxuICAgID5cbiAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGVsZW1lbnQgb2YgZWxlbWVudHNcIlxuICAgICAgICAgICAgW25nVmFsdWVdPVwiZ2V0VmFsdWUoZWxlbWVudClcIlxuICAgICAgICAgICAgW2F0dHIuc2VsZWN0ZWRdPVwiaXNFbGVtZW50U2VsZWN0ZWQoZWxlbWVudCkgPyAnc2VsZWN0ZWQnIDogbnVsbFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImlzRWxlbWVudFNlbGVjdGVkKGVsZW1lbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgZ2V0TGFiZWwoZWxlbWVudCkgfX1cbiAgICAgICAgPC9vcHRpb24+XG4gICAgPC9zZWxlY3Q+XG48L2Rpdj5cbiJdfQ==
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1jaGVja2FibGVzL2ZvZWhuLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tY2hlY2thYmxlcy9mb2Vobi1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7Ozs7OztBQWEzRSxNQUFNLE9BQU8sb0JBQ1QsU0FBUSw0QkFBNEI7SUFRcEMsWUFBb0IsSUFBWTtRQUM1QixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFESSxTQUFJLEdBQUosSUFBSSxDQUFRO1FBRmhDLHFCQUFnQixHQUFHLGlDQUFpQyxDQUFDO0lBSXJELENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCw4REFBOEQ7SUFDOUQsU0FBUyxDQUFDLE1BQVcsRUFBRSxNQUFXO1FBQzlCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELGVBQWU7UUFDWCxPQUFPLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckQsQ0FBQzs7a0hBOUJRLG9CQUFvQjtzR0FBcEIsb0JBQW9CLCtHQVJsQjtRQUNQO1lBQ0ksT0FBTyxFQUFFLG1CQUFtQjtZQUM1QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDO1lBQ25ELEtBQUssRUFBRSxJQUFJO1NBQ2Q7S0FDSixpRENiTCxtdEhBdUdBOzRGRHhGYSxvQkFBb0I7a0JBWGhDLFNBQVM7K0JBQ0ksY0FBYyxhQUViO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxtQkFBbUI7NEJBQzVCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDOzRCQUNuRCxLQUFLLEVBQUUsSUFBSTt5QkFDZDtxQkFDSjs2RkFNRCxRQUFRO3NCQURQLEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0LCBOZ1pvbmUsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9laG5DaGVja2FibGVHcm91cENvbXBvbmVudCB9IGZyb20gJy4vZm9laG4tY2hlY2thYmxlLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb2VobklucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vZm9laG4taW5wdXQvZm9laG4taW5wdXQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmb2Vobi1zZWxlY3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb2Vobi1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGb2VobklucHV0Q29tcG9uZW50LFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRm9laG5TZWxlY3RDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRm9laG5TZWxlY3RDb21wb25lbnRcbiAgICBleHRlbmRzIEZvZWhuQ2hlY2thYmxlR3JvdXBDb21wb25lbnRcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KClcbiAgICBtdWx0aXBsZTogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpXG4gICAgbm9TZWxlY3Rpb25MYWJlbCA9ICdmb2Vobi1zZWxlY3Qubm8tc2VsZWN0aW9uLmxhYmVsJztcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgem9uZTogTmdab25lKSB7XG4gICAgICAgIHN1cGVyKHpvbmUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFuZ3VsYXIgdXNlcyBvYmplY3QgaWRlbnRpdHkgdG8gc2VsZWN0IG9wdGlvbi4gSXQncyBwb3NzaWJsZSBmb3IgdGhlIGlkZW50aXRpZXMgb2YgaXRlbXMgdG8gY2hhbmdlIHdoaWxlIHRoZSBkYXRhIGRvZXMgbm90LlxuICAgICAqIFRoaXMgY2FuIGhhcHBlbiwgZm9yIGV4YW1wbGUsIGlmIHRoZSBpdGVtcyBhcmUgcHJvZHVjZWQgZnJvbSBhbiBSUEMgdG8gdGhlIHNlcnZlciwgYW5kIHRoYXQgUlBDIGlzIHJlLXJ1bi5cbiAgICAgKiBFdmVuIGlmIHRoZSBkYXRhIGhhc24ndCBjaGFuZ2VkLCB0aGUgc2Vjb25kIHJlc3BvbnNlIHdpbGwgcHJvZHVjZSBvYmplY3RzIHdpdGggZGlmZmVyZW50IGlkZW50aXRpZXMuXG4gICAgICogKHNlZTogaHR0cHM6Ly9hbmd1bGFyLmlvL2FwaS9mb3Jtcy9TZWxlY3RDb250cm9sVmFsdWVBY2Nlc3NvciNjdXN0b21pemluZy1vcHRpb24tc2VsZWN0aW9uKVxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlMSBhcyBmaXJzdCB2YWx1ZSB0byBjb21wYXJlIHRvXG4gICAgICogQHBhcmFtIHZhbHVlMiBhcyB2YWx1ZSB0byBiZSBjb21wYXJlZCB0b1xuICAgICAqIEByZXR1cm5zIGJvb2xlYW5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGNvbXBhcmVGbih2YWx1ZTE6IGFueSwgdmFsdWUyOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXJlVmFsdWVzRXF1YWxzKHZhbHVlMSwgdmFsdWUyKTtcbiAgICB9XG5cbiAgICBzaG93RW1wdHlPcHRpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkICYmIHRoaXMuaXNFbXB0eSh0aGlzLm1vZGVsKTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwXCJcbiAgICBbY2xhc3MuaGFzLWRhbmdlcl09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKVwiXG4gICAgW2NsYXNzLnZkLWZvcm0tZ3JvdXAtZGFuZ2VyXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpXCJcbiAgICBbYXR0ci5pZF09XCJidWlsZElkKCdDb250YWluZXInKVwiXG4gICAgdGFiaW5kZXg9XCItMVwiXG4+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIFthdHRyLmZvcl09XCJidWlsZENoaWxkSWQoKVwiXG4gICAgICAgICAgICAqbmdJZj1cIiEhbGFiZWxcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiaXNMYWJlbFNyT25seSA/ICdzci1vbmx5JyA6IGxhYmVsU3R5bGVNb2RpZmllclwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwibGFiZWxcIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIXJlcXVpcmVkICYmICFoaWRlTm90UmVxdWlyZWRFeHRyYUxhYmVsXCJcbiAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7ICdmb2Vobi1pbnB1dC5vcHRpb25hbCcgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8Zm9laG4taGVscC1tb2RhbFxuICAgICAgICAgICAgY2xhc3M9XCJyZW1vdmVQYWRkaW5nQnV0dG9uXCJcbiAgICAgICAgICAgICpuZ0lmPVwiISFoZWxwTW9kYWxcIlxuICAgICAgICAgICAgW21vZGFsQ29udGVudF09XCJoZWxwTW9kYWxcIlxuICAgICAgICA+PC9mb2Vobi1oZWxwLW1vZGFsPlxuICAgIDwvZGl2PlxuXG4gICAgPGZvZWhuLXZhbGlkYXRpb24tYWxlcnRzIFtjb21wb25lbnRdPVwidGhpc1wiPjwvZm9laG4tdmFsaWRhdGlvbi1hbGVydHM+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiIWVsZW1lbnRzXCI+Q2hhcmdlbWVudC4uLjwvZGl2PlxuXG4gICAgPHNtYWxsXG4gICAgICAgICpuZ0lmPVwiaGVscFRleHRcIlxuICAgICAgICBbYXR0ci5pZF09XCJidWlsZENoaWxkSWQoKSArICdIZWxwJ1wiXG4gICAgICAgIGNsYXNzPVwiZm9ybS10ZXh0IHRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgW2lubmVySFRNTF09XCJoZWxwVGV4dFwiXG4gICAgPjwvc21hbGw+XG5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbiAgICA8c2VsZWN0XG4gICAgICAgICpuZ0lmPVwiIW11bHRpcGxlXCJcbiAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KCkgfHwgaGFzSW5oZXJpdEVycm9yRnJvbVBhcmVudCgpXCJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICBbbmFtZV09XCJuYW1lIHx8IGxhYmVsXCJcbiAgICAgICAgW2F0dHIuaWRdPVwiYnVpbGRDaGlsZElkKClcIlxuICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICdkaXNhYmxlZCcgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJnZXREZXNjcmliZWRCeSgpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpIHx8IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cInJlcXVpcmVkIHx8IG51bGxcIlxuICAgICAgICBbYXR0ci5hdXRvY29tcGxldGVdPVwiZ2V0QXV0b0NvbXBsZXRlKClcIlxuICAgICAgICBbbmdNb2RlbF09XCJtb2RlbFwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZU5nTW9kZWwoJGV2ZW50KVwiXG4gICAgICAgIFtjb21wYXJlV2l0aF09XCJjb21wYXJlRm4uYmluZCh0aGlzKVwiXG4gICAgICAgIChjaGFuZ2UpPVwiaGFuZGxlQ2hhbmdlKG1vZGVsKVwiXG4gICAgICAgICNlbnRyeUNvbXBvbmVudFxuICAgICAgICBuZ0RlZmF1bHRDb250cm9sXG4gICAgPlxuICAgICAgICA8b3B0aW9uICpuZ0lmPVwic2hvd0VtcHR5T3B0aW9uKClcIiBbbmdWYWx1ZV09XCJudWxsXCI+XG4gICAgICAgICAgICA8IS0tIGVtcHR5IG9wdGlvbiBkaXNwbGF5ZWQgZXZlbiBpZiByZXF1aXJlZD10cnVlIGFzIGxvbmcgYXMgdGhlcmUncyBubyBtb2RlbCB0byBmaXggaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTQ1MDUgLS0+XG4gICAgICAgIDwvb3B0aW9uPlxuICAgICAgICA8b3B0aW9uICpuZ0lmPVwiIXJlcXVpcmVkXCIgW25nVmFsdWVdPVwibnVsbFwiPlxuICAgICAgICAgICAge3sgbm9TZWxlY3Rpb25MYWJlbCB8IGZyb21EaWN0aW9uYXJ5IH19XG4gICAgICAgIDwvb3B0aW9uPlxuICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgZWxlbWVudCBvZiBlbGVtZW50c1wiXG4gICAgICAgICAgICBbbmdWYWx1ZV09XCJnZXRWYWx1ZShlbGVtZW50KVwiXG4gICAgICAgICAgICBbYXR0ci5zZWxlY3RlZF09XCJpc0VsZW1lbnRTZWxlY3RlZChlbGVtZW50KSA/ICdzZWxlY3RlZCcgOiBudWxsXCJcbiAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImdldERpc2FibGVkKGVsZW1lbnQpID8gJ2Rpc2FibGVkJyA6IG51bGxcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyBnZXRMYWJlbChlbGVtZW50KSB9fVxuICAgICAgICA8L29wdGlvbj5cbiAgICA8L3NlbGVjdD5cbiAgICA8c2VsZWN0XG4gICAgICAgICpuZ0lmPVwibXVsdGlwbGVcIlxuICAgICAgICBtdWx0aXBsZVxuICAgICAgICBbYXR0ci5hcmlhLW11bHRpc2VsZWN0YWJsZV09XCJ0cnVlXCJcbiAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KCkgfHwgaGFzSW5oZXJpdEVycm9yRnJvbVBhcmVudCgpXCJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICBbbmFtZV09XCJuYW1lIHx8IGxhYmVsXCJcbiAgICAgICAgW2F0dHIuaWRdPVwiYnVpbGRDaGlsZElkKClcIlxuICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICdkaXNhYmxlZCcgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJnZXREZXNjcmliZWRCeSgpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpIHx8IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cInJlcXVpcmVkIHx8IG51bGxcIlxuICAgICAgICBbbmdNb2RlbF09XCJtb2RlbFwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZU5nTW9kZWwoJGV2ZW50KVwiXG4gICAgICAgIFtjb21wYXJlV2l0aF09XCJjb21wYXJlRm4uYmluZCh0aGlzKVwiXG4gICAgICAgIChjaGFuZ2UpPVwiaGFuZGxlQ2hhbmdlKG1vZGVsKVwiXG4gICAgICAgICNlbnRyeUNvbXBvbmVudFxuICAgICAgICBuZ0RlZmF1bHRDb250cm9sXG4gICAgPlxuICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgZWxlbWVudCBvZiBlbGVtZW50c1wiXG4gICAgICAgICAgICBbbmdWYWx1ZV09XCJnZXRWYWx1ZShlbGVtZW50KVwiXG4gICAgICAgICAgICBbYXR0ci5zZWxlY3RlZF09XCJpc0VsZW1lbnRTZWxlY3RlZChlbGVtZW50KSA/ICdzZWxlY3RlZCcgOiBudWxsXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiaXNFbGVtZW50U2VsZWN0ZWQoZWxlbWVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyBnZXRMYWJlbChlbGVtZW50KSB9fVxuICAgICAgICA8L29wdGlvbj5cbiAgICA8L3NlbGVjdD5cbjwvZGl2PlxuIl19
@@ -4628,6 +4628,9 @@ class FoehnSelectComponent extends FoehnCheckableGroupComponent {
4628
4628
  compareFn(value1, value2) {
4629
4629
  return this.areValuesEquals(value1, value2);
4630
4630
  }
4631
+ showEmptyOption() {
4632
+ return this.required && this.isEmpty(this.model);
4633
+ }
4631
4634
  }
4632
4635
  FoehnSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FoehnSelectComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
4633
4636
  FoehnSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: FoehnSelectComponent, selector: "foehn-select", inputs: { multiple: "multiple", noSelectionLabel: "noSelectionLabel" }, providers: [
@@ -4636,7 +4639,7 @@ FoehnSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
4636
4639
  useExisting: forwardRef(() => FoehnSelectComponent),
4637
4640
  multi: true
4638
4641
  }
4639
- ], usesInheritance: true, ngImport: i0, template: "<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <div class=\"d-flex justify-content-between\">\n <label\n [attr.for]=\"buildChildId()\"\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : labelStyleModifier\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </label>\n <foehn-help-modal\n class=\"removePaddingButton\"\n *ngIf=\"!!helpModal\"\n [modalContent]=\"helpModal\"\n ></foehn-help-modal>\n </div>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <div *ngIf=\"!elements\">Chargement...</div>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <select\n *ngIf=\"!multiple\"\n [class.is-invalid]=\"hasErrorsToDisplay() || hasInheritErrorFromParent()\"\n class=\"form-control\"\n [name]=\"name || label\"\n [attr.id]=\"buildChildId()\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-required]=\"required || null\"\n [attr.autocomplete]=\"getAutoComplete()\"\n [ngModel]=\"model\"\n (ngModelChange)=\"updateNgModel($event)\"\n [compareWith]=\"compareFn.bind(this)\"\n (change)=\"handleChange(model)\"\n #entryComponent\n ngDefaultControl\n >\n <option [ngValue]=\"null\" [attr.disabled]=\"required ? 'disabled' : null\">\n <!-- option always displayed even if required=true to fix https://github.com/angular/angular/issues/14505-->\n {{ noSelectionLabel | fromDictionary }}\n </option>\n <option\n *ngFor=\"let element of elements\"\n [ngValue]=\"getValue(element)\"\n [attr.selected]=\"isElementSelected(element) ? 'selected' : null\"\n [attr.disabled]=\"getDisabled(element) ? 'disabled' : null\"\n >\n {{ getLabel(element) }}\n </option>\n </select>\n <select\n *ngIf=\"multiple\"\n multiple\n [attr.aria-multiselectable]=\"true\"\n [class.is-invalid]=\"hasErrorsToDisplay() || hasInheritErrorFromParent()\"\n class=\"form-control\"\n [name]=\"name || label\"\n [attr.id]=\"buildChildId()\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-required]=\"required || null\"\n [ngModel]=\"model\"\n (ngModelChange)=\"updateNgModel($event)\"\n [compareWith]=\"compareFn.bind(this)\"\n (change)=\"handleChange(model)\"\n #entryComponent\n ngDefaultControl\n >\n <option\n *ngFor=\"let element of elements\"\n [ngValue]=\"getValue(element)\"\n [attr.selected]=\"isElementSelected(element) ? 'selected' : null\"\n [attr.aria-selected]=\"isElementSelected(element)\"\n >\n {{ getLabel(element) }}\n </option>\n </select>\n</div>\n", components: [{ type: FoehnHelpModalComponent, selector: "foehn-help-modal", inputs: ["modalContent"] }, { type: FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.SelectMultipleControlValueAccessor, selector: "select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]", inputs: ["compareWith"] }], pipes: { "fromDictionary": SdkDictionaryPipe } });
4642
+ ], usesInheritance: true, ngImport: i0, template: "<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <div class=\"d-flex justify-content-between\">\n <label\n [attr.for]=\"buildChildId()\"\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : labelStyleModifier\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </label>\n <foehn-help-modal\n class=\"removePaddingButton\"\n *ngIf=\"!!helpModal\"\n [modalContent]=\"helpModal\"\n ></foehn-help-modal>\n </div>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <div *ngIf=\"!elements\">Chargement...</div>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <select\n *ngIf=\"!multiple\"\n [class.is-invalid]=\"hasErrorsToDisplay() || hasInheritErrorFromParent()\"\n class=\"form-control\"\n [name]=\"name || label\"\n [attr.id]=\"buildChildId()\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-required]=\"required || null\"\n [attr.autocomplete]=\"getAutoComplete()\"\n [ngModel]=\"model\"\n (ngModelChange)=\"updateNgModel($event)\"\n [compareWith]=\"compareFn.bind(this)\"\n (change)=\"handleChange(model)\"\n #entryComponent\n ngDefaultControl\n >\n <option *ngIf=\"showEmptyOption()\" [ngValue]=\"null\">\n <!-- empty option displayed even if required=true as long as there's no model to fix https://github.com/angular/angular/issues/14505 -->\n </option>\n <option *ngIf=\"!required\" [ngValue]=\"null\">\n {{ noSelectionLabel | fromDictionary }}\n </option>\n <option\n *ngFor=\"let element of elements\"\n [ngValue]=\"getValue(element)\"\n [attr.selected]=\"isElementSelected(element) ? 'selected' : null\"\n [attr.disabled]=\"getDisabled(element) ? 'disabled' : null\"\n >\n {{ getLabel(element) }}\n </option>\n </select>\n <select\n *ngIf=\"multiple\"\n multiple\n [attr.aria-multiselectable]=\"true\"\n [class.is-invalid]=\"hasErrorsToDisplay() || hasInheritErrorFromParent()\"\n class=\"form-control\"\n [name]=\"name || label\"\n [attr.id]=\"buildChildId()\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-required]=\"required || null\"\n [ngModel]=\"model\"\n (ngModelChange)=\"updateNgModel($event)\"\n [compareWith]=\"compareFn.bind(this)\"\n (change)=\"handleChange(model)\"\n #entryComponent\n ngDefaultControl\n >\n <option\n *ngFor=\"let element of elements\"\n [ngValue]=\"getValue(element)\"\n [attr.selected]=\"isElementSelected(element) ? 'selected' : null\"\n [attr.aria-selected]=\"isElementSelected(element)\"\n >\n {{ getLabel(element) }}\n </option>\n </select>\n</div>\n", components: [{ type: FoehnHelpModalComponent, selector: "foehn-help-modal", inputs: ["modalContent"] }, { type: FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.SelectMultipleControlValueAccessor, selector: "select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]", inputs: ["compareWith"] }], pipes: { "fromDictionary": SdkDictionaryPipe } });
4640
4643
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FoehnSelectComponent, decorators: [{
4641
4644
  type: Component,
4642
4645
  args: [{ selector: 'foehn-select', providers: [
@@ -4645,7 +4648,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
4645
4648
  useExisting: forwardRef(() => FoehnSelectComponent),
4646
4649
  multi: true
4647
4650
  }
4648
- ], template: "<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <div class=\"d-flex justify-content-between\">\n <label\n [attr.for]=\"buildChildId()\"\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : labelStyleModifier\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </label>\n <foehn-help-modal\n class=\"removePaddingButton\"\n *ngIf=\"!!helpModal\"\n [modalContent]=\"helpModal\"\n ></foehn-help-modal>\n </div>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <div *ngIf=\"!elements\">Chargement...</div>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <select\n *ngIf=\"!multiple\"\n [class.is-invalid]=\"hasErrorsToDisplay() || hasInheritErrorFromParent()\"\n class=\"form-control\"\n [name]=\"name || label\"\n [attr.id]=\"buildChildId()\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-required]=\"required || null\"\n [attr.autocomplete]=\"getAutoComplete()\"\n [ngModel]=\"model\"\n (ngModelChange)=\"updateNgModel($event)\"\n [compareWith]=\"compareFn.bind(this)\"\n (change)=\"handleChange(model)\"\n #entryComponent\n ngDefaultControl\n >\n <option [ngValue]=\"null\" [attr.disabled]=\"required ? 'disabled' : null\">\n <!-- option always displayed even if required=true to fix https://github.com/angular/angular/issues/14505-->\n {{ noSelectionLabel | fromDictionary }}\n </option>\n <option\n *ngFor=\"let element of elements\"\n [ngValue]=\"getValue(element)\"\n [attr.selected]=\"isElementSelected(element) ? 'selected' : null\"\n [attr.disabled]=\"getDisabled(element) ? 'disabled' : null\"\n >\n {{ getLabel(element) }}\n </option>\n </select>\n <select\n *ngIf=\"multiple\"\n multiple\n [attr.aria-multiselectable]=\"true\"\n [class.is-invalid]=\"hasErrorsToDisplay() || hasInheritErrorFromParent()\"\n class=\"form-control\"\n [name]=\"name || label\"\n [attr.id]=\"buildChildId()\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-required]=\"required || null\"\n [ngModel]=\"model\"\n (ngModelChange)=\"updateNgModel($event)\"\n [compareWith]=\"compareFn.bind(this)\"\n (change)=\"handleChange(model)\"\n #entryComponent\n ngDefaultControl\n >\n <option\n *ngFor=\"let element of elements\"\n [ngValue]=\"getValue(element)\"\n [attr.selected]=\"isElementSelected(element) ? 'selected' : null\"\n [attr.aria-selected]=\"isElementSelected(element)\"\n >\n {{ getLabel(element) }}\n </option>\n </select>\n</div>\n" }]
4651
+ ], template: "<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <div class=\"d-flex justify-content-between\">\n <label\n [attr.for]=\"buildChildId()\"\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : labelStyleModifier\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </label>\n <foehn-help-modal\n class=\"removePaddingButton\"\n *ngIf=\"!!helpModal\"\n [modalContent]=\"helpModal\"\n ></foehn-help-modal>\n </div>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <div *ngIf=\"!elements\">Chargement...</div>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <select\n *ngIf=\"!multiple\"\n [class.is-invalid]=\"hasErrorsToDisplay() || hasInheritErrorFromParent()\"\n class=\"form-control\"\n [name]=\"name || label\"\n [attr.id]=\"buildChildId()\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-required]=\"required || null\"\n [attr.autocomplete]=\"getAutoComplete()\"\n [ngModel]=\"model\"\n (ngModelChange)=\"updateNgModel($event)\"\n [compareWith]=\"compareFn.bind(this)\"\n (change)=\"handleChange(model)\"\n #entryComponent\n ngDefaultControl\n >\n <option *ngIf=\"showEmptyOption()\" [ngValue]=\"null\">\n <!-- empty option displayed even if required=true as long as there's no model to fix https://github.com/angular/angular/issues/14505 -->\n </option>\n <option *ngIf=\"!required\" [ngValue]=\"null\">\n {{ noSelectionLabel | fromDictionary }}\n </option>\n <option\n *ngFor=\"let element of elements\"\n [ngValue]=\"getValue(element)\"\n [attr.selected]=\"isElementSelected(element) ? 'selected' : null\"\n [attr.disabled]=\"getDisabled(element) ? 'disabled' : null\"\n >\n {{ getLabel(element) }}\n </option>\n </select>\n <select\n *ngIf=\"multiple\"\n multiple\n [attr.aria-multiselectable]=\"true\"\n [class.is-invalid]=\"hasErrorsToDisplay() || hasInheritErrorFromParent()\"\n class=\"form-control\"\n [name]=\"name || label\"\n [attr.id]=\"buildChildId()\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-required]=\"required || null\"\n [ngModel]=\"model\"\n (ngModelChange)=\"updateNgModel($event)\"\n [compareWith]=\"compareFn.bind(this)\"\n (change)=\"handleChange(model)\"\n #entryComponent\n ngDefaultControl\n >\n <option\n *ngFor=\"let element of elements\"\n [ngValue]=\"getValue(element)\"\n [attr.selected]=\"isElementSelected(element) ? 'selected' : null\"\n [attr.aria-selected]=\"isElementSelected(element)\"\n >\n {{ getLabel(element) }}\n </option>\n </select>\n</div>\n" }]
4649
4652
  }], ctorParameters: function () { return [{ type: i0.NgZone }]; }, propDecorators: { multiple: [{
4650
4653
  type: Input
4651
4654
  }], noSelectionLabel: [{