pds-dev-kit-web-test 2.5.490 → 2.5.491

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.
Files changed (82) hide show
  1. package/dist/index.d.ts +4 -4
  2. package/dist/index.js +4 -5
  3. package/dist/src/common/services/i18n/resources/en.json +42 -1
  4. package/dist/src/common/services/i18n/resources/es.json +41 -1
  5. package/dist/src/common/services/i18n/resources/fil.json +41 -1
  6. package/dist/src/common/services/i18n/resources/index.d.ts +285 -0
  7. package/dist/src/common/services/i18n/resources/ja.json +42 -1
  8. package/dist/src/common/services/i18n/resources/ko.json +42 -1
  9. package/dist/src/common/services/i18n/resources/zh-cn.json +42 -1
  10. package/dist/src/common/services/i18n/resources/zh-tw.json +42 -1
  11. package/dist/src/common/types/components.d.ts +9 -0
  12. package/dist/src/common/types/components.js +8 -0
  13. package/dist/src/common/types/index.d.ts +0 -1
  14. package/dist/src/common/types/index.js +0 -1
  15. package/dist/src/common/utils/dateHelper.d.ts +3 -0
  16. package/dist/src/common/utils/dateHelper.js +37 -0
  17. package/dist/src/desktop/components/BasicFormGroup/BasicFormGroup.d.ts +18 -1
  18. package/dist/src/desktop/components/BasicFormGroup/BasicFormGroup.js +46 -3
  19. package/dist/src/desktop/components/BoxItem/BoxItem.d.ts +1 -5
  20. package/dist/src/desktop/components/BoxItem/BoxItem.js +5 -8
  21. package/dist/src/desktop/components/Calendar/AllDaySchedulesSection.d.ts +13 -0
  22. package/dist/src/desktop/components/Calendar/AllDaySchedulesSection.js +132 -0
  23. package/dist/src/desktop/components/Calendar/Calendar.d.ts +4 -0
  24. package/dist/src/desktop/components/Calendar/Calendar.js +384 -0
  25. package/dist/src/desktop/components/Calendar/CurrentTimeIndicator.d.ts +7 -0
  26. package/dist/src/desktop/components/Calendar/CurrentTimeIndicator.js +48 -0
  27. package/dist/src/desktop/components/Calendar/DailyView.d.ts +17 -0
  28. package/dist/src/desktop/components/Calendar/DailyView.js +64 -0
  29. package/dist/src/desktop/components/Calendar/MonthlyView.d.ts +27 -0
  30. package/dist/src/desktop/components/Calendar/MonthlyView.js +263 -0
  31. package/dist/src/desktop/components/Calendar/MultiWeekSchedulesLayer.d.ts +19 -0
  32. package/dist/src/desktop/components/Calendar/MultiWeekSchedulesLayer.js +73 -0
  33. package/dist/src/desktop/components/Calendar/ScheduleItem.d.ts +16 -0
  34. package/dist/src/desktop/components/Calendar/ScheduleItem.js +50 -0
  35. package/dist/src/desktop/components/Calendar/TimeBasedScheduleItem.d.ts +9 -0
  36. package/dist/src/desktop/components/Calendar/TimeBasedScheduleItem.js +170 -0
  37. package/dist/src/desktop/components/Calendar/WeeklyView.d.ts +21 -0
  38. package/dist/src/desktop/components/Calendar/WeeklyView.js +91 -0
  39. package/dist/src/desktop/components/Calendar/YearlyView.d.ts +12 -0
  40. package/dist/src/desktop/components/Calendar/YearlyView.js +76 -0
  41. package/dist/src/desktop/components/Calendar/calendarUtils.d.ts +24 -0
  42. package/dist/src/desktop/components/Calendar/calendarUtils.js +112 -0
  43. package/dist/src/desktop/components/Calendar/constants.d.ts +1 -0
  44. package/dist/src/desktop/components/Calendar/constants.js +31 -0
  45. package/dist/src/desktop/components/Calendar/index.d.ts +10 -0
  46. package/dist/src/desktop/components/Calendar/index.js +37 -0
  47. package/dist/src/desktop/components/Calendar/timeFormatUtils.d.ts +16 -0
  48. package/dist/src/desktop/components/Calendar/timeFormatUtils.js +45 -0
  49. package/dist/src/desktop/components/Calendar/types.d.ts +60 -0
  50. package/dist/src/desktop/components/Calendar/types.js +2 -0
  51. package/dist/src/desktop/components/index.d.ts +2 -2
  52. package/dist/src/desktop/components/index.js +4 -4
  53. package/dist/src/desktop/index.d.ts +1 -1
  54. package/dist/src/desktop/index.js +2 -2
  55. package/dist/src/desktop/panels/MultilingualModal/MultilingualModal.d.ts +23 -0
  56. package/dist/src/desktop/panels/MultilingualModal/MultilingualModal.js +199 -0
  57. package/dist/src/desktop/panels/MultilingualModal/index.d.ts +1 -0
  58. package/dist/src/desktop/panels/MultilingualModal/index.js +8 -0
  59. package/dist/src/desktop/panels/index.d.ts +2 -1
  60. package/dist/src/desktop/panels/index.js +6 -1
  61. package/dist/src/mobile/components/BoxItem/BoxItem.d.ts +1 -5
  62. package/dist/src/mobile/components/BoxItem/BoxItem.js +5 -7
  63. package/dist/src/mobile/components/index.d.ts +1 -2
  64. package/dist/src/mobile/components/index.js +1 -3
  65. package/dist/src/mobile/index.d.ts +1 -1
  66. package/dist/src/mobile/index.js +2 -3
  67. package/package.json +1 -1
  68. package/release-note.md +2 -2
  69. package/dist/src/common/types/form.d.ts +0 -9
  70. package/dist/src/common/types/form.js +0 -10
  71. package/dist/src/desktop/components/Snackbar/Snackbar.d.ts +0 -16
  72. package/dist/src/desktop/components/Snackbar/Snackbar.js +0 -209
  73. package/dist/src/desktop/components/Snackbar/index.d.ts +0 -1
  74. package/dist/src/desktop/components/Snackbar/index.js +0 -8
  75. package/dist/src/desktop/components/Snackbar/provider.d.ts +0 -11
  76. package/dist/src/desktop/components/Snackbar/provider.js +0 -52
  77. package/dist/src/mobile/components/Snackbar/Snackbar.d.ts +0 -16
  78. package/dist/src/mobile/components/Snackbar/Snackbar.js +0 -209
  79. package/dist/src/mobile/components/Snackbar/index.d.ts +0 -1
  80. package/dist/src/mobile/components/Snackbar/index.js +0 -8
  81. package/dist/src/mobile/components/Snackbar/provider.d.ts +0 -11
  82. package/dist/src/mobile/components/Snackbar/provider.js +0 -52
