diff --git a/frontend/src/components/context-vars/index.tsx b/frontend/src/components/context-vars/index.tsx index 68a095f1..c6458f07 100644 --- a/frontend/src/components/context-vars/index.tsx +++ b/frontend/src/components/context-vars/index.tsx @@ -9,7 +9,7 @@ import { faAsterisk } from "@fortawesome/free-solid-svg-icons"; import AddIcon from "@mui/icons-material/Add"; -import { Button, Grid, Paper } from "@mui/material"; +import { Button, Grid, Paper, Switch } from "@mui/material"; import { GridColDef } from "@mui/x-data-grid"; import React from "react"; import { useTranslation } from "react-i18next"; @@ -24,6 +24,7 @@ import { renderHeader } from "@/app-components/tables/columns/renderHeader"; import { DataGrid } from "@/app-components/tables/DataGrid"; import { useDelete } from "@/hooks/crud/useDelete"; import { useFind } from "@/hooks/crud/useFind"; +import { useUpdate } from "@/hooks/crud/useUpdate"; import { getDisplayDialogs, useDialog } from "@/hooks/useDialog"; import { useHasPermission } from "@/hooks/useHasPermission"; import { useSearch } from "@/hooks/useSearch"; @@ -52,6 +53,14 @@ export const ContextVars = () => { params: searchPayload, }, ); + const { mutateAsync: updateContextVar } = useUpdate(EntityType.CONTEXT_VAR, { + onError: () => { + toast.error(t("message.internal_server_error")); + }, + onSuccess() { + toast.success(t("message.success_save")); + }, + }); const { mutateAsync: deleteContextVar } = useDelete(EntityType.CONTEXT_VAR, { onError: () => { toast.error(t("message.internal_server_error")); @@ -87,6 +96,27 @@ export const ContextVars = () => { renderHeader, headerAlign: "left", }, + { + maxWidth: 120, + field: "permanent", + headerName: t("label.permanent"), + disableColumnMenu: true, + renderHeader, + headerAlign: "left", + renderCell: (params) => ( + { + updateContextVar({ + id: params.row.id, + params: { permanent: !params.value }, + }); + }} + /> + ), + }, { maxWidth: 140, field: "createdAt", diff --git a/frontend/src/i18n/en/translation.json b/frontend/src/i18n/en/translation.json index f5a0dd08..e7d7855e 100644 --- a/frontend/src/i18n/en/translation.json +++ b/frontend/src/i18n/en/translation.json @@ -288,6 +288,7 @@ "assign_labels": "Assign labels", "replacement_tokens": "Replacement Tokens", "built_in": "Built-in", + "permanent": "Permanent", "assign_to": "Takeover By", "assigned_to": "Assigned To", "user_first_name": "First Name", diff --git a/frontend/src/i18n/fr/translation.json b/frontend/src/i18n/fr/translation.json index 180dddb6..2b012a34 100644 --- a/frontend/src/i18n/fr/translation.json +++ b/frontend/src/i18n/fr/translation.json @@ -289,6 +289,7 @@ "assign_labels": "Affecter des étiquettes", "replacement_tokens": "Jetons de remplacement", "built_in": "Intégré", + "permanent": "Permanent", "assign_to": "Assigner à", "assigned_to": "Assigné(e) à", "user_first_name": "Prénom", diff --git a/frontend/src/types/context-var.types.ts b/frontend/src/types/context-var.types.ts index fa388266..35b48a71 100644 --- a/frontend/src/types/context-var.types.ts +++ b/frontend/src/types/context-var.types.ts @@ -14,6 +14,7 @@ import { IBaseSchema, IFormat, OmitPopulate } from "./base.types"; export interface IContextVarAttributes { name: string; label: string; + permanent: boolean; } export interface IContextVarStub @@ -21,6 +22,7 @@ export interface IContextVarStub OmitPopulate { name: string; label: string; + permanent: boolean; } export interface IContextVar extends IContextVarStub, IFormat {}