@@ -367,6 +367,27 @@ describe('MdSlideToggle', () => {
367367 expect ( slideToggleElement . classList ) . toContain ( 'mat-slide-toggle-label-before' ) ;
368368 } ) ;
369369
370+ it ( 'should show ripples on label mousedown' , ( ) => {
371+ expect ( slideToggleElement . querySelectorAll ( '.mat-ripple-element' ) . length ) . toBe ( 0 ) ;
372+
373+ dispatchFakeEvent ( labelElement , 'mousedown' ) ;
374+ dispatchFakeEvent ( labelElement , 'mouseup' ) ;
375+
376+ expect ( slideToggleElement . querySelectorAll ( '.mat-ripple-element' ) . length ) . toBe ( 1 ) ;
377+ } ) ;
378+
379+ it ( 'should not show ripples when disableRipple is set' , ( ) => {
380+ testComponent . disableRipple = true ;
381+ fixture . detectChanges ( ) ;
382+
383+ expect ( slideToggleElement . querySelectorAll ( '.mat-ripple-element' ) . length ) . toBe ( 0 ) ;
384+
385+ dispatchFakeEvent ( labelElement , 'mousedown' ) ;
386+ dispatchFakeEvent ( labelElement , 'mouseup' ) ;
387+
388+ expect ( slideToggleElement . querySelectorAll ( '.mat-ripple-element' ) . length ) . toBe ( 0 ) ;
389+ } ) ;
390+
370391 } ) ;
371392
372393 describe ( 'custom template' , ( ) => {
@@ -620,6 +641,7 @@ function dispatchFocusChangeEvent(eventName: string, element: HTMLElement): void
620641 [aria-labelledby]="slideLabelledBy"
621642 [tabIndex]="slideTabindex"
622643 [labelPosition]="labelPosition"
644+ [disableRipple]="disableRipple"
623645 (change)="onSlideChange($event)"
624646 (click)="onSlideClick($event)">
625647
@@ -630,6 +652,7 @@ function dispatchFocusChangeEvent(eventName: string, element: HTMLElement): void
630652class SlideToggleTestApp {
631653 isDisabled : boolean = false ;
632654 isRequired : boolean = false ;
655+ disableRipple : boolean = false ;
633656 slideModel : boolean = false ;
634657 slideChecked : boolean = false ;
635658 slideColor : string ;
@@ -671,3 +694,10 @@ class SlideToggleFormsTestApp {
671694class SlideToggleWithFormControl {
672695 formControl = new FormControl ( ) ;
673696}
697+
698+ // TODO(devversion): replace with global utility once pull request #2943 is merged.
699+ function dispatchFakeEvent ( element : HTMLElement , eventName : string ) : void {
700+ let event = document . createEvent ( 'Event' ) ;
701+ event . initEvent ( eventName , true , true ) ;
702+ element . dispatchEvent ( event ) ;
703+ }
0 commit comments