fix(436 B06 평면 패널): 처음 높이 바닥 160 px · 높이 상한 = 패널 % 기준 칸(offsetParent) (433-8)

- 종단 판 펼친 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 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QfHKQs7J3hQELKMWQMUJEy
This commit is contained in:
2026-10-18 17:20:38 +09:00
co-authored by Claude Opus 5.5
parent 9513489847
commit eac20bd93b
3 changed files with 8 additions and 4 deletions
+2 -2
View File
@@ -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 = 칸이 낮음 */
}
/* 높이 끌기 손잡이 = 패널 아래 끝(공용 세로 손잡이는 위 끝) · 열렸을 때만 */
+2 -1
View File
@@ -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);
+4 -1
View File
@@ -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"):