Skip to content

Commit 30d0f63

Browse files
committed
docs(material/slider): switch examples to use MDC
Switches the slider examples to use the MDC slider. Also updates the guide and adds an example of a range slider. I also ended up removing the slider from the "Getting started" guide since the new API is a bit more complicated than the old one.
1 parent 7fbd7ea commit 30d0f63

15 files changed

+111
-150
lines changed

guides/getting-started.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -53,26 +53,26 @@ You're done! Angular Material is now configured to be used in your application.
5353

5454
### Display a component
5555

56-
Let's display a slider component in your app and verify that everything works.
56+
Let's display a slide toggle component in your app and verify that everything works.
5757

58-
You need to import the `MatSliderModule` that you want to display by adding the following lines to
58+
You need to import the `MatSlideToggleModule` that you want to display by adding the following lines to
5959
your `app.module.ts` file.
6060

6161
```ts
62-
import { MatSliderModule } from '@angular/material/slider';
62+
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
6363

6464
@NgModule ({
6565
imports: [
66-
MatSliderModule,
66+
MatSlideToggleModule,
6767
]
6868
})
6969
class AppModule {}
7070
```
7171

72-
Add the `<mat-slider>` tag to the `app.component.html` like so:
72+
Add the `<mat-slide-toggle>` tag to the `app.component.html` like so:
7373

7474
```html
75-
<mat-slider min="1" max="100" step="1" value="50"></mat-slider>
75+
<mat-slide-toggle>Toggle me!</mat-slide-toggle>
7676
```
7777

7878
Run your local dev server:
@@ -83,7 +83,7 @@ ng serve
8383

