react-big-schedule 8.1.0 → 9.0.1

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 (109) hide show
  1. package/README.md +24 -1129
  2. package/dist/calendar/Calendar.d.ts +28 -0
  3. package/dist/calendar/Calendar.js +95 -0
  4. package/dist/calendar/Toolbar.d.ts +18 -0
  5. package/dist/calendar/Toolbar.js +6 -0
  6. package/dist/calendar/recurrence.check.d.ts +1 -0
  7. package/dist/calendar/recurrence.check.js +49 -0
  8. package/dist/calendar/recurrence.d.ts +8 -0
  9. package/dist/calendar/recurrence.js +90 -0
  10. package/dist/calendar/timezone.d.ts +6 -0
  11. package/dist/calendar/timezone.js +14 -0
  12. package/dist/calendar/types.d.ts +187 -0
  13. package/dist/calendar/types.js +1 -0
  14. package/dist/calendar/useEventSources.d.ts +11 -0
  15. package/dist/calendar/useEventSources.js +89 -0
  16. package/dist/calendar/useRecurrence.d.ts +4 -0
  17. package/dist/calendar/useRecurrence.js +15 -0
  18. package/dist/calendar/utils.d.ts +38 -0
  19. package/dist/calendar/utils.js +143 -0
  20. package/dist/calendar/views/DayGridView.d.ts +3 -0
  21. package/dist/calendar/views/DayGridView.js +375 -0
  22. package/dist/calendar/views/ListView.d.ts +4 -0
  23. package/dist/calendar/views/ListView.js +56 -0
  24. package/dist/calendar/views/MultiMonthView.d.ts +4 -0
  25. package/dist/calendar/views/MultiMonthView.js +36 -0
  26. package/dist/calendar/views/TimeGridView.d.ts +3 -0
  27. package/dist/calendar/views/TimeGridView.js +334 -0
  28. package/dist/calendar/views/daygrid/DayCell.d.ts +19 -0
  29. package/dist/calendar/views/daygrid/DayCell.js +17 -0
  30. package/dist/calendar/views/daygrid/EventChip.d.ts +19 -0
  31. package/dist/calendar/views/daygrid/EventChip.js +40 -0
  32. package/dist/calendar/views/daygrid/layout.d.ts +30 -0
  33. package/dist/calendar/views/daygrid/layout.js +63 -0
  34. package/dist/calendar/views/list/bucket.d.ts +8 -0
  35. package/dist/calendar/views/list/bucket.js +37 -0
  36. package/dist/calendar/views/multimonth/Cell.d.ts +12 -0
  37. package/dist/calendar/views/multimonth/Cell.js +44 -0
  38. package/dist/calendar/views/multimonth/Continuous.d.ts +8 -0
  39. package/dist/calendar/views/multimonth/Continuous.js +28 -0
  40. package/dist/calendar/views/multimonth/MonthGrid.d.ts +10 -0
  41. package/dist/calendar/views/multimonth/MonthGrid.js +36 -0
  42. package/dist/calendar/views/multimonth/shared.d.ts +27 -0
  43. package/dist/calendar/views/multimonth/shared.js +40 -0
  44. package/dist/calendar/views/timegrid/DayColumn.d.ts +49 -0
  45. package/dist/calendar/views/timegrid/DayColumn.js +86 -0
  46. package/dist/calendar/views/timegrid/model.d.ts +55 -0
  47. package/dist/calendar/views/timegrid/model.js +102 -0
  48. package/dist/components/AddMore.d.ts +13 -0
  49. package/dist/components/AddMore.js +9 -42
  50. package/dist/components/AddMorePopover.d.ts +13 -0
  51. package/dist/components/AddMorePopover.js +24 -95
  52. package/dist/components/AgendaEventItem.d.ts +10 -0
  53. package/dist/components/AgendaEventItem.js +33 -81
  54. package/dist/components/AgendaResourceEvents.d.ts +10 -0
  55. package/dist/components/AgendaResourceEvents.js +37 -91
  56. package/dist/components/AgendaView.d.ts +9 -0
  57. package/dist/components/AgendaView.js +10 -69
  58. package/dist/components/BodyView.d.ts +11 -0
  59. package/dist/components/BodyView.js +36 -67
  60. package/dist/components/DnDContext.d.ts +48 -0
  61. package/dist/components/DnDContext.js +200 -221
  62. package/dist/components/DnDSource.d.ts +49 -0
  63. package/dist/components/DnDSource.js +125 -120
  64. package/dist/components/EventItem.d.ts +41 -0
  65. package/dist/components/EventItem.js +585 -787
  66. package/dist/components/EventItemPopover.d.ts +12 -0
  67. package/dist/components/EventItemPopover.js +19 -143
  68. package/dist/components/HeaderView.d.ts +14 -0
  69. package/dist/components/HeaderView.js +123 -186
  70. package/dist/components/ResourceEvents.d.ts +54 -0
  71. package/dist/components/ResourceEvents.js +534 -703
  72. package/dist/components/ResourceView.d.ts +26 -0
  73. package/dist/components/ResourceView.js +64 -184
  74. package/dist/components/SchedulerData.d.ts +136 -0
  75. package/dist/components/SchedulerData.js +1296 -1226
  76. package/dist/components/SchedulerHeader.d.ts +25 -0
  77. package/dist/components/SchedulerHeader.js +50 -150
  78. package/dist/components/SelectedArea.d.ts +8 -0
  79. package/dist/components/SelectedArea.js +11 -26
  80. package/dist/components/Summary.d.ts +11 -0
  81. package/dist/components/Summary.js +21 -50
  82. package/dist/components/WrapperFun.d.ts +2 -0
  83. package/dist/components/WrapperFun.js +5 -10
  84. package/dist/components/index.d.ts +44 -0
  85. package/dist/components/index.js +428 -654
  86. package/dist/components/ui/Icons.d.ts +8 -0
  87. package/dist/components/ui/Icons.js +7 -0
  88. package/dist/components/ui/MiniCalendar.d.ts +9 -0
  89. package/dist/components/ui/MiniCalendar.js +17 -0
  90. package/dist/components/ui/Popover.d.ts +13 -0
  91. package/dist/components/ui/Popover.js +80 -0
  92. package/dist/config/default.d.ts +36 -0
  93. package/dist/config/default.js +17 -26
  94. package/dist/config/i18n.d.ts +27 -0
  95. package/dist/config/i18n.js +21 -37
  96. package/dist/config/scheduler.d.ts +12 -0
  97. package/dist/config/scheduler.js +126 -119
  98. package/dist/css/style.css +2 -316
  99. package/dist/helper/behaviors.d.ts +14 -0
  100. package/dist/helper/behaviors.js +75 -75
  101. package/dist/helper/utility.d.ts +26 -0
  102. package/dist/helper/utility.js +23 -30
  103. package/dist/index.d.ts +6 -477
  104. package/dist/index.js +4 -2
  105. package/dist/sample-data/sample1.d.ts +11 -0
  106. package/dist/sample-data/sample1.js +427 -372
  107. package/dist/types.d.ts +267 -0
  108. package/dist/types.js +1 -0
  109. package/package.json +30 -27
