diff --git a/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search/vorgang-search.component.spec.ts b/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search/vorgang-search.component.spec.ts index aa4b0231543e390c23d7836aa6971fe0876c0e0c..c5c506cde9f3afd3146937fea13589d975ed2784 100644 --- a/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search/vorgang-search.component.spec.ts +++ b/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search/vorgang-search.component.spec.ts @@ -150,7 +150,7 @@ describe('VorgangSearchComponent', () => { component.submit(); - expect(component.searchValueFocusIn).toEqual('Gewerbe'); + expect(component.previouslyEnteredSearchValue).toEqual('Gewerbe'); }); it('should submit form', () => { @@ -169,25 +169,32 @@ describe('VorgangSearchComponent', () => { component.focusIn(); - expect(component.searchValueFocusIn).toEqual('Gewerbe'); + expect(component.previouslyEnteredSearchValue).toEqual('Gewerbe'); }); }); describe('focusOut', () => { - it('should set new form value when focus out to search button (Lupe)', () => { - const lupeElement = {}; - component.searchValueFocusIn = 'Gewerbe'; // previous value - component.searchSubmitButton = { + function createSearchSubmitMockButton(nativeElement: any): MatButton { + return { _elementRef: { - nativeElement: lupeElement + nativeElement: nativeElement } } as MatButton; + } - const searchFieldFormControl = new UntypedFormControl('Gewe'); // input form value - component.formService.form = new UntypedFormGroup({ + function createMockFormGroup(searchFieldFormControl: UntypedFormControl): UntypedFormGroup { + return new UntypedFormGroup({ search: searchFieldFormControl - }) + }); + } + + it('should set new form value when focus out to search button (Lupe)', () => { + const lupeElement = {}; + component.previouslyEnteredSearchValue = 'Gewerbe'; + component.searchSubmitButton = createSearchSubmitMockButton(lupeElement); + const searchFieldFormControl = new UntypedFormControl('Gewe'); + component.formService.form = createMockFormGroup(searchFieldFormControl); component.focusOut({ relatedTarget: lupeElement } as FocusEvent); @@ -196,17 +203,10 @@ describe('VorgangSearchComponent', () => { it('should set previous value', () => { - component.searchValueFocusIn = 'Gewe'; // previous value - component.searchSubmitButton = { - _elementRef: { - nativeElement: null - } - } as MatButton; - - const searchFieldFormControl = new UntypedFormControl('Gewerbe'); // input form value - component.formService.form = new UntypedFormGroup({ - search: searchFieldFormControl - }) + component.previouslyEnteredSearchValue = 'Gewe'; + component.searchSubmitButton = createSearchSubmitMockButton(null); + const searchFieldFormControl = new UntypedFormControl('Gewerbe'); + component.formService.form = createMockFormGroup(searchFieldFormControl); component.focusOut({ relatedTarget: {} } as FocusEvent); diff --git a/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search/vorgang-search.component.ts b/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search/vorgang-search.component.ts index eb0ce7a2af42b6e0e4d9756c1ce5a7dbff70eaf7..d687df545461c8e78b2dcc5f934ca0c741ba1000 100644 --- a/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search/vorgang-search.component.ts +++ b/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search/vorgang-search.component.ts @@ -42,7 +42,7 @@ export class VorgangSearchComponent { @ViewChild('searchInput') searchInput: ElementRef; @ViewChild('searchSubmitButton') searchSubmitButton: MatButton; - searchValueFocusIn: string; + previouslyEnteredSearchValue: string; readonly vorgangHeaderLinkRel = VorgangHeaderLinkRel; readonly vorgangListLinkRel = VorgangListLinkRel; @@ -55,21 +55,21 @@ export class VorgangSearchComponent { } submit(): void { - this.searchValueFocusIn = this.formService.getValue(); + this.previouslyEnteredSearchValue = this.formService.getValue(); this.formService.submit(); } focusIn(): void { - this.searchValueFocusIn = this.formService.getValue(); + this.previouslyEnteredSearchValue = this.formService.getValue(); } focusOut(event: FocusEvent): void { - if (!this.isRelatedFocusedElementSearchSubmitButton(event)) { - this.formService.form.controls[this.formService.SEARCH_FIELD].setValue(this.searchValueFocusIn); + if (!this.isRelatedTargetSearchButton(event)) { + this.formService.setSearchValue(this.previouslyEnteredSearchValue); } } - private isRelatedFocusedElementSearchSubmitButton(event: FocusEvent): boolean { + private isRelatedTargetSearchButton(event: FocusEvent): boolean { return event.relatedTarget === this.searchSubmitButton._elementRef.nativeElement; } } \ No newline at end of file diff --git a/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search/vorgang-search.formservice.ts b/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search/vorgang-search.formservice.ts index d9905f2c403b19fded90412c4cf4569d262a4627..da9243623a2ef85d6472c4f84deb26206a65c9ed 100644 --- a/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search/vorgang-search.formservice.ts +++ b/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search/vorgang-search.formservice.ts @@ -149,6 +149,10 @@ export class VorgangSearchFormService implements OnDestroy { return isEmpty(value) ? null : value; } + setSearchValue(value: string): void { + this.form.controls[this.SEARCH_FIELD].setValue(value); + } + ngOnDestroy(): void { if (isNotNil(this.subscription)) this.subscription.unsubscribe(); if (isNotNil(this.previewSubscription)) this.previewSubscription.unsubscribe();