mirror of
https://github.com/Matysh/houseplan-card
synced 2026-07-31 16:38:31 +00:00
- third mode tab: draw lines/rects/ovals/text with grid snap, drag preview; select+move (Delete key), erase, color/width/fill controls; Esc ladder; text dialog with S/M/L sizes and dblclick re-edit - decor renders under rooms, visible in every mode, click-transparent outside its editor; stored in space.decor with backend schema (line/rect/ellipse/text variants), rev/optimistic locking as usual - smoke_decor.mjs (19 checks); smoke_editor_tabs updated to 3 tabs; TESTING/CHANGELOG/UX-MODES same-commit
40 lines
2.3 KiB
JavaScript
40 lines
2.3 KiB
JavaScript
import { launch } from './serve.mjs';
|
|
const { page, browser } = await launch();
|
|
const res = await page.evaluate(async () => {
|
|
const out = {};
|
|
const c = window.__card;
|
|
const sr = () => c.shadowRoot || c.renderRoot;
|
|
const tabs = () => [...sr().querySelectorAll('.modetab')];
|
|
// 1) две вкладки, Просмотра нет, крестиков в неактивных нет
|
|
out.twoTabs = tabs().length === 3; // третья — Редактор подложки (v1.33.0)
|
|
out.labels = tabs().map((t) => t.textContent.trim());
|
|
out.noCrossIdle = sr().querySelectorAll('.modetab .closex').length === 0;
|
|
out.startView = c._mode === 'view';
|
|
// 2) клик по «Редактор плана» → активна, панель с крестиком
|
|
tabs()[0].click(); await c.updateComplete;
|
|
out.planActive = c._mode === 'plan' && tabs()[0].classList.contains('active');
|
|
out.planBar = !!sr().querySelector('.editbar');
|
|
out.planBarClose = !!sr().querySelector('.editbar .barclose');
|
|
out.tabCross = !!tabs()[0].querySelector('.closex');
|
|
// 3) повторный клик по активной вкладке — ничего
|
|
tabs()[0].click(); await c.updateComplete;
|
|
out.reclickNoop = c._mode === 'plan';
|
|
// 4) прямое переключение План → Устройства
|
|
tabs()[1].click(); await c.updateComplete;
|
|
out.directSwitch = c._mode === 'devices';
|
|
out.devBar = !!sr().querySelector('.editbar.devbar');
|
|
out.devBarBtns = sr().querySelectorAll('.editbar.devbar .btn:not(.barclose)').length;
|
|
// 5) инструменты устройств из шапки исчезли (в .bar их больше нет)
|
|
out.headerCleanInDev = !sr().querySelector('.bar > .btn[title*="' + (c._t('title.add_device')) + '"]');
|
|
// 6) крестик на панели → Просмотр
|
|
sr().querySelector('.editbar .barclose').click(); await c.updateComplete;
|
|
out.barCloseWorks = c._mode === 'view' && !sr().querySelector('.editbar');
|
|
// 7) крестик в самой вкладке → Просмотр (и не переключает режим)
|
|
tabs()[1].click(); await c.updateComplete;
|
|
tabs()[1].querySelector('.closex').click(); await c.updateComplete;
|
|
out.tabCrossWorks = c._mode === 'view';
|
|
return out;
|
|
});
|
|
console.log(JSON.stringify(res, null, 1));
|
|
await browser.close();
|