@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.
- package/components/button-toggle/button-toggle-item/button-toggle-item.component.d.ts +1 -1
- package/components/chip-list/chip-list.component.d.ts +17 -0
- package/components/dialog/dialog-confirm.component.d.ts +1 -1
- package/components/dialog/dialog-simple.component.d.ts +1 -1
- package/components/dialog/dialog.service.d.ts +4 -2
- package/components/menu/menu-item/menu-item.component.d.ts +1 -1
- package/components/select-menu/multi-select-menu/multi-select-menu.component.d.ts +2 -2
- package/components/select-menu/select-menu.component.d.ts +1 -1
- package/components/typeahead/typeahead.component.d.ts +57 -0
- package/components/wrapped-input/wrapped-input.component.d.ts +1 -1
- package/esm2022/components/button-toggle/button-toggle-item/button-toggle-item.component.mjs +1 -1
- package/esm2022/components/chip-list/chip-list.component.mjs +72 -0
- package/esm2022/components/dialog/dialog-confirm.component.mjs +1 -1
- package/esm2022/components/dialog/dialog-simple.component.mjs +1 -1
- package/esm2022/components/dialog/dialog.service.mjs +10 -4
- package/esm2022/components/menu/menu-container/menu-container.component.mjs +3 -3
- package/esm2022/components/menu/menu-item/menu-item.component.mjs +3 -3
- package/esm2022/components/menu/menu-sub-item/menu-sub-item.component.mjs +3 -3
- package/esm2022/components/paginator/paginator.component.mjs +2 -2
- package/esm2022/components/phone-input/phone-input.component.mjs +3 -3
- package/esm2022/components/popover/popover.component.mjs +2 -2
- package/esm2022/components/select-menu/multi-select-menu/multi-select-menu.component.mjs +5 -5
- package/esm2022/components/select-menu/select-menu.component.mjs +3 -3
- package/esm2022/components/snackbar/snackbar/snackbar.component.mjs +3 -3
- package/esm2022/components/snackbar/snackbar-container/snackbar-container.component.mjs +3 -3
- package/esm2022/components/textarea-input/textarea-input.component.mjs +8 -3
- package/esm2022/components/typeahead/typeahead.component.mjs +232 -0
- package/esm2022/components/wrapped-input/wrapped-input.component.mjs +3 -3
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/flywheel-io-vision.mjs +321 -31
- package/fesm2022/flywheel-io-vision.mjs.map +1 -1
- package/package.json +1 -1
- 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\"
|
|
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\"
|
|
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,
|
|
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\"
|
|
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\"
|
|
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,
|
|
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
|
-
|
|
41
|
-
|
|
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,
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWFoZWFkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3R5cGVhaGVhZC90eXBlYWhlYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdHlwZWFoZWFkL3R5cGVhaGVhZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQWMsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1SyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RixPQUFPLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV0RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNqRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzVFLE9BQU8s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REFDckIsZ0JBQWdCLHFMQUNoQixtQkFBbUIseURBQ25CLE9BQU87OzRGQVlFLG9CQUFvQjtrQkF4QmhDLFNBQVM7K0JBQ0UsY0FBYyxjQUNaLElBQUksV0FDUDt3QkFDUCxpQkFBaUI7d0JBQ2pCLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixZQUFZO3dCQUNaLGFBQWE7d0JBQ2IscUJBQXFCO3dCQUNyQixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsT0FBTztxQkFDVixhQUNZO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDOzRCQUNuRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjs4QkFLK0IsWUFBWTtzQkFBM0MsWUFBWTt1QkFBQyxnQkFBZ0I7Z0JBMkJLLE9BQU87c0JBQXpDLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrTWVudU1vZHVsZSwgQ2RrTWVudVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvbWVudSc7XG5pbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIEVsZW1lbnRSZWYsIGZvcndhcmRSZWYsIEhvc3RMaXN0ZW5lciwgaW5qZWN0LCBpbnB1dCwgbW9kZWwsIHNpZ25hbCwgdmlld0NoaWxkLCB2aWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBtYXAsIE9ic2VydmFibGUsIG9mLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE1lbnVSZWdpc3RlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvbWVudS1yZWdpc3Rlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRndDaGlwTW9kdWxlIH0gZnJvbSAnLi4vY2hpcC9jaGlwLm1vZHVsZSc7XG5pbXBvcnQgeyBGd0NoaXBMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi4vY2hpcC1saXN0L2NoaXAtbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRndNZW51TW9kdWxlIH0gZnJvbSAnLi4vbWVudS9tZW51Lm1vZHVsZSc7XG5pbXBvcnQgeyBGd01lbnVJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vbWVudS9tZW51LWl0ZW0vbWVudS1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGd1Byb2dyZXNzTW9kdWxlIH0gZnJvbSAnLi4vcHJvZ3Jlc3MvcHJvZ3Jlc3MubW9kdWxlJztcbmltcG9ydCB7IEZ3VGV4dElucHV0TW9kdWxlIH0gZnJvbSAnLi4vdGV4dC1pbnB1dC90ZXh0LWlucHV0Lm1vZHVsZSc7XG5cbnR5cGUgT3B0aW9uRmV0Y2hpbmdGbiA9IChzZWFyY2hTdHJpbmc6IHN0cmluZykgPT4gT2JzZXJ2YWJsZTxzdHJpbmdbXT47XG5cbi8qKlxuICogQ29tcG9uZW50IGZvciBoYXZpbmcgYSB1c2VyIHNlbGVjdCBtdWx0aXBsZSB2YWx1ZXMgd2hpbGUgYWxzbyBhbGxvd2luZyBhcmJpdHJhcnkgdmFsdWVzIHRvIGJlIGFkZGVkXG4gKiBAc2VlIFtWaXNpb24gRG9jc10oaHR0cHM6Ly9jZG4uZmx5d2hlZWwuaW8vZG9jcy92aXNpb24vbWFzdGVyLz9wYXRoPS9kb2NzL2Zvcm0tY29udHJvbHMtdHlwZWFoZWFkLS1kb2NzKVxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmdy10eXBlYWhlYWQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgRndUZXh0SW5wdXRNb2R1bGUsXG4gICAgRndDaGlwTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgRndNZW51TW9kdWxlLFxuICAgIENka01lbnVNb2R1bGUsXG4gICAgTWVudVJlZ2lzdGVyRGlyZWN0aXZlLFxuICAgIEZ3UHJvZ3Jlc3NNb2R1bGUsXG4gICAgRndDaGlwTGlzdENvbXBvbmVudCxcbiAgICBOZ0NsYXNzLFxuXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGd1R5cGVhaGVhZENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vdHlwZWFoZWFkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3R5cGVhaGVhZC5jb21wb25lbnQuc2NzcycsXG59KVxuZXhwb3J0IGNsYXNzIEZ3VHlwZWFoZWFkQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycpIG91dHNpZGVDbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIHRoaXMudHJpZ2dlcigpLmNsb3NlKCk7XG4gIH1cblxuICB0cmlnZ2VyID0gdmlld0NoaWxkKENka01lbnVUcmlnZ2VyKTtcbiAgY2hhbmdlRGV0ZWN0b3IgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBsb2FkaW5nID0gbW9kZWwoZmFsc2UpO1xuICBkaXNhYmxlZCA9IG1vZGVsKGZhbHNlKTtcblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkLnNldChpc0Rpc2FibGVkKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUoaW5jb21pbmdWYWx1ZTogc3RyaW5nW10pOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlLnNldChpbmNvbWluZ1ZhbHVlKTtcbiAgfVxuXG4gIG9uQ2hhbmdlID0gKF86IHN0cmluZ1tdKTogdm9pZCA9PiB7fTtcbiAgcmVnaXN0ZXJPbkNoYW5nZShvbkNoYW5nZUZuKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IG9uQ2hhbmdlRm47XG4gIH1cbiAgb25Ub3VjaGVkID0gKCk6IHZvaWQgPT4ge307XG4gIHJlZ2lzdGVyT25Ub3VjaGVkKG9uVG91Y2hlZEZuKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBvblRvdWNoZWRGbjtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSkgb25DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgfVxuXG4gIHZhbHVlID0gbW9kZWw8c3RyaW5nW10+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,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JhcHBlZC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy93cmFwcGVkLWlucHV0L3dyYXBwZWQtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvd3JhcHBlZC1pbnB1dC93cmFwcGVkLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQVFqRixNQUFNLE9BQU8sdUJBQXVCO0lBTnBDO1FBWXlDLFVBQUssR0FBRyxJQUFJLENBQUM7S0FDckQ7K0dBUFksdUJBQXVCO21HQUF2Qix1QkFBdUIsb09DUnBDLDZrQkFVQTs7NEZERmEsdUJBQXVCO2tCQU5uQyxTQUFTOytCQUNFLGtCQUFrQixpQkFHYixpQkFBaUIsQ0FBQyxJQUFJOzhCQUc1QixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRWlDLEtBQUs7c0JBQTNDLFdBQVc7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Z3LXdyYXBwZWQtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vd3JhcHBlZC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dyYXBwZWQtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRndXcmFwcGVkSW5wdXRDb21wb25lbnQge1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgQElucHV0KCkgaGVscGVyVGV4dD86IHN0cmluZztcbiAgQElucHV0KCkgZXJyb3JUZXh0Pzogc3RyaW5nO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZnctd3JhcHBlZC1pbnB1dCcpIGNsYXNzID0gdHJ1ZTtcbn1cblxuXG4iLCI8bGFiZWw+XG4gIDxmdy1mb3JtLWhlYWRpbmcgKm5nSWY9XCJ0aXRsZVwiIFt0aXRsZV09XCJ0aXRsZVwiIFtkZXNjcmlwdGlvbl09XCJkZXNjcmlwdGlvblwiPjwvZnctZm9ybS1oZWFkaW5nPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJmdy1mb3JtLWhlYWRpbmdcIj48L25nLWNvbnRlbnQ+XG48L2xhYmVsPlxuPGRpdiBjbGFzcz1cImlucHV0LXdyYXBwZXJcIj5cbiAgPG5nLWNvbnRlbnRcbiAgICBzZWxlY3Q9XCJmdy1idXR0b24tdG9nZ2xlLCBmdy1kYXRlLWlucHV0LCBmdy10ZXh0LWlucHV0LCBmdy1udW1iZXItaW5wdXQsIGZ3LXBob25lLWlucHV0LCBmdy10ZXh0YXJlYS1pbnB1dCwgZnctc2VsZWN0LCBmdy1tdWx0aS1zZWxlY3QsIGZ3LWNoZWNrYm94LCBmdy10eXBlYWhlYWRcIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbjxwIGNsYXNzPVwidmlzaW9uLXA0IGhlbHBlci10ZXh0XCIgKm5nSWY9XCIhIWhlbHBlclRleHQgJiYgIWVycm9yVGV4dFwiPnt7IGhlbHBlclRleHQgfX08L3A+XG48cCBjbGFzcz1cInZpc2lvbi1wNCBlcnJvci10ZXh0XCIgKm5nSWY9XCIhIWVycm9yVGV4dFwiPnt7IGVycm9yVGV4dCB9fTwvcD5cbiJdfQ==
|