"use client"; import React from "react"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Checkbox } from "@/components/ui/checkbox"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { DateInputConfig } from "./types"; import { AutoGenerationType, AutoGenerationConfig } from "@/types/screen"; import { AutoGenerationUtils } from "@/lib/utils/autoGeneration"; export interface DateInputConfigPanelProps { config: DateInputConfig; onChange: (config: Partial) => void; } /** * DateInput 설정 패널 * 컴포넌트의 설정값들을 편집할 수 있는 UI 제공 */ export const DateInputConfigPanel: React.FC = ({ config, onChange }) => { const handleChange = (key: keyof DateInputConfig, value: any) => { console.log("🔧 DateInputConfigPanel.handleChange:", { key, value }); onChange({ [key]: value }); }; return (
date-input 설정
{/* date 관련 설정 */}
handleChange("placeholder", e.target.value)} />
{/* 공통 설정 */}
handleChange("disabled", checked)} />
handleChange("required", checked)} />
handleChange("readonly", checked)} />
{/* 숨김 기능 */}
handleChange("hidden", checked)} />

편집기에서는 연하게 보이지만 실제 화면에서는 숨겨집니다

{/* 자동생성 기능 */}
{ const newAutoGeneration: AutoGenerationConfig = { ...config.autoGeneration, enabled: checked as boolean, type: config.autoGeneration?.type || "current_time", }; handleChange("autoGeneration", newAutoGeneration); }} />
{config.autoGeneration?.enabled && ( <>

{AutoGenerationUtils.getTypeDescription(config.autoGeneration?.type || "current_time")}

{config.autoGeneration?.type === "current_time" && (
)} {(config.autoGeneration?.type === "sequence" || config.autoGeneration?.type === "random_string" || config.autoGeneration?.type === "random_number") && ( <> {config.autoGeneration?.type === "sequence" && (
{ const newAutoGeneration: AutoGenerationConfig = { ...config.autoGeneration!, options: { ...config.autoGeneration?.options, startValue: parseInt(e.target.value) || 1, }, }; handleChange("autoGeneration", newAutoGeneration); }} />
)} {(config.autoGeneration?.type === "random_string" || config.autoGeneration?.type === "random_number") && (
{ const newAutoGeneration: AutoGenerationConfig = { ...config.autoGeneration!, options: { ...config.autoGeneration?.options, length: parseInt(e.target.value) || 8, }, }; handleChange("autoGeneration", newAutoGeneration); }} />
)}
{ const newAutoGeneration: AutoGenerationConfig = { ...config.autoGeneration!, options: { ...config.autoGeneration?.options, prefix: e.target.value, }, }; handleChange("autoGeneration", newAutoGeneration); }} />
{ const newAutoGeneration: AutoGenerationConfig = { ...config.autoGeneration!, options: { ...config.autoGeneration?.options, suffix: e.target.value, }, }; handleChange("autoGeneration", newAutoGeneration); }} />
)}
미리보기: {AutoGenerationUtils.generatePreviewValue(config.autoGeneration)}
)}
); };