diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index df8bfecc1bbf..468c257a3792 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -111,9 +111,10 @@
/src/dev-app/connected-overlay/** @jelbourn @crisbeto
/src/dev-app/dataset/** @andrewseguin
/src/dev-app/datepicker/** @mmalerba
+/src/dev-app/dev-app-layout/** @mmalerba
/src/dev-app/dialog/** @jelbourn @crisbeto
-/src/dev-app/drawer/** @mmalerba
/src/dev-app/drag-drop/** @crisbeto
+/src/dev-app/drawer/** @mmalerba
/src/dev-app/example/** @andrewseguin
/src/dev-app/examples-page/** @andrewseguin
/src/dev-app/expansion/** @josephperrott
@@ -123,8 +124,8 @@
/src/dev-app/icon/** @jelbourn
/src/dev-app/input/** @mmalerba
/src/dev-app/list/** @jelbourn @crisbeto @devversion
-/src/dev-app/menu/** @crisbeto
/src/dev-app/live-announcer/** @jelbourn
+/src/dev-app/menu/** @crisbeto
/src/dev-app/overlay/** @jelbourn @crisbeto
/src/dev-app/paginator/** @andrewseguin
/src/dev-app/platform/** @jelbourn @devversion
diff --git a/src/dev-app/autocomplete/autocomplete-demo-module.ts b/src/dev-app/autocomplete/autocomplete-demo-module.ts
new file mode 100644
index 000000000000..2e51b6f154f2
--- /dev/null
+++ b/src/dev-app/autocomplete/autocomplete-demo-module.ts
@@ -0,0 +1,35 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {CommonModule} from '@angular/common';
+import {NgModule} from '@angular/core';
+import {FormsModule, ReactiveFormsModule} from '@angular/forms';
+import {
+ MatAutocompleteModule,
+ MatButtonModule,
+ MatCardModule,
+ MatFormFieldModule,
+ MatInputModule
+} from '@angular/material';
+import {AutocompleteDemo} from './autocomplete-demo';
+
+@NgModule({
+ imports: [
+ CommonModule,
+ FormsModule,
+ MatAutocompleteModule,
+ MatButtonModule,
+ MatCardModule,
+ MatFormFieldModule,
+ MatInputModule,
+ ReactiveFormsModule,
+ ],
+ declarations: [AutocompleteDemo],
+})
+export class AutocompleteDemoModule {
+}
diff --git a/src/dev-app/badge/badge-demo-module.ts b/src/dev-app/badge/badge-demo-module.ts
new file mode 100644
index 000000000000..7a3da62d0154
--- /dev/null
+++ b/src/dev-app/badge/badge-demo-module.ts
@@ -0,0 +1,26 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {CommonModule} from '@angular/common';
+import {NgModule} from '@angular/core';
+import {FormsModule} from '@angular/forms';
+import {MatBadgeModule, MatButtonModule, MatIconModule} from '@angular/material';
+import {BadgeDemo} from './badge-demo';
+
+@NgModule({
+ imports: [
+ CommonModule,
+ FormsModule,
+ MatBadgeModule,
+ MatButtonModule,
+ MatIconModule,
+ ],
+ declarations: [BadgeDemo],
+})
+export class BadgeDemoModule {
+}
diff --git a/src/dev-app/baseline/baseline-demo-module.ts b/src/dev-app/baseline/baseline-demo-module.ts
new file mode 100644
index 000000000000..337c361b095c
--- /dev/null
+++ b/src/dev-app/baseline/baseline-demo-module.ts
@@ -0,0 +1,36 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {CommonModule} from '@angular/common';
+import {NgModule} from '@angular/core';
+import {
+ MatCardModule,
+ MatCheckboxModule,
+ MatFormFieldModule,
+ MatInputModule,
+ MatRadioModule,
+ MatSelectModule,
+ MatToolbarModule
+} from '@angular/material';
+import {BaselineDemo} from './baseline-demo';
+
+@NgModule({
+ imports: [
+ CommonModule,
+ MatCardModule,
+ MatCheckboxModule,
+ MatFormFieldModule,
+ MatInputModule,
+ MatRadioModule,
+ MatSelectModule,
+ MatToolbarModule,
+ ],
+ declarations: [BaselineDemo],
+})
+export class BaselineDemoModule {
+}
diff --git a/src/dev-app/bottom-sheet/bottom-sheet-demo-module.ts b/src/dev-app/bottom-sheet/bottom-sheet-demo-module.ts
new file mode 100644
index 000000000000..af0e6f8c16d6
--- /dev/null
+++ b/src/dev-app/bottom-sheet/bottom-sheet-demo-module.ts
@@ -0,0 +1,43 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {CommonModule} from '@angular/common';
+import {NgModule} from '@angular/core';
+import {FormsModule} from '@angular/forms';
+import {
+ MatBottomSheetModule,
+ MatButtonModule,
+ MatCardModule,
+ MatCheckboxModule,
+ MatFormFieldModule,
+ MatIconModule,
+ MatInputModule,
+ MatListModule,
+ MatSelectModule
+} from '@angular/material';
+import {BottomSheetDemo, ExampleBottomSheet} from './bottom-sheet-demo';
+
+@NgModule({
+ imports: [
+ CommonModule,
+ FormsModule,
+ MatBottomSheetModule,
+ MatButtonModule,
+ MatCardModule,
+ MatCheckboxModule,
+ MatFormFieldModule,
+ MatIconModule,
+ MatInputModule,
+ MatListModule,
+ MatSelectModule,
+ ],
+ declarations: [BottomSheetDemo, ExampleBottomSheet],
+ entryComponents: [ExampleBottomSheet],
+})
+export class BottomSheetDemoModule {
+}
diff --git a/src/dev-app/button-toggle/button-toggle-demo-module.ts b/src/dev-app/button-toggle/button-toggle-demo-module.ts
new file mode 100644
index 000000000000..44d4d66aeaed
--- /dev/null
+++ b/src/dev-app/button-toggle/button-toggle-demo-module.ts
@@ -0,0 +1,26 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {CommonModule} from '@angular/common';
+import {NgModule} from '@angular/core';
+import {FormsModule} from '@angular/forms';
+import {MatButtonToggleModule, MatCheckboxModule, MatIconModule} from '@angular/material';
+import {ButtonToggleDemo} from './button-toggle-demo';
+
+@NgModule({
+ imports: [
+ CommonModule,
+ FormsModule,
+ MatButtonToggleModule,
+ MatCheckboxModule,
+ MatIconModule,
+ ],
+ declarations: [ButtonToggleDemo],
+})
+export class ButtonToggleDemoModule {
+}
diff --git a/src/dev-app/button/button-demo-module.ts b/src/dev-app/button/button-demo-module.ts
new file mode 100644
index 000000000000..c5a845b242fb
--- /dev/null
+++ b/src/dev-app/button/button-demo-module.ts
@@ -0,0 +1,21 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {NgModule} from '@angular/core';
+import {MatButtonModule, MatIconModule} from '@angular/material';
+import {ButtonDemo} from './button-demo';
+
+@NgModule({
+ imports: [
+ MatButtonModule,
+ MatIconModule,
+ ],
+ declarations: [ButtonDemo],
+})
+export class ButtonDemoModule {
+}
diff --git a/src/dev-app/card/card-demo-module.ts b/src/dev-app/card/card-demo-module.ts
new file mode 100644
index 000000000000..20c5993cb15b
--- /dev/null
+++ b/src/dev-app/card/card-demo-module.ts
@@ -0,0 +1,28 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {NgModule} from '@angular/core';
+import {
+ MatButtonModule,
+ MatCardModule,
+ MatDividerModule,
+ MatProgressBarModule
+} from '@angular/material';
+import {CardDemo} from './card-demo';
+
+@NgModule({
+ imports: [
+ MatButtonModule,
+ MatCardModule,
+ MatDividerModule,
+ MatProgressBarModule,
+ ],
+ declarations: [CardDemo],
+})
+export class CardDemoModule {
+}
diff --git a/src/dev-app/checkbox/checkbox-demo-module.ts b/src/dev-app/checkbox/checkbox-demo-module.ts
new file mode 100644
index 000000000000..92d7963a6fdd
--- /dev/null
+++ b/src/dev-app/checkbox/checkbox-demo-module.ts
@@ -0,0 +1,25 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {CommonModule} from '@angular/common';
+import {NgModule} from '@angular/core';
+import {FormsModule} from '@angular/forms';
+import {MatCheckboxModule, MatPseudoCheckboxModule} from '@angular/material';
+import {CheckboxDemo, MatCheckboxDemoNestedChecklist} from './checkbox-demo';
+
+@NgModule({
+ imports: [
+ CommonModule,
+ FormsModule,
+ MatCheckboxModule,
+ MatPseudoCheckboxModule,
+ ],
+ declarations: [CheckboxDemo, MatCheckboxDemoNestedChecklist],
+})
+export class CheckboxDemoModule {
+}
diff --git a/src/dev-app/chips/chips-demo-module.ts b/src/dev-app/chips/chips-demo-module.ts
new file mode 100644
index 000000000000..cf83265f3666
--- /dev/null
+++ b/src/dev-app/chips/chips-demo-module.ts
@@ -0,0 +1,38 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {CommonModule} from '@angular/common';
+import {NgModule} from '@angular/core';
+import {FormsModule} from '@angular/forms';
+import {
+ MatButtonModule,
+ MatCardModule,
+ MatCheckboxModule,
+ MatChipsModule,
+ MatFormFieldModule,
+ MatIconModule,
+ MatToolbarModule
+} from '@angular/material';
+import {ChipsDemo} from './chips-demo';
+
+@NgModule({
+ imports: [
+ CommonModule,
+ FormsModule,
+ MatButtonModule,
+ MatCardModule,
+ MatCheckboxModule,
+ MatChipsModule,
+ MatFormFieldModule,
+ MatIconModule,
+ MatToolbarModule,
+ ],
+ declarations: [ChipsDemo],
+})
+export class ChipsDemoModule {
+}
diff --git a/src/dev-app/connected-overlay/connected-overlay-demo-module.ts b/src/dev-app/connected-overlay/connected-overlay-demo-module.ts
new file mode 100644
index 000000000000..db91cfb45ea1
--- /dev/null
+++ b/src/dev-app/connected-overlay/connected-overlay-demo-module.ts
@@ -0,0 +1,28 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {OverlayModule} from '@angular/cdk/overlay';
+import {CommonModule} from '@angular/common';
+import {NgModule} from '@angular/core';
+import {FormsModule} from '@angular/forms';
+import {MatButtonModule, MatCheckboxModule, MatRadioModule} from '@angular/material';
+import {ConnectedOverlayDemo} from './connected-overlay-demo';
+
+@NgModule({
+ imports: [
+ CommonModule,
+ FormsModule,
+ MatButtonModule,
+ MatCheckboxModule,
+ MatRadioModule,
+ OverlayModule,
+ ],
+ declarations: [ConnectedOverlayDemo],
+})
+export class ConnectedOverlayDemoModule {
+}
diff --git a/src/dev-app/datepicker/datepicker-demo-module.ts b/src/dev-app/datepicker/datepicker-demo-module.ts
new file mode 100644
index 000000000000..8d867369e708
--- /dev/null
+++ b/src/dev-app/datepicker/datepicker-demo-module.ts
@@ -0,0 +1,40 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {CommonModule} from '@angular/common';
+import {NgModule} from '@angular/core';
+import {FormsModule, ReactiveFormsModule} from '@angular/forms';
+import {
+ MatButtonModule,
+ MatCheckboxModule,
+ MatDatepickerModule,
+ MatFormFieldModule,
+ MatIconModule,
+ MatInputModule,
+ MatSelectModule
+} from '@angular/material';
+import {CustomHeader, CustomHeaderNgContent, DatepickerDemo} from './datepicker-demo';
+
+@NgModule({
+ imports: [
+ CommonModule,
+ FormsModule,
+ MatButtonModule,
+ MatCheckboxModule,
+ MatDatepickerModule,
+ MatFormFieldModule,
+ MatIconModule,
+ MatInputModule,
+ MatSelectModule,
+ ReactiveFormsModule,
+ ],
+ declarations: [CustomHeader, CustomHeaderNgContent, DatepickerDemo],
+ entryComponents: [CustomHeader, CustomHeaderNgContent],
+})
+export class DatepickerDemoModule {
+}
diff --git a/src/dev-app/dev-app-layout/dev-app-layout-module.ts b/src/dev-app/dev-app-layout/dev-app-layout-module.ts
new file mode 100644
index 000000000000..c9c13e40cda4
--- /dev/null
+++ b/src/dev-app/dev-app-layout/dev-app-layout-module.ts
@@ -0,0 +1,35 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {CommonModule} from '@angular/common';
+import {NgModule} from '@angular/core';
+import {
+ MatButtonModule,
+ MatIconModule,
+ MatListModule,
+ MatSidenavModule,
+ MatToolbarModule
+} from '@angular/material';
+import {RouterModule} from '@angular/router';
+import {DevAppLayout} from './dev-app-layout';
+
+@NgModule({
+ imports: [
+ CommonModule,
+ MatButtonModule,
+ MatIconModule,
+ MatListModule,
+ MatSidenavModule,
+ MatToolbarModule,
+ RouterModule,
+ ],
+ declarations: [DevAppLayout],
+ exports: [DevAppLayout],
+})
+export class DevAppLayoutModule {
+}
diff --git a/src/dev-app/dev-app.html b/src/dev-app/dev-app-layout/dev-app-layout.html
similarity index 97%
rename from src/dev-app/dev-app.html
rename to src/dev-app/dev-app-layout/dev-app-layout.html
index 9775c6307d13..2ccf16086577 100644
--- a/src/dev-app/dev-app.html
+++ b/src/dev-app/dev-app-layout/dev-app-layout.html
@@ -46,7 +46,7 @@
Angular Material Demos
-
+
diff --git a/src/dev-app/dev-app.scss b/src/dev-app/dev-app-layout/dev-app-layout.scss
similarity index 100%
rename from src/dev-app/dev-app.scss
rename to src/dev-app/dev-app-layout/dev-app-layout.scss
diff --git a/src/dev-app/dev-app-layout/dev-app-layout.ts b/src/dev-app/dev-app-layout/dev-app-layout.ts
new file mode 100644
index 000000000000..85d0769bd3a0
--- /dev/null
+++ b/src/dev-app/dev-app-layout/dev-app-layout.ts
@@ -0,0 +1,102 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {OverlayContainer} from '@angular/cdk/overlay';
+import {Component, ElementRef, ViewEncapsulation} from '@angular/core';
+import {DevAppRippleOptions} from '../ripple/ripple-options';
+
+/** Root component for the dev-app demos. */
+@Component({
+ moduleId: module.id,
+ selector: 'dev-app-layout',
+ templateUrl: 'dev-app-layout.html',
+ styleUrls: ['dev-app-layout.css'],
+ encapsulation: ViewEncapsulation.None,
+})
+export class DevAppLayout {
+ dark = false;
+ navItems = [
+ {name: 'Examples', route: '/examples'},
+ {name: 'Autocomplete', route: '/autocomplete'},
+ {name: 'Badge', route: '/badge'},
+ {name: 'Bottom sheet', route: '/bottom-sheet'},
+ {name: 'Button Toggle', route: '/button-toggle'},
+ {name: 'Button', route: '/button'},
+ {name: 'Card', route: '/card'},
+ {name: 'Chips', route: '/chips'},
+ {name: 'Connected Overlay', route: '/connected-overlay'},
+ {name: 'Checkbox', route: '/checkbox'},
+ {name: 'Chips', route: '/chips'},
+ {name: 'Datepicker', route: '/datepicker'},
+ {name: 'Dialog', route: '/dialog'},
+ {name: 'Drawer', route: '/drawer'},
+ {name: 'Drag and Drop', route: '/drag-drop'},
+ {name: 'Expansion Panel', route: '/expansion'},
+ {name: 'Focus Origin', route: '/focus-origin'},
+ {name: 'Gestures', route: '/gestures'},
+ {name: 'Grid List', route: '/grid-list'},
+ {name: 'Icon', route: '/icon'},
+ {name: 'Input', route: '/input'},
+ {name: 'List', route: '/list'},
+ {name: 'Live Announcer', route: '/live-announcer'},
+ {name: 'Menu', route: '/menu'},
+ {name: 'Paginator', route: '/paginator'},
+ {name: 'Platform', route: '/platform'},
+ {name: 'Portal', route: '/portal'},
+ {name: 'Progress Bar', route: '/progress-bar'},
+ {name: 'Progress Spinner', route: '/progress-spinner'},
+ {name: 'Radio', route: '/radio'},
+ {name: 'Ripple', route: '/ripple'},
+ {name: 'Screen Type', route: '/screen-type'},
+ {name: 'Select', route: '/select'},
+ {name: 'Sidenav', route: '/sidenav'},
+ {name: 'Slide Toggle', route: '/slide-toggle'},
+ {name: 'Slider', route: '/slider'},
+ {name: 'Snack Bar', route: '/snack-bar'},
+ {name: 'Stepper', route: '/stepper'},
+ {name: 'Table', route: '/table'},
+ {name: 'Tabs', route: '/tabs'},
+ {name: 'Toolbar', route: '/toolbar'},
+ {name: 'Tooltip', route: '/tooltip'},
+ {name: 'Tree', route: '/tree'},
+ {name: 'Typography', route: '/typography'},
+ {name: 'Virtual Scrolling', route: '/virtual-scroll'},
+ ];
+
+ constructor(
+ private _element: ElementRef, private _overlayContainer: OverlayContainer,
+ public rippleOptions: DevAppRippleOptions) {}
+
+ toggleFullscreen() {
+ // Cast to `any`, because the typings don't include the browser-prefixed methods.
+ const elem = this._element.nativeElement.querySelector('.demo-content') as any;
+ if (elem.requestFullscreen) {
+ elem.requestFullscreen();
+ } else if (elem.webkitRequestFullScreen) {
+ elem.webkitRequestFullScreen();
+ } else if (elem.mozRequestFullScreen) {
+ elem.mozRequestFullScreen();
+ } else if (elem.msRequestFullScreen) {
+ elem.msRequestFullScreen();
+ }
+ }
+
+ toggleTheme() {
+ const darkThemeClass = 'demo-unicorn-dark-theme';
+
+ this.dark = !this.dark;
+
+ if (this.dark) {
+ this._element.nativeElement.classList.add(darkThemeClass);
+ this._overlayContainer.getContainerElement().classList.add(darkThemeClass);
+ } else {
+ this._element.nativeElement.classList.remove(darkThemeClass);
+ this._overlayContainer.getContainerElement().classList.remove(darkThemeClass);
+ }
+ }
+}
diff --git a/src/dev-app/dev-app-module.ts b/src/dev-app/dev-app-module.ts
index 703c420369f0..abd3e1508b66 100644
--- a/src/dev-app/dev-app-module.ts
+++ b/src/dev-app/dev-app-module.ts
@@ -6,153 +6,128 @@
* found in the LICENSE file at https://angular.io/license
*/
-import {LayoutModule} from '@angular/cdk/layout';
import {FullscreenOverlayContainer, OverlayContainer} from '@angular/cdk/overlay';
-import {CommonModule} from '@angular/common';
import {HttpClientModule} from '@angular/common/http';
import {NgModule} from '@angular/core';
-import {FormsModule, ReactiveFormsModule} from '@angular/forms';
import {MAT_RIPPLE_GLOBAL_OPTIONS} from '@angular/material';
-import {ExampleModule} from '@angular/material-examples';
import {BrowserModule} from '@angular/platform-browser';
import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
import {RouterModule} from '@angular/router';
-import {AutocompleteDemo} from './autocomplete/autocomplete-demo';
-import {BadgeDemo} from './badge/badge-demo';
-import {BaselineDemo} from './baseline/baseline-demo';
-import {BottomSheetDemo, ExampleBottomSheet} from './bottom-sheet/bottom-sheet-demo';
-import {ButtonToggleDemo} from './button-toggle/button-toggle-demo';
-import {ButtonDemo} from './button/button-demo';
-import {CardDemo} from './card/card-demo';
-import {CheckboxDemo, MatCheckboxDemoNestedChecklist} from './checkbox/checkbox-demo';
-import {ChipsDemo} from './chips/chips-demo';
-import {ConnectedOverlayDemo} from './connected-overlay/connected-overlay-demo';
-import {CustomHeader, CustomHeaderNgContent, DatepickerDemo} from './datepicker/datepicker-demo';
-import {DevAppComponent, DevAppHome, DevApp404} from './dev-app';
-import {ContentElementDialog, DialogDemo, IFrameDialog, JazzDialog} from './dialog/dialog-demo';
-import {DragAndDropDemo} from './drag-drop/drag-drop-demo';
-import {DrawerDemo} from './drawer/drawer-demo';
-import {ExamplePageModule} from './example/example-module';
-import {ExamplesPage} from './examples-page/examples-page';
-import {ExpansionDemo} from './expansion/expansion-demo';
-import {FocusOriginDemo} from './focus-origin/focus-origin-demo';
-import {GesturesDemo} from './gestures/gestures-demo';
-import {GridListDemo} from './grid-list/grid-list-demo';
-import {IconDemo} from './icon/icon-demo';
-import {InputDemo} from './input/input-demo';
-import {ListDemo} from './list/list-demo';
-import {LiveAnnouncerDemo} from './live-announcer/live-announcer-demo';
-import {DevAppMaterialModule} from './material-module';
-import {MenuDemo} from './menu/menu-demo';
-import {PaginatorDemo} from './paginator/paginator-demo';
-import {PlatformDemo} from './platform/platform-demo';
-import {PortalDemo, ScienceJoke} from './portal/portal-demo';
-import {ProgressBarDemo} from './progress-bar/progress-bar-demo';
-import {ProgressSpinnerDemo} from './progress-spinner/progress-spinner-demo';
-import {RadioDemo} from './radio/radio-demo';
-import {RippleDemo} from './ripple/ripple-demo';
+import {AutocompleteDemoModule} from './autocomplete/autocomplete-demo-module';
+import {BadgeDemoModule} from './badge/badge-demo-module';
+import {BaselineDemoModule} from './baseline/baseline-demo-module';
+import {BottomSheetDemoModule} from './bottom-sheet/bottom-sheet-demo-module';
+import {ButtonToggleDemoModule} from './button-toggle/button-toggle-demo-module';
+import {ButtonDemoModule} from './button/button-demo-module';
+import {CardDemoModule} from './card/card-demo-module';
+import {CheckboxDemoModule} from './checkbox/checkbox-demo-module';
+import {ChipsDemoModule} from './chips/chips-demo-module';
+import {ConnectedOverlayDemoModule} from './connected-overlay/connected-overlay-demo-module';
+import {DatepickerDemoModule} from './datepicker/datepicker-demo-module';
+import {DevApp404, DevAppComponent, DevAppHome} from './dev-app';
+import {DevAppLayoutModule} from './dev-app-layout/dev-app-layout-module';
+import {DialogDemoModule} from './dialog/dialog-demo-module';
+import {DragDropDemoModule} from './drag-drop/drag-drop-demo-module';
+import {DrawerDemoModule} from './drawer/drawer-demo-module';
+import {ExamplesPageModule} from './examples-page/examples-page-module';
+import {ExpansionDemoModule} from './expansion/expansion-demo-module';
+import {FocusOriginDemoModule} from './focus-origin/focus-origin-demo-module';
+import {GesturesDemoModule} from './gestures/gestures-demo-module';
+import {GridListDemoModule} from './grid-list/grid-list-demo-module';
+import {IconDemoModule} from './icon/icon-demo-module';
+import {InputDemoModule} from './input/input-demo-module';
+import {ListDemoModule} from './list/list-demo-module';
+import {LiveAnnouncerDemoModule} from './live-announcer/live-announcer-demo-module';
+import {MenuDemoModule} from './menu/menu-demo-module';
+import {PaginatorDemoModule} from './paginator/paginator-demo-module';
+import {PlatformDemoModule} from './platform/platform-demo-module';
+import {PortalDemoModule} from './portal/portal-demo-module';
+import {ProgressBarDemoModule} from './progress-bar/progress-bar-demo-module';
+import {ProgressSpinnerDemoModule} from './progress-spinner/progress-spinner-demo-module';
+import {RadioDemoModule} from './radio/radio-demo-module';
+import {RippleDemoModule} from './ripple/ripple-demo-module';
import {DevAppRippleOptions} from './ripple/ripple-options';
import {DEV_APP_ROUTES} from './routes';
-import {ScreenTypeDemo} from './screen-type/screen-type-demo';
-import {SelectDemo} from './select/select-demo';
-import {SidenavDemo} from './sidenav/sidenav-demo';
-import {SlideToggleDemo} from './slide-toggle/slide-toggle-demo';
-import {SliderDemo} from './slider/slider-demo';
-import {SnackBarDemo} from './snack-bar/snack-bar-demo';
-import {StepperDemo} from './stepper/stepper-demo';
+import {ScreenTypeDemoModule} from './screen-type/screen-type-demo-module';
+import {SelectDemoModule} from './select/select-demo-module';
+import {SidenavDemoModule} from './sidenav/sidenav-demo-module';
+import {SlideToggleDemoModule} from './slide-toggle/slide-toggle-demo-module';
+import {SliderDemoModule} from './slider/slider-demo-module';
+import {SnackBarDemoModule} from './snack-bar/snack-bar-demo-module';
+import {StepperDemoModule} from './stepper/stepper-demo-module';
import {TableDemoModule} from './table/table-demo-module';
-import {TabsDemo} from './tabs/tabs-demo';
-import {ToolbarDemo} from './toolbar/toolbar-demo';
-import {TooltipDemo} from './tooltip/tooltip-demo';
+import {TabsDemoModule} from './tabs/tabs-demo-module';
+import {ToolbarDemoModule} from './toolbar/toolbar-demo-module';
+import {TooltipDemoModule} from './tooltip/tooltip-demo-module';
import {TreeDemoModule} from './tree/tree-demo-module';
-import {TypographyDemo} from './typography/typography-demo';
-import {VirtualScrollDemo} from './virtual-scroll/virtual-scroll-demo';
+import {TypographyDemoModule} from './typography/typography-demo-module';
+import {VirtualScrollDemoModule} from './virtual-scroll/virtual-scroll-demo-module';
@NgModule({
imports: [
BrowserAnimationsModule,
BrowserModule,
- CommonModule,
- DevAppMaterialModule,
- ExampleModule,
- ExamplePageModule,
- FormsModule,
+ DevAppLayoutModule,
HttpClientModule,
- LayoutModule,
- ReactiveFormsModule,
RouterModule.forRoot(DEV_APP_ROUTES),
+
+ // Demo pages
+ AutocompleteDemoModule,
+ BadgeDemoModule,
+ BaselineDemoModule,
+ BottomSheetDemoModule,
+ ButtonDemoModule,
+ ButtonToggleDemoModule,
+ CardDemoModule,
+ CheckboxDemoModule,
+ ChipsDemoModule,
+ ConnectedOverlayDemoModule,
+ DatepickerDemoModule,
+ DialogDemoModule,
+ DragDropDemoModule,
+ DrawerDemoModule,
+ ExamplesPageModule,
+ ExpansionDemoModule,
+ FocusOriginDemoModule,
+ GesturesDemoModule,
+ GridListDemoModule,
+ IconDemoModule,
+ InputDemoModule,
+ ListDemoModule,
+ LiveAnnouncerDemoModule,
+ MenuDemoModule,
+ PaginatorDemoModule,
+ PlatformDemoModule,
+ PortalDemoModule,
+ ProgressBarDemoModule,
+ ProgressSpinnerDemoModule,
+ RadioDemoModule,
+ RippleDemoModule,
+ ScreenTypeDemoModule,
+ SelectDemoModule,
+ SidenavDemoModule,
+ SliderDemoModule,
+ SlideToggleDemoModule,
+ SnackBarDemoModule,
+ StepperDemoModule,
TableDemoModule,
+ TabsDemoModule,
+ ToolbarDemoModule,
+ TooltipDemoModule,
TreeDemoModule,
+ TypographyDemoModule,
+ VirtualScrollDemoModule,
],
declarations: [
- AutocompleteDemo,
- BadgeDemo,
- BaselineDemo,
- BottomSheetDemo,
- ButtonDemo,
- ButtonToggleDemo,
- CardDemo,
- CheckboxDemo,
- ChipsDemo,
- ConnectedOverlayDemo,
- ContentElementDialog,
- CustomHeader,
- CustomHeaderNgContent,
- DatepickerDemo,
DevAppComponent,
DevAppHome,
DevApp404,
- DialogDemo,
- DragAndDropDemo,
- DrawerDemo,
- ExampleBottomSheet,
- ExamplesPage,
- ExpansionDemo,
- FocusOriginDemo,
- GesturesDemo,
- GridListDemo,
- IconDemo,
- IFrameDialog,
- InputDemo,
- JazzDialog,
- ListDemo,
- LiveAnnouncerDemo,
- MatCheckboxDemoNestedChecklist,
- MenuDemo,
- PaginatorDemo,
- PlatformDemo,
- PortalDemo,
- ProgressBarDemo,
- ProgressSpinnerDemo,
- RadioDemo,
- RippleDemo,
- ScienceJoke,
- ScreenTypeDemo,
- SelectDemo,
- SidenavDemo,
- SliderDemo,
- SlideToggleDemo,
- SnackBarDemo,
- StepperDemo,
- TabsDemo,
- ToolbarDemo,
- TooltipDemo,
- TypographyDemo,
- VirtualScrollDemo,
],
providers: [
{provide: OverlayContainer, useClass: FullscreenOverlayContainer},
{provide: MAT_RIPPLE_GLOBAL_OPTIONS, useExisting: DevAppRippleOptions},
],
- entryComponents: [
- ContentElementDialog,
- CustomHeader,
- CustomHeaderNgContent,
- ExampleBottomSheet,
- IFrameDialog,
- JazzDialog,
- ScienceJoke,
- ],
bootstrap: [DevAppComponent],
})
-export class DevAppModule {}
+export class DevAppModule {
+}
diff --git a/src/dev-app/dev-app.ts b/src/dev-app/dev-app.ts
index 05794a5649b1..1a50a5062bd0 100644
--- a/src/dev-app/dev-app.ts
+++ b/src/dev-app/dev-app.ts
@@ -6,100 +6,16 @@
* found in the LICENSE file at https://angular.io/license
*/
-import {OverlayContainer} from '@angular/cdk/overlay';
-import {Component, ElementRef, ViewEncapsulation} from '@angular/core';
-import {DevAppRippleOptions} from './ripple/ripple-options';
+import {Component, ViewEncapsulation} from '@angular/core';
/** Root component for the dev-app demos. */
@Component({
moduleId: module.id,
selector: 'dev-app',
- templateUrl: 'dev-app.html',
- styleUrls: ['dev-app.css'],
+ template: '',
encapsulation: ViewEncapsulation.None,
})
export class DevAppComponent {
- dark = false;
- navItems = [
- {name: 'Examples', route: '/examples'},
- {name: 'Autocomplete', route: '/autocomplete'},
- {name: 'Badge', route: '/badge'},
- {name: 'Bottom sheet', route: '/bottom-sheet'},
- {name: 'Button Toggle', route: '/button-toggle'},
- {name: 'Button', route: '/button'},
- {name: 'Card', route: '/card'},
- {name: 'Chips', route: '/chips'},
- {name: 'Connected Overlay', route: '/connected-overlay'},
- {name: 'Checkbox', route: '/checkbox'},
- {name: 'Chips', route: '/chips'},
- {name: 'Datepicker', route: '/datepicker'},
- {name: 'Dialog', route: '/dialog'},
- {name: 'Drawer', route: '/drawer'},
- {name: 'Drag and Drop', route: '/drag-drop'},
- {name: 'Expansion Panel', route: '/expansion'},
- {name: 'Focus Origin', route: '/focus-origin'},
- {name: 'Gestures', route: '/gestures'},
- {name: 'Grid List', route: '/grid-list'},
- {name: 'Icon', route: '/icon'},
- {name: 'Input', route: '/input'},
- {name: 'List', route: '/list'},
- {name: 'Live Announcer', route: '/live-announcer'},
- {name: 'Menu', route: '/menu'},
- {name: 'Paginator', route: '/paginator'},
- {name: 'Platform', route: '/platform'},
- {name: 'Portal', route: '/portal'},
- {name: 'Progress Bar', route: '/progress-bar'},
- {name: 'Progress Spinner', route: '/progress-spinner'},
- {name: 'Radio', route: '/radio'},
- {name: 'Ripple', route: '/ripple'},
- {name: 'Screen Type', route: '/screen-type'},
- {name: 'Select', route: '/select'},
- {name: 'Sidenav', route: '/sidenav'},
- {name: 'Slide Toggle', route: '/slide-toggle'},
- {name: 'Slider', route: '/slider'},
- {name: 'Snack Bar', route: '/snack-bar'},
- {name: 'Stepper', route: '/stepper'},
- {name: 'Table', route: '/table'},
- {name: 'Tabs', route: '/tabs'},
- {name: 'Toolbar', route: '/toolbar'},
- {name: 'Tooltip', route: '/tooltip'},
- {name: 'Tree', route: '/tree'},
- {name: 'Typography', route: '/typography'},
- {name: 'Virtual Scrolling', route: '/virtual-scroll'},
- ];
-
- constructor(
- private _element: ElementRef,
- private _overlayContainer: OverlayContainer,
- public rippleOptions: DevAppRippleOptions) {}
-
- toggleFullscreen() {
- // Cast to `any`, because the typings don't include the browser-prefixed methods.
- const elem = this._element.nativeElement.querySelector('.demo-content') as any;
- if (elem.requestFullscreen) {
- elem.requestFullscreen();
- } else if (elem.webkitRequestFullScreen) {
- elem.webkitRequestFullScreen();
- } else if (elem.mozRequestFullScreen) {
- elem.mozRequestFullScreen();
- } else if (elem.msRequestFullScreen) {
- elem.msRequestFullScreen();
- }
- }
-
- toggleTheme() {
- const darkThemeClass = 'demo-unicorn-dark-theme';
-
- this.dark = !this.dark;
-
- if (this.dark) {
- this._element.nativeElement.classList.add(darkThemeClass);
- this._overlayContainer.getContainerElement().classList.add(darkThemeClass);
- } else {
- this._element.nativeElement.classList.remove(darkThemeClass);
- this._overlayContainer.getContainerElement().classList.remove(darkThemeClass);
- }
- }
}
diff --git a/src/dev-app/dialog/dialog-demo-module.ts b/src/dev-app/dialog/dialog-demo-module.ts
new file mode 100644
index 000000000000..dfa24dbc3082
--- /dev/null
+++ b/src/dev-app/dialog/dialog-demo-module.ts
@@ -0,0 +1,37 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {NgModule} from '@angular/core';
+import {FormsModule} from '@angular/forms';
+import {
+ MatButtonModule,
+ MatCardModule,
+ MatCheckboxModule,
+ MatDialogModule,
+ MatFormFieldModule,
+ MatInputModule,
+ MatSelectModule
+} from '@angular/material';
+import {ContentElementDialog, DialogDemo, IFrameDialog, JazzDialog} from './dialog-demo';
+
+@NgModule({
+ imports: [
+ FormsModule,
+ MatButtonModule,
+ MatCardModule,
+ MatCheckboxModule,
+ MatDialogModule,
+ MatFormFieldModule,
+ MatInputModule,
+ MatSelectModule,
+ ],
+ declarations: [ContentElementDialog, DialogDemo, IFrameDialog, JazzDialog],
+ entryComponents: [ContentElementDialog, IFrameDialog, JazzDialog],
+})
+export class DialogDemoModule {
+}
diff --git a/src/dev-app/drag-drop/drag-drop-demo-module.ts b/src/dev-app/drag-drop/drag-drop-demo-module.ts
new file mode 100644
index 000000000000..55760d896a41
--- /dev/null
+++ b/src/dev-app/drag-drop/drag-drop-demo-module.ts
@@ -0,0 +1,28 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {DragDropModule} from '@angular/cdk/drag-drop';
+import {CommonModule} from '@angular/common';
+import {NgModule} from '@angular/core';
+import {FormsModule} from '@angular/forms';
+import {MatFormFieldModule, MatIconModule, MatSelectModule} from '@angular/material';
+import {DragAndDropDemo} from './drag-drop-demo';
+
+@NgModule({
+ imports: [
+ CommonModule,
+ DragDropModule,
+ FormsModule,
+ MatFormFieldModule,
+ MatIconModule,
+ MatSelectModule,
+ ],
+ declarations: [DragAndDropDemo],
+})
+export class DragDropDemoModule {
+}
diff --git a/src/dev-app/drawer/drawer-demo-module.ts b/src/dev-app/drawer/drawer-demo-module.ts
new file mode 100644
index 000000000000..74464a655d77
--- /dev/null
+++ b/src/dev-app/drawer/drawer-demo-module.ts
@@ -0,0 +1,22 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {NgModule} from '@angular/core';
+import {MatButtonModule, MatListModule, MatSidenavModule} from '@angular/material';
+import {DrawerDemo} from './drawer-demo';
+
+@NgModule({
+ imports: [
+ MatButtonModule,
+ MatListModule,
+ MatSidenavModule,
+ ],
+ declarations: [DrawerDemo],
+})
+export class DrawerDemoModule {
+}
diff --git a/src/dev-app/example/example-module.ts b/src/dev-app/example/example-module.ts
index 07270bd2ae8b..aeb1c0762079 100644
--- a/src/dev-app/example/example-module.ts
+++ b/src/dev-app/example/example-module.ts
@@ -7,15 +7,18 @@
*/
import {CommonModule} from '@angular/common';
-import {MatExpansionModule} from '@angular/material';
import {NgModule} from '@angular/core';
+import {MatExpansionModule} from '@angular/material';
+import {ExampleModule as ExampleDataModule} from '@angular/material-examples';
+import {Example} from './example';
+
import {ExampleList} from './example-list';
-import {Example} from './example';
@NgModule({
- imports: [MatExpansionModule, CommonModule],
+ imports: [CommonModule, ExampleDataModule, MatExpansionModule],
declarations: [Example, ExampleList],
exports: [Example, ExampleList]
})
-export class ExamplePageModule {}
+export class ExampleModule {
+}
diff --git a/src/dev-app/examples-page/examples-page-module.ts b/src/dev-app/examples-page/examples-page-module.ts
new file mode 100644
index 000000000000..5ef913171db6
--- /dev/null
+++ b/src/dev-app/examples-page/examples-page-module.ts
@@ -0,0 +1,20 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {NgModule} from '@angular/core';
+import {ExampleModule} from '../example/example-module';
+import {ExamplesPage} from './examples-page';
+
+@NgModule({
+ imports: [
+ ExampleModule,
+ ],
+ declarations: [ExamplesPage],
+})
+export class ExamplesPageModule {
+}
diff --git a/src/dev-app/expansion/expansion-demo-module.ts b/src/dev-app/expansion/expansion-demo-module.ts
new file mode 100644
index 000000000000..880b00c33408
--- /dev/null
+++ b/src/dev-app/expansion/expansion-demo-module.ts
@@ -0,0 +1,32 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {CdkAccordionModule} from '@angular/cdk/accordion';
+import {CommonModule} from '@angular/common';
+import {NgModule} from '@angular/core';
+import {FormsModule} from '@angular/forms';
+import {
+ MatButtonModule,
+ MatCheckboxModule,
+ MatExpansionModule,
+ MatFormFieldModule,
+ MatInputModule,
+ MatRadioModule,
+ MatSlideToggleModule
+} from '@angular/material';
+import {ExpansionDemo} from './expansion-demo';
+
+@NgModule({
+ imports: [
+ CdkAccordionModule, CommonModule, FormsModule, MatButtonModule, MatCheckboxModule,
+ MatExpansionModule, MatFormFieldModule, MatInputModule, MatRadioModule, MatSlideToggleModule
+ ],
+ declarations: [ExpansionDemo],
+})
+export class ExpansionDemoModule {
+}
diff --git a/src/dev-app/focus-origin/focus-origin-demo-module.ts b/src/dev-app/focus-origin/focus-origin-demo-module.ts
new file mode 100644
index 000000000000..a04613dbf5f8
--- /dev/null
+++ b/src/dev-app/focus-origin/focus-origin-demo-module.ts
@@ -0,0 +1,20 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {A11yModule} from '@angular/cdk/a11y';
+import {NgModule} from '@angular/core';
+import {FocusOriginDemo} from './focus-origin-demo';
+
+@NgModule({
+ imports: [
+ A11yModule,
+ ],
+ declarations: [FocusOriginDemo],
+})
+export class FocusOriginDemoModule {
+}
diff --git a/src/dev-app/gestures/gestures-demo-module.ts b/src/dev-app/gestures/gestures-demo-module.ts
new file mode 100644
index 000000000000..1f45776fdc55
--- /dev/null
+++ b/src/dev-app/gestures/gestures-demo-module.ts
@@ -0,0 +1,16 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {NgModule} from '@angular/core';
+import {GesturesDemo} from './gestures-demo';
+
+@NgModule({
+ declarations: [GesturesDemo],
+})
+export class GesturesDemoModule {
+}
diff --git a/src/dev-app/grid-list/grid-list-demo-module.ts b/src/dev-app/grid-list/grid-list-demo-module.ts
new file mode 100644
index 000000000000..9edce4584204
--- /dev/null
+++ b/src/dev-app/grid-list/grid-list-demo-module.ts
@@ -0,0 +1,27 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {CommonModule} from '@angular/common';
+import {NgModule} from '@angular/core';
+import {FormsModule} from '@angular/forms';
+import {MatButtonModule, MatCardModule, MatGridListModule, MatIconModule} from '@angular/material';
+import {GridListDemo} from './grid-list-demo';
+
+@NgModule({
+ imports: [
+ CommonModule,
+ FormsModule,
+ MatButtonModule,
+ MatCardModule,
+ MatGridListModule,
+ MatIconModule,
+ ],
+ declarations: [GridListDemo],
+})
+export class GridListDemoModule {
+}
diff --git a/src/dev-app/icon/icon-demo-module.ts b/src/dev-app/icon/icon-demo-module.ts
new file mode 100644
index 000000000000..9828111bf37f
--- /dev/null
+++ b/src/dev-app/icon/icon-demo-module.ts
@@ -0,0 +1,20 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {NgModule} from '@angular/core';
+import {MatIconModule} from '@angular/material';
+import {IconDemo} from './icon-demo';
+
+@NgModule({
+ imports: [
+ MatIconModule,
+ ],
+ declarations: [IconDemo],
+})
+export class IconDemoModule {
+}
diff --git a/src/dev-app/input/input-demo-module.ts b/src/dev-app/input/input-demo-module.ts
new file mode 100644
index 000000000000..00d3e8392e60
--- /dev/null
+++ b/src/dev-app/input/input-demo-module.ts
@@ -0,0 +1,45 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {CommonModule} from '@angular/common';
+import {NgModule} from '@angular/core';
+import {FormsModule, ReactiveFormsModule} from '@angular/forms';
+import {
+ MatButtonModule,
+ MatButtonToggleModule,
+ MatCardModule,
+ MatCheckboxModule,
+ MatFormFieldModule,
+ MatIconModule,
+ MatInputModule,
+ MatSelectModule,
+ MatTabsModule,
+ MatToolbarModule
+} from '@angular/material';
+import {InputDemo} from './input-demo';
+
+@NgModule({
+ imports: [
+ CommonModule,
+ FormsModule,
+ MatButtonModule,
+ MatButtonToggleModule,
+ MatCardModule,
+ MatCheckboxModule,
+ MatFormFieldModule,
+ MatIconModule,
+ MatInputModule,
+ MatSelectModule,
+ MatTabsModule,
+ MatToolbarModule,
+ ReactiveFormsModule,
+ ],
+ declarations: [InputDemo],
+})
+export class InputDemoModule {
+}
diff --git a/src/dev-app/list/list-demo-module.ts b/src/dev-app/list/list-demo-module.ts
new file mode 100644
index 000000000000..02653aa5135d
--- /dev/null
+++ b/src/dev-app/list/list-demo-module.ts
@@ -0,0 +1,27 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {CommonModule} from '@angular/common';
+import {NgModule} from '@angular/core';
+import {FormsModule} from '@angular/forms';
+import {MatButtonModule, MatCheckboxModule, MatIconModule, MatListModule} from '@angular/material';
+import {ListDemo} from './list-demo';
+
+@NgModule({
+ imports: [
+ CommonModule,
+ FormsModule,
+ MatButtonModule,
+ MatCheckboxModule,
+ MatIconModule,
+ MatListModule,
+ ],
+ declarations: [ListDemo],
+})
+export class ListDemoModule {
+}
diff --git a/src/dev-app/live-announcer/live-announcer-demo-module.ts b/src/dev-app/live-announcer/live-announcer-demo-module.ts
new file mode 100644
index 000000000000..c3019ede2152
--- /dev/null
+++ b/src/dev-app/live-announcer/live-announcer-demo-module.ts
@@ -0,0 +1,19 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {A11yModule} from '@angular/cdk/a11y';
+import {NgModule} from '@angular/core';
+import {MatButtonModule} from '@angular/material';
+import {LiveAnnouncerDemo} from './live-announcer-demo';
+
+@NgModule({
+ imports: [A11yModule, MatButtonModule],
+ declarations: [LiveAnnouncerDemo],
+})
+export class LiveAnnouncerDemoModule {
+}
diff --git a/src/dev-app/material-module.ts b/src/dev-app/material-module.ts
deleted file mode 100644
index 976ffa09da37..000000000000
--- a/src/dev-app/material-module.ts
+++ /dev/null
@@ -1,121 +0,0 @@
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-
-import {DialogModule} from '@angular/cdk-experimental/dialog';
-import {DragDropModule} from '@angular/cdk/drag-drop';
-import {ScrollingModule as ExperimentalScrollingModule} from '@angular/cdk-experimental/scrolling';
-import {A11yModule} from '@angular/cdk/a11y';
-import {CdkAccordionModule} from '@angular/cdk/accordion';
-import {BidiModule} from '@angular/cdk/bidi';
-import {ObserversModule} from '@angular/cdk/observers';
-import {OverlayModule} from '@angular/cdk/overlay';
-import {PlatformModule} from '@angular/cdk/platform';
-import {PortalModule} from '@angular/cdk/portal';
-import {ScrollingModule} from '@angular/cdk/scrolling';
-import {CdkTableModule} from '@angular/cdk/table';
-import {TextFieldModule} from '@angular/cdk/text-field';
-import {CdkTreeModule} from '@angular/cdk/tree';
-import {NgModule} from '@angular/core';
-import {
- MatAutocompleteModule,
- MatBadgeModule,
- MatBottomSheetModule,
- MatButtonModule,
- MatButtonToggleModule,
- MatCardModule,
- MatCheckboxModule,
- MatChipsModule,
- MatDatepickerModule,
- MatDialogModule,
- MatDividerModule,
- MatExpansionModule,
- MatFormFieldModule,
- MatGridListModule,
- MatIconModule,
- MatInputModule,
- MatListModule,
- MatMenuModule,
- MatNativeDateModule,
- MatPaginatorModule,
- MatProgressBarModule,
- MatProgressSpinnerModule,
- MatRadioModule,
- MatRippleModule,
- MatSelectModule,
- MatSidenavModule,
- MatSliderModule,
- MatSlideToggleModule,
- MatSnackBarModule,
- MatSortModule,
- MatStepperModule,
- MatTableModule,
- MatTabsModule,
- MatToolbarModule,
- MatTooltipModule,
- MatTreeModule
-} from '@angular/material';
-
-
-/**
- * NgModule that includes all Material modules that are required to serve the dev-app.
- */
-@NgModule({
- exports: [
- MatAutocompleteModule,
- MatBadgeModule,
- MatBottomSheetModule,
- MatButtonModule,
- MatButtonToggleModule,
- MatCardModule,
- MatCheckboxModule,
- MatChipsModule,
- MatTableModule,
- MatDatepickerModule,
- MatDialogModule,
- MatDividerModule,
- MatExpansionModule,
- MatFormFieldModule,
- MatGridListModule,
- MatIconModule,
- MatInputModule,
- MatListModule,
- MatMenuModule,
- MatPaginatorModule,
- MatProgressBarModule,
- MatProgressSpinnerModule,
- MatRadioModule,
- MatRippleModule,
- MatSelectModule,
- MatSidenavModule,
- MatSlideToggleModule,
- MatSliderModule,
- MatSnackBarModule,
- MatSortModule,
- MatStepperModule,
- MatTabsModule,
- MatToolbarModule,
- MatTooltipModule,
- MatTreeModule,
- MatNativeDateModule,
- CdkTableModule,
- CdkTreeModule,
- A11yModule,
- BidiModule,
- CdkAccordionModule,
- TextFieldModule,
- ObserversModule,
- OverlayModule,
- PlatformModule,
- PortalModule,
- ScrollingModule,
- ExperimentalScrollingModule,
- DialogModule,
- DragDropModule,
- ]
-})
-export class DevAppMaterialModule {}
diff --git a/src/dev-app/menu/menu-demo-module.ts b/src/dev-app/menu/menu-demo-module.ts
new file mode 100644
index 000000000000..12bba4426136
--- /dev/null
+++ b/src/dev-app/menu/menu-demo-module.ts
@@ -0,0 +1,32 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {CommonModule} from '@angular/common';
+import {NgModule} from '@angular/core';
+import {
+ MatButtonModule,
+ MatDividerModule,
+ MatIconModule,
+ MatMenuModule,
+ MatToolbarModule
+} from '@angular/material';
+import {MenuDemo} from './menu-demo';
+
+@NgModule({
+ imports: [
+ CommonModule,
+ MatButtonModule,
+ MatDividerModule,
+ MatIconModule,
+ MatMenuModule,
+ MatToolbarModule,
+ ],
+ declarations: [MenuDemo],
+})
+export class MenuDemoModule {
+}
diff --git a/src/dev-app/paginator/paginator-demo-module.ts b/src/dev-app/paginator/paginator-demo-module.ts
new file mode 100644
index 000000000000..72511966f6c6
--- /dev/null
+++ b/src/dev-app/paginator/paginator-demo-module.ts
@@ -0,0 +1,34 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {CommonModule} from '@angular/common';
+import {NgModule} from '@angular/core';
+import {FormsModule} from '@angular/forms';
+import {
+ MatCardModule,
+ MatFormFieldModule,
+ MatInputModule,
+ MatPaginatorModule,
+ MatSlideToggleModule
+} from '@angular/material';
+import {PaginatorDemo} from './paginator-demo';
+
+@NgModule({
+ imports: [
+ CommonModule,
+ FormsModule,
+ MatCardModule,
+ MatFormFieldModule,
+ MatInputModule,
+ MatPaginatorModule,
+ MatSlideToggleModule,
+ ],
+ declarations: [PaginatorDemo],
+})
+export class PaginatorDemoModule {
+}
diff --git a/src/dev-app/platform/platform-demo-module.ts b/src/dev-app/platform/platform-demo-module.ts
new file mode 100644
index 000000000000..57034d241fe9
--- /dev/null
+++ b/src/dev-app/platform/platform-demo-module.ts
@@ -0,0 +1,22 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {PlatformModule} from '@angular/cdk/platform';
+import {CommonModule} from '@angular/common';
+import {NgModule} from '@angular/core';
+import {PlatformDemo} from './platform-demo';
+
+@NgModule({
+ imports: [
+ CommonModule,
+ PlatformModule,
+ ],
+ declarations: [PlatformDemo],
+})
+export class PlatformDemoModule {
+}
diff --git a/src/dev-app/portal/portal-demo-module.ts b/src/dev-app/portal/portal-demo-module.ts
new file mode 100644
index 000000000000..8c282cdc2074
--- /dev/null
+++ b/src/dev-app/portal/portal-demo-module.ts
@@ -0,0 +1,21 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {PortalModule} from '@angular/cdk/portal';
+import {NgModule} from '@angular/core';
+import {PortalDemo, ScienceJoke} from './portal-demo';
+
+@NgModule({
+ imports: [
+ PortalModule,
+ ],
+ declarations: [PortalDemo, ScienceJoke],
+ entryComponents: [ScienceJoke],
+})
+export class PortalDemoModule {
+}
diff --git a/src/dev-app/progress-bar/progress-bar-demo-module.ts b/src/dev-app/progress-bar/progress-bar-demo-module.ts
new file mode 100644
index 000000000000..708b0eafbac9
--- /dev/null
+++ b/src/dev-app/progress-bar/progress-bar-demo-module.ts
@@ -0,0 +1,24 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {NgModule} from '@angular/core';
+import {FormsModule} from '@angular/forms';
+import {MatButtonModule, MatButtonToggleModule, MatProgressBarModule} from '@angular/material';
+import {ProgressBarDemo} from './progress-bar-demo';
+
+@NgModule({
+ imports: [
+ FormsModule,
+ MatButtonModule,
+ MatButtonToggleModule,
+ MatProgressBarModule,
+ ],
+ declarations: [ProgressBarDemo],
+})
+export class ProgressBarDemoModule {
+}
diff --git a/src/dev-app/progress-spinner/progress-spinner-demo-module.ts b/src/dev-app/progress-spinner/progress-spinner-demo-module.ts
new file mode 100644
index 000000000000..3685246568bc
--- /dev/null
+++ b/src/dev-app/progress-spinner/progress-spinner-demo-module.ts
@@ -0,0 +1,30 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {NgModule} from '@angular/core';
+import {FormsModule} from '@angular/forms';
+import {
+ MatButtonModule,
+ MatButtonToggleModule,
+ MatCheckboxModule,
+ MatProgressSpinnerModule
+} from '@angular/material';
+import {ProgressSpinnerDemo} from './progress-spinner-demo';
+
+@NgModule({
+ imports: [
+ FormsModule,
+ MatButtonModule,
+ MatButtonToggleModule,
+ MatCheckboxModule,
+ MatProgressSpinnerModule,
+ ],
+ declarations: [ProgressSpinnerDemo],
+})
+export class ProgressSpinnerDemoModule {
+}
diff --git a/src/dev-app/radio/radio-demo-module.ts b/src/dev-app/radio/radio-demo-module.ts
new file mode 100644
index 000000000000..4625167c61bd
--- /dev/null
+++ b/src/dev-app/radio/radio-demo-module.ts
@@ -0,0 +1,26 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {CommonModule} from '@angular/common';
+import {NgModule} from '@angular/core';
+import {FormsModule} from '@angular/forms';
+import {MatButtonModule, MatCheckboxModule, MatRadioModule} from '@angular/material';
+import {RadioDemo} from './radio-demo';
+
+@NgModule({
+ imports: [
+ CommonModule,
+ FormsModule,
+ MatButtonModule,
+ MatCheckboxModule,
+ MatRadioModule,
+ ],
+ declarations: [RadioDemo],
+})
+export class RadioDemoModule {
+}
diff --git a/src/dev-app/ripple/ripple-demo-module.ts b/src/dev-app/ripple/ripple-demo-module.ts
new file mode 100644
index 000000000000..8c72d18d61db
--- /dev/null
+++ b/src/dev-app/ripple/ripple-demo-module.ts
@@ -0,0 +1,36 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {NgModule} from '@angular/core';
+import {FormsModule} from '@angular/forms';
+import {
+ MatButtonModule,
+ MatCheckboxModule,
+ MatFormFieldModule,
+ MatIconModule,
+ MatInputModule,
+ MatRippleModule
+} from '@angular/material';
+import {ExampleModule} from '../example/example-module';
+import {RippleDemo} from './ripple-demo';
+
+@NgModule({
+ imports: [
+ ExampleModule,
+ FormsModule,
+ MatButtonModule,
+ MatCheckboxModule,
+ MatFormFieldModule,
+ MatIconModule,
+ MatInputModule,
+ MatRippleModule,
+ ],
+ declarations: [RippleDemo],
+})
+export class RippleDemoModule {
+}
diff --git a/src/dev-app/screen-type/screen-type-demo-module.ts b/src/dev-app/screen-type/screen-type-demo-module.ts
new file mode 100644
index 000000000000..6382e9abb53d
--- /dev/null
+++ b/src/dev-app/screen-type/screen-type-demo-module.ts
@@ -0,0 +1,25 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {LayoutModule} from '@angular/cdk/layout';
+import {CommonModule} from '@angular/common';
+import {NgModule} from '@angular/core';
+import {MatGridListModule, MatIconModule} from '@angular/material';
+import {ScreenTypeDemo} from './screen-type-demo';
+
+@NgModule({
+ imports: [
+ CommonModule,
+ LayoutModule,
+ MatGridListModule,
+ MatIconModule,
+ ],
+ declarations: [ScreenTypeDemo],
+})
+export class ScreenTypeDemoModule {
+}
diff --git a/src/dev-app/select/select-demo-module.ts b/src/dev-app/select/select-demo-module.ts
new file mode 100644
index 000000000000..735653c25e54
--- /dev/null
+++ b/src/dev-app/select/select-demo-module.ts
@@ -0,0 +1,39 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {CommonModule} from '@angular/common';
+import {NgModule} from '@angular/core';
+import {FormsModule, ReactiveFormsModule} from '@angular/forms';
+import {
+ MatButtonModule,
+ MatCardModule,
+ MatFormFieldModule,
+ MatIconModule,
+ MatInputModule,
+ MatSelectModule,
+ MatToolbarModule
+} from '@angular/material';
+import {SelectDemo} from './select-demo';
+
+@NgModule({
+ imports: [
+ CommonModule,
+ FormsModule,
+ MatButtonModule,
+ MatCardModule,
+ MatFormFieldModule,
+ MatIconModule,
+ MatInputModule,
+ MatSelectModule,
+ MatToolbarModule,
+ ReactiveFormsModule,
+ ],
+ declarations: [SelectDemo],
+})
+export class SelectDemoModule {
+}
diff --git a/src/dev-app/sidenav/sidenav-demo-module.ts b/src/dev-app/sidenav/sidenav-demo-module.ts
new file mode 100644
index 000000000000..01ad05bf89fa
--- /dev/null
+++ b/src/dev-app/sidenav/sidenav-demo-module.ts
@@ -0,0 +1,32 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {CommonModule} from '@angular/common';
+import {NgModule} from '@angular/core';
+import {FormsModule} from '@angular/forms';
+import {
+ MatButtonModule,
+ MatCheckboxModule,
+ MatSidenavModule,
+ MatToolbarModule
+} from '@angular/material';
+import {SidenavDemo} from './sidenav-demo';
+
+@NgModule({
+ imports: [
+ CommonModule,
+ FormsModule,
+ MatButtonModule,
+ MatCheckboxModule,
+ MatSidenavModule,
+ MatToolbarModule,
+ ],
+ declarations: [SidenavDemo],
+})
+export class SidenavDemoModule {
+}
diff --git a/src/dev-app/slide-toggle/slide-toggle-demo-module.ts b/src/dev-app/slide-toggle/slide-toggle-demo-module.ts
new file mode 100644
index 000000000000..9c2c5c32d1ec
--- /dev/null
+++ b/src/dev-app/slide-toggle/slide-toggle-demo-module.ts
@@ -0,0 +1,23 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {NgModule} from '@angular/core';
+import {FormsModule} from '@angular/forms';
+import {MatButtonModule, MatSlideToggleModule} from '@angular/material';
+import {SlideToggleDemo} from './slide-toggle-demo';
+
+@NgModule({
+ imports: [
+ FormsModule,
+ MatButtonModule,
+ MatSlideToggleModule,
+ ],
+ declarations: [SlideToggleDemo],
+})
+export class SlideToggleDemoModule {
+}
diff --git a/src/dev-app/slider/slider-demo-module.ts b/src/dev-app/slider/slider-demo-module.ts
new file mode 100644
index 000000000000..16c2e61b254c
--- /dev/null
+++ b/src/dev-app/slider/slider-demo-module.ts
@@ -0,0 +1,23 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {NgModule} from '@angular/core';
+import {FormsModule} from '@angular/forms';
+import {MatSliderModule, MatTabsModule} from '@angular/material';
+import {SliderDemo} from './slider-demo';
+
+@NgModule({
+ imports: [
+ FormsModule,
+ MatSliderModule,
+ MatTabsModule,
+ ],
+ declarations: [SliderDemo],
+})
+export class SliderDemoModule {
+}
diff --git a/src/dev-app/snack-bar/snack-bar-demo-module.ts b/src/dev-app/snack-bar/snack-bar-demo-module.ts
new file mode 100644
index 000000000000..c252be41f0a3
--- /dev/null
+++ b/src/dev-app/snack-bar/snack-bar-demo-module.ts
@@ -0,0 +1,36 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {CommonModule} from '@angular/common';
+import {NgModule} from '@angular/core';
+import {FormsModule} from '@angular/forms';
+import {
+ MatButtonModule,
+ MatCheckboxModule,
+ MatFormFieldModule,
+ MatInputModule,
+ MatSelectModule,
+ MatSnackBarModule
+} from '@angular/material';
+import {SnackBarDemo} from './snack-bar-demo';
+
+@NgModule({
+ imports: [
+ CommonModule,
+ FormsModule,
+ MatButtonModule,
+ MatCheckboxModule,
+ MatFormFieldModule,
+ MatInputModule,
+ MatSelectModule,
+ MatSnackBarModule,
+ ],
+ declarations: [SnackBarDemo],
+})
+export class SnackBarDemoModule {
+}
diff --git a/src/dev-app/stepper/stepper-demo-module.ts b/src/dev-app/stepper/stepper-demo-module.ts
new file mode 100644
index 000000000000..437ccddd30d9
--- /dev/null
+++ b/src/dev-app/stepper/stepper-demo-module.ts
@@ -0,0 +1,35 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {CommonModule} from '@angular/common';
+import {NgModule} from '@angular/core';
+import {FormsModule, ReactiveFormsModule} from '@angular/forms';
+import {
+ MatButtonModule,
+ MatCheckboxModule,
+ MatFormFieldModule,
+ MatInputModule,
+ MatStepperModule
+} from '@angular/material';
+import {StepperDemo} from './stepper-demo';
+
+@NgModule({
+ imports: [
+ CommonModule,
+ FormsModule,
+ MatButtonModule,
+ MatCheckboxModule,
+ MatFormFieldModule,
+ MatInputModule,
+ MatStepperModule,
+ ReactiveFormsModule,
+ ],
+ declarations: [StepperDemo],
+})
+export class StepperDemoModule {
+}
diff --git a/src/dev-app/table/table-demo-module.ts b/src/dev-app/table/table-demo-module.ts
index 1cd6373ca9ad..4153791c3bd5 100644
--- a/src/dev-app/table/table-demo-module.ts
+++ b/src/dev-app/table/table-demo-module.ts
@@ -7,11 +7,12 @@
*/
import {NgModule} from '@angular/core';
+import {ExampleModule} from '../example/example-module';
import {TableDemo} from './table-demo';
-import {ExamplePageModule} from '../example/example-module';
@NgModule({
- imports: [ExamplePageModule],
+ imports: [ExampleModule],
declarations: [TableDemo],
})
-export class TableDemoModule { }
+export class TableDemoModule {
+}
diff --git a/src/dev-app/tabs/tabs-demo-module.ts b/src/dev-app/tabs/tabs-demo-module.ts
new file mode 100644
index 000000000000..44ed755cba38
--- /dev/null
+++ b/src/dev-app/tabs/tabs-demo-module.ts
@@ -0,0 +1,22 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {NgModule} from '@angular/core';
+import {MatTabsModule} from '@angular/material';
+import {ExampleModule} from '../example/example-module';
+import {TabsDemo} from './tabs-demo';
+
+@NgModule({
+ imports: [
+ ExampleModule,
+ MatTabsModule,
+ ],
+ declarations: [TabsDemo],
+})
+export class TabsDemoModule {
+}
diff --git a/src/dev-app/toolbar/toolbar-demo-module.ts b/src/dev-app/toolbar/toolbar-demo-module.ts
new file mode 100644
index 000000000000..24ba95a34f05
--- /dev/null
+++ b/src/dev-app/toolbar/toolbar-demo-module.ts
@@ -0,0 +1,32 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {NgModule} from '@angular/core';
+import {
+ MatButtonModule,
+ MatFormFieldModule,
+ MatIconModule,
+ MatInputModule,
+ MatSelectModule,
+ MatToolbarModule
+} from '@angular/material';
+import {ToolbarDemo} from './toolbar-demo';
+
+@NgModule({
+ imports: [
+ MatButtonModule,
+ MatFormFieldModule,
+ MatIconModule,
+ MatInputModule,
+ MatSelectModule,
+ MatToolbarModule,
+ ],
+ declarations: [ToolbarDemo],
+})
+export class ToolbarDemoModule {
+}
diff --git a/src/dev-app/tooltip/tooltip-demo-module.ts b/src/dev-app/tooltip/tooltip-demo-module.ts
new file mode 100644
index 000000000000..fd8a8b252ace
--- /dev/null
+++ b/src/dev-app/tooltip/tooltip-demo-module.ts
@@ -0,0 +1,22 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {NgModule} from '@angular/core';
+import {MatTooltipModule} from '@angular/material';
+import {ExampleModule} from '../example/example-module';
+import {TooltipDemo} from './tooltip-demo';
+
+@NgModule({
+ imports: [
+ ExampleModule,
+ MatTooltipModule,
+ ],
+ declarations: [TooltipDemo],
+})
+export class TooltipDemoModule {
+}
diff --git a/src/dev-app/tree/tree-demo-module.ts b/src/dev-app/tree/tree-demo-module.ts
index f1c21a7ae760..3cb9d4509c16 100644
--- a/src/dev-app/tree/tree-demo-module.ts
+++ b/src/dev-app/tree/tree-demo-module.ts
@@ -11,20 +11,22 @@ import {NgModule} from '@angular/core';
import {FormsModule} from '@angular/forms';
import {
MatButtonModule,
- MatExpansionModule,
MatCheckboxModule,
+ MatExpansionModule,
MatFormFieldModule,
MatIconModule,
MatInputModule,
MatProgressBarModule,
MatTreeModule
} from '@angular/material';
-import {TreeDemo} from './tree-demo';
-import {ChecklistTreeDemo} from './checklist-tree-demo/checklist-tree-demo';
+
+import {ExampleModule} from '../example/example-module';
+
import {ChecklistNestedTreeDemo} from './checklist-tree-demo/checklist-nested-tree-demo';
+import {ChecklistTreeDemo} from './checklist-tree-demo/checklist-tree-demo';
import {DynamicTreeDemo} from './dynamic-tree-demo/dynamic-tree-demo';
import {LoadmoreTreeDemo} from './loadmore-tree-demo/loadmore-tree-demo';
-import {ExamplePageModule} from '../example/example-module';
+import {TreeDemo} from './tree-demo';
@NgModule({
imports: [
@@ -39,14 +41,10 @@ import {ExamplePageModule} from '../example/example-module';
MatInputModule,
MatTreeModule,
MatProgressBarModule,
- ExamplePageModule,
- ],
- declarations: [
- ChecklistNestedTreeDemo,
- ChecklistTreeDemo,
- TreeDemo,
- DynamicTreeDemo,
- LoadmoreTreeDemo
+ ExampleModule,
],
+ declarations:
+ [ChecklistNestedTreeDemo, ChecklistTreeDemo, TreeDemo, DynamicTreeDemo, LoadmoreTreeDemo],
})
-export class TreeDemoModule {}
+export class TreeDemoModule {
+}
diff --git a/src/dev-app/typography/typography-demo-module.ts b/src/dev-app/typography/typography-demo-module.ts
new file mode 100644
index 000000000000..b50f236725d5
--- /dev/null
+++ b/src/dev-app/typography/typography-demo-module.ts
@@ -0,0 +1,16 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {NgModule} from '@angular/core';
+import {TypographyDemo} from './typography-demo';
+
+@NgModule({
+ declarations: [TypographyDemo],
+})
+export class TypographyDemoModule {
+}
diff --git a/src/dev-app/virtual-scroll/virtual-scroll-demo-module.ts b/src/dev-app/virtual-scroll/virtual-scroll-demo-module.ts
new file mode 100644
index 000000000000..45ce13bd21e0
--- /dev/null
+++ b/src/dev-app/virtual-scroll/virtual-scroll-demo-module.ts
@@ -0,0 +1,36 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import {ScrollingModule as ExperimentalScrollingModule} from '@angular/cdk-experimental/scrolling';
+import {ScrollingModule} from '@angular/cdk/scrolling';
+import {CommonModule} from '@angular/common';
+import {NgModule} from '@angular/core';
+import {FormsModule} from '@angular/forms';
+import {
+ MatButtonModule,
+ MatFormFieldModule,
+ MatInputModule,
+ MatSelectModule
+} from '@angular/material';
+import {VirtualScrollDemo} from './virtual-scroll-demo';
+
+@NgModule({
+ imports: [
+ CommonModule,
+ ExperimentalScrollingModule,
+ FormsModule,
+ MatButtonModule,
+ MatFormFieldModule,
+ MatInputModule,
+ MatSelectModule,
+ ScrollingModule,
+ ],
+ declarations: [VirtualScrollDemo],
+})
+export class VirtualScrollDemoModule {
+}