diff --git a/goofy-client/libs/ui/src/lib/assets/mail.svg b/goofy-client/libs/ui/src/lib/assets/mail.svg new file mode 100644 index 0000000000000000000000000000000000000000..2c6022a6b879ec179b07d039f3a678725d943fc2 --- /dev/null +++ b/goofy-client/libs/ui/src/lib/assets/mail.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><path d="M0 0h24v24H0z" fill="none"/><path d="M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 14H4V8l8 5 8-5v10zm-8-7L4 6h16l-8 5z"/></svg> \ No newline at end of file diff --git a/goofy-client/libs/ui/src/lib/icon/icon.model.ts b/goofy-client/libs/ui/src/lib/icon/icon.model.ts index 9359ba70cc40acd1c03b99549c92591e4a315a10..de5e4870221ddbfd84ce478ac578be490900741b 100644 --- a/goofy-client/libs/ui/src/lib/icon/icon.model.ts +++ b/goofy-client/libs/ui/src/lib/icon/icon.model.ts @@ -6,5 +6,6 @@ export enum Icons { no_reply = 'no_reply', assignment_ind = 'assignment_ind', az = 'az', - nr = 'nr' + nr = 'nr', + mail = 'mail' } diff --git a/goofy-client/libs/vorgang-shared-ui/src/index.ts b/goofy-client/libs/vorgang-shared-ui/src/index.ts index d151c0ad220a42a5f018ccc31baaa506fd4a48c5..af2fd02f43797a7441a8a4a24e2941286b860349 100644 --- a/goofy-client/libs/vorgang-shared-ui/src/index.ts +++ b/goofy-client/libs/vorgang-shared-ui/src/index.ts @@ -1,6 +1,7 @@ export * from './lib/aktenzeichen/aktenzeichen.component'; export * from './lib/vorgang-in-postfach-breadcrumb-container/vorgang-in-postfach-breadcrumb-container.component'; export * from './lib/vorgang-nummer/vorgang-nummer.component'; +export * from './lib/vorgang-postfach-status/vorgang-postfach-status.component'; export * from './lib/vorgang-search-container/vorgang-search-container.component'; export * from './lib/vorgang-shared-ui.module'; export * from './lib/vorgang-status-dot/vorgang-status-dot.component'; diff --git a/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-postfach-status/vorgang-postfach-status.component.html b/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-postfach-status/vorgang-postfach-status.component.html new file mode 100644 index 0000000000000000000000000000000000000000..5d88b6c0d9d07abd69c2ea863e1c90c6bb15ee85 --- /dev/null +++ b/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-postfach-status/vorgang-postfach-status.component.html @@ -0,0 +1,3 @@ +<mat-icon *ngIf="vorgang.hasPostfachNachricht === true" data-test-class="postfach-status" + svgIcon="mail"> +</mat-icon> \ No newline at end of file diff --git a/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-postfach-status/vorgang-postfach-status.component.scss b/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-postfach-status/vorgang-postfach-status.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-postfach-status/vorgang-postfach-status.component.spec.ts b/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-postfach-status/vorgang-postfach-status.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..4e2b55573935d85059571e51a16bd40ad41bfe50 --- /dev/null +++ b/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-postfach-status/vorgang-postfach-status.component.spec.ts @@ -0,0 +1,60 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { MatIcon } from '@angular/material/icon'; +import { MatIconTestingModule } from '@angular/material/icon/testing'; +import { getElementFromFixture } from '@goofy-client/test-utils'; +import { VorgangResource } from '@goofy-client/vorgang-shared'; +import { getDataTestIdOf } from 'libs/tech-shared/test/data-test'; +import { createVorgangResource } from 'libs/vorgang-shared/test/vorgang'; +import { VorgangPostfachStatusComponent } from './vorgang-postfach-status.component'; + + +describe('VorgangPostfachStatusComponent', () => { + let component: VorgangPostfachStatusComponent; + let fixture: ComponentFixture<VorgangPostfachStatusComponent>; + + const vorgang: VorgangResource = createVorgangResource(); + const postfachStatus: string = getDataTestIdOf('postfach-status'); + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ + MatIcon, + VorgangPostfachStatusComponent + ], + imports: [ + MatIconTestingModule, + ], + }).compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(VorgangPostfachStatusComponent); + component = fixture.componentInstance; + component.vorgang = vorgang; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); + + describe('mail icon', () => { + it('should show mail icon', () => { + component.vorgang.hasPostfachNachricht = true; + fixture.detectChanges(); + + const icon: HTMLElement = getElementFromFixture(fixture, postfachStatus); + + expect(icon).toHaveClass('mat-icon'); + }); + + it('should not show mail icon', () => { + component.vorgang.hasPostfachNachricht = false; + fixture.detectChanges(); + + const icon: HTMLElement = getElementFromFixture(fixture, postfachStatus); + + expect(icon).toBeNull(); + }); + }); +}); diff --git a/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-postfach-status/vorgang-postfach-status.component.ts b/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-postfach-status/vorgang-postfach-status.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..012bb0a3d13c2d7db58e31e5143644b4bb50591a --- /dev/null +++ b/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-postfach-status/vorgang-postfach-status.component.ts @@ -0,0 +1,13 @@ +import { Component, Input } from '@angular/core'; +import { Vorgang } from '@goofy-client/vorgang-shared'; + +@Component({ + selector: 'goofy-client-vorgang-postfach-status', + templateUrl: './vorgang-postfach-status.component.html', + styleUrls: ['./vorgang-postfach-status.component.scss'], +}) +export class VorgangPostfachStatusComponent { + + @Input() vorgang: Vorgang; + +} diff --git a/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-shared-ui.module.ts b/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-shared-ui.module.ts index 50344dd273dce9884047773ca65bd91d4920e8b5..e0e957351d94cc0d9a45d68134e4d358da5e4245 100644 --- a/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-shared-ui.module.ts +++ b/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-shared-ui.module.ts @@ -14,6 +14,7 @@ import { VorgangSearchClearButtonComponent } from './vorgang-search-container/vo import { VorgangSearchComponent } from './vorgang-search-container/vorgang-search/vorgang-search.component'; import { VorgangStatusDotComponent } from './vorgang-status-dot/vorgang-status-dot.component'; import { VorgangStatusTextComponent } from './vorgang-status-text/vorgang-status-text.component'; +import { VorgangPostfachStatusComponent } from './vorgang-postfach-status/vorgang-postfach-status.component'; @NgModule({ imports: [ @@ -32,8 +33,9 @@ import { VorgangStatusTextComponent } from './vorgang-status-text/vorgang-status VorgangInPostfachBreadcrumbComponent, VorgangSearchAutocompleteOptionsContentComponent, VorgangSearchClearButtonComponent, - VorgangNummerComponent, - VorgangStatusTextComponent, + VorgangNummerComponent, + VorgangStatusTextComponent, + VorgangPostfachStatusComponent, ], exports: [ VorgangSearchContainerComponent, @@ -41,8 +43,9 @@ import { VorgangStatusTextComponent } from './vorgang-status-text/vorgang-status VorgangStatusDotComponent, VorgangInPostfachBreadcrumbContainerComponent, VorgangSearchAutocompleteOptionsContentComponent, - VorgangNummerComponent, - VorgangStatusTextComponent, - ] + VorgangNummerComponent, + VorgangStatusTextComponent, + VorgangPostfachStatusComponent, + ], }) -export class VorgangSharedUiModule { } +export class VorgangSharedUiModule {} diff --git a/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-status-dot/vorgang-status-dot.component.scss b/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-status-dot/vorgang-status-dot.component.scss index b2519b3f6e4bf3ded2b1b34d43bb53bf415f6337..0df7c2f9b59cd2e42dfb57c813766099e7caa073 100644 --- a/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-status-dot/vorgang-status-dot.component.scss +++ b/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-status-dot/vorgang-status-dot.component.scss @@ -5,7 +5,7 @@ .dot { border-radius: 50%; background-color: mat.get-color-from-palette($primaryPalette); - margin: 0 29px 0 0; + margin: 0 1.75rem 0 0; flex-shrink: 0; &.angenommen, diff --git a/goofy-client/libs/vorgang-shared-ui/src/test-setup.ts b/goofy-client/libs/vorgang-shared-ui/src/test-setup.ts index 08ef82b5d5efa87cb27257314075f6a16eb7a63e..b7c436f08d81a131ccfcfcd2f828e06adadca227 100644 --- a/goofy-client/libs/vorgang-shared-ui/src/test-setup.ts +++ b/goofy-client/libs/vorgang-shared-ui/src/test-setup.ts @@ -1,4 +1,5 @@ import 'jest-preset-angular/setup-jest'; +import '@testing-library/jest-dom'; import { getTestBed } from '@angular/core/testing'; import { diff --git a/goofy-client/libs/vorgang-shared/src/lib/vorgang.model.ts b/goofy-client/libs/vorgang-shared/src/lib/vorgang.model.ts index 6ee0f5b6d4b32d57fb062294d80f8d50dcfa1f70..1db1c68ec2c7f427e600584865ba6d7e572586cc 100644 --- a/goofy-client/libs/vorgang-shared/src/lib/vorgang.model.ts +++ b/goofy-client/libs/vorgang-shared/src/lib/vorgang.model.ts @@ -8,7 +8,8 @@ export interface Vorgang { nummer: string, createdAt: Date, name: string, - nextFrist: Date + nextFrist: Date, + hasPostfachNachricht: boolean } export interface VorgangWithEingang extends Vorgang { diff --git a/goofy-client/libs/vorgang-shared/test/vorgang.ts b/goofy-client/libs/vorgang-shared/test/vorgang.ts index 172246d95a63e3a03298ae1443c045860a2fc94f..d7c3e238d56579346bb5bc76a15d412ca509a81c 100644 --- a/goofy-client/libs/vorgang-shared/test/vorgang.ts +++ b/goofy-client/libs/vorgang-shared/test/vorgang.ts @@ -10,7 +10,8 @@ export function createVorgang(): Vorgang { status: faker.helpers.arrayElement([VorgangStatus.NEU, VorgangStatus.ABGESCHLOSSEN, VorgangStatus.BESCHIEDEN, VorgangStatus.VERWORFEN]), aktenzeichen: faker.lorem.word(), nummer: faker.lorem.word(), - nextFrist: faker.date.future() + nextFrist: faker.date.future(), + hasPostfachNachricht: faker.datatype.boolean() } } diff --git a/goofy-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-list-item.component.html b/goofy-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-list-item.component.html index 697b4e0098b6ad53f6533f2867d22c78dfbbf108..36c4396861b501bd5799f551fc82ed18110214be 100644 --- a/goofy-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-list-item.component.html +++ b/goofy-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-list-item.component.html @@ -10,6 +10,8 @@ class="status-text"></goofy-client-vorgang-status-text> </div> + <goofy-client-vorgang-postfach-status class="postfach-status" [vorgang]="vorgang"></goofy-client-vorgang-postfach-status> + <div class="aktenzeichen"> <mat-icon svgIcon="az"></mat-icon> <span class="ellipsis" goofy-client-aktenzeichen [vorgang]="vorgang"></span> diff --git a/goofy-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-list-item.component.scss b/goofy-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-list-item.component.scss index affafe14f67aeb74767a42aaccf80b0e84596db3..2904887d56a6bd56cfc8c1842ef5db296abdecc0 100644 --- a/goofy-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-list-item.component.scss +++ b/goofy-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-list-item.component.scss @@ -4,11 +4,11 @@ .list-item { display: grid; - grid-template-columns: 50% 40% 10%; + grid-template-columns: 35% 15% 40% 10%; grid-template-areas: - "status wiedervorlagen eingang" - "name name name" - "aktenzeichen vorgang-nummer user-icon"; + "status postfach-status wiedervorlagen eingang" + "name name name name" + "aktenzeichen aktenzeichen vorgang-nummer user-icon"; row-gap: 8px; align-items: center; padding: 16px 24px; @@ -18,6 +18,11 @@ display: flex; align-items: center; } + .postfach-status { + grid-area: postfach-status; + display: flex; + align-items: center; + } .wiedervorlagen { grid-area: wiedervorlagen; white-space: nowrap; @@ -27,6 +32,7 @@ justify-self: end; display: flex; align-items: center; + white-space: nowrap; } .name { grid-area: name; @@ -48,10 +54,10 @@ } @include media('>desktop') { - grid-template-columns: 48% 30% 12% 10%; + grid-template-columns: 23% 25% 30% 12% 10%; grid-template-areas: - "status aktenzeichen eingang user-icon" - "name vorgang-nummer wiedervorlagen user-icon"; + "status postfach-status aktenzeichen eingang user-icon" + "name name vorgang-nummer wiedervorlagen user-icon"; padding: 16px 24px; .eingang { @@ -60,9 +66,9 @@ } @include media('>xxlDesktop') { - grid-template-columns: 25% 16% 16% 20% 10% 10% 3%; + grid-template-columns: 15% 10% 16% 16% 20% 10% 10% 3%; grid-template-areas: - "status aktenzeichen vorgang-nummer name wiedervorlagen eingang user-icon"; + "status postfach-status aktenzeichen vorgang-nummer name wiedervorlagen eingang user-icon"; .name { margin-right: 24px;