fix(M01): 재료 컨테이너를 닫았다 다시 열면 기억된 거름과 목록이 어긋나던 것 — 마지막 거름으로 목록 되살림

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PAdA5ThqmtVSsbzjusk1cJ
This commit is contained in:
2026-09-21 19:29:51 +09:00
co-authored by Claude Sonnet 5
parent 472a63cfde
commit 77887c1bf4
+5 -2
View File
@@ -153,6 +153,8 @@ export function buildSide(
const runs = new Map<string, () => void>();
let restoring = false;
let onPicked = (): void => {};
/** 컨테이너별로 마지막에 고른 거름 줄 — 다시 펼칠 때 그 목록을 되살림(재료는 파일이 둘) */
const lastRun = new Map<Group, string>();
const setActive = (id: string | null): void => {
for (const [key, button] of buttons) button.classList.toggle("is-active", key === id);
@@ -235,6 +237,7 @@ export function buildSide(
/* 기억 못 해도 거름은 됨 */
}
setActive(a.id);
lastRun.set(a.id.split(/[|\n]/)[0] as Group, a.id);
a.onPick(
sub.select.value,
d,
@@ -405,12 +408,12 @@ export function buildSide(
onOpen({ group, file: one, sub: "", detail: "", label: L(GROUP_TITLE[group]) });
});
}
if (FILTERED.includes(group)) {
if (FILTERED.includes(group) || group === "재료") {
root.querySelector(".ui-collapsible__title")?.addEventListener("click", () => {
if (!root.classList.contains("is-collapsed")) return; // 닫을 때는 그대로 둠
restoring = true;
try {
runs.get(`${group}|`)?.();
runs.get(lastRun.get(group) ?? (group === "재료" ? "" : `${group}|`))?.();
} finally {
restoring = false;
}