Skip to content

Commit 4ed80d9

Browse files
committed
fix(slide-toggle): emit change event after drag end
* Emits a change event after the drag completed. Fixes #1390.
1 parent 927f2b1 commit 4ed80d9

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 // Use a random number which will be clamped.
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)