From 5982748ef606827393a8f8f8159780b46ef0774f Mon Sep 17 00:00:00 2001 From: umsangdon Date: Mon, 28 Sep 2026 23:19:17 +0900 Subject: [PATCH] =?UTF-8?q?fix(M02):=20=EC=9E=90=EC=9E=AC=20=EC=A1=B0?= =?UTF-8?q?=ED=95=A9=20[=EC=83=88=EB=A1=9C]=20=C2=B7=20[=EB=B3=B8=EB=96=A0?= =?UTF-8?q?=20=EB=A7=8C=EB=93=A4=EA=B8=B0]=20=EC=97=B4=EC=9E=90=EB=A7=88?= =?UTF-8?q?=EC=9E=90=20=EC=9D=B4=EB=A6=84=20=EC=B9=B8=EC=97=90=20=EC=B4=88?= =?UTF-8?q?=EC=A0=90=20=C2=B7=20=EB=B3=B8=EB=96=A0=20=EB=A7=8C=EB=93=A4?= =?UTF-8?q?=EA=B8=B0=EB=8A=94=20=EC=9D=B4=EB=A6=84=20=EC=B9=B8=20=EB=B9=84?= =?UTF-8?q?=EC=9B=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01VwJQ5eRrCKf3nH9EFeKvJz --- M02_MasterTemplete/M02_MasterTemplete_Matset.ts | 7 +++++-- M02_MasterTemplete/M02_MasterTemplete_Matset_Text.ts | 1 - resources/tester/test_m02_matset.py | 7 +++++++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/M02_MasterTemplete/M02_MasterTemplete_Matset.ts b/M02_MasterTemplete/M02_MasterTemplete_Matset.ts index 9627e7b5..931e58d6 100644 --- a/M02_MasterTemplete/M02_MasterTemplete_Matset.ts +++ b/M02_MasterTemplete/M02_MasterTemplete_Matset.ts @@ -213,7 +213,10 @@ export function buildMatsetSection(opt: MatsetSectionOptions): MatsetSection { ], }); const setDirty = opt.show(isNew ? tm("New") : `${row.키} ${row.이름}`, node); - if (isNew) setDirty(true); + if (isNew) { + setDirty(true); + node.querySelector('[data-matset-field="이름"]')?.focus(); // 바로 이름 적기 + } opt.onOpen(); paintList(); paintButtons(); @@ -227,7 +230,7 @@ export function buildMatsetSection(opt: MatsetSectionOptions): MatsetSection { const from = all.find((x) => x.키 === openKey); if (!from || !(await opt.confirmLeave())) return; const copy = structuredClone(from); - draw({ ...copy, 키: "", 이름: tm("CopyName", from.이름), 본뜬키: from.키, 소유: "현장" }, true); + draw({ ...copy, 키: "", 이름: "", 본뜬키: from.키, 소유: "현장" }, true); // 이름은 새로 적음 }); btnDel.addEventListener("click", async () => { const key = openKey; diff --git a/M02_MasterTemplete/M02_MasterTemplete_Matset_Text.ts b/M02_MasterTemplete/M02_MasterTemplete_Matset_Text.ts index 41b961cd..541568e8 100644 --- a/M02_MasterTemplete/M02_MasterTemplete_Matset_Text.ts +++ b/M02_MasterTemplete/M02_MasterTemplete_Matset_Text.ts @@ -10,7 +10,6 @@ const TEXT = { Search: ["키 · 이름으로 찾기", "Search by key or name"], Empty: ["자재 조합 없음", "No material sets"], New: ["새 자재 조합(저장 전)", "New material set (unsaved)"], - CopyName: ["{value} 본뜸", "{value} copy"], Save: ["저장", "Save"], InUse: [ "{value} 열이 쓰는 자재 조합이라 못 지움", diff --git a/resources/tester/test_m02_matset.py b/resources/tester/test_m02_matset.py index 47e5a749..7c4589c0 100644 --- a/resources/tester/test_m02_matset.py +++ b/resources/tester/test_m02_matset.py @@ -123,3 +123,10 @@ def test_쓰는_열이_있으면_못_지우고_없으면_지워진다(client) -> def test_M01_마스터는_UM_을_모른다() -> None: assert "UM" not in m01.cm.mk.IDS and "자재조합" not in m01.cm.mk.ROW_ORDER + + +def test_새로_본떠_만들기는_열자마자_이름_칸에_초점() -> None: + ui = (ROOT / "M02_MasterTemplete/M02_MasterTemplete_Matset.ts").read_text(encoding="utf-8") + assert "'[data-matset-field=\"이름\"]')?.focus()" in ui.split("if (isNew) {")[1] + copy = ui.split("btnCopy.addEventListener")[1].split("});")[0] + assert '이름: ""' in copy # 본떠 만들기는 이름 칸 비움