Skip to content

Commit 2c0833c

Browse files
authored
docs(material/dialog): Update dialog examples (#29242)
1 parent 243cdf0 commit 2c0833c

File tree

8 files changed

+57
-45
lines changed

8 files changed

+57
-45
lines changed

src/components-examples/material/dialog/dialog-animations/dialog-animations-example.ts

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
import {Component} from '@angular/core';
1+
import {ChangeDetectionStrategy, Component, inject} from '@angular/core';
2+
import {MatButtonModule} from '@angular/material/button';
23
import {
34
MatDialog,
4-
MatDialogRef,
55
MatDialogActions,
66
MatDialogClose,
7-
MatDialogTitle,
87
MatDialogContent,
8+
MatDialogRef,
9+
MatDialogTitle,
910
} from '@angular/material/dialog';
10-
import {MatButtonModule} from '@angular/material/button';
1111

1212
/**
1313
* @title Dialog Animations
@@ -18,9 +18,10 @@ import {MatButtonModule} from '@angular/material/button';
1818
templateUrl: 'dialog-animations-example.html',
1919
standalone: true,
2020
imports: [MatButtonModule],
21+
changeDetection: ChangeDetectionStrategy.OnPush,
2122
})
2223
export class DialogAnimationsExample {
23-
constructor(public dialog: MatDialog) {}
24+
readonly dialog = inject(MatDialog);
2425

2526
openDialog(enterAnimationDuration: string, exitAnimationDuration: string): void {
2627
this.dialog.open(DialogAnimationsExampleDialog, {
@@ -36,7 +37,8 @@ export class DialogAnimationsExample {
3637
templateUrl: 'dialog-animations-example-dialog.html',
3738
standalone: true,
3839
imports: [MatButtonModule, MatDialogActions, MatDialogClose, MatDialogTitle, MatDialogContent],
40+
changeDetection: ChangeDetectionStrategy.OnPush,
3941
})
4042
export class DialogAnimationsExampleDialog {
41-
constructor(public dialogRef: MatDialogRef<DialogAnimationsExampleDialog>) {}
43+
readonly dialogRef = inject(MatDialogRef<DialogAnimationsExampleDialog>);
4244
}

src/components-examples/material/dialog/dialog-content/dialog-content-example.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import {Component} from '@angular/core';
2-
import {MatDialog, MatDialogModule} from '@angular/material/dialog';
1+
import {ChangeDetectionStrategy, Component, inject} from '@angular/core';
32
import {MatButtonModule} from '@angular/material/button';
3+
import {MatDialog, MatDialogModule} from '@angular/material/dialog';
44

55
/**
66
* @title Dialog with header, scrollable content and actions
@@ -10,9 +10,10 @@ import {MatButtonModule} from '@angular/material/button';
1010
templateUrl: 'dialog-content-example.html',
1111
standalone: true,
1212
imports: [MatButtonModule, MatDialogModule],
13+
changeDetection: ChangeDetectionStrategy.OnPush,
1314
})
1415
export class DialogContentExample {
15-
constructor(public dialog: MatDialog) {}
16+
readonly dialog = inject(MatDialog);
1617

1718
openDialog() {
1819
const dialogRef = this.dialog.open(DialogContentExampleDialog);
@@ -28,5 +29,6 @@ export class DialogContentExample {
2829
templateUrl: 'dialog-content-example-dialog.html',
2930
standalone: true,
3031
imports: [MatDialogModule, MatButtonModule],
32+
changeDetection: ChangeDetectionStrategy.OnPush,
3133
})
3234
export class DialogContentExampleDialog {}

src/components-examples/material/dialog/dialog-elements/dialog-elements-example.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
import {Component} from '@angular/core';
1+
import {ChangeDetectionStrategy, Component, inject} from '@angular/core';
2+
import {MatButtonModule} from '@angular/material/button';
23
import {
34
MatDialog,
45
MatDialogActions,
56
MatDialogClose,
67
MatDialogContent,
78
MatDialogTitle,
89
} from '@angular/material/dialog';
9-
import {MatButtonModule} from '@angular/material/button';
1010

1111
/**
1212
* @title Dialog elements
@@ -16,9 +16,10 @@ import {MatButtonModule} from '@angular/material/button';
1616
templateUrl: 'dialog-elements-example.html',
1717
standalone: true,
1818
imports: [MatButtonModule],
19+
changeDetection: ChangeDetectionStrategy.OnPush,
1920
})
2021
export class DialogElementsExample {
21-
constructor(public dialog: MatDialog) {}
22+
readonly dialog = inject(MatDialog);
2223

2324
openDialog() {
2425
this.dialog.open(DialogElementsExampleDialog);
@@ -30,5 +31,6 @@ export class DialogElementsExample {
3031
templateUrl: 'dialog-elements-example-dialog.html',
3132
standalone: true,
3233
imports: [MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogClose, MatButtonModule],
34+
changeDetection: ChangeDetectionStrategy.OnPush,
3335
})
3436
export class DialogElementsExampleDialog {}
Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
import {Component, ViewChild} from '@angular/core';
1+
import {ChangeDetectionStrategy, Component, inject, viewChild} from '@angular/core';
2+
import {MatButtonModule} from '@angular/material/button';
23
import {
34
MatDialog,
45
MatDialogActions,
56
MatDialogClose,
67
MatDialogContent,
78
} from '@angular/material/dialog';
8-
import {MatMenuTrigger, MatMenuModule} from '@angular/material/menu';
9-
import {MatButtonModule} from '@angular/material/button';
9+
import {MatMenuModule, MatMenuTrigger} from '@angular/material/menu';
1010
/**
1111
* @title Dialog launched from a menu
1212
*/
@@ -15,19 +15,20 @@ import {MatButtonModule} from '@angular/material/button';
1515
templateUrl: 'dialog-from-menu-example.html',
1616
standalone: true,
1717
imports: [MatButtonModule, MatMenuModule],
18+
changeDetection: ChangeDetectionStrategy.OnPush,
1819
})
1920
export class DialogFromMenuExample {
20-
@ViewChild('menuTrigger') menuTrigger: MatMenuTrigger;
21+
readonly menuTrigger = viewChild.required(MatMenuTrigger);
2122

22-
constructor(public dialog: MatDialog) {}
23+
readonly dialog = inject(MatDialog);
2324

2425
openDialog() {
2526
// #docregion focus-restoration
2627
const dialogRef = this.dialog.open(DialogFromMenuExampleDialog, {restoreFocus: false});
2728

2829
// Manually restore focus to the menu trigger since the element that
2930
// opens the dialog won't be in the DOM any more when the dialog closes.
30-
dialogRef.afterClosed().subscribe(() => this.menuTrigger.focus());
31+
dialogRef.afterClosed().subscribe(() => this.menuTrigger().focus());
3132
// #enddocregion focus-restoration
3233
}
3334
}
@@ -37,5 +38,6 @@ export class DialogFromMenuExample {
3738
templateUrl: 'dialog-from-menu-example-dialog.html',
3839
standalone: true,
3940
imports: [MatDialogContent, MatDialogActions, MatDialogClose, MatButtonModule],
41+
changeDetection: ChangeDetectionStrategy.OnPush,
4042
})
4143
export class DialogFromMenuExampleDialog {}
Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {Component, TemplateRef, ViewChild} from '@angular/core';
1+
import {ChangeDetectionStrategy, Component, TemplateRef, inject, viewChild} from '@angular/core';
22
import {MatDialog, MatDialogConfig} from '@angular/material/dialog';
33

