From 56d18066190208fe841b1641a546560cfb7dcac6 Mon Sep 17 00:00:00 2001 From: Roman Date: Wed, 26 Aug 2020 20:11:31 +0300 Subject: [PATCH] fixes Signed-off-by: Roman --- locales/en/messages.po | 135 +++++++-- locales/fi/messages.po | 133 +++++++-- locales/ru/messages.po | 133 +++++++-- src/common/cluster-store.ts | 9 +- .../components/+add-cluster/add-cluster.scss | 18 ++ .../components/+add-cluster/add-cluster.tsx | 268 +++++++++++------- .../components/ace-editor/ace-editor.tsx | 16 +- .../cluster-manager/clusters-menu.tsx | 4 +- src/renderer/components/dock/dock.scss | 8 +- src/renderer/components/input/input.tsx | 11 +- src/renderer/components/select/select.tsx | 1 + 11 files changed, 542 insertions(+), 194 deletions(-) diff --git a/locales/en/messages.po b/locales/en/messages.po index de9f1604b0..8fe0a97064 100644 --- a/locales/en/messages.po +++ b/locales/en/messages.po @@ -87,8 +87,8 @@ msgstr "Account Name" msgid "Active" msgstr "Active" -#: src/renderer/components/+add-cluster/add-cluster.tsx:248 -#: src/renderer/components/cluster-manager/clusters-menu.tsx:116 +#: src/renderer/components/+add-cluster/add-cluster.tsx:303 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:118 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:266 +#: src/renderer/components/+add-cluster/add-cluster.tsx:320 msgid "Add cluster(s)" msgstr "Add cluster(s)" @@ -132,6 +132,10 @@ msgstr "Add field" #~ msgid "Added repos:" #~ msgstr "Added repos:" +#: src/renderer/components/+add-cluster/add-cluster.tsx:244 +#~ msgid "Adding clusters: <0>{0}" +#~ msgstr "Adding clusters: <0>{0}" + #: src/renderer/components/+preferences/preferences.tsx:103 msgid "Adding helm branch <0>{0} has failed: {1}" msgstr "Adding helm branch <0>{0} has failed: {1}" @@ -289,7 +293,7 @@ msgstr "Are you sure you want to drain <0>{nodeName}?" msgid "Arguments" msgstr "Arguments" -#: src/renderer/components/cluster-manager/clusters-menu.tsx:106 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:108 msgid "Associate clusters and choose the ones you want to access via quick launch menu by clicking the + button." msgstr "Associate clusters and choose the ones you want to access via quick launch menu by clicking the + button." @@ -319,7 +323,7 @@ msgstr "Binding targets" msgid "Bindings" msgstr "Bindings" -#: src/renderer/components/+add-cluster/add-cluster.tsx:227 +#: src/renderer/components/+add-cluster/add-cluster.tsx:251 msgid "Browse" msgstr "Browse" @@ -600,6 +604,14 @@ msgstr "Containers" msgid "Context" msgstr "Context" +#: src/renderer/components/+add-cluster/add-cluster.tsx:244 +#~ msgid "Contexts: <0>{0}" +#~ msgstr "Contexts: <0>{0}" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:249 +#~ msgid "Contexts: {0}" +#~ msgstr "Contexts: {0}" + #: src/renderer/components/+workloads-pods/pods.tsx:79 #: src/renderer/components/kube-object/kube-object-meta.tsx:39 msgid "Controlled By" @@ -903,6 +915,10 @@ msgstr "Environment" msgid "Error stack" msgstr "Error stack" +#: src/renderer/components/+add-cluster/add-cluster.tsx:129 +msgid "Error while adding cluster(s): {0}" +msgstr "Error while adding cluster(s): {0}" + #: src/renderer/components/+events/events.tsx:56 #: src/renderer/components/+events/kube-event-details.tsx:34 #: src/renderer/components/+events/kube-event-details.tsx:39 @@ -1730,7 +1746,7 @@ msgstr "Parallelism" msgid "Parameters" msgstr "Parameters" -#: src/renderer/components/+add-cluster/add-cluster.tsx:222 +#: src/renderer/components/+add-cluster/add-cluster.tsx:245 msgid "Paste as text" msgstr "Paste as text" @@ -1754,9 +1770,17 @@ msgstr "Persistent Volume Claims" msgid "Persistent Volumes" msgstr "Persistent Volumes" +#: src/renderer/components/+add-cluster/add-cluster.tsx:95 +msgid "Please select at least one cluster context" +msgstr "Please select at least one cluster context" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:146 +#~ msgid "Please select at least one context to add a cluster" +#~ msgstr "Please select at least one context to add a cluster" + #: src/renderer/components/+add-cluster/add-cluster.tsx:106 -msgid "Please select kube-config's context" -msgstr "Please select kube-config's context" +#~ msgid "Please select kube-config's context" +#~ msgstr "Please select kube-config's context" #: src/renderer/components/+add-cluster/add-cluster.tsx:63 #~ msgid "Please select kubeconfig" @@ -1766,6 +1790,10 @@ msgstr "Please select kube-config's context" #~ msgid "Please select kubeconfig context" #~ msgstr "Please select kubeconfig context" +#: src/renderer/components/+add-cluster/add-cluster.tsx:106 +#~ msgid "Please select kubeconfig's context" +#~ msgstr "Please select kubeconfig's context" + #: src/renderer/components/+workloads-pods/pod-menu.tsx:50 msgid "Pod" msgstr "Pod" @@ -1851,13 +1879,33 @@ msgstr "Private Key Secret" msgid "Privileged" msgstr "Privileged" +#: src/renderer/components/+add-cluster/add-cluster.tsx:264 +#~ msgid "Pro-Tip: paste kubeconfig (text/yaml) to get available contexts" +#~ msgstr "Pro-Tip: paste kubeconfig (text/yaml) to get available contexts" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:264 +#~ msgid "Pro-Tip: paste kubeconfig to collect available contexts" +#~ msgstr "Pro-Tip: paste kubeconfig to collect available contexts" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:263 +msgid "Pro-Tip: paste kubeconfig to get available contexts" +msgstr "Pro-Tip: paste kubeconfig to get available contexts" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:264 +#~ msgid "Pro-Tip: paste kubeconfig to parse available contexts" +#~ msgstr "Pro-Tip: paste kubeconfig to parse available contexts" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:254 +msgid "Pro-Tip: you can also drag-n-drop kubeconfig file to this area" +msgstr "Pro-Tip: you can also drag-n-drop kubeconfig file to this area" + #: 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" +#~ 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 @@ -1868,7 +1916,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:254 +#: src/renderer/components/+add-cluster/add-cluster.tsx:308 msgid "Proxy settings" msgstr "Proxy settings" @@ -2049,7 +2097,7 @@ msgstr "Required Drop Capabilities" msgid "Required field" msgstr "Required field" -#: src/renderer/components/+add-cluster/add-cluster.tsx:226 +#: src/renderer/components/+add-cluster/add-cluster.tsx:250 #: src/renderer/components/item-object-list/page-filters-list.tsx:31 msgid "Reset" msgstr "Reset" @@ -2059,8 +2107,8 @@ 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}" +#~ 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}" @@ -2265,9 +2313,9 @@ msgstr "Secret type" msgid "Secrets" msgstr "Secrets" -#: src/renderer/components/+add-cluster/add-cluster.tsx:251 -msgid "Select a context" -msgstr "Select a context" +#: src/renderer/components/+add-cluster/add-cluster.tsx:253 +#~ msgid "Select a context" +#~ msgstr "Select a context" #: src/renderer/components/+config-resource-quotas/add-quota-dialog.tsx:134 msgid "Select a quota.." @@ -2277,23 +2325,40 @@ msgstr "Select a quota.." #~ msgid "Select context" #~ msgstr "Select context" +#: src/renderer/components/+add-cluster/add-cluster.tsx:245 +#~ msgid "Select context(s)" +#~ msgstr "Select context(s)" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:272 +msgid "Select contexts" +msgstr "Select contexts" + #: 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" +#~ msgid "Select custom kube-config file" +#~ msgstr "Select custom kube-config file" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:85 +#: src/renderer/components/+add-cluster/add-cluster.tsx:85 +msgid "Select custom kubeconfig file" +msgstr "Select custom kubeconfig file" #: src/renderer/components/+add-cluster/add-cluster.tsx:212 #~ 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" +#~ 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:244 +msgid "Select kubeconfig file" +msgstr "Select kubeconfig file" + #: src/renderer/components/+add-cluster/add-cluster.tsx:224 #~ msgid "Select or drop file" #~ msgstr "Select or drop file" @@ -2310,6 +2375,22 @@ msgstr "Select role.." msgid "Select service accounts" msgstr "Select service accounts" +#: src/renderer/components/+add-cluster/add-cluster.tsx:244 +#~ msgid "Selected clusters: <0>{0}" +#~ msgstr "Selected clusters: <0>{0}" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:244 +#~ msgid "Selected contexts ({0}): <0>{1}" +#~ msgstr "Selected contexts ({0}): <0>{1}" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:271 +msgid "Selected contexts: <0>{0}" +msgstr "Selected contexts: <0>{0}" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:246 +#~ msgid "Selected contexts: {0}" +#~ msgstr "Selected contexts: {0}" + #: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets-details.tsx:27 #: src/renderer/components/+network-services/service-details.tsx:37 #: src/renderer/components/+network-services/services.tsx:50 @@ -2486,6 +2567,10 @@ msgstr "Submitting.." msgid "Subsets" msgstr "Subsets" +#: src/renderer/components/+add-cluster/add-cluster.tsx:122 +msgid "Successfully imported <0>{0} cluster(s)" +msgstr "Successfully imported <0>{0} cluster(s)" + #: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:128 msgid "Supplemental Groups" msgstr "Supplemental Groups" @@ -2532,7 +2617,7 @@ msgstr "There are no logs available." msgid "This field is required" msgstr "This field is required" -#: src/renderer/components/cluster-manager/clusters-menu.tsx:104 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:106 msgid "This is the quick launch menu." msgstr "This is the quick launch menu." @@ -2636,8 +2721,8 @@ msgstr "Upgrade version" msgid "Usage" msgstr "Usage" -#: src/renderer/components/+add-cluster/add-cluster.tsx:77 -#: src/renderer/components/+add-cluster/add-cluster.tsx:77 +#: src/renderer/components/+add-cluster/add-cluster.tsx:86 +#: src/renderer/components/+add-cluster/add-cluster.tsx:86 msgid "Use configuration" msgstr "Use configuration" @@ -2804,7 +2889,7 @@ msgstr "listKind" msgid "never" msgstr "never" -#: src/renderer/components/cluster-manager/clusters-menu.tsx:119 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:121 msgid "new" msgstr "new" diff --git a/locales/fi/messages.po b/locales/fi/messages.po index 63db6beede..dd6b82094c 100644 --- a/locales/fi/messages.po +++ b/locales/fi/messages.po @@ -87,8 +87,8 @@ msgstr "" msgid "Active" msgstr "" -#: src/renderer/components/+add-cluster/add-cluster.tsx:248 -#: src/renderer/components/cluster-manager/clusters-menu.tsx:116 +#: src/renderer/components/+add-cluster/add-cluster.tsx:303 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:118 msgid "Add Cluster" msgstr "" @@ -112,7 +112,7 @@ msgstr "" #~ msgid "Add cluster" #~ msgstr "" -#: src/renderer/components/+add-cluster/add-cluster.tsx:266 +#: src/renderer/components/+add-cluster/add-cluster.tsx:320 msgid "Add cluster(s)" msgstr "" @@ -132,6 +132,10 @@ msgstr "" #~ msgid "Added repos:" #~ msgstr "" +#: src/renderer/components/+add-cluster/add-cluster.tsx:244 +#~ msgid "Adding clusters: <0>{0}" +#~ msgstr "" + #: src/renderer/components/+preferences/preferences.tsx:103 msgid "Adding helm branch <0>{0} has failed: {1}" msgstr "" @@ -289,7 +293,7 @@ msgstr "" msgid "Arguments" msgstr "" -#: src/renderer/components/cluster-manager/clusters-menu.tsx:106 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:108 msgid "Associate clusters and choose the ones you want to access via quick launch menu by clicking the + button." msgstr "" @@ -319,7 +323,7 @@ msgstr "" msgid "Bindings" msgstr "" -#: src/renderer/components/+add-cluster/add-cluster.tsx:227 +#: src/renderer/components/+add-cluster/add-cluster.tsx:251 msgid "Browse" msgstr "" @@ -596,6 +600,14 @@ msgstr "" msgid "Context" msgstr "" +#: src/renderer/components/+add-cluster/add-cluster.tsx:244 +#~ msgid "Contexts: <0>{0}" +#~ msgstr "" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:249 +#~ msgid "Contexts: {0}" +#~ msgstr "" + #: src/renderer/components/+workloads-pods/pods.tsx:79 #: src/renderer/components/kube-object/kube-object-meta.tsx:39 msgid "Controlled By" @@ -899,6 +911,10 @@ msgstr "" msgid "Error stack" msgstr "" +#: src/renderer/components/+add-cluster/add-cluster.tsx:129 +msgid "Error while adding cluster(s): {0}" +msgstr "" + #: src/renderer/components/+events/events.tsx:56 #: src/renderer/components/+events/kube-event-details.tsx:34 #: src/renderer/components/+events/kube-event-details.tsx:39 @@ -1713,7 +1729,7 @@ msgstr "" msgid "Parameters" msgstr "" -#: src/renderer/components/+add-cluster/add-cluster.tsx:222 +#: src/renderer/components/+add-cluster/add-cluster.tsx:245 msgid "Paste as text" msgstr "" @@ -1737,10 +1753,18 @@ msgstr "" msgid "Persistent Volumes" msgstr "" -#: src/renderer/components/+add-cluster/add-cluster.tsx:106 -msgid "Please select kube-config's context" +#: src/renderer/components/+add-cluster/add-cluster.tsx:95 +msgid "Please select at least one cluster context" msgstr "" +#: src/renderer/components/+add-cluster/add-cluster.tsx:146 +#~ msgid "Please select at least one context to add a cluster" +#~ msgstr "" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:106 +#~ msgid "Please select kube-config's context" +#~ msgstr "" + #: src/renderer/components/+add-cluster/add-cluster.tsx:63 #~ msgid "Please select kubeconfig" #~ msgstr "" @@ -1749,6 +1773,10 @@ msgstr "" #~ msgid "Please select kubeconfig context" #~ msgstr "" +#: src/renderer/components/+add-cluster/add-cluster.tsx:106 +#~ msgid "Please select kubeconfig's context" +#~ msgstr "" + #: src/renderer/components/+workloads-pods/pod-menu.tsx:50 msgid "Pod" msgstr "" @@ -1834,13 +1862,33 @@ msgstr "" msgid "Privileged" msgstr "" +#: src/renderer/components/+add-cluster/add-cluster.tsx:264 +#~ msgid "Pro-Tip: paste kubeconfig (text/yaml) to get available contexts" +#~ msgstr "" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:264 +#~ msgid "Pro-Tip: paste kubeconfig to collect available contexts" +#~ msgstr "" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:263 +msgid "Pro-Tip: paste kubeconfig to get available contexts" +msgstr "" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:264 +#~ msgid "Pro-Tip: paste kubeconfig to parse available contexts" +#~ msgstr "" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:254 +msgid "Pro-Tip: you can also drag-n-drop kubeconfig file to this area" +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 "" +#~ 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 @@ -1851,7 +1899,7 @@ msgstr "" msgid "Proxy is used only for non-cluster communication." msgstr "" -#: src/renderer/components/+add-cluster/add-cluster.tsx:254 +#: src/renderer/components/+add-cluster/add-cluster.tsx:308 msgid "Proxy settings" msgstr "" @@ -2032,7 +2080,7 @@ msgstr "" msgid "Required field" msgstr "" -#: src/renderer/components/+add-cluster/add-cluster.tsx:226 +#: src/renderer/components/+add-cluster/add-cluster.tsx:250 #: src/renderer/components/item-object-list/page-filters-list.tsx:31 msgid "Reset" msgstr "" @@ -2042,8 +2090,8 @@ msgid "Reset filters?" msgstr "" #: src/renderer/components/+add-cluster/add-cluster.tsx:65 -msgid "Resetting config to {0}" -msgstr "" +#~ msgid "Resetting config to {0}" +#~ msgstr "" #: src/renderer/components/+add-cluster/add-cluster.tsx:68 #~ msgid "Resetting kube-config to current {0}" @@ -2248,9 +2296,9 @@ msgstr "" msgid "Secrets" msgstr "" -#: src/renderer/components/+add-cluster/add-cluster.tsx:251 -msgid "Select a context" -msgstr "" +#: src/renderer/components/+add-cluster/add-cluster.tsx:253 +#~ msgid "Select a context" +#~ msgstr "" #: src/renderer/components/+config-resource-quotas/add-quota-dialog.tsx:134 msgid "Select a quota.." @@ -2260,9 +2308,22 @@ msgstr "" #~ msgid "Select context" #~ msgstr "" +#: src/renderer/components/+add-cluster/add-cluster.tsx:245 +#~ msgid "Select context(s)" +#~ msgstr "" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:272 +msgid "Select contexts" +msgstr "" + #: src/renderer/components/+add-cluster/add-cluster.tsx:76 #: src/renderer/components/+add-cluster/add-cluster.tsx:76 -msgid "Select custom kube-config file" +#~ msgid "Select custom kube-config file" +#~ msgstr "" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:85 +#: src/renderer/components/+add-cluster/add-cluster.tsx:85 +msgid "Select custom kubeconfig file" msgstr "" #: src/renderer/components/+add-cluster/add-cluster.tsx:212 @@ -2270,13 +2331,17 @@ msgstr "" #~ msgstr "" #: src/renderer/components/+add-cluster/add-cluster.tsx:221 -msgid "Select kube-config file" -msgstr "" +#~ 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:244 +msgid "Select kubeconfig file" +msgstr "" + #: src/renderer/components/+add-cluster/add-cluster.tsx:224 #~ msgid "Select or drop file" #~ msgstr "" @@ -2293,6 +2358,22 @@ msgstr "" msgid "Select service accounts" msgstr "" +#: src/renderer/components/+add-cluster/add-cluster.tsx:244 +#~ msgid "Selected clusters: <0>{0}" +#~ msgstr "" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:244 +#~ msgid "Selected contexts ({0}): <0>{1}" +#~ msgstr "" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:271 +msgid "Selected contexts: <0>{0}" +msgstr "" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:246 +#~ msgid "Selected contexts: {0}" +#~ msgstr "" + #: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets-details.tsx:27 #: src/renderer/components/+network-services/service-details.tsx:37 #: src/renderer/components/+network-services/services.tsx:50 @@ -2469,6 +2550,10 @@ msgstr "" msgid "Subsets" msgstr "" +#: src/renderer/components/+add-cluster/add-cluster.tsx:122 +msgid "Successfully imported <0>{0} cluster(s)" +msgstr "" + #: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:128 msgid "Supplemental Groups" msgstr "" @@ -2515,7 +2600,7 @@ msgstr "" msgid "This field is required" msgstr "" -#: src/renderer/components/cluster-manager/clusters-menu.tsx:104 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:106 msgid "This is the quick launch menu." msgstr "" @@ -2619,8 +2704,8 @@ msgstr "" msgid "Usage" msgstr "" -#: src/renderer/components/+add-cluster/add-cluster.tsx:77 -#: src/renderer/components/+add-cluster/add-cluster.tsx:77 +#: src/renderer/components/+add-cluster/add-cluster.tsx:86 +#: src/renderer/components/+add-cluster/add-cluster.tsx:86 msgid "Use configuration" msgstr "" @@ -2787,7 +2872,7 @@ msgstr "" msgid "never" msgstr "" -#: src/renderer/components/cluster-manager/clusters-menu.tsx:119 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:121 msgid "new" msgstr "" diff --git a/locales/ru/messages.po b/locales/ru/messages.po index 1328f414ce..a6d79a7f2b 100644 --- a/locales/ru/messages.po +++ b/locales/ru/messages.po @@ -88,8 +88,8 @@ msgstr "Название аккаунта" msgid "Active" msgstr "Активный" -#: src/renderer/components/+add-cluster/add-cluster.tsx:248 -#: src/renderer/components/cluster-manager/clusters-menu.tsx:116 +#: src/renderer/components/+add-cluster/add-cluster.tsx:303 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:118 msgid "Add Cluster" msgstr "" @@ -113,7 +113,7 @@ msgstr "Добавить привязки к {name}" #~ msgid "Add cluster" #~ msgstr "" -#: src/renderer/components/+add-cluster/add-cluster.tsx:266 +#: src/renderer/components/+add-cluster/add-cluster.tsx:320 msgid "Add cluster(s)" msgstr "" @@ -133,6 +133,10 @@ msgstr "Добавить поле" #~ msgid "Added repos:" #~ msgstr "" +#: src/renderer/components/+add-cluster/add-cluster.tsx:244 +#~ msgid "Adding clusters: <0>{0}" +#~ msgstr "" + #: src/renderer/components/+preferences/preferences.tsx:103 msgid "Adding helm branch <0>{0} has failed: {1}" msgstr "" @@ -290,7 +294,7 @@ msgstr "Выполнить команду drain для ноды <0>{nodeName}{0}" +#~ msgstr "" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:249 +#~ msgid "Contexts: {0}" +#~ msgstr "" + #: src/renderer/components/+workloads-pods/pods.tsx:79 #: src/renderer/components/kube-object/kube-object-meta.tsx:39 msgid "Controlled By" @@ -904,6 +916,10 @@ msgstr "Среда" msgid "Error stack" msgstr "Стэк ошибки" +#: src/renderer/components/+add-cluster/add-cluster.tsx:129 +msgid "Error while adding cluster(s): {0}" +msgstr "" + #: src/renderer/components/+events/events.tsx:56 #: src/renderer/components/+events/kube-event-details.tsx:34 #: src/renderer/components/+events/kube-event-details.tsx:39 @@ -1731,7 +1747,7 @@ msgstr "Параллелизм" msgid "Parameters" msgstr "Параметры" -#: src/renderer/components/+add-cluster/add-cluster.tsx:222 +#: src/renderer/components/+add-cluster/add-cluster.tsx:245 msgid "Paste as text" msgstr "" @@ -1755,10 +1771,18 @@ msgstr "Persistent Volume Claims" msgid "Persistent Volumes" msgstr "Persistent Volumes" -#: src/renderer/components/+add-cluster/add-cluster.tsx:106 -msgid "Please select kube-config's context" +#: src/renderer/components/+add-cluster/add-cluster.tsx:95 +msgid "Please select at least one cluster context" msgstr "" +#: src/renderer/components/+add-cluster/add-cluster.tsx:146 +#~ msgid "Please select at least one context to add a cluster" +#~ msgstr "" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:106 +#~ msgid "Please select kube-config's context" +#~ msgstr "" + #: src/renderer/components/+add-cluster/add-cluster.tsx:63 #~ msgid "Please select kubeconfig" #~ msgstr "" @@ -1767,6 +1791,10 @@ msgstr "" #~ msgid "Please select kubeconfig context" #~ msgstr "" +#: src/renderer/components/+add-cluster/add-cluster.tsx:106 +#~ msgid "Please select kubeconfig's context" +#~ msgstr "" + #: src/renderer/components/+workloads-pods/pod-menu.tsx:50 msgid "Pod" msgstr "" @@ -1852,13 +1880,33 @@ msgstr "Секрет приватного ключа" msgid "Privileged" msgstr "" +#: src/renderer/components/+add-cluster/add-cluster.tsx:264 +#~ msgid "Pro-Tip: paste kubeconfig (text/yaml) to get available contexts" +#~ msgstr "" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:264 +#~ msgid "Pro-Tip: paste kubeconfig to collect available contexts" +#~ msgstr "" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:263 +msgid "Pro-Tip: paste kubeconfig to get available contexts" +msgstr "" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:264 +#~ msgid "Pro-Tip: paste kubeconfig to parse available contexts" +#~ msgstr "" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:254 +msgid "Pro-Tip: you can also drag-n-drop kubeconfig file to this area" +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 "" +#~ 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 @@ -1869,7 +1917,7 @@ msgstr "Комиссия" msgid "Proxy is used only for non-cluster communication." msgstr "" -#: src/renderer/components/+add-cluster/add-cluster.tsx:254 +#: src/renderer/components/+add-cluster/add-cluster.tsx:308 msgid "Proxy settings" msgstr "" @@ -2050,7 +2098,7 @@ msgstr "" msgid "Required field" msgstr "Обязательное поле" -#: src/renderer/components/+add-cluster/add-cluster.tsx:226 +#: src/renderer/components/+add-cluster/add-cluster.tsx:250 #: src/renderer/components/item-object-list/page-filters-list.tsx:31 msgid "Reset" msgstr "Сбросить" @@ -2060,8 +2108,8 @@ msgid "Reset filters?" msgstr "Сбросить фильтры?" #: src/renderer/components/+add-cluster/add-cluster.tsx:65 -msgid "Resetting config to {0}" -msgstr "" +#~ msgid "Resetting config to {0}" +#~ msgstr "" #: src/renderer/components/+add-cluster/add-cluster.tsx:68 #~ msgid "Resetting kube-config to current {0}" @@ -2266,9 +2314,9 @@ msgstr "Тип секрета" msgid "Secrets" msgstr "Secrets" -#: src/renderer/components/+add-cluster/add-cluster.tsx:251 -msgid "Select a context" -msgstr "" +#: src/renderer/components/+add-cluster/add-cluster.tsx:253 +#~ msgid "Select a context" +#~ msgstr "" #: src/renderer/components/+config-resource-quotas/add-quota-dialog.tsx:134 msgid "Select a quota.." @@ -2278,9 +2326,22 @@ msgstr "Выберите квоту..." #~ msgid "Select context" #~ msgstr "" +#: src/renderer/components/+add-cluster/add-cluster.tsx:245 +#~ msgid "Select context(s)" +#~ msgstr "" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:272 +msgid "Select contexts" +msgstr "" + #: src/renderer/components/+add-cluster/add-cluster.tsx:76 #: src/renderer/components/+add-cluster/add-cluster.tsx:76 -msgid "Select custom kube-config file" +#~ msgid "Select custom kube-config file" +#~ msgstr "" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:85 +#: src/renderer/components/+add-cluster/add-cluster.tsx:85 +msgid "Select custom kubeconfig file" msgstr "" #: src/renderer/components/+add-cluster/add-cluster.tsx:212 @@ -2288,13 +2349,17 @@ msgstr "" #~ msgstr "" #: src/renderer/components/+add-cluster/add-cluster.tsx:221 -msgid "Select kube-config file" -msgstr "" +#~ 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:244 +msgid "Select kubeconfig file" +msgstr "" + #: src/renderer/components/+add-cluster/add-cluster.tsx:224 #~ msgid "Select or drop file" #~ msgstr "" @@ -2311,6 +2376,22 @@ msgstr "Выбрать роль.." msgid "Select service accounts" msgstr "Выбрать сервисные аккаунты" +#: src/renderer/components/+add-cluster/add-cluster.tsx:244 +#~ msgid "Selected clusters: <0>{0}" +#~ msgstr "" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:244 +#~ msgid "Selected contexts ({0}): <0>{1}" +#~ msgstr "" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:271 +msgid "Selected contexts: <0>{0}" +msgstr "" + +#: src/renderer/components/+add-cluster/add-cluster.tsx:246 +#~ msgid "Selected contexts: {0}" +#~ msgstr "" + #: src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets-details.tsx:27 #: src/renderer/components/+network-services/service-details.tsx:37 #: src/renderer/components/+network-services/services.tsx:50 @@ -2487,6 +2568,10 @@ msgstr "Применение.." msgid "Subsets" msgstr "" +#: src/renderer/components/+add-cluster/add-cluster.tsx:122 +msgid "Successfully imported <0>{0} cluster(s)" +msgstr "" + #: src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx:128 msgid "Supplemental Groups" msgstr "" @@ -2533,7 +2618,7 @@ msgstr "Логи отсутствуют." msgid "This field is required" msgstr "Это обязательное поле" -#: src/renderer/components/cluster-manager/clusters-menu.tsx:104 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:106 msgid "This is the quick launch menu." msgstr "" @@ -2637,8 +2722,8 @@ msgstr "Обновить версию" msgid "Usage" msgstr "Использование" -#: src/renderer/components/+add-cluster/add-cluster.tsx:77 -#: src/renderer/components/+add-cluster/add-cluster.tsx:77 +#: src/renderer/components/+add-cluster/add-cluster.tsx:86 +#: src/renderer/components/+add-cluster/add-cluster.tsx:86 msgid "Use configuration" msgstr "" @@ -2805,7 +2890,7 @@ msgstr "" msgid "never" msgstr "" -#: src/renderer/components/cluster-manager/clusters-menu.tsx:119 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:121 msgid "new" msgstr "" diff --git a/src/common/cluster-store.ts b/src/common/cluster-store.ts index ad25f43f26..a036363bba 100644 --- a/src/common/cluster-store.ts +++ b/src/common/cluster-store.ts @@ -87,6 +87,7 @@ export class ClusterStore extends BaseStore { return this.activeClusterId === id; } + @action setActive(id: ClusterId) { this.activeClusterId = id; } @@ -108,14 +109,18 @@ export class ClusterStore extends BaseStore { } @action - async addCluster(model: ClusterModel, activate = true): Promise { + addCluster(model: ClusterModel): Cluster { tracker.event("cluster", "add"); const cluster = new Cluster(model); this.clusters.set(model.id, cluster); - if (activate) this.activeClusterId = model.id; return cluster; } + @action + addClusters(models: ClusterModel[]) { + models.forEach(model => this.addCluster(model)); + } + @action async removeById(clusterId: ClusterId) { tracker.event("cluster", "remove"); diff --git a/src/renderer/components/+add-cluster/add-cluster.scss b/src/renderer/components/+add-cluster/add-cluster.scss index fc0224fe99..90977fa78b 100644 --- a/src/renderer/components/+add-cluster/add-cluster.scss +++ b/src/renderer/components/+add-cluster/add-cluster.scss @@ -9,6 +9,16 @@ .hint { margin-top: -$padding; + color: $textColorSecondary; + + > * { + vertical-align: middle; + } + } + + .AceEditor { + min-height: 200px; + max-height: 400px; } .Select { @@ -16,6 +26,14 @@ --flex-gap: #{$padding}; } + // todo: extract to component, merge with namespace-select.scss + &__placeholder { + width: 100%; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + } + &__control { box-shadow: 0 0 0 1px $borderFaintColor; } diff --git a/src/renderer/components/+add-cluster/add-cluster.tsx b/src/renderer/components/+add-cluster/add-cluster.tsx index 09e8851e87..f997ab4f41 100644 --- a/src/renderer/components/+add-cluster/add-cluster.tsx +++ b/src/renderer/components/+add-cluster/add-cluster.tsx @@ -2,7 +2,7 @@ import "./add-cluster.scss" import os from "os"; import React, { Fragment } from "react"; import { observer } from "mobx-react"; -import { computed, observable } from "mobx"; +import { action, observable, runInAction } from "mobx"; import { remote } from "electron"; import { KubeConfig } from "@kubernetes/client-node"; import { _i18n } from "../../i18n"; @@ -14,7 +14,7 @@ import { Button } from "../button"; import { Icon } from "../icon"; import { WizardLayout } from "../layout/wizard-layout"; import { kubeConfigDefaultPath, loadConfig, saveConfigToAppFiles, splitConfig, validateConfig } from "../../../common/kube-helpers"; -import { clusterStore } from "../../../common/cluster-store"; +import { ClusterModel, clusterStore } from "../../../common/cluster-store"; import { workspaceStore } from "../../../common/workspace-store"; import { v4 as uuid } from "uuid" import { navigate } from "../../navigation"; @@ -31,17 +31,18 @@ enum KubeConfigSourceTab { @observer export class AddCluster extends React.Component { - @observable.ref localKubeConfig: KubeConfig; - @observable.ref newClusterConfig: KubeConfig; + @observable.ref kubeConfigLocal: KubeConfig; @observable.ref error: React.ReactNode; - @observable kubeConfigPath = ""; + @observable kubeContexts = observable.map(); // available contexts from kubeconfig-file or user-input + @observable selectedContexts = observable.array(); @observable sourceTab = KubeConfigSourceTab.FILE; + @observable kubeConfigPath = ""; + @observable customConfig = "" + @observable proxyServer = "" @observable isWaiting = false @observable showSettings = false @observable dropAreaActive = false; - @observable proxyServer = "" - @observable customConfig = "" componentDidMount() { this.setKubeConfig(userStore.kubeConfigPath); @@ -51,19 +52,17 @@ export class AddCluster extends React.Component { userStore.markNewContextsAsSeen(); } - protected setKubeConfig(filePath: string, { saveGlobal = true, throwError = false } = {}) { + @action + protected setKubeConfig(filePath: string, { throwError = false } = {}) { try { - const kubeConfig = loadConfig(filePath); - validateConfig(kubeConfig); + this.kubeConfigLocal = loadConfig(filePath); + validateConfig(this.kubeConfigLocal); + this.refreshContexts(); this.kubeConfigPath = filePath; - this.localKubeConfig = kubeConfig; - this.newClusterConfig = null; // reset previously selected - if (saveGlobal) { - userStore.kubeConfigPath = filePath; // save to store - } + userStore.kubeConfigPath = filePath; // save to store } catch (err) { Notifications.error( -

