import React, { useState } from 'react'; import { Prompt } from '../../types'; import Card, { CardHeader, CardContent } from '../common/Card'; import Button from '../common/Button'; import PromptForm from './PromptForm'; import { exportPrompt, exportMultiplePrompts } from '../../utils/exportUtils'; interface PromptListProps { groupId: string; prompts: Prompt[]; onAddPrompt: (promptData: { title: string; content: string; tags: string[] }) => void; onUpdatePrompt: (promptId: string, promptData: { title: string; content: string; tags: string[] }) => void; onDeletePrompt: (promptId: string) => void; } const PromptList: React.FC = ({ groupId, prompts, onAddPrompt, onUpdatePrompt, onDeletePrompt }) => { const [showNewPromptForm, setShowNewPromptForm] = useState(false); const [editingPromptId, setEditingPromptId] = useState(null); const [selectedPrompts, setSelectedPrompts] = useState([]); const [isSelectMode, setIsSelectMode] = useState(false); const handleEditPrompt = (promptId: string) => { setEditingPromptId(promptId); }; const handleDeletePrompt = (promptId: string) => { if (window.confirm('确定要删除此提示词吗?此操作不可撤销。')) { onDeletePrompt(promptId); } }; const handleSavePrompt = (promptData: { title: string; content: string; tags: string[] }) => { if (editingPromptId) { // 如果正在编辑提示词,调用 onUpdatePrompt onUpdatePrompt(editingPromptId, promptData); setEditingPromptId(null); } else { // 如果正在创建新提示词,调用 onAddPrompt onAddPrompt(promptData); setShowNewPromptForm(false); } }; const handleExportPrompt = (prompt: Prompt) => { exportPrompt(prompt); }; const handleToggleSelectPrompt = (promptId: string) => { setSelectedPrompts(prevSelected => { if (prevSelected.includes(promptId)) { return prevSelected.filter(id => id !== promptId); } else { return [...prevSelected, promptId]; } }); }; const handleSelectAll = () => { if (selectedPrompts.length === prompts.length) { setSelectedPrompts([]); } else { setSelectedPrompts(prompts.map(p => p._id)); } }; const handleExportSelected = () => { const selectedPromptObjects = prompts.filter(p => selectedPrompts.includes(p._id)); exportMultiplePrompts(selectedPromptObjects); }; const handleDeleteSelected = () => { if (window.confirm(`确定要删除选中的 ${selectedPrompts.length} 个提示词吗?此操作不可撤销。`)) { selectedPrompts.forEach(promptId => { onDeletePrompt(promptId); }); setSelectedPrompts([]); setIsSelectMode(false); } }; if (prompts.length === 0 && !showNewPromptForm) { return (

暂无提示词

添加提示词以便于管理和使用

); } return (

提示词列表

{isSelectMode ? ( <> ) : ( <> )}
{showNewPromptForm && !editingPromptId && ( setShowNewPromptForm(false)} /> )}
{prompts.map((prompt) => ( {editingPromptId === prompt._id ? ( setEditingPromptId(null)} /> ) : ( <> handleToggleSelectPrompt(prompt._id)} > {selectedPrompts.includes(prompt._id) && ( )}
) } />
                    {prompt.content}
                  
{prompt.tags.length > 0 && (
{prompt.tags.map((tag) => (
{tag}
))}
)} {!isSelectMode && (
)}
)} ))}
); }; export default PromptList;