Skip to content

Commit 57ccf86

Browse files
committed
fix slider interval animation
1 parent fc2cf6c commit 57ccf86

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

projects/slider/src/lib/slider.component.ts

+13-4
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,7 @@ export class SliderComponent implements AfterViewInit, OnDestroy {
4747
this.slidesNumber = this.slides.length;
4848
this.timeBySlide = (!this.option.timeBySlide || (this.option.timeBySlide < 2000)) ? 5000 : this.option.timeBySlide;
4949
this.sliderContainerElement = this.sliderSection.nativeElement as HTMLElement;
50-
this.movementInterval = window.setInterval(() => {
51-
const newPos = (this.currentSlidePos === this.slidesNumber) ? 1 : this.currentSlidePos + 1;
52-
this.setSlideWidthAnimation(newPos);
53-
}, this.timeBySlide);
50+
this.createSliderInterval();
5451
}
5552

5653
ngOnDestroy(): void {
@@ -86,6 +83,7 @@ export class SliderComponent implements AfterViewInit, OnDestroy {
8683
bulletSetSlide(slideEnd: number) {
8784
if (!this.isOnAnimation) {
8885
this.setSlideWidthAnimation(slideEnd);
86+
this.createSliderInterval();
8987
}
9088
}
9189

@@ -103,6 +101,7 @@ export class SliderComponent implements AfterViewInit, OnDestroy {
103101
this.isDragEvent = true;
104102
this.isDragging = true;
105103
this.posSlider.posInitX = e.clientX;
104+
clearInterval(this.movementInterval);
106105
}
107106

108107
@HostListener('mousemove', ['$event']) mouseMove(e: MouseEvent) {
@@ -124,6 +123,7 @@ export class SliderComponent implements AfterViewInit, OnDestroy {
124123
this.isDragging = false;
125124
this.posSlider.posEndX = e.clientX;
126125
this.move();
126+
this.createSliderInterval();
127127
}
128128

129129

@@ -137,6 +137,7 @@ export class SliderComponent implements AfterViewInit, OnDestroy {
137137
this.isDragging = true;
138138
this.posSlider.posInitX = e.touches[0].clientX;
139139
this.posSlider.scrollInit = this.sliderContainerElement.scrollLeft;
140+
clearInterval(this.movementInterval);
140141
}
141142

142143
@HostListener('touchmove', ['$event']) onTouchMove(e) {
@@ -160,6 +161,7 @@ export class SliderComponent implements AfterViewInit, OnDestroy {
160161
}
161162
this.isDragging = false;
162163
this.move();
164+
this.createSliderInterval();
163165
}
164166

165167
private move() {
@@ -208,4 +210,11 @@ export class SliderComponent implements AfterViewInit, OnDestroy {
208210
return c * Math.sin(t / d * (Math.PI / 2)) + b;
209211
}
210212

213+
private createSliderInterval() {
214+
clearInterval(this.movementInterval);
215+
this.movementInterval = window.setInterval(() => {
216+
const newPos = (this.currentSlidePos === this.slidesNumber) ? 1 : this.currentSlidePos + 1;
217+
this.setSlideWidthAnimation(newPos);
218+
}, this.timeBySlide);
219+
}
211220
}

0 commit comments

Comments
 (0)