8484
Then point your browser to [http://localhost:4200](http://localhost:4200)
8585

86-
You should see the Material slider component on the page.
86+
You should see the Material slide toggle component on the page.
8787

8888
In addition to the installation schematic, Angular Material comes with
8989
[several other schematics](https://material.angular.io/guide/schematics) (like nav, table,

src/components-examples/material/slider/BUILD.bazel

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@ ng_module(
1515
deps = [
1616
"//src/cdk/testing",
1717
"//src/cdk/testing/testbed",
18-
"//src/material/legacy-card",
19-
"//src/material/legacy-checkbox",
20-
"//src/material/legacy-input",
21-
"//src/material/legacy-slider",
22-
"//src/material/legacy-slider/testing",
18+
"//src/material/card",
19+
"//src/material/checkbox",
20+
"//src/material/input",
21+
"//src/material/slider",
22+
"//src/material/slider/testing",
2323
"@npm//@angular/forms",
2424
"@npm//@angular/platform-browser",
2525
"@npm//@angular/platform-browser-dynamic",
@@ -43,8 +43,8 @@ ng_test_library(
4343
":slider",
4444
"//src/cdk/testing",
4545
"//src/cdk/testing/testbed",
46-
"//src/material/legacy-slider",
47-
"//src/material/legacy-slider/testing",
46+
"//src/material/slider",
47+
"//src/material/slider/testing",
4848
"@npm//@angular/platform-browser-dynamic",
4949
],
5050
)

src/components-examples/material/slider/index.ts

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,40 @@
11
import {CommonModule} from '@angular/common';
22
import {NgModule} from '@angular/core';
33
import {FormsModule} from '@angular/forms';
4-
import {MatLegacyCardModule} from '@angular/material/legacy-card';
5-
import {MatLegacyCheckboxModule} from '@angular/material/legacy-checkbox';
6-
import {MatLegacyInputModule} from '@angular/material/legacy-input';
7-
import {MatLegacySliderModule} from '@angular/material/legacy-slider';
4+
import {MatCardModule} from '@angular/material/card';
5+
import {MatCheckboxModule} from '@angular/material/checkbox';
6+
import {MatInputModule} from '@angular/material/input';
7+
import {MatSliderModule} from '@angular/material/slider';
88
import {SliderConfigurableExample} from './slider-configurable/slider-configurable-example';
99
import {SliderFormattingExample} from './slider-formatting/slider-formatting-example';
1010
import {SliderOverviewExample} from './slider-overview/slider-overview-example';
1111
import {SliderHarnessExample} from './slider-harness/slider-harness-example';
12+
import {SliderRangeExample} from './slider-range/slider-range-example';
1213

1314
export {
1415
SliderConfigurableExample,
1516
SliderFormattingExample,
1617
SliderHarnessExample,
1718
SliderOverviewExample,
19+
SliderRangeExample,
1820
};
1921

2022
const EXAMPLES = [
2123
SliderConfigurableExample,
2224
SliderFormattingExample,
2325
SliderHarnessExample,
2426
SliderOverviewExample,
27+
SliderRangeExample,
2528
];
2629

2730
@NgModule({
2831
imports: [
2932
CommonModule,
3033
FormsModule,
31-
MatLegacyCardModule,
32-
MatLegacyCheckboxModule,
33-
MatLegacyInputModule,
34-
MatLegacySliderModule,
34+
MatCardModule,
35+
MatCheckboxModule,
36+
MatInputModule,
37+
MatSliderModule,
3538
],
3639
declarations: EXAMPLES,
3740
exports: EXAMPLES,
Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
.example-h2 {
2-
margin: 0 8px 16px;
2+
margin-left: 10px;
3+
margin-right: 10px;
34
}
45

56
.example-section {
@@ -12,44 +13,32 @@
1213
.example-margin {
1314
margin: 8px;
1415
}
16+
1517
.example-width {
1618
max-width: 180px;
1719
width: 100%;
1820
}
1921

20-
.mat-slider-horizontal {
22+
.mat-mdc-slider {
2123
max-width: 300px;
2224
width: 100%;
2325
}
2426

25-
.mat-slider-vertical {
26-
height: 300px;
27-
}
28-
29-
.mat-card + .mat-card {
27+
.mat-mdc-card + .mat-mdc-card {
3028
margin-top: 8px;
3129
}
3230

3331
.example-result-card h2 {
3432
margin: 0 8px;
3533
}
3634

37-
.example-result-card .example-label-container.example-label-horizontal {
35+
.example-label-container {
3836
display: flex;
3937
justify-content: space-between;
40-
margin: 0 0 12px 16px;
38+
margin: 20px 10px 0;
4139
max-width: 284px;
4240
}
4341

44-
.example-result-card .example-label-container.example-label-vertical {
45-
display: flex;
46-
flex-direction: column;
47-
align-items: center;
48-
justify-content: space-between;
49-
max-width: 68px;
50-
height: 48px;
51-
}
52-
5342
.example-result-card .example-value-label {
5443
font-weight: 600;
5544
}

src/components-examples/material/slider/slider-configurable/slider-configurable-example.html

Lines changed: 8 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -22,54 +22,36 @@ <h2 class="example-h2">Slider configuration</h2>
2222
</section>
2323

2424
<section class="example-section">
25-
<mat-checkbox class="example-margin" [(ngModel)]="showTicks">Show ticks</mat-checkbox>
26-
<mat-checkbox class="example-margin" [(ngModel)]="autoTicks" *ngIf="showTicks">
27-
Auto ticks
28-
</mat-checkbox>
29-
<mat-form-field class="example-margin example-width" appearance="fill" *ngIf="showTicks && !autoTicks">
30-
<mat-label>Tick interval</mat-label>
31-
<input matInput type="number" [(ngModel)]="tickInterval">
32-
</mat-form-field>
25+
<mat-checkbox [(ngModel)]="showTicks">Show ticks</mat-checkbox>
3326
</section>
3427

3528
<section class="example-section">
36-
<mat-checkbox class="example-margin" [(ngModel)]="thumbLabel">Show thumb label</mat-checkbox>
29+
<mat-checkbox [(ngModel)]="thumbLabel">Show thumb label</mat-checkbox>
3730
</section>
3831

3932
<section class="example-section">
40-
<mat-checkbox class="example-margin" [(ngModel)]="vertical">Vertical</mat-checkbox>
41-
<mat-checkbox class="example-margin" [(ngModel)]="invert">Inverted</mat-checkbox>
33+
<mat-checkbox [(ngModel)]="disabled">Disabled</mat-checkbox>
4234
</section>
43-
44-
<section class="example-section">
45-
<mat-checkbox class="example-margin" [(ngModel)]="disabled">Disabled</mat-checkbox>
46-
</section>
47-
4835
</mat-card-content>
4936
</mat-card>
5037

5138
<mat-card class="example-result-card">
5239
<mat-card-content>
5340
<h2>Result</h2>
54-
<br>
55-
<br>
5641

57-
<div class="example-label-container" [class]="vertical ? 'example-label-vertical' : 'example-label-horizontal'">
58-
<label id="example-name-label" class="example-name-label">Max Value</label>
42+
<div class="example-label-container">
43+
<label id="example-name-label" class="example-name-label">Value</label>
5944
<label class="example-value-label">{{value}}</label>
6045
</div>
6146
<mat-slider
6247
class="example-margin"
6348
[disabled]="disabled"
64-
[invert]="invert"
6549
[max]="max"
6650
[min]="min"
6751
[step]="step"
68-
[thumbLabel]="thumbLabel"
69-
[tickInterval]="getSliderTickInterval()"
70-
[(ngModel)]="value"
71-
[vertical]="vertical"
72-
aria-labelledby="example-name-label">
52+
[discrete]="thumbLabel"
53+
[showTickMarks]="showTicks">
54+
<input matSliderThumb [(ngModel)]="value">
7355
</mat-slider>
7456
</mat-card-content>
7557
</mat-card>

src/components-examples/material/slider/slider-configurable/slider-configurable-example.ts

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,23 +9,11 @@ import {Component} from '@angular/core';
99
styleUrls: ['slider-configurable-example.css'],
1010
})
1111
export class SliderConfigurableExample {
12-
autoTicks = false;
1312
disabled = false;
14-
invert = false;
1513
max = 100;
1614
min = 0;
1715
showTicks = false;
1816
step = 1;
1917
thumbLabel = false;
2018
value = 0;
21-
vertical = false;
22-
tickInterval = 1;
23-
24-
getSliderTickInterval(): number | 'auto' {
25-
if (this.showTicks) {
26-
return this.autoTicks ? 'auto' : this.tickInterval;
27-
}
28-
29-
return 0;
30-
}
3119
}
Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,3 @@
1-
<mat-slider
2-
thumbLabel
3-
[displayWith]="formatLabel"
4-
tickInterval="1000"
5-
step="1000"
6-
min="0"
7-
max="100000"
8-
aria-label="units"></mat-slider>
1+
<mat-slider min="0" max="100000" step="1000" showTickMarks discrete [displayWith]="formatLabel">
2+
<input matSliderThumb>
3+
</mat-slider>

src/components-examples/material/slider/slider-formatting/slider-formatting-example.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ import {Component} from '@angular/core';
99
styleUrls: ['slider-formatting-example.css'],
1010
})
1111
export class SliderFormattingExample {
12-
formatLabel(value: number) {
12+
formatLabel(value: number): string {
1313
if (value >= 1000) {
1414
return Math.round(value / 1000) + 'k';
1515
}
1616

17-
return value;
17+
return `${value}`;
1818
}
1919
}
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
1-
<mat-slider value="50" aria-label="unit(s)"></mat-slider>
1+
<mat-slider>
2+
<input matSliderThumb value="50">
3+
</mat-slider>
Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import {ComponentFixture, TestBed} from '@angular/core/testing';
22
import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed';
3-
import {MatLegacySliderHarness} from '@angular/material/legacy-slider/testing';
3+
import {MatSliderHarness} from '@angular/material/slider/testing';
44
import {HarnessLoader} from '@angular/cdk/testing';
5-
import {MatLegacySliderModule} from '@angular/material/legacy-slider';
5+
import {MatSliderModule} from '@angular/material/slider';
66
import {SliderHarnessExample} from './slider-harness-example';
77

88
describe('SliderHarnessExample', () => {
@@ -11,7 +11,7 @@ describe('SliderHarnessExample', () => {
1111

1212
beforeEach(async () => {
1313
await TestBed.configureTestingModule({
14-
imports: [MatLegacySliderModule],
14+
imports: [MatSliderModule],
1515
declarations: [SliderHarnessExample],
1616
}).compileComponents();
1717
fixture = TestBed.createComponent(SliderHarnessExample);
@@ -20,31 +20,34 @@ describe('SliderHarnessExample', () => {
2020
});
2121

2222
it('should load all slider harnesses', async () => {
23-
const sliders = await loader.getAllHarnesses(MatLegacySliderHarness);
23+
const sliders = await loader.getAllHarnesses(MatSliderHarness);
2424
expect(sliders.length).toBe(1);
2525
});
2626

27-
it('should get value of slider', async () => {
28-
const slider = await loader.getHarness(MatLegacySliderHarness);
29-
expect(await slider.getValue()).toBe(50);
27+
it('should get value of slider thumb', async () => {
28+
const slider = await loader.getHarness(MatSliderHarness);
29+
const thumb = await slider.getEndThumb();
30+
expect(await thumb.getValue()).toBe(50);
3031
});
3132

32-
it('should get percentage of slider', async () => {
33-
const slider = await loader.getHarness(MatLegacySliderHarness);
34-
expect(await slider.getPercentage()).toBe(0.5);
33+
it('should get percentage of slider thumb', async () => {
34+
const slider = await loader.getHarness(MatSliderHarness);
35+
const thumb = await slider.getEndThumb();
36+
expect(await thumb.getPercentage()).toBe(0.5);
3537
});
3638

37-
it('should get max value of slider', async () => {
38-
const slider = await loader.getHarness(MatLegacySliderHarness);
39+
it('should get max value of slider thumb', async () => {
40+
const slider = await loader.getHarness(MatSliderHarness);
3941
expect(await slider.getMaxValue()).toBe(100);
4042
});
4143

42-
it('should be able to set value of slider', async () => {
43-
const slider = await loader.getHarness(MatLegacySliderHarness);
44-
expect(await slider.getValue()).toBe(50);
44+
it('should be able to set value of slider thumb', async () => {
45+
const slider = await loader.getHarness(MatSliderHarness);
46+
const thumb = await slider.getEndThumb();
47+
expect(await thumb.getValue()).toBe(50);
4548

46-
await slider.setValue(33);
49+
await thumb.setValue(33);
4750

48-
expect(await slider.getValue()).toBe(33);
51+
expect(await thumb.getValue()).toBe(33);
4952
});
5053
});
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
1-
<mat-slider aria-label="unit(s)"></mat-slider>
1+
<mat-slider>
2+
<input matSliderThumb>
3+
</mat-slider>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
mat-slider {
2+
width: 300px;
3+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<mat-slider min="200" max="500">
2+
<input value="300" matSliderStartThumb>
3+
<input value="400" matSliderEndThumb>
4+
</mat-slider>
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import {Component} from '@angular/core';
2+
3+
/**
4+
* @title Range slider
5+
*/
6+
@Component({
7+
selector: 'slider-range-example',
8+
templateUrl: 'slider-range-example.html',
9+
styleUrls: ['slider-range-example.css'],
10+
})
11+
export class SliderRangeExample {}

0 commit comments

Comments
 (0)