AURORA-1944: таблицы форм — шаг прокрутки колесом мыши ×2 #247
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "feat/246-aurora-1944-wheel-scroll-step"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #246
Jira: AURORA-1944 (эпик AURORA-1834)
Зачем
Жалоба заказчика: на формах за щелчок колеса уезжает мало строк. Браузер прокручивает 100 px за щелчок, вёрстка масштабируется от ширины окна (html font-size .83vw): на любом экране видно ~15 строк, за щелчок уезжает 2,1 (1920×1080) / 2,5 (1600×900) / 2,9 (1366×768) строки.
Что сделано
utils/wheelScroll.js:getWheelScrollDelta— шаг щелчка колеса мыши ×2 (WHEEL_SCROLL_MULTIPLIER = 2); null (событие отдаётся браузеру) для тачпада (|deltaY| < 50 px), Ctrl/Shift, горизонтали, deltaMode=2; Firefox (deltaMode=1) — строки × 33 px × 2.canScrollBy— у края таблицы событие отдаётся браузеру.hooks/useWheelScrollStep.js: wheel-listener{ passive: false }на области прокрутки таблицы; внутри textarea/select/input/listbox колесо работает как обычно.RealtimeTable.jsx:useWheelScrollStep(containerRef)послеuseHeaderPortal().Тесты
node --test src/components/RealtimeTable/utils/wheelScroll.test.js— 7/7 (тест написан первым).RealtimeTable.jsx— те же 2 ошибки / 5 предупреждений, что в test.npm run build— проходит.Проверить руками (Windows, обычная мышь)
Замер до/после
Не требуется: меняется длина шага, а не стоимость отрисовки. Шаги и доли экрана — в разделе «Тесты».
Rulings I made
Находки
columnLayoutUtils.test.jsв worktree без node_modules падает ERR_MODULE_NOT_FOUND (окружение, не код)🤖 Generated with Claude Code
H-1: «стало дёргаться» — исправлено (
dfccd20)Причина: R-2 (мгновенный
scrollTop += 200) убирал штатную плавную прокрутку Chrome/Edge на Windows — таблица прыгала скачком и сразу дорисовывала вдвое больше строк.Исправление: анимацию делает браузер —
scrollTo({ top, behavior: 'smooth' }); цель копится (getWheelScrollTarget,WHEEL_TARGET_RESET_MS = 300), чтобы при быстром вращении ход не терялся; при prefers-reduced-motion — без анимации.Проверка (стенд, dev-сборка, 1920×1080): один щелчок = 200 px за 4 кадра (1 → 137 → 55 → 7 px); 4 быстрых щелчка = 800 px; тачпад 5×10 px = 50 px (без изменений). Тесты 12/12, biome, build — ок.
R-2 заменён на: плавная прокрутка браузером с накоплением цели. Статус R-2 (мгновенный прыжок): rejected — дёргание (H-1).