diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 9cc8781250ec..9b0a0ddf9d0c 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -21,6 +21,7 @@
/src/lib/paginator/** @andrewseguin
/src/lib/prebuilt-themes/** @jelbourn
/src/lib/progress-bar/** @jelbourn @crisbeto @josephperrott
+/src/lib/progress-container/** @jelbourn @crisbeto
/src/lib/progress-spinner/** @jelbourn @crisbeto @josephperrott
/src/lib/radio/** @jelbourn @devversion
/src/lib/schematics/** @devversion @jelbourn
@@ -129,6 +130,7 @@
/src/demo-app/platform/** @jelbourn @devversion
/src/demo-app/portal/** @jelbourn
/src/demo-app/progress-bar/** @jelbourn @crisbeto @josephperrott
+/src/demo-app/progress-container/** @jelbourn @crisbeto
/src/demo-app/progress-spinner/** @jelbourn @crisbeto @josephperrott
/src/demo-app/radio/** @jelbourn @devversion
/src/demo-app/ripple/** @devversion
@@ -162,6 +164,7 @@
/e2e/components/list-e2e.spec.ts @jelbourn @crisbeto @devversion
/e2e/components/menu-e2e.spec.ts @crisbeto
/e2e/components/progress-bar-e2e.spec.ts @jelbourn @crisbeto @josephperrott
+/e2e/components/progress-container-e2e.spec.ts @jelbourn @crisbeto
/e2e/components/progress-spinner-e2e.spec.ts @jelbourn @crisbeto @josephperrott
/e2e/components/radio-e2e.spec.ts @jelbourn @devversion
/e2e/components/sidenav-e2e.spec.ts @mmalerba
@@ -182,6 +185,7 @@
/src/e2e-app/input/** @mmalerba
/src/e2e-app/menu/** @crisbeto
/src/e2e-app/progress-bar/** @jelbourn @crisbeto @josephperrott
+/src/e2e-app/progress-container/** @jelbourn @crisbeto
/src/e2e-app/progress-spinner/** @jelbourn @crisbeto @josephperrott
/src/e2e-app/radio/** @jelbourn @devversion
/src/e2e-app/sidenav/** @mmalerba
diff --git a/packages.bzl b/packages.bzl
index befb5e66790f..10419dcd2eb4 100644
--- a/packages.bzl
+++ b/packages.bzl
@@ -53,6 +53,7 @@ MATERIAL_PACKAGES = [
"menu",
"paginator",
"progress-bar",
+ "progress-container",
"progress-spinner",
"radio",
"select",
diff --git a/src/demo-app/demo-app/demo-app.ts b/src/demo-app/demo-app/demo-app.ts
index 9274d42fe953..9cbcea443304 100644
--- a/src/demo-app/demo-app/demo-app.ts
+++ b/src/demo-app/demo-app/demo-app.ts
@@ -76,6 +76,7 @@ export class DemoApp {
{name: 'Platform', route: '/platform'},
{name: 'Portal', route: '/portal'},
{name: 'Progress Bar', route: '/progress-bar'},
+ {name: 'Progress Container', route: '/progress-container'},
{name: 'Progress Spinner', route: '/progress-spinner'},
{name: 'Radio', route: '/radio'},
{name: 'Ripple', route: '/ripple'},
diff --git a/src/demo-app/demo-app/demo-module.ts b/src/demo-app/demo-app/demo-module.ts
index a1bf00cfe17d..6d387524fede 100644
--- a/src/demo-app/demo-app/demo-module.ts
+++ b/src/demo-app/demo-app/demo-module.ts
@@ -64,6 +64,7 @@ import {VirtualScrollDemo} from '../virtual-scroll/virtual-scroll-demo';
import {DemoApp, Home} from './demo-app';
import {DEMO_APP_ROUTES} from './routes';
import {DragAndDropDemo} from '../drag-drop/drag-drop-demo';
+import {ProgressContainerDemo} from '../progress-container/progress-container-demo';
@NgModule({
imports: [
@@ -116,6 +117,7 @@ import {DragAndDropDemo} from '../drag-drop/drag-drop-demo';
PlatformDemo,
PortalDemo,
ProgressBarDemo,
+ ProgressContainerDemo,
ProgressSpinnerDemo,
RadioDemo,
RippleDemo,
diff --git a/src/demo-app/demo-app/routes.ts b/src/demo-app/demo-app/routes.ts
index e212766267fa..266b0db94582 100644
--- a/src/demo-app/demo-app/routes.ts
+++ b/src/demo-app/demo-app/routes.ts
@@ -56,6 +56,7 @@ import {PaginatorDemo} from '../paginator/paginator-demo';
import {ExamplesPage} from '../examples-page/examples-page';
import {TableDemo} from '../table/table-demo';
import {DragAndDropDemo} from '../drag-drop/drag-drop-demo';
+import {ProgressContainerDemo} from '../progress-container/progress-container-demo';
export const DEMO_APP_ROUTES: Routes = [
{path: '', component: DemoApp, children: [
@@ -86,6 +87,7 @@ export const DEMO_APP_ROUTES: Routes = [
{path: 'platform', component: PlatformDemo},
{path: 'portal', component: PortalDemo},
{path: 'progress-bar', component: ProgressBarDemo},
+ {path: 'progress-container', component: ProgressContainerDemo},
{path: 'progress-spinner', component: ProgressSpinnerDemo},
{path: 'radio', component: RadioDemo},
{path: 'ripple', component: RippleDemo},
diff --git a/src/demo-app/demo-material-module.ts b/src/demo-app/demo-material-module.ts
index 9501b379f3f1..cfdf31286825 100644
--- a/src/demo-app/demo-material-module.ts
+++ b/src/demo-app/demo-material-module.ts
@@ -43,6 +43,7 @@ import {
MatNativeDateModule,
MatPaginatorModule,
MatProgressBarModule,
+ MatProgressContainerModule,
MatProgressSpinnerModule,
MatRadioModule,
MatRippleModule,
@@ -87,6 +88,7 @@ import {
MatMenuModule,
MatPaginatorModule,
MatProgressBarModule,
+ MatProgressContainerModule,
MatProgressSpinnerModule,
MatRadioModule,
MatRippleModule,
diff --git a/src/demo-app/progress-container/progress-container-demo.html b/src/demo-app/progress-container/progress-container-demo.html
new file mode 100644
index 000000000000..7305c730c126
--- /dev/null
+++ b/src/demo-app/progress-container/progress-container-demo.html
@@ -0,0 +1,8 @@
+
diff --git a/src/demo-app/progress-container/progress-container-demo.scss b/src/demo-app/progress-container/progress-container-demo.scss
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/src/demo-app/progress-container/progress-container-demo.ts b/src/demo-app/progress-container/progress-container-demo.ts
new file mode 100644
index 000000000000..f2a2448abd42
--- /dev/null
+++ b/src/demo-app/progress-container/progress-container-demo.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 {Component} from '@angular/core';
+
+@Component({
+ moduleId: module.id,
+ selector: 'progress-container-demo',
+ templateUrl: 'progress-container-demo.html',
+ styleUrls: ['progress-container-demo.css'],
+})
+export class ProgressContainerDemo {
+ trigger: boolean = false;
+}
diff --git a/src/demo-app/system-config.ts b/src/demo-app/system-config.ts
index fa42bcf77c52..80f2fc28d34d 100644
--- a/src/demo-app/system-config.ts
+++ b/src/demo-app/system-config.ts
@@ -85,6 +85,7 @@ System.config({
'@angular/material/menu': 'dist/packages/material/menu/index.js',
'@angular/material/paginator': 'dist/packages/material/paginator/index.js',
'@angular/material/progress-bar': 'dist/packages/material/progress-bar/index.js',
+ '@angular/material/progress-container': 'dist/packages/material/progress-container/index.js',
'@angular/material/progress-spinner': 'dist/packages/material/progress-spinner/index.js',
'@angular/material/radio': 'dist/packages/material/radio/index.js',
'@angular/material/select': 'dist/packages/material/select/index.js',
diff --git a/src/e2e-app/e2e-app-module.ts b/src/e2e-app/e2e-app-module.ts
index 30bc6edbbd7f..dd1c701040a7 100644
--- a/src/e2e-app/e2e-app-module.ts
+++ b/src/e2e-app/e2e-app-module.ts
@@ -17,6 +17,7 @@ import {
MatMenuModule,
MatNativeDateModule,
MatProgressBarModule,
+ MatProgressContainerModule,
MatProgressSpinnerModule,
MatRadioModule,
MatSidenavModule,
@@ -45,6 +46,7 @@ import {SidenavE2E} from './sidenav/sidenav-e2e';
import {SlideToggleE2E} from './slide-toggle/slide-toggle-e2e';
import {BasicTabs} from './tabs/tabs-e2e';
import {VirtualScrollE2E} from './virtual-scroll/virtual-scroll-e2e';
+import {ProgressContainerE2E} from './progress-container/progress-container-e2e';
/**
* NgModule that contains all Material modules that are required to serve the e2e-app.
@@ -62,6 +64,7 @@ import {VirtualScrollE2E} from './virtual-scroll/virtual-scroll-e2e';
MatListModule,
MatMenuModule,
MatProgressBarModule,
+ MatProgressContainerModule,
MatProgressSpinnerModule,
MatRadioModule,
MatSidenavModule,
@@ -97,6 +100,7 @@ export class E2eMaterialModule {}
InputE2E,
MenuE2E,
ProgressBarE2E,
+ ProgressContainerE2E,
ProgressSpinnerE2E,
SidenavE2E,
SimpleCheckboxes,
diff --git a/src/e2e-app/e2e-app/routes.ts b/src/e2e-app/e2e-app/routes.ts
index 12c2d0c5833e..4ea07c9e66b0 100644
--- a/src/e2e-app/e2e-app/routes.ts
+++ b/src/e2e-app/e2e-app/routes.ts
@@ -10,6 +10,7 @@ import {SimpleCheckboxes} from '../checkbox/checkbox-e2e';
import {DialogE2E} from '../dialog/dialog-e2e';
import {GridListE2E} from '../grid-list/grid-list-e2e';
import {ProgressBarE2E} from '../progress-bar/progress-bar-e2e';
+import {ProgressContainerE2E} from '../progress-container/progress-container-e2e';
import {ProgressSpinnerE2E} from '../progress-spinner/progress-spinner-e2e';
import {SlideToggleE2E} from '../slide-toggle/slide-toggle-e2e';
import {InputE2E} from '../input/input-e2e';
@@ -38,6 +39,7 @@ export const E2E_APP_ROUTES: Routes = [
{path: 'list', component: ListOverviewExample},
{path: 'menu', component: MenuE2E},
{path: 'progress-bar', component: ProgressBarE2E},
+ {path: 'progress-container', component: ProgressContainerE2E},
{path: 'progress-spinner', component: ProgressSpinnerE2E},
{path: 'radio', component: SimpleRadioButtons},
{path: 'sidenav', component: SidenavE2E},
diff --git a/src/e2e-app/progress-container/progress-container-e2e.html b/src/e2e-app/progress-container/progress-container-e2e.html
new file mode 100644
index 000000000000..7305c730c126
--- /dev/null
+++ b/src/e2e-app/progress-container/progress-container-e2e.html
@@ -0,0 +1,8 @@
+
diff --git a/src/e2e-app/progress-container/progress-container-e2e.ts b/src/e2e-app/progress-container/progress-container-e2e.ts
new file mode 100644
index 000000000000..431421002b54
--- /dev/null
+++ b/src/e2e-app/progress-container/progress-container-e2e.ts
@@ -0,0 +1,10 @@
+import {Component} from '@angular/core';
+
+@Component({
+ moduleId: module.id,
+ selector: 'progress-container-e2e',
+ templateUrl: 'progress-container-e2e.html',
+})
+export class ProgressContainerE2E {
+ trigger = true;
+}
diff --git a/src/e2e-app/system-config.ts b/src/e2e-app/system-config.ts
index 5ee59c0e5b58..3f3a4b8ae12e 100644
--- a/src/e2e-app/system-config.ts
+++ b/src/e2e-app/system-config.ts
@@ -76,6 +76,7 @@ System.config({
'@angular/material/menu': 'dist/bundles/material-menu.umd.js',
'@angular/material/paginator': 'dist/bundles/material-paginator.umd.js',
'@angular/material/progress-bar': 'dist/bundles/material-progress-bar.umd.js',
+ '@angular/material/progress-container': 'dist/bundles/material-progress-container.umd.js',
'@angular/material/progress-spinner': 'dist/bundles/material-progress-spinner.umd.js',
'@angular/material/radio': 'dist/bundles/material-radio.umd.js',
'@angular/material/select': 'dist/bundles/material-select.umd.js',
diff --git a/src/lib/progress-container/BUILD.bazel b/src/lib/progress-container/BUILD.bazel
new file mode 100644
index 000000000000..7b883d457519
--- /dev/null
+++ b/src/lib/progress-container/BUILD.bazel
@@ -0,0 +1,36 @@
+package(default_visibility=["//visibility:public"])
+
+load("@io_bazel_rules_sass//sass:sass.bzl", "sass_library", "sass_binary")
+load("//tools:defaults.bzl", "ng_module")
+
+ng_module(
+ name = "progress-container",
+ srcs = glob(["**/*.ts"], exclude=["**/*.spec.ts"]),
+ module_name = "@angular/material/progress-container",
+ assets = [":progress-container.css"] + glob(["**/*.html"]),
+ deps = [
+ "@angular//packages/common",
+ "@angular//packages/core",
+ "@rxjs",
+ "//src/lib/core",
+ "//src/cdk/coercion"
+ ],
+)
+
+
+# TODO(jelbourn): replace this w/ sass_library when it supports acting like a filegroup
+filegroup(
+ name = "progress_container_scss_partials",
+ srcs = glob(["**/_*.scss"]),
+)
+
+sass_binary(
+ name = "progress_container_scss",
+ src = "progress-container.scss",
+ deps = ["//src/lib/core:core_scss_lib"],
+)
+
+sass_library(
+ name = "theme",
+ srcs = glob(["**/*-theme.scss"]),
+)
diff --git a/src/lib/progress-container/README.md b/src/lib/progress-container/README.md
new file mode 100644
index 000000000000..50af318b590a
--- /dev/null
+++ b/src/lib/progress-container/README.md
@@ -0,0 +1 @@
+Please see the official documentation at https://material.angular.io/components/component/progress-container
\ No newline at end of file
diff --git a/src/lib/progress-container/_progress-container-theme.scss b/src/lib/progress-container/_progress-container-theme.scss
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/src/lib/progress-container/index.ts b/src/lib/progress-container/index.ts
new file mode 100644
index 000000000000..676ca90f1ffa
--- /dev/null
+++ b/src/lib/progress-container/index.ts
@@ -0,0 +1,9 @@
+/**
+ * @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
+ */
+
+export * from './public-api';
diff --git a/src/lib/progress-container/progress-container-module.ts b/src/lib/progress-container/progress-container-module.ts
new file mode 100644
index 000000000000..95fcb42e3e6b
--- /dev/null
+++ b/src/lib/progress-container/progress-container-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 {CommonModule} from '@angular/common';
+import {MatCommonModule} from '@angular/material/core';
+import {MatProgressContainer} from './progress-container';
+import {MatProgress} from './progress-directive';
+import {MatProgressContent} from './progress-content';
+
+
+@NgModule({
+ imports: [CommonModule, MatCommonModule],
+ exports: [MatProgressContainer, MatProgress, MatProgressContent, MatCommonModule],
+ declarations: [MatProgressContainer, MatProgress, MatProgressContent],
+})
+export class MatProgressContainerModule {}
diff --git a/src/lib/progress-container/progress-container.html b/src/lib/progress-container/progress-container.html
new file mode 100644
index 000000000000..f551f18e632e
--- /dev/null
+++ b/src/lib/progress-container/progress-container.html
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/lib/progress-container/progress-container.md b/src/lib/progress-container/progress-container.md
new file mode 100644
index 000000000000..6ea821aec18d
--- /dev/null
+++ b/src/lib/progress-container/progress-container.md
@@ -0,0 +1,46 @@
+`` is a horizontal progress-bar for indicating progress and activity.
+
+### Progress mode
+The progress-bar supports four modes: determinate, indeterminate, buffer and query.
+
+#### Determinate
+Operations where the percentage of the operation complete is known should use the
+determinate indicator.
+
+
+
+This is the default mode and the progress is represented by the `value` property.
+
+#### Indeterminate
+Operations where the user is asked to wait while something finishes and it’s
+not necessary to indicate how long it will take should use the indeterminate indicator.
+
+
+
+In this mode the `value` property is ignored.
+
+#### Buffer
+Operations where the user wants to indicate some activity or loading from the server,
+use the buffer indicator.
+
+
+
+In "buffer" mode, `value` determines the progress of the primary bar while the `bufferValue` is
+used to show the additional buffering progress.
+
+#### Query
+For situations where the user wants to indicate pre-loading (until the loading can actually be made),
+use the query indicator.
+
+
+
+In "query" mode, the progress-bar renders as an inverted "indeterminate" bar. Once the response
+progress is available, the `mode` should be changed to determinate to convey the progress. In
+this mode the `value` property is ignored.
+
+### Theming
+The color of a progress-bar can be changed by using the `color` property. By default, progress-bars
+use the theme's primary color. This can be changed to `'accent'` or `'warn'`.
+
+### Accessibility
+Each progress bar should be given a meaningful label via `aria-label` or `aria-labelledby`.
diff --git a/src/lib/progress-container/progress-container.scss b/src/lib/progress-container/progress-container.scss
new file mode 100644
index 000000000000..4843f1f69d12
--- /dev/null
+++ b/src/lib/progress-container/progress-container.scss
@@ -0,0 +1,15 @@
+.mat-progress {
+ opacity: 0;
+ visibility: hidden;
+}
+
+.mat-progress-container {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+}
+
+.mat-progress-host {
+ position: relative;
+}
diff --git a/src/lib/progress-container/progress-container.spec.ts b/src/lib/progress-container/progress-container.spec.ts
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/src/lib/progress-container/progress-container.ts b/src/lib/progress-container/progress-container.ts
new file mode 100644
index 000000000000..fb98346df383
--- /dev/null
+++ b/src/lib/progress-container/progress-container.ts
@@ -0,0 +1,62 @@
+/**
+ * @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 {
+ ChangeDetectionStrategy,
+ Component,
+ Host,
+ OnDestroy,
+ OnInit,
+ TemplateRef,
+ ViewChild,
+ ViewContainerRef,
+ ViewEncapsulation,
+ ViewRef,
+} from '@angular/core';
+import {MatProgress} from './progress-directive';
+import {Subscription} from 'rxjs';
+
+@Component({
+ moduleId: module.id,
+ selector: 'mat-progress-container',
+ templateUrl: 'progress-container.html',
+ styleUrls: ['progress-container.css'],
+ changeDetection: ChangeDetectionStrategy.OnPush,
+ encapsulation: ViewEncapsulation.None,
+})
+export class MatProgressContainer implements OnInit, OnDestroy {
+ @ViewChild(TemplateRef)
+ private _templateRef: TemplateRef;
+ private _openSubscription: Subscription;
+ private _containerViewRef: ViewRef | null = null;
+
+ constructor(@Host() private _progressDirective: MatProgress,
+ private _viewContainerRef: ViewContainerRef) {
+ if (!_progressDirective) {
+ throw new Error(`Cannot instantiate MatProgressContainer without an ancestor
+ MatProgress directive`);
+ }
+ this._toggleProgress = this._toggleProgress.bind(this);
+ }
+
+ ngOnInit() {
+ this._openSubscription = this._progressDirective.show.subscribe(this._toggleProgress);
+ }
+
+ ngOnDestroy() {
+ this._openSubscription.unsubscribe();
+ }
+
+ private _toggleProgress(evt: boolean) {
+ if (evt && !this._containerViewRef) {
+ this._containerViewRef = this._viewContainerRef.createEmbeddedView(this._templateRef);
+ } else if (!evt && this._containerViewRef) {
+ this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._containerViewRef));
+ this._containerViewRef = null;
+ }
+ }
+}
diff --git a/src/lib/progress-container/progress-content.spec.ts b/src/lib/progress-container/progress-content.spec.ts
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/src/lib/progress-container/progress-content.ts b/src/lib/progress-container/progress-content.ts
new file mode 100644
index 000000000000..ecfc0277d3a4
--- /dev/null
+++ b/src/lib/progress-container/progress-content.ts
@@ -0,0 +1,29 @@
+/**
+ * @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 {ChangeDetectionStrategy, Component, Host, ViewEncapsulation} from '@angular/core';
+import {MatProgress} from './progress-directive';
+
+@Component({
+ moduleId: module.id,
+ selector: 'mat-progress-content',
+ template: '',
+ host: {
+ '[attr.aria-hidden]': '_showProgress',
+ '[class.mat-progress]': '_showProgress',
+ },
+ changeDetection: ChangeDetectionStrategy.OnPush,
+ encapsulation: ViewEncapsulation.None,
+})
+export class MatProgressContent {
+ /** @docs-private */
+ get _showProgress(): boolean {
+ return this._progressDirective.showProgress;
+ }
+
+ constructor(@Host() private _progressDirective: MatProgress) {}
+}
diff --git a/src/lib/progress-container/progress-directive.spec.ts b/src/lib/progress-container/progress-directive.spec.ts
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/src/lib/progress-container/progress-directive.ts b/src/lib/progress-container/progress-directive.ts
new file mode 100644
index 000000000000..d12d3971d7a2
--- /dev/null
+++ b/src/lib/progress-container/progress-directive.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 {Directive, EventEmitter, Input, OnDestroy, Output} from '@angular/core';
+import {coerceBooleanProperty} from '@angular/cdk/coercion';
+
+@Directive({
+ selector: '[matProgress]',
+ host: {
+ '[attr.role]': 'showProgress ? "alert" : null',
+ '[attr.aria-live]': 'showProgress ? "assertive" : null',
+ '[class.mat-progress-host]': 'showProgress',
+ }
+})
+export class MatProgress implements OnDestroy {
+ /** Event emitted when the progress container should be shown. */
+ @Output() readonly show: EventEmitter = new EventEmitter();
+
+ /** Whether to display the progress instance. */
+ @Input('matProgress')
+ get showProgress(): boolean { return this._showProgress; }
+ set showProgress(value: boolean) {
+ this._showProgress = coerceBooleanProperty(value);
+ this.show.emit(this._showProgress);
+ }
+ private _showProgress: boolean;
+
+ constructor() {}
+
+ ngOnDestroy() {
+ this.show.complete();
+ }
+}
diff --git a/src/lib/progress-container/public-api.ts b/src/lib/progress-container/public-api.ts
new file mode 100644
index 000000000000..2e94e24fe75d
--- /dev/null
+++ b/src/lib/progress-container/public-api.ts
@@ -0,0 +1,12 @@
+/**
+ * @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
+ */
+
+export * from './progress-container-module';
+export * from './progress-container';
+export * from './progress-directive';
+
diff --git a/src/lib/progress-container/tsconfig-build.json b/src/lib/progress-container/tsconfig-build.json
new file mode 100644
index 000000000000..22b10ee7a43f
--- /dev/null
+++ b/src/lib/progress-container/tsconfig-build.json
@@ -0,0 +1,15 @@
+{
+ "extends": "../tsconfig-build",
+ "files": [
+ "public-api.ts",
+ "../typings.d.ts"
+ ],
+ "angularCompilerOptions": {
+ "annotateForClosureCompiler": true,
+ "strictMetadataEmit": true,
+ "flatModuleOutFile": "index.js",
+ "flatModuleId": "@angular/material/progress-container",
+ "skipTemplateCodegen": true,
+ "fullTemplateTypeCheck": true
+ }
+}
diff --git a/src/lib/public-api.ts b/src/lib/public-api.ts
index 0a2d1c25296d..3135572655d3 100644
--- a/src/lib/public-api.ts
+++ b/src/lib/public-api.ts
@@ -28,6 +28,7 @@ export * from '@angular/material/list';
export * from '@angular/material/menu';
export * from '@angular/material/paginator';
export * from '@angular/material/progress-bar';
+export * from '@angular/material/progress-container';
export * from '@angular/material/progress-spinner';
export * from '@angular/material/radio';
export * from '@angular/material/select';
diff --git a/src/material-examples/material-module.ts b/src/material-examples/material-module.ts
index 1dd9610413a9..ec82cc52257f 100644
--- a/src/material-examples/material-module.ts
+++ b/src/material-examples/material-module.ts
@@ -6,13 +6,42 @@ import {CdkTableModule} from '@angular/cdk/table';
import {CdkTreeModule} from '@angular/cdk/tree';
import {DragDropModule} from '@angular/cdk/drag-drop';
import {
- MatAutocompleteModule, MatBadgeModule, MatBottomSheetModule, MatButtonModule,
- MatButtonToggleModule, MatCardModule, MatCheckboxModule, MatChipsModule, MatDatepickerModule,
- MatDialogModule, MatDividerModule, MatExpansionModule, MatFormFieldModule, MatGridListModule,
- MatIconModule, MatInputModule, MatListModule, MatMenuModule, MatPaginatorModule,
- MatProgressBarModule, MatProgressSpinnerModule, MatRadioModule, MatRippleModule, MatSelectModule,
- MatSidenavModule, MatSliderModule, MatSlideToggleModule, MatSnackBarModule, MatSortModule,
- MatStepperModule, MatTableModule, MatTabsModule, MatToolbarModule, MatTooltipModule, MatTreeModule
+ MatAutocompleteModule,
+ MatBadgeModule,
+ MatBottomSheetModule,
+ MatButtonModule,
+ MatButtonToggleModule,
+ MatCardModule,
+ MatCheckboxModule,
+ MatChipsModule,
+ MatDatepickerModule,
+ MatDialogModule,
+ MatDividerModule,
+ MatExpansionModule,
+ MatFormFieldModule,
+ MatGridListModule,
+ MatIconModule,
+ MatInputModule,
+ MatListModule,
+ MatMenuModule,
+ MatPaginatorModule,
+ MatProgressBarModule,
+ MatProgressContainerModule,
+ MatProgressSpinnerModule,
+ MatRadioModule,
+ MatRippleModule,
+ MatSelectModule,
+ MatSidenavModule,
+ MatSliderModule,
+ MatSlideToggleModule,
+ MatSnackBarModule,
+ MatSortModule,
+ MatStepperModule,
+ MatTableModule,
+ MatTabsModule,
+ MatToolbarModule,
+ MatTooltipModule,
+ MatTreeModule
} from '@angular/material';
@NgModule({
@@ -41,6 +70,7 @@ import {
MatMenuModule,
MatPaginatorModule,
MatProgressBarModule,
+ MatProgressContainerModule,
MatProgressSpinnerModule,
MatRadioModule,
MatRippleModule,
@@ -83,6 +113,7 @@ import {
MatMenuModule,
MatPaginatorModule,
MatProgressBarModule,
+ MatProgressContainerModule,
MatProgressSpinnerModule,
MatRadioModule,
MatRippleModule,
diff --git a/src/material-examples/progress-container-overview/progress-container-overview-example.css b/src/material-examples/progress-container-overview/progress-container-overview-example.css
new file mode 100644
index 000000000000..7432308753e6
--- /dev/null
+++ b/src/material-examples/progress-container-overview/progress-container-overview-example.css
@@ -0,0 +1 @@
+/** No CSS for this example */
diff --git a/src/material-examples/progress-container-overview/progress-container-overview-example.html b/src/material-examples/progress-container-overview/progress-container-overview-example.html
new file mode 100644
index 000000000000..eca1dc96f1a4
--- /dev/null
+++ b/src/material-examples/progress-container-overview/progress-container-overview-example.html
@@ -0,0 +1,8 @@
+
\ No newline at end of file
diff --git a/src/material-examples/progress-container-overview/progress-container-overview-example.ts b/src/material-examples/progress-container-overview/progress-container-overview-example.ts
new file mode 100644
index 000000000000..c612af0a351d
--- /dev/null
+++ b/src/material-examples/progress-container-overview/progress-container-overview-example.ts
@@ -0,0 +1,13 @@
+import {Component} from '@angular/core';
+
+/**
+ * @title Basic progress-container
+ */
+@Component({
+ selector: 'progress-container-overview-example',
+ templateUrl: 'progress-container-overview-example.html',
+ styleUrls: ['progress-container-overview-example.css'],
+})
+export class ProgressContainerOverviewExample {
+ trigger = false;
+}
diff --git a/src/universal-app/kitchen-sink/kitchen-sink.ts b/src/universal-app/kitchen-sink/kitchen-sink.ts
index 5e3615ca015d..1b8c2681f1e3 100644
--- a/src/universal-app/kitchen-sink/kitchen-sink.ts
+++ b/src/universal-app/kitchen-sink/kitchen-sink.ts
@@ -27,6 +27,7 @@ import {
MatNativeDateModule,
MatPaginatorModule,
MatProgressBarModule,
+ MatProgressContainerModule,
MatProgressSpinnerModule,
MatRadioModule,
MatRippleModule,
@@ -119,6 +120,7 @@ export class KitchenSink {
MatNativeDateModule,
MatPaginatorModule,
MatProgressBarModule,
+ MatProgressContainerModule,
MatProgressSpinnerModule,
MatRadioModule,
MatRippleModule,
diff --git a/test/karma-system-config.js b/test/karma-system-config.js
index af7a6e8d4f30..555075b5299b 100644
--- a/test/karma-system-config.js
+++ b/test/karma-system-config.js
@@ -82,6 +82,7 @@ System.config({
'@angular/material/menu': 'dist/packages/material/menu/index.js',
'@angular/material/paginator': 'dist/packages/material/paginator/index.js',
'@angular/material/progress-bar': 'dist/packages/material/progress-bar/index.js',
+ '@angular/material/progress-container': 'dist/packages/material/progress-container/index.js',
'@angular/material/progress-spinner': 'dist/packages/material/progress-spinner/index.js',
'@angular/material/radio': 'dist/packages/material/radio/index.js',
'@angular/material/select': 'dist/packages/material/select/index.js',