Skip to content

Мобильное меню: переход в раздел и лоадер вместо исчезающей панели - #277

Merged
lookinway merged 1 commit into
mainfrom
mobile-menu-section-nav
Aug 8, 2026
Merged

Мобильное меню: переход в раздел и лоадер вместо исчезающей панели#277
lookinway merged 1 commit into
mainfrom
mobile-menu-section-nav

Conversation

@lookinway

Copy link
Copy Markdown
Collaborator

Что не так было

В мобильном меню выбор раздела в выпадающем списке только переключал содержимое сайдбара — страница оставалась прежней, в отличие от десктопа, где клик по табу открывает первую страницу раздела. А при клике по пункту панель исчезала мгновенно, и дальше несколько секунд не было никакой индикации, что страница грузится.

Что сделано

  • Выбор раздела открывает его первую страницу (defaultHref, как таб в хедере), но панель остаётся на экране: навигацию, запущенную самой панелью, эффект закрытия по смене роута пропускает (keepOpenRef). Сайдбар скроллится в начало нового раздела.
  • Целевой пункт подсвечивается сразу, а не после коммита роута — иначе список успевал отрисоваться без выделения и пункт «мигал». pendingHref прокидывается в сайдбар как activePath и перекрывает usePathname().
  • Лоадер на пункте — тот же, что показывается на медленной сети: useNavigationLoading получил флаг pending, запускающий ту же задержку 200 мс без клика.
  • Панель держится до загрузки страницы при клике по пункту, так что лоадер виден. Клик по странице, на которой уже находишься, закрывает панель сразу.

Десктопного сайдбара изменения не касаются: activePath и onNavigate туда не передаются.

Проверка

Dev-сервер, вьюпорт 375×812:

Сценарий Результат
Выбор раздела URL → defaultHref, панель на экране, пункт подсвечен на +30 мс, скролл в начало
Смена раздела с задержкой RSC подсветка сразу, спиннер после ~200 мс, снимается на коммите
Клик по сезону в «Обновлениях» панель открыта всё время загрузки, спиннер на пункте, закрывается по факту загрузки
Клик по текущей странице закрывается сразу
Кнопка «назад», кнопка закрытия закрывают как раньше
Десктоп без изменений

npx turbo build и npx turbo check — зелёные (27/27).

Выбор раздела в выпадающем списке открывает его первую страницу, как
клик по табу на десктопе, но панель остаётся на экране: навигацию,
запущенную самой панелью, эффект закрытия по смене роута пропускает.

Целевой пункт подсвечивается сразу (pendingHref → activePath), а не
после коммита роута, и показывает тот же лоадер, что и на медленной
сети — useNavigationLoading получил флаг pending для навигаций,
начатых снаружи пункта.

Клик по странице в меню больше не закрывает панель мгновенно: она
держится до загрузки, так что виден лоадер на пункте. Клик по текущей
странице закрывает сразу.
@cursor

cursor Bot commented Aug 8, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@lookinway
lookinway merged commit ec42fa4 into main Aug 8, 2026
7 checks passed
@lookinway
lookinway deleted the mobile-menu-section-nav branch August 8, 2026 12:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant