diff options
| author | Oskar Nyberg <oskar@mullvad.net> | 2020-10-21 21:02:35 +0200 |
|---|---|---|
| committer | Oskar Nyberg <oskar@mullvad.net> | 2020-11-02 15:35:43 +0100 |
| commit | 510a906974eeea6a16788665ad2f1b7af258f87d (patch) | |
| tree | 60cb8251d75d0eccccc06501db7de07093cb6429 /gui/src/renderer/components | |
| parent | 3f08e1abb6c88277160c5049cf4a5fe644d223e0 (diff) | |
| download | mullvadvpn-510a906974eeea6a16788665ad2f1b7af258f87d.tar.xz mullvadvpn-510a906974eeea6a16788665ad2f1b7af258f87d.zip | |
Add keyboard navigation component
Diffstat (limited to 'gui/src/renderer/components')
| -rw-r--r-- | gui/src/renderer/components/KeyboardNavigation.tsx | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/gui/src/renderer/components/KeyboardNavigation.tsx b/gui/src/renderer/components/KeyboardNavigation.tsx new file mode 100644 index 0000000000..3aefd7c684 --- /dev/null +++ b/gui/src/renderer/components/KeyboardNavigation.tsx @@ -0,0 +1,27 @@ +import React, { useCallback, useEffect } from 'react'; +import { useHistory } from 'react-router'; +import History from '../lib/history'; + +interface IKeyboardNavigationProps { + children: React.ReactElement; +} + +export default function KeyboardNavigation(props: IKeyboardNavigationProps) { + const history = useHistory() as History; + + const handleKeyDown = useCallback( + (event: KeyboardEvent) => { + if (event.key === 'Escape') { + history.reset(); + } + }, + [history.reset], + ); + + useEffect(() => { + document.addEventListener('keydown', handleKeyDown); + return () => document.removeEventListener('keydown', handleKeyDown); + }, [handleKeyDown]); + + return props.children; +} |
