import React, { useState, memo } from 'react'; import Modal from './ui/modal/Modal'; import './FolderModal.css'; import type { FolderData } from '../lib/4nk/models/FolderData'; interface FolderModalProps { folder?: FolderData; onSave?: (folderData: FolderData) => void; onCancel?: () => void; readOnly?: boolean; isOpen: boolean; onClose: () => void; } const defaultFolder: FolderData = { folderNumber: '', name: '', deedType: '', description: '', archived_description: '', status: 'active', created_at: new Date().toISOString(), updated_at: new Date().toISOString(), customers: [], documents: [], motes: [], stakeholders: [] }; function FolderModal({ folder = defaultFolder, onSave, onCancel, readOnly = false, isOpen, onClose }: FolderModalProps) { const [folderData, setFolderData] = useState(folder); const [currentCustomer, setCurrentCustomer] = useState(''); const [currentStakeholder, setCurrentStakeholder] = useState(''); const [currentMote, setCurrentMote] = useState(''); if (!isOpen) return null; const handleInputChange = (e: React.ChangeEvent) => { const { name, value } = e.target; setFolderData(prev => ({ ...prev, [name]: value })); }; const addCustomer = () => { if (currentCustomer.trim() && !folderData.customers.includes(currentCustomer.trim())) { setFolderData(prev => ({ ...prev, customers: [...prev.customers, currentCustomer.trim()] })); setCurrentCustomer(''); } }; const removeCustomer = (customer: string) => { setFolderData(prev => ({ ...prev, customers: prev.customers.filter(c => c !== customer) })); }; const addStakeholder = () => { if (currentStakeholder.trim() && !folderData.stakeholders.includes(currentStakeholder.trim())) { setFolderData(prev => ({ ...prev, stakeholders: [...prev.stakeholders, currentStakeholder.trim()] })); setCurrentStakeholder(''); } }; const removeStakeholder = (stakeholder: string) => { setFolderData(prev => ({ ...prev, stakeholders: prev.stakeholders.filter(s => s !== stakeholder) })); }; const addMote = () => { if (currentMote.trim() && !folderData.motes.includes(currentMote.trim())) { setFolderData(prev => ({ ...prev, motes: [...prev.motes, currentMote.trim()] })); setCurrentMote(''); } }; const removeMote = (mote: string) => { setFolderData(prev => ({ ...prev, motes: prev.motes.filter(m => m !== mote) })); }; const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); if (onSave) { onSave({ ...folderData, updated_at: new Date().toISOString() }); } }; const handleCancel = () => { if (onCancel) { onCancel(); } else { onClose(); } }; return (

Informations principales