Skip to content

Commit 9cb0761

Browse files
authored
Add a zoneless toggle to the dev-app (angular#28839)
* ci: extend OnPush & standalone lint to dev-app * build: fix errors due to missing examples * test: make dev-app OnPush * test: add a zoneless toggle to dev-app
1 parent 752f560 commit 9cb0761

File tree

72 files changed

+657
-373
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

72 files changed

+657
-373
lines changed

.prettierignore

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# Generated files for infrastructure.
22
.yarn/releases/*.cjs
3+
.prettierrc
34

45
# These schematic ng-generate files are template files that cannot be formatted.
56
src/material/schematics/ng-generate/*/files/**/*
@@ -10,4 +11,4 @@ src/cdk/schematics/ng-generate/*/files/**/*
1011
src/cdk/schematics/ng-update/test-cases/**/*_input.ts
1112
src/cdk/schematics/ng-update/test-cases/**/*_expected_output.ts
1213
src/material/schematics/ng-update/test-cases/**/*_input.ts
13-
src/material/schematics/ng-update/test-cases/**/*_expected_output.ts
14+
src/material/schematics/ng-update/test-cases/**/*_expected_output.ts

.prettierrc

+9-2
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,12 @@
55
"quoteProps": "preserve",
66
"bracketSpacing": false,
77
"arrowParens": "avoid",
8-
"embeddedLanguageFormatting": "off"
9-
}
8+
"embeddedLanguageFormatting": "off",
9+
"overrides": [
10+
{
11+
"files": "*.html",
12+
"options": {
13+
"parser": "angular"
14+
}
15+
}
16+
]}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
interface LiveExample {
2+
/** Title of the example. */
3+
title: string;
4+
/** Name of the example component. */
5+
componentName: string;
6+
/** Selector to match the component of this example. */
7+
selector: string;
8+
/** Name of the primary file of this example. */
9+
primaryFile: string;
10+
/** List of files which are part of the example. */
11+
files: string[];
12+
/** Path to the directory containing the example. */
13+
packagePath: string;
14+
/** List of additional components which are part of the example. */
15+
additionalComponents: string[];
16+
/** Path from which to import the xample. */
17+
importPath: string;
18+
}
19+
20+
export const EXAMPLE_COMPONENTS: {[id: string]: LiveExample};

src/dev-app/autocomplete/autocomplete-demo.ts

+5-3
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,16 @@
66
* found in the LICENSE file at https://angular.io/license
77
*/
88

9-
import {Component, inject, ViewChild} from '@angular/core';
10-
import {FormControl, NgModel, FormsModule, ReactiveFormsModule} from '@angular/forms';
119
import {CommonModule} from '@angular/common';
10+
import {ChangeDetectionStrategy, Component, inject, ViewChild} from '@angular/core';
11+
import {FormControl, FormsModule, NgModel, ReactiveFormsModule} from '@angular/forms';
1212
import {MatAutocompleteModule} from '@angular/material/autocomplete';
1313
import {MatButtonModule} from '@angular/material/button';
1414
import {MatCardModule} from '@angular/material/card';
1515
import {MatCheckboxModule} from '@angular/material/checkbox';
16-
import {MatInputModule} from '@angular/material/input';
1716
import {ThemePalette} from '@angular/material/core';
1817
import {MatDialog, MatDialogRef} from '@angular/material/dialog';
18+
import {MatInputModule} from '@angular/material/input';
1919

