Files
Aislo/B07_DesignDetail/B07_DesignDetail_UI_GuideToggle.ts
T
eomsangdonandClaude Sonnet 5.5 835f9d9290 refactor(B07): 상세 설계 화면 페이지 자체 변종을 부품 상자 부품으로 — 도면 단추 · 장 번호 · 도구 단추 · 카드 · 띠 알림 · 값 목록 (PLAN 553-1)
- 도면 단추(날 ui-panel-btn) · 장 번호 · 도구 단추 = 단추 부품 · ⚙ = 아이콘 단추 꼴 · 평면도 줄 = 목록 줄 꼴
- 머리 = 패널 머리 + 배지 · 확정 건너뜀 = 띠 알림 · 빈 글 = 빈 상태 · 측점 정보 = 값 목록 · ⚙ 모달 그룹 상자 = 카드 · 종류 이름 칸 = 입력
- window.confirm 둘 → 확인창 부품 · 죽은 CSS 걷음 · 시험 헬퍼 부품 가짜 한 벌(helper_b07_part_stubs) · 153-1 옛 오류(removeAttribute) 고침 · 가이드 선택자 · 지킴 시험

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

45 lines
1.9 KiB
TypeScript

/* =============================================================================
* B07_DesignDetail_UI_GuideToggle.ts
* 횡단 장 안내선 보이기 / 숨기기 단추(PLAN 180-3) — 좌측 「횡단도」 묶음 배치 칸 줄에 붙음.
*
* 끄는 것 = 화면 전용 안내선 둘(붉은 넘침 칸 틀 + 파란 점선 작도 영역) · 인쇄되는 칸선은 그대로
* 상태 = 이 화면을 쓰는 동안만(저장 안 함) · 장을 바꾸거나 화면을 다시 세워도 이어짐(모듈 값)
* 숨김이면 「n 칸 넘침」 토스트도 안 띄움 · CAD 에는 `cad.setGuideVisible` 로 알림
* ========================================================================== */
import { createButton } from "@ui/ui_template_elements";
/** 안내선 보임 — 모듈 값(화면 다시 세워도 유지 · 새로 고침하면 보임으로) */
let shown = true;
export const guideShown = (): boolean => shown;
const labelOf = (visible: boolean): string => (visible ? "안내선 숨기기" : "안내선 보이기");
/**
* 단추 하나 — 누르면 보임 ↔ 숨김 · `apply(보임)` 로 CAD 에 알림.
* 장이 아닌 도면이면 꺼짐 — 부르는 쪽이 `button.disabled` 로 정함.
*/
export function buildGuideToggle(apply: (visible: boolean) => void): HTMLButtonElement {
const button = createButton({
label: labelOf(shown),
variant: "ghost",
size: 28, // ⚙ 설정 단추 줄 한 규격
onClick: () => {
shown = !shown;
paint();
apply(shown);
},
});
const paint = (): void => {
const label = button.children[button.children.length - 1];
if (label) label.textContent = labelOf(shown);
button.setAttribute("aria-pressed", String(!shown));
button.title = shown
? "점선 작도 영역 · 붉은 넘침 틀을 화면에서 숨김(인쇄 칸선은 그대로)"
: "숨긴 점선 작도 영역 · 붉은 넘침 틀을 다시 보임";
};
paint();
return button;
}