MCPcopy Index your code
hub / github.com/angular/components / _handleKeyEvent

Method _handleKeyEvent

src/cdk/menu/menu-bar.ts:61–104  ·  view source on GitHub ↗

* Handle keyboard events for the Menu. * @param event The keyboard event to be handled.

(event: KeyboardEvent)

Source from the content-addressed store, hash-verified

59 * @param event The keyboard event to be handled.
60 */
61 _handleKeyEvent(event: KeyboardEvent) {
62 const keyManager = this.keyManager;
63 switch (event.keyCode) {
64 case UP_ARROW:
65 case DOWN_ARROW:
66 case LEFT_ARROW:
67 case RIGHT_ARROW:
68 if (!hasModifierKey(event)) {
69 const horizontalArrows = event.keyCode === LEFT_ARROW || event.keyCode === RIGHT_ARROW;
70 // For a horizontal menu if the left/right keys were clicked, or a vertical menu if the
71 // up/down keys were clicked: if the current menu is open, close it then focus and open the
72 // next menu.
73 if (horizontalArrows) {
74 event.preventDefault();
75
76 const prevIsOpen = keyManager.activeItem?.isMenuOpen();
77 keyManager.activeItem?.getMenuTrigger()?.close();
78
79 keyManager.setFocusOrigin('keyboard');
80 keyManager.onKeydown(event);
81 if (prevIsOpen) {
82 keyManager.activeItem?.getMenuTrigger()?.open();
83 }
84 }
85 }
86 break;
87
88 case ESCAPE:
89 if (!hasModifierKey(event)) {
90 event.preventDefault();
91 keyManager.activeItem?.getMenuTrigger()?.close();
92 }
93 break;
94
95 case TAB:
96 if (!hasModifierKey(event, 'altKey', 'metaKey', 'ctrlKey')) {
97 keyManager.activeItem?.getMenuTrigger()?.close();
98 }
99 break;
100
101 default:
102 keyManager.onKeydown(event);
103 }
104 }
105
106 /**
107 * Set focus to either the current, previous or next item based on the FocusNext event, then

Callers

nothing calls this directly

Calls 7

hasModifierKeyFunction · 0.90
isMenuOpenMethod · 0.80
getMenuTriggerMethod · 0.80
setFocusOriginMethod · 0.80
onKeydownMethod · 0.65
openMethod · 0.65
closeMethod · 0.45

Tested by

no test coverage detected