diff --git a/src/Button.js b/src/Button.js index 48d937d..1fe552c 100644 --- a/src/Button.js +++ b/src/Button.js @@ -69,6 +69,14 @@ class AriaMenuButtonButton extends React.Component { this.context.ambManager.toggleMenu({}, { focusMenu: false }); }; + // The Space key behaves like mousedown/mouseup in some browsers such as Firefox. + // To prevent an unexpected click event when the space key is released, event.preventDefault () is set in keyUp. + handleKeyUp = (event) => { + if (event.key === ' ' || event.key === 'Enter') { + event.preventDefault(); + } + } + render() { const props = this.props; const ambManager = this.context.ambManager; @@ -82,6 +90,7 @@ class AriaMenuButtonButton extends React.Component { 'aria-expanded': ambManager.isOpen, 'aria-disabled': props.disabled, onKeyDown: this.handleKeyDown, + onKeyUp: this.handleKeyUp, onClick: this.handleClick }; diff --git a/src/__tests__/Button.test.js b/src/__tests__/Button.test.js index cab3ea2..4d3817b 100644 --- a/src/__tests__/Button.test.js +++ b/src/__tests__/Button.test.js @@ -148,6 +148,46 @@ describe('