44 Input ,
55 Output ,
66 EventEmitter ,
7- HostListener ,
87 ElementRef ,
9- HostBinding
8+ HostBinding ,
9+ HostListener
1010} from '@angular/core'
1111import {
1212 UtilitiesService
@@ -28,7 +28,7 @@ export interface FlatSliderValueChangedEvent {
2828export class FlatSliderComponent {
2929 constructor (
3030 public utils : UtilitiesService ,
31- public elem : ElementRef ,
31+ public elem : ElementRef < HTMLElement > ,
3232 public sanitizer : DomSanitizer
3333 ) { }
3434
@@ -47,6 +47,7 @@ export class FlatSliderComponent {
4747 @Input ( ) notches : number [ ]
4848 @Input ( ) thumbRadius = 4
4949 @Input ( ) thumbBorderSize = 1
50+ @Input ( ) wheelAnimationFPS = 30
5051
5152 @Output ( ) stickedToMiddle = new EventEmitter ( )
5253 @ViewChild ( 'container' , { static : true } ) containerRef ! : ElementRef
@@ -141,10 +142,14 @@ export class FlatSliderComponent {
141142 return value
142143 }
143144
145+ private lastWheelEvent = new Date ( ) . getTime ( )
146+ private get wheelDebouncer ( ) { return 1000 / this . wheelAnimationFPS }
144147 @HostListener ( 'mousewheel' , [ '$event' ] )
145148 mouseWheel ( event : WheelEvent ) {
146149 if ( this . enabled && this . scrollEnabled ) {
147- // const multiplier = (this.max - this.min) / 1000
150+ const now = new Date ( ) . getTime ( )
151+ if ( now - this . lastWheelEvent < this . wheelDebouncer ) return
152+ this . lastWheelEvent = now
148153 let progress = this . progress
149154 progress += - event . deltaY / 1000
150155 if ( progress < 0 ) progress = 0
@@ -187,7 +192,6 @@ export class FlatSliderComponent {
187192 return value
188193 }
189194
190- @HostListener ( 'mousedown' , [ '$event' ] )
191195 mousedown ( event : MouseEvent ) {
192196 if ( this . enabled ) {
193197 this . dragging = true
@@ -196,7 +200,6 @@ export class FlatSliderComponent {
196200 }
197201 }
198202
199- @HostListener ( 'mousemove' , [ '$event' ] )
200203 mousemove ( event : MouseEvent ) {
201204 if ( this . enabled && this . dragging ) {
202205 this . value = this . getValueFromMouseEvent ( event )
@@ -205,13 +208,11 @@ export class FlatSliderComponent {
205208 }
206209
207210 public mouseInside = false
208- @HostListener ( 'mouseenter' )
209- onMouseEnter ( ) : void {
211+ mouseenter ( ) : void {
210212 this . mouseInside = true
211213 }
212214
213- @HostListener ( 'mouseleave' )
214- onMouseLeave ( ) : void {
215+ mouseleave ( ) : void {
215216 this . mouseInside = false
216217 this . dragging = false
217218 }
@@ -246,11 +247,6 @@ export class FlatSliderComponent {
246247 }
247248 }
248249
249- @HostListener ( 'mouseup' , [ '$event' ] )
250- onMouseUp ( event : MouseEvent ) {
251- this . dragging = false
252- }
253-
254250 mouseup ( event : MouseEvent ) {
255251 this . dragging = false
256252 }
0 commit comments