1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Close Preferences and Cluster Setting on Esc keypress (#804)

* Close Preferences on Esc key

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Close Cluster Settings on Esc

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
This commit is contained in:
Alex Andreev 2020-09-04 11:27:08 +03:00 committed by GitHub
parent 7274658b51
commit 435baaea00
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 37 additions and 4 deletions

View File

@ -1,7 +1,6 @@
import "./cluster-settings.scss"; import "./cluster-settings.scss";
import React from "react"; import React from "react";
import { Link } from "react-router-dom";
import { observer } from "mobx-react"; import { observer } from "mobx-react";
import { Features } from "./features"; import { Features } from "./features";
import { Removal } from "./removal"; import { Removal } from "./removal";
@ -15,6 +14,25 @@ import { navigate } from "../../navigation";
@observer @observer
export class ClusterSettings extends React.Component { export class ClusterSettings extends React.Component {
async componentDidMount() {
window.addEventListener('keydown', this.onEscapeKey);
}
componentWillUnmount() {
window.removeEventListener('keydown', this.onEscapeKey);
}
onEscapeKey = (evt: KeyboardEvent) => {
if (evt.code === "Escape") {
evt.stopPropagation();
this.close();
}
}
close() {
navigate("/");
}
render() { render() {
const cluster = getMatchedCluster(); const cluster = getMatchedCluster();
if (!cluster) return null; if (!cluster) return null;
@ -26,7 +44,7 @@ export class ClusterSettings extends React.Component {
showTooltip={false} showTooltip={false}
/> />
<h2>{cluster.preferences.clusterName}</h2> <h2>{cluster.preferences.clusterName}</h2>
<Icon material="close" onClick={() => navigate("/")} big/> <Icon material="close" onClick={this.close} big/>
</> </>
); );
return ( return (

View File

@ -28,6 +28,8 @@ export class Preferences extends React.Component {
{ value: "china", label: "China (Azure)" }, { value: "china", label: "China (Azure)" },
] ]
@observable httpProxy = userStore.preferences.httpsProxy || "";
@computed get themeOptions(): SelectOption<string>[] { @computed get themeOptions(): SelectOption<string>[] {
return themeStore.themes.map(theme => ({ return themeStore.themes.map(theme => ({
label: theme.name, label: theme.name,
@ -43,9 +45,21 @@ export class Preferences extends React.Component {
} }
async componentDidMount() { async componentDidMount() {
window.addEventListener('keydown', this.onEscapeKey);
await this.loadHelmRepos(); await this.loadHelmRepos();
} }
componentWillUnmount() {
window.removeEventListener('keydown', this.onEscapeKey);
}
onEscapeKey = (evt: KeyboardEvent) => {
if (evt.code === "Escape") {
evt.stopPropagation();
history.goBack();
}
}
@action @action
async loadHelmRepos() { async loadHelmRepos() {
this.helmLoading = true; this.helmLoading = true;
@ -162,8 +176,9 @@ export class Preferences extends React.Component {
<Input <Input
theme="round-black" theme="round-black"
placeholder={_i18n._(t`Type HTTP proxy url (example: http://proxy.acme.org:8080)`)} placeholder={_i18n._(t`Type HTTP proxy url (example: http://proxy.acme.org:8080)`)}
value={preferences.httpsProxy || ""} value={this.httpProxy}
onChange={v => preferences.httpsProxy = v} onChange={v => this.httpProxy = v}
onBlur={() => preferences.httpsProxy = this.httpProxy}
/> />
<small className="hint"> <small className="hint">
<Trans>Proxy is used only for non-cluster communication.</Trans> <Trans>Proxy is used only for non-cluster communication.</Trans>