diff --git a/alfa-client/libs/design-system/src/lib/form/text-input/text-input.component.spec.ts b/alfa-client/libs/design-system/src/lib/form/text-input/text-input.component.spec.ts index 974db9b7c5c5dc93f83768157da9d570cfb0a2d3..32ba66bd623c7a1c2609cba72f5e0f877f59207c 100644 --- a/alfa-client/libs/design-system/src/lib/form/text-input/text-input.component.spec.ts +++ b/alfa-client/libs/design-system/src/lib/form/text-input/text-input.component.spec.ts @@ -88,12 +88,16 @@ describe('TextInputComponent', () => { it('should focus', () => { component.focus = true; + component.ngAfterViewInit(); + expect(component.inputElement.nativeElement.focus).toHaveBeenCalled(); }); it('should not focus', () => { component.focus = false; + component.ngAfterViewInit(); + expect(component.inputElement.nativeElement.focus).not.toHaveBeenCalled(); }); }); diff --git a/alfa-client/libs/design-system/src/lib/form/text-input/text-input.component.ts b/alfa-client/libs/design-system/src/lib/form/text-input/text-input.component.ts index 1b8bf5fdf47948bbc9374b01086238c3e41c0ac3..cd01ba0190c68b4f9fec34f3e94496e6d86f73aa 100644 --- a/alfa-client/libs/design-system/src/lib/form/text-input/text-input.component.ts +++ b/alfa-client/libs/design-system/src/lib/form/text-input/text-input.component.ts @@ -21,9 +21,9 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { convertForDataTest, ConvertForDataTestPipe, EMPTY_STRING, isNotUndefined } from '@alfa-client/tech-shared'; +import { convertForDataTest, EMPTY_STRING, isNotUndefined } from '@alfa-client/tech-shared'; import { CommonModule } from '@angular/common'; -import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core'; +import { AfterViewInit, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core'; import { FormControl, ReactiveFormsModule } from '@angular/forms'; import { cva, VariantProps } from 'class-variance-authority'; import { uniqueId } from 'lodash-es'; @@ -51,7 +51,7 @@ type TextInputVariants = VariantProps<typeof textInputVariants>; @Component({ selector: 'ods-text-input', standalone: true, - imports: [CommonModule, ReactiveFormsModule, ConvertForDataTestPipe], + imports: [CommonModule, ReactiveFormsModule], template: ` <div class="relative"> <label *ngIf="showLabel" [for]="id" class="text-md mb-2 block font-medium text-text"> @@ -82,7 +82,7 @@ type TextInputVariants = VariantProps<typeof textInputVariants>; </div> `, }) -export class TextInputComponent { +export class TextInputComponent implements AfterViewInit { @ViewChild('inputElement') inputElement: ElementRef; @Input({ required: true }) set label(label: string) { @@ -98,20 +98,19 @@ export class TextInputComponent { @Input() withPrefix: boolean = false; @Input() withSuffix: boolean = false; @Input() showLabel: boolean = true; + @Input() focus: boolean = false; @Input() set dataTestId(value: string) { if (isNotUndefined(value)) this._dataTestId = value; } - @Input() set focus(value: boolean) { - if (value && this.inputElement) { - this.inputElement.nativeElement.focus(); - } - } - @Output() clickEmitter: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>(); inputLabel: string; id: string; _dataTestId: string; textInputVariants = textInputVariants; + + ngAfterViewInit() { + if (this.focus) this.inputElement.nativeElement.focus(); + } } diff --git a/alfa-client/libs/design-system/src/lib/instant-search/instant-search/instant-search.component.ts b/alfa-client/libs/design-system/src/lib/instant-search/instant-search/instant-search.component.ts index 05bd9d0120ab93428f1786c24a77a4b7f6eadf33..48a8a502165e5795ba32bd93485def62486d4de9 100644 --- a/alfa-client/libs/design-system/src/lib/instant-search/instant-search/instant-search.component.ts +++ b/alfa-client/libs/design-system/src/lib/instant-search/instant-search/instant-search.component.ts @@ -62,6 +62,7 @@ import { InstantSearchQuery, InstantSearchResult } from './instant-search.model' [placeholder]="placeholder" [attr.aria-expanded]="results.length" [control]="control" + [focusOnInput]="focusOnSearchField" aria-controls="results" (inputClicked)="showResults()" (searchQueryCleared)="searchQueryCleared.emit()" @@ -90,6 +91,7 @@ export class InstantSearchComponent implements OnInit, OnDestroy { @Input() placeholder: string = EMPTY_STRING; @Input() headerText: string = EMPTY_STRING; @Input() control: FormControl<string> = new FormControl(EMPTY_STRING); + @Input() focusOnSearchField: boolean = false; @Input() set searchResults(searchResults: InstantSearchResult<Resource>[]) { if (!isEqual(searchResults, this.results) && isNotNil(searchResults)) { diff --git a/alfa-client/libs/design-system/src/lib/instant-search/search-field/search-field.component.ts b/alfa-client/libs/design-system/src/lib/instant-search/search-field/search-field.component.ts index 7d8141a461626c6dee05d91262423f2d1a011470..2f45e945d817ca874dc2bec1b927aac498240999 100644 --- a/alfa-client/libs/design-system/src/lib/instant-search/search-field/search-field.component.ts +++ b/alfa-client/libs/design-system/src/lib/instant-search/search-field/search-field.component.ts @@ -37,6 +37,7 @@ import { SearchIconComponent } from '../../icons/search-icon/search-icon.compone label="instant search" [fieldControl]="control" [placeholder]="placeholder" + [focus]="focusOnInput" [withPrefix]="true" [withSuffix]="true" [showLabel]="false" @@ -44,13 +45,7 @@ import { SearchIconComponent } from '../../icons/search-icon/search-icon.compone role="combobox" > <ods-search-icon prefix aria-hidden="true" aria-label="Suchfeld" /> - <button - suffix - *ngIf="control.value" - (click)="clearInput()" - aria-label="Eingabe löschen" - data-test-id="clear-instant-search" - > + <button suffix *ngIf="control.value" (click)="clearInput()" aria-label="Eingabe löschen" data-test-id="clear-instant-search"> <ods-close-icon class="fill-primary hover:fill-primary-hover" /> </button> </ods-text-input>`, @@ -58,6 +53,7 @@ import { SearchIconComponent } from '../../icons/search-icon/search-icon.compone export class SearchFieldComponent { @Input() placeholder: string = EMPTY_STRING; @Input() control: FormControl<string> = new FormControl(EMPTY_STRING); + @Input() focusOnInput: boolean = false; @Output() inputClicked: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>(); @Output() searchQueryCleared: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>(); diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-dialog-forwarding-item.component.html b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-item.component.html similarity index 100% rename from alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-dialog-forwarding-item.component.html rename to alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-item.component.html diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-dialog-forwarding-item.component.spec.ts b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-item.component.spec.ts similarity index 81% rename from alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-dialog-forwarding-item.component.spec.ts rename to alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-item.component.spec.ts index fe71ee9a0c2cf8f6b6bdf8201fb7e1c74b9f763e..b8ffb55d8ab7ff80771ddd8cdd2d1e6611dbe459 100644 --- a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-dialog-forwarding-item.component.spec.ts +++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-item.component.spec.ts @@ -5,23 +5,23 @@ import { Anschrift, OrganisationsEinheitResource } from '@alfa-client/zustaendig import { ForwardingItemComponent } from '@ods/system'; import { MockComponent } from 'ng-mocks'; import { createOrganisationsEinheitResource } from '../../../../../../zustaendige-stelle-shared/test/organisations-einheit'; -import { ForwardingDialogForwardingItemComponent } from './forwarding-dialog-forwarding-item.component'; import { ForwardingItemChangeButtonContainerComponent } from './forwarding-item-change-button-container/forwarding-item-change-button-container.component'; +import { ForwardingItemInDialogComponent } from './forwarding-item.component'; describe('ForwardingDialogForwardingItemComponent', () => { - let component: ForwardingDialogForwardingItemComponent; - let fixture: ComponentFixture<ForwardingDialogForwardingItemComponent>; + let component: ForwardingItemInDialogComponent; + let fixture: ComponentFixture<ForwardingItemInDialogComponent>; const organisationsEinheitResource: OrganisationsEinheitResource = createOrganisationsEinheitResource(); const anschrift: Anschrift = organisationsEinheitResource.anschrift; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [ForwardingDialogForwardingItemComponent], + imports: [ForwardingItemInDialogComponent], declarations: [MockComponent(ForwardingItemChangeButtonContainerComponent), MockComponent(ForwardingItemComponent)], }).compileComponents(); - fixture = TestBed.createComponent(ForwardingDialogForwardingItemComponent); + fixture = TestBed.createComponent(ForwardingItemInDialogComponent); component = fixture.componentInstance; component.organisationsEinheitResource = organisationsEinheitResource; fixture.detectChanges(); diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-dialog-forwarding-item.component.ts b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-item.component.ts similarity index 53% rename from alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-dialog-forwarding-item.component.ts rename to alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-item.component.ts index ab680e025e7c38abf6bceb9a828dfa80086cba8b..9828f682d8860e851cc15cde31fef24150120f4a 100644 --- a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-dialog-forwarding-item.component.ts +++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-item.component.ts @@ -4,11 +4,11 @@ import { ForwardingItemComponent } from '@ods/system'; import { ForwardingItemChangeButtonContainerComponent } from './forwarding-item-change-button-container/forwarding-item-change-button-container.component'; @Component({ - selector: 'alfa-forwarding-dialog-forwarding-item', + selector: 'alfa-forwarding-item-in-dialog', standalone: true, - imports: [ForwardingItemComponent, ForwardingItemChangeButtonContainerComponent, AnschriftToStringPipe], - templateUrl: './forwarding-dialog-forwarding-item.component.html', + imports: [ForwardingItemChangeButtonContainerComponent, AnschriftToStringPipe, ForwardingItemComponent], + templateUrl: './forwarding-item.component.html', }) -export class ForwardingDialogForwardingItemComponent { - @Input() organisationsEinheitResource!: OrganisationsEinheitResource; +export class ForwardingItemInDialogComponent { + @Input() organisationsEinheitResource: OrganisationsEinheitResource; } diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.html b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.html index 596428f313ca1f7c6f43e114dc645914788a00b0..3d60550c444dcbc34d9f229e91c1133e6a5af9ac 100644 --- a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.html +++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.html @@ -1,20 +1,20 @@ <div class="flex w-[620px] max-w-full flex-col gap-4 bg-background-100 p-8"> - <div class="flex items-center justify-between"> + <div class="flex items-center justify-between" > <h1 class="text-xl font-semibold text-primary">Vorgang weiterleiten</h1> <ods-cancel-dialog-button showAsIconButton="true" /> </div> - @if (isNil(selectedSearchResult)) { - <alfa-search-zustaendige-stelle-form-container cdkFocusInitial data-test-id="zufi-search" /> + @if (!selectedSearchResult) { + <alfa-search-zustaendige-stelle-form-container cdkFocusInitial focusOnSearchField="true" data-test-id="zufi-search" /> } @else { - <alfa-forwarding-dialog-forwarding-item + <alfa-forwarding-item-in-dialog [organisationsEinheitResource]="selectedSearchResult" data-test-id="forwarding-item" /> } <div class="flex gap-4"> - <alfa-forwarding-button [disabled]="isNil(selectedSearchResult)" data-test-id="forwarding-button-host" /> + <alfa-forwarding-button [disabled]="!selectedSearchResult"/> <ods-cancel-dialog-button /> </div> </div> diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.spec.ts b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.spec.ts index cd8d7e5960ebfb3b7ea462fd64051bf153b3abe9..5f99633576b5a4b000353d1738cda10e098b7bb5 100644 --- a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.spec.ts +++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.spec.ts @@ -7,7 +7,7 @@ import { MockComponent, MockModule } from 'ng-mocks'; import { getDataTestIdOf } from '../../../../../tech-shared/test/data-test'; import { createOrganisationsEinheitResource } from '../../../../../zustaendige-stelle-shared/test/organisations-einheit'; import { ForwardingButtonComponent } from './forwarding-button/forwarding-button.component'; -import { ForwardingDialogForwardingItemComponent } from './forwarding-dialog-forwarding-item/forwarding-dialog-forwarding-item.component'; +import { ForwardingItemInDialogComponent } from './forwarding-dialog-forwarding-item/forwarding-item.component'; import { ForwardingDialogComponent } from './forwarding-dialog.component'; describe('ForwardingDialogComponent', () => { @@ -16,7 +16,6 @@ describe('ForwardingDialogComponent', () => { const zufiSearch: string = getDataTestIdOf('zufi-search'); const forwardingItem: string = getDataTestIdOf('forwarding-item'); - const forwardingButton: string = getDataTestIdOf('forwarding-button-host'); const organisationsEinheitResource: OrganisationsEinheitResource = createOrganisationsEinheitResource(); beforeEach(async () => { @@ -25,7 +24,7 @@ describe('ForwardingDialogComponent', () => { declarations: [ MockComponent(CancelDialogButtonComponent), MockComponent(ForwardingButtonComponent), - MockComponent(ForwardingDialogForwardingItemComponent), + MockComponent(ForwardingItemInDialogComponent), MockModule(ZustaendigeStelleModule), ], }).compileComponents(); @@ -58,6 +57,7 @@ describe('ForwardingDialogComponent', () => { }); }); }); + it('should render zufi search if selectedSearchResult is null', () => { component.selectedSearchResult = null; diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.ts b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.ts index 7912c98d6089d2f53a2e1d3bb312ae3ea37f6cf4..fe36c26c6fbbae5460489c3bd2b82d705684d000 100644 --- a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.ts +++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.ts @@ -4,9 +4,8 @@ import { A11yModule } from '@angular/cdk/a11y'; import { Component, Input } from '@angular/core'; import { ReactiveFormsModule } from '@angular/forms'; import { CancelDialogButtonComponent } from '@ods/component'; -import { isNil } from 'lodash-es'; import { ForwardingButtonComponent } from './forwarding-button/forwarding-button.component'; -import { ForwardingDialogForwardingItemComponent } from './forwarding-dialog-forwarding-item/forwarding-dialog-forwarding-item.component'; +import { ForwardingItemInDialogComponent } from './forwarding-dialog-forwarding-item/forwarding-item.component'; @Component({ selector: 'alfa-forwarding-dialog', @@ -17,12 +16,10 @@ import { ForwardingDialogForwardingItemComponent } from './forwarding-dialog-for ReactiveFormsModule, ZustaendigeStelleModule, ForwardingButtonComponent, - ForwardingDialogForwardingItemComponent, + ForwardingItemInDialogComponent, ], templateUrl: './forwarding-dialog.component.html', }) export class ForwardingDialogComponent { @Input() selectedSearchResult: OrganisationsEinheitResource; - - protected readonly isNil = isNil; } diff --git a/alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/search-zustaendige-stelle-form-container/search-zustaendige-stelle-form-container.component.html b/alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/search-zustaendige-stelle-form-container/search-zustaendige-stelle-form-container.component.html index d96dce831c52bca494d151ce5aa7f8730e4fe108..2c884df36afc8721e62bc85b99d0c60606287986 100644 --- a/alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/search-zustaendige-stelle-form-container/search-zustaendige-stelle-form-container.component.html +++ b/alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/search-zustaendige-stelle-form-container/search-zustaendige-stelle-form-container.component.html @@ -1,7 +1,8 @@ <alfa-search-zustaendige-stelle-form data-test-id="search-organisations-einheit" [searchResults]="searchResults$ | async" + [focusOnSearchField]="focusOnSearchField" (search)="search($event)" (selectSearchResult)="selectSearchResult($event)" (clearSearchResult)="clearSearchResult()" -></alfa-search-zustaendige-stelle-form> \ No newline at end of file +/> \ No newline at end of file diff --git a/alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/search-zustaendige-stelle-form-container/search-zustaendige-stelle-form-container.component.ts b/alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/search-zustaendige-stelle-form-container/search-zustaendige-stelle-form-container.component.ts index c497b0d76bbc4eff7aa081910878f5a016570ec5..4b397554d4eec10a5c522338f636a2614fc1a5e7 100644 --- a/alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/search-zustaendige-stelle-form-container/search-zustaendige-stelle-form-container.component.ts +++ b/alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/search-zustaendige-stelle-form-container/search-zustaendige-stelle-form-container.component.ts @@ -1,5 +1,5 @@ import { ZUSTAENDIGE_STELLE_SERVICE, ZustaendigeStelleService } from '@alfa-client/zustaendige-stelle-shared'; -import { Component, EventEmitter, HostListener, Inject, OnInit, Output } from '@angular/core'; +import { Component, EventEmitter, HostListener, Inject, Input, OnInit, Output } from '@angular/core'; import { Resource } from '@ngxp/rest'; import { InstantSearchResult } from '@ods/system'; import { Observable } from 'rxjs'; @@ -10,6 +10,7 @@ import { Observable } from 'rxjs'; }) export class SearchZustaendigeStelleFormContainerComponent<T extends Resource> implements OnInit { @Output() searchResultSelected = new EventEmitter<T>(); + @Input() focusOnSearchField = false; public searchResults$: Observable<InstantSearchResult<T>[]>; diff --git a/alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/search-zustaendige-stelle-form-container/search-zustaendige-stelle-form/search-zustaendige-stelle-form.component.html b/alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/search-zustaendige-stelle-form-container/search-zustaendige-stelle-form/search-zustaendige-stelle-form.component.html index d9025b3bb2e2f7e1a9f080bc2311535315f97036..b5f1e583173c2aff41e33d3e0d06a3ed2352131e 100644 --- a/alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/search-zustaendige-stelle-form-container/search-zustaendige-stelle-form/search-zustaendige-stelle-form.component.html +++ b/alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/search-zustaendige-stelle-form-container/search-zustaendige-stelle-form/search-zustaendige-stelle-form.component.html @@ -28,6 +28,7 @@ data-test-id="search" placeholder="Name des Amts oder Adresse eingeben" [control]="formService.form.controls.search" + [focusOnSearchField]="focusOnSearchField" [searchResults]="searchResults" (searchResultSelected)="selectSearchResult.emit($event.data)" (searchQueryChanged)="search.emit($event.searchBy)" diff --git a/alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/search-zustaendige-stelle-form-container/search-zustaendige-stelle-form/search-zustaendige-stelle-form.component.ts b/alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/search-zustaendige-stelle-form-container/search-zustaendige-stelle-form/search-zustaendige-stelle-form.component.ts index 22c096f06509fffd9f5d581f1e05d119811b2559..a36f2cb5dbabc228ef35fbb7a4dc3f0fd9de5fbd 100644 --- a/alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/search-zustaendige-stelle-form-container/search-zustaendige-stelle-form/search-zustaendige-stelle-form.component.ts +++ b/alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/search-zustaendige-stelle-form-container/search-zustaendige-stelle-form/search-zustaendige-stelle-form.component.ts @@ -33,6 +33,7 @@ import { SearchZustaendigeStelleFormservice } from '../../search-zustaendige-ste }) export class SearchZustaendigeStelleFormComponent<T extends Resource> { @Input() public searchResults: InstantSearchResult<T>[]; + @Input() public focusOnSearchField: boolean = false; @Output() public search: EventEmitter<string> = new EventEmitter(); @Output() public selectSearchResult: EventEmitter<T> = new EventEmitter();