From 4d63ef2878fbe10fdd13d9962b3ca1c4681eba0d Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Mon, 1 Nov 2021 07:23:29 -0400 Subject: [PATCH 1/7] Use spec.serviceName as an externalIP if nothing else (#4188) * Use spec.serviceName as an externalIP if nothing else Signed-off-by: Sebastian Malton * Move using externalName to display logic Signed-off-by: Sebastian Malton --- src/common/k8s-api/endpoints/service.api.ts | 10 ++++-- .../+network-services/service-details.tsx | 9 ++++-- .../components/+network-services/services.tsx | 32 ++++++++++++------- 3 files changed, 34 insertions(+), 17 deletions(-) diff --git a/src/common/k8s-api/endpoints/service.api.ts b/src/common/k8s-api/endpoints/service.api.ts index e5af9de828..f78d8e6be8 100644 --- a/src/common/k8s-api/endpoints/service.api.ts +++ b/src/common/k8s-api/endpoints/service.api.ts @@ -53,7 +53,7 @@ export interface Service { clusterIP: string; clusterIPs?: string[]; externalTrafficPolicy?: string; - externalName: string; + externalName?: string; loadBalancerIP?: string; loadBalancerSourceRanges?: string[]; sessionAffinity: string; @@ -100,11 +100,15 @@ export class Service extends KubeObject { getExternalIps() { const lb = this.getLoadBalancer(); - if (lb && lb.ingress) { + if (lb?.ingress) { return lb.ingress.map(val => val.ip || val.hostname); } - return this.spec.externalIPs || []; + if (Array.isArray(this.spec?.externalIPs)) { + return this.spec.externalIPs; + } + + return []; } getType() { diff --git a/src/renderer/components/+network-services/service-details.tsx b/src/renderer/components/+network-services/service-details.tsx index 5948765089..d247e7908c 100644 --- a/src/renderer/components/+network-services/service-details.tsx +++ b/src/renderer/components/+network-services/service-details.tsx @@ -67,6 +67,11 @@ export class ServiceDetails extends React.Component { const { spec } = service; const endpoint = endpointStore.getByName(service.getName(), service.getNs()); + const externalIps = service.getExternalIps(); + + if (externalIps.length === 0 && spec?.externalName) { + externalIps.push(spec.externalName); + } return (
@@ -106,9 +111,9 @@ export class ServiceDetails extends React.Component { {service.getIpFamilyPolicy()} - {service.getExternalIps().length > 0 && ( + {externalIps.length > 0 && ( - {service.getExternalIps().map(ip =>
{ip}
)} + {externalIps.map(ip =>
{ip}
)}
)} diff --git a/src/renderer/components/+network-services/services.tsx b/src/renderer/components/+network-services/services.tsx index fe3b2b40ab..e29cc737cd 100644 --- a/src/renderer/components/+network-services/services.tsx +++ b/src/renderer/components/+network-services/services.tsx @@ -81,18 +81,26 @@ export class Services extends React.Component { { title: "Age", className: "age", sortBy: columnId.age, id: columnId.age }, { title: "Status", className: "status", sortBy: columnId.status, id: columnId.status }, ]} - renderTableContents={service => [ - service.getName(), - , - service.getNs(), - service.getType(), - service.getClusterIp(), - service.getPorts().join(", "), - service.getExternalIps().join(", ") || "-", - service.getSelector().map(label => ), - service.getAge(), - { title: service.getStatus(), className: service.getStatus().toLowerCase() }, - ]} + renderTableContents={service => { + const externalIps = service.getExternalIps(); + + if (externalIps.length === 0 && service.spec?.externalName) { + externalIps.push(service.spec.externalName); + } + + return [ + service.getName(), + , + service.getNs(), + service.getType(), + service.getClusterIp(), + service.getPorts().join(", "), + externalIps.join(", ") || "-", + service.getSelector().map(label => ), + service.getAge(), + { title: service.getStatus(), className: service.getStatus().toLowerCase() }, + ]; + }} /> ); } From 30170163a65dffbb806b31c25197d37a282ec758 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Nov 2021 08:37:09 -0400 Subject: [PATCH 2/7] Bump xterm from 4.12.0 to 4.14.1 (#4206) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 6d5f7d93fe..f290be6867 100644 --- a/package.json +++ b/package.json @@ -378,7 +378,7 @@ "webpack-dev-server": "^3.11.2", "webpack-node-externals": "^1.7.2", "what-input": "^5.2.10", - "xterm": "^4.12.0", + "xterm": "^4.14.1", "xterm-addon-fit": "^0.5.0" } } diff --git a/yarn.lock b/yarn.lock index ee80b63955..d3d815007b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14641,10 +14641,10 @@ xterm-addon-fit@^0.5.0: resolved "https://registry.yarnpkg.com/xterm-addon-fit/-/xterm-addon-fit-0.5.0.tgz#2d51b983b786a97dcd6cde805e700c7f913bc596" integrity sha512-DsS9fqhXHacEmsPxBJZvfj2la30Iz9xk+UKjhQgnYNkrUIN5CYLbw7WEfz117c7+S86S/tpHPfvNxJsF5/G8wQ== -xterm@^4.12.0: - version "4.12.0" - resolved "https://registry.yarnpkg.com/xterm/-/xterm-4.12.0.tgz#db09b425b4dcae5b96f8cbbaaa93b3bc60997ca9" - integrity sha512-K5mF/p3txUV18mjiZFlElagoHFpqXrm5OYHeoymeXSu8GG/nMaOO/+NRcNCwfdjzAbdQ5VLF32hEHiWWKKm0bw== +xterm@^4.14.1: + version "4.14.1" + resolved "https://registry.yarnpkg.com/xterm/-/xterm-4.14.1.tgz#6884cb8fb3b83353b1a98139ea23daedf8e35796" + integrity sha512-jgzNg5BuGPwq5/M4dGnmbghZvHx2jaj+9crSEt15bV34Za49VziBmCu7zIy88zUKKiGTxeo7aVzirFSJArIMFw== y18n@^3.2.1: version "3.2.2" From c6dab62e9972a644f8dbd75ae444ea06fd80834f Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Mon, 1 Nov 2021 08:37:29 -0400 Subject: [PATCH 3/7] Lint: no-template-curly-in-string (error) (#4196) --- .eslintrc.js | 9 ++++++--- src/main/kubectl.ts | 22 +++++++++++----------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 1426f74e7f..e013a19bf8 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -85,7 +85,8 @@ module.exports = { { "blankLine": "always", "prev": "*", "next": "class" }, { "blankLine": "always", "prev": ["const", "let", "var"], "next": "*" }, { "blankLine": "any", "prev": ["const", "let", "var"], "next": ["const", "let", "var"]}, - ] + ], + "no-template-curly-in-string": "error", } }, { @@ -146,7 +147,8 @@ module.exports = { { "blankLine": "always", "prev": "*", "next": "class" }, { "blankLine": "always", "prev": ["const", "let", "var"], "next": "*" }, { "blankLine": "any", "prev": ["const", "let", "var"], "next": ["const", "let", "var"]}, - ] + ], + "no-template-curly-in-string": "error", }, }, { @@ -216,7 +218,8 @@ module.exports = { { "blankLine": "any", "prev": ["const", "let", "var"], "next": ["const", "let", "var"]}, ], "react-hooks/rules-of-hooks": "error", - "react-hooks/exhaustive-deps": "off" + "react-hooks/exhaustive-deps": "off", + "no-template-curly-in-string": "error", }, } ] diff --git a/src/main/kubectl.ts b/src/main/kubectl.ts index c68e00b2dd..9454ec33fd 100644 --- a/src/main/kubectl.ts +++ b/src/main/kubectl.ts @@ -346,10 +346,10 @@ export class Kubectl { bashScript += `export PATH="${helmPath}:${kubectlPath}:$PATH"\n`; bashScript += "export KUBECONFIG=\"$tempkubeconfig\"\n"; - bashScript += "NO_PROXY=\",${NO_PROXY:-localhost},\"\n"; - bashScript += "NO_PROXY=\"${NO_PROXY//,localhost,/,}\"\n"; - bashScript += "NO_PROXY=\"${NO_PROXY//,127.0.0.1,/,}\"\n"; - bashScript += "NO_PROXY=\"localhost,127.0.0.1${NO_PROXY%,}\"\n"; + bashScript += `NO_PROXY=\",\${NO_PROXY:-localhost},\"\n`; + bashScript += `NO_PROXY=\"\${NO_PROXY//,localhost,/,}\"\n`; + bashScript += `NO_PROXY=\"\${NO_PROXY//,127.0.0.1,/,}\"\n`; + bashScript += `NO_PROXY=\"localhost,127.0.0.1\${NO_PROXY%,}\"\n`; bashScript += "export NO_PROXY\n"; bashScript += "unset tempkubeconfig\n"; await fsPromises.writeFile(bashScriptPath, bashScript.toString(), { mode: 0o644 }); @@ -371,14 +371,14 @@ export class Kubectl { zshScript += `helmpath=\"${helmPath}"\n`; zshScript += "p=\":$kubectlpath:\"\n"; zshScript += "d=\":$PATH:\"\n"; - zshScript += "d=${d//$p/:}\n"; - zshScript += "d=${d/#:/}\n"; - zshScript += "export PATH=\"$helmpath:$kubectlpath:${d/%:/}\"\n"; + zshScript += `d=\${d//$p/:}\n`; + zshScript += `d=\${d/#:/}\n`; + zshScript += `export PATH=\"$helmpath:$kubectlpath:\${d/%:/}\"\n`; zshScript += "export KUBECONFIG=\"$tempkubeconfig\"\n"; - zshScript += "NO_PROXY=\",${NO_PROXY:-localhost},\"\n"; - zshScript += "NO_PROXY=\"${NO_PROXY//,localhost,/,}\"\n"; - zshScript += "NO_PROXY=\"${NO_PROXY//,127.0.0.1,/,}\"\n"; - zshScript += "NO_PROXY=\"localhost,127.0.0.1${NO_PROXY%,}\"\n"; + zshScript += `NO_PROXY=\",\${NO_PROXY:-localhost},\"\n`; + zshScript += `NO_PROXY=\"\${NO_PROXY//,localhost,/,}\"\n`; + zshScript += `NO_PROXY=\"\${NO_PROXY//,127.0.0.1,/,}\"\n`; + zshScript += `NO_PROXY=\"localhost,127.0.0.1\${NO_PROXY%,}\"\n`; zshScript += "export NO_PROXY\n"; zshScript += "unset tempkubeconfig\n"; zshScript += "unset OLD_ZDOTDIR\n"; From e74f17e8ceb556b7b8deb92ba73b6bf4441e5c1f Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Mon, 1 Nov 2021 08:37:37 -0400 Subject: [PATCH 4/7] Lint: no-unused-expressions (error) (#4197) --- .eslintrc.js | 5 +++ src/common/getTSLoader.ts | 12 +++--- .../+catalog/hotbar-toggle-menu-item.tsx | 11 ++++-- .../components/+preferences/editor.tsx | 21 +++++++---- .../deployment-scale-dialog.tsx | 6 ++- .../+workloads-pods/pod-container-env.tsx | 37 ++++++++----------- .../replicaset-scale-dialog.tsx | 6 ++- .../statefulset-scale-dialog.tsx | 6 ++- src/renderer/components/menu/menu.tsx | 25 +++++++++++-- 9 files changed, 79 insertions(+), 50 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index e013a19bf8..8351d1b973 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -77,6 +77,7 @@ module.exports = { "object-shorthand": "error", "prefer-template": "error", "template-curly-spacing": "error", + "no-unused-expressions": "error", "padding-line-between-statements": [ "error", { "blankLine": "always", "prev": "*", "next": "return" }, @@ -139,6 +140,8 @@ module.exports = { "object-shorthand": "error", "prefer-template": "error", "template-curly-spacing": "error", + "no-unused-expressions": "off", + "@typescript-eslint/no-unused-expressions": "error", "padding-line-between-statements": [ "error", { "blankLine": "always", "prev": "*", "next": "return" }, @@ -208,6 +211,8 @@ module.exports = { "object-shorthand": "error", "prefer-template": "error", "template-curly-spacing": "error", + "no-unused-expressions": "off", + "@typescript-eslint/no-unused-expressions": "error", "padding-line-between-statements": [ "error", { "blankLine": "always", "prev": "*", "next": "return" }, diff --git a/src/common/getTSLoader.ts b/src/common/getTSLoader.ts index 6c76770d5d..242b134adb 100644 --- a/src/common/getTSLoader.ts +++ b/src/common/getTSLoader.ts @@ -23,20 +23,18 @@ import esbuild from "esbuild"; /** * A function returning webpack ts/tsx loader - * + * * depends on env LENS_DEV_USE_ESBUILD_LOADER to use esbuild-loader (faster) or good-old ts-loader - * - * @param testRegExp - the regex for webpack to conditional find the files + * + * @param testRegExp - the regex for webpack to conditional find the files * @returns ts/tsx webpack loader configuration object */ const getTSLoader = ( testRegExp: RegExp, transpileOnly = true ) => { - const useEsbuildLoader = process.env.LENS_DEV_USE_ESBUILD_LOADER === "true"; + if (process.env.LENS_DEV_USE_ESBUILD_LOADER === "true") { + console.info(`\nšŸš€ using esbuild-loader for ts(x)`); - useEsbuildLoader && console.info(`\nšŸš€ using esbuild-loader for ts(x)`); - - if (useEsbuildLoader) { return { test: testRegExp, loader: "esbuild-loader", diff --git a/src/renderer/components/+catalog/hotbar-toggle-menu-item.tsx b/src/renderer/components/+catalog/hotbar-toggle-menu-item.tsx index 00f6f3600f..da89ff3f26 100644 --- a/src/renderer/components/+catalog/hotbar-toggle-menu-item.tsx +++ b/src/renderer/components/+catalog/hotbar-toggle-menu-item.tsx @@ -27,14 +27,17 @@ import type { CatalogEntity } from "../../api/catalog-entity"; export function HotbarToggleMenuItem(props: { entity: CatalogEntity, addContent: ReactNode, removeContent: ReactNode }) { const store = HotbarStore.getInstance(); - const add = () => store.addToHotbar(props.entity); - const remove = () => store.removeFromHotbar(props.entity.getId()); const [itemInHotbar, setItemInHotbar] = useState(store.isAddedToActive(props.entity)); return ( { - itemInHotbar ? remove() : add(); - setItemInHotbar(!itemInHotbar); + if (itemInHotbar) { + store.removeFromHotbar(props.entity.getId()); + setItemInHotbar(false); + } else { + store.addToHotbar(props.entity); + setItemInHotbar(true); + } }}> {itemInHotbar ? props.removeContent : props.addContent } diff --git a/src/renderer/components/+preferences/editor.tsx b/src/renderer/components/+preferences/editor.tsx index 707bb14428..77adac50a7 100644 --- a/src/renderer/components/+preferences/editor.tsx +++ b/src/renderer/components/+preferences/editor.tsx @@ -35,6 +35,7 @@ enum EditorLineNumbersStyles { } export const Editor = observer(() => { + const userStore = UserStore.getInstance(); return (
@@ -43,8 +44,8 @@ export const Editor = observer(() => { UserStore.getInstance().enableEditorMinimap(v.target.checked)} + checked={userStore.editorConfiguration.miniMap.enabled} + onChange={v => userStore.enableEditorMinimap(v.target.checked)} name="minimap" /> } @@ -55,8 +56,8 @@ export const Editor = observer(() => { ({label: entry[1], value: entry[0]}))} + options={Object.entries(EditorLineNumbersStyles).map(entry => ({ label: entry[1], value: entry[0] }))} value={userStore.editorConfiguration?.lineNumbers} onChange={({ value }: SelectOption) => userStore.setEditorLineNumbers(value)} themeName="lens" diff --git a/src/renderer/components/+preferences/kubeconfig-syncs.tsx b/src/renderer/components/+preferences/kubeconfig-syncs.tsx index 35b3d88b04..e517494f04 100644 --- a/src/renderer/components/+preferences/kubeconfig-syncs.tsx +++ b/src/renderer/components/+preferences/kubeconfig-syncs.tsx @@ -46,7 +46,7 @@ interface Value { info: SyncInfo; } -async function getMapEntry({ filePath, ...data}: KubeconfigSyncEntry): Promise<[string, Value]> { +async function getMapEntry({ filePath, ...data }: KubeconfigSyncEntry): Promise<[string, Value]> { try { // stat follows the stat(2) linux syscall spec, namely it follows symlinks const stats = await fse.stat(filePath); diff --git a/src/renderer/components/+preferences/preferences.tsx b/src/renderer/components/+preferences/preferences.tsx index 2abed711e6..2b1a536b9f 100644 --- a/src/renderer/components/+preferences/preferences.tsx +++ b/src/renderer/components/+preferences/preferences.tsx @@ -106,7 +106,7 @@ export class Preferences extends React.Component { } } -export function ExtensionSettings({ title, id, components: { Hint, Input } }: RegisteredAppPreference) { +export function ExtensionSettings({ title, id, components: { Hint, Input }}: RegisteredAppPreference) { return (
diff --git a/src/renderer/components/+preferences/removable-item.tsx b/src/renderer/components/+preferences/removable-item.tsx index 19164746fa..131974f4d1 100644 --- a/src/renderer/components/+preferences/removable-item.tsx +++ b/src/renderer/components/+preferences/removable-item.tsx @@ -31,7 +31,7 @@ interface Props extends DOMAttributes{ className?: string; } -export function RemovableItem({icon, onRemove, children, className, ...rest}: Props) { +export function RemovableItem({ icon, onRemove, children, className, ...rest }: Props) { return (
{icon && ( diff --git a/src/renderer/components/+workloads-deployments/deployment-scale-dialog.test.tsx b/src/renderer/components/+workloads-deployments/deployment-scale-dialog.test.tsx index 3bc22b8263..2c6d3d9592 100644 --- a/src/renderer/components/+workloads-deployments/deployment-scale-dialog.test.tsx +++ b/src/renderer/components/+workloads-deployments/deployment-scale-dialog.test.tsx @@ -39,7 +39,7 @@ const dummyDeployment: Deployment = { selfLink: "link", spec: { replicas: 1, - selector: { matchLabels: { dummy: "label" } }, + selector: { matchLabels: { dummy: "label" }}, template: { metadata: { labels: { dummy: "label" }, diff --git a/src/renderer/components/+workloads-pods/pod-details-affinities.tsx b/src/renderer/components/+workloads-pods/pod-details-affinities.tsx index dee24f5056..3dfcca76cb 100644 --- a/src/renderer/components/+workloads-pods/pod-details-affinities.tsx +++ b/src/renderer/components/+workloads-pods/pod-details-affinities.tsx @@ -46,7 +46,7 @@ export class PodDetailsAffinities extends React.Component {
{ GlobalPageRegistry.getInstance().getItems() - .map(({ url, components: { Page } }) => ( + .map(({ url, components: { Page }}) => ( )) } diff --git a/src/renderer/components/cluster-settings/cluster-settings.tsx b/src/renderer/components/cluster-settings/cluster-settings.tsx index ce9822b26c..6c35c1bbc8 100644 --- a/src/renderer/components/cluster-settings/cluster-settings.tsx +++ b/src/renderer/components/cluster-settings/cluster-settings.tsx @@ -119,7 +119,7 @@ export function MetricsSettings({ entity }: EntitySettingViewProps) { ); } -export function NodeShellSettings({entity}: EntitySettingViewProps) { +export function NodeShellSettings({ entity }: EntitySettingViewProps) { const cluster = getClusterForEntity(entity); if(!cluster) { diff --git a/src/renderer/components/dock/create-resource.store.ts b/src/renderer/components/dock/create-resource.store.ts index f0b6b41154..0b3b69f1cd 100644 --- a/src/renderer/components/dock/create-resource.store.ts +++ b/src/renderer/components/dock/create-resource.store.ts @@ -63,7 +63,7 @@ export class CreateResourceStore extends DockTabStore { const userTemplates = await this.getTemplates(this.userTemplatesFolder, "ungrouped"); const lensTemplates = await this.getTemplates(this.lensTemplatesFolder, "lens"); - return {...userTemplates,...lensTemplates}; + return { ...userTemplates,...lensTemplates }; } async watchUserTemplates(callback: ()=> void){ diff --git a/src/renderer/components/dock/create-resource.tsx b/src/renderer/components/dock/create-resource.tsx index 1ef55ba1cb..753ff41b70 100644 --- a/src/renderer/components/dock/create-resource.tsx +++ b/src/renderer/components/dock/create-resource.tsx @@ -24,7 +24,7 @@ import "./create-resource.scss"; import React from "react"; import path from "path"; import fs from "fs-extra"; -import {Select, GroupSelectOption, SelectOption} from "../select"; +import { Select, GroupSelectOption, SelectOption } from "../select"; import yaml from "js-yaml"; import { observable, makeObservable } from "mobx"; import { observer } from "mobx-react"; @@ -65,9 +65,9 @@ export class CreateResource extends React.Component { } convertToGroup(group:string, items:string[]):GroupSelectOption { - const options = items.map(v => ({label: path.parse(v).name, value: v})); + const options = items.map(v => ({ label: path.parse(v).name, value: v })); - return {label: group, options}; + return { label: group, options }; } get tabId() { diff --git a/src/renderer/components/dock/dock.store.ts b/src/renderer/components/dock/dock.store.ts index f2fd74a064..0a434736f4 100644 --- a/src/renderer/components/dock/dock.store.ts +++ b/src/renderer/components/dock/dock.store.ts @@ -23,7 +23,7 @@ import * as uuid from "uuid"; import { action, computed, IReactionOptions, makeObservable, observable, reaction } from "mobx"; import { autoBind, createStorage } from "../../utils"; import throttle from "lodash/throttle"; -import {monacoModelsManager} from "./monaco-model-manager"; +import { monacoModelsManager } from "./monaco-model-manager"; export type TabId = string; diff --git a/src/renderer/components/dock/edit-resource.store.ts b/src/renderer/components/dock/edit-resource.store.ts index d8b6d06d6b..3c20ebf4c8 100644 --- a/src/renderer/components/dock/edit-resource.store.ts +++ b/src/renderer/components/dock/edit-resource.store.ts @@ -26,7 +26,7 @@ import { dockStore, DockTab, DockTabCreateSpecific, TabId, TabKind } from "./doc import type { KubeObject } from "../../../common/k8s-api/kube-object"; import { apiManager } from "../../../common/k8s-api/api-manager"; import type { KubeObjectStore } from "../../../common/k8s-api/kube-object.store"; -import {monacoModelsManager} from "./monaco-model-manager"; +import { monacoModelsManager } from "./monaco-model-manager"; export interface EditingResource { resource: string; // resource path, e.g. /api/v1/namespaces/default diff --git a/src/renderer/components/dock/editor-panel.tsx b/src/renderer/components/dock/editor-panel.tsx index aa941b2e2e..3255a53bb1 100644 --- a/src/renderer/components/dock/editor-panel.tsx +++ b/src/renderer/components/dock/editor-panel.tsx @@ -19,7 +19,7 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -import MonacoEditor, {monaco} from "react-monaco-editor"; +import MonacoEditor, { monaco } from "react-monaco-editor"; import React from "react"; import yaml from "js-yaml"; import { observable, makeObservable } from "mobx"; @@ -97,7 +97,7 @@ export class EditorPanel extends React.Component { render() { return ( { }; onClickOutside = (evt: MouseEvent) => { - const { contentElem, mouseDownTarget, close, props: { open } } = this; + const { contentElem, mouseDownTarget, close, props: { open }} = this; if (!open || evt.defaultPrevented || contentElem.contains(mouseDownTarget)) { return; @@ -139,9 +139,9 @@ export class Drawer extends React.Component { const k8sObjName = title.split(":")[1] || title; // copy whole if no : clipboard.writeText(k8sObjName.trim()); - this.setState({isCopied: true}); + this.setState({ isCopied: true }); setTimeout(() => { - this.setState({isCopied: false}); + this.setState({ isCopied: false }); }, 3000); }; diff --git a/src/renderer/components/hotbar/__tests__/hotbar-remove-command.test.tsx b/src/renderer/components/hotbar/__tests__/hotbar-remove-command.test.tsx index 2880aa12d6..0935f7d797 100644 --- a/src/renderer/components/hotbar/__tests__/hotbar-remove-command.test.tsx +++ b/src/renderer/components/hotbar/__tests__/hotbar-remove-command.test.tsx @@ -47,7 +47,7 @@ jest.mock("electron", () => ({ AppPaths.init(); -const mockHotbars: {[id: string]: any} = { +const mockHotbars: { [id: string]: any } = { "1": { id: "1", name: "Default", diff --git a/src/renderer/components/hotbar/hotbar-entity-icon.tsx b/src/renderer/components/hotbar/hotbar-entity-icon.tsx index b3ed9df942..75f5cb74c0 100644 --- a/src/renderer/components/hotbar/hotbar-entity-icon.tsx +++ b/src/renderer/components/hotbar/hotbar-entity-icon.tsx @@ -74,7 +74,7 @@ export class HotbarEntityIcon extends React.Component { return null; } - const className = cssNames("led", { online: this.props.entity.status.phase === LensKubernetesClusterStatus.CONNECTED}); // TODO: make it more generic + const className = cssNames("led", { online: this.props.entity.status.phase === LensKubernetesClusterStatus.CONNECTED }); // TODO: make it more generic return
; } diff --git a/src/renderer/components/hotbar/hotbar-icon.tsx b/src/renderer/components/hotbar/hotbar-icon.tsx index 176abcc996..64c914cad1 100644 --- a/src/renderer/components/hotbar/hotbar-icon.tsx +++ b/src/renderer/components/hotbar/hotbar-icon.tsx @@ -65,7 +65,7 @@ function onMenuItemClick(menuItem: CatalogEntityContextMenu) { } } -export const HotbarIcon = observer(({menuItems = [], size = 40, tooltip, ...props}: HotbarIconProps) => { +export const HotbarIcon = observer(({ menuItems = [], size = 40, tooltip, ...props }: HotbarIconProps) => { const { uid, title, src, material, active, className, source, disabled, onMenuOpen, onClick, children, ...rest } = props; const id = `hotbarIcon-${uid}`; const [menuOpen, setMenuOpen] = useState(false); @@ -104,7 +104,7 @@ export const HotbarIcon = observer(({menuItems = [], size = 40, tooltip, ...prop className="HotbarIconMenu" isOpen={menuOpen} toggleEvent="contextmenu" - position={{right: true, bottom: true }} // FIXME: position does not work + position={{ right: true, bottom: true }} // FIXME: position does not work open={() => { onMenuOpen?.(); toggleMenu(); diff --git a/src/renderer/components/kube-object-menu/kube-object-menu.tsx b/src/renderer/components/kube-object-menu/kube-object-menu.tsx index ac2a99cc88..300ce67775 100644 --- a/src/renderer/components/kube-object-menu/kube-object-menu.tsx +++ b/src/renderer/components/kube-object-menu/kube-object-menu.tsx @@ -89,7 +89,7 @@ export class KubeObjectMenu extends React.Component ( + .map(({ components: { MenuItem }}, index) => ( { value={yamlConfig} theme={ThemeStore.getInstance().activeTheme.monacoTheme} className={cssNames( "MonacoEditor")} - options={{readOnly: true, ...UserStore.getInstance().getEditorOptions()}} + options={{ readOnly: true, ...UserStore.getInstance().getEditorOptions() }} />