Compare commits

..

2 Commits

Author SHA1 Message Date
d0c485c0e9
WIP: Responsive header menu 2 2022-09-08 16:10:05 +02:00
0c10e46d1a
WIP: Responsive header menu 2022-09-08 15:01:02 +02:00
7 changed files with 52 additions and 7 deletions

View File

@ -12,6 +12,5 @@ export class AppComponent {
user?: Player; user?: Player;
ngOnInit() { ngOnInit() {
// Load player data
} }
} }

View File

@ -1,8 +1,18 @@
<div id="header"> <div id="header">
<p id="header-title">Doppelkopf-Stats</p> <p id="header-title">Doppelkopf-Stats</p>
<span id="menu">
<div id="menu-desktop">
<div>Home</div>
<div>Game night</div>
<div>Stats</div>
</div>
<div id="menu-mobile">
<div>Open</div>
</div>
</span>
<span id="user-info"> <span id="user-info">
<p>{{getUserName()}}</p> <p>{{getUserName()}}</p>
<img src="assets/images/user.png" alt="User Icon" (click)="openProfile()"> <img src="assets/images/user.png" alt="User Icon" (click)="openProfile()">
</span> </span>
<app-profile (showProfilePopoverChange)="closeProfile()" *ngIf="showProfilePopover" [user]="this.user"></app-profile> <app-profile (showProfilePopOverChange)="closeProfile()" *ngIf="showProfilePopOver" [user]="this.user"></app-profile>
</div> </div>

View File

@ -34,3 +34,33 @@
#user-info img:hover { #user-info img:hover {
cursor: pointer; cursor: pointer;
} }
@media (min-width: 768px) {
#menu-mobile {
display: none;
}
#menu-desktop {
display: inherit;
}
}
@media(max-width: 767px) {
#menu-desktop {
display: none;
}
#menu-mobile {
display: inherit;
}
}
#menu {
display: flex;
justify-content: center;
max-width: 100%;
height: 100%;
align-items: center;
}
#menu div div {
padding-left: 2em;
padding-right: 2em;
}

View File

@ -9,7 +9,7 @@ import {StorageService} from '../../services/storage.service';
}) })
export class HeaderComponent implements OnInit { export class HeaderComponent implements OnInit {
showProfilePopover: boolean = false; showProfilePopOver: boolean = false;
user?: User; user?: User;
constructor() { constructor() {
@ -20,11 +20,11 @@ export class HeaderComponent implements OnInit {
} }
openProfile(): void { openProfile(): void {
this.showProfilePopover = true; this.showProfilePopOver = true;
} }
closeProfile(): void { closeProfile(): void {
this.showProfilePopover = false; this.showProfilePopOver = false;
} }
getUserName(): string { getUserName(): string {

View File

@ -10,7 +10,7 @@ export class ProfileComponent implements OnInit {
initialClick = true; initialClick = true;
@Input() user?: User; @Input() user?: User;
@Output() showProfilePopoverChange = new EventEmitter<boolean>(); @Output() showProfilePopOverChange = new EventEmitter<boolean>();
constructor(private eRef: ElementRef) { constructor(private eRef: ElementRef) {
} }
@ -31,7 +31,7 @@ export class ProfileComponent implements OnInit {
} }
if (!this.eRef.nativeElement.contains(event.target)) { if (!this.eRef.nativeElement.contains(event.target)) {
this.showProfilePopoverChange.emit(false); this.showProfilePopOverChange.emit(false);
} }
} }

View File

@ -1,10 +1,12 @@
import {Game} from './game'; import {Game} from './game';
import {Player} from './player'; import {Player} from './player';
import {GameRules} from './gamerules';
export interface GameNight { export interface GameNight {
gameNightId: number; gameNightId: number;
date: Date; date: Date;
players: Player[]; // We need players here and in the game because maybe we have 5 players for a game night and players: Player[]; // We need players here and in the game because maybe we have 5 players for a game night and
// they switch every game // they switch every game
rules: GameRules;
games: Game[]; games: Game[];
} }

View File

@ -0,0 +1,4 @@
export interface GameRules {
mandatoryAnnouncement: boolean;
}