Skip to content

Commit 0b5b6f2

Browse files
devversionjelbourn
authored andcommitted
fix(slide-toggle): emit change event after drag end (#1405)
1 parent ec48b34 commit 0b5b6f2

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

src/lib/slide-toggle/slide-toggle.spec.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -486,6 +486,27 @@ describe('MdSlideToggle', () => {
486486
expect(slideThumbContainer.classList).not.toContain('md-dragging');
487487
}));
488488

489+
it('should should emit a change event after drag', fakeAsync(() => {
490+
expect(slideToggle.checked).toBe(false);
491+
492+
gestureConfig.emitEventForElement('slidestart', slideThumbContainer);
493+
494+
expect(slideThumbContainer.classList).toContain('md-dragging');
495+
496+
gestureConfig.emitEventForElement('slide', slideThumbContainer, {
497+
deltaX: 200 // Arbitrary, large delta that will be clamped to the end of the slide-toggle.
498+
});
499+
500+
gestureConfig.emitEventForElement('slideend', slideThumbContainer);
501+
502+
// Flush the timeout for the slide ending.
503+
tick();
504+
505+
expect(slideToggle.checked).toBe(true);
506+
expect(slideThumbContainer.classList).not.toContain('md-dragging');
507+
expect(testComponent.lastEvent.checked).toBe(true);
508+
}));
509+
489510
});
490511

491512
});

src/lib/slide-toggle/slide-toggle.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,7 @@ export class MdSlideToggle implements AfterContentInit, ControlValueAccessor {
237237
// because otherwise the click event will be fired and will reset the new checked variable.
238238
setTimeout(() => {
239239
this.checked = this._slideRenderer.stopThumbDrag();
240+
this._emitChangeEvent();
240241
}, 0);
241242
}
242243

0 commit comments

Comments
 (0)