Skip to content

Компактное редактирование меню

Цель

Заменить ручной режим редактора меню на быстрый рабочий экран из трёх связанных таблиц. Пользователь редактирует меню, его разделы и элементы без переходов между экранами и без модальных окон.

Компоновка

На ширине lg и больше экран состоит из трёх равных колонок:

  1. Меню — список меню текущего tenant.
  2. Разделы — разделы выбранного меню.
  3. Элементы — элементы выбранного раздела.

На меньших экранах колонки располагаются вертикально в том же порядке. Каждая таблица имеет компактную шапку с названием и кнопкой «Добавить». Выбранная строка получает стандартное выделение Ant Design. До выбора родителя вторая и третья таблицы показывают пустое состояние с подсказкой.

Поведение

Меню

  • CRUD выполняется в строках таблицы.
  • Новое меню появляется как редактируемая строка; Enter или действие «Сохранить» создаёт его, «Отмена» убирает черновик.
  • Существующая строка переключается в редактирование по действию «Изменить».
  • Удаление требует inline-подтверждения в ячейке действий, без модального окна.
  • Выбор меню сбрасывает выбранный раздел и загружает его разделы.

Разделы

  • Работают только для выбранного меню.
  • CRUD — inline, с теми же действиями сохранения, отмены и inline-подтверждения удаления.
  • Порядок изменяется перетаскиванием за отдельную рукоятку. Новый порядок оптимистично показывается сразу, сохраняется на сервере и откатывается при ошибке.
  • При выборе раздела загружаются его элементы.

Элементы

  • Работают только для выбранного раздела.
  • CRUD — inline. Базовый набор полей: название, описание, цена, доступность и включённость; расширенные поля остаются вне этого компактного потока.
  • Перетаскивание и сохранение порядка работают так же, как у разделов.

Технические границы

  • Используются существующие API меню, разделов и элементов. Если текущий API заменяет разделы целиком и блокирует изменения после появления элементов, его нужно заменить адресными CRUD/reorder-операциями, не удаляющими связанные элементы.
  • Таблицы используют Ant Design / Pro Components и текущие дизайн-токены; новые локальные цвета и размеры не вводятся.
  • Архивное меню и режим read-only отключают изменяющие действия и сортировку.
  • Предпросмотр остаётся отдельной областью/режимом и обновляется после успешных изменений структуры.

Ошибки и доступность

  • Состояние сохранения видно в строке; повторные действия для неё блокируются.
  • Ошибка показывается через существующий toast и возвращает оптимистичный порядок.
  • Ручка сортировки имеет текстовую метку для screen reader; все основные действия содержат иконку и текст.

Проверка

  • Тесты view-model/клиента: каскадный сброс выбора, inline create/edit/cancel, восстановление после ошибки reorder.
  • API-тесты: адресный CRUD и перестановка разделов/элементов с tenant-изоляцией.
  • UI-smoke: три колонки на desktop, вертикальный поток на mobile, drag-сортировка.