This commit is contained in:
2025-12-06 10:38:18 +01:00
parent af5da29daf
commit f317ae2f4d
11 changed files with 90 additions and 210 deletions

View File

@@ -1,197 +1,17 @@
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
<!-- * * * * * * * * * * * The content below * * * * * * * * * * * -->
<!-- * * * * * * * * * * is only a placeholder * * * * * * * * * * -->
<!-- * * * * * * * * * * and can be replaced. * * * * * * * * * * -->
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
<!-- * * * * * * * * * Delete the template below * * * * * * * * * -->
<!-- * * * * * * * to get started with your project! * * * * * * * -->
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
<style>
:host {
--bright-blue: oklch(51.01% 0.274 263.83);
--electric-violet: oklch(53.18% 0.28 296.97);
--french-violet: oklch(47.66% 0.246 305.88);
--vivid-pink: oklch(69.02% 0.277 332.77);
--hot-red: oklch(61.42% 0.238 15.34);
--orange-red: oklch(63.32% 0.24 31.68);
--gray-900: oklch(19.37% 0.006 300.98);
--gray-700: oklch(36.98% 0.014 302.71);
--gray-400: oklch(70.9% 0.015 304.04);
--red-to-pink-to-purple-vertical-gradient: linear-gradient(
180deg,
var(--orange-red) 0%,
var(--vivid-pink) 50%,
var(--electric-violet) 100%
);
--red-to-pink-to-purple-horizontal-gradient: linear-gradient(
90deg,
var(--orange-red) 0%,
var(--vivid-pink) 50%,
var(--electric-violet) 100%
);
--pill-accent: var(--bright-blue);
font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji",
"Segoe UI Symbol";
box-sizing: border-box;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
h1 {
font-size: 3.125rem;
color: var(--gray-900);
font-weight: 500;
line-height: 100%;
letter-spacing: -0.125rem;
margin: 0;
font-family: "Inter Tight", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji",
"Segoe UI Symbol";
}
p {
margin: 0;
color: var(--gray-700);
}
main {
width: 100%;
min-height: 100%;
display: flex;
justify-content: center;
align-items: center;
padding: 1rem;
box-sizing: inherit;
position: relative;
}
.angular-logo {
max-width: 9.2rem;
}
.content {
display: flex;
justify-content: space-around;
width: 100%;
max-width: 700px;
margin-bottom: 3rem;
}
.content h1 {
margin-top: 1.75rem;
}
.content p {
margin-top: 1.5rem;
}
.divider {
width: 1px;
background: var(--red-to-pink-to-purple-vertical-gradient);
margin-inline: 0.5rem;
}
.pill-group {
display: flex;
flex-direction: column;
align-items: start;
flex-wrap: wrap;
gap: 1.25rem;
}
.pill {
display: flex;
align-items: center;
--pill-accent: var(--bright-blue);
background: color-mix(in srgb, var(--pill-accent) 5%, transparent);
color: var(--pill-accent);
padding-inline: 0.75rem;
padding-block: 0.375rem;
border-radius: 2.75rem;
border: 0;
transition: background 0.3s ease;
font-family: var(--inter-font);
font-size: 0.875rem;
font-style: normal;
font-weight: 500;
line-height: 1.4rem;
letter-spacing: -0.00875rem;
text-decoration: none;
}
.pill:hover {
background: color-mix(in srgb, var(--pill-accent) 15%, transparent);
}
.pill-group .pill:nth-child(6n + 1) {
--pill-accent: var(--bright-blue);
}
.pill-group .pill:nth-child(6n + 2) {
--pill-accent: var(--french-violet);
}
.pill-group .pill:nth-child(6n + 3),
.pill-group .pill:nth-child(6n + 4),
.pill-group .pill:nth-child(6n + 5) {
--pill-accent: var(--hot-red);
}
.pill-group svg {
margin-inline-start: 0.25rem;
}
.social-links {
display: flex;
align-items: center;
gap: 0.73rem;
margin-top: 1.5rem;
}
.social-links path {
transition: fill 0.3s ease;
fill: var(--gray-400);
}
.social-links a:hover svg path {
fill: var(--gray-900);
}
@media screen and (max-width: 650px) {
.content {
flex-direction: column;
width: max-content;
}
.divider {
height: 1px;
width: 100%;
background: var(--red-to-pink-to-purple-horizontal-gradient);
margin-block: 1.5rem;
}
}
</style>
<style></style>
<main class="main">
<div class="content">
<create-auto (autoInitializedEvent)="setAuto($event)"/>
<div> Typ: {{ auto?.typ ?? "N/A" }} </div>
<div> Hersteller: {{ auto?.hersteller ?? "N/A" }} </div>
<div> Kennzeichen: {{ auto?.kennzeichen ?? "N/A" }} </div>
<div class="uebung-6">
<app-create-auto (autoInitializedEvent)="setAuto($event)"></app-create-auto>
<div> Typ: {{ auto?.typ ?? "N/A" }} </div>
<div> Hersteller: {{ auto?.hersteller ?? "N/A" }} </div>
<div> Kennzeichen: {{ auto?.kennzeichen ?? "N/A" }} </div>
</div>
<div class="praktikum-6">
<app-display-html html="<b>initialer text</b>"></app-display-html>
</div>
</div>
</main>
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
<!-- * * * * * * * * * * * The content above * * * * * * * * * * * * -->
<!-- * * * * * * * * * * is only a placeholder * * * * * * * * * * * -->
<!-- * * * * * * * * * * and can be replaced. * * * * * * * * * * * -->
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
<!-- * * * * * * * * * * End of Placeholder * * * * * * * * * * * * -->
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
<router-outlet />

View File

@@ -1,10 +1,11 @@
import { Component } from '@angular/core';
import { RouterOutlet } from '@angular/router';
import { Auto } from './Auto';
import { CreateAutoComponent } from './create-auto/create-auto.component';
import { DisplayHtmlComponent } from './display-html/display-html.component';
@Component({
selector: 'app-root',
imports: [RouterOutlet],
imports: [CreateAutoComponent, DisplayHtmlComponent],
templateUrl: './app.component.html',
styleUrl: './app.component.css'
})

View File

@@ -1,9 +1,8 @@
import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core';
import { ApplicationConfig } from '@angular/core';
import { provideRouter } from '@angular/router';
import { routes } from './app.routes';
import { provideClientHydration, withEventReplay } from '@angular/platform-browser';
export const appConfig: ApplicationConfig = {
providers: [provideZoneChangeDetection({ eventCoalescing: true }), provideRouter(routes), provideClientHydration(withEventReplay())]
providers: [provideRouter(routes)]
};

View File

@@ -1,3 +1,3 @@
<p>create-auto works!</p>
<button (click)="createAuto">Auto erstellen</button>
<button (click)="createAuto()">Auto erstellen</button>

View File

@@ -5,17 +5,13 @@ import { Auto } from '../Auto';
selector: 'app-create-auto',
imports: [],
templateUrl: './create-auto.component.html',
styleUrl: './create-auto.component.css'
styleUrl: './create-auto.component.css',
})
export class CreateAutoComponent {
constructor(
@Output() public autoInitializedEvent: EventEmitter<Auto>
) {
autoInitializedEvent = new EventEmitter<Auto>();
}
@Output() autoInitializedEvent: EventEmitter<Auto> = new EventEmitter<Auto>();
createAuto() {
var auto = new Auto("BMW", "e36", "DE-gho-st");
var auto = new Auto("BMW", "e36", "DE-RS-7331");
this.autoInitializedEvent.emit(auto);
}
}

View File

@@ -0,0 +1,4 @@
<div>
<p innerHtml="{{ html }}"></p>
<button (click)="updateHtml()">Update Html</button>
</div>

View File

@@ -0,0 +1,23 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { DisplayHtmlComponent } from './display-html.component';
describe('DisplayHtmlComponent', () => {
let component: DisplayHtmlComponent;
let fixture: ComponentFixture<DisplayHtmlComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
imports: [DisplayHtmlComponent]
})
.compileComponents();
fixture = TestBed.createComponent(DisplayHtmlComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@@ -0,0 +1,15 @@
import { Component } from '@angular/core';
@Component({
selector: 'app-display-html',
imports: [],
templateUrl: './display-html.component.html',
styleUrl: './display-html.component.css'
})
export class DisplayHtmlComponent {
html: string = '';
updateHtml() {
this.html = "<i>neuer text ???</i>";
}
}