Files
Aislo/ui_template/ui_template_setting_row.ts
T
eomsangdonandClaude Sonnet 5.5 917127a63c style(setting_row): 설정 줄 부품에 좁은 꼴 추가 · E06 설정 줄을 부품으로 · D03 3D 창의 B05 클래스 빌림 끊음 (PLAN 553-4 뒤처리)
- 설정 줄 좁은 꼴(compact · 줄 28 · 글 12 · 선 없음) + 부품 모음 견본 + 지킴 시험
- E06 e06-setting 걷음 · 가이드 장면 선택자 갱신
- D03 3D 창 = 자기 클래스(d03-plan__3d-modal · 3d-body) · 모달 부품 그대로 · 가이드 장면 선택자 갱신

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-26 23:04:33 +09:00

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` · B08 `b08-hydro__row`
* ========================================================================== */
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 });
}