From f3f0fb8a70a9132097fd2014c4b87b9b255fefbd Mon Sep 17 00:00:00 2001
From: Kristiyan Kostadinov
Date: Mon, 6 Nov 2023 11:01:06 +0100
Subject: [PATCH] build: switch development apps to new control flow
Switches the dev and e2e apps to use the new control flow.
---
.../autocomplete/autocomplete-demo.html | 62 +--
src/dev-app/autocomplete/autocomplete-demo.ts | 6 +-
src/dev-app/badge/badge-demo.html | 6 +-
.../bottom-sheet/bottom-sheet-demo.html | 12 +-
src/dev-app/bottom-sheet/bottom-sheet-demo.ts | 10 +-
.../button-toggle/button-toggle-demo.html | 6 +-
src/dev-app/cdk-menu/cdk-menu-demo.html | 36 +-
src/dev-app/checkbox/checkbox-demo.html | 32 +-
src/dev-app/checkbox/nested-checklist.html | 35 +-
src/dev-app/chips/chips-demo.html | 133 ++++---
.../connected-overlay-demo.html | 6 +-
src/dev-app/datepicker/datepicker-demo.html | 110 ++++--
src/dev-app/dev-app/dev-app-layout.html | 18 +-
src/dev-app/drag-drop/drag-drop-demo.html | 52 +--
src/dev-app/example/example-list.ts | 24 +-
src/dev-app/example/example.ts | 18 +-
src/dev-app/expansion/expansion-demo.html | 36 +-
src/dev-app/focus-trap/focus-trap-demo.html | 11 +-
src/dev-app/google-map/google-map-demo.html | 372 ++++++++++--------
src/dev-app/grid-list/grid-list-demo.html | 54 +--
src/dev-app/input/input-demo.html | 80 ++--
src/dev-app/list/list-demo.html | 152 ++++---
src/dev-app/menu/menu-demo.html | 66 ++--
src/dev-app/performance/performance-demo.html | 26 +-
src/dev-app/performance/performance-demo.ts | 2 +-
src/dev-app/platform/platform-demo.html | 4 +-
src/dev-app/portal/portal-demo.html | 2 +-
src/dev-app/radio/radio-demo.html | 8 +-
src/dev-app/select/select-demo.html | 174 ++++----
src/dev-app/sidenav/sidenav-demo.html | 40 +-
src/dev-app/snack-bar/snack-bar-demo.html | 34 +-
src/dev-app/stepper/stepper-demo.html | 28 +-
.../table-scroll-container-demo.html | 72 ++--
.../youtube-player/youtube-player-demo.html | 6 +-
src/e2e-app/components/e2e-app/e2e-app.html | 10 +-
35 files changed, 988 insertions(+), 755 deletions(-)
diff --git a/src/dev-app/autocomplete/autocomplete-demo.html b/src/dev-app/autocomplete/autocomplete-demo.html
index 6bbe1e9bec6c..9296652d082f 100644
--- a/src/dev-app/autocomplete/autocomplete-demo.html
+++ b/src/dev-app/autocomplete/autocomplete-demo.html
@@ -21,11 +21,12 @@
[hideSingleSelectionIndicator]="reactiveHideSingleSelectionIndicator"
[autoActiveFirstOption]="reactiveAutoActiveFirstOption"
[requireSelection]="reactiveRequireSelection">
-
- {{ state.name }}
- ({{ state.code }})
-
+ @for (state of reactiveStates; track state; let index = $index) {
+
+ {{ state.name }}
+ ({{ state.code }})
+
+ }
@@ -66,21 +67,25 @@
Template-driven value (currentState): {{ currentState }}
Template-driven dirty: {{ modelDir ? modelDir.dirty : false }}
-
-
- State
-
-
-
- {{ state.name }}
-
-
-
+
+ @if (true) {
+
+ State
+
+
+ @for (state of tdStates; track state) {
+
+ {{ state.name }}
+
+ }
+
+
+ }
RESET
@@ -89,9 +94,9 @@
TOGGLE DISABLED
-
- {{theme.name}}
-
+ @for (theme of availableThemes; track theme) {
+ {{theme.name}}
+ }
@@ -141,8 +146,11 @@
-
- {{ state.name }}
-
+ @for (group of filteredGroupedStates; track group) {
+
+ @for (state of group.states; track state) {
+ {{ state.name }}
+ }
+
+ }
diff --git a/src/dev-app/autocomplete/autocomplete-demo.ts b/src/dev-app/autocomplete/autocomplete-demo.ts
index 08a9a9df027c..af551041dcde 100644
--- a/src/dev-app/autocomplete/autocomplete-demo.ts
+++ b/src/dev-app/autocomplete/autocomplete-demo.ts
@@ -224,9 +224,9 @@ export class AutocompleteDemo {
T-Shirt Size
-
- {{size}}
-
+ @for (size of sizes; track size) {
+ {{size}}
+ }
diff --git a/src/dev-app/badge/badge-demo.html b/src/dev-app/badge/badge-demo.html
index f25109539acf..9de265315fa1 100644
--- a/src/dev-app/badge/badge-demo.html
+++ b/src/dev-app/badge/badge-demo.html
@@ -54,9 +54,9 @@
Size
Text
-
- Hello
-
+ @if (visible) {
+
Hello
+ }
Hello
diff --git a/src/dev-app/bottom-sheet/bottom-sheet-demo.html b/src/dev-app/bottom-sheet/bottom-sheet-demo.html
index 7201ea582a44..e473b19169b9 100644
--- a/src/dev-app/bottom-sheet/bottom-sheet-demo.html
+++ b/src/dev-app/bottom-sheet/bottom-sheet-demo.html
@@ -36,10 +36,12 @@ Options
-
- folder
- Action {{ action }}
- Description
-
+ @for (action of [1, 2, 3]; track action) {
+
+ folder
+ Action {{ action }}
+ Description
+
+ }
diff --git a/src/dev-app/bottom-sheet/bottom-sheet-demo.ts b/src/dev-app/bottom-sheet/bottom-sheet-demo.ts
index 7e6b58a7d446..6f1e7fe52d97 100644
--- a/src/dev-app/bottom-sheet/bottom-sheet-demo.ts
+++ b/src/dev-app/bottom-sheet/bottom-sheet-demo.ts
@@ -70,10 +70,12 @@ export class BottomSheetDemo {
@Component({
template: `
-
- Action {{ action }}
- Description
-
+ @for (action of [1, 2, 3]; track action) {
+
+ Action {{ action }}
+ Description
+
+ }
`,
standalone: true,
diff --git a/src/dev-app/button-toggle/button-toggle-demo.html b/src/dev-app/button-toggle/button-toggle-demo.html
index a6db320b7973..b2cfc8186f3e 100644
--- a/src/dev-app/button-toggle/button-toggle-demo.html
+++ b/src/dev-app/button-toggle/button-toggle-demo.html
@@ -83,9 +83,9 @@ Single Toggle
Dynamic Exclusive Selection
-
- {{pie}}
-
+ @for (pie of pieOptions; track pie) {
+ {{pie}}
+ }
Your favorite type of pie is: {{favoritePie}}
diff --git a/src/dev-app/cdk-menu/cdk-menu-demo.html b/src/dev-app/cdk-menu/cdk-menu-demo.html
index ed790605b587..545b4ca0ce6e 100644
--- a/src/dev-app/cdk-menu/cdk-menu-demo.html
+++ b/src/dev-app/cdk-menu/cdk-menu-demo.html
@@ -145,48 +145,44 @@ Radio items
diff --git a/src/dev-app/checkbox/checkbox-demo.html b/src/dev-app/checkbox/checkbox-demo.html
index ce19e105b890..8bd338ef7ae5 100644
--- a/src/dev-app/checkbox/checkbox-demo.html
+++ b/src/dev-app/checkbox/checkbox-demo.html
@@ -151,7 +151,9 @@ Click action: check-indeterminate
[indeterminate]="demoIndeterminate"
(change)="demoChecked = $event.checked"
(indeterminateChange)="demoIndeterminate = $event">
- Checkbox w/ [checked] & (change)
+ @if (!demoHideLabel) {
+ Checkbox w/ [checked] & (change)
+ }
Click action: check-indeterminate
[indeterminate]="demoIndeterminate"
[(ngModel)]="demoChecked"
(indeterminateChange)="demoIndeterminate = $event">
- Checkbox w/ [(ngModel)]
+ @if (!demoHideLabel) {
+ Checkbox w/ [(ngModel)]
+ }
@@ -187,7 +191,9 @@
Click action: check
[indeterminate]="demoIndeterminate"
(change)="demoChecked = $event.checked"
(indeterminateChange)="demoIndeterminate = $event">
- Checkbox w/ [checked] & (change)
+ @if (!demoHideLabel) {
+ Checkbox w/ [checked] & (change)
+ }
Click action: check
[indeterminate]="demoIndeterminate"
[(ngModel)]="demoChecked"
(indeterminateChange)="demoIndeterminate = $event">
- Checkbox w/ [(ngModel)]
+ @if (!demoHideLabel) {
+ Checkbox w/ [(ngModel)]
+ }
@@ -223,7 +231,9 @@
Click action: noop
[indeterminate]="demoIndeterminate"
(change)="demoChecked = $event.checked"
(indeterminateChange)="demoIndeterminate = $event">
- Checkbox w/ [checked] & (change)
+ @if (!demoHideLabel) {
+ Checkbox w/ [checked] & (change)
+ }
Click action: noop
[indeterminate]="demoIndeterminate"
[(ngModel)]="demoChecked"
(indeterminateChange)="demoIndeterminate = $event">
- Checkbox w/ [(ngModel)]
+ @if (!demoHideLabel) {
+ Checkbox w/ [(ngModel)]
+ }
@@ -259,7 +271,9 @@
No animations
[indeterminate]="demoIndeterminate"
(change)="demoChecked = $event.checked"
(indeterminateChange)="demoIndeterminate = $event">
- Checkbox w/ [checked] & (change)
+ @if (!demoHideLabel) {
+ Checkbox w/ [checked] & (change)
+ }
No animations
[indeterminate]="demoIndeterminate"
[(ngModel)]="demoChecked"
(indeterminateChange)="demoIndeterminate = $event">
- Checkbox w/ [(ngModel)]
+ @if (!demoHideLabel) {
+ Checkbox w/ [(ngModel)]
+ }
diff --git a/src/dev-app/checkbox/nested-checklist.html b/src/dev-app/checkbox/nested-checklist.html
index 6a4ab3e617ab..7e41027b7fa7 100644
--- a/src/dev-app/checkbox/nested-checklist.html
+++ b/src/dev-app/checkbox/nested-checklist.html
@@ -1,18 +1,23 @@
Tasks
-
-
- {{task.name}}
-
-
-
-
- {{subtask.name}}
-
-
-
-
+ @for (task of tasks; track task) {
+
+
+ {{task.name}}
+
+
+ @for (subtask of task.subtasks; track subtask) {
+
+
+ {{subtask.name}}
+
+
+ }
+
+
+ }
diff --git a/src/dev-app/chips/chips-demo.html b/src/dev-app/chips/chips-demo.html
index 894a2a2c60b1..60b2ded6ec09 100644
--- a/src/dev-app/chips/chips-demo.html
+++ b/src/dev-app/chips/chips-demo.html
@@ -95,13 +95,15 @@ With avatar, icons, and color
With Events
-
- With Events
-
- cancel
-
-
+ @if (visible) {
+
+ With Events
+
+ cancel
+
+
+ }
{{message}}
@@ -122,19 +124,27 @@ With Events
Single selection
-
- {{shirtSize.label}}
- {{shirtSize.avatar}}
-
+ @for (shirtSize of shirtSizes; track shirtSize) {
+
+ {{shirtSize.label}}
+ @if (listboxesWithAvatar) {
+ {{shirtSize.avatar}}
+ }
+
+ }
Multi selection
-
- {{hint.avatar}}
- {{hint.label}}
-
+ @for (hint of restaurantHints; track hint) {
+
+ @if (listboxesWithAvatar) {
+ {{hint.avatar}}
+ }
+ {{hint.label}}
+
+ }
@@ -163,15 +173,17 @@ Input is last child of chip grid
New Contributor...
-
- {{person.name}}
-
- cancel
-
-
+ @for (person of people; track person) {
+
+ {{person.name}}
+
+ cancel
+
+
+ }
Input is next sibling child of chip grid
New Contributor...
-
- {{person.name}}
-
- cancel
-
-
+ @for (person of people; track person) {
+
+ {{person.name}}
+
+ cancel
+
+
+ }
Stacked
-
- {{aColor.name}}
-
+ @for (aColor of availableColors; track aColor) {
+ {{aColor.name}}
+ }
NgModel with multi selection
-
- {{aColor.name}}
-
+ @for (aColor of availableColors; track aColor) {
+ {{aColor.name}}
+ }
The selected colors are
-
- {{color}}{{isLast ? '' : ', '}} .
+ @for (color of selectedColors; track color; let isLast = $last) {
+ {{color}}{{isLast ? '' : ', '}}
+ }
NgModel with single selection
-
- {{aColor.name}}
-
+ @for (aColor of availableColors; track aColor) {
+ {{aColor.name}}
+ }
The selected color is {{selectedColor}}.
@@ -254,21 +266,22 @@ NgModel with single selection
Single selection without checkmark selection indicator.
-
- {{aColor.name}}
-
+ @for (aColor of availableColors; track aColor) {
+ {{aColor.name}}
+ }
Single selection with decorative icons.
-
- home
- {{aColor.name}}
- star
-
+ @for (aColor of availableColors; track aColor) {
+
+ home
+ {{aColor.name}}
+ star
+
+ }
The selected color is {{selectedColor}}.
@@ -276,11 +289,13 @@ Single selection with decorative icons.
Single selection with stacked appearance.
-
- {{aColor.name}}
- star
-
+ @for (aColor of availableColors; track aColor) {
+
+ {{aColor.name}}
+ star
+
+ }
The selected color is {{selectedColor}}.
diff --git a/src/dev-app/connected-overlay/connected-overlay-demo.html b/src/dev-app/connected-overlay/connected-overlay-demo.html
index c0d6bee6f8f6..ebdcea4a2014 100644
--- a/src/dev-app/connected-overlay/connected-overlay-demo.html
+++ b/src/dev-app/connected-overlay/connected-overlay-demo.html
@@ -111,7 +111,11 @@ Options
-
+
+ @for (item of itemArray; track item; let i = $index) {
+ {{itemText}} {{i}}
+ }
+
diff --git a/src/dev-app/datepicker/datepicker-demo.html b/src/dev-app/datepicker/datepicker-demo.html
index ccbb216015fe..f2132816a6c5 100644
--- a/src/dev-app/datepicker/datepicker-demo.html
+++ b/src/dev-app/datepicker/datepicker-demo.html
@@ -21,10 +21,12 @@ Options
[disabled]="inputDisabled" [max]="maxDate">
-
- Cancel
- Apply
-
+ @if (showActions) {
+
+ Cancel
+ Apply
+
+ }
@@ -33,10 +35,12 @@ Options
[disabled]="inputDisabled" [min]="minDate">
-
- Cancel
- Apply
-
+ @if (showActions) {
+
+ Cancel
+ Apply
+
+ }
@@ -47,10 +51,12 @@ Options
[disabled]="inputDisabled">
-
- Cancel
- Apply
-
+ @if (showActions) {
+
+ Cancel
+ Apply
+
+ }
@@ -78,17 +84,27 @@ Result
[startAt]="startAt"
[startView]="yearView ? 'year' : 'month'"
[color]="color">
-
- Cancel
- Apply
-
+ @if (showActions) {
+
+ Cancel
+ Apply
+
+ }
-
- "{{resultPickerModel.getError('matDatepickerParse').text}}" is not a valid date!
-
- Too early!
- Too late!
- Date unavailable!
+ @if (resultPickerModel.hasError('matDatepickerParse')) {
+
+ "{{resultPickerModel.getError('matDatepickerParse').text}}" is not a valid date!
+
+ }
+ @if (resultPickerModel.hasError('matDatepickerMin')) {
+ Too early!
+ }
+ @if (resultPickerModel.hasError('matDatepickerMax')) {
+ Too late!
+ }
+ @if (resultPickerModel.hasError('matDatepickerFilter')) {
+ Date unavailable!
+ }
Last input: {{lastDateInput}}
@@ -110,10 +126,12 @@ Result
[disabled]="datepickerDisabled"
[startAt]="startAt"
[startView]="yearView ? 'year' : 'month'">
-
- Cancel
- Apply
-
+ @if (showActions) {
+
+ Cancel
+ Apply
+
+ }
@@ -217,10 +235,12 @@ Range picker
[disabled]="datepickerDisabled"
[color]="color"
#range1Picker>
-
- Cancel
- Apply
-
+ @if (showActions) {
+
+ Cancel
+ Apply
+
+ }
{{range1.value | json}}
@@ -247,10 +267,12 @@ Range picker
[disabled]="datepickerDisabled"
panelClass="demo-custom-range"
#range2Picker>
-
- Cancel
- Apply
-
+ @if (showActions) {
+
+ Cancel
+ Apply
+
+ }
{{range2.value | json}}
@@ -276,10 +298,12 @@ Range picker
[touchUi]="touch"
[disabled]="datepickerDisabled"
#range3Picker>
-
- Cancel
- Apply
-
+ @if (showActions) {
+
+ Cancel
+ Apply
+
+ }
{{range3.value | json}}
@@ -296,10 +320,12 @@ Range picker with custom selection strategy
-
- Cancel
- Apply
-
+ @if (showActions) {
+
+ Cancel
+ Apply
+
+ }
diff --git a/src/dev-app/dev-app/dev-app-layout.html b/src/dev-app/dev-app/dev-app-layout.html
index b4b7829c0142..56eb8f7a8fa9 100644
--- a/src/dev-app/dev-app/dev-app-layout.html
+++ b/src/dev-app/dev-app/dev-app-layout.html
@@ -1,15 +1,15 @@
-
- {{navItem.name}}
-
+ @for (navItem of navItems; track navItem) {
+ {{navItem.name}}
+ }
diff --git a/src/dev-app/drag-drop/drag-drop-demo.html b/src/dev-app/drag-drop/drag-drop-demo.html
index 035c0125592e..5c011e0a1042 100644
--- a/src/dev-app/drag-drop/drag-drop-demo.html
+++ b/src/dev-app/drag-drop/drag-drop-demo.html
@@ -5,12 +5,13 @@ To do
cdkDropList
(cdkDropListDropped)="drop($event)"
[cdkDropListLockAxis]="axisLock"
- [cdkDropListData]="todo"
- >
-
- {{item}}
-
-
+ [cdkDropListData]="todo">
+ @for (item of todo; track item) {
+
+ {{item}}
+
+
+ }
@@ -20,12 +21,13 @@ Done
cdkDropList
(cdkDropListDropped)="drop($event)"
[cdkDropListLockAxis]="axisLock"
- [cdkDropListData]="done"
- >
-
- {{item}}
-
-
+ [cdkDropListData]="done">
+ @for (item of done; track item) {
+
+ {{item}}
+
+
+ }
@@ -38,12 +40,13 @@ Ages
cdkDropListOrientation="horizontal"
(cdkDropListDropped)="drop($event)"
[cdkDropListLockAxis]="axisLock"
- [cdkDropListData]="ages"
- >
-
- {{item}}
-
-
+ [cdkDropListData]="ages">
+ @for (item of ages; track item) {
+
+ {{item}}
+
+
+ }
@@ -54,12 +57,13 @@ Preferred Ages
cdkDropListOrientation="horizontal"
(cdkDropListDropped)="drop($event)"
[cdkDropListLockAxis]="axisLock"
- [cdkDropListData]="preferredAges"
- >
-
- {{item}}
-
-
+ [cdkDropListData]="preferredAges">
+ @for (item of preferredAges; track item) {
+
+ {{item}}
+
+
+ }
diff --git a/src/dev-app/example/example-list.ts b/src/dev-app/example/example-list.ts
index e7b6d5aa0c67..99b0363efea4 100644
--- a/src/dev-app/example/example-list.ts
+++ b/src/dev-app/example/example-list.ts
@@ -20,18 +20,20 @@ import {Example} from './example';
imports: [CommonModule, MatExpansionModule, Example],
template: `
-
-
-
-
+ @for (id of ids; track id) {
+
+
+
+
-
-
-
-
+
+
+
+
+ }
`,
styles: [
diff --git a/src/dev-app/example/example.ts b/src/dev-app/example/example.ts
index 3a1be014cb8f..6bef62e47864 100644
--- a/src/dev-app/example/example.ts
+++ b/src/dev-app/example/example.ts
@@ -24,14 +24,18 @@ import {
standalone: true,
imports: [CommonModule],
template: `
-
- {{title}}
- <{{id}}>
-
+ @if (showLabel) {
+
+ {{title}}
+ <{{id}}>
+
+ }
-
- Could not find example {{id}}
-
+ @if (!id) {
+
+ Could not find example {{id}}
+
+ }
`,
styles: [
`
diff --git a/src/dev-app/expansion/expansion-demo.html b/src/dev-app/expansion/expansion-demo.html
index 98b14ca6ada2..8a93eed0ea06 100644
--- a/src/dev-app/expansion/expansion-demo.html
+++ b/src/dev-app/expansion/expansion-demo.html
@@ -33,7 +33,9 @@ Single Expansion Panel
Expansion Panel Animation Events
- {{event}}
+ @for (event of events; track event) {
+ {{event}}
+ }
matAccordion
@@ -78,14 +80,18 @@ matAccordion
Section 2
This is the content text that makes sense here.
-
- Section 3
- Reveal Buttons Below
-
- OPEN SECTION 2
- CLOSE
-
-
+ @if (showPanel3) {
+
+ Section 3
+ Reveal Buttons Below
+ @if (showButtons.checked) {
+
+ OPEN SECTION 2
+ CLOSE
+
+ }
+
+ }
cdkAccordion
@@ -102,7 +108,9 @@ cdkAccordion
Expand
Collapse
- I only show if item 1 is expanded
+ @if (item1.expanded) {
+ I only show if item 1 is expanded
+ }
@@ -110,7 +118,9 @@
cdkAccordion
Expand
Collapse
- I only show if item 2 is expanded
+ @if (item2.expanded) {
+ I only show if item 2 is expanded
+ }
@@ -118,7 +128,9 @@
cdkAccordion
Expand
Collapse
- I only show if item 3 is expanded
+ @if (item3.expanded) {
+ I only show if item 3 is expanded
+ }
diff --git a/src/dev-app/focus-trap/focus-trap-demo.html b/src/dev-app/focus-trap/focus-trap-demo.html
index b4f488d6c79c..6a84b7a10728 100644
--- a/src/dev-app/focus-trap/focus-trap-demo.html
+++ b/src/dev-app/focus-trap/focus-trap-demo.html
@@ -65,8 +65,8 @@
Shadow DOMs
-
-
+
+ @if (_supportsShadowDom) {
{{shadowDomFocusTrap && shadowDomFocusTrap.enabled ? "Disable" : "Enable"}} FocusTrap
@@ -83,9 +83,10 @@
-
- Shadow DOM not supported
-
+ } @else {
+ Shadow DOM not supported
+ }
+
diff --git a/src/dev-app/google-map/google-map-demo.html b/src/dev-app/google-map/google-map-demo.html
index 9bb8317d2ab6..610b1141132f 100644
--- a/src/dev-app/google-map/google-map-demo.html
+++ b/src/dev-app/google-map/google-map-demo.html
@@ -1,174 +1,198 @@
-Loading Google Maps API...
-
+@if (hasLoaded) {
+
+} @else {
+ Loading Google Maps API...
+}
diff --git a/src/dev-app/grid-list/grid-list-demo.html b/src/dev-app/grid-list/grid-list-demo.html
index 10d526cf00c2..f467ea7f6a01 100644
--- a/src/dev-app/grid-list/grid-list-demo.html
+++ b/src/dev-app/grid-list/grid-list-demo.html
@@ -55,10 +55,12 @@
Fixed-height grid list
-
- {{tile.text}}
-
+ @for (tile of tiles; track tile) {
+
+ {{tile.text}}
+
+ }
@@ -72,9 +74,9 @@
Ratio-height grid list
-
- {{tile.text}}
-
+ @for (tile of tiles; track tile) {
+ {{tile.text}}
+ }
@@ -87,9 +89,9 @@
-
- {{tile.text}}
-
+ @for (tile of tiles; track tile) {
+ {{tile.text}}
+ }
@@ -102,12 +104,14 @@
Grid list with header
-
-
- info_outline
- {{dog.name}}
-
-
+ @for (dog of dogs; track dog) {
+
+
+ info_outline
+ {{dog.name}}
+
+
+ }
@@ -116,14 +120,16 @@
Grid list with footer
-
-
-
- {{dog.name}}
- Human: {{dog.human}}
- star_border
-
-
+ @for (dog of dogs; track dog) {
+
+
+
+ {{dog.name}}
+ Human: {{dog.human}}
+ star_border
+
+
+ }
diff --git a/src/dev-app/input/input-demo.html b/src/dev-app/input/input-demo.html
index b7b9f5344700..0742fa5c891e 100644
--- a/src/dev-app/input/input-demo.html
+++ b/src/dev-app/input/input-demo.html
@@ -73,12 +73,12 @@ Regular
Email
-
- This field is required
-
-
- Please enter a valid email address
-
+ @if (emailFormControl.hasError('required')) {
+ This field is required
+ }
+ @if (emailFormControl.hasError('pattern')) {
+ Please enter a valid email address
+ }
@@ -124,7 +124,9 @@ Text
Amount
- $
+ @if (showPrefix) {
+ $
+ }
.00
@@ -140,7 +142,9 @@ Icons
Amount
- calendar_today
+ @if (showPrefix) {
+ calendar_today
+ }
mode_edit
@@ -148,9 +152,11 @@ Icon buttons
Amount
-
- calendar_today
-
+ @if (showPrefix) {
+
+ calendar_today
+
+ }
mode_edit
@@ -162,9 +168,11 @@ Text & Icons
$
.00
-
- calendar_today
-
+ @if (showPrefix) {
+
+ calendar_today
+
+ }
mode_edit
@@ -491,21 +499,23 @@ Textarea
Add 1000
-
- {{i+1}}
-
-
- Value
-
-
-
-
-
-
- {{item.value}}
-
+ @for (item of items; track item; let i = $index) {
+
+ {{i+1}}
+
+
+ Value
+
+
+
+
+
+
+ {{item.value}}
+
+ }
@@ -730,7 +740,9 @@ <textarea> with bindable autosize
- {{option}}
+ @for (option of options; track option) {
+ {{option}}
+ }
@@ -741,7 +753,9 @@ <textarea> with bindable autosize
- {{option}}
+ @for (option of options; track option) {
+ {{option}}
+ }
@@ -776,7 +790,9 @@ <textarea> with bindable autosize
Amount
$
- !
+ @if (showSecondPrefix) {
+ !
+ }
.00
diff --git a/src/dev-app/list/list-demo.html b/src/dev-app/list/list-demo.html
index 2be72e3bbba6..5edc6cdfa7d0 100644
--- a/src/dev-app/list/list-demo.html
+++ b/src/dev-app/list/list-demo.html
@@ -11,45 +11,57 @@ Normal lists
Items
-
- {{item}}
-
+ @for (item of items; track item) {
+ {{item}}
+ }
-
- {{contact.name}}
- extra line
- {{contact.headline}}
-
+ @for (contact of contacts; track contact) {
+
+ {{contact.name}}
+ @if (thirdLine) {
+ extra line
+ }
+ {{contact.headline}}
+
+ }
Today
-
-
- {{message.from}}
-
- {{message.subject}} --
- {{message.message}}
-
-
-
+ @for (message of messages; track message) {
+
+
+ {{message.from}}
+
+ {{message.subject}} --
+ {{message.message}}
+
+ @if (!$last) {
+
+ }
+
+ }
-
- {{message.from}}
- {{message.subject}}
- {{message.message}}
-
+ @for (message of messages; track message) {
+
+ {{message.from}}
+ {{message.subject}}
+ {{message.message}}
+
+ }
-
- {{ link.name }}
-
- info
-
-
+ @for (link of links; track link) {
+
+ {{ link.name }}
+
+ info
+
+
+ }
@@ -57,61 +69,71 @@ Normal lists
Dense lists
Items
-
- {{item}}
-
+ @for (item of items; track item) {
+ {{item}}
+ }
-
- {{contact.name}}
- {{contact.headline}}
-
+ @for (contact of contacts; track contact) {
+
+ {{contact.name}}
+ {{contact.headline}}
+
+ }
Today
-
-
- {{message.from}}
- {{message.subject}}
- {{message.message}}
-
+ @for (message of messages; track message) {
+
+
+ {{message.from}}
+ {{message.subject}}
+ {{message.message}}
+
+ }
-
- {{ link.name }}
-
- info
-
-
+ @for (link of links; track link) {
+
+ {{ link.name }}
+
+ info
+
+
+ }
Action list
-
- {{link.name}}
-
+ @for (link of links; track link) {
+ {{link.name}}
+ }
@@ -228,10 +250,12 @@ Line scenarios
Line alignment
-
- {{ link.name }}
- Unscoped content
-
+ @for (link of links; track link) {
+
+ {{ link.name }}
+ Unscoped content
+
+ }
diff --git a/src/dev-app/menu/menu-demo.html b/src/dev-app/menu/menu-demo.html
index 7638e8012d0e..69338bb190e8 100644
--- a/src/dev-app/menu/menu-demo.html
+++ b/src/dev-app/menu/menu-demo.html
@@ -9,9 +9,11 @@
-
- {{ item.text }}
-
+ @for (item of items; track item) {
+
+ {{ item.text }}
+
+ }
@@ -146,9 +152,9 @@
-
- {{ item.text }}
-
+ @for (item of items; track item) {
+ {{ item.text }}
+ }
diff --git a/src/dev-app/performance/performance-demo.html b/src/dev-app/performance/performance-demo.html
index 73466ba93973..2cfd68c5f975 100644
--- a/src/dev-app/performance/performance-demo.html
+++ b/src/dev-app/performance/performance-demo.html
@@ -36,10 +36,14 @@
No.
{{ item.index }}
-
+ @if (allSamples.length) {
+
Average render time
-
- No data yet
+
+}
+ @if (!allSamples.length) {
+ No data yet
+}
@@ -65,26 +69,32 @@
>
+@if (allSamples.length) {
Clear Metrics
+}
Run Benchmark
-
-
+@if (show) {
+
+ @for (_ of componentArray; track _) {
+
Input
-
-
+
+}
+
+}
diff --git a/src/dev-app/performance/performance-demo.ts b/src/dev-app/performance/performance-demo.ts
index 7e0b17bc4b68..612c2dda3dd6 100644
--- a/src/dev-app/performance/performance-demo.ts
+++ b/src/dev-app/performance/performance-demo.ts
@@ -64,7 +64,7 @@ export class PerformanceDemo implements AfterViewInit {
/** The average plus/minus the stdev. */
computedResults = '';
- /** Used in an ngFor to render the desired number of comonents. */
+ /** Used in an `@for` to render the desired number of comonents. */
componentArray = [].constructor(this.componentCount);
/** The standard deviation of the recorded samples. */
diff --git a/src/dev-app/platform/platform-demo.html b/src/dev-app/platform/platform-demo.html
index 79397500200e..012cfba294d4 100644
--- a/src/dev-app/platform/platform-demo.html
+++ b/src/dev-app/platform/platform-demo.html
@@ -9,5 +9,7 @@
Supported input types:
- {{type}},
+ @for (type of supportedInputTypes; track type) {
+ {{type}},
+ }
diff --git a/src/dev-app/portal/portal-demo.html b/src/dev-app/portal/portal-demo.html
index bdb0e648447c..e6aaefc7b2c8 100644
--- a/src/dev-app/portal/portal-demo.html
+++ b/src/dev-app/portal/portal-demo.html
@@ -21,7 +21,7 @@ The portal outlet is here:
diff --git a/src/dev-app/radio/radio-demo.html b/src/dev-app/radio/radio-demo.html
index 2c11becb2327..35a4def520db 100644
--- a/src/dev-app/radio/radio-demo.html
+++ b/src/dev-app/radio/radio-demo.html
@@ -55,9 +55,11 @@ Favorite Season Example
Dynamic Example with two-way data-binding
-
- {{season}}
-
+ @for (season of seasonOptions; track season) {
+
+ {{season}}
+
+ }
Your favorite season is: {{favoriteSeason}}
diff --git a/src/dev-app/select/select-demo.html b/src/dev-app/select/select-demo.html
index 5eee7a9ee2ce..190d3ed68ff7 100644
--- a/src/dev-app/select/select-demo.html
+++ b/src/dev-app/select/select-demo.html
@@ -13,10 +13,12 @@
None
-
- {{ drink.viewValue }}
-
+ @for (drink of drinks; track drink; let index = $index) {
+
+ {{ drink.viewValue }}
+
+ }
local_drink
Pick a drink!
@@ -44,9 +46,9 @@
Theme:
-
- {{theme.name}}
-
+ @for (theme of availableThemes; track theme) {
+ {{theme.name}}
+ }
@@ -73,9 +75,11 @@
Pokemon
-
- {{ creature.viewValue }}
-
+ @for (creature of pokemon; track creature) {
+
+ {{ creature.viewValue }}
+
+ }
Value: {{ currentPokemon }}
@@ -85,7 +89,9 @@
Theme:
- {{ theme.name }}
+ @for (theme of availableThemes; track theme) {
+ {{ theme.name }}
+ }
SET VALUE
@@ -104,9 +110,9 @@
Digimon
None
-
- {{ creature.viewValue }}
-
+ @for (creature of digimon; track creature) {
+ {{ creature.viewValue }}
+ }
@@ -124,12 +130,13 @@
Pokemon
-
-
- {{ creature.viewValue }}
-
-
+ @for (group of pokemonGroups; track group) {
+
+ @for (creature of group.pokemon; track creature) {
+ {{ creature.viewValue }}
+ }
+
+ }
@@ -145,9 +152,9 @@
[required]="drinkObjectRequired"
[compareWith]="compareByValue ? compareDrinkObjectsByValue : compareByReference"
#drinkObjectControl="ngModel">
-
- {{ drink.viewValue }}
-
+ @for (drink of drinks; track drink) {
+ {{ drink.viewValue }}
+ }
Value: {{ currentDrinkObject | json }}
@@ -174,9 +181,9 @@
Fill
None
-
- {{ creature.viewValue }}
-
+ @for (creature of digimon; track creature) {
+ {{ creature.viewValue }}
+ }
@@ -186,9 +193,9 @@
Outline
None
-
- {{ creature.viewValue }}
-
+ @for (creature of digimon; track creature) {
+ {{ creature.viewValue }}
+ }
@@ -197,45 +204,52 @@
-
-
- formControl
+ @if (showSelect) {
+
+
+ formControl
-
-
- Food I would like to eat
-
- {{ food.viewValue }}
-
-
- Value: {{ foodControl.value }}
- Touched: {{ foodControl.touched }}
- Dirty: {{ foodControl.dirty }}
- Status: {{ foodControl.status }}
- SET VALUE
- TOGGLE DISABLED
- RESET
-
-
-
+
+
+ Food I would like to eat
+
+ @for (food of foods; track food) {
+ {{ food.viewValue }}
+ }
+
+
+ Value: {{ foodControl.value }}
+ Touched: {{ foodControl.touched }}
+ Dirty: {{ foodControl.dirty }}
+ Status: {{ foodControl.status }}
+ SET VALUE
+ TOGGLE DISABLED
+ RESET
+
+
+
+ }
-
-
- Change event
+ @if (showSelect) {
+
+
+ Change event
-
-
- Starter pokemon
-
- {{ creature.viewValue }}
-
-
-
- Change event value: {{ latestChangeEvent?.value }}
-
-
-
+
+
+ Starter pokemon
+
+ @for (creature of pokemon; track creature) {
+ {{ creature.viewValue }}
+ }
+
+
+ Change event value: {{ latestChangeEvent?.value }}
+
+
+
+ }
@@ -342,9 +356,9 @@ Error message, hint, form sumbit
Mercedes
Audi
-
- This field is required
-
+ @if (selectFormControl.hasError('required')) {
+ This field is required
+ }
You can pick up your favorite car here
@@ -357,9 +371,9 @@ Error message with errorStateMatcher
Mercedes
Audi
-
- This field is required
-
+ @if (selectFormControl.hasError('required')) {
+ This field is required
+ }
You can pick up your favorite car here
Submit
@@ -375,27 +389,27 @@ Error message with errorStateMatcher
Bread
-
- {{ bread.viewValue }}
-
+ @for (bread of breads; track bread) {
+ {{ bread.viewValue }}
+ }
Meat
-
- {{ meat.viewValue }}
-
+ @for (meat of meats; track meat) {
+ {{ meat.viewValue }}
+ }
Cheese
-
- {{ cheese.viewValue }}
-
+ @for (cheese of cheeses; track cheese) {
+ {{ cheese.viewValue }}
+ }
@@ -403,4 +417,4 @@ Error message with errorStateMatcher
Hide Single-Selection Indicator
-
\ No newline at end of file
+
diff --git a/src/dev-app/sidenav/sidenav-demo.html b/src/dev-app/sidenav/sidenav-demo.html
index 7df77ef46f58..f7d461e9b827 100644
--- a/src/dev-app/sidenav/sidenav-demo.html
+++ b/src/dev-app/sidenav/sidenav-demo.html
@@ -1,9 +1,8 @@
-
- Launch Fullscreen Sidenav Demo
-
-
-
-
Header
+@if (isLaunched) {
+
+ @if (showHeader && !coverHeader) {
+
Header
+ }
@@ -17,7 +16,9 @@
Mode: {{start.mode}}
- Filler Content
+ @for (c of fillerContent; track c) {
+ Filler Content
+ }
Close
- Filler Content
+ @for (c of fillerContent; track c) {
+ Filler Content
+ }
- Header
+ @if (showHeader && coverHeader) {
+ Header
+ }
@@ -52,10 +57,21 @@ Header / Footer
Show footer
-
Filler Content
+ @for (c of fillerContent; track c) {
+
Filler Content
+ }
- Footer
+ @if (showFooter && coverHeader) {
+ Footer
+ }
-
Footer
+ @if (showFooter && !coverHeader) {
+
Footer
+ }
+} @else {
+
+ Launch Fullscreen Sidenav Demo
+
+}
diff --git a/src/dev-app/snack-bar/snack-bar-demo.html b/src/dev-app/snack-bar/snack-bar-demo.html
index 080876020a1c..26d54831feb0 100644
--- a/src/dev-app/snack-bar/snack-bar-demo.html
+++ b/src/dev-app/snack-bar/snack-bar-demo.html
@@ -25,24 +25,30 @@
SnackBar demo
diff --git a/src/dev-app/stepper/stepper-demo.html b/src/dev-app/stepper/stepper-demo.html
index 9b6004bb2d8d..1dd2a5e94cda 100644
--- a/src/dev-app/stepper/stepper-demo.html
+++ b/src/dev-app/stepper/stepper-demo.html
@@ -16,7 +16,9 @@
Theme
- {{theme.name}}
+ @for (theme of availableThemes; track theme) {
+ {{theme.name}}
+ }
@@ -231,17 +233,19 @@ Horizontal Stepper Demo with Text Label
Horizontal Stepper Demo with Templated Label
-
- {{step.label}}
-
- Answer
-
-
-
- Back
- Next
-
-
+ @for (step of steps; track step) {
+
+ {{step.label}}
+
+ Answer
+
+
+
+ Back
+ Next
+
+
+ }
Stepper with autosize textarea
diff --git a/src/dev-app/table-scroll-container/table-scroll-container-demo.html b/src/dev-app/table-scroll-container/table-scroll-container-demo.html
index 21aa8b40398d..69229922693e 100644
--- a/src/dev-app/table-scroll-container/table-scroll-container-demo.html
+++ b/src/dev-app/table-scroll-container/table-scroll-container-demo.html
@@ -35,46 +35,46 @@
-
-
-
- Position
- {{element.position}}
- Position Footer
-
+@for (table of tables; track table) {
+
+
+
+ Position
+ {{element.position}}
+ Position Footer
+
-
- Name
- {{element.name}}
- Name Footer
-
+
+ Name
+ {{element.name}}
+ Name Footer
+
-
- Weight
- {{element.weight}}
- Weight Footer
-
+
+ Weight
+ {{element.weight}}
+ Weight Footer
+
-
- Symbol
- {{element.symbol}}
- Symbol Footer
-
+
+ Symbol
+ {{element.symbol}}
+ Symbol Footer
+
-
- Filler header cell
- Filler data cell
- Filler footer cell
-
+
+ Filler header cell
+ Filler data cell
+ Filler footer cell
+
-
-
+
+
-
+
-
-
-
-
+
+
+
+
+}
diff --git a/src/dev-app/youtube-player/youtube-player-demo.html b/src/dev-app/youtube-player/youtube-player-demo.html
index a7ff2eb4c615..5a8a04f8c6c2 100644
--- a/src/dev-app/youtube-player/youtube-player-demo.html
+++ b/src/dev-app/youtube-player/youtube-player-demo.html
@@ -4,9 +4,9 @@ Basic Example
Pick the video:
-
- {{video.name}}
-
+ @for (video of videos; track video) {
+ {{video.name}}
+ }
Unset
diff --git a/src/e2e-app/components/e2e-app/e2e-app.html b/src/e2e-app/components/e2e-app/e2e-app.html
index d948ef73a18f..7bfa37644fa5 100644
--- a/src/e2e-app/components/e2e-app/e2e-app.html
+++ b/src/e2e-app/components/e2e-app/e2e-app.html
@@ -1,9 +1,13 @@
Toggle Navigation Links
-
- {{link.title}}
-
+ @if (showLinks) {
+
+ @for (link of navLinks; track link) {
+ {{link.title}}
+ }
+
+ }