@@ -1,56 +1,49 @@
1
1
  import dayjs from 'dayjs';
2
2
  export function getPos(element) {
3
- let x = 0;
4
- let y = 0;
5
- let currentElement = element;
6
- while (currentElement) {
7
- x += currentElement.offsetLeft - currentElement.scrollLeft;
8
- y += currentElement.offsetTop - currentElement.scrollTop;
9
- currentElement = currentElement.offsetParent;
10
- }
11
- return {
12
- x,
13
- y
14
- };
3
+ let x = 0;
4
+ let y = 0;
5
+ let currentElement = element;
6
+ while (currentElement) {
7
+ x += currentElement.offsetLeft - currentElement.scrollLeft;
8
+ y += currentElement.offsetTop - currentElement.scrollTop;
9
+ currentElement = currentElement.offsetParent;
10
+ }
11
+ return { x, y };
15
12
  }
16
-
17
13
  /**
18
14
  * Generates the next numeric event ID by finding the maximum numeric ID in the events array
19
15
  * and incrementing it by 1. Filters out non-numeric and non-finite IDs.
20
- * @param {Array} events - Array of event objects with id properties
21
- * @returns {number} The next available numeric ID
22
16
  */
23
17
  export function getNextNumericEventId(events) {
24
- const numericIds = events.map(event => event.id).filter(id => typeof id === 'number' && Number.isFinite(id));
25
- return Math.max(...numericIds, 0) + 1;
18
+ const numericIds = events
19
+ .map(event => event.id)
20
+ .filter((id) => typeof id === 'number' && Number.isFinite(id));
21
+ return Math.max(...numericIds, 0) + 1;
26
22
  }
