diff --git a/plans/PROJECT_PLAN.md b/plans/PROJECT_PLAN.md index 6473e6c..afa95b7 100644 --- a/plans/PROJECT_PLAN.md +++ b/plans/PROJECT_PLAN.md @@ -31,6 +31,7 @@ - Редактирование текста прямо в списке - Удаление текста кнопкой "×" - Автоматическое обновление панелей при изменении текстов +- Автоматическая фильтрация пустых текстов и дубликатов #### 5. Просмотр панелей - Единое фоновое изображение в боковой панели (один раз вверху) @@ -61,11 +62,11 @@ ### Шаг 3: Создание и редактирование текстов 1. Пользователь вводит текст для первой панели (например: "links") 2. Нажимает кнопку "Добавить" -3. Текст добавляется в список текстов +3. Текст добавляется в список текстов (пустые тексты и дубликаты автоматически фильтруются) 4. В боковой панели автоматически отображается превью созданной панели 5. Пользователь повторяет процесс для других текстов ("about me", "projects", "memes") 6. Все тексты отображаются в списке ниже поля ввода -7. Каждый текст в списке можно редактировать прямо в поле ввода +7. Каждый текст в списке можно редактировать прямо в поле ввода (дубликаты автоматически фильтруются) 8. Любой текст можно удалить кнопкой "×" 9. При редактировании или удалении текста автоматически обновляется соответствующая панель diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index c2f7cfe..3e08aa6 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -63,11 +63,19 @@ } function handleAddText(text: string) { + // Проверяем, что текст не пустой и не дублируется + if (!text.trim()) return; + if (texts.some(t => t.text === text)) return; + texts = [...texts, { id: crypto.randomUUID(), text }]; updatePanelsFromTexts(); } function handleUpdateText(id: string, newText: string) { + // Проверяем, что текст не пустой и не дублируется + if (!newText.trim()) return; + if (texts.some(t => t.id !== id && t.text === newText)) return; + texts = texts.map(t => t.id === id ? { ...t, text: newText } : t); updatePanelsFromTexts(); }