Files
play-life/IMPACT_ANALYSIS.md
2026-02-08 17:01:36 +03:00

12 KiB
Raw Permalink Blame History

Импакт-анализ: Редизайн экрана редактирования доски желаний

Дата анализа

2025-01-21

Созданные компоненты (дизайн-система)

1. SubmitButton.jsx

  • Путь: play-life-web/src/components/SubmitButton.jsx
  • Назначение: Переиспользуемый компонент кнопки сохранения с градиентным фоном
  • Пропсы: loading, disabled, children, onClick, type
  • Стили: Градиент от #6366f1 до #8b5cf6, hover эффект с тенью
  • Использование: Заменяет все кнопки сохранения в формах

2. DeleteButton.jsx

  • Путь: play-life-web/src/components/DeleteButton.jsx
  • Назначение: Переиспользуемый компонент кнопки удаления с красным фоном и иконкой корзины
  • Пропсы: loading, disabled, onClick, title
  • Стили: Красный фон #ef4444, квадратная кнопка 44x44px
  • Использование: Заменяет все кнопки удаления в формах

3. Buttons.css

  • Путь: play-life-web/src/components/Buttons.css
  • Назначение: Общие стили для кнопок дизайн-системы
  • Содержимое:
    • .form-actions - flex-контейнер для группировки кнопок
    • .submit-button - стили для кнопки сохранения
    • .delete-button - стили для кнопки удаления

Измененные компоненты

1. BoardForm.jsx

Путь: play-life-web/src/components/BoardForm.jsx

Изменения:

  • Заменена эмодзи копирования (📋) на SVG иконку в кнопке копирования ссылки
  • Удалена кнопка "Отмена" из блока form-actions
  • Кнопка удаления перемещена в блок form-actions справа от кнопки "Сохранить"
  • Добавлено состояние isDeleting для отслеживания процесса удаления
  • Удалена кнопка "Перегенерить ссылку"
  • Удалена функция handleRegenerateLink (заменена на generateInviteLink для внутреннего использования)
  • Интегрированы компоненты SubmitButton и DeleteButton
  • Добавлен импорт Buttons.css

Затронутые места в компоненте:

  • Строки 1-5: Добавлены импорты новых компонентов и стилей
  • Строка 14: Добавлено состояние isDeleting
  • Строки 89-105: Удалена функция handleRegenerateLink
  • Строки 114-132: Обновлена функция handleToggleInvite (использует generateInviteLink)
  • Строки 134-151: Обновлена функция handleDelete (добавлено состояние isDeleting)
  • Строки 216-222: Заменена эмодзи на SVG иконку копирования
  • Строки 224-229: Удалена кнопка "Перегенерить ссылку"
  • Строки 247-258: Обновлен блок form-actions (удалена кнопка "Отмена", добавлены новые компоненты)
  • Строки 261-265: Удален отдельный блок с кнопкой удаления

2. BoardForm.css

Путь: play-life-web/src/components/BoardForm.css

Изменения:

  • Удалены стили .regenerate-btn (строки 128-143)
  • Удалены стили .delete-board-btn (строки 152-169)
  • Стили кнопок теперь импортируются из Buttons.css

Затронутые места:

  • Удалено 42 строки неиспользуемых стилей

3. TaskForm.jsx

Путь: play-life-web/src/components/TaskForm.jsx

Изменения:

  • Интегрированы компоненты SubmitButton и DeleteButton
  • Добавлен импорт Buttons.css (через компоненты)
  • Заменены нативные кнопки на компоненты дизайн-системы

Затронутые места в компоненте:

  • Строки 1-4: Добавлены импорты новых компонентов
  • Строки 1170-1195: Заменены кнопки на компоненты SubmitButton и DeleteButton

Затронутые экраны

1. Экран редактирования доски желаний (board-form)

Компонент: BoardForm Навигация: Открывается из экрана списка желаний (wishlist) при нажатии на кнопку редактирования доски

