@flywheel-io/vision 2.4.4 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/components/button-toggle/button-toggle-item/button-toggle-item.component.d.ts +1 -1
  2. package/components/chip-list/chip-list.component.d.ts +17 -0
  3. package/components/dialog/dialog-confirm.component.d.ts +1 -1
  4. package/components/dialog/dialog-simple.component.d.ts +1 -1
  5. package/components/dialog/dialog.service.d.ts +4 -2
  6. package/components/menu/menu-item/menu-item.component.d.ts +1 -1
  7. package/components/select-menu/multi-select-menu/multi-select-menu.component.d.ts +2 -2
  8. package/components/select-menu/select-menu.component.d.ts +1 -1
  9. package/components/typeahead/typeahead.component.d.ts +57 -0
  10. package/components/wrapped-input/wrapped-input.component.d.ts +1 -1
  11. package/esm2022/components/button-toggle/button-toggle-item/button-toggle-item.component.mjs +1 -1
  12. package/esm2022/components/chip-list/chip-list.component.mjs +72 -0
  13. package/esm2022/components/dialog/dialog-confirm.component.mjs +1 -1
  14. package/esm2022/components/dialog/dialog-simple.component.mjs +1 -1
  15. package/esm2022/components/dialog/dialog.service.mjs +10 -4
  16. package/esm2022/components/menu/menu-container/menu-container.component.mjs +3 -3
  17. package/esm2022/components/menu/menu-item/menu-item.component.mjs +3 -3
  18. package/esm2022/components/menu/menu-sub-item/menu-sub-item.component.mjs +3 -3
  19. package/esm2022/components/paginator/paginator.component.mjs +2 -2
  20. package/esm2022/components/phone-input/phone-input.component.mjs +3 -3
  21. package/esm2022/components/popover/popover.component.mjs +2 -2
  22. package/esm2022/components/select-menu/multi-select-menu/multi-select-menu.component.mjs +5 -5
  23. package/esm2022/components/select-menu/select-menu.component.mjs +3 -3
  24. package/esm2022/components/snackbar/snackbar/snackbar.component.mjs +3 -3
  25. package/esm2022/components/snackbar/snackbar-container/snackbar-container.component.mjs +3 -3
  26. package/esm2022/components/textarea-input/textarea-input.component.mjs +8 -3
  27. package/esm2022/components/typeahead/typeahead.component.mjs +232 -0
  28. package/esm2022/components/wrapped-input/wrapped-input.component.mjs +3 -3
  29. package/esm2022/public-api.mjs +3 -1
  30. package/fesm2022/flywheel-io-vision.mjs +321 -31
  31. package/fesm2022/flywheel-io-vision.mjs.map +1 -1
  32. package/package.json +1 -1
  33. package/public-api.d.ts +2 -0
@@ -89,11 +89,11 @@ export class FwSnackbarComponent {
89
89
  this.cdr.markForCheck();
90
90
  }
91
91
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwSnackbarComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.FwSnackbarTimerService }], target: i0.ɵɵFactoryTarget.Component }); }
92
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FwSnackbarComponent, selector: "fw-snackbar", inputs: { message: "message", messageDuration: "messageDuration" }, outputs: { ready: "ready", dismiss: "dismiss", action: "action" }, host: { properties: { "class": "this.cssClass" } }, providers: [FwSnackbarTimerService], ngImport: i0, template: "<ng-container *ngIf=\"message\">\n <fw-icon *ngIf=\"message.icon\">{{ message.icon }}</fw-icon>\n <h4 class=\"vision-h4\" *ngIf=\"message.message\">{{ message.message }}</h4>\n <fw-button\n *ngIf=\"message.actionText\" type=\"ghost\"\n [color]=\"color\" size=\"small\"\n (click)=\"handleAction()\">{{ message.actionText }}\n </fw-button>\n <fw-icon-button\n *ngIf=\"message.showClose\"\n icon=\"close\" size=\"small\" [color]=\"message.severity\"\n (click)=\"handleDismiss()\">\n </fw-icon-button>\n <div *ngIf=\"!message.actionText && !message.showClose\"></div>\n</ng-container>\n", styles: [".vision-shadow-extra-large{box-shadow:0 8px 25px #0000001a}.vision-shadow-large,fw-snackbar{box-shadow:0 5px 15px #0000001a}.vision-shadow-medium{box-shadow:0 2px 5px #0000001a}.vision-shadow-small{box-shadow:0 1px 2px #0000000d}.vision-shadow-inner{box-shadow:0 2px 4px #00000014 inset}fw-snackbar{display:flex;align-items:flex-start;box-sizing:border-box;max-width:320px;min-width:200px;min-height:30px;padding:8px 8px 8px 16px;gap:8px;transform-origin:center;background-color:var(--card-header);color:var(--typography-base);white-space:pre-wrap;border-radius:4px;border:1px solid var(--separations-border);margin:8px}fw-snackbar>fw-icon{width:24px;height:24px;font-size:24px;white-space:nowrap;margin:3px 0}fw-snackbar h4{margin:6px 0 0;flex:1}fw-snackbar.primary fw-icon{color:var(--primary-base)}fw-snackbar.danger fw-icon{color:var(--red-base)}fw-snackbar.success fw-icon{color:var(--green-base)}fw-snackbar.warning fw-icon{color:var(--orange-base)}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.FwButtonComponent, selector: "fw-button", inputs: ["color", "size", "variant", "type", "disabled", "fullWidth", "leftIcon", "rightIcon"] }, { kind: "component", type: i4.FwIconButtonComponent, selector: "fw-icon-button", inputs: ["color", "icon", "size", "disabled", "selected"] }, { kind: "component", type: i5.FwIconComponent, selector: "fw-icon", inputs: ["size", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
92
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FwSnackbarComponent, selector: "fw-snackbar", inputs: { message: "message", messageDuration: "messageDuration" }, outputs: { ready: "ready", dismiss: "dismiss", action: "action" }, host: { properties: { "class": "this.cssClass" } }, providers: [FwSnackbarTimerService], ngImport: i0, template: "<ng-container *ngIf=\"message\">\n <fw-icon *ngIf=\"message.icon\">{{ message.icon }}</fw-icon>\n <h4 class=\"vision-h4\" *ngIf=\"message.message\">{{ message.message }}</h4>\n <fw-button\n *ngIf=\"message.actionText\" variant=\"ghost\"\n [color]=\"color\" size=\"small\"\n (click)=\"handleAction()\">{{ message.actionText }}\n </fw-button>\n <fw-icon-button\n *ngIf=\"message.showClose\"\n icon=\"close\" size=\"small\" [color]=\"message.severity\"\n (click)=\"handleDismiss()\">\n </fw-icon-button>\n <div *ngIf=\"!message.actionText && !message.showClose\"></div>\n</ng-container>\n", styles: [".vision-shadow-extra-large{box-shadow:0 8px 25px #0000001a}.vision-shadow-large,fw-snackbar{box-shadow:0 5px 15px #0000001a}.vision-shadow-medium{box-shadow:0 2px 5px #0000001a}.vision-shadow-small{box-shadow:0 1px 2px #0000000d}.vision-shadow-inner{box-shadow:0 2px 4px #00000014 inset}fw-snackbar{display:flex;align-items:flex-start;box-sizing:border-box;max-width:320px;min-width:200px;min-height:30px;padding:8px 8px 8px 16px;gap:8px;transform-origin:center;background-color:var(--card-header);color:var(--typography-base);white-space:pre-wrap;border-radius:4px;border:1px solid var(--separations-border);margin:8px}fw-snackbar>fw-icon{width:24px;height:24px;font-size:24px;white-space:nowrap;margin:3px 0}fw-snackbar h4{margin:6px 0 0;flex:1}fw-snackbar.primary fw-icon{color:var(--primary-base)}fw-snackbar.danger fw-icon{color:var(--red-base)}fw-snackbar.success fw-icon{color:var(--green-base)}fw-snackbar.warning fw-icon{color:var(--orange-base)}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.FwButtonComponent, selector: "fw-button", inputs: ["color", "size", "variant", "type", "disabled", "fullWidth", "leftIcon", "rightIcon"] }, { kind: "component", type: i4.FwIconButtonComponent, selector: "fw-icon-button", inputs: ["color", "icon", "size", "disabled", "selected"] }, { kind: "component", type: i5.FwIconComponent, selector: "fw-icon", inputs: ["size", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
93
93
  }
94
94
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwSnackbarComponent, decorators: [{
95
95
  type: Component,
96
- args: [{ selector: 'fw-snackbar', providers: [FwSnackbarTimerService], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"message\">\n <fw-icon *ngIf=\"message.icon\">{{ message.icon }}</fw-icon>\n <h4 class=\"vision-h4\" *ngIf=\"message.message\">{{ message.message }}</h4>\n <fw-button\n *ngIf=\"message.actionText\" type=\"ghost\"\n [color]=\"color\" size=\"small\"\n (click)=\"handleAction()\">{{ message.actionText }}\n </fw-button>\n <fw-icon-button\n *ngIf=\"message.showClose\"\n icon=\"close\" size=\"small\" [color]=\"message.severity\"\n (click)=\"handleDismiss()\">\n </fw-icon-button>\n <div *ngIf=\"!message.actionText && !message.showClose\"></div>\n</ng-container>\n", styles: [".vision-shadow-extra-large{box-shadow:0 8px 25px #0000001a}.vision-shadow-large,fw-snackbar{box-shadow:0 5px 15px #0000001a}.vision-shadow-medium{box-shadow:0 2px 5px #0000001a}.vision-shadow-small{box-shadow:0 1px 2px #0000000d}.vision-shadow-inner{box-shadow:0 2px 4px #00000014 inset}fw-snackbar{display:flex;align-items:flex-start;box-sizing:border-box;max-width:320px;min-width:200px;min-height:30px;padding:8px 8px 8px 16px;gap:8px;transform-origin:center;background-color:var(--card-header);color:var(--typography-base);white-space:pre-wrap;border-radius:4px;border:1px solid var(--separations-border);margin:8px}fw-snackbar>fw-icon{width:24px;height:24px;font-size:24px;white-space:nowrap;margin:3px 0}fw-snackbar h4{margin:6px 0 0;flex:1}fw-snackbar.primary fw-icon{color:var(--primary-base)}fw-snackbar.danger fw-icon{color:var(--red-base)}fw-snackbar.success fw-icon{color:var(--green-base)}fw-snackbar.warning fw-icon{color:var(--orange-base)}\n"] }]
96
+ args: [{ selector: 'fw-snackbar', providers: [FwSnackbarTimerService], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"message\">\n <fw-icon *ngIf=\"message.icon\">{{ message.icon }}</fw-icon>\n <h4 class=\"vision-h4\" *ngIf=\"message.message\">{{ message.message }}</h4>\n <fw-button\n *ngIf=\"message.actionText\" variant=\"ghost\"\n [color]=\"color\" size=\"small\"\n (click)=\"handleAction()\">{{ message.actionText }}\n </fw-button>\n <fw-icon-button\n *ngIf=\"message.showClose\"\n icon=\"close\" size=\"small\" [color]=\"message.severity\"\n (click)=\"handleDismiss()\">\n </fw-icon-button>\n <div *ngIf=\"!message.actionText && !message.showClose\"></div>\n</ng-container>\n", styles: [".vision-shadow-extra-large{box-shadow:0 8px 25px #0000001a}.vision-shadow-large,fw-snackbar{box-shadow:0 5px 15px #0000001a}.vision-shadow-medium{box-shadow:0 2px 5px #0000001a}.vision-shadow-small{box-shadow:0 1px 2px #0000000d}.vision-shadow-inner{box-shadow:0 2px 4px #00000014 inset}fw-snackbar{display:flex;align-items:flex-start;box-sizing:border-box;max-width:320px;min-width:200px;min-height:30px;padding:8px 8px 8px 16px;gap:8px;transform-origin:center;background-color:var(--card-header);color:var(--typography-base);white-space:pre-wrap;border-radius:4px;border:1px solid var(--separations-border);margin:8px}fw-snackbar>fw-icon{width:24px;height:24px;font-size:24px;white-space:nowrap;margin:3px 0}fw-snackbar h4{margin:6px 0 0;flex:1}fw-snackbar.primary fw-icon{color:var(--primary-base)}fw-snackbar.danger fw-icon{color:var(--red-base)}fw-snackbar.success fw-icon{color:var(--green-base)}fw-snackbar.warning fw-icon{color:var(--orange-base)}\n"] }]
97
97
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.FwSnackbarTimerService }], propDecorators: { message: [{
98
98
  type: Input
99
99
  }], messageDuration: [{
@@ -108,4 +108,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
108
108
  type: HostBinding,
109
109
  args: ['class']
110
110
  }] } });
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hY2tiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc25hY2tiYXIvc25hY2tiYXIvc25hY2tiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc25hY2tiYXIvc25hY2tiYXIvc25hY2tiYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0VBQWtFO0FBQ2xFLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUVMLE1BQU0sRUFDTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7QUFXbkUsTUFBTSxPQUFPLG1CQUFtQjtJQVE5QixJQUEwQixRQUFRO1FBQ2hDLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQztRQUMvQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUM7WUFDM0IsT0FBTyxRQUFRLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDckMsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQW9CLEdBQXNCLEVBQVUsWUFBb0M7UUFBcEUsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBd0I7UUFmL0Usb0JBQWUsR0FBVyxJQUFJLENBQUM7UUFDOUIsVUFBSyxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBQ2hELFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3JDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzlDLFVBQUssR0FBaUQsU0FBUyxDQUFDO0lBWWhFLENB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QUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3hCLENBQUM7UUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7K0dBdEZVLG1CQUFtQjttR0FBbkIsbUJBQW1CLGlPQUxuQixDQUFDLHNCQUFzQixDQUFDLDBCQ3JCckMsaW1CQWVBOzs0RkRXYSxtQkFBbUI7a0JBVC9CLFNBQVM7K0JBQ0UsYUFBYSxhQUdaLENBQUMsc0JBQXNCLENBQUMsaUJBQ3BCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07MkhBSXRDLE9BQU87c0JBQWYsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNJLEtBQUs7c0JBQWQsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFHbUIsUUFBUTtzQkFBakMsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHJ4LWFuZ3VsYXIvbm8tZXhwbGljaXQtY2hhbmdlLWRldGVjdGlvbi1hcGlzICovXG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEZ3U25hY2tiYXJNZXNzYWdlIH0gZnJvbSAnLi4vc25hY2tiYXItbWVzc2FnZS5tb2RlbCc7XG5pbXBvcnQgeyBGd1NuYWNrYmFyVGltZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc25hY2tiYXItdGltZXIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Z3LXNuYWNrYmFyJyxcbiAgc3R5bGVVcmxzOiBbJy4vc25hY2tiYXIuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3NuYWNrYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbRndTbmFja2JhclRpbWVyU2VydmljZV0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcblxuZXhwb3J0IGNsYXNzIEZ3U25hY2tiYXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkluaXQge1xuICBASW5wdXQoKSBtZXNzYWdlOiBGd1NuYWNrYmFyTWVzc2FnZTtcbiAgQElucHV0KCkgbWVzc2FnZUR1cmF0aW9uOiBudW1iZXIgPSA5MDAwO1xuICBAT3V0cHV0KCkgcmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyPEZ3U25hY2tiYXJDb21wb25lbnQ+KCk7XG4gIEBPdXRwdXQoKSBkaXNtaXNzID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBhY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgY29sb3I6ICdwcmltYXJ5JyB8ICdzdWNjZXNzJyB8ICd3YXJuaW5nJyB8ICdkYW5nZXInID0gJ3ByaW1hcnknO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKSBnZXQgY3NzQ2xhc3MoKTogc3RyaW5nIHtcbiAgICBjb25zdCBjc3NDbGFzcyA9ICdmdy1zbmFja2Jhcic7XG4gICAgaWYgKHRoaXMubWVzc2FnZT8uc2V2ZXJpdHkpIHtcbiAgICAgIHJldHVybiBjc3NDbGFzcyArICcgJyArIHRoaXMuY29sb3I7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjc3NDbGFzcztcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgdGltZXJTZXJ2aWNlOiBGd1NuYWNrYmFyVGltZXJTZXJ2aWNlKSB7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZWFkeS5lbWl0KHRoaXMpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgc3RhcnRUaW1lcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tZXNzYWdlICYmIHRoaXMubWVzc2FnZS5kdXJhdGlvbikge1xuICAgICAgdGhpcy5tZXNzYWdlRHVyYXRpb24gPSB0aGlzLm1lc3NhZ2UuZHVyYXRpb247XG4gICAgfVxuICAgIHRoaXMudGltZXJTZXJ2aWNlLnN0YXJ0KHRoaXMubWVzc2FnZUR1cmF0aW9uKS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMuaGFuZGxlRGlzbWlzcygpO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBzdG9wVGltZXIoKTogdm9pZCB7XG4gICAgdGhpcy50aW1lclNlcnZpY2Uuc3RvcCgpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3dpdGNoICh0aGlzLm1lc3NhZ2Uuc2V2ZXJpdHkpIHtcbiAgICAgIGNhc2UgJ3N1Y2Nlc3MnOlxuICAgICAgICBpZiAoIXRoaXMubWVzc2FnZS5pY29uKSB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlLmljb24gPSAnZG9uZS1jaGVjay10cmFja2VkJztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbG9yID0gJ3N1Y2Nlc3MnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3dhcm5pbmcnOlxuICAgICAgICBpZiAoIXRoaXMubWVzc2FnZS5pY29uKSB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlLmljb24gPSAnd2FybmluZy1jaXJjbGUnO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29sb3IgPSAnd2FybmluZyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICBpZiAoIXRoaXMubWVzc2FnZS5pY29uKSB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlLmljb24gPSAnd2FybmluZyc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubWVzc2FnZS5zaG93Q2xvc2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMubWVzc2FnZS5zaG93Q2xvc2UgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5tZXNzYWdlLmR1cmF0aW9uKSB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlLmR1cmF0aW9uID0gMjkwMDA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb2xvciA9ICdkYW5nZXInO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2luZm8nOlxuICAgICAgICBpZiAoIXRoaXMubWVzc2FnZS5pY29uKSB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlLmljb24gPSAnaW5mb3JtYXRpb24tY2lyY2xlJztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbG9yID0gJ3ByaW1hcnknO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBoYW5kbGVEaXNtaXNzKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzbWlzcy5lbWl0KHRoaXMubWVzc2FnZS5pZCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBoYW5kbGVBY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5hY3Rpb24uZW1pdCh0aGlzLm1lc3NhZ2UuaWQpO1xuICAgIGlmICh0aGlzLm1lc3NhZ2UuYWN0aW9uKSB7XG4gICAgICB0aGlzLm1lc3NhZ2UuYWN0aW9uKCk7XG4gICAgfVxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJtZXNzYWdlXCI+XG4gIDxmdy1pY29uICpuZ0lmPVwibWVzc2FnZS5pY29uXCI+e3sgbWVzc2FnZS5pY29uIH19PC9mdy1pY29uPlxuICA8aDQgY2xhc3M9XCJ2aXNpb24taDRcIiAqbmdJZj1cIm1lc3NhZ2UubWVzc2FnZVwiPnt7IG1lc3NhZ2UubWVzc2FnZSB9fTwvaDQ+XG4gIDxmdy1idXR0b25cbiAgICAqbmdJZj1cIm1lc3NhZ2UuYWN0aW9uVGV4dFwiIHR5cGU9XCJnaG9zdFwiXG4gICAgW2NvbG9yXT1cImNvbG9yXCIgc2l6ZT1cInNtYWxsXCJcbiAgICAoY2xpY2spPVwiaGFuZGxlQWN0aW9uKClcIj57eyBtZXNzYWdlLmFjdGlvblRleHQgfX1cbiAgPC9mdy1idXR0b24+XG4gIDxmdy1pY29uLWJ1dHRvblxuICAgICpuZ0lmPVwibWVzc2FnZS5zaG93Q2xvc2VcIlxuICAgIGljb249XCJjbG9zZVwiIHNpemU9XCJzbWFsbFwiIFtjb2xvcl09XCJtZXNzYWdlLnNldmVyaXR5XCJcbiAgICAoY2xpY2spPVwiaGFuZGxlRGlzbWlzcygpXCI+XG4gIDwvZnctaWNvbi1idXR0b24+XG4gIDxkaXYgKm5nSWY9XCIhbWVzc2FnZS5hY3Rpb25UZXh0ICYmICFtZXNzYWdlLnNob3dDbG9zZVwiPjwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hY2tiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc25hY2tiYXIvc25hY2tiYXIvc25hY2tiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc25hY2tiYXIvc25hY2tiYXIvc25hY2tiYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0VBQWtFO0FBQ2xFLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUVMLE1BQU0sRUFDTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7QUFXbkUsTUFBTSxPQUFPLG1CQUFtQjtJQVE5QixJQUEwQixRQUFRO1FBQ2hDLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQztRQUMvQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUM7WUFDM0IsT0FBTyxRQUFRLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDckMsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQW9CLEdBQXNCLEVBQVUsWUFBb0M7UUFBcEUsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBd0I7UUFmL0Usb0JBQWUsR0FBVyxJQUFJLENBQUM7UUFDOUIsVUFBSyxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBQ2hELFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3JDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzlDLFVBQUssR0FBaUQsU0FBUyxDQUFDO0lBWWhFLENB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QUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3hCLENBQUM7UUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7K0dBdEZVLG1CQUFtQjttR0FBbkIsbUJBQW1CLGlPQUxuQixDQUFDLHNCQUFzQixDQUFDLDBCQ3JCckMsb21CQWVBOzs0RkRXYSxtQkFBbUI7a0JBVC9CLFNBQVM7K0JBQ0UsYUFBYSxhQUdaLENBQUMsc0JBQXNCLENBQUMsaUJBQ3BCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07MkhBSXRDLE9BQU87c0JBQWYsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNJLEtBQUs7c0JBQWQsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFHbUIsUUFBUTtzQkFBakMsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHJ4LWFuZ3VsYXIvbm8tZXhwbGljaXQtY2hhbmdlLWRldGVjdGlvbi1hcGlzICovXG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEZ3U25hY2tiYXJNZXNzYWdlIH0gZnJvbSAnLi4vc25hY2tiYXItbWVzc2FnZS5tb2RlbCc7XG5pbXBvcnQgeyBGd1NuYWNrYmFyVGltZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc25hY2tiYXItdGltZXIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Z3LXNuYWNrYmFyJyxcbiAgc3R5bGVVcmxzOiBbJy4vc25hY2tiYXIuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3NuYWNrYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbRndTbmFja2JhclRpbWVyU2VydmljZV0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcblxuZXhwb3J0IGNsYXNzIEZ3U25hY2tiYXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkluaXQge1xuICBASW5wdXQoKSBtZXNzYWdlOiBGd1NuYWNrYmFyTWVzc2FnZTtcbiAgQElucHV0KCkgbWVzc2FnZUR1cmF0aW9uOiBudW1iZXIgPSA5MDAwO1xuICBAT3V0cHV0KCkgcmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyPEZ3U25hY2tiYXJDb21wb25lbnQ+KCk7XG4gIEBPdXRwdXQoKSBkaXNtaXNzID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBhY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgY29sb3I6ICdwcmltYXJ5JyB8ICdzdWNjZXNzJyB8ICd3YXJuaW5nJyB8ICdkYW5nZXInID0gJ3ByaW1hcnknO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKSBnZXQgY3NzQ2xhc3MoKTogc3RyaW5nIHtcbiAgICBjb25zdCBjc3NDbGFzcyA9ICdmdy1zbmFja2Jhcic7XG4gICAgaWYgKHRoaXMubWVzc2FnZT8uc2V2ZXJpdHkpIHtcbiAgICAgIHJldHVybiBjc3NDbGFzcyArICcgJyArIHRoaXMuY29sb3I7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjc3NDbGFzcztcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgdGltZXJTZXJ2aWNlOiBGd1NuYWNrYmFyVGltZXJTZXJ2aWNlKSB7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZWFkeS5lbWl0KHRoaXMpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgc3RhcnRUaW1lcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tZXNzYWdlICYmIHRoaXMubWVzc2FnZS5kdXJhdGlvbikge1xuICAgICAgdGhpcy5tZXNzYWdlRHVyYXRpb24gPSB0aGlzLm1lc3NhZ2UuZHVyYXRpb247XG4gICAgfVxuICAgIHRoaXMudGltZXJTZXJ2aWNlLnN0YXJ0KHRoaXMubWVzc2FnZUR1cmF0aW9uKS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMuaGFuZGxlRGlzbWlzcygpO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBzdG9wVGltZXIoKTogdm9pZCB7XG4gICAgdGhpcy50aW1lclNlcnZpY2Uuc3RvcCgpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3dpdGNoICh0aGlzLm1lc3NhZ2Uuc2V2ZXJpdHkpIHtcbiAgICAgIGNhc2UgJ3N1Y2Nlc3MnOlxuICAgICAgICBpZiAoIXRoaXMubWVzc2FnZS5pY29uKSB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlLmljb24gPSAnZG9uZS1jaGVjay10cmFja2VkJztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbG9yID0gJ3N1Y2Nlc3MnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3dhcm5pbmcnOlxuICAgICAgICBpZiAoIXRoaXMubWVzc2FnZS5pY29uKSB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlLmljb24gPSAnd2FybmluZy1jaXJjbGUnO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29sb3IgPSAnd2FybmluZyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICBpZiAoIXRoaXMubWVzc2FnZS5pY29uKSB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlLmljb24gPSAnd2FybmluZyc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubWVzc2FnZS5zaG93Q2xvc2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMubWVzc2FnZS5zaG93Q2xvc2UgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5tZXNzYWdlLmR1cmF0aW9uKSB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlLmR1cmF0aW9uID0gMjkwMDA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb2xvciA9ICdkYW5nZXInO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2luZm8nOlxuICAgICAgICBpZiAoIXRoaXMubWVzc2FnZS5pY29uKSB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlLmljb24gPSAnaW5mb3JtYXRpb24tY2lyY2xlJztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbG9yID0gJ3ByaW1hcnknO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBoYW5kbGVEaXNtaXNzKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzbWlzcy5lbWl0KHRoaXMubWVzc2FnZS5pZCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBoYW5kbGVBY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5hY3Rpb24uZW1pdCh0aGlzLm1lc3NhZ2UuaWQpO1xuICAgIGlmICh0aGlzLm1lc3NhZ2UuYWN0aW9uKSB7XG4gICAgICB0aGlzLm1lc3NhZ2UuYWN0aW9uKCk7XG4gICAgfVxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJtZXNzYWdlXCI+XG4gIDxmdy1pY29uICpuZ0lmPVwibWVzc2FnZS5pY29uXCI+e3sgbWVzc2FnZS5pY29uIH19PC9mdy1pY29uPlxuICA8aDQgY2xhc3M9XCJ2aXNpb24taDRcIiAqbmdJZj1cIm1lc3NhZ2UubWVzc2FnZVwiPnt7IG1lc3NhZ2UubWVzc2FnZSB9fTwvaDQ+XG4gIDxmdy1idXR0b25cbiAgICAqbmdJZj1cIm1lc3NhZ2UuYWN0aW9uVGV4dFwiIHZhcmlhbnQ9XCJnaG9zdFwiXG4gICAgW2NvbG9yXT1cImNvbG9yXCIgc2l6ZT1cInNtYWxsXCJcbiAgICAoY2xpY2spPVwiaGFuZGxlQWN0aW9uKClcIj57eyBtZXNzYWdlLmFjdGlvblRleHQgfX1cbiAgPC9mdy1idXR0b24+XG4gIDxmdy1pY29uLWJ1dHRvblxuICAgICpuZ0lmPVwibWVzc2FnZS5zaG93Q2xvc2VcIlxuICAgIGljb249XCJjbG9zZVwiIHNpemU9XCJzbWFsbFwiIFtjb2xvcl09XCJtZXNzYWdlLnNldmVyaXR5XCJcbiAgICAoY2xpY2spPVwiaGFuZGxlRGlzbWlzcygpXCI+XG4gIDwvZnctaWNvbi1idXR0b24+XG4gIDxkaXYgKm5nSWY9XCIhbWVzc2FnZS5hY3Rpb25UZXh0ICYmICFtZXNzYWdlLnNob3dDbG9zZVwiPjwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -51,13 +51,13 @@ export class FwSnackbarContainerComponent {
51
51
  this.cdr.markForCheck();
52
52
  }
