merge(sub_laptop_6): 552-3 묶음 부품 15 — 부품 모음 목록 import 충돌 양쪽 살림(552-2 기본 import + 552-3 부품 파일 import)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -10,7 +10,6 @@
|
||||
* ========================================================================== */
|
||||
|
||||
import { el } from "./ui_template_elements_base";
|
||||
import { createButton } from "./ui_template_button";
|
||||
|
||||
// 차트·기본 스타일 조각은 파일이 700줄을 넘어 떼어냈다(2026-09-04).
|
||||
// 여기서 그대로 다시 내보내 호출부의 import 경로는 불변이다.
|
||||
@@ -69,43 +68,8 @@ export {
|
||||
* 확인을 받아 어느 실행 환경에서도 같은 동작을 보장한다.
|
||||
* -------------------------------------------------------------------------- */
|
||||
|
||||
/** 확인/취소 모달 — 확인이면 true. 네이티브 confirm 대신 반드시 이것을 쓴다. */
|
||||
export function showConfirmDialog(
|
||||
message: string,
|
||||
confirmLabel = "확인",
|
||||
cancelLabel = "취소",
|
||||
): Promise<boolean> {
|
||||
return new Promise((resolve) => {
|
||||
const overlay = el("div", { className: "ui-confirm" });
|
||||
const panel = el("div", { className: "ui-confirm__panel" });
|
||||
const text = el("p", { className: "ui-confirm__message", text: message });
|
||||
const actions = el("div", { className: "ui-confirm__actions" });
|
||||
const back = document.activeElement as HTMLElement | null; // 닫힐 때 초점을 돌려놓을 자리
|
||||
const done = (result: boolean): void => {
|
||||
overlay.remove();
|
||||
if (back?.isConnected && back !== document.body) back.focus({ preventScroll: true });
|
||||
resolve(result);
|
||||
};
|
||||
const cancel = createButton({
|
||||
label: cancelLabel,
|
||||
variant: "ghost",
|
||||
onClick: () => done(false),
|
||||
});
|
||||
actions.append(
|
||||
cancel,
|
||||
createButton({ label: confirmLabel, variant: "danger", onClick: () => done(true) }),
|
||||
);
|
||||
overlay.addEventListener("keydown", (ev) => {
|
||||
if (ev.key !== "Escape") return;
|
||||
ev.stopPropagation(); // 뒤 창 · 페이지 Esc 까지 닫지 않음
|
||||
done(false);
|
||||
});
|
||||
panel.append(text, actions);
|
||||
overlay.append(panel);
|
||||
document.body.append(overlay);
|
||||
cancel.focus(); // 창에 초점 — 뒤 칸에 글이 들어가지 않고 Esc 가 먹음
|
||||
});
|
||||
}
|
||||
// 부품 「모달 · 확인창」(552-3) = ui_template_modal.ts — 부름 꼴 그대로
|
||||
export { askConfirm, askText, showConfirmDialog } from "./ui_template_modal";
|
||||
|
||||
/* -----------------------------------------------------------------------------
|
||||
* 7. 워크플로우 3단 레이아웃 셸 (frontend.md §2)
|
||||
|
||||
Reference in New Issue
Block a user