This repository has been archived on 2025-06-18. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
casino/frontend/src/app/feature/landing/landing.component.ts
Constantin Simonis 1514f18d58
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / oxlint (pull_request) Successful in 23s
CI / prettier (pull_request) Successful in 27s
CI / eslint (pull_request) Successful in 31s
CI / Docker frontend validation (pull_request) Successful in 49s
CI / test-build (pull_request) Successful in 38s
refactor: update import paths for component files
2025-05-21 12:05:09 +02:00

105 lines
2.7 KiB
TypeScript

import {
ChangeDetectionStrategy,
Component,
inject,
OnDestroy,
OnInit,
signal,
} from '@angular/core';
import { NgFor } from '@angular/common';
import { ActivatedRoute, RouterLink } from '@angular/router';
import { AuthService } from '@service/auth.service';
import { LoginComponent } from '../auth/login/login.component';
import { RegisterComponent } from '../auth/register/register.component';
import '../auth/recover-password/recover-password.component';
import RecoverPasswordComponent from '../auth/recover-password/recover-password.component';
@Component({
selector: 'app-landing-page',
standalone: true,
imports: [NgFor, RouterLink, LoginComponent, RegisterComponent, RecoverPasswordComponent],
templateUrl: './landing.component.html',
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class LandingComponent implements OnInit, OnDestroy {
currentSlide = 0;
private autoplayInterval: ReturnType<typeof setInterval> | undefined;
authService: AuthService = inject(AuthService);
route: ActivatedRoute = inject(ActivatedRoute);
showLogin = signal(false);
showRegister = signal(false);
showRecoverPassword = signal(false);
ngOnInit() {
this.startAutoplay();
document.body.style.overflow = 'auto';
if (this.route.snapshot.queryParamMap.get('login') === 'true') {
this.showLoginForm();
}
}
ngOnDestroy() {
this.stopAutoplay();
document.body.style.overflow = 'auto';
}
showLoginForm() {
this.showLogin.set(true);
this.showRegister.set(false);
this.showRecoverPassword.set(false);
document.body.style.overflow = 'hidden';
}
showRegisterForm() {
this.showRegister.set(true);
this.showLogin.set(false);
this.showRecoverPassword.set(false);
document.body.style.overflow = 'hidden';
}
showRecoverPasswordForm() {
this.showRecoverPassword.set(true);
this.showLogin.set(false);
this.showRegister.set(false);
document.body.style.overflow = 'hidden';
}
hideAuthForms() {
this.showLogin.set(false);
this.showRegister.set(false);
this.showRecoverPassword.set(false);
document.body.style.overflow = 'auto';
}
prevSlide() {
this.currentSlide = this.currentSlide === 0 ? 1 : 0;
this.resetAutoplay();
}
nextSlide() {
this.currentSlide = this.currentSlide === 1 ? 0 : 1;
this.resetAutoplay();
}
goToSlide(index: number) {
this.currentSlide = index;
this.resetAutoplay();
}
private startAutoplay() {
this.autoplayInterval = setInterval(() => {
this.nextSlide();
}, 5000);
}
private stopAutoplay() {
if (this.autoplayInterval) {
clearInterval(this.autoplayInterval);
}
}
private resetAutoplay() {
this.stopAutoplay();
this.startAutoplay();
}
}