From eac36ee442195919cbca1a46d2792902468bd277 Mon Sep 17 00:00:00 2001 From: Fred KISSIE Date: Thu, 14 May 2026 22:15:43 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20delete=20label?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- messages/en-US.json | 5 +++++ src/components/OrgLabelsTable.tsx | 35 ++++++++++++++++++++++++------- 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/messages/en-US.json b/messages/en-US.json index 07482bf80..e42662968 100644 --- a/messages/en-US.json +++ b/messages/en-US.json @@ -255,6 +255,11 @@ "resourceGoTo": "Go to Resource", "resourceDelete": "Delete Resource", "resourceDeleteConfirm": "Confirm Delete Resource", + "labelDelete": "Delete Label", + "labelDeleteConfirm": "Confirm Delete Label", + "labelErrorDelete": "Failed to delete label", + "labelMessageRemove": "This action is permanent. All sites, resources, and clients tagged with this label will be untagged.", + "labelQuestionRemove": "Are you sure you want to remove the label from the organization?", "visibility": "Visibility", "enabled": "Enabled", "disabled": "Disabled", diff --git a/src/components/OrgLabelsTable.tsx b/src/components/OrgLabelsTable.tsx index bc06b9101..0c6349a61 100644 --- a/src/components/OrgLabelsTable.tsx +++ b/src/components/OrgLabelsTable.tsx @@ -141,7 +141,12 @@ export default function OrgLabelsTable({ {t("edit")} - {}}> + { + setSelectedLabel(row.original); + setIsDeleteModalOpen(true); + }} + > {t("delete")} @@ -154,8 +159,22 @@ export default function OrgLabelsTable({ [searchParams, t] ); - async function deleteLabel() { - // ... + function deleteLabel(label: LabelRow) { + startRefreshTransition(async () => { + await api + .delete(`/org/${orgId}/label/${label.labelId}`) + .catch((e) => { + toast({ + variant: "destructive", + title: t("labelErrorDelete"), + description: formatAxiosError(e, t("labelErrorDelete")) + }); + }) + .then(() => { + router.refresh(); + setIsDeleteModalOpen(false); + }); + }); } return ( @@ -169,14 +188,14 @@ export default function OrgLabelsTable({ }} dialog={
-

{t("resourceQuestionRemove")}

-

{t("resourceMessageRemove")}

+

{t("labelQuestionRemove")}

+

{t("labelMessageRemove")}

} - buttonText={t("resourceDeleteConfirm")} - onConfirm={async () => {}} + buttonText={t("labelDeleteConfirm")} + onConfirm={async () => deleteLabel(selectedLabel)} string={selectedLabel.name} - title={t("resourceDelete")} + title={t("labelDelete")} /> )}