diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/postfach-mail/postfach-mail.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/postfach-mail/postfach-mail.cy.ts index 911f2fd2e419de34cc02083bde0866b2ec5a185e..8f32eb567802ce78e439567c3cdc4bcfb5c0bfb8 100644 --- a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/postfach-mail/postfach-mail.cy.ts +++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/postfach-mail/postfach-mail.cy.ts @@ -111,6 +111,7 @@ describe('PostfachMail', () => { }; const vorgangWithoutPostfach: VorgangE2E = createVorgangWithoutPostfachId(); + function createVorgangWithoutPostfachId(): VorgangE2E { return { ...buildVorgang(objectIds[2], 'VorgangWithoutPostfachId'), @@ -523,8 +524,8 @@ describe('PostfachMail', () => { exist(postfachMailPage.getSubnavigation().getBackButton()); }); - it('should show breadcrumb', () => { - contains(postfachMailPage.getBreadcrump(), vorgangWithReply.aktenzeichen); + it('should show Nachrichten heading', () => { + contains(postfachMailPage.getHeading(), postfachMailPage.getHeadingText()); }); }); diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/postfach-mail/postfach-mail.filtered-by-organisationseinheit.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/postfach-mail/postfach-mail.filtered-by-organisationseinheit.cy.ts index 40940b37bbf3e171df48dac38acb764903278f66..3b132859b84722b706bf2b2bf90147331b553595 100644 --- a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/postfach-mail/postfach-mail.filtered-by-organisationseinheit.cy.ts +++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/postfach-mail/postfach-mail.filtered-by-organisationseinheit.cy.ts @@ -92,7 +92,7 @@ describe('PostfachNachrichten filtered by organisationseinheit', () => { visitUrl(authorizedUrl); waitForSpinnerToDisappear(); - exist(postfachMailPage.getBreadcrump()); + exist(postfachMailPage.getHeading()); }); it('should not open postfachNachrichten page', () => { @@ -100,7 +100,7 @@ describe('PostfachNachrichten filtered by organisationseinheit', () => { visitUrl(forbiddenUrl); waitForSpinnerToDisappear(); - notExist(postfachMailPage.getBreadcrump()); + notExist(postfachMailPage.getHeading()); }); it('should show snackbar', () => { @@ -125,7 +125,7 @@ describe('PostfachNachrichten filtered by organisationseinheit', () => { visitUrl(authorizedUrl); waitForSpinnerToDisappear(); - exist(postfachMailPage.getBreadcrump()); + exist(postfachMailPage.getHeading()); }); it('should not open postfachNachrichten page', () => { @@ -133,7 +133,7 @@ describe('PostfachNachrichten filtered by organisationseinheit', () => { visitUrl(forbiddenUrl); waitForSpinnerToDisappear(); - notExist(postfachMailPage.getBreadcrump()); + notExist(postfachMailPage.getHeading()); }); it('should show snackbar', () => { diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-list-wiedervorlage/vorgang-list-wiedervorlagen.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-list-wiedervorlage/vorgang-list-wiedervorlagen.cy.ts index d4344f6bafe227730065bc64264bddddc00264d4..3299c6883e8d07f18fca23e37571d1e17b525621 100644 --- a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-list-wiedervorlage/vorgang-list-wiedervorlagen.cy.ts +++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-list-wiedervorlage/vorgang-list-wiedervorlagen.cy.ts @@ -141,7 +141,7 @@ describe('VorgangList Wiedervorlagen Next Frist', () => { vorgangWithWiedervorlageInFuture.name, ); - notContainClass(vorgang.getWiedervorlageNextFrist(), 'red'); + notContainClass(vorgang.getWiedervorlageNextFrist(), 'text-error'); exist(vorgang.getWiedervorlageNextFrist()); }); @@ -150,7 +150,7 @@ describe('VorgangList Wiedervorlagen Next Frist', () => { vorgangWithWiedervorlageInThePast.name, ); - containClass(vorgang.getWiedervorlageNextFrist(), 'red'); + containClass(vorgang.getWiedervorlageNextFrist(), 'text-error'); exist(vorgang.getWiedervorlageNextFrist()); }); }); diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/wiedervorlage/wiedervorlage.erledigen.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/wiedervorlage/wiedervorlage.erledigen.cy.ts index c71173e2ac474729c22c9a89894e0ffb0e3a660b..b20cea9b1d2b31d36db3535b7526a8032f1b88ed 100644 --- a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/wiedervorlage/wiedervorlage.erledigen.cy.ts +++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/wiedervorlage/wiedervorlage.erledigen.cy.ts @@ -33,7 +33,7 @@ import { WiedervorlageInVorgangE2EComponent } from '../../../components/wiedervo import { WiedervorlageE2EComponent } from '../../../components/wiedervorlage/wiedervorlage-page.e2e.component'; import { WiedervorlageSubnavigationE2EComponent } from '../../../components/wiedervorlage/wiedervorlage-subnavigation'; import { WiedervorlagenInVorgangE2EComponent } from '../../../components/wiedervorlage/wiedervorlagen-in-vorgang.e2e.component'; -import { VorgangE2E } from '../../../model/vorgang'; +import { ClientAttributeNameE2E, VorgangE2E } from '../../../model/vorgang'; import { WiedervorlageE2E } from '../../../model/wiedervorlage'; import { MainPage, @@ -51,12 +51,20 @@ import { notExist, } from '../../../support/cypress.util'; import { loginAsSabine } from '../../../support/user-util'; -import { createVorgang, initVorgang, objectIds } from '../../../support/vorgang-util'; +import { + createAlfaClientAttributes, + createNextWiedervorlageFristClientAttribute, + createVorgang, + initVorgang, + objectIds, +} from '../../../support/vorgang-util'; import { createWiedervorlageAttachedItem, createWiedervorlageItem, } from '../../../support/wiedervorlage-util'; +const wiedervorlageItemFixture: WiedervorlageE2E = require('../../../fixtures/wiedervorlage/wiedervorlage.json'); + describe('Wiedervorlage erledigen/wiedereroeffnen', () => { const mainPage: MainPage = new MainPage(); @@ -76,7 +84,13 @@ describe('Wiedervorlage erledigen/wiedereroeffnen', () => { const wiedervorlageContainer: WiedervorlageE2EComponent = wiedervorlagePage.getWiedervorlageContainer(); - const vorgang: VorgangE2E = createVorgang(); + const vorgang: VorgangE2E = { + ...createVorgang(), + clientAttributes: createAlfaClientAttributes( + ClientAttributeNameE2E.NEXT_WIEDERVORLAGE_FRIST, + createNextWiedervorlageFristClientAttribute(wiedervorlageItemFixture.frist), + ), + }; const wiedervorlageZumErledigen: WiedervorlageE2E = { ...createWiedervorlageItem('WiedervorlageZumErledigen'), @@ -144,8 +158,6 @@ describe('Wiedervorlage erledigen/wiedereroeffnen', () => { waitforSpinnerToAppear(); waitForSpinnerToDisappear(); - wait(1000, 'Wait for async BE to complete'); - containClass(wiedervorlageContainer.getStatusDot(), 'erledigt'); contains( snackBar.getMessage(), @@ -187,8 +199,6 @@ describe('Wiedervorlage erledigen/wiedereroeffnen', () => { waitforSpinnerToAppear(); waitForSpinnerToDisappear(); - wait(1000, 'Wait for async BE to complete'); - notContainClass(wiedervorlageContainer.getStatusDot(), 'erledigt'); contains( snackBar.getMessage(), @@ -219,7 +229,6 @@ describe('Wiedervorlage erledigen/wiedereroeffnen', () => { const locatorIconDefault: string = 'wiedervorlage-icon-default'; it('back to vorgang list', () => { - wait(3000, 'Wait for async BE to complete'); vorgangPage.getSubnavigation().getBackButton().click(); waitForSpinnerToDisappear(); }); @@ -240,8 +249,6 @@ describe('Wiedervorlage erledigen/wiedereroeffnen', () => { subnavigation.erledigen(); waitForSpinnerToDisappear(); - wait(3000, 'Wait for async BE to complete'); - subnavigation.navigateBack(); waitForSpinnerToDisappear(); }); diff --git a/alfa-client/apps/alfa-e2e/src/page-objects/postfach-mail.component.po.ts b/alfa-client/apps/alfa-e2e/src/page-objects/postfach-mail.component.po.ts index bdc5117cb20b887bf36518c3d69e953658dab84a..2fc2899824fd391130ecc1088b277d7d48a1d408 100644 --- a/alfa-client/apps/alfa-e2e/src/page-objects/postfach-mail.component.po.ts +++ b/alfa-client/apps/alfa-e2e/src/page-objects/postfach-mail.component.po.ts @@ -26,10 +26,11 @@ import { PostfachMailSubnavigation } from '../components/postfach/postfach-mail- import { PostfachMailListItem } from '../components/postfach/postfach-mail.e2e.component'; export class PostfachMailPage { - private readonly breadcrump: string = 'postfach-breadcrump'; private readonly root: string = 'postfach-mail-list'; private readonly downloadButton: string = 'postfach-pdf-export-button'; private readonly mailText: string = 'postfach-outgoing-nachricht'; + private readonly heading: string = 'postfach-mail-heading'; + private readonly headingText: string = 'Nachrichten zum Vorgang'; private readonly subnavigation: PostfachMailSubnavigation = new PostfachMailSubnavigation(); @@ -41,8 +42,12 @@ export class PostfachMailPage { return this.subnavigation; } - getBreadcrump() { - return cy.getTestElement(this.breadcrump); + getHeading() { + return cy.getTestElement(this.heading); + } + + getHeadingText() { + return this.headingText; } getListItem(subject: string): PostfachMailListItem { diff --git a/alfa-client/apps/alfa/src/app/app.component.html b/alfa-client/apps/alfa/src/app/app.component.html index c6a6d8832b910a957f0760edc25f00836dc39001..089e9de91f369cb64da483eb2a4316543084ae53 100644 --- a/alfa-client/apps/alfa/src/app/app.component.html +++ b/alfa-client/apps/alfa/src/app/app.component.html @@ -28,7 +28,7 @@ <alfa-header-container [apiRootStateResource]="apiRoot"></alfa-header-container> <div class="relative ml-4 mt-16 flex flex-grow items-start justify-between"> - <main class="mat-app-background"><router-outlet></router-outlet></main> + <div class="mat-app-background relative grow"><router-outlet></router-outlet></div> <section class="mat-app-background right-nav"> <alfa-build-info diff --git a/alfa-client/apps/alfa/src/app/app.component.scss b/alfa-client/apps/alfa/src/app/app.component.scss index 5c499a2b70b35c18334696fd0862a60276f9895f..723100bf7df64890adff753bfe4d2edef28ec7e5 100644 --- a/alfa-client/apps/alfa/src/app/app.component.scss +++ b/alfa-client/apps/alfa/src/app/app.component.scss @@ -41,13 +41,6 @@ border-left: 1rem solid $background; } -main { - position: relative; - flex-grow: 1; - max-width: calc(100vw - 2.25rem); - background-color: #fff; -} - .right-nav { flex-shrink: 0; position: sticky; diff --git a/alfa-client/apps/alfa/src/styles/abstracts/_variables.scss b/alfa-client/apps/alfa/src/styles/abstracts/_variables.scss index 21fa9559b6dcd7eafb4486651d33fb27b07d89c2..cc31ef7e6b34ed79d269902dd8e6775c3bc68603 100644 --- a/alfa-client/apps/alfa/src/styles/abstracts/_variables.scss +++ b/alfa-client/apps/alfa/src/styles/abstracts/_variables.scss @@ -75,6 +75,6 @@ $alfaDarkTheme: mat.define-dark-theme( ) ); -$default-font-size: 16px; +$default-font-size: 1rem; $iconHeight: 24px; diff --git a/alfa-client/apps/alfa/src/styles/layout/_main.scss b/alfa-client/apps/alfa/src/styles/layout/_main.scss index 24416fcac3cc06cd96d4740b7b2d120833cfe3f1..9d074a09ec1c0ebff15cca11c891b4cb1ebb1e5e 100644 --- a/alfa-client/apps/alfa/src/styles/layout/_main.scss +++ b/alfa-client/apps/alfa/src/styles/layout/_main.scss @@ -36,7 +36,7 @@ // TODO Wofür ist der box-shadow? // box-shadow: inset 0 -1px 0 0 rgba(0, 0, 0, 0.08), inset 1px 0 0 rgba(0, 0, 0, 0.08), inset -1px 0 0 rgba(0, 0, 0, 0.08); position: relative; - display: block; + display: flex; min-height: calc(100vh - $header-height - $navigation-height); background-color: #fff; } diff --git a/alfa-client/apps/alfa/src/styles/main.scss b/alfa-client/apps/alfa/src/styles/main.scss index 996cd1abf1187ae258b8cfaee88756c340dc702d..bded7a1477336c22f6f4358a41da3ffbc82c14ee 100644 --- a/alfa-client/apps/alfa/src/styles/main.scss +++ b/alfa-client/apps/alfa/src/styles/main.scss @@ -57,7 +57,6 @@ @import 'libs/wiedervorlage/src/lib/wiedervorlage-list-in-vorgang-list-container/wiedervorlage-list-in-vorgang-list-container.theme'; @import 'libs/user-profile/src/lib/user-profile-in-vorgang-container/user-profile-in-vorgang/user-profile-in-vorgang.theme'; @import 'libs/user-profile/src/lib/user-profile-search-container/user-profile-search-container.theme'; -@import 'libs/vorgang-shared-ui/src/lib/vorgang-nummer/vorgang-nummer.component.theme'; @import 'libs/ui/src/lib/icon/postfach-icon/postfach-icon.component.theme'; @import 'libs/ui/src/lib/ui/button-toggle/button-toogle.theme'; @import 'libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-filter-menu-container/vorgang-filter-menu/_vorgang-filter-item.theme.scss'; @@ -83,3 +82,27 @@ body.dark { @include mat.all-component-colors($alfaDarkTheme); @include custom-components-theme($alfaDarkTheme); } + +body { + --mdc-filled-text-field-label-text-size: 1rem; + --mdc-form-field-label-text-size: 12rem; +} + +// Material Datepicker font-sizes +.mat-datepicker-content { + .mat-button, .mat-fab, .mat-icon-button, .mat-mini-fab, .mat-raised-button,th,td { + font-size: 1rem + } + } + +.mdc-text-field__input { + font-size: 1rem !important; +} + +.mat-calendar-table-header th { + font-size: 0.875rem !important; +} + +.mdc-button__label { + font-size: 0.875rem !important; +} \ No newline at end of file diff --git a/alfa-client/apps/alfa/src/styles/material/_autocomplete.scss b/alfa-client/apps/alfa/src/styles/material/_autocomplete.scss index f4c86c65ffaf0fdeff8b1c1ee050f786136acdca..7cdf9cd39e3d7374043becae32bd2aca23dce90f 100644 --- a/alfa-client/apps/alfa/src/styles/material/_autocomplete.scss +++ b/alfa-client/apps/alfa/src/styles/material/_autocomplete.scss @@ -46,7 +46,7 @@ .mat-mdc-option { border-top: 1px solid rgba(0, 0, 0, 0.08); - font-size: 14px; + font-size: 0.875rem; padding: 0.5rem 1rem; margin-bottom: 0 !important; diff --git a/alfa-client/apps/alfa/src/styles/material/_dialog.scss b/alfa-client/apps/alfa/src/styles/material/_dialog.scss index ac715993faddf5592a3be69d8bf4f0191cda7639..0de26a163ce47c4047a24c95bf8823be55747fe5 100644 --- a/alfa-client/apps/alfa/src/styles/material/_dialog.scss +++ b/alfa-client/apps/alfa/src/styles/material/_dialog.scss @@ -5,9 +5,9 @@ $color-config: mat.get-color-config($theme); $primary-palette: map.get($color-config, 'primary'); - h1 { + h1.mat-mdc-dialog-title { color: mat.get-color-from-palette($primary-palette) !important; - font-size: 24px !important; + font-size: 1.5rem !important; font-weight: normal !important; } diff --git a/alfa-client/apps/alfa/src/styles/material/_expansion-panel.scss b/alfa-client/apps/alfa/src/styles/material/_expansion-panel.scss index e5c83366af924cf6831cde0584e1bbcfc79e1463..6a112124d5c3d02971ca4150048589d2516fa1da 100644 --- a/alfa-client/apps/alfa/src/styles/material/_expansion-panel.scss +++ b/alfa-client/apps/alfa/src/styles/material/_expansion-panel.scss @@ -43,7 +43,7 @@ margin-bottom: 0; font-weight: 500; margin-left: 16px; - font-size: 16px; + font-size: 1rem; } .mat-expansion-panel-body { @@ -57,7 +57,7 @@ h3 { color: inherit; - font-size: 14px !important; + font-size: 0.875rem !important; font-weight: 500 !important; margin-left: 0; } @@ -93,7 +93,7 @@ background-color: inherit; box-shadow: none; border-radius: 0; - font-size: 14px; + font-size: 0.875rem; } :host-context(.dark) .mat-expansion-panel { diff --git a/alfa-client/apps/alfa/src/styles/material/_menu.scss b/alfa-client/apps/alfa/src/styles/material/_menu.scss index 835661a949456ec3e8e6d43eeb8769b7a43b9a81..44aff52c10c60dbf929877ec4ad7ae9e8f68d7a5 100644 --- a/alfa-client/apps/alfa/src/styles/material/_menu.scss +++ b/alfa-client/apps/alfa/src/styles/material/_menu.scss @@ -19,5 +19,6 @@ alfa-help-menu { height: 40px; width: auto; padding: 0.5rem; + font-size: 0.875rem; } } diff --git a/alfa-client/apps/alfa/src/styles/material/_tabs.scss b/alfa-client/apps/alfa/src/styles/material/_tabs.scss index bee57c8e73b9d5e394d29aa191893e7861a5d667..ea2ff487ba61bf4575526a42460f329721d72a13 100644 --- a/alfa-client/apps/alfa/src/styles/material/_tabs.scss +++ b/alfa-client/apps/alfa/src/styles/material/_tabs.scss @@ -35,3 +35,6 @@ margin-right: 0 !important; } } +.mat-mdc-tab .mdc-tab__text-label { + font-size: 0.875rem; +} \ No newline at end of file diff --git a/alfa-client/apps/alfa/src/styles/material/_tooltip.scss b/alfa-client/apps/alfa/src/styles/material/_tooltip.scss index 543eb47ab24a3ce0049bb07400bcf584e2e58af7..44e46b2feb56657f26f6ac3db31b1fcee8a20c32 100644 --- a/alfa-client/apps/alfa/src/styles/material/_tooltip.scss +++ b/alfa-client/apps/alfa/src/styles/material/_tooltip.scss @@ -1,5 +1,5 @@ .mat-tooltip { - font-size: 12px !important; + font-size: 0.75rem !important; padding-top: 2px !important; padding-bottom: 2px !important; margin-top: 2px !important; diff --git a/alfa-client/libs/binary-file/src/lib/binary-file-container/binary-file-container.component.scss b/alfa-client/libs/binary-file/src/lib/binary-file-container/binary-file-container.component.scss index 7dcaaf304d76dd842af6bcbcc811021fa5c8904f..75e46ace311d763326b4b99335aee48d5ef44996 100644 --- a/alfa-client/libs/binary-file/src/lib/binary-file-container/binary-file-container.component.scss +++ b/alfa-client/libs/binary-file/src/lib/binary-file-container/binary-file-container.component.scss @@ -25,5 +25,5 @@ position: relative; max-width: 100%; padding: 4px 0; - font-size: 14px; + font-size: 0.875rem; } diff --git a/alfa-client/libs/binary-file/src/lib/binary-file-container/binary-file/binary-file.component.scss b/alfa-client/libs/binary-file/src/lib/binary-file-container/binary-file/binary-file.component.scss index fb3024df1b4d16d68a56c7751548f96af38dabbd..17be8d4a626b041450d293d151ef4b4d128e6079 100644 --- a/alfa-client/libs/binary-file/src/lib/binary-file-container/binary-file/binary-file.component.scss +++ b/alfa-client/libs/binary-file/src/lib/binary-file-container/binary-file/binary-file.component.scss @@ -89,7 +89,7 @@ } .size { - font-size: 12px; + font-size: 0.75rem; flex-shrink: 0; margin-right: 4px; diff --git a/alfa-client/libs/binary-file/src/lib/vertical-binary-file-list/vertical-binary-file-list.component.html b/alfa-client/libs/binary-file/src/lib/vertical-binary-file-list/vertical-binary-file-list.component.html index 187ab55187039b6ca7ea2f9d6b1ab8e0cc456a4a..1dc4313e5e3710b0c1550043dd4c1fa4f6e3d04d 100644 --- a/alfa-client/libs/binary-file/src/lib/vertical-binary-file-list/vertical-binary-file-list.component.html +++ b/alfa-client/libs/binary-file/src/lib/vertical-binary-file-list/vertical-binary-file-list.component.html @@ -27,8 +27,12 @@ *ngIf="binaryFileListStateResource.resource" [stateResource]="binaryFileListStateResource" > - <ods-attachment-wrapper [title]="title" data-test-id="file-list"> - <ods-attachment-header [title]="title"> + <ods-attachment-wrapper data-test-id="file-list"> + <ods-attachment-header + [title]="title" + *ngIf="title || archiveDownloadUri" + data-test-id="file-list-header" + > <alfa-download-archive-file-button-container *ngIf="archiveDownloadUri" data-test-class="download-archive-file-button" diff --git a/alfa-client/libs/binary-file/src/lib/vertical-binary-file-list/vertical-binary-file-list.component.spec.ts b/alfa-client/libs/binary-file/src/lib/vertical-binary-file-list/vertical-binary-file-list.component.spec.ts index a42980975bd6362343a865a3dae296bbd3191728..f0ec5b2c573b721bfd18afefde63750a310a0310 100644 --- a/alfa-client/libs/binary-file/src/lib/vertical-binary-file-list/vertical-binary-file-list.component.spec.ts +++ b/alfa-client/libs/binary-file/src/lib/vertical-binary-file-list/vertical-binary-file-list.component.spec.ts @@ -37,7 +37,7 @@ import { createBinaryFileListResource, createBinaryFileResource, } from 'libs/binary-file-shared/test/binary-file'; -import { getDataTestClassOf } from 'libs/tech-shared/test/data-test'; +import { getDataTestClassOf, getDataTestIdOf } from 'libs/tech-shared/test/data-test'; import { MockComponent } from 'ng-mocks'; import { BinaryFile2ContainerComponent } from '../binary-file2-container/binary-file2-container.component'; import { DownloadArchiveFileButtonContainerComponent } from '../download-archive-file-button-container/download-archive-file-button-container.component'; @@ -48,6 +48,7 @@ describe('VerticalBinaryFileListComponent', () => { let fixture: ComponentFixture<VerticalBinaryFileListComponent>; const downloadArchiveFileButton: string = getDataTestClassOf('download-archive-file-button'); + const fileListHeader: string = getDataTestIdOf('file-list-header'); const binaryFile: BinaryFileResource = createBinaryFileResource(); @@ -109,7 +110,37 @@ describe('VerticalBinaryFileListComponent', () => { }); }); + describe('attachment header', () => { + it('should show header if there is title', () => { + component.title = 'Title'; + + fixture.detectChanges(); + + existsAsHtmlElement(fixture, fileListHeader); + }); + + it('should show header if there is uri', () => { + component.archiveDownloadUri = faker.internet.url(); + + fixture.detectChanges(); + + existsAsHtmlElement(fixture, fileListHeader); + }); + + it('should not show header if there is no uri or title', () => { + component.title = ''; + + fixture.detectChanges(); + + notExistsAsHtmlElement(fixture, fileListHeader); + }); + }); + describe('download archive button', () => { + beforeEach(() => { + component.title = 'Test title'; + }); + const downloadUri: ResourceUri = faker.internet.url(); it('should be visible if uri exists', () => { diff --git a/alfa-client/libs/design-system/src/lib/attachment-header/attachment-header.component.spec.ts b/alfa-client/libs/design-system/src/lib/attachment-header/attachment-header.component.spec.ts index b1484d6418804db087a5418a8eb26a8e41114398..deccecf135ec6549e66369281d7ca0338a76b2e1 100644 --- a/alfa-client/libs/design-system/src/lib/attachment-header/attachment-header.component.spec.ts +++ b/alfa-client/libs/design-system/src/lib/attachment-header/attachment-header.component.spec.ts @@ -1,3 +1,4 @@ +import { existsAsHtmlElement, notExistsAsHtmlElement } from '@alfa-client/test-utils'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { AttachmentHeaderComponent } from './attachment-header.component'; @@ -18,4 +19,19 @@ describe('AttachmentHeaderComponent', () => { it('should create', () => { expect(component).toBeTruthy(); }); + describe('title', () => { + it('should show heading', () => { + component.title = 'Test'; + fixture.detectChanges(); + + existsAsHtmlElement(fixture, 'h4'); + }); + + it('should not show heading', () => { + component.title = ''; + fixture.detectChanges(); + + notExistsAsHtmlElement(fixture, 'h4'); + }); + }); }); diff --git a/alfa-client/libs/design-system/src/lib/attachment-header/attachment-header.component.ts b/alfa-client/libs/design-system/src/lib/attachment-header/attachment-header.component.ts index dadeccb218137f87612c2d67a12c7087a6286927..6dd5bdaa1839e7782d20867a60327d9ab32cded6 100644 --- a/alfa-client/libs/design-system/src/lib/attachment-header/attachment-header.component.ts +++ b/alfa-client/libs/design-system/src/lib/attachment-header/attachment-header.component.ts @@ -5,8 +5,8 @@ import { Component, Input } from '@angular/core'; selector: 'ods-attachment-header', standalone: true, imports: [CommonModule], - template: `<div class="flex h-11 items-center justify-between px-3"> - <h4 class="text-sm font-medium text-text">{{ title }}</h4> + template: `<div class="flex h-11 items-center justify-between px-3 empty:hidden"> + <h4 class="text-sm font-medium text-text" *ngIf="title">{{ title }}</h4> <ng-content select="[action-buttons]"></ng-content> </div>`, }) diff --git a/alfa-client/libs/historie/src/lib/historie-container/historie-list/historie-item-header/historie-item-header.component.scss b/alfa-client/libs/historie/src/lib/historie-container/historie-list/historie-item-header/historie-item-header.component.scss index 9eea5298d9ed6bb65a9907b621cd78aad006e467..98885dff4e1dd8036f867f865eb57eb5c0fb4fa6 100644 --- a/alfa-client/libs/historie/src/lib/historie-container/historie-list/historie-item-header/historie-item-header.component.scss +++ b/alfa-client/libs/historie/src/lib/historie-container/historie-list/historie-item-header/historie-item-header.component.scss @@ -26,7 +26,7 @@ white-space: nowrap; align-items: center; min-height: 44px; - font-size: 14px; + font-size: 0.875rem; width: 100%; } diff --git a/alfa-client/libs/historie/src/lib/historie-container/historie-list/historie-item-vorgang-created/historie-item-vorgang-created.component.scss b/alfa-client/libs/historie/src/lib/historie-container/historie-list/historie-item-vorgang-created/historie-item-vorgang-created.component.scss index f4e6e49e807966d56e3f9beae6b8a010ba4ed9a7..349c181b396d022cfc4fb9687f4baa47ea8a246b 100644 --- a/alfa-client/libs/historie/src/lib/historie-container/historie-list/historie-item-vorgang-created/historie-item-vorgang-created.component.scss +++ b/alfa-client/libs/historie/src/lib/historie-container/historie-list/historie-item-vorgang-created/historie-item-vorgang-created.component.scss @@ -29,7 +29,7 @@ display: block; margin-top: 0.5rem; min-height: 44px; - font-size: 14px; + font-size: 0.875rem; } p { diff --git a/alfa-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-list-in-vorgang/kommentar-list-item-in-vorgang/kommentar-list-item-in-vorgang.component.html b/alfa-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-list-in-vorgang/kommentar-list-item-in-vorgang/kommentar-list-item-in-vorgang.component.html index 9a94d2795a84d8bad27b23be6e11bde8eec441c3..5564806d9103ba21af82622fda3aae70e8880595 100644 --- a/alfa-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-list-in-vorgang/kommentar-list-item-in-vorgang/kommentar-list-item-in-vorgang.component.html +++ b/alfa-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-list-in-vorgang/kommentar-list-item-in-vorgang/kommentar-list-item-in-vorgang.component.html @@ -24,7 +24,7 @@ --> -<div *ngIf="!editMode" class="plain-text"> +<div *ngIf="!editMode" class="plain-text text-sm"> <button [attr.data-test-id]="'kommentar-item-' + (kommentar.text | convertForDataTest)" (click)="edit()" @@ -36,7 +36,7 @@ [kommentar]="kommentar" data-test-class="kommentar-created-by" ></alfa-user-profile-in-kommentar-container> - <span data-test-id="kommentar-created-at" class="date">{{ + <span data-test-id="kommentar-created-at" class="date text-sm">{{ kommentar.createdAt | formatDateWithTimePipe: false }}</span> </div> diff --git a/alfa-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-list-in-vorgang/kommentar-list-item-in-vorgang/kommentar-list-item-in-vorgang.component.scss b/alfa-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-list-in-vorgang/kommentar-list-item-in-vorgang/kommentar-list-item-in-vorgang.component.scss index bf52bd6b8383f611228097a4f129859c93fbdf78..9c44c9feeccad1edba5bb907ce9624b8d4c05b96 100644 --- a/alfa-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-list-in-vorgang/kommentar-list-item-in-vorgang/kommentar-list-item-in-vorgang.component.scss +++ b/alfa-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-list-in-vorgang/kommentar-list-item-in-vorgang/kommentar-list-item-in-vorgang.component.scss @@ -54,7 +54,6 @@ button { .date { flex-shrink: 0; - font-size: 13px; } } diff --git a/alfa-client/libs/navigation/src/lib/build-info/build-info.component.scss b/alfa-client/libs/navigation/src/lib/build-info/build-info.component.scss index fbbb84ab523edbd1ed3fd2d158e9465a5df9342b..73f433970c0765f31b0f88b78a30fad26513afdb 100644 --- a/alfa-client/libs/navigation/src/lib/build-info/build-info.component.scss +++ b/alfa-client/libs/navigation/src/lib/build-info/build-info.component.scss @@ -46,7 +46,7 @@ p { white-space: nowrap; font-style: normal; font-weight: 400; - font-size: 11px; + font-size: 0.6875rem; color: #999; &.version { diff --git a/alfa-client/libs/postfach/src/lib/postfach-mail-form/postfach-mail-form.component.scss b/alfa-client/libs/postfach/src/lib/postfach-mail-form/postfach-mail-form.component.scss index 5b22d572e2a37eb567ba59013f2fc06473826ff6..30d9608bbff2af095d57a37beb36da3bf8b91f7d 100644 --- a/alfa-client/libs/postfach/src/lib/postfach-mail-form/postfach-mail-form.component.scss +++ b/alfa-client/libs/postfach/src/lib/postfach-mail-form/postfach-mail-form.component.scss @@ -49,8 +49,7 @@ margin-bottom: 4px; .label { - font-size: 10.5px; - opacity: 0.6; + font-size: 0.75rem; } .value { diff --git a/alfa-client/libs/postfach/src/lib/postfach-mail-list-container/postfach-mail-list/postfach-mail/postfach-mail-date/postfach-mail-date.component.scss b/alfa-client/libs/postfach/src/lib/postfach-mail-list-container/postfach-mail-list/postfach-mail/postfach-mail-date/postfach-mail-date.component.scss index 68891d3304c26291de9f600fa56848c0313f3974..3bfec3b5734dae42f7ecef3a563d6b859bf8111b 100644 --- a/alfa-client/libs/postfach/src/lib/postfach-mail-list-container/postfach-mail-list/postfach-mail/postfach-mail-date/postfach-mail-date.component.scss +++ b/alfa-client/libs/postfach/src/lib/postfach-mail-list-container/postfach-mail-list/postfach-mail/postfach-mail-date/postfach-mail-date.component.scss @@ -22,6 +22,6 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ .date { - font-size: 13px; + font-size: 0.875rem; white-space: nowrap; } diff --git a/alfa-client/libs/postfach/src/lib/postfach-page-container/postfach-page/postfach-page-mail-list/postfach-page-mail-list.component.html b/alfa-client/libs/postfach/src/lib/postfach-page-container/postfach-page/postfach-page-mail-list/postfach-page-mail-list.component.html index 3aac0b25924886e054d181ae7558219d0545e68d..42008dc0e49821e2041d2b5cf06a456f2026b8e4 100644 --- a/alfa-client/libs/postfach/src/lib/postfach-page-container/postfach-page/postfach-page-mail-list/postfach-page-mail-list.component.html +++ b/alfa-client/libs/postfach/src/lib/postfach-page-container/postfach-page/postfach-page-mail-list/postfach-page-mail-list.component.html @@ -30,7 +30,7 @@ | toEmbeddedResources: postfachMailListLinkRel.POSTFACH_MAIL_LIST " [attr.data-test-id]="(postfachMail.subject | convertForDataTest) + '-item'" - class="postfach postfach-links-disabled" + class="postfach postfach-links-disabled w-full lg:w-1/2" [postfachMail]="postfachMail" > </alfa-postfach-mail> diff --git a/alfa-client/libs/postfach/src/lib/postfach-page-container/postfach-page/postfach-page-mail-list/postfach-page-mail-list.component.scss b/alfa-client/libs/postfach/src/lib/postfach-page-container/postfach-page/postfach-page-mail-list/postfach-page-mail-list.component.scss index 7aa658e02c12f707953b25897c98bbec80c6d55a..5d7c585646f315886cd9f453d97c87449abcb8b1 100644 --- a/alfa-client/libs/postfach/src/lib/postfach-page-container/postfach-page/postfach-page-mail-list/postfach-page-mail-list.component.scss +++ b/alfa-client/libs/postfach/src/lib/postfach-page-container/postfach-page/postfach-page-mail-list/postfach-page-mail-list.component.scss @@ -24,7 +24,6 @@ .postfach { display: flex; flex-direction: column; - width: 100%; border-bottom: 1px solid rgb(0 0 0 / 8%); padding: 16px 24px 16px 28px; margin: 0; @@ -33,7 +32,7 @@ .subject { display: flex; align-items: center; - font-size: 16px; + font-size: 1rem; font-weight: 400; margin: 2px 0; position: relative; @@ -53,7 +52,7 @@ } .created-at { - font-size: 13px; + font-size: 0.875rem; position: absolute; right: 0; top: 0; diff --git a/alfa-client/libs/postfach/src/lib/postfach-page-container/postfach-page/postfach-page.component.html b/alfa-client/libs/postfach/src/lib/postfach-page-container/postfach-page/postfach-page.component.html index 8c220b59d27e750b5a1256abdfd85aaae346a9d6..0ffd6b1df26988e4f6fe93c69f4af1e52f9fc8a3 100644 --- a/alfa-client/libs/postfach/src/lib/postfach-page-container/postfach-page/postfach-page.component.html +++ b/alfa-client/libs/postfach/src/lib/postfach-page-container/postfach-page/postfach-page.component.html @@ -27,8 +27,10 @@ <ozgcloud-back-button linkTo="../" label="zurück zur Detailseite"></ozgcloud-back-button> </ozgcloud-subnavigation> -<div class="l-scroll-area--full"> - <alfa-vorgang-in-postfach-breadcrumb-container></alfa-vorgang-in-postfach-breadcrumb-container> +<div class="l-scroll-area--full flex flex-col"> + <h1 data-test-id="postfach-mail-heading" class="pl-7 pt-4 text-lg font-medium"> + Nachrichten zum Vorgang + </h1> <alfa-postfach-page-mail-list [postfachMailListStateResource]="postfachMailListStateResource" data-test-id="postfach-mail-list" diff --git a/alfa-client/libs/postfach/src/lib/postfach-page-container/postfach-page/postfach-page.component.spec.ts b/alfa-client/libs/postfach/src/lib/postfach-page-container/postfach-page/postfach-page.component.spec.ts index 3fa88754e5c94f6717ac4fea2a8d901c3022b6f4..034ad05b31e47a42fd9322fed0202822a746f9e7 100644 --- a/alfa-client/libs/postfach/src/lib/postfach-page-container/postfach-page/postfach-page.component.spec.ts +++ b/alfa-client/libs/postfach/src/lib/postfach-page-container/postfach-page/postfach-page.component.spec.ts @@ -21,10 +21,9 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ +import { BackButtonComponent, SubnavigationComponent } from '@alfa-client/ui'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { MatIcon } from '@angular/material/icon'; -import { BackButtonComponent, SubnavigationComponent } from '@alfa-client/ui'; -import { VorgangInPostfachBreadcrumbContainerComponent } from '@alfa-client/vorgang-shared-ui'; import { MockComponent } from 'ng-mocks'; import { PostfachPageMailListComponent } from './postfach-page-mail-list/postfach-page-mail-list.component'; import { PostfachPageComponent } from './postfach-page.component'; @@ -41,7 +40,6 @@ describe('PostfachPageComponent', () => { MockComponent(BackButtonComponent), MockComponent(SubnavigationComponent), MockComponent(PostfachPageMailListComponent), - MockComponent(VorgangInPostfachBreadcrumbContainerComponent), ], }).compileComponents(); }); diff --git a/alfa-client/libs/ui/src/lib/ui/download-button/download-button.component.html b/alfa-client/libs/ui/src/lib/ui/download-button/download-button.component.html index 2d3bb50998667c75d6e563071d9de2a9ab088eb6..7d38323f46aa6ab9afabe4ab3226220cf2730d89 100644 --- a/alfa-client/libs/ui/src/lib/ui/download-button/download-button.component.html +++ b/alfa-client/libs/ui/src/lib/ui/download-button/download-button.component.html @@ -8,5 +8,5 @@ [color]="'primary'" > <mat-icon>save_alt</mat-icon> - <span>{{ text }}</span> + <span class="text-sm">{{ text }}</span> </a> diff --git a/alfa-client/libs/ui/src/lib/ui/expansion-panel/_expansion-panel.theme.scss b/alfa-client/libs/ui/src/lib/ui/expansion-panel/_expansion-panel.theme.scss index 6847720e6a809da6652b2ae2a87c87f9ccf04a48..ba505ad18cce11ca6b59ad4fecbf9e0f17b8be62 100644 --- a/alfa-client/libs/ui/src/lib/ui/expansion-panel/_expansion-panel.theme.scss +++ b/alfa-client/libs/ui/src/lib/ui/expansion-panel/_expansion-panel.theme.scss @@ -43,7 +43,7 @@ ozgcloud-expansion-panel { margin-bottom: 0; font-weight: 500; margin-left: 8px; - font-size: 16px; + font-size: 1rem; } .mat-expansion-panel-body { diff --git a/alfa-client/libs/ui/src/lib/ui/fixed-dialog/_fixed-dialog.theme.scss b/alfa-client/libs/ui/src/lib/ui/fixed-dialog/_fixed-dialog.theme.scss index f71cbc89bc0ca6eccd4030537e653e21b0ef83b2..5e3662430bdfb5e5f7106997756cd7645620ed10 100644 --- a/alfa-client/libs/ui/src/lib/ui/fixed-dialog/_fixed-dialog.theme.scss +++ b/alfa-client/libs/ui/src/lib/ui/fixed-dialog/_fixed-dialog.theme.scss @@ -33,7 +33,7 @@ margin: 0; padding: 0 4px 0 16px; color: #fff; - font-size: 16px; + font-size: 1rem; font-weight: normal; justify-content: space-between; align-items: center; @@ -52,7 +52,7 @@ padding: 0; } .mat-mdc-form-field-error { - font-size: 12px; + font-size: 0.75rem; } .mdc-dialog__content { line-height: 20px; diff --git a/alfa-client/libs/ui/src/lib/ui/http-error-dialog/connection-timeout-retry-dialog/connection-timeout-retry-dialog.component.scss b/alfa-client/libs/ui/src/lib/ui/http-error-dialog/connection-timeout-retry-dialog/connection-timeout-retry-dialog.component.scss index 6d01e5239cf92f45f39c7c0f6344a683f858e0bf..547ff80f6141d27b901ff4f2e28a6b5ac3049b03 100644 --- a/alfa-client/libs/ui/src/lib/ui/http-error-dialog/connection-timeout-retry-dialog/connection-timeout-retry-dialog.component.scss +++ b/alfa-client/libs/ui/src/lib/ui/http-error-dialog/connection-timeout-retry-dialog/connection-timeout-retry-dialog.component.scss @@ -23,13 +23,13 @@ */ h1 { font-weight: normal; - font-size: 24px; + font-size: 1.5rem; display: flex; align-items: center; .mat-icon { margin-right: 8px; - font-size: 30px; + font-size: 1.875rem; width: 30px; height: 30px; } diff --git a/alfa-client/libs/ui/src/lib/ui/http-error-dialog/connection-timeout-retry-fail-dialog/connection-timeout-retry-fail-dialog.component.scss b/alfa-client/libs/ui/src/lib/ui/http-error-dialog/connection-timeout-retry-fail-dialog/connection-timeout-retry-fail-dialog.component.scss index 48d8d08527c969b705c347d217d527c30aa6cd39..c3fa5daffcee059afdc534b5fdf6fb369c99b9f0 100644 --- a/alfa-client/libs/ui/src/lib/ui/http-error-dialog/connection-timeout-retry-fail-dialog/connection-timeout-retry-fail-dialog.component.scss +++ b/alfa-client/libs/ui/src/lib/ui/http-error-dialog/connection-timeout-retry-fail-dialog/connection-timeout-retry-fail-dialog.component.scss @@ -23,13 +23,13 @@ */ h2 { font-weight: normal; - font-size: 24px; + font-size: 1.5rem; display: flex; align-items: center; .mat-icon { margin-right: 8px; - font-size: 30px; + font-size: 1.875rem; width: 30px; height: 30px; } diff --git a/alfa-client/libs/ui/src/lib/ui/mattooltip/mattooltip.default.ts b/alfa-client/libs/ui/src/lib/ui/mattooltip/mattooltip.default.ts index ba74384d51851cefb3f9e85aa82f0d695f8f02bb..3c11d7da1b6616bf23f2d13790a38510cbf0e536 100644 --- a/alfa-client/libs/ui/src/lib/ui/mattooltip/mattooltip.default.ts +++ b/alfa-client/libs/ui/src/lib/ui/mattooltip/mattooltip.default.ts @@ -4,4 +4,6 @@ export const matTooltipDefaultOptions: MatTooltipDefaultOptions = { showDelay: 1500, hideDelay: 0, touchendHideDelay: 1500, + positionAtOrigin: true, + disableTooltipInteractivity: true, }; diff --git a/alfa-client/libs/ui/src/lib/ui/menu-item/menu-item.component.html b/alfa-client/libs/ui/src/lib/ui/menu-item/menu-item.component.html index 2a127b78127ac601a4ba02e88f6b428795d26970..43c0239c59f88b1bc4f8d9c49e428ba5a97a2c5f 100644 --- a/alfa-client/libs/ui/src/lib/ui/menu-item/menu-item.component.html +++ b/alfa-client/libs/ui/src/lib/ui/menu-item/menu-item.component.html @@ -6,7 +6,7 @@ </ng-template> <div> - <div class="headline">{{ headline }}</div> - <div class="text">{{ text }}</div> + <div class="text-base font-medium">{{ headline }}</div> + <div class="mb-3 text-sm font-normal">{{ text }}</div> <ng-content></ng-content> </div> diff --git a/alfa-client/libs/ui/src/lib/ui/menu-item/menu-item.component.scss b/alfa-client/libs/ui/src/lib/ui/menu-item/menu-item.component.scss index 41f783ee481e672a91b6b728e277ef0ccbf7f868..369725c1daec6c0954ab191e89b33aac2cf12aac 100644 --- a/alfa-client/libs/ui/src/lib/ui/menu-item/menu-item.component.scss +++ b/alfa-client/libs/ui/src/lib/ui/menu-item/menu-item.component.scss @@ -15,17 +15,6 @@ ozgcloud-svgicon-big { margin-right: 1rem; } -.headline { - font-weight: 500; - font-size: 16px; -} - -.text { - font-weight: 400; - font-size: 14px; - margin-bottom: 10px; -} - :host-context(.dark) { color: #fff; background-color: #393939; diff --git a/alfa-client/libs/ui/src/lib/ui/notification/internal-server-error-dialog/internal-server-error-dialog.component.scss b/alfa-client/libs/ui/src/lib/ui/notification/internal-server-error-dialog/internal-server-error-dialog.component.scss index cc051218ffa5dbef0d2c3ad72469e6e01b8baeb9..6f31abcc6bb5a5554ca7f88a30b784eb2f48f450 100644 --- a/alfa-client/libs/ui/src/lib/ui/notification/internal-server-error-dialog/internal-server-error-dialog.component.scss +++ b/alfa-client/libs/ui/src/lib/ui/notification/internal-server-error-dialog/internal-server-error-dialog.component.scss @@ -27,7 +27,7 @@ h1 { .mat-icon { margin-right: 8px; - font-size: 30px; + font-size: 1.875rem; width: 30px; height: 30px; } diff --git a/alfa-client/libs/ui/src/lib/ui/open-url-button/open-url-button.component.html b/alfa-client/libs/ui/src/lib/ui/open-url-button/open-url-button.component.html index d5da9183f237f187be716d871c9181e5691438d5..f9b4506ca32ddc37a7ae623293999da1391d81ba 100644 --- a/alfa-client/libs/ui/src/lib/ui/open-url-button/open-url-button.component.html +++ b/alfa-client/libs/ui/src/lib/ui/open-url-button/open-url-button.component.html @@ -10,5 +10,5 @@ class="button" > <mat-icon>open_in_new</mat-icon> - <span>{{ text }}</span> + <span class="text-sm">{{ text }}</span> </a> diff --git a/alfa-client/libs/ui/src/lib/ui/ozgcloud-button/shared/ozgcloud-button-content/ozgcloud-button-content.component.html b/alfa-client/libs/ui/src/lib/ui/ozgcloud-button/shared/ozgcloud-button-content/ozgcloud-button-content.component.html index 43d399abb04e8fc3417be4b88a13c6d5d2d5b810..30f7ac2c092a194e06bafd2e9cafa606a858a8ee 100644 --- a/alfa-client/libs/ui/src/lib/ui/ozgcloud-button/shared/ozgcloud-button-content/ozgcloud-button-content.component.html +++ b/alfa-client/libs/ui/src/lib/ui/ozgcloud-button/shared/ozgcloud-button-content/ozgcloud-button-content.component.html @@ -16,7 +16,7 @@ > </mat-icon> -<span *ngIf="text" data-test-class="button-with-spinner-text">{{ text }}</span> +<span *ngIf="text" class="text-sm" data-test-class="button-with-spinner-text">{{ text }}</span> <ozgcloud-spinner [diameter]="22" padding="0" [stateResource]="stateResource" [show]="showSpinner"> </ozgcloud-spinner> diff --git a/alfa-client/libs/ui/src/lib/ui/slide-toggle/slide-toggle.component.html b/alfa-client/libs/ui/src/lib/ui/slide-toggle/slide-toggle.component.html index a76b8bea8332621394acda1e83b7aebfbd987394..5812a93c4d9789a4127f65101278302a13ce02e5 100644 --- a/alfa-client/libs/ui/src/lib/ui/slide-toggle/slide-toggle.component.html +++ b/alfa-client/libs/ui/src/lib/ui/slide-toggle/slide-toggle.component.html @@ -29,5 +29,5 @@ [matTooltip]="toolTip" [checked]="checked" (change)="valueChanged.emit($event.checked)" - >{{ label }} + ><span class="text-sm">{{ label }}</span> </mat-slide-toggle> diff --git a/alfa-client/libs/user-profile/src/lib/user-profile-in-header-container/user-profile-in-header/user-profile-in-header.component.html b/alfa-client/libs/user-profile/src/lib/user-profile-in-header-container/user-profile-in-header/user-profile-in-header.component.html index 3fb9f5af72a952068f8d799e64ab20156999d96f..6a738849018cd80575928861fbe1a876b1c8dde3 100644 --- a/alfa-client/libs/user-profile/src/lib/user-profile-in-header-container/user-profile-in-header/user-profile-in-header.component.html +++ b/alfa-client/libs/user-profile/src/lib/user-profile-in-header-container/user-profile-in-header/user-profile-in-header.component.html @@ -38,6 +38,6 @@ <ozgcloud-menu #accountMenu data-test-id="account-menu"> <button mat-menu-item (click)="logoutEmitter.emit()" data-test-id="logout-button"> <mat-icon>logout</mat-icon> - <span>Abmelden</span> + <span class="text-base">Abmelden</span> </button> </ozgcloud-menu> diff --git a/alfa-client/libs/vorgang-detail/src/lib/aktenzeichen-edit-dialog/aktenzeichen-edit-dialog.component.scss b/alfa-client/libs/vorgang-detail/src/lib/aktenzeichen-edit-dialog/aktenzeichen-edit-dialog.component.scss index b61ea6c2be7bb5ea25305e910e0a68287228372b..7f465ba13ac6b4c51d5570ab26e7b4e77e93a158 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/aktenzeichen-edit-dialog/aktenzeichen-edit-dialog.component.scss +++ b/alfa-client/libs/vorgang-detail/src/lib/aktenzeichen-edit-dialog/aktenzeichen-edit-dialog.component.scss @@ -50,7 +50,7 @@ .hinweis { grid-area: hinweis; padding-left: 16px; - font-size: 14px; + font-size: 0.875rem; } ozgcloud-stroked-button-with-spinner { diff --git a/alfa-client/libs/vorgang-detail/src/lib/aktenzeichen-editable/aktenzeichen-editable.component.html b/alfa-client/libs/vorgang-detail/src/lib/aktenzeichen-editable/aktenzeichen-editable.component.html index 12e280dd9853ea90cd3db02843929d801bf39301..3f94a6da451f1731445c8b37487d6dfc03eb0fe6 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/aktenzeichen-editable/aktenzeichen-editable.component.html +++ b/alfa-client/libs/vorgang-detail/src/lib/aktenzeichen-editable/aktenzeichen-editable.component.html @@ -23,14 +23,14 @@ unter der Lizenz sind dem Lizenztext zu entnehmen. --> -<div class="horizontal"> - <div alfa-aktenzeichen class="ellipsis" [vorgang]="vorgang"></div> - <ng-container *ngIf="vorgang | hasLink: linkRel.SET_AKTENZEICHEN"> +<div class="flex flex-shrink" alfa-aktenzeichen [vorgang]="vorgang"></div> +<ng-container *ngIf="vorgang | hasLink: linkRel.SET_AKTENZEICHEN"> + <div class="relative w-12"> <ozgcloud-icon-button-primary svgIcon="edit" tooltip="Aktenzeichen bearbeiten" data-test-id="aktenzeichen-editieren" (clickEmitter)="onEdit()" ></ozgcloud-icon-button-primary> - </ng-container> -</div> + </div> +</ng-container> diff --git a/alfa-client/libs/vorgang-detail/src/lib/aktenzeichen-editable/aktenzeichen-editable.component.scss b/alfa-client/libs/vorgang-detail/src/lib/aktenzeichen-editable/aktenzeichen-editable.component.scss index be66b5c81cdb771090d274585ae82dfe028a4b6d..dbb9218a330a285d37db355ff911cac5a991f9a9 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/aktenzeichen-editable/aktenzeichen-editable.component.scss +++ b/alfa-client/libs/vorgang-detail/src/lib/aktenzeichen-editable/aktenzeichen-editable.component.scss @@ -22,21 +22,8 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -.horizontal { - display: flex; - align-items: center; - font-size: 16px; - font-weight: 300; -} - -.ellipsis { - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; -} - // Workaround Material's fixed 48px height :host ::ng-deep ozgcloud-icon-button-primary button { position: absolute; - top: -24px; + top: -14px; } diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-antragsteller/vorgang-detail-antragsteller.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-antragsteller/vorgang-detail-antragsteller.component.html index d0a6bdc22500a72a94d95c18d503d083c005f7a9..11c9b0139c83dc5fbef7f1235df0c3a3559e19cb 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-antragsteller/vorgang-detail-antragsteller.component.html +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-antragsteller/vorgang-detail-antragsteller.component.html @@ -23,13 +23,13 @@ unter der Lizenz sind dem Lizenztext zu entnehmen. --> -<h3 class="font-medium leading-6 mb-2">Antragsteller</h3> -<ul - *ngIf="antragstellerExists; else noAntragsteller" - data-test-id="antragsteller-list" - class="text-sm leading-6 my-1" +<h3 class="mb-2 font-medium leading-6">Antragsteller</h3> +<ul + *ngIf="antragstellerExists; else noAntragsteller" + data-test-id="antragsteller-list" + class="my-1 text-sm leading-6" > - <div class="font-medium mb-2"> + <div class="mb-2 font-medium"> <h4 *ngIf="!isFirma && name" data-test-id="antragsteller-name" class="my-1"> {{ name }} </h4> @@ -40,12 +40,9 @@ <li *ngIf="antragstellerStrasseHausnummer || antragstellerPlzOrt" data-test-id="antragsteller-adresse" - class="flex gap-2 my-2" + class="my-2 flex gap-2" > - <mat-icon - class="material-icons-outlined" - aria-label="Adresse" - aria-hidden="false" + <mat-icon class="material-icons-outlined" aria-label="Adresse" aria-hidden="false" >location_on</mat-icon > <div class="flex flex-col"> @@ -58,34 +55,26 @@ </div> </li> <div *ngIf="isFirma && name" class="mb-1"> - <h4 class="my-1 font-medium"> - Ansprechpartner - </h4> + <h4 class="my-1 font-medium">Ansprechpartner</h4> <p class="my-1" data-test-id="antragsteller-ansprechpartner-name">{{ name }}</p> </div> - <li *ngIf="antragstellerData.email" [title]="email" class="flex gap-2 my-2"> - <mat-icon - class="material-icons-outlined" - aria-label="E-Mail-Adresse" - aria-hidden="false" + <li *ngIf="antragstellerData.email" [title]="antragstellerData.email" class="my-2 flex gap-2"> + <mat-icon class="material-icons-outlined" aria-label="E-Mail-Adresse" aria-hidden="false" >email</mat-icon > <p data-test-id="antragsteller-email"> {{ antragstellerData.email }} </p> </li> - <li *ngIf="antragstellerData.telefon" class="flex gap-2 my-2"> - <mat-icon - class="material-icons-outlined" - aria-label="Telefonnummer" - aria-hidden="false" + <li *ngIf="antragstellerData.telefon" class="my-2 flex gap-2"> + <mat-icon class="material-icons-outlined" aria-label="Telefonnummer" aria-hidden="false" >call_black</mat-icon > <p data-test-id="antragsteller-telefon"> {{ antragstellerData.telefon }} </p> </li> - <li *ngIf="geburt" class="flex gap-2 my-2"> + <li *ngIf="geburt" class="my-2 flex gap-2"> <mat-icon class="material-icons-outlined" aria-label="Geburtsdatum und Geburtsort" 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 ab08e19db0339b7d1aa5352adca61c0778cb7f95..eaa8140904dd29c50e275cf12f0a7ac6df021715 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 @@ -26,62 +26,68 @@ <ozgcloud-spinner [stateResource]="vorgangStateResource" class="header-spinner"></ozgcloud-spinner> <ng-container *ngIf="vorgangStateResource.resource as vorgangResource"> - <div class="container"> - <alfa-vorgang-detail-header - [vorgangWithEingang]="vorgangResource" - class="mat-typography" - data-test-id="vorgang-detail-header" - ></alfa-vorgang-detail-header> - - <div class="section one-column"> - <alfa-vorgang-detail-formular-daten + <div + class="flex min-h-full grow flex-col divide-y divide-gray-200 border-l border-r border-gray-200 dark:divide-background-100 dark:border-transparent lg:flex-row lg:divide-x lg:divide-y-0" + > + <div class="grow"> + <alfa-vorgang-detail-header [vorgangWithEingang]="vorgangResource" - ></alfa-vorgang-detail-formular-daten> + data-test-id="vorgang-detail-header" + ></alfa-vorgang-detail-header> - <div *ngIf="vorgangResource | hasLink: vorgangWithEingangLinkRel.BESCHEIDE"> - <ozgcloud-expansion-panel headline="Bescheid" data-test-id="bescheid-expansion-panel"> - <alfa-bescheid-list-in-vorgang-container data-test-id="bescheid-container-in-vorgang"> - </alfa-bescheid-list-in-vorgang-container> - </ozgcloud-expansion-panel> - </div> + <div class="section one-column"> + <alfa-vorgang-detail-formular-daten + [vorgangWithEingang]="vorgangResource" + ></alfa-vorgang-detail-formular-daten> - <alfa-vorgang-detail-formular-buttons - [vorgangWithEingang]="vorgangResource" - ></alfa-vorgang-detail-formular-buttons> - </div> + <div *ngIf="vorgangResource | hasLink: vorgangWithEingangLinkRel.BESCHEIDE"> + <ozgcloud-expansion-panel headline="Bescheid" data-test-id="bescheid-expansion-panel"> + <alfa-bescheid-list-in-vorgang-container data-test-id="bescheid-container-in-vorgang"> + </alfa-bescheid-list-in-vorgang-container> + </ozgcloud-expansion-panel> + </div> - <div class="two-column"> - <div class="section" *ngIf="vorgangResource | hasLink: vorgangWithEingangLinkRel.FORWARDING"> - <alfa-vorgang-forwarding-container - [vorgang]="vorgangResource" - data-test-id="forwarding-container-in-vorgang" - ></alfa-vorgang-forwarding-container> + <alfa-vorgang-detail-formular-buttons + [vorgangWithEingang]="vorgangResource" + ></alfa-vorgang-detail-formular-buttons> </div> - <div class="section" *ngIf="vorgangResource | hasLink: vorgangHeaderLinkRel.WIEDERVORLAGEN"> - <alfa-wiedervorlage-list-in-vorgang-container - [vorgangStateResource]="vorgangStateResource" - data-test-id="wiedervorlagen-container-in-vorgang" - ></alfa-wiedervorlage-list-in-vorgang-container> - </div> + <div class="two-column"> + <div + class="section" + *ngIf="vorgangResource | hasLink: vorgangWithEingangLinkRel.FORWARDING" + > + <alfa-vorgang-forwarding-container + [vorgang]="vorgangResource" + data-test-id="forwarding-container-in-vorgang" + ></alfa-vorgang-forwarding-container> + </div> + + <div class="section" *ngIf="vorgangResource | hasLink: vorgangHeaderLinkRel.WIEDERVORLAGEN"> + <alfa-wiedervorlage-list-in-vorgang-container + [vorgangStateResource]="vorgangStateResource" + data-test-id="wiedervorlagen-container-in-vorgang" + ></alfa-wiedervorlage-list-in-vorgang-container> + </div> - <div class="section" *ngIf="vorgangResource | hasLink: vorgangHeaderLinkRel.KOMMENTARE"> - <alfa-kommentar-list-in-vorgang-container - [vorgangStateResource]="vorgangStateResource" - data-test-id="kommentar-container-in-vorgang" - ></alfa-kommentar-list-in-vorgang-container> + <div class="section" *ngIf="vorgangResource | hasLink: vorgangHeaderLinkRel.KOMMENTARE"> + <alfa-kommentar-list-in-vorgang-container + [vorgangStateResource]="vorgangStateResource" + data-test-id="kommentar-container-in-vorgang" + ></alfa-kommentar-list-in-vorgang-container> + </div> </div> </div> - </div> - <div class="right"> - <alfa-vorgang-detail-antragsteller - [antragsteller]="vorgangResource.eingang.antragsteller" - data-test-id="vorgang-detail-antragsteller" - ></alfa-vorgang-detail-antragsteller> - <alfa-postfach-mail-list-container - *ngIf="vorgangResource | hasLink: vorgangHeaderLinkRel.POSTFACH_MAILS" - [vorgangStateResource]="vorgangStateResource" - data-test-id="postfach-nachrichten-container-in-vorgang" - ></alfa-postfach-mail-list-container> + <div class="flex h-full min-w-80 flex-1 flex-col px-4 py-3"> + <alfa-vorgang-detail-antragsteller + [antragsteller]="vorgangResource.eingang.antragsteller" + data-test-id="vorgang-detail-antragsteller" + ></alfa-vorgang-detail-antragsteller> + <alfa-postfach-mail-list-container + *ngIf="vorgangResource | hasLink: vorgangHeaderLinkRel.POSTFACH_MAILS" + [vorgangStateResource]="vorgangStateResource" + data-test-id="postfach-nachrichten-container-in-vorgang" + ></alfa-postfach-mail-list-container> + </div> </div> </ng-container> diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-area.component.scss b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-area.component.scss index b27537ba49e70f26ea5350c7ca2b70cd2163f2f6..c3a493baffe343fe0fddd809db8c86361a29229c 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-area.component.scss +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-area.component.scss @@ -25,27 +25,6 @@ @import 'include-media/dist/include-media'; @import 'variables'; -:host { - position: relative; - display: flex; - background-color: inherit; - width: 100%; -} - -.container { - width: calc(100% - 300px); - border-left: 1px solid rgba(0, 0, 0, 0.08); - border-right: 1px solid rgba(0, 0, 0, 0.08); - min-height: calc(100vh - $header-height - $navigation-height); -} - -.right { - right: 21px; - width: 300px; - padding: 12px 16px; - display: flex; - flex-direction: column; -} .header-spinner { position: absolute; diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-area.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-area.component.ts index 09cee300973dd96c97e72416ae51f1c5659b914f..84620549535e2efd0a84a992fd9f239f18093fa5 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-area.component.ts +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-area.component.ts @@ -33,6 +33,7 @@ import { Component, Input } from '@angular/core'; selector: 'alfa-vorgang-detail-area', templateUrl: './vorgang-detail-area.component.html', styleUrls: ['./vorgang-detail-area.component.scss'], + styles: [':host {@apply relative flex flex-row grow}'], }) export class VorgangDetailAreaComponent { @Input() vorgangStateResource: StateResource<VorgangWithEingangResource>; diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-daten/vorgang-detail-antrag-data/vorgang-detail-eingang-header/vorgang-detail-eingang-header.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-daten/vorgang-detail-antrag-data/vorgang-detail-eingang-header/vorgang-detail-eingang-header.component.html index f380c834f477c400ea3f433c010d5042d310dfe8..f98881642b25040932ffba2562c09236cac0d56b 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-daten/vorgang-detail-antrag-data/vorgang-detail-eingang-header/vorgang-detail-eingang-header.component.html +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-daten/vorgang-detail-antrag-data/vorgang-detail-eingang-header/vorgang-detail-eingang-header.component.html @@ -23,7 +23,7 @@ unter der Lizenz sind dem Lizenztext zu entnehmen. --> -<table aria-label="Eingangsdaten"> +<table aria-label="Eingangsdaten" class="text-sm"> <tr> <th scope="col">Formularfeld</th> <th scope="col">Formulareingabe</th> diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-daten/vorgang-detail-form-data-table/vorgang-detail-form-data-table.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-daten/vorgang-detail-form-data-table/vorgang-detail-form-data-table.component.html index 0fe8366d794c27918ea8b9379d8f62177093f1fd..d1278b5dd728a544987d02dad56a18edb886505a 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-daten/vorgang-detail-form-data-table/vorgang-detail-form-data-table.component.html +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-daten/vorgang-detail-form-data-table/vorgang-detail-form-data-table.component.html @@ -23,7 +23,7 @@ unter der Lizenz sind dem Lizenztext zu entnehmen. --> -<table aria-label="Formulardaten" *ngIf="isObject(formData) && !isArray(formData)"> +<table class="text-sm" aria-label="Formulardaten" *ngIf="isObject(formData) && !isArray(formData)"> <tr> <th scope="col">Formularfeld</th> <th scope="col">Formulareingabe</th> @@ -43,7 +43,7 @@ </tr> </table> -<table aria-label="Formulardaten" *ngIf="isArray(formData)"> +<table class="text-sm" aria-label="Formulardaten" *ngIf="isArray(formData)"> <tr> <th scope="col">Formulareingabe</th> </tr> diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-daten/vorgang-detail-formular-daten.component.scss b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-daten/vorgang-detail-formular-daten.component.scss index 0398e355577626ab5eb2c15f4a48ef0779fcc557..20502e39cc84dcfed0c934c467c3cb7cd7dec769 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-daten/vorgang-detail-formular-daten.component.scss +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-daten/vorgang-detail-formular-daten.component.scss @@ -24,3 +24,7 @@ mat-tab-group { padding-right: 1rem; } + +::ng-deep .mat-tab-header { + overflow-x: scroll !important; +} diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-header/vorgang-detail-header.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-header/vorgang-detail-header.component.html index 976a5a346670cbc0d0b44b77143781bd2b5a2472..53bde5e294bc362da2e488e9be63a802e33b57ab 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-header/vorgang-detail-header.component.html +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-header/vorgang-detail-header.component.html @@ -23,39 +23,50 @@ unter der Lizenz sind dem Lizenztext zu entnehmen. --> -<alfa-vorgang-status-dot [status]="vorgang.status" class="status-dot"></alfa-vorgang-status-dot> -<div class="flex flex-row items-center gap-7"> - <alfa-vorgang-status-text - [status]="vorgang.status" - data-test-id="status-text" - class="status-text" - ></alfa-vorgang-status-text> - <alfa-beschieden-date-in-vorgang-container></alfa-beschieden-date-in-vorgang-container> +<div class="flex flex-row"> + <div class="flex w-12 flex-shrink-0 flex-grow-0 items-center"> + <alfa-vorgang-status-dot [status]="vorgang.status" class="status-dot"></alfa-vorgang-status-dot> + </div> + <div class="flex flex-shrink flex-grow flex-wrap gap-x-3 gap-y-1"> + <div class="flex flex-grow gap-7"> + <alfa-vorgang-status-text + [status]="vorgang.status" + data-test-id="status-text" + class="status-text" + ></alfa-vorgang-status-text> + <alfa-beschieden-date-in-vorgang-container></alfa-beschieden-date-in-vorgang-container> + </div> + <div class="initial-date text-sm" data-test-id="created-at"> + {{ vorgang.createdAt | date: 'EEEE, d. LLLL y, H:mm' }} + </div> + </div> </div> -<div class="initial-date" data-test-id="created-at"> - {{ vorgang.createdAt | date: 'EEEE, d. LLLL y, H:mm' }} +<div class="ml-12 flex flex-row gap-6"> + <div class="flex flex-grow flex-col gap-x-3 gap-y-1"> + <h2 data-test-id="name" class="mb-1.5 mt-4 break-all text-base font-medium"> + {{ vorgang.name }} + </h2> + <alfa-vorgang-nummer class="vorgang-nummer" [vorgang]="vorgang"></alfa-vorgang-nummer> + <div class="flex flex-1 flex-row gap-1"> + <div class="flex flex-shrink-0" [class.text-gray-400]="!hasAktenzeichen"> + <mat-icon svgIcon="az" style="width: 1.5rem; height: 1.5rem"></mat-icon> + </div> + <alfa-aktenzeichen-editable + data-test-id="alfa-aktenzeichen-editable-button" + class="flex flex-grow" + [class.text-gray-400]="!hasAktenzeichen" + [vorgang]="vorgang" + ></alfa-aktenzeichen-editable> + </div> + </div> + <div class="mt-4 w-10 flex-shrink-0 flex-grow-0"> + <alfa-user-profile-in-vorgang-container + *ngIf="vorgang | hasLink: linkRel.ASSIGN" + data-test-id="vorgang-header-user-icon" + [vorgang]="vorgang" + class="user" + ></alfa-user-profile-in-vorgang-container> + </div> </div> - -<alfa-vorgang-nummer class="vorgang-nummer big" [vorgang]="vorgang"></alfa-vorgang-nummer> - -<div class="aktenzeichen" [class.aktenzeichen--active]="hasAktenzeichen"> - <mat-icon svgIcon="az"></mat-icon> - <alfa-aktenzeichen-editable - class="aktenzeichen-editable" - [vorgang]="vorgang" - ></alfa-aktenzeichen-editable> -</div> - -<div data-test-id="name" class="name"> - {{ vorgang.name }} -</div> - -<alfa-user-profile-in-vorgang-container - *ngIf="vorgang | hasLink: linkRel.ASSIGN" - data-test-id="vorgang-header-user-icon" - [vorgang]="vorgang" - class="user" -> -</alfa-user-profile-in-vorgang-container> diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-header/vorgang-detail-header.component.scss b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-header/vorgang-detail-header.component.scss index 62adcc21dd7dcfdda38c96f774b16d8af49b5c39..90cd66da90d80e78e540c55a81c54c45b18ba321 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-header/vorgang-detail-header.component.scss +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-header/vorgang-detail-header.component.scss @@ -21,92 +21,6 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -@import 'breakpoints'; -@import 'include-media/dist/include-media'; -@import 'variables'; - :host { - display: grid; - row-gap: 10px; - align-items: center; - grid-template-columns: 48px 1fr 8%; - grid-template-areas: - 'status-dot status-text initial-date' - '. name user' - '. vorgang-nummer user' - '. aktenzeichen aktenzeichen'; - - padding: 1rem 1.5rem; -} - -.name { - line-height: 1.4; - margin: 8px 0 4px 0; - font-size: 16px; - font-weight: 500; -} - -.ellipsis { - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; -} - -mat-icon { - margin: 0 0.5rem 0 -0rem; - height: 1.875rem; - min-height: 1.875rem; - width: 1.875rem; - min-width: 1.875rem; -} - -.status-dot { - grid-area: status-dot; -} - -.status-text { - grid-area: status-text; -} - -.initial-date { - grid-area: initial-date; - justify-self: end; - white-space: nowrap; -} - -.aktenzeichen { - grid-area: aktenzeichen; - margin-left: -2px; - display: flex; - align-items: center; - color: #c2c2c2; - - &--active { - color: unset; - } - - .aktenzeichen-editable { - width: calc(100% - 82px); - } -} - -.vorgang-nummer { - grid-area: vorgang-nummer; - margin-left: -2px; -} - -.name { - grid-area: name; - align-self: start; -} - -.user { - grid-area: user; - align-self: start; - justify-self: end; -} - -.status { - display: flex; - flex-direction: column; -} + @apply flex flex-col px-6 py-4; +} \ No newline at end of file diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-header/vorgang-detail-header.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-header/vorgang-detail-header.component.spec.ts index 85e1fd655bb0390a80cd39b79e3acae785ca68d6..292996ceb1f44de52245d522725c0243cc9c9b55 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-header/vorgang-detail-header.component.spec.ts +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-header/vorgang-detail-header.component.spec.ts @@ -23,13 +23,9 @@ */ import { BeschiedenDateInVorgangContainerComponent } from '@alfa-client/bescheid'; import { EMPTY_STRING, EnumToLabelPipe, HasLinkPipe } from '@alfa-client/tech-shared'; -import { getDebugElementFromFixtureByCss } from '@alfa-client/test-utils'; +import { getDebugElementFromFixtureByCss, getElementFromFixture } from '@alfa-client/test-utils'; import { VorgangHeaderLinkRel } from '@alfa-client/vorgang-shared'; -import { - VorgangNummerComponent, - VorgangStatusDotComponent, - VorgangStatusTextComponent, -} from '@alfa-client/vorgang-shared-ui'; +import { VorgangNummerComponent, VorgangStatusDotComponent, VorgangStatusTextComponent } from '@alfa-client/vorgang-shared-ui'; import { DebugElement } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { MatIcon } from '@angular/material/icon'; @@ -46,6 +42,9 @@ describe('VorgangDetailHeaderComponent', () => { let fixture: ComponentFixture<VorgangDetailHeaderComponent>; const user: string = getDataTestIdOf('vorgang-header-user-icon'); + const aktenzeichenEditableComponentDataTestId: string = getDataTestIdOf( + 'alfa-aktenzeichen-editable-button', + ); beforeEach(async () => { await TestBed.configureTestingModule({ @@ -111,16 +110,16 @@ describe('VorgangDetailHeaderComponent', () => { expect(component.hasAktenzeichen).toBeFalsy(); }); - it('should set class aktenzeichen--active for aktenzeichen', () => { + it('should NOT set class text-gray-400 for aktenzeichen', () => { fixture.detectChanges(); - const element = getDebugElementFromFixtureByCss(fixture, 'div.aktenzeichen--active'); + const element = getDebugElementFromFixtureByCss(fixture, 'div.text-gray-400'); - expect(element).toBeInstanceOf(DebugElement); + expect(element).not.toBeInstanceOf(DebugElement); }); it.each([null, EMPTY_STRING])( - 'should NOT set class aktenzeichen--active for aktenzeichen %s', + 'should set class text-gray-400 for aktenzeichen %s', (aktenzeichen: string) => { const vorgangWithEingang = createVorgangWithEingangResource(); vorgangWithEingang.aktenzeichen = aktenzeichen; @@ -128,10 +127,33 @@ describe('VorgangDetailHeaderComponent', () => { fixture.detectChanges(); - const element = getDebugElementFromFixtureByCss(fixture, 'div.aktenzeichen--active'); + const element = getDebugElementFromFixtureByCss(fixture, 'div.text-gray-400'); - expect(element).not.toBeInstanceOf(DebugElement); + expect(element).toBeInstanceOf(DebugElement); }, ); + + it.each([null, EMPTY_STRING])( + 'should set class text-gray-400 for alfa-aktenzeichen-editable %s', + (aktenzeichen: string) => { + const vorgangWithEingang = createVorgangWithEingangResource(); + vorgangWithEingang.aktenzeichen = aktenzeichen; + component.vorgangWithEingang = vorgangWithEingang; + + fixture.detectChanges(); + + const element = getElementFromFixture(fixture, aktenzeichenEditableComponentDataTestId); + + expect(element).toHaveClass('text-gray-400'); + }, + ); + + it('should NOT set class text-gray-400 for alfa-aktenzeichen-editable', () => { + fixture.detectChanges(); + + const element = getElementFromFixture(fixture, aktenzeichenEditableComponentDataTestId); + + expect(element).not.toHaveClass('text-gray-400'); + }); }); }); diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-header/vorgang-detail-header.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-header/vorgang-detail-header.component.ts index e0a5d6854b61a58401ea6c9830a9b76ea8a95cbf..4748530c41f1b37ca65281ccaaba44b08c47eebe 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-header/vorgang-detail-header.component.ts +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-header/vorgang-detail-header.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 { VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; import { isNotEmpty } from '@alfa-client/tech-shared'; +import { VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; +import { Component, Input } from '@angular/core'; import { createVorgangWithEingangResource } from '../../../../../../vorgang-shared/test/vorgang'; @Component({ selector: 'alfa-vorgang-detail-header', templateUrl: './vorgang-detail-header.component.html', - styleUrls: ['./vorgang-detail-header.component.scss'], + styles: [':host {@apply flex flex-col px-6 py-4}'], }) export class VorgangDetailHeaderComponent { readonly linkRel = VorgangWithEingangLinkRel; diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-page.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-page.component.html index b985566e1869ee4b1de3b2588dd7188845a72768..db812801dad788276e27e6c98981813d383bfc0d 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-page.component.html +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-page.component.html @@ -23,7 +23,8 @@ unter der Lizenz sind dem Lizenztext zu entnehmen. --> -<ng-container *ngIf="vorgangStateResource$ | async as vorgangStateResource"> +<main *ngIf="vorgangStateResource$ | async as vorgangStateResource"> + <h1 class="sr-only">Details zum Vorgang</h1> <ozgcloud-subnavigation class="mat-typography mat-app-background" data-test-id="subnavigation"> <alfa-vorgang-detail-back-button-container></alfa-vorgang-detail-back-button-container> <ng-container *ngIf="vorgangStateResource.resource"> @@ -38,14 +39,16 @@ </ng-container> </ozgcloud-subnavigation> - <div class="l-scroll-area--full"> + <div + class="l-scroll-area--full flex border-l border-r border-grayborder/30 dark:border-transparent" + > <alfa-vorgang-detail-area *ngIf="vorgangStateResource" [vorgangStateResource]="vorgangStateResource" data-test-id="detail-area" ></alfa-vorgang-detail-area> </div> -</ng-container> +</main> <ozgcloud-progress-bar [stateResource]="revokeCommandStateResource$ | async" diff --git a/alfa-client/libs/vorgang-shared-ui/src/index.ts b/alfa-client/libs/vorgang-shared-ui/src/index.ts index 8184426d005669520ee4aecfb7c9089f7500fbda..af3be465ac6cfdacf0f35612a2ed3b20d453b6ab 100644 --- a/alfa-client/libs/vorgang-shared-ui/src/index.ts +++ b/alfa-client/libs/vorgang-shared-ui/src/index.ts @@ -22,7 +22,6 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ 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-search-container/vorgang-search-container.component'; export * from './lib/vorgang-shared-ui.module'; diff --git a/alfa-client/libs/vorgang-shared-ui/src/lib/aktenzeichen/aktenzeichen.component.html b/alfa-client/libs/vorgang-shared-ui/src/lib/aktenzeichen/aktenzeichen.component.html index 5721feaf55413b70b412e07ccafb3856599e39a4..de19cd3d1c9c817c155c02dbce1f0a4caef91339 100644 --- a/alfa-client/libs/vorgang-shared-ui/src/lib/aktenzeichen/aktenzeichen.component.html +++ b/alfa-client/libs/vorgang-shared-ui/src/lib/aktenzeichen/aktenzeichen.component.html @@ -23,6 +23,10 @@ unter der Lizenz sind dem Lizenztext zu entnehmen. --> -<span [matTooltip]="aktenzeichen" data-test-id="aktenzeichen" class="truncate">{{ - aktenzeichen -}}</span> +<div + class="line-clamp-1 flex-shrink overflow-hidden break-all text-base font-normal lg:line-clamp-none lg:flex" + data-test-id="aktenzeichen" + [matTooltip]="aktenzeichen" +> + {{ aktenzeichen }} +</div> diff --git a/alfa-client/libs/vorgang-shared-ui/src/lib/aktenzeichen/aktenzeichen.component.spec.ts b/alfa-client/libs/vorgang-shared-ui/src/lib/aktenzeichen/aktenzeichen.component.spec.ts index 44c38ecb399f0407d118f8ceda4b8ae6089d9e46..05840895fe5579580d83309bb74166ec39bb0cde 100644 --- a/alfa-client/libs/vorgang-shared-ui/src/lib/aktenzeichen/aktenzeichen.component.spec.ts +++ b/alfa-client/libs/vorgang-shared-ui/src/lib/aktenzeichen/aktenzeichen.component.spec.ts @@ -61,7 +61,7 @@ describe('AktenzeichenComponent', () => { fixture.detectChanges(); const aktenzeichenMessage: HTMLElement = fixture.nativeElement.querySelector(aktenzeichen); - expect(aktenzeichenMessage.innerHTML).toBe(VORGANG_KEIN_AKTENZEICHEN_ZUGEWIESEN); + expect(aktenzeichenMessage.innerHTML.trim()).toBe(VORGANG_KEIN_AKTENZEICHEN_ZUGEWIESEN); }); it('should show aktenzeichen', () => { @@ -70,7 +70,7 @@ describe('AktenzeichenComponent', () => { fixture.detectChanges(); const aktenzeichenMessage: HTMLElement = fixture.nativeElement.querySelector(aktenzeichen); - expect(aktenzeichenMessage.textContent).toBe(vorgang.aktenzeichen); + expect(aktenzeichenMessage.textContent.trim()).toBe(vorgang.aktenzeichen); }); }); }); diff --git a/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-in-postfach-breadcrumb-container/vorgang-in-postfach-breadcrumb-container.component.html b/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-in-postfach-breadcrumb-container/vorgang-in-postfach-breadcrumb-container.component.html deleted file mode 100644 index c8de63c7fdfba1ac8c851fe64f6c50b40100ec20..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-in-postfach-breadcrumb-container/vorgang-in-postfach-breadcrumb-container.component.html +++ /dev/null @@ -1,29 +0,0 @@ -<!-- - - Copyright (C) 2022 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. - ---> -<alfa-vorgang-in-postfach-breadcrumb - [vorgangStateResource]="vorgangStateResource$ | async" - data-test-id="postfach-breadcrump" -></alfa-vorgang-in-postfach-breadcrumb> diff --git a/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-in-postfach-breadcrumb-container/vorgang-in-postfach-breadcrumb-container.component.scss b/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-in-postfach-breadcrumb-container/vorgang-in-postfach-breadcrumb-container.component.scss deleted file mode 100644 index 9a08a5aabce6cc4cdbb268c4190a8d67f82f19e5..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-in-postfach-breadcrumb-container/vorgang-in-postfach-breadcrumb-container.component.scss +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Copyright (C) 2022 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. - */ diff --git a/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-in-postfach-breadcrumb-container/vorgang-in-postfach-breadcrumb-container.component.spec.ts b/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-in-postfach-breadcrumb-container/vorgang-in-postfach-breadcrumb-container.component.spec.ts deleted file mode 100644 index 369a11caaf327063d67485a3b978ab158b167ffa..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-in-postfach-breadcrumb-container/vorgang-in-postfach-breadcrumb-container.component.spec.ts +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (C) 2022 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 { Mock, mock } from '@alfa-client/test-utils'; -import { VorgangService } from '@alfa-client/vorgang-shared'; -import { MockComponent } from 'ng-mocks'; -import { VorgangInPostfachBreadcrumbContainerComponent } from './vorgang-in-postfach-breadcrumb-container.component'; -import { VorgangInPostfachBreadcrumbComponent } from './vorgang-in-postfach-breadcrumb/vorgang-in-postfach-breadcrumb.component'; - -describe('VorgangInPostfachBreadcrumbContainerComponent', () => { - let component: VorgangInPostfachBreadcrumbContainerComponent; - let fixture: ComponentFixture<VorgangInPostfachBreadcrumbContainerComponent>; - - const vorgangService: Mock<VorgangService> = mock(VorgangService); - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ - VorgangInPostfachBreadcrumbContainerComponent, - MockComponent(VorgangInPostfachBreadcrumbComponent), - ], - providers: [ - { - provide: VorgangService, - useValue: vorgangService, - }, - ], - }).compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(VorgangInPostfachBreadcrumbContainerComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - describe('ngOnInit', () => { - it('should call vorgang service', () => { - component.ngOnInit(); - - expect(vorgangService.getVorgangWithEingang).toHaveBeenCalled(); - }); - }); -}); diff --git a/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-in-postfach-breadcrumb-container/vorgang-in-postfach-breadcrumb-container.component.ts b/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-in-postfach-breadcrumb-container/vorgang-in-postfach-breadcrumb-container.component.ts deleted file mode 100644 index bde0eba9d92b2abdac24b3d3270d9d49e89475e2..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-in-postfach-breadcrumb-container/vorgang-in-postfach-breadcrumb-container.component.ts +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (C) 2022 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 { Component, OnInit } from '@angular/core'; -import { StateResource } from '@alfa-client/tech-shared'; -import { VorgangService, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; -import { Observable } from 'rxjs'; - -@Component({ - selector: 'alfa-vorgang-in-postfach-breadcrumb-container', - templateUrl: './vorgang-in-postfach-breadcrumb-container.component.html', - styleUrls: ['./vorgang-in-postfach-breadcrumb-container.component.scss'], -}) -export class VorgangInPostfachBreadcrumbContainerComponent implements OnInit { - vorgangStateResource$: Observable<StateResource<VorgangWithEingangResource>>; - - constructor(private vorgangService: VorgangService) {} - - ngOnInit(): void { - this.vorgangStateResource$ = this.vorgangService.getVorgangWithEingang(); - } -} diff --git a/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-in-postfach-breadcrumb-container/vorgang-in-postfach-breadcrumb/vorgang-in-postfach-breadcrumb.component.html b/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-in-postfach-breadcrumb-container/vorgang-in-postfach-breadcrumb/vorgang-in-postfach-breadcrumb.component.html deleted file mode 100644 index b51eccd1277977c1a109c3a87718fd11a4091901..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-in-postfach-breadcrumb-container/vorgang-in-postfach-breadcrumb/vorgang-in-postfach-breadcrumb.component.html +++ /dev/null @@ -1,30 +0,0 @@ -<!-- - - Copyright (C) 2022 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. - ---> -<span *ngIf="vorgangStateResource.resource as vorgang"> - <a routerLink="/vorgang/{{ vorgang | toResourceUri }}" alfa-aktenzeichen [vorgang]="vorgang"></a> - <span>/</span> - <span>Nachrichten</span> -</span> diff --git a/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-in-postfach-breadcrumb-container/vorgang-in-postfach-breadcrumb/vorgang-in-postfach-breadcrumb.component.scss b/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-in-postfach-breadcrumb-container/vorgang-in-postfach-breadcrumb/vorgang-in-postfach-breadcrumb.component.scss deleted file mode 100644 index 4df2ebcfa6f39b46618043b2ddb18650cea2f619..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-in-postfach-breadcrumb-container/vorgang-in-postfach-breadcrumb/vorgang-in-postfach-breadcrumb.component.scss +++ /dev/null @@ -1,46 +0,0 @@ -/** - * Copyright (C) 2022 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 'variables'; - -:host { - display: block; - font-size: 18px; - padding: 16px 24px 4px 26px; - - ::ng-deep span { - margin: 0 4px; - } - - a { - text-decoration: none; - outline: 0; - margin: -3px; - padding: 3px; - - &:focus { - border-radius: 12px; - background-color: rgba(#777, 0.16); - } - } -} diff --git a/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-in-postfach-breadcrumb-container/vorgang-in-postfach-breadcrumb/vorgang-in-postfach-breadcrumb.component.spec.ts b/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-in-postfach-breadcrumb-container/vorgang-in-postfach-breadcrumb/vorgang-in-postfach-breadcrumb.component.spec.ts deleted file mode 100644 index f5bdd3e8a9e65ad7adcd8f08453e914f3b06a6de..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-in-postfach-breadcrumb-container/vorgang-in-postfach-breadcrumb/vorgang-in-postfach-breadcrumb.component.spec.ts +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (C) 2022 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 { RouterTestingModule } from '@angular/router/testing'; -import { createStateResource, ToResourceUriPipe } from '@alfa-client/tech-shared'; -import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang'; -import { MockComponent } from 'ng-mocks'; -import { AktenzeichenComponent } from '../../aktenzeichen/aktenzeichen.component'; -import { VorgangInPostfachBreadcrumbComponent } from './vorgang-in-postfach-breadcrumb.component'; - -describe('VorgangInPostfachBreadcrumbComponent', () => { - let component: VorgangInPostfachBreadcrumbComponent; - let fixture: ComponentFixture<VorgangInPostfachBreadcrumbComponent>; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ - VorgangInPostfachBreadcrumbComponent, - ToResourceUriPipe, - MockComponent(AktenzeichenComponent), - ], - imports: [RouterTestingModule], - }).compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(VorgangInPostfachBreadcrumbComponent); - component = fixture.componentInstance; - component.vorgangStateResource = createStateResource(createVorgangWithEingangResource()); - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-in-postfach-breadcrumb-container/vorgang-in-postfach-breadcrumb/vorgang-in-postfach-breadcrumb.component.ts b/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-in-postfach-breadcrumb-container/vorgang-in-postfach-breadcrumb/vorgang-in-postfach-breadcrumb.component.ts deleted file mode 100644 index 0268ce2c96d75db36678288fd07fd6022af3b069..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-in-postfach-breadcrumb-container/vorgang-in-postfach-breadcrumb/vorgang-in-postfach-breadcrumb.component.ts +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (C) 2022 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 { Component, Input } from '@angular/core'; -import { StateResource } from '@alfa-client/tech-shared'; -import { VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; - -@Component({ - selector: 'alfa-vorgang-in-postfach-breadcrumb', - templateUrl: './vorgang-in-postfach-breadcrumb.component.html', - styleUrls: ['./vorgang-in-postfach-breadcrumb.component.scss'], -}) -export class VorgangInPostfachBreadcrumbComponent { - @Input() vorgangStateResource: StateResource<VorgangWithEingangResource>; -} diff --git a/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-nummer/_vorgang-nummer.component.theme.scss b/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-nummer/_vorgang-nummer.component.theme.scss deleted file mode 100644 index 00e4305df64ad8278be645380fe84dc15f92cd4b..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-nummer/_vorgang-nummer.component.theme.scss +++ /dev/null @@ -1,58 +0,0 @@ -/** - * Copyright (C) 2022 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. - */ -alfa-vorgang-nummer { - div { - display: flex; - align-items: center; - margin: 0; - } - - mat-icon { - margin-right: 0.25rem; - height: 1.5rem; - min-height: 1.5rem; - width: 1.5rem; - min-width: 1.5rem; - } - - span { - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; - } - - &.big { - div { - font-size: 16px; - font-weight: 300; - } - mat-icon { - margin-right: 0.5rem; - height: 1.875rem; - min-height: 1.875rem; - width: 1.875rem; - min-width: 1.875rem; - } - } -} diff --git a/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-nummer/vorgang-nummer.component.html b/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-nummer/vorgang-nummer.component.html index 79e54f9224cda253b209638ff7a340ee55b2c555..66d983892157124277169515a44384b7fb2e789a 100644 --- a/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-nummer/vorgang-nummer.component.html +++ b/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-nummer/vorgang-nummer.component.html @@ -23,7 +23,14 @@ unter der Lizenz sind dem Lizenztext zu entnehmen. --> -<div> - <mat-icon svgIcon="nr"></mat-icon> - <span [matTooltip]="vorgang.nummer" data-test-id="vorgang-nummer">{{ vorgang.nummer }}</span> + +<div class="flex flex-shrink-0"> + <mat-icon svgIcon="nr" style="width: 1.5rem; height: 1.5rem"></mat-icon> +</div> +<div + class="line-clamp-1 flex-shrink overflow-hidden break-all text-base font-normal lg:line-clamp-none lg:flex" + data-test-id="vorgang-nummer" + [matTooltip]="vorgang.nummer" +> + {{ vorgang.nummer }} </div> diff --git a/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-nummer/vorgang-nummer.component.spec.ts b/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-nummer/vorgang-nummer.component.spec.ts index 17e53a890b1310c8661ea9cd8494b3fed95b4977..a622e364e43db4f9fb65e938f384f6a55234d952 100644 --- a/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-nummer/vorgang-nummer.component.spec.ts +++ b/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-nummer/vorgang-nummer.component.spec.ts @@ -61,7 +61,7 @@ describe('VorgangNummerComponent', () => { it('should show vorgang.nummer', () => { const text: HTMLElement = getElementFromFixture(fixture, vorgangnummer); - expect(text.textContent).toBe(vorgang.nummer); + expect(text.textContent.trim()).toBe(vorgang.nummer); }); }); }); diff --git a/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-nummer/vorgang-nummer.component.ts b/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-nummer/vorgang-nummer.component.ts index 610e020a9d73ba64a29ef19537ecba26a6c0e3dc..3acb48b3de595cafc0f0ff76fc579f951d51f560 100644 --- a/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-nummer/vorgang-nummer.component.ts +++ b/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-nummer/vorgang-nummer.component.ts @@ -21,12 +21,13 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { Component, Input } from '@angular/core'; import { Vorgang } from '@alfa-client/vorgang-shared'; +import { Component, Input } from '@angular/core'; @Component({ selector: 'alfa-vorgang-nummer', templateUrl: './vorgang-nummer.component.html', + styles: [':host {@apply flex flex-1 flex-row gap-1}'], }) export class VorgangNummerComponent { @Input() vorgang: Vorgang; diff --git a/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search/vorgang-search.component.scss b/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search/vorgang-search.component.scss index 006026859a6c1c9552ccbb9928f909d9d447078d..37365d6a66d8d35bd8ebb1864f069fc74fad0e03 100644 --- a/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search/vorgang-search.component.scss +++ b/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search/vorgang-search.component.scss @@ -31,7 +31,7 @@ input { border: 0; background-color: transparent; outline: 0; - font-size: 18px !important; + font-size: 1.125rem !important; color: inherit; min-width: 0; // Firefox workaround for close icon width: calc(100% - 40px); diff --git a/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-shared-ui.module.ts b/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-shared-ui.module.ts index 542c39b469e4eff2171701519b31a5950e68ed18..21b8ef623c86deb6ed8b8e8c7430bff6bd20971b 100644 --- a/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-shared-ui.module.ts +++ b/alfa-client/libs/vorgang-shared-ui/src/lib/vorgang-shared-ui.module.ts @@ -21,15 +21,13 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; -import { RouterModule } from '@angular/router'; import { TechSharedModule } from '@alfa-client/tech-shared'; import { UiModule } from '@alfa-client/ui'; import { VorgangSharedModule } from '@alfa-client/vorgang-shared'; +import { CommonModule } from '@angular/common'; +import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; import { AktenzeichenComponent } from './aktenzeichen/aktenzeichen.component'; -import { VorgangInPostfachBreadcrumbContainerComponent } from './vorgang-in-postfach-breadcrumb-container/vorgang-in-postfach-breadcrumb-container.component'; -import { VorgangInPostfachBreadcrumbComponent } from './vorgang-in-postfach-breadcrumb-container/vorgang-in-postfach-breadcrumb/vorgang-in-postfach-breadcrumb.component'; import { VorgangNummerComponent } from './vorgang-nummer/vorgang-nummer.component'; import { VorgangSearchContainerComponent } from './vorgang-search-container/vorgang-search-container.component'; import { VorgangSearchAutocompleteOptionsContentComponent } from './vorgang-search-container/vorgang-search/vorgang-search-autocomplete-options-content/vorgang-search-autocomplete-options-content.component'; @@ -46,8 +44,6 @@ import { WiedervorlageIconComponent } from './wiedervorlage-icon/wiedervorlage-i VorgangSearchComponent, AktenzeichenComponent, VorgangStatusDotComponent, - VorgangInPostfachBreadcrumbContainerComponent, - VorgangInPostfachBreadcrumbComponent, VorgangSearchAutocompleteOptionsContentComponent, VorgangSearchClearButtonComponent, VorgangNummerComponent, @@ -58,7 +54,6 @@ import { WiedervorlageIconComponent } from './wiedervorlage-icon/wiedervorlage-i VorgangSearchContainerComponent, AktenzeichenComponent, VorgangStatusDotComponent, - VorgangInPostfachBreadcrumbContainerComponent, VorgangSearchAutocompleteOptionsContentComponent, VorgangNummerComponent, VorgangStatusTextComponent, diff --git a/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list-container.component.html b/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list-container.component.html index cf927e2bacf4d6005e3200b3bbcd87a79736ba74..21f6df0c5a7913b49e25ca281f68add1f7fd2f77 100644 --- a/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list-container.component.html +++ b/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list-container.component.html @@ -27,11 +27,11 @@ class="list" *ngIf="{ vorgaenge: vorgaenge$ | async, - vorgangListPageResource: vorgangListPageResource$ | async + vorgangListPageResource: vorgangListPageResource$ | async, } as vorgangListData" > <alfa-vorgang-list - class="l-scroll-area--full" + class="l-scroll-area--full flex-col" [vorgangListPageResource]="vorgangListData.vorgangListPageResource" [vorgaenge]="vorgangListData.vorgaenge" [searchString]="searchString$ | async" diff --git a/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/empty-list/empty-list.component.html b/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/empty-list/empty-list.component.html index 73e479922ecc7ce9a6a1512263e624b4325ad828..9e299474628d6d580806b68d4cc97510749f7c12 100644 --- a/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/empty-list/empty-list.component.html +++ b/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/empty-list/empty-list.component.html @@ -24,10 +24,12 @@ --> <div role="status" aria-live="assertive" *ngIf="searchString; else emptyDatabase"> - <h3 data-test-id="empty-list-text">Es wurden keine Treffer für „{{ searchString }}“ gefunden</h3> + <h3 class="mb-1 text-lg" data-test-id="empty-list-text"> + Es wurden keine Treffer für „{{ searchString }}“ gefunden + </h3> <p>Versuchen Sie es mit einem anderen Suchbegriff oder prüfen Sie die Schreibweise.</p> </div> <ng-template #emptyDatabase> - <h3 data-test-id="empty-database-text">Es sind keine Vorgänge vorhanden</h3> + <h3 class="mb-1 text-lg" data-test-id="empty-database-text">Es sind keine Vorgänge vorhanden</h3> </ng-template> diff --git a/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/empty-list/empty-list.component.scss b/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/empty-list/empty-list.component.scss index 536fd860a7e00090aac1b7868250154e178dbbea..f5257d8da6cdb6bf4d867ef90955dee710f72b40 100644 --- a/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/empty-list/empty-list.component.scss +++ b/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/empty-list/empty-list.component.scss @@ -25,8 +25,3 @@ display: block; padding: 24px 32px; } - -h3 { - font-size: 18px; - margin-bottom: 4px; -} diff --git a/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-list-item.component.html b/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-list-item.component.html index 4ae91cb40e746eef978cc1682f431ec3ab17e9f1..228c9808d45c6f5b81e47b178e21cfe28e4fe01c 100644 --- a/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-list-item.component.html +++ b/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-list-item.component.html @@ -28,9 +28,9 @@ [attr.aria-label]="ariaLabel" routerLink="/vorgang/{{ vorgang | toResourceUri: vorgangLinkRel.VORGANG_WITH_EINGANG }}" [attr.data-test-id]="'vorgang-list-item-' + vorgang.name | convertForDataTest" - class="flex flex-row gap-4 border-b-2 border-slate-100 p-4 hover:shadow-[inset_1px_-1px_0_0_rgba(0,0,0,0.16)]" + class="flex flex-row gap-4 border-b-2 border-gray-200 p-4 hover:shadow-[inset_1px_-1px_0_0_rgba(0,0,0,0.16)] dark:border-b dark:border-gray-300 dark:hover:shadow-[inset_1px_-1px_0_0_rgba(255,255,255,0.60)]" > - <div class="flex w-36 flex-none flex-col"> + <div class="flex w-32 flex-none flex-col"> <div class="flex items-center gap-3"> <alfa-vorgang-status-dot [status]="vorgang.status" @@ -51,14 +51,20 @@ ></alfa-vorgang-bescheid-status> </div> </div> - <div class="flex min-w-0 flex-1 flex-col gap-2"> - <div data-test-id="name" class="text-base font-medium">{{ vorgang.name }}</div> - <div> + <div class="flex flex-1 flex-col gap-1"> + <div data-test-id="name" class="break-all text-base font-medium"> + {{ vorgang.name }} + </div> + <div class="mt-1"> <alfa-vorgang-nummer class="vorgang-nummer" [vorgang]="vorgang"></alfa-vorgang-nummer> </div> - <div class="flex min-w-0 grow flex-row gap-1"> - <mat-icon class="flex flex-none" svgIcon="az"></mat-icon> - <div alfa-aktenzeichen class="flex-initial truncate" [vorgang]="vorgang"></div> + <div> + <div class="flex flex-row gap-1"> + <div class="flex flex-shrink-0"> + <mat-icon svgIcon="az" style="width: 1.5rem; height: 1.5rem"></mat-icon> + </div> + <div alfa-aktenzeichen [vorgang]="vorgang"></div> + </div> </div> </div> <div class="flex w-36 flex-none flex-col gap-2"> @@ -83,7 +89,6 @@ </ozgcloud-postfach-icon> </div> </div> - <div class="w-28 flex-none"></div> <div class="w-10 flex-none"> <alfa-user-profile-in-vorgang-list-item-container *ngIf="vorgang | hasLink: vorgangLinkRel.ASSIGN" diff --git a/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-filter-menu-container/vorgang-filter-menu/_vorgang-filter-item.theme.scss b/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-filter-menu-container/vorgang-filter-menu/_vorgang-filter-item.theme.scss index b30526d2948a0fcf1e0ddfa018ae3e1f7469eae7..63637945bf7b4a4a09251c073daeba6ae7ba00bd 100644 --- a/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-filter-menu-container/vorgang-filter-menu/_vorgang-filter-item.theme.scss +++ b/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-filter-menu-container/vorgang-filter-menu/_vorgang-filter-item.theme.scss @@ -30,7 +30,7 @@ alfa-vorgang-filter-menu { justify-content: space-between; gap: 0.5rem; height: 2rem; - font-size: 14px; + font-size: 0.875rem; mat-icon { display: none; diff --git a/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-list-page.component.html b/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-list-page.component.html index 43ee22e674f7a4c0b4e62185d5c0ca2cba652d82..c947a1e4cb95a6d6817a0e3573f93a94d523943b 100644 --- a/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-list-page.component.html +++ b/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-list-page.component.html @@ -23,9 +23,10 @@ unter der Lizenz sind dem Lizenztext zu entnehmen. --> +<h1 class="sr-only">Vorgangsliste</h1> <alfa-vorgang-filter-menu-container class="mat-app-background"></alfa-vorgang-filter-menu-container> -<div class="content"> +<div class="flex flex-row"> <alfa-vorgang-views-menu-container *ngIf="apiRootStateResource.resource" [apiRootResource]="apiRootStateResource.resource" @@ -38,20 +39,21 @@ else showNoRoleMessage " data-test-id="vorgaenge-list" - class="flex flex-1 flex-col overflow-hidden" + class="flex flex-1 flex-col overflow-hidden border border-gray-200 dark:border-black" > <router-outlet></router-outlet> </main> <ng-template #showNoRoleMessage> - <div class="l-scroll-area--full no-role-message" data-test-id="user-no-role-message"> - <h2>Es sind keine Vorgänge in Alfa verfügbar.</h2> - <p>Prüfen Sie, ob folgendes zutrifft:</p> - <ul> - <li>Es wurden keine Rollen zugewiesen.</li> - </ul> - - <p>Bitte bei der verantwortlichen Person des User-Managements bzw. des Keycloaks melden.</p> + <div class="flex-1 border border-gray-200 px-7 py-6" data-test-id="user-no-role-message"> + <div> + <h2>Es sind keine Vorgänge in Alfa verfügbar.</h2> + <p>Prüfen Sie, ob folgendes zutrifft:</p> + <ul> + <li>Es wurden keine Rollen zugewiesen.</li> + </ul> + <p>Bitte bei der verantwortlichen Person des User-Managements bzw. des Keycloaks melden.</p> + </div> </div> </ng-template> </div> diff --git a/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-list-page.component.scss b/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-list-page.component.scss index 07a6f9291052df7ec173c86ffd766c1b85df934d..0ed70776b23972cc2f11d42feee865af9cc28525 100644 --- a/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-list-page.component.scss +++ b/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-list-page.component.scss @@ -33,16 +33,6 @@ h1 { display: flex; flex-direction: row; background-color: $background; - - main, - .no-role-message { - flex: 1 1 100%; - border: 1px solid $greyLight; - } - - .no-role-message { - padding: 1.5rem 2rem; - } } :host-context(.dark) { diff --git a/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-search-view-item-container/vorgang-search-view-item/vorgang-search-view-item.component.html b/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-search-view-item-container/vorgang-search-view-item/vorgang-search-view-item.component.html index 9f578e5efcee92394cc676b46eb6cd5e0ee27cca..2952d25ef91664647393b0bbc585841e47c2c4c3 100644 --- a/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-search-view-item-container/vorgang-search-view-item/vorgang-search-view-item.component.html +++ b/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-search-view-item-container/vorgang-search-view-item/vorgang-search-view-item.component.html @@ -4,5 +4,5 @@ data-test-id="views-menu-item-Suche" > <ozgcloud-icon icon="search"></ozgcloud-icon> - Suche + <span class="text-sm">Suche</span> </ozgcloud-routing-button> diff --git a/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-view-item-container/vorgang-view-item/vorgang-view-item.component.html b/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-view-item-container/vorgang-view-item/vorgang-view-item.component.html index 85a09071dd9f3890a988ce787c06accb65d54a16..5983cd2ccd84b22bf04bae1536d6dcb362409ba5 100644 --- a/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-view-item-container/vorgang-view-item/vorgang-view-item.component.html +++ b/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-view-item-container/vorgang-view-item/vorgang-view-item.component.html @@ -4,10 +4,11 @@ [attr.data-test-id]="'views-menu-item-' + (label | convertForDataTest)" > <ng-content></ng-content> - <div class="label">{{ label }}</div> + <div class="label text-sm">{{ label }}</div> <div *ngIf="count != null" [attr.data-test-id]="'views-menu-item-count-' + (label | convertForDataTest)" + class="text-sm" > {{ count }} </div> diff --git a/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-views-menu.component.html b/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-views-menu.component.html index 6c874f1b35f4c2e6ea7955504a4dc69a5937fa6b..1e827d60d406dbba0cb91511e6258e5e43924386 100644 --- a/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-views-menu.component.html +++ b/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-views-menu.component.html @@ -24,7 +24,7 @@ --> <ng-container *ngIf="vorgangStatisticStateResource?.resource as statistic"> - <div class="views"> + <nav class="views" aria-label="Statusansichten"> <alfa-vorgang-view-item-container *ngIf=" apiRootResource @@ -190,5 +190,5 @@ class="top-border" > </alfa-vorgang-search-view-item-container> - </div> + </nav> </ng-container> diff --git a/alfa-client/libs/vorgang/src/lib/vorgang-list-search-container/vorgang-list-search/vorgang-list-search.component.scss b/alfa-client/libs/vorgang/src/lib/vorgang-list-search-container/vorgang-list-search/vorgang-list-search.component.scss index df5f0bc9484e063d9de082c2293e383a0827f3e2..464e85fde3aa33bf73740006a64cdb20d69453a3 100644 --- a/alfa-client/libs/vorgang/src/lib/vorgang-list-search-container/vorgang-list-search/vorgang-list-search.component.scss +++ b/alfa-client/libs/vorgang/src/lib/vorgang-list-search-container/vorgang-list-search/vorgang-list-search.component.scss @@ -7,6 +7,6 @@ div { } h3 { - font-size: 18px; + font-size: 1.125rem; margin-bottom: 4px; } diff --git a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-list-in-vorgang-container/wiedervorlage-list-in-vorgang/wiedervorlage-in-vorgang/wiedervorlage-in-vorgang.component.html b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-list-in-vorgang-container/wiedervorlage-list-in-vorgang/wiedervorlage-in-vorgang/wiedervorlage-in-vorgang.component.html index 8f22382ce7fa032dcc18833d833fbac8d705de24..63809ff94287361c07b4b4bbb35f83c19a87f663 100644 --- a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-list-in-vorgang-container/wiedervorlage-list-in-vorgang/wiedervorlage-in-vorgang/wiedervorlage-in-vorgang.component.html +++ b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-list-in-vorgang-container/wiedervorlage-list-in-vorgang/wiedervorlage-in-vorgang/wiedervorlage-in-vorgang.component.html @@ -23,7 +23,10 @@ unter der Lizenz sind dem Lizenztext zu entnehmen. --> -<div [attr.data-test-id]="wiedervorlageResource.betreff | convertForDataTest" class="container"> +<div + [attr.data-test-id]="wiedervorlageResource.betreff | convertForDataTest" + class="container text-sm" +> <div class="row"> <alfa-wiedervorlage-status data-test-class="status" diff --git a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-breadcrumb-container/wiedervorlage-breadcrumb/wiedervorlage-breadcrumb.component.html b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-breadcrumb-container/wiedervorlage-breadcrumb/wiedervorlage-breadcrumb.component.html index c9ba19672327f65810cbf341f1509d9d35efb768..bd029889ffc001a81cfc4018f1c9303de2a51348 100644 --- a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-breadcrumb-container/wiedervorlage-breadcrumb/wiedervorlage-breadcrumb.component.html +++ b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-breadcrumb-container/wiedervorlage-breadcrumb/wiedervorlage-breadcrumb.component.html @@ -23,8 +23,4 @@ unter der Lizenz sind dem Lizenztext zu entnehmen. --> -<span alfa-aktenzeichen [vorgang]="vorgang"></span> -<span>/</span> -<span>Wiedervorlagen</span> -<span>/</span> -<span>{{ betreff }}</span> +<h2 class="mb-2 mt-1 text-base font-medium">{{ betreff }}</h2> diff --git a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-breadcrumb-container/wiedervorlage-breadcrumb/wiedervorlage-breadcrumb.component.scss b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-breadcrumb-container/wiedervorlage-breadcrumb/wiedervorlage-breadcrumb.component.scss deleted file mode 100644 index aec918f0e6ec45b7cb161e4fd7a59f18b7d9a4c5..0000000000000000000000000000000000000000 --- a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-breadcrumb-container/wiedervorlage-breadcrumb/wiedervorlage-breadcrumb.component.scss +++ /dev/null @@ -1,46 +0,0 @@ -/** - * Copyright (C) 2022 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 'variables'; - -:host { - display: block; - font-size: 18px; - margin: 0 -4px 24px -4px; - - ::ng-deep span { - margin: 0 4px; - } - - a { - text-decoration: none; - outline: 0; - margin: -3px; - padding: 3px; - - &:focus { - border-radius: 12px; - background-color: rgba(#777, 0.16); - } - } -} diff --git a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-breadcrumb-container/wiedervorlage-breadcrumb/wiedervorlage-breadcrumb.component.ts b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-breadcrumb-container/wiedervorlage-breadcrumb/wiedervorlage-breadcrumb.component.ts index d4f5108551db4bc9e246f30efb74d8ff36137003..7de3be70b8613d9de494fb7b5ef8b7e70c5a0813 100644 --- a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-breadcrumb-container/wiedervorlage-breadcrumb/wiedervorlage-breadcrumb.component.ts +++ b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-breadcrumb-container/wiedervorlage-breadcrumb/wiedervorlage-breadcrumb.component.ts @@ -21,14 +21,13 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { Component, Input, OnChanges, SimpleChanges } from '@angular/core'; import { VorgangResource } from '@alfa-client/vorgang-shared'; import { WiedervorlageMessages, WiedervorlageResource } from '@alfa-client/wiedervorlage-shared'; +import { Component, Input, OnChanges, SimpleChanges } from '@angular/core'; @Component({ selector: 'alfa-wiedervorlage-breadcrumb', templateUrl: './wiedervorlage-breadcrumb.component.html', - styleUrls: ['./wiedervorlage-breadcrumb.component.scss'], }) export class WiedervorlageBreadcrumbComponent implements OnChanges { @Input() vorgang: VorgangResource; diff --git a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-page.component.html b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-page.component.html index 612c4524067db2d4d7d4d0f312029a33e79603ed..bfca634528875b5bc619c54bf6cf960a268a38d8 100644 --- a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-page.component.html +++ b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-page.component.html @@ -33,7 +33,8 @@ </ozgcloud-subnavigation> <div class="l-scroll-area--full"> - <div class="wrapper"> + <div class="wrapper grow"> + <h1 class="text-lg font-medium">Wiedervorlage</h1> <alfa-wiedervorlage-breadcrumb-container [wiedervorlage]="wiedervorlageStateResource.resource" ></alfa-wiedervorlage-breadcrumb-container> diff --git a/alfa-client/package.json b/alfa-client/package.json index 8dc2364f58bb67444d25979f3fd75136efdac63e..730267babe4d51dff0fb89982e5edf16f65f0631 100644 --- a/alfa-client/package.json +++ b/alfa-client/package.json @@ -1,6 +1,6 @@ { "name": "alfa", - "version": "0.7.0-SNAPSHOT", + "version": "0.8.0-SNAPSHOT", "license": "MIT", "scripts": { "start": "nx run alfa:serve --port 4300 --disable-host-check", diff --git a/alfa-client/pom.xml b/alfa-client/pom.xml index 31c038a64e63e52771d87ecb1085e907e9af2cb8..b36055f368b4404644459bb3f3816469ba738293 100644 --- a/alfa-client/pom.xml +++ b/alfa-client/pom.xml @@ -29,7 +29,7 @@ <parent> <groupId>de.ozgcloud.alfa</groupId> <artifactId>alfa</artifactId> - <version>2.11.0-SNAPSHOT</version> + <version>2.12.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> diff --git a/alfa-server/pom.xml b/alfa-server/pom.xml index 5124be2c496ebd8623a1445b16fdcb0a2074c4f0..e157390eee8d5e6722072745abd75cb760f831ec 100644 --- a/alfa-server/pom.xml +++ b/alfa-server/pom.xml @@ -5,7 +5,7 @@ <parent> <groupId>de.ozgcloud.alfa</groupId> <artifactId>alfa</artifactId> - <version>2.11.0-SNAPSHOT</version> + <version>2.12.0-SNAPSHOT</version> </parent> <artifactId>alfa-server</artifactId> diff --git a/alfa-service/pom.xml b/alfa-service/pom.xml index f2e9a4141f8dc1c75e3769a1671b1ca511714d8c..4d4e6c9ae8b0eca82e0af3bf544e12e11dc7fa15 100644 --- a/alfa-service/pom.xml +++ b/alfa-service/pom.xml @@ -31,7 +31,7 @@ <parent> <groupId>de.ozgcloud.alfa</groupId> <artifactId>alfa</artifactId> - <version>2.11.0-SNAPSHOT</version> + <version>2.12.0-SNAPSHOT</version> </parent> <artifactId>alfa-service</artifactId> diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/Command.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/Command.java index 9e862c4756eb06bfa8aa47591b7d390de442d865..1a5d2ac5fda7dc714f9f2b13514dc22705159219 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/Command.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/Command.java @@ -26,6 +26,8 @@ package de.ozgcloud.alfa.common.command; import java.time.ZonedDateTime; import java.util.Map; +import org.apache.commons.lang3.StringUtils; + import com.fasterxml.jackson.annotation.JsonIgnore; import de.ozgcloud.alfa.common.LinkedUserProfileResource; @@ -74,4 +76,14 @@ public class Command { public CommandOrder getCommandOrder() { return CommandOrder.fromOrder(order); } + + @JsonIgnore + public boolean isFinishedSuccessfully() { + return status == CommandStatus.FINISHED && StringUtils.isEmpty(errorMessage); + } + + @JsonIgnore + public boolean isNotDone() { + return status.isNotDone(); + } } \ No newline at end of file diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandService.java index 777ad9b7689d27e87f460276f96ffbd46d99ffe3..da98c4e572fda1d5c7175040bd88eace508555f6 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandService.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandService.java @@ -23,27 +23,30 @@ */ package de.ozgcloud.alfa.common.command; +import java.util.Calendar; import java.util.Optional; import java.util.stream.Stream; import jakarta.validation.Valid; import org.apache.commons.collections.MapUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import de.ozgcloud.alfa.loeschanforderung.DeleteLoeschAnforderung; import lombok.NonNull; +import lombok.RequiredArgsConstructor; +@RequiredArgsConstructor @Validated @Service public class CommandService { static final long NO_RELATION_VERSION = -1; + private static final int WAIT_TIME_MS = 500; + private static final int COMMAND_REQUEST_THRESHOLD_MILLIS = 10000; - @Autowired - private CommandRemoteService remoteService; + private final CommandRemoteService remoteService; /** * @deprecated use {@link #createCommand(CreateCommand)} instead @@ -111,4 +114,25 @@ public class CommandService { return remoteService.findCommands(vorgangId, Optional.of(CommandStatus.FINISHED), Optional.empty()); } + public Command waitUntilDone(Command commandToWaitFor) { + var command = commandToWaitFor; + var calendar = Calendar.getInstance(); + var timeout = calendar.getTimeInMillis() + COMMAND_REQUEST_THRESHOLD_MILLIS; + while (command.isNotDone() && calendar.getTimeInMillis() < timeout) { + synchronized (this) { + try { + wait(WAIT_TIME_MS); + command = reloadCommand(command.getId()); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + } + } + return command; + } + + public Command reloadCommand(String commandId) { + return remoteService.getCommand(commandId); + } + } \ No newline at end of file diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandStatus.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandStatus.java index 285ebdaae3817652aa5c80b1d9817628fd044e6c..548107b825bca6aaed64a50f6f24611c9d7a8174 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandStatus.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandStatus.java @@ -23,6 +23,14 @@ */ package de.ozgcloud.alfa.common.command; +import java.util.Set; + public enum CommandStatus { PENDING, FINISHED, ERROR, REVOKE_PENDING, REVOKED; + + private static final Set<CommandStatus> FINAL_STATES = Set.of(FINISHED, ERROR, REVOKED); + + public boolean isNotDone() { + return !FINAL_STATES.contains(this); + } } diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageCommandController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageCommandController.java index d621a01dd99a332de8fe0dd6b2b754ccdc9a351a..2cc413979da3622e47fc9d0d5677b804f001cf23 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageCommandController.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageCommandController.java @@ -53,27 +53,26 @@ public class WiedervorlageCommandController { @PathVariable long wiedervorlageVersion) { var wiedervorlage = service.getById(wiedervorlageId); var createdCommand = createCommand(wiedervorlage, command); + var doneCommand = service.updateNextFrist(createdCommand, wiedervorlage.getVorgangId()); - service.updateNextFrist(wiedervorlage.getVorgangId()); - - return ResponseEntity.created(linkTo(CommandController.class).slash(createdCommand.getId()).toUri()).build(); + return ResponseEntity.created(linkTo(CommandController.class).slash(doneCommand.getId()).toUri()).build(); } Command createCommand(Wiedervorlage wiedervorlage, CreateCommand command) { switch (command.getOrder()) { - case LegacyOrder.WIEDERVORLAGE_ERLEDIGEN: { - return service.erledigen(wiedervorlage); - } - case LegacyOrder.WIEDERVORLAGE_WIEDEREROEFFNEN: { - return service.wiedereroeffnen(wiedervorlage); - } - case LegacyOrder.EDIT_WIEDERVORLAGE: { - return service.editWiedervorlage(updateWiedervorlageByCommand(wiedervorlage, (Wiedervorlage) command.getBody()), - wiedervorlage.getId(), - wiedervorlage.getVersion()); - } - default: - throw new TechnicalException("Unsupported order " + command.getOrder()); + case LegacyOrder.WIEDERVORLAGE_ERLEDIGEN: { + return service.erledigen(wiedervorlage); + } + case LegacyOrder.WIEDERVORLAGE_WIEDEREROEFFNEN: { + return service.wiedereroeffnen(wiedervorlage); + } + case LegacyOrder.EDIT_WIEDERVORLAGE: { + return service.editWiedervorlage(updateWiedervorlageByCommand(wiedervorlage, (Wiedervorlage) command.getBody()), + wiedervorlage.getId(), + wiedervorlage.getVersion()); + } + default: + throw new TechnicalException("Unsupported order " + command.getOrder()); } } @@ -97,10 +96,9 @@ public class WiedervorlageCommandController { @PostMapping public ResponseEntity<Void> createWiedervorlage(@RequestBody CreateCommand command, @PathVariable String vorgangId) { var createdCommand = service.createWiedervorlage((Wiedervorlage) command.getBody(), vorgangId); + var doneCommand = service.updateNextFrist(createdCommand, createdCommand.getVorgangId()); - service.updateNextFrist(vorgangId); - - return ResponseEntity.created(linkTo(CommandController.class).slash(createdCommand.getId()).toUri()).build(); + return ResponseEntity.created(linkTo(CommandController.class).slash(doneCommand.getId()).toUri()).build(); } } } \ No newline at end of file diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageService.java index 660aeefbe8e6a5d1425fd04d4d3b9cedee1a6e8a..28f4795c3695c12aa76981ebcb01c2f807fbbbde 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageService.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageService.java @@ -33,27 +33,26 @@ import java.util.stream.Stream; import jakarta.validation.Valid; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItemService; import de.ozgcloud.alfa.common.command.Command; +import de.ozgcloud.alfa.common.command.CommandService; import de.ozgcloud.alfa.common.user.CurrentUserService; +import lombok.RequiredArgsConstructor; +@RequiredArgsConstructor @Validated @Service class WiedervorlageService { private static final Predicate<Wiedervorlage> IS_NOT_DONE = wiedervorlage -> !wiedervorlage.isDone(); - @Autowired - private WiedervorlageRemoteService remoteService; - @Autowired - private VorgangAttachedItemService vorgangAttachedItemService; - @Autowired - private CurrentUserService currentUserService; + private final WiedervorlageRemoteService remoteService; + private final VorgangAttachedItemService vorgangAttachedItemService; + private final CurrentUserService currentUserService; + private final CommandService commandService; public Command createWiedervorlage(@Valid Wiedervorlage wiedervorlage, String vorgangId) { return vorgangAttachedItemService.createNewWiedervorlage(addCreated(wiedervorlage), vorgangId); @@ -74,8 +73,15 @@ class WiedervorlageService { return remoteService.getById(wiedervorlageId); } - @Async - public void updateNextFrist(String vorgangId) { + public Command updateNextFrist(Command command, String vorgangId) { + var doneCommand = commandService.waitUntilDone(command); + if (doneCommand.isFinishedSuccessfully()) { + doUpdateNextFrist(vorgangId); + } + return doneCommand; + } + + void doUpdateNextFrist(String vorgangId) { var allWiedervorlagen = findByVorgangId(vorgangId); remoteService.updateNextFrist(vorgangId, calculateNextFrist(allWiedervorlagen)); diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandServiceTest.java index 95b37ba1901cbd62a954642ee61d4daf09fe4954..2bf962ce6cb343babed90d058cbe4549f6acb1b5 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandServiceTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandServiceTest.java @@ -27,6 +27,7 @@ import static org.assertj.core.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; +import java.util.Calendar; import java.util.Map; import java.util.Optional; import java.util.UUID; @@ -39,6 +40,7 @@ import org.mockito.ArgumentCaptor; import org.mockito.Captor; import org.mockito.InjectMocks; import org.mockito.Mock; +import org.mockito.MockedStatic; import org.mockito.Spy; import de.ozgcloud.alfa.loeschanforderung.DeleteLoeschAnforderung; @@ -297,4 +299,99 @@ class CommandServiceTest { verify(remoteService).findCommands(VorgangHeaderTestFactory.ID, Optional.of(CommandStatus.FINISHED), Optional.empty()); } } + + @Nested + class TestWaitUntilDone { + + private final Command pendingCommand = CommandTestFactory.createBuilder().status(CommandStatus.PENDING).build(); + private final Command finishedCommand = pendingCommand.toBuilder().status(CommandStatus.FINISHED).build(); + + @Nested + class OnFinishedCommand { + + @Test + void shouldReturnFinishedCommand() { + var resultCommand = service.waitUntilDone(finishedCommand); + + assertThat(resultCommand).isEqualTo(finishedCommand); + } + + @Test + void shouldNotReloadCommand() { + service.waitUntilDone(finishedCommand); + + verify(service, never()).reloadCommand(any()); + } + } + + @Nested + class OnPendingCommand { + + @BeforeEach + void setUp() { + doReturn(finishedCommand).when(service).reloadCommand(pendingCommand.getId()); + } + + @Test + void shouldReloadCommand() { + service.waitUntilDone(pendingCommand); + + verify(service).reloadCommand(pendingCommand.getId()); + } + + @Test + void shouldReturnDoneCommand() { + var resultCommand = service.waitUntilDone(pendingCommand); + + assertThat(resultCommand).isEqualTo(finishedCommand); + } + } + + @Nested + class OnTimeoutExceeded { + + @Mock + private Calendar calendar; + + @Test + void shouldReturnPendingCommand() { + try (MockedStatic<Calendar> calendarMockedStatic = mockStatic(Calendar.class)) { + calendarMockedStatic.when(Calendar::getInstance).thenReturn(calendar); + when(calendar.getTimeInMillis()).thenReturn(0L, 15000L); + + var resultCommand = service.waitUntilDone(pendingCommand); + + assertThat(resultCommand).isEqualTo(pendingCommand); + } + } + + @Test + void shouldReloadPendingCommand() { + doReturn(pendingCommand).when(service).reloadCommand(pendingCommand.getId()); + + try (MockedStatic<Calendar> calendarMockedStatic = mockStatic(Calendar.class)) { + calendarMockedStatic.when(Calendar::getInstance).thenReturn(calendar); + when(calendar.getTimeInMillis()).thenReturn(0L, 0L, 15000L); + + service.waitUntilDone(pendingCommand); + + verify(service).reloadCommand(pendingCommand.getId()); + } + } + + @Test + void shouldReturnPendingCommandAfterReload() { + doReturn(pendingCommand).when(service).reloadCommand(pendingCommand.getId()); + + try (MockedStatic<Calendar> calendarMockedStatic = mockStatic(Calendar.class)) { + calendarMockedStatic.when(Calendar::getInstance).thenReturn(calendar); + when(calendar.getTimeInMillis()).thenReturn(0L, 0L, 15000L); + + var resultCommand = service.waitUntilDone(pendingCommand); + + assertThat(resultCommand).isEqualTo(pendingCommand); + } + } + } + } } \ No newline at end of file diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandStatusTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandStatusTest.java new file mode 100644 index 0000000000000000000000000000000000000000..f91dc7028af4ca954d1dfc9fae1e70affbdcc066 --- /dev/null +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandStatusTest.java @@ -0,0 +1,34 @@ +package de.ozgcloud.alfa.common.command; + +import static org.assertj.core.api.Assertions.*; + +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.EnumSource; +import org.junit.jupiter.params.provider.EnumSource.Mode; + +class CommandStatusTest { + + @Nested + class TestIsNotDone { + + @ParameterizedTest + @EnumSource(names = { "PENDING", "REVOKE_PENDING" }) + void shouldReturnTrue(CommandStatus status) { + var istNotDone = status.isNotDone(); + + assertThat(istNotDone).isTrue(); + + } + + @ParameterizedTest + @EnumSource(names = { "PENDING", "REVOKE_PENDING" }, mode = Mode.EXCLUDE) + void shouldReturnFalse(CommandStatus status) { + var istNotDone = status.isNotDone(); + + assertThat(istNotDone).isFalse(); + } + + } + +} \ No newline at end of file diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandTest.java new file mode 100644 index 0000000000000000000000000000000000000000..c838d402226703a6133dc5f8a65b79e7d911373e --- /dev/null +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandTest.java @@ -0,0 +1,84 @@ +package de.ozgcloud.alfa.common.command; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.Mockito.*; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.EnumSource; +import org.junit.jupiter.params.provider.EnumSource.Mode; +import org.junit.jupiter.params.provider.ValueSource; +import org.mockito.Mock; + +import com.thedeanda.lorem.LoremIpsum; + +class CommandTest { + + @Nested + class TestIsFinishedSuccessfully { + + @Test + void shouldReturnTrue() { + var command = CommandTestFactory.createBuilder().status(CommandStatus.FINISHED).build(); + + var isDoneSuccessfully = command.isFinishedSuccessfully(); + + assertThat(isDoneSuccessfully).isTrue(); + } + + @ParameterizedTest + @EnumSource(names = "FINISHED", mode = Mode.EXCLUDE) + void shouldReturnFalseOnStatusNotFinished(CommandStatus commandStatus) { + var command = CommandTestFactory.createBuilder().status(commandStatus).build(); + + var isDoneSuccessfully = command.isFinishedSuccessfully(); + + assertThat(isDoneSuccessfully).isFalse(); + } + + @ParameterizedTest + @EnumSource + void shouldReturnFalseOnErrorMessage(CommandStatus commandStatus) { + var command = CommandTestFactory.createBuilder().status(commandStatus).errorMessage(LoremIpsum.getInstance().getWords(1)).build(); + + var isDoneSuccessfully = command.isFinishedSuccessfully(); + + assertThat(isDoneSuccessfully).isFalse(); + } + + } + + @Nested + class TestIsNotDone { + + @Mock + private CommandStatus commandStatus; + private Command command; + + @BeforeEach + void setUp() { + command = CommandTestFactory.createBuilder().status(commandStatus).build(); + } + + @Test + void shouldCallIsNotDone() { + command.isNotDone(); + + verify(commandStatus).isNotDone(); + } + + @ParameterizedTest + @ValueSource(booleans = { true, false }) + void shouldReturnIsNotDone(boolean isNotDone) { + when(commandStatus.isNotDone()).thenReturn(isNotDone); + + var result = command.isNotDone(); + + assertThat(result).isEqualTo(isNotDone); + } + + } + +} \ No newline at end of file diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageCommandByVorgangControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageCommandByVorgangControllerTest.java index 74d31babe720c7877812b0422b00cb1d76b377c2..ef4a43f95f4ed8458d9be2f37bb190e32bd87e84 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageCommandByVorgangControllerTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageCommandByVorgangControllerTest.java @@ -44,7 +44,9 @@ import org.springframework.test.web.servlet.ResultActions; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import de.ozgcloud.alfa.common.binaryfile.BinaryFileTestFactory; +import de.ozgcloud.alfa.common.command.Command; import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController; +import de.ozgcloud.alfa.common.command.CommandStatus; import de.ozgcloud.alfa.common.command.CommandTestFactory; import de.ozgcloud.alfa.common.command.CreateCommand; import de.ozgcloud.alfa.common.command.LegacyOrder; @@ -80,10 +82,15 @@ class WiedervorlageCommandByVorgangControllerTest { @Captor private ArgumentCaptor<Wiedervorlage> wiedervorlageCaptor; + private Command createCommand; + private Command doneCommand; @BeforeEach void mockUserService() { - when(service.createWiedervorlage(any(), any())).thenReturn(CommandTestFactory.create()); + createCommand = CommandTestFactory.create(); + doneCommand = createCommand.toBuilder().status(CommandStatus.FINISHED).build(); + when(service.createWiedervorlage(any(), any())).thenReturn(createCommand); + when(service.updateNextFrist(createCommand, VorgangHeaderTestFactory.ID)).thenReturn(doneCommand); } @Nested @@ -98,10 +105,10 @@ class WiedervorlageCommandByVorgangControllerTest { } @Test - void shouldCallServiceToUpdateNextFrist() { + void shouldUpdateNextFristOnSuccessfullyDoneCommand() { doRequest(); - verify(service).updateNextFrist(VorgangHeaderTestFactory.ID); + verify(service).updateNextFrist(createCommand, VorgangHeaderTestFactory.ID); } @SneakyThrows @@ -115,8 +122,8 @@ class WiedervorlageCommandByVorgangControllerTest { @SneakyThrows private ResultActions doRequest() { return mockMvc.perform( - post(WiedervorlageCommandByVorgangController.WIEDERVORLAGE_COMMANDS_BY_VORGANG, - VorgangHeaderTestFactory.ID) + post(WiedervorlageCommandByVorgangController.WIEDERVORLAGE_COMMANDS_BY_VORGANG, + VorgangHeaderTestFactory.ID) .content(createRequestContent()) .contentType(MediaType.APPLICATION_JSON)) .andExpect(status().is2xxSuccessful()); diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageCommandControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageCommandControllerTest.java index 74bc2df86a8f6f8d98dc1fe34365654ef44c2e0e..198f7a00535cfc7dbcc73c53fa65f3d826a2225d 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageCommandControllerTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageCommandControllerTest.java @@ -46,7 +46,7 @@ import org.springframework.test.web.servlet.setup.MockMvcBuilders; import de.ozgcloud.alfa.common.binaryfile.FileId; import de.ozgcloud.alfa.common.command.Command; import de.ozgcloud.alfa.common.command.CommandOrder; -import de.ozgcloud.alfa.common.command.CommandService; +import de.ozgcloud.alfa.common.command.CommandStatus; import de.ozgcloud.alfa.common.command.CommandTestFactory; import de.ozgcloud.alfa.common.command.CreateCommand; import de.ozgcloud.alfa.common.command.LegacyOrder; @@ -60,8 +60,6 @@ class WiedervorlageCommandControllerTest { @InjectMocks private WiedervorlageCommandController controller; @Mock - private CommandService commandService; - @Mock private WiedervorlageService service; private MockMvc mockMvc; @@ -80,12 +78,18 @@ class WiedervorlageCommandControllerTest { @Nested class ControllerMethods { + private Command createCommand; + private Command doneCommand; + @BeforeEach void init() { when(service.getById(any())).thenReturn(WiedervorlageTestFactory.create()); - when(service.editWiedervorlage(any(), any(), anyLong())).thenReturn(CommandTestFactory.createBuilder() + createCommand = CommandTestFactory.createBuilder() .order(CommandOrder.UPDATE_ATTACHED_ITEM.name()) - .body(WiedervorlageTestFactory.createAsMap()).build()); + .body(WiedervorlageTestFactory.createAsMap()).build(); + doneCommand = createCommand.toBuilder().status(CommandStatus.FINISHED).build(); + when(service.editWiedervorlage(any(), any(), anyLong())).thenReturn(createCommand); + when(service.updateNextFrist(createCommand, VorgangHeaderTestFactory.ID)).thenReturn(doneCommand); } @SneakyThrows @@ -97,10 +101,10 @@ class WiedervorlageCommandControllerTest { } @Test - void shouldCallServiceUpdateNextFrist() { + void shouldUpdateNextFristOnSuccessfullyDoneCommand() { doRequest(); - verify(service).updateNextFrist(VorgangHeaderTestFactory.ID); + verify(service).updateNextFrist(createCommand, VorgangHeaderTestFactory.ID); } @SneakyThrows @@ -129,8 +133,8 @@ class WiedervorlageCommandControllerTest { @SneakyThrows private ResultActions doRequest() { return mockMvc.perform( - post(WiedervorlageCommandController.WIEDERVORLAGE_COMMANDS, WiedervorlageTestFactory.ID, WiedervorlageTestFactory.VERSION) - .content(createRequestContent()).contentType(MediaType.APPLICATION_JSON)) + post(WiedervorlageCommandController.WIEDERVORLAGE_COMMANDS, WiedervorlageTestFactory.ID, WiedervorlageTestFactory.VERSION) + .content(createRequestContent()).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().is2xxSuccessful()); } diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageServiceTest.java index 3af67e13526b1f213bcbd417e2c5b2a45ae78a85..ae7f2e55675bd0ee63bb76f7a1b175b3bec39534 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageServiceTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageServiceTest.java @@ -47,6 +47,7 @@ import org.mockito.Spy; import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItemService; import de.ozgcloud.alfa.common.command.Command; import de.ozgcloud.alfa.common.command.CommandService; +import de.ozgcloud.alfa.common.command.CommandStatus; import de.ozgcloud.alfa.common.command.CommandTestFactory; import de.ozgcloud.alfa.common.user.CurrentUserService; import de.ozgcloud.alfa.common.user.UserProfileTestFactory; @@ -107,14 +108,14 @@ class WiedervorlageServiceTest { } @Test - void shouldSetCreatedAt() throws Exception { + void shouldSetCreatedAt() { var wiedervorlage = callAddCreated(); assertThat(wiedervorlage.getCreatedAt()).isNotNull().isCloseTo(ZonedDateTime.now(), within(2, ChronoUnit.SECONDS)); } @Test - void shouldSetCreatedBy() throws Exception { + void shouldSetCreatedBy() { var wiedervorlage = callAddCreated(); assertThat(wiedervorlage.getCreatedBy()).isEqualTo(UserProfileTestFactory.ID.toString()); @@ -172,7 +173,7 @@ class WiedervorlageServiceTest { } @Nested - class TestUpdateNextFrist { + class TestDoUpdateNextFrist { @Nested class ServiceMethod { @@ -206,7 +207,7 @@ class WiedervorlageServiceTest { } private void callUpdateNextFrist() { - service.updateNextFrist(VorgangHeaderTestFactory.ID); + service.doUpdateNextFrist(VorgangHeaderTestFactory.ID); } } @@ -254,4 +255,68 @@ class WiedervorlageServiceTest { } } } + + @Nested + class TestUpdateNextFrist { + + @Test + void shouldWaitUntilCommandDone() { + var pendingCommand = CommandTestFactory.createBuilder().status(CommandStatus.PENDING).build(); + var command = CommandTestFactory.create(); + when(commandService.waitUntilDone(command)).thenReturn(pendingCommand); + + service.updateNextFrist(command, VorgangHeaderTestFactory.ID); + + verify(commandService).waitUntilDone(command); + } + + @Test + void shouldReturnDoneCommand() { + var doneCommand = CommandTestFactory.createBuilder().status(CommandStatus.FINISHED).build(); + var command = CommandTestFactory.create(); + when(commandService.waitUntilDone(command)).thenReturn(doneCommand); + + var result = service.updateNextFrist(command, VorgangHeaderTestFactory.ID); + + assertThat(result).isEqualTo(doneCommand); + } + + @Nested + class OnDoneSuccessfullyCommand { + private final Command command = CommandTestFactory.create(); + private final Command doneCommand = CommandTestFactory.createBuilder().status(CommandStatus.FINISHED).build(); + + @BeforeEach + void setUp() { + when(commandService.waitUntilDone(command)).thenReturn(doneCommand); + } + + @Test + void shouldUpdateNextFrist() { + service.updateNextFrist(command, VorgangHeaderTestFactory.ID); + + verify(service).doUpdateNextFrist(VorgangHeaderTestFactory.ID); + } + } + + @Nested + class OnNotDoneSuccessfullyCommand { + private final Command command = CommandTestFactory.create(); + private final Command pendingCommand = CommandTestFactory.createBuilder().status(CommandStatus.PENDING).build(); + + @BeforeEach + void setUp() { + when(commandService.waitUntilDone(command)).thenReturn(pendingCommand); + } + + @Test + void shouldNotUpdateNextFrist() { + service.updateNextFrist(command, VorgangHeaderTestFactory.ID); + + verify(service, never()).doUpdateNextFrist(VorgangHeaderTestFactory.ID); + } + } + + } + } \ No newline at end of file diff --git a/alfa-xdomea/pom.xml b/alfa-xdomea/pom.xml index 6f92cd2bc38e598b1dc2ab97a546ab4c331c7139..c141f0be18aa411909614eadcb8a85bc679f4837 100644 --- a/alfa-xdomea/pom.xml +++ b/alfa-xdomea/pom.xml @@ -31,7 +31,7 @@ <parent> <groupId>de.ozgcloud.alfa</groupId> <artifactId>alfa</artifactId> - <version>2.11.0-SNAPSHOT</version> + <version>2.12.0-SNAPSHOT</version> </parent> <artifactId>alfa-xdomea</artifactId> diff --git a/pom.xml b/pom.xml index ea6bebe8fdc2895b04b480132d6034a1366d89b8..334f0fbc2c8cf186962349557be289bcb2724de3 100644 --- a/pom.xml +++ b/pom.xml @@ -35,7 +35,7 @@ <groupId>de.ozgcloud.alfa</groupId> <artifactId>alfa</artifactId> - <version>2.11.0-SNAPSHOT</version> + <version>2.12.0-SNAPSHOT</version> <name>Alfa Parent</name> <packaging>pom</packaging>