@@ -4,6 +4,7 @@ import {Component, DebugElement} from '@angular/core';
4
4
import { By , HAMMER_GESTURE_CONFIG } from '@angular/platform-browser' ;
5
5
import { MdSlider , MdSliderModule } from './slider' ;
6
6
import { TestGestureConfig } from './test-gesture-config' ;
7
+ import { RtlModule } from '../core/rtl/dir' ;
7
8
import {
8
9
UP_ARROW ,
9
10
RIGHT_ARROW ,
@@ -20,7 +21,7 @@ describe('MdSlider', () => {
20
21
21
22
beforeEach ( async ( ( ) => {
22
23
TestBed . configureTestingModule ( {
23
- imports : [ MdSliderModule . forRoot ( ) , ReactiveFormsModule ] ,
24
+ imports : [ MdSliderModule . forRoot ( ) , RtlModule . forRoot ( ) , ReactiveFormsModule ] ,
24
25
declarations : [
25
26
StandardSlider ,
26
27
DisabledSlider ,
@@ -35,6 +36,7 @@ describe('MdSlider', () => {
35
36
SliderWithValueSmallerThanMin ,
36
37
SliderWithValueGreaterThanMax ,
37
38
SliderWithChangeHandler ,
39
+ SliderWithDirAndInvert ,
38
40
] ,
39
41
providers : [
40
42
{ provide : HAMMER_GESTURE_CONFIG , useFactory : ( ) => {
@@ -838,6 +840,57 @@ describe('MdSlider', () => {
838
840
expect ( sliderInstance . value ) . toBe ( 0 ) ;
839
841
} ) ;
840
842
} ) ;
843
+
844
+ describe ( 'slider with direction and invert' , ( ) => {
845
+ let fixture : ComponentFixture < SliderWithDirAndInvert > ;
846
+ let sliderDebugElement : DebugElement ;
847
+ let sliderNativeElement : HTMLElement ;
848
+ let sliderTrackElement : HTMLElement ;
849
+ let sliderInstance : MdSlider ;
850
+ let testComponent : SliderWithDirAndInvert ;
851
+
852
+ beforeEach ( ( ) => {
853
+ fixture = TestBed . createComponent ( SliderWithDirAndInvert ) ;
854
+ fixture . detectChanges ( ) ;
855
+
856
+ testComponent = fixture . debugElement . componentInstance ;
857
+ sliderDebugElement = fixture . debugElement . query ( By . directive ( MdSlider ) ) ;
858
+ sliderInstance = sliderDebugElement . injector . get ( MdSlider ) ;
859
+ sliderNativeElement = sliderDebugElement . nativeElement ;
860
+ sliderTrackElement = < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-track' ) ;
861
+ } ) ;
862
+
863
+ it ( 'works in inverted mode' , ( ) => {
864
+ testComponent . invert = true ;
865
+ fixture . detectChanges ( ) ;
866
+
867
+ dispatchClickEventSequence ( sliderNativeElement , 0.3 ) ;
868
+ fixture . detectChanges ( ) ;
869
+
870
+ expect ( sliderInstance . value ) . toBe ( 70 ) ;
871
+ } ) ;
872
+
873
+ it ( 'works in RTL languages' , ( ) => {
874
+ testComponent . dir = 'rtl' ;
875
+ fixture . detectChanges ( ) ;
876
+
877
+ dispatchClickEventSequence ( sliderNativeElement , 0.3 ) ;
878
+ fixture . detectChanges ( ) ;
879
+
880
+ expect ( sliderInstance . value ) . toBe ( 70 ) ;
881
+ } ) ;
882
+
883
+ it ( 'works in RTL languages in inverted mode' , ( ) => {
884
+ testComponent . dir = 'rtl' ;
885
+ testComponent . invert = true ;
886
+ fixture . detectChanges ( ) ;
887
+
888
+ dispatchClickEventSequence ( sliderNativeElement , 0.3 ) ;
889
+ fixture . detectChanges ( ) ;
890
+
891
+ expect ( sliderInstance . value ) . toBe ( 30 ) ;
892
+ } ) ;
893
+ } ) ;
841
894
} ) ;
842
895
843
896
// Disable animations and make the slider an even 100px (+ 8px padding on either side)
@@ -934,6 +987,15 @@ class SliderWithChangeHandler {
934
987
onChange ( ) { }
935
988
}
936
989
990
+ @Component ( {
991
+ template : `<div [dir]="dir"><md-slider [invert]="invert"></md-slider></div>` ,
992
+ styles : [ styles ] ,
993
+ } )
994
+ class SliderWithDirAndInvert {
995
+ dir = 'ltr' ;
996
+ invert = false ;
997
+ }
998
+
937
999
/**
938
1000
* Dispatches a click event sequence (consisting of moueseenter, click) from an element.
939
1001
* Note: The mouse event truncates the position for the click.
0 commit comments