From ecc28fd93db83ea206f2ab4bec1f65236821b4dc Mon Sep 17 00:00:00 2001 From: kaw67872 <kawtar.laariche@iais.fraunhofer.de> Date: Fri, 3 May 2024 20:35:41 +0200 Subject: [PATCH] #19: add breadcrumb navigation component --- .../breadcrumb-navigation.component.html | 18 ++++++ .../breadcrumb-navigation.component.scss | 56 +++++++++++++++++++ .../breadcrumb-navigation.component.spec.ts | 23 ++++++++ .../breadcrumb-navigation.component.ts | 29 ++++++++++ 4 files changed, 126 insertions(+) create mode 100644 src/app/shared/components/breadcrumb-navigation/breadcrumb-navigation.component.html create mode 100644 src/app/shared/components/breadcrumb-navigation/breadcrumb-navigation.component.scss create mode 100644 src/app/shared/components/breadcrumb-navigation/breadcrumb-navigation.component.spec.ts create mode 100644 src/app/shared/components/breadcrumb-navigation/breadcrumb-navigation.component.ts diff --git a/src/app/shared/components/breadcrumb-navigation/breadcrumb-navigation.component.html b/src/app/shared/components/breadcrumb-navigation/breadcrumb-navigation.component.html new file mode 100644 index 0000000..f6cb9cd --- /dev/null +++ b/src/app/shared/components/breadcrumb-navigation/breadcrumb-navigation.component.html @@ -0,0 +1,18 @@ +<ul class="c-breadcrumb"> + <li> + <a (click)="onFirstNavigationLabelClick()">{{ firstNavigationLabel }}</a> + </li> + <li> + <a (click)="onSecondNavigationClick()">{{ secondNavigationLabel }}</a> + </li> + <li> + <span + class="md-breadcrumb-item" + matTooltip="{{ solution?.name?.toString()?.split('_')?.join(' ') }}" + >{{ solution?.name?.toString()?.split("_")?.join(" ") }}</span + > + </li> + <li> + <gp-solution-id [solutionId]="solution.solutionId"></gp-solution-id> + </li> +</ul> diff --git a/src/app/shared/components/breadcrumb-navigation/breadcrumb-navigation.component.scss b/src/app/shared/components/breadcrumb-navigation/breadcrumb-navigation.component.scss new file mode 100644 index 0000000..6124c00 --- /dev/null +++ b/src/app/shared/components/breadcrumb-navigation/breadcrumb-navigation.component.scss @@ -0,0 +1,56 @@ +.c-breadcrumb { + list-style-type: none; + clear: both; + padding: 0; + margin: 0; +} + +.c-breadcrumb li:first-child { + margin-left: 0; + padding-left: 0; +} + +.c-breadcrumb li { + display: inline-block; + padding: 0 5px; +} + +.c-breadcrumb li:first-child:before { + content: ""; +} + +.c-breadcrumb li:before { + content: "/"; + position: relative; + left: -6px; +} + +.c-breadcrumb li a { + color: #2e2f2f; + text-decoration: none; + font-weight: 600; + font-size: 13px; + cursor: pointer; +} + +.c-breadcrumb li span.md-breadcrumb-item { + max-width: 300px; + position: relative; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + display: inline-block; + float: right; +} + +.c-breadcrumb li:last-child, +.c-breadcrumb li:last-child a { + font-weight: normal; + color: #8f8f8f; + font-size: 13px; +} + +.c-breadcrumb li { + display: inline-block; + padding: 0 5px; +} diff --git a/src/app/shared/components/breadcrumb-navigation/breadcrumb-navigation.component.spec.ts b/src/app/shared/components/breadcrumb-navigation/breadcrumb-navigation.component.spec.ts new file mode 100644 index 0000000..0fdae98 --- /dev/null +++ b/src/app/shared/components/breadcrumb-navigation/breadcrumb-navigation.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BreadcrumbNavigationComponent } from './breadcrumb-navigation.component'; + +describe('BreadcrumbNavigationComponent', () => { + let component: BreadcrumbNavigationComponent; + let fixture: ComponentFixture<BreadcrumbNavigationComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [BreadcrumbNavigationComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(BreadcrumbNavigationComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/components/breadcrumb-navigation/breadcrumb-navigation.component.ts b/src/app/shared/components/breadcrumb-navigation/breadcrumb-navigation.component.ts new file mode 100644 index 0000000..2fbc2db --- /dev/null +++ b/src/app/shared/components/breadcrumb-navigation/breadcrumb-navigation.component.ts @@ -0,0 +1,29 @@ +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { SolutionIdComponent } from '../solution-id/solution-id.component'; +import { PublicSolutionDetailsModel } from '../../models'; +import { MatTooltipModule } from '@angular/material/tooltip'; + +@Component({ + selector: 'gp-breadcrumb-navigation', + standalone: true, + imports: [CommonModule, SolutionIdComponent, MatTooltipModule], + templateUrl: './breadcrumb-navigation.component.html', + styleUrl: './breadcrumb-navigation.component.scss', +}) +export class BreadcrumbNavigationComponent { + @Input() firstNavigationLabel!: string; + @Input() secondNavigationLabel!: string; + @Input() solution!: PublicSolutionDetailsModel; + + @Output() firstNavigationClicked = new EventEmitter<void>(); + @Output() secondNavigationClicked = new EventEmitter<void>(); + + onFirstNavigationLabelClick(): void { + this.firstNavigationClicked.emit(); + } + + onSecondNavigationClick(): void { + this.secondNavigationClicked.emit(); + } +} -- GitLab