53
53
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwSnackbarContainerComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.FwSnackbarService }], target: i0.ɵɵFactoryTarget.Component }); }
54
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FwSnackbarContainerComponent, selector: "fw-snackbar-container", host: { properties: { "attr.class": "this.classes" } }, ngImport: i0, template: "<div role=\"list\">\n <div class=\"buttons\">\n <fw-button\n *ngIf=\"messages.length > 0\" (click)=\"clearAll()\"\n class=\"clear-all\" aria-label=\"clear all\"\n color=\"slate\" size=\"small\" type=\"ghost\">\n Clear All\n </fw-button>\n </div>\n <fw-snackbar\n *ngFor=\"let message of messages; index as $index\"\n (ready)=\"onReady($event)\"\n (dismiss)=\"onDismiss($event)\"\n [message]=\"message\"\n [attr.aria-label]=\"message.message\"\n role=\"listitem\"\n ></fw-snackbar>\n</div>\n", styles: ["fw-snackbar-container{position:fixed;right:6px;bottom:10px;z-index:999999}fw-snackbar-container .buttons{text-align:right;padding-right:10px}fw-snackbar-container .buttons fw-button{transition:opacity .1s ease-in;opacity:0}fw-snackbar-container:hover .buttons>fw-button{opacity:1}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.FwButtonComponent, selector: "fw-button", inputs: ["color", "size", "variant", "type", "disabled", "fullWidth", "leftIcon", "rightIcon"] }, { kind: "component", type: i4.FwSnackbarComponent, selector: "fw-snackbar", inputs: ["message", "messageDuration"], outputs: ["ready", "dismiss", "action"] }], encapsulation: i0.ViewEncapsulation.None }); }
54
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FwSnackbarContainerComponent, selector: "fw-snackbar-container", host: { properties: { "attr.class": "this.classes" } }, ngImport: i0, template: "<div role=\"list\">\n <div class=\"buttons\">\n <fw-button\n *ngIf=\"messages.length > 0\" (click)=\"clearAll()\"\n class=\"clear-all\" aria-label=\"clear all\"\n color=\"slate\" size=\"small\" variant=\"ghost\">\n Clear All\n </fw-button>\n </div>\n <fw-snackbar\n *ngFor=\"let message of messages; index as $index\"\n (ready)=\"onReady($event)\"\n (dismiss)=\"onDismiss($event)\"\n [message]=\"message\"\n [attr.aria-label]=\"message.message\"\n role=\"listitem\"\n ></fw-snackbar>\n</div>\n", styles: ["fw-snackbar-container{position:fixed;right:6px;bottom:10px;z-index:999999}fw-snackbar-container .buttons{text-align:right;padding-right:10px}fw-snackbar-container .buttons fw-button{transition:opacity .1s ease-in;opacity:0}fw-snackbar-container:hover .buttons>fw-button{opacity:1}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.FwButtonComponent, selector: "fw-button", inputs: ["color", "size", "variant", "type", "disabled", "fullWidth", "leftIcon", "rightIcon"] }, { kind: "component", type: i4.FwSnackbarComponent, selector: "fw-snackbar", inputs: ["message", "messageDuration"], outputs: ["ready", "dismiss", "action"] }], encapsulation: i0.ViewEncapsulation.None }); }
55
55
  }
56
56
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwSnackbarContainerComponent, decorators: [{
57
57
  type: Component,
58
- args: [{ selector: 'fw-snackbar-container', encapsulation: ViewEncapsulation.None, template: "<div role=\"list\">\n <div class=\"buttons\">\n <fw-button\n *ngIf=\"messages.length > 0\" (click)=\"clearAll()\"\n class=\"clear-all\" aria-label=\"clear all\"\n color=\"slate\" size=\"small\" type=\"ghost\">\n Clear All\n </fw-button>\n </div>\n <fw-snackbar\n *ngFor=\"let message of messages; index as $index\"\n (ready)=\"onReady($event)\"\n (dismiss)=\"onDismiss($event)\"\n [message]=\"message\"\n [attr.aria-label]=\"message.message\"\n role=\"listitem\"\n ></fw-snackbar>\n</div>\n", styles: ["fw-snackbar-container{position:fixed;right:6px;bottom:10px;z-index:999999}fw-snackbar-container .buttons{text-align:right;padding-right:10px}fw-snackbar-container .buttons fw-button{transition:opacity .1s ease-in;opacity:0}fw-snackbar-container:hover .buttons>fw-button{opacity:1}\n"] }]
58
+ args: [{ selector: 'fw-snackbar-container', encapsulation: ViewEncapsulation.None, template: "<div role=\"list\">\n <div class=\"buttons\">\n <fw-button\n *ngIf=\"messages.length > 0\" (click)=\"clearAll()\"\n class=\"clear-all\" aria-label=\"clear all\"\n color=\"slate\" size=\"small\" variant=\"ghost\">\n Clear All\n </fw-button>\n </div>\n <fw-snackbar\n *ngFor=\"let message of messages; index as $index\"\n (ready)=\"onReady($event)\"\n (dismiss)=\"onDismiss($event)\"\n [message]=\"message\"\n [attr.aria-label]=\"message.message\"\n role=\"listitem\"\n ></fw-snackbar>\n</div>\n", styles: ["fw-snackbar-container{position:fixed;right:6px;bottom:10px;z-index:999999}fw-snackbar-container .buttons{text-align:right;padding-right:10px}fw-snackbar-container .buttons fw-button{transition:opacity .1s ease-in;opacity:0}fw-snackbar-container:hover .buttons>fw-button{opacity:1}\n"] }]
59
59
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.FwSnackbarService }], propDecorators: { classes: [{
60
60
  type: HostBinding,
61
61
  args: ['attr.class']
62
62
  }] } });
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hY2tiYXItY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NuYWNrYmFyL3NuYWNrYmFyLWNvbnRhaW5lci9zbmFja2Jhci1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc25hY2tiYXIvc25hY2tiYXItY29udGFpbmVyL3NuYWNrYmFyLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFdBQVcsRUFFWCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBWXBDLE1BQU0sT0FBTyw0QkFBNEI7SUFDdkMsSUFBK0IsT0FBTztRQUNwQyxPQUFPLHVCQUF1QixDQUFDO0lBQ2pDLENBQUM7SUFBQSxDQUFDO0lBU0YsWUFBb0IsR0FBc0IsRUFBVSxlQUFrQztRQUFsRSxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUFVLG9CQUFlLEdBQWYsZUFBZSxDQUFtQjtRQVB0RixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsYUFBUSxHQUF3QixFQUFFLENBQUM7UUFFM0Isa0JBQWEsR0FBRztZQUN0QixRQUFRLEVBQUUsWUFBWSxDQUFDLEtBQUs7U0FDN0IsQ0FBQztRQUdBLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQTZCLEVBQUUsRUFBRTtZQUN2RyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztZQUN6Qix5RUFBeUU7WUFDekUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsS0FBSyxNQUFNLFlBQVksSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQzdELFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sQ0FBQyxRQUE2QjtRQUNuQyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQy9ELGNBQWMsQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDO1FBQzlCLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsU0FBUyxDQUFDLFNBQWlCO1FBQ3pCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLEVBQUUsS0FBSyxTQUFTLENBQUMsQ0FBQztRQUN0RixJQUFJLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQztZQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzFCLENBQUM7UUFDRCxJQUFJLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUNELHlFQUF5RTtRQUN6RSxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQyx5RUFBeUU7UUFDekUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQixDQUFDOytHQWhEVSw0QkFBNEI7bUdBQTVCLDRCQUE0QixxSENuQnpDLDRoQkFrQkE7OzRGRENhLDRCQUE0QjtrQkFOeEMsU0FBUzsrQkFDRSx1QkFBdUIsaUJBR2xCLGlCQUFpQixDQUFDLElBQUk7c0hBR04sT0FBTztzQkFBckMsV0FBVzt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSG9zdEJpbmRpbmcsXG4gIE9uRGVzdHJveSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEZ3U25hY2tiYXJTZXJ2aWNlIH0gZnJvbSAnLi4vc25hY2tiYXIuc2VydmljZSc7XG5pbXBvcnQgeyBGd1NuYWNrYmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vc25hY2tiYXIvc25hY2tiYXIuY29tcG9uZW50JztcbmltcG9ydCB7IEZ3U25hY2tiYXJNZXNzYWdlIH0gZnJvbSAnLi4vc25hY2tiYXItbWVzc2FnZS5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Z3LXNuYWNrYmFyLWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zbmFja2Jhci1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zbmFja2Jhci1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRndTbmFja2JhckNvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBIb3N0QmluZGluZygnYXR0ci5jbGFzcycpIGdldCBjbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdmdy1zbmFja2Jhci1jb250YWluZXInO1xuICB9O1xuXG4gIGxpbWl0ID0gMTA7XG4gIG1lc3NhZ2VzOiBGd1NuYWNrYmFyTWVzc2FnZVtdID0gW107XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zID0ge1xuICAgIG1lc3NhZ2VzOiBTdWJzY3JpcHRpb24uRU1QVFksXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHNuYWNrYmFyU2VydmljZTogRndTbmFja2JhclNlcnZpY2UpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMubWVzc2FnZXMgPSB0aGlzLnNuYWNrYmFyU2VydmljZS5tZXNzYWdlcyQuc3Vic2NyaWJlKChtZXNzYWdlczogRndTbmFja2Jhck1lc3NhZ2VbXSkgPT4ge1xuICAgICAgdGhpcy5tZXNzYWdlcyA9IG1lc3NhZ2VzO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEByeC1hbmd1bGFyL25vLWV4cGxpY2l0LWNoYW5nZS1kZXRlY3Rpb24tYXBpc1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IHN1YnNjcmlwdGlvbiBvZiBPYmplY3QudmFsdWVzKHRoaXMuc3Vic2NyaXB0aW9ucykpIHtcbiAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uUmVhZHkoc25hY2tiYXI6IEZ3U25hY2tiYXJDb21wb25lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50TWVzc2FnZSA9IHRoaXMubWVzc2FnZXNbdGhpcy5tZXNzYWdlcy5sZW5ndGggLSAxXTtcbiAgICBjdXJyZW50TWVzc2FnZS5yZWYgPSBzbmFja2JhcjtcbiAgICBzbmFja2Jhci5zdGFydFRpbWVyKCk7XG4gIH1cblxuICBvbkRpc21pc3MobWVzc2FnZUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5tZXNzYWdlcy5maW5kKGN1cnJlbnRNZXNzYWdlID0+IGN1cnJlbnRNZXNzYWdlLmlkID09PSBtZXNzYWdlSWQpO1xuICAgIGlmIChtZXNzYWdlPy5yZWYpIHtcbiAgICAgIG1lc3NhZ2UucmVmLnN0b3BUaW1lcigpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZT8uaWQpIHtcbiAgICAgIHRoaXMuc25hY2tiYXJTZXJ2aWNlLmRpc21pc3MobWVzc2FnZS5pZCk7XG4gICAgfVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAcngtYW5ndWxhci9uby1leHBsaWNpdC1jaGFuZ2UtZGV0ZWN0aW9uLWFwaXNcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGNsZWFyQWxsKCk6IHZvaWQge1xuICAgIHRoaXMuc25hY2tiYXJTZXJ2aWNlLmRpc21pc3NBbGwoKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHJ4LWFuZ3VsYXIvbm8tZXhwbGljaXQtY2hhbmdlLWRldGVjdGlvbi1hcGlzXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cbn1cbiIsIjxkaXYgcm9sZT1cImxpc3RcIj5cbiAgPGRpdiBjbGFzcz1cImJ1dHRvbnNcIj5cbiAgICA8ZnctYnV0dG9uXG4gICAgICAqbmdJZj1cIm1lc3NhZ2VzLmxlbmd0aCA+IDBcIiAoY2xpY2spPVwiY2xlYXJBbGwoKVwiXG4gICAgICBjbGFzcz1cImNsZWFyLWFsbFwiIGFyaWEtbGFiZWw9XCJjbGVhciBhbGxcIlxuICAgICAgY29sb3I9XCJzbGF0ZVwiIHNpemU9XCJzbWFsbFwiIHR5cGU9XCJnaG9zdFwiPlxuICAgICAgQ2xlYXIgQWxsXG4gICAgPC9mdy1idXR0b24+XG4gIDwvZGl2PlxuICA8Znctc25hY2tiYXJcbiAgICAqbmdGb3I9XCJsZXQgbWVzc2FnZSBvZiBtZXNzYWdlczsgaW5kZXggYXMgJGluZGV4XCJcbiAgICAocmVhZHkpPVwib25SZWFkeSgkZXZlbnQpXCJcbiAgICAoZGlzbWlzcyk9XCJvbkRpc21pc3MoJGV2ZW50KVwiXG4gICAgW21lc3NhZ2VdPVwibWVzc2FnZVwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJtZXNzYWdlLm1lc3NhZ2VcIlxuICAgIHJvbGU9XCJsaXN0aXRlbVwiXG4gID48L2Z3LXNuYWNrYmFyPlxuPC9kaXY+XG4iXX0=
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hY2tiYXItY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NuYWNrYmFyL3NuYWNrYmFyLWNvbnRhaW5lci9zbmFja2Jhci1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc25hY2tiYXIvc25hY2tiYXItY29udGFpbmVyL3NuYWNrYmFyLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFdBQVcsRUFFWCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBWXBDLE1BQU0sT0FBTyw0QkFBNEI7SUFDdkMsSUFBK0IsT0FBTztRQUNwQyxPQUFPLHVCQUF1QixDQUFDO0lBQ2pDLENBQUM7SUFBQSxDQUFDO0lBU0YsWUFBb0IsR0FBc0IsRUFBVSxlQUFrQztRQUFsRSxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUFVLG9CQUFlLEdBQWYsZUFBZSxDQUFtQjtRQVB0RixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsYUFBUSxHQUF3QixFQUFFLENBQUM7UUFFM0Isa0JBQWEsR0FBRztZQUN0QixRQUFRLEVBQUUsWUFBWSxDQUFDLEtBQUs7U0FDN0IsQ0FBQztRQUdBLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQTZCLEVBQUUsRUFBRTtZQUN2RyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztZQUN6Qix5RUFBeUU7WUFDekUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsS0FBSyxNQUFNLFlBQVksSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQzdELFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sQ0FBQyxRQUE2QjtRQUNuQyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQy9ELGNBQWMsQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDO1FBQzlCLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsU0FBUyxDQUFDLFNBQWlCO1FBQ3pCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLEVBQUUsS0FBSyxTQUFTLENBQUMsQ0FBQztRQUN0RixJQUFJLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQztZQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzFCLENBQUM7UUFDRCxJQUFJLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUNELHlFQUF5RTtRQUN6RSxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQyx5RUFBeUU7UUFDekUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQixDQUFDOytHQWhEVSw0QkFBNEI7bUdBQTVCLDRCQUE0QixxSENuQnpDLCtoQkFrQkE7OzRGRENhLDRCQUE0QjtrQkFOeEMsU0FBUzsrQkFDRSx1QkFBdUIsaUJBR2xCLGlCQUFpQixDQUFDLElBQUk7c0hBR04sT0FBTztzQkFBckMsV0FBVzt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSG9zdEJpbmRpbmcsXG4gIE9uRGVzdHJveSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEZ3U25hY2tiYXJTZXJ2aWNlIH0gZnJvbSAnLi4vc25hY2tiYXIuc2VydmljZSc7XG5pbXBvcnQgeyBGd1NuYWNrYmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vc25hY2tiYXIvc25hY2tiYXIuY29tcG9uZW50JztcbmltcG9ydCB7IEZ3U25hY2tiYXJNZXNzYWdlIH0gZnJvbSAnLi4vc25hY2tiYXItbWVzc2FnZS5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Z3LXNuYWNrYmFyLWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zbmFja2Jhci1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zbmFja2Jhci1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRndTbmFja2JhckNvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBIb3N0QmluZGluZygnYXR0ci5jbGFzcycpIGdldCBjbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdmdy1zbmFja2Jhci1jb250YWluZXInO1xuICB9O1xuXG4gIGxpbWl0ID0gMTA7XG4gIG1lc3NhZ2VzOiBGd1NuYWNrYmFyTWVzc2FnZVtdID0gW107XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zID0ge1xuICAgIG1lc3NhZ2VzOiBTdWJzY3JpcHRpb24uRU1QVFksXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHNuYWNrYmFyU2VydmljZTogRndTbmFja2JhclNlcnZpY2UpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMubWVzc2FnZXMgPSB0aGlzLnNuYWNrYmFyU2VydmljZS5tZXNzYWdlcyQuc3Vic2NyaWJlKChtZXNzYWdlczogRndTbmFja2Jhck1lc3NhZ2VbXSkgPT4ge1xuICAgICAgdGhpcy5tZXNzYWdlcyA9IG1lc3NhZ2VzO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEByeC1hbmd1bGFyL25vLWV4cGxpY2l0LWNoYW5nZS1kZXRlY3Rpb24tYXBpc1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IHN1YnNjcmlwdGlvbiBvZiBPYmplY3QudmFsdWVzKHRoaXMuc3Vic2NyaXB0aW9ucykpIHtcbiAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uUmVhZHkoc25hY2tiYXI6IEZ3U25hY2tiYXJDb21wb25lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50TWVzc2FnZSA9IHRoaXMubWVzc2FnZXNbdGhpcy5tZXNzYWdlcy5sZW5ndGggLSAxXTtcbiAgICBjdXJyZW50TWVzc2FnZS5yZWYgPSBzbmFja2JhcjtcbiAgICBzbmFja2Jhci5zdGFydFRpbWVyKCk7XG4gIH1cblxuICBvbkRpc21pc3MobWVzc2FnZUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5tZXNzYWdlcy5maW5kKGN1cnJlbnRNZXNzYWdlID0+IGN1cnJlbnRNZXNzYWdlLmlkID09PSBtZXNzYWdlSWQpO1xuICAgIGlmIChtZXNzYWdlPy5yZWYpIHtcbiAgICAgIG1lc3NhZ2UucmVmLnN0b3BUaW1lcigpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZT8uaWQpIHtcbiAgICAgIHRoaXMuc25hY2tiYXJTZXJ2aWNlLmRpc21pc3MobWVzc2FnZS5pZCk7XG4gICAgfVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAcngtYW5ndWxhci9uby1leHBsaWNpdC1jaGFuZ2UtZGV0ZWN0aW9uLWFwaXNcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGNsZWFyQWxsKCk6IHZvaWQge1xuICAgIHRoaXMuc25hY2tiYXJTZXJ2aWNlLmRpc21pc3NBbGwoKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHJ4LWFuZ3VsYXIvbm8tZXhwbGljaXQtY2hhbmdlLWRldGVjdGlvbi1hcGlzXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cbn1cbiIsIjxkaXYgcm9sZT1cImxpc3RcIj5cbiAgPGRpdiBjbGFzcz1cImJ1dHRvbnNcIj5cbiAgICA8ZnctYnV0dG9uXG4gICAgICAqbmdJZj1cIm1lc3NhZ2VzLmxlbmd0aCA+IDBcIiAoY2xpY2spPVwiY2xlYXJBbGwoKVwiXG4gICAgICBjbGFzcz1cImNsZWFyLWFsbFwiIGFyaWEtbGFiZWw9XCJjbGVhciBhbGxcIlxuICAgICAgY29sb3I9XCJzbGF0ZVwiIHNpemU9XCJzbWFsbFwiIHZhcmlhbnQ9XCJnaG9zdFwiPlxuICAgICAgQ2xlYXIgQWxsXG4gICAgPC9mdy1idXR0b24+XG4gIDwvZGl2PlxuICA8Znctc25hY2tiYXJcbiAgICAqbmdGb3I9XCJsZXQgbWVzc2FnZSBvZiBtZXNzYWdlczsgaW5kZXggYXMgJGluZGV4XCJcbiAgICAocmVhZHkpPVwib25SZWFkeSgkZXZlbnQpXCJcbiAgICAoZGlzbWlzcyk9XCJvbkRpc21pc3MoJGV2ZW50KVwiXG4gICAgW21lc3NhZ2VdPVwibWVzc2FnZVwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJtZXNzYWdlLm1lc3NhZ2VcIlxuICAgIHJvbGU9XCJsaXN0aXRlbVwiXG4gID48L2Z3LXNuYWNrYmFyPlxuPC9kaXY+XG4iXX0=
@@ -37,8 +37,13 @@ export class FwTextAreaInputComponent {
37
37
  this.disabled = isDisabled;
38
38
  }
