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 @@
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * --> <style></style>
<!-- * * * * * * * * * * * 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>
<main class="main"> <main class="main">
<div class="content"> <div class="content">
<create-auto (autoInitializedEvent)="setAuto($event)"/> <div class="uebung-6">
<app-create-auto (autoInitializedEvent)="setAuto($event)"></app-create-auto>
<div> Typ: {{ auto?.typ ?? "N/A" }} </div> <div> Typ: {{ auto?.typ ?? "N/A" }} </div>
<div> Hersteller: {{ auto?.hersteller ?? "N/A" }} </div> <div> Hersteller: {{ auto?.hersteller ?? "N/A" }} </div>
<div> Kennzeichen: {{ auto?.kennzeichen ?? "N/A" }} </div> <div> Kennzeichen: {{ auto?.kennzeichen ?? "N/A" }} </div>
</div> </div>
<div class="praktikum-6">
<app-display-html html="<b>initialer text</b>"></app-display-html>
</div>
</div>
</main> </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 { Component } from '@angular/core';
import { RouterOutlet } from '@angular/router';
import { Auto } from './Auto'; import { Auto } from './Auto';
import { CreateAutoComponent } from './create-auto/create-auto.component';
import { DisplayHtmlComponent } from './display-html/display-html.component';
@Component({ @Component({
selector: 'app-root', selector: 'app-root',
imports: [RouterOutlet], imports: [CreateAutoComponent, DisplayHtmlComponent],
templateUrl: './app.component.html', templateUrl: './app.component.html',
styleUrl: './app.component.css' 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 { provideRouter } from '@angular/router';
import { routes } from './app.routes'; import { routes } from './app.routes';
import { provideClientHydration, withEventReplay } from '@angular/platform-browser';
export const appConfig: ApplicationConfig = { 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> <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', selector: 'app-create-auto',
imports: [], imports: [],
templateUrl: './create-auto.component.html', templateUrl: './create-auto.component.html',
styleUrl: './create-auto.component.css' styleUrl: './create-auto.component.css',
}) })
export class CreateAutoComponent { export class CreateAutoComponent {
constructor( @Output() autoInitializedEvent: EventEmitter<Auto> = new EventEmitter<Auto>();
@Output() public autoInitializedEvent: EventEmitter<Auto>
) {
autoInitializedEvent = new EventEmitter<Auto>();
}
createAuto() { createAuto() {
var auto = new Auto("BMW", "e36", "DE-gho-st"); var auto = new Auto("BMW", "e36", "DE-RS-7331");
this.autoInitializedEvent.emit(auto); 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>";
}
}

25
flake.lock generated
View File

@@ -5,11 +5,11 @@
"nixpkgs-lib": "nixpkgs-lib" "nixpkgs-lib": "nixpkgs-lib"
}, },
"locked": { "locked": {
"lastModified": 1762980239, "lastModified": 1763759067,
"narHash": "sha256-8oNVE8TrD19ulHinjaqONf9QWCKK+w4url56cdStMpM=", "narHash": "sha256-LlLt2Jo/gMNYAwOgdRQBrsRoOz7BPRkzvNaI/fzXi2Q=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "52a2caecc898d0b46b2b905f058ccc5081f842da", "rev": "2cccadc7357c0ba201788ae99c4dfa90728ef5e0",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -34,6 +34,22 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs-angular-cli": {
"locked": {
"lastModified": 1688392541,
"narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-22.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-lib": { "nixpkgs-lib": {
"locked": { "locked": {
"lastModified": 1761765539, "lastModified": 1761765539,
@@ -52,7 +68,8 @@
"root": { "root": {
"inputs": { "inputs": {
"flake-parts": "flake-parts", "flake-parts": "flake-parts",
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs",
"nixpkgs-angular-cli": "nixpkgs-angular-cli"
} }
} }
}, },

View File

@@ -4,6 +4,7 @@
inputs = { inputs = {
flake-parts.url = "github:hercules-ci/flake-parts"; flake-parts.url = "github:hercules-ci/flake-parts";
nixpkgs.url = "github:NixOS/nixpkgs/9da7f1cf7f8a6e2a7cb3001b048546c92a8258b4"; nixpkgs.url = "github:NixOS/nixpkgs/9da7f1cf7f8a6e2a7cb3001b048546c92a8258b4";
nixpkgs-angular-cli.url = "github:NixOS/nixpkgs/nixos-22.11";
}; };
outputs = inputs @ { outputs = inputs @ {
@@ -50,7 +51,11 @@
])) ]))
]; ];
angularPackages = with pkgs; [ pkgs-angular-cli = import inputs.nixpkgs-angular-cli {
inherit system;
};
angularPackages = with pkgs-angular-cli; [
nodePackages."@angular/cli" nodePackages."@angular/cli"
]; ];
in { in {