mirror of
https://github.com/woodchen-ink/certimate.git
synced 2025-07-18 17:31:55 +08:00
fix conflict
This commit is contained in:
commit
9ba79f996f
File diff suppressed because one or more lines are too long
2
ui/dist/index.html
vendored
2
ui/dist/index.html
vendored
@ -5,7 +5,7 @@
|
|||||||
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<title>Certimate - Your Trusted SSL Automation Partner</title>
|
<title>Certimate - Your Trusted SSL Automation Partner</title>
|
||||||
<script type="module" crossorigin src="/assets/index--un-5Tw_.js"></script>
|
<script type="module" crossorigin src="/assets/index-DjCbudz9.js"></script>
|
||||||
<link rel="stylesheet" crossorigin href="/assets/index-I--T0qY3.css">
|
<link rel="stylesheet" crossorigin href="/assets/index-I--T0qY3.css">
|
||||||
</head>
|
</head>
|
||||||
<body class="bg-background">
|
<body class="bg-background">
|
||||||
|
@ -24,9 +24,11 @@ import { PbErrorData } from "@/domain/base";
|
|||||||
|
|
||||||
const AccessAliyunForm = ({
|
const AccessAliyunForm = ({
|
||||||
data,
|
data,
|
||||||
|
op,
|
||||||
onAfterReq,
|
onAfterReq,
|
||||||
}: {
|
}: {
|
||||||
data?: Access;
|
data?: Access;
|
||||||
|
op: "add" | "edit" | "copy";
|
||||||
onAfterReq: () => void;
|
onAfterReq: () => void;
|
||||||
}) => {
|
}) => {
|
||||||
const { addAccess, updateAccess } = useConfig();
|
const { addAccess, updateAccess } = useConfig();
|
||||||
@ -69,6 +71,7 @@ const AccessAliyunForm = ({
|
|||||||
};
|
};
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
req.id = op == "copy" ? "" : req.id;
|
||||||
const rs = await save(req);
|
const rs = await save(req);
|
||||||
|
|
||||||
onAfterReq();
|
onAfterReq();
|
||||||
@ -76,10 +79,11 @@ const AccessAliyunForm = ({
|
|||||||
req.id = rs.id;
|
req.id = rs.id;
|
||||||
req.created = rs.created;
|
req.created = rs.created;
|
||||||
req.updated = rs.updated;
|
req.updated = rs.updated;
|
||||||
if (data.id) {
|
if (data.id && op == "edit") {
|
||||||
updateAccess(req);
|
updateAccess(req);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
console.log(req);
|
||||||
addAccess(req);
|
addAccess(req);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
const err = e as ClientResponseError;
|
const err = e as ClientResponseError;
|
||||||
|
@ -23,9 +23,11 @@ import { PbErrorData } from "@/domain/base";
|
|||||||
|
|
||||||
const AccessCloudflareForm = ({
|
const AccessCloudflareForm = ({
|
||||||
data,
|
data,
|
||||||
|
op,
|
||||||
onAfterReq,
|
onAfterReq,
|
||||||
}: {
|
}: {
|
||||||
data?: Access;
|
data?: Access;
|
||||||
|
op: "add" | "edit" | "copy";
|
||||||
onAfterReq: () => void;
|
onAfterReq: () => void;
|
||||||
}) => {
|
}) => {
|
||||||
const { addAccess, updateAccess } = useConfig();
|
const { addAccess, updateAccess } = useConfig();
|
||||||
@ -65,6 +67,7 @@ const AccessCloudflareForm = ({
|
|||||||
};
|
};
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
req.id = op == "copy" ? "" : req.id;
|
||||||
const rs = await save(req);
|
const rs = await save(req);
|
||||||
|
|
||||||
onAfterReq();
|
onAfterReq();
|
||||||
@ -72,7 +75,7 @@ const AccessCloudflareForm = ({
|
|||||||
req.id = rs.id;
|
req.id = rs.id;
|
||||||
req.created = rs.created;
|
req.created = rs.created;
|
||||||
req.updated = rs.updated;
|
req.updated = rs.updated;
|
||||||
if (data.id) {
|
if (data.id && op == "edit") {
|
||||||
updateAccess(req);
|
updateAccess(req);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -36,7 +36,7 @@ import AccessGodaddyFrom from "./AccessGodaddyForm";
|
|||||||
import AccessLocalForm from "./AccessLocalForm";
|
import AccessLocalForm from "./AccessLocalForm";
|
||||||
|
|
||||||
type TargetConfigEditProps = {
|
type TargetConfigEditProps = {
|
||||||
op: "add" | "edit";
|
op: "add" | "edit" | "copy";
|
||||||
className?: string;
|
className?: string;
|
||||||
trigger: React.ReactNode;
|
trigger: React.ReactNode;
|
||||||
data?: Access;
|
data?: Access;
|
||||||
@ -60,6 +60,7 @@ export function AccessEdit({
|
|||||||
form = (
|
form = (
|
||||||
<AccessTencentForm
|
<AccessTencentForm
|
||||||
data={data}
|
data={data}
|
||||||
|
op={op}
|
||||||
onAfterReq={() => {
|
onAfterReq={() => {
|
||||||
setOpen(false);
|
setOpen(false);
|
||||||
}}
|
}}
|
||||||
@ -70,6 +71,7 @@ export function AccessEdit({
|
|||||||
form = (
|
form = (
|
||||||
<AccessAliyunForm
|
<AccessAliyunForm
|
||||||
data={data}
|
data={data}
|
||||||
|
op={op}
|
||||||
onAfterReq={() => {
|
onAfterReq={() => {
|
||||||
setOpen(false);
|
setOpen(false);
|
||||||
}}
|
}}
|
||||||
@ -80,6 +82,7 @@ export function AccessEdit({
|
|||||||
form = (
|
form = (
|
||||||
<AccessSSHForm
|
<AccessSSHForm
|
||||||
data={data}
|
data={data}
|
||||||
|
op={op}
|
||||||
onAfterReq={() => {
|
onAfterReq={() => {
|
||||||
setOpen(false);
|
setOpen(false);
|
||||||
}}
|
}}
|
||||||
@ -90,6 +93,7 @@ export function AccessEdit({
|
|||||||
form = (
|
form = (
|
||||||
<WebhookForm
|
<WebhookForm
|
||||||
data={data}
|
data={data}
|
||||||
|
op={op}
|
||||||
onAfterReq={() => {
|
onAfterReq={() => {
|
||||||
setOpen(false);
|
setOpen(false);
|
||||||
}}
|
}}
|
||||||
@ -100,6 +104,7 @@ export function AccessEdit({
|
|||||||
form = (
|
form = (
|
||||||
<AccessCloudflareForm
|
<AccessCloudflareForm
|
||||||
data={data}
|
data={data}
|
||||||
|
op={op}
|
||||||
onAfterReq={() => {
|
onAfterReq={() => {
|
||||||
setOpen(false);
|
setOpen(false);
|
||||||
}}
|
}}
|
||||||
@ -110,6 +115,7 @@ export function AccessEdit({
|
|||||||
form = (
|
form = (
|
||||||
<AccessQiniuForm
|
<AccessQiniuForm
|
||||||
data={data}
|
data={data}
|
||||||
|
op={op}
|
||||||
onAfterReq={() => {
|
onAfterReq={() => {
|
||||||
setOpen(false);
|
setOpen(false);
|
||||||
}}
|
}}
|
||||||
@ -120,6 +126,7 @@ export function AccessEdit({
|
|||||||
form = (
|
form = (
|
||||||
<AccessNamesiloForm
|
<AccessNamesiloForm
|
||||||
data={data}
|
data={data}
|
||||||
|
op={op}
|
||||||
onAfterReq={() => {
|
onAfterReq={() => {
|
||||||
setOpen(false);
|
setOpen(false);
|
||||||
}}
|
}}
|
||||||
@ -130,6 +137,7 @@ export function AccessEdit({
|
|||||||
form = (
|
form = (
|
||||||
<AccessGodaddyFrom
|
<AccessGodaddyFrom
|
||||||
data={data}
|
data={data}
|
||||||
|
op={op}
|
||||||
onAfterReq={() => {
|
onAfterReq={() => {
|
||||||
setOpen(false);
|
setOpen(false);
|
||||||
}}
|
}}
|
||||||
@ -140,6 +148,7 @@ export function AccessEdit({
|
|||||||
form = (
|
form = (
|
||||||
<AccessLocalForm
|
<AccessLocalForm
|
||||||
data={data}
|
data={data}
|
||||||
|
op={op}
|
||||||
onAfterReq={() => {
|
onAfterReq={() => {
|
||||||
setOpen(false);
|
setOpen(false);
|
||||||
}}
|
}}
|
||||||
@ -159,7 +168,7 @@ export function AccessEdit({
|
|||||||
</DialogTrigger>
|
</DialogTrigger>
|
||||||
<DialogContent className="sm:max-w-[600px] w-full dark:text-stone-200">
|
<DialogContent className="sm:max-w-[600px] w-full dark:text-stone-200">
|
||||||
<DialogHeader>
|
<DialogHeader>
|
||||||
<DialogTitle>{op == "add" ? t('access.add') : t('access.edit')}</DialogTitle>
|
<DialogTitle>{op == "add" ? t('access.add') : op == "edit" ? t('access.edit') : t('access.copy')}</DialogTitle>
|
||||||
</DialogHeader>
|
</DialogHeader>
|
||||||
<ScrollArea className="max-h-[80vh]">
|
<ScrollArea className="max-h-[80vh]">
|
||||||
<div className="container py-3">
|
<div className="container py-3">
|
||||||
|
@ -28,9 +28,11 @@ import { PbErrorData } from "@/domain/base";
|
|||||||
|
|
||||||
const AccessGodaddyFrom = ({
|
const AccessGodaddyFrom = ({
|
||||||
data,
|
data,
|
||||||
|
op,
|
||||||
onAfterReq,
|
onAfterReq,
|
||||||
}: {
|
}: {
|
||||||
data?: Access;
|
data?: Access;
|
||||||
|
op: "add" | "edit" | "copy";
|
||||||
onAfterReq: () => void;
|
onAfterReq: () => void;
|
||||||
}) => {
|
}) => {
|
||||||
const { addAccess, updateAccess } = useConfig();
|
const { addAccess, updateAccess } = useConfig();
|
||||||
@ -74,6 +76,7 @@ const AccessGodaddyFrom = ({
|
|||||||
};
|
};
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
req.id = op == "copy" ? "" : req.id;
|
||||||
const rs = await save(req);
|
const rs = await save(req);
|
||||||
|
|
||||||
onAfterReq();
|
onAfterReq();
|
||||||
@ -81,7 +84,7 @@ const AccessGodaddyFrom = ({
|
|||||||
req.id = rs.id;
|
req.id = rs.id;
|
||||||
req.created = rs.created;
|
req.created = rs.created;
|
||||||
req.updated = rs.updated;
|
req.updated = rs.updated;
|
||||||
if (data.id) {
|
if (data.id && op == "edit") {
|
||||||
updateAccess(req);
|
updateAccess(req);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -27,9 +27,11 @@ import { PbErrorData } from "@/domain/base";
|
|||||||
|
|
||||||
const AccessLocalForm = ({
|
const AccessLocalForm = ({
|
||||||
data,
|
data,
|
||||||
|
op,
|
||||||
onAfterReq,
|
onAfterReq,
|
||||||
}: {
|
}: {
|
||||||
data?: Access;
|
data?: Access;
|
||||||
|
op: "add" | "edit" | "copy";
|
||||||
onAfterReq: () => void;
|
onAfterReq: () => void;
|
||||||
}) => {
|
}) => {
|
||||||
const { addAccess, updateAccess, reloadAccessGroups } = useConfig();
|
const { addAccess, updateAccess, reloadAccessGroups } = useConfig();
|
||||||
@ -79,6 +81,7 @@ const AccessLocalForm = ({
|
|||||||
};
|
};
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
req.id = op == "copy" ? "" : req.id;
|
||||||
const rs = await save(req);
|
const rs = await save(req);
|
||||||
|
|
||||||
onAfterReq();
|
onAfterReq();
|
||||||
@ -86,7 +89,7 @@ const AccessLocalForm = ({
|
|||||||
req.id = rs.id;
|
req.id = rs.id;
|
||||||
req.created = rs.created;
|
req.created = rs.created;
|
||||||
req.updated = rs.updated;
|
req.updated = rs.updated;
|
||||||
if (data.id) {
|
if (data.id && op == "edit") {
|
||||||
updateAccess(req);
|
updateAccess(req);
|
||||||
} else {
|
} else {
|
||||||
addAccess(req);
|
addAccess(req);
|
||||||
|
@ -23,9 +23,11 @@ import { PbErrorData } from "@/domain/base";
|
|||||||
|
|
||||||
const AccessNamesiloForm = ({
|
const AccessNamesiloForm = ({
|
||||||
data,
|
data,
|
||||||
|
op,
|
||||||
onAfterReq,
|
onAfterReq,
|
||||||
}: {
|
}: {
|
||||||
data?: Access;
|
data?: Access;
|
||||||
|
op: "add" | "edit" | "copy";
|
||||||
onAfterReq: () => void;
|
onAfterReq: () => void;
|
||||||
}) => {
|
}) => {
|
||||||
const { addAccess, updateAccess } = useConfig();
|
const { addAccess, updateAccess } = useConfig();
|
||||||
@ -64,6 +66,7 @@ const AccessNamesiloForm = ({
|
|||||||
};
|
};
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
req.id = op == "copy" ? "" : req.id;
|
||||||
const rs = await save(req);
|
const rs = await save(req);
|
||||||
|
|
||||||
onAfterReq();
|
onAfterReq();
|
||||||
@ -71,7 +74,7 @@ const AccessNamesiloForm = ({
|
|||||||
req.id = rs.id;
|
req.id = rs.id;
|
||||||
req.created = rs.created;
|
req.created = rs.created;
|
||||||
req.updated = rs.updated;
|
req.updated = rs.updated;
|
||||||
if (data.id) {
|
if (data.id && op == "edit") {
|
||||||
updateAccess(req);
|
updateAccess(req);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -24,9 +24,11 @@ import { PbErrorData } from "@/domain/base";
|
|||||||
|
|
||||||
const AccessQiniuForm = ({
|
const AccessQiniuForm = ({
|
||||||
data,
|
data,
|
||||||
|
op,
|
||||||
onAfterReq,
|
onAfterReq,
|
||||||
}: {
|
}: {
|
||||||
data?: Access;
|
data?: Access;
|
||||||
|
op: "add" | "edit" | "copy";
|
||||||
onAfterReq: () => void;
|
onAfterReq: () => void;
|
||||||
}) => {
|
}) => {
|
||||||
const { addAccess, updateAccess } = useConfig();
|
const { addAccess, updateAccess } = useConfig();
|
||||||
@ -69,6 +71,7 @@ const AccessQiniuForm = ({
|
|||||||
};
|
};
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
req.id = op == "copy" ? "" : req.id;
|
||||||
const rs = await save(req);
|
const rs = await save(req);
|
||||||
|
|
||||||
onAfterReq();
|
onAfterReq();
|
||||||
@ -76,7 +79,7 @@ const AccessQiniuForm = ({
|
|||||||
req.id = rs.id;
|
req.id = rs.id;
|
||||||
req.created = rs.created;
|
req.created = rs.created;
|
||||||
req.updated = rs.updated;
|
req.updated = rs.updated;
|
||||||
if (data.id) {
|
if (data.id && op == "edit") {
|
||||||
updateAccess(req);
|
updateAccess(req);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -39,9 +39,11 @@ import { updateById } from "@/repository/access_group";
|
|||||||
|
|
||||||
const AccessSSHForm = ({
|
const AccessSSHForm = ({
|
||||||
data,
|
data,
|
||||||
|
op,
|
||||||
onAfterReq,
|
onAfterReq,
|
||||||
}: {
|
}: {
|
||||||
data?: Access;
|
data?: Access;
|
||||||
|
op: "add" | "edit" | "copy";
|
||||||
onAfterReq: () => void;
|
onAfterReq: () => void;
|
||||||
}) => {
|
}) => {
|
||||||
const {
|
const {
|
||||||
@ -145,6 +147,7 @@ const AccessSSHForm = ({
|
|||||||
};
|
};
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
req.id = op == "copy" ? "" : req.id;
|
||||||
const rs = await save(req);
|
const rs = await save(req);
|
||||||
|
|
||||||
onAfterReq();
|
onAfterReq();
|
||||||
@ -152,7 +155,7 @@ const AccessSSHForm = ({
|
|||||||
req.id = rs.id;
|
req.id = rs.id;
|
||||||
req.created = rs.created;
|
req.created = rs.created;
|
||||||
req.updated = rs.updated;
|
req.updated = rs.updated;
|
||||||
if (data.id) {
|
if (data.id && op == "edit") {
|
||||||
updateAccess(req);
|
updateAccess(req);
|
||||||
} else {
|
} else {
|
||||||
addAccess(req);
|
addAccess(req);
|
||||||
|
@ -23,9 +23,11 @@ import { PbErrorData } from "@/domain/base";
|
|||||||
|
|
||||||
const AccessTencentForm = ({
|
const AccessTencentForm = ({
|
||||||
data,
|
data,
|
||||||
|
op,
|
||||||
onAfterReq,
|
onAfterReq,
|
||||||
}: {
|
}: {
|
||||||
data?: Access;
|
data?: Access;
|
||||||
|
op: "add" | "edit" | "copy";
|
||||||
onAfterReq: () => void;
|
onAfterReq: () => void;
|
||||||
}) => {
|
}) => {
|
||||||
const { addAccess, updateAccess } = useConfig();
|
const { addAccess, updateAccess } = useConfig();
|
||||||
@ -68,6 +70,7 @@ const AccessTencentForm = ({
|
|||||||
};
|
};
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
req.id = op == "copy" ? "" : req.id;
|
||||||
const rs = await save(req);
|
const rs = await save(req);
|
||||||
|
|
||||||
onAfterReq();
|
onAfterReq();
|
||||||
@ -75,7 +78,7 @@ const AccessTencentForm = ({
|
|||||||
req.id = rs.id;
|
req.id = rs.id;
|
||||||
req.created = rs.created;
|
req.created = rs.created;
|
||||||
req.updated = rs.updated;
|
req.updated = rs.updated;
|
||||||
if (data.id) {
|
if (data.id && op == "edit") {
|
||||||
updateAccess(req);
|
updateAccess(req);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -23,9 +23,11 @@ import { PbErrorData } from "@/domain/base";
|
|||||||
|
|
||||||
const WebhookForm = ({
|
const WebhookForm = ({
|
||||||
data,
|
data,
|
||||||
|
op,
|
||||||
onAfterReq,
|
onAfterReq,
|
||||||
}: {
|
}: {
|
||||||
data?: Access;
|
data?: Access;
|
||||||
|
op: "add" | "edit" | "copy";
|
||||||
onAfterReq: () => void;
|
onAfterReq: () => void;
|
||||||
}) => {
|
}) => {
|
||||||
const { addAccess, updateAccess } = useConfig();
|
const { addAccess, updateAccess } = useConfig();
|
||||||
@ -64,6 +66,7 @@ const WebhookForm = ({
|
|||||||
};
|
};
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
req.id = op == "copy" ? "" : req.id;
|
||||||
const rs = await save(req);
|
const rs = await save(req);
|
||||||
|
|
||||||
onAfterReq();
|
onAfterReq();
|
||||||
@ -71,7 +74,7 @@ const WebhookForm = ({
|
|||||||
req.id = rs.id;
|
req.id = rs.id;
|
||||||
req.created = rs.created;
|
req.created = rs.created;
|
||||||
req.updated = rs.updated;
|
req.updated = rs.updated;
|
||||||
if (data.id) {
|
if (data.id && op == "edit") {
|
||||||
updateAccess(req);
|
updateAccess(req);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
"cancel": "Cancel",
|
"cancel": "Cancel",
|
||||||
"confirm": "Confirm",
|
"confirm": "Confirm",
|
||||||
"edit": "Edit",
|
"edit": "Edit",
|
||||||
|
"copy": "Copy",
|
||||||
"succeed": "Successful",
|
"succeed": "Successful",
|
||||||
"add": "Add",
|
"add": "Add",
|
||||||
"document": "Document",
|
"document": "Document",
|
||||||
@ -154,6 +155,7 @@
|
|||||||
"access.management": "Authorization Management",
|
"access.management": "Authorization Management",
|
||||||
"access.add": "Add Authorization",
|
"access.add": "Add Authorization",
|
||||||
"access.edit": "Edit Authorization",
|
"access.edit": "Edit Authorization",
|
||||||
|
"access.delete.confirm": "Are you sure you want to delete the deployment authorization?",
|
||||||
"access.all": "All Authorizations",
|
"access.all": "All Authorizations",
|
||||||
"access.list": "Authorization List",
|
"access.list": "Authorization List",
|
||||||
"access.type": "Provider",
|
"access.type": "Provider",
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
"cancel": "取消",
|
"cancel": "取消",
|
||||||
"confirm": "确认",
|
"confirm": "确认",
|
||||||
"edit": "编辑",
|
"edit": "编辑",
|
||||||
|
"copy": "复制",
|
||||||
"succeed": "成功",
|
"succeed": "成功",
|
||||||
"add": "新增",
|
"add": "新增",
|
||||||
"document": "文档",
|
"document": "文档",
|
||||||
@ -154,6 +155,8 @@
|
|||||||
"access.management": "授权管理",
|
"access.management": "授权管理",
|
||||||
"access.add": "添加授权",
|
"access.add": "添加授权",
|
||||||
"access.edit": "编辑授权",
|
"access.edit": "编辑授权",
|
||||||
|
"access.copy": "复制授权",
|
||||||
|
"access.delete.confirm": "确定要删除授权吗?",
|
||||||
"access.all": "所有授权",
|
"access.all": "所有授权",
|
||||||
"access.list": "授权列表",
|
"access.list": "授权列表",
|
||||||
"access.type": "服务商",
|
"access.type": "服务商",
|
||||||
|
@ -12,6 +12,15 @@ import { remove } from "@/repository/access";
|
|||||||
import { t } from "i18next";
|
import { t } from "i18next";
|
||||||
import { Key } from "lucide-react";
|
import { Key } from "lucide-react";
|
||||||
import { useLocation, useNavigate } from "react-router-dom";
|
import { useLocation, useNavigate } from "react-router-dom";
|
||||||
|
import {
|
||||||
|
AlertDialog,
|
||||||
|
AlertDialogAction,
|
||||||
|
AlertDialogCancel,
|
||||||
|
AlertDialogContent, AlertDialogDescription, AlertDialogFooter,
|
||||||
|
AlertDialogHeader,
|
||||||
|
AlertDialogTitle,
|
||||||
|
AlertDialogTrigger
|
||||||
|
} from "@/components/ui/alert-dialog.tsx";
|
||||||
|
|
||||||
const Access = () => {
|
const Access = () => {
|
||||||
const { config, deleteAccess } = useConfig();
|
const { config, deleteAccess } = useConfig();
|
||||||
@ -149,15 +158,45 @@ const Access = () => {
|
|||||||
data={access}
|
data={access}
|
||||||
/>
|
/>
|
||||||
<Separator orientation="vertical" className="h-4 mx-2" />
|
<Separator orientation="vertical" className="h-4 mx-2" />
|
||||||
<Button
|
<AccessEdit
|
||||||
variant={"link"}
|
trigger={
|
||||||
className="p-0"
|
<Button variant={"link"} className="p-0">
|
||||||
|
{t("copy")}
|
||||||
|
</Button>
|
||||||
|
}
|
||||||
|
op="copy"
|
||||||
|
data={access}
|
||||||
|
/>
|
||||||
|
<Separator orientation="vertical" className="h-4 mx-2" />
|
||||||
|
<AlertDialog>
|
||||||
|
<AlertDialogTrigger asChild>
|
||||||
|
<Button variant={"link"} size={"sm"}>
|
||||||
|
{t('delete')}
|
||||||
|
</Button>
|
||||||
|
</AlertDialogTrigger>
|
||||||
|
<AlertDialogContent>
|
||||||
|
<AlertDialogHeader>
|
||||||
|
<AlertDialogTitle className="dark:text-gray-200">
|
||||||
|
{t('access.group.delete')}
|
||||||
|
</AlertDialogTitle>
|
||||||
|
<AlertDialogDescription>
|
||||||
|
{t('access.delete.confirm')}
|
||||||
|
</AlertDialogDescription>
|
||||||
|
</AlertDialogHeader>
|
||||||
|
<AlertDialogFooter>
|
||||||
|
<AlertDialogCancel className="dark:text-gray-200">
|
||||||
|
{t('cancel')}
|
||||||
|
</AlertDialogCancel>
|
||||||
|
<AlertDialogAction
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
handleDelete(access);
|
handleDelete(access);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{t("delete")}
|
{t('confirm')}
|
||||||
</Button>
|
</AlertDialogAction>
|
||||||
|
</AlertDialogFooter>
|
||||||
|
</AlertDialogContent>
|
||||||
|
</AlertDialog>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
))}
|
))}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user