'use client'; import { useState } from 'react'; import { AnimatePresence, motion, Reorder } from 'framer-motion'; import ConfirmModal from './ConfirmModal'; import { CloseIcon, DragIcon, PlusIcon, SettingsIcon, TrashIcon } from './Icons'; export default function GroupManageModal({ groups, onClose, onSave }) { const [items, setItems] = useState(groups); const [deleteConfirm, setDeleteConfirm] = useState(null); // { id, name } const handleReorder = (newOrder) => { setItems(newOrder); }; const handleRename = (id, newName) => { const truncatedName = (newName || '').slice(0, 8); setItems(prev => prev.map(item => item.id === id ? { ...item, name: truncatedName } : item)); }; const handleDeleteClick = (id, name) => { const itemToDelete = items.find(it => it.id === id); const isNew = !groups.find(g => g.id === id); const isEmpty = itemToDelete && (!itemToDelete.codes || itemToDelete.codes.length === 0); if (isNew || isEmpty) { setItems(prev => prev.filter(item => item.id !== id)); } else { setDeleteConfirm({ id, name }); } }; const handleConfirmDelete = () => { if (deleteConfirm) { setItems(prev => prev.filter(item => item.id !== deleteConfirm.id)); setDeleteConfirm(null); } }; const handleAddRow = () => { const newGroup = { id: `group_${Date.now()}`, name: '', codes: [] }; setItems(prev => [...prev, newGroup]); }; const handleConfirm = () => { const hasEmpty = items.some(it => !it.name.trim()); if (hasEmpty) return; onSave(items); onClose(); }; const isAllValid = items.every(it => it.name.trim() !== ''); return ( e.stopPropagation()} >
管理分组
{items.length === 0 ? (
📂

暂无自定义分组

) : ( {items.map((item) => (
handleRename(item.id, e.target.value)} placeholder="请输入分组名称..." style={{ flex: 1, height: '36px', background: 'rgba(0,0,0,0.2)', border: !item.name.trim() ? '1px solid var(--danger)' : 'none' }} />
))}
)}
{!isAllValid && (
所有分组名称均不能为空
)}
{deleteConfirm && ( setDeleteConfirm(null)} /> )}
); }