diff --git a/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-formular-buttons.e2e.components.ts b/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-formular-buttons.e2e.components.ts index b91293c81d9c0bc662f2ba91cbc1a14a03b9b548..eb3c618504707e0ab04322b655320bc57cdb9709 100644 --- a/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-formular-buttons.e2e.components.ts +++ b/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-formular-buttons.e2e.components.ts @@ -25,7 +25,7 @@ export class VorgangFormularButtonsE2EComponent { private readonly abschliessenButton: string = 'abschliessen-button'; private readonly annehmenButton: string = 'annehmen-button'; private readonly bearbeitenButton: string = 'bearbeiten-button'; - private readonly forwardButton: string = 'forward-by-ozgcloud-button'; + private readonly forwardButton: string = 'forwarding-button'; private readonly bescheidenButton: string = 'bescheiden-button'; private readonly endgueltigLoeschenButton: string = 'endgueltig-loeschen-button'; private readonly loeschAnforderungZuruecknehmenButton: string = 'loesch-anforderung-zuruecknehmen-button'; diff --git a/alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-forward-by-ozgcloud.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-forward.ts similarity index 100% rename from alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-forward-by-ozgcloud.cy.ts rename to alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-forward.ts diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-forward-by-ozgcloud.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-forward.ts similarity index 100% rename from alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-forward-by-ozgcloud.cy.ts rename to alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-forward.ts diff --git a/alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-button/user-form-delete-button-container.component.html b/alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-button/user-form-delete-button-container.component.html deleted file mode 100644 index b49a93cae8a97f0cf12a2e10c50abacc140ab8b6..0000000000000000000000000000000000000000 --- a/alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-button/user-form-delete-button-container.component.html +++ /dev/null @@ -1 +0,0 @@ -<admin-delete-open-dialog-button /> \ No newline at end of file diff --git a/alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-button/user-form-delete-button-container.component.spec.ts b/alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-button/user-form-delete-button-container.component.spec.ts deleted file mode 100644 index ec691fc665e848da93f5c649141ec8d34c180e61..0000000000000000000000000000000000000000 --- a/alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-button/user-form-delete-button-container.component.spec.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { UserFormDeleteButtonContainerComponent } from './user-form-delete-button-container.component'; - -describe('UserFormDeleteButtonComponent', () => { - let component: UserFormDeleteButtonContainerComponent; - let fixture: ComponentFixture<UserFormDeleteButtonContainerComponent>; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - imports: [UserFormDeleteButtonContainerComponent], - }).compileComponents(); - - fixture = TestBed.createComponent(UserFormDeleteButtonContainerComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-button/user-form-delete-button-container.component.ts b/alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-button/user-form-delete-button-container.component.ts deleted file mode 100644 index 2c66a5500b2e177a0f0a39aedad3f1ccd5e7e3e9..0000000000000000000000000000000000000000 --- a/alfa-client/libs/admin/user/src/lib/user-form/user-form-delete-button/user-form-delete-button-container.component.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { AdminDeleteOpenDialogButtonComponent } from '@admin-client/shared'; -import { DIALOG_COMPONENT } from '@alfa-client/ui'; -import { Component } from '@angular/core'; -import { UserDeleteDialogContainerComponent } from '../user-form-delete-dialog-container/user-delete-dialog-container.component'; - -@Component({ - selector: 'admin-user-form-delete-container-button', - standalone: true, - imports: [AdminDeleteOpenDialogButtonComponent], - providers: [{ provide: DIALOG_COMPONENT, useValue: UserDeleteDialogContainerComponent }], - templateUrl: './user-form-delete-button-container.component.html', -}) -export class UserFormDeleteButtonContainerComponent {} diff --git a/alfa-client/libs/admin/user/src/lib/user-form/user-form.component.html b/alfa-client/libs/admin/user/src/lib/user-form/user-form.component.html index 5ce59646fde16f7fd3299848b2615f318685e536..101227318be65fd7a14324f401d3fadfb7ceca49 100644 --- a/alfa-client/libs/admin/user/src/lib/user-form/user-form.component.html +++ b/alfa-client/libs/admin/user/src/lib/user-form/user-form.component.html @@ -35,7 +35,7 @@ <div class="flex justify-between"> <admin-user-form-save-button /> @if (formService.isPatch()) { - <admin-user-form-delete-container-button data-test-id="delete-button-container"/> + <admin-delete-open-dialog-button data-test-id="delete-button-container"/> } </div> </div> diff --git a/alfa-client/libs/admin/user/src/lib/user-form/user-form.component.spec.ts b/alfa-client/libs/admin/user/src/lib/user-form/user-form.component.spec.ts index 160ab43ceea91f4c2fd18bc37ca506e99edfa033..fdfb961a94c43f26d9fbbcaf7bba52bf8e8e066d 100644 --- a/alfa-client/libs/admin/user/src/lib/user-form/user-form.component.spec.ts +++ b/alfa-client/libs/admin/user/src/lib/user-form/user-form.component.spec.ts @@ -21,6 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ +import { AdminDeleteOpenDialogButtonComponent } from '@admin-client/shared'; import { User } from '@admin-client/user-shared'; import { createEmptyStateResource, createStateResource, StateResource } from '@alfa-client/tech-shared'; import { existsAsHtmlElement, getMockComponent, mock, Mock, notExistsAsHtmlElement } from '@alfa-client/test-utils'; @@ -68,6 +69,7 @@ describe('UserFormComponent', () => { MockComponent(UserFormOrganisationsEinheitListComponent), MockComponent(UserFormRolesComponent), MockComponent(UserFormHeadlineComponent), + MockComponent(AdminDeleteOpenDialogButtonComponent), ], providers: [{ provide: DIALOG_COMPONENT, useValue: {} }], }) diff --git a/alfa-client/libs/admin/user/src/lib/user-form/user-form.component.ts b/alfa-client/libs/admin/user/src/lib/user-form/user-form.component.ts index a533ff55e37698883943902df16183dc776b22c2..0bcae1640c4ee01122bf83091f51d4eccc1e9d3f 100644 --- a/alfa-client/libs/admin/user/src/lib/user-form/user-form.component.ts +++ b/alfa-client/libs/admin/user/src/lib/user-form/user-form.component.ts @@ -21,15 +21,17 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ +import { AdminDeleteOpenDialogButtonComponent } from '@admin-client/shared'; import { User } from '@admin-client/user-shared'; import { StateResource } from '@alfa-client/tech-shared'; +import { DIALOG_COMPONENT } from '@alfa-client/ui'; import { AsyncPipe } from '@angular/common'; import { Component, inject, OnInit } from '@angular/core'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { SpinnerComponent } from '@ods/component'; import { Observable } from 'rxjs'; import { UserFormDataComponent } from './user-form-data/user-form-data.component'; -import { UserFormDeleteButtonContainerComponent } from './user-form-delete-button/user-form-delete-button-container.component'; +import { UserDeleteDialogContainerComponent } from './user-form-delete-dialog-container/user-delete-dialog-container.component'; import { UserFormHeadlineComponent } from './user-form-headline/user-form-headline.component'; import { UserFormOrganisationsEinheitListComponent } from './user-form-organisations-einheit-list/user-form-organisations-einheit-list.component'; import { UserFormRolesComponent } from './user-form-roles/user-form-roles.component'; @@ -38,7 +40,7 @@ import { UserFormService } from './user.formservice'; @Component({ selector: 'admin-user-form', - providers: [UserFormService], + providers: [UserFormService, { provide: DIALOG_COMPONENT, useValue: UserDeleteDialogContainerComponent }], templateUrl: './user-form.component.html', standalone: true, imports: [ @@ -51,7 +53,7 @@ import { UserFormService } from './user.formservice'; UserFormOrganisationsEinheitListComponent, UserFormHeadlineComponent, UserFormSaveButtonComponent, - UserFormDeleteButtonContainerComponent, + AdminDeleteOpenDialogButtonComponent, ], }) export class UserFormComponent implements OnInit { diff --git a/alfa-client/libs/design-component/src/lib/button-with-spinner/button-with-spinner.component.ts b/alfa-client/libs/design-component/src/lib/button-with-spinner/button-with-spinner.component.ts index a12b0a8ad74b49d34ec172ae36682d7d0ce01104..4c1ebd4cfe3750fb12e7f5e05d8562fd49559b63 100644 --- a/alfa-client/libs/design-component/src/lib/button-with-spinner/button-with-spinner.component.ts +++ b/alfa-client/libs/design-component/src/lib/button-with-spinner/button-with-spinner.component.ts @@ -44,6 +44,7 @@ type ButtonVariants = VariantProps<typeof buttonVariants>; [size]="size" [dataTestId]="dataTestId" [isLoading]="isLoading" + [disabled]="disabled" (click)="clickEmitter.emit()" > <ng-content icon select="[icon]" /> @@ -57,6 +58,7 @@ export class ButtonWithSpinnerComponent { @Input() dataTestId: string = ''; @Input() variant: ButtonVariants['variant'] = 'primary'; @Input() size: ButtonVariants['size'] = 'medium'; + @Input() disabled: boolean = false; @Output() public clickEmitter: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>(); diff --git a/alfa-client/libs/design-component/src/lib/cancel-dialog-button/cancel-dialog-button.component.spec.ts b/alfa-client/libs/design-component/src/lib/cancel-dialog-button/cancel-dialog-button.component.spec.ts index 110c81e4d4072ef0417676ea9966a7fa3394f144..6adabee9688a1af7ac880621d85af1a90e04c326 100644 --- a/alfa-client/libs/design-component/src/lib/cancel-dialog-button/cancel-dialog-button.component.spec.ts +++ b/alfa-client/libs/design-component/src/lib/cancel-dialog-button/cancel-dialog-button.component.spec.ts @@ -1,4 +1,4 @@ -import { dispatchEventFromFixture, mock, Mock, MockEvent } from '@alfa-client/test-utils'; +import { dispatchEventFromFixture, existsAsHtmlElement, mock, Mock, MockEvent } from '@alfa-client/test-utils'; import { OzgcloudDialogService } from '@alfa-client/ui'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ButtonComponent } from '@ods/system'; @@ -12,7 +12,8 @@ describe('CancelDialogButtonComponent', () => { let dialogService: Mock<OzgcloudDialogService>; - const cancelDialog: string = getDataTestIdOf('cancel-dialog'); + const cancelDialogButton: string = getDataTestIdOf('cancel-dialog-button'); + const cancelDialogIconButton: string = getDataTestIdOf('cancel-dialog-icon-button'); beforeEach(async () => { dialogService = mock(OzgcloudDialogService); @@ -39,9 +40,51 @@ describe('CancelDialogButtonComponent', () => { describe('on button click', () => { it('should call dialog service to close all', () => { - dispatchEventFromFixture(fixture, cancelDialog, MockEvent.CLICK); + dispatchEventFromFixture(fixture, cancelDialogButton, MockEvent.CLICK); expect(dialogService.closeAll).toHaveBeenCalled(); }); }); + + describe('template', () => { + describe('button', () => { + beforeEach(() => { + component.showAsIconButton = false; + + fixture.detectChanges(); + }); + + it('should be visible when showAsIconButton is false', () => { + existsAsHtmlElement(fixture, cancelDialogButton); + }); + + it('should call dialog service to close all', () => { + dispatchEventFromFixture(fixture, cancelDialogButton, MockEvent.CLICK); + + expect(dialogService.closeAll).toHaveBeenCalled(); + }); + }); + + describe('icon button', () => { + beforeEach(() => { + component.showAsIconButton = true; + + fixture.detectChanges(); + }); + + it('should be visible when showAsIconButton is true', () => { + component.showAsIconButton = true; + + fixture.detectChanges(); + + existsAsHtmlElement(fixture, cancelDialogIconButton); + }); + + it('should call dialog service to close all', () => { + dispatchEventFromFixture(fixture, cancelDialogIconButton, MockEvent.CLICK); + + expect(dialogService.closeAll).toHaveBeenCalled(); + }); + }); + }); }); diff --git a/alfa-client/libs/design-component/src/lib/cancel-dialog-button/cancel-dialog-button.component.ts b/alfa-client/libs/design-component/src/lib/cancel-dialog-button/cancel-dialog-button.component.ts index 5d80db0f4e7755c1a2bd9ae9eb7b921c3cf58349..7c41c1bbcdc747090c0aa5bfc64185c577c99fe3 100644 --- a/alfa-client/libs/design-component/src/lib/cancel-dialog-button/cancel-dialog-button.component.ts +++ b/alfa-client/libs/design-component/src/lib/cancel-dialog-button/cancel-dialog-button.component.ts @@ -1,22 +1,40 @@ import { OzgcloudDialogService } from '@alfa-client/ui'; -import { Component, inject } from '@angular/core'; -import { ButtonComponent } from '@ods/system'; +import { Component, inject, Input } from '@angular/core'; +import { ButtonComponent, CloseIconComponent, TooltipDirective } from '@ods/system'; @Component({ selector: 'ods-cancel-dialog-button', standalone: true, - imports: [ButtonComponent], - template: `<ods-button - (clickEmitter)="cancel()" - variant="outline" - text="Abbrechen" - dataTestId="cancel-dialog" - data-test-id="cancel-dialog" - />`, + imports: [ButtonComponent, CloseIconComponent, TooltipDirective], + template: ` @if (showAsIconButton) { + <ods-button + (clickEmitter)="cancel()" + [tooltip]="'Schließen'" + tooltipAriaType="aria-labelledby" + variant="ghost" + size="fit" + dataTestId="cancel-dialog-icon-button" + data-test-id="cancel-dialog-icon-button" + > + <ng-container icon> + <ods-close-icon class="fill-primary" /> + </ng-container> + </ods-button> + } @else { + <ods-button + (clickEmitter)="cancel()" + variant="outline" + text="Abbrechen" + dataTestId="cancel-dialog-button" + data-test-id="cancel-dialog-button" + /> + }`, }) export class CancelDialogButtonComponent { public readonly dialogService = inject(OzgcloudDialogService); + @Input() showAsIconButton: boolean = false; + public cancel(): void { this.dialogService.closeAll(); } diff --git a/alfa-client/libs/design-system/src/index.ts b/alfa-client/libs/design-system/src/index.ts index eda668409767d19830222cb490f11f1608efff9b..d05d44db8ce46777152a6f48145ac2000dd5d0a3 100644 --- a/alfa-client/libs/design-system/src/index.ts +++ b/alfa-client/libs/design-system/src/index.ts @@ -41,6 +41,7 @@ export * from './lib/form/file-upload-button/file-upload-button.component'; export * from './lib/form/radio-button-card/radio-button-card.component'; export * from './lib/form/text-input/text-input.component'; export * from './lib/form/textarea/textarea.component'; +export * from './lib/forwarding-item/forwarding-item.component'; export * from './lib/icons/accessibility-icon/accessibility-icon.component'; export * from './lib/icons/account-circle-icon/account-circle-icon.component'; export * from './lib/icons/admin-logo-icon/admin-logo-icon.component'; 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/forwarding-item/forwarding-item.component.spec.ts b/alfa-client/libs/design-system/src/lib/forwarding-item/forwarding-item.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..5700f028372d57391a28997d4f8e7429d9f73a5c --- /dev/null +++ b/alfa-client/libs/design-system/src/lib/forwarding-item/forwarding-item.component.spec.ts @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2025 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { ForwardingItemComponent } from './forwarding-item.component'; + +describe('ForwardingItemComponent', () => { + let component: ForwardingItemComponent; + let fixture: ComponentFixture<ForwardingItemComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ForwardingItemComponent], + }).compileComponents(); + + fixture = TestBed.createComponent(ForwardingItemComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/alfa-client/libs/design-system/src/lib/forwarding-item/forwarding-item.component.ts b/alfa-client/libs/design-system/src/lib/forwarding-item/forwarding-item.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..7f8ebfd800c662910c5ec0905935c3d12487b7f3 --- /dev/null +++ b/alfa-client/libs/design-system/src/lib/forwarding-item/forwarding-item.component.ts @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2025 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +import { CommonModule } from '@angular/common'; +import { Component, Input } from '@angular/core'; +import { ForwardVorgangIconComponent } from '../icons/forward-vorgang-icon/forward-vorgang-icon.component'; + +export enum ForwardingDirection { + FROM = 'Weitergeleitet von', + TO = 'An', +} + +@Component({ + selector: 'ods-forwarding-item', + standalone: true, + imports: [CommonModule, ForwardVorgangIconComponent], + template: `<div + class="flex flex-col items-start justify-between gap-2 rounded-lg border border-grayborder p-3 md:flex-row md:items-center md:gap-0" + > + <div class="flex gap-3"> + <ods-forward-vorgang-icon class="fill-text" /> + <p class="text-gray-500">{{ direction }}:</p> + <div> + <p class="font-medium">{{ label }}</p> + <p>{{ address }}</p> + </div> + </div> + <div class="text-end empty:hidden"> + <ng-content /> + </div> + </div>`, +}) +export class ForwardingItemComponent { + @Input({ required: true }) label!: string; + @Input({ required: true }) address!: string; + @Input() direction: ForwardingDirection = ForwardingDirection.TO; +} diff --git a/alfa-client/libs/design-system/src/lib/forwarding-item/forwarding-item.stories.ts b/alfa-client/libs/design-system/src/lib/forwarding-item/forwarding-item.stories.ts new file mode 100644 index 0000000000000000000000000000000000000000..53d2116e9f314c9e2194cd8a9ff7c72e39dd1b12 --- /dev/null +++ b/alfa-client/libs/design-system/src/lib/forwarding-item/forwarding-item.stories.ts @@ -0,0 +1,92 @@ +/* + * Copyright (C) 2025 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +import { argsToTemplate, moduleMetadata, type Meta, type StoryObj } from '@storybook/angular'; + +import { ButtonComponent } from '../button/button.component'; +import { ForwardingDirection, ForwardingItemComponent } from './forwarding-item.component'; + +const label: string = 'Bund für Umwelt und Naturschutz Kreisgruppe Kiel'; +const address: string = 'Kaiserstraße 25, 12443 Kiel'; + +const meta: Meta<ForwardingItemComponent> = { + title: 'Forwarding item', + component: ForwardingItemComponent, + parameters: { + docs: { + description: { + component: 'Information of forwarded item', + }, + }, + }, + decorators: [ + moduleMetadata({ + imports: [ForwardingItemComponent, ButtonComponent], + }), + ], + excludeStories: /.*Data$/, + tags: ['autodocs'], +}; + +export default meta; +type Story = StoryObj<ForwardingItemComponent>; + +export const Default: Story = { + args: { + label: label, + address: address, + direction: ForwardingDirection.TO, + }, + argTypes: { + direction: { control: 'select', options: [ForwardingDirection.TO, ForwardingDirection.FROM] }, + }, +}; + +export const WithButton: Story = { + args: { + label: label, + address: address, + }, + + render: (args: ForwardingItemComponent) => ({ + props: args, + template: `<ods-forwarding-item ${argsToTemplate(args)}> + <ods-button variant="outline" text="Stelle ändern" /> + </ods-forwarding-item>`, + }), +}; + +export const WithCreationInfo: Story = { + args: { + label: label, + address: address, + direction: ForwardingDirection.FROM, + }, + render: (args: ForwardingItemComponent) => ({ + props: args, + template: `<ods-forwarding-item ${argsToTemplate(args)}> + <p>20. Dez. 09:35</p> + <p class="text-sm">Karin Wanowski-Müller</p> + </ods-forwarding-item>`, + }), +}; 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/index.ts b/alfa-client/libs/forwarding/src/index.ts index 24d937c3408da87eef49107297ff05faf4ffd709..49ebdccb493b46cfb0c7565d0635dfb7ee617d18 100644 --- a/alfa-client/libs/forwarding/src/index.ts +++ b/alfa-client/libs/forwarding/src/index.ts @@ -21,6 +21,6 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -export * from './lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component'; +export * from './lib/forwarding-button-container/forwarding-button-container.component'; +export * from './lib/forwarding-by-email-container/forwarding-by-email-container.component'; export * from './lib/forwarding.module'; -export * from './lib/vorgang-forwarding-container/vorgang-forwarding-container.component'; diff --git a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.ts b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.ts deleted file mode 100644 index f5fbad7ed1280171822f6746847c08887dbaff75..0000000000000000000000000000000000000000 --- a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { HasLinkPipe } from '@alfa-client/tech-shared'; -import { VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; -import { CommonModule } from '@angular/common'; -import { Component, Input } from '@angular/core'; -import { ButtonWithSpinnerComponent } from '@ods/component'; -import { ForwardVorgangIconComponent, TooltipDirective } from '@ods/system'; - -@Component({ - selector: 'alfa-forward-by-ozgcloud-button-container', - standalone: true, - imports: [CommonModule, ButtonWithSpinnerComponent, ForwardVorgangIconComponent, TooltipDirective, HasLinkPipe], - templateUrl: './forward-by-ozgcloud-button-container.component.html', - styles: [':host {@apply empty:hidden}'], -}) -export class ForwardByOzgcloudButtonContainerComponent { - @Input() vorgangWithEingang: VorgangWithEingangResource; - @Input() showAsIconButton: boolean = false; - - public readonly vorgangWithEingangLinkRel = VorgangWithEingangLinkRel; -} diff --git a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.html b/alfa-client/libs/forwarding/src/lib/forwarding-button-container/forwarding-button-container.component.html similarity index 51% rename from alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.html rename to alfa-client/libs/forwarding/src/lib/forwarding-button-container/forwarding-button-container.component.html index 6afe4a115c084140ff69e8b5351c1c2fd9804406..bdf8537e74921852fa7d6d5c614dacc7179b1cf4 100644 --- a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.html +++ b/alfa-client/libs/forwarding/src/lib/forwarding-button-container/forwarding-button-container.component.html @@ -1,17 +1,17 @@ @if (vorgangWithEingang | hasLink: vorgangWithEingangLinkRel.FORWARD_BY_OZGCLOUD) { @if (showAsIconButton) { - <ods-button-with-spinner + <ods-open-dialog-button [tooltip]="'Vorgang weiterleiten'" tooltipAriaType="aria-labelledby" variant="ghost" size="fit" - dataTestId="forward-by-ozgcloud-icon-button" + dataTestId="forwarding-icon-button" > <ods-forward-vorgang-icon icon class="fill-text" /> - </ods-button-with-spinner> + </ods-open-dialog-button> } @else { - <ods-button-with-spinner text="Weiterleiten" variant="outline" dataTestId="forward-by-ozgcloud-button"> - <ods-forward-vorgang-icon icon /> - </ods-button-with-spinner> + <ods-open-dialog-button label="Weiterleiten" variant="outline" dataTestId="forwarding-button"> + <ods-forward-vorgang-icon icon class="fill-primary" /> + </ods-open-dialog-button> } } diff --git a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.spec.ts b/alfa-client/libs/forwarding/src/lib/forwarding-button-container/forwarding-button-container.component.spec.ts similarity index 75% rename from alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.spec.ts rename to alfa-client/libs/forwarding/src/lib/forwarding-button-container/forwarding-button-container.component.spec.ts index 8aab319a28e6ed8a3cd49270fdd27a42e2ed09f3..64f911229dabdbf02698f7d1faddff016383be75 100644 --- a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.spec.ts +++ b/alfa-client/libs/forwarding/src/lib/forwarding-button-container/forwarding-button-container.component.spec.ts @@ -2,31 +2,31 @@ import { HasLinkPipe } from '@alfa-client/tech-shared'; import { existsAsHtmlElement, notExistsAsHtmlElement } from '@alfa-client/test-utils'; import { VorgangWithEingangLinkRel } from '@alfa-client/vorgang-shared'; import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { ButtonWithSpinnerComponent } from '@ods/component'; +import { OpenDialogButtonComponent } from '@ods/component'; import { ForwardVorgangIconComponent, TooltipDirective } from '@ods/system'; import { getDataTestIdAttributeOf } from 'libs/tech-shared/test/data-test'; import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang'; import { MockComponent, MockDirective } from 'ng-mocks'; -import { ForwardByOzgcloudButtonContainerComponent } from './forward-by-ozgcloud-button-container.component'; +import { ForwardingButtonContainerComponent } from './forwarding-button-container.component'; -describe('ForwardByOzgcloudButtonContainerComponent', () => { - let component: ForwardByOzgcloudButtonContainerComponent; - let fixture: ComponentFixture<ForwardByOzgcloudButtonContainerComponent>; +describe('ForwardingButtonContainerComponent', () => { + let component: ForwardingButtonContainerComponent; + let fixture: ComponentFixture<ForwardingButtonContainerComponent>; - const iconButton: string = getDataTestIdAttributeOf('forward-by-ozgcloud-icon-button'); - const button: string = getDataTestIdAttributeOf('forward-by-ozgcloud-button'); + const iconButton: string = getDataTestIdAttributeOf('forwarding-icon-button'); + const button: string = getDataTestIdAttributeOf('forwarding-button'); beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [ForwardByOzgcloudButtonContainerComponent, HasLinkPipe], + imports: [ForwardingButtonContainerComponent, HasLinkPipe], declarations: [ - MockComponent(ButtonWithSpinnerComponent), + MockComponent(OpenDialogButtonComponent), MockComponent(ForwardVorgangIconComponent), MockDirective(TooltipDirective), ], }).compileComponents(); - fixture = TestBed.createComponent(ForwardByOzgcloudButtonContainerComponent); + fixture = TestBed.createComponent(ForwardingButtonContainerComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-button-container/forwarding-button-container.component.ts b/alfa-client/libs/forwarding/src/lib/forwarding-button-container/forwarding-button-container.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..0f6d13f6a511dfed30763f27404380391a873e00 --- /dev/null +++ b/alfa-client/libs/forwarding/src/lib/forwarding-button-container/forwarding-button-container.component.ts @@ -0,0 +1,23 @@ +import { HasLinkPipe } from '@alfa-client/tech-shared'; +import { DIALOG_COMPONENT } from '@alfa-client/ui'; +import { VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; +import { CommonModule } from '@angular/common'; +import { Component, Input } from '@angular/core'; +import { OpenDialogButtonComponent } from '@ods/component'; +import { ForwardVorgangIconComponent, TooltipDirective } from '@ods/system'; +import { ForwardingDialogContainerComponent } from '../forwarding-dialog-container/forwarding-dialog-container.component'; + +@Component({ + selector: 'alfa-forwarding-button-container', + standalone: true, + imports: [CommonModule, ForwardVorgangIconComponent, TooltipDirective, HasLinkPipe, OpenDialogButtonComponent], + templateUrl: './forwarding-button-container.component.html', + providers: [{ provide: DIALOG_COMPONENT, useValue: ForwardingDialogContainerComponent }], + styles: [':host {@apply empty:hidden}'], +}) +export class ForwardingButtonContainerComponent { + @Input() vorgangWithEingang: VorgangWithEingangResource; + @Input() showAsIconButton: boolean = false; + + public readonly vorgangWithEingangLinkRel = VorgangWithEingangLinkRel; +} diff --git a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-container.component.html b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-container.component.html similarity index 88% rename from alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-container.component.html rename to alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-container.component.html index 2698ddc7e78cbb2a6b8c6d0a4a6bbd67806ecc85..6f6b5fecf630fc540d9be10a2ff9fa40897fef97 100644 --- a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-container.component.html +++ b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-container.component.html @@ -30,15 +30,15 @@ *ngIf="forwardingStateResources$ | async as forwardingStateResources" > <ozgcloud-spinner [stateResource]="forwardingStateResources"> - <alfa-vorgang-forwarding-info-list [forwardingList]="forwardingStateResources"></alfa-vorgang-forwarding-info-list> + <alfa-forwarding-by-email-info-list [forwardingList]="forwardingStateResources"></alfa-forwarding-by-email-info-list> </ozgcloud-spinner> - <alfa-vorgang-forward-formular + <alfa-forward-by-email-formular data-test-id="forward-formular" [vorgang]="vorgang" [pendingForwardCommand]="pendingForwardStateResource$ | async" (doSubmit)="submit()" > - </alfa-vorgang-forward-formular> + </alfa-forward-by-email-formular> </ozgcloud-expansion-panel> </ng-container> diff --git a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-formular.component.scss b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-container.component.scss similarity index 100% rename from alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-formular.component.scss rename to alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-container.component.scss diff --git a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-container.component.spec.ts b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-container.component.spec.ts similarity index 84% rename from alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-container.component.spec.ts rename to alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-container.component.spec.ts index 25691e2e369a3024d426d9a1e7a4e8976b37d228..a4dd016d064b1e6d4c377d4f37518d8f9811eb84 100644 --- a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-container.component.spec.ts +++ b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-container.component.spec.ts @@ -32,16 +32,16 @@ import { createCommandResource } from 'libs/command-shared/test/command'; import { createVorgangForwardRequest, createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang'; import { MockComponent } from 'ng-mocks'; import { of } from 'rxjs'; -import { VorgangForwardFormService } from './vorgang-forward-formular/vorgang-forward-form/vorgang-forward.formservice'; -import { VorgangForwardFormularComponent } from './vorgang-forward-formular/vorgang-forward-formular.component'; -import { VorgangForwardingContainerComponent } from './vorgang-forwarding-container.component'; -import { VorgangForwardingInfoListComponent } from './vorgang-forwarding-info-list/vorgang-forwarding-info-list.component'; +import { ForwardingByEmailContainerComponent } from './forwarding-by-email-container.component'; +import { ForwardingByEmailFormService } from './forwarding-by-email-formular/forwarding-by-email-form/forwarding-by-email-form.service'; +import { ForwardingByEmailFormularComponent } from './forwarding-by-email-formular/forwarding-by-email-formular.component'; +import { ForwardingByEmailInfoListComponent } from './forwarding-by-email-info-list/forwarding-by-email-info-list.component'; -describe('VorgangForwardingContainerComponent', () => { - let component: VorgangForwardingContainerComponent; - let fixture: ComponentFixture<VorgangForwardingContainerComponent>; +describe('ForwardingByEmailContainerComponent', () => { + let component: ForwardingByEmailContainerComponent; + let fixture: ComponentFixture<ForwardingByEmailContainerComponent>; - const formService = mock(VorgangForwardFormService); + const formService = mock(ForwardingByEmailFormService); const service = mock(ForwardingService); const forwarding: string = '[data-test-id="forwarding"]'; @@ -49,17 +49,17 @@ describe('VorgangForwardingContainerComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [ - VorgangForwardingContainerComponent, + ForwardingByEmailContainerComponent, HasLinkPipe, MockComponent(SpinnerComponent), - MockComponent(VorgangForwardingInfoListComponent), - MockComponent(VorgangForwardFormularComponent), + MockComponent(ForwardingByEmailInfoListComponent), + MockComponent(ForwardingByEmailFormularComponent), MockComponent(ExpansionPanelComponent), ], providers: [ UntypedFormBuilder, { - provide: VorgangForwardFormService, + provide: ForwardingByEmailFormService, useValue: formService, }, { @@ -71,7 +71,7 @@ describe('VorgangForwardingContainerComponent', () => { }); beforeEach(() => { - fixture = TestBed.createComponent(VorgangForwardingContainerComponent); + fixture = TestBed.createComponent(ForwardingByEmailContainerComponent); component = fixture.componentInstance; component.pendingForwardStateResource$ = of( createStateResource({ diff --git a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-container.component.ts b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-container.component.ts similarity index 84% rename from alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-container.component.ts rename to alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-container.component.ts index 9613957552ae86a387c108ecfa05f71463c8218b..f38fe66d56f971eef30db7804b5f8eea516853f1 100644 --- a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-container.component.ts +++ b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-container.component.ts @@ -29,15 +29,15 @@ import { Component, Input, OnChanges } from '@angular/core'; import { hasLink } from '@ngxp/rest'; import { CommandLinkRel } from 'libs/command-shared/src/lib/command.linkrel'; import { Observable, of } from 'rxjs'; -import { VorgangForwardFormService } from './vorgang-forward-formular/vorgang-forward-form/vorgang-forward.formservice'; +import { ForwardingByEmailFormService } from './forwarding-by-email-formular/forwarding-by-email-form/forwarding-by-email-form.service'; @Component({ - selector: 'alfa-vorgang-forwarding-container', - templateUrl: './vorgang-forwarding-container.component.html', - styleUrls: ['./vorgang-forwarding-container.component.scss'], - providers: [VorgangForwardFormService], + selector: 'alfa-forwarding-by-email-container', + templateUrl: './forwarding-by-email-container.component.html', + styleUrls: ['./forwarding-by-email-container.component.scss'], + providers: [ForwardingByEmailFormService], }) -export class VorgangForwardingContainerComponent implements OnChanges { +export class ForwardingByEmailContainerComponent implements OnChanges { @Input() public vorgang: VorgangWithEingangResource; forwardingStateResources$: Observable<StateResource<ForwardingListResource>> = @@ -48,7 +48,7 @@ export class VorgangForwardingContainerComponent implements OnChanges { readonly vorgangLinkRel = VorgangWithEingangLinkRel; constructor( - public formService: VorgangForwardFormService, + public formService: ForwardingByEmailFormService, private forwardingService: ForwardingService, ) {} diff --git a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward-form.component.html b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-form/forwarding-by-email-form.component.html similarity index 100% rename from alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward-form.component.html rename to alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-form/forwarding-by-email-form.component.html diff --git a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward-form.component.scss b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-form/forwarding-by-email-form.component.scss similarity index 100% rename from alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward-form.component.scss rename to alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-form/forwarding-by-email-form.component.scss diff --git a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward-form.component.spec.ts b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-form/forwarding-by-email-form.component.spec.ts similarity index 83% rename from alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward-form.component.spec.ts rename to alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-form/forwarding-by-email-form.component.spec.ts index d4de767de8c460d74794b21ec61a5152ee38d2c6..a7f290dba1dbce319cd3822a64c97d63ba0c2adc 100644 --- a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward-form.component.spec.ts +++ b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-form/forwarding-by-email-form.component.spec.ts @@ -32,26 +32,26 @@ import { MatInputModule } from '@angular/material/input'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang'; import { MockComponent } from 'ng-mocks'; -import { VorgangForwardFormComponent } from './vorgang-forward-form.component'; -import { VorgangForwardFormService } from './vorgang-forward.formservice'; +import { ForwardingByEmailFormComponent } from './forwarding-by-email-form.component'; +import { ForwardingByEmailFormService } from './forwarding-by-email-form.service'; -describe('VorgangForwardFormComponent', () => { - let component: VorgangForwardFormComponent; - let fixture: ComponentFixture<VorgangForwardFormComponent>; +describe('ForwardingByEmailFormComponent', () => { + let component: ForwardingByEmailFormComponent; + let fixture: ComponentFixture<ForwardingByEmailFormComponent>; const form: UntypedFormGroup = new UntypedFormGroup({ - [VorgangForwardFormService.FIELD_PASSWORD]: new UntypedFormControl(null), - [VorgangForwardFormService.FIELD_EMAIL]: new UntypedFormControl(null), + [ForwardingByEmailFormService.FIELD_PASSWORD]: new UntypedFormControl(null), + [ForwardingByEmailFormService.FIELD_EMAIL]: new UntypedFormControl(null), }); - const formService = { ...mock(VorgangForwardFormService), form }; + const formService = { ...mock(ForwardingByEmailFormService), form }; const vorgangWithEingang: VorgangWithEingangResource = createVorgangWithEingangResource(); beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [ - VorgangForwardFormComponent, + ForwardingByEmailFormComponent, MatIcon, MockComponent(OzgcloudStrokedButtonWithSpinnerComponent), MockComponent(OzgcloudTextEditorComponent), @@ -59,7 +59,7 @@ describe('VorgangForwardFormComponent', () => { imports: [MatFormFieldModule, MatInputModule, ReactiveFormsModule, BrowserAnimationsModule], providers: [ { - provide: VorgangForwardFormService, + provide: ForwardingByEmailFormService, useValue: formService, }, ], @@ -67,7 +67,7 @@ describe('VorgangForwardFormComponent', () => { }); beforeEach(() => { - fixture = TestBed.createComponent(VorgangForwardFormComponent); + fixture = TestBed.createComponent(ForwardingByEmailFormComponent); component = fixture.componentInstance; component.vorgang = vorgangWithEingang; fixture.detectChanges(); diff --git a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward-form.component.ts b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-form/forwarding-by-email-form.component.ts similarity index 78% rename from alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward-form.component.ts rename to alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-form/forwarding-by-email-form.component.ts index 202a4fe83e31c78ac708914a1ef041a3203dec2f..62056b753804b1ebc91d616df4205cd172f05485 100644 --- a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward-form.component.ts +++ b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-form/forwarding-by-email-form.component.ts @@ -21,28 +21,28 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core'; -import { UntypedFormGroup } from '@angular/forms'; import { CommandResource } from '@alfa-client/command-shared'; import { StateResource } from '@alfa-client/tech-shared'; import { VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; +import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core'; +import { UntypedFormGroup } from '@angular/forms'; import { isNil } from 'lodash-es'; -import { VorgangForwardFormService } from './vorgang-forward.formservice'; +import { ForwardingByEmailFormService } from './forwarding-by-email-form.service'; @Component({ - selector: 'alfa-vorgang-forward-form', - templateUrl: './vorgang-forward-form.component.html', - styleUrls: ['./vorgang-forward-form.component.scss'], + selector: 'alfa-forward-by-email-form', + templateUrl: './forwarding-by-email-form.component.html', + styleUrls: ['./forwarding-by-email-form.component.scss'], }) -export class VorgangForwardFormComponent implements OnChanges { +export class ForwardingByEmailFormComponent implements OnChanges { @Input() forwardStateResource: StateResource<CommandResource>; @Input() vorgang: VorgangWithEingangResource; @Output('doSubmit') submit: EventEmitter<void> = new EventEmitter(); - readonly formServiceClass = VorgangForwardFormService; + readonly formServiceClass = ForwardingByEmailFormService; - constructor(private formService: VorgangForwardFormService) {} + constructor(private formService: ForwardingByEmailFormService) {} ngOnChanges(changes: SimpleChanges) { if (changes.vorgang && this.zustaendigeStelleEmailExists()) { @@ -60,10 +60,7 @@ export class VorgangForwardFormComponent implements OnChanges { } patchEmail(): void { - this.formService.patchField( - VorgangForwardFormService.FIELD_EMAIL, - this.vorgang.eingang.zustaendigeStelle.email, - ); + this.formService.patchField(ForwardingByEmailFormService.FIELD_EMAIL, this.vorgang.eingang.zustaendigeStelle.email); } get form(): UntypedFormGroup { diff --git a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward.formservice.ts b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-form/forwarding-by-email-form.service.ts similarity index 88% rename from alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward.formservice.ts rename to alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-form/forwarding-by-email-form.service.ts index 68fc4c4a960aa2635f161a4b4413da33b7da7a7e..9cbe55ce655a5df52ab295788a8879602a7d9bb9 100644 --- a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward.formservice.ts +++ b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-form/forwarding-by-email-form.service.ts @@ -30,7 +30,7 @@ import { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angul import { Observable } from 'rxjs'; @Injectable() -export class VorgangForwardFormService extends AbstractFormService<CommandResource> { +export class ForwardingByEmailFormService extends AbstractFormService<CommandResource> { static readonly FIELD_PATH_PREFIX = 'command.redirectRequest'; static readonly FIELD_EMAIL = 'email'; @@ -47,13 +47,13 @@ export class VorgangForwardFormService extends AbstractFormService<CommandResour protected initForm(): UntypedFormGroup { return this.formBuilder.group({ - [VorgangForwardFormService.FIELD_EMAIL]: new UntypedFormControl(), - [VorgangForwardFormService.FIELD_PASSWORD]: new UntypedFormControl(), + [ForwardingByEmailFormService.FIELD_EMAIL]: new UntypedFormControl(), + [ForwardingByEmailFormService.FIELD_PASSWORD]: new UntypedFormControl(), }); } protected getPathPrefix(): string { - return VorgangForwardFormService.FIELD_PATH_PREFIX; + return ForwardingByEmailFormService.FIELD_PATH_PREFIX; } public setVorgang(vorgang: VorgangResource): void { diff --git a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward.formservice.spec.ts b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-form/forwarding-by-email.formservice.spec.ts similarity index 89% rename from alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward.formservice.spec.ts rename to alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-form/forwarding-by-email.formservice.spec.ts index bdf61274a7de5bee95e7f4192ec724b109bf6735..a20bed0488696ecb79c97108a03d0c2b5f1a36f8 100644 --- a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward.formservice.spec.ts +++ b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-form/forwarding-by-email.formservice.spec.ts @@ -21,15 +21,15 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms'; import { ForwardingService } from '@alfa-client/forwarding-shared'; import { mock, useFromMock } from '@alfa-client/test-utils'; +import { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms'; import { createVorgangResource } from 'libs/vorgang-shared/test/vorgang'; import { of } from 'rxjs'; -import { VorgangForwardFormService } from './vorgang-forward.formservice'; +import { ForwardingByEmailFormService } from './forwarding-by-email-form.service'; -describe('VorgangForwardFormService', () => { - let formService: VorgangForwardFormService; +describe('ForwardingByEmailFormService', () => { + let formService: ForwardingByEmailFormService; let service; const formBuilder: UntypedFormBuilder = new UntypedFormBuilder(); @@ -37,7 +37,7 @@ describe('VorgangForwardFormService', () => { beforeEach(() => { service = mock(ForwardingService); - formService = new VorgangForwardFormService(formBuilder, useFromMock(service)); + formService = new ForwardingByEmailFormService(formBuilder, useFromMock(service)); }); it('should create', () => { diff --git a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-formular.component.html b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-formular.component.html similarity index 95% rename from alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-formular.component.html rename to alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-formular.component.html index 62c2a5d4b5f9c70f8366791911cee5e02db1bf58..b3729e2b1a5da9a17c16b456c0d826c940816aeb 100644 --- a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-formular.component.html +++ b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-formular.component.html @@ -32,11 +32,11 @@ > </ozgcloud-spinner> -<alfa-vorgang-forward-form +<alfa-forward-by-email-form *ngIf="vorgang | hasLink: vorgangLinkRel.FORWARD" data-test-id="forward-form" [vorgang]="vorgang" [forwardStateResource]="pendingForwardCommand" (doSubmit)="submit.emit()" > -</alfa-vorgang-forward-form> +</alfa-forward-by-email-form> diff --git a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-container.component.scss b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-formular.component.scss similarity index 100% rename from alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-container.component.scss rename to alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-formular.component.scss diff --git a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-formular.component.spec.ts b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-formular.component.spec.ts similarity index 81% rename from alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-formular.component.spec.ts rename to alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-formular.component.spec.ts index 1ae6e68ebdc117a55bab652ed62496bb3f00699d..cd26ff87ee2eb7cbec85b974db3aa23cc77f206c 100644 --- a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-formular.component.spec.ts +++ b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-formular.component.spec.ts @@ -21,34 +21,34 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { ComponentFixture, TestBed } from '@angular/core/testing'; import { createEmptyStateResource, HasLinkPipe } from '@alfa-client/tech-shared'; import { SpinnerComponent } from '@alfa-client/ui'; import { VorgangWithEingangLinkRel } from '@alfa-client/vorgang-shared'; +import { ComponentFixture, TestBed } from '@angular/core/testing'; import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang'; import { MockComponent } from 'ng-mocks'; -import { VorgangForwardFormComponent } from './vorgang-forward-form/vorgang-forward-form.component'; -import { VorgangForwardFormularComponent } from './vorgang-forward-formular.component'; +import { ForwardingByEmailFormComponent } from './forwarding-by-email-form/forwarding-by-email-form.component'; +import { ForwardingByEmailFormularComponent } from './forwarding-by-email-formular.component'; -describe('VorgangForwardFormularComponent', () => { - let component: VorgangForwardFormularComponent; - let fixture: ComponentFixture<VorgangForwardFormularComponent>; +describe('ForwardingByEmailFormularComponent', () => { + let component: ForwardingByEmailFormularComponent; + let fixture: ComponentFixture<ForwardingByEmailFormularComponent>; const forwardFormular: string = '[data-test-id="forward-form"]'; beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [ - VorgangForwardFormularComponent, + ForwardingByEmailFormularComponent, HasLinkPipe, MockComponent(SpinnerComponent), - MockComponent(VorgangForwardFormComponent), + MockComponent(ForwardingByEmailFormComponent), ], }); }); beforeEach(() => { - fixture = TestBed.createComponent(VorgangForwardFormularComponent); + fixture = TestBed.createComponent(ForwardingByEmailFormularComponent); component = fixture.componentInstance; component.pendingForwardCommand = createEmptyStateResource(); fixture.detectChanges(); diff --git a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-formular.component.ts b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-formular.component.ts similarity index 88% rename from alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-formular.component.ts rename to alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-formular.component.ts index 087ef0833ec89bdfd4a94cf766afde315b3fb838..90359c37ba60ac4ed31c983af4203cf476341cfc 100644 --- a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-formular.component.ts +++ b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-formular.component.ts @@ -21,18 +21,18 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { Component, EventEmitter, Input, Output } from '@angular/core'; import { CommandResource } from '@alfa-client/command-shared'; import { StateResource } from '@alfa-client/tech-shared'; import { VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; +import { Component, EventEmitter, Input, Output } from '@angular/core'; import { CommandLinkRel } from 'libs/command-shared/src/lib/command.linkrel'; @Component({ - selector: 'alfa-vorgang-forward-formular', - templateUrl: './vorgang-forward-formular.component.html', - styleUrls: ['./vorgang-forward-formular.component.scss'], + selector: 'alfa-forward-by-email-formular', + templateUrl: './forwarding-by-email-formular.component.html', + styleUrls: ['./forwarding-by-email-formular.component.scss'], }) -export class VorgangForwardFormularComponent { +export class ForwardingByEmailFormularComponent { @Input() public vorgang: VorgangWithEingangResource; @Input() public pendingForwardCommand: StateResource<CommandResource>; diff --git a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-info-list/vorgang-forwarding-info-list.component.html b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-info-list/forwarding-by-email-info-list.component.html similarity index 94% rename from alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-info-list/vorgang-forwarding-info-list.component.html rename to alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-info-list/forwarding-by-email-info-list.component.html index a358b03574297c36505a0f6456632bd50124a8ed..cdaf3279726e35aadd126f4565d36ca8a165026f 100644 --- a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-info-list/vorgang-forwarding-info-list.component.html +++ b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-info-list/forwarding-by-email-info-list.component.html @@ -23,10 +23,10 @@ unter der Lizenz sind dem Lizenztext zu entnehmen. --> -<alfa-vorgang-forwarding-info +<alfa-forwarding-by-email-info *ngFor=" let forwarding of forwardingList.resource | toEmbeddedResources: listLinkRel.FORWARDING_LIST " [forwarding]="forwarding" > -</alfa-vorgang-forwarding-info> +</alfa-forwarding-by-email-info> diff --git a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-info-list/vorgang-forwarding-info-list.component.scss b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-info-list/forwarding-by-email-info-list.component.scss similarity index 100% rename from alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-info-list/vorgang-forwarding-info-list.component.scss rename to alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-info-list/forwarding-by-email-info-list.component.scss diff --git a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-info-list/vorgang-forwarding-info-list.component.spec.ts b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-info-list/forwarding-by-email-info-list.component.spec.ts similarity index 72% rename from alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-info-list/vorgang-forwarding-info-list.component.spec.ts rename to alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-info-list/forwarding-by-email-info-list.component.spec.ts index fcb17963b66bc13d7ca9204a20b46eb3c4dcdb0e..d4bd32a97b8b36df4c1bf911ce9a4e01a9d976a7 100644 --- a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-info-list/vorgang-forwarding-info-list.component.spec.ts +++ b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-info-list/forwarding-by-email-info-list.component.spec.ts @@ -21,29 +21,25 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { ComponentFixture, TestBed } from '@angular/core/testing'; import { createStateResource, ToEmbeddedResourcesPipe } from '@alfa-client/tech-shared'; +import { ComponentFixture, TestBed } from '@angular/core/testing'; import { createCommandListResource } from 'libs/command-shared/test/command'; import { MockComponent } from 'ng-mocks'; -import { VorgangForwardingInfoListComponent } from './vorgang-forwarding-info-list.component'; -import { VorgangForwardingInfoComponent } from './vorgang-forwarding-info/vorgang-forwarding-info.component'; +import { ForwardingByEmailInfoListComponent } from './forwarding-by-email-info-list.component'; +import { ForwardingByEmailInfoComponent } from './forwarding-by-email-info/forwarding-by-email-info.component'; -describe('VorgangForwardingInfoListComponent', () => { - let component: VorgangForwardingInfoListComponent; - let fixture: ComponentFixture<VorgangForwardingInfoListComponent>; +describe('ForwardingByEmailInfoListComponent', () => { + let component: ForwardingByEmailInfoListComponent; + let fixture: ComponentFixture<ForwardingByEmailInfoListComponent>; beforeEach(async () => { await TestBed.configureTestingModule({ - declarations: [ - VorgangForwardingInfoListComponent, - MockComponent(VorgangForwardingInfoComponent), - ToEmbeddedResourcesPipe, - ], + declarations: [ForwardingByEmailInfoListComponent, MockComponent(ForwardingByEmailInfoComponent), ToEmbeddedResourcesPipe], }).compileComponents(); }); beforeEach(() => { - fixture = TestBed.createComponent(VorgangForwardingInfoListComponent); + fixture = TestBed.createComponent(ForwardingByEmailInfoListComponent); component = fixture.componentInstance; component.forwardingList = createStateResource(createCommandListResource()); fixture.detectChanges(); diff --git a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-info-list/vorgang-forwarding-info-list.component.ts b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-info-list/forwarding-by-email-info-list.component.ts similarity index 85% rename from alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-info-list/vorgang-forwarding-info-list.component.ts rename to alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-info-list/forwarding-by-email-info-list.component.ts index 23c57cf9b93914849174a9550dbdc4ba5623f397..8cc5127425be7951f0105fe614745324f50344ce 100644 --- a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-info-list/vorgang-forwarding-info-list.component.ts +++ b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-info-list/forwarding-by-email-info-list.component.ts @@ -21,17 +21,17 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { Component, Input } from '@angular/core'; import { CommandListResource } from '@alfa-client/command-shared'; import { ForwardingListLinkRel } from '@alfa-client/forwarding-shared'; import { StateResource } from '@alfa-client/tech-shared'; +import { Component, Input } from '@angular/core'; @Component({ - selector: 'alfa-vorgang-forwarding-info-list', - templateUrl: './vorgang-forwarding-info-list.component.html', - styleUrls: ['./vorgang-forwarding-info-list.component.scss'], + selector: 'alfa-forwarding-by-email-info-list', + templateUrl: './forwarding-by-email-info-list.component.html', + styleUrls: ['./forwarding-by-email-info-list.component.scss'], }) -export class VorgangForwardingInfoListComponent { +export class ForwardingByEmailInfoListComponent { @Input() public forwardingList: StateResource<CommandListResource>; readonly listLinkRel = ForwardingListLinkRel; diff --git a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-info-list/vorgang-forwarding-info/vorgang-forwarding-info.component.html b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-info-list/forwarding-by-email-info/forwarding-by-email-info.component.html similarity index 95% rename from alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-info-list/vorgang-forwarding-info/vorgang-forwarding-info.component.html rename to alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-info-list/forwarding-by-email-info/forwarding-by-email-info.component.html index e3fe65cb08140c7190e6c96f943895c744e00da0..add689836951a6d770d92fc47547d2eea730077e 100644 --- a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-info-list/vorgang-forwarding-info/vorgang-forwarding-info.component.html +++ b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-info-list/forwarding-by-email-info/forwarding-by-email-info.component.html @@ -42,7 +42,7 @@ Versendet am {{ forwarding.sentAt | formatDateWithTimePipe }} </p> - <alfa-vorgang-forward-zustellen-container + <alfa-forward-by-email-zustellen-container [forwarding]="forwarding" - ></alfa-vorgang-forward-zustellen-container> + ></alfa-forward-by-email-zustellen-container> </ng-template> diff --git a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-info-list/vorgang-forwarding-info/vorgang-forwarding-info.component.scss b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-info-list/forwarding-by-email-info/forwarding-by-email-info.component.scss similarity index 100% rename from alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-info-list/vorgang-forwarding-info/vorgang-forwarding-info.component.scss rename to alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-info-list/forwarding-by-email-info/forwarding-by-email-info.component.scss diff --git a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-info-list/vorgang-forwarding-info/vorgang-forwarding-info.component.spec.ts b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-info-list/forwarding-by-email-info/forwarding-by-email-info.component.spec.ts similarity index 86% rename from alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-info-list/vorgang-forwarding-info/vorgang-forwarding-info.component.spec.ts rename to alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-info-list/forwarding-by-email-info/forwarding-by-email-info.component.spec.ts index 12b90483aed9a47eed13c6aa1cd7eff4d3828059..c42367bfa51ab3181cdfe38ea817f9d92ec1d8fb 100644 --- a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-info-list/vorgang-forwarding-info/vorgang-forwarding-info.component.spec.ts +++ b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-info-list/forwarding-by-email-info/forwarding-by-email-info.component.spec.ts @@ -21,6 +21,8 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ +import { ForwardingLinkRel } from '@alfa-client/forwarding-shared'; +import { FormatDateWithTimePipe, HasLinkPipe } from '@alfa-client/tech-shared'; import { registerLocaleData } from '@angular/common'; import localeDe from '@angular/common/locales/de'; import localeDeExtra from '@angular/common/locales/extra/de'; @@ -28,18 +30,16 @@ import { LOCALE_ID } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { MAT_DATE_LOCALE } from '@angular/material/core'; import { MatIcon } from '@angular/material/icon'; -import { ForwardingLinkRel } from '@alfa-client/forwarding-shared'; -import { FormatDateWithTimePipe, HasLinkPipe } from '@alfa-client/tech-shared'; import { createForwardingResource } from 'libs/forwarding-shared/test/forwarding'; import { MockComponent } from 'ng-mocks'; -import { VorgangForwardZustellenContainerComponent } from '../../../vorgang-forwarding-zustellen-container/vorgang-forward-zustellen-container.component'; -import { VorgangForwardingInfoComponent } from './vorgang-forwarding-info.component'; +import { ForwardingByEmailZustellenContainerComponent } from '../../../forwarding-by-email-zustellen-container/forwarding-by-email-zustellen-container.component'; +import { ForwardingByEmailInfoComponent } from './forwarding-by-email-info.component'; registerLocaleData(localeDe, 'de', localeDeExtra); -describe('VorgangForwardingInfoComponent', () => { - let component: VorgangForwardingInfoComponent; - let fixture: ComponentFixture<VorgangForwardingInfoComponent>; +describe('ForwardingByEmailInfoComponent', () => { + let component: ForwardingByEmailInfoComponent; + let fixture: ComponentFixture<ForwardingByEmailInfoComponent>; const errorMessage: string = '[data-test-id="forwarding-error-message"]'; const successMessage: string = '[data-test-id="forwarding-success-message"]'; @@ -47,11 +47,11 @@ describe('VorgangForwardingInfoComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [ - VorgangForwardingInfoComponent, + ForwardingByEmailInfoComponent, FormatDateWithTimePipe, MatIcon, HasLinkPipe, - MockComponent(VorgangForwardZustellenContainerComponent), + MockComponent(ForwardingByEmailZustellenContainerComponent), ], providers: [ { provide: LOCALE_ID, useValue: 'de' }, @@ -61,7 +61,7 @@ describe('VorgangForwardingInfoComponent', () => { }); beforeEach(() => { - fixture = TestBed.createComponent(VorgangForwardingInfoComponent); + fixture = TestBed.createComponent(ForwardingByEmailInfoComponent); component = fixture.componentInstance; component.forwarding = createForwardingResource(); fixture.detectChanges(); diff --git a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-info-list/vorgang-forwarding-info/vorgang-forwarding-info.component.ts b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-info-list/forwarding-by-email-info/forwarding-by-email-info.component.ts similarity index 85% rename from alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-info-list/vorgang-forwarding-info/vorgang-forwarding-info.component.ts rename to alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-info-list/forwarding-by-email-info/forwarding-by-email-info.component.ts index 3f4948987d118ab454fb65a25988fe5d1327e3e8..7c5490bb38db212d873a50ca4ead6f4eb93e338f 100644 --- a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-info-list/vorgang-forwarding-info/vorgang-forwarding-info.component.ts +++ b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-info-list/forwarding-by-email-info/forwarding-by-email-info.component.ts @@ -21,15 +21,15 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { Component, Input } from '@angular/core'; import { ForwardingLinkRel, ForwardingResource } from '@alfa-client/forwarding-shared'; +import { Component, Input } from '@angular/core'; @Component({ - selector: 'alfa-vorgang-forwarding-info', - templateUrl: './vorgang-forwarding-info.component.html', - styleUrls: ['./vorgang-forwarding-info.component.scss'], + selector: 'alfa-forwarding-by-email-info', + templateUrl: './forwarding-by-email-info.component.html', + styleUrls: ['./forwarding-by-email-info.component.scss'], }) -export class VorgangForwardingInfoComponent { +export class ForwardingByEmailInfoComponent { @Input() public forwarding: ForwardingResource; readonly linkRel = ForwardingLinkRel; diff --git a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-zustellen-container/vorgang-forward-zustellen-container.component.html b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-zustellen-container/forwarding-by-email-zustellen-container.component.html similarity index 100% rename from alfa-client/libs/forwarding/src/lib/vorgang-forwarding-zustellen-container/vorgang-forward-zustellen-container.component.html rename to alfa-client/libs/forwarding/src/lib/forwarding-by-email-zustellen-container/forwarding-by-email-zustellen-container.component.html diff --git a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-zustellen-container/vorgang-forward-zustellen-container.component.scss b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-zustellen-container/forwarding-by-email-zustellen-container.component.scss similarity index 100% rename from alfa-client/libs/forwarding/src/lib/vorgang-forwarding-zustellen-container/vorgang-forward-zustellen-container.component.scss rename to alfa-client/libs/forwarding/src/lib/forwarding-by-email-zustellen-container/forwarding-by-email-zustellen-container.component.scss diff --git a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-zustellen-container/vorgang-forward-zustellen-container.component.spec.ts b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-zustellen-container/forwarding-by-email-zustellen-container.component.spec.ts similarity index 89% rename from alfa-client/libs/forwarding/src/lib/vorgang-forwarding-zustellen-container/vorgang-forward-zustellen-container.component.spec.ts rename to alfa-client/libs/forwarding/src/lib/forwarding-by-email-zustellen-container/forwarding-by-email-zustellen-container.component.spec.ts index 46602865bee94117dd136e994133029c41001d07..e28f66a088a6dff1fb47b02c4423fcad0ef3b042 100644 --- a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-zustellen-container/vorgang-forward-zustellen-container.component.spec.ts +++ b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-zustellen-container/forwarding-by-email-zustellen-container.component.spec.ts @@ -21,23 +21,19 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { MatIcon } from '@angular/material/icon'; -import { - ForwardingLinkRel, - ForwardingResource, - ForwardingService, -} from '@alfa-client/forwarding-shared'; +import { ForwardingLinkRel, ForwardingResource, ForwardingService } from '@alfa-client/forwarding-shared'; import { HasLinkPipe } from '@alfa-client/tech-shared'; import { mock } from '@alfa-client/test-utils'; import { OzgcloudStrokedButtonWithSpinnerComponent } from '@alfa-client/ui'; +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { MatIcon } from '@angular/material/icon'; import { createForwardingResource } from 'libs/forwarding-shared/test/forwarding'; import { MockComponent } from 'ng-mocks'; -import { VorgangForwardZustellenContainerComponent } from './vorgang-forward-zustellen-container.component'; +import { ForwardingByEmailZustellenContainerComponent } from './forwarding-by-email-zustellen-container.component'; -describe('VorgangForwardZustellenContainerComponent', () => { - let component: VorgangForwardZustellenContainerComponent; - let fixture: ComponentFixture<VorgangForwardZustellenContainerComponent>; +describe('ForwardingByEmailZustellenContainerComponent', () => { + let component: ForwardingByEmailZustellenContainerComponent; + let fixture: ComponentFixture<ForwardingByEmailZustellenContainerComponent>; const forwarding: ForwardingResource = createForwardingResource(); @@ -53,7 +49,7 @@ describe('VorgangForwardZustellenContainerComponent', () => { await TestBed.configureTestingModule({ declarations: [ HasLinkPipe, - VorgangForwardZustellenContainerComponent, + ForwardingByEmailZustellenContainerComponent, MatIcon, MockComponent(OzgcloudStrokedButtonWithSpinnerComponent), ], @@ -67,7 +63,7 @@ describe('VorgangForwardZustellenContainerComponent', () => { }); beforeEach(() => { - fixture = TestBed.createComponent(VorgangForwardZustellenContainerComponent); + fixture = TestBed.createComponent(ForwardingByEmailZustellenContainerComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-zustellen-container/vorgang-forward-zustellen-container.component.ts b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-zustellen-container/forwarding-by-email-zustellen-container.component.ts similarity index 76% rename from alfa-client/libs/forwarding/src/lib/vorgang-forwarding-zustellen-container/vorgang-forward-zustellen-container.component.ts rename to alfa-client/libs/forwarding/src/lib/forwarding-by-email-zustellen-container/forwarding-by-email-zustellen-container.component.ts index c7aebc99014825288f365709d57b693823d7fe3a..e4d6c197b9ec5eb09cbfd20a8cbcb9df7ca6d14a 100644 --- a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-zustellen-container/vorgang-forward-zustellen-container.component.ts +++ b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-zustellen-container/forwarding-by-email-zustellen-container.component.ts @@ -21,30 +21,24 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { Component, Input } from '@angular/core'; import { CommandResource } from '@alfa-client/command-shared'; -import { - ForwardingLinkRel, - ForwardingResource, - ForwardingService, -} from '@alfa-client/forwarding-shared'; +import { ForwardingLinkRel, ForwardingResource, ForwardingService } from '@alfa-client/forwarding-shared'; import { createEmptyStateResource, StateResource } from '@alfa-client/tech-shared'; +import { Component, Input } from '@angular/core'; import { Observable, of } from 'rxjs'; @Component({ - selector: 'alfa-vorgang-forward-zustellen-container', - templateUrl: './vorgang-forward-zustellen-container.component.html', - styleUrls: ['./vorgang-forward-zustellen-container.component.scss'], + selector: 'alfa-forward-by-email-zustellen-container', + templateUrl: './forwarding-by-email-zustellen-container.component.html', + styleUrls: ['./forwarding-by-email-zustellen-container.component.scss'], }) -export class VorgangForwardZustellenContainerComponent { +export class ForwardingByEmailZustellenContainerComponent { @Input() forwarding: ForwardingResource; - public markAsSuccessCommandStateResource$: Observable<StateResource<CommandResource>> = of( - createEmptyStateResource<CommandResource>(), - ); - public markAsFailCommandStateResource$: Observable<StateResource<CommandResource>> = of( - createEmptyStateResource<CommandResource>(), - ); + public markAsSuccessCommandStateResource$: Observable<StateResource<CommandResource>> = + of(createEmptyStateResource<CommandResource>()); + public markAsFailCommandStateResource$: Observable<StateResource<CommandResource>> = + of(createEmptyStateResource<CommandResource>()); readonly linkRel = ForwardingLinkRel; diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog-container.component.html b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog-container.component.html new file mode 100644 index 0000000000000000000000000000000000000000..ad97972cd9cc4c7e7f135d96b2b755378f953b3e --- /dev/null +++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog-container.component.html @@ -0,0 +1 @@ +<alfa-forwarding-dialog [selectedSearchResult]="selectedSearchResult$ | async" data-test-id="forwarding-dialog"/> \ No newline at end of file diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog-container.component.spec.ts b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog-container.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..355c614cc694333be2f34a629eac5ad5b527035e --- /dev/null +++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog-container.component.spec.ts @@ -0,0 +1,43 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { mock, Mock } from '@alfa-client/test-utils'; +import { OrganisationsEinheitService, ZUSTAENDIGE_STELLE_SERVICE } from '@alfa-client/zustaendige-stelle-shared'; +import { AsyncPipe } from '@angular/common'; +import { MockComponent } from 'ng-mocks'; +import { ForwardingDialogContainerComponent } from './forwarding-dialog-container.component'; +import { ForwardingDialogComponent } from './forwarding-dialog/forwarding-dialog.component'; + +describe('ForwardingDialogContainerComponent', () => { + let component: ForwardingDialogContainerComponent; + let fixture: ComponentFixture<ForwardingDialogContainerComponent>; + + let organisationsEinheitService: Mock<OrganisationsEinheitService>; + + beforeEach(async () => { + organisationsEinheitService = mock(OrganisationsEinheitService); + + await TestBed.configureTestingModule({ + imports: [ForwardingDialogContainerComponent, AsyncPipe], + declarations: [MockComponent(ForwardingDialogComponent)], + }) + .overrideComponent(ForwardingDialogContainerComponent, { + set: { + providers: [ + { + provide: ZUSTAENDIGE_STELLE_SERVICE, + useValue: organisationsEinheitService, + }, + ], + }, + }) + .compileComponents(); + + fixture = TestBed.createComponent(ForwardingDialogContainerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog-container.component.ts b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog-container.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..afb2a3d5a97213615dcc22a98195e82fd916ed50 --- /dev/null +++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog-container.component.ts @@ -0,0 +1,35 @@ +import { ResourceRepository } from '@alfa-client/tech-shared'; +import { VorgangService } from '@alfa-client/vorgang-shared'; +import { createOrganisationEinheitService } from '@alfa-client/zustaendige-stelle'; +import { + OrganisationsEinheitResource, + OrganisationsEinheitService, + ZUSTAENDIGE_STELLE_SERVICE, +} from '@alfa-client/zustaendige-stelle-shared'; +import { AsyncPipe } from '@angular/common'; +import { Component, inject, OnInit } from '@angular/core'; +import { Observable } from 'rxjs'; +import { ForwardingDialogComponent } from './forwarding-dialog/forwarding-dialog.component'; + +@Component({ + selector: 'alfa-forwarding-dialog-container', + standalone: true, + imports: [ForwardingDialogComponent, AsyncPipe], + templateUrl: './forwarding-dialog-container.component.html', + providers: [ + { + provide: ZUSTAENDIGE_STELLE_SERVICE, + useFactory: createOrganisationEinheitService, + deps: [ResourceRepository, VorgangService], + }, + ], +}) +export class ForwardingDialogContainerComponent implements OnInit { + private readonly organisationsEinheitService = inject(ZUSTAENDIGE_STELLE_SERVICE) as OrganisationsEinheitService; + + public selectedSearchResult$: Observable<OrganisationsEinheitResource>; + + ngOnInit(): void { + this.selectedSearchResult$ = this.organisationsEinheitService.getSelectedResult(); + } +} diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-button/forwarding-button.component.html b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-button/forwarding-button.component.html new file mode 100644 index 0000000000000000000000000000000000000000..d0dd3c9c055bfc74030ddd0a0c19ddacafa8976b --- /dev/null +++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-button/forwarding-button.component.html @@ -0,0 +1,3 @@ +<ods-button-with-spinner [disabled]="disabled" text="Weiterleiten" variant="outline" dataTestId="forwarding-button"> + <ods-forward-vorgang-icon icon class="fill-primary" /> +</ods-button-with-spinner> \ No newline at end of file diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-button/forwarding-button.component.spec.ts b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-button/forwarding-button.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..ec3ee8288b888a029f6de545b97636ec3c5aae5d --- /dev/null +++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-button/forwarding-button.component.spec.ts @@ -0,0 +1,26 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ButtonWithSpinnerComponent } from '@ods/component'; +import { ForwardVorgangIconComponent } from '@ods/system'; +import { MockComponent } from 'ng-mocks'; +import { ForwardingButtonComponent } from './forwarding-button.component'; + +describe('ForwardingButtonComponent', () => { + let component: ForwardingButtonComponent; + let fixture: ComponentFixture<ForwardingButtonComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ForwardingButtonComponent], + declarations: [MockComponent(ForwardVorgangIconComponent), MockComponent(ButtonWithSpinnerComponent)], + }).compileComponents(); + + fixture = TestBed.createComponent(ForwardingButtonComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-button/forwarding-button.component.ts b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-button/forwarding-button.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..63fec70d17fb549ab13163155fe3ca596446209a --- /dev/null +++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-button/forwarding-button.component.ts @@ -0,0 +1,13 @@ +import { Component, Input } from '@angular/core'; +import { ButtonWithSpinnerComponent } from '@ods/component'; +import { ForwardVorgangIconComponent } from '@ods/system'; + +@Component({ + selector: 'alfa-forwarding-button', + standalone: true, + imports: [ButtonWithSpinnerComponent, ForwardVorgangIconComponent], + templateUrl: './forwarding-button.component.html', +}) +export class ForwardingButtonComponent { + @Input() disabled: boolean; +} 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 new file mode 100644 index 0000000000000000000000000000000000000000..3d60550c444dcbc34d9f229e91c1133e6a5af9ac --- /dev/null +++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.html @@ -0,0 +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" > + <h1 class="text-xl font-semibold text-primary">Vorgang weiterleiten</h1> + <ods-cancel-dialog-button showAsIconButton="true" /> + </div> + + @if (!selectedSearchResult) { + <alfa-search-zustaendige-stelle-form-container cdkFocusInitial focusOnSearchField="true" data-test-id="zufi-search" /> + } @else { + <alfa-forwarding-item-in-dialog + [organisationsEinheitResource]="selectedSearchResult" + data-test-id="forwarding-item" + /> + } + + <div class="flex gap-4"> + <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 new file mode 100644 index 0000000000000000000000000000000000000000..6d4454c8e37a0bde91a410aeacf6df07087973f6 --- /dev/null +++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.spec.ts @@ -0,0 +1,106 @@ +import { existsAsHtmlElement, getMockComponent, notExistsAsHtmlElement } from '@alfa-client/test-utils'; +import { ZustaendigeStelleModule } from '@alfa-client/zustaendige-stelle'; +import { OrganisationsEinheitResource } from '@alfa-client/zustaendige-stelle-shared'; +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { CancelDialogButtonComponent } from '@ods/component'; +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 { ForwardingItemInDialogComponent } from './forwarding-item/forwarding-item.component'; +import { ForwardingDialogComponent } from './forwarding-dialog.component'; + +describe('ForwardingDialogComponent', () => { + let component: ForwardingDialogComponent; + let fixture: ComponentFixture<ForwardingDialogComponent>; + + const zufiSearch: string = getDataTestIdOf('zufi-search'); + const forwardingItem: string = getDataTestIdOf('forwarding-item'); + + const organisationsEinheitResource: OrganisationsEinheitResource = createOrganisationsEinheitResource(); + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ForwardingDialogComponent], + declarations: [ + MockComponent(CancelDialogButtonComponent), + MockComponent(ForwardingButtonComponent), + MockComponent(ForwardingItemInDialogComponent), + MockModule(ZustaendigeStelleModule), + ], + }).compileComponents(); + + fixture = TestBed.createComponent(ForwardingDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); + + describe('template', () => { + describe('zufi search', () => { + it('should render if selectedSearchResult is null', () => { + component.selectedSearchResult = null; + + fixture.detectChanges(); + + existsAsHtmlElement(fixture, zufiSearch); + }); + + it('should NOT render if selectedSearchResult is NOT null', () => { + component.selectedSearchResult = organisationsEinheitResource; + + fixture.detectChanges(); + + notExistsAsHtmlElement(fixture, zufiSearch); + }); + }); + }); + + it('should render zufi search if selectedSearchResult is null', () => { + component.selectedSearchResult = null; + + fixture.detectChanges(); + }); + + describe('template', () => { + describe('forwarding item', () => { + it('should render if selectedSearchResult is NOT null', () => { + component.selectedSearchResult = organisationsEinheitResource; + + fixture.detectChanges(); + + existsAsHtmlElement(fixture, forwardingItem); + }); + + it('should NOT render if selectedSearchResult is null', () => { + component.selectedSearchResult = null; + + fixture.detectChanges(); + + notExistsAsHtmlElement(fixture, forwardingItem); + }); + }); + }); + + describe('forwarding button', () => { + it('should be disabled if selectedSearchResult is null', () => { + component.selectedSearchResult = null; + + fixture.detectChanges(); + + const forwardingButton: ForwardingButtonComponent = getMockComponent(fixture, ForwardingButtonComponent); + expect(forwardingButton.disabled).toBeTruthy(); + }); + + it('should NOT be disabled if selectedSearchResult is NOT null', () => { + component.selectedSearchResult = organisationsEinheitResource; + + fixture.detectChanges(); + + const forwardingButton: ForwardingButtonComponent = getMockComponent(fixture, ForwardingButtonComponent); + expect(forwardingButton.disabled).toBeFalsy(); + }); + }); +}); 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 new file mode 100644 index 0000000000000000000000000000000000000000..c1695f42a08728b6921b6813694fad2ffb5440fe --- /dev/null +++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.ts @@ -0,0 +1,25 @@ +import { ZustaendigeStelleModule } from '@alfa-client/zustaendige-stelle'; +import { OrganisationsEinheitResource } from '@alfa-client/zustaendige-stelle-shared'; +import { A11yModule } from '@angular/cdk/a11y'; +import { Component, Input } from '@angular/core'; +import { ReactiveFormsModule } from '@angular/forms'; +import { CancelDialogButtonComponent } from '@ods/component'; +import { ForwardingButtonComponent } from './forwarding-button/forwarding-button.component'; +import { ForwardingItemInDialogComponent } from './forwarding-item/forwarding-item.component'; + +@Component({ + selector: 'alfa-forwarding-dialog', + standalone: true, + imports: [ + A11yModule, + CancelDialogButtonComponent, + ReactiveFormsModule, + ZustaendigeStelleModule, + ForwardingButtonComponent, + ForwardingItemInDialogComponent, + ], + templateUrl: './forwarding-dialog.component.html', +}) +export class ForwardingDialogComponent { + @Input() selectedSearchResult: OrganisationsEinheitResource; +} diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-item/forwarding-item-change-button-container/forwarding-item-change-button-container.component.html b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-item/forwarding-item-change-button-container/forwarding-item-change-button-container.component.html new file mode 100644 index 0000000000000000000000000000000000000000..bd825b7ca43ad8dbb31580050274303e9bd26333 --- /dev/null +++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-item/forwarding-item-change-button-container/forwarding-item-change-button-container.component.html @@ -0,0 +1,7 @@ +<ods-button + (clickEmitter)="onClick()" + text="Ändern" + variant="outline" + dataTestId="forwarding-item-change-button" + data-test-id="forwarding-item-change-button-container" +/> diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-item/forwarding-item-change-button-container/forwarding-item-change-button-container.component.spec.ts b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-item/forwarding-item-change-button-container/forwarding-item-change-button-container.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..49e50eaa845262e74914cd7f4717c66e549ca924 --- /dev/null +++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-item/forwarding-item-change-button-container/forwarding-item-change-button-container.component.spec.ts @@ -0,0 +1,53 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { dispatchEventFromFixture, mock, Mock, MockEvent } from '@alfa-client/test-utils'; +import { OrganisationsEinheitService, ZUSTAENDIGE_STELLE_SERVICE } from '@alfa-client/zustaendige-stelle-shared'; +import { ButtonComponent } from '@ods/system'; +import { MockComponent } from 'ng-mocks'; +import { getDataTestIdOf } from '../../../../../../../tech-shared/test/data-test'; +import { ForwardingItemChangeButtonContainerComponent } from './forwarding-item-change-button-container.component'; + +describe('ForwardingItemChangeButtonContainerComponent', () => { + let component: ForwardingItemChangeButtonContainerComponent; + let fixture: ComponentFixture<ForwardingItemChangeButtonContainerComponent>; + + const buttonContainer: string = getDataTestIdOf('forwarding-item-change-button-container'); + + let service: Mock<OrganisationsEinheitService>; + + beforeEach(() => { + service = mock(OrganisationsEinheitService); + + TestBed.configureTestingModule({ + imports: [ForwardingItemChangeButtonContainerComponent], + declarations: [MockComponent(ButtonComponent)], + providers: [{ provide: ZUSTAENDIGE_STELLE_SERVICE, useValue: service }], + }).compileComponents(); + + fixture = TestBed.createComponent(ForwardingItemChangeButtonContainerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); + + describe('button', () => { + it('should call onClick on button click', () => { + component.onClick = jest.fn(); + + dispatchEventFromFixture(fixture, buttonContainer, MockEvent.CLICK); + + expect(component.onClick).toHaveBeenCalled(); + }); + }); + + describe('onClick', () => { + it('should clear selected result', () => { + component.onClick(); + + expect(service.clearSelectedResult).toHaveBeenCalled(); + }); + }); +}); diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-item/forwarding-item-change-button-container/forwarding-item-change-button-container.component.ts b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-item/forwarding-item-change-button-container/forwarding-item-change-button-container.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..5a0ca9ccbe7730e0eb8d54ef013b17d12719b0ec --- /dev/null +++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-item/forwarding-item-change-button-container/forwarding-item-change-button-container.component.ts @@ -0,0 +1,17 @@ +import { OrganisationsEinheitService, ZUSTAENDIGE_STELLE_SERVICE } from '@alfa-client/zustaendige-stelle-shared'; +import { Component, inject } from '@angular/core'; +import { ButtonComponent } from '@ods/system'; + +@Component({ + selector: 'alfa-forwarding-item-change-button-container', + standalone: true, + imports: [ButtonComponent], + templateUrl: './forwarding-item-change-button-container.component.html', +}) +export class ForwardingItemChangeButtonContainerComponent { + private readonly organisationsEinheitService = inject(ZUSTAENDIGE_STELLE_SERVICE) as OrganisationsEinheitService; + + public onClick(): void { + this.organisationsEinheitService.clearSelectedResult(); + } +} diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-item/forwarding-item.component.html b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-item/forwarding-item.component.html new file mode 100644 index 0000000000000000000000000000000000000000..bd41e43d6a1c75eb03bca208ca264c7553aaa5a8 --- /dev/null +++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-item/forwarding-item.component.html @@ -0,0 +1,3 @@ +<ods-forwarding-item [label]="organisationsEinheitResource.name" [address]="organisationsEinheitResource.anschrift | anschriftToString" > + <alfa-forwarding-item-change-button-container /> +</ods-forwarding-item> \ No newline at end of file diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-item/forwarding-item.component.spec.ts b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-item/forwarding-item.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..b8ffb55d8ab7ff80771ddd8cdd2d1e6611dbe459 --- /dev/null +++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-item/forwarding-item.component.spec.ts @@ -0,0 +1,42 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { getMockComponent } from '@alfa-client/test-utils'; +import { Anschrift, OrganisationsEinheitResource } from '@alfa-client/zustaendige-stelle-shared'; +import { ForwardingItemComponent } from '@ods/system'; +import { MockComponent } from 'ng-mocks'; +import { createOrganisationsEinheitResource } from '../../../../../../zustaendige-stelle-shared/test/organisations-einheit'; +import { ForwardingItemChangeButtonContainerComponent } from './forwarding-item-change-button-container/forwarding-item-change-button-container.component'; +import { ForwardingItemInDialogComponent } from './forwarding-item.component'; + +describe('ForwardingDialogForwardingItemComponent', () => { + let component: ForwardingItemInDialogComponent; + let fixture: ComponentFixture<ForwardingItemInDialogComponent>; + + const organisationsEinheitResource: OrganisationsEinheitResource = createOrganisationsEinheitResource(); + const anschrift: Anschrift = organisationsEinheitResource.anschrift; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ForwardingItemInDialogComponent], + declarations: [MockComponent(ForwardingItemChangeButtonContainerComponent), MockComponent(ForwardingItemComponent)], + }).compileComponents(); + + fixture = TestBed.createComponent(ForwardingItemInDialogComponent); + component = fixture.componentInstance; + component.organisationsEinheitResource = organisationsEinheitResource; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); + + describe('forwarding item', () => { + it('should exist with input', () => { + const forwardingItem: ForwardingItemComponent = getMockComponent(fixture, ForwardingItemComponent); + + expect(forwardingItem.label).toBe(organisationsEinheitResource.name); + expect(forwardingItem.address).toBe(`${anschrift.strasse} ${anschrift.hausnummer}, ${anschrift.plz} ${anschrift.ort}`); + }); + }); +}); diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-item/forwarding-item.component.ts b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-item/forwarding-item.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..9828f682d8860e851cc15cde31fef24150120f4a --- /dev/null +++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-item/forwarding-item.component.ts @@ -0,0 +1,14 @@ +import { AnschriftToStringPipe, OrganisationsEinheitResource } from '@alfa-client/zustaendige-stelle-shared'; +import { Component, Input } from '@angular/core'; +import { ForwardingItemComponent } from '@ods/system'; +import { ForwardingItemChangeButtonContainerComponent } from './forwarding-item-change-button-container/forwarding-item-change-button-container.component'; + +@Component({ + selector: 'alfa-forwarding-item-in-dialog', + standalone: true, + imports: [ForwardingItemChangeButtonContainerComponent, AnschriftToStringPipe, ForwardingItemComponent], + templateUrl: './forwarding-item.component.html', +}) +export class ForwardingItemInDialogComponent { + @Input() organisationsEinheitResource: OrganisationsEinheitResource; +} diff --git a/alfa-client/libs/forwarding/src/lib/forwarding.module.ts b/alfa-client/libs/forwarding/src/lib/forwarding.module.ts index 973cf7b7a1603273e98ca30ee0bd511c57bb9cc1..387ac14e53f0810db203dcbe110b33cabe8b5ab0 100644 --- a/alfa-client/libs/forwarding/src/lib/forwarding.module.ts +++ b/alfa-client/libs/forwarding/src/lib/forwarding.module.ts @@ -24,22 +24,17 @@ import { CommandSharedModule } from '@alfa-client/command-shared'; import { ForwardingSharedModule } from '@alfa-client/forwarding-shared'; import { FormatDateWithTimePipe, HasLinkPipe, ToEmbeddedResourcesPipe } from '@alfa-client/tech-shared'; -import { - ExpansionPanelComponent, - OzgcloudStrokedButtonWithSpinnerComponent, - OzgcloudTextEditorComponent, - SpinnerComponent, -} from '@alfa-client/ui'; +import { ExpansionPanelComponent, OzgcloudStrokedButtonWithSpinnerComponent, OzgcloudTextEditorComponent, SpinnerComponent, } from '@alfa-client/ui'; import { CommonModule } from '@angular/common'; import { NgModule } from '@angular/core'; import { ReactiveFormsModule } from '@angular/forms'; import { MatIcon } from '@angular/material/icon'; -import { VorgangForwardFormComponent } from './vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward-form.component'; -import { VorgangForwardFormularComponent } from './vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-formular.component'; -import { VorgangForwardingContainerComponent } from './vorgang-forwarding-container/vorgang-forwarding-container.component'; -import { VorgangForwardingInfoListComponent } from './vorgang-forwarding-container/vorgang-forwarding-info-list/vorgang-forwarding-info-list.component'; -import { VorgangForwardingInfoComponent } from './vorgang-forwarding-container/vorgang-forwarding-info-list/vorgang-forwarding-info/vorgang-forwarding-info.component'; -import { VorgangForwardZustellenContainerComponent } from './vorgang-forwarding-zustellen-container/vorgang-forward-zustellen-container.component'; +import { ForwardingByEmailContainerComponent } from './forwarding-by-email-container/forwarding-by-email-container.component'; +import { ForwardingByEmailFormComponent } from './forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-form/forwarding-by-email-form.component'; +import { ForwardingByEmailFormularComponent } from './forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-formular.component'; +import { ForwardingByEmailInfoListComponent } from './forwarding-by-email-container/forwarding-by-email-info-list/forwarding-by-email-info-list.component'; +import { ForwardingByEmailInfoComponent } from './forwarding-by-email-container/forwarding-by-email-info-list/forwarding-by-email-info/forwarding-by-email-info.component'; +import { ForwardingByEmailZustellenContainerComponent } from './forwarding-by-email-zustellen-container/forwarding-by-email-zustellen-container.component'; @NgModule({ imports: [ @@ -57,15 +52,15 @@ import { VorgangForwardZustellenContainerComponent } from './vorgang-forwarding- ReactiveFormsModule, ], declarations: [ - VorgangForwardZustellenContainerComponent, - VorgangForwardingContainerComponent, - VorgangForwardFormularComponent, - VorgangForwardingInfoComponent, - VorgangForwardingInfoListComponent, - VorgangForwardFormularComponent, - VorgangForwardZustellenContainerComponent, - VorgangForwardFormComponent, + ForwardingByEmailZustellenContainerComponent, + ForwardingByEmailContainerComponent, + ForwardingByEmailFormularComponent, + ForwardingByEmailInfoComponent, + ForwardingByEmailInfoListComponent, + ForwardingByEmailFormularComponent, + ForwardingByEmailZustellenContainerComponent, + ForwardingByEmailFormComponent, ], - exports: [VorgangForwardingContainerComponent], + exports: [ForwardingByEmailContainerComponent], }) export class ForwardingModule {} diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.html index 7170a1ee9d6a52391ff3841614a4dff0a9cb4171..650f1390dbfeb14e5663d263719b0fbdbc98b24c 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.html +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.html @@ -45,4 +45,4 @@ <alfa-create-wiedervorlage-button-container [showAsIconButton]="showAsIconButton" [vorgang]="vorgangWithEingang" /> <alfa-assign-user-profile-button-container [vorgang]="vorgangWithEingang" /> <alfa-postfach-mail-button-container [showAsIconButton]="showAsIconButton" [vorgang]="vorgangWithEingang" /> -<alfa-forward-by-ozgcloud-button-container [vorgangWithEingang]="vorgangWithEingang" [showAsIconButton]="showAsIconButton" /> +<alfa-forwarding-button-container [vorgangWithEingang]="vorgangWithEingang" [showAsIconButton]="showAsIconButton" /> diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.spec.ts index b8c3aed662cf6e6034a2a80d3eb99bd13472e235..4d860217f0985c53335390280988192e7f2427c9 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.spec.ts +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.spec.ts @@ -21,12 +21,8 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { ForwardByOzgcloudButtonContainerComponent } from '@alfa-client/forwarding'; -import { - EndgueltigLoeschenButtonContainerComponent, - LoeschAnforderungZuruecknehmenButtonContainerComponent, - LoeschenAnfordernButtonContainerComponent, -} from '@alfa-client/loesch-anforderung'; +import { ForwardingButtonContainerComponent } from '@alfa-client/forwarding'; +import { EndgueltigLoeschenButtonContainerComponent, LoeschAnforderungZuruecknehmenButtonContainerComponent, LoeschenAnfordernButtonContainerComponent, } from '@alfa-client/loesch-anforderung'; import { PostfachMailButtonContainerComponent } from '@alfa-client/postfach'; import { HasLinkPipe } from '@alfa-client/tech-shared'; import { existsAsHtmlElement, getMockComponent, notExistsAsHtmlElement } from '@alfa-client/test-utils'; @@ -77,7 +73,7 @@ describe('VorgangDetailActionButtonsComponent', () => { MockComponent(LoeschenAnfordernButtonContainerComponent), MockComponent(EndgueltigLoeschenButtonContainerComponent), MockComponent(LoeschAnforderungZuruecknehmenButtonContainerComponent), - MockComponent(ForwardByOzgcloudButtonContainerComponent), + MockComponent(ForwardingButtonContainerComponent), ], }); }); @@ -123,10 +119,7 @@ describe('VorgangDetailActionButtonsComponent', () => { fixture.detectChanges(); - const button: ForwardByOzgcloudButtonContainerComponent = getMockComponent( - fixture, - ForwardByOzgcloudButtonContainerComponent, - ); + const button: ForwardingButtonContainerComponent = getMockComponent(fixture, ForwardingButtonContainerComponent); expect(button.vorgangWithEingang).toBe(vorgangWithEingang); expect(button.showAsIconButton).toBeTruthy(); }); diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-area.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-area.component.html index 772fdbd05969b74f6fe626e05d5b74123f595f02..af35bf9c288929c532d54c232e770b764d94795a 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-area.component.html +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-area.component.html @@ -60,10 +60,10 @@ <div class="two-column"> <div class="section" *ngIf="vorgangResource | hasLink: vorgangWithEingangLinkRel.FORWARD_BY_EMAIL"> - <alfa-vorgang-forwarding-container + <alfa-forwarding-by-email-container [vorgang]="vorgangResource" data-test-id="forwarding-container-in-vorgang" - ></alfa-vorgang-forwarding-container> + ></alfa-forwarding-by-email-container> </div> <div class="section" *ngIf="vorgangResource | hasLink: vorgangHeaderLinkRel.WIEDERVORLAGEN"> diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-area.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-area.component.spec.ts index 79d55a0dd7c4b095933d59e78923e8e786ae86a2..9a60edf8103e922ac4c2ed206fb0d56907c0b6f0 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-area.component.spec.ts +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-area.component.spec.ts @@ -22,10 +22,10 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ import { CollaborationInVorgangContainerComponent } from '@alfa-client/collaboration'; -import { VorgangForwardingContainerComponent } from '@alfa-client/forwarding'; +import { ForwardingByEmailContainerComponent } from '@alfa-client/forwarding'; import { KommentarListInVorgangContainerComponent } from '@alfa-client/kommentar'; import { PostfachMailListContainerComponent } from '@alfa-client/postfach'; -import { HasLinkPipe, ToEmbeddedResourcesPipe, createEmptyStateResource, createStateResource } from '@alfa-client/tech-shared'; +import { createEmptyStateResource, createStateResource, HasLinkPipe, ToEmbeddedResourcesPipe } from '@alfa-client/tech-shared'; import { existsAsHtmlElement, getMockComponent, notExistsAsHtmlElement } from '@alfa-client/test-utils'; import { ExpansionPanelComponent, OzgcloudStrokedButtonWithSpinnerComponent } from '@alfa-client/ui'; import { VorgangHeaderLinkRel, VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; @@ -72,7 +72,7 @@ describe('VorgangDetailAreaComponent', () => { MockComponent(PostfachMailListContainerComponent), MockComponent(VorgangDetailAntragstellerComponent), MockComponent(VorgangDetailFormularDatenComponent), - MockComponent(VorgangForwardingContainerComponent), + MockComponent(ForwardingByEmailContainerComponent), MockComponent(BescheidListInVorgangContainerComponent), MockComponent(ExpansionPanelComponent), MockComponent(CollaborationInVorgangContainerComponent), diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.html index 742a81193c28b8f3a3b199604b2ab1f36d8f5785..c11e59564e2b7878a53334eb7a9f1ed90fa3d63d 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.html +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.html @@ -37,4 +37,4 @@ } <alfa-endgueltig-loeschen-button-container [vorgang]="vorgangWithEingang" /> <alfa-loesch-anforderung-zuruecknehmen-button-container /> -<alfa-forward-by-ozgcloud-button-container [vorgangWithEingang]="vorgangWithEingang" /> +<alfa-forwarding-button-container [vorgangWithEingang]="vorgangWithEingang" /> diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.spec.ts index 4b16a16ee53c7fda49274e3002b8e111b8f93d30..04956f9d574e55013fd19ba30851dfdaf0010110 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.spec.ts +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.spec.ts @@ -21,12 +21,8 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { ForwardByOzgcloudButtonContainerComponent } from '@alfa-client/forwarding'; -import { - EndgueltigLoeschenButtonContainerComponent, - LoeschAnforderungZuruecknehmenButtonContainerComponent, - LoeschenAnfordernButtonContainerComponent, -} from '@alfa-client/loesch-anforderung'; +import { ForwardingButtonContainerComponent } from '@alfa-client/forwarding'; +import { EndgueltigLoeschenButtonContainerComponent, LoeschAnforderungZuruecknehmenButtonContainerComponent, LoeschenAnfordernButtonContainerComponent, } from '@alfa-client/loesch-anforderung'; import { HasLinkPipe } from '@alfa-client/tech-shared'; import { existsAsHtmlElement, getMockComponent, notExistsAsHtmlElement } from '@alfa-client/test-utils'; import { OzgcloudStrokedButtonWithSpinnerComponent } from '@alfa-client/ui'; @@ -70,7 +66,7 @@ describe('VorgangDetailFormularButtonsComponent', () => { MockComponent(LoeschenAnfordernButtonContainerComponent), MockComponent(EndgueltigLoeschenButtonContainerComponent), MockComponent(LoeschAnforderungZuruecknehmenButtonContainerComponent), - MockComponent(ForwardByOzgcloudButtonContainerComponent), + MockComponent(ForwardingButtonContainerComponent), ], }); }); @@ -106,10 +102,7 @@ describe('VorgangDetailFormularButtonsComponent', () => { component.vorgangWithEingang = vorgangWithEingang; fixture.detectChanges(); - const button: ForwardByOzgcloudButtonContainerComponent = getMockComponent( - fixture, - ForwardByOzgcloudButtonContainerComponent, - ); + const button: ForwardingButtonContainerComponent = getMockComponent(fixture, ForwardingButtonContainerComponent); expect(button.vorgangWithEingang).toBe(vorgangWithEingang); }); }); diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts index 275fc4d082a11a4a0dd2da8cfeb95a5d532343e2..1d749edd60cabb56f750dd00852651e0fc41b1cf 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts @@ -24,7 +24,7 @@ import { BescheidModule } from '@alfa-client/bescheid'; import { BinaryFileModule } from '@alfa-client/binary-file'; import { CollaborationModule } from '@alfa-client/collaboration'; -import { ForwardByOzgcloudButtonContainerComponent, ForwardingModule } from '@alfa-client/forwarding'; +import { ForwardingButtonContainerComponent, ForwardingModule } from '@alfa-client/forwarding'; import { HistorieModule } from '@alfa-client/historie'; import { KommentarModule } from '@alfa-client/kommentar'; import { LoeschAnforderungModule } from '@alfa-client/loesch-anforderung'; @@ -187,7 +187,7 @@ const routes: Routes = [ DropdownMenuTextItemComponent, MoreIconComponent, FileIconComponent, - ForwardByOzgcloudButtonContainerComponent, + ForwardingButtonContainerComponent, TooltipDirective, EditIconComponent, DiscardVorgangIconComponent, diff --git a/alfa-client/libs/zustaendige-stelle-shared/src/index.ts b/alfa-client/libs/zustaendige-stelle-shared/src/index.ts index ab0148d00ba42af2a0c6694c0d937c998fa0513e..f7b4ea3e3c9ec0c95e32d63ad0aa526cc1de0ac0 100644 --- a/alfa-client/libs/zustaendige-stelle-shared/src/index.ts +++ b/alfa-client/libs/zustaendige-stelle-shared/src/index.ts @@ -21,6 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ +export * from './lib/anschrift-to-string.pipe'; export * from './lib/externe-fachstelle/externe-fachstelle.model'; export * from './lib/externe-fachstelle/externe-fachstelle.service'; export * from './lib/organisations-einheit/organisations-einheit.model'; diff --git a/alfa-client/libs/zustaendige-stelle-shared/src/lib/anschrift-to-string.pipe.spec.ts b/alfa-client/libs/zustaendige-stelle-shared/src/lib/anschrift-to-string.pipe.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..06d89cf735cd854d61513363f8937933e6a6f106 --- /dev/null +++ b/alfa-client/libs/zustaendige-stelle-shared/src/lib/anschrift-to-string.pipe.spec.ts @@ -0,0 +1,29 @@ +import { EMPTY_STRING } from '@alfa-client/tech-shared'; +import { Anschrift } from '@alfa-client/zustaendige-stelle-shared'; +import { AnschriftToStringPipe } from './anschrift-to-string.pipe'; + +describe('AnschriftToString', () => { + let pipe: AnschriftToStringPipe; + + beforeEach(() => { + pipe = new AnschriftToStringPipe(); + }); + + it('should create an instance', () => { + expect(pipe).toBeTruthy(); + }); + + it('should format anschrift', () => { + const anschrift: Anschrift = { + strasse: 'Musterstraße', + hausnummer: '12', + plz: '12345', + ort: 'Musterstadt', + }; + expect(pipe.transform(anschrift)).toBe('Musterstraße 12, 12345 Musterstadt'); + }); + + it('should return empty string if anschrift is null', () => { + expect(pipe.transform(null)).toBe(EMPTY_STRING); + }); +}); diff --git a/alfa-client/libs/zustaendige-stelle-shared/src/lib/anschrift-to-string.pipe.ts b/alfa-client/libs/zustaendige-stelle-shared/src/lib/anschrift-to-string.pipe.ts new file mode 100644 index 0000000000000000000000000000000000000000..6ea502cd2724879010e7b9e963d45c34ac151c28 --- /dev/null +++ b/alfa-client/libs/zustaendige-stelle-shared/src/lib/anschrift-to-string.pipe.ts @@ -0,0 +1,15 @@ +import { EMPTY_STRING } from '@alfa-client/tech-shared'; +import { Anschrift } from '@alfa-client/zustaendige-stelle-shared'; +import { Pipe, PipeTransform } from '@angular/core'; +import { isNil } from 'lodash-es'; + +@Pipe({ + standalone: true, + name: 'anschriftToString', +}) +export class AnschriftToStringPipe implements PipeTransform { + transform(anschrift: Anschrift): string { + if (isNil(anschrift)) return EMPTY_STRING; + return `${anschrift.strasse} ${anschrift.hausnummer}, ${anschrift.plz} ${anschrift.ort}`; + } +} diff --git a/alfa-client/libs/zustaendige-stelle/src/index.ts b/alfa-client/libs/zustaendige-stelle/src/index.ts index 114de029cc81a1f13b64444b0e91753a8cd09094..014f02c0b948630b4ec7c854d46a0274796d227b 100644 --- a/alfa-client/libs/zustaendige-stelle/src/index.ts +++ b/alfa-client/libs/zustaendige-stelle/src/index.ts @@ -23,4 +23,5 @@ */ export * from './lib/search-externe-fachstelle-container/search-externe-fachstelle-container.component'; export * from './lib/search-organisations-einheit-container/search-organisations-einheit-container.component'; +export * from './lib/search-zustaendige-stelle-dialog/search-zustaendige-stelle-form-container/search-zustaendige-stelle-form-container.component'; export * from './lib/zustaendige-stelle.module'; diff --git a/alfa-client/libs/zustaendige-stelle/src/lib/search-organisations-einheit-container/search-organisations-einheit-container.component.ts b/alfa-client/libs/zustaendige-stelle/src/lib/search-organisations-einheit-container/search-organisations-einheit-container.component.ts index bd7e92ef2892f13b038358e99393ddc4c81bbbb8..5706c8cde9a1fe2d14f1433b2f31139bd9508242 100644 --- a/alfa-client/libs/zustaendige-stelle/src/lib/search-organisations-einheit-container/search-organisations-einheit-container.component.ts +++ b/alfa-client/libs/zustaendige-stelle/src/lib/search-organisations-einheit-container/search-organisations-einheit-container.component.ts @@ -83,7 +83,7 @@ export class SearchOrganisationsEinheitContainerComponent implements OnInit, OnD } } -function createOrganisationEinheitService( +export function createOrganisationEinheitService( resourceRepository: ResourceRepository, vorgangService: VorgangService, ): OrganisationsEinheitService { diff --git a/alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/search-zustaendige-stelle-dialog.component.html b/alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/search-zustaendige-stelle-dialog.component.html index 9ff703cfa41d11c22550814030a0f6f2ce5a230f..bc4470c5402969cc5497369b92107fc74cd2cff9 100644 --- a/alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/search-zustaendige-stelle-dialog.component.html +++ b/alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/search-zustaendige-stelle-dialog.component.html @@ -30,11 +30,5 @@ <ods-close-icon class="fill-primary" icon /> </ods-button> </div> - <alfa-search-zustaendige-stelle-form - data-test-id="search-organisations-einheit" - [searchResults]="searchResults$ | async" - (search)="search($event)" - (selectSearchResult)="selectSearchResult($event)" - (clearSearchResult)="clearSearchResult()" - ></alfa-search-zustaendige-stelle-form> + <alfa-search-zustaendige-stelle-form-container (searchResultSelected)="searchResultSelected($event)" /> </div> diff --git a/alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/search-zustaendige-stelle-dialog.component.spec.ts b/alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/search-zustaendige-stelle-dialog.component.spec.ts index 1b4f822ac5579604de0bef351c85ff8df436ee93..0cd130bb32e24de99cff81a5e9355dcd124f4f22 100644 --- a/alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/search-zustaendige-stelle-dialog.component.spec.ts +++ b/alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/search-zustaendige-stelle-dialog.component.spec.ts @@ -22,46 +22,25 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ import { ToEmbeddedResourcesPipe } from '@alfa-client/tech-shared'; -import { - createDialogRefMock, - DialogRefMock, - EventData, - getMockComponent, - Mock, - mock, - triggerEvent, -} from '@alfa-client/test-utils'; -import { - OrganisationsEinheitResource, - OrganisationsEinheitService, - ZUSTAENDIGE_STELLE_SERVICE, -} from '@alfa-client/zustaendige-stelle-shared'; +import { createDialogRefMock, DialogRefMock, Mock, mock } from '@alfa-client/test-utils'; +import { OrganisationsEinheitService, ZUSTAENDIGE_STELLE_SERVICE } from '@alfa-client/zustaendige-stelle-shared'; import { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog'; import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { faker } from '@faker-js/faker'; import { Resource } from '@ngxp/rest'; -import { ButtonComponent, CloseIconComponent, InstantSearchResult } from '@ods/system'; -import { createInstantSearchResult } from 'libs/design-system/src/test/search'; +import { ButtonComponent, CloseIconComponent } from '@ods/system'; import { MockComponent } from 'ng-mocks'; -import { of } from 'rxjs'; -import { getDataTestIdOf } from '../../../../tech-shared/test/data-test'; -import { createOrganisationsEinheitResource } from '../../../../zustaendige-stelle-shared/test/organisations-einheit'; import { SearchZustaendigeStelleDialogComponent } from '././search-zustaendige-stelle-dialog.component'; -import { SearchZustaendigeStelleFormComponent } from './search-zustaendige-stelle-form/search-zustaendige-stelle-form.component'; +import { SearchZustaendigeStelleFormContainerComponent } from './search-zustaendige-stelle-form-container/search-zustaendige-stelle-form-container.component'; describe('SearchZustaendigeStelleDialogComponent', () => { let component: SearchZustaendigeStelleDialogComponent<Resource>; let fixture: ComponentFixture<SearchZustaendigeStelleDialogComponent<Resource>>; - const searchOrganisationsEinheitComp: string = getDataTestIdOf('search-organisations-einheit'); - const service: Mock<OrganisationsEinheitService> = mock(OrganisationsEinheitService); const title: string = 'dummyTitle'; let dialogRefMock: DialogRefMock; - const organisationsEinheitResource: OrganisationsEinheitResource = createOrganisationsEinheitResource(); - beforeEach(() => { dialogRefMock = createDialogRefMock(); }); @@ -71,7 +50,7 @@ describe('SearchZustaendigeStelleDialogComponent', () => { declarations: [ SearchZustaendigeStelleDialogComponent, ToEmbeddedResourcesPipe, - MockComponent(SearchZustaendigeStelleFormComponent), + MockComponent(SearchZustaendigeStelleFormContainerComponent), MockComponent(ButtonComponent), MockComponent(CloseIconComponent), ], @@ -100,149 +79,11 @@ describe('SearchZustaendigeStelleDialogComponent', () => { expect(component).toBeTruthy(); }); - describe('ngOnInit', () => { - it('should call service', () => { - component.ngOnInit(); - - expect(service.getSearchResultList).toHaveBeenCalled(); - }); - }); - - describe('onKeyDownHandler', () => { - it('should prevent default behavior for enter key on non buttons', () => { - const keyboardEvent: KeyboardEvent = { - ...new KeyboardEvent('enter'), - key: 'Enter', - preventDefault: jest.fn(), - target: new EventTarget(), - }; - - component.onKeyDownHandler(keyboardEvent); - - expect(keyboardEvent.preventDefault).toHaveBeenCalled(); - }); - - it('should not prevent default behavior for enter key on buttons', () => { - const keyboardEvent: KeyboardEvent = { - ...new KeyboardEvent('enter'), - key: 'Enter', - preventDefault: jest.fn(), - target: { ...new EventTarget(), tagName: 'BUTTON' } as Element, - }; - - component.onKeyDownHandler(keyboardEvent); - - expect(keyboardEvent.preventDefault).not.toHaveBeenCalled(); - }); - }); - - describe('search organisationsEinheit component', () => { - const result: InstantSearchResult<Resource> = createInstantSearchResult(); - - beforeEach(() => { - component.searchResults$ = of([result]); - fixture.detectChanges(); - }); - - it('should be called with searchResult', () => { - const comp: SearchZustaendigeStelleFormComponent<Resource> = getMockComponent< - SearchZustaendigeStelleFormComponent<Resource> - >(fixture, SearchZustaendigeStelleFormComponent); - - expect(comp.searchResults).toEqual([result]); - }); - - it('should call search on openSearchDialog output', () => { - component.search = jest.fn(); - const searchBy: string = faker.word.sample(); - const eventData: EventData<SearchZustaendigeStelleDialogComponent<Resource>> = { - fixture, - elementSelector: searchOrganisationsEinheitComp, - name: 'search', - data: searchBy, - }; - - triggerEvent(eventData); - - expect(component.search).toHaveBeenCalledWith(searchBy); - }); - - it('should call selectSearchResult on selectSearchResult output', () => { - component.selectSearchResult = jest.fn(); - - const eventData: EventData<SearchZustaendigeStelleDialogComponent<Resource>> = { - fixture, - elementSelector: searchOrganisationsEinheitComp, - name: 'selectSearchResult', - data: organisationsEinheitResource, - }; - - triggerEvent(eventData); - - expect(component.selectSearchResult).toHaveBeenCalledWith(organisationsEinheitResource); - }); - - it('should call clearSearchResult', () => { - component.clearSearchResult = jest.fn(); - - const eventData: EventData<SearchZustaendigeStelleDialogComponent<Resource>> = { - fixture, - elementSelector: searchOrganisationsEinheitComp, - name: 'clearSearchResult', - data: organisationsEinheitResource, - }; - - triggerEvent(eventData); - - expect(component.clearSearchResult).toHaveBeenCalled(); - }); - }); - - describe('search', () => { - const searchBy: string = faker.word.sample(); - - it('should call service', () => { - component.search(searchBy); - - expect(service.search).toHaveBeenCalledWith(searchBy); - }); - }); - - describe('select search result', () => { - it('should set select result', () => { - component.selectSearchResult(organisationsEinheitResource); - - expect(service.selectSearchResult).toHaveBeenCalledWith(organisationsEinheitResource); - }); - - it('should call service', () => { - component.selectSearchResult(organisationsEinheitResource); - - expect(service.clearSearchResult).toHaveBeenCalled(); - }); - - it('should close dialog with result', () => { - component.selectSearchResult(organisationsEinheitResource); - - expect(dialogRefMock.close).toHaveBeenCalledWith(organisationsEinheitResource); - }); - }); - - describe('clear search result', () => { - it('should call service', () => { - component.clearSearchResult(); - - expect(service.clearSearchResult).toHaveBeenCalled(); - }); - }); - describe('close dialog', () => { it('should clear search result', () => { - component.clearSearchResult = jest.fn(); - component.closeDialog(); - expect(component.clearSearchResult).toHaveBeenCalled(); + expect(service.clearSearchResult).toHaveBeenCalled(); }); it('should close dialog', () => { @@ -251,22 +92,4 @@ describe('SearchZustaendigeStelleDialogComponent', () => { expect(dialogRefMock.close).toHaveBeenCalled(); }); }); - - describe('isNotButtonElement', () => { - it('should return false', () => { - const element: Element = { tagName: 'BUTTON' } as Element; - - const result: boolean = component.isNotButtonElement(element); - - expect(result).toBe(false); - }); - - it('should return true', () => { - const element: Element = { tagName: 'INPUT' } as Element; - - const result: boolean = component.isNotButtonElement(element); - - expect(result).toBe(true); - }); - }); }); diff --git a/alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/search-zustaendige-stelle-dialog.component.ts b/alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/search-zustaendige-stelle-dialog.component.ts index 492c3c800690e5ca9c929299dee8f765f514b76a..b00b5a3a722ac05864396fb4825b67db72694a44 100644 --- a/alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/search-zustaendige-stelle-dialog.component.ts +++ b/alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/search-zustaendige-stelle-dialog.component.ts @@ -23,7 +23,7 @@ */ import { ZUSTAENDIGE_STELLE_SERVICE, ZustaendigeStelleService } from '@alfa-client/zustaendige-stelle-shared'; import { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog'; -import { Component, HostListener, Inject, OnInit } from '@angular/core'; +import { Component, Inject } from '@angular/core'; import { Resource } from '@ngxp/rest'; import { InstantSearchResult } from '@ods/system'; import { Observable } from 'rxjs'; @@ -33,47 +33,21 @@ import { Observable } from 'rxjs'; selector: 'search-zustaendige-stelle-dialog', templateUrl: './search-zustaendige-stelle-dialog.component.html', }) -export class SearchZustaendigeStelleDialogComponent<T extends Resource> implements OnInit { +export class SearchZustaendigeStelleDialogComponent<T extends Resource> { public searchResults$: Observable<InstantSearchResult<T>[]>; constructor( private dialogRef: DialogRef, - @Inject(ZUSTAENDIGE_STELLE_SERVICE) - private service: ZustaendigeStelleService<T>, + @Inject(ZUSTAENDIGE_STELLE_SERVICE) private service: ZustaendigeStelleService<T>, @Inject(DIALOG_DATA) public title: string, ) {} - ngOnInit(): void { - this.searchResults$ = this.service.getSearchResultList(); - } - - @HostListener('document:keydown', ['$event']) - onKeyDownHandler(e: KeyboardEvent) { - if (e.key === 'Enter' && this.isNotButtonElement(e.target as Element)) { - e.preventDefault(); - } - } - - public search(searchBy: string): void { - this.service.search(searchBy); - } - - public selectSearchResult(zustaendigeStelle: T): void { - this.service.selectSearchResult(zustaendigeStelle); - this.service.clearSearchResult(); - this.dialogRef.close(zustaendigeStelle); - } - - public clearSearchResult(): void { - this.service.clearSearchResult(); - } - public closeDialog(): void { - this.clearSearchResult(); + this.service.clearSearchResult(); this.dialogRef.close(); } - public isNotButtonElement(e: Element): boolean { - return e.tagName !== 'BUTTON'; + public searchResultSelected(zustaendigeStelle: T): void { + this.dialogRef.close(zustaendigeStelle); } } 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 new file mode 100644 index 0000000000000000000000000000000000000000..2c884df36afc8721e62bc85b99d0c60606287986 --- /dev/null +++ b/alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/search-zustaendige-stelle-form-container/search-zustaendige-stelle-form-container.component.html @@ -0,0 +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()" +/> \ 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.spec.ts b/alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/search-zustaendige-stelle-form-container/search-zustaendige-stelle-form-container.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..61763e91ba325e6355d54fdab3055f39b0399151 --- /dev/null +++ b/alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/search-zustaendige-stelle-form-container/search-zustaendige-stelle-form-container.component.spec.ts @@ -0,0 +1,207 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EventData, getMockComponent, mock, Mock, triggerEvent } from '@alfa-client/test-utils'; +import { + OrganisationsEinheitResource, + OrganisationsEinheitService, + ZUSTAENDIGE_STELLE_SERVICE, +} from '@alfa-client/zustaendige-stelle-shared'; +import { faker } from '@faker-js/faker'; +import { Resource } from '@ngxp/rest'; +import { InstantSearchResult } from '@ods/system'; +import { MockComponent } from 'ng-mocks'; +import { of } from 'rxjs'; +import { createInstantSearchResult } from '../../../../../design-system/src/test/search'; +import { getDataTestIdOf } from '../../../../../tech-shared/test/data-test'; +import { createOrganisationsEinheitResource } from '../../../../../zustaendige-stelle-shared/test/organisations-einheit'; +import { SearchZustaendigeStelleFormContainerComponent } from './search-zustaendige-stelle-form-container.component'; +import { SearchZustaendigeStelleFormComponent } from './search-zustaendige-stelle-form/search-zustaendige-stelle-form.component'; + +describe('SearchZustaendigeStelleFormContainerComponent', () => { + let component: SearchZustaendigeStelleFormContainerComponent<Resource>; + let fixture: ComponentFixture<SearchZustaendigeStelleFormContainerComponent<Resource>>; + + let service: Mock<OrganisationsEinheitService>; + + const searchOrganisationsEinheitComp: string = getDataTestIdOf('search-organisations-einheit'); + + const organisationsEinheitResource: OrganisationsEinheitResource = createOrganisationsEinheitResource(); + + beforeEach(async () => { + service = mock(OrganisationsEinheitService); + await TestBed.configureTestingModule({ + imports: [SearchZustaendigeStelleFormContainerComponent], + declarations: [MockComponent(SearchZustaendigeStelleFormComponent)], + providers: [ + { + provide: ZUSTAENDIGE_STELLE_SERVICE, + useValue: service, + }, + ], + }).compileComponents(); + + fixture = TestBed.createComponent(SearchZustaendigeStelleFormContainerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); + + describe('ngOnInit', () => { + it('should call service', () => { + component.ngOnInit(); + + expect(service.getSearchResultList).toHaveBeenCalled(); + }); + }); + + describe('onKeyDownHandler', () => { + it('should prevent default behavior for enter key on non buttons', () => { + const keyboardEvent: KeyboardEvent = { + ...new KeyboardEvent('enter'), + key: 'Enter', + preventDefault: jest.fn(), + target: new EventTarget(), + }; + + component.onKeyDownHandler(keyboardEvent); + + expect(keyboardEvent.preventDefault).toHaveBeenCalled(); + }); + + it('should not prevent default behavior for enter key on buttons', () => { + const keyboardEvent: KeyboardEvent = { + ...new KeyboardEvent('enter'), + key: 'Enter', + preventDefault: jest.fn(), + target: { ...new EventTarget(), tagName: 'BUTTON' } as Element, + }; + + component.onKeyDownHandler(keyboardEvent); + + expect(keyboardEvent.preventDefault).not.toHaveBeenCalled(); + }); + }); + + describe('search organisationsEinheit component', () => { + const result: InstantSearchResult<Resource> = createInstantSearchResult(); + + beforeEach(() => { + component.searchResults$ = of([result]); + fixture.detectChanges(); + }); + + it('should be called with searchResult', () => { + const comp: SearchZustaendigeStelleFormComponent<Resource> = getMockComponent< + SearchZustaendigeStelleFormComponent<Resource> + >(fixture, SearchZustaendigeStelleFormComponent); + + expect(comp.searchResults).toEqual([result]); + }); + + it('should call search on openSearchDialog output', () => { + component.search = jest.fn(); + const searchBy: string = faker.word.sample(); + const eventData: EventData<SearchZustaendigeStelleFormContainerComponent<Resource>> = { + fixture, + elementSelector: searchOrganisationsEinheitComp, + name: 'search', + data: searchBy, + }; + + triggerEvent(eventData); + + expect(component.search).toHaveBeenCalledWith(searchBy); + }); + + it('should call selectSearchResult on selectSearchResult output', () => { + component.selectSearchResult = jest.fn(); + + const eventData: EventData<SearchZustaendigeStelleFormContainerComponent<Resource>> = { + fixture, + elementSelector: searchOrganisationsEinheitComp, + name: 'selectSearchResult', + data: organisationsEinheitResource, + }; + + triggerEvent(eventData); + + expect(component.selectSearchResult).toHaveBeenCalledWith(organisationsEinheitResource); + }); + + it('should call clearSearchResult', () => { + component.clearSearchResult = jest.fn(); + + const eventData: EventData<SearchZustaendigeStelleFormContainerComponent<Resource>> = { + fixture, + elementSelector: searchOrganisationsEinheitComp, + name: 'clearSearchResult', + data: organisationsEinheitResource, + }; + + triggerEvent(eventData); + + expect(component.clearSearchResult).toHaveBeenCalled(); + }); + }); + + describe('search', () => { + const searchBy: string = faker.word.sample(); + + it('should call service', () => { + component.search(searchBy); + + expect(service.search).toHaveBeenCalledWith(searchBy); + }); + }); + + describe('select search result', () => { + it('should set select result', () => { + component.selectSearchResult(organisationsEinheitResource); + + expect(service.selectSearchResult).toHaveBeenCalledWith(organisationsEinheitResource); + }); + + it('should call service', () => { + component.selectSearchResult(organisationsEinheitResource); + + expect(service.clearSearchResult).toHaveBeenCalled(); + }); + + it('should emit search result selected', () => { + component.searchResultSelected.emit = jest.fn(); + + component.selectSearchResult(organisationsEinheitResource); + + expect(component.searchResultSelected.emit).toHaveBeenCalledWith(organisationsEinheitResource); + }); + }); + + describe('clear search result', () => { + it('should call service', () => { + component.clearSearchResult(); + + expect(service.clearSearchResult).toHaveBeenCalled(); + }); + }); + + describe('isNotButtonElement', () => { + it('should return false', () => { + const element: Element = { tagName: 'BUTTON' } as Element; + + const result: boolean = component.isNotButtonElement(element); + + expect(result).toBe(false); + }); + + it('should return true', () => { + const element: Element = { tagName: 'INPUT' } as Element; + + const result: boolean = component.isNotButtonElement(element); + + expect(result).toBe(true); + }); + }); +}); 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 new file mode 100644 index 0000000000000000000000000000000000000000..e67f36dfbf550f3f5d8f5678a165ca687833442e --- /dev/null +++ b/alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/search-zustaendige-stelle-form-container/search-zustaendige-stelle-form-container.component.ts @@ -0,0 +1,50 @@ +import { ZUSTAENDIGE_STELLE_SERVICE, ZustaendigeStelleService } from '@alfa-client/zustaendige-stelle-shared'; +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'; + +@Component({ + selector: 'alfa-search-zustaendige-stelle-form-container', + templateUrl: './search-zustaendige-stelle-form-container.component.html', +}) +export class SearchZustaendigeStelleFormContainerComponent<T extends Resource> implements OnInit { + @Output() searchResultSelected = new EventEmitter<T>(); + @Input() focusOnSearchField: boolean = false; + + public searchResults$: Observable<InstantSearchResult<T>[]>; + + constructor( + @Inject(ZUSTAENDIGE_STELLE_SERVICE) + private service: ZustaendigeStelleService<T>, + ) {} + + ngOnInit(): void { + this.searchResults$ = this.service.getSearchResultList(); + } + + @HostListener('document:keydown', ['$event']) + onKeyDownHandler(e: KeyboardEvent) { + if (e.key === 'Enter' && this.isNotButtonElement(e.target as Element)) { + e.preventDefault(); + } + } + + public search(searchBy: string): void { + this.service.search(searchBy); + } + + public selectSearchResult(zustaendigeStelle: T): void { + this.service.selectSearchResult(zustaendigeStelle); + this.service.clearSearchResult(); + this.searchResultSelected.emit(zustaendigeStelle); + } + + public clearSearchResult(): void { + this.service.clearSearchResult(); + } + + public isNotButtonElement(e: Element): boolean { + return e.tagName !== 'BUTTON'; + } +} diff --git a/alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/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 similarity index 96% rename from alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/search-zustaendige-stelle-form/search-zustaendige-stelle-form.component.html rename to 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/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/search-zustaendige-stelle-form.component.spec.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.spec.ts similarity index 93% rename from alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/search-zustaendige-stelle-form/search-zustaendige-stelle-form.component.spec.ts rename to 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.spec.ts index 936e0398d636e323fe154040409c50c876a8f736..92a65e293c4dbea6409338e24fd449c2f4c7ec16 100644 --- a/alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/search-zustaendige-stelle-form/search-zustaendige-stelle-form.component.spec.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.spec.ts @@ -28,11 +28,11 @@ import { ReactiveFormsModule } from '@angular/forms'; import { faker } from '@faker-js/faker'; import { Resource } from '@ngxp/rest'; import { InstantSearchComponent, InstantSearchResult } from '@ods/system'; +import { createInstantSearchResult } from 'libs/design-system/src/test/search'; +import { getDataTestIdOf } from 'libs/tech-shared/test/data-test'; +import { createOrganisationsEinheitResource } from 'libs/zustaendige-stelle-shared/test/organisations-einheit'; import { MockComponent } from 'ng-mocks'; -import { createInstantSearchResult } from '../../../../../design-system/src/test/search'; -import { getDataTestIdOf } from '../../../../../tech-shared/test/data-test'; -import { createOrganisationsEinheitResource } from '../../../../../zustaendige-stelle-shared/test/organisations-einheit'; -import { SearchZustaendigeStelleFormservice } from '../search-zustaendige-stelle.formservice'; +import { SearchZustaendigeStelleFormservice } from '../../search-zustaendige-stelle.formservice'; import { SearchZustaendigeStelleFormComponent } from './search-zustaendige-stelle-form.component'; describe('SearchZustaendigeStelleFormComponent', () => { diff --git a/alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/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 similarity index 91% rename from alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/search-zustaendige-stelle-form/search-zustaendige-stelle-form.component.ts rename to 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 dff8515301abf57281a9c617a711bf42d46e71c2..a36f2cb5dbabc228ef35fbb7a4dc3f0fd9de5fbd 100644 --- a/alfa-client/libs/zustaendige-stelle/src/lib/search-zustaendige-stelle-dialog/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 @@ -24,7 +24,7 @@ import { Component, EventEmitter, Input, Output } from '@angular/core'; import { Resource } from '@ngxp/rest'; import { InstantSearchResult } from '@ods/system'; -import { SearchZustaendigeStelleFormservice } from '../search-zustaendige-stelle.formservice'; +import { SearchZustaendigeStelleFormservice } from '../../search-zustaendige-stelle.formservice'; @Component({ selector: 'alfa-search-zustaendige-stelle-form', @@ -33,6 +33,7 @@ import { SearchZustaendigeStelleFormservice } from '../search-zustaendige-stelle }) 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(); diff --git a/alfa-client/libs/zustaendige-stelle/src/lib/zustaendige-stelle.module.ts b/alfa-client/libs/zustaendige-stelle/src/lib/zustaendige-stelle.module.ts index 820da330c99f8e0d184b5c6b38096db8c03604bb..11e5ee19eafa8a59c361e8b260507fe6c32c4ef1 100644 --- a/alfa-client/libs/zustaendige-stelle/src/lib/zustaendige-stelle.module.ts +++ b/alfa-client/libs/zustaendige-stelle/src/lib/zustaendige-stelle.module.ts @@ -40,7 +40,8 @@ import { SearchExterneFachstelleContainerComponent } from './search-externe-fach import { OrganisationsEinheitComponent } from './search-organisations-einheit-container/organisations-einheit/organisations-einheit.component'; import { SearchOrganisationsEinheitContainerComponent } from './search-organisations-einheit-container/search-organisations-einheit-container.component'; import { SearchZustaendigeStelleDialogComponent } from './search-zustaendige-stelle-dialog/search-zustaendige-stelle-dialog.component'; -import { SearchZustaendigeStelleFormComponent } from './search-zustaendige-stelle-dialog/search-zustaendige-stelle-form/search-zustaendige-stelle-form.component'; +import { SearchZustaendigeStelleFormContainerComponent } from './search-zustaendige-stelle-dialog/search-zustaendige-stelle-form-container/search-zustaendige-stelle-form-container.component'; +import { SearchZustaendigeStelleFormComponent } from './search-zustaendige-stelle-dialog/search-zustaendige-stelle-form-container/search-zustaendige-stelle-form/search-zustaendige-stelle-form.component'; import { ZustaendigeStelleButtonComponent } from './zustaendige-stelle-button/zustaendige-stelle-button.component'; import { ZustaendigeStelleHeaderComponent } from './zustaendige-stelle-header/zustaendige-stelle-header.component'; @@ -68,6 +69,7 @@ import { ZustaendigeStelleHeaderComponent } from './zustaendige-stelle-header/zu SearchExterneFachstelleContainerComponent, EditZustaendigeStelleButtonComponent, ZustaendigeStelleHeaderComponent, + SearchZustaendigeStelleFormContainerComponent, ], exports: [ OrganisationsEinheitComponent, @@ -75,6 +77,7 @@ import { ZustaendigeStelleHeaderComponent } from './zustaendige-stelle-header/zu SearchZustaendigeStelleDialogComponent, SearchOrganisationsEinheitContainerComponent, SearchExterneFachstelleContainerComponent, + SearchZustaendigeStelleFormContainerComponent, ], }) export class ZustaendigeStelleModule {}