From 1dea0248809e158e051c8cdb0a0c223bba0641ae Mon Sep 17 00:00:00 2001 From: carlosmonastyrski Date: Fri, 7 Mar 2025 19:19:55 -0300 Subject: [PATCH] Improvement on admin visibility UI components --- .../MinimizedOrgSidebar.tsx | 80 ++++++++++--------- .../ServerAdminsPanel/ServerAdminsPanel.tsx | 18 ++--- .../OverviewPage/components/UserPanel.tsx | 21 ++--- 3 files changed, 60 insertions(+), 59 deletions(-) diff --git a/frontend/src/layouts/OrganizationLayout/components/MinimizedOrgSidebar/MinimizedOrgSidebar.tsx b/frontend/src/layouts/OrganizationLayout/components/MinimizedOrgSidebar/MinimizedOrgSidebar.tsx index c1c4297ca..95e254ccb 100644 --- a/frontend/src/layouts/OrganizationLayout/components/MinimizedOrgSidebar/MinimizedOrgSidebar.tsx +++ b/frontend/src/layouts/OrganizationLayout/components/MinimizedOrgSidebar/MinimizedOrgSidebar.tsx @@ -30,6 +30,8 @@ import { DropdownMenuItem, DropdownMenuLabel, DropdownMenuTrigger, + Modal, + ModalContent, Tooltip } from "@app/components/v2"; import { envConfig } from "@app/config/env"; @@ -78,6 +80,11 @@ export const INFISICAL_SUPPORT_OPTIONS = [ , "Email Support", "mailto:support@infisical.com" + ], + [ + , + "Instance Admins", + "server-admins" ] ]; @@ -90,7 +97,7 @@ export const MinimizedOrgSidebar = () => { const [openSupport, setOpenSupport] = useState(false); const [openUser, setOpenUser] = useState(false); const [openOrg, setOpenOrg] = useState(false); - const [openAdmins, setOpenAdmins] = useState(false); + const [showAdminsModal, setShowAdminsModal] = useState(false); const { user } = useUser(); const { mutateAsync } = useGetOrgTrialUrl(); @@ -394,31 +401,6 @@ export const MinimizedOrgSidebar = () => { : "mb-4" } flex w-full cursor-default flex-col items-center px-1 text-sm text-mineshaft-400`} > - - setOpenAdmins(true)} - onMouseLeave={() => setOpenAdmins(false)} - asChild - > -
- - Admins - -
-
- setOpenAdmins(true)} - onMouseLeave={() => setOpenAdmins(false)} - align="start" - side="right" - className="mb-2 w-[60vh] p-1" - > - Server Administrators -
- -
-
-
setOpenSupport(true)} @@ -439,17 +421,30 @@ export const MinimizedOrgSidebar = () => { > {INFISICAL_SUPPORT_OPTIONS.map(([icon, text, url]) => ( - -
- {icon} -
{text}
-
-
+ {url === "server-admins" ? ( + + ) : ( + +
+ {icon} +
{text}
+
+
+ )}
))} {envConfig.PLATFORM_VERSION && ( @@ -567,6 +562,17 @@ export const MinimizedOrgSidebar = () => { + + +
+ +
+
+
handlePopUpToggle("createOrg", false)} diff --git a/frontend/src/layouts/OrganizationLayout/components/ServerAdminsPanel/ServerAdminsPanel.tsx b/frontend/src/layouts/OrganizationLayout/components/ServerAdminsPanel/ServerAdminsPanel.tsx index 69eecec40..fed2a5a8b 100644 --- a/frontend/src/layouts/OrganizationLayout/components/ServerAdminsPanel/ServerAdminsPanel.tsx +++ b/frontend/src/layouts/OrganizationLayout/components/ServerAdminsPanel/ServerAdminsPanel.tsx @@ -37,7 +37,7 @@ export const ServerAdminsPanel = () => { const isEmpty = !isPending && (!adminUsers || adminUsers.length === 0); return ( -
+
{ className="w-full" />
-
- - - +
+ +
+ - + {isPending && } {!isPending && adminUsers?.map(({ user }) => { @@ -65,9 +65,9 @@ export const ServerAdminsPanel = () => { ? `${user.firstName} ${user.lastName}` : user.username; return ( - - - + + + ); })} diff --git a/frontend/src/pages/admin/OverviewPage/components/UserPanel.tsx b/frontend/src/pages/admin/OverviewPage/components/UserPanel.tsx index 9f6524cf7..6654439de 100644 --- a/frontend/src/pages/admin/OverviewPage/components/UserPanel.tsx +++ b/frontend/src/pages/admin/OverviewPage/components/UserPanel.tsx @@ -4,7 +4,8 @@ import { faEllipsis, faFilter, faMagnifyingGlass, - faUsers + faUsers, + faUserShield } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { twMerge } from "tailwind-merge"; @@ -23,7 +24,6 @@ import { EmptyState, IconButton, Input, - Switch, Table, TableContainer, TableSkeleton, @@ -97,24 +97,19 @@ const UserPanelTable = ({ - - Filter Users + + Filter By { e.preventDefault(); setAdminsOnly(!adminsOnly); }} - icon={adminsOnly && } + icon={adminsOnly && } iconPos="right" > -
- Admins Only - setAdminsOnly(checked)} - className="data-[state=checked]:bg-primary-400" - /> +
+ + Server Admins
Name Email
{name}{user.email}
{name}{user.email}