diff --git a/src/demo-app/demo-app-module.ts b/src/demo-app/demo-app-module.ts
index 47b54dbb1036..8454f65ddd5f 100644
--- a/src/demo-app/demo-app-module.ts
+++ b/src/demo-app/demo-app-module.ts
@@ -8,7 +8,14 @@ import {MaterialModule, OverlayContainer,
FullscreenOverlayContainer} from '@angular/material';
import {DEMO_APP_ROUTES} from './demo-app/routes';
import {ProgressBarDemo} from './progress-bar/progress-bar-demo';
-import {JazzDialog, ContentElementDialog, DialogDemo, IFrameDialog} from './dialog/dialog-demo';
+import {
+ JazzDialog,
+ JazzDialogTemplateRef,
+ ContentElementDialog,
+ ContentElementTemplateRefDialog,
+ DialogDemo,
+ IFrameDialog
+} from './dialog/dialog-demo';
import {RippleDemo} from './ripple/ripple-demo';
import {IconDemo} from './icon/icon-demo';
import {GesturesDemo} from './gestures/gestures-demo';
@@ -64,7 +71,9 @@ import {InputContainerDemo} from './input/input-container-demo';
IconDemo,
InputContainerDemo,
JazzDialog,
+ JazzDialogTemplateRef,
ContentElementDialog,
+ ContentElementTemplateRefDialog,
IFrameDialog,
ListDemo,
LiveAnnouncerDemo,
@@ -100,7 +109,9 @@ import {InputContainerDemo} from './input/input-container-demo';
entryComponents: [
DemoApp,
JazzDialog,
+ JazzDialogTemplateRef,
ContentElementDialog,
+ ContentElementTemplateRefDialog,
IFrameDialog,
RotiniPanel,
ScienceJoke,
diff --git a/src/demo-app/dialog/dialog-demo.html b/src/demo-app/dialog/dialog-demo.html
index 53734bbbfdff..bca0a178f16a 100644
--- a/src/demo-app/dialog/dialog-demo.html
+++ b/src/demo-app/dialog/dialog-demo.html
@@ -1,53 +1,107 @@
Dialog demo
-
-
-
-
-
- Dialog dimensions
-
-
-
-
-
-
-
-
-
-
- Dialog position
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Other options
-
-
-
- Start
- End
- Center
-
-
-
- Disable close
-
-
-
-Last close result: {{lastCloseResult}}
+
+
+
Using MdDialog service
+
+
+
+
+
+
+
+
+
+
+
+
Last close result: {{lastCloseResult}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Using md-dialog element
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/demo-app/dialog/dialog-demo.scss b/src/demo-app/dialog/dialog-demo.scss
index 6f7f4cac254a..0928ec509352 100644
--- a/src/demo-app/dialog/dialog-demo.scss
+++ b/src/demo-app/dialog/dialog-demo.scss
@@ -6,3 +6,15 @@
max-width: 350px;
margin: 20px 0;
}
+
+.demo-button-group {
+ margin-bottom: 20px;
+}
+
+.demo-dialog-section {
+ margin-bottom: 40px;
+
+ h2 {
+ font-size: 18px;
+ }
+}
diff --git a/src/demo-app/dialog/dialog-demo.ts b/src/demo-app/dialog/dialog-demo.ts
index 5e91c097f9aa..cefa43b9c8d8 100644
--- a/src/demo-app/dialog/dialog-demo.ts
+++ b/src/demo-app/dialog/dialog-demo.ts
@@ -1,4 +1,12 @@
-import {Component, Inject} from '@angular/core';
+import {
+ Component,
+ Inject,
+ Input,
+ Output,
+ ViewChild,
+ TemplateRef,
+ EventEmitter
+} from '@angular/core';
import {DOCUMENT} from '@angular/platform-browser';
import {MdDialog, MdDialogRef, MdDialogConfig} from '@angular/material';
@@ -9,9 +17,18 @@ import {MdDialog, MdDialogRef, MdDialogConfig} from '@angular/material';
styleUrls: ['dialog-demo.css'],
})
export class DialogDemo {
+ @ViewChild('jazzDialogRef')
+ jazzDialogRef: TemplateRef;
+
+ @ViewChild('contentElementRef')
+ contentElementRef: TemplateRef;
+
dialogRef: MdDialogRef;
+ dialogTemplateRef: MdDialogRef;
+ dialogContentTemplateRef: MdDialogRef;
lastCloseResult: string;
actionsAlignment: string;
+ mdDialogState: boolean = false;
config: MdDialogConfig = {
disableClose: false,
width: '',
@@ -41,16 +58,47 @@ export class DialogDemo {
openJazz() {
this.dialogRef = this.dialog.open(JazzDialog, this.config);
- this.dialogRef.afterClosed().subscribe(result => {
+ this.dialogRef.afterClosed().first().subscribe(result => {
this.lastCloseResult = result;
this.dialogRef = null;
});
}
+ openJazzUsingTemplateRef() {
+ this.dialogTemplateRef = this.dialog.openFromTemplateRef(this.jazzDialogRef, this.config);
+
+ this.dialogTemplateRef.afterClosed().first().subscribe(() => {
+ this.dialogTemplateRef = null;
+ });
+ }
+
+ closeJazzUsingTemplateRef(result: string) {
+ this.lastCloseResult = result;
+
+ this.dialogTemplateRef.close();
+ }
+
openContentElement() {
let dialogRef = this.dialog.open(ContentElementDialog, this.config);
dialogRef.componentInstance.actionsAlignment = this.actionsAlignment;
}
+
+ openContentElementUsingTemplateRef() {
+ this.dialogContentTemplateRef = this.dialog.openFromTemplateRef(
+ this.contentElementRef,
+ this.config
+ );
+ }
+
+ closeContentElementUsingTemplateRef() {
+ if (this.dialogContentTemplateRef) {
+ this.dialogContentTemplateRef.close();
+ }
+ }
+
+ changeMdDialogState(to: boolean) {
+ this.mdDialogState = to;
+ }
}
@@ -69,6 +117,24 @@ export class JazzDialog {
}
+@Component({
+ selector: 'demo-jazz-dialog-template-ref',
+ template: `
+ It's Jazz!
+
+ {{ jazzMessage }}
+ `
+})
+export class JazzDialogTemplateRef {
+ jazzMessage = 'Jazzy jazz jazz';
+
+ @Output()
+ close = new EventEmitter(false);
+
+ constructor() { }
+}
+
+
@Component({
selector: 'demo-content-element-dialog',
styles: [
@@ -98,13 +164,12 @@ export class JazzDialog {
md-raised-button
color="primary"
md-dialog-close>Close
-
Read more on Wikipedia
-
+