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:
@@ -61,8 +61,10 @@ export interface CadTabs<D> {
|
||||
select: (id: string) => Promise<boolean>;
|
||||
/** 지금 장을 받아 두고 모든 탭 */
|
||||
collect: () => Promise<CadTab<D>[]>;
|
||||
/** 저장 뒤 — 받아 둔 편집본 · 미저장 표시를 지움(`keepDrawings` = 편집본은 둠) */
|
||||
markClean: (keepDrawings?: boolean) => void;
|
||||
/** 저장 뒤 — 받아 둔 편집본 · 미저장 표시를 지움(`tab` 없으면 모두 · `keepDrawings` = 편집본은 둠) */
|
||||
markClean: (tab?: CadTab<D>, keepDrawings?: boolean) => void;
|
||||
/** 지금 탭에 미저장 점(●) — 페이지 편집 통지(참만 · 거짓은 저장 뒤 `markClean`) */
|
||||
markDirty: () => void;
|
||||
/** 미저장 탭이 있나(지금 탭은 페이지 표시로) */
|
||||
anyDirty: () => boolean;
|
||||
}
|
||||
@@ -227,7 +229,8 @@ export function createCadTabs<D>(options: CadTabsOptions<D>): CadTabs<D> {
|
||||
rename(tab, label);
|
||||
});
|
||||
}
|
||||
if ((features.remove || features.close) && !tab.fixed) {
|
||||
// 닫기는 마지막 한 탭이면 없음(볼 장이 하나는 남음)
|
||||
if ((features.remove || (features.close && list.length > 1)) && !tab.fixed) {
|
||||
const x = document.createElement("button");
|
||||
x.type = "button";
|
||||
x.className = "cad-tabs__x";
|
||||
@@ -318,13 +321,19 @@ export function createCadTabs<D>(options: CadTabsOptions<D>): CadTabs<D> {
|
||||
await stash();
|
||||
return list;
|
||||
},
|
||||
markClean: (keepDrawings = false) => {
|
||||
for (const tab of list) {
|
||||
markClean: (only, keepDrawings = false) => {
|
||||
for (const tab of only ? [only] : list) {
|
||||
tab.dirty = false;
|
||||
if (!keepDrawings) delete tab.drawing;
|
||||
}
|
||||
render();
|
||||
},
|
||||
markDirty: () => {
|
||||
const now = active();
|
||||
if (!now || now.dirty) return;
|
||||
now.dirty = true;
|
||||
render();
|
||||
},
|
||||
anyDirty: () => list.some((tab) => tab.dirty),
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user