From eac20bd93bf078fea1b245b5e84efb81db96c962 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Sun, 18 Oct 2026 17:20:38 +0900 Subject: [PATCH] =?UTF-8?q?fix(436=20B06=20=ED=8F=89=EB=A9=B4=20=ED=8C=A8?= =?UTF-8?q?=EB=84=90):=20=EC=B2=98=EC=9D=8C=20=EB=86=92=EC=9D=B4=20?= =?UTF-8?q?=EB=B0=94=EB=8B=A5=20160=20px=20=C2=B7=20=EB=86=92=EC=9D=B4=20?= =?UTF-8?q?=EC=83=81=ED=95=9C=20=3D=20=ED=8C=A8=EB=84=90=20%=20=EA=B8=B0?= =?UTF-8?q?=EC=A4=80=20=EC=B9=B8(offsetParent)=20(433-8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 종단 판 펼친 B06 = 칸 225 px 라 32 % 가 72 px — max(32%, 160px) - 끌기 상한이 높이 0 인 횡단 center 를 재어 늘 120 px 로 눌림 — offsetParent 높이 − 48 px - PLAN 436-1 검증완료 Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01QfHKQs7J3hQELKMWQMUJEy --- A00_Common/design/design_page.css | 4 ++-- A00_Common/design/design_plan_peek.ts | 3 ++- resources/tester/test_258_b06_plan_peek.py | 5 ++++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/A00_Common/design/design_page.css b/A00_Common/design/design_page.css index 6543b3961..b169717c2 100644 --- a/A00_Common/design/design_page.css +++ b/A00_Common/design/design_page.css @@ -93,7 +93,7 @@ } /* 횡단 보기 위 평면 겹침 패널(요구 258 · 263 · `design_plan_peek`) — 카드 칸 위에 뜸(자리 안 차지) · - 닫히면 손잡이만 위 가운데 · 열면 처음 높이 32 % · 아래 끝 끌어 조절 · 조작은 B05 평면 그대로라 + 닫히면 손잡이만 위 가운데 · 열면 처음 높이 32 %(160 px 아래로 안 감) · 아래 끝 끌어 조절 · 조작은 B05 평면 그대로라 단추 줄 · 안내 · 상태줄 등만 감춤. */ .design-plan-peek { position: absolute; @@ -106,7 +106,7 @@ } .design-plan-peek.is-open { - height: var(--design-plan-peek-height, 32%); + height: var(--design-plan-peek-height, max(32%, 160px)); /* 종단 판 펼친 B06 = 칸이 낮음 */ } /* 높이 끌기 손잡이 = 패널 아래 끝(공용 세로 손잡이는 위 끝) · 열렸을 때만 */ diff --git a/A00_Common/design/design_plan_peek.ts b/A00_Common/design/design_plan_peek.ts index 0ff936cae..4767bd789 100644 --- a/A00_Common/design/design_plan_peek.ts +++ b/A00_Common/design/design_plan_peek.ts @@ -29,13 +29,14 @@ export function mountPlanPeek( body.append(note); const handle = createWorkflowPanelHandle("bottom", "up", "평면"); // 아래 끝 끌어 높이 — 120 px ~ 칸 높이 − 48 px(손잡이 자리) · 두 번 누름 = 처음 높이(32 %) + // 칸 = 패널 % 높이가 재는 자리(offsetParent) — `center` 는 높이 0 const resizer = createPanelResizer({ axis: "vertical", target: root, cssVar: "--design-plan-peek-height", direction: 1, min: 120, - max: () => center.clientHeight - 48, + max: () => (root.offsetParent?.clientHeight ?? 0) - 48, storageKey: stateKey("plan-peek-height") ?? undefined, }); root.append(body, resizer.root, handle.root); diff --git a/resources/tester/test_258_b06_plan_peek.py b/resources/tester/test_258_b06_plan_peek.py index 0f7f530a2..d5e12010a 100644 --- a/resources/tester/test_258_b06_plan_peek.py +++ b/resources/tester/test_258_b06_plan_peek.py @@ -53,6 +53,7 @@ def test_높이_끌기와_기억() -> None: assert "createPanelResizer({" in PEEK assert 'cssVar: "--design-plan-peek-height",' in PEEK and "direction: 1," in PEEK assert 'storageKey: stateKey("plan-peek-height")' in PEEK + assert "max: () => (root.offsetParent?.clientHeight ?? 0) - 48," in PEEK assert "resizer.restore();" in PEEK[PEEK.index("const open = async") :] state = (ROOT / "A00_Common" / "b_page_state.ts").read_text(encoding="utf-8") assert '"plan-peek-height": { bucket: "pref", scope: "global" },' in state @@ -65,7 +66,9 @@ def test_겹침_자리와_감춤() -> None: root = _rule(".design-plan-peek") assert "position: absolute;" in root and "z-index: 4;" in root assert "pointer-events: none;" in root # 닫힌 동안 카드 누름 통과 - assert "height: var(--design-plan-peek-height, 32%);" in _rule(".design-plan-peek.is-open") + assert "height: var(--design-plan-peek-height, max(32%, 160px));" in _rule( + ".design-plan-peek.is-open" + ) hidden = CSS[CSS.index(".design-plan-peek .b05-routeedit__tools,") :] hidden = hidden[: hidden.index("}")] for part in ("__tools", "__info", "__measure", "__side-wrap", "b05-contourlock"):