- Touch/pen tap opens the viewer; mouse click still selects, dblclick opens - Panel and rail emit a single transform utility so the panel actually slides in below 1280px (Tailwind v4 utility ordering made the base translate-x-full win over the conditional translate-x-0) - Add touch-action: manipulation to grid cells
3.8 KiB
3.8 KiB
Tasks
1. Выдвижение панели и рейла на узком экране
- 1.1 В
AppShell.svelteу<aside aria-label="Панель">убрать постоянныйtranslate-x-fullи эмитить единственный класс трансформации:panelOpen ? 'translate-x-0' : 'translate-x-full'(вариантxl:translate-x-0сохранить). Проверка: при ширине 390px после нажатия «Панель» computedtranslateравен0px,asideпопадает в пределы вьюпорта. - 1.2 Тем же принципом нормализовать
<aside aria-label="Альбомы">(единственный класс вместо постоянного-translate-x-full). Проверка: на 390px кнопка «Альбомы» открывает рейл (computedtranslate: 0px). - 1.3 Проверить отсутствие регрессии на рабочем столе: при ширине >= 1280px обе панели видны статично, разделители ширины работают. Проверка: вьюпорт 1280px — панели видимы, drag разделителя меняет ширину.
2. Открытие фото одним касанием на сенсорных экранах
- 2.1 В
PhotoGrid.svelteфиксироватьpointerTypeнаpointerdownячейки и добавить хелпер активации: дляtouch/penвызыватьonOpen(i), иначе —onSelect(i, e). Проверка: тап по фото на touch-эмуляции открывает маршрут просмотра; клик мышью выделяет и не открывает. - 2.2 Оставить
ondblclick -> onOpenдля мыши без изменений. Проверка: двойной клик мышью открывает просмотр. - 2.3 При сенсорной активации не менять
selection,cursorIndexи содержимое панели. Проверка: после тапаselectionпуст, номер фото в панели не появляется, происходит переход в просмотр. - 2.4 Добавить ячейке
touch-action: manipulation, чтобы исключить двойной тап-зум. Проверка: быстрый двойной тап не масштабирует страницу и открывает просмотр. - 2.5 Проверить, что клавиатурный
Enterоткрывает фото, а навигация стрелками и ровингtabindexне изменились. Проверка: Enter на ячейке открывает просмотр; стрелки двигают курсор, ровно одна ячейка tabbable.
3. Интеграционная проверка
- 3.1
npm run checkиnpm run buildвоfrontend/проходят без ошибок. Проверка: обе команды завершаются успешно. - 3.2 CDP-прогон на вьюпорте 390x844 с touch: (а) «Панель» выдвигает панель, оверлей закрывает; (б) тап по фото открывает просмотр; (в) мышь-клик по фото выделяет без перехода; (г) «Альбомы» открывает рейл. Проверка: все четыре пункта наблюдаемы.
- 3.3 Убедиться, что сценарии в
openspec/specs/ui-workspace/spec.mdсинхронизируются при архивации изменения. Проверка:openspec validate "mobile-tap-open-and-panel" --strictпроходит; при архивации спека содержит новые сценарии.