feat(M02): 일위대가 · 면적산출 상세 오른쪽 패널 따로 스크롤 — follow:false · 고정 높이 · 원문 강조는 패널 몸만(85-5)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4uKaV4ZBhsJN4GHG7yRj4
This commit is contained in:
@@ -28,6 +28,21 @@
|
||||
margin-left: calc(var(--spacing-24) + var(--spacing-8));
|
||||
}
|
||||
|
||||
/* follow:false(85-5) — 부르는 칸(고정 높이) 높이를 채움 · 패널 내용이 칸 높이를 늘리지 않음 */
|
||||
.ui-side-panels.is-fill {
|
||||
align-self: stretch;
|
||||
width: var(--ui-side-panels-width, 420px);
|
||||
height: auto;
|
||||
min-height: 240px;
|
||||
}
|
||||
|
||||
.ui-side-panels.is-fill > .ui-side-panels__panel {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
width: auto;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
/* 모두 접힘 — 폭 0 · 손잡이만 왼쪽 밖에 남음 */
|
||||
.ui-side-panels.is-collapsed {
|
||||
width: 0;
|
||||
@@ -113,4 +128,5 @@
|
||||
min-height: 0;
|
||||
padding: var(--spacing-12);
|
||||
overflow: auto;
|
||||
overscroll-behavior: contain; /* 몸 끝에서 메인으로 이어 굴리지 않음(85-5) */
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
* 좌측 패널과 같은 접기 양식 — 패널 왼쪽 가장자리 손잡이(공용 createWorkflowPanelHandle · 오른쪽으로 접힘)
|
||||
* 패널마다 손잡이 하나(이름표 세로) · 누르면 폄/접음 · 모두 접히면 손잡이만 남음
|
||||
* 편 패널 = 머리(제목) + 몸 · 왼쪽 경계 끌기(화살표 키) · 보이는 칸 안에 붙어 몸만 따로 스크롤(followView)
|
||||
* `follow: false`(85-5) = followView 안 씀 · 부르는 칸(고정 높이) 높이를 채움 · 메인 스크롤과 따로(M02 상세)
|
||||
* 열린 패널 · 폭 = 부르는 쪽 취향 키(`aislo:pref:{prefKey}`)
|
||||
* 부르기: const sp = createSidePanels({ prefKey, panels: [{ id, title, body }] }) →
|
||||
* 본문과 함께 `.ui-side-panels-row` 칸에 [본문, sp.root] 로 넣음
|
||||
@@ -42,6 +43,8 @@ export interface SidePanelsOpts {
|
||||
onChange?(open: string | null): void;
|
||||
/** 폭이 바뀜(끌기 · 화살표) */
|
||||
onResize?(px: number): void;
|
||||
/** 보이는 칸 따라 붙음(followView) · 기본 참 · 거짓 = 부르는 칸 높이를 채움(칸이 고정 높이 · 85-5) */
|
||||
follow?: boolean;
|
||||
}
|
||||
|
||||
export interface SidePanels {
|
||||
@@ -166,7 +169,8 @@ export function createSidePanels(opts: SidePanelsOpts): SidePanels {
|
||||
}
|
||||
|
||||
draw();
|
||||
followView(root);
|
||||
if (opts.follow === false) root.classList.add("is-fill");
|
||||
else followView(root);
|
||||
return { root, open, current: () => now, width: () => width };
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user