Menu navigation and full-width tables
Goal
Split menu management into three direct navigation destinations while retaining the current inline CRUD and drag-and-drop behavior. Each destination fills the available application-content width and presents its data as a table.
Navigation
The Menus entry in the application sidebar becomes a route group with three children:
Меню—/app/menusРазделы—/app/menus/sectionsЭлементы—/app/menus/items
The existing menu editor remains the destination for a menu's own parameters, domains, and publication controls; it is opened by the Редактировать action in the menu table.
Selection and routes
Selection is represented in the URL so that it survives refresh, browser back/forward, and direct links:
- Sections:
/app/menus/sections?menuId=<menu id> - Items:
/app/menus/items?menuId=<menu id>§ionId=<section id>
The sections page requires a selected menu and displays a compact menu select above its sections table. The items page requires a selected menu and section, with a menu select followed by a section select. Changing the menu clears an incompatible section selection.
The menu table's Разделы action opens the sections route with menuId. Each sections-table row has an Элементы action that opens the items route with both menuId and sectionId.
Tables and behavior
All three page roots use width: 100% with no content max-width. The existing inline editing, create/delete actions, permissions, loading/error handling, and drag sorting are retained:
- Menu table: menu CRUD and archive/delete controls;
РедактироватьandРазделыnavigation actions. - Sections table: CRUD and section ordering for the selected menu.
- Items table: CRUD and item ordering for the selected menu and section.
No modal is introduced for routine section or item editing.
Safety and verification
Client routes keep the existing API ownership and stale-response protections. Tests cover route query selection, menu-to-sections navigation, section-to-items navigation, and clearing an invalid section when the menu changes. Focused web tests, typecheck, formatting, and browser checks cover the three routes.