55 lines
1.2 KiB
TypeScript
55 lines
1.2 KiB
TypeScript
import { ChangeDetectionStrategy, Component, OnInit, OnDestroy } from '@angular/core';
|
|
import { NavbarComponent } from '../../shared/components/navbar/navbar.component';
|
|
import { NgFor } from '@angular/common';
|
|
|
|
@Component({
|
|
selector: 'app-landing-page',
|
|
standalone: true,
|
|
imports: [NavbarComponent, NgFor],
|
|
templateUrl: './landing.component.html',
|
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
})
|
|
export class LandingComponent implements OnInit, OnDestroy {
|
|
currentSlide = 0;
|
|
private autoplayInterval: ReturnType<typeof setInterval> | undefined;
|
|
|
|
ngOnInit() {
|
|
this.startAutoplay();
|
|
}
|
|
|
|
ngOnDestroy() {
|
|
this.stopAutoplay();
|
|
}
|
|
|
|
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();
|
|
}
|
|
}
|