28 lines
916 B
TypeScript
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>
|
|
);
|
|
}
|