diff --git a/alfa-client/apps/demo/src/app/app.component.html b/alfa-client/apps/demo/src/app/app.component.html index 25380dd9f3c8fee4758246b0af005928d2cffd1f..6b8faecc400c23f08eb874d8a45386b27f9e455b 100644 --- a/alfa-client/apps/demo/src/app/app.component.html +++ b/alfa-client/apps/demo/src/app/app.component.html @@ -17,28 +17,24 @@ <div class="w-96"> <ods-attachment-container> <ods-attachment - documentName="Mein_2Bescheid.pdf" + caption="Mein_2Bescheid.pdf" description="234 kB" fileType="pdf" isLoading="true" > </ods-attachment> - <ods-attachment documentName="Mein_Bescheid.xml" description="234 kB" fileType="xml"> + <ods-attachment caption="Mein_Bescheid.xml" description="234 kB" fileType="xml"> </ods-attachment> - <ods-attachment documentName="Mein_Bescheid.xml" description="234 kB" fileType="image"> + <ods-attachment caption="Mein_Bescheid.xml" description="234 kB" fileType="image"> </ods-attachment> - <ods-attachment documentName="Mein_Bescheid.doc" description="234 kB" fileType="doc"> + <ods-attachment caption="Mein_Bescheid.doc" description="234 kB" fileType="doc"> </ods-attachment> - <ods-attachment documentName="Mein_Bescheid.doc" description="234 kB" fileType="doc"> + <ods-attachment caption="Mein_Bescheid.doc" description="234 kB" fileType="doc"> </ods-attachment> - <ods-attachment - documentName="Mein_Bescheid.doc" - description="234 kB" - fileType="exclamation" - > + <ods-attachment caption="Mein_Bescheid.doc" description="234 kB" fileType="exclamation"> </ods-attachment> <ods-attachment - documentName="Katzenanmeldung_1231231_eingsdfsdsdfdsfdsfsdfang.pdf" + caption="Katzenanmeldung_1231231_eingsdfsdsdfdsfdsfsdfang.pdf" description="234 kB" fileType="pdf" > diff --git a/alfa-client/libs/binary-file/src/lib/binary-file2-container/binary-file2/binary-file2.component.html b/alfa-client/libs/binary-file/src/lib/binary-file2-container/binary-file2/binary-file2.component.html index a8a263633434e0dc3f4693d414b9427470a1348e..cd64683430db122e9d8411e606f9f80be75d2028 100644 --- a/alfa-client/libs/binary-file/src/lib/binary-file2-container/binary-file2/binary-file2.component.html +++ b/alfa-client/libs/binary-file/src/lib/binary-file2-container/binary-file2/binary-file2.component.html @@ -1,5 +1,5 @@ <ods-attachment - [documentName]="file.name" + [caption]="file.name" [description]="file.size | fileSizePlain" [fileType]="getIconType(file.contentType)" (click)="downloadFile()" diff --git a/alfa-client/libs/design-system/src/index.ts b/alfa-client/libs/design-system/src/index.ts index f111f0697b84d7755dcd24acc5592842f73c0bb9..a9985e3b05d257cb3b535c1b79ca6cbdfa1a252a 100644 --- a/alfa-client/libs/design-system/src/index.ts +++ b/alfa-client/libs/design-system/src/index.ts @@ -1,5 +1,4 @@ export * from './lib/attachment-container/attachment-container.component'; -export * from './lib/attachment-error/attachment-error.component'; export * from './lib/attachment/attachment.component'; export * from './lib/bescheid-container/bescheid-container.component'; export * from './lib/bescheid-status-text/bescheid-status-text.component'; diff --git a/alfa-client/libs/design-system/src/lib/attachment-error/attachment-error.component.spec.ts b/alfa-client/libs/design-system/src/lib/attachment-error/attachment-error.component.spec.ts deleted file mode 100644 index a155514b9bcbb86221c54595fed6f5b21daf740d..0000000000000000000000000000000000000000 --- a/alfa-client/libs/design-system/src/lib/attachment-error/attachment-error.component.spec.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { AttachmentErrorComponent } from './attachment-error.component'; - -describe('AttachmentErrorComponent', () => { - let component: AttachmentErrorComponent; - let fixture: ComponentFixture<AttachmentErrorComponent>; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - imports: [AttachmentErrorComponent], - }).compileComponents(); - - fixture = TestBed.createComponent(AttachmentErrorComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/alfa-client/libs/design-system/src/lib/attachment-error/attachment-error.component.ts b/alfa-client/libs/design-system/src/lib/attachment-error/attachment-error.component.ts deleted file mode 100644 index 83cd48a099a4e0a06d18a4848d1e06793f8039bd..0000000000000000000000000000000000000000 --- a/alfa-client/libs/design-system/src/lib/attachment-error/attachment-error.component.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { Component, Input } from '@angular/core'; -import { FileIconComponent } from '../icons/file-icon/file-icon.component'; - -@Component({ - selector: 'ods-attachment-error', - standalone: true, - imports: [CommonModule, FileIconComponent], - styles: [':host {@apply flex border-b border-black/25 last:border-b-0}'], - template: `<div - class="relative flex w-full items-start gap-3 border-b bg-background-100 px-3 py-2" - > - <div class="flex-shrink"> - <ods-file-icon fileType="exclamation" size="large" /> - </div> - <div class="flex grow flex-col items-start break-all text-text"> - <p class="text-start text-sm text-error">Fehler beim Hochladen</p> - <p class="text-xs text-ozggray-600" *ngFor="let error of errorList">{{ error }}</p> - </div> - </div>`, -}) -export class AttachmentErrorComponent { - @Input({ required: true }) errorList!: string[]; -} diff --git a/alfa-client/libs/design-system/src/lib/attachment/attachment.component.ts b/alfa-client/libs/design-system/src/lib/attachment/attachment.component.ts index b3578d40175fbf30dfbd3abaf66a2afac0797740..bb4e1614d7fa4bb3a6ef638dee8d8620b725792c 100644 --- a/alfa-client/libs/design-system/src/lib/attachment/attachment.component.ts +++ b/alfa-client/libs/design-system/src/lib/attachment/attachment.component.ts @@ -10,24 +10,39 @@ import { SpinnerIconComponent } from '../icons/spinner-icon/spinner-icon.compone imports: [CommonModule, SpinnerIconComponent, FileIconComponent], styles: [':host {@apply flex}'], template: `<button - class="border-b-grayborder relative flex w-full items-start gap-3 border-b bg-background-100 px-3 py-2 hover:bg-background-200" + class="relative flex w-full items-start gap-3 border-b border-b-grayborder bg-background-100 px-3 py-2 hover:bg-background-200" > <div class="flex-shrink"> - <ods-file-icon *ngIf="!isLoading" [fileType]="fileType" size="large" /> - <ods-spinner-icon *ngIf="isLoading" size="large" /> + <ods-file-icon + *ngIf="fileType && !isLoading && !isError" + [fileType]="fileType" + size="large" + /> + <ods-file-icon *ngIf="!isLoading && isError" fileType="exclamation" size="large" /> + <ods-spinner-icon *ngIf="isLoading && !isError" size="large" /> </div> - <div class="flex grow flex-col items-start break-all text-text"> - <p class="text-start text-sm"> - {{ documentName }} + <div class="flex grow flex-col items-start break-all text-start text-text"> + <p class="text-sm" [ngClass]="isError && 'text-error'"> + {{ caption }} + </p> + <p *ngIf="description && !isError" class="text-xs text-text/65"> + {{ description }} + </p> + <p *ngFor="let error of errorList" class="text-xs text-text/40"> + {{ error }} </p> - <p class="text-xs text-text/65">{{ description }}</p> </div> <ng-content select="[close]" *ngIf="!isLoading"></ng-content> </button>`, }) export class AttachmentComponent { - @Input({ required: true }) documentName!: string; - @Input({ required: true }) fileType!: string; + @Input({ required: true }) caption!: string; + @Input() fileType: string = ''; @Input() description = ''; @Input() isLoading: boolean = false; + @Input() errorList: string[] = []; + + protected get isError() { + return this.errorList.length > 0; + } } diff --git a/alfa-client/libs/design-system/src/lib/attachment/attachment.stories.ts b/alfa-client/libs/design-system/src/lib/attachment/attachment.stories.ts index 814e9ac5e9c27a11955bbac5ec538e92a35f7e4d..7104e718bbf91896eee9611fd9aaabb51cc7525b 100644 --- a/alfa-client/libs/design-system/src/lib/attachment/attachment.stories.ts +++ b/alfa-client/libs/design-system/src/lib/attachment/attachment.stories.ts @@ -14,14 +14,14 @@ type Story = StoryObj<AttachmentComponent>; export const Default: Story = { name: 'File with pdf icon', args: { - documentName: 'Katzenanmeldung_1231231_eingang.pdf', + caption: 'Katzenanmeldung_1231231_eingang.pdf', description: '450 kB', fileType: 'pdf', }, argTypes: { - documentName: { + caption: { table: { - type: { summary: 'Name of the document' }, + type: { summary: 'Name of the document or title' }, }, }, description: { @@ -35,18 +35,26 @@ export const Default: Story = { export const Doc: Story = { name: 'File with doc icon', args: { - documentName: 'Katzenanmeldung_1231231_eingang.doc', + caption: 'Katzenanmeldung_1231231_eingang.doc', description: '573 kB', fileType: 'doc', }, }; export const Loading: Story = { - name: 'File with doc icon', + name: 'File with loading icon', args: { - documentName: 'Katzenanmeldung_1231231_eingang.doc', + caption: 'Katzenanmeldung_1231231_eingang.doc', description: '573 kB', fileType: 'doc', isLoading: true, }, }; + +export const Error: Story = { + name: 'Error message in file', + args: { + caption: 'Fehler beim Hochladen', + errorList: ['Erlaubte Dateiendungen: pdf, jpg, png, jpeg'], + }, +}; diff --git a/alfa-client/libs/design-system/src/lib/button/button.stories.ts b/alfa-client/libs/design-system/src/lib/button/button.stories.ts index bb64d56b0a7aeca2598a8dfeb8efe33b361586ce..9739685d3479512e4ee3deea340727d0c296f049 100644 --- a/alfa-client/libs/design-system/src/lib/button/button.stories.ts +++ b/alfa-client/libs/design-system/src/lib/button/button.stories.ts @@ -20,9 +20,9 @@ export default meta; type Story = StoryObj<ButtonComponent>; export const Default: Story = { - args: { text: 'Hello world!', isLoading: false, type: 'primary' }, + args: { text: 'Hello world!', isLoading: false, variant: 'primary' }, argTypes: { - type: { + variant: { options: ['primary', 'outline'], control: { type: 'radio' }, }, @@ -30,7 +30,7 @@ export const Default: Story = { }; export const WithIcon: Story = { - args: { text: 'I have an icon', isLoading: false, type: 'outline' }, + args: { text: 'I have an icon', isLoading: false, variant: 'outline' }, render: (args: ButtonComponent) => ({ props: args, template: `<ods-button ${argsToTemplate(args)}> diff --git a/alfa-client/libs/design-system/src/lib/icons/file-icon/file-icon.component.ts b/alfa-client/libs/design-system/src/lib/icons/file-icon/file-icon.component.ts index 4f526397ea2c1eaebf645e6ff055510ee28cf1fb..3a4280cc26c8dc3c9ac0542649290e9e4ff41422 100644 --- a/alfa-client/libs/design-system/src/lib/icons/file-icon/file-icon.component.ts +++ b/alfa-client/libs/design-system/src/lib/icons/file-icon/file-icon.component.ts @@ -80,7 +80,6 @@ type FileiconVariants = VariantProps<typeof fileiconVariants>; export class FileIconComponent { @Input() fileType: FileiconVariants['fileType']; @Input() size: FileiconVariants['size']; - @Input() isLoading: boolean = false; fileiconVariants = fileiconVariants; } diff --git a/alfa-client/libs/design-system/src/lib/icons/file-icon/file-icon.stories.ts b/alfa-client/libs/design-system/src/lib/icons/file-icon/file-icon.stories.ts index 99f7c5e5022779e1cb0740900c68b9b3c65c5ebd..a2ffc07ff732f6d8253b547895b420128767b7d6 100644 --- a/alfa-client/libs/design-system/src/lib/icons/file-icon/file-icon.stories.ts +++ b/alfa-client/libs/design-system/src/lib/icons/file-icon/file-icon.stories.ts @@ -13,5 +13,5 @@ export default meta; type Story = StoryObj<FileIconComponent>; export const Default: Story = { - args: { type: 'pdf', size: 'xl', color: 'pdf' }, + args: { fileType: 'pdf', size: 'large' }, }; diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-form-error/vorgang-detail-bescheiden-form-error.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-form-error/vorgang-detail-bescheiden-form-error.component.html index a918dc17e3598587c93a32aa26172bb1ab088d03..e8c2157a921270e01c3ac94f416d963d3950a3f2 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-form-error/vorgang-detail-bescheiden-form-error.component.html +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-form-error/vorgang-detail-bescheiden-form-error.component.html @@ -1 +1 @@ -<ods-attachment-error [errorList]="errorList"></ods-attachment-error> +<ods-attachment caption="Fehler beim Hochladen" [errorList]="errorList"></ods-attachment> diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-form-error/vorgang-detail-bescheiden-form-error.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-form-error/vorgang-detail-bescheiden-form-error.component.spec.ts index 19de71ccad63395970f15d60808ded974ee1b9bf..785a49306da8f7a1b572af25cc9da197f4714c07 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-form-error/vorgang-detail-bescheiden-form-error.component.spec.ts +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-form-error/vorgang-detail-bescheiden-form-error.component.spec.ts @@ -1,6 +1,6 @@ import { ApiError, Issue } from '@alfa-client/tech-shared'; import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { AttachmentErrorComponent } from '@ods/system'; +import { AttachmentComponent } from '@ods/system'; import { createApiError, createIssue } from 'libs/tech-shared/test/error'; import { MockComponent } from 'ng-mocks'; import { VorgangDetailBescheidenFormErrorComponent } from './vorgang-detail-bescheiden-form-error.component'; @@ -19,7 +19,7 @@ describe('VorgangDetailBescheidenFormErrorComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [VorgangDetailBescheidenFormErrorComponent], - imports: [MockComponent(AttachmentErrorComponent)], + imports: [MockComponent(AttachmentComponent)], }).compileComponents(); fixture = TestBed.createComponent(VorgangDetailBescheidenFormErrorComponent); diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-form-error/vorgang-detail-bescheiden-form-error.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-form-error/vorgang-detail-bescheiden-form-error.component.ts index e37d488736e6cda3577126ce47752cb855895e9d..769961eedfa6a07bebd03c514ddd7cab031f676b 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-form-error/vorgang-detail-bescheiden-form-error.component.ts +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-form-error/vorgang-detail-bescheiden-form-error.component.ts @@ -4,7 +4,6 @@ import { Component, Input } from '@angular/core'; @Component({ selector: 'alfa-vorgang-detail-bescheiden-form-error', templateUrl: './vorgang-detail-bescheiden-form-error.component.html', - styles: [], }) export class VorgangDetailBescheidenFormErrorComponent { @Input() set error(error: ApiError) { diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-attachments/vorgang-detail-bescheiden-result-attachments.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-attachments/vorgang-detail-bescheiden-result-attachments.component.html index 58820ed3249496a0d88f11e04b65dbc98d377fb9..be645ff3a735e0e180683c9b19da7b29c0d49442 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-attachments/vorgang-detail-bescheiden-result-attachments.component.html +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-attachments/vorgang-detail-bescheiden-result-attachments.component.html @@ -21,8 +21,7 @@ </alfa-binary-file2-container> <ods-attachment *ngIf="attachment.loading" - documentName="Anhang wird hochgeladen" - fileType="" + caption="Anhang wird hochgeladen" [isLoading]="true" ></ods-attachment> </ng-container> diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-dokument/vorgang-detail-bescheiden-result-dokument.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-dokument/vorgang-detail-bescheiden-result-dokument.component.html index 5a92ba6a0e1a6c43d8b71b3043327904e0333b3a..f030c90ee341853fb07ef60b15dbe7b29c44fdbe 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-dokument/vorgang-detail-bescheiden-result-dokument.component.html +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-dokument/vorgang-detail-bescheiden-result-dokument.component.html @@ -17,8 +17,7 @@ </ng-container> <ods-attachment *ngIf="uploadBescheidDocumentInProgress.loading" - documentName="Bescheiddokument wird hochgeladen" - fileType="" + caption="Bescheiddokument wird hochgeladen" [isLoading]="true" ></ods-attachment> <!-- REPLACEME: UI/UX Componente für den Fehler anzeigen--> diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts index 45f9decc4f7d4e8133605ba802b99dd72a4a665b..ffe7cd7d2979b8d53be93819cb159456cd4a98e9 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts @@ -50,7 +50,6 @@ import { import { AttachmentComponent, AttachmentContainerComponent, - AttachmentErrorComponent, BescheidGenerateIconComponent, BescheidStatusTextComponent, BescheidUploadIconComponent, @@ -155,7 +154,6 @@ const routes: Routes = [ BescheidGenerateIconComponent, AttachmentComponent, AttachmentContainerComponent, - AttachmentErrorComponent, ButtonWithSpinnerComponent, FileUploadEditorComponent, SingleFileUploadEditorComponent,