diff --git a/messages/en-US.json b/messages/en-US.json index 148b593c3..06dc1ac6c 100644 --- a/messages/en-US.json +++ b/messages/en-US.json @@ -1125,7 +1125,9 @@ "idpErrorNotFound": "IdP not found", "inviteInvalid": "Invalid Invite", "labels": "Labels", - "addLabelsButtonText": "Add labels", + "addLabels": "Add labels", + "siteLabelsTab": "Labels", + "siteLabelsDescription": "Manage labels associated with this site.", "inviteInvalidDescription": "The invite link is invalid.", "inviteErrorWrongUser": "Invite is not for this user", "inviteErrorUserNotExists": "User does not exist. Please create an account first.", diff --git a/src/components/SitesTable.tsx b/src/components/SitesTable.tsx index b3a22db0d..d53a6fdc0 100644 --- a/src/components/SitesTable.tsx +++ b/src/components/SitesTable.tsx @@ -94,6 +94,7 @@ export default function SitesTable({ const [selectedSite, setSelectedSite] = useState(null); const [resourcesDialogSite, setResourcesDialogSite] = useState(null); + const [isLabelsDialogOpen, setIsLabelsDialogOpen] = useState(false); const [isRefreshing, startTransition] = useTransition(); const [isNavigatingToAddPage, startNavigation] = useTransition(); @@ -453,18 +454,7 @@ export default function SitesTable({ accessorKey: "labels", header: () => {t("labels")}, cell: ({ row }) => { - return ( - - ); + return <>; } }, { @@ -507,6 +497,14 @@ export default function SitesTable({ {t("sitesTableViewPrivateResources")} + { + setSelectedSite(siteRow); + setIsLabelsDialogOpen(true); + }} + > + {t("addLabels")} + { setSelectedSite(siteRow); @@ -597,25 +595,33 @@ export default function SitesTable({ {selectedSite && ( - { - setIsDeleteModalOpen(val); - setSelectedSite(null); - }} - dialog={ -
-

{t("siteQuestionRemove")}

-

{t("siteMessageRemove")}

-
- } - buttonText={t("siteConfirmDelete")} - onConfirm={async () => - startTransition(() => deleteSite(selectedSite!.id)) - } - string={selectedSite.name} - title={t("siteDelete")} - /> + <> + { + setIsDeleteModalOpen(val); + setSelectedSite(null); + }} + dialog={ +
+

{t("siteQuestionRemove")}

+

{t("siteMessageRemove")}

+
+ } + buttonText={t("siteConfirmDelete")} + onConfirm={async () => + startTransition(() => deleteSite(selectedSite!.id)) + } + string={selectedSite.name} + title={t("siteDelete")} + /> + + + )} ); } + +type SiteLabelsDialogProps = { + site: SiteRow; + isOpen: boolean; + setIsOpen: (open: boolean) => void; +}; + +function SiteLabelsDialog({ site, isOpen, setIsOpen }: SiteLabelsDialogProps) { + const t = useTranslations(); + return ( + + + + {t("siteLabelsTab")} + + {t("siteLabelsDescription")} + + + + <> + + + + + + + ); +}