diff --git a/e2e/components/menu/menu.e2e.ts b/e2e/components/menu/menu.e2e.ts index 4ba0402554de..dcb5202925e2 100644 --- a/e2e/components/menu/menu.e2e.ts +++ b/e2e/components/menu/menu.e2e.ts @@ -73,11 +73,16 @@ describe('menu', () => { page.pressKey(protractor.Key.TAB); }); - it('should auto-focus the first item when opened with keyboard', () => { + it('should auto-focus the first item when opened with ENTER', () => { page.pressKey(protractor.Key.ENTER); page.expectFocusOn(page.items(0)); }); + it('should auto-focus the first item when opened with SPACE', () => { + page.pressKey(protractor.Key.SPACE); + page.expectFocusOn(page.items(0)); + }); + it('should not focus the first item when opened with mouse', () => { page.trigger().click(); page.expectFocusOn(page.trigger()); diff --git a/src/lib/core/keyboard/keycodes.ts b/src/lib/core/keyboard/keycodes.ts index df5a0aae4c12..f3626d258539 100644 --- a/src/lib/core/keyboard/keycodes.ts +++ b/src/lib/core/keyboard/keycodes.ts @@ -10,4 +10,5 @@ export const RIGHT_ARROW = 39; export const LEFT_ARROW = 37; export const ENTER = 13; +export const SPACE = 32; export const TAB = 9; diff --git a/src/lib/menu/menu-trigger.ts b/src/lib/menu/menu-trigger.ts index d7ce7b122fb8..a77346ad2560 100644 --- a/src/lib/menu/menu-trigger.ts +++ b/src/lib/menu/menu-trigger.ts @@ -14,6 +14,7 @@ import {MdMenu} from './menu-directive'; import {MdMenuMissingError} from './menu-errors'; import { ENTER, + SPACE, Overlay, OverlayState, OverlayRef, @@ -172,7 +173,7 @@ export class MdMenuTrigger implements AfterViewInit, OnDestroy { // TODO: internal _handleKeydown(event: KeyboardEvent): void { - if (event.keyCode === ENTER) { + if (event.keyCode === ENTER || event.keyCode === SPACE) { this._openedFromKeyboard = true; } }