feat(ui): B09 묶음 탭 보기 바꿈 단추 한 줄 · 가로 열 수 단추와 같은 줄(185-2)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018jonfdxn1Xit9bdkNJpE4G
This commit is contained in:
2026-10-10 12:55:20 +09:00
co-authored by Claude Sonnet 5.5
parent 9483c19ad3
commit 77872fd857
5 changed files with 101 additions and 9 deletions
@@ -44,6 +44,12 @@
gap: var(--spacing-8);
}
/* 185-2 보기 단추 글 한 줄 */
.b09-estimation__bar .ui-btn {
flex: none;
white-space: nowrap;
}
/* 182 설계내역서 레벨 — 글자 크기(줄 높이 28px 고정 → 16px 까지) · 첫 칸 들여쓰기 1em × (레벨 − 1) */
.b09-estimation .ui-data-table__table tbody tr.is-lv1 td {
font-size: var(--text-body);
@@ -177,7 +177,7 @@ function numberFormat(spec: TabTable, key: string): (v: number | null | undefine
/** 이 화면 안 보기(기억이 안 돼도 바꾼 보기 유지) */
const chosen = new Map<TabId, GroupView>();
/** 묶음 탭 — 머리(안내 + 보기 단추) · 고른 보기(카드 · 표) */
/** 묶음 탭 — 카드 = 안내 + 카드 판(보기 단추는 가로 열 수 줄) · 표 = 머리(안내 + 보기 단추) + 표 */
export function renderGroupPanel(o: {
tab: TabId;
spec: TabTable;
@@ -199,9 +199,6 @@ export function renderGroupPanel(o: {
},
});
toggle.dataset.b09GroupView = view;
const bar = document.createElement("div");
bar.className = "b09-estimation__bar";
bar.append(...(o.hint ? [o.hint] : []), toggle);
const at = o.focus === undefined ? -1 : rowIndex(o.spec.rows, o.focus);
if (view === "cards") {
const first = o.spec.columns[0]?.key ?? "";
@@ -213,10 +210,14 @@ export function renderGroupPanel(o: {
focus: at,
money: numberFormat(o.spec, "sum"),
qty: numberFormat(o.spec, "qty"),
actions: [toggle], // 185-2 가로 열 수 단추와 한 줄
});
cards.dataset.b09Table = o.tab;
return [bar, cards];
return [...(o.hint ? [o.hint] : []), cards];
}
const bar = document.createElement("div");
bar.className = "b09-estimation__bar";
bar.append(...(o.hint ? [o.hint] : []), toggle);
const range = pickRange(o.spec.rows, o.focus);
const table = o.makeTable((i) => pickClass(range, i));
if (at >= 0) requestAnimationFrame(() => table.focusRow(at));