ERP-node/frontend/components/pop/PopSettingsModal.tsx

136 lines
4.7 KiB
TypeScript

"use client";
import React, { useState, useEffect } from "react";
import { X } from "lucide-react";
interface PopSettingsModalProps {
isOpen: boolean;
selectionMode: "single" | "multi";
completionAction: "close" | "stay";
onSave: (selectionMode: "single" | "multi", completionAction: "close" | "stay") => void;
onClose: () => void;
}
export function PopSettingsModal({
isOpen,
selectionMode,
completionAction,
onSave,
onClose,
}: PopSettingsModalProps) {
const [tempSelectionMode, setTempSelectionMode] = useState(selectionMode);
const [tempCompletionAction, setTempCompletionAction] = useState(completionAction);
useEffect(() => {
setTempSelectionMode(selectionMode);
setTempCompletionAction(completionAction);
}, [selectionMode, completionAction, isOpen]);
const handleSave = () => {
onSave(tempSelectionMode, tempCompletionAction);
};
if (!isOpen) return null;
return (
<div className="pop-modal-overlay active" onClick={(e) => e.target === e.currentTarget && onClose()}>
<div className="pop-modal">
<div className="pop-modal-header">
<h2 className="pop-modal-title"></h2>
<button className="pop-modal-close" onClick={onClose}>
<X size={16} />
</button>
</div>
<div className="pop-modal-body">
{/* 선택 모드 */}
<div className="pop-settings-section">
<h3 className="pop-settings-title">/ </h3>
<div className="pop-mode-options">
<label className="pop-mode-option">
<input
type="radio"
name="selectionMode"
value="single"
checked={tempSelectionMode === "single"}
onChange={() => setTempSelectionMode("single")}
/>
<div className="pop-mode-info">
<div className="pop-mode-name"> </div>
<div className="pop-mode-desc">
.
</div>
</div>
</label>
<label className="pop-mode-option">
<input
type="radio"
name="selectionMode"
value="multi"
checked={tempSelectionMode === "multi"}
onChange={() => setTempSelectionMode("multi")}
/>
<div className="pop-mode-info">
<div className="pop-mode-name"> </div>
<div className="pop-mode-desc">
/ .
</div>
</div>
</label>
</div>
</div>
<div className="pop-settings-divider" />
{/* 완료 후 동작 */}
<div className="pop-settings-section">
<h3 className="pop-settings-title"> </h3>
<div className="pop-mode-options">
<label className="pop-mode-option">
<input
type="radio"
name="completionAction"
value="close"
checked={tempCompletionAction === "close"}
onChange={() => setTempCompletionAction("close")}
/>
<div className="pop-mode-info">
<div className="pop-mode-name"> </div>
<div className="pop-mode-desc">
.
</div>
</div>
</label>
<label className="pop-mode-option">
<input
type="radio"
name="completionAction"
value="stay"
checked={tempCompletionAction === "stay"}
onChange={() => setTempCompletionAction("stay")}
/>
<div className="pop-mode-info">
<div className="pop-mode-name"> </div>
<div className="pop-mode-desc">
.
</div>
</div>
</label>
</div>
</div>
</div>
<div className="pop-modal-footer">
<button className="pop-btn pop-btn-outline" style={{ flex: 1 }} onClick={onClose}>
</button>
<button className="pop-btn pop-btn-primary" style={{ flex: 1 }} onClick={handleSave}>
</button>
</div>
</div>
</div>
);
}