diff --git a/package-lock.json b/package-lock.json index be9bea4a1532f90c3f14174b40782b0f383c4551..48a72d1b0d9972f5ddb6c8f32fc21193c4b68c4b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,7 @@ "name": "climbing-hall", "version": "0.0.0", "dependencies": { - "@angular/animations": "^14.2.0", + "@angular/animations": "^14.2.8", "@angular/cdk": "^14.2.6", "@angular/common": "^14.2.0", "@angular/compiler": "^14.2.0", diff --git a/package.json b/package.json index 997d35f5b9262c935e9ad3b93ac5bb0a4d58bdb0..b5ffdea4e5e1e6445815d63b16213fe1dd7fb5e8 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ }, "private": true, "dependencies": { - "@angular/animations": "^14.2.0", + "@angular/animations": "^14.2.8", "@angular/cdk": "^14.2.6", "@angular/common": "^14.2.0", "@angular/compiler": "^14.2.0", diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 24aefee2a57f72f90bb6d037e41c66e54b04b095..0b4edbe1855183c663de67780466b97af8de02df 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -1,18 +1,37 @@ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; import { MembersListComponent } from './components/members/members-list.component' -import { RoutesComponent } from './components/routes/routes.component' +import {RoutesComponent} from "./components/routes/routes.component"; +import {RouteComponent} from "./components/routes/route/route.component"; +import {RouteDetailPageComponent} from "./components/routes/route/route-detail-page/route-detail-page.component"; +import {AddRouteFormComponent} from "./components/routes/route/add-route-form/add-route-form.component"; const routes: Routes = [ { path:'members', component:MembersListComponent }, { - path:'routes', component:RoutesComponent + path: 'routes', + component: RoutesComponent, }, { - path:'', redirectTo:'members', pathMatch:'full' - } + path: 'route', + component: RouteComponent, + }, + { + path: 'routeDetails/:id', + component: RouteDetailPageComponent, + pathMatch: 'full', + }, + { + path: 'routesAddForm', + component: AddRouteFormComponent, + }, + { + path: '', + redirectTo: 'members', + pathMatch: 'full', + }, ]; @NgModule({ diff --git a/src/app/app.component.html b/src/app/app.component.html index 247597e3b7826d30fdc9608f04aaad1aa6390f93..473c2c363fef276b26182be77d03e2f16cc0ade8 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -1,20 +1,29 @@ - - - - - - diff --git a/src/app/app.component.scss b/src/app/app.component.scss index a30ca4c798ea314d3d58cb440a639b9bb1b4bac2..f359eeb6a116219ce9fc09917b0a6ced99901702 100644 --- a/src/app/app.component.scss +++ b/src/app/app.component.scss @@ -1,7 +1,7 @@ nav { - color: rgba(5, 20, 20, 0.7); height: 60px; width: 100%; + background-color: rgba(40, 42, 53, 1); display: flex; justify-content: space-between; margin-bottom: 25px; @@ -10,7 +10,7 @@ nav { .headline { width: 20%; - padding-left: 20px; + padding-left: 15px; padding-top: 15px; display: flex; justify-content: left; @@ -18,6 +18,26 @@ nav { h1 { font-size: 1.3rem; + color: white; + } + + mat-icon { + color: white; + margin-top: 2.7px; + margin-right: 10px; + } + } + + .headline:active { + color: darkred; + + h1 { + font-size: 1.3rem; + color: darkred; + } + + mat-icon { + color: darkred; } } @@ -30,30 +50,24 @@ nav { padding: 0; li { - display: flex; - align-items: center; - justify-content: center; width: 50%; height: 100%; - text-align: center; text-decoration: none; a { + color: white; + text-align:center; + display:flex; + align-items: center; + justify-content: center; text-decoration: none; font-size: 1.3rem; + width: 100%; + height: 100%; } } - - li:hover { - display: flex; - align-items: center; - justify-content: center; - background-color: aliceblue; - width: 50%; - height: 100%; - text-align: center; - text-decoration: none; - } } } + + diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 99eca01c297798708fd068ba44b7f2ab388b66ba..e194dbf21481f413fe3c99bad7d1d3f0d8d6448f 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -1,13 +1,11 @@ import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; - import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { MatMenuModule} from '@angular/material/menu'; import { MembersListComponent } from './components/members/members-list.component'; -import { RoutesComponent } from './components/routes/routes.component' -import {FormsModule} from "@angular/forms"; +import {FormsModule, ReactiveFormsModule} from "@angular/forms"; import {MatTableModule} from "@angular/material/table"; import {HttpClientModule} from "@angular/common/http"; import {MatSliderModule} from "@angular/material/slider"; @@ -17,12 +15,23 @@ import {MatFormFieldModule} from "@angular/material/form-field"; import {MatInputModule} from "@angular/material/input"; import {MatButtonModule} from '@angular/material/button'; import {MatIconModule} from "@angular/material/icon"; +import { MatListModule } from '@angular/material/list'; +import { MatCardModule } from '@angular/material/card'; +import { MatDividerModule } from '@angular/material/divider'; +import { MatSelectModule } from '@angular/material/select'; +import {RoutesComponent} from "./components/routes/routes.component"; +import {RouteComponent} from "./components/routes/route/route.component"; +import {AddRouteFormComponent} from "./components/routes/route/add-route-form/add-route-form.component"; +import {RouteDetailPageComponent} from "./components/routes/route/route-detail-page/route-detail-page.component"; @NgModule({ declarations: [ AppComponent, MembersListComponent, - RoutesComponent + RoutesComponent, + RouteComponent, + AddRouteFormComponent, + RouteDetailPageComponent, ], imports: [ BrowserModule, @@ -38,7 +47,12 @@ import {MatIconModule} from "@angular/material/icon"; HttpClientModule, MatSliderModule, MatButtonModule, - MatIconModule + MatIconModule, + MatListModule, + MatCardModule, + MatDividerModule, + ReactiveFormsModule, + MatSelectModule, ], providers: [], bootstrap: [AppComponent] diff --git a/src/app/components/routes/route.ts b/src/app/components/routes/route.ts deleted file mode 100644 index 93835199a22d1935427e0e8fde15782f3dd9a781..0000000000000000000000000000000000000000 --- a/src/app/components/routes/route.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface Route { - id: number; - routeName: string; - difficultyLevel: string; -} diff --git a/src/app/components/routes/route/add-route-form/add-route-form.component.html b/src/app/components/routes/route/add-route-form/add-route-form.component.html new file mode 100644 index 0000000000000000000000000000000000000000..734d49cb6e807ff04896f19dd52262153def15e3 --- /dev/null +++ b/src/app/components/routes/route/add-route-form/add-route-form.component.html @@ -0,0 +1,53 @@ +

Add Route

+ +
+ + Route name + + + + + +

+ Es muss ein RoutenName eingegeben werden +

+ +

+ Es muss müssen mindestens 3 Buchstaben eingegeben werden +

+ +
+
+ + + Difficulty + + {{ + difficulty + }} + + + + + + +

+ Es muss ein Schwierigkeitsgrad eingegeben werden +

+ +
+
+
+ + + +
diff --git a/src/app/components/routes/route/add-route-form/add-route-form.component.scss b/src/app/components/routes/route/add-route-form/add-route-form.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..34fbfb20f59a308e332d1e024f0d607bf2f6499f --- /dev/null +++ b/src/app/components/routes/route/add-route-form/add-route-form.component.scss @@ -0,0 +1,44 @@ +h2 { + font-size: 1.3rem; + width: 60%; + height: 3%; + margin: 30px auto; + display: flex; + justify-content: center; + color: darkred; +} + +mat-divider { + width: 30%; + display: flex; + margin: 0px auto 20px auto; + background-color: darkred; +} + +.error { + color: red; +} + +form { + font-size: 1.4rem; + border: 2px solid darkgrey; + background-color: white; + width: 20%; + margin: 30px auto; + padding: 20px; +} + +form * { + display: flex; + justify-content: center; +} + +:host { + display: flex; + flex-direction: column; + align-items: flex-start; +} + +.send-btn { + margin: 0 auto; +} diff --git a/src/app/components/routes/route/add-route-form/add-route-form.component.spec.ts b/src/app/components/routes/route/add-route-form/add-route-form.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..3e1ec0f25cd30862325e3c9087a6506046c0a4d6 --- /dev/null +++ b/src/app/components/routes/route/add-route-form/add-route-form.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AddRouteFormComponent } from './add-route-form.component'; + +describe('AddRouteFormComponent', () => { + let component: AddRouteFormComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ AddRouteFormComponent ] + }) + .compileComponents(); + + fixture = TestBed.createComponent(AddRouteFormComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/components/routes/route/add-route-form/add-route-form.component.ts b/src/app/components/routes/route/add-route-form/add-route-form.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..50b996e85752b6a81d8d71d1ebaa9c4d0dd69dff --- /dev/null +++ b/src/app/components/routes/route/add-route-form/add-route-form.component.ts @@ -0,0 +1,40 @@ +import { Component, OnInit } from '@angular/core'; +import { FormControl, FormGroup, Validators } from '@angular/forms'; +import { Router } from '@angular/router'; +import {RouteService} from "../../../../services/route.service"; +import {Route} from "../../../../models/route"; + +@Component({ + selector: 'app-add-route-form', + templateUrl: './add-route-form.component.html', + styleUrls: ['./add-route-form.component.scss'], +}) +export class AddRouteFormComponent implements OnInit { + Difficulty: string[] = ['EASY', 'MEDIUM', 'HARD', 'HELL']; + + public addRouteForm: FormGroup = new FormGroup({ + routeName: new FormControl( + '', + [Validators.required, Validators.minLength(3)], + [] + ), + difficultyLevel: new FormControl('', [Validators.required], []), + }); + + constructor(private router: Router, private routeService: RouteService) { + this.addRouteForm.valueChanges.subscribe(); + } + + ngOnInit(): void {} + + addRoute() { + if (this.addRouteForm.valid) { + const route: Route = { + name: this.addRouteForm.get('routeName')?.value, + difficultyLevelEnum: this.addRouteForm.get('difficultyLevel')?.value, + }; + this.routeService.addRoute(route).subscribe(); + this.router.navigateByUrl('/routes'); + } + } +} diff --git a/src/app/components/routes/route/route-detail-page/route-detail-page.component.html b/src/app/components/routes/route/route-detail-page/route-detail-page.component.html new file mode 100644 index 0000000000000000000000000000000000000000..ed40abe5a9d92862163f1e72ff0510fb65dc1440 --- /dev/null +++ b/src/app/components/routes/route/route-detail-page/route-detail-page.component.html @@ -0,0 +1,16 @@ +
+

Route Details

+ +
+ + + {{ route?.name }} + + Difficulty level: + +

{{ route?.difficultyLevelEnum }}

+
+ + + +
diff --git a/src/app/components/routes/route/route-detail-page/route-detail-page.component.scss b/src/app/components/routes/route/route-detail-page/route-detail-page.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..c5c5739f6c32273073af0c85a86093dc18ef058b --- /dev/null +++ b/src/app/components/routes/route/route-detail-page/route-detail-page.component.scss @@ -0,0 +1,51 @@ +h2 { + font-size: 1.3rem; + width: 60%; + margin: 30px auto; + display: flex; + justify-content: center; + color: darkred; +} + +mat-divider { + width: 30%; + display: flex; + margin: 0px auto 20px auto; + background-color: darkred; +} +.example-card { + max-width: 500px; + margin: 20px auto; + padding: 20px; + + button { + font-size: 1.2rem; + width: 100px; + height: 40px; + cursor: pointer; + } + + mat-card-title { + font-size: 2rem; + margin-bottom: 40px; + } + + mat-divider { + width: 95%; + background-color: darkgrey; + margin-left: 10px; + margin-top: -10px; + } + + mat-card-subtitle { + font-size: 1.4rem; + margin-top: 50px; + margin-bottom: 30px; + } + + p { + margin-bottom: 30px; + font-size: 1.2rem; + } +} + diff --git a/src/app/components/routes/route/route-detail-page/route-detail-page.component.spec.ts b/src/app/components/routes/route/route-detail-page/route-detail-page.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..0fcdcd8ba3d4cf7165a15a5c42dbd89a86979db3 --- /dev/null +++ b/src/app/components/routes/route/route-detail-page/route-detail-page.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { RouteDetailPageComponent } from './route-detail-page.component'; + +describe('RouteDetailPageComponent', () => { + let component: RouteDetailPageComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ RouteDetailPageComponent ] + }) + .compileComponents(); + + fixture = TestBed.createComponent(RouteDetailPageComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/components/routes/route/route-detail-page/route-detail-page.component.ts b/src/app/components/routes/route/route-detail-page/route-detail-page.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..1a710cab853e730ae3c7ba3d3437bf77dad0dfcd --- /dev/null +++ b/src/app/components/routes/route/route-detail-page/route-detail-page.component.ts @@ -0,0 +1,26 @@ +import { Component, Input, OnInit } from '@angular/core'; +import { ActivatedRoute } from '@angular/router'; +import {Route} from "../../../../models/route"; +import {RouteService} from "../../../../services/route.service"; + +@Component({ + selector: 'app-route-detail-page', + templateUrl: './route-detail-page.component.html', + styleUrls: ['./route-detail-page.component.scss'], +}) +export class RouteDetailPageComponent implements OnInit { + @Input() route!: Route; + + constructor( + private activatedRoute: ActivatedRoute, + private routeService: RouteService + ) {} + + ngOnInit(): void { + this.activatedRoute.params.subscribe((params) => { + this.routeService.getRouteById(params['id']).subscribe((result) => { + this.route = result; + }); + }); + } +} diff --git a/src/app/components/routes/route/route.component.html b/src/app/components/routes/route/route.component.html new file mode 100644 index 0000000000000000000000000000000000000000..fa165e13682ebff1eb76d0558473b6a78fee53d7 --- /dev/null +++ b/src/app/components/routes/route/route.component.html @@ -0,0 +1,17 @@ + + + info + Route: {{ route?.name }} + + + + + + diff --git a/src/app/components/routes/route/route.component.scss b/src/app/components/routes/route/route.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..b1466bbd8d9ee7d704084c50f4d46caf9959f667 --- /dev/null +++ b/src/app/components/routes/route/route.component.scss @@ -0,0 +1,41 @@ +.route { + font-size: 1.1rem; + margin: 20px auto; + height: 45px; + width: 900px; + margin-bottom: 20px; + display: flex; + justify-content: space-between; +} + +.delete-btn { + width: 100px; + height: 38px; + cursor: pointer; +} + +.delete-wrapper { + height: 100%; + display: flex; + align-content: center; +} + +mat-icon { + cursor: pointer; +} + +.name-wrapper { + display: flex; + justify-content: center; + align-items: center; + cursor: pointer; + + span { + margin-left: 13px; + font-size: 1.5rem; + } +} + +mat-list { + dsiplay: flex; +} diff --git a/src/app/components/routes/route/route.component.spec.ts b/src/app/components/routes/route/route.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..e7ca7c31b7f2c9fc52b4a130cd8db8c78edaa1ac --- /dev/null +++ b/src/app/components/routes/route/route.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { RouteComponent } from './route.component'; + +describe('RouteComponent', () => { + let component: RouteComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ RouteComponent ] + }) + .compileComponents(); + + fixture = TestBed.createComponent(RouteComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/components/routes/route/route.component.ts b/src/app/components/routes/route/route.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..46f94ad231ded097f7042c736f2326c682fe1e5b --- /dev/null +++ b/src/app/components/routes/route/route.component.ts @@ -0,0 +1,23 @@ +import { Component, Input, OnInit } from '@angular/core'; +import { Router } from '@angular/router'; +import {Route} from "../../../models/route"; +import {RouteService} from "../../../services/route.service"; + +@Component({ + selector: 'app-route', + templateUrl: './route.component.html', + styleUrls: ['./route.component.scss'], +}) +export class RouteComponent implements OnInit { + @Input() route!: Route; + + constructor(private router: Router, private routeService: RouteService) {} + + ngOnInit(): void {} + + deleteRoute(route: Route): void { + this.routeService.deleteRoute(route.id).subscribe(); + // this.routeService.deleteRoute(route); + // this.router.navigateByUrl('/routes'); + } +} diff --git a/src/app/components/routes/routes.component.html b/src/app/components/routes/routes.component.html index a00059ca9fccc0613e4caf1b262e7732f3cf8dd1..972065452009ebb4e4b9897b22eb824bb968a76f 100644 --- a/src/app/components/routes/routes.component.html +++ b/src/app/components/routes/routes.component.html @@ -1,6 +1,8 @@ -

routes works!

-
    -
  • -
    Route: {{ route.routeName }} | Difficulty Level: {{ route.difficultyLevel }}
    -
  • -
+ + + + + + diff --git a/src/app/components/routes/routes.component.scss b/src/app/components/routes/routes.component.scss index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0ec277b6904804a7bef22065cfb96c8d1621a77b 100644 --- a/src/app/components/routes/routes.component.scss +++ b/src/app/components/routes/routes.component.scss @@ -0,0 +1,22 @@ +mat-list * { + display: flex; + align-items: center; + justify-content: center; + margin: 60px auto; +} + +button { + margin: 10px auto; + display: flex; + align-self: center; +} + +.add-route-btn { + font-size: 1.3rem; + display: flex; + justify-content: center; + align-items: center; + width: 200px; + height: 50px; + cursor: pointer; +} diff --git a/src/app/components/routes/routes.component.ts b/src/app/components/routes/routes.component.ts index 6980108472defd3fe58ced9772a895c7a938a5ab..520dc6c2bda6cffc6418b4542fa9536272694589 100644 --- a/src/app/components/routes/routes.component.ts +++ b/src/app/components/routes/routes.component.ts @@ -1,22 +1,26 @@ import { Component, OnInit } from '@angular/core'; -import { Route } from './route' +import { HttpErrorResponse } from '@angular/common/http'; +import {RouteService} from "../../services/route.service"; +import {Route} from "../../models/route"; @Component({ selector: 'app-routes', templateUrl: './routes.component.html', - styleUrls: ['./routes.component.scss'] + styleUrls: ['./routes.component.scss'], }) export class RoutesComponent implements OnInit { - routes : Route[] = [ - {id: 1, routeName: 'höllenaufgang', difficultyLevel: 'hard'}, - {id: 1, routeName: 'himmeltreppe', difficultyLevel: 'easy'}, - {id: 1, routeName: 'funkyWeg', difficultyLevel: 'medium'}, - {id: 1, routeName: 'ff', difficultyLevel: 'hard'}, - ]; - - constructor() { } + routes: Route[] = []; + constructor(private routeService: RouteService) {} ngOnInit(): void { + this.routeService.getRoutes().subscribe( + (result) => { + this.routes = result; + console.log(this.routes); + }, + (error: HttpErrorResponse) => { + alert(error.message); + } + ); } - } diff --git a/src/app/models/route.ts b/src/app/models/route.ts new file mode 100644 index 0000000000000000000000000000000000000000..4f4d8cc5e8dc09520fe2daf289903c3353a0f86c --- /dev/null +++ b/src/app/models/route.ts @@ -0,0 +1,5 @@ +export interface Route { + id?: number; + name: string; + difficultyLevelEnum: string; +} diff --git a/src/app/services/route.service.spec.ts b/src/app/services/route.service.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..521b710d69487cacb0fe160830093ebaaf46e443 --- /dev/null +++ b/src/app/services/route.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { RouteService } from './route.service'; + +describe('RouteService', () => { + let service: RouteService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(RouteService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/services/route.service.ts b/src/app/services/route.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..f715bf980424987378ea372fa94e3b2ae5b10bf2 --- /dev/null +++ b/src/app/services/route.service.ts @@ -0,0 +1,41 @@ +import { Injectable } from '@angular/core'; +import { environment } from '../../environments/environment'; +import { Observable } from 'rxjs'; +import { Route } from '../models/route'; +import { HttpClient } from '@angular/common/http'; + +@Injectable({ + providedIn: 'root', +}) +export class RouteService { + private apiServerUrl = environment.apiServerUrl; + + constructor(private http: HttpClient) {} + + public getRoutes(): Observable { + return this.http.get(`${this.apiServerUrl}/climbingRoutes/all`); + } + + public getRouteById(routeId: number): Observable { + return this.http.get( + `${this.apiServerUrl}/climbingRoute/${routeId}` + ); + } + + public addRoute(route: Route): Observable { + return this.http.post( + `${this.apiServerUrl}/climbingRoute/add`, + route + ); + } + + /*public updateRoute(routeId: number): Observable { + return this.http.put(`${this.apiServerUrl}/climbingRoute/${routeId}`); + }*/ + + public deleteRoute(routeId: number | undefined): Observable { + return this.http.delete( + `${this.apiServerUrl}/climbingRoute/${routeId}` + ); + } +} diff --git a/src/assets/free-climber-young-man-climbing-artificial-boulder-indoors.png b/src/assets/free-climber-young-man-climbing-artificial-boulder-indoors.png new file mode 100644 index 0000000000000000000000000000000000000000..28d56800ee64b2a8f8e91e419d86948c724317ba Binary files /dev/null and b/src/assets/free-climber-young-man-climbing-artificial-boulder-indoors.png differ diff --git a/src/index.html b/src/index.html index 026a8e144559b91b64fedd0ab8c06f76f041a134..bb6b443c75df5496bd94276c0830e33d1a5d0e4e 100644 --- a/src/index.html +++ b/src/index.html @@ -6,8 +6,6 @@ - - diff --git a/src/styles.scss b/src/styles.scss index 24b2054a4787629c2d73c522a74087faeeeaeb66..233abbe5561d4af7ae7215ec43c476994f57aea1 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -2,3 +2,7 @@ html, body { height: 100%; margin: 20px; box-sizing: border-box; font-size: 16px} body { margin: 0; font-family: 'Segoe UI', Roboto, "Helvetica Neue", sans-serif; } + +.active { + background-color: darkred; +} diff --git a/tsconfig.json b/tsconfig.json index ff06eae10c542e0ecce4498ce0caef544483f0af..5b19cbedc8cd6184788e7ecf67e661d0a85bcc01 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,5 +1,6 @@ /* To learn more about this file see: https://angular.io/config/tsconfig. */ { + "strictPropertyInitialization": false, "compileOnSave": false, "compilerOptions": { "baseUrl": "./",