feat: Confirm before deletion

#703
This commit is contained in:
MystiPanda
2024-03-21 11:39:01 +08:00
parent ae46332e42
commit f435762b88
4 changed files with 121 additions and 7 deletions

View File

@@ -17,6 +17,7 @@ import { Notice } from "@/components/base";
import { EditorViewer } from "./editor-viewer";
import { ProfileBox } from "./profile-box";
import { LogViewer } from "./log-viewer";
import { ConfirmViewer } from "./confirm-viewer";
interface Props {
selected: boolean;
@@ -51,6 +52,7 @@ export const ProfileMore = (props: Props) => {
const [anchorEl, setAnchorEl] = useState<any>(null);
const [position, setPosition] = useState({ left: 0, top: 0 });
const [fileOpen, setFileOpen] = useState(false);
const [confirmOpen, setConfirmOpen] = useState(false);
const [logOpen, setLogOpen] = useState(false);
const onEditInfo = () => {
@@ -87,7 +89,12 @@ export const ProfileMore = (props: Props) => {
{ label: "Open File", handler: onOpenFile },
{ label: "To Top", show: showMove, handler: fnWrapper(onMoveTop) },
{ label: "To End", show: showMove, handler: fnWrapper(onMoveEnd) },
{ label: "Delete", handler: fnWrapper(onDelete) },
{
label: "Delete",
handler: () => {
setConfirmOpen(true);
},
},
];
const disableMenu = [
@@ -95,7 +102,12 @@ export const ProfileMore = (props: Props) => {
{ label: "Edit Info", handler: onEditInfo },
{ label: "Edit File", handler: onEditFile },
{ label: "Open File", handler: onOpenFile },
{ label: "Delete", handler: fnWrapper(onDelete) },
{
label: "Delete",
handler: () => {
setConfirmOpen(true);
},
},
];
const boxStyle = {
@@ -200,7 +212,17 @@ export const ProfileMore = (props: Props) => {
<MenuItem
key={item.label}
onClick={item.handler}
sx={{ minWidth: 120 }}
sx={[
{ minWidth: 120 },
(theme) => {
return {
color:
item.label === "Delete"
? theme.palette.error.main
: undefined,
};
},
]}
dense
>
{t(item.label)}
@@ -214,7 +236,16 @@ export const ProfileMore = (props: Props) => {
mode={type === "merge" ? "yaml" : "javascript"}
onClose={() => setFileOpen(false)}
/>
<ConfirmViewer
title="Confirm deletion"
message="This operation is not reversible"
open={confirmOpen}
onClose={() => setConfirmOpen(false)}
onConfirm={() => {
onDelete();
setConfirmOpen(false);
}}
/>
{selected && (
<LogViewer
open={logOpen}