feat(WEB): API 인프라 리팩토링, CEO 대시보드 현황판 개선 및 문서 시스템 강화
- API: fetch-wrapper/proxy/refresh-token 리팩토링, authenticated-fetch 신규 추가 - CEO 대시보드: EnhancedSections 현황판 기능 개선, dashboard transformers/types 확장 - 문서 시스템: ApprovalLine/DocumentHeader/DocumentToolbar/DocumentViewer 개선 - 작업지시서: 검사보고서/작업일지 문서 컴포넌트 개선 (벤딩/스크린/슬랫) - 레이아웃: Sidebar/AuthenticatedLayout 수정 - 작업자화면: WorkerScreen 수정 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { ChevronRight, Circle } from 'lucide-react';
|
||||
import { ChevronRight, ChevronsDownUp, ChevronsUpDown, Circle } from 'lucide-react';
|
||||
import type { MenuItem } from '@/store/menuStore';
|
||||
import { useEffect, useRef } from 'react';
|
||||
|
||||
@@ -10,6 +10,7 @@ interface SidebarProps {
|
||||
isMobile: boolean;
|
||||
onMenuClick: (menuId: string, path: string) => void;
|
||||
onToggleSubmenu: (menuId: string) => void;
|
||||
onToggleAll?: () => void;
|
||||
onCloseMobileSidebar?: () => void;
|
||||
}
|
||||
|
||||
@@ -245,6 +246,7 @@ export default function Sidebar({
|
||||
isMobile,
|
||||
onMenuClick,
|
||||
onToggleSubmenu,
|
||||
onToggleAll,
|
||||
onCloseMobileSidebar,
|
||||
}: SidebarProps) {
|
||||
// 활성 메뉴 자동 스크롤을 위한 ref
|
||||
@@ -274,8 +276,27 @@ export default function Sidebar({
|
||||
sidebarCollapsed ? 'px-2 py-2' : 'px-3 py-4 md:px-4 md:py-4'
|
||||
}`}
|
||||
>
|
||||
{/* 전체 열기/닫기 토글 버튼 - 사이드바 펼침 상태에서만 표시 */}
|
||||
{!sidebarCollapsed && onToggleAll && (
|
||||
<button
|
||||
onClick={onToggleAll}
|
||||
className="w-full flex items-center space-x-2 px-3 py-2 rounded-lg text-xs text-muted-foreground hover:bg-accent hover:text-foreground transition-all duration-200"
|
||||
>
|
||||
{expandedMenus.length > 0 ? (
|
||||
<>
|
||||
<ChevronsDownUp className="h-3.5 w-3.5 flex-shrink-0" />
|
||||
<span>모두 접기</span>
|
||||
</>
|
||||
) : (
|
||||
<>
|
||||
<ChevronsUpDown className="h-3.5 w-3.5 flex-shrink-0" />
|
||||
<span>모두 펼치기</span>
|
||||
</>
|
||||
)}
|
||||
</button>
|
||||
)}
|
||||
<div className={`transition-all duration-300 ${
|
||||
sidebarCollapsed ? 'space-y-1 mt-2' : 'space-y-1.5 mt-3'
|
||||
sidebarCollapsed ? 'space-y-1 mt-2' : 'space-y-1.5 mt-1'
|
||||
}`}>
|
||||
{menuItems.map((item) => (
|
||||
<MenuItemComponent
|
||||
|
||||
Reference in New Issue
Block a user