Skip to content

Commit 9ca5684

Browse files
committed
fix(timepicker): allowing better scroll on touchpads #6292
1 parent 22f33f1 commit 9ca5684

File tree

1 file changed

+25
-6
lines changed

1 file changed

+25
-6
lines changed

projects/igniteui-angular/src/lib/time-picker/time-picker.directives.ts

+25-6
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,14 @@ export class IgxItemListDirective implements OnInit, OnDestroy {
3434

3535
public isActive: boolean;
3636

37+
private readonly SCROLL_THRESHOLD = 15;
38+
private readonly PAN_THRESHOLD = 10;
39+
40+
/**
41+
* accumulates wheel scrolls and triggers a change action above SCROLL_THRESHOLD
42+
*/
43+
private scrollAccumulator = 0;
44+
3745
constructor(
3846
@Inject(IGX_TIME_PICKER_COMPONENT) public timePicker: IgxTimePickerBase,
3947
private elementRef: ElementRef,
@@ -170,24 +178,35 @@ export class IgxItemListDirective implements OnInit, OnDestroy {
170178
event.preventDefault();
171179
event.stopPropagation();
172180

173-
const delta = event.deltaY;
174-
if (delta !== 0) {
175-
this.nextItem(delta);
181+
this.scrollAccumulator += event.deltaY;
182+
if (Math.abs(this.scrollAccumulator) > this.SCROLL_THRESHOLD) {
183+
this.nextItem(this.scrollAccumulator);
184+
this.scrollAccumulator = 0;
176185
}
177186
}
178187

179188
/**
180189
* @hidden @internal
181190
*/
182191
public ngOnInit() {
183-
const hammerOptions: HammerOptions = { recognizers: [[HammerGesturesManager.Hammer?.Pan, { direction: HammerGesturesManager.Hammer?.DIRECTION_VERTICAL, threshold: 10 }]] };
192+
const hammerOptions: HammerOptions = {
193+
recognizers: [
194+
[
195+
HammerGesturesManager.Hammer?.Pan,
196+
{
197+
direction: HammerGesturesManager.Hammer?.DIRECTION_VERTICAL,
198+
threshold: this.PAN_THRESHOLD
199+
}
200+
]
201+
]
202+
};
184203
this.touchManager.addEventListener(this.elementRef.nativeElement, 'pan', this.onPanMove, hammerOptions);
185204
}
186205

187206
/**
188207
* @hidden @internal
189208
*/
190-
public ngOnDestroy() {
209+
public ngOnDestroy() {
191210
this.touchManager.destroy();
192211
}
193212

@@ -355,7 +374,7 @@ export class IgxTimeItemDirective {
355374
private getHourPart(date: Date): string {
356375
const inputDateParts = DateTimeUtil.parseDateTimeFormat(this.timePicker.appliedFormat);
357376
const hourPart = inputDateParts.find(element => element.type === 'hours');
358-
const ampmPart = inputDateParts.find(element =>element.format.indexOf('a') !== -1 || element.format === 'tt');
377+
const ampmPart = inputDateParts.find(element => element.format.indexOf('a') !== -1 || element.format === 'tt');
359378
const hour = DateTimeUtil.getPartValue(date, hourPart, hourPart.format.length);
360379
if (ampmPart) {
361380
const ampm = DateTimeUtil.getPartValue(date, ampmPart, ampmPart.format.length);

0 commit comments

Comments
 (0)