@dayflow/core 2.0.6 → 3.0.0

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 (164) hide show
  1. package/dist/index.d.ts +2555 -39
  2. package/dist/index.esm.js +1 -1
  3. package/dist/index.js +1 -1
  4. package/dist/styles.css +2128 -3113
  5. package/package.json +14 -24
  6. package/LICENSE +0 -21
  7. package/README.ja.md +0 -47
  8. package/README.md +0 -49
  9. package/README.zh.md +0 -47
  10. package/dist/components/calendarEvent/components/AllDayContent.d.ts +0 -9
  11. package/dist/components/calendarEvent/components/MonthAllDayContent.d.ts +0 -8
  12. package/dist/components/calendarEvent/components/MonthRegularContent.d.ts +0 -11
  13. package/dist/components/calendarEvent/components/RegularEventContent.d.ts +0 -20
  14. package/dist/components/calendarEvent/index.d.ts +0 -4
  15. package/dist/components/calendarEvent/types.d.ts +0 -49
  16. package/dist/components/common/CalendarHeader.d.ts +0 -4
  17. package/dist/components/common/CalendarPicker.d.ts +0 -19
  18. package/dist/components/common/ColorPicker.d.ts +0 -19
  19. package/dist/components/common/ContextMenu.d.ts +0 -25
  20. package/dist/components/common/CreateCalendarDialog.d.ts +0 -3
  21. package/dist/components/common/DefaultEventDetailDialog.d.ts +0 -12
  22. package/dist/components/common/DefaultEventDetailPanel.d.ts +0 -11
  23. package/dist/components/common/EventDetailPanelWithContent.d.ts +0 -11
  24. package/dist/components/common/MiniCalendar.d.ts +0 -11
  25. package/dist/components/common/QuickCreateEventPopup.d.ts +0 -10
  26. package/dist/components/common/TodayBox.d.ts +0 -7
  27. package/dist/components/common/ViewHeader.d.ts +0 -33
  28. package/dist/components/common/ViewSwitcher.d.ts +0 -8
  29. package/dist/components/dayView/DayContent.d.ts +0 -55
  30. package/dist/components/dayView/RightPanel.d.ts +0 -16
  31. package/dist/components/dayView/util.d.ts +0 -8
  32. package/dist/components/eventLayout/constants.d.ts +0 -8
  33. package/dist/components/eventLayout/index.d.ts +0 -129
  34. package/dist/components/eventLayout/types.d.ts +0 -23
  35. package/dist/components/eventLayout/utils.d.ts +0 -5
  36. package/dist/components/mobileEventDrawer/DefaultMobileEventDrawer.d.ts +0 -3
  37. package/dist/components/mobileEventDrawer/components/Switch.d.ts +0 -7
  38. package/dist/components/mobileEventDrawer/components/TimePickerWheel.d.ts +0 -7
  39. package/dist/components/mobileEventDrawer/index.d.ts +0 -3
  40. package/dist/components/monthView/MonthDragIndicator.d.ts +0 -12
  41. package/dist/components/monthView/MultiDayEvent.d.ts +0 -31
  42. package/dist/components/monthView/WeekComponent.d.ts +0 -53
  43. package/dist/components/monthView/util.d.ts +0 -11
  44. package/dist/components/rangePicker/components/CalendarGrid.d.ts +0 -13
  45. package/dist/components/rangePicker/components/CalendarHeader.d.ts +0 -11
  46. package/dist/components/rangePicker/components/RangePickerPanel.d.ts +0 -25
  47. package/dist/components/rangePicker/components/TimeSelector.d.ts +0 -21
  48. package/dist/components/rangePicker/constants.d.ts +0 -5
  49. package/dist/components/rangePicker/index.d.ts +0 -4
  50. package/dist/components/rangePicker/types.d.ts +0 -23
  51. package/dist/components/rangePicker/utils.d.ts +0 -2
  52. package/dist/components/search/MobileSearchDialog.d.ts +0 -14
  53. package/dist/components/search/SearchDrawer.d.ts +0 -13
  54. package/dist/components/search/SearchResultsList.d.ts +0 -11
  55. package/dist/components/sidebar/DefaultCalendarSidebar.d.ts +0 -4
  56. package/dist/components/sidebar/components/CalendarList.d.ts +0 -16
  57. package/dist/components/sidebar/components/DeleteCalendarDialog.d.ts +0 -14
  58. package/dist/components/sidebar/components/ImportCalendarDialog.d.ts +0 -11
  59. package/dist/components/sidebar/components/MergeCalendarDialog.d.ts +0 -9
  60. package/dist/components/sidebar/components/MergeMenuItem.d.ts +0 -9
  61. package/dist/components/sidebar/components/SidebarHeader.d.ts +0 -7
  62. package/dist/components/weekView/AllDayRow.d.ts +0 -49
  63. package/dist/components/weekView/DragIndicator/DefaultDragIndicator.d.ts +0 -2
  64. package/dist/components/weekView/DragIndicator/DragIndicatorComponent.d.ts +0 -7
  65. package/dist/components/weekView/TimeGrid.d.ts +0 -52
  66. package/dist/components/weekView/util.d.ts +0 -9
  67. package/dist/components/yearView/DefaultYearView.d.ts +0 -11
  68. package/dist/components/yearView/FixedWeekYearView.d.ts +0 -14
  69. package/dist/components/yearView/YearDayCell.d.ts +0 -12
  70. package/dist/components/yearView/YearMultiDayEvent.d.ts +0 -23
  71. package/dist/components/yearView/YearRowComponent.d.ts +0 -27
  72. package/dist/components/yearView/utils.d.ts +0 -19
  73. package/dist/contexts/ThemeContext.d.ts +0 -38
  74. package/dist/core/CalendarApp.d.ts +0 -85
  75. package/dist/core/DayFlowCalendar.d.ts +0 -20
  76. package/dist/core/calendarRegistry.d.ts +0 -121
  77. package/dist/core/config.d.ts +0 -60
  78. package/dist/core/index.d.ts +0 -6
  79. package/dist/core/useCalendarApp.d.ts +0 -2
  80. package/dist/factories/ViewAdapter.d.ts +0 -4
  81. package/dist/factories/createDayView.d.ts +0 -3
  82. package/dist/factories/createMonthView.d.ts +0 -3
  83. package/dist/factories/createWeekView.d.ts +0 -3
  84. package/dist/factories/createYearView.d.ts +0 -3
  85. package/dist/factories/index.d.ts +0 -10
  86. package/dist/hooks/drag/index.d.ts +0 -7
  87. package/dist/hooks/drag/useDrag.d.ts +0 -2
  88. package/dist/hooks/drag/useDragCommon.d.ts +0 -2
  89. package/dist/hooks/drag/useDragHandlers.d.ts +0 -2
  90. package/dist/hooks/drag/useDragManager.d.ts +0 -2
  91. package/dist/hooks/drag/useDragState.d.ts +0 -2
  92. package/dist/hooks/drag/useMonthDrag.d.ts +0 -2
  93. package/dist/hooks/drag/useWeekDayDrag.d.ts +0 -2
  94. package/dist/hooks/useCalendarDrop.d.ts +0 -20
  95. package/dist/hooks/virtualScroll/index.d.ts +0 -2
  96. package/dist/hooks/virtualScroll/useVirtualMonthScroll.d.ts +0 -7
  97. package/dist/hooks/virtualScroll/useVirtualScroll.d.ts +0 -48
  98. package/dist/locale/LocaleContext.d.ts +0 -10
  99. package/dist/locale/LocaleProvider.d.ts +0 -8
  100. package/dist/locale/index.d.ts +0 -7
  101. package/dist/locale/intl.d.ts +0 -16
  102. package/dist/locale/locales/de.d.ts +0 -3
  103. package/dist/locale/locales/en.d.ts +0 -3
  104. package/dist/locale/locales/es.d.ts +0 -3
  105. package/dist/locale/locales/fr.d.ts +0 -3
  106. package/dist/locale/locales/index.d.ts +0 -18
  107. package/dist/locale/locales/ja.d.ts +0 -3
  108. package/dist/locale/locales/ko.d.ts +0 -3
  109. package/dist/locale/locales/zh.d.ts +0 -3
  110. package/dist/locale/translator.d.ts +0 -9
  111. package/dist/locale/types.d.ts +0 -8
  112. package/dist/locale/useLocale.d.ts +0 -5
  113. package/dist/locale/utils.d.ts +0 -10
  114. package/dist/plugins/dragPlugin.d.ts +0 -5
  115. package/dist/plugins/eventsPlugin.d.ts +0 -3
  116. package/dist/plugins/index.d.ts +0 -6
  117. package/dist/setupTests.d.ts +0 -1
  118. package/dist/styles/classNames.d.ts +0 -381
  119. package/dist/types/calendar.d.ts +0 -26
  120. package/dist/types/calendarTypes.d.ts +0 -68
  121. package/dist/types/config.d.ts +0 -19
  122. package/dist/types/core.d.ts +0 -265
  123. package/dist/types/dragIndicator.d.ts +0 -160
  124. package/dist/types/event.d.ts +0 -18
  125. package/dist/types/eventDetail.d.ts +0 -74
  126. package/dist/types/factory.d.ts +0 -155
  127. package/dist/types/hook.d.ts +0 -103
  128. package/dist/types/index.d.ts +0 -13
  129. package/dist/types/layout.d.ts +0 -113
  130. package/dist/types/mobileEvent.d.ts +0 -21
  131. package/dist/types/monthView.d.ts +0 -65
  132. package/dist/types/plugin.d.ts +0 -80
  133. package/dist/types/search.d.ts +0 -35
  134. package/dist/utils/calendarDataUtils.d.ts +0 -83
  135. package/dist/utils/colorUtils.d.ts +0 -27
  136. package/dist/utils/compareUtils.d.ts +0 -5
  137. package/dist/utils/dateConstants.d.ts +0 -22
  138. package/dist/utils/dateFormat.d.ts +0 -15
  139. package/dist/utils/dateRangeUtils.d.ts +0 -24
  140. package/dist/utils/dateTimeUtils.d.ts +0 -49
  141. package/dist/utils/eventHelpers.d.ts +0 -143
  142. package/dist/utils/eventUtils.d.ts +0 -115
  143. package/dist/utils/helpers.d.ts +0 -27
  144. package/dist/utils/ics/icsDateUtils.d.ts +0 -37
  145. package/dist/utils/ics/icsGenerator.d.ts +0 -23
  146. package/dist/utils/ics/icsParser.d.ts +0 -15
  147. package/dist/utils/ics/index.d.ts +0 -16
  148. package/dist/utils/ics/types.d.ts +0 -91
  149. package/dist/utils/index.d.ts +0 -10
  150. package/dist/utils/logger.d.ts +0 -15
  151. package/dist/utils/rangePicker.d.ts +0 -8
  152. package/dist/utils/searchUtils.d.ts +0 -35
  153. package/dist/utils/styleUtils.d.ts +0 -24
  154. package/dist/utils/temporal.d.ts +0 -100
  155. package/dist/utils/temporalTypeGuards.d.ts +0 -63
  156. package/dist/utils/testDataUtils.d.ts +0 -14
  157. package/dist/utils/themeUtils.d.ts +0 -93
  158. package/dist/utils/throttle.d.ts +0 -11
  159. package/dist/utils/timeUtils.d.ts +0 -38
  160. package/dist/utils/utilityFunctions.d.ts +0 -11
  161. package/dist/views/DayView.d.ts +0 -13
  162. package/dist/views/MonthView.d.ts +0 -11
  163. package/dist/views/WeekView.d.ts +0 -11
  164. package/dist/views/YearView.d.ts +0 -12
