feat(B07): 목록에서 연 도면 = 탭 — 열기 · 닫기 · 전환 · 이전/다음 · 탭 전환 때 미저장 편집 지킴(82-4)

- 공용 탭 줄: 마지막 한 탭 닫기 없음 · 지금 탭 미저장 점 · 탭 하나만 저장 표시 지움

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NPJGtfXo6GMbcpiboQC4uK
This commit is contained in:
2026-10-08 12:12:58 +09:00
co-authored by Claude Opus 5.5
parent b15a945bf8
commit 4e18bca4e4
5 changed files with 82 additions and 18 deletions
+13 -1
View File
@@ -98,7 +98,8 @@ const tabsMod = load("ui_template/cad_host/cad_host_tabs.ts", { "@ui/ui_template
const before = confirms.length;
const d2 = closer.element.kids.find((k) => k.dataset.tabId === "d2");
await d2.kids.find((k) => k.className === "cad-tabs__x").on.click({ stopPropagation() {} });
out.b07 = { log: b07, asked: confirms.length - before, ids: closer.tabs().map((t) => t.id) };
const last = closer.element.kids.find((k) => k.dataset.tabId === "d1").kids.length; // 마지막 탭 = 닫기 없음
out.b07 = { log: b07, asked: confirms.length - before, ids: closer.tabs().map((t) => t.id), last };
// ⑤ M02 여러 장 — 가짜 CAD(requestSave = 지금 실린 도면 + 편집)
const cadLoads = [];
@@ -193,6 +194,17 @@ def test_닫기_기능은_미저장_탭만_물음(got):
["show", "d1", "편집본", True], # 받아 둔 편집본으로 돌아옴
]
assert b07["asked"] == 1 and ["closed", "d2"] in b07["log"] and b07["ids"] == ["d1"]
assert b07["last"] == 1
def test_B07_목록에서_연_도면이_탭_미저장_편집_지킴():
page = (ROOT / "B07_DesignDetail/B07_DesignDetail_UI_Page.ts").read_text("utf-8")
assert "features: { close: true }," in page # [+] · 지우기 없음(서버 길 없음)
assert "dirty: cadDirty }" in page # 떠날 때 받아 둠
assert "tab.dirty ? tab.drawing : undefined" in page # 돌아오면 받아 둔 편집본
assert "cadDirty = !!stash;" in page and "cad.load(stash ?? response.drawing" in page
assert "if (!cadDirty && !tabs.anyDirty()) return true;" in page
assert "void openTab(drawings[target]);" in page # 이전 · 다음 = 그 도면 탭
def test_여러_장_문서_장_도번_백업_칸(got):