From 86c145301ed3acfa8dbe840af57412d66306ecc0 Mon Sep 17 00:00:00 2001 From: Scott Wilson Date: Wed, 25 Jun 2025 16:49:34 -0700 Subject: [PATCH 1/3] improvement: add collapsed environment view to secret overview page and minor ui adjustments --- .../OverviewPage/OverviewPage.tsx | 243 +++++++++++++----- .../SecretOverviewDynamicSecretRow.tsx | 2 +- .../SecretOverviewFolderRow.tsx | 2 +- .../SecretOverviewSecretRotationRow.tsx | 2 +- .../SecretOverviewTableRow.tsx | 6 +- 5 files changed, 183 insertions(+), 72 deletions(-) diff --git a/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx b/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx index f34c8695e..51c86d202 100644 --- a/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx +++ b/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx @@ -6,6 +6,9 @@ import { faCheckCircle } from "@fortawesome/free-regular-svg-icons"; import { faAngleDown, faArrowDown, + faArrowLeft, + faArrowRight, + faArrowRightToBracket, faArrowUp, faFileImport, faFingerprint, @@ -69,7 +72,7 @@ import { PreferenceKey, setUserTablePreference } from "@app/helpers/userTablePreferences"; -import { useDebounce, usePagination, usePopUp, useResetPageHelper } from "@app/hooks"; +import { useDebounce, usePagination, usePopUp, useResetPageHelper, useToggle } from "@app/hooks"; import { useCreateFolder, useCreateSecretV3, @@ -164,6 +167,18 @@ export const OverviewPage = () => { const [debouncedSearchFilter, setDebouncedSearchFilter] = useDebounce(searchFilter); const secretPath = (routerSearch?.secretPath as string) || "/"; const { subscription } = useSubscription(); + const [collapseEnvironments, setCollapseEnvironments] = useToggle( + Boolean(localStorage.getItem("overview-collapse-environments")) + ); + + const handleToggleNarrowHeader = () => { + setCollapseEnvironments.toggle(); + if (collapseEnvironments) { + localStorage.removeItem("overview-collapse-environments"); + } else { + localStorage.setItem("overview-collapse-environments", "true"); + } + }; const [filter, setFilter] = useState(DEFAULT_FILTER_STATE); const [filterHistory, setFilterHistory] = useState< @@ -1173,47 +1188,81 @@ export const OverviewPage = () => { className="thin-scrollbar rounded-b-none" > - - - + + {visibleEnvs?.map(({ name, slug }, index) => { @@ -1223,28 +1272,66 @@ export const OverviewPage = () => { return ( ); })} @@ -1409,16 +1496,40 @@ export const OverviewPage = () => { /> {visibleEnvs?.map(({ name, slug }) => ( - ))} diff --git a/frontend/src/pages/secret-manager/OverviewPage/components/SecretOverviewDynamicSecretRow/SecretOverviewDynamicSecretRow.tsx b/frontend/src/pages/secret-manager/OverviewPage/components/SecretOverviewDynamicSecretRow/SecretOverviewDynamicSecretRow.tsx index f814b336b..d5d4ace3e 100644 --- a/frontend/src/pages/secret-manager/OverviewPage/components/SecretOverviewDynamicSecretRow/SecretOverviewDynamicSecretRow.tsx +++ b/frontend/src/pages/secret-manager/OverviewPage/components/SecretOverviewDynamicSecretRow/SecretOverviewDynamicSecretRow.tsx @@ -36,7 +36,7 @@ export const SecretOverviewDynamicSecretRow = ({ isPresent ? "text-green-600" : "text-red-600" )} > -
+
-
+
-
+
-
+
{!isSecretEmpty && ( Date: Thu, 26 Jun 2025 07:56:47 -0700 Subject: [PATCH 2/3] improvement: increase env tooltip max width and adjust alignment --- .../secret-manager/OverviewPage/OverviewPage.tsx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx b/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx index 51c86d202..5886d9242 100644 --- a/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx +++ b/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx @@ -1280,10 +1280,17 @@ export const OverviewPage = () => { key={`secret-overview-${name}-${index + 1}`} > {name}

+ ) : ( + "" + ) + } side="bottom" sideOffset={-1} - className="text-xs normal-case" + align="end" + className="max-w-xl text-xs normal-case" >
Date: Thu, 26 Jun 2025 09:12:11 -0700 Subject: [PATCH 3/3] improvement: disable tooltip hover content for env name tooltip --- frontend/src/components/v2/Tooltip/Tooltip.tsx | 4 ++++ .../src/pages/secret-manager/OverviewPage/OverviewPage.tsx | 3 +++ 2 files changed, 7 insertions(+) diff --git a/frontend/src/components/v2/Tooltip/Tooltip.tsx b/frontend/src/components/v2/Tooltip/Tooltip.tsx index 3c9dcf1cb..2eb443b4e 100644 --- a/frontend/src/components/v2/Tooltip/Tooltip.tsx +++ b/frontend/src/components/v2/Tooltip/Tooltip.tsx @@ -1,5 +1,6 @@ import { ReactNode } from "react"; import * as TooltipPrimitive from "@radix-ui/react-tooltip"; +import { TooltipProps as RootProps } from "@radix-ui/react-tooltip"; import { twMerge } from "tailwind-merge"; export type TooltipProps = Omit & { @@ -14,6 +15,7 @@ export type TooltipProps = Omit // just render children if tooltip content is empty content ? ( { sideOffset={-1} align="end" className="max-w-xl text-xs normal-case" + rootProps={{ + disableHoverableContent: true + }} >
-
- 0 - ? `${ - !allRowsSelectedOnPage.isChecked ? "Select" : "Unselect" - } all folders and secrets on page` - : "" - } +
+
+
-
- 0 + ? `${ + !allRowsSelectedOnPage.isChecked ? "Select" : "Unselect" + } all folders and secrets on page` + : "" + } + > +
+ +
+ + Name + + setOrderDirection((prev) => + prev === OrderByDirection.ASC + ? OrderByDirection.DESC + : OrderByDirection.ASC + ) + } + > + -
- - Name - - setOrderDirection((prev) => - prev === OrderByDirection.ASC - ? OrderByDirection.DESC - : OrderByDirection.ASC - ) + +
+ - - + + + +
-
- - {missingKeyCount > 0 && ( - +
+

{name}

+ + {!collapseEnvironments && missingKeyCount > 0 && ( + +
+ {missingKeyCount} +
+
+ )} + +
-
- +
+
+ {collapseEnvironments ? ( + + handleExploreEnvClick(slug)} + > + + + + ) : ( + + )}