@@ -367,6 +367,27 @@ describe('MdSlideToggle', () => {
367
367
expect ( slideToggleElement . classList ) . toContain ( 'mat-slide-toggle-label-before' ) ;
368
368
} ) ;
369
369
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
+
370
391
} ) ;
371
392
372
393
describe ( 'custom template' , ( ) => {
@@ -620,6 +641,7 @@ function dispatchFocusChangeEvent(eventName: string, element: HTMLElement): void
620
641
[aria-labelledby]="slideLabelledBy"
621
642
[tabIndex]="slideTabindex"
622
643
[labelPosition]="labelPosition"
644
+ [disableRipple]="disableRipple"
623
645
(change)="onSlideChange($event)"
624
646
(click)="onSlideClick($event)">
625
647
@@ -630,6 +652,7 @@ function dispatchFocusChangeEvent(eventName: string, element: HTMLElement): void
630
652
class SlideToggleTestApp {
631
653
isDisabled : boolean = false ;
632
654
isRequired : boolean = false ;
655
+ disableRipple : boolean = false ;
633
656
slideModel : boolean = false ;
634
657
slideChecked : boolean = false ;
635
658
slideColor : string ;
@@ -671,3 +694,10 @@ class SlideToggleFormsTestApp {
671
694
class SlideToggleWithFormControl {
672
695
formControl = new FormControl ( ) ;
673
696
}
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