@@ -251,18 +251,23 @@ describe('MdSlider', () => {
251
251
let sliderDimensions : ClientRect ;
252
252
let trackFillElement : HTMLElement ;
253
253
let thumbElement : HTMLElement ;
254
+ let tickContainerElement : HTMLElement ;
255
+ let testComponent : SliderWithMinAndMax ;
254
256
255
257
beforeEach ( ( ) => {
256
258
fixture = TestBed . createComponent ( SliderWithMinAndMax ) ;
257
259
fixture . detectChanges ( ) ;
258
260
259
261
sliderDebugElement = fixture . debugElement . query ( By . directive ( MdSlider ) ) ;
262
+ testComponent = fixture . debugElement . componentInstance ;
260
263
sliderNativeElement = sliderDebugElement . nativeElement ;
261
264
sliderInstance = sliderDebugElement . injector . get ( MdSlider ) ;
262
265
sliderTrackElement = < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-track' ) ;
263
266
sliderDimensions = sliderTrackElement . getBoundingClientRect ( ) ;
264
267
trackFillElement = < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-track-fill' ) ;
265
268
thumbElement = < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-thumb-position' ) ;
269
+ tickContainerElement =
270
+ < HTMLElement > sliderNativeElement . querySelector ( '.md-slider-tick-container' ) ;
266
271
} ) ;
267
272
268
273
it ( 'should set the default values from the attributes' , ( ) => {
@@ -314,7 +319,39 @@ describe('MdSlider', () => {
314
319
// The closest snap is at the halfway point on the slider.
315
320
expect ( thumbDimensions . left ) . toBe ( sliderDimensions . left + sliderDimensions . width * 0.5 ) ;
316
321
expect ( trackFillDimensions . width ) . toBe ( thumbPosition ) ;
322
+ } ) ;
323
+
324
+ it ( 'should adjust thumb and ticks when min changes' , ( ) => {
325
+ testComponent . min = - 2 ;
326
+ fixture . detectChanges ( ) ;
317
327
328
+ let trackFillDimensions = trackFillElement . getBoundingClientRect ( ) ;
329
+ let tickContainerDimensions = tickContainerElement . getBoundingClientRect ( ) ;
330
+
331
+ expect ( trackFillDimensions . width ) . toBe ( sliderDimensions . width * 6 / 8 ) ;
332
+ expect ( tickContainerDimensions . width )
333
+ . toBe ( sliderDimensions . width - sliderDimensions . width * 6 / 8 ) ;
334
+ expect ( tickContainerElement . style . background )
335
+ . toContain ( `repeating-linear-gradient(to right, black, black 2px, transparent 2px, ` +
336
+ `transparent ${ sliderDimensions . width * 6 / 8 - 1 } px)` ) ;
337
+ } ) ;
338
+
339
+ it ( 'should adjust thumb and ticks when max changes' , ( ) => {
340
+ testComponent . min = - 2 ;
341
+ fixture . detectChanges ( ) ;
342
+
343
+ testComponent . max = 10 ;
344
+ fixture . detectChanges ( ) ;
345
+
346
+ let trackFillDimensions = trackFillElement . getBoundingClientRect ( ) ;
347
+ let tickContainerDimensions = tickContainerElement . getBoundingClientRect ( ) ;
348
+
349
+ expect ( trackFillDimensions . width ) . toBe ( sliderDimensions . width * 6 / 12 ) ;
350
+ expect ( tickContainerDimensions . width )
351
+ . toBe ( sliderDimensions . width - sliderDimensions . width * 6 / 12 ) ;
352
+ expect ( tickContainerElement . style . background )
353
+ . toContain ( `repeating-linear-gradient(to right, black, black 2px, transparent 2px, ` +
354
+ `transparent ${ sliderDimensions . width * 6 / 12 - 1 } px)` ) ;
318
355
} ) ;
319
356
} ) ;
320
357
@@ -767,11 +804,14 @@ class StandardSlider { }
767
804
class DisabledSlider { }
768
805
769
806
@Component ( {
770
- template : `<md-slider min="4" max="6"></md-slider>` ,
807
+ template : `<md-slider [ min]="min" [ max]="max" tick-interval ="6"></md-slider>` ,
771
808
styles : [ noTransitionStyle ] ,
772
809
encapsulation : ViewEncapsulation . None
773
810
} )
774
- class SliderWithMinAndMax { }
811
+ class SliderWithMinAndMax {
812
+ min = 4 ;
813
+ max = 6 ;
814
+ }
775
815
776
816
@Component ( {
777
817
template : `<md-slider value="26"></md-slider>`
0 commit comments