260723_7
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
/* =============================================================================
|
||||
* ui_template_collapsible.ts
|
||||
* 페이지 공용 "접기 컨테이너" 동작. (B05 컨테이너 템플릿 기준으로 재사용)
|
||||
*
|
||||
* 규칙:
|
||||
* - 컨테이너에 `ui-collapsible`, 그 제목 요소에 `ui-collapsible__title` 클래스를 준다.
|
||||
* - 제목 **행 전체**를 클릭하면 컨테이너에 `is-collapsed`가 토글되어, 제목을 뺀 나머지 직속
|
||||
* 자식이 숨겨진다(펼침 ▾ / 접힘 ▸ 캐럿은 공용 CSS가 그린다).
|
||||
* - 컨테이너 내부의 별도 접힘 항목(`<details>` 등)은 건드리지 않는다.
|
||||
*
|
||||
* 스타일은 전역 `ui_template_theme.css`에 있어 어떤 페이지에서도 클래스만 붙이면 동작한다.
|
||||
* ========================================================================== */
|
||||
|
||||
/** root 아래 `.ui-collapsible__title` 클릭을 위임 처리해 해당 컨테이너를 접거나 편다. */
|
||||
export function attachCollapsible(root: HTMLElement): void {
|
||||
root.addEventListener("click", (event) => {
|
||||
const title = (event.target as HTMLElement).closest<HTMLElement>(".ui-collapsible__title");
|
||||
const container = title?.closest<HTMLElement>(".ui-collapsible");
|
||||
if (title && container) container.classList.toggle("is-collapsed");
|
||||
});
|
||||
}
|
||||
@@ -331,6 +331,33 @@
|
||||
}
|
||||
}
|
||||
|
||||
/* ─── 공용 접기 컨테이너 (ui_template_collapsible.ts) ─────────────────────────
|
||||
컨테이너에 `ui-collapsible`, 제목에 `ui-collapsible__title`을 주면 제목 행 전체가
|
||||
클릭 영역이 되고, 접히면 제목을 뺀 직속 자식이 숨겨진다. 펼침 ▾ / 접힘 ▸ 캐럿 표시. */
|
||||
.ui-collapsible__title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: var(--spacing-8, 8px);
|
||||
cursor: pointer;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.ui-collapsible__title::after {
|
||||
content: "▾";
|
||||
flex: 0 0 auto;
|
||||
color: var(--color-text-muted);
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
.ui-collapsible.is-collapsed > .ui-collapsible__title::after {
|
||||
content: "▸";
|
||||
}
|
||||
|
||||
.ui-collapsible.is-collapsed > :not(.ui-collapsible__title) {
|
||||
display: none;
|
||||
}
|
||||
|
||||
html,
|
||||
body {
|
||||
margin: 0;
|
||||
|
||||
Reference in New Issue
Block a user