39
39
  changeHandler(event) {
40
- this.value = event.target.value;
41
- this.onChange(this.value);
40
+ // Prevent dual binding conflict by not updating internal value when using reactive forms
41
+ // Only update if onChange is the default no-op function (not connected to reactive forms)
42
+ const isReactiveForms = this.onChange && this.onChange.toString() !== 'value => {\n }';
43
+ if (!isReactiveForms) {
44
+ this.value = event.target.value;
45
+ }
46
+ this.onChange(event.target.value);
42
47
  this.onTouch();
43
48
  setTimeout(() => {
44
49
  if (this.autosize) {
@@ -92,4 +97,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
92
97
  }], value: [{
93
98
  type: Input
94
99
  }] } });
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdGV4dGFyZWEtaW5wdXQvdGV4dGFyZWEtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdGV4dGFyZWEtaW5wdXQvdGV4dGFyZWEtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQXFDLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEYsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFZM0IsTUFBTSxPQUFPLHdCQUF3QjtJQVZyQztRQVlXLFlBQU8sR0FBVyxDQUFDLENBQUM7UUFDcEIsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUNyQixhQUFRLEdBQWEsS0FBSyxDQUFDO1FBYXBDLG9GQUFvRjtRQUM3QyxVQUFLLEdBQWEsS0FBSyxDQUFDO1FBR3RELFVBQUssR0FBRyxFQUFFLENBQUM7UUFDcEIsb0JBQWUsR0FBZ0IsSUFBSSxDQUFDO1FBRTdCLFlBQU8sR0FBRyxHQUFTLEVBQUU7UUFDNUIsQ0FBQyxDQUFDO1FBQ0YsNkRBQTZEO1FBQ3RELGFBQVEsR0FBRyxDQUFDLEtBQWEsRUFBUSxFQUFFO1FBQzFDLENBQUMsQ0FBQztRQW9DaUIsUUFBRyxHQUFHLEdBQUcsQ0FBQztLQUM5QjtJQW5DQyxVQUFVLENBQUMsR0FBVztRQUNwQixJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztJQUNuQixDQUFDO0lBRUQsOERBQThEO0lBQzlELGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELDhEQUE4RDtJQUM5RCxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUM3QixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQW9CO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUksS0FBSyxDQUFDLE1BQTJCLENBQUMsS0FBSyxDQUFDO1FBQ3RELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUVmLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6QyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQixDQUFDOytHQTlEVSx3QkFBd0I7bUdBQXhCLHdCQUF3QiwyVkFOeEIsQ0FBQztnQkFDVixPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsd0JBQXdCO2dCQUNyQyxLQUFLLEVBQUUsSUFBSTthQUNaLENBQUMsb0VBcUJTLG1CQUFtQixnRENsQ2hDLHVxQkFrQkE7OzRGREhhLHdCQUF3QjtrQkFWcEMsU0FBUzsrQkFDRSxtQkFBbUIsYUFHbEIsQ0FBQzs0QkFDVixPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLDBCQUEwQjs0QkFDckMsS0FBSyxFQUFFLElBQUk7eUJBQ1osQ0FBQzs4QkFJTyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBSUcsVUFBVTtzQkFBbEIsS0FBSztnQkFJRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFaUMsS0FBSztzQkFBM0MsV0FBVzt1QkFBQyxlQUFlOztzQkFBRyxLQUFLO2dCQUNKLFFBQVE7c0JBQXZDLFNBQVM7dUJBQUMsbUJBQW1CO2dCQUVyQixLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtUZXh0YXJlYUF1dG9zaXplIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RleHQtZmllbGQnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IG1pbiB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmdy10ZXh0YXJlYS1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXh0YXJlYS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RleHRhcmVhLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW3tcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogRndUZXh0QXJlYUlucHV0Q29tcG9uZW50LFxuICAgIG11bHRpOiB0cnVlLFxuICB9XSxcbn0pXG5leHBvcnQgY2xhc3MgRndUZXh0QXJlYUlucHV0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXG4gIEBJbnB1dCgpIG1pblJvd3M6IG51bWJlciA9IDI7XG4gIEBJbnB1dCgpIG1heFJvd3M6IG51bWJlciA9IDE1O1xuICBASW5wdXQoKSBkaXNhYmxlZD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHBsZWFzZSB1c2UgZnctd3JhcHBlZC1pbnB1dCBpbnN0ZWFkXG4gICAqL1xuICBASW5wdXQoKSBoZWxwZXJUZXh0Pzogc3RyaW5nO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgcGxlYXNlIHVzZSBmdy13cmFwcGVkLWlucHV0IGluc3RlYWRcbiAgICovXG4gIEBJbnB1dCgpIGVycm9yVGV4dD86IHN0cmluZztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHJlYWRPbmx5PzogYm9vbGVhbjtcbiAgQElucHV0KCkgYXV0b2ZvY3VzPzogc3RyaW5nO1xuICBASW5wdXQoKSB3aWR0aD86IHN0cmluZztcbiAgLy8gd2UgYmluZCB0aGlzIHRvIGhvc3QgYmVjYXVzZSB0aGF0J3Mgd2hlcmUgYW5ndWxhciBmb3JtIGFwaXMgcHV0IHRoZSBlcnJvciBjbGFzc2VzXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZXJyb3JlZCcpIEBJbnB1dCgpIGVycm9yPzogYm9vbGVhbiA9IGZhbHNlO1xuICBAVmlld0NoaWxkKENka1RleHRhcmVhQXV0b3NpemUpIGF1dG9zaXplITogQ2RrVGV4dGFyZWFBdXRvc2l6ZTtcblxuICBASW5wdXQoKSB2YWx1ZSA9ICcnO1xuICBleHRlcm5hbENvbnRyb2w6IEZvcm1Db250cm9sID0gbnVsbDtcblxuICBwdWJsaWMgb25Ub3VjaCA9ICgpOiB2b2lkID0+IHtcbiAgfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBwdWJsaWMgb25DaGFuZ2UgPSAodmFsdWU6IHN0cmluZyk6IHZvaWQgPT4ge1xuICB9O1xuXG4gIHdyaXRlVmFsdWUob2JqOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gb2JqO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICBjaGFuZ2VIYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICB0aGlzLm9uVG91Y2goKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuYXV0b3NpemUpIHtcbiAgICAgICAgdGhpcy5hdXRvc2l6ZS5yZXNpemVUb0ZpdENvbnRlbnQodHJ1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBibHVySGFuZGxlcigpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2goKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBtaW4gPSBtaW47XG59XG4iLCI8ZGl2IGNsYXNzPVwidGV4dGFyZWEtd3JhcHBlclwiIFtuZ1N0eWxlXT1cInt3aWR0aDogd2lkdGh9XCI+XG4gIDx0ZXh0YXJlYVxuICAgIGNka1RleHRhcmVhQXV0b3NpemVcbiAgICAjYXV0b3NpemU9XCJjZGtUZXh0YXJlYUF1dG9zaXplXCJcbiAgICBbY2RrQXV0b3NpemVNaW5Sb3dzXT1cIm1pblJvd3NcIlxuICAgIFtjZGtBdXRvc2l6ZU1heFJvd3NdPVwibWF4Um93c1wiXG4gICAgKGtleXVwKT1cImNoYW5nZUhhbmRsZXIoJGV2ZW50KVwiXG4gICAgKGJsdXIpPVwiYmx1ckhhbmRsZXIoKVwiXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyIHx8ICcnXCJcbiAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICBbYXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiPlxuICA8L3RleHRhcmVhPlxuICA8ZnctaWNvbiBjbGFzcz1cImVycm9yLWljb25cIj53YXJuaW5nLWNpcmNsZTwvZnctaWNvbj5cbjwvZGl2PlxuPHAgY2xhc3M9XCJ2aXNpb24tcDQgaGVscGVyLXRleHRcIiAqbmdJZj1cIiEhaGVscGVyVGV4dFwiPnt7IGhlbHBlclRleHQgfX08L3A+XG48cCBjbGFzcz1cInZpc2lvbi1wNCBlcnJvci10ZXh0XCIgKm5nSWY9XCIhIWVycm9yVGV4dFwiPnt7IGVycm9yVGV4dCB9fTwvcD5cbiJdfQ==
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdGV4dGFyZWEtaW5wdXQvdGV4dGFyZWEtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdGV4dGFyZWEtaW5wdXQvdGV4dGFyZWEtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQXFDLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEYsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFZM0IsTUFBTSxPQUFPLHdCQUF3QjtJQVZyQztRQVlXLFlBQU8sR0FBVyxDQUFDLENBQUM7UUFDcEIsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUNyQixhQUFRLEdBQWEsS0FBSyxDQUFDO1FBYXBDLG9GQUFvRjtRQUM3QyxVQUFLLEdBQWEsS0FBSyxDQUFDO1FBR3RELFVBQUssR0FBRyxFQUFFLENBQUM7UUFDcEIsb0JBQWUsR0FBZ0IsSUFBSSxDQUFDO1FBRTdCLFlBQU8sR0FBRyxHQUFTLEVBQUU7UUFDNUIsQ0FBQyxDQUFDO1FBQ0YsNkRBQTZEO1FBQ3RELGFBQVEsR0FBRyxDQUFDLEtBQWEsRUFBUSxFQUFFO1FBQzFDLENBQUMsQ0FBQztRQXlDaUIsUUFBRyxHQUFHLEdBQUcsQ0FBQztLQUM5QjtJQXhDQyxVQUFVLENBQUMsR0FBVztRQUNwQixJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztJQUNuQixDQUFDO0lBRUQsOERBQThEO0lBQzlELGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELDhEQUE4RDtJQUM5RCxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUM3QixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQW9CO1FBQ2hDLHlGQUF5RjtRQUN6RiwwRkFBMEY7UUFDMUYsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLGlCQUFpQixDQUFDO1FBQ3hGLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsS0FBSyxHQUFJLEtBQUssQ0FBQyxNQUEyQixDQUFDLEtBQUssQ0FBQztRQUN4RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBRSxLQUFLLENBQUMsTUFBMkIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFZixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQzsrR0FuRVUsd0JBQXdCO21HQUF4Qix3QkFBd0IsMlZBTnhCLENBQUM7Z0JBQ1YsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLHdCQUF3QjtnQkFDckMsS0FBSyxFQUFFLElBQUk7YUFDWixDQUFDLG9FQXFCUyxtQkFBbUIsZ0RDbENoQyx1cUJBa0JBOzs0RkRIYSx3QkFBd0I7a0JBVnBDLFNBQVM7K0JBQ0UsbUJBQW1CLGFBR2xCLENBQUM7NEJBQ1YsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVywwQkFBMEI7NEJBQ3JDLEtBQUssRUFBRSxJQUFJO3lCQUNaLENBQUM7OEJBSU8sT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUlHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBSUcsU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRWlDLEtBQUs7c0JBQTNDLFdBQVc7dUJBQUMsZUFBZTs7c0JBQUcsS0FBSztnQkFDSixRQUFRO3NCQUF2QyxTQUFTO3VCQUFDLG1CQUFtQjtnQkFFckIsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrVGV4dGFyZWFBdXRvc2l6ZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXh0LWZpZWxkJztcbmltcG9ydCB7IENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQ29udHJvbCwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBtaW4gfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnctdGV4dGFyZWEtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGV4dGFyZWEtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90ZXh0YXJlYS1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFt7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IEZ3VGV4dEFyZWFJbnB1dENvbXBvbmVudCxcbiAgICBtdWx0aTogdHJ1ZSxcbiAgfV0sXG59KVxuZXhwb3J0IGNsYXNzIEZ3VGV4dEFyZWFJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICBASW5wdXQoKSBtaW5Sb3dzOiBudW1iZXIgPSAyO1xuICBASW5wdXQoKSBtYXhSb3dzOiBudW1iZXIgPSAxNTtcbiAgQElucHV0KCkgZGlzYWJsZWQ/OiBib29sZWFuID0gZmFsc2U7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBwbGVhc2UgdXNlIGZ3LXdyYXBwZWQtaW5wdXQgaW5zdGVhZFxuICAgKi9cbiAgQElucHV0KCkgaGVscGVyVGV4dD86IHN0cmluZztcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHBsZWFzZSB1c2UgZnctd3JhcHBlZC1pbnB1dCBpbnN0ZWFkXG4gICAqL1xuICBASW5wdXQoKSBlcnJvclRleHQ/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBASW5wdXQoKSByZWFkT25seT86IGJvb2xlYW47XG4gIEBJbnB1dCgpIGF1dG9mb2N1cz86IHN0cmluZztcbiAgQElucHV0KCkgd2lkdGg/OiBzdHJpbmc7XG4gIC8vIHdlIGJpbmQgdGhpcyB0byBob3N0IGJlY2F1c2UgdGhhdCdzIHdoZXJlIGFuZ3VsYXIgZm9ybSBhcGlzIHB1dCB0aGUgZXJyb3IgY2xhc3Nlc1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmVycm9yZWQnKSBASW5wdXQoKSBlcnJvcj86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQFZpZXdDaGlsZChDZGtUZXh0YXJlYUF1dG9zaXplKSBhdXRvc2l6ZSE6IENka1RleHRhcmVhQXV0b3NpemU7XG5cbiAgQElucHV0KCkgdmFsdWUgPSAnJztcbiAgZXh0ZXJuYWxDb250cm9sOiBGb3JtQ29udHJvbCA9IG51bGw7XG5cbiAgcHVibGljIG9uVG91Y2ggPSAoKTogdm9pZCA9PiB7XG4gIH07XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgcHVibGljIG9uQ2hhbmdlID0gKHZhbHVlOiBzdHJpbmcpOiB2b2lkID0+IHtcbiAgfTtcblxuICB3cml0ZVZhbHVlKG9iajogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IG9iajtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgY2hhbmdlSGFuZGxlcihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIC8vIFByZXZlbnQgZHVhbCBiaW5kaW5nIGNvbmZsaWN0IGJ5IG5vdCB1cGRhdGluZyBpbnRlcm5hbCB2YWx1ZSB3aGVuIHVzaW5nIHJlYWN0aXZlIGZvcm1zXG4gICAgLy8gT25seSB1cGRhdGUgaWYgb25DaGFuZ2UgaXMgdGhlIGRlZmF1bHQgbm8tb3AgZnVuY3Rpb24gKG5vdCBjb25uZWN0ZWQgdG8gcmVhY3RpdmUgZm9ybXMpXG4gICAgY29uc3QgaXNSZWFjdGl2ZUZvcm1zID0gdGhpcy5vbkNoYW5nZSAmJiB0aGlzLm9uQ2hhbmdlLnRvU3RyaW5nKCkgIT09ICd2YWx1ZSA9PiB7XFxuICB9JztcbiAgICBpZiAoIWlzUmVhY3RpdmVGb3Jtcykge1xuICAgICAgdGhpcy52YWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG4gICAgfVxuICAgIHRoaXMub25DaGFuZ2UoKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSk7XG4gICAgdGhpcy5vblRvdWNoKCk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmF1dG9zaXplKSB7XG4gICAgICAgIHRoaXMuYXV0b3NpemUucmVzaXplVG9GaXRDb250ZW50KHRydWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYmx1ckhhbmRsZXIoKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWluID0gbWluO1xufVxuIiwiPGRpdiBjbGFzcz1cInRleHRhcmVhLXdyYXBwZXJcIiBbbmdTdHlsZV09XCJ7d2lkdGg6IHdpZHRofVwiPlxuICA8dGV4dGFyZWFcbiAgICBjZGtUZXh0YXJlYUF1dG9zaXplXG4gICAgI2F1dG9zaXplPVwiY2RrVGV4dGFyZWFBdXRvc2l6ZVwiXG4gICAgW2Nka0F1dG9zaXplTWluUm93c109XCJtaW5Sb3dzXCJcbiAgICBbY2RrQXV0b3NpemVNYXhSb3dzXT1cIm1heFJvd3NcIlxuICAgIChrZXl1cCk9XCJjaGFuZ2VIYW5kbGVyKCRldmVudClcIlxuICAgIChibHVyKT1cImJsdXJIYW5kbGVyKClcIlxuICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlciB8fCAnJ1wiXG4gICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiXG4gICAgW2F1dG9mb2N1c109XCJhdXRvZm9jdXNcIj5cbiAgPC90ZXh0YXJlYT5cbiAgPGZ3LWljb24gY2xhc3M9XCJlcnJvci1pY29uXCI+d2FybmluZy1jaXJjbGU8L2Z3LWljb24+XG48L2Rpdj5cbjxwIGNsYXNzPVwidmlzaW9uLXA0IGhlbHBlci10ZXh0XCIgKm5nSWY9XCIhIWhlbHBlclRleHRcIj57eyBoZWxwZXJUZXh0IH19PC9wPlxuPHAgY2xhc3M9XCJ2aXNpb24tcDQgZXJyb3ItdGV4dFwiICpuZ0lmPVwiISFlcnJvclRleHRcIj57eyBlcnJvclRleHQgfX08L3A+XG4iXX0=
@@ -0,0 +1,232 @@
1
+ import { CdkMenuModule, CdkMenuTrigger } from '@angular/cdk/menu';
2
+ import { NgClass } from '@angular/common';
3
+ import { ChangeDetectorRef, Component, computed, effect, forwardRef, HostListener, inject, input, model, signal, viewChild, viewChildren } from '@angular/core';
4
+ import { toObservable, toSignal } from '@angular/core/rxjs-interop';
5
+ import { NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';
6
+ import { map, of, startWith, switchMap, tap } from 'rxjs';
7
+ import { MenuRegisterDirective } from '../../directives/menu-register.directive';
8
+ import { FwChipModule } from '../chip/chip.module';
9
+ import { FwChipListComponent } from '../chip-list/chip-list.component';
10
+ import { FwMenuModule } from '../menu/menu.module';
11
+ import { FwMenuItemComponent } from '../menu/menu-item/menu-item.component';
12
+ import { FwProgressModule } from '../progress/progress.module';
13
+ import { FwTextInputModule } from '../text-input/text-input.module';
14
+ import * as i0 from "@angular/core";
15
+ import * as i1 from "../chip/chip.component";
16
+ import * as i2 from "../menu/menu.component";
17
+ import * as i3 from "../menu/menu-container/menu-container.component";
18
+ import * as i4 from "../menu/menu-item/menu-item.component";
19
+ import * as i5 from "@angular/cdk/menu";
20
+ import * as i6 from "../progress/spinner/spinner.component";
21
+ /**
22
+ * Component for having a user select multiple values while also allowing arbitrary values to be added
23
+ * @see [Vision Docs](https://cdn.flywheel.io/docs/vision/master/?path=/docs/form-controls-typeahead--docs)
24
+ */
25
+ export class FwTypeaheadComponent {
26
+ constructor() {
27
+ this.trigger = viewChild(CdkMenuTrigger);
28
+ this.changeDetector = inject(ChangeDetectorRef);
29
+ this.loading = model(false);
30
+ this.disabled = model(false);
31
+ this.onChange = (_) => { };
32
+ this.onTouched = () => { };
33
+ this.value = model([]);
34
+ this.optionsInput = input([], { alias: 'options' });
35
+ this.maxOptionsHeight = input('400px');
36
+ this.minOptionsHeight = input('0px');
37
+ this.optionsWidth = input('');
38
+ this.notifyOnValueChanges = effect(() => {
39
+ this.onChange(this.value());
40
+ });
41
+ this.searchValue = model('');
42
+ this.searchValueChanges$ = toObservable(this.searchValue);
43
+ this.allowNew = input(true);
44
+ this.placeholder = input('Enter tags...');
45
+ this.options$ = this.searchValueChanges$.pipe(startWith(''), tap(() => this.loading.set(true)), switchMap(searchString => {
46
+ if (typeof this.optionsInput() === 'function') {
47
+ const fetchingFunction = this.optionsInput();
48
+ return fetchingFunction(searchString);
49
+ }
50
+ const filteredStaticOptions$ = of(this.optionsInput()).pipe(map(options => options.filter(opt => opt.toLowerCase().includes(searchString.toLowerCase()))));
51
+ return filteredStaticOptions$;
52
+ }), map(options => {
53
+ return options.filter(option => {
54
+ const alreadySelected = this.value().find(val => val.toLowerCase() === option.toLowerCase());
55
+ return !alreadySelected;
56
+ });
57
+ }), tap(() => this.loading.set(false)));
58
+ this.optionsSignal = toSignal(this.options$);
59
+ this.displayNewOption = computed(() => {
60
+ const newValue = this.searchValue();
61
+ if (!newValue) {
62
+ return false;
63
+ }
64
+ const directMatch = this.optionsSignal()?.includes?.(newValue);
65
+ const loading = this.loading();
66
+ const alreadySelected = Boolean(this.value().find(val => val.toLowerCase() === newValue.toLowerCase()));
67
+ return this.allowNew() && !alreadySelected && (!directMatch || loading);
68
+ });
69
+ this.addValue = (newValue) => {
70
+ this.value.update(prevValue => [
71
+ ...prevValue || [],
72
+ newValue,
73
+ ]);
74
+ };
75
+ this.handleOptionClick = (optionValue) => {
76
+ this.onTouched();
77
+ this.addValue(optionValue);
78
+ this.focusInput();
79
+ this.searchValue.set('');
80
+ };
81
+ this.resetFocusOnOptionsChange = effect(() => {
82
+ if (this.displayedOptions() || this.searchValue()) {
83
+ this.focusedIndex.set(0);
84
+ }
85
+ }, { allowSignalWrites: true });
86
+ this.displayedOptions = viewChildren(FwMenuItemComponent);
87
+ this.focusedIndex = signal(0);
88
+ this.focusedOption = computed(() => {
89
+ const options = this.displayedOptions();
90
+ const focused = this.focusedIndex();
91
+ const onlyOne = options.length === 1;
92
+ return onlyOne ? this.searchValue() : options[focused]?.value;
93
+ });
94
+ this.inputRef = viewChild.required('input');
95
+ /* eslint-disable @typescript-eslint/naming-convention */
96
+ this.keyHandlerMap = {
97
+ 'Enter': () => {
98
+ this.onTouched();
99
+ const newValue = this.focusedOption() || this.searchValue();
100
+ const duplicate = this.value().find(val => val.toLowerCase() === newValue.toLowerCase());
101
+ if (!newValue || duplicate) {
102
+ return;
103
+ }
104
+ this.addValue(newValue);
105
+ this.searchValue.set('');
106
+ },
107
+ 'ArrowDown': () => {
108
+ this.moveFocused('down');
109
+ },
110
+ 'ArrowUp': () => {
111
+ this.moveFocused('up');
112
+ },
113
+ 'Backspace': () => {
114
+ const searchIsEmpty = !this.searchValue(); // any falsy value is empty
115
+ if (searchIsEmpty && this.value()?.length > 0) {
116
+ this.closeChip(this.value()[this.value().length - 1]);
117
+ }
118
+ return !searchIsEmpty;
119
+ },
120
+ 'Tab': () => {
121
+ if (this.trigger().isOpen) {
122
+ this.trigger().close();
123
+ }
124
+ },
125
+ };
126
+ }
127
+ outsideClick() {
128
+ this.onTouched();
129
+ this.trigger().close();
130
+ }
131
+ setDisabledState(isDisabled) {
132
+ this.disabled.set(isDisabled);
133
+ }
134
+ writeValue(incomingValue) {
135
+ this.value.set(incomingValue);
136
+ }
137
+ registerOnChange(onChangeFn) {
138
+ this.onChange = onChangeFn;
139
+ }
140
+ registerOnTouched(onTouchedFn) {
141
+ this.onTouched = onTouchedFn;
142
+ }
143
+ onClick(event) {
144
+ event.preventDefault();
145
+ event.stopPropagation();
146
+ }
147
+ handleSearchChange(event) {
148
+ if (this.trigger().closed) {
149
+ this.trigger().open();
150
+ }
151
+ const value = event.target.value;
152
+ this.searchValue.set(value);
153
+ }
154
+ closeChip(chipValue) {
155
+ const currentValue = this.value();
156
+ const newValue = currentValue.filter(val => val !== chipValue);
157
+ this.value.set(newValue);
158
+ this.focusInput();
159
+ this.changeDetector.detectChanges();
160
+ }
161
+ focusInput(e = null) {
162
+ e?.preventDefault();
163
+ e?.stopPropagation();
164
+ e?.stopImmediatePropagation();
165
+ this.inputRef().nativeElement.focus();
166
+ }
167
+ /* eslint-enable */
168
+ handleKey(e) {
169
+ const handler = this.keyHandlerMap[e.key];
170
+ handler?.(e);
171
+ }
172
+ setFocusByValue(value) {
173
+ const options = this.displayedOptions();
174
+ const foundIndex = options.findIndex(opt => opt.value === value);
175
+ const finalIndex = foundIndex === -1 ? 0 : foundIndex;
176
+ this.focusedIndex.set(finalIndex);
177
+ }
178
+ moveFocused(direction) {
179
+ const options = this.displayedOptions();
180
+ const index = this.focusedIndex();
181
+ const clampIndex = (n) => {
182
+ if (n < 0) {
183
+ return options.length - 1;
184
+ }
185
+ else if (n >= options.length) {
186
+ return 0;
187
+ }
188
+ return n;
189
+ };
190
+ const indexChange = direction === 'up' ? -1 : 1;
191
+ const newIndex = clampIndex(index + indexChange);
192
+ this.focusedIndex.set(newIndex);
193
+ const newlyFocused = this.displayedOptions()[this.focusedIndex()];
194
+ // eslint-disable-next-line @rx-angular/prefer-no-layout-sensitive-apis
195
+ newlyFocused.scrollIntoView();
196
+ }
197
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwTypeaheadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
198
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: FwTypeaheadComponent, isStandalone: true, selector: "fw-typeahead", inputs: { loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, optionsInput: { classPropertyName: "optionsInput", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, maxOptionsHeight: { classPropertyName: "maxOptionsHeight", publicName: "maxOptionsHeight", isSignal: true, isRequired: false, transformFunction: null }, minOptionsHeight: { classPropertyName: "minOptionsHeight", publicName: "minOptionsHeight", isSignal: true, isRequired: false, transformFunction: null }, optionsWidth: { classPropertyName: "optionsWidth", publicName: "optionsWidth", isSignal: true, isRequired: false, transformFunction: null }, searchValue: { classPropertyName: "searchValue", publicName: "searchValue", isSignal: true, isRequired: false, transformFunction: null }, allowNew: { classPropertyName: "allowNew", publicName: "allowNew", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { loading: "loadingChange", disabled: "disabledChange", value: "valueChange", searchValue: "searchValueChange" }, host: { listeners: { "document:click": "outsideClick()", "click": "onClick($event)" } }, providers: [
199
+ {
200
+ provide: NG_VALUE_ACCESSOR,
201
+ useExisting: forwardRef(() => FwTypeaheadComponent),
202
+ multi: true,
203
+ },
204
+ ], viewQueries: [{ propertyName: "trigger", first: true, predicate: CdkMenuTrigger, descendants: true, isSignal: true }, { propertyName: "displayedOptions", predicate: FwMenuItemComponent, descendants: true, isSignal: true }, { propertyName: "inputRef", first: true, predicate: ["input"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\n (click)=\"focusInput($event)\"\n class=\"input-container\"\n [ngClass]=\"{ 'disabled': disabled() }\"\n [cdkMenuTriggerFor]=\"menuContent\"\n fwMenuRegister\n #inputContainer>\n <fw-chip-list class=\"chips\">\n @for(val of value(); track val) {\n <fw-chip\n color=\"primary\"\n [showClose]=\"true\"\n [title]=\"val\"\n [selectable]=\"false\"\n (close)=\"closeChip(val)\"\n />\n }\n </fw-chip-list>\n <input\n test-id=\"typeahead-input\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [value]=\"searchValue()\"\n (keyup)=\"handleSearchChange($event)\"\n (keydown)=\"handleKey($event)\"\n #input\n type=\"text\"\n />\n @if(loading()) {\n <fw-progress-spinner size=\"small\"/>\n }\n</div>\n<ng-template #menuContent>\n <fw-menu-container\n [maxHeight]=\"maxOptionsHeight()\"\n [minHeight]=\"minOptionsHeight()\"\n [width]=\"optionsWidth() || inputContainer.offsetWidth - 2 + 'px'\"\n >\n <fw-menu>\n @if(loading() && !displayNewOption()) {\n <fw-menu-item title=\"Searching...\" [disabled]=\"true\"/>\n } @else if(!loading()) {\n @for (option of optionsSignal(); track option) {\n <fw-menu-item\n (click)=\"handleOptionClick($event)\"\n (mouseenter)=\"setFocusByValue(option)\"\n [title]=\"option\"\n [focused]=\"focusedOption() === option\"\n [value]=\"option\"\n />\n }\n @empty {\n @if (!displayNewOption()) {\n <fw-menu-item title=\"No tag suggestions\" [disabled]=\"true\"/>\n }\n }\n }\n @if(displayNewOption()) {\n <fw-menu-item\n (click)=\"handleOptionClick($event)\"\n (mouseenter)=\"setFocusByValue(searchValue())\"\n [title]=\"searchValue()\"\n [value]=\"searchValue()\"\n [focused]=\"focusedOption() === searchValue()\">\n <p class=\"new-tag\">New</p>\n </fw-menu-item>\n }\n </fw-menu>\n </fw-menu-container>\n</ng-template>\n", styles: [".new-tag{margin:0;color:var(--typography-light)}:host{display:flex;flex-direction:column;width:100%;line-height:21px}:host.disabled{cursor:not-allowed}:host.disabled fw-icon{cursor:not-allowed!important}:host .chips,:host fw-progress-spinner{margin:-4px 0}:host .input-container{width:100%;box-sizing:border-box;color:var(--typography-light);background:var(--page-light);display:flex;padding:8px;align-items:center;border-radius:6px;border:1px solid var(--separations-input);font-family:Inter,sans-serif}:host .input-container:focus-within{border:1px solid var(--primary-base)}:host .input-container input{min-width:80px;font-size:14px;flex:1 1 80px;color:var(--typography-base);background:var(--page-light);border:none}:host .input-container input:focus{outline:none;border:none}:host .input-container input::placeholder{color:var(--typography-light)}:host .input-container .context{color:var(--typography-light)}:host.errored .input-container,:host.ng-touched.ng-invalid .input-container{border:1px solid var(--red-base)}.disabled{opacity:.4;pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: FwTextInputModule }, { kind: "ngmodule", type: FwChipModule }, { kind: "component", type: i1.FwChipComponent, selector: "fw-chip", inputs: ["value", "variant", "color", "icon", "title", "description", "showClose", "disabled", "selected", "selectable"], outputs: ["close", "select"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FwMenuModule }, { kind: "component", type: i2.FwMenuComponent, selector: "fw-menu", inputs: ["disabled", "size", "multiSelect", "useCheckbox", "value"], outputs: ["change"] }, { kind: "component", type: i3.FwMenuContainerComponent, selector: "fw-menu-container, fw-menu-filter", inputs: ["width", "maxHeight", "minHeight", "border", "shadow", "showFilter", "filterText", "focusFilterOnMount", "offset", "emptyText", "filterFn", "additionalMenuItems", "keyHandler"], outputs: ["filteredMenuItemChange", "filterChanged"] }, { kind: "component", type: i4.FwMenuItemComponent, selector: "fw-menu-item", inputs: ["value", "size", "title", "description", "icon", "iconColor", "disabled", "showCheckbox", "checkboxColor", "multiSelect", "hidden", "collapsed", "href", "target", "subItemsOpen", "mouseEnterHandler", "focused", "selected"], outputs: ["mouseEnterHandlerChange", "click"] }, { kind: "ngmodule", type: CdkMenuModule }, { kind: "directive", type: i5.CdkMenuTrigger, selector: "[cdkMenuTriggerFor]", inputs: ["cdkMenuTriggerFor", "cdkMenuPosition", "cdkMenuTriggerData"], outputs: ["cdkMenuOpened", "cdkMenuClosed"], exportAs: ["cdkMenuTriggerFor"] }, { kind: "directive", type: MenuRegisterDirective, selector: "[fwMenuRegister]" }, { kind: "ngmodule", type: FwProgressModule }, { kind: "component", type: i6.FwProgressSpinnerComponent, selector: "fw-progress-spinner", inputs: ["mode", "size", "color", "showValue", "value"] }, { kind: "component", type: FwChipListComponent, selector: "fw-chip-list" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
205
+ }
206
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwTypeaheadComponent, decorators: [{
207
+ type: Component,
208
+ args: [{ selector: 'fw-typeahead', standalone: true, imports: [
209
+ FwTextInputModule,
210
+ FwChipModule,
211
+ ReactiveFormsModule,
212
+ FwMenuModule,
213
+ CdkMenuModule,
214
+ MenuRegisterDirective,
215
+ FwProgressModule,
216
+ FwChipListComponent,
217
+ NgClass,
218
+ ], providers: [
219
+ {
220
+ provide: NG_VALUE_ACCESSOR,
221
+ useExisting: forwardRef(() => FwTypeaheadComponent),
222
+ multi: true,
223
+ },
224
+ ], template: "<div\n (click)=\"focusInput($event)\"\n class=\"input-container\"\n [ngClass]=\"{ 'disabled': disabled() }\"\n [cdkMenuTriggerFor]=\"menuContent\"\n fwMenuRegister\n #inputContainer>\n <fw-chip-list class=\"chips\">\n @for(val of value(); track val) {\n <fw-chip\n color=\"primary\"\n [showClose]=\"true\"\n [title]=\"val\"\n [selectable]=\"false\"\n (close)=\"closeChip(val)\"\n />\n }\n </fw-chip-list>\n <input\n test-id=\"typeahead-input\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [value]=\"searchValue()\"\n (keyup)=\"handleSearchChange($event)\"\n (keydown)=\"handleKey($event)\"\n #input\n type=\"text\"\n />\n @if(loading()) {\n <fw-progress-spinner size=\"small\"/>\n }\n</div>\n<ng-template #menuContent>\n <fw-menu-container\n [maxHeight]=\"maxOptionsHeight()\"\n [minHeight]=\"minOptionsHeight()\"\n [width]=\"optionsWidth() || inputContainer.offsetWidth - 2 + 'px'\"\n >\n <fw-menu>\n @if(loading() && !displayNewOption()) {\n <fw-menu-item title=\"Searching...\" [disabled]=\"true\"/>\n } @else if(!loading()) {\n @for (option of optionsSignal(); track option) {\n <fw-menu-item\n (click)=\"handleOptionClick($event)\"\n (mouseenter)=\"setFocusByValue(option)\"\n [title]=\"option\"\n [focused]=\"focusedOption() === option\"\n [value]=\"option\"\n />\n }\n @empty {\n @if (!displayNewOption()) {\n <fw-menu-item title=\"No tag suggestions\" [disabled]=\"true\"/>\n }\n }\n }\n @if(displayNewOption()) {\n <fw-menu-item\n (click)=\"handleOptionClick($event)\"\n (mouseenter)=\"setFocusByValue(searchValue())\"\n [title]=\"searchValue()\"\n [value]=\"searchValue()\"\n [focused]=\"focusedOption() === searchValue()\">\n <p class=\"new-tag\">New</p>\n </fw-menu-item>\n }\n </fw-menu>\n </fw-menu-container>\n</ng-template>\n", styles: [".new-tag{margin:0;color:var(--typography-light)}:host{display:flex;flex-direction:column;width:100%;line-height:21px}:host.disabled{cursor:not-allowed}:host.disabled fw-icon{cursor:not-allowed!important}:host .chips,:host fw-progress-spinner{margin:-4px 0}:host .input-container{width:100%;box-sizing:border-box;color:var(--typography-light);background:var(--page-light);display:flex;padding:8px;align-items:center;border-radius:6px;border:1px solid var(--separations-input);font-family:Inter,sans-serif}:host .input-container:focus-within{border:1px solid var(--primary-base)}:host .input-container input{min-width:80px;font-size:14px;flex:1 1 80px;color:var(--typography-base);background:var(--page-light);border:none}:host .input-container input:focus{outline:none;border:none}:host .input-container input::placeholder{color:var(--typography-light)}:host .input-container .context{color:var(--typography-light)}:host.errored .input-container,:host.ng-touched.ng-invalid .input-container{border:1px solid var(--red-base)}.disabled{opacity:.4;pointer-events:none}\n"] }]
225
+ }], propDecorators: { outsideClick: [{
226
+ type: HostListener,
227
+ args: ['document:click']
228
+ }], onClick: [{
229
+ type: HostListener,
230
+ args: ['click', ['$event']]
231
+ }] } });
232
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWFoZWFkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3R5cGVhaGVhZC90eXBlYWhlYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdHlwZWFoZWFkL3R5cGVhaGVhZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQWMsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1SyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RixPQUFPLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV0RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNqRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7OztBQUlwRTs7O0dBR0c7QUF5QkgsTUFBTSxPQUFPLG9CQUFvQjtJQXhCakM7UUE4QkUsWUFBTyxHQUFHLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNwQyxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzNDLFlBQU8sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsYUFBUSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQVV4QixhQUFRLEdBQUcsQ0FBQyxDQUFXLEVBQVEsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUlyQyxjQUFTLEdBQUcsR0FBUyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBVTNCLFVBQUssR0FBRyxLQUFLLENBQVcsRUFBRSxDQUFDLENBQUM7UUFDNUIsaUJBQVksR0FBRyxLQUFLLENBQThCLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRTVFLHFCQUFnQixHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsQyxxQkFBZ0IsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsaUJBQVksR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFekIseUJBQW9CLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNqQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFBO1FBRUYsZ0JBQVcsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEIsd0JBQW1CLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQVNyRCxhQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLGdCQUFXLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRXJDLGFBQVEsR0FBeUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FDNUQsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUNiLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUNqQyxTQUFTLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFFdkIsSUFBSSxPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDOUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFzQixDQUFDO2dCQUNqRSxPQUFPLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3hDLENBQUM7WUFFRCxNQUFNLHNCQUFzQixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFjLENBQUMsQ0FBQyxJQUFJLENBQ3JFLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FDOUYsQ0FBQztZQUVGLE9BQU8sc0JBQXNCLENBQUM7UUFDaEMsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1osT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUM3QixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxLQUFLLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO2dCQUM3RixPQUFPLENBQUMsZUFBZSxDQUFDO1lBQzFCLENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ25DLENBQUE7UUFDRCxrQkFBYSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFXeEMscUJBQWdCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUMvQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFcEMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNkLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztZQUVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMvRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDL0IsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLEtBQUssUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUd4RyxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLENBQUMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxDQUFDO1FBQzFFLENBQUMsQ0FBQyxDQUFBO1FBRUYsYUFBUSxHQUFHLENBQUMsUUFBZ0IsRUFBUSxFQUFFO1lBQ3BDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQzdCLEdBQUcsU0FBUyxJQUFJLEVBQUU7Z0JBQ2xCLFFBQVE7YUFDVCxDQUFDLENBQUE7UUFDSixDQUFDLENBQUE7UUFFRCxzQkFBaUIsR0FBRyxDQUFDLFdBQVcsRUFBUSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUE7UUFFRCw4QkFBeUIsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ3RDLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7Z0JBQ2xELElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNCLENBQUM7UUFDSCxDQUFDLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBRS9CLHFCQUFnQixHQUFHLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3JELGlCQUFZLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLGtCQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUM1QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUN4QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFFcEMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7WUFDckMsT0FBTyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssQ0FBQztRQUNoRSxDQUFDLENBQUMsQ0FBQTtRQUVGLGFBQVEsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUErQixPQUFPLENBQUMsQ0FBQztRQVFyRSx5REFBeUQ7UUFDekQsa0JBQWEsR0FBc0Q7WUFDakUsT0FBTyxFQUFFLEdBQUcsRUFBRTtnQkFDWixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2pCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQzVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLEtBQUssUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7Z0JBRXpGLElBQUksQ0FBQyxRQUFRLElBQUksU0FBUyxFQUFFLENBQUM7b0JBQzNCLE9BQU87Z0JBQ1QsQ0FBQztnQkFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMzQixDQUFDO1lBQ0QsV0FBVyxFQUFFLEdBQUcsRUFBRTtnQkFDaEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMzQixDQUFDO1lBQ0QsU0FBUyxFQUFFLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pCLENBQUM7WUFDRCxXQUFXLEVBQUUsR0FBRyxFQUFFO2dCQUNoQixNQUFNLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLDJCQUEyQjtnQkFDdEUsSUFBSSxhQUFhLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDOUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO2dCQUN2RCxDQUFDO2dCQUNELE9BQU8sQ0FBQyxhQUFhLENBQUM7WUFDeEIsQ0FBQztZQUNELEtBQUssRUFBRSxHQUFHLEVBQUU7Z0JBQ1YsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQzFCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDekIsQ0FBQztZQUNILENBQUM7U0FDRixDQUFBO0tBeUNGO0lBek5pQyxZQUFZO1FBQzFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQU9ELGdCQUFnQixDQUFDLFVBQW1CO1FBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxVQUFVLENBQUMsYUFBdUI7UUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUdELGdCQUFnQixDQUFDLFVBQVU7UUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDN0IsQ0FBQztJQUVELGlCQUFpQixDQUFDLFdBQVc7UUFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUM7SUFDL0IsQ0FBQztJQUVrQyxPQUFPLENBQUMsS0FBaUI7UUFDMUQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQTtJQUN6QixDQUFDO0lBZUQsa0JBQWtCLENBQUMsS0FBb0I7UUFDckMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hCLENBQUM7UUFDRCxNQUFNLEtBQUssR0FBSSxLQUFLLENBQUMsTUFBMkIsQ0FBQyxLQUFLLENBQUM7UUFDdkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQWdDRCxTQUFTLENBQUMsU0FBaUI7UUFDekIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2xDLE1BQU0sUUFBUSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssU0FBUyxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQWdERCxVQUFVLENBQUMsSUFBZ0IsSUFBSTtRQUM3QixDQUFDLEVBQUUsY0FBYyxFQUFFLENBQUM7UUFDcEIsQ0FBQyxFQUFFLGVBQWUsRUFBRSxDQUFDO1FBQ3JCLENBQUMsRUFBRSx3QkFBd0IsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQW1DRCxtQkFBbUI7SUFFbkIsU0FBUyxDQUFDLENBQWdCO1FBQ3hCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2YsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFhO1FBQzNCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hDLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sVUFBVSxHQUFHLFVBQVUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFDdEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVPLFdBQVcsQ0FBQyxTQUF3QjtRQUMxQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFbEMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFTLEVBQVUsRUFBRTtZQUN2QyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDVixPQUFPLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQzVCLENBQUM7aUJBQ0ksSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUM3QixPQUFPLENBQUMsQ0FBQztZQUNYLENBQUM7WUFFRCxPQUFPLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQTtRQUVELE1BQU0sV0FBVyxHQUFHLFNBQVMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFaEQsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVoQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUVsRSx1RUFBdUU7UUFDdkUsWUFBWSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ2hDLENBQUM7K0dBeE5VLG9CQUFvQjttR0FBcEIsb0JBQW9CLDhtREFWcEI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDO2dCQUNuRCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsbUVBVW1CLGNBQWMsc0ZBeUhGLG1CQUFtQixvS0M1S3JELDRuRUFzRUEsbW1DRDdDSSxpQkFBaUIsOEJBQ2pCLFlBQVksNFBBQ1osbUJBQW1CLDhCQUNuQixZQUFZLCszQkFDWixhQUFhLHNRQUNiLHFCQUFxQiw0REFDckIsZ0JBQWdCLHFMQUNoQixtQkFBbUIseURBQ25CLE9BQU87OzRGQVlFLG9CQUFvQjtrQkF4QmhDLFNBQVM7K0JBQ0UsY0FBYyxjQUNaLElBQUksV0FDUDt3QkFDUCxpQkFBaUI7d0JBQ2pCLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixZQUFZO3dCQUNaLGFBQWE7d0JBQ2IscUJBQXFCO3dCQUNyQixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsT0FBTztxQkFDVixhQUNZO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDOzRCQUNuRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjs4QkFLK0IsWUFBWTtzQkFBM0MsWUFBWTt1QkFBQyxnQkFBZ0I7Z0JBMkJLLE9BQU87c0JBQXpDLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrTWVudU1vZHVsZSwgQ2RrTWVudVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvbWVudSc7XG5pbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIEVsZW1lbnRSZWYsIGZvcndhcmRSZWYsIEhvc3RMaXN0ZW5lciwgaW5qZWN0LCBpbnB1dCwgbW9kZWwsIHNpZ25hbCwgdmlld0NoaWxkLCB2aWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBtYXAsIE9ic2VydmFibGUsIG9mLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE1lbnVSZWdpc3RlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvbWVudS1yZWdpc3Rlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRndDaGlwTW9kdWxlIH0gZnJvbSAnLi4vY2hpcC9jaGlwLm1vZHVsZSc7XG5pbXBvcnQgeyBGd0NoaXBMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi4vY2hpcC1saXN0L2NoaXAtbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRndNZW51TW9kdWxlIH0gZnJvbSAnLi4vbWVudS9tZW51Lm1vZHVsZSc7XG5pbXBvcnQgeyBGd01lbnVJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vbWVudS9tZW51LWl0ZW0vbWVudS1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGd1Byb2dyZXNzTW9kdWxlIH0gZnJvbSAnLi4vcHJvZ3Jlc3MvcHJvZ3Jlc3MubW9kdWxlJztcbmltcG9ydCB7IEZ3VGV4dElucHV0TW9kdWxlIH0gZnJvbSAnLi4vdGV4dC1pbnB1dC90ZXh0LWlucHV0Lm1vZHVsZSc7XG5cbnR5cGUgT3B0aW9uRmV0Y2hpbmdGbiA9IChzZWFyY2hTdHJpbmc6IHN0cmluZykgPT4gT2JzZXJ2YWJsZTxzdHJpbmdbXT47XG5cbi8qKlxuICogQ29tcG9uZW50IGZvciBoYXZpbmcgYSB1c2VyIHNlbGVjdCBtdWx0aXBsZSB2YWx1ZXMgd2hpbGUgYWxzbyBhbGxvd2luZyBhcmJpdHJhcnkgdmFsdWVzIHRvIGJlIGFkZGVkXG4gKiBAc2VlIFtWaXNpb24gRG9jc10oaHR0cHM6Ly9jZG4uZmx5d2hlZWwuaW8vZG9jcy92aXNpb24vbWFzdGVyLz9wYXRoPS9kb2NzL2Zvcm0tY29udHJvbHMtdHlwZWFoZWFkLS1kb2NzKVxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmdy10eXBlYWhlYWQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgRndUZXh0SW5wdXRNb2R1bGUsXG4gICAgRndDaGlwTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgRndNZW51TW9kdWxlLFxuICAgIENka01lbnVNb2R1bGUsXG4gICAgTWVudVJlZ2lzdGVyRGlyZWN0aXZlLFxuICAgIEZ3UHJvZ3Jlc3NNb2R1bGUsXG4gICAgRndDaGlwTGlzdENvbXBvbmVudCxcbiAgICBOZ0NsYXNzLFxuXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGd1R5cGVhaGVhZENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vdHlwZWFoZWFkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3R5cGVhaGVhZC5jb21wb25lbnQuc2NzcycsXG59KVxuZXhwb3J0IGNsYXNzIEZ3VHlwZWFoZWFkQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycpIG91dHNpZGVDbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIHRoaXMudHJpZ2dlcigpLmNsb3NlKCk7XG4gIH1cblxuICB0cmlnZ2VyID0gdmlld0NoaWxkKENka01lbnVUcmlnZ2VyKTtcbiAgY2hhbmdlRGV0ZWN0b3IgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBsb2FkaW5nID0gbW9kZWwoZmFsc2UpO1xuICBkaXNhYmxlZCA9IG1vZGVsKGZhbHNlKTtcblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkLnNldChpc0Rpc2FibGVkKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUoaW5jb21pbmdWYWx1ZTogc3RyaW5nW10pOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlLnNldChpbmNvbWluZ1ZhbHVlKTtcbiAgfVxuXG4gIG9uQ2hhbmdlID0gKF86IHN0cmluZ1tdKTogdm9pZCA9PiB7fTtcbiAgcmVnaXN0ZXJPbkNoYW5nZShvbkNoYW5nZUZuKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IG9uQ2hhbmdlRm47XG4gIH1cbiAgb25Ub3VjaGVkID0gKCk6IHZvaWQgPT4ge307XG4gIHJlZ2lzdGVyT25Ub3VjaGVkKG9uVG91Y2hlZEZuKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBvblRvdWNoZWRGbjtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSkgb25DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgfVxuXG4gIHZhbHVlID0gbW9kZWw8c3RyaW5nW10+KFtdKTtcbiAgb3B0aW9uc0lucHV0ID0gaW5wdXQ8c3RyaW5nW10gfCBPcHRpb25GZXRjaGluZ0ZuPihbXSwgeyBhbGlhczogJ29wdGlvbnMnIH0pO1xuXG4gIG1heE9wdGlvbnNIZWlnaHQgPSBpbnB1dCgnNDAwcHgnKTtcbiAgbWluT3B0aW9uc0hlaWdodCA9IGlucHV0KCcwcHgnKTtcbiAgb3B0aW9uc1dpZHRoID0gaW5wdXQoJycpO1xuXG4gIG5vdGlmeU9uVmFsdWVDaGFuZ2VzID0gZWZmZWN0KCgpID0+IHtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUoKSk7XG4gIH0pXG5cbiAgc2VhcmNoVmFsdWUgPSBtb2RlbCgnJyk7XG4gIHNlYXJjaFZhbHVlQ2hhbmdlcyQgPSB0b09ic2VydmFibGUodGhpcy5zZWFyY2hWYWx1ZSk7XG4gIGhhbmRsZVNlYXJjaENoYW5nZShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmICh0aGlzLnRyaWdnZXIoKS5jbG9zZWQpIHtcbiAgICAgIHRoaXMudHJpZ2dlcigpLm9wZW4oKTtcbiAgICB9XG4gICAgY29uc3QgdmFsdWUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xuICAgIHRoaXMuc2VhcmNoVmFsdWUuc2V0KHZhbHVlKTtcbiAgfVxuXG4gIGFsbG93TmV3ID0gaW5wdXQodHJ1ZSk7XG4gIHBsYWNlaG9sZGVyID0gaW5wdXQoJ0VudGVyIHRhZ3MuLi4nKTtcblxuICBvcHRpb25zJDogT2JzZXJ2YWJsZTxzdHJpbmdbXT4gPSB0aGlzLnNlYXJjaFZhbHVlQ2hhbmdlcyQucGlwZShcbiAgICBzdGFydFdpdGgoJycpLFxuICAgIHRhcCgoKSA9PiB0aGlzLmxvYWRpbmcuc2V0KHRydWUpKSxcbiAgICBzd2l0Y2hNYXAoc2VhcmNoU3RyaW5nID0+IHtcblxuICAgICAgaWYgKHR5cGVvZiB0aGlzLm9wdGlvbnNJbnB1dCgpID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNvbnN0IGZldGNoaW5nRnVuY3Rpb24gPSB0aGlzLm9wdGlvbnNJbnB1dCgpIGFzIE9wdGlvbkZldGNoaW5nRm47XG4gICAgICAgIHJldHVybiBmZXRjaGluZ0Z1bmN0aW9uKHNlYXJjaFN0cmluZyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZpbHRlcmVkU3RhdGljT3B0aW9ucyQgPSBvZih0aGlzLm9wdGlvbnNJbnB1dCgpIGFzIHN0cmluZ1tdKS5waXBlKFxuICAgICAgICBtYXAob3B0aW9ucyA9PiBvcHRpb25zLmZpbHRlcihvcHQgPT4gb3B0LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoU3RyaW5nLnRvTG93ZXJDYXNlKCkpKSksXG4gICAgICApO1xuXG4gICAgICByZXR1cm4gZmlsdGVyZWRTdGF0aWNPcHRpb25zJDtcbiAgICB9KSxcbiAgICBtYXAob3B0aW9ucyA9PiB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5maWx0ZXIob3B0aW9uID0+IHtcbiAgICAgICAgY29uc3QgYWxyZWFkeVNlbGVjdGVkID0gdGhpcy52YWx1ZSgpLmZpbmQodmFsID0+IHZhbC50b0xvd2VyQ2FzZSgpID09PSBvcHRpb24udG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIHJldHVybiAhYWxyZWFkeVNlbGVjdGVkO1xuICAgICAgfSlcbiAgICB9KSxcbiAgICB0YXAoKCkgPT4gdGhpcy5sb2FkaW5nLnNldChmYWxzZSkpLFxuICApXG4gIG9wdGlvbnNTaWduYWwgPSB0b1NpZ25hbCh0aGlzLm9wdGlvbnMkKTtcblxuXG4gIGNsb3NlQ2hpcChjaGlwVmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMudmFsdWUoKTtcbiAgICBjb25zdCBuZXdWYWx1ZSA9IGN1cnJlbnRWYWx1ZS5maWx0ZXIodmFsID0+IHZhbCAhPT0gY2hpcFZhbHVlKTtcbiAgICB0aGlzLnZhbHVlLnNldChuZXdWYWx1ZSk7XG4gICAgdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBkaXNwbGF5TmV3T3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5zZWFyY2hWYWx1ZSgpO1xuXG4gICAgaWYgKCFuZXdWYWx1ZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGRpcmVjdE1hdGNoID0gdGhpcy5vcHRpb25zU2lnbmFsKCk/LmluY2x1ZGVzPy4obmV3VmFsdWUpO1xuICAgIGNvbnN0IGxvYWRpbmcgPSB0aGlzLmxvYWRpbmcoKTtcbiAgICBjb25zdCBhbHJlYWR5U2VsZWN0ZWQgPSBCb29sZWFuKHRoaXMudmFsdWUoKS5maW5kKHZhbCA9PiB2YWwudG9Mb3dlckNhc2UoKSA9PT0gbmV3VmFsdWUudG9Mb3dlckNhc2UoKSkpO1xuXG5cbiAgICByZXR1cm4gdGhpcy5hbGxvd05ldygpICYmICFhbHJlYWR5U2VsZWN0ZWQgJiYgKCFkaXJlY3RNYXRjaCB8fCBsb2FkaW5nKTtcbiAgfSlcblxuICBhZGRWYWx1ZSA9IChuZXdWYWx1ZTogc3RyaW5nKTogdm9pZCA9PiB7XG4gICAgdGhpcy52YWx1ZS51cGRhdGUocHJldlZhbHVlID0+IFtcbiAgICAgIC4uLnByZXZWYWx1ZSB8fCBbXSxcbiAgICAgIG5ld1ZhbHVlLFxuICAgIF0pXG4gIH1cblxuICBoYW5kbGVPcHRpb25DbGljayA9IChvcHRpb25WYWx1ZSk6IHZvaWQgPT4ge1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgdGhpcy5hZGRWYWx1ZShvcHRpb25WYWx1ZSk7XG4gICAgdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgdGhpcy5zZWFyY2hWYWx1ZS5zZXQoJycpO1xuICB9XG5cbiAgcmVzZXRGb2N1c09uT3B0aW9uc0NoYW5nZSA9IGVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuZGlzcGxheWVkT3B0aW9ucygpIHx8IHRoaXMuc2VhcmNoVmFsdWUoKSkge1xuICAgICAgdGhpcy5mb2N1c2VkSW5kZXguc2V0KDApO1xuICAgIH1cbiAgfSwgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KVxuXG4gIGRpc3BsYXllZE9wdGlvbnMgPSB2aWV3Q2hpbGRyZW4oRndNZW51SXRlbUNvbXBvbmVudCk7XG4gIGZvY3VzZWRJbmRleCA9IHNpZ25hbCgwKTtcbiAgZm9jdXNlZE9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5kaXNwbGF5ZWRPcHRpb25zKCk7XG4gICAgY29uc3QgZm9jdXNlZCA9IHRoaXMuZm9jdXNlZEluZGV4KCk7XG5cbiAgICBjb25zdCBvbmx5T25lID0gb3B0aW9ucy5sZW5ndGggPT09IDE7XG4gICAgcmV0dXJuIG9ubHlPbmUgPyB0aGlzLnNlYXJjaFZhbHVlKCkgOiBvcHRpb25zW2ZvY3VzZWRdPy52YWx1ZTtcbiAgfSlcblxuICBpbnB1dFJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+PignaW5wdXQnKTtcbiAgZm9jdXNJbnB1dChlOiBNb3VzZUV2ZW50ID0gbnVsbCk6IHZvaWQge1xuICAgIGU/LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZT8uc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZT8uc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5pbnB1dFJlZigpLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIC8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuICBrZXlIYW5kbGVyTWFwOiB7IFtrZXljb2RlOiBzdHJpbmddOiAoZTogS2V5Ym9hcmRFdmVudCkgPT4gdm9pZCB9ID0ge1xuICAgICdFbnRlcic6ICgpID0+IHtcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuZm9jdXNlZE9wdGlvbigpIHx8IHRoaXMuc2VhcmNoVmFsdWUoKTtcbiAgICAgIGNvbnN0IGR1cGxpY2F0ZSA9IHRoaXMudmFsdWUoKS5maW5kKHZhbCA9PiB2YWwudG9Mb3dlckNhc2UoKSA9PT0gbmV3VmFsdWUudG9Mb3dlckNhc2UoKSk7XG5cbiAgICAgIGlmICghbmV3VmFsdWUgfHwgZHVwbGljYXRlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5hZGRWYWx1ZShuZXdWYWx1ZSk7XG4gICAgICB0aGlzLnNlYXJjaFZhbHVlLnNldCgnJyk7XG4gICAgfSxcbiAgICAnQXJyb3dEb3duJzogKCkgPT4ge1xuICAgICAgdGhpcy5tb3ZlRm9jdXNlZCgnZG93bicpO1xuICAgIH0sXG4gICAgJ0Fycm93VXAnOiAoKSA9PiB7XG4gICAgICB0aGlzLm1vdmVGb2N1c2VkKCd1cCcpO1xuICAgIH0sXG4gICAgJ0JhY2tzcGFjZSc6ICgpID0+IHtcbiAgICAgIGNvbnN0IHNlYXJjaElzRW1wdHkgPSAhdGhpcy5zZWFyY2hWYWx1ZSgpOyAvLyBhbnkgZmFsc3kgdmFsdWUgaXMgZW1wdHlcbiAgICAgIGlmIChzZWFyY2hJc0VtcHR5ICYmIHRoaXMudmFsdWUoKT8ubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmNsb3NlQ2hpcCh0aGlzLnZhbHVlKClbdGhpcy52YWx1ZSgpLmxlbmd0aCAtIDFdKVxuICAgICAgfVxuICAgICAgcmV0dXJuICFzZWFyY2hJc0VtcHR5O1xuICAgIH0sXG4gICAgJ1RhYic6ICgpID0+IHtcbiAgICAgIGlmICh0aGlzLnRyaWdnZXIoKS5pc09wZW4pIHtcbiAgICAgICAgdGhpcy50cmlnZ2VyKCkuY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9LFxuICB9XG4gIC8qIGVzbGludC1lbmFibGUgKi9cblxuICBoYW5kbGVLZXkoZTogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGhhbmRsZXIgPSB0aGlzLmtleUhhbmRsZXJNYXBbZS5rZXldO1xuICAgIGhhbmRsZXI/LihlKTtcbiAgfVxuXG4gIHNldEZvY3VzQnlWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuZGlzcGxheWVkT3B0aW9ucygpO1xuICAgIGNvbnN0IGZvdW5kSW5kZXggPSBvcHRpb25zLmZpbmRJbmRleChvcHQgPT4gb3B0LnZhbHVlID09PSB2YWx1ZSk7XG4gICAgY29uc3QgZmluYWxJbmRleCA9IGZvdW5kSW5kZXggPT09IC0xID8gMCA6IGZvdW5kSW5kZXg7XG4gICAgdGhpcy5mb2N1c2VkSW5kZXguc2V0KGZpbmFsSW5kZXgpO1xuICB9XG5cbiAgcHJpdmF0ZSBtb3ZlRm9jdXNlZChkaXJlY3Rpb246ICd1cCcgfCAnZG93bicpOiB2b2lkIHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5kaXNwbGF5ZWRPcHRpb25zKCk7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmZvY3VzZWRJbmRleCgpO1xuXG4gICAgY29uc3QgY2xhbXBJbmRleCA9IChuOiBudW1iZXIpOiBudW1iZXIgPT4ge1xuICAgICAgaWYgKG4gPCAwKSB7XG4gICAgICAgIHJldHVybiBvcHRpb25zLmxlbmd0aCAtIDE7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChuID49IG9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbjtcbiAgICB9XG5cbiAgICBjb25zdCBpbmRleENoYW5nZSA9IGRpcmVjdGlvbiA9PT0gJ3VwJyA/IC0xIDogMTtcblxuICAgIGNvbnN0IG5ld0luZGV4ID0gY2xhbXBJbmRleChpbmRleCArIGluZGV4Q2hhbmdlKTtcbiAgICB0aGlzLmZvY3VzZWRJbmRleC5zZXQobmV3SW5kZXgpO1xuXG4gICAgY29uc3QgbmV3bHlGb2N1c2VkID0gdGhpcy5kaXNwbGF5ZWRPcHRpb25zKClbdGhpcy5mb2N1c2VkSW5kZXgoKV07XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHJ4LWFuZ3VsYXIvcHJlZmVyLW5vLWxheW91dC1zZW5zaXRpdmUtYXBpc1xuICAgIG5ld2x5Rm9jdXNlZC5zY3JvbGxJbnRvVmlldygpO1xuICB9XG5cbn1cbiIsIjxkaXZcbiAgKGNsaWNrKT1cImZvY3VzSW5wdXQoJGV2ZW50KVwiXG4gIGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCJcbiAgW25nQ2xhc3NdPVwieyAnZGlzYWJsZWQnOiBkaXNhYmxlZCgpIH1cIlxuICBbY2RrTWVudVRyaWdnZXJGb3JdPVwibWVudUNvbnRlbnRcIlxuICBmd01lbnVSZWdpc3RlclxuICAjaW5wdXRDb250YWluZXI+XG4gIDxmdy1jaGlwLWxpc3QgY2xhc3M9XCJjaGlwc1wiPlxuICAgIEBmb3IodmFsIG9mIHZhbHVlKCk7IHRyYWNrIHZhbCkge1xuICAgICAgPGZ3LWNoaXBcbiAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgW3Nob3dDbG9zZV09XCJ0cnVlXCJcbiAgICAgICAgW3RpdGxlXT1cInZhbFwiXG4gICAgICAgIFtzZWxlY3RhYmxlXT1cImZhbHNlXCJcbiAgICAgICAgKGNsb3NlKT1cImNsb3NlQ2hpcCh2YWwpXCJcbiAgICAgIC8+XG4gICAgfVxuICA8L2Z3LWNoaXAtbGlzdD5cbiAgPGlucHV0XG4gICAgdGVzdC1pZD1cInR5cGVhaGVhZC1pbnB1dFwiXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyKClcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcbiAgICBbdmFsdWVdPVwic2VhcmNoVmFsdWUoKVwiXG4gICAgKGtleXVwKT1cImhhbmRsZVNlYXJjaENoYW5nZSgkZXZlbnQpXCJcbiAgICAoa2V5ZG93bik9XCJoYW5kbGVLZXkoJGV2ZW50KVwiXG4gICAgI2lucHV0XG4gICAgdHlwZT1cInRleHRcIlxuICAvPlxuICBAaWYobG9hZGluZygpKSB7XG4gICAgPGZ3LXByb2dyZXNzLXNwaW5uZXIgc2l6ZT1cInNtYWxsXCIvPlxuICB9XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjbWVudUNvbnRlbnQ+XG4gICAgPGZ3LW1lbnUtY29udGFpbmVyXG4gICAgICBbbWF4SGVpZ2h0XT1cIm1heE9wdGlvbnNIZWlnaHQoKVwiXG4gICAgICBbbWluSGVpZ2h0XT1cIm1pbk9wdGlvbnNIZWlnaHQoKVwiXG4gICAgICBbd2lkdGhdPVwib3B0aW9uc1dpZHRoKCkgfHwgaW5wdXRDb250YWluZXIub2Zmc2V0V2lkdGggLSAyICsgJ3B4J1wiXG4gICAgPlxuICAgICAgPGZ3LW1lbnU+XG4gICAgICAgIEBpZihsb2FkaW5nKCkgJiYgIWRpc3BsYXlOZXdPcHRpb24oKSkge1xuICAgICAgICAgIDxmdy1tZW51LWl0ZW0gdGl0bGU9XCJTZWFyY2hpbmcuLi5cIiBbZGlzYWJsZWRdPVwidHJ1ZVwiLz5cbiAgICAgICAgfSBAZWxzZSBpZighbG9hZGluZygpKSB7XG4gICAgICAgICAgQGZvciAob3B0aW9uIG9mIG9wdGlvbnNTaWduYWwoKTsgdHJhY2sgb3B0aW9uKSB7XG4gICAgICAgICAgICA8ZnctbWVudS1pdGVtXG4gICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVPcHRpb25DbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwic2V0Rm9jdXNCeVZhbHVlKG9wdGlvbilcIlxuICAgICAgICAgICAgICBbdGl0bGVdPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgW2ZvY3VzZWRdPVwiZm9jdXNlZE9wdGlvbigpID09PSBvcHRpb25cIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBlbXB0eSB7XG4gICAgICAgICAgICBAaWYgKCFkaXNwbGF5TmV3T3B0aW9uKCkpIHtcbiAgICAgICAgICAgICAgPGZ3LW1lbnUtaXRlbSB0aXRsZT1cIk5vIHRhZyBzdWdnZXN0aW9uc1wiIFtkaXNhYmxlZF09XCJ0cnVlXCIvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAaWYoZGlzcGxheU5ld09wdGlvbigpKSB7XG4gICAgICAgICAgPGZ3LW1lbnUtaXRlbVxuICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZU9wdGlvbkNsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwic2V0Rm9jdXNCeVZhbHVlKHNlYXJjaFZhbHVlKCkpXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJzZWFyY2hWYWx1ZSgpXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJzZWFyY2hWYWx1ZSgpXCJcbiAgICAgICAgICAgIFtmb2N1c2VkXT1cImZvY3VzZWRPcHRpb24oKSA9PT0gc2VhcmNoVmFsdWUoKVwiPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXctdGFnXCI+TmV3PC9wPlxuICAgICAgICAgIDwvZnctbWVudS1pdGVtPlxuICAgICAgICB9XG4gICAgICA8L2Z3LW1lbnU+XG4gICAgPC9mdy1tZW51LWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -7,11 +7,11 @@ export class FwWrappedInputComponent {
7
7
  this.class = true;
8
8
  }
9
9
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwWrappedInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FwWrappedInputComponent, selector: "fw-wrapped-input", inputs: { title: "title", description: "description", helperText: "helperText", errorText: "errorText" }, host: { properties: { "class.fw-wrapped-input": "this.class" } }, ngImport: i0, template: "<label>\n <fw-form-heading *ngIf=\"title\" [title]=\"title\" [description]=\"description\"></fw-form-heading>\n <ng-content select=\"fw-form-heading\"></ng-content>\n</label>\n<div class=\"input-wrapper\">\n <ng-content\n select=\"fw-button-toggle, fw-date-input, fw-text-input, fw-number-input, fw-phone-input, fw-textarea-input, fw-select, fw-multi-select, fw-checkbox\"></ng-content>\n</div>\n<p class=\"vision-p4 helper-text\" *ngIf=\"!!helperText && !errorText\">{{ helperText }}</p>\n<p class=\"vision-p4 error-text\" *ngIf=\"!!errorText\">{{ errorText }}</p>\n", styles: [".fw-wrapped-input{display:flex;flex-direction:column;flex:1}.fw-wrapped-input .input-wrapper{max-width:100%;display:flex;flex-direction:row;flex:1;gap:16px}.fw-wrapped-input .input-wrapper>*{flex:1}.fw-wrapped-input .helper-text,.fw-wrapped-input .error-text{margin-top:4px;color:var(--typography-light);line-height:13px;margin-left:6px;margin-bottom:0;text-align:left}.fw-wrapped-input .error-text{color:var(--red-base)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.FwFormHeadingComponent, selector: "fw-form-heading", inputs: ["title", "description", "status"] }], encapsulation: i0.ViewEncapsulation.None }); }
10
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FwWrappedInputComponent, selector: "fw-wrapped-input", inputs: { title: "title", description: "description", helperText: "helperText", errorText: "errorText" }, host: { properties: { "class.fw-wrapped-input": "this.class" } }, ngImport: i0, template: "<label>\n <fw-form-heading *ngIf=\"title\" [title]=\"title\" [description]=\"description\"></fw-form-heading>\n <ng-content select=\"fw-form-heading\"></ng-content>\n</label>\n<div class=\"input-wrapper\">\n <ng-content\n select=\"fw-button-toggle, fw-date-input, fw-text-input, fw-number-input, fw-phone-input, fw-textarea-input, fw-select, fw-multi-select, fw-checkbox, fw-typeahead\"></ng-content>\n</div>\n<p class=\"vision-p4 helper-text\" *ngIf=\"!!helperText && !errorText\">{{ helperText }}</p>\n<p class=\"vision-p4 error-text\" *ngIf=\"!!errorText\">{{ errorText }}</p>\n", styles: [".fw-wrapped-input{display:flex;flex-direction:column;flex:1}.fw-wrapped-input .input-wrapper{max-width:100%;display:flex;flex-direction:row;flex:1;gap:16px}.fw-wrapped-input .input-wrapper>*{flex:1}.fw-wrapped-input .helper-text,.fw-wrapped-input .error-text{margin-top:4px;color:var(--typography-light);line-height:13px;margin-left:6px;margin-bottom:0;text-align:left}.fw-wrapped-input .error-text{color:var(--red-base)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.FwFormHeadingComponent, selector: "fw-form-heading", inputs: ["title", "description", "status"] }], encapsulation: i0.ViewEncapsulation.None }); }
11
11
  }
12
12
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwWrappedInputComponent, decorators: [{
13
13
  type: Component,
14
- args: [{ selector: 'fw-wrapped-input', encapsulation: ViewEncapsulation.None, template: "<label>\n <fw-form-heading *ngIf=\"title\" [title]=\"title\" [description]=\"description\"></fw-form-heading>\n <ng-content select=\"fw-form-heading\"></ng-content>\n</label>\n<div class=\"input-wrapper\">\n <ng-content\n select=\"fw-button-toggle, fw-date-input, fw-text-input, fw-number-input, fw-phone-input, fw-textarea-input, fw-select, fw-multi-select, fw-checkbox\"></ng-content>\n</div>\n<p class=\"vision-p4 helper-text\" *ngIf=\"!!helperText && !errorText\">{{ helperText }}</p>\n<p class=\"vision-p4 error-text\" *ngIf=\"!!errorText\">{{ errorText }}</p>\n", styles: [".fw-wrapped-input{display:flex;flex-direction:column;flex:1}.fw-wrapped-input .input-wrapper{max-width:100%;display:flex;flex-direction:row;flex:1;gap:16px}.fw-wrapped-input .input-wrapper>*{flex:1}.fw-wrapped-input .helper-text,.fw-wrapped-input .error-text{margin-top:4px;color:var(--typography-light);line-height:13px;margin-left:6px;margin-bottom:0;text-align:left}.fw-wrapped-input .error-text{color:var(--red-base)}\n"] }]
14
+ args: [{ selector: 'fw-wrapped-input', encapsulation: ViewEncapsulation.None, template: "<label>\n <fw-form-heading *ngIf=\"title\" [title]=\"title\" [description]=\"description\"></fw-form-heading>\n <ng-content select=\"fw-form-heading\"></ng-content>\n</label>\n<div class=\"input-wrapper\">\n <ng-content\n select=\"fw-button-toggle, fw-date-input, fw-text-input, fw-number-input, fw-phone-input, fw-textarea-input, fw-select, fw-multi-select, fw-checkbox, fw-typeahead\"></ng-content>\n</div>\n<p class=\"vision-p4 helper-text\" *ngIf=\"!!helperText && !errorText\">{{ helperText }}</p>\n<p class=\"vision-p4 error-text\" *ngIf=\"!!errorText\">{{ errorText }}</p>\n", styles: [".fw-wrapped-input{display:flex;flex-direction:column;flex:1}.fw-wrapped-input .input-wrapper{max-width:100%;display:flex;flex-direction:row;flex:1;gap:16px}.fw-wrapped-input .input-wrapper>*{flex:1}.fw-wrapped-input .helper-text,.fw-wrapped-input .error-text{margin-top:4px;color:var(--typography-light);line-height:13px;margin-left:6px;margin-bottom:0;text-align:left}.fw-wrapped-input .error-text{color:var(--red-base)}\n"] }]
15
15
  }], propDecorators: { title: [{
16
16
  type: Input
17
17
  }], description: [{
@@ -24,4 +24,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
24
24
  type: HostBinding,
25
25
  args: ['class.fw-wrapped-input']
26
26
  }] } });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JhcHBlZC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy93cmFwcGVkLWlucHV0L3dyYXBwZWQtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvd3JhcHBlZC1pbnB1dC93cmFwcGVkLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQVFqRixNQUFNLE9BQU8sdUJBQXVCO0lBTnBDO1FBWXlDLFVBQUssR0FBRyxJQUFJLENBQUM7S0FDckQ7K0dBUFksdUJBQXVCO21HQUF2Qix1QkFBdUIsb09DUnBDLCtqQkFVQTs7NEZERmEsdUJBQXVCO2tCQU5uQyxTQUFTOytCQUNFLGtCQUFrQixpQkFHYixpQkFBaUIsQ0FBQyxJQUFJOzhCQUc1QixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRWlDLEtBQUs7c0JBQTNDLFdBQVc7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Z3LXdyYXBwZWQtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vd3JhcHBlZC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dyYXBwZWQtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRndXcmFwcGVkSW5wdXRDb21wb25lbnQge1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgQElucHV0KCkgaGVscGVyVGV4dD86IHN0cmluZztcbiAgQElucHV0KCkgZXJyb3JUZXh0Pzogc3RyaW5nO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZnctd3JhcHBlZC1pbnB1dCcpIGNsYXNzID0gdHJ1ZTtcbn1cblxuXG4iLCI8bGFiZWw+XG4gIDxmdy1mb3JtLWhlYWRpbmcgKm5nSWY9XCJ0aXRsZVwiIFt0aXRsZV09XCJ0aXRsZVwiIFtkZXNjcmlwdGlvbl09XCJkZXNjcmlwdGlvblwiPjwvZnctZm9ybS1oZWFkaW5nPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJmdy1mb3JtLWhlYWRpbmdcIj48L25nLWNvbnRlbnQ+XG48L2xhYmVsPlxuPGRpdiBjbGFzcz1cImlucHV0LXdyYXBwZXJcIj5cbiAgPG5nLWNvbnRlbnRcbiAgICBzZWxlY3Q9XCJmdy1idXR0b24tdG9nZ2xlLCBmdy1kYXRlLWlucHV0LCBmdy10ZXh0LWlucHV0LCBmdy1udW1iZXItaW5wdXQsIGZ3LXBob25lLWlucHV0LCBmdy10ZXh0YXJlYS1pbnB1dCwgZnctc2VsZWN0LCBmdy1tdWx0aS1zZWxlY3QsIGZ3LWNoZWNrYm94XCI+PC9uZy1jb250ZW50PlxuPC9kaXY+XG48cCBjbGFzcz1cInZpc2lvbi1wNCBoZWxwZXItdGV4dFwiICpuZ0lmPVwiISFoZWxwZXJUZXh0ICYmICFlcnJvclRleHRcIj57eyBoZWxwZXJUZXh0IH19PC9wPlxuPHAgY2xhc3M9XCJ2aXNpb24tcDQgZXJyb3ItdGV4dFwiICpuZ0lmPVwiISFlcnJvclRleHRcIj57eyBlcnJvclRleHQgfX08L3A+XG4iXX0=
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JhcHBlZC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy93cmFwcGVkLWlucHV0L3dyYXBwZWQtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvd3JhcHBlZC1pbnB1dC93cmFwcGVkLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQVFqRixNQUFNLE9BQU8sdUJBQXVCO0lBTnBDO1FBWXlDLFVBQUssR0FBRyxJQUFJLENBQUM7S0FDckQ7K0dBUFksdUJBQXVCO21HQUF2Qix1QkFBdUIsb09DUnBDLDZrQkFVQTs7NEZERmEsdUJBQXVCO2tCQU5uQyxTQUFTOytCQUNFLGtCQUFrQixpQkFHYixpQkFBaUIsQ0FBQyxJQUFJOzhCQUc1QixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRWlDLEtBQUs7c0JBQTNDLFdBQVc7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Z3LXdyYXBwZWQtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vd3JhcHBlZC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dyYXBwZWQtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRndXcmFwcGVkSW5wdXRDb21wb25lbnQge1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgQElucHV0KCkgaGVscGVyVGV4dD86IHN0cmluZztcbiAgQElucHV0KCkgZXJyb3JUZXh0Pzogc3RyaW5nO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZnctd3JhcHBlZC1pbnB1dCcpIGNsYXNzID0gdHJ1ZTtcbn1cblxuXG4iLCI8bGFiZWw+XG4gIDxmdy1mb3JtLWhlYWRpbmcgKm5nSWY9XCJ0aXRsZVwiIFt0aXRsZV09XCJ0aXRsZVwiIFtkZXNjcmlwdGlvbl09XCJkZXNjcmlwdGlvblwiPjwvZnctZm9ybS1oZWFkaW5nPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJmdy1mb3JtLWhlYWRpbmdcIj48L25nLWNvbnRlbnQ+XG48L2xhYmVsPlxuPGRpdiBjbGFzcz1cImlucHV0LXdyYXBwZXJcIj5cbiAgPG5nLWNvbnRlbnRcbiAgICBzZWxlY3Q9XCJmdy1idXR0b24tdG9nZ2xlLCBmdy1kYXRlLWlucHV0LCBmdy10ZXh0LWlucHV0LCBmdy1udW1iZXItaW5wdXQsIGZ3LXBob25lLWlucHV0LCBmdy10ZXh0YXJlYS1pbnB1dCwgZnctc2VsZWN0LCBmdy1tdWx0aS1zZWxlY3QsIGZ3LWNoZWNrYm94LCBmdy10eXBlYWhlYWRcIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbjxwIGNsYXNzPVwidmlzaW9uLXA0IGhlbHBlci10ZXh0XCIgKm5nSWY9XCIhIWhlbHBlclRleHQgJiYgIWVycm9yVGV4dFwiPnt7IGhlbHBlclRleHQgfX08L3A+XG48cCBjbGFzcz1cInZpc2lvbi1wNCBlcnJvci10ZXh0XCIgKm5nSWY9XCIhIWVycm9yVGV4dFwiPnt7IGVycm9yVGV4dCB9fTwvcD5cbiJdfQ==