diff --git a/src/lib/dialog/dialog-config.ts b/src/lib/dialog/dialog-config.ts index 0ea4d96acc01..fe00f899abdb 100644 --- a/src/lib/dialog/dialog-config.ts +++ b/src/lib/dialog/dialog-config.ts @@ -1,4 +1,5 @@ import {ViewContainerRef} from '@angular/core'; +import {LayoutDirection} from '../core'; /** Valid ARIA roles for a dialog element. */ export type DialogRole = 'dialog' | 'alertdialog'; @@ -51,5 +52,8 @@ export class MdDialogConfig { /** Data being injected into the child component. */ data?: any = null; + /** Layout direction for the dialog's content. */ + direction?: LayoutDirection = 'ltr'; + // TODO(jelbourn): add configuration for lifecycle hooks, ARIA labelling. } diff --git a/src/lib/dialog/dialog.spec.ts b/src/lib/dialog/dialog.spec.ts index c1adb8d7c4f7..f1f9f539115a 100644 --- a/src/lib/dialog/dialog.spec.ts +++ b/src/lib/dialog/dialog.spec.ts @@ -312,6 +312,16 @@ describe('MdDialog', () => { expect(overlayPane.style.width).toBe('200px'); }); + it('should allow setting the layout direction', () => { + let dialogRef = dialog.open(PizzaMsg, { direction: 'rtl' }); + + viewContainerFixture.detectChanges(); + + let overlayPane = overlayContainerElement.querySelector('.cdk-overlay-pane'); + + expect(overlayPane.getAttribute('dir')).toBe('rtl'); + }); + it('should close all of the dialogs', async(() => { dialog.open(PizzaMsg); dialog.open(PizzaMsg); diff --git a/src/lib/dialog/dialog.ts b/src/lib/dialog/dialog.ts index fa86910ad900..abcc0c5a462d 100644 --- a/src/lib/dialog/dialog.ts +++ b/src/lib/dialog/dialog.ts @@ -127,6 +127,7 @@ export class MdDialog { overlayState.panelClass = dialogConfig.panelClass; overlayState.hasBackdrop = dialogConfig.hasBackdrop; overlayState.scrollStrategy = this._overlay.scrollStrategies.block(); + overlayState.direction = dialogConfig.direction; if (dialogConfig.backdropClass) { overlayState.backdropClass = dialogConfig.backdropClass; }