From 3e70f4322d65686c86282bd2ba1ac0aa94fa854f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9A=D0=BE=D0=BD=D1=81=D1=82=D0=B0=D0=BD=D1=82=D0=B8?= =?UTF-8?q?=D0=BD=20=D0=9B=D0=B5=D0=B1=D0=B5=D0=B4=D0=B8=D0=BD=D1=81=D0=BA?= =?UTF-8?q?=D0=B8=D0=B9?= Date: Mon, 27 Apr 2026 19:38:42 +0500 Subject: [PATCH] Sprint 2: attempt cards, file import button, question layout, radio/check, sticky save MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Replace attempts table with attempts-card-list cards - Custom import: sr-only file input + btn-styled label - question-editor-block: stack header on mobile, row from 520px - option marks: radio for single correct, checkbox for multiple - Fixed bottom actions on max-width 640px with draft status; hide in-flow panel - Update СПРИНТЫ_МОБИЛЬНЫЙ_ДИЗАЙН.md and DOC/ШАГИ/ШАГ_2026-04-27_003.md Made-with: Cursor --- DOC/ШАГИ/ШАГ_2026-04-27_003.md | 4 + ...НТЫ_МОБИЛЬНЫЙ_ДИЗАЙН.md | 18 +- frontend/src/pages/TestDetail.jsx | 165 ++++++++++-------- frontend/src/styles/cabinet-theme.css | 158 +++++++++++++++++ 4 files changed, 268 insertions(+), 77 deletions(-) create mode 100644 DOC/ШАГИ/ШАГ_2026-04-27_003.md diff --git a/DOC/ШАГИ/ШАГ_2026-04-27_003.md b/DOC/ШАГИ/ШАГ_2026-04-27_003.md new file mode 100644 index 0000000..5964b25 --- /dev/null +++ b/DOC/ШАГИ/ШАГ_2026-04-27_003.md @@ -0,0 +1,4 @@ +# Шаг 2026-04-27 — спринт 2 (мобильный UI) + +- См. [`docs/СПРИНТЫ_МОБИЛЬНЫЙ_ДИЗАЙН.md`](../../docs/СПРИНТЫ_МОБИЛЬНЫЙ_ДИЗАЙН.md): пункты 2.1–2.5 отмечены выполненными. +- Реализация: `TestDetail.jsx` (прогоны карточками, импорт через label+input, заголовок вопроса, radio/checkbox, фикс-футер), `cabinet-theme.css` (классы спринта 2). diff --git a/docs/СПРИНТЫ_МОБИЛЬНЫЙ_ДИЗАЙН.md b/docs/СПРИНТЫ_МОБИЛЬНЫЙ_ДИЗАЙН.md index 43e3cd8..68c4d8f 100644 --- a/docs/СПРИНТЫ_МОБИЛЬНЫЙ_ДИЗАЙН.md +++ b/docs/СПРИНТЫ_МОБИЛЬНЫЙ_ДИЗАЙН.md @@ -1,10 +1,8 @@ # Спринты: мобильный UI кабинета тестов -Рядом с: [`ПРЕДЛОЖЕНИЕ_ДИЗАЙН_СОЗДАНИЕ_ТЕСТА.md`](./ПРЕДЛОЖЕНИЕ_ДИЗАЙН_СОЗДАНИЕ_ТЕСТА.md). - --- -## Спринт 1 — быстрые исправления (текущий) +## Спринт 1 — быстрые исправления **Цель:** выровнять кнопки, мета-строку списка, историю версий, назначение и safe-area; без смены контентной модели страниц. @@ -21,13 +19,15 @@ --- -## Спринт 2 — бэклог (следующий) +## Спринт 2 — карточки, импорт, вопрос, радио/чек, фикс-футер + +- [x] **2.1** «Прогоны и разбор»: таблица заменена на список карточек (`.attempts-card-list`) +- [x] **2.2** «Импорт из файла»: скрытый `input` + `label` с `.btn` (`.import-file-input` / `.import-file-label`) +- [x] **2.3** «Вопрос N» + «Сгенерировать вопрос (ИИ)»: колонка на мобилке, ряд от `min-width: 520px` (`.question-editor-block__header`) +- [x] **2.4** Варианты: `type="radio"` при одном верном, `checkbox` при нескольких +- [x] **2.5** Моб. фикс-футер `≤640px` с «Сохранить» / «К списку» + статус черновика; панель в потоке скрыта -- [ ] **2.1** «Прогоны и разбор»: на мобилке заменить таблицу на карточки или гориз. скролл с фиксированными колонками -- [ ] **2.2** «Импорт из файла»: кастомная кнопка (скрытый `input` + стилизованный `label` под `.btn`) -- [ ] **2.3** «Вопрос 1» + «Сгенерировать вопрос (ИИ)» — не в одной строке на узком экране; явная иерархия primary/secondary -- [ ] **2.4** Радио vs чекбокс у вариантов ответа при «несколько верных» — визуальная метафора (квадраты vs круги) -- [ ] **2.5** Закреплённый футер с действиями «Сохранить» (опционально) +**Файлы:** `frontend/src/styles/cabinet-theme.css`, `frontend/src/pages/TestDetail.jsx`. --- diff --git a/frontend/src/pages/TestDetail.jsx b/frontend/src/pages/TestDetail.jsx index a8c8db3..b6c0a67 100644 --- a/frontend/src/pages/TestDetail.jsx +++ b/frontend/src/pages/TestDetail.jsx @@ -622,7 +622,7 @@ export default function TestDetail() { ); return ( -
+

← к списку @@ -792,22 +792,23 @@ export default function TestDetail() { {draftQuestions.map((q, qi) => (

-
-