From d8bc742caba75e10ef1b0682ac4ea6ff44993ba5 Mon Sep 17 00:00:00 2001 From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com> Date: Fri, 25 Apr 2025 16:36:58 +0200 Subject: [PATCH] OZG-8129 replace button in paste text button --- .../src/assets/paste-from-clipboard.svg | 5 ++++ .../src/lib/assets/paste_from_clipboard.svg | 4 ---- .../libs/ui/src/lib/icon/icon.model.ts | 1 - .../ozgcloud-paste-text-button.component.html | 11 +++------ ...gcloud-paste-text-button.component.spec.ts | 24 ++++++------------- .../ozgcloud-paste-text-button.component.ts | 4 ++-- 6 files changed, 17 insertions(+), 32 deletions(-) create mode 100644 alfa-client/libs/design-system/src/assets/paste-from-clipboard.svg delete mode 100644 alfa-client/libs/ui/src/lib/assets/paste_from_clipboard.svg diff --git a/alfa-client/libs/design-system/src/assets/paste-from-clipboard.svg b/alfa-client/libs/design-system/src/assets/paste-from-clipboard.svg new file mode 100644 index 0000000000..f56358b94f --- /dev/null +++ b/alfa-client/libs/design-system/src/assets/paste-from-clipboard.svg @@ -0,0 +1,5 @@ +<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> + <path + d="m5.63158 23 1.62105-1.5675L5.42895 19.7H12v-2.2H5.42895l1.82368-1.76-1.62105-1.54L1 18.6 5.63158 23ZM2.15789 12H4.3V5.4h2.2v3.3h12.1V5.4h2.2v15.4h-5.9053V23h5.7895c.6369 0 1.182-.2154 1.6355-.6462.4535-.4309.6803-.9488.6803-1.5538V5.4c0-.605-.2268-1.12292-.6803-1.55375-.4535-.43083-.9986-.64625-1.6355-.64625H15.85c-.2123-.64167-.6272-1.16875-1.2447-1.58125C13.9877 1.20625 13.3123 1 12.5789 1c-.7719 0-1.4618.20625-2.0697.61875-.60788.4125-1.01797.93958-1.23025 1.58125H4.47368c-.63684 0-1.18201.21542-1.63552.64625-.45351.43083-.68027.94875-.68027 1.55375V12ZM12.5789 5.4c-.328 0-.603-.10542-.825-.31625-.2219-.21083-.3328-.47208-.3328-.78375 0-.31167.1109-.57292.3328-.78375.222-.21083.497-.31625.825-.31625.3281 0 .6031.10542.825.31625.222.21083.3329.47208.3329.78375 0 .31167-.1109.57292-.3329.78375-.2219.21083-.4969.31625-.825.31625Z" /> + <path d="M7 11h11v1H7v-1ZM10 14h8v1h-8v-1ZM15 17h3v1h-3v-1Z" /> +</svg> \ No newline at end of file diff --git a/alfa-client/libs/ui/src/lib/assets/paste_from_clipboard.svg b/alfa-client/libs/ui/src/lib/assets/paste_from_clipboard.svg deleted file mode 100644 index 27073d47e4..0000000000 --- a/alfa-client/libs/ui/src/lib/assets/paste_from_clipboard.svg +++ /dev/null @@ -1,4 +0,0 @@ -<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> - <path d="m5.63158 23 1.62105-1.5675L5.42895 19.7H12v-2.2H5.42895l1.82368-1.76-1.62105-1.54L1 18.6 5.63158 23ZM2.15789 12H4.3V5.4h2.2v3.3h12.1V5.4h2.2v15.4h-5.9053V23h5.7895c.6369 0 1.182-.2154 1.6355-.6462.4535-.4309.6803-.9488.6803-1.5538V5.4c0-.605-.2268-1.12292-.6803-1.55375-.4535-.43083-.9986-.64625-1.6355-.64625H15.85c-.2123-.64167-.6272-1.16875-1.2447-1.58125C13.9877 1.20625 13.3123 1 12.5789 1c-.7719 0-1.4618.20625-2.0697.61875-.60788.4125-1.01797.93958-1.23025 1.58125H4.47368c-.63684 0-1.18201.21542-1.63552.64625-.45351.43083-.68027.94875-.68027 1.55375V12ZM12.5789 5.4c-.328 0-.603-.10542-.825-.31625-.2219-.21083-.3328-.47208-.3328-.78375 0-.31167.1109-.57292.3328-.78375.222-.21083.497-.31625.825-.31625.3281 0 .6031.10542.825.31625.222.21083.3329.47208.3329.78375 0 .31167-.1109.57292-.3329.78375-.2219.21083-.4969.31625-.825.31625Z"/> - <path d="M7 11h11v1H7v-1ZM10 14h8v1h-8v-1ZM15 17h3v1h-3v-1Z"/> -</svg> \ No newline at end of file diff --git a/alfa-client/libs/ui/src/lib/icon/icon.model.ts b/alfa-client/libs/ui/src/lib/icon/icon.model.ts index c33174978b..f43d2916d5 100644 --- a/alfa-client/libs/ui/src/lib/icon/icon.model.ts +++ b/alfa-client/libs/ui/src/lib/icon/icon.model.ts @@ -26,5 +26,4 @@ export enum Icons { LOGO = 'logo', MAIL = 'mail', PDF_EXPORT = 'pdf_export', - PASTE_FROM_CLIPBOARD = 'paste_from_clipboard', } diff --git a/alfa-client/libs/ui/src/lib/ui/ozgcloud-paste-text-button/ozgcloud-paste-text-button.component.html b/alfa-client/libs/ui/src/lib/ui/ozgcloud-paste-text-button/ozgcloud-paste-text-button.component.html index f6dd97a4e5..bd191c810a 100644 --- a/alfa-client/libs/ui/src/lib/ui/ozgcloud-paste-text-button/ozgcloud-paste-text-button.component.html +++ b/alfa-client/libs/ui/src/lib/ui/ozgcloud-paste-text-button/ozgcloud-paste-text-button.component.html @@ -24,12 +24,7 @@ unter der Lizenz sind dem Lizenztext zu entnehmen. --> @if (isPasteSupported) { - <ozgcloud-icon-button-primary - [tooltip]="tooltip" - svgIcon="paste_from_clipboard" - class="paste_icon" - (clickEmitter)="onPaste()" - data-test-id="paste_from_clipboard" - > - </ozgcloud-icon-button-primary> + <ods-button variant="ghost" size="fit" (clickEmitter)="onPaste()" data-test-id="paste-button" [tooltip]="tooltip"> + <ods-icon icon name="paste-from-clipboard" /> + </ods-button> } 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 918ec8d7c1..d2b7bc8b9e 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 @@ -22,13 +22,10 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ import { isClipboardReadSupported } from '@alfa-client/tech-shared'; -import { getElementFromFixture, mock } from '@alfa-client/test-utils'; -import { OzgcloudIconButtonPrimaryComponent } from '@alfa-client/ui'; +import { existsAsHtmlElement, mock, notExistsAsHtmlElement } from '@alfa-client/test-utils'; 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 { TooltipDirective } from '@ods/system'; +import { ButtonComponent, IconComponent, TooltipDirective } from '@ods/system'; import { getDataTestIdOf } from 'libs/tech-shared/test/data-test'; import { MockComponent, MockDirective } from 'ng-mocks'; import { OzgcloudPasteTextButtonComponent } from './ozgcloud-paste-text-button.component'; @@ -39,23 +36,19 @@ const isClipboardReadSupportedMock = isClipboardReadSupported as jest.Mock; const clipboardContent = '1234'; const readTextMock = jest.fn().mockResolvedValue(clipboardContent); Object.assign(navigator, { clipboard: { readText: readTextMock } }); +const pasteButtonLocator: string = getDataTestIdOf('paste-button'); describe('OzgcloudPasteTextButtonComponent', () => { let component: OzgcloudPasteTextButtonComponent; let fixture: ComponentFixture<OzgcloudPasteTextButtonComponent>; - function getMatIconElement(): HTMLElement { - return getElementFromFixture(fixture, getDataTestIdOf('paste_from_clipboard')); - } - beforeEach(async () => { await TestBed.configureTestingModule({ imports: [ - MatIconTestingModule, OzgcloudPasteTextButtonComponent, - MockComponent(MatIcon), - MockComponent(OzgcloudIconButtonPrimaryComponent), MockDirective(TooltipDirective), + MockComponent(ButtonComponent), + MockComponent(IconComponent), ], }).compileComponents(); @@ -74,9 +67,7 @@ describe('OzgcloudPasteTextButtonComponent', () => { }); it('should not render if paste not supported', () => { - const matIcon = getMatIconElement(); - - expect(matIcon).not.toBeInstanceOf(HTMLElement); + notExistsAsHtmlElement(fixture, pasteButtonLocator); }); describe('ngOnInit', () => { @@ -97,11 +88,10 @@ describe('OzgcloudPasteTextButtonComponent', () => { it('should render if paste supported', () => { isClipboardReadSupportedMock.mockReturnValue(true); fixture.detectChanges(); - const matIcon = getMatIconElement(); component.ngOnInit(); - expect(matIcon).toBeInstanceOf(HTMLElement); + existsAsHtmlElement(fixture, pasteButtonLocator); }); }); diff --git a/alfa-client/libs/ui/src/lib/ui/ozgcloud-paste-text-button/ozgcloud-paste-text-button.component.ts b/alfa-client/libs/ui/src/lib/ui/ozgcloud-paste-text-button/ozgcloud-paste-text-button.component.ts index 3fa9c14b0b..9bf6e48d88 100644 --- a/alfa-client/libs/ui/src/lib/ui/ozgcloud-paste-text-button/ozgcloud-paste-text-button.component.ts +++ b/alfa-client/libs/ui/src/lib/ui/ozgcloud-paste-text-button/ozgcloud-paste-text-button.component.ts @@ -23,14 +23,14 @@ */ import { isClipboardReadSupported } from '@alfa-client/tech-shared'; import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; -import { OzgcloudIconButtonPrimaryComponent } from '../ozgcloud-button/ozgcloud-icon-button-primary/ozgcloud-icon-button-primary.component'; +import { ButtonComponent, IconComponent, TooltipDirective } from '@ods/system'; @Component({ selector: 'ozgcloud-paste-text-button', templateUrl: './ozgcloud-paste-text-button.component.html', styleUrls: ['./ozgcloud-paste-text-button.component.scss'], standalone: true, - imports: [OzgcloudIconButtonPrimaryComponent], + imports: [ButtonComponent, IconComponent, TooltipDirective], }) export class OzgcloudPasteTextButtonComponent implements OnInit { @Input() tooltip: string; -- GitLab