- 위험 채움 토큰 밝음 #e5484d → #d6363c(흰 글 3.91 → 4.72) · 어두움 5.6 · 위험 글 #c0392b 그대로 - 새 부품 계산 줄(ui_template_calc_row) — B08 수리집수면적표 b08-hydro__row · 식 칸 배치를 대신함 - 표 부품 칸 램프(ui-data-table__lamp · --only · ✓) — B08 집계표 · 거리이정표 · B09 설계내역 램프 CSS 세 벌을 걷음(표지 class 는 풍선 · 가이드용으로 남김) - 모달 넓은 중간 창(wide + width 1100px · 1100 × 680) — B09 운반 창 손 인라인 크기를 걷음 - 값 목록 규칙 꼴(rule) — ☰ 설정 규칙 줄 ul/li 를 걷음 - 접이 구역 머리(createCollapsibleHead = 패널 머리 + 접는 제목) — B08 구조물도 「조합 연결」 제목(옛 b08-sheets__title)을 대신함 - 일반 화면 틀 좁은 폭 · 입력 칸 2열 · 끝 단추 줄 — D01 · E01 이 B02 CSS 를 빌리던 것을 끊음(가이드 장면 선택자 맞춤) - 부품 모음 견본 · 지킴 시험 test_557_2 · 낡은 시험(198_1 · 247_1 · 251_1 · 257_1 · 276_1 · 551_1)은 부품 CSS · 새 class 로 맞춤 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
48 lines
2.3 KiB
TypeScript
48 lines
2.3 KiB
TypeScript
/* =============================================================================
|
|
* ui_template_setting_row.ts
|
|
* 부품 「설정 줄」(552-3 · 목록 33) — 왼쪽 제목 · 설명 / 오른쪽 값 · 조작 한 줄(Linear 꼴) · 여러 줄은 둥근 상자 하나에.
|
|
* 꼴 = 값 줄(`valueText` · 없으면 「-」) · 조작 줄(오른쪽에 입력 · 고르기 · 켜기 · 단추) · 설명 없는 줄
|
|
* 크기 = 줄 최소 52 · 여백 8 / 16 · 오른쪽 칸 최대 55 %
|
|
* 좁은 꼴 = `settingRow(제목, 설명, 오른쪽, { compact: true })` — 좁은 왼쪽 패널용 · 줄 최소 28 · 글 12 · 아래 선 없음 · 줄 통째가 label(`data-size="compact"`)
|
|
* 상태 = 기본만(조작 부품이 저마다 상태를 가짐)
|
|
* 쓰는 법 = `settingCard([settingRow("회사 이름", "보고서 머리에 들어감", valueText("산림설계"))])`
|
|
* 대신하는 옛 변종 = B01 `settingRow` · `settingCard`(`.b01-pg-row` · `.b01-pg-settings`) · `.b01-dashboard__setting-card` · E02 `e02-field` · E06 `e06-setting`
|
|
* ========================================================================== */
|
|
|
|
import { el } from "./ui_template_elements_base";
|
|
import "./ui_template_setting_row.css";
|
|
|
|
/** 한 줄 — 제목 · 설명 왼쪽 · 값 · 조작 오른쪽 */
|
|
export function settingRow(
|
|
title: string,
|
|
desc: string,
|
|
right: Node,
|
|
opts: { compact?: boolean } = {},
|
|
): HTMLElement {
|
|
const left = el("div", {
|
|
className: "ui-setting-row__text",
|
|
children: [el("strong", { text: title })],
|
|
});
|
|
if (desc) left.append(el("span", { className: "ui-setting-row__desc", text: desc }));
|
|
const side = el("div", { className: "ui-setting-row__side" });
|
|
side.append(right);
|
|
const row = el(opts.compact ? "label" : "div", {
|
|
className: "ui-setting-row",
|
|
children: [left, side],
|
|
});
|
|
if (opts.compact) row.dataset.size = "compact";
|
|
return row;
|
|
}
|
|
|
|
/** 값 글 — 없으면 「-」 */
|
|
export const valueText = (v: string | number | null | undefined): HTMLElement =>
|
|
el("span", {
|
|
className: "ui-setting-row__value",
|
|
text: v === null || v === undefined || v === "" ? "-" : String(v),
|
|
});
|
|
|
|
/** 설정 줄 묶음 — 둥근 상자 한 개 */
|
|
export function settingCard(rows: HTMLElement[]): HTMLElement {
|
|
return el("div", { className: "ui-setting-card", children: rows });
|
|
}
|