27
-
28
23
  /**
29
24
  * Returns true if the string is a date-only value (YYYY-MM-DD) with no time component.
30
25
  */
31
26
  export function isDateOnly(dateStr) {
32
- return typeof dateStr === 'string' && /^\d{4}-\d{2}-\d{2}$/.test(dateStr);
27
+ return typeof dateStr === 'string' && /^\d{4}-\d{2}-\d{2}$/.test(dateStr);
33
28
  }
34
-
35
29
  /**
36
30
  * Normalizes an event start date string to a dayjs object.
37
31
  * Date-only strings are treated as start-of-day.
38
32
  */
39
33
  export function normalizeEventStart(dateStr) {
40
- if (isDateOnly(dateStr)) {
41
- return dayjs(dateStr).startOf('day');
42
- }
43
- return dayjs(dateStr);
34
+ if (isDateOnly(dateStr)) {
35
+ return dayjs(dateStr).startOf('day');
36
+ }
37
+ return dayjs(dateStr);
44
38
  }
45
-
46
39
  /**
47
40
  * Normalizes an event end date string to a dayjs object.
48
41
  * Date-only strings are treated as end-of-day to avoid UTC midnight timezone shifting
49
42
  * causing off-by-one errors in day-cell span calculations (particularly in Month view).
50
43
  */
