diff --git a/frontend/src/components/ACLPage/List/List.tsx b/frontend/src/components/ACLPage/List/List.tsx index 26155172b..07255011e 100644 --- a/frontend/src/components/ACLPage/List/List.tsx +++ b/frontend/src/components/ACLPage/List/List.tsx @@ -1,6 +1,5 @@ import React from 'react'; import { ColumnDef, Row } from '@tanstack/react-table'; -import PageHeading from 'components/common/PageHeading/PageHeading'; import Table from 'components/common/NewTable'; import { useConfirm } from 'lib/hooks/useConfirm'; import useAppParams from 'lib/hooks/useAppParams'; @@ -20,6 +19,7 @@ import { useTheme } from 'styled-components'; import ACLFormContext from 'components/ACLPage/Form/AclFormContext'; import PlusIcon from 'components/common/Icons/PlusIcon'; import ActionButton from 'components/common/ActionComponent/ActionButton/ActionButton'; +import ResourcePageHeading from 'components/common/ResourcePageHeading/ResourcePageHeading'; import * as S from './List.styled'; @@ -149,7 +149,7 @@ const ACList: React.FC = () => { return ( - + { > Create ACL - + { ); return ( <> - { return ( <> - + { return (
- - + { return ( <> - + {!isReadOnly && ( { placement="left" /> )} - + { return ( - { return (
- { )} - +
diff --git a/frontend/src/components/ConsumerGroups/Details/ResetOffsets/ResetOffsets.tsx b/frontend/src/components/ConsumerGroups/Details/ResetOffsets/ResetOffsets.tsx index 0b5864794..6edeff068 100644 --- a/frontend/src/components/ConsumerGroups/Details/ResetOffsets/ResetOffsets.tsx +++ b/frontend/src/components/ConsumerGroups/Details/ResetOffsets/ResetOffsets.tsx @@ -1,10 +1,10 @@ import React from 'react'; import { clusterConsumerGroupsPath, ClusterGroupParam } from 'lib/paths'; import 'react-datepicker/dist/react-datepicker.css'; -import PageHeading from 'components/common/PageHeading/PageHeading'; import useAppParams from 'lib/hooks/useAppParams'; import { useConsumerGroupDetails } from 'lib/hooks/api/consumers'; import PageLoader from 'components/common/PageLoader/PageLoader'; +import ResourcePageHeading from 'components/common/ResourcePageHeading/ResourcePageHeading'; import { ConsumerGroupOffsetsReset, ConsumerGroupOffsetsResetType, @@ -37,7 +37,7 @@ const ResetOffsets: React.FC = () => { return ( <> - { const { clusterName } = useAppParams(); @@ -92,7 +92,7 @@ const List = () => { return ( <> - + diff --git a/frontend/src/components/KsqlDb/KsqlDb.tsx b/frontend/src/components/KsqlDb/KsqlDb.tsx index d105720aa..12a2a8401 100644 --- a/frontend/src/components/KsqlDb/KsqlDb.tsx +++ b/frontend/src/components/KsqlDb/KsqlDb.tsx @@ -10,13 +10,13 @@ import { clusterKsqlDbTablesRelativePath, ClusterNameRoute, } from 'lib/paths'; -import PageHeading from 'components/common/PageHeading/PageHeading'; import { ActionButton } from 'components/common/ActionComponent'; import Navbar from 'components/common/Navigation/Navbar.styled'; import { Navigate, NavLink, Route, Routes } from 'react-router-dom'; import { Action, ResourceType } from 'generated-sources'; import { useKsqlkDb } from 'lib/hooks/api/ksqlDb'; import 'ace-builds/src-noconflict/ace'; +import ResourcePageHeading from 'components/common/ResourcePageHeading/ResourcePageHeading'; import TableView from './TableView'; @@ -29,7 +29,7 @@ const KsqlDb: React.FC = () => { return ( <> - + { > Execute KSQL Request - + = ({ name, status, features, - singleMode, + opened = false, }) => { const hasFeatureConfigured = (key: ClusterFeaturesEnum) => features?.includes(key); - const [isOpen, setIsOpen] = useState(!!singleMode); + const [isOpen, setIsOpen] = useState(!!opened); const location = useLocation(); const [colorKey, setColorKey] = useLocalStorage( `clusterColor-${name}`, 'transparent' ); - const getIsMenuItemActive = (path: string) => - location.pathname.includes(path); + const getIsMenuItemActive = (path: string) => { + return location.pathname.includes(path); + }; + + const { ref } = useScrollIntoView(opened); return ( - + setIsOpen((prev) => !prev)} setColorKey={setColorKey} + isActive={opened} /> {isOpen && ( diff --git a/frontend/src/components/Nav/ClusterMenu/__tests__/ClusterMenu.spec.tsx b/frontend/src/components/Nav/ClusterMenu/__tests__/ClusterMenu.spec.tsx index ce0bb9731..767fc3777 100644 --- a/frontend/src/components/Nav/ClusterMenu/__tests__/ClusterMenu.spec.tsx +++ b/frontend/src/components/Nav/ClusterMenu/__tests__/ClusterMenu.spec.tsx @@ -7,13 +7,18 @@ import { clusterConnectorsPath } from 'lib/paths'; import { render } from 'lib/testHelpers'; import { onlineClusterPayload } from 'lib/fixtures/clusters'; +/* + Due to jsdom doesnt know about scrollIntoView +*/ +window.HTMLElement.prototype.scrollIntoView = jest.fn(); + describe('ClusterMenu', () => { - const setupComponent = (cluster: Cluster, singleMode?: boolean) => ( + const setupComponent = (cluster: Cluster, opened?: boolean) => ( ); const getMenuItems = () => screen.getAllByRole('menuitem'); diff --git a/frontend/src/components/Nav/Menu/MenuTab.tsx b/frontend/src/components/Nav/Menu/MenuTab.tsx index 803f98a8d..91df91c55 100644 --- a/frontend/src/components/Nav/Menu/MenuTab.tsx +++ b/frontend/src/components/Nav/Menu/MenuTab.tsx @@ -11,6 +11,7 @@ export interface MenuTabProps { isOpen: boolean; toggleClusterMenu: () => void; setColorKey: Dispatch>; + isActive?: boolean; } const MenuTab: FC = ({ @@ -19,8 +20,13 @@ const MenuTab: FC = ({ status, isOpen, setColorKey, + isActive = false, }) => ( - + diff --git a/frontend/src/components/Nav/Nav.tsx b/frontend/src/components/Nav/Nav.tsx index 2741b4351..532f5e4dc 100644 --- a/frontend/src/components/Nav/Nav.tsx +++ b/frontend/src/components/Nav/Nav.tsx @@ -1,5 +1,6 @@ -import { useClusters } from 'lib/hooks/api/clusters'; import React, { type FC } from 'react'; +import { useClusters } from 'lib/hooks/api/clusters'; +import useCurrentClusterName from 'lib/hooks/useCurrentClusterName'; import * as S from './Nav.styled'; import MenuItem from './Menu/MenuItem'; @@ -7,6 +8,7 @@ import ClusterMenu from './ClusterMenu/ClusterMenu'; const Nav: FC = () => { const clusters = useClusters(); + const clusterName = useCurrentClusterName(); return ( diff --git a/frontend/src/components/Schemas/Details/Details.tsx b/frontend/src/components/Schemas/Details/Details.tsx index 2d0c345d7..75680eba1 100644 --- a/frontend/src/components/Schemas/Details/Details.tsx +++ b/frontend/src/components/Schemas/Details/Details.tsx @@ -8,7 +8,6 @@ import { } from 'lib/paths'; import ClusterContext from 'components/contexts/ClusterContext'; import PageLoader from 'components/common/PageLoader/PageLoader'; -import PageHeading from 'components/common/PageHeading/PageHeading'; import { Button } from 'components/common/Button/Button'; import { TableTitle } from 'components/common/table/TableTitle/TableTitle.styled'; import useAppParams from 'lib/hooks/useAppParams'; @@ -24,6 +23,7 @@ import { useGetLatestSchema, useGetSchemasVersions, } from 'lib/hooks/api/schemas'; +import ResourcePageHeading from 'components/common/ResourcePageHeading/ResourcePageHeading'; import LatestVersionItem from './LatestVersion/LatestVersionItem'; import SchemaVersion from './SchemaVersion/SchemaVersion'; @@ -71,7 +71,7 @@ const Details: React.FC = () => { return ( <> - { )} - + {schema && } Old versions {areVersionsFetching ? ( diff --git a/frontend/src/components/Schemas/Diff/Diff.tsx b/frontend/src/components/Schemas/Diff/Diff.tsx index 43e31eddf..1bcafa774 100644 --- a/frontend/src/components/Schemas/Diff/Diff.tsx +++ b/frontend/src/components/Schemas/Diff/Diff.tsx @@ -11,8 +11,8 @@ import { useNavigate, useLocation } from 'react-router-dom'; import { useForm, Controller } from 'react-hook-form'; import Select from 'components/common/Select/Select'; import useAppParams from 'lib/hooks/useAppParams'; -import PageHeading from 'components/common/PageHeading/PageHeading'; import { useGetSchemasVersions } from 'lib/hooks/api/schemas'; +import ResourcePageHeading from 'components/common/ResourcePageHeading/ResourcePageHeading'; import * as S from './Diff.styled'; import { BackButton } from './Diff.styled'; @@ -57,7 +57,7 @@ const Diff: React.FC = () => { return ( <> - = ({ schema }) => { return ( - { return ( <> - + {!isReadOnly && ( <> @@ -77,7 +77,7 @@ const List: React.FC = () => { )} - + diff --git a/frontend/src/components/Schemas/New/New.tsx b/frontend/src/components/Schemas/New/New.tsx index 4bfcc4605..06809d984 100644 --- a/frontend/src/components/Schemas/New/New.tsx +++ b/frontend/src/components/Schemas/New/New.tsx @@ -16,11 +16,11 @@ import { FormError } from 'components/common/Input/Input.styled'; import Select from 'components/common/Select/Select'; import { Button } from 'components/common/Button/Button'; import { Textarea } from 'components/common/Textbox/Textarea.styled'; -import PageHeading from 'components/common/PageHeading/PageHeading'; import useAppParams from 'lib/hooks/useAppParams'; import yup from 'lib/yupExtended'; import { yupResolver } from '@hookform/resolvers/yup'; import { useCreateSchema } from 'lib/hooks/api/schemas'; +import ResourcePageHeading from 'components/common/ResourcePageHeading/ResourcePageHeading'; import * as S from './New.styled'; @@ -71,7 +71,7 @@ const New: React.FC = () => { return ( - { const { isReadOnly } = React.useContext(ClusterContext); @@ -46,7 +46,7 @@ const ListPage: React.FC = () => { return ( <> - + {!isReadOnly && ( { Add a Topic )} - +