feat(preferences): close preferences with Esc button (#647)
* feat(preferences): close preferences with Esc button * feat: use ioService for escape key handling
This commit is contained in:
@@ -8,6 +8,7 @@ import { PreferencesMenuView } from './PreferencesMenuView';
|
|||||||
import { WebApplication } from '@/ui_models/application';
|
import { WebApplication } from '@/ui_models/application';
|
||||||
import { MfaProps } from './panes/two-factor-auth/MfaProps';
|
import { MfaProps } from './panes/two-factor-auth/MfaProps';
|
||||||
import { AppState } from '@/ui_models/app_state';
|
import { AppState } from '@/ui_models/app_state';
|
||||||
|
import { useCallback, useEffect } from 'preact/hooks';
|
||||||
|
|
||||||
interface PreferencesProps extends MfaProps {
|
interface PreferencesProps extends MfaProps {
|
||||||
application: WebApplication;
|
application: WebApplication;
|
||||||
@@ -63,6 +64,19 @@ const PreferencesCanvas: FunctionComponent<
|
|||||||
|
|
||||||
export const PreferencesView: FunctionComponent<PreferencesProps> = observer(
|
export const PreferencesView: FunctionComponent<PreferencesProps> = observer(
|
||||||
(props) => {
|
(props) => {
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const removeEscKeyObserver = props.application.io.addKeyObserver({
|
||||||
|
key: 'Escape',
|
||||||
|
onKeyDown: (event) => {
|
||||||
|
event.preventDefault();
|
||||||
|
props.closePreferences();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return () => {
|
||||||
|
removeEscKeyObserver();
|
||||||
|
};
|
||||||
|
}, [props]);
|
||||||
const menu = new PreferencesMenu();
|
const menu = new PreferencesMenu();
|
||||||
return (
|
return (
|
||||||
<div className="h-full w-full absolute top-left-0 flex flex-col bg-contrast z-index-preferences">
|
<div className="h-full w-full absolute top-left-0 flex flex-col bg-contrast z-index-preferences">
|
||||||
|
|||||||
Reference in New Issue
Block a user