@@ -0,0 +1,384 @@
1
+ "use strict";
2
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
3
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
4
+ return cooked;
5
+ };
6
+ var __assign = (this && this.__assign) || function () {
7
+ __assign = Object.assign || function(t) {
8
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
9
+ s = arguments[i];
10
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
11
+ t[p] = s[p];
12
+ }
13
+ return t;
14
+ };
15
+ return __assign.apply(this, arguments);
16
+ };
17
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
18
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
19
+ if (ar || !(i in from)) {
20
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
21
+ ar[i] = from[i];
22
+ }
23
+ }
24
+ return to.concat(ar || Array.prototype.slice.call(from));
25
+ };
26
+ var __importDefault = (this && this.__importDefault) || function (mod) {
27
+ return (mod && mod.__esModule) ? mod : { "default": mod };
28
+ };
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ var jsx_runtime_1 = require("react/jsx-runtime");
31
+ var react_1 = require("react");
32
+ var react_i18next_1 = require("react-i18next");
33
+ var dateHelper_1 = require("../../../common/utils/dateHelper");
34
+ var styled_components_1 = __importDefault(require("styled-components"));
35
+ var Dropdown_1 = require("../Dropdown");
36
+ var IconButton_1 = require("../IconButton");
37
+ var TextButton_1 = require("../TextButton");
38
+ var TextLabel_1 = require("../TextLabel");
39
+ var calendarUtils_1 = require("./calendarUtils");
40
+ var DailyView_1 = require("./DailyView");
41
+ var MonthlyView_1 = require("./MonthlyView");
42
+ var ScheduleItem_1 = require("./ScheduleItem");
43
+ var WeeklyView_1 = require("./WeeklyView");
44
+ var YearlyView_1 = require("./YearlyView");
45
+ var Calendar = function (_a) {
46
+ var _b = _a.defaultViewType, defaultViewType = _b === void 0 ? 'MONTHLY' : _b, _c = _a.viewTypes, viewTypes = _c === void 0 ? ['MONTHLY', 'WEEKLY', 'DAILY', 'YEARLY'] : _c, _d = _a.displayAllDayScheduleMode, displayAllDayScheduleMode = _d === void 0 ? 'use' : _d, _e = _a.startOfWeek, startOfWeek = _e === void 0 ? 'sunday' : _e, _f = _a.todayBtnMode, todayBtnMode = _f === void 0 ? 'use' : _f, _g = _a.schedules, schedules = _g === void 0 ? [] : _g, config = _a.config, onActionDispatch = _a.onActionDispatch;
47
+ var t = (0, react_i18next_1.useTranslation)().t;
48
+ var _h = (0, react_1.useState)(defaultViewType), currentViewType = _h[0], setCurrentViewType = _h[1];
49
+ var _j = (0, react_1.useState)(new Date()), selectedDate = _j[0], setSelectedDate = _j[1];
50
+ var _k = (0, react_1.useState)(null), dragStartDate = _k[0], setDragStartDate = _k[1];
51
+ var _l = (0, react_1.useState)(null), dragEndDate = _l[0], setDragEndDate = _l[1];
52
+ var _m = (0, react_1.useState)(false), isDragging = _m[0], setIsDragging = _m[1];
53
+ var _o = (0, react_1.useState)(null), draggedSchedule = _o[0], setDraggedSchedule = _o[1];
54
+ var _p = (0, react_1.useState)(null), isDragOverDate = _p[0], setIsDragOverDate = _p[1];
55
+ var _q = (0, react_1.useState)([]), selectedSchedules = _q[0], setSelectedSchedules = _q[1];
56
+ var _r = (0, react_1.useState)([]), selectedDates = _r[0], setSelectedDates = _r[1];
57
+ var _s = (0, react_1.useState)(null), lastSelectedDate = _s[0], setLastSelectedDate = _s[1];
58
+ // 오늘 날짜인지 확인
59
+ var today = new Date();
60
+ var isToday = function (date) { return dateHelper_1.DateHelper.isSameDay(date, today); };
61
+ // 과거 날짜인지 확인
62
+ var isPastDate = (0, react_1.useCallback)(function (date) { return dateHelper_1.DateHelper.isBefore(date, today) && !dateHelper_1.DateHelper.isSameDay(date, today); }, [today]);
63
+ // 뷰 타입에 따른 시작일과 종료일 계산
64
+ var _t = (0, calendarUtils_1.calculateDateRange)(currentViewType, selectedDate), startDate = _t.startDate, endDate = _t.endDate;
65
+ // 뷰 타입 변경 처리
66
+ var handleViewTypeChange = (0, react_1.useCallback)(function (option) {
67
+ var newViewType = option.value;
68
+ setCurrentViewType(newViewType);
69
+ // 새로운 뷰 타입 기준으로 startDate와 endDate 계산
70
+ var _a = (0, calendarUtils_1.calculateDateRange)(newViewType, selectedDate), newStartDate = _a.startDate, newEndDate = _a.endDate;
71
+ onActionDispatch === null || onActionDispatch === void 0 ? void 0 : onActionDispatch({
72
+ type: 'CALENDAR_TYPE_CHANGE',
73
+ payload: {
74
+ type: newViewType,
75
+ startDate: (0, calendarUtils_1.toUTC)(newStartDate),
76
+ endDate: (0, calendarUtils_1.toUTC)(newEndDate)
77
+ }
78
+ });
79
+ }, [selectedDate, onActionDispatch, calendarUtils_1.calculateDateRange]);
80
+ // "오늘" 버튼 클릭 이벤트
81
+ var handleTodayClick = (0, react_1.useCallback)(function () {
82
+ setSelectedDate(today);
83
+ // 오늘 날짜 기준으로 startDate와 endDate 계산
84
+ var _a = (0, calendarUtils_1.calculateDateRange)(currentViewType, today), newStartDate = _a.startDate, newEndDate = _a.endDate;
85
+ onActionDispatch === null || onActionDispatch === void 0 ? void 0 : onActionDispatch({
86
+ type: 'TODAY_BUTTON_CLICK',
87
+ payload: {
88
+ startDate: (0, calendarUtils_1.toUTC)(newStartDate),
89
+ endDate: (0, calendarUtils_1.toUTC)(newEndDate)
90
+ }
91
+ });
92
+ }, [today, currentViewType, onActionDispatch, calendarUtils_1.calculateDateRange]);
93
+ // 이전/다음 이동 함수
94
+ var navigateDate = (0, react_1.useCallback)(function (direction) {
95
+ var increment = direction === 'next' ? 1 : -1;
96
+ var getNewDateByViewType = function (viewType) {
97
+ switch (viewType) {
98
+ case 'DAILY':
99
+ return dateHelper_1.DateHelper.addDays(selectedDate, increment);
100
+ case 'WEEKLY':
101
+ return dateHelper_1.DateHelper.addDays(selectedDate, increment * 7);
102
+ case 'MONTHLY':
103
+ return dateHelper_1.DateHelper.addMonths(selectedDate, increment);
104
+ case 'YEARLY':
105
+ return new Date(selectedDate.getFullYear() + increment, selectedDate.getMonth(), selectedDate.getDate());
106
+ default:
107
+ return selectedDate;
108
+ }
109
+ };
110
+ var newDate = getNewDateByViewType(currentViewType);
111
+ setSelectedDate(newDate);
112
+ // 새로운 날짜 기준으로 startDate와 endDate 계산
113
+ var _a = (0, calendarUtils_1.calculateDateRange)(currentViewType, newDate), newStartDate = _a.startDate, newEndDate = _a.endDate;
114
+ onActionDispatch === null || onActionDispatch === void 0 ? void 0 : onActionDispatch({
115
+ type: direction === 'prev' ? 'PREV_BUTTON_CLICK' : 'NEXT_BUTTON_CLICK',
116
+ payload: {
117
+ startDate: (0, calendarUtils_1.toUTC)(newStartDate),
118
+ endDate: (0, calendarUtils_1.toUTC)(newEndDate)
119
+ }
120
+ });
121
+ }, [selectedDate, currentViewType, onActionDispatch, calendarUtils_1.calculateDateRange]);
122
+ // 특정 날짜의 이벤트 가져오기
123
+ var getSchedulesForDate = (0, react_1.useCallback)(function (date) {
124
+ return schedules.filter(function (schedule) {
125
+ var scheduleStart = new Date(schedule.startDate);
126
+ var scheduleEnd = new Date(schedule.endDate);
127
+ var targetDate = new Date(date);
128
+ // 정확한 날짜 비교를 위해 시간을 일 시작으로 설정
129
+ scheduleStart.setHours(0, 0, 0, 0);
130
+ scheduleEnd.setHours(23, 59, 59, 999);
131
+ targetDate.setHours(0, 0, 0, 0);
132
+ // 대상 날짜가 이벤트 날짜 범위 내에 있는지 확인
133
+ return targetDate >= scheduleStart && targetDate <= scheduleEnd;
134
+ });
135
+ }, [schedules]);
136
+ // 날짜 클릭 이벤트 (일반 클릭, shift 클릭 둘다 포함)
137
+ var handleDateClick = (0, react_1.useCallback)(function (date, e) {
138
+ var _a, _b, _c, _d;
139
+ var isShiftClick = ((_a = config === null || config === void 0 ? void 0 : config.action) === null || _a === void 0 ? void 0 : _a.includes('CLICK_WITH_SHIFT_KEY_DOWN')) &&
140
+ (config === null || config === void 0 ? void 0 : config.target) === 'DATE' &&
141
+ (e === null || e === void 0 ? void 0 : e.shiftKey);
142
+ var isNormalClick = ((_b = config === null || config === void 0 ? void 0 : config.action) === null || _b === void 0 ? void 0 : _b.includes('CLICK')) && (config === null || config === void 0 ? void 0 : config.target) === 'DATE' && !(e === null || e === void 0 ? void 0 : e.shiftKey);
143
+ var getDateKey = function (d) { return "".concat(d.getFullYear(), "-").concat(d.getMonth(), "-").concat(d.getDate()); };
144
+ var clickedDateKey = getDateKey(date);
145
+ // shift 클릭 처리
146
+ if (isShiftClick) {
147
+ var newSelectedDates = selectedDates.some(function (d) { return getDateKey(d) === clickedDateKey; })
148
+ ? selectedDates.filter(function (d) { return getDateKey(d) !== clickedDateKey; })
149
+ : __spreadArray(__spreadArray([], selectedDates, true), [date], false);
150
+ setSelectedDates(newSelectedDates);
151
+ setLastSelectedDate(date);
152
+ if (config) {
153
+ (_c = config.trigger) === null || _c === void 0 ? void 0 : _c.call(config, {
154
+ action: 'CLICK_WITH_SHIFT_KEY_DOWN',
155
+ target: 'DATE',
156
+ dates: newSelectedDates,
157
+ startDate: (0, calendarUtils_1.toUTC)(startDate),
158
+ endDate: (0, calendarUtils_1.toUTC)(endDate)
159
+ });
160
+ }
161
+ }
162
+ setSelectedDate(date);
163
+ // 일반 클릭 처리
164
+ if (isNormalClick) {
165
+ if (config) {
166
+ (_d = config.trigger) === null || _d === void 0 ? void 0 : _d.call(config, {
167
+ action: 'CLICK',
168
+ target: 'DATE',
169
+ date: date,
170
+ startDate: (0, calendarUtils_1.toUTC)(startDate),
171
+ endDate: (0, calendarUtils_1.toUTC)(endDate)
172
+ });
173
+ }
174
+ }
175
+ }, [isPastDate, config, lastSelectedDate, selectedDates, startDate, endDate]);
176
+ // 날짜 범위 선택을 위한 마우스 이벤트 처리
177
+ var handleMouseUp = (0, react_1.useCallback)(function () {
178
+ setIsDragging(false);
179
+ setDragStartDate(null);
180
+ setDragEndDate(null);
181
+ }, [isDragging, dragStartDate, dragEndDate]);
182
+ // 이벤트 드래그 핸들러
183
+ var handleScheduleDragStart = (0, react_1.useCallback)(function (schedule, e) {
184
+ setDraggedSchedule(schedule);
185
+ e.dataTransfer.effectAllowed = 'move';
186
+ e.dataTransfer.setData('text/plain', schedule.id.toString());
187
+ // 더 정확한 드롭 계산을 위한 오프셋 정보 저장
188
+ var scheduleStartDate = new Date(schedule.startDate);
189
+ scheduleStartDate.setHours(0, 0, 0, 0);
190
+ // 원본 이벤트 시작 시간을 dataTransfer에 저장
191
+ e.dataTransfer.setData('scheduleStartTime', scheduleStartDate.getTime().toString());
192
+ }, []);
193
+ // 이벤트 드래그 종료 이벤트
194
+ var handleScheduleDragEnd = (0, react_1.useCallback)(function () {
195
+ setDraggedSchedule(null);
196
+ setIsDragOverDate(null);
197
+ }, []);
198
+ // 날짜 드래그 오버 이벤트
199
+ var handleDateDragOver = (0, react_1.useCallback)(function (date, e) {
200
+ if (!draggedSchedule) {
201
+ return;
202
+ }
203
+ e.preventDefault();
204
+ e.dataTransfer.dropEffect = 'move';
205
+ setIsDragOverDate(date);
206
+ }, [draggedSchedule]);
207
+ // 날짜 드래그 떼기
208
+ var handleDateDragLeave = (0, react_1.useCallback)(function () {
209
+ setIsDragOverDate(null);
210
+ }, []);
211
+ // 삭제 키 이벤트 처리
212
+ var handleKeyDown = (0, react_1.useCallback)(function (e) {
213
+ var _a;
214
+ if (e.key === 'Delete' && selectedSchedules.length > 0 && (config === null || config === void 0 ? void 0 : config.target) === 'SCHEDULE') {
215
+ (_a = config === null || config === void 0 ? void 0 : config.trigger) === null || _a === void 0 ? void 0 : _a.call(config, {
216
+ action: 'DELETE_KEY_DOWN',
217
+ target: 'SCHEDULE',
218
+ schedules: selectedSchedules,
219
+ startDate: (0, calendarUtils_1.toUTC)(startDate),
220
+ endDate: (0, calendarUtils_1.toUTC)(endDate)
221
+ });
222
+ setSelectedSchedules([]);
223
+ }
224
+ }, [config, selectedSchedules]);
225
+ // 날짜 드래그 놓기
226
+ var handleDateDrop = (0, react_1.useCallback)(function (date, e) {
227
+ var _a, _b;
228
+ e.preventDefault();
229
+ if (!draggedSchedule) {
230
+ return;
231
+ }
232
+ if (!(((_a = config === null || config === void 0 ? void 0 : config.action) === null || _a === void 0 ? void 0 : _a.includes('DRAG')) && config.target === 'SCHEDULE')) {
233
+ return;
234
+ }
235
+ var originalStartDate = new Date(draggedSchedule.startDate);
236
+ var originalEndDate = new Date(draggedSchedule.endDate);
237
+ var duration = originalEndDate.getTime() - originalStartDate.getTime();
238
+ var getAdjustedStartDate = function () {
239
+ var baseDate = new Date(date);
240
+ if (currentViewType === 'MONTHLY') {
241
+ var target = e.target;
242
+ var gridContainer = target.closest('[data-calendar-grid]');
243
+ if (gridContainer) {
244
+ var gridRect = gridContainer.getBoundingClientRect();
245
+ var cellWidth = gridRect.width / 7;
246
+ var clickedColumn = Math.floor((e.clientX - gridRect.left) / cellWidth);
247
+ var dropDayOfWeek = baseDate.getDay();
248
+ var columnOffset = clickedColumn - dropDayOfWeek;
249
+ var actualDropDate = new Date(baseDate);
250
+ actualDropDate.setDate(baseDate.getDate() + columnOffset);
251
+ actualDropDate.setHours(originalStartDate.getHours(), originalStartDate.getMinutes(), 0, 0);
252
+ return actualDropDate;
253
+ }
254
+ }
255
+ // 공통 처리 (WEEKLY, DAILY, fallback)
256
+ baseDate.setHours(originalStartDate.getHours(), originalStartDate.getMinutes(), 0, 0);
257
+ return baseDate;
258
+ };
259
+ var newStartDate = getAdjustedStartDate();
260
+ var newEndDate = new Date(newStartDate.getTime() + duration);
261
+ var updatedSchedule = __assign(__assign({}, draggedSchedule), { startDate: newStartDate, endDate: newEndDate });
262
+ if (config) {
263
+ (_b = config.trigger) === null || _b === void 0 ? void 0 : _b.call(config, {
264
+ action: 'DRAG',
265
+ target: 'SCHEDULE',
266
+ schedule: updatedSchedule,
267
+ startDate: (0, calendarUtils_1.toUTC)(startDate),
268
+ endDate: (0, calendarUtils_1.toUTC)(endDate)
269
+ });
270
+ }
271
+ setIsDragOverDate(null);
272
+ }, [draggedSchedule, config, currentViewType]);
273
+ var defaultDayTexts = (0, react_1.useMemo)(function () { return [
274
+ t('str_3893'),
275
+ t('str_3887'),
276
+ t('str_3888'),
277
+ t('str_3889'),
278
+ t('str_3890'),
279
+ t('str_3891'),
280
+ t('str_3892') // 토 - 6
281
+ ]; }, [t]);
282
+ // 날짜의 실제 요일에 따른 요일 텍스트 가져오기
283
+ var getDayTextByDate = function (date) {
284
+ return defaultDayTexts[date.getDay()];
285
+ };
286
+ var monthNames = (0, react_1.useMemo)(function () { return [
287
+ t('calendar_month_1'),
288
+ t('calendar_month_2'),
289
+ t('calendar_month_3'),
290
+ t('calendar_month_4'),
291
+ t('calendar_month_5'),
292
+ t('calendar_month_6'),
293
+ t('calendar_month_7'),
294
+ t('calendar_month_8'),
295
+ t('calendar_month_9'),
296
+ t('calendar_month_10'),
297
+ t('calendar_month_11'),
298
+ t('calendar_month_12')
299
+ ]; }, [t]);
300
+ // 뷰 타입을 위한 드롭다운 옵션 생성
301
+ var viewTypeOptions = (0, react_1.useMemo)(function () {
302
+ var viewTypeTextMap = {
303
+ MONTHLY: t('calendar_view_monthly'),
304
+ WEEKLY: t('calendar_view_weekly'),
305
+ DAILY: t('calendar_view_daily'),
306
+ YEARLY: t('calendar_view_yearly')
307
+ };
308
+ return viewTypes.map(function (viewType) { return ({
309
+ text: viewTypeTextMap[viewType] || viewType,
310
+ value: viewType
311
+ }); });
312
+ }, [viewTypes, t]);
313
+ // 특정 월의 캘린더 날짜 생성 (연간 보기용)
314
+ var getMonthDates = (0, react_1.useCallback)(function (year, month) {
315
+ var monthDate = new Date(year, month, 1);
316
+ return dateHelper_1.DateHelper.getCalendarDates(monthDate, startOfWeek);
317
+ }, [startOfWeek]);
318
+ // 스케줄 클릭 (일반 클릭, shift 클릭 둘다 포함)
319
+ var handleScheduleClick = function (schedule, e) {
320
+ var _a, _b, _c, _d;
321
+ var isShiftClick = ((_a = config === null || config === void 0 ? void 0 : config.action) === null || _a === void 0 ? void 0 : _a.includes('CLICK_WITH_SHIFT_KEY_DOWN')) &&
322
+ (config === null || config === void 0 ? void 0 : config.target) === 'SCHEDULE' &&
323
+ (e === null || e === void 0 ? void 0 : e.shiftKey);
324
+ var isNormalClick = ((_b = config === null || config === void 0 ? void 0 : config.action) === null || _b === void 0 ? void 0 : _b.includes('CLICK')) && (config === null || config === void 0 ? void 0 : config.target) === 'SCHEDULE' && !(e === null || e === void 0 ? void 0 : e.shiftKey);
325
+ var isSelected = selectedSchedules.some(function (s) { return s.id === (schedule === null || schedule === void 0 ? void 0 : schedule.id); });
326
+ if (isShiftClick) {
327
+ var newSelectedSchedules = isSelected
328
+ ? selectedSchedules.filter(function (s) { return s.id !== (schedule === null || schedule === void 0 ? void 0 : schedule.id); })
329
+ : __spreadArray(__spreadArray([], selectedSchedules, true), [schedule], false).filter(function (s) { return s !== undefined; });
330
+ setSelectedSchedules(newSelectedSchedules);
331
+ (_c = config === null || config === void 0 ? void 0 : config.trigger) === null || _c === void 0 ? void 0 : _c.call(config, {
332
+ action: 'CLICK_WITH_SHIFT_KEY_DOWN',
333
+ target: 'SCHEDULE',
334
+ schedules: newSelectedSchedules,
335
+ startDate: (0, calendarUtils_1.toUTC)(startDate),
336
+ endDate: (0, calendarUtils_1.toUTC)(endDate)
337
+ });
338
+ return;
339
+ }
340
+ if (isNormalClick) {
341
+ // 일반 클릭 시 해당 스케줄만 선택
342
+ setSelectedSchedules([schedule]);
343
+ (_d = config === null || config === void 0 ? void 0 : config.trigger) === null || _d === void 0 ? void 0 : _d.call(config, {
344
+ action: 'CLICK',
345
+ target: 'SCHEDULE',
346
+ schedule: schedule,
347
+ startDate: (0, calendarUtils_1.toUTC)(startDate),
348
+ endDate: (0, calendarUtils_1.toUTC)(endDate)
349
+ });
350
+ return;
351
+ }
352
+ };
353
+ // 다중 일자 지원을 포함한 이벤트 아이템 렌더링
354
+ var renderScheduleItem = function (schedule, extraProps) {
355
+ if (extraProps === void 0) { extraProps = {}; }
356
+ // isAllDay 계산
357
+ var isAllDay = (0, calendarUtils_1.calculateIsAllDay)(new Date(schedule.startDate), new Date(schedule.endDate));
358
+ var isSelected = selectedSchedules.some(function (s) { return s.id === schedule.id; });
359
+ return ((0, jsx_runtime_1.jsx)(ScheduleItem_1.ScheduleItem, { schedule: schedule, extraProps: extraProps, onDragStart: handleScheduleDragStart, onDragEnd: handleScheduleDragEnd, onClick: handleScheduleClick, isSelected: isSelected, isAllDay: isAllDay }));
360
+ };
361
+ // 뷰 타입에 따른 캘린더 콘텐츠 렌더링
362
+ var renderCalendarContent = function () {
363
+ switch (currentViewType) {
364
+ case 'MONTHLY':
365
+ return ((0, jsx_runtime_1.jsx)(MonthlyView_1.MonthlyView, { getDayTextByDate: getDayTextByDate, startOfWeek: startOfWeek, selectedDate: selectedDate, selectedDates: selectedDates, dragStartDate: dragStartDate, selectedSchedules: selectedSchedules, dragEndDate: dragEndDate, isDragOverDate: isDragOverDate, schedules: schedules, getSchedulesForDate: getSchedulesForDate, isToday: isToday, isPastDate: isPastDate, handleDateClick: handleDateClick, handleScheduleClick: handleScheduleClick, handleMouseUp: handleMouseUp, handleDateDragOver: handleDateDragOver, handleDateDragLeave: handleDateDragLeave, handleDateDrop: handleDateDrop, renderScheduleItem: renderScheduleItem, handleScheduleDragStart: handleScheduleDragStart, handleScheduleDragEnd: handleScheduleDragEnd }));
366
+ case 'WEEKLY':
367
+ return ((0, jsx_runtime_1.jsx)(WeeklyView_1.WeeklyView, { selectedDate: selectedDate, startOfWeek: startOfWeek, getDayTextByDate: getDayTextByDate, defaultViewType: currentViewType, displayAllDayScheduleMode: displayAllDayScheduleMode, getSchedulesForDate: getSchedulesForDate, isToday: isToday, isDragOverDate: isDragOverDate, handleDateDragOver: handleDateDragOver, handleDateDragLeave: handleDateDragLeave, handleDateDrop: handleDateDrop, handleDateClick: handleDateClick, renderScheduleItem: renderScheduleItem, handleScheduleDragStart: handleScheduleDragStart, handleScheduleDragEnd: handleScheduleDragEnd }));
368
+ case 'DAILY':
369
+ return ((0, jsx_runtime_1.jsx)(DailyView_1.DailyView, { selectedDate: selectedDate, displayAllDayScheduleMode: displayAllDayScheduleMode, getSchedulesForDate: getSchedulesForDate, renderScheduleItem: renderScheduleItem, handleDateClick: handleDateClick, handleDateDragOver: handleDateDragOver, handleDateDragLeave: handleDateDragLeave, handleDateDrop: handleDateDrop, isDragOverDate: isDragOverDate, handleScheduleDragStart: handleScheduleDragStart, handleScheduleDragEnd: handleScheduleDragEnd }));
370
+ case 'YEARLY':
371
+ return ((0, jsx_runtime_1.jsx)(YearlyView_1.YearlyView, { selectedDate: selectedDate, getMonthDates: getMonthDates, getDayTextByDate: getDayTextByDate, startOfWeek: startOfWeek, isToday: isToday, handleDateClick: handleDateClick, getSchedulesForDate: getSchedulesForDate }));
372
+ default:
373
+ return null;
374
+ }
375
+ };
376
+ return ((0, jsx_runtime_1.jsxs)(S_CalendarContainer, __assign({ "x-pds-name": "Calendar", "x-pds-element-type": "component", "x-pds-device-type": "desktop", onKeyDown: handleKeyDown, tabIndex: 0 }, { children: [(0, jsx_runtime_1.jsxs)(S_CalendarHeader, { children: [(0, jsx_runtime_1.jsx)(TextLabel_1.TextLabel, { styleTheme: "headingBold", textAlign: "center", text: (0, calendarUtils_1.getHeaderText)(currentViewType, selectedDate, t, monthNames, getDayTextByDate) }), (0, jsx_runtime_1.jsxs)(S_LeftContainer, { children: [(0, jsx_runtime_1.jsx)(S_NavigationButton, __assign({ onClick: function () { return navigateDate('prev'); } }, { children: (0, jsx_runtime_1.jsx)(IconButton_1.IconButton, { iconName: "ic_arrow_left", baseSize: "small", iconSize: 16, baseColorKey: "ui_cpnt_button_fill_base_transparent", iconColorKey: "ui_cpnt_icon_sys_grey_01" }) })), todayBtnMode === 'use' && ((0, jsx_runtime_1.jsx)(TextButton_1.TextButton, { text: t('calendar_today'), size: "small", colorTheme: "grey_01", onClick: handleTodayClick })), (0, jsx_runtime_1.jsx)(S_NavigationButton, __assign({ onClick: function () { return navigateDate('next'); } }, { children: (0, jsx_runtime_1.jsx)(IconButton_1.IconButton, { iconName: "ic_arrow_right", baseSize: "small", iconSize: 16, baseColorKey: "ui_cpnt_button_fill_base_transparent", iconColorKey: "ui_cpnt_icon_sys_grey_01" }) })), (0, jsx_runtime_1.jsx)(Dropdown_1.Dropdown, { size: "small", valueArray: viewTypeOptions, value: viewTypeOptions.find(function (option) { return option.value === currentViewType; }), onChange: handleViewTypeChange, customWidth: "120px" })] })] }), (0, jsx_runtime_1.jsx)(S_CalendarContent, { children: renderCalendarContent() })] })));
377
+ };
378
+ var S_CalendarContainer = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 400px;\n outline: 0px;\n overflow: hidden;\n width: 100%;\n"], ["\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 400px;\n outline: 0px;\n overflow: hidden;\n width: 100%;\n"])));
379
+ var S_CalendarHeader = styled_components_1.default.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n align-items: center;\n display: flex;\n gap: 16px;\n padding: 0px 0px 8px 0px;\n"], ["\n align-items: center;\n display: flex;\n gap: 16px;\n padding: 0px 0px 8px 0px;\n"])));
380
+ var S_NavigationButton = styled_components_1.default.button(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n align-items: center;\n background: none;\n border: none;\n cursor: pointer;\n display: flex;\n height: 32px;\n justify-content: center;\n width: 32px;\n"], ["\n align-items: center;\n background: none;\n border: none;\n cursor: pointer;\n display: flex;\n height: 32px;\n justify-content: center;\n width: 32px;\n"])));
381
+ var S_LeftContainer = styled_components_1.default.div(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n align-items: center;\n display: flex;\n gap: 8px;\n margin-left: auto;\n"], ["\n align-items: center;\n display: flex;\n gap: 8px;\n margin-left: auto;\n"])));
382
+ var S_CalendarContent = styled_components_1.default.div(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n flex: 1;\n overflow: auto;\n"], ["\n flex: 1;\n overflow: auto;\n"])));
383
+ exports.default = Calendar;
384
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5;
@@ -0,0 +1,7 @@
1
+ import type React from 'react';
2
+ interface CurrentTimeIndicatorProps {
3
+ show: boolean;
4
+ leftOffset?: string;
5
+ }
6
+ export declare const CurrentTimeIndicator: React.FC<CurrentTimeIndicatorProps>;
7
+ export {};
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
3
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
4
+ return cooked;
5
+ };
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.CurrentTimeIndicator = void 0;
11
+ var jsx_runtime_1 = require("react/jsx-runtime");
12
+ var react_1 = require("react");
13
+ var react_i18next_1 = require("react-i18next");
14
+ var styled_components_1 = __importDefault(require("styled-components"));
15
+ var constants_1 = require("./constants");
16
+ var CurrentTimeIndicator = function (_a) {
17
+ var show = _a.show, _b = _a.leftOffset, leftOffset = _b === void 0 ? '80px' : _b;
18
+ var i18n = (0, react_i18next_1.useTranslation)().i18n;
19
+ var getCurrentTime = (0, react_1.useCallback)(function () {
20
+ var now = new Date();
21
+ var locale = (0, constants_1.getLocaleFromLang)(i18n.language);
22
+ var timeInTimezone = new Date(now.toLocaleString(locale));
23
+ return {
24
+ hour: timeInTimezone.getHours(),
25
+ minute: timeInTimezone.getMinutes(),
26
+ percentage: ((timeInTimezone.getHours() * 60 + timeInTimezone.getMinutes()) / (24 * 60)) * 100
27
+ };
28
+ }, [i18n.language]);
29
+ var _c = (0, react_1.useState)(getCurrentTime()), currentTime = _c[0], setCurrentTime = _c[1];
30
+ (0, react_1.useEffect)(function () {
31
+ var updateTime = function () {
32
+ setCurrentTime(getCurrentTime());
33
+ };
34
+ updateTime();
35
+ var interval = setInterval(updateTime, 60000);
36
+ return function () { return clearInterval(interval); };
37
+ }, [getCurrentTime]);
38
+ return ((0, jsx_runtime_1.jsx)(S_CurrentTimeIndicator, { "$show": show, "$top": "".concat(currentTime.percentage, "%"), "$leftOffset": leftOffset }));
39
+ };
40
+ exports.CurrentTimeIndicator = CurrentTimeIndicator;
41
+ var S_CurrentTimeIndicator = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n background: ", ";\n display: ", ";\n height: 2px;\n left: ", ";\n position: absolute;\n right: 0;\n top: ", ";\n z-index: 10;\n\n &::before {\n background: ", ";\n border-radius: 50%;\n content: '';\n height: 8px;\n left: -4px;\n position: absolute;\n top: -3px;\n width: 8px;\n }\n"], ["\n background: ", ";\n display: ", ";\n height: 2px;\n left: ", ";\n position: absolute;\n right: 0;\n top: ", ";\n z-index: 10;\n\n &::before {\n background: ", ";\n border-radius: 50%;\n content: '';\n height: 8px;\n left: -4px;\n position: absolute;\n top: -3px;\n width: 8px;\n }\n"])), function (_a) {
42
+ var theme = _a.theme;
43
+ return theme.ui_cpnt_sheet_border_07;
44
+ }, function (props) { return (props.$show ? 'block' : 'none'); }, function (props) { return props.$leftOffset; }, function (props) { return props.$top; }, function (_a) {
45
+ var theme = _a.theme;
46
+ return theme.ui_cpnt_sheet_border_07;
47
+ });
48
+ var templateObject_1;
@@ -0,0 +1,17 @@
1
+ import type { Schedule, displayAllDayScheduleMode } from './types';
2
+ import type { FC, MouseEvent, DragEvent } from 'react';
3
+ interface DailyViewProps {
4
+ selectedDate: Date;
5
+ displayAllDayScheduleMode?: displayAllDayScheduleMode;
6
+ getSchedulesForDate: (date: Date) => Schedule[];
7
+ isDragOverDate: Date | null;
8
+ handleDateDragOver: (date: Date, e: DragEvent) => void;
9
+ handleDateDragLeave: () => void;
10
+ handleDateDrop: (date: Date, e: DragEvent) => void;
11
+ handleDateClick: (date: Date, e: MouseEvent) => void;
12
+ renderScheduleItem: (schedule: Schedule, extraProps?: any) => React.ReactNode;
13
+ handleScheduleDragStart: (schedule: Schedule, e: DragEvent) => void;
14
+ handleScheduleDragEnd: () => void;
15
+ }
16
+ export declare const DailyView: FC<DailyViewProps>;
17
+ export {};
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
3
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
4
+ return cooked;
5
+ };
6
+ var __assign = (this && this.__assign) || function () {
7
+ __assign = Object.assign || function(t) {
8
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
9
+ s = arguments[i];
10
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
11
+ t[p] = s[p];
12
+ }
13
+ return t;
14
+ };
15
+ return __assign.apply(this, arguments);
16
+ };
17
+ var __importDefault = (this && this.__importDefault) || function (mod) {
18
+ return (mod && mod.__esModule) ? mod : { "default": mod };
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.DailyView = void 0;
22
+ var jsx_runtime_1 = require("react/jsx-runtime");
23
+ var react_i18next_1 = require("react-i18next");
24
+ var styled_components_1 = __importDefault(require("styled-components"));
25
+ var TextLabel_1 = require("../TextLabel");
26
+ var AllDaySchedulesSection_1 = require("./AllDaySchedulesSection");
27
+ var CurrentTimeIndicator_1 = require("./CurrentTimeIndicator");
28
+ var TimeBasedScheduleItem_1 = require("./TimeBasedScheduleItem");
29
+ var timeFormatUtils_1 = require("./timeFormatUtils");
30
+ var DailyView = function (_a) {
31
+ var selectedDate = _a.selectedDate, _b = _a.displayAllDayScheduleMode, displayAllDayScheduleMode = _b === void 0 ? 'use' : _b, getSchedulesForDate = _a.getSchedulesForDate, isDragOverDate = _a.isDragOverDate, handleDateDragOver = _a.handleDateDragOver, handleDateDragLeave = _a.handleDateDragLeave, handleDateDrop = _a.handleDateDrop, handleDateClick = _a.handleDateClick, renderScheduleItem = _a.renderScheduleItem, handleScheduleDragStart = _a.handleScheduleDragStart, handleScheduleDragEnd = _a.handleScheduleDragEnd;
32
+ var i18n = (0, react_i18next_1.useTranslation)().i18n;
33
+ var currentDateForDaily = [selectedDate][0];
34
+ var HOURS_IN_DAY = Array.from({ length: 24 }, function (_, i) { return i; });
35
+ var getTimeSlotDate = function (baseDate, hour) {
36
+ var date = new Date(baseDate);
37
+ date.setHours(hour, 0, 0, 0);
38
+ return date;
39
+ };
40
+ return ((0, jsx_runtime_1.jsxs)(S_DailyContainer, { children: [(0, jsx_runtime_1.jsx)(AllDaySchedulesSection_1.AllDaySchedulesSection, { calendarDates: [selectedDate], displayAllDayScheduleMode: displayAllDayScheduleMode, getSchedulesForDate: getSchedulesForDate, renderScheduleItem: renderScheduleItem, handleDateDragOver: handleDateDragOver, handleDateDragLeave: handleDateDragLeave, handleDateDrop: handleDateDrop }), (0, jsx_runtime_1.jsxs)(S_DailyTimeGrid, { children: [(0, jsx_runtime_1.jsx)(CurrentTimeIndicator_1.CurrentTimeIndicator, { show: true, leftOffset: "80px" }), HOURS_IN_DAY.map(function (hour) {
41
+ var timeSlotDate = getTimeSlotDate(currentDateForDaily, hour);
42
+ var isDragOver = (isDragOverDate === null || isDragOverDate === void 0 ? void 0 : isDragOverDate.getTime()) === timeSlotDate.getTime();
43
+ return ((0, jsx_runtime_1.jsxs)(S_DailyTimeRow, { children: [(0, jsx_runtime_1.jsx)(S_DailyTimeLabel, { children: (0, jsx_runtime_1.jsx)(TextLabel_1.TextLabel, { styleTheme: "caption2Bold", text: (0, timeFormatUtils_1.formatHour)(hour, i18n.language), colorTheme: "sysTextTertiary" }) }), (0, jsx_runtime_1.jsx)(S_DailyTimeSlot, __assign({ "$isDragOver": isDragOver, onClick: function () { return handleDateClick(timeSlotDate, {}); }, onDragOver: function (e) { return handleDateDragOver(timeSlotDate, e); }, onDragLeave: handleDateDragLeave, onDrop: function (e) { return handleDateDrop(timeSlotDate, e); } }, { children: hour === 0 && ((0, jsx_runtime_1.jsx)(TimeBasedScheduleItem_1.TimeBasedScheduleItem, { schedules: getSchedulesForDate(currentDateForDaily), handleScheduleDragStart: handleScheduleDragStart, handleScheduleDragEnd: handleScheduleDragEnd })) }))] }, hour));
44
+ })] })] }));
45
+ };
46
+ exports.DailyView = DailyView;
47
+ var S_DailyContainer = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n display: flex;\n flex-direction: column;\n height: 100%;\n"], ["\n display: flex;\n flex-direction: column;\n height: 100%;\n"])));
48
+ var S_DailyTimeGrid = styled_components_1.default.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n flex: 1;\n overflow-y: auto;\n position: relative;\n"], ["\n flex: 1;\n overflow-y: auto;\n position: relative;\n"])));
49
+ var S_DailyTimeRow = styled_components_1.default.div(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n display: flex;\n min-height: 60px;\n"], ["\n display: flex;\n min-height: 60px;\n"])));
50
+ var S_DailyTimeLabel = styled_components_1.default.div(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n align-items: center;\n border-bottom: 1px solid ", ";\n border-right: 1px solid ", ";\n display: flex;\n justify-content: center;\n min-width: 80px;\n padding: 8px;\n"], ["\n align-items: center;\n border-bottom: 1px solid ", ";\n border-right: 1px solid ", ";\n display: flex;\n justify-content: center;\n min-width: 80px;\n padding: 8px;\n"])), function (_a) {
51
+ var theme = _a.theme;
52
+ return theme.ui_cpnt_divider;
53
+ }, function (_a) {
54
+ var theme = _a.theme;
55
+ return theme.ui_cpnt_divider;
56
+ });
57
+ var S_DailyTimeSlot = styled_components_1.default.div(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n background: ", ";\n border-bottom: 1px solid ", ";\n cursor: pointer;\n flex: 1;\n min-width: 0;\n overflow: visible;\n padding: 4px;\n position: relative;\n\n &:hover {\n background: ", ";\n }\n"], ["\n background: ", ";\n border-bottom: 1px solid ", ";\n cursor: pointer;\n flex: 1;\n min-width: 0;\n overflow: visible;\n padding: 4px;\n position: relative;\n\n &:hover {\n background: ", ";\n }\n"])), function (props) { return (props.$isDragOver ? props.theme.ui_72 : 'transparent'); }, function (_a) {
58
+ var theme = _a.theme;
59
+ return theme.ui_cpnt_divider;
60
+ }, function (_a) {
61
+ var theme = _a.theme;
62
+ return theme.ui_72;
63
+ });
64
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5;
@@ -0,0 +1,27 @@
1
+ import type { Schedule } from './types';
2
+ import type React from 'react';
3
+ interface MonthlyViewProps {
4
+ getDayTextByDate: (date: Date) => string;
5
+ startOfWeek: 'sunday' | 'monday';
6
+ selectedDate: Date;
7
+ selectedDates: Date[];
8
+ dragStartDate: Date | null;
9
+ selectedSchedules: Schedule[];
10
+ dragEndDate: Date | null;
11
+ isDragOverDate: Date | null;
12
+ schedules: Schedule[];
13
+ getSchedulesForDate: (date: Date) => Schedule[];
14
+ isToday: (date: Date) => boolean;
15
+ isPastDate: (date: Date) => boolean;
16
+ handleDateClick: (date: Date, e: React.MouseEvent) => void;
17
+ handleScheduleClick?: (schedule: Schedule, e?: React.MouseEvent) => void;
18
+ handleMouseUp: () => void;
19
+ handleDateDragOver: (date: Date, e: React.DragEvent) => void;
20
+ handleDateDragLeave: () => void;
21
+ handleDateDrop: (date: Date, e: React.DragEvent) => void;
22
+ renderScheduleItem: (schedule: Schedule, extraProps?: any) => React.ReactNode;
23
+ handleScheduleDragStart?: (schedule: Schedule, e: React.DragEvent) => void;
24
+ handleScheduleDragEnd?: () => void;
25
+ }
26
+ export declare const MonthlyView: React.FC<MonthlyViewProps>;
27
+ export {};