fix: resolve error when similar texts exist
This commit is contained in:
@@ -31,6 +31,7 @@
|
|||||||
- Редактирование текста прямо в списке
|
- Редактирование текста прямо в списке
|
||||||
- Удаление текста кнопкой "×"
|
- Удаление текста кнопкой "×"
|
||||||
- Автоматическое обновление панелей при изменении текстов
|
- Автоматическое обновление панелей при изменении текстов
|
||||||
|
- Автоматическая фильтрация пустых текстов и дубликатов
|
||||||
|
|
||||||
#### 5. Просмотр панелей
|
#### 5. Просмотр панелей
|
||||||
- Единое фоновое изображение в боковой панели (один раз вверху)
|
- Единое фоновое изображение в боковой панели (один раз вверху)
|
||||||
@@ -61,11 +62,11 @@
|
|||||||
### Шаг 3: Создание и редактирование текстов
|
### Шаг 3: Создание и редактирование текстов
|
||||||
1. Пользователь вводит текст для первой панели (например: "links")
|
1. Пользователь вводит текст для первой панели (например: "links")
|
||||||
2. Нажимает кнопку "Добавить"
|
2. Нажимает кнопку "Добавить"
|
||||||
3. Текст добавляется в список текстов
|
3. Текст добавляется в список текстов (пустые тексты и дубликаты автоматически фильтруются)
|
||||||
4. В боковой панели автоматически отображается превью созданной панели
|
4. В боковой панели автоматически отображается превью созданной панели
|
||||||
5. Пользователь повторяет процесс для других текстов ("about me", "projects", "memes")
|
5. Пользователь повторяет процесс для других текстов ("about me", "projects", "memes")
|
||||||
6. Все тексты отображаются в списке ниже поля ввода
|
6. Все тексты отображаются в списке ниже поля ввода
|
||||||
7. Каждый текст в списке можно редактировать прямо в поле ввода
|
7. Каждый текст в списке можно редактировать прямо в поле ввода (дубликаты автоматически фильтруются)
|
||||||
8. Любой текст можно удалить кнопкой "×"
|
8. Любой текст можно удалить кнопкой "×"
|
||||||
9. При редактировании или удалении текста автоматически обновляется соответствующая панель
|
9. При редактировании или удалении текста автоматически обновляется соответствующая панель
|
||||||
|
|
||||||
|
|||||||
@@ -63,11 +63,19 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function handleAddText(text: string) {
|
function handleAddText(text: string) {
|
||||||
|
// Проверяем, что текст не пустой и не дублируется
|
||||||
|
if (!text.trim()) return;
|
||||||
|
if (texts.some(t => t.text === text)) return;
|
||||||
|
|
||||||
texts = [...texts, { id: crypto.randomUUID(), text }];
|
texts = [...texts, { id: crypto.randomUUID(), text }];
|
||||||
updatePanelsFromTexts();
|
updatePanelsFromTexts();
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleUpdateText(id: string, newText: string) {
|
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);
|
texts = texts.map(t => t.id === id ? { ...t, text: newText } : t);
|
||||||
updatePanelsFromTexts();
|
updatePanelsFromTexts();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user