diff --git a/locales/en/messages.po b/locales/en/messages.po index fab96e5189..de9f1604b0 100644 --- a/locales/en/messages.po +++ b/locales/en/messages.po @@ -87,7 +87,7 @@ msgstr "Account Name" msgid "Active" msgstr "Active" -#: src/renderer/components/+add-cluster/add-cluster.tsx:228 +#: src/renderer/components/+add-cluster/add-cluster.tsx:248 #: src/renderer/components/cluster-manager/clusters-menu.tsx:116 msgid "Add Cluster" msgstr "Add Cluster" @@ -112,7 +112,7 @@ msgstr "Add bindings to {name}" #~ msgid "Add cluster" #~ msgstr "Add cluster" -#: src/renderer/components/+add-cluster/add-cluster.tsx:246 +#: src/renderer/components/+add-cluster/add-cluster.tsx:266 msgid "Add cluster(s)" msgstr "Add cluster(s)" @@ -319,7 +319,7 @@ msgstr "Binding targets" msgid "Bindings" msgstr "Bindings" -#: src/renderer/components/+add-cluster/add-cluster.tsx:210 +#: src/renderer/components/+add-cluster/add-cluster.tsx:227 msgid "Browse" msgstr "Browse" @@ -1730,7 +1730,7 @@ msgstr "Parallelism" msgid "Parameters" msgstr "Parameters" -#: src/renderer/components/+add-cluster/add-cluster.tsx:205 +#: src/renderer/components/+add-cluster/add-cluster.tsx:222 msgid "Paste as text" msgstr "Paste as text" @@ -1754,7 +1754,7 @@ msgstr "Persistent Volume Claims" msgid "Persistent Volumes" msgstr "Persistent Volumes" -#: src/renderer/components/+add-cluster/add-cluster.tsx:92 +#: src/renderer/components/+add-cluster/add-cluster.tsx:106 msgid "Please select kube-config's context" msgstr "Please select kube-config's context" @@ -1851,6 +1851,14 @@ msgstr "Private Key Secret" msgid "Privileged" msgstr "Privileged" +#: src/renderer/components/+add-cluster/add-cluster.tsx:225 +#~ msgid "Pro-tip: you can also drag-n-drop kube-config file in the left-side area" +#~ msgstr "Pro-tip: you can also drag-n-drop kube-config file in the left-side area" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:229 +msgid "Pro-tip: you can also drag-n-drop kube-config file to this area" +msgstr "Pro-tip: you can also drag-n-drop kube-config file to this area" + #: src/renderer/components/+storage-classes/storage-class-details.tsx:28 #: src/renderer/components/+storage-classes/storage-classes.tsx:35 msgid "Provisioner" @@ -1860,7 +1868,7 @@ msgstr "Provisioner" msgid "Proxy is used only for non-cluster communication." msgstr "Proxy is used only for non-cluster communication." -#: src/renderer/components/+add-cluster/add-cluster.tsx:234 +#: src/renderer/components/+add-cluster/add-cluster.tsx:254 msgid "Proxy settings" msgstr "Proxy settings" @@ -2041,7 +2049,7 @@ msgstr "Required Drop Capabilities" msgid "Required field" msgstr "Required field" -#: src/renderer/components/+add-cluster/add-cluster.tsx:209 +#: src/renderer/components/+add-cluster/add-cluster.tsx:226 #: src/renderer/components/item-object-list/page-filters-list.tsx:31 msgid "Reset" msgstr "Reset" @@ -2050,6 +2058,18 @@ msgstr "Reset" msgid "Reset filters?" msgstr "Reset filters?" +#: src/renderer/components/+add-cluster/add-cluster.tsx:65 +msgid "Resetting config to {0}" +msgstr "Resetting config to {0}" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:68 +#~ msgid "Resetting kube-config to current {0}" +#~ msgstr "Resetting kube-config to current {0}" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:68 +#~ msgid "Resetting kube-config to default: {kubeConfigDefaultPath}" +#~ msgstr "Resetting kube-config to default: {kubeConfigDefaultPath}" + #: src/renderer/components/+custom-resources/crd-details.tsx:44 #: src/renderer/components/+custom-resources/crd-list.tsx:73 msgid "Resource" @@ -2245,7 +2265,7 @@ msgstr "Secret type" msgid "Secrets" msgstr "Secrets" -#: src/renderer/components/+add-cluster/add-cluster.tsx:231 +#: src/renderer/components/+add-cluster/add-cluster.tsx:251 msgid "Select a context" msgstr "Select a context" @@ -2257,8 +2277,8 @@ msgstr "Select a quota.." #~ msgid "Select context" #~ msgstr "Select context" -#: src/renderer/components/+add-cluster/add-cluster.tsx:62 -#: src/renderer/components/+add-cluster/add-cluster.tsx:62 +#: src/renderer/components/+add-cluster/add-cluster.tsx:76 +#: src/renderer/components/+add-cluster/add-cluster.tsx:76 msgid "Select custom kube-config file" msgstr "Select custom kube-config file" @@ -2266,13 +2286,17 @@ msgstr "Select custom kube-config file" #~ msgid "Select file" #~ msgstr "Select file" +#: src/renderer/components/+add-cluster/add-cluster.tsx:221 +msgid "Select kube-config file" +msgstr "Select kube-config file" + #: src/renderer/components/+add-cluster/add-cluster.tsx:173 #~ msgid "Select kubeconfig" #~ msgstr "Select kubeconfig" -#: src/renderer/components/+add-cluster/add-cluster.tsx:204 -msgid "Select or drop file" -msgstr "Select or drop file" +#: src/renderer/components/+add-cluster/add-cluster.tsx:224 +#~ msgid "Select or drop file" +#~ msgstr "Select or drop file" #: src/renderer/components/+preferences/preferences.tsx:88 #~ msgid "Select repository" @@ -2612,8 +2636,8 @@ msgstr "Upgrade version" msgid "Usage" msgstr "Usage" -#: src/renderer/components/+add-cluster/add-cluster.tsx:63 -#: src/renderer/components/+add-cluster/add-cluster.tsx:63 +#: src/renderer/components/+add-cluster/add-cluster.tsx:77 +#: src/renderer/components/+add-cluster/add-cluster.tsx:77 msgid "Use configuration" msgstr "Use configuration" diff --git a/locales/fi/messages.po b/locales/fi/messages.po index 8f18d95f34..63db6beede 100644 --- a/locales/fi/messages.po +++ b/locales/fi/messages.po @@ -87,7 +87,7 @@ msgstr "" msgid "Active" msgstr "" -#: src/renderer/components/+add-cluster/add-cluster.tsx:228 +#: src/renderer/components/+add-cluster/add-cluster.tsx:248 #: src/renderer/components/cluster-manager/clusters-menu.tsx:116 msgid "Add Cluster" msgstr "" @@ -112,7 +112,7 @@ msgstr "" #~ msgid "Add cluster" #~ msgstr "" -#: src/renderer/components/+add-cluster/add-cluster.tsx:246 +#: src/renderer/components/+add-cluster/add-cluster.tsx:266 msgid "Add cluster(s)" msgstr "" @@ -319,7 +319,7 @@ msgstr "" msgid "Bindings" msgstr "" -#: src/renderer/components/+add-cluster/add-cluster.tsx:210 +#: src/renderer/components/+add-cluster/add-cluster.tsx:227 msgid "Browse" msgstr "" @@ -1713,7 +1713,7 @@ msgstr "" msgid "Parameters" msgstr "" -#: src/renderer/components/+add-cluster/add-cluster.tsx:205 +#: src/renderer/components/+add-cluster/add-cluster.tsx:222 msgid "Paste as text" msgstr "" @@ -1737,7 +1737,7 @@ msgstr "" msgid "Persistent Volumes" msgstr "" -#: src/renderer/components/+add-cluster/add-cluster.tsx:92 +#: src/renderer/components/+add-cluster/add-cluster.tsx:106 msgid "Please select kube-config's context" msgstr "" @@ -1834,6 +1834,14 @@ msgstr "" msgid "Privileged" msgstr "" +#: src/renderer/components/+add-cluster/add-cluster.tsx:225 +#~ msgid "Pro-tip: you can also drag-n-drop kube-config file in the left-side area" +#~ msgstr "" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:229 +msgid "Pro-tip: you can also drag-n-drop kube-config file to this area" +msgstr "" + #: src/renderer/components/+storage-classes/storage-class-details.tsx:28 #: src/renderer/components/+storage-classes/storage-classes.tsx:35 msgid "Provisioner" @@ -1843,7 +1851,7 @@ msgstr "" msgid "Proxy is used only for non-cluster communication." msgstr "" -#: src/renderer/components/+add-cluster/add-cluster.tsx:234 +#: src/renderer/components/+add-cluster/add-cluster.tsx:254 msgid "Proxy settings" msgstr "" @@ -2024,7 +2032,7 @@ msgstr "" msgid "Required field" msgstr "" -#: src/renderer/components/+add-cluster/add-cluster.tsx:209 +#: src/renderer/components/+add-cluster/add-cluster.tsx:226 #: src/renderer/components/item-object-list/page-filters-list.tsx:31 msgid "Reset" msgstr "" @@ -2033,6 +2041,18 @@ msgstr "" msgid "Reset filters?" msgstr "" +#: src/renderer/components/+add-cluster/add-cluster.tsx:65 +msgid "Resetting config to {0}" +msgstr "" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:68 +#~ msgid "Resetting kube-config to current {0}" +#~ msgstr "" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:68 +#~ msgid "Resetting kube-config to default: {kubeConfigDefaultPath}" +#~ msgstr "" + #: src/renderer/components/+custom-resources/crd-details.tsx:44 #: src/renderer/components/+custom-resources/crd-list.tsx:73 msgid "Resource" @@ -2228,7 +2248,7 @@ msgstr "" msgid "Secrets" msgstr "" -#: src/renderer/components/+add-cluster/add-cluster.tsx:231 +#: src/renderer/components/+add-cluster/add-cluster.tsx:251 msgid "Select a context" msgstr "" @@ -2240,8 +2260,8 @@ msgstr "" #~ msgid "Select context" #~ msgstr "" -#: src/renderer/components/+add-cluster/add-cluster.tsx:62 -#: src/renderer/components/+add-cluster/add-cluster.tsx:62 +#: src/renderer/components/+add-cluster/add-cluster.tsx:76 +#: src/renderer/components/+add-cluster/add-cluster.tsx:76 msgid "Select custom kube-config file" msgstr "" @@ -2249,13 +2269,17 @@ msgstr "" #~ msgid "Select file" #~ msgstr "" +#: src/renderer/components/+add-cluster/add-cluster.tsx:221 +msgid "Select kube-config file" +msgstr "" + #: src/renderer/components/+add-cluster/add-cluster.tsx:173 #~ msgid "Select kubeconfig" #~ msgstr "" -#: src/renderer/components/+add-cluster/add-cluster.tsx:204 -msgid "Select or drop file" -msgstr "" +#: src/renderer/components/+add-cluster/add-cluster.tsx:224 +#~ msgid "Select or drop file" +#~ msgstr "" #: src/renderer/components/+preferences/preferences.tsx:88 #~ msgid "Select repository" @@ -2595,8 +2619,8 @@ msgstr "" msgid "Usage" msgstr "" -#: src/renderer/components/+add-cluster/add-cluster.tsx:63 -#: src/renderer/components/+add-cluster/add-cluster.tsx:63 +#: src/renderer/components/+add-cluster/add-cluster.tsx:77 +#: src/renderer/components/+add-cluster/add-cluster.tsx:77 msgid "Use configuration" msgstr "" diff --git a/locales/ru/messages.po b/locales/ru/messages.po index 6fde228351..1328f414ce 100644 --- a/locales/ru/messages.po +++ b/locales/ru/messages.po @@ -88,7 +88,7 @@ msgstr "Название аккаунта" msgid "Active" msgstr "Активный" -#: src/renderer/components/+add-cluster/add-cluster.tsx:228 +#: src/renderer/components/+add-cluster/add-cluster.tsx:248 #: src/renderer/components/cluster-manager/clusters-menu.tsx:116 msgid "Add Cluster" msgstr "" @@ -113,7 +113,7 @@ msgstr "Добавить привязки к {name}" #~ msgid "Add cluster" #~ msgstr "" -#: src/renderer/components/+add-cluster/add-cluster.tsx:246 +#: src/renderer/components/+add-cluster/add-cluster.tsx:266 msgid "Add cluster(s)" msgstr "" @@ -320,7 +320,7 @@ msgstr "Цели привязки" msgid "Bindings" msgstr "Привязки" -#: src/renderer/components/+add-cluster/add-cluster.tsx:210 +#: src/renderer/components/+add-cluster/add-cluster.tsx:227 msgid "Browse" msgstr "" @@ -1731,7 +1731,7 @@ msgstr "Параллелизм" msgid "Parameters" msgstr "Параметры" -#: src/renderer/components/+add-cluster/add-cluster.tsx:205 +#: src/renderer/components/+add-cluster/add-cluster.tsx:222 msgid "Paste as text" msgstr "" @@ -1755,7 +1755,7 @@ msgstr "Persistent Volume Claims" msgid "Persistent Volumes" msgstr "Persistent Volumes" -#: src/renderer/components/+add-cluster/add-cluster.tsx:92 +#: src/renderer/components/+add-cluster/add-cluster.tsx:106 msgid "Please select kube-config's context" msgstr "" @@ -1852,6 +1852,14 @@ msgstr "Секрет приватного ключа" msgid "Privileged" msgstr "" +#: src/renderer/components/+add-cluster/add-cluster.tsx:225 +#~ msgid "Pro-tip: you can also drag-n-drop kube-config file in the left-side area" +#~ msgstr "" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:229 +msgid "Pro-tip: you can also drag-n-drop kube-config file to this area" +msgstr "" + #: src/renderer/components/+storage-classes/storage-class-details.tsx:28 #: src/renderer/components/+storage-classes/storage-classes.tsx:35 msgid "Provisioner" @@ -1861,7 +1869,7 @@ msgstr "Комиссия" msgid "Proxy is used only for non-cluster communication." msgstr "" -#: src/renderer/components/+add-cluster/add-cluster.tsx:234 +#: src/renderer/components/+add-cluster/add-cluster.tsx:254 msgid "Proxy settings" msgstr "" @@ -2042,7 +2050,7 @@ msgstr "" msgid "Required field" msgstr "Обязательное поле" -#: src/renderer/components/+add-cluster/add-cluster.tsx:209 +#: src/renderer/components/+add-cluster/add-cluster.tsx:226 #: src/renderer/components/item-object-list/page-filters-list.tsx:31 msgid "Reset" msgstr "Сбросить" @@ -2051,6 +2059,18 @@ msgstr "Сбросить" msgid "Reset filters?" msgstr "Сбросить фильтры?" +#: src/renderer/components/+add-cluster/add-cluster.tsx:65 +msgid "Resetting config to {0}" +msgstr "" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:68 +#~ msgid "Resetting kube-config to current {0}" +#~ msgstr "" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:68 +#~ msgid "Resetting kube-config to default: {kubeConfigDefaultPath}" +#~ msgstr "" + #: src/renderer/components/+custom-resources/crd-details.tsx:44 #: src/renderer/components/+custom-resources/crd-list.tsx:73 msgid "Resource" @@ -2246,7 +2266,7 @@ msgstr "Тип секрета" msgid "Secrets" msgstr "Secrets" -#: src/renderer/components/+add-cluster/add-cluster.tsx:231 +#: src/renderer/components/+add-cluster/add-cluster.tsx:251 msgid "Select a context" msgstr "" @@ -2258,8 +2278,8 @@ msgstr "Выберите квоту..." #~ msgid "Select context" #~ msgstr "" -#: src/renderer/components/+add-cluster/add-cluster.tsx:62 -#: src/renderer/components/+add-cluster/add-cluster.tsx:62 +#: src/renderer/components/+add-cluster/add-cluster.tsx:76 +#: src/renderer/components/+add-cluster/add-cluster.tsx:76 msgid "Select custom kube-config file" msgstr "" @@ -2267,13 +2287,17 @@ msgstr "" #~ msgid "Select file" #~ msgstr "" +#: src/renderer/components/+add-cluster/add-cluster.tsx:221 +msgid "Select kube-config file" +msgstr "" + #: src/renderer/components/+add-cluster/add-cluster.tsx:173 #~ msgid "Select kubeconfig" #~ msgstr "" -#: src/renderer/components/+add-cluster/add-cluster.tsx:204 -msgid "Select or drop file" -msgstr "" +#: src/renderer/components/+add-cluster/add-cluster.tsx:224 +#~ msgid "Select or drop file" +#~ msgstr "" #: src/renderer/components/+preferences/preferences.tsx:88 #~ msgid "Select repository" @@ -2613,8 +2637,8 @@ msgstr "Обновить версию" msgid "Usage" msgstr "Использование" -#: src/renderer/components/+add-cluster/add-cluster.tsx:63 -#: src/renderer/components/+add-cluster/add-cluster.tsx:63 +#: src/renderer/components/+add-cluster/add-cluster.tsx:77 +#: src/renderer/components/+add-cluster/add-cluster.tsx:77 msgid "Use configuration" msgstr "" diff --git a/src/renderer/components/+add-cluster/add-cluster.scss b/src/renderer/components/+add-cluster/add-cluster.scss index c76df32dff..fc0224fe99 100644 --- a/src/renderer/components/+add-cluster/add-cluster.scss +++ b/src/renderer/components/+add-cluster/add-cluster.scss @@ -7,6 +7,10 @@ } } + .hint { + margin-top: -$padding; + } + .Select { .kube-context { --flex-gap: #{$padding}; diff --git a/src/renderer/components/+add-cluster/add-cluster.tsx b/src/renderer/components/+add-cluster/add-cluster.tsx index 420d30a88b..09e8851e87 100644 --- a/src/renderer/components/+add-cluster/add-cluster.tsx +++ b/src/renderer/components/+add-cluster/add-cluster.tsx @@ -1,4 +1,5 @@ import "./add-cluster.scss" +import os from "os"; import React, { Fragment } from "react"; import { observer } from "mobx-react"; import { computed, observable } from "mobx"; @@ -23,10 +24,6 @@ import { cssNames } from "../../utils"; import { Notifications } from "../notifications"; import { Tab, Tabs } from "../tabs"; -// todo: improve UI/UX kube-config consuming: FILE (input + button) | PASTE TEXT (editor) -// todo: allow to manually input kube-config file path (edit + save on blur + auto-replace "~" => os.homedir() -// todo: allow to create multiple clusters at once (multi-select) - enum KubeConfigSourceTab { FILE = "file", TEXT = "text" @@ -38,6 +35,7 @@ export class AddCluster extends React.Component { @observable.ref newClusterConfig: KubeConfig; @observable.ref error: React.ReactNode; + @observable kubeConfigPath = ""; @observable sourceTab = KubeConfigSourceTab.FILE; @observable isWaiting = false @observable showSettings = false @@ -46,28 +44,45 @@ export class AddCluster extends React.Component { @observable customConfig = "" componentDidMount() { - this.kubeConfigPath = userStore.kubeConfigPath; + this.setKubeConfig(userStore.kubeConfigPath); } componentWillUnmount() { userStore.markNewContextsAsSeen(); } - protected get kubeConfigPath() { - return userStore.kubeConfigPath; - } - - protected set kubeConfigPath(filePath: string) { + protected setKubeConfig(filePath: string, { saveGlobal = true, throwError = false } = {}) { try { const kubeConfig = loadConfig(filePath); validateConfig(kubeConfig); + this.kubeConfigPath = filePath; this.localKubeConfig = kubeConfig; this.newClusterConfig = null; // reset previously selected - userStore.kubeConfigPath = filePath; // save to store + if (saveGlobal) { + userStore.kubeConfigPath = filePath; // save to store + } } catch (err) { Notifications.error(
Can't read config file in {filePath}: {String(err)}
); + if (throwError) { + throw err; + } + } + } + + onKubeConfigInputBlur = () => { + const isChanged = this.kubeConfigPath !== userStore.kubeConfigPath; + if (isChanged) { + this.kubeConfigPath = this.kubeConfigPath.replace("~", os.homedir()); + try { + this.setKubeConfig(this.kubeConfigPath, { throwError: true }) + } catch (err) { + Notifications.info(
+