Skip to content

Commit

Permalink
Merge pull request #373 from gabalafou/fix-menubar-tab-trap
Browse files Browse the repository at this point in the history
Fix tab trap in menubar, resolves #374
  • Loading branch information
afshin authored Aug 24, 2022
2 parents 4d1333c + c2ea586 commit 0e652ad
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 5 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Lumino

[![Build Status](https://github.com/jupyterlab/lumino/workflows/Tests/badge.svg?branch=main)](https://github.com/jupyterlab/lumino/actions?query=branch%3Amain+workflow%3A%22Tests%22)
[![Documentation Status](https://readthedocs.org/projects/jupyterlab/badge/?version=stable)](http://lumino.readthedocs.io/en/stable/)
[![Documentation Status](https://readthedocs.org/projects/jupyterlab/badge/?version=latest)](https://lumino.readthedocs.io/en/latest/)
[![GitHub](https://img.shields.io/badge/issue_tracking-github-blue.svg)](https://github.com/jupyterlab/lumino/issues)
[![Discourse](https://img.shields.io/badge/help_forum-discourse-blue.svg)](https://discourse.jupyter.org/c/jupyterlab)
[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/jupyterlab/lumino/main?urlpath=lab/tree/examples)
Expand Down
16 changes: 12 additions & 4 deletions packages/widgets/src/menubar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -409,15 +409,23 @@ export class MenuBar extends Widget {

/**
* Handle the `'keydown'` event for the menu bar.
*
* #### Notes
* All keys are trapped except the tab key that is ignored.
*/
private _evtKeyDown(event: KeyboardEvent): void {
// A menu bar handles all keydown events.
event.preventDefault();
event.stopPropagation();

// Fetch the key code for the event.
let kc = event.keyCode;

// Do not trap the tab key.
if (kc === 9) {
return;
}

// A menu bar handles all other keydown events.
event.preventDefault();
event.stopPropagation();

// Enter, Up Arrow, Down Arrow
if (kc === 13 || kc === 38 || kc === 40) {
this.openActiveMenu();
Expand Down
6 changes: 6 additions & 0 deletions packages/widgets/tests/src/menubar.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -469,6 +469,12 @@ describe('@lumino/widgets', () => {
});

context('keydown', () => {
it('should bail on Tab', () => {
let event = new KeyboardEvent('keydown', { keyCode: 9 });
bar.node.dispatchEvent(event);
expect(event.defaultPrevented).to.equal(false);
});

it('should open the active menu on Enter', () => {
let menu = bar.activeMenu!;
bar.node.dispatchEvent(
Expand Down

0 comments on commit 0e652ad

Please sign in to comment.