44
/**
@@ -8,13 +8,14 @@ import {MatDialog, MatDialogConfig} from '@angular/material/dialog';
88
selector: 'dialog-harness-example',
99
templateUrl: 'dialog-harness-example.html',
1010
standalone: true,
11+
changeDetection: ChangeDetectionStrategy.OnPush,
1112
})
1213
export class DialogHarnessExample {
13-
@ViewChild(TemplateRef) dialogTemplate: TemplateRef<any>;
14+
readonly dialogTemplate = viewChild.required(TemplateRef);
1415

15-
constructor(readonly dialog: MatDialog) {}
16+
readonly dialog = inject(MatDialog);
1617

1718
open(config?: MatDialogConfig) {
18-
return this.dialog.open(this.dialogTemplate, config);
19+
return this.dialog.open(this.dialogTemplate(), config);
1920
}
2021
}

src/components-examples/material/dialog/dialog-overview/dialog-overview-example-dialog.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ <h2 mat-dialog-title>Hi {{data.name}}</h2>
33
<p>What's your favorite animal?</p>
44
<mat-form-field>
55
<mat-label>Favorite Animal</mat-label>
6-
<input matInput [(ngModel)]="data.animal">
6+
<input matInput [(ngModel)]="animal" />
77
</mat-form-field>
88
</mat-dialog-content>
99
<mat-dialog-actions>
1010
<button mat-button (click)="onNoClick()">No Thanks</button>
11-
<button mat-button [mat-dialog-close]="data.animal" cdkFocusInitial>Ok</button>
11+
<button mat-button [mat-dialog-close]="animal()" cdkFocusInitial>Ok</button>
1212
</mat-dialog-actions>

src/components-examples/material/dialog/dialog-overview/dialog-overview-example.html

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@
22
<li>
33
<mat-form-field>
44
<mat-label>What's your name?</mat-label>
5-
<input matInput [(ngModel)]="name">
5+
<input matInput [(ngModel)]="name" />
66
</mat-form-field>
77
</li>
88
<li>
99
<button mat-raised-button (click)="openDialog()">Pick one</button>
1010
</li>
11-
@if (animal) {
12-
<li>You chose: <em>{{animal}}</em></li>
11+
@if (animal()) {
12+
<li>
13+
You chose: <em>{{animal()}}</em>
14+
</li>
1315
}
1416
</ol>

src/components-examples/material/dialog/dialog-overview/dialog-overview-example.ts

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
1-
import {Component, Inject} from '@angular/core';
1+
import {ChangeDetectionStrategy, Component, inject, model, signal} from '@angular/core';
2+
import {FormsModule} from '@angular/forms';
3+
import {MatButtonModule} from '@angular/material/button';
24
import {
3-
MatDialog,
45
MAT_DIALOG_DATA,
5-
MatDialogRef,
6-
MatDialogTitle,
7-
MatDialogContent,
6+
MatDialog,
87
MatDialogActions,
98
MatDialogClose,
9+
MatDialogContent,
10+
MatDialogRef,
11+
MatDialogTitle,
1012
} from '@angular/material/dialog';
11-
import {MatButtonModule} from '@angular/material/button';
12-
import {FormsModule} from '@angular/forms';
13-
import {MatInputModule} from '@angular/material/input';
1413
import {MatFormFieldModule} from '@angular/material/form-field';
14+
import {MatInputModule} from '@angular/material/input';
1515

1616
export interface DialogData {
1717
animal: string;
@@ -26,21 +26,23 @@ export interface DialogData {
2626
templateUrl: 'dialog-overview-example.html',
2727
standalone: true,
2828
imports: [MatFormFieldModule, MatInputModule, FormsModule, MatButtonModule],
29+
changeDetection: ChangeDetectionStrategy.OnPush,
2930
})
3031
export class DialogOverviewExample {
31-
animal: string;
32-
name: string;
33-
34-
constructor(public dialog: MatDialog) {}
32+
readonly animal = signal('');
33+
readonly name = model('');
34+
readonly dialog = inject(MatDialog);
3535

3636
openDialog(): void {
3737
const dialogRef = this.dialog.open(DialogOverviewExampleDialog, {
38-
data: {name: this.name, animal: this.animal},
38+
data: {name: this.name(), animal: this.animal()},
3939
});
4040

4141
dialogRef.afterClosed().subscribe(result => {
4242
console.log('The dialog was closed');
43-
this.animal = result;
43+
if (result !== undefined) {
44+
this.animal.set(result);
45+
}
4446
});
4547
}
4648
}
@@ -61,10 +63,9 @@ export class DialogOverviewExample {
6163
],
6264
})
6365
export class DialogOverviewExampleDialog {
64-
constructor(
65-
public dialogRef: MatDialogRef<DialogOverviewExampleDialog>,
66-
@Inject(MAT_DIALOG_DATA) public data: DialogData,
67-
) {}
66+
readonly dialogRef = inject(MatDialogRef<DialogOverviewExampleDialog>);
67+
readonly data = inject<DialogData>(MAT_DIALOG_DATA);
68+
readonly animal = model(this.data.animal);
6869

6970
onNoClick(): void {
7071
this.dialogRef.close();

0 commit comments

Comments
 (0)