-
예약 가능한 시간대
+ {/*
예약 가능한 시간대
*/}
},
{ path: 'activities/:id', element:
},
- { path: 'experiences/create', element:
},
- { path: 'experiences/create/:id', element:
},
+ {
+ loader: authGuardLoader,
+ children: [
+ { path: 'experiences/create', element:
},
+ { path: 'experiences/create/:id', element:
},
+ ],
+ },
{
path: 'mypage',
loader: authGuardLoader,
diff --git a/packages/design-system/src/components/DatePicker.tsx b/packages/design-system/src/components/DatePicker.tsx
index 30c9c9c3..41456c09 100644
--- a/packages/design-system/src/components/DatePicker.tsx
+++ b/packages/design-system/src/components/DatePicker.tsx
@@ -1,4 +1,6 @@
import dayjs, { type Dayjs } from 'dayjs';
+import { useState } from 'react';
+import { twMerge } from 'tailwind-merge';
import { Calendar } from './calendar';
import { CalendarIcon } from './icons';
@@ -12,44 +14,60 @@ interface DatePickerProps {
}
export default function DatePicker({ value, onChange, disabled }: DatePickerProps) {
+ const [isOpen, setIsOpen] = useState(false);
const formattedDate = value ? value.format('YY/MM/DD') : '';
const today = dayjs().format('YYYY-MM-DD');
+ const handleDateChange = (newDate: string) => {
+ onChange(dayjs(newDate));
+ setIsOpen(false); // 날짜 선택 시 팝오버 닫기
+ };
+
return (
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+ !disabled && setIsOpen(true)}>
+
+
+
+
+
+
+
+
+
+
+
+
-
- onChange(dayjs(newDate))}>
-
-
- {(day) => {
- const isBeforeToday = day.isBefore(dayjs(), 'day');
+
+
+
+
+
+ {(day) => {
+ const isBeforeToday = day.isBefore(dayjs(), 'day');
+ const isSelected = value && day.isSame(value, 'day');
+ const isToday = day.isSame(dayjs(), 'day');
- return (
-
- );
- }}
-
-
+ return (
+
+ );
+ }}
+
+
+
diff --git a/packages/design-system/src/components/popover/PopoverRoot.tsx b/packages/design-system/src/components/popover/PopoverRoot.tsx
index b25a9df9..220a3a14 100644
--- a/packages/design-system/src/components/popover/PopoverRoot.tsx
+++ b/packages/design-system/src/components/popover/PopoverRoot.tsx
@@ -150,8 +150,9 @@ function PopoverRoot({
const isInContent = contentElementRef.current?.contains(target);
const isInTrigger = triggerRef.current?.contains(target);
const isInSelectContent = document.querySelector('.select-content')?.contains(target); // popover위에 Select가 있을 때 항목이 선택되어도 팝오버까지 꺼지지 않도록
+ const isInDatePicker = document.querySelector('.date-picker')?.contains(target); // popover위에 datepicker가 있을 때 항목이 선택되어도 팝오버까지 꺼지지 않도록
- if (!isInContent && !isInTrigger && !isInSelectContent) {
+ if (!isInContent && !isInTrigger && !isInSelectContent && !isInDatePicker) {
internalSetOpen(false);
}
};
diff --git a/packages/design-system/src/pages/MypageProfileHeaderDoc.tsx b/packages/design-system/src/pages/MypageProfileHeaderDoc.tsx
index 8f2522f1..101098e0 100644
--- a/packages/design-system/src/pages/MypageProfileHeaderDoc.tsx
+++ b/packages/design-system/src/pages/MypageProfileHeaderDoc.tsx
@@ -3,7 +3,7 @@ import DocTemplate, { DocCode } from '../layouts/DocTemplate';
/* Playground는 편집 가능한 코드 블록입니다. */
/* Playground에서 사용할 예시 코드를 작성해주세요. */
-const code = `예시 코드를 작성해주세요.`;
+// const code = `예시 코드를 작성해주세요.`;
export default function MypageProfileHeaderDoc() {
return (
diff --git a/packages/design-system/src/pages/MypageSummaryCardDoc.tsx b/packages/design-system/src/pages/MypageSummaryCardDoc.tsx
index c45427bc..4cb6bca3 100644
--- a/packages/design-system/src/pages/MypageSummaryCardDoc.tsx
+++ b/packages/design-system/src/pages/MypageSummaryCardDoc.tsx
@@ -3,7 +3,7 @@ import DocTemplate, { DocCode } from '../layouts/DocTemplate';
/* Playground는 편집 가능한 코드 블록입니다. */
/* Playground에서 사용할 예시 코드를 작성해주세요. */
-const code = `예시 코드를 작성해주세요.`;
+// const code = `예시 코드를 작성해주세요.`;
export default function MypageSummaryCardDoc() {
return (
diff --git a/packages/design-system/src/pages/OngoingExperienceCardDoc.tsx b/packages/design-system/src/pages/OngoingExperienceCardDoc.tsx
index 1ccd9956..af9eb939 100644
--- a/packages/design-system/src/pages/OngoingExperienceCardDoc.tsx
+++ b/packages/design-system/src/pages/OngoingExperienceCardDoc.tsx
@@ -3,7 +3,7 @@ import DocTemplate, { DocCode } from '../layouts/DocTemplate';
/* Playground는 편집 가능한 코드 블록입니다. */
/* Playground에서 사용할 예시 코드를 작성해주세요. */
-const code = `예시 코드를 작성해주세요.`;
+// const code = `예시 코드를 작성해주세요.`;
export default function OngoingExperienceCardDoc() {
return (
diff --git a/packages/design-system/src/pages/UpcomingScheduleDoc.tsx b/packages/design-system/src/pages/UpcomingScheduleDoc.tsx
index 318bc4ea..7e42a5a1 100644
--- a/packages/design-system/src/pages/UpcomingScheduleDoc.tsx
+++ b/packages/design-system/src/pages/UpcomingScheduleDoc.tsx
@@ -4,7 +4,7 @@ import DocTemplate, { DocCode } from '../layouts/DocTemplate';
/* Playground는 편집 가능한 코드 블록입니다. */
/* Playground에서 사용할 예시 코드를 작성해주세요. */
-const code = `예시 코드를 작성해주세요.`;
+// const code = `예시 코드를 작성해주세요.`;
export default function UpcomingScheduleDoc() {
return (