Can't read config file in {filePath}: {String(err)}

+
Can't setup {filePath} as kubeconfig: {String(err)}
); if (throwError) { throw err; @@ -71,27 +70,48 @@ export class AddCluster extends React.Component { } } - onKubeConfigInputBlur = () => { - const isChanged = this.kubeConfigPath !== userStore.kubeConfigPath; - if (isChanged) { - this.kubeConfigPath = this.kubeConfigPath.replace("~", os.homedir()); + refreshContexts = (autoSelect = true) => { + this.selectedContexts.clear(); + + switch (this.sourceTab) { + case KubeConfigSourceTab.FILE: + const contexts = this.getContexts(this.kubeConfigLocal); + this.kubeContexts.replace(contexts); + break; + + case KubeConfigSourceTab.TEXT: try { - this.setKubeConfig(this.kubeConfigPath, { throwError: true }) + this.error = "" + const contexts = this.getContexts(loadConfig(this.customConfig || "{}")); + this.kubeContexts.replace(contexts); } catch (err) { - Notifications.info(

- Resetting config to {userStore.kubeConfigPath} -

, { timeout: 2500 }); - this.setKubeConfig(userStore.kubeConfigPath); + this.error = String(err); } + break; + } + if (autoSelect) { + const allContexts = Array.from(this.kubeContexts.keys()); + this.selectedContexts.replace(allContexts); } } - selectKubeConfig = async () => { + protected getContexts(config: KubeConfig): Map { + const contexts = new Map(); + splitConfig(config).forEach(config => { + const isExists = clusterStore.hasContext(config.currentContext); + if (!isExists) { + contexts.set(config.currentContext, config); + } + }) + return contexts + } + + selectKubeConfigDialog = async () => { const { dialog, BrowserWindow } = remote; const { canceled, filePaths } = await dialog.showOpenDialog(BrowserWindow.getFocusedWindow(), { defaultPath: this.kubeConfigPath, properties: ["openFile", "showHiddenFiles"], - message: _i18n._(t`Select custom kube-config file`), + message: _i18n._(t`Select custom kubeconfig file`), buttonLabel: _i18n._(t`Use configuration`), }); if (!canceled && filePaths.length) { @@ -99,67 +119,44 @@ export class AddCluster extends React.Component { } } - resetKubeConfig = () => { - this.setKubeConfig(kubeConfigDefaultPath); - } - - @computed get clusterOptions() { - const options: SelectOption[] = []; - if (this.localKubeConfig) { - splitConfig(this.localKubeConfig).forEach(kubeConfig => { - const context = kubeConfig.currentContext; - const hasContext = clusterStore.hasContext(context); - if (!hasContext) { - options.push({ - value: kubeConfig, - label: context, - }); - } - }) - } - return options; - } - - protected formatClusterContextLabel = ({ value, label }: SelectOption) => { - if (value instanceof KubeConfig) { - const context = value.currentContext; - const isNew = userStore.newContexts.has(context); - return ( -
- {context} - {isNew && } -
- ) - } - return label; - }; - - // fixme: allow to create multiple clusters at once (multi-select) - addCluster = async () => { - const { newClusterConfig, customConfig, proxyServer } = this; - const clusterId = uuid(); - this.isWaiting = true - this.error = "" + addClusters = () => { try { - const config = this.sourceTab == KubeConfigSourceTab.TEXT ? loadConfig(customConfig) : newClusterConfig; - if (!config) { - this.error = Please select kube-config's context + if (!this.selectedContexts.length) { + this.error = Please select at least one cluster context return; } - validateConfig(config); - await clusterStore.addCluster({ - id: clusterId, - kubeConfigPath: saveConfigToAppFiles(clusterId, config), - workspace: workspaceStore.currentWorkspaceId, - contextName: config.currentContext, - preferences: { - clusterName: config.currentContext, - httpsProxy: proxyServer || undefined, - }, + this.error = "" + this.isWaiting = true + const newClusters: ClusterModel[] = this.selectedContexts.map(context => { + const clusterId = uuid(); + const kubeConfig = this.kubeContexts.get(context); + return { + id: clusterId, + kubeConfigPath: saveConfigToAppFiles(clusterId, kubeConfig), + workspace: workspaceStore.currentWorkspaceId, + contextName: kubeConfig.currentContext, + preferences: { + clusterName: kubeConfig.currentContext, + httpsProxy: this.proxyServer || undefined, + }, + } }); - navigate(clusterViewURL({ params: { clusterId } })) + runInAction(() => { + clusterStore.addClusters(newClusters); + if (newClusters.length === 1) { + const clusterId = newClusters[0].id; + clusterStore.setActive(clusterId); + navigate(clusterViewURL({ params: { clusterId } })); + } else { + Notifications.ok( + Successfully imported {newClusters.length} cluster(s) + ); + } + }) + this.refreshContexts(); } catch (err) { this.error = String(err); + Notifications.error(Error while adding cluster(s): {this.error}); } finally { this.isWaiting = false; } @@ -219,10 +216,10 @@ export class AddCluster extends React.Component { renderKubeConfigSource() { return ( <> - this.sourceTab = v}> + Select kube-config file} + label={Select kubeconfig file} active={this.sourceTab == KubeConfigSourceTab.FILE}/> this.setKubeConfig(kubeConfigDefaultPath)} tooltip={Reset} /> )} Browse} /> - Pro-tip: you can also drag-n-drop kube-config file to this area + Pro-Tip: you can also drag-n-drop kubeconfig file to this area )} {this.sourceTab === KubeConfigSourceTab.TEXT && ( - this.customConfig = value} - /> + <> + { + this.customConfig = value; + this.refreshContexts(); + }} + /> + + Pro-Tip: paste kubeconfig to get available contexts + + )} ) } + renderContextSelector() { + const allContexts = Array.from(this.kubeContexts.keys()); + const placeholder = this.selectedContexts.length > 0 + ? Selected contexts: {this.selectedContexts.length} + : Select contexts; + return ( + <> + Select a context} - value={this.newClusterConfig} - options={this.clusterOptions} - onChange={({ value }: SelectOption) => this.newClusterConfig = value} - formatOptionLabel={this.formatClusterContextLabel} - /> + {this.renderContextSelector()} diff --git a/src/renderer/components/ace-editor/ace-editor.tsx b/src/renderer/components/ace-editor/ace-editor.tsx index 10fecbce75..08f09ed76f 100644 --- a/src/renderer/components/ace-editor/ace-editor.tsx +++ b/src/renderer/components/ace-editor/ace-editor.tsx @@ -3,17 +3,19 @@ import "./ace-editor.scss" import React from "react" -import { observer, disposeOnUnmount } from "mobx-react"; -import AceBuild, { Ace } from "ace-builds" -import { autobind, cssNames } from "../../utils"; -import { themeStore } from "../../theme.store"; import { reaction } from "mobx"; +import { disposeOnUnmount, observer } from "mobx-react"; +import AceBuild, { Ace } from "ace-builds" +import { autobind, cssNames, noop } from "../../utils"; +import { themeStore } from "../../theme.store"; interface Props extends Partial { className?: string; autoFocus?: boolean; hidden?: boolean; cursorPos?: Ace.Point; + onFocus?(evt: FocusEvent, value: string): void; + onBlur?(evt: FocusEvent, value: string): void; onChange?(value: string, delta: Ace.Delta): void; onCursorPosChange?(point: Ace.Point): void; } @@ -30,6 +32,8 @@ const defaultProps: Partial = { foldStyle: "markbegin", printMargin: false, useWorker: false, + onBlur: noop, + onFocus: noop, }; @observer @@ -64,7 +68,7 @@ export class AceEditor extends React.Component { async componentDidMount() { const { mode, autoFocus, className, hidden, cursorPos, - onChange, onCursorPosChange, children, + onBlur, onFocus, onChange, onCursorPosChange, children, ...options } = this.props; @@ -75,6 +79,8 @@ export class AceEditor extends React.Component { this.setCursorPos(cursorPos); // bind events + this.editor.on("blur", (evt: any) => onBlur(evt, this.getValue())); + this.editor.on("focus", (evt: any) => onFocus(evt, this.getValue())); this.editor.on("change", this.onChange); this.editor.selection.on("changeCursor", this.onCursorPosChange); diff --git a/src/renderer/components/cluster-manager/clusters-menu.tsx b/src/renderer/components/cluster-manager/clusters-menu.tsx index 23d85507c3..c0fe7e372a 100644 --- a/src/renderer/components/cluster-manager/clusters-menu.tsx +++ b/src/renderer/components/cluster-manager/clusters-menu.tsx @@ -76,8 +76,10 @@ export class ClustersMenu extends React.Component { label: _i18n._(t`Remove`), }, ok: () => { + if (clusterStore.activeClusterId === cluster.id) { + navigate(landingURL()); + } clusterStore.removeById(cluster.id); - navigate(landingURL()); }, message:

Are you sure want to remove cluster {cluster.contextName}?

, }) diff --git a/src/renderer/components/dock/dock.scss b/src/renderer/components/dock/dock.scss index d422ec46d9..6b2d90925d 100644 --- a/src/renderer/components/dock/dock.scss +++ b/src/renderer/components/dock/dock.scss @@ -24,8 +24,12 @@ &:not(.isOpen) { height: auto !important; - .Tab:not(:focus):after { - display: none; + .Tab { + --color-active: inherit; + + &:not(:focus):after { + display: none; + } } } diff --git a/src/renderer/components/input/input.tsx b/src/renderer/components/input/input.tsx index 1edabbee48..d8c8ec444b 100644 --- a/src/renderer/components/input/input.tsx +++ b/src/renderer/components/input/input.tsx @@ -258,7 +258,7 @@ export class Input extends React.Component { render() { const { multiLine, showValidationLine, validators, theme, maxRows, children, - maxLength, rows, disabled, autoSelectOnFocus, + maxLength, rows, disabled, autoSelectOnFocus, iconLeft, iconRight, ...inputProps } = this.props; const { focused, dirty, valid, validating, errors } = this.state; @@ -273,11 +273,6 @@ export class Input extends React.Component { validatingLine: validating && showValidationLine, }); - // normalize icons - let { iconLeft, iconRight } = this.props; - if (isString(iconLeft)) iconLeft = - if (isString(iconRight)) iconRight = - // prepare input props Object.assign(inputProps, { className: "input box grow", @@ -294,9 +289,9 @@ export class Input extends React.Component { return (