38 lines
1.3 KiB
TypeScript
38 lines
1.3 KiB
TypeScript
import { state } from '../state';
|
|
|
|
export function initSidebar(renderContent: () => void) {
|
|
const navItems = document.querySelectorAll('.nav-list li');
|
|
const titleElement = document.getElementById('current-tab-title') as HTMLHeadingElement;
|
|
const btnAddAsset = document.getElementById('btn-add-asset') as HTMLButtonElement;
|
|
|
|
navItems.forEach(item => {
|
|
item.addEventListener('click', () => {
|
|
// 탭 UI 업데이트
|
|
navItems.forEach(nav => nav.classList.remove('active'));
|
|
item.classList.add('active');
|
|
|
|
// 상태 업데이트
|
|
state.activeCategory = item.getAttribute('data-category') as 'hw' | 'sw';
|
|
state.activeSubTab = item.getAttribute('data-tab') || '대시보드';
|
|
|
|
// 타이틀 업데이트 (Deep Green 포인트 컬러 유지)
|
|
const catName = state.activeCategory === 'hw' ? '하드웨어' : '소프트웨어';
|
|
if (titleElement) {
|
|
titleElement.textContent = `${catName} / ${state.activeSubTab}`;
|
|
}
|
|
|
|
// 추가 버튼 노출 여부 (대시보드에서는 숨김)
|
|
if (btnAddAsset) {
|
|
if (state.activeSubTab === '대시보드') {
|
|
btnAddAsset.classList.add('hidden');
|
|
} else {
|
|
btnAddAsset.classList.remove('hidden');
|
|
}
|
|
}
|
|
|
|
// 화면 리렌더링
|
|
renderContent();
|
|
});
|
|
});
|
|
}
|