diff --git a/src/client/web/src/components/layers.tsx b/src/client/web/src/components/layers.tsx index 14ed160..7dafc53 100644 --- a/src/client/web/src/components/layers.tsx +++ b/src/client/web/src/components/layers.tsx @@ -10,8 +10,16 @@ import { AuthPane, LoginProps } from "./pane_login"; import { FilesProps } from "./panel_files"; import { Flexbox } from "./layout/flexbox"; import { Container } from "./layout/container"; -import { sharingCtrl, loadingCtrl, ctrlOn } from "../common/controls"; +import { + settingsDialogCtrl, + ctrlOff, + sharingCtrl, + loadingCtrl, + ctrlOn, + ctrlHidden, +} from "../common/controls"; import { LoadingIcon } from "./visual/loading"; +import { HotkeyHandler } from "../common/hotkeys"; export interface Props { filesInfo: FilesProps; @@ -24,10 +32,26 @@ export interface Props { export interface State {} export class Layers extends React.Component { + private hotkeyHandler: HotkeyHandler; constructor(p: Props) { super(p); } + componentDidMount(): void { + this.hotkeyHandler = new HotkeyHandler(); + + const closeHandler = () => { + this.setControlOption(settingsDialogCtrl, ctrlOff); + }; + this.hotkeyHandler.add({ key: "Escape" }, closeHandler); + + document.addEventListener("keyup", this.hotkeyHandler.handle); + } + + componentWillUnmount() { + document.removeEventListener("keyup", this.hotkeyHandler.handle); + } + setControlOption = (targetControl: string, option: string) => { updater().setControlOption(targetControl, option); this.props.update(updater().updateUI); @@ -41,11 +65,13 @@ export class Layers extends React.Component { ? "hidden" : ""; const showSettings = - this.props.ui.control.controls.get("settingsDialog") === ctrlOn + this.props.ui.control.controls.get(settingsDialogCtrl) === ctrlOn ? "" : "hidden"; const showLoading = - this.props.ui.control.controls.get(loadingCtrl) == ctrlOn ? "" : "hidden"; + this.props.ui.control.controls.get(loadingCtrl) == ctrlOn + ? "" + : ctrlHidden; return (
@@ -72,7 +98,7 @@ export class Layers extends React.Component {

{this.props.msg.pkg.get("pane.settings")}

,