diff --git a/closure/goog/deps.js b/closure/goog/deps.js index c384f125..f3d23c29 100644 --- a/closure/goog/deps.js +++ b/closure/goog/deps.js @@ -669,7 +669,7 @@ goog.addDependency('ui/custombuttonrenderer.js', ['goog.ui.CustomButtonRenderer' goog.addDependency('ui/customcolorpalette.js', ['goog.ui.CustomColorPalette'], ['goog.color', 'goog.dom', 'goog.ui.ColorPalette']); goog.addDependency('ui/datepicker.js', ['goog.ui.DatePicker', 'goog.ui.DatePicker.Events', 'goog.ui.DatePickerEvent'], ['goog.date', 'goog.date.Date', 'goog.date.Interval', 'goog.dom', 'goog.dom.a11y', 'goog.dom.classes', 'goog.events', 'goog.events.Event', 'goog.events.EventType', 'goog.events.KeyHandler', 'goog.events.KeyHandler.EventType', 'goog.i18n.DateTimeFormat', 'goog.i18n.DateTimeSymbols', 'goog.style', 'goog.ui.Component', 'goog.ui.IdGenerator']); goog.addDependency('ui/decorate.js', ['goog.ui.decorate'], ['goog.ui.registry']); -goog.addDependency('ui/dialog.js', ['goog.ui.Dialog', 'goog.ui.Dialog.ButtonSet', 'goog.ui.Dialog.ButtonSet.DefaultButtons', 'goog.ui.Dialog.DefaultButtonCaptions', 'goog.ui.Dialog.DefaultButtonKeys', 'goog.ui.Dialog.Event', 'goog.ui.Dialog.EventType'], ['goog.asserts', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.dom.a11y', 'goog.dom.classes', 'goog.events.Event', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.fx.Dragger', 'goog.math.Rect', 'goog.structs', 'goog.structs.Map', 'goog.style', 'goog.ui.ModalPopup', 'goog.userAgent']); +goog.addDependency('ui/dialog.js', ['goog.ui.Dialog', 'goog.ui.Dialog.ButtonSet', 'goog.ui.Dialog.ButtonSet.DefaultButtons', 'goog.ui.Dialog.DefaultButtonCaptions', 'goog.ui.Dialog.DefaultButtonKeys', 'goog.ui.Dialog.Event', 'goog.ui.Dialog.EventType'], ['goog.asserts', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.dom.a11y', 'goog.dom.a11y.Role', 'goog.dom.classes', 'goog.events', 'goog.events.Event', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.fx.Dragger', 'goog.math.Rect', 'goog.structs', 'goog.structs.Map', 'goog.style', 'goog.ui.ModalPopup', 'goog.userAgent']); goog.addDependency('ui/dimensionpicker.js', ['goog.ui.DimensionPicker'], ['goog.events.EventType', 'goog.math.Size', 'goog.ui.Control', 'goog.ui.DimensionPickerRenderer', 'goog.ui.registry']); goog.addDependency('ui/dimensionpickerrenderer.js', ['goog.ui.DimensionPickerRenderer'], ['goog.dom', 'goog.dom.TagName', 'goog.i18n.bidi', 'goog.style', 'goog.ui.ControlRenderer', 'goog.userAgent']); goog.addDependency('ui/dragdropdetector.js', ['goog.ui.DragDropDetector', 'goog.ui.DragDropDetector.EventType', 'goog.ui.DragDropDetector.ImageDropEvent', 'goog.ui.DragDropDetector.LinkDropEvent'], ['goog.dom', 'goog.dom.TagName', 'goog.events.Event', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.math.Coordinate', 'goog.string', 'goog.style', 'goog.userAgent']); diff --git a/closure/goog/ui/dialog.js b/closure/goog/ui/dialog.js index 7a253763..0a4fa31f 100644 --- a/closure/goog/ui/dialog.js +++ b/closure/goog/ui/dialog.js @@ -35,7 +35,9 @@ goog.require('goog.dom'); goog.require('goog.dom.NodeType'); goog.require('goog.dom.TagName'); goog.require('goog.dom.a11y'); +goog.require('goog.dom.a11y.Role'); goog.require('goog.dom.classes'); +goog.require('goog.events'); goog.require('goog.events.Event'); goog.require('goog.events.EventType'); goog.require('goog.events.KeyCodes'); @@ -1019,10 +1021,10 @@ goog.ui.Dialog.prototype.onKey_ = function(e) { var defaultKey = buttonSet.getDefault(); var defaultButton = defaultKey && buttonSet.getButton(defaultKey); - // Users may expect to hit enter on a TEXTAREA or a SELECT element. + // Users may expect to hit enter on a TEXTAREA, SELECT or an A element. var isSpecialFormElement = - (target.tagName == 'TEXTAREA' || target.tagName == 'SELECT') && - !target.disabled; + (target.tagName == 'TEXTAREA' || target.tagName == 'SELECT' || + target.tagName == 'A') && !target.disabled; if (defaultButton && !defaultButton.disabled && !isSpecialFormElement) { key = defaultKey; diff --git a/closure/goog/ui/dialog_test.html b/closure/goog/ui/dialog_test.html index 6dd8e071..ffa5429c 100644 --- a/closure/goog/ui/dialog_test.html +++ b/closure/goog/ui/dialog_test.html @@ -135,23 +135,37 @@ } function testEnterKeyDoesNothingOnSpecialFormElements() { - dialog.setContent(''); - var textarea = dialog.getContentElement(). - getElementsByTagName('TEXTAREA')[0]; + checkEnterKeyDoesNothingOnSpecialFormElement( + '', + 'TEXTAREA'); + + checkEnterKeyDoesNothingOnSpecialFormElement( + '', + 'SELECT'); + + checkEnterKeyDoesNothingOnSpecialFormElement( + 'Hello dialog', + 'A'); + } + + function checkEnterKeyDoesNothingOnSpecialFormElement(content, tagName) { + dialog.setContent(content); + var formElement = dialog.getContentElement(). + getElementsByTagName(tagName)[0]; var wasCalled = false; var callRecorder = function() { wasCalled = true; }; goog.events.listen(dialog, goog.ui.Dialog.EventType.SELECT, callRecorder); - // Enter does not fire on the enabled textarea. - goog.testing.events.fireKeySequence(textarea, + // Enter does not fire on the enabled form element. + goog.testing.events.fireKeySequence(formElement, goog.events.KeyCodes.ENTER); assertFalse(wasCalled); - // Enter fires on the disabled textarea. - textarea.disabled = true; - goog.testing.events.fireKeySequence(textarea, + // Enter fires on the disabled form element. + formElement.disabled = true; + goog.testing.events.fireKeySequence(formElement, goog.events.KeyCodes.ENTER); assertTrue(wasCalled); }