diff --git a/dynamic-demo-plugin/tsconfig.json b/dynamic-demo-plugin/tsconfig.json index cf7182c48b9..6ce6cdd6cf5 100644 --- a/dynamic-demo-plugin/tsconfig.json +++ b/dynamic-demo-plugin/tsconfig.json @@ -4,7 +4,7 @@ "module": "esnext", "moduleResolution": "node", "target": "es2021", - "jsx": "react", + "jsx": "react-jsx", "allowJs": true, "experimentalDecorators": true, "noUnusedLocals": true, diff --git a/frontend/.eslintrc.js b/frontend/.eslintrc.js index 863655c5cab..16216620023 100644 --- a/frontend/.eslintrc.js +++ b/frontend/.eslintrc.js @@ -66,6 +66,7 @@ module.exports = { 'prefer-const': ['error', { destructuring: 'all' }], 'prefer-template': 2, radix: 2, + 'react/react-in-jsx-scope': 'off', // React 17 doesn't require this anymore 'react/jsx-fragments': 'error', 'react/jsx-no-duplicate-props': 2, 'react/jsx-uses-react': 'error', diff --git a/frontend/__tests__/components/cluster-settings/basicauth-idp-form.spec.tsx b/frontend/__tests__/components/cluster-settings/basicauth-idp-form.spec.tsx index f2d4d77acb7..426b024294b 100644 --- a/frontend/__tests__/components/cluster-settings/basicauth-idp-form.spec.tsx +++ b/frontend/__tests__/components/cluster-settings/basicauth-idp-form.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { mount } from 'enzyme'; import { Provider } from 'react-redux'; import { BrowserRouter } from 'react-router-dom-v5-compat'; diff --git a/frontend/__tests__/components/cluster-settings/github-idp-form.spec.tsx b/frontend/__tests__/components/cluster-settings/github-idp-form.spec.tsx index c40e595cb60..f1b678a191e 100644 --- a/frontend/__tests__/components/cluster-settings/github-idp-form.spec.tsx +++ b/frontend/__tests__/components/cluster-settings/github-idp-form.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { mount } from 'enzyme'; import { Provider } from 'react-redux'; import { BrowserRouter } from 'react-router-dom-v5-compat'; diff --git a/frontend/__tests__/components/cluster-settings/gitlab-idp-form.spec.tsx b/frontend/__tests__/components/cluster-settings/gitlab-idp-form.spec.tsx index 9ce66782cd2..db9072cedc0 100644 --- a/frontend/__tests__/components/cluster-settings/gitlab-idp-form.spec.tsx +++ b/frontend/__tests__/components/cluster-settings/gitlab-idp-form.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { mount } from 'enzyme'; import { Provider } from 'react-redux'; import { BrowserRouter } from 'react-router-dom-v5-compat'; diff --git a/frontend/__tests__/components/cluster-settings/google-idp-form.spec.tsx b/frontend/__tests__/components/cluster-settings/google-idp-form.spec.tsx index 015d9c3c06e..899d16ac710 100644 --- a/frontend/__tests__/components/cluster-settings/google-idp-form.spec.tsx +++ b/frontend/__tests__/components/cluster-settings/google-idp-form.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { mount } from 'enzyme'; import { Provider } from 'react-redux'; import { BrowserRouter } from 'react-router-dom-v5-compat'; diff --git a/frontend/__tests__/components/cluster-settings/htpasswd-idp-form.spec.tsx b/frontend/__tests__/components/cluster-settings/htpasswd-idp-form.spec.tsx index 927c865cf96..15303725783 100644 --- a/frontend/__tests__/components/cluster-settings/htpasswd-idp-form.spec.tsx +++ b/frontend/__tests__/components/cluster-settings/htpasswd-idp-form.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { mount } from 'enzyme'; import { Provider } from 'react-redux'; import { BrowserRouter } from 'react-router-dom-v5-compat'; diff --git a/frontend/__tests__/components/cluster-settings/keystone-idp-form.spec.tsx b/frontend/__tests__/components/cluster-settings/keystone-idp-form.spec.tsx index b2e1d01fa80..c80acd5043d 100644 --- a/frontend/__tests__/components/cluster-settings/keystone-idp-form.spec.tsx +++ b/frontend/__tests__/components/cluster-settings/keystone-idp-form.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { mount } from 'enzyme'; import { Provider } from 'react-redux'; import { BrowserRouter } from 'react-router-dom-v5-compat'; diff --git a/frontend/__tests__/components/cluster-settings/ldap-idp-form.spec.tsx b/frontend/__tests__/components/cluster-settings/ldap-idp-form.spec.tsx index 0315b5103d9..b52ef92ffc8 100644 --- a/frontend/__tests__/components/cluster-settings/ldap-idp-form.spec.tsx +++ b/frontend/__tests__/components/cluster-settings/ldap-idp-form.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { mount } from 'enzyme'; import { Provider } from 'react-redux'; import { BrowserRouter } from 'react-router-dom-v5-compat'; diff --git a/frontend/__tests__/components/cluster-settings/openid-idp-form.spec.tsx b/frontend/__tests__/components/cluster-settings/openid-idp-form.spec.tsx index 8e97274ebc7..de1b5daf514 100644 --- a/frontend/__tests__/components/cluster-settings/openid-idp-form.spec.tsx +++ b/frontend/__tests__/components/cluster-settings/openid-idp-form.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { mount } from 'enzyme'; import { Provider } from 'react-redux'; import { BrowserRouter } from 'react-router-dom-v5-compat'; diff --git a/frontend/__tests__/components/cluster-settings/request-header-idp-form.spec.tsx b/frontend/__tests__/components/cluster-settings/request-header-idp-form.spec.tsx index a5103a37657..baf671ba8cd 100644 --- a/frontend/__tests__/components/cluster-settings/request-header-idp-form.spec.tsx +++ b/frontend/__tests__/components/cluster-settings/request-header-idp-form.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { mount } from 'enzyme'; import { Provider } from 'react-redux'; import { BrowserRouter } from 'react-router-dom-v5-compat'; diff --git a/frontend/__tests__/components/command-line-tools.spec.tsx b/frontend/__tests__/components/command-line-tools.spec.tsx index 86d3b9d3097..1385092a88c 100644 --- a/frontend/__tests__/components/command-line-tools.spec.tsx +++ b/frontend/__tests__/components/command-line-tools.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { mount } from 'enzyme'; import { Provider } from 'react-redux'; import store from '@console/internal/redux'; diff --git a/frontend/__tests__/components/container.spec.tsx b/frontend/__tests__/components/container.spec.tsx index 9bec0389203..541e49ffbf4 100644 --- a/frontend/__tests__/components/container.spec.tsx +++ b/frontend/__tests__/components/container.spec.tsx @@ -4,7 +4,6 @@ import { ContainerDetailsList, } from '../../public/components/container'; import { mount, ReactWrapper, shallow } from 'enzyme'; -import * as React from 'react'; import store from '@console/internal/redux'; import { Provider } from 'react-redux'; import * as ReactRouter from 'react-router-dom-v5-compat'; diff --git a/frontend/__tests__/components/create-yaml.spec.tsx b/frontend/__tests__/components/create-yaml.spec.tsx index 95d8f2dbcdf..802568f3694 100644 --- a/frontend/__tests__/components/create-yaml.spec.tsx +++ b/frontend/__tests__/components/create-yaml.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { shallow, ShallowWrapper } from 'enzyme'; import { safeLoad, safeDump } from 'js-yaml'; import * as useExtensionsModule from '@console/plugin-sdk/src/api/useExtensions'; diff --git a/frontend/__tests__/components/environment.spec.tsx b/frontend/__tests__/components/environment.spec.tsx index 448b4940cd0..19ed475fa38 100644 --- a/frontend/__tests__/components/environment.spec.tsx +++ b/frontend/__tests__/components/environment.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { shallow } from 'enzyme'; import { t } from '../../__mocks__/i18next'; diff --git a/frontend/__tests__/components/factory/details.spec.tsx b/frontend/__tests__/components/factory/details.spec.tsx index ebb59c7432b..3f57d593368 100644 --- a/frontend/__tests__/components/factory/details.spec.tsx +++ b/frontend/__tests__/components/factory/details.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { Provider } from 'react-redux'; import * as Router from 'react-router-dom-v5-compat'; import { mount, ReactWrapper } from 'enzyme'; diff --git a/frontend/__tests__/components/graphs/area.spec.tsx b/frontend/__tests__/components/graphs/area.spec.tsx index 927d30c91a1..2a8821204b5 100644 --- a/frontend/__tests__/components/graphs/area.spec.tsx +++ b/frontend/__tests__/components/graphs/area.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { shallow } from 'enzyme'; import { Chart, ChartArea, ChartAxis } from '@patternfly/react-charts/victory'; diff --git a/frontend/__tests__/components/graphs/bar.spec.tsx b/frontend/__tests__/components/graphs/bar.spec.tsx index cf455a1a00f..561f5291e20 100644 --- a/frontend/__tests__/components/graphs/bar.spec.tsx +++ b/frontend/__tests__/components/graphs/bar.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { shallow } from 'enzyme'; import { ChartBar } from '@patternfly/react-charts/victory'; diff --git a/frontend/__tests__/components/graphs/gauge.spec.tsx b/frontend/__tests__/components/graphs/gauge.spec.tsx index b15cae31885..cca6e1ff722 100644 --- a/frontend/__tests__/components/graphs/gauge.spec.tsx +++ b/frontend/__tests__/components/graphs/gauge.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { shallow } from 'enzyme'; import { ChartDonutThreshold, ChartDonutUtilization } from '@patternfly/react-charts/victory'; diff --git a/frontend/__tests__/components/graphs/graph-empty.spec.tsx b/frontend/__tests__/components/graphs/graph-empty.spec.tsx index 24910cfa229..6f6350ad602 100644 --- a/frontend/__tests__/components/graphs/graph-empty.spec.tsx +++ b/frontend/__tests__/components/graphs/graph-empty.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { shallow } from 'enzyme'; import { GraphEmpty } from '@console/internal/components/graphs/graph-empty'; diff --git a/frontend/__tests__/components/graphs/prometheus-graph.spec.tsx b/frontend/__tests__/components/graphs/prometheus-graph.spec.tsx index a3df81c1489..4d9aefdb782 100644 --- a/frontend/__tests__/components/graphs/prometheus-graph.spec.tsx +++ b/frontend/__tests__/components/graphs/prometheus-graph.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { Provider } from 'react-redux'; import { Link, BrowserRouter } from 'react-router-dom-v5-compat'; import { mount, shallow } from 'enzyme'; diff --git a/frontend/__tests__/components/import-yaml-results.spec.tsx b/frontend/__tests__/components/import-yaml-results.spec.tsx index 90716a1ab96..c36e469eeac 100644 --- a/frontend/__tests__/components/import-yaml-results.spec.tsx +++ b/frontend/__tests__/components/import-yaml-results.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { shallow, ShallowWrapper } from 'enzyme'; import { Spinner } from '@patternfly/react-core'; import { Tr } from '@patternfly/react-table'; diff --git a/frontend/__tests__/components/limitrange.spec.tsx b/frontend/__tests__/components/limitrange.spec.tsx index b507f4913dd..1c8dd64e7b5 100644 --- a/frontend/__tests__/components/limitrange.spec.tsx +++ b/frontend/__tests__/components/limitrange.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { shallow, ShallowWrapper } from 'enzyme'; import { LimitRangeDetailsRowProps, diff --git a/frontend/__tests__/components/modals/column-management-modal.spec.tsx b/frontend/__tests__/components/modals/column-management-modal.spec.tsx index cd72229ad4b..80027966900 100644 --- a/frontend/__tests__/components/modals/column-management-modal.spec.tsx +++ b/frontend/__tests__/components/modals/column-management-modal.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { Provider } from 'react-redux'; import { mount } from 'enzyme'; import { Alert, DataList, DataListCheck } from '@patternfly/react-core'; diff --git a/frontend/__tests__/components/modals/configure-update-strategy-modal.spec.tsx b/frontend/__tests__/components/modals/configure-update-strategy-modal.spec.tsx index f924525c32f..f3352907193 100644 --- a/frontend/__tests__/components/modals/configure-update-strategy-modal.spec.tsx +++ b/frontend/__tests__/components/modals/configure-update-strategy-modal.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { shallow, ShallowWrapper } from 'enzyme'; import Spy = jasmine.Spy; diff --git a/frontend/__tests__/components/namespace.spec.tsx b/frontend/__tests__/components/namespace.spec.tsx index ab035905312..6df744f49d6 100644 --- a/frontend/__tests__/components/namespace.spec.tsx +++ b/frontend/__tests__/components/namespace.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { mount, ReactWrapper } from 'enzyme'; import Spy = jasmine.Spy; diff --git a/frontend/__tests__/components/pod.spec.tsx b/frontend/__tests__/components/pod.spec.tsx index 09b0717fdf7..0fd1e67ee71 100644 --- a/frontend/__tests__/components/pod.spec.tsx +++ b/frontend/__tests__/components/pod.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { Provider } from 'react-redux'; import { shallow, ShallowWrapper, mount, ReactWrapper } from 'enzyme'; import store from '@console/internal/redux'; diff --git a/frontend/__tests__/components/resource-quota.spec.tsx b/frontend/__tests__/components/resource-quota.spec.tsx index 0b3920c0139..7830b5442a6 100644 --- a/frontend/__tests__/components/resource-quota.spec.tsx +++ b/frontend/__tests__/components/resource-quota.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { shallow, ShallowWrapper } from 'enzyme'; import { UsageIcon, diff --git a/frontend/__tests__/components/route-pages.spec.tsx b/frontend/__tests__/components/route-pages.spec.tsx index 358443337c1..21dff275012 100644 --- a/frontend/__tests__/components/route-pages.spec.tsx +++ b/frontend/__tests__/components/route-pages.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { shallow, mount } from 'enzyme'; import { RouteLinkAndCopy, RouteLocation, RouteStatus } from '../../public/components/routes'; diff --git a/frontend/__tests__/components/routes/create-route.spec.tsx b/frontend/__tests__/components/routes/create-route.spec.tsx index abc6fcb8d2a..5c13c919712 100644 --- a/frontend/__tests__/components/routes/create-route.spec.tsx +++ b/frontend/__tests__/components/routes/create-route.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { shallow, ShallowWrapper } from 'enzyme'; import { Formik } from 'formik'; import { Button } from '@patternfly/react-core'; diff --git a/frontend/__tests__/components/safety-first.spec.tsx b/frontend/__tests__/components/safety-first.spec.tsx index 5c46c2d20b6..5e27303fa47 100644 --- a/frontend/__tests__/components/safety-first.spec.tsx +++ b/frontend/__tests__/components/safety-first.spec.tsx @@ -5,6 +5,7 @@ import { mount, ReactWrapper } from 'enzyme'; import Spy = jasmine.Spy; import { useSafetyFirst } from '@console/dynamic-plugin-sdk'; +import { waitFor } from '@testing-library/react'; type Props = { loader: () => Promise; @@ -76,16 +77,16 @@ describe('useSafetyFirst', () => { wrapper = wrapper.setProps({ loader }); wrapper.find('button').simulate('click'); - // FIXME(alecmerdler): Shouldn't need a `setTimeout` here... - setTimeout(() => { + waitFor(() => { expect( consoleErrorSpy.calls .all() .map((call) => call.args[0] as string) .some((text) => text.includes(warning)), ).toBe(false); - done(); - }, 500); + }); + + done(); }); it('will set React state if mounted (using hook)', (done) => { @@ -98,8 +99,7 @@ describe('useSafetyFirst', () => { wrapper = wrapper.setProps({ loader }); wrapper.find('button').simulate('click'); - // FIXME(alecmerdler): Shouldn't need a `setTimeout` here... - setTimeout(() => { + waitFor(() => { expect(wrapper.text()).toEqual('Loaded'); expect( consoleErrorSpy.calls @@ -107,7 +107,8 @@ describe('useSafetyFirst', () => { .map((call) => call.args[0] as string) .some((text) => text.includes(warning)), ).toBe(false); - done(); - }, 500); + }); + + done(); }); }); diff --git a/frontend/__tests__/components/utils/async.spec.tsx b/frontend/__tests__/components/utils/async.spec.tsx index 879a82aa246..98b5ecb89cf 100644 --- a/frontend/__tests__/components/utils/async.spec.tsx +++ b/frontend/__tests__/components/utils/async.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { mount, ReactWrapper } from 'enzyme'; import { AsyncComponent } from '../../../public/components/utils/async'; diff --git a/frontend/__tests__/components/utils/download-button.spec.tsx b/frontend/__tests__/components/utils/download-button.spec.tsx index 2d5e6190f72..eb208a3841c 100644 --- a/frontend/__tests__/components/utils/download-button.spec.tsx +++ b/frontend/__tests__/components/utils/download-button.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { mount, ReactWrapper } from 'enzyme'; import Spy = jasmine.Spy; import * as fileSaver from 'file-saver'; diff --git a/frontend/__tests__/components/utils/name-value-editor.spec.tsx b/frontend/__tests__/components/utils/name-value-editor.spec.tsx index bb32d7c8749..b96c7a8158e 100644 --- a/frontend/__tests__/components/utils/name-value-editor.spec.tsx +++ b/frontend/__tests__/components/utils/name-value-editor.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { shallow } from 'enzyme'; import { NameValueEditor } from '../../../public/components/utils/name-value-editor'; diff --git a/frontend/__tests__/components/utils/page-heading.spec.tsx b/frontend/__tests__/components/utils/page-heading.spec.tsx index 62c893cba87..3c35087f566 100644 --- a/frontend/__tests__/components/utils/page-heading.spec.tsx +++ b/frontend/__tests__/components/utils/page-heading.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { Link } from 'react-router-dom-v5-compat'; import { shallow, ShallowWrapper } from 'enzyme'; diff --git a/frontend/__tests__/components/utils/promise-component.spec.tsx b/frontend/__tests__/components/utils/promise-component.spec.tsx index e817236f431..bf393266fc3 100644 --- a/frontend/__tests__/components/utils/promise-component.spec.tsx +++ b/frontend/__tests__/components/utils/promise-component.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { shallow } from 'enzyme'; import { diff --git a/frontend/package.json b/frontend/package.json index 4d224db480c..c11098ea237 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -248,8 +248,8 @@ "@types/lodash-es": "4.17.x", "@types/node": "18.x", "@types/prop-types": "15.5.6", - "@types/react": "16.8.13", - "@types/react-dom": "16.8.4", + "@types/react": "17.x", + "@types/react-dom": "17.x", "@types/react-helmet": "5.x", "@types/react-jsonschema-form": "^1.3.8", "@types/react-measure": "^2.0.6", diff --git a/frontend/packages/console-app/src/__tests__/hooks/useCSPViolationDetector.spec.tsx b/frontend/packages/console-app/src/__tests__/hooks/useCSPViolationDetector.spec.tsx index c0019174228..64ded4d85d0 100644 --- a/frontend/packages/console-app/src/__tests__/hooks/useCSPViolationDetector.spec.tsx +++ b/frontend/packages/console-app/src/__tests__/hooks/useCSPViolationDetector.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { act, fireEvent, render } from '@testing-library/react'; import { Provider } from 'react-redux'; import store from '@console/internal/redux'; diff --git a/frontend/packages/console-app/src/__tests__/network-policies/create-network-policy.spec.tsx b/frontend/packages/console-app/src/__tests__/network-policies/create-network-policy.spec.tsx index 89c89cfd5ff..2d229997629 100644 --- a/frontend/packages/console-app/src/__tests__/network-policies/create-network-policy.spec.tsx +++ b/frontend/packages/console-app/src/__tests__/network-policies/create-network-policy.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { Button, FormFieldGroupExpandable } from '@patternfly/react-core'; import { mount } from 'enzyme'; import { ButtonBar } from '@console/internal/components/utils'; diff --git a/frontend/packages/console-app/src/__tests__/network-policies/network-policy-form.spec.tsx b/frontend/packages/console-app/src/__tests__/network-policies/network-policy-form.spec.tsx index 8e4d0ca58da..7e25666b0fa 100644 --- a/frontend/packages/console-app/src/__tests__/network-policies/network-policy-form.spec.tsx +++ b/frontend/packages/console-app/src/__tests__/network-policies/network-policy-form.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { Alert, FormFieldGroupExpandable } from '@patternfly/react-core'; import { mount } from 'enzyme'; import { useK8sGet } from '@console/internal/components/utils/k8s-get-hook'; diff --git a/frontend/packages/console-app/src/__tests__/network-policies/network-policy-peer-ipblock.spec.tsx b/frontend/packages/console-app/src/__tests__/network-policies/network-policy-peer-ipblock.spec.tsx index 3b5279f72ec..15f8c10468a 100644 --- a/frontend/packages/console-app/src/__tests__/network-policies/network-policy-peer-ipblock.spec.tsx +++ b/frontend/packages/console-app/src/__tests__/network-policies/network-policy-peer-ipblock.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { Button } from '@patternfly/react-core'; import { mount } from 'enzyme'; import { useK8sGet } from '@console/internal/components/utils/k8s-get-hook'; diff --git a/frontend/packages/console-app/src/__tests__/network-policies/network-policy-selector-preview.spec.tsx b/frontend/packages/console-app/src/__tests__/network-policies/network-policy-selector-preview.spec.tsx index 409da69b040..f96728b8d65 100644 --- a/frontend/packages/console-app/src/__tests__/network-policies/network-policy-selector-preview.spec.tsx +++ b/frontend/packages/console-app/src/__tests__/network-policies/network-policy-selector-preview.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { mount } from 'enzyme'; import { useK8sWatchResource } from '@console/internal/components/utils/k8s-watch-hook'; import { NamespaceModel, PodModel } from '@console/internal/models'; diff --git a/frontend/packages/console-app/src/components/detect-perspective/__tests__/DetectPerspective.spec.tsx b/frontend/packages/console-app/src/components/detect-perspective/__tests__/DetectPerspective.spec.tsx index a2c35c25adb..991c372004a 100644 --- a/frontend/packages/console-app/src/components/detect-perspective/__tests__/DetectPerspective.spec.tsx +++ b/frontend/packages/console-app/src/components/detect-perspective/__tests__/DetectPerspective.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { shallow } from 'enzyme'; import { useLocation } from 'react-router-dom-v5-compat'; import { usePerspectives } from '@console/shared/src'; diff --git a/frontend/packages/console-app/src/components/detect-perspective/__tests__/PerspectiveDetector.spec.tsx b/frontend/packages/console-app/src/components/detect-perspective/__tests__/PerspectiveDetector.spec.tsx index 5e497f4203f..8669fe7e294 100644 --- a/frontend/packages/console-app/src/components/detect-perspective/__tests__/PerspectiveDetector.spec.tsx +++ b/frontend/packages/console-app/src/components/detect-perspective/__tests__/PerspectiveDetector.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { mount } from 'enzyme'; import { act } from 'react-dom/test-utils'; import { Perspective } from '@console/dynamic-plugin-sdk'; diff --git a/frontend/packages/console-app/src/components/guided-tour/__tests__/GuidedTourText.spec.tsx b/frontend/packages/console-app/src/components/guided-tour/__tests__/GuidedTourText.spec.tsx index 836439bf0c0..70275756e39 100644 --- a/frontend/packages/console-app/src/components/guided-tour/__tests__/GuidedTourText.spec.tsx +++ b/frontend/packages/console-app/src/components/guided-tour/__tests__/GuidedTourText.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { cleanup, configure, render, screen } from '@testing-library/react'; import { useK8sWatchResource } from '@console/internal/components/utils/k8s-watch-hook'; import { FinishTourText } from '../GuidedTourText'; diff --git a/frontend/packages/console-app/src/components/nav/__tests__/PerspectiveNav.spec.tsx b/frontend/packages/console-app/src/components/nav/__tests__/PerspectiveNav.spec.tsx index e3fdad372c1..a4b1f9b1385 100644 --- a/frontend/packages/console-app/src/components/nav/__tests__/PerspectiveNav.spec.tsx +++ b/frontend/packages/console-app/src/components/nav/__tests__/PerspectiveNav.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { Nav } from '@patternfly/react-core'; import { shallow, mount } from 'enzyme'; import { Provider } from 'react-redux'; diff --git a/frontend/packages/console-app/src/components/nav/__tests__/perspective-nav.spec.tsx b/frontend/packages/console-app/src/components/nav/__tests__/perspective-nav.spec.tsx index e3fdad372c1..a4b1f9b1385 100644 --- a/frontend/packages/console-app/src/components/nav/__tests__/perspective-nav.spec.tsx +++ b/frontend/packages/console-app/src/components/nav/__tests__/perspective-nav.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { Nav } from '@patternfly/react-core'; import { shallow, mount } from 'enzyme'; import { Provider } from 'react-redux'; diff --git a/frontend/packages/console-app/src/components/nav/confirmNavUnpinModal.tsx b/frontend/packages/console-app/src/components/nav/confirmNavUnpinModal.tsx index f29e0d38746..f94e88601d7 100644 --- a/frontend/packages/console-app/src/components/nav/confirmNavUnpinModal.tsx +++ b/frontend/packages/console-app/src/components/nav/confirmNavUnpinModal.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import i18next from 'i18next'; import { Trans } from 'react-i18next'; import { confirmModal } from '@console/internal/components/modals'; diff --git a/frontend/packages/console-app/src/components/resource-quota/AppliedClusterResourceQuotaCharts.tsx b/frontend/packages/console-app/src/components/resource-quota/AppliedClusterResourceQuotaCharts.tsx index 928be118edb..35467ebb2ec 100644 --- a/frontend/packages/console-app/src/components/resource-quota/AppliedClusterResourceQuotaCharts.tsx +++ b/frontend/packages/console-app/src/components/resource-quota/AppliedClusterResourceQuotaCharts.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { useTranslation } from 'react-i18next'; import { DonutChart } from '@console/internal/components/graphs/donut'; import { AppliedClusterResourceQuotaKind } from '@console/internal/module/k8s'; diff --git a/frontend/packages/console-app/src/components/resource-quota/ClusterResourceQuotaCharts.tsx b/frontend/packages/console-app/src/components/resource-quota/ClusterResourceQuotaCharts.tsx index c800fe6aa84..b1798dbaf27 100644 --- a/frontend/packages/console-app/src/components/resource-quota/ClusterResourceQuotaCharts.tsx +++ b/frontend/packages/console-app/src/components/resource-quota/ClusterResourceQuotaCharts.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { useTranslation } from 'react-i18next'; import { DonutChart } from '@console/internal/components/graphs/donut'; import { ClusterResourceQuotaKind } from '@console/internal/module/k8s'; diff --git a/frontend/packages/console-app/src/components/resource-quota/ResourceQuotaCharts.tsx b/frontend/packages/console-app/src/components/resource-quota/ResourceQuotaCharts.tsx index 2000319f345..cb071c427e7 100644 --- a/frontend/packages/console-app/src/components/resource-quota/ResourceQuotaCharts.tsx +++ b/frontend/packages/console-app/src/components/resource-quota/ResourceQuotaCharts.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { useTranslation } from 'react-i18next'; import { GaugeChart } from '@console/internal/components/graphs/gauge'; import { ResourceQuotaKind } from '@console/internal/module/k8s'; diff --git a/frontend/packages/console-app/src/components/tabs/__tests__/Generated/Tabs.test.tsx b/frontend/packages/console-app/src/components/tabs/__tests__/Generated/Tabs.test.tsx index 9cca522a53e..5819462f9ab 100644 --- a/frontend/packages/console-app/src/components/tabs/__tests__/Generated/Tabs.test.tsx +++ b/frontend/packages/console-app/src/components/tabs/__tests__/Generated/Tabs.test.tsx @@ -1,7 +1,6 @@ /** * This test was generated */ -import * as React from 'react'; import { shallow } from 'enzyme'; import { Tabs } from '../../Tabs'; // any missing imports can usually be resolved by adding them here diff --git a/frontend/packages/console-app/src/components/tabs/__tests__/Tabs.test.tsx b/frontend/packages/console-app/src/components/tabs/__tests__/Tabs.test.tsx index 1303e356f9d..cc6e5bba4d9 100644 --- a/frontend/packages/console-app/src/components/tabs/__tests__/Tabs.test.tsx +++ b/frontend/packages/console-app/src/components/tabs/__tests__/Tabs.test.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { Tab, Tabs, TabTitleIcon, TabTitleText } from '@patternfly/react-core'; import { render } from 'enzyme'; diff --git a/frontend/packages/console-app/src/components/tour/__tests__/TourStepComponent.spec.tsx b/frontend/packages/console-app/src/components/tour/__tests__/TourStepComponent.spec.tsx index d05b09658ee..0144bc1dc05 100644 --- a/frontend/packages/console-app/src/components/tour/__tests__/TourStepComponent.spec.tsx +++ b/frontend/packages/console-app/src/components/tour/__tests__/TourStepComponent.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { shallow } from 'enzyme'; import { Popover, Modal, Spotlight } from '@console/shared'; import TourStepComponent from '../TourStepComponent'; diff --git a/frontend/packages/console-app/src/components/user-preferences/__tests__/userPreferences.data.tsx b/frontend/packages/console-app/src/components/user-preferences/__tests__/userPreferences.data.tsx index a17ac932db7..d97b013eef9 100644 --- a/frontend/packages/console-app/src/components/user-preferences/__tests__/userPreferences.data.tsx +++ b/frontend/packages/console-app/src/components/user-preferences/__tests__/userPreferences.data.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { ResolvedExtension, UserPreferenceFieldType, diff --git a/frontend/packages/console-app/src/components/user-preferences/namespace/__tests__/NamespaceDropdown.spec.tsx b/frontend/packages/console-app/src/components/user-preferences/namespace/__tests__/NamespaceDropdown.spec.tsx index ced47ed5e96..cd227d526bd 100644 --- a/frontend/packages/console-app/src/components/user-preferences/namespace/__tests__/NamespaceDropdown.spec.tsx +++ b/frontend/packages/console-app/src/components/user-preferences/namespace/__tests__/NamespaceDropdown.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { mount, ReactWrapper } from 'enzyme'; import { Provider } from 'react-redux'; import { useProjectOrNamespaceModel } from '@console/internal/components/utils'; diff --git a/frontend/packages/console-app/src/components/user-preferences/perspective/__tests__/PreferredPerspectiveSelect.spec.tsx b/frontend/packages/console-app/src/components/user-preferences/perspective/__tests__/PreferredPerspectiveSelect.spec.tsx index 7bed672f11d..b6e87d859b1 100644 --- a/frontend/packages/console-app/src/components/user-preferences/perspective/__tests__/PreferredPerspectiveSelect.spec.tsx +++ b/frontend/packages/console-app/src/components/user-preferences/perspective/__tests__/PreferredPerspectiveSelect.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { render, screen, configure } from '@testing-library/react'; import { useExtensions } from '@console/plugin-sdk/src'; import PreferredPerspectiveSelect from '../PreferredPerspectiveSelect'; diff --git a/frontend/packages/console-demo-plugin/src/components/test-icon.tsx b/frontend/packages/console-demo-plugin/src/components/test-icon.tsx index 97e646f9936..69ef98019e6 100644 --- a/frontend/packages/console-demo-plugin/src/components/test-icon.tsx +++ b/frontend/packages/console-demo-plugin/src/components/test-icon.tsx @@ -1,5 +1,3 @@ -import * as React from 'react'; - export default () => (

Example Resource List Page

; export const DummyResourceDetailsPage = () =>

Example Resource Details Page

; export const DummyHorizontalNavTab = () =>

Example Resource Detail View Tab

; diff --git a/frontend/packages/console-demo-plugin/src/plugin.tsx b/frontend/packages/console-demo-plugin/src/plugin.tsx index fa6e3b8288f..c5f32ce0cc5 100644 --- a/frontend/packages/console-demo-plugin/src/plugin.tsx +++ b/frontend/packages/console-demo-plugin/src/plugin.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import * as _ from 'lodash'; import { GridPosition } from '@console/dynamic-plugin-sdk'; // TODO(vojtech): internal code needed by plugins should be moved to console-shared package diff --git a/frontend/packages/console-dynamic-plugin-sdk/docs/api.md b/frontend/packages/console-dynamic-plugin-sdk/docs/api.md index 74ffaedfc41..6c9b5ad6e93 100644 --- a/frontend/packages/console-dynamic-plugin-sdk/docs/api.md +++ b/frontend/packages/console-dynamic-plugin-sdk/docs/api.md @@ -2548,7 +2548,7 @@ The isAllowed boolean value. ### Returns -An array with a pair of state value and it's set function. +An array with a pair of state value and its set function. --- diff --git a/frontend/packages/console-dynamic-plugin-sdk/src/app/__tests__/AppInitSDK.spec.tsx b/frontend/packages/console-dynamic-plugin-sdk/src/app/__tests__/AppInitSDK.spec.tsx index 52f4d896b22..8f44d1dedbc 100644 --- a/frontend/packages/console-dynamic-plugin-sdk/src/app/__tests__/AppInitSDK.spec.tsx +++ b/frontend/packages/console-dynamic-plugin-sdk/src/app/__tests__/AppInitSDK.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { shallow, mount } from 'enzyme'; import { Provider } from 'react-redux'; import configureMockStore from 'redux-mock-store'; diff --git a/frontend/packages/console-dynamic-plugin-sdk/src/app/components/safety-first.tsx b/frontend/packages/console-dynamic-plugin-sdk/src/app/components/safety-first.tsx index 2ed43f032d2..c8a082998de 100644 --- a/frontend/packages/console-dynamic-plugin-sdk/src/app/components/safety-first.tsx +++ b/frontend/packages/console-dynamic-plugin-sdk/src/app/components/safety-first.tsx @@ -5,13 +5,17 @@ import * as React from 'react'; * Hook that ensures a safe asynchronnous setting of the React state in case a given component could be unmounted. * (https://github.com/facebook/react/issues/14113) * @param initialState initial state value - * @returns An array with a pair of state value and it's set function. + * @returns An array with a pair of state value and its set function. */ export const useSafetyFirst = ( initialState: S | (() => S), ): [S, React.Dispatch>] => { const mounted = React.useRef(true); - React.useEffect(() => () => (mounted.current = false), []); + React.useEffect(() => { + return () => { + mounted.current = false; + }; + }, []); const [value, setValue] = React.useState(initialState); const setValueSafe = React.useCallback((newValue: S) => { diff --git a/frontend/packages/console-dynamic-plugin-sdk/src/utils/k8s/hooks/__tests__/useK8sWatchResource.spec.tsx b/frontend/packages/console-dynamic-plugin-sdk/src/utils/k8s/hooks/__tests__/useK8sWatchResource.spec.tsx index 9bcd7cbcc11..59be24c3d1e 100644 --- a/frontend/packages/console-dynamic-plugin-sdk/src/utils/k8s/hooks/__tests__/useK8sWatchResource.spec.tsx +++ b/frontend/packages/console-dynamic-plugin-sdk/src/utils/k8s/hooks/__tests__/useK8sWatchResource.spec.tsx @@ -68,7 +68,9 @@ beforeEach(() => { afterEach(async () => { // Ensure that there is no timer left which triggers a rerendering - await act(async () => jest.runAllTimers()); + await act(async () => { + jest.runAllTimers(); + }); cleanup(); @@ -137,7 +139,9 @@ describe('useK8sWatchResource', () => { expect(k8sListMock.mock.calls[0]).toEqual([PodModel, { limit: 250 }, true, {}]); k8sListMock.mockClear(); - await act(async () => jest.runAllTimers()); + await act(async () => { + jest.runAllTimers(); + }); // Assert API calls expect(k8sWatchMock).toHaveBeenCalledTimes(1); @@ -177,7 +181,9 @@ describe('useK8sWatchResource', () => { expect(k8sGetMock.mock.calls[0]).toEqual([PodModel, 'my-pod', 'foo', {}, {}]); k8sGetMock.mockClear(); - await act(async () => jest.runAllTimers()); + await act(async () => { + jest.runAllTimers(); + }); // Assert API calls expect(k8sWatchMock).toHaveBeenCalledTimes(1); @@ -211,7 +217,9 @@ describe('useK8sWatchResource', () => { expect(resourceUpdate.mock.calls[0]).toEqual([[], false, undefined]); expect(resourceUpdate.mock.calls[1]).toEqual([[], false, '']); - await act(async () => jest.runAllTimers()); + await act(async () => { + jest.runAllTimers(); + }); // Assert API calls expect(k8sListMock).toHaveBeenCalledTimes(1); @@ -241,7 +249,9 @@ describe('useK8sWatchResource', () => { expect(resourceUpdate.mock.calls[0]).toEqual([{}, false, undefined]); expect(resourceUpdate.mock.calls[1]).toEqual([null, false, '']); - await act(async () => jest.runAllTimers()); + await act(async () => { + jest.runAllTimers(); + }); // Assert API calls expect(k8sGetMock).toHaveBeenCalledTimes(1); @@ -315,14 +325,18 @@ describe('useK8sWatchResource', () => { expect(resourceUpdate.mock.calls[3]).toEqual([[], false, '']); resourceUpdate.mockClear(); - await act(async () => jest.runAllTimers()); + await act(async () => { + jest.runAllTimers(); + }); // Assert API calls expect(k8sListMock).toHaveBeenCalledTimes(1); expect(k8sListMock.mock.calls[0]).toEqual([PodModel, { limit: 250 }, true, {}]); k8sListMock.mockClear(); - await act(async () => jest.runAllTimers()); + await act(async () => { + jest.runAllTimers(); + }); // Assert API calls expect(k8sWatchMock).toHaveBeenCalledTimes(1); @@ -367,14 +381,18 @@ describe('useK8sWatchResource', () => { expect(resourceUpdate.mock.calls[3]).toEqual([null, false, '']); resourceUpdate.mockClear(); - await act(async () => jest.runAllTimers()); + await act(async () => { + jest.runAllTimers(); + }); // Assert API calls expect(k8sGetMock).toHaveBeenCalledTimes(1); expect(k8sGetMock.mock.calls[0]).toEqual([PodModel, 'my-pod', 'foo', {}, {}]); k8sGetMock.mockClear(); - await act(async () => jest.runAllTimers()); + await act(async () => { + jest.runAllTimers(); + }); // Assert API calls expect(k8sWatchMock).toHaveBeenCalledTimes(1); diff --git a/frontend/packages/console-dynamic-plugin-sdk/src/utils/k8s/hooks/__tests__/useK8sWatchResources.spec.tsx b/frontend/packages/console-dynamic-plugin-sdk/src/utils/k8s/hooks/__tests__/useK8sWatchResources.spec.tsx index 94bbb6c7ffe..9dee4737ea9 100644 --- a/frontend/packages/console-dynamic-plugin-sdk/src/utils/k8s/hooks/__tests__/useK8sWatchResources.spec.tsx +++ b/frontend/packages/console-dynamic-plugin-sdk/src/utils/k8s/hooks/__tests__/useK8sWatchResources.spec.tsx @@ -68,7 +68,9 @@ beforeEach(() => { afterEach(async () => { // Ensure that there is no timer left which triggers a rerendering - await act(async () => jest.runAllTimers()); + await act(async () => { + jest.runAllTimers(); + }); cleanup(); @@ -143,7 +145,9 @@ describe('useK8sWatchResource', () => { expect(k8sListMock.mock.calls[0]).toEqual([PodModel, { limit: 250 }, true, {}]); k8sListMock.mockClear(); - await act(async () => jest.runAllTimers()); + await act(async () => { + jest.runAllTimers(); + }); // Assert API calls expect(k8sWatchMock).toHaveBeenCalledTimes(1); @@ -209,7 +213,9 @@ describe('useK8sWatchResource', () => { expect(k8sGetMock.mock.calls[0]).toEqual([PodModel, 'my-pod', 'my-namespace', {}, {}]); k8sGetMock.mockClear(); - await act(async () => jest.runAllTimers()); + await act(async () => { + jest.runAllTimers(); + }); // Assert API calls expect(k8sWatchMock).toHaveBeenCalledTimes(1); @@ -261,7 +267,9 @@ describe('useK8sWatchResource', () => { }, ]); - await act(async () => jest.runAllTimers()); + await act(async () => { + jest.runAllTimers(); + }); // Assert API calls expect(k8sListMock).toHaveBeenCalledTimes(1); @@ -317,13 +325,19 @@ describe('useK8sWatchResource', () => { }, ]); - await act(async () => jest.runAllTimers()); + await act(async () => { + jest.runAllTimers(); + }); // Assert API calls expect(k8sGetMock).toHaveBeenCalledTimes(1); expect(k8sGetMock.mock.calls[0]).toEqual([PodModel, 'my-pod', 'my-namespace', {}, {}]); k8sGetMock.mockClear(); + await act(async () => { + jest.runAllTimers(); + }); + // TODO: Unexpected watch call! The watch call was not triggered when watching a list expect(k8sWatchMock).toHaveBeenCalledTimes(1); expect(k8sWatchMock.mock.calls[0]).toEqual([ @@ -333,6 +347,10 @@ describe('useK8sWatchResource', () => { ]); k8sWatchMock.mockClear(); + await act(async () => { + jest.runAllTimers(); + }); + expect(resourceUpdate.mock.calls[2]).toEqual([ { pod: { @@ -429,14 +447,18 @@ describe('useK8sWatchResource', () => { ]); resourceUpdate.mockClear(); - await act(async () => jest.runAllTimers()); + await act(async () => { + jest.runAllTimers(); + }); // Assert API calls expect(k8sListMock).toHaveBeenCalledTimes(1); expect(k8sListMock.mock.calls[0]).toEqual([PodModel, { limit: 250 }, true, {}]); k8sListMock.mockClear(); - await act(async () => jest.runAllTimers()); + await act(async () => { + jest.runAllTimers(); + }); // Assert API calls expect(k8sWatchMock).toHaveBeenCalledTimes(1); @@ -531,14 +553,18 @@ describe('useK8sWatchResource', () => { ]); resourceUpdate.mockClear(); - await act(async () => jest.runAllTimers()); + await act(async () => { + jest.runAllTimers(); + }); // Assert API calls expect(k8sGetMock).toHaveBeenCalledTimes(1); expect(k8sGetMock.mock.calls[0]).toEqual([PodModel, 'my-pod', 'my-namespace', {}, {}]); k8sGetMock.mockClear(); - await act(async () => jest.runAllTimers()); + await act(async () => { + jest.runAllTimers(); + }); // Assert API calls expect(k8sWatchMock).toHaveBeenCalledTimes(1); diff --git a/frontend/packages/console-dynamic-plugin-sdk/tsconfig-base.json b/frontend/packages/console-dynamic-plugin-sdk/tsconfig-base.json index fd9d068a1dd..d2effb9a41e 100644 --- a/frontend/packages/console-dynamic-plugin-sdk/tsconfig-base.json +++ b/frontend/packages/console-dynamic-plugin-sdk/tsconfig-base.json @@ -3,7 +3,7 @@ "target": "es2021", "module": "esnext", "moduleResolution": "node", - "jsx": "react", + "jsx": "react-jsx", "allowJs": true, "noEmitOnError": true, "declaration": true, diff --git a/frontend/packages/console-plugin-shared/tsconfig.json b/frontend/packages/console-plugin-shared/tsconfig.json index 240c2469110..460b449b3d4 100644 --- a/frontend/packages/console-plugin-shared/tsconfig.json +++ b/frontend/packages/console-plugin-shared/tsconfig.json @@ -5,7 +5,7 @@ "module": "esnext", "moduleResolution": "node", "sourceMap": true, - "jsx": "react", + "jsx": "react-jsx", "allowJs": true, "noEmitOnError": true, "declaration": true, diff --git a/frontend/packages/console-shared/src/components/actions/menu/ActionMenuItem.tsx b/frontend/packages/console-shared/src/components/actions/menu/ActionMenuItem.tsx index c7c47fe5277..3e7189bfa10 100644 --- a/frontend/packages/console-shared/src/components/actions/menu/ActionMenuItem.tsx +++ b/frontend/packages/console-shared/src/components/actions/menu/ActionMenuItem.tsx @@ -61,7 +61,7 @@ const ActionItem: React.FC = ({ className: classes, onClick: handleClick, 'data-test-action': label, - translate: 'no', + translate: 'no' as 'no', }; const extraProps = { diff --git a/frontend/packages/console-shared/src/components/catalog/__tests__/CatalogDetailsPanel.spec.tsx b/frontend/packages/console-shared/src/components/catalog/__tests__/CatalogDetailsPanel.spec.tsx index 9bdbf5509d6..f20d50c10bc 100644 --- a/frontend/packages/console-shared/src/components/catalog/__tests__/CatalogDetailsPanel.spec.tsx +++ b/frontend/packages/console-shared/src/components/catalog/__tests__/CatalogDetailsPanel.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { shallow } from 'enzyme'; import CatalogDetailsPanel from '../details/CatalogDetailsPanel'; import { eventSourceCatalogItems } from './catalog-item-data'; diff --git a/frontend/packages/console-shared/src/components/dashboard/resource-quota-card/QuotaSummary.tsx b/frontend/packages/console-shared/src/components/dashboard/resource-quota-card/QuotaSummary.tsx index ad84703c0b4..0a9ee80ffd5 100644 --- a/frontend/packages/console-shared/src/components/dashboard/resource-quota-card/QuotaSummary.tsx +++ b/frontend/packages/console-shared/src/components/dashboard/resource-quota-card/QuotaSummary.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { useTranslation } from 'react-i18next'; import { getUsedPercentage } from '@console/app/src/components/resource-quota/utils'; import { YellowExclamationTriangleIcon } from '../../status'; diff --git a/frontend/packages/console-shared/src/components/drawer/__tests__/DraggableCoreIFrameFix.spec.tsx b/frontend/packages/console-shared/src/components/drawer/__tests__/DraggableCoreIFrameFix.spec.tsx index b01ff8e76a4..e892d881d36 100644 --- a/frontend/packages/console-shared/src/components/drawer/__tests__/DraggableCoreIFrameFix.spec.tsx +++ b/frontend/packages/console-shared/src/components/drawer/__tests__/DraggableCoreIFrameFix.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { shallow } from 'enzyme'; import { DraggableCore, DraggableEvent, DraggableData } from 'react-draggable'; import DraggableCoreIFrameFix from '../DraggableCoreIFrameFix'; diff --git a/frontend/packages/console-shared/src/components/drawer/__tests__/Drawer.spec.tsx b/frontend/packages/console-shared/src/components/drawer/__tests__/Drawer.spec.tsx index 3c0892df2b9..43e8440accd 100644 --- a/frontend/packages/console-shared/src/components/drawer/__tests__/Drawer.spec.tsx +++ b/frontend/packages/console-shared/src/components/drawer/__tests__/Drawer.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { shallow } from 'enzyme'; import { DraggableData } from 'react-draggable'; import DraggableCoreIFrameFix from '../DraggableCoreIFrameFix'; diff --git a/frontend/packages/console-shared/src/components/dropdown/__tests__/ResourceDropdown.spec.tsx b/frontend/packages/console-shared/src/components/dropdown/__tests__/ResourceDropdown.spec.tsx index 5cbde923fe1..fcc44870029 100644 --- a/frontend/packages/console-shared/src/components/dropdown/__tests__/ResourceDropdown.spec.tsx +++ b/frontend/packages/console-shared/src/components/dropdown/__tests__/ResourceDropdown.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { shallow, mount, ShallowWrapper } from 'enzyme'; import { mockDropdownData } from '../__mocks__/dropdown-data-mock'; import ResourceDropdown, { ResourceDropdownProps } from '../ResourceDropdown'; diff --git a/frontend/packages/console-shared/src/components/editor/ShortcutsPopover.tsx b/frontend/packages/console-shared/src/components/editor/ShortcutsPopover.tsx index d0ef435181b..b1365203dfa 100644 --- a/frontend/packages/console-shared/src/components/editor/ShortcutsPopover.tsx +++ b/frontend/packages/console-shared/src/components/editor/ShortcutsPopover.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { PopoverProps } from '@patternfly/react-core'; import { useTranslation } from 'react-i18next'; import { ShortcutTable, Shortcut } from '../shortcuts'; diff --git a/frontend/packages/console-shared/src/components/editor/__tests__/CodeEditorToolbar.spec.tsx b/frontend/packages/console-shared/src/components/editor/__tests__/CodeEditorToolbar.spec.tsx index 0ff52b9ae7c..c2ff10bc1bf 100644 --- a/frontend/packages/console-shared/src/components/editor/__tests__/CodeEditorToolbar.spec.tsx +++ b/frontend/packages/console-shared/src/components/editor/__tests__/CodeEditorToolbar.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { Button } from '@patternfly/react-core'; import { shallow, ShallowWrapper } from 'enzyme'; import { useTranslation } from 'react-i18next'; diff --git a/frontend/packages/console-shared/src/components/empty-state/__tests__/empty-state.spec.tsx b/frontend/packages/console-shared/src/components/empty-state/__tests__/empty-state.spec.tsx index eb4847318e6..691543be1fd 100644 --- a/frontend/packages/console-shared/src/components/empty-state/__tests__/empty-state.spec.tsx +++ b/frontend/packages/console-shared/src/components/empty-state/__tests__/empty-state.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { configure, render } from '@testing-library/react'; import { AccessDenied, EmptyBox, ConsoleEmptyState } from '..'; diff --git a/frontend/packages/console-shared/src/components/form-utils/__tests__/FlexForm.spec.tsx b/frontend/packages/console-shared/src/components/form-utils/__tests__/FlexForm.spec.tsx index db1c2ef2ba0..c91f95eaff0 100644 --- a/frontend/packages/console-shared/src/components/form-utils/__tests__/FlexForm.spec.tsx +++ b/frontend/packages/console-shared/src/components/form-utils/__tests__/FlexForm.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { TextInputTypes } from '@patternfly/react-core'; import { shallow, ShallowWrapper } from 'enzyme'; import InputField from '../../formik-fields/InputField'; diff --git a/frontend/packages/console-shared/src/components/form-utils/__tests__/PageBody.spec.tsx b/frontend/packages/console-shared/src/components/form-utils/__tests__/PageBody.spec.tsx index 17757a12fdb..ba1d79e60de 100644 --- a/frontend/packages/console-shared/src/components/form-utils/__tests__/PageBody.spec.tsx +++ b/frontend/packages/console-shared/src/components/form-utils/__tests__/PageBody.spec.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { TextInputTypes } from '@patternfly/react-core'; import { shallow, ShallowWrapper } from 'enzyme'; import InputField from '../../formik-fields/InputField'; diff --git a/frontend/packages/console-shared/src/components/formik-fields/InputField.tsx b/frontend/packages/console-shared/src/components/formik-fields/InputField.tsx index 715135985f9..60047647896 100644 --- a/frontend/packages/console-shared/src/components/formik-fields/InputField.tsx +++ b/frontend/packages/console-shared/src/components/formik-fields/InputField.tsx @@ -5,25 +5,24 @@ import { BaseInputFieldProps } from './field-types'; import './InputField.scss'; -const InputField: React.FC = ( - { type = TextInputTypes.text, ...baseProps }, - ref, -) => ( - - {(props) => ( -
- - {props.validated && props.validated !== ValidatedOptions.default ? ( - - )} - +const InputField = React.forwardRef( + ({ type = TextInputTypes.text, ...baseProps }, ref) => ( + + {(props) => ( +
+ + {props.validated && props.validated !== ValidatedOptions.default ? ( + + )} + + ), ); -export default React.forwardRef(InputField); +export default InputField; diff --git a/frontend/packages/console-shared/src/components/formik-fields/TextAreaField.tsx b/frontend/packages/console-shared/src/components/formik-fields/TextAreaField.tsx index 95600b3965b..de64ab9f123 100644 --- a/frontend/packages/console-shared/src/components/formik-fields/TextAreaField.tsx +++ b/frontend/packages/console-shared/src/components/formik-fields/TextAreaField.tsx @@ -11,45 +11,44 @@ import { RedExclamationCircleIcon } from '../status'; import { TextAreaProps } from './field-types'; import { getFieldId } from './field-utils'; -const TextAreaField: React.FC = ( - { label, helpText, required, onChange, ...props }, - ref, -) => { - const [field, { touched, error }] = useField(props.name); - const fieldId = getFieldId(props.name, 'input'); - const isValid = !(touched && error); - const errorMessage = !isValid ? error : ''; +const TextAreaField = React.forwardRef( + ({ label, helpText, required, onChange, ...props }, ref) => { + const [field, { touched, error }] = useField(props.name); + const fieldId = getFieldId(props.name, 'input'); + const isValid = !(touched && error); + const errorMessage = !isValid ? error : ''; - return ( - -