51
44
  export function normalizeEventEnd(dateStr) {
52
- if (isDateOnly(dateStr)) {
53
- return dayjs(dateStr).endOf('day');
54
- }
55
- return dayjs(dateStr);
56
- }
45
+ if (isDateOnly(dateStr)) {
46
+ return dayjs(dateStr).endOf('day');
47
+ }
48
+ return dayjs(dateStr);
49
+ }
package/dist/index.d.ts CHANGED
@@ -1,477 +1,6 @@
1
- import type { ConfigType, Dayjs, OptionType } from 'dayjs';
2
- import React, { type CSSProperties } from 'react';
3
-
4
- export class Scheduler<EventType extends EventItem = EventItem> extends React.Component<
5
- SchedulerProps<EventType>,
6
- // biome-ignore lint/suspicious/noExplicitAny: legacy any usage
7
- any
8
- > {}
9
-
10
- export function AddMorePopover<EventType extends EventItem = EventItem>(
11
- props: AddMorePopoverProps<EventType>,
12
- ): React.ReactElement;
13
-
14
- export interface SchedulerProps<EventType extends EventItem = EventItem> {
15
- schedulerData: SchedulerData<EventType>;
16
- prevClick(schedulerData: SchedulerData<EventType>): void;
17
- nextClick(schedulerData: SchedulerData<EventType>): void;
18
- onSelectDate(schedulerData: SchedulerData<EventType>, date: string): void;
19
- onViewChange(schedulerData: SchedulerData<EventType>, view: View): void;
20
- eventItemClick?: (schedulerData: SchedulerData<EventType>, event: EventType) => void;
21
- eventItemTemplateResolver?: (
22
- schedulerData: SchedulerData<EventType>,
23
- event: EventType,
24
- bgColor: string,
25
- isStart: boolean,
26
- isEnd: boolean,
27
- mustAddCssClass: string,
28
- mustBeHeight: number,
29
- agendaMaxEventWidth: number,
30
- ) => void;
31
- eventItemPopoverTemplateResolver?: (
32
- schedulerData: SchedulerData<EventType>,
33
- event: EventType,
34
- title: string,
35
- start: Dayjs,
36
- end: Dayjs,
37
- statusColor: string,
38
- ) => void;
39
- toggleExpandFunc?: (schedulerData: SchedulerData<EventType>, slotId: string) => void;
40
- viewEventClick?: (schedulerData: SchedulerData<EventType>, event: EventType) => void;
41
- viewEventText?: string;
42
- viewEvent2Text?: string;
43
- viewEvent2Click?: (schedulerData: SchedulerData<EventType>, event: EventType) => void;
44
- updateEventStart?: (schedulerData: SchedulerData<EventType>, event: EventType, newStart: string) => void;
45
- updateEventEnd?: (schedulerData: SchedulerData<EventType>, event: EventType, newEnd: string) => void;
46
- moveEvent?: (
47
- schedulerData: SchedulerData<EventType>,
48
- event: EventType,
49
- slotId: string,
50
- slotName: string,
51
- start: string,
52
- end: string,
53
- ) => void;
54
- newEvent?: (
55
- schedulerData: SchedulerData<EventType>,
56
- slotId: string,
57
- slotName: string,
58
- start: string,
59
- end: string,
60
- type: string,
61
- item: EventType,
62
- ) => void;
63
- onScrollLeft?: (
64
- schedulerData: SchedulerData<EventType>,
65
- schedulerContent: React.ReactNode,
66
- maxScrollLeft: number,
67
- ) => void;
68
- onScrollRight?: (
69
- schedulerData: SchedulerData<EventType>,
70
- schedulerContent: React.ReactNode,
71
- maxScrollLeft: number,
72
- ) => void;
73
- onScrollTop?: (
74
- schedulerData: SchedulerData<EventType>,
75
- schedulerContent: React.ReactNode,
76
- maxScrollTop: number,
77
- ) => void;
78
- onScrollBottom?: (
79
- schedulerData: SchedulerData<EventType>,
80
- schedulerContent: React.ReactNode,
81
- maxScrollTop: number,
82
- ) => void;
83
- onSetAddMoreState?: (newState: State<EventType>) => void;
84
- conflictOccurred?: (
85
- schedulerData: SchedulerData<EventType>,
86
- action: string,
87
- item: EventType,
88
- type: string,
89
- slotId: string,
90
- slotName: string,
91
- newStart: string,
92
- newEnd: string,
93
- ) => void;
94
- nonAgendaCellHeaderTemplateResolver?: (
95
- schedulerData: SchedulerData<EventType>,
96
- item: { time: string; nonWorkingTime: boolean },
97
- formattedDateItems: string[],
98
- style: CSSProperties,
99
- ) => void;
100
- subtitleGetter?: (schedulerData: SchedulerData<EventType>, event: EventType) => void;
101
- movingEvent?: (
102
- schedulerData: SchedulerData<EventType>,
103
- slotId: string,
104
- slotName: string,
105
- newStart: string,
106
- newEnd: string,
107
- action: string,
108
- type: string,
109
- item: EventType,
110
- ) => void;
111
- slotClickedFunc?: (schedulerData: SchedulerData<EventType>, slot: ResourceEvent<EventType>) => void;
112
- slotItemTemplateResolver?: (
113
- schedulerData: SchedulerData<EventType>,
114
- slot: ResourceEvent<EventType>,
115
- slotClickedFunc: (schedulerData: SchedulerData<EventType>, slot: ResourceEvent<EventType>) => void,
116
- width: number,
117
- clsName: string,
118
- ) => void;
119
- leftCustomHeader?: React.ReactNode;
120
- rightCustomHeader?: React.ReactNode;
121
- dndSources?: DnDSource[];
122
- // biome-ignore lint/suspicious/noExplicitAny: legacy any usage
123
- parentRef?: React.RefObject<any>;
124
- /** Class names for the scheduler's container, e.g. tailwind classes. They win over the default 100% width / max height. */
125
- className?: string;
126
- /** Inline style for the scheduler's container. */
127
- style?: CSSProperties;
128
- // biome-ignore lint/suspicious/noExplicitAny: legacy any usage
129
- CustomResourceHeader?: React.ComponentType<any>;
130
- CustomResourceCell?: React.ComponentType<CustomResourceCellProps<EventType>>;
131
- configTableHeaderStyle?: CSSProperties;
132
- }
133
-
134
- export interface CustomResourceCellProps<EventType extends EventItem = EventItem> {
135
- schedulerData: SchedulerData<EventType>;
136
- item: ResourceEvent<EventType>;
137
- indents: React.ReactNode[];
138
- slotClickedFunc?: (schedulerData: SchedulerData<EventType>, slot: ResourceEvent<EventType>) => void;
139
- handleToggleExpand: (item: ResourceEvent<EventType>) => void;
140
- }
141
-
142
- export interface AddMorePopoverProps<EventType extends EventItem = EventItem> {
143
- schedulerData: SchedulerData<EventType>;
144
- headerItem: HeaderItem<EventType>;
145
- left: number;
146
- top: number;
147
- height: number;
148
- closeAction: (newState: State<EventType>) => void;
149
- subtitleGetter?: SchedulerProps<EventType>['subtitleGetter'];
150
- moveEvent?: SchedulerProps<EventType>['moveEvent'];
151
- eventItemClick?: SchedulerProps<EventType>['eventItemClick'];
152
- viewEventClick?: SchedulerProps<EventType>['viewEventClick'];
153
- viewEventText?: string;
154
- viewEvent2Text?: string;
155
- viewEvent2Click?: SchedulerProps<EventType>['viewEvent2Click'];
156
- eventItemTemplateResolver?: SchedulerProps<EventType>['eventItemTemplateResolver'];
157
- }
158
-
159
- export class SchedulerData<EventType extends EventItem = EventItem> {
160
- localeDayjs(date?: ConfigType): Dayjs;
161
- localeDayjs(date?: ConfigType, format?: OptionType, strict?: boolean): Dayjs;
162
- localeDayjs(date?: ConfigType, format?: OptionType, locale?: string, strict?: boolean): Dayjs;
163
-
164
- cellUnit: CellUnit;
165
- viewType: ViewType;
166
- startDate: string;
167
- config: SchedulerDataConfig;
168
- resources: Resource[];
169
- events: EventType[];
170
- eventGroups: EventGroup<EventType>[];
171
- eventGroupsAutoGenerated: boolean;
172
- showAgenda: boolean;
173
- isEventPerspective: boolean;
174
- resizing: boolean;
175
- scrollToSpecialDayjs: boolean;
176
- documentWidth: number;
177
- behaviors: SchedulerDataBehaviors<EventType>;
178
-
179
- constructor(
180
- date?: string | Dayjs,
181
- viewType?: ViewType,
182
- showAgenda?: boolean,
183
- isEventPerspective?: boolean,
184
- newConfig?: SchedulerDataConfig,
185
- newBehaviours?: SchedulerDataBehaviors<EventType>,
186
- );
187
-
188
- setSchedulerLocale(preset: string | ILocale, object?: Partial<ILocale>): void;
189
- setCalendarPopoverLocale(lang: string): void;
190
- setResources(resources: Resource[]): void;
191
- setEvents(events: EventType[]): void;
192
- prev(): void;
193
- next(): void;
194
- setViewType(viewType?: ViewType, showAgenda?: boolean, isEventPerspective?: boolean): void;
195
- setDate(date?: string): void;
196
- setEventGroups(eventGroups: EventGroup<EventType>[]): void;
197
- setEventGroupsAutoGenerated(autoGenerated: boolean): void;
198
- setMinuteStep(minuteStep: number): void;
199
- getMinuteStepsInHour(): number;
200
- addEventGroup(eventGroup: EventGroup<EventType>): void;
201
- updateEventStart(event: EventType, newStart: string): void;
202
- updateEventEnd(event: EventType, newEnd: string): void;
203
- moveEvent(event: EventType, newSlotId: string, newSlotName: string, newStart: string, newEnd: string): void;
204
- getSlots(): EventGroup<EventType>[] | Resource[];
205
- addResource(resource: Resource): void;
206
- getSlotById(slotId: string): EventType;
207
- toggleExpandStatus(slotId: string): void;
208
- removeEventById(eventId: string): void;
209
- removeEvent(event: EventType): void;
210
- isEventInTimeWindow(
211
- eventStart: Date | Dayjs,
212
- eventEnd: Date | Dayjs,
213
- windowStart: Date | Dayjs,
214
- windowEnd: Date | Dayjs,
215
- ): boolean;
216
- addEvent(newEvent: EventType): void;
217
- getResourceById(resourceId: string): ResourceEvent<EventType>;
218
- getViewStartDate(): Dayjs;
219
- getViewEndDate(): Dayjs;
220
- getViewDates(): { startDate: Dayjs; endDate: Dayjs };
221
- }
222
-
223
- export class DnDContext {
224
- constructor(sources: DnDSource[]);
225
- }
226
-
227
- export class DnDSource {
228
- // biome-ignore lint/complexity/noBannedTypes: legacy {} usage
229
- // biome-ignore lint/suspicious/noExplicitAny: legacy any usage
230
- constructor(resolveDragObjFunc: (props: {}) => any, dragAnDropEnabled: boolean, dndType?: string);
231
- }
232
-
233
- export enum CellUnit {
234
- Day,
235
- Hour,
236
- Week,
237
- Month,
238
- Year,
239
- Quarter,
240
- }
241
-
242
- export enum ViewType {
243
- Day,
244
- Week,
245
- Month,
246
- Quarter,
247
- Year,
248
- Custom,
249
- Custom1,
250
- Custom2,
251
- }
252
-
253
- export interface View {
254
- viewName?: string;
255
- viewType: ViewType;
256
- showAgenda: boolean;
257
- isEventPerspective: boolean;
258
- }
259
-
260
- export interface EventGroup<EventType extends EventItem = EventItem> {
261
- id: string;
262
- name: string;
263
- state: EventType;
264
- }
265
-
266
- export interface EventItem {
267
- id: number | string;
268
- start: string;
269
- end: string;
270
- resourceId: string;
271
- title: string;
272
- bgColor?: string;
273
- rrule?: string;
274
- showPopover?: boolean;
275
- resizable?: boolean;
276
- movable?: boolean;
277
- startResizable?: boolean;
278
- endResizable?: boolean;
279
- groupId?: string;
280
- groupName?: string;
281
- /**
282
- * @deprecated This property should not be used as EXRULE has been [deprecated in RFC 5545](https://icalendar.org/iCalendar-RFC-5545/a-3-deprecated-features.html) and does not support a DTSTART property
283
- */
284
- exrule?: string;
285
- exdates?: string[];
286
- [x: string]: unknown;
287
- }
288
-
289
- export interface ResourceEvent<EventType extends EventItem = EventItem> {
290
- id: number;
291
- name: string;
292
- parentId?: string;
293
- groupOnly?: boolean;
294
- hasSummary?: boolean;
295
- expanded?: boolean;
296
- headerItems?: EventType[];
297
- render?: boolean;
298
- rowHeight: number;
299
- rowMaxCount: number;
300
- slotName: string;
301
- slotId: string;
302
- }
303
-
304
- export interface Resource {
305
- id: string;
306
- name: string;
307
- parentId?: string;
308
- groupOnly?: boolean;
309
- }
310
-
311
- export interface HeaderItem<EventType extends EventItem = EventItem> {
312
- time: string;
313
- start: string;
314
- end: string;
315
- addMore: number;
316
- addMoreIndex: number;
317
- count: number;
318
- nonWorkingTime: boolean;
319
- events: EventType[];
320
- }
321
-
322
- export interface HeaderEvent<EventType extends EventItem = EventItem> {
323
- render: boolean;
324
- span: number;
325
- eventItem: EventType;
326
- }
327
-
328
- export interface State<EventType extends EventItem = EventItem> {
329
- headerItem: HeaderItem<EventType>;
330
- left: number;
331
- top: number;
332
- height: number;
333
- }
334
-
335
- export interface SchedulerDataConfig {
336
- schedulerWidth?: `${number}%`;
337
- underneathHeight?: number;
338
- schedulerMaxHeight?: number;
339
- tableHeaderHeight?: number;
340
- schedulerContentHeight?: string | number;
341
- agendaResourceTableWidth?: string | number;
342
- agendaMaxEventWidth?: string | number;
343
- dayResourceTableWidth?: string | number;
344
- weekResourceTableWidth?: string | number;
345
- monthResourceTableWidth?: string | number;
346
- quarterResourceTableWidth?: string | number;
347
- yearResourceTableWidth?: string | number;
348
- customResourceTableWidth?: string | number;
349
- dayCellWidth?: string | number;
350
- weekCellWidth?: string | number;
351
- monthCellWidth?: string | number;
352
- quarterCellWidth?: string | number;
353
- yearCellWidth?: string | number;
354
- customCellWidth?: string | number;
355
- dayMaxEvents?: number;
356
- weekMaxEvents?: number;
357
- monthMaxEvents?: number;
358
- quarterMaxEvents?: number;
359
- yearMaxEvents?: number;
360
- customMaxEvents?: number;
361
- eventItemPopoverTrigger?: 'hover' | 'click';
362
- eventItemPopoverPlacement?:
363
- | 'topLeftMousePosition'
364
- | 'bottomLeftMousePosition'
365
- | 'topRightMousePosition'
366
- | 'bottomRightMousePosition'
367
- | 'top'
368
- | 'left'
369
- | 'right'
370
- | 'bottom'
371
- | 'topLeft'
372
- | 'topRight'
373
- | 'bottomLeft'
374
- | 'bottomRight'
375
- | 'leftTop'
376
- | 'leftBottom'
377
- | 'rightTop'
378
- | 'rightBottom';
379
- eventItemPopoverWidth?: number;
380
- eventItemHeight?: number;
381
- eventItemLineHeight?: number;
382
- nonAgendaSlotMinHeight?: number;
383
- dayStartFrom?: number;
384
- dayStopTo?: number;
385
- defaultEventBgColor?: string;
386
- selectedAreaColor?: string;
387
- nonWorkingTimeHeadColor?: string;
388
- nonWorkingTimeHeadBgColor?: string;
389
- nonWorkingTimeBodyBgColor?: string;
390
- summaryColor?: string;
391
- summaryPos?: SummaryPos;
392
- groupOnlySlotColor?: string;
393
- startResizable?: boolean;
394
- endResizable?: boolean;
395
- movable?: boolean;
396
- creatable?: boolean;
397
- crossResourceMove?: boolean;
398
- checkConflict?: boolean;
399
- scrollToSpecialDaysjsEnabled?: boolean;
400
- eventItemPopoverEnabled?: boolean;
401
- calendarPopoverEnabled?: boolean;
402
- recurringEventsEnabled?: boolean;
403
- viewChangeSpinEnabled?: boolean;
404
- dateChangeSpinEnabled?: boolean;
405
- headerEnabled?: boolean;
406
- resourceViewEnabled?: boolean;
407
- displayWeekend?: boolean;
408
- relativeMove?: boolean;
409
- defaultExpanded?: boolean;
410
- dragAndDropEnabled?: boolean;
411
- schedulerHeaderEventsFuncsTimeoutMs?: number;
412
- resourceName?: string;
413
- taskName?: string;
414
- agendaViewHeader?: string;
415
- addMorePopoverHeaderFormat?: string;
416
- eventItemPopoverDateFormat?: string;
417
- nonAgendaDayCellHeaderFormat?: string;
418
- nonAgendaOtherCellHeaderFormat?: string;
419
- minuteStep?: number;
420
- views?: View[];
421
- responsiveByParent?: boolean;
422
- showWeekNumber?: boolean;
423
- weekNumberRowHeight?: number;
424
- showMonthRow?: boolean;
425
- /** Show a box where the dragged event / task / resource would be placed (default true). */
426
- dropPreviewEnabled?: boolean;
427
- /** Extra class name for the drop preview box. */
428
- dropPreviewClassName?: string;
429
- /** Inline style for the drop preview box, e.g. `{ border: '2px dashed green' }`. */
430
- dropPreviewStyle?: React.CSSProperties;
431
- monthRowHeight?: number;
432
- weekNumberLabel?: string;
433
- headerBorderColor?: string;
434
- }
435
-
436
- export enum SummaryPos {
437
- Top,
438
- TopRight,
439
- TopLeft,
440
- Bottom,
441
- BottomRight,
442
- BottomLeft,
443
- }
444
-
445
- export interface SchedulerDataBehaviors<EventType extends EventItem = EventItem> {
446
- isNonWorkingTimeFunc?: (schedulerData: SchedulerData<EventType>, time: string) => boolean;
447
- getCustomDateFunc?: (
448
- schedulerData: SchedulerData<EventType>,
449
- num: number,
450
- date?: string | Dayjs,
451
- ) => { startDate: string | Dayjs; endDate: string | Dayjs; cellUnit: CellUnit };
452
- getEventTextFunc?: (schedulerData: SchedulerData<EventType>, event: EventType) => string;
453
- getDateLabel?: (
454
- schedulerData: SchedulerData<EventType>,
455
- viewType: ViewType,
456
- startDate: string | Date,
457
- endDate: string | Date,
458
- ) => string;
459
- getScrollSpecialDayjs?: (schedulerData: SchedulerData<EventType>, startDayjs: Dayjs, endDays: Dayjs) => Dayjs;
460
- getSummaryFunc?: (
461
- schedulerData: SchedulerData<EventType>,
462
- headerEvents: HeaderEvent<EventType>[],
463
- slotId: string,
464
- slotName: string,
465
- headerStart: string,
466
- headerEnd: string,
467
- ) => { text: string; color: string; fontSize: string };
468
- getNonAgendaViewBodyCellBgColorFunc?: (
469
- schedulerData: SchedulerData<EventType>,
470
- slotId: string,
471
- header: { nonWorkingTime: boolean; time: string },
472
- ) => string;
473
- }
474
-
475
- export const DATE_FORMAT = 'YYYY-MM-DD';
476
-
477
- export const DATETIME_FORMAT = 'YYYY-MM-DD HH:mm:ss';
1
+ export { type CalendarProps, default as Calendar } from './calendar/Calendar';
2
+ export type * from './calendar/types';
3
+ export { AddMorePopover, CellUnit, DATE_FORMAT, DATETIME_FORMAT, DemoData, DnDContext, DnDSource, Scheduler, SchedulerData, SummaryPos, ViewType, wrapperFun, } from './components/index';
4
+ export { getDefaultLabels, getLabel, resetLabelsProvider, setLabelsProvider, } from './config/i18n';
5
+ export { createDemoData } from './sample-data/sample1';
6
+ export type * from './types';
package/dist/index.js CHANGED
@@ -1,2 +1,4 @@
1
- export { AddMorePopover, CellUnit, DATE_FORMAT, DATETIME_FORMAT, DemoData, DnDContext, DnDSource, Scheduler, SchedulerData, SummaryPos, ViewType, wrapperFun } from './components/index';
2
- export { getDefaultLabels, getLabel, resetLabelsProvider, setLabelsProvider } from './config/i18n';
1
+ export { default as Calendar } from './calendar/Calendar';
2
+ export { AddMorePopover, CellUnit, DATE_FORMAT, DATETIME_FORMAT, DemoData, DnDContext, DnDSource, Scheduler, SchedulerData, SummaryPos, ViewType, wrapperFun, } from './components/index';
3
+ export { getDefaultLabels, getLabel, resetLabelsProvider, setLabelsProvider, } from './config/i18n';
4
+ export { createDemoData } from './sample-data/sample1';
@@ -0,0 +1,11 @@
1
+ import type { DateInput, Resource, SchedulerEvent } from '../types';
2
+ interface DemoDataset {
3
+ resources: Resource[];
4
+ events: SchedulerEvent[];
5
+ eventsForTaskView: SchedulerEvent[];
6
+ eventsForCustomEventStyle: SchedulerEvent[];
7
+ }
8
+ /** Sample resources and events moved to the week that contains `anchor` (default: today), so demos always show the current period. */
9
+ export declare function createDemoData(anchor?: DateInput): DemoDataset;
10
+ declare const DemoData: DemoDataset;
11
+ export default DemoData;