@@ -326,10 +326,10 @@ export class MatSlider extends _MatSliderBase
326
326
private _percent : number = 0 ;
327
327
328
328
/**
329
- * Whether or not the thumb is sliding.
329
+ * Whether or not the thumb is sliding and what the user is using to slide it with .
330
330
* Used to determine if there should be a transition for the thumb and fill track.
331
331
*/
332
- _isSliding : boolean = false ;
332
+ _isSliding : 'keyboard' | 'pointer' | null = null ;
333
333
334
334
/**
335
335
* Whether or not the slider is active (clicked or sliding).
@@ -569,7 +569,8 @@ export class MatSlider extends _MatSliderBase
569
569
}
570
570
571
571
_onKeydown ( event : KeyboardEvent ) {
572
- if ( this . disabled || hasModifierKey ( event ) ) {
572
+ if ( this . disabled || hasModifierKey ( event ) ||
573
+ ( this . _isSliding && this . _isSliding !== 'keyboard' ) ) {
573
574
return ;
574
575
}
575
576
@@ -619,12 +620,14 @@ export class MatSlider extends _MatSliderBase
619
620
this . _emitChangeEvent ( ) ;
620
621
}
621
622
622
- this . _isSliding = true ;
623
+ this . _isSliding = 'keyboard' ;
623
624
event . preventDefault ( ) ;
624
625
}
625
626
626
627
_onKeyup ( ) {
627
- this . _isSliding = false ;
628
+ if ( this . _isSliding === 'keyboard' ) {
629
+ this . _isSliding = null ;
630
+ }
628
631
}
629
632
630
633
/** Called when the user has put their pointer down on the slider. */
@@ -642,7 +645,7 @@ export class MatSlider extends _MatSliderBase
642
645
643
646
if ( pointerPosition ) {
644
647
const oldValue = this . value ;
645
- this . _isSliding = true ;
648
+ this . _isSliding = 'pointer' ;
646
649
this . _lastPointerEvent = event ;
647
650
event . preventDefault ( ) ;
648
651
this . _focusHostElement ( ) ;
@@ -665,7 +668,7 @@ export class MatSlider extends _MatSliderBase
665
668
* starting to drag. Bound on the document level.
666
669
*/
667
670
private _pointerMove = ( event : TouchEvent | MouseEvent ) => {
668
- if ( this . _isSliding ) {
671
+ if ( this . _isSliding === 'pointer' ) {
669
672
const pointerPosition = getPointerPositionOnPage ( event , this . _touchId ) ;
670
673
671
674
if ( pointerPosition ) {
@@ -685,14 +688,14 @@ export class MatSlider extends _MatSliderBase
685
688
686
689
/** Called when the user has lifted their pointer. Bound on the document level. */
687
690
private _pointerUp = ( event : TouchEvent | MouseEvent ) => {
688
- if ( this . _isSliding ) {
691
+ if ( this . _isSliding === 'pointer' ) {
689
692
if ( ! isTouchEvent ( event ) || typeof this . _touchId !== 'number' ||
690
693
// Note that we use `changedTouches`, rather than `touches` because it
691
694
// seems like in most cases `touches` is empty for `touchend` events.
692
695
findMatchingTouch ( event . changedTouches , this . _touchId ) ) {
693
696
event . preventDefault ( ) ;
694
697
this . _removeGlobalEvents ( ) ;
695
- this . _isSliding = false ;
698
+ this . _isSliding = null ;
696
699
this . _touchId = undefined ;
697
700
698
701
if ( this . _valueOnSlideStart != this . value && ! this . disabled ) {
0 commit comments