diff --git a/src/components/Dropdown/Dropdown.jsx b/src/components/Dropdown/Dropdown.jsx index d453427c36ed..5b56b0e7e0f5 100644 --- a/src/components/Dropdown/Dropdown.jsx +++ b/src/components/Dropdown/Dropdown.jsx @@ -6,32 +6,59 @@ export default class Dropdown extends React.Component { active: false }; + componentDidMount() { + document.addEventListener('keyup', (e) => { + if (e.key === "Escape" && this.state.active) { + this.setState({ active: false}, () => { + this.dropdownButton.focus(); + }); + } + }); + + document.addEventListener('focus', e => { + if (!this.dropdown.contains(e.target)) { + this.setState({ active: false }); + } + }, true); + } + render() { let { className = '', items = [] } = this.props; let activeMod = this.state.active ? "dropdown__list--active" : ""; return ( -
this.dropdown = el } onMouseOver={ this._toggle.bind(this, true) } - onMouseLeave={ this._toggle.bind(this, false) }> - select language - {/* Commented out until media breakpoints are in place - { items[0].title } */} - - + onMouseLeave={ this._toggle.bind(this, false) } + > +