From f0e6de99cc262f380ddd32c20b71fe3213e07882 Mon Sep 17 00:00:00 2001 From: Jeremy Elbourn Date: Wed, 27 Apr 2016 13:39:33 -0700 Subject: [PATCH] fix(dialog): don't clobber md-dialog id --- src/components/dialog/dialog.js | 7 ++++++- src/components/dialog/dialog.spec.js | 21 +++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/components/dialog/dialog.js b/src/components/dialog/dialog.js index 287db9952ac..8cf42b57613 100644 --- a/src/components/dialog/dialog.js +++ b/src/components/dialog/dialog.js @@ -896,7 +896,8 @@ function MdDialogProvider($$interimElementProvider) { var role = (options.$type === 'alert') ? 'alertdialog' : 'dialog'; var dialogContent = element.find('md-dialog-content'); - var dialogContentId = 'dialogContent_' + (element.attr('id') || $mdUtil.nextUid()); + var existingDialogId = element.attr('id'); + var dialogContentId = 'dialogContent_' + (existingDialogId || $mdUtil.nextUid()); element.attr({ 'role': role, @@ -905,6 +906,10 @@ function MdDialogProvider($$interimElementProvider) { if (dialogContent.length === 0) { dialogContent = element; + // If the dialog element already had an ID, don't clobber it. + if (existingDialogId) { + dialogContentId = existingDialogId; + } } dialogContent.attr('id', dialogContentId); diff --git a/src/components/dialog/dialog.spec.js b/src/components/dialog/dialog.spec.js index 010c473d960..f8cb4de65b7 100644 --- a/src/components/dialog/dialog.spec.js +++ b/src/components/dialog/dialog.spec.js @@ -168,6 +168,27 @@ describe('$mdDialog', function() { expect(content.id).toBe('dialogContent_' + dialog[0].id); })); + it('should not clobber the id from `md-dialog` when there is no content', inject(function ($mdDialog, $rootScope, $document) { + jasmine.mockElementFocus(this); + + var parent = angular.element('
'); + + $mdDialog.show( + $mdDialog.alert({ + template: '' + + '

Muppets are the best

' + + '
', + parent: parent + }) + ); + + runAnimation(); + + var dialog = parent.find('md-dialog'); + + expect(dialog[0].id).toBe('demoid'); + })); + it('should apply a prefixed id for `md-dialog-content`', inject(function ($mdDialog, $rootScope, $document) { jasmine.mockElementFocus(this);