Skip to content

Commit 75f30fd

Browse files
authored
fix(material-experimental/mdc-slider): use passive event listeners (#24675)
1 parent 79b2337 commit 75f30fd

File tree

1 file changed

+24
-5
lines changed
  • src/material-experimental/mdc-slider

1 file changed

+24
-5
lines changed

src/material-experimental/mdc-slider/slider.ts

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import {
1313
coerceNumberProperty,
1414
NumberInput,
1515
} from '@angular/cdk/coercion';
16-
import {Platform} from '@angular/cdk/platform';
16+
import {Platform, normalizePassiveListenerOptions} from '@angular/cdk/platform';
1717
import {DOCUMENT} from '@angular/common';
1818
import {
1919
AfterViewInit,
@@ -55,6 +55,9 @@ import {MDCSliderAdapter, MDCSliderFoundation, Thumb, TickMark} from '@material/
5555
import {Subscription} from 'rxjs';
5656
import {GlobalChangeAndInputListener} from './global-change-and-input-listener';
5757

58+
/** Options used to bind passive event listeners. */
59+
const passiveEventListenerOptions = normalizePassiveListenerOptions({passive: true});
60+
5861
/** Represents a drag event emitted by the MatSlider component. */
5962
export interface MatSliderDragEvent {
6063
/** The MatSliderThumb that was interacted with. */
@@ -778,20 +781,36 @@ export class MatSlider
778781
// would prefer to use "mousedown" as the default, for some reason it does not work (the
779782
// callback is never triggered).
780783
if (this._SUPPORTS_POINTER_EVENTS) {
781-
this._elementRef.nativeElement.addEventListener('pointerdown', this._layout);
784+
this._elementRef.nativeElement.addEventListener(
785+
'pointerdown',
786+
this._layout,
787+
passiveEventListenerOptions,
788+
);
782789
} else {
783790
this._elementRef.nativeElement.addEventListener('mouseenter', this._layout);
784-
this._elementRef.nativeElement.addEventListener('touchstart', this._layout);
791+
this._elementRef.nativeElement.addEventListener(
792+
'touchstart',
793+
this._layout,
794+
passiveEventListenerOptions,
795+
);
785796
}
786797
}
787798

788799
/** Removes the event listener that keeps sync the slider UI and the foundation in sync. */
789800
_removeUISyncEventListener(): void {
790801
if (this._SUPPORTS_POINTER_EVENTS) {
791-
this._elementRef.nativeElement.removeEventListener('pointerdown', this._layout);
802+
this._elementRef.nativeElement.removeEventListener(
803+
'pointerdown',
804+
this._layout,
805+
passiveEventListenerOptions,
806+
);
792807
} else {
793808
this._elementRef.nativeElement.removeEventListener('mouseenter', this._layout);
794-
this._elementRef.nativeElement.removeEventListener('touchstart', this._layout);
809+
this._elementRef.nativeElement.removeEventListener(
810+
'touchstart',
811+
this._layout,
812+
passiveEventListenerOptions,
813+
);
795814
}
796815
}
797816

0 commit comments

Comments
 (0)