'use client'; import { useState } from 'react'; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from '@/components/ui/dialog'; import { Button } from '@/components/ui/button'; import { Label } from '@/components/ui/label'; import { Input } from '@/components/ui/input'; import { toast } from 'sonner'; interface PathEditDialogProps { editingPathPageId: number | null; setEditingPathPageId: (id: number | null) => void; editingAbsolutePath: string; setEditingAbsolutePath: (path: string) => void; updateItemPage: (id: number, updates: any) => void; trackChange: (type: 'pages' | 'sections' | 'fields' | 'masterFields' | 'attributes' | 'sectionTemplates', id: string, action: 'add' | 'update', data: any, attributeType?: string) => void; } export function PathEditDialog({ editingPathPageId, setEditingPathPageId, editingAbsolutePath, setEditingAbsolutePath, updateItemPage, trackChange, }: PathEditDialogProps) { const [isSubmitted, setIsSubmitted] = useState(false); // 유효성 검사 const isPathEmpty = !editingAbsolutePath.trim(); const isPathInvalid = editingAbsolutePath.trim() && !editingAbsolutePath.startsWith('/'); const handleClose = () => { setEditingPathPageId(null); setEditingAbsolutePath(''); setIsSubmitted(false); }; return ( { if (!open) handleClose(); }}> 절대경로 수정 페이지의 절대경로를 수정합니다 (예: /제품관리/제품등록)
setEditingAbsolutePath(e.target.value)} placeholder="/제품관리/제품등록" className={isSubmitted && (isPathEmpty || isPathInvalid) ? 'border-red-500 focus-visible:ring-red-500' : ''} /> {isSubmitted && isPathEmpty && (

절대경로를 입력해주세요

)} {isSubmitted && isPathInvalid && (

절대경로는 슬래시(/)로 시작해야 합니다

)} {!isSubmitted || (!isPathEmpty && !isPathInvalid) ? (

슬래시(/)로 시작하며, 경로를 슬래시로 구분합니다

) : null}
); }