2020
export interface State {
2121
code: string;
@@ -45,6 +45,7 @@ type DisableStateOption = 'none' | 'first-middle-last' | 'all';
4545
MatInputModule,
4646
ReactiveFormsModule,
4747
],
48+
changeDetection: ChangeDetectionStrategy.OnPush,
4849
})
4950
export class AutocompleteDemo {
5051
stateCtrl = new FormControl();
@@ -246,6 +247,7 @@ export class AutocompleteDemo {
246247
`,
247248
standalone: true,
248249
imports: [CommonModule, FormsModule, MatAutocompleteModule, MatButtonModule, MatInputModule],
250+
changeDetection: ChangeDetectionStrategy.OnPush,
249251
})
250252
export class AutocompleteDemoExampleDialog {
251253
constructor(public dialogRef: MatDialogRef<AutocompleteDemoExampleDialog>) {}

src/dev-app/badge/badge-demo.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
* found in the LICENSE file at https://angular.io/license
77
*/
88

9-
import {Component} from '@angular/core';
109
import {CommonModule} from '@angular/common';
10+
import {ChangeDetectionStrategy, Component} from '@angular/core';
1111
import {FormsModule} from '@angular/forms';
1212
import {MatBadgeModule} from '@angular/material/badge';
1313
import {MatButtonModule} from '@angular/material/button';
@@ -19,6 +19,7 @@ import {MatIconModule} from '@angular/material/icon';
1919
styleUrl: 'badge-demo.css',
2020
standalone: true,
2121
imports: [CommonModule, FormsModule, MatBadgeModule, MatButtonModule, MatIconModule],
22+
changeDetection: ChangeDetectionStrategy.OnPush,
2223
})
2324
export class BadgeDemo {
2425
visible = true;

src/dev-app/baseline/baseline-demo.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
* found in the LICENSE file at https://angular.io/license
77
*/
88

9-
import {Component} from '@angular/core';
109
import {CommonModule} from '@angular/common';
10+
import {ChangeDetectionStrategy, Component} from '@angular/core';
1111
import {MatCardModule} from '@angular/material/card';
1212
import {MatCheckboxModule} from '@angular/material/checkbox';
1313
import {MatFormFieldModule} from '@angular/material/form-field';
@@ -31,6 +31,7 @@ import {MatToolbarModule} from '@angular/material/toolbar';
3131
MatSelectModule,
3232
MatToolbarModule,
3333
],
34+
changeDetection: ChangeDetectionStrategy.OnPush,
3435
})
3536
export class BaselineDemo {
3637
name: string;

src/dev-app/bottom-sheet/bottom-sheet-demo.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
* found in the LICENSE file at https://angular.io/license
77
*/
88

9-
import {Component, TemplateRef, ViewChild} from '@angular/core';
109
import {CommonModule} from '@angular/common';
10+
import {ChangeDetectionStrategy, Component, TemplateRef, ViewChild} from '@angular/core';
1111
import {FormsModule} from '@angular/forms';
1212
import {
1313
MatBottomSheet,
@@ -44,6 +44,7 @@ const defaultConfig = new MatBottomSheetConfig();
4444
MatSelectModule,
4545
MatListModule,
4646
],
47+
changeDetection: ChangeDetectionStrategy.OnPush,
4748
})
4849
export class BottomSheetDemo {
4950
config: MatBottomSheetConfig = {
@@ -80,6 +81,7 @@ export class BottomSheetDemo {
8081
`,
8182
standalone: true,
8283
imports: [CommonModule, MatListModule],
84+
changeDetection: ChangeDetectionStrategy.OnPush,
8385
})
8486
export class ExampleBottomSheet {
8587
constructor(private _bottomSheet: MatBottomSheetRef) {}

src/dev-app/button-toggle/button-toggle-demo.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
* found in the LICENSE file at https://angular.io/license
77
*/
88

9-
import {Component} from '@angular/core';
109
import {CommonModule} from '@angular/common';
10+
import {ChangeDetectionStrategy, Component} from '@angular/core';
1111
import {FormsModule} from '@angular/forms';
1212
import {MatButtonToggleModule} from '@angular/material/button-toggle';
1313
import {MatCheckboxModule} from '@angular/material/checkbox';
@@ -19,6 +19,7 @@ import {MatIconModule} from '@angular/material/icon';
1919
styleUrl: 'button-toggle-demo.css',
2020
standalone: true,
2121
imports: [CommonModule, FormsModule, MatButtonToggleModule, MatCheckboxModule, MatIconModule],
22+
changeDetection: ChangeDetectionStrategy.OnPush,
2223
})
2324
export class ButtonToggleDemo {
2425
isVertical = false;

src/dev-app/button/button-demo.ts

+7-6
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,21 @@
66
* found in the LICENSE file at https://angular.io/license
77
*/
88

9-
import {Component} from '@angular/core';
9+
import {ChangeDetectionStrategy, Component} from '@angular/core';
1010
import {FormsModule} from '@angular/forms';
1111
import {
12-
MatButton,
1312
MatAnchor,
14-
MatFabButton,
13+
MatButton,
1514
MatFabAnchor,
16-
MatIconButton,
15+
MatFabButton,
1716
MatIconAnchor,
18-
MatMiniFabButton,
17+
MatIconButton,
1918
MatMiniFabAnchor,
19+
MatMiniFabButton,
2020
} from '@angular/material/button';
21+
import {MatCheckbox} from '@angular/material/checkbox';
2122
import {MatIcon} from '@angular/material/icon';
2223
import {MatTooltip} from '@angular/material/tooltip';
23-
import {MatCheckbox} from '@angular/material/checkbox';
2424

2525
@Component({
2626
selector: 'button-demo',
@@ -41,6 +41,7 @@ import {MatCheckbox} from '@angular/material/checkbox';
4141
MatCheckbox,
4242
FormsModule,
4343
],
44+
changeDetection: ChangeDetectionStrategy.OnPush,
4445
})
4546
export class ButtonDemo {
4647
isDisabled = false;

src/dev-app/card/card-demo.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
* found in the LICENSE file at https://angular.io/license
77
*/
88

9-
import {Component, ViewEncapsulation} from '@angular/core';
10-
import {MatCardAppearance, MatCardModule} from '@angular/material/card';
9+
import {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';
1110
import {FormsModule} from '@angular/forms';
1211
import {MatButtonModule} from '@angular/material/button';
12+
import {MatCardAppearance, MatCardModule} from '@angular/material/card';
1313
import {MatCheckboxModule} from '@angular/material/checkbox';
1414

1515
@Component({
@@ -19,6 +19,7 @@ import {MatCheckboxModule} from '@angular/material/checkbox';
1919
encapsulation: ViewEncapsulation.None,
2020
standalone: true,
2121
imports: [MatCardModule, MatButtonModule, MatCheckboxModule, FormsModule],
22+
changeDetection: ChangeDetectionStrategy.OnPush,
2223
})
2324
export class CardDemo {
2425
appearance: MatCardAppearance = 'raised';

src/dev-app/cdk-dialog/dialog-demo.ts

+23-3
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,17 @@
66
* found in the LICENSE file at https://angular.io/license
77
*/
88

9-
import {Component, Inject, TemplateRef, ViewChild, ViewEncapsulation} from '@angular/core';
10-
import {DIALOG_DATA, Dialog, DialogConfig, DialogRef, DialogModule} from '@angular/cdk/dialog';
9+
import {DIALOG_DATA, Dialog, DialogConfig, DialogModule, DialogRef} from '@angular/cdk/dialog';
10+
import {
11+
ChangeDetectionStrategy,
12+
ChangeDetectorRef,
13+
Component,
14+
Inject,
15+
TemplateRef,
16+
ViewChild,
17+
ViewEncapsulation,
18+
inject,
19+
} from '@angular/core';
1120
import {FormsModule} from '@angular/forms';
1221

1322
const defaultDialogConfig = new DialogConfig();
@@ -19,6 +28,7 @@ const defaultDialogConfig = new DialogConfig();
1928
encapsulation: ViewEncapsulation.None,
2029
standalone: true,
2130
imports: [DialogModule, FormsModule],
31+
changeDetection: ChangeDetectionStrategy.OnPush,
2232
})
2333
export class DialogDemo {
2434
dialogRef: DialogRef<string> | null;
@@ -43,6 +53,8 @@ export class DialogDemo {
4353

4454
@ViewChild(TemplateRef) template: TemplateRef<any>;
4555

56+
readonly cdr = inject(ChangeDetectorRef);
57+
4658
constructor(public dialog: Dialog) {}
4759

4860
openJazz() {
@@ -51,12 +63,19 @@ export class DialogDemo {
5163
this.dialogRef.closed.subscribe(result => {
5264
this.result = result!;
5365
this.dialogRef = null;
66+
this.cdr.markForCheck();
5467
});
5568
}
5669

5770
openTemplate() {
5871
this.numTemplateOpens++;
59-
this.dialog.open(this.template, this.config);
72+
this.dialogRef = this.dialog.open(this.template, this.config);
73+
74+
this.dialogRef.closed.subscribe(result => {
75+
this.result = result!;
76+
this.dialogRef = null;
77+
this.cdr.markForCheck();
78+
});
6079
}
6180
}
6281

@@ -92,6 +111,7 @@ export class DialogDemo {
92111
}
93112
`,
94113
standalone: true,
114+
changeDetection: ChangeDetectionStrategy.OnPush,
95115
})
96116
export class JazzDialog {
97117
private _dimensionToggle = false;

src/dev-app/cdk-experimental-combobox/cdk-combobox-demo.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,14 @@
66
* found in the LICENSE file at https://angular.io/license
77
*/
88

9-
import {Component} from '@angular/core';
109
import {CdkComboboxModule} from '@angular/cdk-experimental/combobox';
1110
import {CommonModule} from '@angular/common';
11+
import {ChangeDetectionStrategy, Component} from '@angular/core';
1212

1313
@Component({
1414
templateUrl: 'cdk-combobox-demo.html',
1515
standalone: true,
1616
imports: [CdkComboboxModule, CommonModule],
17+
changeDetection: ChangeDetectionStrategy.OnPush,
1718
})
1819
export class CdkComboboxDemo {}

src/dev-app/cdk-menu/cdk-menu-demo.ts

+7-6
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,18 @@
66
* found in the LICENSE file at https://angular.io/license
77
*/
88

9-
import {Component} from '@angular/core';
10-
import {ConnectedPosition} from '@angular/cdk/overlay';
119
import {CdkMenuModule} from '@angular/cdk/menu';
10+
import {ConnectedPosition} from '@angular/cdk/overlay';
1211
import {CommonModule} from '@angular/common';
1312
import {
14-
CdkMenuStandaloneMenuExample,
15-
CdkMenuStandaloneStatefulMenuExample,
16-
CdkMenuMenubarExample,
17-
CdkMenuInlineExample,
1813
CdkMenuContextExample,
14+
CdkMenuInlineExample,
15+
CdkMenuMenubarExample,
1916
CdkMenuNestedContextExample,
17+
CdkMenuStandaloneMenuExample,
18+
CdkMenuStandaloneStatefulMenuExample,
2019
} from '@angular/components-examples/cdk/menu';
20+
import {ChangeDetectionStrategy, Component} from '@angular/core';
2121

2222
@Component({
2323
templateUrl: 'cdk-menu-demo.html',
@@ -33,6 +33,7 @@ import {
3333
CdkMenuContextExample,
3434
CdkMenuNestedContextExample,
3535
],
36+
changeDetection: ChangeDetectionStrategy.OnPush,
3637
})
3738
export class CdkMenuDemo {
3839
customPosition = [

src/dev-app/checkbox/checkbox-demo.ts

+5-3
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66
* found in the LICENSE file at https://angular.io/license
77
*/
88

9-
import {Component, Directive, ANIMATION_MODULE_TYPE} from '@angular/core';
10-
import {MatCheckboxModule, MAT_CHECKBOX_DEFAULT_OPTIONS} from '@angular/material/checkbox';
9+
import {CommonModule} from '@angular/common';
10+
import {ANIMATION_MODULE_TYPE, ChangeDetectionStrategy, Component, Directive} from '@angular/core';
1111
import {FormsModule, ReactiveFormsModule} from '@angular/forms';
12+
import {MAT_CHECKBOX_DEFAULT_OPTIONS, MatCheckboxModule} from '@angular/material/checkbox';
1213
import {MatPseudoCheckboxModule, ThemePalette} from '@angular/material/core';
1314
import {MatInputModule} from '@angular/material/input';
1415
import {MatSelectModule} from '@angular/material/select';
15-
import {CommonModule} from '@angular/common';
1616

1717
export interface Task {
1818
name: string;
@@ -51,6 +51,7 @@ export class AnimationsNoop {}
5151
templateUrl: 'nested-checklist.html',
5252
standalone: true,
5353
imports: [CommonModule, MatCheckboxModule, FormsModule],
54+
changeDetection: ChangeDetectionStrategy.OnPush,
5455
})
5556
export class MatCheckboxDemoNestedChecklist {
5657
tasks: Task[] = [
@@ -114,6 +115,7 @@ export class MatCheckboxDemoNestedChecklist {
114115
ClickActionCheck,
115116
AnimationsNoop,
116117
],
118+
changeDetection: ChangeDetectionStrategy.OnPush,
117119
})
118120
export class CheckboxDemo {
119121
isIndeterminate: boolean = false;

0 commit comments

Comments
 (0)