summaryrefslogtreecommitdiffhomepage
path: root/gui/src/renderer/components
diff options
context:
space:
mode:
authorOskar Nyberg <oskar@mullvad.net>2020-10-21 21:02:35 +0200
committerOskar Nyberg <oskar@mullvad.net>2020-11-02 15:35:43 +0100
commit510a906974eeea6a16788665ad2f1b7af258f87d (patch)
tree60cb8251d75d0eccccc06501db7de07093cb6429 /gui/src/renderer/components
parent3f08e1abb6c88277160c5049cf4a5fe644d223e0 (diff)
downloadmullvadvpn-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.tsx27
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;
+}