diff --git a/alfa-client/libs/admin/organisations-einheit/src/lib/organisations-einheit-container/organisations-einheit-list/organisations-einheit-list.component.html b/alfa-client/libs/admin/organisations-einheit/src/lib/organisations-einheit-container/organisations-einheit-list/organisations-einheit-list.component.html index b90eaca0ebe2582b649a5ddc44cdc3cc84f76e67..8dc8279de55dc9926954798e2eece9dbc68eee0c 100644 --- a/alfa-client/libs/admin/organisations-einheit/src/lib/organisations-einheit-container/organisations-einheit-list/organisations-einheit-list.component.html +++ b/alfa-client/libs/admin/organisations-einheit/src/lib/organisations-einheit-container/organisations-einheit-list/organisations-einheit-list.component.html @@ -48,7 +48,7 @@ <dd class="mt-1" data-test-id="organisations-einheit-sync-error"> <ods-exclamation-icon *ngIf="organisationsEinheitResource.syncResult === AdminOrganisationsEinheitSyncResult.NOT_FOUND_IN_PVOG" - matTooltip="Organisationseinheit wurde nicht in den PVOG-Daten gefunden." + tooltip="Organisationseinheit wurde nicht in den PVOG-Daten gefunden." size="small" /> <ods-exclamation-icon diff --git a/alfa-client/libs/admin/organisations-einheit/src/lib/organisations-einheit-container/organisations-einheit-list/organisations-einheit-list.component.spec.ts b/alfa-client/libs/admin/organisations-einheit/src/lib/organisations-einheit-container/organisations-einheit-list/organisations-einheit-list.component.spec.ts index f7ce733a741f7c9c8a2162bca39ece86ad04b76f..0d5d5364e04fbe0e99026fb099091d7f7d641495 100644 --- a/alfa-client/libs/admin/organisations-einheit/src/lib/organisations-einheit-container/organisations-einheit-list/organisations-einheit-list.component.spec.ts +++ b/alfa-client/libs/admin/organisations-einheit/src/lib/organisations-einheit-container/organisations-einheit-list/organisations-einheit-list.component.spec.ts @@ -31,16 +31,15 @@ import { } from '@alfa-client/test-utils'; import { CommonModule } from '@angular/common'; import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { MatTooltipModule } from '@angular/material/tooltip'; import { ActivatedRoute } from '@angular/router'; -import { ExclamationIconComponent, ListComponent, ListItemComponent } from '@ods/system'; +import { ExclamationIconComponent, ListComponent, ListItemComponent, TooltipDirective } from '@ods/system'; import { AdminOrganisationsEinheitResource, AdminOrganisationsEinheitSyncResult, } from 'libs/admin/organisations-einheit-shared/src/lib/organisations-einheit.model'; import { createAdminOrganisationsEinheitResource } from 'libs/admin/organisations-einheit-shared/src/test/organisations-einheit'; import { getDataTestIdOf } from 'libs/tech-shared/test/data-test'; -import { MockComponent, MockModule } from 'ng-mocks'; +import { MockComponent, MockDirective } from 'ng-mocks'; import { OrganisationsEinheitListComponent } from './organisations-einheit-list.component'; describe('OrganisationsEinheitListComponent', () => { @@ -71,7 +70,7 @@ describe('OrganisationsEinheitListComponent', () => { MockComponent(ListComponent), MockComponent(ListItemComponent), MockComponent(ExclamationIconComponent), - MockModule(MatTooltipModule), + MockDirective(TooltipDirective), ], }).compileComponents(); diff --git a/alfa-client/libs/admin/organisations-einheit/src/lib/organisations-einheit-container/organisations-einheit-list/organisations-einheit-list.component.ts b/alfa-client/libs/admin/organisations-einheit/src/lib/organisations-einheit-container/organisations-einheit-list/organisations-einheit-list.component.ts index 826556819ed09bee47196d4f0667a466d18fd3c0..fadda5a235ab06b9230cbd0d88552e8caa770f8d 100644 --- a/alfa-client/libs/admin/organisations-einheit/src/lib/organisations-einheit-container/organisations-einheit-list/organisations-einheit-list.component.ts +++ b/alfa-client/libs/admin/organisations-einheit/src/lib/organisations-einheit-container/organisations-einheit-list/organisations-einheit-list.component.ts @@ -28,14 +28,13 @@ import { import { TechSharedModule } from '@alfa-client/tech-shared'; import { CommonModule } from '@angular/common'; import { Component, Input } from '@angular/core'; -import { MatTooltip } from '@angular/material/tooltip'; -import { ExclamationIconComponent, ListComponent, ListItemComponent } from '@ods/system'; +import { ExclamationIconComponent, ListComponent, ListItemComponent, TooltipDirective } from '@ods/system'; @Component({ selector: 'admin-organisations-einheit-list', templateUrl: './organisations-einheit-list.component.html', standalone: true, - imports: [CommonModule, ListComponent, ListItemComponent, ExclamationIconComponent, MatTooltip, TechSharedModule], + imports: [CommonModule, ListComponent, ListItemComponent, ExclamationIconComponent, TooltipDirective, TechSharedModule], }) export class OrganisationsEinheitListComponent { private _organisationsEinheitResources: AdminOrganisationsEinheitResource[] = []; diff --git a/alfa-client/libs/binary-file/src/lib/binary-file-container/binary-file/binary-file.component.html b/alfa-client/libs/binary-file/src/lib/binary-file-container/binary-file/binary-file.component.html index bef7fe52816ac23dc5c4fc7dff6e1f7e25a99f1b..ad0a9c152b8652d95b4a737339645dd30283cfff 100644 --- a/alfa-client/libs/binary-file/src/lib/binary-file-container/binary-file/binary-file.component.html +++ b/alfa-client/libs/binary-file/src/lib/binary-file-container/binary-file/binary-file.component.html @@ -23,12 +23,7 @@ unter der Lizenz sind dem Lizenztext zu entnehmen. --> -<div - class="container" - [class.deletable]="deletable" - [matTooltip]="file.name" - matTooltipClass="word-break" -> +<div class="container" [class.deletable]="deletable" [tooltip]="file.name"> <div class="download-container" [class.downloadable]="file | hasLink: fileLinkRel.DOWNLOAD" diff --git a/alfa-client/libs/binary-file/src/lib/binary-file-container/binary-file/binary-file.component.spec.ts b/alfa-client/libs/binary-file/src/lib/binary-file-container/binary-file/binary-file.component.spec.ts index 8aaaf66f276b3cadf34437f02d4fcff5e48eb0e3..975c2bf58293f58f8a9f02ad52a7478d25051f13 100644 --- a/alfa-client/libs/binary-file/src/lib/binary-file-container/binary-file/binary-file.component.spec.ts +++ b/alfa-client/libs/binary-file/src/lib/binary-file-container/binary-file/binary-file.component.spec.ts @@ -28,11 +28,11 @@ import { getElementFromFixture } from '@alfa-client/test-utils'; import { IconButtonWithSpinnerComponent, SpinnerComponent } from '@alfa-client/ui'; import { ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing'; import { MatIcon } from '@angular/material/icon'; -import { MatTooltipModule } from '@angular/material/tooltip'; import { faker } from '@faker-js/faker'; +import { TooltipDirective } from '@ods/system'; import { createBinaryFileResource } from 'libs/binary-file-shared/test/binary-file'; import { getDataTestClassOf } from 'libs/tech-shared/test/data-test'; -import { MockComponent, MockModule } from 'ng-mocks'; +import { MockComponent, MockDirective } from 'ng-mocks'; import { BinaryFileComponent } from './binary-file.component'; describe('BinaryFileComponent', () => { @@ -49,9 +49,9 @@ describe('BinaryFileComponent', () => { MatIcon, FileSizePipe, HasLinkPipe, - MockModule(MatTooltipModule), MockComponent(SpinnerComponent), MockComponent(IconButtonWithSpinnerComponent), + MockDirective(TooltipDirective), ], }); }); diff --git a/alfa-client/libs/binary-file/src/lib/binary-file.module.ts b/alfa-client/libs/binary-file/src/lib/binary-file.module.ts index 1617356e95e80d98fbc07625f3b8fb876b930fbf..ee4cacdb5f276222620c9a4297808dc6e836c007 100644 --- a/alfa-client/libs/binary-file/src/lib/binary-file.module.ts +++ b/alfa-client/libs/binary-file/src/lib/binary-file.module.ts @@ -32,6 +32,7 @@ import { AttachmentWrapperComponent, CloseIconComponent, SpinnerIconComponent, + TooltipDirective, } from '@ods/system'; import { BinaryFileAttachmentContainerComponent } from './binary-file-attachment-container/binary-file-attachment-container.component'; import { BinaryFileContainerComponent } from './binary-file-container/binary-file-container.component'; @@ -56,6 +57,7 @@ import { VerticalBinaryFileListComponent } from './vertical-binary-file-list/ver SpinnerIconComponent, CloseIconComponent, DownloadButtonComponent, + TooltipDirective, ], declarations: [ BinaryFileAttachmentContainerComponent, diff --git a/alfa-client/libs/design-system/src/lib/dropdown-menu/dropdown-menu/dropdown-menu.component.ts b/alfa-client/libs/design-system/src/lib/dropdown-menu/dropdown-menu/dropdown-menu.component.ts index 20d8fd4a4742512a13322ef6ffbcb274fd6867c2..5a7a7bba99728581d60fa65fd9fda66dbf093391 100644 --- a/alfa-client/libs/design-system/src/lib/dropdown-menu/dropdown-menu/dropdown-menu.component.ts +++ b/alfa-client/libs/design-system/src/lib/dropdown-menu/dropdown-menu/dropdown-menu.component.ts @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2025 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -33,7 +33,7 @@ import { twMerge } from 'tailwind-merge'; imports: [CommonModule, CdkTrapFocus], template: ` <div class="relative w-fit"> <button - [ngClass]="[twMerge('block w-fit outline-2 outline-offset-2 outline-focus', buttonClass)]" + [ngClass]="[twMerge('block w-fit outline-2 outline-offset-2 outline-focus empty:hidden', buttonClass)]" (click)="handleButtonClick()" [attr.aria-expanded]="isPopupOpen" aria-haspopup="true" diff --git a/alfa-client/libs/design-system/src/lib/tooltip/tooltip.component.ts b/alfa-client/libs/design-system/src/lib/tooltip/tooltip.component.ts index 85e9b48d104df61a2139cdf829bc78f9728bc914..1f813a9e5ea79cb5e30111a132dca50be8ebcc2f 100644 --- a/alfa-client/libs/design-system/src/lib/tooltip/tooltip.component.ts +++ b/alfa-client/libs/design-system/src/lib/tooltip/tooltip.component.ts @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2025 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -29,7 +29,7 @@ import { TooltipPosition } from './tooltip.directive'; selector: 'ods-tooltip', imports: [NgClass], template: `<span - class="tooltip fixed z-[100] max-w-xs animate-fadeIn cursor-default break-words rounded bg-ozggray-900 px-3 py-2 text-sm text-whitetext before:absolute before:border-l-[0.5rem] before:border-r-[0.5rem] before:border-l-transparent before:border-r-transparent dark:bg-white md:max-w-[calc(90vw)]" + class="tooltip fixed z-[100] max-w-md animate-fadeIn cursor-default whitespace-pre rounded bg-ozggray-900 px-3 py-2 text-sm text-whitetext before:absolute before:border-l-[0.5rem] before:border-r-[0.5rem] before:border-l-transparent before:border-r-transparent dark:bg-white md:max-w-[calc(90vw)]" [ngClass]="class" [class.visible]="show" [class.invisible]="!show" diff --git a/alfa-client/libs/design-system/src/lib/tooltip/tooltip.directive.spec.ts b/alfa-client/libs/design-system/src/lib/tooltip/tooltip.directive.spec.ts index 9265a021a9ce2e988257793c5474970b79d06fc3..e41c410f0efb001d9c7896eaec93fb388fb9d23a 100644 --- a/alfa-client/libs/design-system/src/lib/tooltip/tooltip.directive.spec.ts +++ b/alfa-client/libs/design-system/src/lib/tooltip/tooltip.directive.spec.ts @@ -21,7 +21,6 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { EMPTY_STRING } from '@alfa-client/tech-shared'; import { InteractivityChecker } from '@angular/cdk/a11y'; import { ComponentRef, ElementRef, Renderer2, ViewContainerRef } from '@angular/core'; import { TestBed } from '@angular/core/testing'; @@ -64,11 +63,28 @@ describe('TooltipDirective', () => { expect(directive).toBeTruthy(); }); - describe('ngAfterViewInit', () => { - it('should create tooltip', () => { + describe('set tooltip', () => { + beforeEach(() => { directive.createTooltip = jest.fn(); + directive.destroy = jest.fn(); + }); + + it('should destroy tooltip if it exists already', () => { + directive.componentRef = mockComponentRef; - directive.ngAfterViewInit(); + directive.tooltip = 'test'; + + expect(directive.destroy).toHaveBeenCalled(); + }); + + it('should not create tooltip if text is empty', () => { + directive.tooltip = ''; + + expect(directive.createTooltip).not.toHaveBeenCalled(); + }); + + it('should create tooltip', () => { + directive.tooltip = 'test'; expect(directive.createTooltip).toHaveBeenCalled(); }); @@ -85,49 +101,48 @@ describe('TooltipDirective', () => { }); describe('createTooltip', () => { + const tooltipText: string = faker.lorem.sentence(); + beforeEach(() => { directive.viewContainerRef.createComponent = jest.fn().mockReturnValue({ location: { nativeElement: {} } }); directive.setAriaAttribute = jest.fn(); directive.setInitialTooltipProperties = jest.fn(); directive.getParentElement = jest.fn().mockReturnValue({ appendChild: jest.fn() }); directive.interactivityChecker.isFocusable = jest.fn(); - directive.tooltip = faker.lorem.sentence(); }); it('should create tooltip component', () => { - directive.createTooltip(); + directive.createTooltip(tooltipText); expect(directive.viewContainerRef.createComponent).toHaveBeenCalled(); }); it('should get parent element', () => { - directive.createTooltip(); + directive.createTooltip(tooltipText); expect(directive.getParentElement).toHaveBeenCalled(); }); it('should insert tooltip component to parent element', () => { - directive.createTooltip(); + directive.createTooltip(tooltipText); expect(directive.parentElement.appendChild).toHaveBeenCalled(); }); it('should set initial tooltip properties', () => { - directive.createTooltip(); + directive.createTooltip(tooltipText); expect(directive.setInitialTooltipProperties).toHaveBeenCalled(); }); it('should set aria attribute to parent', () => { - directive.createTooltip(); + directive.createTooltip(tooltipText); expect(directive.setAriaAttribute).toHaveBeenCalled(); }); it('should not create tooltip', () => { - directive.tooltip = EMPTY_STRING; - - directive.createTooltip(); + directive.createTooltip(''); expect(directive.getParentElement).not.toHaveBeenCalled(); }); @@ -135,10 +150,19 @@ describe('TooltipDirective', () => { describe('showTooltip', () => { beforeEach(() => { + directive.componentRef = mockComponentRef; directive.setTooltipProperties = jest.fn(); directive.elementRef.nativeElement.contains = jest.fn().mockReturnValue(true); }); + it('should not set tooltip properties if component ref is null', () => { + directive.componentRef = null; + + directive.showTooltip(); + + expect(directive.setTooltipProperties).not.toHaveBeenCalled(); + }); + it('should check if element focused', () => { directive.showTooltip(); @@ -218,9 +242,6 @@ describe('TooltipDirective', () => { }); it('should set tooltip instance properties', () => { - directive.tooltip = 'I am tooltip'; - directive.tooltipId = 'tooltip-1'; - directive.setTooltipProperties(); expect(directive.componentRef.instance).toMatchObject({ diff --git a/alfa-client/libs/design-system/src/lib/tooltip/tooltip.directive.ts b/alfa-client/libs/design-system/src/lib/tooltip/tooltip.directive.ts index cdc414d0e3f580d085037276f26f03697f98decc..ce1f687ce7a0df7411b5d3169f42d9c152f9c88e 100644 --- a/alfa-client/libs/design-system/src/lib/tooltip/tooltip.directive.ts +++ b/alfa-client/libs/design-system/src/lib/tooltip/tooltip.directive.ts @@ -21,10 +21,9 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { isEscapeKey } from '@alfa-client/tech-shared'; +import { isEscapeKey, isNotNull } from '@alfa-client/tech-shared'; import { InteractivityChecker } from '@angular/cdk/a11y'; import { - AfterViewInit, ComponentRef, Directive, ElementRef, @@ -49,8 +48,18 @@ type TooltipAriaType = 'aria-describedby' | 'aria-labelledby'; selector: '[tooltip]', standalone: true, }) -export class TooltipDirective implements AfterViewInit, OnDestroy { - @Input() tooltip: string = ''; +export class TooltipDirective implements OnDestroy { + @Input() set tooltip(value: string) { + if (isNotNull(this.componentRef)) { + this.destroy(); + } + + if (isEmpty(value)) { + return; + } + + this.createTooltip(value); + } @Input() tooltipPosition: TooltipPosition = TooltipPosition.BELOW; @Input() tooltipAriaType: TooltipAriaType = 'aria-describedby'; @@ -61,14 +70,10 @@ export class TooltipDirective implements AfterViewInit, OnDestroy { position: TooltipPosition; leftOffset: number = 0; - public viewContainerRef: ViewContainerRef = inject(ViewContainerRef); - public elementRef: ElementRef<HTMLElement> = inject(ElementRef); - public renderer: Renderer2 = inject(Renderer2); - public interactivityChecker: InteractivityChecker = inject(InteractivityChecker); - - ngAfterViewInit(): void { - this.createTooltip(); - } + public readonly viewContainerRef: ViewContainerRef = inject(ViewContainerRef); + public readonly elementRef: ElementRef<HTMLElement> = inject(ElementRef); + public readonly renderer: Renderer2 = inject(Renderer2); + public readonly interactivityChecker: InteractivityChecker = inject(InteractivityChecker); ngOnDestroy(): void { this.destroy(); @@ -77,6 +82,10 @@ export class TooltipDirective implements AfterViewInit, OnDestroy { @HostListener('mouseenter') @HostListener('focusin') showTooltip(): void { + if (isNull(this.componentRef)) { + return; + } + const nativeElement: HTMLElement = this.elementRef.nativeElement; this.attachedToFocused = nativeElement.contains(document.activeElement); this.setTooltipProperties(); @@ -97,8 +106,8 @@ export class TooltipDirective implements AfterViewInit, OnDestroy { } } - createTooltip(): void { - if (isEmpty(this.tooltip)) { + createTooltip(tooltipText: string): void { + if (isEmpty(tooltipText)) { return; } @@ -107,7 +116,7 @@ export class TooltipDirective implements AfterViewInit, OnDestroy { this.parentElement = this.getParentElement(nativeElement); this.parentElement.appendChild(this.componentRef.location.nativeElement); this.tooltipId = uniqueId('tooltip'); - this.setInitialTooltipProperties(this.tooltip, this.tooltipId); + this.setInitialTooltipProperties(tooltipText, this.tooltipId); this.setAriaAttribute(this.tooltipAriaType); } @@ -199,6 +208,10 @@ export class TooltipDirective implements AfterViewInit, OnDestroy { } hide(): void { + if (isNull(this.componentRef)) { + return; + } + this.componentRef.instance.show = false; } diff --git a/alfa-client/libs/ui/src/lib/ui/back-button/back-button.component.html b/alfa-client/libs/ui/src/lib/ui/back-button/back-button.component.html index 15b7525df35717921a5d10f25db575a969fa6070..29c6b91fcdefa4629cae62422ee8b56fe62346b2 100644 --- a/alfa-client/libs/ui/src/lib/ui/back-button/back-button.component.html +++ b/alfa-client/libs/ui/src/lib/ui/back-button/back-button.component.html @@ -1,6 +1,6 @@ <!-- - Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den + Copyright (C) 2025 Das Land Schleswig-Holstein vertreten durch den Ministerpräsidenten des Landes Schleswig-Holstein Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -28,8 +28,8 @@ mat-icon-button data-test-id="back-button" class="back-button" - [attr.aria-label]="label" - [matTooltip]="label" + [tooltip]="label" + tooltipAriaType="aria-labelledby" > <mat-icon>arrow_back</mat-icon> </a> diff --git a/alfa-client/libs/ui/src/lib/ui/back-button/back-button.component.spec.ts b/alfa-client/libs/ui/src/lib/ui/back-button/back-button.component.spec.ts index c27ac7f78d4ef8f71075e09a7e872f11e8d15398..9ca87b6fea4263137d68e5451ad05639cff3666d 100644 --- a/alfa-client/libs/ui/src/lib/ui/back-button/back-button.component.spec.ts +++ b/alfa-client/libs/ui/src/lib/ui/back-button/back-button.component.spec.ts @@ -1,5 +1,5 @@ /* - * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2025 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -24,11 +24,11 @@ import { getElementFromFixture } from '@alfa-client/test-utils'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { MatIcon } from '@angular/material/icon'; -import { MatTooltipModule } from '@angular/material/tooltip'; import { RouterTestingModule } from '@angular/router/testing'; import { faker } from '@faker-js/faker'; +import { TooltipDirective } from '@ods/system'; import { getDataTestIdOf } from 'libs/tech-shared/test/data-test'; -import { MockModule } from 'ng-mocks'; +import { MockDirective } from 'ng-mocks'; import { BackButtonComponent } from './back-button.component'; describe('BackButtonComponent', () => { @@ -41,7 +41,7 @@ describe('BackButtonComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - declarations: [BackButtonComponent, MockModule(MatTooltipModule)], + declarations: [BackButtonComponent, MockDirective(TooltipDirective)], imports: [MatIcon, RouterTestingModule], }).compileComponents(); @@ -54,19 +54,6 @@ describe('BackButtonComponent', () => { expect(component).toBeTruthy(); }); - describe('label', () => { - beforeEach(() => { - component.label = faker.lorem.sentence(); - fixture.detectChanges(); - }); - - it('should set aria-label attribute', () => { - const backButtonElement: HTMLAnchorElement = getElementFromFixture(fixture, backButton); - - expect(backButtonElement).toHaveAttribute('aria-label', component.label); - }); - }); - describe('linkTo', () => { it('string path should set href attribute', () => { component.linkTo = linkToAsString; 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 837eb1f03cfbac8cffcdb498528ac68a87927009..5c65fd900ce1b07a5ae957e00295792655481bee 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 @@ -28,7 +28,7 @@ data-test-id="open-url-in-new-window" [href]="url" [attr.aria-label]="text" - [matTooltip]="text" + [tooltip]="text" [download]="targetName" [color]="'primary'" > diff --git a/alfa-client/libs/ui/src/lib/ui/icon-button-with-spinner/icon-button-with-spinner.component.html b/alfa-client/libs/ui/src/lib/ui/icon-button-with-spinner/icon-button-with-spinner.component.html index 17f6df625694ad4a805506963c8278fe055a3d48..1bb8fb6c9424bb9fb420a5f0007d61a88ffe6beb 100644 --- a/alfa-client/libs/ui/src/lib/ui/icon-button-with-spinner/icon-button-with-spinner.component.html +++ b/alfa-client/libs/ui/src/lib/ui/icon-button-with-spinner/icon-button-with-spinner.component.html @@ -1,6 +1,6 @@ <!-- - Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den + Copyright (C) 2025 Das Land Schleswig-Holstein vertreten durch den Ministerpräsidenten des Landes Schleswig-Holstein Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -26,36 +26,18 @@ <button mat-icon-button data-test-class="icon-button" - [attr.aria-label]=" - toolTip ? toolTip : 'Icon Button mit einem ' + (icon ? icon : svgIcon) + ' Icon' - " [disabled]="isDisabled" - [matTooltip]="toolTip" + [tooltip]="toolTip" + tooltipAriaType="aria-labelledby" [matMenuTriggerFor]="matMenuTriggerFor" (click)="clickEmitter.emit($event)" type="button" > - <mat-icon - *ngIf="icon" - data-test-class="icon" - [style.visibility]="isDisabled ? 'hidden' : 'visible'" - > + <mat-icon *ngIf="icon" data-test-class="icon" [style.visibility]="isDisabled ? 'hidden' : 'visible'"> {{ icon }} </mat-icon> - <mat-icon - *ngIf="svgIcon" - data-test-class="icon" - [svgIcon]="svgIcon" - [style.visibility]="isDisabled ? 'hidden' : 'visible'" - > - </mat-icon> + <mat-icon *ngIf="svgIcon" data-test-class="icon" [svgIcon]="svgIcon" [style.visibility]="isDisabled ? 'hidden' : 'visible'" /> - <ozgcloud-spinner - [stateResource]="getStateResource()" - [diameter]="22" - [show]="showSpinner" - padding="0" - > - </ozgcloud-spinner> + <ozgcloud-spinner [stateResource]="getStateResource()" [diameter]="22" [show]="showSpinner" padding="0" /> </button> diff --git a/alfa-client/libs/ui/src/lib/ui/icon-button-with-spinner/icon-button-with-spinner.component.spec.ts b/alfa-client/libs/ui/src/lib/ui/icon-button-with-spinner/icon-button-with-spinner.component.spec.ts index e303e74c6fd61eef05ccc6cef15bff6f60607866..7cf06e5752ca8ebf4c3b0b797b97631bc3e04c25 100644 --- a/alfa-client/libs/ui/src/lib/ui/icon-button-with-spinner/icon-button-with-spinner.component.spec.ts +++ b/alfa-client/libs/ui/src/lib/ui/icon-button-with-spinner/icon-button-with-spinner.component.spec.ts @@ -25,8 +25,8 @@ import { createEmptyStateResource } from '@alfa-client/tech-shared'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { MatIcon } from '@angular/material/icon'; import { MatMenuModule } from '@angular/material/menu'; -import { MatTooltipModule } from '@angular/material/tooltip'; -import { MockComponent, MockModule } from 'ng-mocks'; +import { TooltipDirective } from '@ods/system'; +import { MockComponent, MockDirective, MockModule } from 'ng-mocks'; import { SpinnerComponent } from '../spinner/spinner.component'; import { IconButtonWithSpinnerComponent } from './icon-button-with-spinner.component'; @@ -43,7 +43,7 @@ describe('IconButtonWithSpinnerComponent', () => { IconButtonWithSpinnerComponent, MatIcon, MockComponent(SpinnerComponent), - MockModule(MatTooltipModule), + MockDirective(TooltipDirective), MockModule(MatMenuModule), ], }); 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 deleted file mode 100644 index af14a745eb9b5d1fe8556ab9ea07ccac3b14ded4..0000000000000000000000000000000000000000 --- a/alfa-client/libs/ui/src/lib/ui/mattooltip/mattooltip.default.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (C) 2024 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 { MatTooltipDefaultOptions } from '@angular/material/tooltip'; - -export const matTooltipDefaultOptions: MatTooltipDefaultOptions = { - showDelay: 1500, - hideDelay: 0, - touchendHideDelay: 1500, - positionAtOrigin: true, - disableTooltipInteractivity: true, -}; 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 9c27adeed48b413aba66c4816fc1f993b8567a70..39ef61cb6485f2d1a8704f729e75f4c13b57fa8d 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 @@ -29,7 +29,7 @@ [href]="url" [target]="targetName" [attr.aria-label]="text" - [matTooltip]="tooltip" + [tooltip]="tooltip" [color]="'primary'" [title]="tooltip" class="button" diff --git a/alfa-client/libs/ui/src/lib/ui/ozgcloud-button/ozgcloud-button-with-spinner/ozgcloud-button-with-spinner.component.html b/alfa-client/libs/ui/src/lib/ui/ozgcloud-button/ozgcloud-button-with-spinner/ozgcloud-button-with-spinner.component.html index 93bcb7d18bb803fb08dedf587b10a3261d0099a5..374a22364102cade464a3fad961bbffe1a7b330a 100644 --- a/alfa-client/libs/ui/src/lib/ui/ozgcloud-button/ozgcloud-button-with-spinner/ozgcloud-button-with-spinner.component.html +++ b/alfa-client/libs/ui/src/lib/ui/ozgcloud-button/ozgcloud-button-with-spinner/ozgcloud-button-with-spinner.component.html @@ -30,7 +30,7 @@ [color]="color" [type]="type" [disabled]="isDisabled" - [matTooltip]="toolTip" + [tooltip]="toolTip" [class.with-text]="text" (click)="clickEmitter.emit($event)" > diff --git a/alfa-client/libs/ui/src/lib/ui/ozgcloud-button/ozgcloud-button-with-spinner/ozgcloud-button-with-spinner.component.spec.ts b/alfa-client/libs/ui/src/lib/ui/ozgcloud-button/ozgcloud-button-with-spinner/ozgcloud-button-with-spinner.component.spec.ts index cb73ead5c66d13042bc5ddb7476b59c7aed81703..ee97fa55891a3b5ea04917c80ea255458f58d68b 100644 --- a/alfa-client/libs/ui/src/lib/ui/ozgcloud-button/ozgcloud-button-with-spinner/ozgcloud-button-with-spinner.component.spec.ts +++ b/alfa-client/libs/ui/src/lib/ui/ozgcloud-button/ozgcloud-button-with-spinner/ozgcloud-button-with-spinner.component.spec.ts @@ -24,13 +24,13 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { MatButton } from '@angular/material/button'; import { MatRipple } from '@angular/material/core'; -import { MatTooltipModule } from '@angular/material/tooltip'; import { createCommandResource } from 'libs/command-shared/test/command'; import { getDataTestClassOf } from 'libs/tech-shared/test/data-test'; -import { MockComponent, MockModule } from 'ng-mocks'; +import { MockComponent, MockDirective } from 'ng-mocks'; import { OzgcloudButtonContentComponent } from '../shared/ozgcloud-button-content/ozgcloud-button-content.component'; import { OzgcloudButtonWithSpinnerComponent } from './ozgcloud-button-with-spinner.component'; +import { TooltipDirective } from '@ods/system'; import * as ResourceUtils from 'libs/tech-shared/src/lib/resource/resource.util'; describe('OzgcloudButtonWithSpinnerComponent', () => { @@ -45,7 +45,7 @@ describe('OzgcloudButtonWithSpinnerComponent', () => { MatButton, MatRipple, OzgcloudButtonWithSpinnerComponent, - MockModule(MatTooltipModule), + MockDirective(TooltipDirective), MockComponent(OzgcloudButtonContentComponent), ], }).compileComponents(); diff --git a/alfa-client/libs/ui/src/lib/ui/ozgcloud-button/ozgcloud-icon-button-primary/ozgcloud-icon-button-primary.component.html b/alfa-client/libs/ui/src/lib/ui/ozgcloud-button/ozgcloud-icon-button-primary/ozgcloud-icon-button-primary.component.html index b0ecf6c5de127cddea84861601dde60fb1e2efb1..21035dd8675511d51040c8f6aa627b995bab54ed 100644 --- a/alfa-client/libs/ui/src/lib/ui/ozgcloud-button/ozgcloud-icon-button-primary/ozgcloud-icon-button-primary.component.html +++ b/alfa-client/libs/ui/src/lib/ui/ozgcloud-button/ozgcloud-icon-button-primary/ozgcloud-icon-button-primary.component.html @@ -27,7 +27,7 @@ mat-icon-button data-test-class="icon-button-primary" [attr.aria-label]="ariaLabel" - [matTooltip]="tooltip" + [tooltip]="tooltip" (click)="clickEmitter.emit($event)" color="primary" type="button" diff --git a/alfa-client/libs/ui/src/lib/ui/ozgcloud-button/ozgcloud-icon-button-primary/ozgcloud-icon-button-primary.component.scss b/alfa-client/libs/ui/src/lib/ui/ozgcloud-button/ozgcloud-icon-button-primary/ozgcloud-icon-button-primary.component.scss index af82db8c6ff99b292d748f41a135b0e811f8a879..a01b48881d53d2d9f8ee17768a885a76c7d902c5 100644 --- a/alfa-client/libs/ui/src/lib/ui/ozgcloud-button/ozgcloud-icon-button-primary/ozgcloud-icon-button-primary.component.scss +++ b/alfa-client/libs/ui/src/lib/ui/ozgcloud-button/ozgcloud-icon-button-primary/ozgcloud-icon-button-primary.component.scss @@ -1,5 +1,5 @@ /** - * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2025 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -23,4 +23,5 @@ */ :host { position: relative; + z-index: 1; } diff --git a/alfa-client/libs/ui/src/lib/ui/ozgcloud-button/ozgcloud-icon-button-primary/ozgcloud-icon-button-primary.component.spec.ts b/alfa-client/libs/ui/src/lib/ui/ozgcloud-button/ozgcloud-icon-button-primary/ozgcloud-icon-button-primary.component.spec.ts index ad86b2f5b418a6a2fc6c8ef74c69dc32063f165a..976c0b0c396b7dfc68b3f7e53148d1d75cf1baa8 100644 --- a/alfa-client/libs/ui/src/lib/ui/ozgcloud-button/ozgcloud-icon-button-primary/ozgcloud-icon-button-primary.component.spec.ts +++ b/alfa-client/libs/ui/src/lib/ui/ozgcloud-button/ozgcloud-icon-button-primary/ozgcloud-icon-button-primary.component.spec.ts @@ -26,9 +26,9 @@ import { getElementFromFixture } from '@alfa-client/test-utils'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { MatIcon } from '@angular/material/icon'; import { MatIconTestingModule } from '@angular/material/icon/testing'; -import { MatTooltipModule } from '@angular/material/tooltip'; +import { TooltipDirective } from '@ods/system'; import { getDataTestClassOf } from 'libs/tech-shared/test/data-test'; -import { MockComponent, MockModule } from 'ng-mocks'; +import { MockComponent, MockDirective } from 'ng-mocks'; import { OzgcloudIconButtonPrimaryComponent } from './ozgcloud-icon-button-primary.component'; jest.mock('@alfa-client/tech-shared'); @@ -41,11 +41,7 @@ describe('IconButtonPrimaryWithSpinnerComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ imports: [MatIconTestingModule], - declarations: [ - OzgcloudIconButtonPrimaryComponent, - MockComponent(MatIcon), - MockModule(MatTooltipModule), - ], + declarations: [OzgcloudIconButtonPrimaryComponent, MockComponent(MatIcon), MockDirective(TooltipDirective)], }); }); diff --git a/alfa-client/libs/ui/src/lib/ui/ozgcloud-button/ozgcloud-stroked-button-with-spinner/ozgcloud-stroked-button-with-spinner.component.html b/alfa-client/libs/ui/src/lib/ui/ozgcloud-button/ozgcloud-stroked-button-with-spinner/ozgcloud-stroked-button-with-spinner.component.html index 58afc8842e49c8afe650594a94757aca75f23b3f..1c6c7d85154956f4d5ae0a1c0c09225accde76f9 100644 --- a/alfa-client/libs/ui/src/lib/ui/ozgcloud-button/ozgcloud-stroked-button-with-spinner/ozgcloud-stroked-button-with-spinner.component.html +++ b/alfa-client/libs/ui/src/lib/ui/ozgcloud-button/ozgcloud-stroked-button-with-spinner/ozgcloud-stroked-button-with-spinner.component.html @@ -30,7 +30,7 @@ [color]="color" [type]="type" [disabled]="isDisabled" - [matTooltip]="toolTip" + [tooltip]="toolTip" [class.with-text]="text" (click)="clickEmitter.emit($event)" > diff --git a/alfa-client/libs/ui/src/lib/ui/ozgcloud-button/ozgcloud-stroked-button-with-spinner/ozgcloud-stroked-button-with-spinner.component.spec.ts b/alfa-client/libs/ui/src/lib/ui/ozgcloud-button/ozgcloud-stroked-button-with-spinner/ozgcloud-stroked-button-with-spinner.component.spec.ts index 8703dcf19b3978964792b7874155cca2aec699eb..208868555e600c7fd81f6edc4bd1e8fd541827e6 100644 --- a/alfa-client/libs/ui/src/lib/ui/ozgcloud-button/ozgcloud-stroked-button-with-spinner/ozgcloud-stroked-button-with-spinner.component.spec.ts +++ b/alfa-client/libs/ui/src/lib/ui/ozgcloud-button/ozgcloud-stroked-button-with-spinner/ozgcloud-stroked-button-with-spinner.component.spec.ts @@ -24,13 +24,13 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { MatButton } from '@angular/material/button'; import { MatRipple } from '@angular/material/core'; -import { MatTooltipModule } from '@angular/material/tooltip'; import { createCommandResource } from 'libs/command-shared/test/command'; import { getDataTestClassOf } from 'libs/tech-shared/test/data-test'; -import { MockComponent, MockModule } from 'ng-mocks'; +import { MockComponent, MockDirective } from 'ng-mocks'; import { OzgcloudButtonContentComponent } from '../shared/ozgcloud-button-content/ozgcloud-button-content.component'; import { OzgcloudStrokedButtonWithSpinnerComponent } from './ozgcloud-stroked-button-with-spinner.component'; +import { TooltipDirective } from '@ods/system'; import * as ResourceUtils from 'libs/tech-shared/src/lib/resource/resource.util'; describe('OzgcloudStrokedButtonWithSpinnerComponent', () => { @@ -45,7 +45,7 @@ describe('OzgcloudStrokedButtonWithSpinnerComponent', () => { MatButton, MatRipple, OzgcloudStrokedButtonWithSpinnerComponent, - MockModule(MatTooltipModule), + MockDirective(TooltipDirective), MockComponent(OzgcloudButtonContentComponent), ], }).compileComponents(); diff --git a/alfa-client/libs/ui/src/lib/ui/ozgcloud-paste-text-button/ozgcloud-paste-text-button.component.spec.ts b/alfa-client/libs/ui/src/lib/ui/ozgcloud-paste-text-button/ozgcloud-paste-text-button.component.spec.ts index 22a817c9b19c19c5c6a5981e94bc533d62759b36..e91b91840bb1f855e5821d6eaac5949bc815181c 100644 --- a/alfa-client/libs/ui/src/lib/ui/ozgcloud-paste-text-button/ozgcloud-paste-text-button.component.spec.ts +++ b/alfa-client/libs/ui/src/lib/ui/ozgcloud-paste-text-button/ozgcloud-paste-text-button.component.spec.ts @@ -28,9 +28,9 @@ import { EventEmitter } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { MatIcon } from '@angular/material/icon'; import { MatIconTestingModule } from '@angular/material/icon/testing'; -import { MatTooltipModule } from '@angular/material/tooltip'; +import { TooltipDirective } from '@ods/system'; import { getDataTestIdOf } from 'libs/tech-shared/test/data-test'; -import { MockComponent, MockModule } from 'ng-mocks'; +import { MockComponent, MockDirective } from 'ng-mocks'; import { OzgcloudPasteTextButtonComponent } from './ozgcloud-paste-text-button.component'; jest.mock('@alfa-client/tech-shared'); @@ -55,7 +55,7 @@ describe('OzgcloudPasteTextButtonComponent', () => { OzgcloudPasteTextButtonComponent, MockComponent(MatIcon), MockComponent(OzgcloudIconButtonPrimaryComponent), - MockModule(MatTooltipModule), + MockDirective(TooltipDirective), ], }).compileComponents(); 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 366854df1b2cb313dc452750c536d10a208bdbb3..8d302a06932bc9a1adfad5834af5bbf3ec69d88f 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 @@ -26,7 +26,7 @@ <mat-slide-toggle color="primary" [disabled]="disabled" - [matTooltip]="toolTip" + [tooltip]="toolTip" [checked]="checked" (change)="valueChanged.emit($event.checked)" ><span class="text-sm">{{ label }}</span> diff --git a/alfa-client/libs/ui/src/lib/ui/slide-toggle/slide-toggle.component.spec.ts b/alfa-client/libs/ui/src/lib/ui/slide-toggle/slide-toggle.component.spec.ts index 35d63c5fa5c386e8907a09f8a985c36ba555a4dd..39488cb32fad62fe43a90bd77a5a409cbfb41541 100644 --- a/alfa-client/libs/ui/src/lib/ui/slide-toggle/slide-toggle.component.spec.ts +++ b/alfa-client/libs/ui/src/lib/ui/slide-toggle/slide-toggle.component.spec.ts @@ -24,8 +24,8 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { MatRippleModule } from '@angular/material/core'; import { MatSlideToggle } from '@angular/material/slide-toggle'; -import { MatTooltipModule } from '@angular/material/tooltip'; -import { MockModule } from 'ng-mocks'; +import { TooltipDirective } from '@ods/system'; +import { MockDirective } from 'ng-mocks'; import { SlideToggleComponent } from './slide-toggle.component'; describe('SlideToggleComponent', () => { @@ -35,7 +35,7 @@ describe('SlideToggleComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ imports: [MatRippleModule, MatSlideToggle], - declarations: [SlideToggleComponent, MockModule(MatTooltipModule)], + declarations: [SlideToggleComponent, MockDirective(TooltipDirective)], }).compileComponents(); fixture = TestBed.createComponent(SlideToggleComponent); diff --git a/alfa-client/libs/ui/src/lib/ui/ui.module.ts b/alfa-client/libs/ui/src/lib/ui/ui.module.ts index 1738c23448649c9653efaa1f8f266b4426136286..eeff7417056ee49e49cbe8c4206a2e72aa5dd9a5 100644 --- a/alfa-client/libs/ui/src/lib/ui/ui.module.ts +++ b/alfa-client/libs/ui/src/lib/ui/ui.module.ts @@ -46,9 +46,8 @@ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; import { MatSlideToggleModule } from '@angular/material/slide-toggle'; import { MatSnackBarModule } from '@angular/material/snack-bar'; import { MatTabsModule } from '@angular/material/tabs'; -import { MAT_TOOLTIP_DEFAULT_OPTIONS, MatTooltipModule } from '@angular/material/tooltip'; import { RouterModule } from '@angular/router'; -import { FileUploadButtonComponent, SpinnerIconComponent } from '@ods/system'; +import { FileUploadButtonComponent, SpinnerIconComponent, TooltipDirective } from '@ods/system'; import { de } from 'date-fns/locale'; import { AppIconComponent } from '../icon/app-icon/app-icon.component'; import { PostfachIconComponent } from '../icon/postfach-icon/postfach-icon.component'; @@ -73,7 +72,6 @@ import { FixedDialogComponent } from './fixed-dialog/fixed-dialog.component'; import { ConnectionTimeoutRetryDialogComponent } from './http-error-dialog/connection-timeout-retry-dialog/connection-timeout-retry-dialog.component'; import { ConnectionTimeoutRetryFailDialogComponent } from './http-error-dialog/connection-timeout-retry-fail-dialog/connection-timeout-retry-fail-dialog.component'; import { IconButtonWithSpinnerComponent } from './icon-button-with-spinner/icon-button-with-spinner.component'; -import { matTooltipDefaultOptions } from './mattooltip/mattooltip.default'; import { InternalServerErrorDialogComponent } from './notification/internal-server-error-dialog/internal-server-error-dialog.component'; import { OpenUrlButtonComponent } from './open-url-button/open-url-button.component'; import { OzgcloudButtonWithSpinnerComponent } from './ozgcloud-button/ozgcloud-button-with-spinner/ozgcloud-button-with-spinner.component'; @@ -156,7 +154,6 @@ import { ValidationErrorComponent } from './validation-error/validation-error.co MatAutocompleteModule, MatDialogModule, MatTabsModule, - MatTooltipModule, MatBadgeModule, CommonModule, TechSharedModule, @@ -164,6 +161,7 @@ import { ValidationErrorComponent } from './validation-error/validation-error.co MatButtonToggleModule, FileUploadButtonComponent, SpinnerIconComponent, + TooltipDirective, ], exports: [ MatButtonModule, @@ -186,7 +184,6 @@ import { ValidationErrorComponent } from './validation-error/validation-error.co MatAutocompleteModule, MatDialogModule, MatTabsModule, - MatTooltipModule, MatBadgeModule, CommonModule, TechSharedModule, @@ -253,7 +250,6 @@ import { ValidationErrorComponent } from './validation-error/validation-error.co useClass: DateFnsAdapter, deps: [MAT_DATE_LOCALE], }, - { provide: MAT_TOOLTIP_DEFAULT_OPTIONS, useValue: matTooltipDefaultOptions }, ], }) export class UiModule {} diff --git a/alfa-client/libs/user-profile/src/lib/link-with-user-name-tooltip-container/link-with-user-name-tooltip/link-with-user-name-tooltip.component.html b/alfa-client/libs/user-profile/src/lib/link-with-user-name-tooltip-container/link-with-user-name-tooltip/link-with-user-name-tooltip.component.html index df527af17224d0db0a84f10f81052589f4b0485b..8789fcac61ca88a8a0d8b96204aa967c1b7fc606 100644 --- a/alfa-client/libs/user-profile/src/lib/link-with-user-name-tooltip-container/link-with-user-name-tooltip/link-with-user-name-tooltip.component.html +++ b/alfa-client/libs/user-profile/src/lib/link-with-user-name-tooltip-container/link-with-user-name-tooltip/link-with-user-name-tooltip.component.html @@ -23,6 +23,6 @@ unter der Lizenz sind dem Lizenztext zu entnehmen. --> -<a routerLink="{{ routerLinkString }}" [matTooltip]="tooltip" class="link"> +<a routerLink="{{ routerLinkString }}" [tooltip]="tooltip" class="link"> <ng-content></ng-content> </a> diff --git a/alfa-client/libs/user-profile/src/lib/link-with-user-name-tooltip-container/link-with-user-name-tooltip/link-with-user-name-tooltip.component.spec.ts b/alfa-client/libs/user-profile/src/lib/link-with-user-name-tooltip-container/link-with-user-name-tooltip/link-with-user-name-tooltip.component.spec.ts index ce240696e45f53cab52a250b9222facdd53094fb..6907e8674b1417d075237a4975c2ce0f1dd4295c 100644 --- a/alfa-client/libs/user-profile/src/lib/link-with-user-name-tooltip-container/link-with-user-name-tooltip/link-with-user-name-tooltip.component.spec.ts +++ b/alfa-client/libs/user-profile/src/lib/link-with-user-name-tooltip-container/link-with-user-name-tooltip/link-with-user-name-tooltip.component.spec.ts @@ -24,10 +24,10 @@ import { createStateResource } from '@alfa-client/tech-shared'; import { UserProfileResource } from '@alfa-client/user-profile-shared'; import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { MatTooltipModule } from '@angular/material/tooltip'; import { RouterTestingModule } from '@angular/router/testing'; +import { TooltipDirective } from '@ods/system'; import { createUserProfileResource } from 'libs/user-profile-shared/test/user-profile'; -import { MockModule } from 'ng-mocks'; +import { MockDirective } from 'ng-mocks'; import { LinkWithUserNameTooltipComponent } from './link-with-user-name-tooltip.component'; describe('LinkWithUserNameTooltipComponent', () => { @@ -40,7 +40,7 @@ describe('LinkWithUserNameTooltipComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ imports: [RouterTestingModule], - declarations: [LinkWithUserNameTooltipComponent, MockModule(MatTooltipModule)], + declarations: [LinkWithUserNameTooltipComponent, MockDirective(TooltipDirective)], }).compileComponents(); }); diff --git a/alfa-client/libs/user-profile/src/lib/text-with-user-name-tooltip-container/text-with-user-name-tooltip/text-with-user-name-tooltip.component.html b/alfa-client/libs/user-profile/src/lib/text-with-user-name-tooltip-container/text-with-user-name-tooltip/text-with-user-name-tooltip.component.html index 27535f64fdc19260a6eae325f3e1f4f2334a9b83..d659fff0fa6e49f8332bef42998e9da5fd6ae992 100644 --- a/alfa-client/libs/user-profile/src/lib/text-with-user-name-tooltip-container/text-with-user-name-tooltip/text-with-user-name-tooltip.component.html +++ b/alfa-client/libs/user-profile/src/lib/text-with-user-name-tooltip-container/text-with-user-name-tooltip/text-with-user-name-tooltip.component.html @@ -23,4 +23,4 @@ unter der Lizenz sind dem Lizenztext zu entnehmen. --> -<p [matTooltip]="tooltip">{{ text }}</p> +<p [tooltip]="tooltip">{{ text }}</p> diff --git a/alfa-client/libs/user-profile/src/lib/text-with-user-name-tooltip-container/text-with-user-name-tooltip/text-with-user-name-tooltip.component.spec.ts b/alfa-client/libs/user-profile/src/lib/text-with-user-name-tooltip-container/text-with-user-name-tooltip/text-with-user-name-tooltip.component.spec.ts index 9fd7e0083708d0957f4d55df8fad4bf7a6257c6e..23163b82f8921f720872808dc86348c65b83dad8 100644 --- a/alfa-client/libs/user-profile/src/lib/text-with-user-name-tooltip-container/text-with-user-name-tooltip/text-with-user-name-tooltip.component.spec.ts +++ b/alfa-client/libs/user-profile/src/lib/text-with-user-name-tooltip-container/text-with-user-name-tooltip/text-with-user-name-tooltip.component.spec.ts @@ -24,9 +24,9 @@ import { createStateResource } from '@alfa-client/tech-shared'; import { UserProfileResource } from '@alfa-client/user-profile-shared'; import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { MatTooltipModule } from '@angular/material/tooltip'; +import { TooltipDirective } from '@ods/system'; import { createUserProfileResource } from 'libs/user-profile-shared/test/user-profile'; -import { MockModule } from 'ng-mocks'; +import { MockDirective } from 'ng-mocks'; import { TextWithUserNameTooltipComponent } from './text-with-user-name-tooltip.component'; describe('TextWithUserNameTooltipComponent', () => { @@ -38,7 +38,7 @@ describe('TextWithUserNameTooltipComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - declarations: [TextWithUserNameTooltipComponent, MockModule(MatTooltipModule)], + declarations: [TextWithUserNameTooltipComponent, MockDirective(TooltipDirective)], }).compileComponents(); }); diff --git a/alfa-client/libs/user-profile/src/lib/user-icon/user-icon.component.html b/alfa-client/libs/user-profile/src/lib/user-icon/user-icon.component.html index d5b5d476d5720e7005f3c70871d57b9a1d376f47..a6866ab9d0a536f9c4af983e893e4408600efb69 100644 --- a/alfa-client/libs/user-profile/src/lib/user-icon/user-icon.component.html +++ b/alfa-client/libs/user-profile/src/lib/user-icon/user-icon.component.html @@ -25,11 +25,10 @@ --> <ozgcloud-spinner [stateResource]="userProfileStateResource" diameter="30" padding="3"> <div - [matTooltipDisabled]="disableTooltip" data-test-class="user-profile-icon" class="relative flex size-9 items-center justify-center overflow-hidden rounded-full text-lg text-white" [class.bg-ozggray-900]="userProfileStateResource.resource || errorMessageCode === messageCode.RESOURCE_NOT_FOUND" - [matTooltip]="tooltip" + [tooltip]="tooltip" > <ng-container *ngIf="userProfileStateResource.resource; else noUser"> <span data-test-class="user-profile-assigned">{{ initials }}</span> diff --git a/alfa-client/libs/user-profile/src/lib/user-icon/user-icon.component.spec.ts b/alfa-client/libs/user-profile/src/lib/user-icon/user-icon.component.spec.ts index c4a359cdc07d4b7e08c992414ba82bf33c191665..5a26a51d01121a4d0c41f18a75d49b03df411b00 100644 --- a/alfa-client/libs/user-profile/src/lib/user-icon/user-icon.component.spec.ts +++ b/alfa-client/libs/user-profile/src/lib/user-icon/user-icon.component.spec.ts @@ -34,12 +34,11 @@ import { SpinnerComponent } from '@alfa-client/ui'; import { NO_NAME_MESSAGE, UserProfileResource, userProfileMessage } from '@alfa-client/user-profile-shared'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { MatIcon } from '@angular/material/icon'; -import { MatTooltipModule } from '@angular/material/tooltip'; import { faker } from '@faker-js/faker'; -import { ErrorIconComponent, UserIconComponent as OdsUserIconComponent } from '@ods/system'; +import { ErrorIconComponent, UserIconComponent as OdsUserIconComponent, TooltipDirective } from '@ods/system'; import { getDataTestClassOf } from 'libs/tech-shared/test/data-test'; import { createUserProfileResource } from 'libs/user-profile-shared/test/user-profile'; -import { MockComponent, MockModule } from 'ng-mocks'; +import { MockComponent, MockDirective } from 'ng-mocks'; import { createApiError, createIssue } from '../../../../tech-shared/test/error'; import { UserIconComponent } from './user-icon.component'; @@ -60,7 +59,7 @@ describe('UserIconComponent', () => { UserIconComponent, MatIcon, MockComponent(SpinnerComponent), - MockModule(MatTooltipModule), + MockDirective(TooltipDirective), MockComponent(ErrorIconComponent), MockComponent(OdsUserIconComponent), ], diff --git a/alfa-client/libs/user-profile/src/lib/user-icon/user-icon.component.ts b/alfa-client/libs/user-profile/src/lib/user-icon/user-icon.component.ts index a691fdefc542600e33cdac2b9a3b0864fd59c3f8..787e1e16eabcd6eedb875ed7e203f229bfcc9df1 100644 --- a/alfa-client/libs/user-profile/src/lib/user-icon/user-icon.component.ts +++ b/alfa-client/libs/user-profile/src/lib/user-icon/user-icon.component.ts @@ -32,7 +32,6 @@ import { isUndefined } from 'lodash-es'; }) export class UserIconComponent { @Input() userProfileStateResource: StateResource<UserProfileResource> = createEmptyStateResource<UserProfileResource>(); - @Input() disableTooltip: boolean = false; readonly messageCode = MessageCode; diff --git a/alfa-client/libs/user-profile/src/lib/user-profile.module.ts b/alfa-client/libs/user-profile/src/lib/user-profile.module.ts index 6bd1588ea1c21f419e2e78828ab9a466f0add14f..11ab2e9213281a32febbbd4664fa79d59d4969f4 100644 --- a/alfa-client/libs/user-profile/src/lib/user-profile.module.ts +++ b/alfa-client/libs/user-profile/src/lib/user-profile.module.ts @@ -34,6 +34,7 @@ import { ErrorIconComponent, LogoutIconComponent, UserIconComponent as OdsUserIconComponent, + TooltipDirective, } from '@ods/system'; import { AssignUserProfileButtonContainerComponent } from './assign-user-profile-button-container/assign-user-profile-button-container.component'; import { LinkWithUserNameTooltipContainerComponent } from './link-with-user-name-tooltip-container/link-with-user-name-tooltip-container.component'; @@ -68,6 +69,7 @@ import { UserProfileComponent } from './user-profile/user-profile.component'; DropdownMenuComponent, DropdownMenuItemComponent, DropdownMenuButtonItemComponent, + TooltipDirective, ], declarations: [ UserIconComponent, diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.scss b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.scss index cbc6bcde3a27788c790ba3e0e879ee27b28881b7..073c7c4392d2b1dd921d4ac949942297033a68c4 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.scss +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.scss @@ -1,5 +1,5 @@ /** - * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2025 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -24,6 +24,7 @@ :host { display: flex; flex-grow: 1; + z-index: 1; ::ng-deep { a { diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-back-button-container/vorgang-detail-back-button-container.component.scss b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-back-button-container/vorgang-detail-back-button-container.component.scss index 54c4f3eb8c92af93694c03cdf577fed23cf9f86b..d3c1422dbfc51198d27b9a9abf05525c6c3b3196 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-back-button-container/vorgang-detail-back-button-container.component.scss +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-back-button-container/vorgang-detail-back-button-container.component.scss @@ -1,5 +1,5 @@ /** - * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2025 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,3 +21,6 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ +:host { + z-index: 1; +} 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 a68da5c1302fdc7e652ecfdd960550162eb795c1..8c0250145675de160686ed311fd4ee34fc76b181 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 @@ -26,7 +26,7 @@ <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" + [tooltip]="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 be991fb41f4c0b6b9282959b28478160a33a56aa..d2fa4010f6b41217c0e0a3c16467012c83f7d7af 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 @@ -23,9 +23,9 @@ */ import { VorgangResource } from '@alfa-client/vorgang-shared'; import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { MatTooltipModule } from '@angular/material/tooltip'; +import { TooltipDirective } from '@ods/system'; import { createVorgangResource } from 'libs/vorgang-shared/test/vorgang'; -import { MockModule } from 'ng-mocks'; +import { MockDirective } from 'ng-mocks'; import { VORGANG_KEIN_AKTENZEICHEN_ZUGEWIESEN } from '../vorgang-util'; import { AktenzeichenComponent } from './aktenzeichen.component'; @@ -39,7 +39,7 @@ describe('AktenzeichenComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - declarations: [AktenzeichenComponent, MockModule(MatTooltipModule)], + declarations: [AktenzeichenComponent, MockDirective(TooltipDirective)], }).compileComponents(); }); 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 b6c4a666d805ca9138db7480ad8b35aef0f64bc3..3a5eabc30c87191c1257dc4952ce8d5ba65b2ab9 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 @@ -29,7 +29,7 @@ <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" + [tooltip]="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 c92ef713ea14d618417ee0e3d52b92597d105f48..c6b0813916c7f1dacd623532a7bbc78a31a7ffa6 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 @@ -26,10 +26,10 @@ import { VorgangResource } from '@alfa-client/vorgang-shared'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { MatIcon } from '@angular/material/icon'; import { MatIconTestingModule } from '@angular/material/icon/testing'; -import { MatTooltipModule } from '@angular/material/tooltip'; +import { TooltipDirective } from '@ods/system'; import { getDataTestIdOf } from 'libs/tech-shared/test/data-test'; import { createVorgangResource } from 'libs/vorgang-shared/test/vorgang'; -import { MockModule } from 'ng-mocks'; +import { MockDirective } from 'ng-mocks'; import { VorgangNummerComponent } from './vorgang-nummer.component'; describe('VorgangNummerComponent', () => { @@ -41,7 +41,7 @@ describe('VorgangNummerComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - declarations: [MockModule(MatTooltipModule), VorgangNummerComponent], + declarations: [MockDirective(TooltipDirective), VorgangNummerComponent], imports: [MatIcon, MatIconTestingModule], }).compileComponents(); }); 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 3ae0643465d4492367f4787a699453b7ebe1a799..a6549aff7c59fa5979d55f7fbb7bb130b9c068fc 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 @@ -27,6 +27,7 @@ import { VorgangSharedModule } from '@alfa-client/vorgang-shared'; import { CommonModule } from '@angular/common'; import { NgModule } from '@angular/core'; import { RouterModule } from '@angular/router'; +import { TooltipDirective } from '@ods/system'; import { AktenzeichenComponent } from './aktenzeichen/aktenzeichen.component'; import { VorgangNummerComponent } from './vorgang-nummer/vorgang-nummer.component'; import { VorgangSearchContainerComponent } from './vorgang-search-container/vorgang-search-container.component'; @@ -38,7 +39,7 @@ import { VorgangStatusTextComponent } from './vorgang-status-text/vorgang-status import { WiedervorlageIconComponent } from './wiedervorlage-icon/wiedervorlage-icon.component'; @NgModule({ - imports: [CommonModule, VorgangSharedModule, UiModule, RouterModule, TechSharedModule], + imports: [CommonModule, VorgangSharedModule, UiModule, RouterModule, TechSharedModule, TooltipDirective], declarations: [ VorgangSearchContainerComponent, VorgangSearchComponent, diff --git a/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-created-at/vorgang-created-at.component.html b/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-created-at/vorgang-created-at.component.html index bbf247957fa5a6a1be70c6ec1af5e88c75ccad33..edfe41eb178ce5a0f3dddefc33585fe2e465c96b 100644 --- a/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-created-at/vorgang-created-at.component.html +++ b/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-created-at/vorgang-created-at.component.html @@ -23,7 +23,7 @@ unter der Lizenz sind dem Lizenztext zu entnehmen. --> -<div matTooltip="Eingang: {{ vorgang.createdAt | formatDateWithTimePipe }}"> +<div tooltip="Eingang: {{ vorgang.createdAt | formatDateWithTimePipe }}"> <mat-icon svgIcon="incoming"></mat-icon> <span data-test-id="created-at">{{ vorgang.createdAt | formatDateWithoutYearWithTime }}</span> </div> diff --git a/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-created-at/vorgang-created-at.component.spec.ts b/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-created-at/vorgang-created-at.component.spec.ts index 01dce45c92b20a216875e28e00370fcd0a5bf490..b551e0550b2ce804d1a28a22416428c704b1cbc2 100644 --- a/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-created-at/vorgang-created-at.component.spec.ts +++ b/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-created-at/vorgang-created-at.component.spec.ts @@ -33,10 +33,10 @@ import localeDe from '@angular/common/locales/de'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { MatIcon } from '@angular/material/icon'; import { MatIconTestingModule } from '@angular/material/icon/testing'; -import { MatTooltipModule } from '@angular/material/tooltip'; +import { TooltipDirective } from '@ods/system'; import { getDataTestIdOf } from 'libs/tech-shared/test/data-test'; import { createVorgangResource } from 'libs/vorgang-shared/test/vorgang'; -import { MockModule } from 'ng-mocks'; +import { MockDirective } from 'ng-mocks'; import { VorgangCreatedAtComponent } from './vorgang-created-at.component'; registerLocaleData(localeDe); @@ -54,7 +54,7 @@ describe('VorgangCreatedAtComponent', () => { FormatDateWithoutYearWithTimePipe, FormatDateWithTimePipe, VorgangCreatedAtComponent, - MockModule(MatTooltipModule), + MockDirective(TooltipDirective), ], imports: [MatIcon, MatIconTestingModule], }).compileComponents(); diff --git a/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-list-item.component.spec.ts b/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-list-item.component.spec.ts index 19cf045603cf83efe2acddffaabc484dd7c63f2c..cfab40f848188662f2d0f2ea1db7074d60ff7ef7 100644 --- a/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-list-item.component.spec.ts +++ b/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-list-item.component.spec.ts @@ -48,12 +48,11 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { MAT_DATE_LOCALE } from '@angular/material/core'; import { MatIcon } from '@angular/material/icon'; import { MatIconTestingModule } from '@angular/material/icon/testing'; -import { MatTooltipModule } from '@angular/material/tooltip'; import { RouterTestingModule } from '@angular/router/testing'; import { getDataTestClassOf, getDataTestIdOf } from 'libs/tech-shared/test/data-test'; import { createUserProfileResource } from 'libs/user-profile-shared/test/user-profile'; import { createVorgangResource } from 'libs/vorgang-shared/test/vorgang'; -import { MockComponent, MockModule } from 'ng-mocks'; +import { MockComponent } from 'ng-mocks'; import { of } from 'rxjs'; import { VorgangArchiveStatusComponent } from './vorgang-archive-status/vorgang-archive-status.component'; import { VorgangBescheidStatusComponent } from './vorgang-bescheid-status/vorgang-bescheid-status.component'; @@ -97,7 +96,6 @@ describe('VorgangListItemComponent', () => { MockComponent(VorgangCreatedAtComponent), MockComponent(VorgangBescheidStatusComponent), MockComponent(VorgangArchiveStatusComponent), - MockModule(MatTooltipModule), ], providers: [ { provide: UserProfileService, useValue: userProfileService }, diff --git a/alfa-client/libs/vorgang/src/lib/vorgang.module.ts b/alfa-client/libs/vorgang/src/lib/vorgang.module.ts index 4a58042a60125194bd7fd2b2b4953188c1f4aa28..cf3421cb9ed957b151e3cf8948828bde38b7f6b1 100644 --- a/alfa-client/libs/vorgang/src/lib/vorgang.module.ts +++ b/alfa-client/libs/vorgang/src/lib/vorgang.module.ts @@ -34,7 +34,7 @@ import { NgModule } from '@angular/core'; import { MatButtonToggleModule } from '@angular/material/button-toggle'; import { RouterModule, Routes } from '@angular/router'; import { ButtonToggleGroupComponent } from '@ods/component'; -import { ArchiveIconComponent, ButtonToggleComponent } from '@ods/system'; +import { ArchiveIconComponent, ButtonToggleComponent, TooltipDirective } from '@ods/system'; import { vorgangFilterViewGuard } from './vorgang-filter-view.guard'; import { VorgangListContainerComponent } from './vorgang-list-container/vorgang-list-container.component'; import { EmptyListComponent } from './vorgang-list-container/vorgang-list/empty-list/empty-list.component'; @@ -182,6 +182,7 @@ const routes: Routes = [ ButtonToggleComponent, ButtonToggleGroupComponent, ArchiveIconComponent, + TooltipDirective, ], declarations: [ VorgangListComponent, 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 04ee9bbaeebc4f00c72b095b49a514b4f652aa16..bdef88d210bb2d4b5e240b70f638a0efeb10c9e3 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 @@ -30,7 +30,7 @@ <div class="row"> <alfa-wiedervorlage-status data-test-class="status" - [matTooltip]="wiedervorlageResource.frist | toTrafficLightTooltip" + [tooltip]="wiedervorlageResource.frist | toTrafficLightTooltip" [wiedervorlageResource]="wiedervorlageResource" > </alfa-wiedervorlage-status> 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.spec.ts b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-list-in-vorgang-container/wiedervorlage-list-in-vorgang/wiedervorlage-in-vorgang/wiedervorlage-in-vorgang.component.spec.ts index 5d7273682e8e067353ec1a1ff5ca47d9f9fc393a..6673dc39b36123bb4d9bdd8bbb3e06e1e1dc2dc1 100644 --- a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-list-in-vorgang-container/wiedervorlage-list-in-vorgang/wiedervorlage-in-vorgang/wiedervorlage-in-vorgang.component.spec.ts +++ b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-list-in-vorgang-container/wiedervorlage-list-in-vorgang/wiedervorlage-in-vorgang/wiedervorlage-in-vorgang.component.spec.ts @@ -43,10 +43,10 @@ import { LOCALE_ID } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { MAT_DATE_LOCALE } from '@angular/material/core'; import { MatIcon } from '@angular/material/icon'; -import { MatTooltipModule } from '@angular/material/tooltip'; import { RouterTestingModule } from '@angular/router/testing'; +import { TooltipDirective } from '@ods/system'; import { createWiedervorlageResource } from 'libs/wiedervorlage-shared/test/wiedervorlage'; -import { MockComponent, MockModule } from 'ng-mocks'; +import { MockComponent, MockDirective } from 'ng-mocks'; import { WiedervorlageStatusComponent } from '../../../wiedervorlage-status/wiedervorlage-status.component'; import { WiedervorlageAttachmentListContainerComponent } from './wiedervorlage-attachment-list-container/wiedervorlage-attachment-list-container.component'; import { WiedervorlageInVorgangExpandButtonComponent } from './wiedervorlage-in-vorgang-expand-button/wiedervorlage-in-vorgang-expand-button.component'; @@ -78,7 +78,7 @@ describe('WiedervorlageInVorgangComponent', () => { MockComponent(WiedervorlageInVorgangExpandButtonComponent), MockComponent(LinkWithUserNameTooltipContainerComponent), MockComponent(TextWithUserNameTooltipContainerComponent), - MockModule(MatTooltipModule), + MockDirective(TooltipDirective), ], imports: [RouterTestingModule], providers: [ diff --git a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-list-in-vorgang-list-container/wiedervorlage-list-in-vorgang-list-container.component.html b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-list-in-vorgang-list-container/wiedervorlage-list-in-vorgang-list-container.component.html index 30f5ee2bb76434da75135c98eea8eff8141f52ef..d70d62eca2546b3e4e322a16040e18b403e70b7e 100644 --- a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-list-in-vorgang-list-container/wiedervorlage-list-in-vorgang-list-container.component.html +++ b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-list-in-vorgang-list-container/wiedervorlage-list-in-vorgang-list-container.component.html @@ -37,7 +37,7 @@ <td> <div class="status"> <alfa-wiedervorlage-status - [matTooltip]="wiedervorlageResource.frist | toTrafficLightTooltip" + [tooltip]="wiedervorlageResource.frist | toTrafficLightTooltip" [wiedervorlageResource]="wiedervorlageResource" data-test-class="status" > diff --git a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-list-in-vorgang-list-container/wiedervorlage-list-in-vorgang-list-container.component.spec.ts b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-list-in-vorgang-list-container/wiedervorlage-list-in-vorgang-list-container.component.spec.ts index e3a91dc026d83280f12fdc55a05d220a01e85a47..9ae9dd5c0812065834a9802f17fcc27883f757f0 100644 --- a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-list-in-vorgang-list-container/wiedervorlage-list-in-vorgang-list-container.component.spec.ts +++ b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-list-in-vorgang-list-container/wiedervorlage-list-in-vorgang-list-container.component.spec.ts @@ -29,9 +29,9 @@ import { import { mock } from '@alfa-client/test-utils'; import { WiedervorlageService } from '@alfa-client/wiedervorlage-shared'; import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { MatTooltipModule } from '@angular/material/tooltip'; +import { TooltipDirective } from '@ods/system'; import { createWiedervorlageListResource } from 'libs/wiedervorlage-shared/test/wiedervorlage'; -import { MockComponent, MockModule } from 'ng-mocks'; +import { MockComponent, MockDirective } from 'ng-mocks'; import { of } from 'rxjs'; import { WiedervorlageStatusComponent } from '../wiedervorlage-status/wiedervorlage-status.component'; import { WiedervorlageListInVorgangListContainerComponent } from './wiedervorlage-list-in-vorgang-list-container.component'; @@ -52,7 +52,7 @@ describe('WiedervorlageListInVorgangListContainerComponent', () => { FormatToPrettyDatePipe, ToTrafficLightTooltipPipe, MockComponent(WiedervorlageStatusComponent), - MockModule(MatTooltipModule), + MockDirective(TooltipDirective), ], providers: [ { diff --git a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-status/wiedervorlage-status.component.spec.ts b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-status/wiedervorlage-status.component.spec.ts index 92614350fe078c2e66fb3a659050a551eedc9daf..ab2dd54f9740cb097bff0679157bc920bf8e762e 100644 --- a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-status/wiedervorlage-status.component.spec.ts +++ b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-status/wiedervorlage-status.component.spec.ts @@ -24,9 +24,7 @@ import { ToTrafficLightPipe } from '@alfa-client/tech-shared'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { MatIcon } from '@angular/material/icon'; -import { MatTooltipModule } from '@angular/material/tooltip'; import { createWiedervorlageResource } from 'libs/wiedervorlage-shared/test/wiedervorlage'; -import { MockModule } from 'ng-mocks'; import { WiedervorlageStatusComponent } from './wiedervorlage-status.component'; const doneIcon: string = '[data-test-class="done-icon"]'; @@ -37,12 +35,8 @@ describe('WiedervorlageStatusComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - declarations: [ - WiedervorlageStatusComponent, - ToTrafficLightPipe, - MatIcon, - MockModule(MatTooltipModule), - ], + declarations: [WiedervorlageStatusComponent, ToTrafficLightPipe], + imports: [MatIcon], }).compileComponents(); }); diff --git a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage.module.ts b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage.module.ts index 73ccc935276138242f2e14f9d14aadf427bdf54b..fec88f242f4f485bf156ef60e5fe897c210b0f59 100644 --- a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage.module.ts +++ b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage.module.ts @@ -21,15 +21,16 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { CommonModule, DatePipe } from '@angular/common'; -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; import { BinaryFileModule } from '@alfa-client/binary-file'; import { TechSharedModule } from '@alfa-client/tech-shared'; import { UiModule } from '@alfa-client/ui'; import { UserProfileModule } from '@alfa-client/user-profile'; import { VorgangSharedModule } from '@alfa-client/vorgang-shared'; import { VorgangSharedUiModule } from '@alfa-client/vorgang-shared-ui'; +import { CommonModule, DatePipe } from '@angular/common'; +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; +import { TooltipDirective } from '@ods/system'; import { CreateWiedervorlageButtonContainerComponent } from './create-wiedervorlage-button-container/create-wiedervorlage-button-container.component'; import { ErledigenButtonContainerComponent } from './erledigen-button-container/erledigen-button-container.component'; import { SubmitWiedervorlageButtonComponent } from './submit-wiedervorlage-button/submit-wiedervorlage-button.component'; @@ -69,6 +70,7 @@ const routes: Routes = [ VorgangSharedUiModule, BinaryFileModule, UserProfileModule, + TooltipDirective, ], declarations: [ WiedervorlagePageComponent,