diff --git a/frontend/__tests__/components/graphs/area.spec.tsx b/frontend/__tests__/components/graphs/area.spec.tsx index d2e1bdf2915..927d30c91a1 100644 --- a/frontend/__tests__/components/graphs/area.spec.tsx +++ b/frontend/__tests__/components/graphs/area.spec.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import { shallow } from 'enzyme'; -import { Chart, ChartArea, ChartAxis } from '@patternfly/react-charts'; +import { Chart, ChartArea, ChartAxis } from '@patternfly/react-charts/victory'; import { AreaChart } from '@console/internal/components/graphs/area'; import { GraphEmpty } from '@console/internal/components/graphs/graph-empty'; diff --git a/frontend/__tests__/components/graphs/bar.spec.tsx b/frontend/__tests__/components/graphs/bar.spec.tsx index 87fba4ae2e6..cf455a1a00f 100644 --- a/frontend/__tests__/components/graphs/bar.spec.tsx +++ b/frontend/__tests__/components/graphs/bar.spec.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import { shallow } from 'enzyme'; -import { ChartBar } from '@patternfly/react-charts'; +import { ChartBar } from '@patternfly/react-charts/victory'; import { BarChart } from '@console/internal/components/graphs/bar'; import { GraphEmpty } from '@console/internal/components/graphs/graph-empty'; diff --git a/frontend/__tests__/components/graphs/gauge.spec.tsx b/frontend/__tests__/components/graphs/gauge.spec.tsx index 46145a21ef7..b15cae31885 100644 --- a/frontend/__tests__/components/graphs/gauge.spec.tsx +++ b/frontend/__tests__/components/graphs/gauge.spec.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import { shallow } from 'enzyme'; -import { ChartDonutThreshold, ChartDonutUtilization } from '@patternfly/react-charts'; +import { ChartDonutThreshold, ChartDonutUtilization } from '@patternfly/react-charts/victory'; import { GaugeChart } from '@console/internal/components/graphs/gauge'; import { diff --git a/frontend/package.json b/frontend/package.json index 2ecbf8492ac..f86db5bf053 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -132,22 +132,23 @@ "resolver": "./jest-resolver.js" }, "dependencies": { - "@patternfly/patternfly": "^5.4.2", - "@patternfly/quickstarts": "5.4.0", - "@patternfly/react-catalog-view-extension": "5.0.0", - "@patternfly/react-charts": "7.2.2", - "@patternfly/react-component-groups": "^5.2.0", - "@patternfly/react-console": "5.1.0", - "@patternfly/react-core": "^5.4.8", - "@patternfly/react-icons": "^5.4.2", - "@patternfly/react-log-viewer": "5.3.0", - "@patternfly/react-styles": "^5.4.1", - "@patternfly/react-table": "^5.4.9", - "@patternfly/react-templates": "^1.1.0", - "@patternfly/react-tokens": "^5.4.1", - "@patternfly/react-topology": "5.3.0", - "@patternfly/react-user-feedback": "5.0.0", - "@patternfly/react-virtualized-extension": "5.1.0", + "@patternfly-5/patternfly": "npm:@patternfly/patternfly@5.4.2", + "@patternfly/patternfly": "^6.0.0", + "@patternfly/quickstarts": "^6.2.0-prerelease.4", + "@patternfly/react-catalog-view-extension": "^6.1.0-prerelease.3", + "@patternfly/react-charts": "^8.1.0", + "@patternfly/react-component-groups": "^6.1.0", + "@patternfly/react-console": "^6.0.0", + "@patternfly/react-core": "^6.1.1-prerelease.1", + "@patternfly/react-icons": "^6.1.0", + "@patternfly/react-log-viewer": "^6.1.0", + "@patternfly/react-styles": "^6.1.0", + "@patternfly/react-table": "^6.1.0", + "@patternfly/react-templates": "^6.1.0", + "@patternfly/react-tokens": "^6.1.0", + "@patternfly/react-topology": "^6.1.0", + "@patternfly/react-user-feedback": "^6.1.0-prerelease.1", + "@patternfly/react-virtualized-extension": "^6.0.0", "@rjsf/core": "^2.5.1", "abort-controller": "3.0.0", "ajv": "^6.12.3", @@ -158,6 +159,7 @@ "classnames": "2.x", "crypto-browserify": "3.12.0", "d3": "^5.16.0", + "dagre": "^0.8.5", "file-saver": "1.3.x", "focus-trap-react": "^6.0.0", "formik": "^2.1.5", @@ -197,11 +199,11 @@ "react-modal": "^3.12.1", "react-monaco-editor": "0.46.x", "react-redux": "7.2.2", - "react-rnd": "^10.3.4", "react-router": "5.3.x", "react-router-dom": "5.3.x", "react-router-dom-v5-compat": "^6.11.2", "react-router-hash-link": "^2.0.0", + "react-svg": "^16.2.0", "react-tagsinput": "3.19.x", "react-transition-group": "2.3.x", "react-virtualized": "9.x", @@ -216,6 +218,7 @@ "text-encoding": "0.x", "typesafe-actions": "^4.2.1", "url-search-params-polyfill": "2.x", + "victory": "^37.3.6", "vscode-languageserver-types": "^3.10.0", "whatwg-fetch": "2.x", "xterm": "^4.10.0", @@ -264,7 +267,6 @@ "acorn-jsx": "5.2.0", "axe-core": "^4.10.2", "babel-loader": "^8.2.1", - "babel-plugin-transform-imports": "1.5.1", "browser-env": "3.x", "chalk": "2.4.x", "circular-dependency-plugin": "5.x", @@ -338,7 +340,8 @@ "ua-parser-js": "^0.7.24", "jest": "21.x", "glob-parent": "^5.1.2", - "postcss": "^8.2.13" + "postcss": "^8.2.13", + "@patternfly/react-core": "^6.1.1-prerelease.1" }, "lint-staged": { "*.{js,jsx,ts,tsx,json,gql,graphql}": "eslint --color --fix" diff --git a/frontend/packages/console-app/src/components/cluster-configuration/ClusterConfigurationPage.scss b/frontend/packages/console-app/src/components/cluster-configuration/ClusterConfigurationPage.scss index 2c3624f1b7a..d9078ee2fe5 100644 --- a/frontend/packages/console-app/src/components/cluster-configuration/ClusterConfigurationPage.scss +++ b/frontend/packages/console-app/src/components/cluster-configuration/ClusterConfigurationPage.scss @@ -6,21 +6,21 @@ // Fix missing white background color above the header. .ocs-page-layout__title { margin-top: 0; - padding-top: var(--pf-v5-global--spacer--lg); + padding-top: var(--pf-t--global--spacer--lg); } .ocs-page-layout__content { display: inline; } - .pf-v5-c-empty-state { - background-color: var(--pf-v5-global--BackgroundColor--100); + .pf-v6-c-empty-state { + background-color: var(--pf-t--global--background--color--primary--default); flex: 1; align-items: flex-start; } - .pf-v5-c-tabs.pf-m-vertical { - background-color: var(--pf-v5-global--BackgroundColor--100); + .pf-v6-c-tabs.pf-m-vertical { + background-color: var(--pf-t--global--background--color--primary--default); @media (min-width: 769px) { max-width: 100%; @@ -36,7 +36,7 @@ } // Fix padding which is causes the buttons to show even when isVertical prop is true - .pf-v5-c-tabs__scroll-button { + .pf-v6-c-tabs__scroll-button { display: none; } } @@ -44,7 +44,7 @@ .co-cluster-configuration-page-content { display: flex; flex-direction: row; - background-color: var(--pf-v5-global--BackgroundColor--100); + background-color: var(--pf-t--global--background--color--primary--default); min-height: 100%; &__tabs { @media (min-width: 769px) { @@ -60,12 +60,12 @@ } } &__tab-content { - margin: var(--pf-v5-global--spacer--lg); + margin: var(--pf-t--global--spacer--lg); max-width: 100%; } //workaround for patternfly bug which causes the buttons to show even when isVertical prop is true - .pf-v5-c-tabs__scroll-button { + .pf-v6-c-tabs__scroll-button { display: none; } } diff --git a/frontend/packages/console-app/src/components/cluster-configuration/ClusterConfigurationPage.tsx b/frontend/packages/console-app/src/components/cluster-configuration/ClusterConfigurationPage.tsx index 028dc5f64a6..5fd56680c9a 100644 --- a/frontend/packages/console-app/src/components/cluster-configuration/ClusterConfigurationPage.tsx +++ b/frontend/packages/console-app/src/components/cluster-configuration/ClusterConfigurationPage.tsx @@ -4,9 +4,7 @@ import { Tab, TabProps, EmptyState, - EmptyStateIcon, EmptyStateBody, - EmptyStateHeader, TabContent, TabContentProps, TabTitleText, @@ -110,12 +108,11 @@ const ClusterConfigurationPage: React.FC = () => { {!loaded ? ( ) : clusterConfigurationTabs.length === 0 ? ( - - {t('console-app~Insufficient permissions')}} - icon={} - headingLevel="h1" - /> + {t('console-app~Insufficient permissions')}} + > {t( 'console-app~You do not have sufficient permissions to read any cluster configuration.', @@ -141,7 +138,7 @@ const ClusterConfigurationPage: React.FC = () => { {groupNotFound ? ( /* Similar to a TabContent */ -
+

{t('console-app~{{section}} not found', { section: activeTabId })}

) : null} diff --git a/frontend/packages/console-app/src/components/console-operator/ConsoleOperatorConfig.tsx b/frontend/packages/console-app/src/components/console-operator/ConsoleOperatorConfig.tsx index 2b6bead53a1..2d8083358d2 100644 --- a/frontend/packages/console-app/src/components/console-operator/ConsoleOperatorConfig.tsx +++ b/frontend/packages/console-app/src/components/console-operator/ConsoleOperatorConfig.tsx @@ -114,6 +114,8 @@ export const ConsolePluginEnabledStatus: React.FC {consoleOperatorConfigLoaded && canPatchConsoleOperatorConfig && !developmentMode ? ( ) : ( <>{labels} diff --git a/frontend/packages/console-app/src/components/dashboards-page/dynamic-plugins-health-resource/NotLoadedDynamicPlugins.tsx b/frontend/packages/console-app/src/components/dashboards-page/dynamic-plugins-health-resource/NotLoadedDynamicPlugins.tsx index b34080c143e..22937c553e6 100644 --- a/frontend/packages/console-app/src/components/dashboards-page/dynamic-plugins-health-resource/NotLoadedDynamicPlugins.tsx +++ b/frontend/packages/console-app/src/components/dashboards-page/dynamic-plugins-health-resource/NotLoadedDynamicPlugins.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { StackItem, TextList, TextListItem } from '@patternfly/react-core'; +import { StackItem, Content } from '@patternfly/react-core'; import { ResourceLink } from '@console/internal/components/utils'; import { ConsolePluginModel } from '@console/internal/models'; import { referenceForModel } from '@console/internal/module/k8s'; @@ -9,17 +9,17 @@ import { StatusPopupSection } from '@console/shared/src/components/dashboard/sta const NotLoadedDynamicPlugins: React.FC = ({ plugins, label }) => ( - + {plugins.map((plugin) => ( - + - + ))} - + ); diff --git a/frontend/packages/console-app/src/components/lightspeed/Lightspeed.scss b/frontend/packages/console-app/src/components/lightspeed/Lightspeed.scss index 3741485c004..cc10187d533 100644 --- a/frontend/packages/console-app/src/components/lightspeed/Lightspeed.scss +++ b/frontend/packages/console-app/src/components/lightspeed/Lightspeed.scss @@ -1,18 +1,18 @@ -@import '~@patternfly/patternfly/sass-utilities/all'; +@import '~@patternfly/patternfly/sass-utilities/index'; @import '../../../../../public/style/vars'; :root { --popover-border-radius: 12px; - --popover-button-size: var(--pf-v5-global--spacer--2xl); - --popover-margin: var(--pf-v5-global--spacer--lg); + --popover-button-size: var(--pf-t--global--spacer--2xl); + --popover-margin: var(--pf-t--global--spacer--lg); --popover-bottom: calc( - var(--popover-button-size) + var(--popover-margin) + var(--pf-v5-global--spacer--sm) + var(--popover-button-size) + var(--popover-margin) + var(--pf-t--global--spacer--sm) ); } .lightspeed__popover, .lightspeed__popover-button { - box-shadow: var(--pf-v5-global--BoxShadow--lg); + box-shadow: var(--pf-t--global--box-shadow--lg); position: absolute; right: var(--popover-margin); z-index: 199; @@ -20,37 +20,48 @@ .lightspeed__popover { border-radius: 12px; - border: var(--pf-v5-global--BorderWidth--sm) solid var(--pf-v5-global--BorderColor--100); + border: var(--pf-t--global--border--width--regular) solid var(--pf-t--global--border--color--default); + background-color: var(--pf-t--global--background--color--primary--default); bottom: var(--popover-bottom); - overflow: hidden; + overflow: auto; + padding-block-end: var(--pf-t--global--spacer--md); + padding-block-start: var(--pf-t--global--spacer--md); + padding-inline-end: var(--pf-t--global--spacer--md); + padding-inline-start: var(--pf-t--global--spacer--md); + @media (min-width: $pf-v6-global--breakpoint--xl) { + padding-block-end: var(--pf-t--global--spacer--lg); + padding-block-start: var(--pf-t--global--spacer--lg); + padding-inline-end: var(--pf-t--global--spacer--lg); + padding-inline-start: var(--pf-t--global--spacer--lg); + } } .lightspeed__popover--collapsed { - top: calc(var(--popover-margin) * 5); + top: calc(var(--popover-margin) * 5.5); width: 90%; - @media (min-width: $pf-v5-global--breakpoint--sm) { + @media (min-width: $pf-v6-global--breakpoint--sm) { height: 70vh; top: auto; } - @media (min-width: $pf-v5-global--breakpoint--md) { + @media (min-width: $pf-v6-global--breakpoint--md) { width: 50%; } - @media (min-width: $pf-v5-global--breakpoint--lg) and (min-height: $pf-v5-global--breakpoint--lg) { + @media (min-width: $pf-v6-global--breakpoint--lg) and (min-height: $pf-v6-global--breakpoint--lg) { height: 60vh; } - @media (min-width: $pf-v5-global--breakpoint--lg) and (min-height: $pf-v5-global--breakpoint--xl) { + @media (min-width: $pf-v6-global--breakpoint--lg) and (min-height: $pf-v6-global--breakpoint--xl) { height: 55vh; } - @media (min-width: $pf-v5-global--breakpoint--xl) { + @media (min-width: $pf-v6-global--breakpoint--xl) { width: 40%; } - @media (min-width: $pf-v5-global--breakpoint--2xl) { + @media (min-width: $pf-v6-global--breakpoint--2xl) { width: 35%; } } @@ -67,7 +78,7 @@ background-size: calc(var(--popover-button-size) + 3px); border-radius: var(--popover-border-radius) !important; bottom: var(--popover-margin); - box-shadow: var(--pf-v5-global--BoxShadow--lg); + box-shadow: var(--pf-t--global--box-shadow--lg); height: var(--popover-button-size); padding: 0; position: absolute !important; @@ -78,21 +89,21 @@ border-width: 0 !important; } - .pf-v5-theme-dark & { + .pf-v6-theme-dark & { background-image: url('logo-dark.svg'); - background-color: var(--pf-v5-global--BackgroundColor--100) !important; + background-color: var(--pf-t--global--background--color--primary--default) !important; } } .lightspeed__welcome-logo { - --logo-size: var(--pf-v5-global--spacer--4xl); + --logo-size: var(--pf-t--global--spacer--4xl); background-image: url('logo.svg'); height: var(--logo-size); - margin: 0 0 var(--pf-v5-global--spacer--xl); + margin: 0 0 var(--pf-t--global--spacer--xl); width: var(--logo-size); - .pf-v5-theme-dark & { + .pf-v6-theme-dark & { background-image: url('logo-dark.svg'); } } diff --git a/frontend/packages/console-app/src/components/lightspeed/Lightspeed.tsx b/frontend/packages/console-app/src/components/lightspeed/Lightspeed.tsx index 903d9eeac48..9f0c6ec9069 100644 --- a/frontend/packages/console-app/src/components/lightspeed/Lightspeed.tsx +++ b/frontend/packages/console-app/src/components/lightspeed/Lightspeed.tsx @@ -4,11 +4,9 @@ import { Button, List, ListItem, - Page, - PageSection, Stack, StackItem, - Text, + Content, Title, Tooltip, } from '@patternfly/react-core'; @@ -94,74 +92,68 @@ const Lightspeed: React.FC = () => { return isOpen ? ( <>
- - - - -
- - {t('console-app~Meet OpenShift Lightspeed')} - - + + +
+ + {t('console-app~Meet OpenShift Lightspeed')} + + + {t( + "console-app~Unlock possibilities and enhance productivity with the AI-powered assistant's expert guidance in your OpenShift web console.", + )} + + + + + {t('console-app~Benefits:')} + + + + {t('console-app~Get fast answers to questions you have related to OpenShift')} + + + {t( + "console-app~Quickly troubleshoot with OpenShift Lightspeed's extensive knowledge", + )} + + + {t( + 'console-app~Understand your cluster resources, such as the number of pods running on a particular namespace', + )} + + + {t('console-app~Free up your IT teams so that you can drive greater innovation')} + + + + {canInstallLightspeed ? ( + + + + ) : ( + + + {t( - "console-app~Unlock possibilities and enhance productivity with the AI-powered assistant's expert guidance in your OpenShift web console.", + 'console-app~Contact your administrator and ask them to install Red Hat OpenShift Lightspeed.', )} - - - - - {t('console-app~Benefits:')} - - - - {t('console-app~Get fast answers to questions you have related to OpenShift')} - - - {t( - "console-app~Quickly troubleshoot with OpenShift Lightspeed's extensive knowledge", - )} - - - {t( - 'console-app~Understand your cluster resources, such as the number of pods running on a particular namespace', - )} - - - {t( - 'console-app~Free up your IT teams so that you can drive greater innovation', - )} - - - - {canInstallLightspeed ? ( - - - - ) : ( - - - - {t( - 'console-app~Contact your administrator and ask them to install Red Hat OpenShift Lightspeed.', - )} - - - - )} - - - - - - + + + + )} + + + +
{button} diff --git a/frontend/packages/console-app/src/components/modals/clone/_clone-pvc-modal.scss b/frontend/packages/console-app/src/components/modals/clone/_clone-pvc-modal.scss index f91a09ed4da..f3c2e10f93a 100644 --- a/frontend/packages/console-app/src/components/modals/clone/_clone-pvc-modal.scss +++ b/frontend/packages/console-app/src/components/modals/clone/_clone-pvc-modal.scss @@ -1,5 +1,5 @@ .co-clone-pvc-modal__details { - margin-top: var(--pf-v5-global--spacer--md); + margin-top: var(--pf-t--global--spacer--md); } .co-clone-pvc-modal__details-section { @@ -8,13 +8,13 @@ } .co-clone-pvc-modal__pvc-details { - font-weight: var(--pf-v5-global--FontWeight--bold); + font-weight: var(--pf-t--global--font--weight--body--bold); } .co-clone-pvc-modal__name--margin { - margin-bottom: var(--pf-v5-global--spacer--sm); + margin-bottom: var(--pf-t--global--spacer--sm); } .co-clone-pvc-modal__form--space { - margin: var(--pf-v5-global--spacer--sm) 0; + margin: var(--pf-t--global--spacer--sm) 0; } diff --git a/frontend/packages/console-app/src/components/modals/restore-pvc/restore-pvc-modal.scss b/frontend/packages/console-app/src/components/modals/restore-pvc/restore-pvc-modal.scss index 80071740ff2..b6c0eee7a4d 100644 --- a/frontend/packages/console-app/src/components/modals/restore-pvc/restore-pvc-modal.scss +++ b/frontend/packages/console-app/src/components/modals/restore-pvc/restore-pvc-modal.scss @@ -5,17 +5,17 @@ } .co-restore-pvc-modal__details-section { - margin-top: var(--pf-v5-global--spacer--xl); + margin-top: var(--pf-t--global--spacer--xl); } .co-restore-pvc-modal__pvc-details { - margin-bottom: var(--pf-v5-global--spacer--md); + margin-bottom: var(--pf-t--global--spacer--md); } .co-restore-pvc-modal__input { - margin: var(--pf-v5-global--spacer--md) 0; + margin: var(--pf-t--global--spacer--md) 0; } .co-restore-pvc-modal__ocs-size .form-group { - margin-bottom: var(--pf-v5-global--spacer--sm); + margin-bottom: var(--pf-t--global--spacer--sm); } diff --git a/frontend/packages/console-app/src/components/nav/ClusterMenuToggle.tsx b/frontend/packages/console-app/src/components/nav/ClusterMenuToggle.tsx index 86631221a93..c9e3528a983 100644 --- a/frontend/packages/console-app/src/components/nav/ClusterMenuToggle.tsx +++ b/frontend/packages/console-app/src/components/nav/ClusterMenuToggle.tsx @@ -50,11 +50,11 @@ const ClusterMenuToggle = (props: { ref={toggleRef} onClick={() => onToggle(!isOpen)} isExpanded={isOpen} - variant="plainText" isFullHeight disabled={disabled} className="co-cluster-selector" data-test-id="cluster-dropdown-toggle" + variant="plainText" > {title} diff --git a/frontend/packages/console-app/src/components/nav/ExternalLink.tsx b/frontend/packages/console-app/src/components/nav/ExternalLink.tsx index fe8a95de351..b21e8d70258 100644 --- a/frontend/packages/console-app/src/components/nav/ExternalLink.tsx +++ b/frontend/packages/console-app/src/components/nav/ExternalLink.tsx @@ -4,7 +4,7 @@ import { NavItem } from '@patternfly/react-core'; export const ExternalLink = ({ href, name }: ExternalLinkProps): React.ReactElement => ( = ({ id, name, dataAttributes const children = navExtensions.map((extension) => { if (isSeparator(extension)) { - return ; + return ( + + ); } if (isHrefNavItem(extension)) { return ( diff --git a/frontend/packages/console-app/src/components/nav/PerspectiveNav.scss b/frontend/packages/console-app/src/components/nav/PerspectiveNav.scss index afa42ab3da3..55ffc4675fd 100644 --- a/frontend/packages/console-app/src/components/nav/PerspectiveNav.scss +++ b/frontend/packages/console-app/src/components/nav/PerspectiveNav.scss @@ -1,30 +1,29 @@ .oc-perspective-nav { - --pf-v5-c-nav__list--PaddingTop: 0; - --pf-v5-c-nav__list--PaddingBottom: 0; - - .pf-v5-c-nav__section:first-child { - .pf-v5-c-nav__section-title { - --pf-v5-c-nav__section-title--PaddingTop: 0; + &__divider { + margin: var(--pf-v6-c-nav__subnav--RowGap) 0; + } + .pf-v6-c-nav__section:first-child { + .pf-v6-c-nav__section-title { + --pf-v6-c-nav__section-title--PaddingTop: 0; border: none; } } - .pf-v5-c-nav__section.no-title { - border-bottom: 1px solid var(--pf-v5-global--BackgroundColor--dark-200); - padding-bottom: var(--pf-v5-global--spacer--sm); - --pf-v5-c-nav__section--section--MarginTop: var(--pf-v5-global--spacer--sm); - .pf-v5-c-nav__section-title { - --pf-v5-c-nav__section-title--PaddingBottom: 0; + .pf-v6-c-nav__section.no-title { + border-bottom: var(--pf-t--global--border--width--divider--default) solid + var(--pf-t--global--border--color--default); + padding: var(--pf-t--global--spacer--sm) 0; + &:first-child { + padding-top: 0; + } + .pf-v6-c-nav__section-title { + --pf-v6-c-nav__section-title--PaddingBottom: 0; } &:last-child { border: none; } } &--dragging { - background-color: var(--pf-v5-global--Color--200) !important; - .pf-v5-c-nav__link { - background-color: var(--pf-v5-global--Color--200) !important; - } .oc-pinned-resource__unpin-button, .oc-pinned-resource__drag-button { opacity: 0; diff --git a/frontend/packages/console-app/src/components/nav/PinnedResource.scss b/frontend/packages/console-app/src/components/nav/PinnedResource.scss index 62ae72b4308..7d88d378c97 100644 --- a/frontend/packages/console-app/src/components/nav/PinnedResource.scss +++ b/frontend/packages/console-app/src/components/nav/PinnedResource.scss @@ -1,9 +1,5 @@ -.oc-pinned-resource.pf-v5-c-nav__item { - --pf-v5-c-nav__link--PaddingRight: 0; - - display: flex; - - .pf-v5-c-nav__link { +.oc-pinned-resource.pf-v6-c-nav__item { + .pf-v6-c-nav__link { display: block; flex-grow: 1; overflow: hidden; @@ -12,7 +8,7 @@ white-space: nowrap; &:hover { - --pf-v5-c-nav__section-title--PaddingRight: 30px; + --pf-v6-c-nav__section-title--PaddingRight: 30px; .oc-pinned-resource__unpin-button, .oc-pinned-resource__drag-button { .oc-pinned-resource__delete-icon, @@ -24,18 +20,10 @@ } .oc-pinned-resource__unpin-button { - background-color: var(--pf-v5-c-nav--m-dark__item--BackgroundColor); - color: var(--pf-v5-c-nav__link--after--BorderColor); - padding-bottom: 0; - padding-top: 0; + background-color: transparent !important; + padding: 0; position: absolute; right: 0; - top: 0; - bottom: 0; - - .pf-m-current & { - background-color: var(--pf-v5-c-nav--m-dark__item--m-current--BackgroundColor); - } .oc-pinned-resource__delete-icon { opacity: 0; @@ -43,30 +31,29 @@ } .oc-pinned-resource__drag-button { - background-color: var(--pf-v5-c-nav--m-dark__item--BackgroundColor); - color: var(--pf-v5-c-nav__link--after--BorderColor); - padding: 0; + background-color: transparent !important; cursor: move; - width: 14px; + left: -10px; + padding: 0; position: absolute; - left: 4px; - top: 0; - bottom: 0; - .pf-m-current & { - background-color: var(--pf-v5-c-nav--m-dark__item--m-current--BackgroundColor); + .oc-pinned-resource__drag-icon { + opacity: 0; } + } + .oc-pinned-resource__unpin-button:focus-visible, + .oc-pinned-resource__drag-button:focus-visible { + .oc-pinned-resource__delete-icon, .oc-pinned-resource__drag-icon { - opacity: 0; + opacity: 1; } } } .oc-pinned-resource--dragging { - outline: 1px dashed var(--pf-v5-global--Color--400); + outline: 1px dashed var(--pf-t--global--border--color--on-secondary); overflow: hidden; - background-color: var(--pf-v5-global--Color--200) !important; div { opacity: 0.5; } diff --git a/frontend/packages/console-app/src/components/nav/PinnedResource.tsx b/frontend/packages/console-app/src/components/nav/PinnedResource.tsx index 7418c2905a7..30ddad531ed 100644 --- a/frontend/packages/console-app/src/components/nav/PinnedResource.tsx +++ b/frontend/packages/console-app/src/components/nav/PinnedResource.tsx @@ -42,14 +42,13 @@ const DraggableButton: React.FC = ({ dragRef }) => { const { t } = useTranslation(); return ( + /> ); }; @@ -62,13 +61,12 @@ const RemoveButton: React.FC = ({ resourceRef, navResources, }; return ( + /> ); }; diff --git a/frontend/packages/console-app/src/components/nav/index.tsx b/frontend/packages/console-app/src/components/nav/index.tsx index 20bd54bf7f7..8bf58080a1c 100644 --- a/frontend/packages/console-app/src/components/nav/index.tsx +++ b/frontend/packages/console-app/src/components/nav/index.tsx @@ -17,9 +17,9 @@ export const Navigation: React.FC = React.memo(function Navigat }) { const { t } = useTranslation(); return ( - + -
diff --git a/frontend/packages/console-app/src/components/network-policies/network-policy-conditional-selector.tsx b/frontend/packages/console-app/src/components/network-policies/network-policy-conditional-selector.tsx index b98bfb9d847..e1fa73cc619 100644 --- a/frontend/packages/console-app/src/components/network-policies/network-policy-conditional-selector.tsx +++ b/frontend/packages/console-app/src/components/network-policies/network-policy-conditional-selector.tsx @@ -72,13 +72,13 @@ export const NetworkPolicyConditionalSelector: React.FunctionComponent
diff --git a/frontend/packages/console-app/src/components/network-policies/network-policy-form.tsx b/frontend/packages/console-app/src/components/network-policies/network-policy-form.tsx index 8466c422a08..5c89e347b30 100644 --- a/frontend/packages/console-app/src/components/network-policies/network-policy-form.tsx +++ b/frontend/packages/console-app/src/components/network-policies/network-policy-form.tsx @@ -241,16 +241,17 @@ export const NetworkPolicyForm: React.FC = ({ formData, - + + + {isMulti && ( = ({ formData, )} - + diff --git a/frontend/packages/console-app/src/components/network-policies/network-policy-peer-ipblock.tsx b/frontend/packages/console-app/src/components/network-policies/network-policy-peer-ipblock.tsx index 4d34d87d176..1f04f5be09b 100644 --- a/frontend/packages/console-app/src/components/network-policies/network-policy-peer-ipblock.tsx +++ b/frontend/packages/console-app/src/components/network-policies/network-policy-peer-ipblock.tsx @@ -28,18 +28,19 @@ export const NetworkPolicyPeerIPBlock: React.FunctionComponent - + + +

{direction === 'ingress' @@ -56,19 +57,21 @@ export const NetworkPolicyPeerIPBlock: React.FunctionComponent

{ipBlock.except.map((exc, idx) => ( -
- handleExceptionsChange(idx, event.currentTarget.value)} - placeholder="10.2.1.0/12" - aria-describedby="ports-help" - name={`exception-${idx}`} - id={`exception-${idx}`} - value={exc.value} - data-test="ipblock-exception-input" - /> +
+ + handleExceptionsChange(idx, event.currentTarget.value)} + placeholder="10.2.1.0/12" + aria-describedby="ports-help" + name={`exception-${idx}`} + id={`exception-${idx}`} + value={exc.value} + data-test="ipblock-exception-input" + /> + + />
))}
diff --git a/frontend/packages/console-app/src/components/network-policies/network-policy-ports.tsx b/frontend/packages/console-app/src/components/network-policies/network-policy-ports.tsx index 857b240d268..543c67af39e 100644 --- a/frontend/packages/console-app/src/components/network-policies/network-policy-ports.tsx +++ b/frontend/packages/console-app/src/components/network-policies/network-policy-ports.tsx @@ -34,7 +34,7 @@ export const NetworkPolicyPorts: React.FunctionComponent { const key = `port-${idx}`; return ( -
+
TCP, @@ -47,33 +47,34 @@ export const NetworkPolicyPorts: React.FunctionComponent onSingleChange({ ...port, protocol }, idx)} data-test="port-protocol" /> - - onSingleChange({ ...port, port: event.currentTarget.value }, idx) - } - placeholder="443" - aria-describedby="ports-help" - name={`${key}-port`} - id={`${key}-port`} - value={port.port} - data-test="port-input" - /> + + + onSingleChange({ ...port, port: event.currentTarget.value }, idx) + } + placeholder="443" + aria-describedby="ports-help" + name={`${key}-port`} + id={`${key}-port`} + value={port.port} + data-test="port-input" + /> + + />
); })}
diff --git a/frontend/packages/console-app/src/components/network-policies/network-policy-rule-config.tsx b/frontend/packages/console-app/src/components/network-policies/network-policy-rule-config.tsx index d31b85dc69e..f5c1fa251ed 100644 --- a/frontend/packages/console-app/src/components/network-policies/network-policy-rule-config.tsx +++ b/frontend/packages/console-app/src/components/network-policies/network-policy-rule-config.tsx @@ -146,15 +146,14 @@ export const NetworkPolicyRuleConfigPanel: React.FunctionComponent} aria-label={t('console-app~Remove peer')} className="co-create-networkpolicy__remove-peer" onClick={() => removePeer(idx)} type="button" variant="plain" data-test="remove-peer" - > - - + /> } /> } diff --git a/frontend/packages/console-app/src/components/nodes/NodeDetailsConditions.tsx b/frontend/packages/console-app/src/components/nodes/NodeDetailsConditions.tsx index 4ec3ac67bf1..4cc83766fe4 100644 --- a/frontend/packages/console-app/src/components/nodes/NodeDetailsConditions.tsx +++ b/frontend/packages/console-app/src/components/nodes/NodeDetailsConditions.tsx @@ -15,30 +15,30 @@ const NodeDetailsConditions: React.FC = ({ node }) =
- - - - - - - - +
{t('console-app~Type')}{t('console-app~Status')}{t('console-app~Reason')}{t('console-app~Updated')}{t('console-app~Changed')}
+ + + + + + + - + {_.map(node.status.conditions, (c, i) => ( - - + - - + - - diff --git a/frontend/packages/console-app/src/components/nodes/NodeDetailsImages.tsx b/frontend/packages/console-app/src/components/nodes/NodeDetailsImages.tsx index a481c8c4235..bbeb61db6a0 100644 --- a/frontend/packages/console-app/src/components/nodes/NodeDetailsImages.tsx +++ b/frontend/packages/console-app/src/components/nodes/NodeDetailsImages.tsx @@ -15,22 +15,22 @@ const NodeDetailsImages: React.FC = ({ node }) => {
-
{t('console-app~Type')}{t('console-app~Status')}{t('console-app~Reason')}{t('console-app~Updated')}{t('console-app~Changed')}
+
{c.status || '-'} + {c.status || '-'} + +
- - - - +
{t('console-app~Name')}{t('console-app~Size')}
+ + + + - + {_.map(images, (image, i) => ( - - + - diff --git a/frontend/packages/console-app/src/components/nodes/NodeDetailsOverview.tsx b/frontend/packages/console-app/src/components/nodes/NodeDetailsOverview.tsx index bd41051298c..49a9a083bd2 100644 --- a/frontend/packages/console-app/src/components/nodes/NodeDetailsOverview.tsx +++ b/frontend/packages/console-app/src/components/nodes/NodeDetailsOverview.tsx @@ -78,6 +78,8 @@ const NodeDetailsOverview: React.FC = ({ node }) => {
{canUpdate ? ( ) : ( @@ -98,6 +99,8 @@ const NodeDetailsOverview: React.FC = ({ node }) => {
{canUpdate ? ( ) : ( diff --git a/frontend/packages/console-app/src/components/nodes/NodeLogs.tsx b/frontend/packages/console-app/src/components/nodes/NodeLogs.tsx index 3882a0921c5..7364972518d 100644 --- a/frontend/packages/console-app/src/components/nodes/NodeLogs.tsx +++ b/frontend/packages/console-app/src/components/nodes/NodeLogs.tsx @@ -5,7 +5,6 @@ import { EmptyState, EmptyStateBody, EmptyStateVariant, - EmptyStateHeader, EmptyStateFooter, MenuToggle, MenuToggleElement, @@ -151,7 +150,7 @@ const LogControls: React.FC = ({ )} - + = ({ obj: node }) => { )} {isLoadingLog ? ( !isJournal && !logFilename ? ( - - - {isLoadingFilenames ? ( - - ) : logFilenamesExist ? ( - t('public~No log file selected') - ) : ( - t('public~No log files exist') - )} - - } - headingLevel="h2" - /> + + {isLoadingFilenames ? ( + + ) : logFilenamesExist ? ( + t('public~No log file selected') + ) : ( + t('public~No log files exist') + )} + + } + variant={EmptyStateVariant.full} + isFullHeight + > {logFilenamesExist && ( {t('public~Select a log file above')} diff --git a/frontend/packages/console-app/src/components/nodes/NodeLogsUnitFilter.tsx b/frontend/packages/console-app/src/components/nodes/NodeLogsUnitFilter.tsx index 4e72f974b54..229cdd3f34d 100644 --- a/frontend/packages/console-app/src/components/nodes/NodeLogsUnitFilter.tsx +++ b/frontend/packages/console-app/src/components/nodes/NodeLogsUnitFilter.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { Chip, ChipGroup, TextInput, ToolbarItem } from '@patternfly/react-core'; +import { Label, LabelGroup, TextInput, ToolbarItem } from '@patternfly/react-core'; import * as _ from 'lodash'; import { useTranslation } from 'react-i18next'; import { getQueryArgument } from '@console/internal/components/utils'; @@ -71,13 +71,13 @@ const NodeLogsUnitFilter: React.FC = ({ onChangeUnit }) {values.length > 0 && ( - + {values?.map((v) => ( - deleteValue(v)}> + + ))} - + )} diff --git a/frontend/packages/console-app/src/components/nodes/node-dashboard/ActivityCard.tsx b/frontend/packages/console-app/src/components/nodes/node-dashboard/ActivityCard.tsx index bd7b403b1e3..77c1116e816 100644 --- a/frontend/packages/console-app/src/components/nodes/node-dashboard/ActivityCard.tsx +++ b/frontend/packages/console-app/src/components/nodes/node-dashboard/ActivityCard.tsx @@ -37,12 +37,7 @@ const ActivityCard: React.FC = () => { const eventsLink = `${resourcePathFromModel(NodeModel, obj.metadata.name)}/events`; const { t } = useTranslation(); return ( - + { const zone = obj.metadata.labels?.['topology.kubernetes.io/zone']; const { t } = useTranslation(); return ( - + { const { obj } = React.useContext(NodeDashboardContext); const { t } = useTranslation(); return ( - + {t('console-app~Status')} diff --git a/frontend/packages/console-app/src/components/nodes/node-dashboard/UtilizationCard.tsx b/frontend/packages/console-app/src/components/nodes/node-dashboard/UtilizationCard.tsx index 19b40afedca..4c1f1761acf 100644 --- a/frontend/packages/console-app/src/components/nodes/node-dashboard/UtilizationCard.tsx +++ b/frontend/packages/console-app/src/components/nodes/node-dashboard/UtilizationCard.tsx @@ -50,7 +50,7 @@ const UtilizationCard: React.FC = () => { ); return ( - + ; } } diff --git a/frontend/packages/console-app/src/components/oauth-config/IdentityProviders.tsx b/frontend/packages/console-app/src/components/oauth-config/IdentityProviders.tsx index 51ca5c9062a..52aab3b1596 100644 --- a/frontend/packages/console-app/src/components/oauth-config/IdentityProviders.tsx +++ b/frontend/packages/console-app/src/components/oauth-config/IdentityProviders.tsx @@ -10,24 +10,24 @@ export const IdentityProviders: React.FC = ({ identityPr ) : (
-
{t('console-app~Name')}{t('console-app~Size')}
+
{image.names.find( (name: string) => !name.includes('@') && !name.includes(''), ) || image.names[0]} + {units.humanize(image.sizeBytes, 'binaryBytes', true).string || '-'}
- - - - - +
{t('console-app~Name')}{t('console-app~Type')}{t('console-app~Mapping method')}
+ + + + + - + {_.map(identityProviders, (idp) => ( - - + - - diff --git a/frontend/packages/console-app/src/components/pdb/AvailabilityRequirementPopover.tsx b/frontend/packages/console-app/src/components/pdb/AvailabilityRequirementPopover.tsx index de18958f383..655fb20b71e 100644 --- a/frontend/packages/console-app/src/components/pdb/AvailabilityRequirementPopover.tsx +++ b/frontend/packages/console-app/src/components/pdb/AvailabilityRequirementPopover.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { Text, Title, Stack, StackItem } from '@patternfly/react-core'; +import { Content, Title, Stack, StackItem } from '@patternfly/react-core'; import { useTranslation } from 'react-i18next'; import { DOC_URL_PODDISRUPTIONBUDGET_POLICY, @@ -19,21 +19,21 @@ const AvailabilityRequirementPopover: React.FC = () => { {t('console-app~maxUnavailable')} - + {t( 'console-app~An eviction is allowed if at most "maxUnavailable" pods selected by "selector" are unavailable after the eviction, i.e. even in absence of the evicted pod. For example, one can prevent all voluntary evictions by specifying 0. This is a mutually exclusive setting with "minAvailable".', )} - + {t('console-app~minAvailable')} - + {t( 'console-app~An eviction is allowed if at least "minAvailable" pods selected by "selector" will still be available after the eviction, i.e. even in the absence of the evicted pod. So for example you can prevent all voluntary evictions by specifying "100%".', )} - + {t('console-app~More information:')} diff --git a/frontend/packages/console-app/src/components/pdb/PDBAlert.tsx b/frontend/packages/console-app/src/components/pdb/PDBAlert.tsx index ace06e8b7ba..819d56732c5 100644 --- a/frontend/packages/console-app/src/components/pdb/PDBAlert.tsx +++ b/frontend/packages/console-app/src/components/pdb/PDBAlert.tsx @@ -2,10 +2,7 @@ import * as React from 'react'; import { Label } from '@patternfly/react-core'; import { Trans, useTranslation } from 'react-i18next'; import { Link } from 'react-router-dom-v5-compat'; -import { - useK8sWatchResource, - YellowExclamationTriangleIcon, -} from '@console/dynamic-plugin-sdk/src/api/core-api'; +import { useK8sWatchResource } from '@console/dynamic-plugin-sdk/src/api/core-api'; import { resourcePathFromModel } from '@console/internal/components/utils/resource-link'; import { useTelemetry } from '@console/shared/src/hooks/useTelemetry'; import { PodDisruptionBudgetModel } from '../../models'; @@ -48,7 +45,7 @@ export const PDBAlert: React.FC = ({ namespace }) => { return ( <> {pdbCount > 0 && loaded && !loadError && ( -
{t('console-app~Name')}{t('console-app~Type')}{t('console-app~Mapping method')}
+
{idp.name} + {idp.type} + {idp.mappingMethod || 'claim'}