Skip to content

Commit 6079cd1

Browse files
authored
feat(material-experimental/mdc-slider): rebuild the mdc-slider demo (#22445)
* feat(material-experimental/mdc-slider): rebuild the mdc-slider demo * add exportAs: matSliderThumb to MatSliderThumb * create focus and blur methods in MatSliderThumb to match the old demo
1 parent c647ba5 commit 6079cd1

File tree

3 files changed

+94
-22
lines changed

3 files changed

+94
-22
lines changed
Lines changed: 77 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,88 @@
1-
<p>Color: Primary</p>
2-
<mat-slider color="primary" discrete showTickMarks>
3-
<input value="25" matSliderStartThumb>
4-
<input value="75" matSliderEndThumb>
1+
<h1>Default Slider</h1>
2+
<span>Label</span>
3+
<mat-slider>
4+
<input #slidey matSliderThumb>
55
</mat-slider>
6+
{{slidey.value}}
67

7-
<mat-slider color="primary" discrete showTickMarks disabled>
8-
<input value="25" matSliderStartThumb>
9-
<input value="75" matSliderEndThumb>
8+
<h1>Colors</h1>
9+
<mat-slider color="primary" discrete>
10+
<input value="50" matSliderThumb>
11+
</mat-slider>
12+
<mat-slider color="accent" discrete>
13+
<input value="50" matSliderThumb>
14+
</mat-slider>
15+
<mat-slider color="warn">
16+
<input value="50" matSliderThumb>
17+
</mat-slider>
18+
19+
<h1>Slider with Min and Max</h1>
20+
<input [(ngModel)]="min" type="number">
21+
<mat-slider [min]="min" [max]="max" step="5" discrete showTickMarks>
22+
<input #slider2 matSliderThumb>
23+
</mat-slider>
24+
{{slider2.value}}
25+
<input [(ngModel)]="max" type="number">
26+
27+
<h1>Disabled Slider</h1>
28+
<mat-slider disabled [step]="1">
29+
<input [(ngModel)]="disabledValue" matSliderThumb>
30+
</mat-slider>
31+
<input [(ngModel)]="disabledValue" type="number">
32+
33+
<h1>Slider with set value</h1>
34+
<mat-slider>
35+
<input value="43" matSliderThumb>
1036
</mat-slider>
1137

12-
<p>Color: Accent</p>
13-
<mat-slider color="accent" discrete showTickMarks>
14-
<input value="25" matSliderStartThumb>
15-
<input value="75" matSliderEndThumb>
38+
<h1>Slider with step defined</h1>
39+
<mat-slider min="1" max="100" step="20">
40+
<input #slider5 matSliderThumb>
1641
</mat-slider>
42+
{{slider5.value}}
1743

18-
<mat-slider color="accent" discrete showTickMarks disabled>
19-
<input value="25" matSliderStartThumb>
20-
<input value="75" matSliderEndThumb>
44+
<h1>Slider with set tick interval</h1>
45+
<mat-slider discrete showTickMarks>
46+
<input matSliderThumb>
2147
</mat-slider>
48+
<mat-slider step="9" discrete showTickMarks>
49+
<input matSliderThumb>
50+
</mat-slider>
51+
52+
<h1>Slider with Thumb Label</h1>
53+
<mat-slider discrete>
54+
<input matSliderThumb>
55+
</mat-slider>
56+
57+
<h1>Slider with one-way binding</h1>
58+
<mat-slider step="10">
59+
<input [value]="val" matSliderThumb>
60+
</mat-slider>
61+
<input [(ngModel)]="val" type="number">
62+
63+
<h1>Slider with two-way binding</h1>
64+
<mat-slider step="40">
65+
<input [(ngModel)]="demo" matSliderThumb>
66+
</mat-slider>
67+
<input [(ngModel)]="demo" type="number">
2268

23-
<p>Color: Warn</p>
24-
<mat-slider color="warn" discrete showTickMarks>
25-
<input value="25" matSliderStartThumb>
26-
<input value="75" matSliderEndThumb>
69+
<h1>Set/lost focus to show thumblabel programmatically</h1>
70+
<mat-slider discrete>
71+
<input #demoSlider="matSliderThumb" matSliderThumb>
2772
</mat-slider>
73+
<button (click)="demoSlider.focus()">Focus Slider</button>
74+
<button (click)="demoSlider.blur()">Blur Slider</button>
75+
76+
<mat-tab-group>
77+
<mat-tab label="One">
78+
<mat-slider min="1" max="5">
79+
<input value="3" matSliderThumb>
80+
</mat-slider>
81+
</mat-tab>
82+
</mat-tab-group>
2883

29-
<mat-slider color="warn" discrete showTickMarks disabled>
30-
<input value="25" matSliderStartThumb>
31-
<input value="75" matSliderEndThumb>
84+
<h1>Range slider</h1>
85+
<mat-slider min="200" max="500" step="100" discrete showTickMarks>
86+
<input value="300" matSliderStartThumb>
87+
<input value="400" matSliderEndThumb>
3288
</mat-slider>

src/dev-app/mdc-slider/mdc-slider-demo.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,12 @@ import {Component} from '@angular/core';
1212
@Component({
1313
selector: 'mdc-slider-demo',
1414
templateUrl: 'mdc-slider-demo.html',
15+
styles: ['.mat-mdc-slider { display: inline-block; width: 300px; }'],
1516
})
16-
export class MdcSliderDemo {}
17+
export class MdcSliderDemo {
18+
demo: number;
19+
val: number = 50;
20+
min: number = 0;
21+
max: number = 100;
22+
disabledValue = 0;
23+
}

src/material-experimental/mdc-slider/slider.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,7 @@ export class MatSliderVisualThumb implements AfterViewInit, OnDestroy {
264264
*/
265265
@Directive({
266266
selector: 'input[matSliderThumb], input[matSliderStartThumb], input[matSliderEndThumb]',
267+
exportAs: 'matSliderThumb',
267268
host: {
268269
'class': 'mdc-slider__input',
269270
'type': 'range',
@@ -423,6 +424,14 @@ export class MatSliderThumb implements AfterViewInit, ControlValueAccessor, OnIn
423424
this._slider._updateDisabled();
424425
}
425426

427+
focus(): void {
428+
this._hostElement.focus();
429+
}
430+
431+
blur(): void {
432+
this._hostElement.blur();
433+
}
434+
426435
/** Returns true if this slider input currently has focus. */
427436
_isFocused(): boolean {
428437
return this._document.activeElement === this._hostElement;

0 commit comments

Comments
 (0)