Изменения в UI:

  • Кнопка копирования ссылки: эмодзи 📋 заменена на SVG иконку (два перекрывающихся прямоугольника)
  • При успешном копировании показывается SVG иконка галочки вместо текста ✓
  • Удалена кнопка "Отмена" - теперь закрытие происходит только через крестик в правом верхнем углу
  • Кнопка "Удалить доску" перемещена в блок действий справа от кнопки "Сохранить"
  • Кнопка удаления теперь имеет красный фон и иконку корзины (как в экране редактирования задачи)
  • Удалена кнопка "Перегенерить ссылку" - ссылка теперь генерируется автоматически при включении доступа
  • Кнопка "Сохранить" имеет градиентный фон и hover эффект (как в экране редактирования задачи)

Функциональные изменения:

  • Ссылка для приглашения теперь генерируется автоматически при включении переключателя "Разрешить присоединение по ссылке"
  • Кнопка удаления показывает состояние загрузки (три точки) во время удаления
  • Кнопка сохранения показывает "Сохранение..." во время процесса сохранения

Путь навигации:

  • wishlistboard-form (при нажатии на кнопку редактирования доски)

2. Экран редактирования задачи (task-form)

Компонент: TaskForm Навигация: Открывается из списка задач (tasks) или из деталей желания (wishlist-detail)

Изменения в UI:

  • Кнопки сохранения и удаления теперь используют компоненты дизайн-системы
  • Визуально идентичны кнопкам на экране редактирования доски

Функциональные изменения:

  • Нет функциональных изменений, только рефакторинг кода

Путь навигации:

  • taskstask-form (при создании/редактировании задачи)
  • wishlist-detailtask-form (при создании задачи из желания)

Потенциальные места для рефакторинга

Следующие компоненты используют похожие кнопки и могут быть обновлены для использования новых компонентов дизайн-системы:

1. WishlistForm.jsx

  • Текущее состояние: Использует нативную кнопку с классом submit-button
  • Потенциал: Можно заменить на SubmitButton
  • Расположение: Строки 836-838, 1246-1248

2. AddWords.jsx

  • Текущее состояние: Использует нативную кнопку с классом submit-button
  • Потенциал: Можно заменить на SubmitButton
  • Расположение: Строка 187

3. Другие формы

  • Компоненты с кнопками удаления могут использовать DeleteButton
  • Компоненты с кнопками сохранения могут использовать SubmitButton

Файлы, созданные/измененные

Созданные файлы:

  1. play-life-web/src/components/SubmitButton.jsx (новый)
  2. play-life-web/src/components/DeleteButton.jsx (новый)
  3. play-life-web/src/components/Buttons.css (новый)

Измененные файлы:

  1. play-life-web/src/components/BoardForm.jsx (обновлен)
  2. play-life-web/src/components/BoardForm.css (обновлен)
  3. play-life-web/src/components/TaskForm.jsx (обновлен)

Визуальные изменения

До изменений:

  • Эмодзи в кнопке копирования
  • Кнопка "Отмена" в блоке действий
  • Кнопка удаления отдельно внизу формы
  • Кнопка "Перегенерить ссылку" под полем ссылки
  • Разные стили кнопок в разных формах

После изменений:

  • SVG иконки в кнопке копирования
  • Только кнопка "Сохранить" и "Удалить" в блоке действий
  • Кнопка удаления справа от кнопки сохранения
  • Автоматическая генерация ссылки
  • Единый стиль кнопок во всех формах (дизайн-система)

Технические детали

Зависимости

  • Новые компоненты не добавляют внешних зависимостей
  • Используют только React и существующие стили

Обратная совместимость

  • Все изменения обратно совместимы
  • Функциональность не нарушена
  • API компонентов не изменился

Производительность

  • Нет влияния на производительность
  • Компоненты легковесные
  • Стили оптимизированы

Рекомендации

  1. Рефакторинг других форм: Рассмотреть возможность замены кнопок в WishlistForm и AddWords на компоненты дизайн-системы
  2. Расширение дизайн-системы: Добавить другие типы кнопок (например, CancelButton, IconButton)
  3. Документация: Создать документацию по использованию компонентов дизайн-системы
  4. Тестирование: Протестировать все затронутые экраны после развертывания