feat(project): 내 업무 패널 스크롤 + 프로젝트 폴더 펼치기/접기 토글

- .pj-home-side 에 max-height+overflow-y:auto 추가 — 목록이 길어지면
  패널 안에서만 스크롤(프로젝트 상세 화면은 기존 height:100% 우선 적용).
- "내 업무"의 프로젝트별 폴더 아이콘을 별도 토글 버튼으로 분리(이름은
  계속 프로젝트로 이동하는 링크) — 클릭 시 하위 업무 목록 펼침/접힘,
  아이콘도 folder_open/folder 로 전환. localStorage로 접힘 상태 기억.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-15 23:08:52 +09:00
parent 29ce3c7730
commit ecd4bd829e
5 changed files with 67 additions and 19 deletions
+30
View File
@@ -2441,11 +2441,41 @@
setTimeout(poll, 8000);
}
// ── "내 업무" 패널 — 프로젝트별 폴더 아이콘 클릭으로 하위 업무 목록
// 펼치기/접기. 홈 화면·프로젝트 상세 화면 둘 다 같은 마크업이라 공용으로
// 한 번만 처리한다(각 initXxx 와 무관, 서버 렌더 마크업 그대로 사용).
function wireMyTreeToggles() {
const KEY = "pj_mytree_collapsed";
let collapsed;
try { collapsed = new Set(JSON.parse(localStorage.getItem(KEY) || "[]")); }
catch (_) { collapsed = new Set(); }
function save() {
try { localStorage.setItem(KEY, JSON.stringify(Array.prototype.slice.call(collapsed))); } catch (_) {}
}
document.querySelectorAll(".pj-mytree-group").forEach(function (group) {
const gid = group.dataset.groupId;
const btn = group.querySelector(".pj-mytree-toggle");
const icon = btn ? btn.querySelector(".material-symbols-outlined") : null;
function apply() {
const isCollapsed = collapsed.has(gid);
group.classList.toggle("is-collapsed", isCollapsed);
if (icon) icon.textContent = isCollapsed ? "folder" : "folder_open";
}
apply();
if (btn) btn.addEventListener("click", function () {
if (collapsed.has(gid)) collapsed.delete(gid); else collapsed.add(gid);
save();
apply();
});
});
}
document.addEventListener("DOMContentLoaded", function () {
initHome();
initProject();
initBell();
initInbox();
initLiveRefresh();
wireMyTreeToggles();
});
})();