@uniai-fe/uds-primitives 0.6.11 → 0.6.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
DatesProvider,
|
|
6
6
|
type DateStringValue,
|
|
7
7
|
} from "@mantine/dates";
|
|
8
|
+
import { useEffect, useState } from "react";
|
|
8
9
|
import { dayjs } from "../../../init/dayjs";
|
|
9
10
|
import { CalendarIcon } from "./Icon";
|
|
10
11
|
import type { CalendarDatePickerProps, CalendarGridProps } from "../types";
|
|
@@ -25,8 +26,14 @@ export default function CalendarCore({
|
|
|
25
26
|
onChange,
|
|
26
27
|
datePickerProps,
|
|
27
28
|
}: CalendarGridProps) {
|
|
28
|
-
const {
|
|
29
|
-
|
|
29
|
+
const {
|
|
30
|
+
valueFormat,
|
|
31
|
+
renderDay,
|
|
32
|
+
date,
|
|
33
|
+
defaultDate,
|
|
34
|
+
onDateChange,
|
|
35
|
+
...safeDatePickerProps
|
|
36
|
+
} = (datePickerProps ?? {}) as CalendarDatePickerProps & {
|
|
30
37
|
/**
|
|
31
38
|
* deprecated DatePicker 표시 포맷 옵션
|
|
32
39
|
*/
|
|
@@ -35,6 +42,18 @@ export default function CalendarCore({
|
|
|
35
42
|
// 변경: valueFormat은 의도적으로 폐기된 옵션이므로 명시적으로 무시한다.
|
|
36
43
|
void valueFormat;
|
|
37
44
|
|
|
45
|
+
const isDisplayedDateControlled = date !== undefined;
|
|
46
|
+
const [displayedDate, setDisplayedDate] = useState<Date | DateStringValue>(
|
|
47
|
+
() => date ?? mapValueToPicker(value) ?? defaultDate ?? new Date(),
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
useEffect(() => {
|
|
51
|
+
if (isDisplayedDateControlled) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
setDisplayedDate(mapValueToPicker(value) ?? defaultDate ?? new Date());
|
|
55
|
+
}, [defaultDate, isDisplayedDateControlled, value]);
|
|
56
|
+
|
|
38
57
|
// 기본 DatePicker 옵션/스타일 책임을 Calendar.Core에 고정한다.
|
|
39
58
|
const resolvedDatePickerProps = {
|
|
40
59
|
size: "sm" as const,
|
|
@@ -80,6 +99,13 @@ export default function CalendarCore({
|
|
|
80
99
|
onChange(parsed);
|
|
81
100
|
};
|
|
82
101
|
|
|
102
|
+
const handleDateChange = (nextDate: DateStringValue) => {
|
|
103
|
+
if (!isDisplayedDateControlled) {
|
|
104
|
+
setDisplayedDate(nextDate);
|
|
105
|
+
}
|
|
106
|
+
onDateChange?.(nextDate);
|
|
107
|
+
};
|
|
108
|
+
|
|
83
109
|
return (
|
|
84
110
|
<DatesProvider
|
|
85
111
|
settings={{
|
|
@@ -98,6 +124,8 @@ export default function CalendarCore({
|
|
|
98
124
|
value={mapValueToPicker(value) as never}
|
|
99
125
|
onChange={handleChange as never}
|
|
100
126
|
{...resolvedDatePickerProps}
|
|
127
|
+
date={date ?? displayedDate}
|
|
128
|
+
onDateChange={handleDateChange}
|
|
101
129
|
/>
|
|
102
130
|
</DatesProvider>
|
|
103
131
|
);
|