Files
jiang13-bbs/frontend/app/admin/settings/ModuleSettings.tsx

28 lines
916 B
TypeScript

"use client";
import { useState } from "react";
import ConfirmDialog from "@/components/ConfirmDialog";
import useUnsavedGuard from "@/hooks/useUnsavedGuard";
import OperationsPanel, { type ModuleName } from "./OperationsPanel";
/** 运营模块页:保存单元离开保护 */
export default function ModuleSettings({ name }: { name: Exclude<ModuleName, "security"> }) {
const [dirty, setDirty] = useState(false);
const leave = useUnsavedGuard(dirty);
return (
<div className="admin-settings-stack">
<OperationsPanel name={name} onDirtyChange={setDirty} />
<ConfirmDialog
open={leave.leaveOpen}
title="有未保存的修改"
message="离开后,当前保存单元里尚未写入的修改会丢失。确定离开?"
confirmLabel="离开"
danger
onCancel={leave.cancelLeave}
onConfirm={leave.confirmLeave}
/>
</div>
);
}