- 49-1 공용 ui_template_side_panels — 세로 글 띠 · 접기 ▸ 걷어내고 공용 createWorkflowPanelHandle(side · right · 이름표) 손잡이를 패널 왼쪽 가장자리에 붙임 · 패널마다 손잡이 하나 · 하나만 열림 · 폭 공유 · 모두 접힘(폭 0 · 손잡이만 남음) — M01 로직 상세 · M02 일위대가 상세 · 면적산출 상세 모두 따라감 - 49-3 패널 묶음을 보이는 칸 안에 붙임(followView · 위 칸 overflow 가 CSS sticky 를 막아 JS) — 높이 = 보이는 칸 · 머리띠 아래 멈춤 · 몸만 스크롤 - 49-2 원문 md 읽기 — 빈 줄 · 주석이 붙은 표 둘을 가름(한 표로 합쳐지던 깨짐) · 칸 안 <br> = 줄바꿈 - 49-4 원문 칸 80vh 제한 걷어냄 — 표 높이 = 내용 · 가로 넓은 표만 가로 스크롤 - 49-5 원문 꼴 한 벌 — M01 둘레 글자 크기(14) 안 따르고 본문 크기(M02 와 같음) - 확인 시나리오 ui_checks/49_오른쪽패널_양식.js · 시험 test_m01_logic_source 표 가름 한 줄 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NPJGtfXo6GMbcpiboQC4uK
117 lines
2.6 KiB
CSS
117 lines
2.6 KiB
CSS
/* 본문 오른쪽 접는 패널 여럿 — 왼쪽 가장자리 손잡이(좌측 패널과 같은 꼴) · 편 패널 = 공유 폭(--ui-side-panels-width)
|
|
보이는 칸 안에 붙음(JS followView) — 몸만 따로 스크롤 · 메인 스크롤과 따로 */
|
|
|
|
/* 부르는 쪽 칸 — [본문, 패널 묶음] */
|
|
.ui-side-panels-row {
|
|
display: flex;
|
|
align-items: stretch;
|
|
min-width: 0;
|
|
}
|
|
|
|
.ui-side-panels-row[hidden] {
|
|
display: none;
|
|
}
|
|
|
|
.ui-side-panels-row > :first-child {
|
|
flex: 1 1 auto;
|
|
min-width: 0;
|
|
}
|
|
|
|
.ui-side-panels {
|
|
position: relative;
|
|
display: flex;
|
|
flex: none;
|
|
align-self: flex-start;
|
|
/* 높이 · 붙는 자리 = JS(followView) · 처음 한 번 그릴 때까지 */
|
|
height: calc(100vh - 80px);
|
|
/* 손잡이 자리(24) + 틈 */
|
|
margin-left: calc(var(--spacing-24) + var(--spacing-8));
|
|
}
|
|
|
|
/* 모두 접힘 — 폭 0 · 손잡이만 왼쪽 밖에 남음 */
|
|
.ui-side-panels.is-collapsed {
|
|
width: 0;
|
|
}
|
|
|
|
/* 손잡이 줄 — 패널 왼쪽 밖 세로 가운데 · 패널 둘이면 위아래로 */
|
|
.ui-side-panels__handles {
|
|
position: absolute;
|
|
z-index: 2;
|
|
top: 50%;
|
|
left: calc(-1 * var(--spacing-24));
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--spacing-4);
|
|
transform: translateY(-50%);
|
|
}
|
|
|
|
.ui-side-panels__handles > .ui-workflow-overlay__handle--side {
|
|
position: static;
|
|
transform: none;
|
|
border-right: 0;
|
|
border-left: 1px solid var(--panel-handle-border, var(--color-border));
|
|
border-radius: var(--radius-buttons) 0 0 var(--radius-buttons);
|
|
}
|
|
|
|
.ui-side-panels.is-resizing {
|
|
user-select: none;
|
|
}
|
|
|
|
.ui-side-panels__panel {
|
|
position: relative;
|
|
display: flex;
|
|
flex: none;
|
|
flex-direction: column;
|
|
width: var(--ui-side-panels-width, 420px);
|
|
min-width: 0;
|
|
height: 100%;
|
|
border: 1px solid var(--color-border);
|
|
border-radius: var(--radius-cards);
|
|
background: var(--color-surface);
|
|
}
|
|
|
|
.ui-side-panels__panel[hidden] {
|
|
display: none;
|
|
}
|
|
|
|
/* 왼쪽 경계 — 끌기 · 화살표 키 */
|
|
.ui-side-panels__grip {
|
|
position: absolute;
|
|
top: 0;
|
|
bottom: 0;
|
|
left: -5px;
|
|
width: 8px;
|
|
cursor: col-resize;
|
|
touch-action: none;
|
|
z-index: 1;
|
|
}
|
|
|
|
.ui-side-panels__grip:hover,
|
|
.ui-side-panels__grip:focus-visible,
|
|
.ui-side-panels.is-resizing .ui-side-panels__grip {
|
|
background: var(--color-primary);
|
|
opacity: 0.4;
|
|
}
|
|
|
|
.ui-side-panels__head {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--spacing-8);
|
|
padding: var(--spacing-8) var(--spacing-12);
|
|
border-bottom: 1px solid var(--color-border);
|
|
}
|
|
|
|
.ui-side-panels__title {
|
|
flex: 1 1 auto;
|
|
min-width: 0;
|
|
color: var(--color-text);
|
|
}
|
|
|
|
.ui-side-panels__body {
|
|
flex: 1 1 auto;
|
|
min-width: 0;
|
|
min-height: 0;
|
|
padding: var(--spacing-12);
|
|
overflow: auto;
|
|
}
|