feat(M02): 「구조물 조합」 제목 줄 오른쪽 끝 「새 항목」 (PLAN 30-5 구조물 쪽)
- 쓸 수 있는 층만 · 구조물 조합일 때만 보임 · 나무 「항목 추가」와 같은 창 · 고른 폴더 안(없으면 맨 위) - 공용 모양 newItemButton · m02-main__new(일위대가 「새 조합」이 같은 자리 · 모양을 씀) - 시험 한 건 · 머리 줄 시험 맞춤 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -106,13 +106,23 @@ export function canEdit(layer: Layer, isAdmin: boolean): boolean {
|
||||
}
|
||||
|
||||
/** 페이지가 끼우는 것 — `top` = 편집 칸 맨 위 막대(회사용 읽기만 안내) · `onColumn` = 집계표에서 고른 열 ·
|
||||
* `search` = 「구조물 조합」을 열 때만 상세 위쪽에 보이는 나무 찾기 칸(나무는 좌측 패널 · PLAN 29-2) */
|
||||
* `search` = 「구조물 조합」을 열 때만 상세 위쪽에 보이는 나무 찾기 칸(나무는 좌측 패널 · PLAN 29-2) ·
|
||||
* `newItem` = 「구조물 조합」 제목 줄 오른쪽 끝 「새 항목」(쓸 수 있는 층만 · PLAN 30-5 · 공용 `m02-main__new`) */
|
||||
export interface MainExtras {
|
||||
top?: HTMLElement;
|
||||
search?: HTMLElement;
|
||||
newItem?: HTMLElement;
|
||||
onColumn?: (column: string | null) => void;
|
||||
}
|
||||
|
||||
/** 상세 제목 줄 오른쪽 끝 「새 …」 단추 — 공용 모양 `m02-main__new`(일위대가 「새 조합」과 같게 · 30-5) */
|
||||
export function newItemButton(run: () => void, label = L("M02_TreeNewItem")): HTMLElement {
|
||||
const button = createButton({ label, variant: "filled", size: "sm" });
|
||||
button.classList.add("m02-main__new");
|
||||
button.addEventListener("click", run);
|
||||
return button;
|
||||
}
|
||||
|
||||
/** `onOpened` — 무엇을 열든(좌측 · 카드 [도면 수정] · 다시 읽기) 연 바로 뒤 부름(좌측 고름 표시) */
|
||||
export function createMain(
|
||||
isAdmin: boolean,
|
||||
@@ -133,7 +143,10 @@ export function createMain(
|
||||
className: "m02-main",
|
||||
children: [
|
||||
...(extras.top ? [extras.top] : []),
|
||||
el("div", { className: "m02-main__head", children: [title, back, slot, reload, save] }),
|
||||
el("div", {
|
||||
className: "m02-main__head",
|
||||
children: [title, back, slot, reload, save, ...(extras.newItem ? [extras.newItem] : [])],
|
||||
}),
|
||||
...(extras.search ? [extras.search] : []),
|
||||
notice,
|
||||
host,
|
||||
@@ -143,9 +156,10 @@ export function createMain(
|
||||
const root = column;
|
||||
const isCombo = (at: Selection | null): boolean =>
|
||||
!!at && at.kind === "table" && at.name === STRUCTURE_TABLE && at.layer !== "project";
|
||||
// 찾기 칸은 「구조물 조합」일 때만
|
||||
// 찾기 칸 · 「새 항목」은 「구조물 조합」일 때만
|
||||
const showAside = (): void => {
|
||||
if (extras.search) extras.search.hidden = !isCombo(sel);
|
||||
if (extras.newItem) extras.newItem.hidden = !isCombo(sel);
|
||||
};
|
||||
|
||||
let sel: Selection | null = null;
|
||||
|
||||
Reference in New Issue
Block a user