feat(WEB): 공사관리 리스트 공통화 및 캘린더/포맷터 기능 개선
공사관리 리스트 공통화: - 입찰/계약/견적/인수인계/이슈/품목/노무/현장/파트너/단가/기성/현장브리핑/구조검토/유틸리티/작업자현황 리스트 공통 포맷터 적용 - 중복 포맷팅 로직 제거 (-530줄) 캘린더 기능 개선: - CEODashboard CalendarSection 기능 확장 - ScheduleCalendar DayCell/MonthView/WeekView 개선 - ui/calendar 컴포넌트 기능 추가 유틸리티 개선: - date.ts 날짜 유틸 함수 추가 - formatAmount.ts 금액 포맷 함수 추가 신규 추가: - useListHandlers 훅 추가 - src/constants/ 디렉토리 추가 - 포맷터 공통화 계획 문서 추가 - SAM ERP/MES 정체성 분석 문서 추가 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -3,14 +3,36 @@
|
||||
import * as React from "react";
|
||||
import { ChevronLeft, ChevronRight } from "lucide-react";
|
||||
import { DayPicker } from "react-day-picker";
|
||||
import { format, getDay } from "date-fns";
|
||||
|
||||
import { cn } from "./utils";
|
||||
import { buttonVariants } from "./button";
|
||||
import { isHoliday } from "@/constants/calendarEvents";
|
||||
|
||||
// 토요일 체크 함수 (react-day-picker modifier용)
|
||||
const saturdayMatcher = (date: Date) => {
|
||||
const dateStr = format(date, "yyyy-MM-dd");
|
||||
// 토요일이면서 공휴일이 아닌 경우만
|
||||
return getDay(date) === 6 && !isHoliday(dateStr);
|
||||
};
|
||||
|
||||
// 일요일 체크 함수 (react-day-picker modifier용)
|
||||
const sundayMatcher = (date: Date) => {
|
||||
return getDay(date) === 0;
|
||||
};
|
||||
|
||||
// 공휴일 체크 함수 (react-day-picker modifier용)
|
||||
const holidayMatcher = (date: Date) => {
|
||||
const dateStr = format(date, "yyyy-MM-dd");
|
||||
return isHoliday(dateStr);
|
||||
};
|
||||
|
||||
function Calendar({
|
||||
className,
|
||||
classNames,
|
||||
showOutsideDays = true,
|
||||
modifiers,
|
||||
modifiersClassNames,
|
||||
...props
|
||||
}: React.ComponentProps<typeof DayPicker>) {
|
||||
// Hydration 불일치 방지: 클라이언트에서만 렌더링
|
||||
@@ -27,8 +49,25 @@ function Calendar({
|
||||
);
|
||||
}
|
||||
|
||||
// 공휴일/토요일/일요일 modifiers 병합
|
||||
const mergedModifiers = {
|
||||
saturday: saturdayMatcher,
|
||||
sunday: sundayMatcher,
|
||||
holiday: holidayMatcher,
|
||||
...modifiers,
|
||||
};
|
||||
|
||||
const mergedModifiersClassNames = {
|
||||
saturday: "text-blue-500 font-semibold",
|
||||
sunday: "text-red-500 font-semibold",
|
||||
holiday: "text-red-500 font-semibold",
|
||||
...modifiersClassNames,
|
||||
};
|
||||
|
||||
return (
|
||||
<DayPicker
|
||||
modifiers={mergedModifiers}
|
||||
modifiersClassNames={mergedModifiersClassNames}
|
||||
showOutsideDays={showOutsideDays}
|
||||
className={cn("p-0 w-full", className)}
|
||||
classNames={{
|
||||
|
||||
Reference in New Issue
Block a user