angular / angular/components

bug(MatSlider): MatSliderThumb stays active after drag ending

Offen
#29,767 3 Kommentare 4 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
area: material/slider P3
Vorherrschende Sprache
TypeScript
Sterne
25k
Forks
6.8k
Ø Merge
1 T. 8 Std.
Gemergte PRs (30 T.)
91

Beschreibung

### 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

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne mit der in der verknüpften StackBlitz-Beispiel gezeigten Drag-Behandlung von MatSliderThumb und reproduziere den Fehler, indem du in Chrome leicht ziehst und auf der Unterseite loslässt. Verfolge die dragStart- und dragEnd-Ereignisse sowie den _isActive-Zustand während des Loslassens des Zeigers. Fertig ist die Aufgabe, wenn dragEnd für jeden abgeschlossenen Drag ausgelöst wird, der Thumb nicht länger aktiv bleibt und programmatische Wertänderungen anschließend funktionieren.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
angular, typescript
Bereich
frontend
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Ruhig
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
48/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.