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"):