angular / angular/components

bug(MatSlider): MatSliderThumb stays active after drag ending

Open
#29,767 3 comments 4 reactions 0 assignees View on GitHub
area: material/slider P3
Dominant language
TypeScript
Stars
25k
Forks
6.8k
Avg merge
1d 8h
Merged PRs (30d)
91

Description

### Is this a regression?

- [ ] Yes, this behavior used to work in the previous version

### The previous version in which this bug was not present was

_No response_

### Description

When you start dragging slider **MatSliderThumb** became active. Sometimes, it doesn't loose active state, when you ending dragging. It stays active even after click outside. Only way to 'release' it - drag it again.

Within this issue **dragStart** event is fired, but **dragEnd** not. Variable **_isActive** of MatSliderThumb stays true.
That leads to inconsistence of MatSliderThumb view (it looks as active all time) and **makes setting it's value programmatically impossible** (if you are trying to set Value from component).

Bug is not stable but can be easily reproduced at official doc examples.
Mostly occur, when dragging ends little lower than MatSliderThumb position.

https://github.com/user-attachments/assets/77b99e5e-5bb4-4a47-9442-d7a3fbd5e423

### Reproduction

StackBlitz link: https://stackblitz.com/edit/ikftbm?file=src%2Fexample%2Fslider-overview-example.html
Steps to reproduce:
1. Drag slider a little
2. Release on bottom side

### Expected Behavior

dragEnd should be fired each time when user actually ending it.

### Actual Behavior

Sometimes dragEnd event is not fired after actual dragging end.

### Environment

- Angular: 18
- CDK/Material: 18
- Browser(s): Chrome
- Operating System (e.g. Windows, macOS, Ubuntu): MacOS

Contributor guide

Open the contributing guide

Research direction

Start with the MatSliderThumb drag handling demonstrated in the linked StackBlitz example, reproducing the failure by dragging slightly and releasing on the bottom side in Chrome. Trace the dragStart and dragEnd events and the _isActive state during pointer release. Done means dragEnd fires for every completed drag, the thumb no longer remains active, and programmatic value changes work afterward.

Written by the indexing model from the issue text.

Assessment

Tech stack
angular, typescript
Domain
frontend
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.