mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-29 03:09:36 +00:00
test(touch): align kiosk smoke and Russian guide (#691)
Issue: #691 User-Visible: no
This commit is contained in:
+16
-10
@@ -9,7 +9,8 @@
|
||||
// at 800 %, in view mode and in every editor; how far you may walk is decided
|
||||
// by `_clampView` (PAN_SLACK: about a screen past the content) and not by the
|
||||
// zoom. The tools keep the pointer they already owned — a resize handle, a
|
||||
// device badge, an opening — and the kiosk keeps its floor swipe.
|
||||
// device badge, an opening — and the kiosk keeps its floor swipe from the
|
||||
// active 48 px edge while central horizontal drags remain pan.
|
||||
import { launch, check, checkAll, finish } from './serve.mjs';
|
||||
const { page, browser } = await launch();
|
||||
const out = {};
|
||||
@@ -192,7 +193,7 @@ Object.assign(out, await page.evaluate(async () => {
|
||||
return o;
|
||||
}));
|
||||
|
||||
// ---- the kiosk keeps its floor swipe ---------------------------------------
|
||||
// ---- the kiosk keeps its edge-owned floor swipe ----------------------------
|
||||
Object.assign(out, await page.evaluate(async () => {
|
||||
const c0 = window.__card;
|
||||
const o = {};
|
||||
@@ -207,19 +208,24 @@ Object.assign(out, await page.evaluate(async () => {
|
||||
const sr = k.shadowRoot || k.renderRoot;
|
||||
const stage = sr.querySelector('.stage');
|
||||
const fire = (type, id, x, y) => stage.dispatchEvent(new PointerEvent(type, {
|
||||
bubbles: true, composed: true, cancelable: true, pointerId: id, clientX: x, clientY: y,
|
||||
bubbles: true, composed: true, cancelable: true, pointerId: id,
|
||||
pointerType: 'touch', isPrimary: true, button: 0,
|
||||
buttons: type === 'pointerup' ? 0 : 1, clientX: x, clientY: y,
|
||||
}));
|
||||
k._applyView(1); await k.updateComplete;
|
||||
const rect = stage.getBoundingClientRect();
|
||||
const rightEdgeX = rect.right - 20;
|
||||
const centerY = rect.top + rect.height / 2;
|
||||
const s0 = k._space;
|
||||
const v0 = { ...k._viewOr(k._baseVb()) };
|
||||
// a REAL swipe: down, several moves, up — the moves are what used to be
|
||||
// impossible to add to smoke_kiosk without hijacking the gesture
|
||||
fire('pointerdown', 41, 600, 300);
|
||||
fire('pointermove', 41, 540, 302);
|
||||
fire('pointermove', 41, 480, 305);
|
||||
fire('pointermove', 41, 450, 305);
|
||||
// A real floor swipe starts inside the active right-edge strip and moves
|
||||
// inward. Several moves prove that the plan never pans under the gesture.
|
||||
fire('pointerdown', 41, rightEdgeX, centerY);
|
||||
fire('pointermove', 41, rightEdgeX - 60, centerY + 2);
|
||||
fire('pointermove', 41, rightEdgeX - 120, centerY + 5);
|
||||
fire('pointermove', 41, rightEdgeX - 150, centerY + 5);
|
||||
const midPan = Math.abs(k._viewOr(k._baseVb()).x - v0.x);
|
||||
fire('pointerup', 41, 450, 305);
|
||||
fire('pointerup', 41, rightEdgeX - 150, centerY + 5);
|
||||
await k.updateComplete;
|
||||
o.kioskSwipeStillSwitchesFloors = k._space !== s0;
|
||||
o.kioskHorizontalDragIsNotAPan = midPan < 1;
|
||||
|
||||
@@ -471,9 +471,9 @@ desktop: для точного рисования, Resize, модификато
|
||||
|
||||
| Сценарий | Мышь | Touch в просмотре | Touch в редакторах | Клавиатура |
|
||||
|---|---|---|---|---|
|
||||
| Масштаб и панорама | Колесо; drag пустого места; кнопки `−`/`+`; двойной клик по свободному фону вписывает всё | Щипок; drag; двойной тап по свободному фону вписывает всё | Работает, но точность не гарантируется; двойного тапа «Вписать всё» нет | — |
|
||||
| Комната | Клик по свободной части комнаты вписывает её с полями 10% | Одиночный tap вписывает комнату; повторный tap не сбрасывает киоск | — | `Enter`/`Space` на видимой подписи комнаты |
|
||||
| Переключение пространства | Клик по вкладке | Клик; в киоске свайп при масштабе 1:1 | Клик по вкладке | — |
|
||||
| Масштаб и панорама | Колесо; drag пустого места; кнопки `−`/`+`; двойной клик по фону, заливке комнаты или её пассивной подписи вписывает всё | Щипок; drag; двойной тап по фону, заливке комнаты или её пассивной подписи вписывает всё | Работает, но точность не гарантируется; двойного тапа «Вписать всё» нет | — |
|
||||
| Комната | Одиночный клик по свободной части комнаты ждёт 350 мс и вписывает её с полями 10%; второй чистый клик за это время вписывает весь план без промежуточного движения | Одиночный tap ждёт 350 мс и вписывает комнату; второй чистый tap за это время вписывает весь план без промежуточного движения | — | `Enter`/`Space` на видимой подписи комнаты вписывает её сразу |
|
||||
| Переключение пространства | Клик по вкладке | Клик; в киоске при масштабе 1:1 — свайп внутрь из 48 CSS px у края, за которым есть соседнее пространство | Клик по вкладке | — |
|
||||
| Устройство | Клик/двойной клик по правилам режима | Tap; безопасные действия как на desktop | Drag и свойства — best effort | `Esc` закрывает верхнюю поверхность |
|
||||
| Рисование стен и точный drag | Полный контракт | Не применяется | Best effort; для Resize и точных точек используйте мышь | `Shift` меняет магнит/угол; `Esc` завершает цепочку стен или отменяет текущий точный drag |
|
||||
| История редактора | Кнопки Undo/Redo | Не применяется | Кнопки могут работать, жест не гарантирован | `Ctrl/Cmd+Z`, `Ctrl/Cmd+Shift+Z`, `Ctrl+Y` |
|
||||
@@ -482,7 +482,7 @@ desktop: для точного рисования, Resize, модификато
|
||||
Особенности:
|
||||
|
||||
- колесо, кнопки `−`/`+`, «Вписать всё», стрелка возврата и двойной клик/тап по
|
||||
свободному фону в Просмотре или киоске используют короткий плавный переход
|
||||
фону, заливке комнаты или её пассивной подписи в Просмотре или киоске используют короткий плавный переход
|
||||
камеры; частые события колеса меняют текущую цель, а не выстраиваются в очередь;
|
||||
- щипок и панорамирование по-прежнему следуют за пальцами без задержки; при
|
||||
включённом в системе уменьшении движения любой масштаб меняется мгновенно;
|
||||
@@ -1933,9 +1933,9 @@ cycle: 30
|
||||
| Шапка карточки | Скрыта |
|
||||
| Редакторы | Недоступны |
|
||||
| Высота | 100dvh |
|
||||
| Свайп | Листает пространства по кругу при масштабе 1:1 |
|
||||
| Свайп | При масштабе 1:1 листает пространства жестом внутрь из 48 CSS px у края, за которым есть соседнее пространство; drag вне этой зоны панорамирует план |
|
||||
| Щипок/панорама | Масштабирует и двигает план |
|
||||
| Двойной тап по свободному фону | Вписывает весь план (как «Вписать всё») |
|
||||
| Двойной тап по фону, заливке комнаты или её пассивной подписи | Вписывает весь план (как «Вписать всё») без промежуточного вписывания комнаты |
|
||||
| Удержание пустого места 3 секунды | Открывает локальные размеры иконок и текста |
|
||||
| `cycle` | Автоматически листает пространства; при взаимодействии пауза 60 секунд |
|
||||
|
||||
|
||||
Reference in New Issue
Block a user