Skip to content

Commit

Permalink
fix(slider): change event is not being emitted (#7278)
Browse files Browse the repository at this point in the history
* In some situations, the change event of the `<mat-slider>` is not being emitted if the user drags the thumb of the slider. This is because the `slidestart` event fires a second time before the sliding ends. This causes the slider to think that there was no value change.

Fixes #7207
  • Loading branch information
devversion authored and andrewseguin committed Sep 29, 2017
1 parent 4122ae2 commit 39543a3
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 1 deletion.
27 changes: 27 additions & 0 deletions src/lib/slider/slider.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,33 @@ describe('MatSlider without forms', () => {
expect(sliderNativeElement.classList).not.toContain('mat-slider-sliding');
});

it('should not change value without emitting a change event', () => {
const onChangeSpy = jasmine.createSpy('slider onChange');

sliderInstance.change.subscribe(onChangeSpy);
sliderInstance.value = 50;
fixture.detectChanges();

dispatchSlideStartEvent(sliderNativeElement, 0, gestureConfig);
fixture.detectChanges();

dispatchSlideEvent(sliderNativeElement, 10, gestureConfig);
fixture.detectChanges();

// In some situations, HammerJS will fire a second "slidestart" event because the user
// holds the thumb and drags it around. This would mean that the `_valueOnSlideStart`
// value will be updated to the actual end value. Causing the slider to think that the value
// didn't change at all.
dispatchSlideStartEvent(sliderNativeElement, 10, gestureConfig);
fixture.detectChanges();

dispatchSlideEndEvent(sliderNativeElement, 10, gestureConfig);
fixture.detectChanges();

expect(sliderNativeElement.classList).not.toContain('mat-slider-sliding');
expect(onChangeSpy).toHaveBeenCalledTimes(1);
});

it('should reset active state upon blur', () => {
sliderInstance._isActive = true;

Expand Down
2 changes: 1 addition & 1 deletion src/lib/slider/slider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -492,7 +492,7 @@ export class MatSlider extends _MatSliderMixinBase
}

_onSlideStart(event: HammerInput | null) {
if (this.disabled) {
if (this.disabled || this._isSliding) {
return;
}

Expand Down

0 comments on commit 39543a3

Please sign in to comment.