@@ -4,6 +4,7 @@ import {Component, DebugElement} from '@angular/core';
44import { By , HAMMER_GESTURE_CONFIG } from '@angular/platform-browser' ;
55import { MdSlider , MdSliderModule } from './slider' ;
66import { TestGestureConfig } from './test-gesture-config' ;
7+ import { RtlModule } from '../core/rtl/dir' ;
78import {
89 UP_ARROW ,
910 RIGHT_ARROW ,
@@ -20,7 +21,7 @@ describe('MdSlider', () => {
2021
2122 beforeEach ( async ( ( ) => {
2223 TestBed . configureTestingModule ( {
23- imports : [ MdSliderModule . forRoot ( ) , ReactiveFormsModule ] ,
24+ imports : [ MdSliderModule . forRoot ( ) , RtlModule . forRoot ( ) , ReactiveFormsModule ] ,
2425 declarations : [
2526 StandardSlider ,
2627 DisabledSlider ,
@@ -35,6 +36,7 @@ describe('MdSlider', () => {
3536 SliderWithValueSmallerThanMin ,
3637 SliderWithValueGreaterThanMax ,
3738 SliderWithChangeHandler ,
39+ SliderWithDirAndInvert ,
3840 ] ,
3941 providers : [
4042 { provide : HAMMER_GESTURE_CONFIG , useFactory : ( ) => {
@@ -838,6 +840,57 @@ describe('MdSlider', () => {
838840 expect ( sliderInstance . value ) . toBe ( 0 ) ;
839841 } ) ;
840842 } ) ;
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+ } ) ;
841894} ) ;
842895
843896// Disable animations and make the slider an even 100px (+ 8px padding on either side)
@@ -934,6 +987,15 @@ class SliderWithChangeHandler {
934987 onChange ( ) { }
935988}
936989
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+
937999/**
9381000 * Dispatches a click event sequence (consisting of moueseenter, click) from an element.
9391001 * Note: The mouse event truncates the position for the click.
0 commit comments