diff --git a/frontend/src/components/SidePanel.tsx b/frontend/src/components/SidePanel.tsx index d10893f2032..ffdc0b55b1a 100644 --- a/frontend/src/components/SidePanel.tsx +++ b/frontend/src/components/SidePanel.tsx @@ -57,6 +57,20 @@ interface SidePanelProps { } class SidePanel extends React.Component { + public componentDidMount(): void { + document.addEventListener('keydown', this.handleKeyDown); + } + + public componentWillUnmount(): void { + document.removeEventListener('keydown', this.handleKeyDown); + } + + private handleKeyDown = (event: KeyboardEvent): void => { + if (event.key === 'Escape' && this.props.isOpen) { + this.props.onClose(); + } + }; + public render(): JSX.Element { const { isBusy, isOpen, onClose, title, defaultWidth } = this.props; return (