@@ -1,265 +0,0 @@
1
- import React from 'react';
2
- import { Event } from './event';
3
- import { ViewSwitcherMode } from '../components/common/ViewHeader';
4
- import { CalendarType, ThemeConfig, ThemeMode } from './calendarTypes';
5
- import { CalendarRegistry } from '../core/calendarRegistry';
6
- import { Locale } from '../locale/types';
7
- import { MobileEventRenderer } from './mobileEvent';
8
- /**
9
- * View type enum
10
- */
11
- export declare enum ViewType {
12
- DAY = "day",
13
- WEEK = "week",
14
- MONTH = "month",
15
- YEAR = "year"
16
- }
17
- /**
18
- * Plugin interface
19
- * Defines the basic structure of calendar plugins
20
- */
21
- export interface CalendarPlugin {
22
- name: string;
23
- install: (app: CalendarApp) => void;
24
- config?: Record<string, unknown>;
25
- api?: unknown;
26
- }
27
- /**
28
- * View interface
29
- * Defines the basic structure of calendar views
30
- */
31
- export interface CalendarView {
32
- type: ViewType;
33
- component: React.ComponentType<any>;
34
- config?: Record<string, unknown>;
35
- }
36
- /**
37
- * Calendar callbacks interface
38
- * Defines calendar event callback functions
39
- */
40
- export interface CalendarCallbacks {
41
- onViewChange?: (view: ViewType) => void | Promise<void>;
42
- onEventCreate?: (event: Event) => void | Promise<void>;
43
- onEventUpdate?: (event: Event) => void | Promise<void>;
44
- onEventDelete?: (eventId: string) => void | Promise<void>;
45
- onDateChange?: (date: Date) => void | Promise<void>;
46
- onRender?: () => void | Promise<void>;
47
- onVisibleMonthChange?: (date: Date) => void | Promise<void>;
48
- onCalendarUpdate?: (calendar: CalendarType) => void | Promise<void>;
49
- onCalendarCreate?: (calendar: CalendarType) => void | Promise<void>;
50
- onCalendarDelete?: (calendarId: string) => void | Promise<void>;
51
- onCalendarMerge?: (sourceId: string, targetId: string) => void | Promise<void>;
52
- onEventClick?: (event: Event) => void | Promise<void>;
53
- onMoreEventsClick?: (date: Date) => void | Promise<void>;
54
- }
55
- export interface CreateCalendarDialogProps {
56
- onClose: () => void;
57
- onCreate: (calendar: CalendarType) => void;
58
- colorPickerMode?: 'blossom' | 'default';
59
- }
60
- export interface CalendarHeaderProps {
61
- calendar: CalendarApp;
62
- switcherMode?: ViewSwitcherMode;
63
- onAddCalendar?: (e: React.MouseEvent<HTMLButtonElement>) => void;
64
- onSearchChange?: (value: string) => void;
65
- /** Triggered when search icon is clicked (typically on mobile) */
66
- onSearchClick?: () => void;
67
- searchValue?: string;
68
- isSearchOpen?: boolean;
69
- isEditable?: boolean;
70
- }
71
- /**
72
- * Sidebar render props
73
- */
74
- export interface CalendarSidebarRenderProps {
75
- app: CalendarApp;
76
- calendars: CalendarType[];
77
- toggleCalendarVisibility: (calendarId: string, visible: boolean) => void;
78
- toggleAll: (visible: boolean) => void;
79
- isCollapsed: boolean;
80
- setCollapsed: (collapsed: boolean) => void;
81
- renderCalendarContextMenu?: (calendar: CalendarType, onClose: () => void) => React.ReactNode;
82
- createCalendarMode?: 'inline' | 'modal';
83
- renderCreateCalendarDialog?: (props: CreateCalendarDialogProps) => React.ReactNode;
84
- editingCalendarId?: string | null;
85
- setEditingCalendarId?: (id: string | null) => void;
86
- onCreateCalendar?: () => void;
87
- colorPickerMode?: 'blossom' | 'default';
88
- }
89
- /**
90
- * Sidebar config
91
- */
92
- export interface SidebarConfig {
93
- enabled?: boolean;
94
- width?: number | string;
95
- initialCollapsed?: boolean;
96
- render?: (props: CalendarSidebarRenderProps) => React.ReactNode;
97
- renderCalendarContextMenu?: (calendar: CalendarType, onClose: () => void) => React.ReactNode;
98
- createCalendarMode?: 'inline' | 'modal';
99
- renderCreateCalendarDialog?: (props: CreateCalendarDialogProps) => React.ReactNode;
100
- /** Color picker mode: 'blossom' for BlossomColorPicker, 'default' for react-color */
101
- colorPickerMode?: 'blossom' | 'default';
102
- }
103
- /**
104
- * Calendar application configuration
105
- * Used to initialize CalendarApp
106
- */
107
- export interface CalendarAppConfig {
108
- views: CalendarView[];
109
- plugins?: CalendarPlugin[];
110
- events?: Event[];
111
- callbacks?: CalendarCallbacks;
112
- defaultView?: ViewType;
113
- initialDate?: Date;
114
- switcherMode?: ViewSwitcherMode;
115
- calendars?: CalendarType[];
116
- defaultCalendar?: string;
117
- theme?: ThemeConfig;
118
- useSidebar?: boolean | SidebarConfig;
119
- useEventDetailDialog?: boolean;
120
- useCalendarHeader?: boolean | ((props: CalendarHeaderProps) => React.ReactNode);
121
- customMobileEventRenderer?: MobileEventRenderer;
122
- locale?: string | Locale;
123
- readOnly?: boolean | ReadOnlyConfig;
124
- }
125
- /**
126
- * Read-only configuration
127
- */
128
- export interface ReadOnlyConfig {
129
- draggable?: boolean;
130
- viewable?: boolean;
131
- }
132
- /**
133
- * Calendar application state
134
- * Internal state of CalendarApp
135
- */
136
- export interface CalendarAppState {
137
- currentView: ViewType;
138
- currentDate: Date;
139
- events: Event[];
140
- plugins: Map<string, CalendarPlugin>;
141
- views: Map<ViewType, CalendarView>;
142
- switcherMode?: ViewSwitcherMode;
143
- sidebar?: SidebarConfig;
144
- locale: string | Locale;
145
- highlightedEventId?: string | null;
146
- readOnly: boolean | ReadOnlyConfig;
147
- }
148
- /**
149
- * Calendar application instance
150
- * Core interface of CalendarApp
151
- */
152
- export interface CalendarApp {
153
- state: CalendarAppState;
154
- getReadOnlyConfig: () => ReadOnlyConfig;
155
- changeView: (view: ViewType) => void;
156
- getCurrentView: () => CalendarView;
157
- setCurrentDate: (date: Date) => void;
158
- getCurrentDate: () => Date;
159
- goToToday: () => void;
160
- goToPrevious: () => void;
161
- goToNext: () => void;
162
- selectDate: (date: Date) => void;
163
- addEvent: (event: Event) => void;
164
- updateEvent: (id: string, event: Partial<Event>, isPending?: boolean) => void;
165
- deleteEvent: (id: string) => void;
166
- getEvents: () => Event[];
167
- getAllEvents: () => Event[];
168
- onEventClick: (event: Event) => void;
169
- onMoreEventsClick: (date: Date) => void;
170
- highlightEvent: (eventId: string | null) => void;
171
- getCalendars: () => CalendarType[];
172
- reorderCalendars: (fromIndex: number, toIndex: number) => void;
173
- setCalendarVisibility: (calendarId: string, visible: boolean) => void;
174
- setAllCalendarsVisibility: (visible: boolean) => void;
175
- updateCalendar: (id: string, updates: Partial<CalendarType>) => void;
176
- createCalendar: (calendar: CalendarType) => void;
177
- deleteCalendar: (id: string) => void;
178
- mergeCalendars: (sourceId: string, targetId: string) => void;
179
- setVisibleMonth: (date: Date) => void;
180
- getVisibleMonth: () => Date;
181
- getPlugin: <T = unknown>(name: string) => T | undefined;
182
- hasPlugin: (name: string) => boolean;
183
- render: () => React.ReactElement;
184
- getSidebarConfig: () => SidebarConfig;
185
- getCalendarHeaderConfig: () => boolean | ((props: CalendarHeaderProps) => React.ReactNode);
186
- triggerRender: () => void;
187
- getCalendarRegistry: () => CalendarRegistry;
188
- getUseEventDetailDialog: () => boolean;
189
- getCustomMobileEventRenderer: () => MobileEventRenderer | undefined;
190
- updateConfig: (config: Partial<CalendarAppConfig>) => void;
191
- setTheme: (mode: ThemeMode) => void;
192
- getTheme: () => ThemeMode;
193
- subscribeThemeChange: (callback: (theme: ThemeMode) => void) => (() => void);
194
- unsubscribeThemeChange: (callback: (theme: ThemeMode) => void) => void;
195
- }
196
- /**
197
- * useCalendarApp Hook return type
198
- * Calendar application interface provided for React components
199
- */
200
- export interface UseCalendarAppReturn {
201
- app: CalendarApp;
202
- currentView: ViewType;
203
- currentDate: Date;
204
- events: Event[];
205
- changeView: (view: ViewType) => void;
206
- setCurrentDate: (date: Date) => void;
207
- addEvent: (event: Event) => void;
208
- updateEvent: (id: string, event: Partial<Event>, isPending?: boolean) => void;
209
- deleteEvent: (id: string) => void;
210
- goToToday: () => void;
211
- goToPrevious: () => void;
212
- goToNext: () => void;
213
- selectDate: (date: Date) => void;
214
- getCalendars: () => CalendarType[];
215
- createCalendar: (calendar: CalendarType) => void;
216
- mergeCalendars: (sourceId: string, targetId: string) => void;
217
- setCalendarVisibility: (calendarId: string, visible: boolean) => void;
218
- setAllCalendarsVisibility: (visible: boolean) => void;
219
- getAllEvents: () => Event[];
220
- highlightEvent: (eventId: string | null) => void;
221
- setVisibleMonth: (date: Date) => void;
222
- getVisibleMonth: () => Date;
223
- sidebarConfig: SidebarConfig;
224
- readOnlyConfig: ReadOnlyConfig;
225
- }
226
- /**
227
- * Calendar configuration system type
228
- * Contains drag and view configurations
229
- */
230
- export interface CalendarConfig {
231
- locale?: string;
232
- drag: {
233
- HOUR_HEIGHT: number;
234
- FIRST_HOUR: number;
235
- LAST_HOUR: number;
236
- MIN_DURATION: number;
237
- TIME_COLUMN_WIDTH: number;
238
- ALL_DAY_HEIGHT: number;
239
- getLineColor: (color: string) => string;
240
- getDynamicPadding: (drag: {
241
- endHour: number;
242
- startHour: number;
243
- }) => string;
244
- };
245
- views: {
246
- day: Record<string, unknown>;
247
- week: Record<string, unknown>;
248
- month: Record<string, unknown>;
249
- };
250
- }
251
- export interface UseCalendarReturn {
252
- view: ViewType;
253
- currentDate: Date;
254
- events: Event[];
255
- currentWeekStart: Date;
256
- changeView: (view: ViewType) => void;
257
- goToToday: () => void;
258
- goToPrevious: () => void;
259
- goToNext: () => void;
260
- selectDate: (date: Date) => void;
261
- updateEvent: (eventId: string, updates: Partial<Event>, isPending?: boolean) => void;
262
- deleteEvent: (eventId: string) => void;
263
- addEvent: (event: Omit<Event, 'id'>) => void;
264
- setEvents: (events: Event[] | ((prev: Event[]) => Event[])) => void;
265
- }
@@ -1,160 +0,0 @@
1
- import { DragConfig, CalendarApp } from '../types';
2
- import { EventLayout } from './layout';
3
- import { Event } from './event';
4
- import { UseDragCommonReturn, UseDragManagerReturn, UseDragStateReturn } from './hook';
5
- /**
6
- * Drag mode type
7
- */
8
- export type Mode = 'create' | 'move' | 'resize' | null;
9
- /**
10
- * Drag reference interface
11
- * Stores state information for drag operations
12
- */
13
- export interface DragRef {
14
- active: boolean;
15
- mode: Mode;
16
- eventId: string | null;
17
- dayIndex: number;
18
- startX: number;
19
- startY: number;
20
- startHour: number;
21
- endHour: number;
22
- originalDay: number;
23
- originalStartHour: number;
24
- originalEndHour: number;
25
- resizeDirection: string | null;
26
- hourOffset: number | null;
27
- duration: number;
28
- lastRawMouseHour: number | null;
29
- lastUpdateTime: number;
30
- initialMouseY: number;
31
- lastClientY: number;
32
- allDay: boolean;
33
- eventDate?: Date;
34
- }
35
- /**
36
- * Event detail position interface
37
- * Used to position event detail popup
38
- */
39
- export interface EventDetailPosition {
40
- top: number;
41
- left: number;
42
- eventHeight: number;
43
- eventMiddleY: number;
44
- isSunday?: boolean;
45
- }
46
- export interface DragIndicatorProps {
47
- drag: DragRef;
48
- color?: string;
49
- title?: string;
50
- layout?: EventLayout | null;
51
- allDay: boolean;
52
- formatTime: (hour: number) => string;
53
- getLineColor: (color: string) => string;
54
- getDynamicPadding: (drag: DragRef) => string;
55
- locale?: string;
56
- isMobile?: boolean;
57
- }
58
- export interface DragIndicatorRenderer {
59
- renderAllDayContent: (props: DragIndicatorProps) => React.ReactNode;
60
- renderRegularContent: (props: DragIndicatorProps) => React.ReactNode;
61
- renderDefaultContent: (props: DragIndicatorProps) => React.ReactNode;
62
- }
63
- export interface UnifiedDragRef extends DragRef {
64
- targetDate?: Date | null;
65
- originalDate?: Date | null;
66
- originalEvent?: Event | null;
67
- dragOffset?: number;
68
- originalStartDate?: Date | null;
69
- originalEndDate?: Date | null;
70
- eventDate?: Date;
71
- originalStartTime?: {
72
- hour: number;
73
- minute: number;
74
- second: number;
75
- } | null;
76
- originalEndTime?: {
77
- hour: number;
78
- minute: number;
79
- second: number;
80
- } | null;
81
- sourceElement?: HTMLElement | null;
82
- indicatorVisible?: boolean;
83
- eventDurationDays?: number;
84
- currentSegmentDays?: number;
85
- startDragDayIndex?: number;
86
- calendarId?: string;
87
- title?: string;
88
- }
89
- export interface useDragProps extends Partial<DragConfig> {
90
- calendarRef: React.RefObject<HTMLDivElement | null>;
91
- allDayRowRef?: React.RefObject<HTMLDivElement | null>;
92
- onEventsUpdate: (updateFunc: (events: Event[]) => Event[], isResizing?: boolean) => void;
93
- onEventCreate: (event: Event) => void;
94
- onEventEdit?: (event: Event) => void;
95
- calculateNewEventLayout?: (dayIndex: number, startHour: number, endHour: number) => EventLayout | null;
96
- calculateDragLayout?: (event: Event, targetDay: number, targetStartHour: number, targetEndHour: number) => EventLayout | null;
97
- currentWeekStart: Date;
98
- events: Event[];
99
- renderer?: DragIndicatorRenderer;
100
- app?: CalendarApp;
101
- isMobile?: boolean;
102
- }
103
- export type MonthDragState = {
104
- active: boolean;
105
- mode: 'create' | 'move' | 'resize' | null;
106
- eventId: string | null;
107
- targetDate: Date | null;
108
- startDate: Date | null;
109
- endDate: Date | null;
110
- };
111
- export type WeekDayDragState = {
112
- active: boolean;
113
- mode: 'create' | 'move' | 'resize' | null;
114
- eventId: string | null;
115
- dayIndex: number;
116
- startHour: number;
117
- endHour: number;
118
- allDay: boolean;
119
- };
120
- export interface useDragReturn {
121
- createDragIndicator: (drag: UnifiedDragRef, color?: string, title?: string, layout?: EventLayout | null, sourceElement?: HTMLElement) => void;
122
- updateDragIndicator: (...args: (number | boolean | EventLayout | null | undefined)[]) => void;
123
- removeDragIndicator: () => void;
124
- handleCreateAllDayEvent?: (e: React.MouseEvent, dayIndex: number) => void;
125
- handleCreateStart: (e: React.MouseEvent | React.TouchEvent, ...args: (Date | number)[]) => void;
126
- handleMoveStart: (e: React.MouseEvent | React.TouchEvent, event: Event) => void;
127
- handleResizeStart: (e: React.MouseEvent | React.TouchEvent, event: Event, direction: string) => void;
128
- dragState: MonthDragState | WeekDayDragState;
129
- isDragging: boolean;
130
- pixelYToHour?: (y: number) => number;
131
- getColumnDayIndex?: (x: number) => number;
132
- }
133
- /**
134
- * Month view event drag state (alias for MonthDragState, maintains backward compatibility)
135
- */
136
- export type MonthEventDragState = MonthDragState;
137
- export interface UseMonthDragReturn {
138
- daysDifference: (date1: Date, date2: Date) => number;
139
- addDaysToDate: (date: Date, days: number) => Date;
140
- getTargetDateFromPosition: (clientX: number, clientY: number) => Date | null;
141
- }
142
- export interface UseMonthDragParams {
143
- options: useDragProps;
144
- common: UseDragCommonReturn;
145
- state: UseDragStateReturn;
146
- manager: UseDragManagerReturn;
147
- }
148
- export interface UseWeekDayDragReturn {
149
- handleCreateAllDayEvent: (e: React.MouseEvent, dayIndex: number) => void;
150
- pixelYToHour: (y: number) => number;
151
- getColumnDayIndex: (x: number) => number;
152
- }
153
- export interface UseWeekDayDragParams {
154
- options: useDragProps;
155
- common: UseDragCommonReturn;
156
- state: UseDragStateReturn;
157
- manager: UseDragManagerReturn;
158
- handleDragMove: (e: MouseEvent) => void;
159
- handleDragEnd: (e: MouseEvent) => void;
160
- }
@@ -1,18 +0,0 @@
1
- import { Temporal } from 'temporal-polyfill';
2
- import { ReactNode } from 'react';
3
- /**
4
- * Calendar event interface (using Temporal API)
5
- * Unified event data structure supporting single-day, cross-day, and all-day events
6
- */
7
- export interface Event {
8
- id: string;
9
- title: string;
10
- description?: string;
11
- start: Temporal.PlainDate | Temporal.PlainDateTime | Temporal.ZonedDateTime;
12
- end: Temporal.PlainDate | Temporal.PlainDateTime | Temporal.ZonedDateTime;
13
- allDay?: boolean;
14
- icon?: boolean | ReactNode;
15
- calendarId?: string;
16
- meta?: Record<string, any>;
17
- day?: number;
18
- }
@@ -1,74 +0,0 @@
1
- import { Event } from './event';
2
- import { EventDetailPosition } from './dragIndicator';
3
- import { CalendarApp } from '../types';
4
- export type { EventDetailPosition } from './dragIndicator';
5
- /**
6
- * Event detail panel Props
7
- */
8
- export interface EventDetailPanelProps {
9
- /** Current event data */
10
- event: Event;
11
- /** Panel position information */
12
- position: EventDetailPosition;
13
- /** Panel DOM reference */
14
- panelRef: React.RefObject<HTMLDivElement>;
15
- /** Whether the event is all-day */
16
- isAllDay: boolean;
17
- /** Event visibility state */
18
- eventVisibility: 'visible' | 'sticky-top' | 'sticky-bottom';
19
- /** Calendar container reference */
20
- calendarRef: React.RefObject<HTMLDivElement>;
21
- /** Selected event element reference */
22
- selectedEventElementRef: React.RefObject<HTMLDivElement>;
23
- /** Event update callback */
24
- onEventUpdate: (updatedEvent: Event) => void;
25
- /** Event delete callback */
26
- onEventDelete: (eventId: string) => void;
27
- /** Close panel callback (optional) */
28
- onClose?: () => void;
29
- }
30
- /**
31
- * Custom event detail panel renderer (full panel including positioning and styling)
32
- */
33
- export type EventDetailPanelRenderer = React.ComponentType<EventDetailPanelProps>;
34
- /**
35
- * Event detail content Props (excluding panel container, content only)
36
- */
37
- export interface EventDetailContentProps {
38
- /** Current event data */
39
- event: Event;
40
- /** Whether the event is all-day */
41
- isAllDay: boolean;
42
- /** Event update callback */
43
- onEventUpdate: (updatedEvent: Event) => void;
44
- /** Event delete callback */
45
- onEventDelete: (eventId: string) => void;
46
- /** Close panel callback (optional) */
47
- onClose?: () => void;
48
- }
49
- /**
50
- * Custom event detail content renderer (content only, will be wrapped in default panel)
51
- */
52
- export type EventDetailContentRenderer = React.ComponentType<EventDetailContentProps>;
53
- /**
54
- * Event detail dialog Props
55
- */
56
- export interface EventDetailDialogProps {
57
- /** Current event data */
58
- event: Event;
59
- /** Whether the dialog is open */
60
- isOpen: boolean;
61
- /** Whether the event is all-day */
62
- isAllDay: boolean;
63
- /** Event update callback */
64
- onEventUpdate: (updatedEvent: Event) => void;
65
- /** Event delete callback */
66
- onEventDelete: (eventId: string) => void;
67
- /** Close dialog callback */
68
- onClose: () => void;
69
- app?: CalendarApp;
70
- }
71
- /**
72
- * Custom event detail dialog renderer (Dialog/Modal mode)
73
- */
74
- export type EventDetailDialogRenderer = React.ComponentType<EventDetailDialogProps>;
@@ -1,155 +0,0 @@
1
- import React from 'react';
2
- import { CalendarView, ViewType, UseCalendarAppReturn } from './core';
3
- import { Event } from './event';
4
- import { EventLayout } from './layout';
5
- import { EventDetailContentRenderer, EventDetailDialogRenderer } from './eventDetail';
6
- import { ViewSwitcherMode } from '../components/common/ViewHeader';
7
- /**
8
- * Common Props interface for view components
9
- * Base properties for all view components
10
- */
11
- export interface BaseViewProps {
12
- app: UseCalendarAppReturn['app'];
13
- currentDate: Date;
14
- currentView: ViewType;
15
- events: Event[];
16
- onEventUpdate: (event: Event) => void;
17
- onEventDelete: (eventId: string) => void;
18
- onEventCreate: (event: Event) => void;
19
- onDateChange: (date: Date) => void;
20
- onViewChange: (view: ViewType) => void;
21
- config: Record<string, any>;
22
- }
23
- /**
24
- * Day view specific Props
25
- */
26
- export interface DayViewProps extends BaseViewProps {
27
- showMiniCalendar?: boolean;
28
- showAllDay?: boolean;
29
- scrollToCurrentTime?: boolean;
30
- selectedEvent?: Event | null;
31
- onEventSelect?: (event: Event | null) => void;
32
- }
33
- /**
34
- * Week view specific Props
35
- */
36
- export interface WeekViewProps extends BaseViewProps {
37
- showWeekends?: boolean;
38
- showAllDay?: boolean;
39
- startOfWeek?: number;
40
- scrollToCurrentTime?: boolean;
41
- }
42
- /**
43
- * Month view specific Props
44
- */
45
- export interface MonthViewProps extends BaseViewProps {
46
- showOtherMonth?: boolean;
47
- weekHeight?: number;
48
- showWeekNumbers?: boolean;
49
- enableVirtualScroll?: boolean;
50
- }
51
- /**
52
- * View factory configuration interface
53
- * Base configuration for creating views
54
- */
55
- export interface ViewFactoryConfig {
56
- enableDrag?: boolean;
57
- enableResize?: boolean;
58
- enableCreate?: boolean;
59
- dragConfig?: Record<string, any>;
60
- eventsConfig?: Record<string, any>;
61
- virtualScrollConfig?: Record<string, any>;
62
- viewConfig?: Record<string, any>;
63
- }
64
- /**
65
- * Day view factory configuration
66
- */
67
- export interface DayViewConfig extends ViewFactoryConfig {
68
- showMiniCalendar?: boolean;
69
- showAllDay?: boolean;
70
- scrollToCurrentTime?: boolean;
71
- hourHeight?: number;
72
- firstHour?: number;
73
- lastHour?: number;
74
- }
75
- /**
76
- * Week view factory configuration
77
- */
78
- export interface WeekViewConfig extends ViewFactoryConfig {
79
- showWeekends?: boolean;
80
- showAllDay?: boolean;
81
- startOfWeek?: number;
82
- scrollToCurrentTime?: boolean;
83
- hourHeight?: number;
84
- firstHour?: number;
85
- lastHour?: number;
86
- }
87
- /**
88
- * Month view factory configuration
89
- */
90
- export interface MonthViewConfig extends ViewFactoryConfig {
91
- showOtherMonth?: boolean;
92
- weekHeight?: number;
93
- showWeekNumbers?: boolean;
94
- enableVirtualScroll?: boolean;
95
- initialWeeksToLoad?: number;
96
- }
97
- /**
98
- * Year view factory configuration
99
- */
100
- export interface YearViewConfig extends ViewFactoryConfig {
101
- enableVirtualScroll?: boolean;
102
- showDebugInfo?: boolean;
103
- mode?: 'year-canvas' | 'fixed-week';
104
- showTimedEventsInYearView?: boolean;
105
- }
106
- /**
107
- * View adapter Props
108
- * Adapter properties for wrapping original components
109
- */
110
- export interface ViewAdapterProps {
111
- viewType: ViewType;
112
- originalComponent: React.ComponentType<any>;
113
- app: UseCalendarAppReturn['app'];
114
- config: ViewFactoryConfig;
115
- className?: string;
116
- customDetailPanelContent?: EventDetailContentRenderer;
117
- customEventDetailDialog?: EventDetailDialogRenderer;
118
- calendarRef: React.RefObject<HTMLDivElement>;
119
- switcherMode?: ViewSwitcherMode;
120
- meta?: Record<string, any>;
121
- }
122
- /**
123
- * Drag integration Props
124
- * Properties for integrating drag functionality into views
125
- */
126
- export interface DragIntegrationProps {
127
- app: UseCalendarAppReturn['app'];
128
- viewType: ViewType;
129
- calendarRef: React.RefObject<HTMLDivElement>;
130
- allDayRowRef?: React.RefObject<HTMLDivElement>;
131
- events: Event[];
132
- onEventsUpdate: (updateFunc: (events: Event[]) => Event[]) => void;
133
- onEventCreate: (event: Event) => void;
134
- calculateNewEventLayout?: (dayIndex: number, startHour: number, endHour: number) => EventLayout | null;
135
- calculateDragLayout?: (event: Event, targetDay: number, targetStartHour: number, targetEndHour: number) => EventLayout | null;
136
- currentWeekStart: Date;
137
- }
138
- /**
139
- * Virtual scroll integration Props
140
- * Properties for integrating virtual scroll functionality into views
141
- */
142
- export interface VirtualScrollIntegrationProps {
143
- app: UseCalendarAppReturn['app'];
144
- currentDate: Date;
145
- weekHeight?: number;
146
- onCurrentMonthChange?: (month: string, year: number) => void;
147
- initialWeeksToLoad?: number;
148
- }
149
- /**
150
- * Factory function return type
151
- * Type definition for view factory functions
152
- */
153
- export interface ViewFactory<TConfig = ViewFactoryConfig> {
154
- (config?: TConfig): CalendarView;
155
- }