From cfe3e981bd068f7f06be1893d0894aae26904a26 Mon Sep 17 00:00:00 2001 From: Kara Date: Wed, 19 Oct 2016 15:36:54 -0700 Subject: [PATCH] fix(menu): properly handle spacebar events (#1533) Closes #1175 --- e2e/components/menu/menu.e2e.ts | 7 ++++++- src/lib/core/keyboard/keycodes.ts | 1 + src/lib/menu/menu-trigger.ts | 3 ++- 3 files changed, 9 insertions(+), 2 deletions(-) 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; } }