diff --git a/package-lock.json b/package-lock.json index f0dbf9f..6fe8af1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "@ant-design/icons": "5.6.0", "@monaco-editor/react": "4.6.0", "@originjs/vite-plugin-federation": "1.3.6", - "@prorobotech/openapi-k8s-toolkit": "^0.0.1-alpha.34", + "@prorobotech/openapi-k8s-toolkit": "^0.0.1-alpha.35", "@readme/openapi-parser": "4.0.0", "@reduxjs/toolkit": "2.2.5", "@tanstack/react-query": "5.62.2", @@ -2807,9 +2807,9 @@ } }, "node_modules/@prorobotech/openapi-k8s-toolkit": { - "version": "0.0.1-alpha.34", - "resolved": "https://registry.npmjs.org/@prorobotech/openapi-k8s-toolkit/-/openapi-k8s-toolkit-0.0.1-alpha.34.tgz", - "integrity": "sha512-dD1QdcIBAuPDk5HFBi78s7NvoPLOHFHVsTWL4NxLZVi8sY5DYZL/L2ZqC3X3/bei5KtAG96178lZH48wqKeA5w==", + "version": "0.0.1-alpha.35", + "resolved": "https://registry.npmjs.org/@prorobotech/openapi-k8s-toolkit/-/openapi-k8s-toolkit-0.0.1-alpha.35.tgz", + "integrity": "sha512-bSvTlrTTW/OIWJ7aFaooSmXvyckFN8NzCoPTww0yx9kJW95M9EvTOGWiOxzWeNopuZKRmifmJULLmKVXEqZHyA==", "license": "MIT", "dependencies": { "@monaco-editor/react": "4.6.0", diff --git a/package.json b/package.json index 391812c..99dbbe8 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "@ant-design/icons": "5.6.0", "@monaco-editor/react": "4.6.0", "@originjs/vite-plugin-federation": "1.3.6", - "@prorobotech/openapi-k8s-toolkit": "0.0.1-alpha.34", + "@prorobotech/openapi-k8s-toolkit": "0.0.1-alpha.35", "@readme/openapi-parser": "4.0.0", "@reduxjs/toolkit": "2.2.5", "@tanstack/react-query": "5.62.2", diff --git a/src/components/molecules/ManageableSidebar/ManageableSidebar.tsx b/src/components/molecules/ManageableSidebar/ManageableSidebar.tsx index 35c82eb..48c8f26 100644 --- a/src/components/molecules/ManageableSidebar/ManageableSidebar.tsx +++ b/src/components/molecules/ManageableSidebar/ManageableSidebar.tsx @@ -23,9 +23,10 @@ import { Styled } from './styled' type TManageableSidebarProps = { instanceName?: string projectName?: string + idToCompare: string } -export const ManageableSidebar: FC = ({ projectName, instanceName }) => { +export const ManageableSidebar: FC = ({ projectName, instanceName, idToCompare }) => { const { pathname } = useLocation() const params = useParams() const clusterName = params?.clusterName || '' @@ -84,6 +85,7 @@ export const ManageableSidebar: FC = ({ projectName, in syntheticProject, }} pathname={pathname} + idToCompare={idToCompare} noMarginTop /> diff --git a/src/pages/FormApiPage/FormApiPage.tsx b/src/pages/FormApiPage/FormApiPage.tsx index 756d5d9..cef93e3 100644 --- a/src/pages/FormApiPage/FormApiPage.tsx +++ b/src/pages/FormApiPage/FormApiPage.tsx @@ -13,6 +13,7 @@ import { RowFlexGrow, FlexCol, } from 'components' +import { getSidebarIdPrefix } from 'utils/getSidebarIdPrefix' import { AFTER_BACKLINK_SPACE, AFTER_BREADCRUMBS_SPACE } from 'constants/blocksSizes' import { BaseTemplate } from 'templates' @@ -39,6 +40,8 @@ export const FormApiPage: FC = ({ forcedTheme, inside }) => { const backLink = searchParams.get('backlink')?.startsWith('/') ? searchParams.get('backlink') : undefined + const sidebarId = `${getSidebarIdPrefix({ instance: !!syntheticProject, project: !!namespace, inside })}api-form` + return ( @@ -53,7 +56,7 @@ export const FormApiPage: FC = ({ forcedTheme, inside }) => { - + {entryName ? ( diff --git a/src/pages/FormBuiltinPage/FormBuiltinPage.tsx b/src/pages/FormBuiltinPage/FormBuiltinPage.tsx index d713dce..c441444 100644 --- a/src/pages/FormBuiltinPage/FormBuiltinPage.tsx +++ b/src/pages/FormBuiltinPage/FormBuiltinPage.tsx @@ -13,6 +13,7 @@ import { RowFlexGrow, FlexCol, } from 'components' +import { getSidebarIdPrefix } from 'utils/getSidebarIdPrefix' import { AFTER_BACKLINK_SPACE, AFTER_BREADCRUMBS_SPACE } from 'constants/blocksSizes' import { BaseTemplate } from 'templates' @@ -39,6 +40,8 @@ export const FormBuiltinPage: FC = ({ forcedTheme, inside const backLink = searchParams.get('backlink')?.startsWith('/') ? searchParams.get('backlink') : undefined + const sidebarId = `${getSidebarIdPrefix({ instance: !!syntheticProject, project: !!namespace, inside })}builtin-form` + return ( @@ -51,7 +54,7 @@ export const FormBuiltinPage: FC = ({ forcedTheme, inside - + {entryName ? ( diff --git a/src/pages/FormCrdPage/FormCrdPage.tsx b/src/pages/FormCrdPage/FormCrdPage.tsx index 626bb48..865247f 100644 --- a/src/pages/FormCrdPage/FormCrdPage.tsx +++ b/src/pages/FormCrdPage/FormCrdPage.tsx @@ -13,6 +13,7 @@ import { RowFlexGrow, FlexCol, } from 'components' +import { getSidebarIdPrefix } from 'utils/getSidebarIdPrefix' import { AFTER_BACKLINK_SPACE, AFTER_BREADCRUMBS_SPACE } from 'constants/blocksSizes' import { BaseTemplate } from 'templates' @@ -39,6 +40,8 @@ export const FormCrdPage: FC = ({ forcedTheme, inside }) => { const backLink = searchParams.get('backlink')?.startsWith('/') ? searchParams.get('backlink') : undefined + const sidebarId = `${getSidebarIdPrefix({ instance: !!syntheticProject, project: !!namespace, inside })}crd-form` + return ( @@ -53,7 +56,7 @@ export const FormCrdPage: FC = ({ forcedTheme, inside }) => { - + {entryName ? ( diff --git a/src/pages/ListInsideApiByApiGroupPage/ListInsideApiByApiGroupPage.tsx b/src/pages/ListInsideApiByApiGroupPage/ListInsideApiByApiGroupPage.tsx index 89392e9..4b59536 100644 --- a/src/pages/ListInsideApiByApiGroupPage/ListInsideApiByApiGroupPage.tsx +++ b/src/pages/ListInsideApiByApiGroupPage/ListInsideApiByApiGroupPage.tsx @@ -3,6 +3,7 @@ import { Col } from 'antd' import { ContentCard, Spacer } from '@prorobotech/openapi-k8s-toolkit' import { useParams } from 'react-router-dom' import { ListInsideApisByApiGroup, ManageableBreadcrumbs, ManageableSidebar, RowFlexGrow, FlexCol } from 'components' +import { getSidebarIdPrefix } from 'utils/getSidebarIdPrefix' import { BaseTemplate } from 'templates' import { AFTER_BREADCRUMBS_SPACE } from 'constants/blocksSizes' @@ -14,6 +15,8 @@ type TListInsideApiByApiGroupPageProps = { export const ListInsideApiByApiGroupPage: FC = ({ forcedTheme, inside }) => { const { namespace, apiGroup, apiVersion } = useParams() + const sidebarId = `${getSidebarIdPrefix({ namespace: !!namespace, inside })}api-by-api` + return ( @@ -21,7 +24,7 @@ export const ListInsideApiByApiGroupPage: FC - + {apiGroup && apiVersion && ( diff --git a/src/pages/ListInsideApiPage/ListInsideApiPage.tsx b/src/pages/ListInsideApiPage/ListInsideApiPage.tsx index 3bd3535..634b447 100644 --- a/src/pages/ListInsideApiPage/ListInsideApiPage.tsx +++ b/src/pages/ListInsideApiPage/ListInsideApiPage.tsx @@ -3,6 +3,7 @@ import { Col } from 'antd' import { ContentCard, Spacer } from '@prorobotech/openapi-k8s-toolkit' import { useParams } from 'react-router-dom' import { ListInsideAllResources, ManageableBreadcrumbs, ManageableSidebar, RowFlexGrow, FlexCol } from 'components' +import { getSidebarIdPrefix } from 'utils/getSidebarIdPrefix' import { BaseTemplate } from 'templates' import { AFTER_BREADCRUMBS_SPACE } from 'constants/blocksSizes' @@ -14,6 +15,8 @@ type TListInsideApiPageProps = { export const ListInsideApiPage: FC = ({ forcedTheme, inside }) => { const { namespace } = useParams() + const sidebarId = `${getSidebarIdPrefix({ namespace: !!namespace, inside })}apis` + return ( @@ -21,7 +24,7 @@ export const ListInsideApiPage: FC = ({ forcedTheme, in - + diff --git a/src/pages/ListInsideCrdByApiGroupPage/ListInsideCrdByApiGroupPage.tsx b/src/pages/ListInsideCrdByApiGroupPage/ListInsideCrdByApiGroupPage.tsx index 53cfb35..048902a 100644 --- a/src/pages/ListInsideCrdByApiGroupPage/ListInsideCrdByApiGroupPage.tsx +++ b/src/pages/ListInsideCrdByApiGroupPage/ListInsideCrdByApiGroupPage.tsx @@ -3,6 +3,7 @@ import { Col } from 'antd' import { ContentCard, Spacer } from '@prorobotech/openapi-k8s-toolkit' import { useParams } from 'react-router-dom' import { ListInsideCrdsByApiGroup, ManageableBreadcrumbs, ManageableSidebar, RowFlexGrow, FlexCol } from 'components' +import { getSidebarIdPrefix } from 'utils/getSidebarIdPrefix' import { BaseTemplate } from 'templates' import { AFTER_BREADCRUMBS_SPACE } from 'constants/blocksSizes' @@ -14,6 +15,8 @@ type TListInsideCrdByApiGroupPageProps = { export const ListInsideCrdByApiGroupPage: FC = ({ forcedTheme, inside }) => { const { namespace, apiGroup, apiVersion, apiExtensionVersion } = useParams() + const sidebarId = `${getSidebarIdPrefix({ namespace: !!namespace, inside })}crd-by-api` + return ( @@ -21,7 +24,7 @@ export const ListInsideCrdByApiGroupPage: FC - + {apiGroup && apiVersion && apiExtensionVersion && ( diff --git a/src/pages/ListProjectsPage/ListProjectsPage.tsx b/src/pages/ListProjectsPage/ListProjectsPage.tsx index fad2269..b7c64c0 100644 --- a/src/pages/ListProjectsPage/ListProjectsPage.tsx +++ b/src/pages/ListProjectsPage/ListProjectsPage.tsx @@ -2,6 +2,7 @@ import React, { FC } from 'react' import { Col } from 'antd' import { ContentCard, Spacer } from '@prorobotech/openapi-k8s-toolkit' import { ListProjects, ManageableBreadcrumbs, ManageableSidebar, RowFlexGrow, FlexCol } from 'components' +import { getSidebarIdPrefix } from 'utils/getSidebarIdPrefix' import { BaseTemplate } from 'templates' import { AFTER_BREADCRUMBS_SPACE } from 'constants/blocksSizes' @@ -10,6 +11,8 @@ type TListProjectsPageProps = { } export const ListProjectsPage: FC = ({ forcedTheme }) => { + const sidebarId = `${getSidebarIdPrefix({})}projects-list` + return ( @@ -17,7 +20,7 @@ export const ListProjectsPage: FC = ({ forcedTheme }) => - + diff --git a/src/pages/TableApiPage/TableApiPage.tsx b/src/pages/TableApiPage/TableApiPage.tsx index e0e491e..e706bb9 100644 --- a/src/pages/TableApiPage/TableApiPage.tsx +++ b/src/pages/TableApiPage/TableApiPage.tsx @@ -5,6 +5,7 @@ import { useParams, useSearchParams } from 'react-router-dom' import { useSelector } from 'react-redux' import type { RootState } from 'store/store' import { TableNonCrdInfo, BackLink, ManageableBreadcrumbs, ManageableSidebar, RowFlexGrow, FlexCol } from 'components' +import { getSidebarIdPrefix } from 'utils/getSidebarIdPrefix' import { BaseTemplate } from 'templates' import { BASE_INSTANCES_API_GROUP, @@ -44,6 +45,8 @@ export const TableApiPage: FC = ({ forcedTheme, inside }) => // const nonInstanceBackLink = namespace ? customBacklink : clustererBacklink + const sidebarId = `${getSidebarIdPrefix({ instance: !!syntheticProject, project: !!namespace, inside })}api-table` + return ( @@ -56,7 +59,7 @@ export const TableApiPage: FC = ({ forcedTheme, inside }) => - + {typeName && apiGroup && apiVersion && ( diff --git a/src/pages/TableBuiltinPage/TableBuiltinPage.tsx b/src/pages/TableBuiltinPage/TableBuiltinPage.tsx index 46daea9..c91e7ea 100644 --- a/src/pages/TableBuiltinPage/TableBuiltinPage.tsx +++ b/src/pages/TableBuiltinPage/TableBuiltinPage.tsx @@ -5,6 +5,7 @@ import { useParams, useSearchParams } from 'react-router-dom' import { useSelector } from 'react-redux' import type { RootState } from 'store/store' import { TableBuiltinInfo, BackLink, ManageableBreadcrumbs, ManageableSidebar, RowFlexGrow, FlexCol } from 'components' +import { getSidebarIdPrefix } from 'utils/getSidebarIdPrefix' import { BaseTemplate } from 'templates' import { BASE_INSTANCES_API_GROUP, @@ -36,6 +37,8 @@ export const TableBuiltinPage: FC = ({ forcedTheme, insi const clustererBacklink = inside ? customBacklinkWithInside : `${baseprefix}/clusters` + const sidebarId = `${getSidebarIdPrefix({ instance: !!syntheticProject, project: !!namespace, inside })}builtin-table` + return ( @@ -45,7 +48,7 @@ export const TableBuiltinPage: FC = ({ forcedTheme, insi - + {typeName && ( diff --git a/src/pages/TableCrdPage/TableCrdPage.tsx b/src/pages/TableCrdPage/TableCrdPage.tsx index 3db4322..d7b3d1a 100644 --- a/src/pages/TableCrdPage/TableCrdPage.tsx +++ b/src/pages/TableCrdPage/TableCrdPage.tsx @@ -5,6 +5,7 @@ import { useParams } from 'react-router-dom' import { useSelector } from 'react-redux' import type { RootState } from 'store/store' import { TableCrdInfo, BackLink, ManageableBreadcrumbs, ManageableSidebar, RowFlexGrow, FlexCol } from 'components' +import { getSidebarIdPrefix } from 'utils/getSidebarIdPrefix' import { BaseTemplate } from 'templates' import { BASE_INSTANCES_API_GROUP, @@ -35,6 +36,8 @@ export const TableCrdPage: FC = ({ forcedTheme, inside }) => const clustererBacklink = inside ? customBacklinkWithInside : `${baseprefix}/clusters` + const sidebarId = `${getSidebarIdPrefix({ instance: !!syntheticProject, project: !!namespace, inside })}crd-table` + return ( @@ -47,7 +50,7 @@ export const TableCrdPage: FC = ({ forcedTheme, inside }) => - + {crdName && apiGroup && apiVersion && apiExtensionVersion && ( diff --git a/src/utils/getSidebarIdPrefix.ts b/src/utils/getSidebarIdPrefix.ts new file mode 100644 index 0000000..27b9347 --- /dev/null +++ b/src/utils/getSidebarIdPrefix.ts @@ -0,0 +1,25 @@ +export const getSidebarIdPrefix = ({ + project, + instance, + namespace, + inside, +}: { + project?: boolean + instance?: boolean + namespace?: boolean + inside?: boolean +}): string => { + let result = inside ? 'inside-' : 'stock-' + + if (instance) { + result += 'instance-' + } else if (project) { + result += 'project-' + } else if (namespace) { + result += 'namespace-' + } else { + result += 'cluster-' + } + + return result +}