@mantine/schedule 9.5.2 → 9.6.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 (240) hide show
  1. package/cjs/_virtual/_rolldown/runtime.cjs +1 -1
  2. package/cjs/components/AgendaView/AgendaView.cjs +7 -6
  3. package/cjs/components/AgendaView/AgendaView.cjs.map +1 -1
  4. package/cjs/components/AgendaView/get-agenda-view-events.cjs.map +1 -1
  5. package/cjs/components/CurrentTimeIndicator/CurrentTimeIndicator.cjs +3 -2
  6. package/cjs/components/CurrentTimeIndicator/CurrentTimeIndicator.cjs.map +1 -1
  7. package/cjs/components/DayView/DayView.cjs +153 -80
  8. package/cjs/components/DayView/DayView.cjs.map +1 -1
  9. package/cjs/components/DayView/DayView.module.cjs +1 -0
  10. package/cjs/components/DayView/DayView.module.cjs.map +1 -1
  11. package/cjs/components/DayView/get-day-view-events/get-day-positioned-events.cjs +12 -7
  12. package/cjs/components/DayView/get-day-view-events/get-day-positioned-events.cjs.map +1 -1
  13. package/cjs/components/DayView/get-day-view-events/get-day-view-events.cjs +3 -2
  14. package/cjs/components/DayView/get-day-view-events/get-day-view-events.cjs.map +1 -1
  15. package/cjs/components/DragContext/DragContext.cjs.map +1 -1
  16. package/cjs/components/MobileMonthView/MobileMonthView.cjs +7 -6
  17. package/cjs/components/MobileMonthView/MobileMonthView.cjs.map +1 -1
  18. package/cjs/components/MobileMonthView/get-mobile-month-view-events.cjs.map +1 -1
  19. package/cjs/components/MonthView/MonthView.cjs +24 -34
  20. package/cjs/components/MonthView/MonthView.cjs.map +1 -1
  21. package/cjs/components/MonthView/MonthView.module.cjs.map +1 -1
  22. package/cjs/components/MonthView/get-month-view-events/find-available-row.cjs.map +1 -1
  23. package/cjs/components/MonthView/get-month-view-events/get-month-positioned-events.cjs +4 -2
  24. package/cjs/components/MonthView/get-month-view-events/get-month-positioned-events.cjs.map +1 -1
  25. package/cjs/components/MonthView/get-month-view-events/get-month-view-events.cjs.map +1 -1
  26. package/cjs/components/MonthView/get-month-view-events/get-weeks-in-range.cjs +3 -2
  27. package/cjs/components/MonthView/get-month-view-events/get-weeks-in-range.cjs.map +1 -1
  28. package/cjs/components/MonthView/get-renderable-month-event-segments.cjs +1 -1
  29. package/cjs/components/MonthView/get-renderable-month-event-segments.cjs.map +1 -1
  30. package/cjs/components/MoreEvents/MoreEvents.cjs.map +1 -1
  31. package/cjs/components/ResourcesDayView/ResourcesDayView.cjs +137 -53
  32. package/cjs/components/ResourcesDayView/ResourcesDayView.cjs.map +1 -1
  33. package/cjs/components/ResourcesDayView/ResourcesDayView.module.cjs +2 -1
  34. package/cjs/components/ResourcesDayView/ResourcesDayView.module.cjs.map +1 -1
  35. package/cjs/components/ResourcesDayView/ResourcesDayViewColumn.cjs.map +1 -1
  36. package/cjs/components/ResourcesDayView/get-resources-day-view-events/get-resources-day-view-events.cjs.map +1 -1
  37. package/cjs/components/ResourcesMonthView/ResourcesMonthView.cjs.map +1 -1
  38. package/cjs/components/ResourcesSchedule/ResourcesSchedule.cjs +3 -1
  39. package/cjs/components/ResourcesSchedule/ResourcesSchedule.cjs.map +1 -1
  40. package/cjs/components/ResourcesWeekView/ResourcesWeekView.cjs +151 -60
  41. package/cjs/components/ResourcesWeekView/ResourcesWeekView.cjs.map +1 -1
  42. package/cjs/components/ResourcesWeekView/ResourcesWeekView.module.cjs +2 -1
  43. package/cjs/components/ResourcesWeekView/ResourcesWeekView.module.cjs.map +1 -1
  44. package/cjs/components/ResourcesWeekView/ResourcesWeekViewRow.cjs.map +1 -1
  45. package/cjs/components/ResourcesWeekView/get-resources-week-view-events/get-resources-week-view-events.cjs +6 -3
  46. package/cjs/components/ResourcesWeekView/get-resources-week-view-events/get-resources-week-view-events.cjs.map +1 -1
  47. package/cjs/components/Schedule/Schedule.cjs +4 -1
  48. package/cjs/components/Schedule/Schedule.cjs.map +1 -1
  49. package/cjs/components/ScheduleBackgroundEvent/ScheduleBackgroundEvent.cjs +53 -0
  50. package/cjs/components/ScheduleBackgroundEvent/ScheduleBackgroundEvent.cjs.map +1 -0
  51. package/cjs/components/ScheduleEvent/ScheduleEvent.cjs.map +1 -1
  52. package/cjs/components/ScheduleEvent/ScheduleEvent.module.cjs.map +1 -1
  53. package/cjs/components/ScheduleHeader/HeaderControl/HeaderControl.cjs +15 -14
  54. package/cjs/components/ScheduleHeader/HeaderControl/HeaderControl.cjs.map +1 -1
  55. package/cjs/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.cjs.map +1 -1
  56. package/cjs/components/ScheduleHeader/ScheduleHeader.cjs.map +1 -1
  57. package/cjs/components/ScheduleHeader/ScheduleHeaderBase.cjs.map +1 -1
  58. package/cjs/components/ScheduleHeader/ScheduleHeaderContext.cjs.map +1 -1
  59. package/cjs/components/ScheduleHeader/ViewSelect/ViewSelect.cjs.map +1 -1
  60. package/cjs/components/WeekView/WeekView.cjs +168 -84
  61. package/cjs/components/WeekView/WeekView.cjs.map +1 -1
  62. package/cjs/components/WeekView/WeekView.module.cjs +1 -0
  63. package/cjs/components/WeekView/WeekView.module.cjs.map +1 -1
  64. package/cjs/components/WeekView/WeekViewDay.cjs.map +1 -1
  65. package/cjs/components/WeekView/get-week-label/get-week-label.cjs.map +1 -1
  66. package/cjs/components/WeekView/get-week-view-events/calculate-all-day-event-offset.cjs.map +1 -1
  67. package/cjs/components/WeekView/get-week-view-events/calculate-all-day-event-width.cjs.map +1 -1
  68. package/cjs/components/WeekView/get-week-view-events/calculate-event-days.cjs.map +1 -1
  69. package/cjs/components/WeekView/get-week-view-events/get-event-end-date.cjs.map +1 -1
  70. package/cjs/components/WeekView/get-week-view-events/get-hanging-status.cjs.map +1 -1
  71. package/cjs/components/WeekView/get-week-view-events/get-week-positioned-events.cjs +4 -2
  72. package/cjs/components/WeekView/get-week-view-events/get-week-positioned-events.cjs.map +1 -1
  73. package/cjs/components/YearView/YearView.cjs +7 -6
  74. package/cjs/components/YearView/YearView.cjs.map +1 -1
  75. package/cjs/components/YearView/YearViewMonth.cjs.map +1 -1
  76. package/cjs/components/YearView/get-visible-week-days.cjs.map +1 -1
  77. package/cjs/components/YearView/get-year-view-events/get-year-view-events.cjs.map +1 -1
  78. package/cjs/hooks/use-auto-scroll-on-drag.cjs.map +1 -1
  79. package/cjs/hooks/use-day-grid-event-resize.cjs.map +1 -1
  80. package/cjs/hooks/use-drag-drop-handlers.cjs +13 -2
  81. package/cjs/hooks/use-drag-drop-handlers.cjs.map +1 -1
  82. package/cjs/hooks/use-drag-state.cjs.map +1 -1
  83. package/cjs/hooks/use-event-resize.cjs +30 -15
  84. package/cjs/hooks/use-event-resize.cjs.map +1 -1
  85. package/cjs/hooks/use-horizontal-event-resize.cjs +30 -15
  86. package/cjs/hooks/use-horizontal-event-resize.cjs.map +1 -1
  87. package/cjs/hooks/use-slot-drag-select.cjs.map +1 -1
  88. package/cjs/index.cjs +6 -0
  89. package/cjs/utils/apply-cascade-layout/apply-cascade-layout.cjs +21 -0
  90. package/cjs/utils/apply-cascade-layout/apply-cascade-layout.cjs.map +1 -0
  91. package/cjs/utils/calculate-drop-time/calculate-drop-time.cjs +25 -4
  92. package/cjs/utils/calculate-drop-time/calculate-drop-time.cjs.map +1 -1
  93. package/cjs/utils/calculate-month-drop-date/calculate-month-drop-date.cjs.map +1 -1
  94. package/cjs/utils/calculate-month-resize-dates/calculate-month-resize-dates.cjs.map +1 -1
  95. package/cjs/utils/expand-recurring-events/expand-recurring-events.cjs.map +1 -1
  96. package/cjs/utils/format-date/format-date.cjs.map +1 -1
  97. package/cjs/utils/get-current-time-position/get-current-time-position.cjs.map +1 -1
  98. package/cjs/utils/get-day-position/get-day-position.cjs.map +1 -1
  99. package/cjs/utils/get-end-of-week/get-end-of-week.cjs.map +1 -1
  100. package/cjs/utils/get-month-days/get-month-days.cjs +4 -2
  101. package/cjs/utils/get-month-days/get-month-days.cjs.map +1 -1
  102. package/cjs/utils/get-month-range/get-month-range.cjs.map +1 -1
  103. package/cjs/utils/get-months-by-quarter/get-months-by-quarter.cjs.map +1 -1
  104. package/cjs/utils/get-months-list/get-months-list.cjs.map +1 -1
  105. package/cjs/{components/ResourcesDayView → utils}/get-overlap-clusters/get-overlap-clusters.cjs +2 -2
  106. package/cjs/utils/get-overlap-clusters/get-overlap-clusters.cjs.map +1 -0
  107. package/cjs/utils/get-start-of-week/get-start-of-week.cjs.map +1 -1
  108. package/cjs/utils/get-week-days/get-week-days.cjs.map +1 -1
  109. package/cjs/utils/get-week-number/get-week-number.cjs +4 -1
  110. package/cjs/utils/get-week-number/get-week-number.cjs.map +1 -1
  111. package/cjs/utils/get-weekdays-names/get-weekdays-names.cjs.map +1 -1
  112. package/cjs/utils/is-after-min-date/is-after-min-date.cjs.map +1 -1
  113. package/cjs/utils/is-all-day-event/is-all-day-event.cjs.map +1 -1
  114. package/cjs/utils/is-before-max-date/is-before-max-date.cjs.map +1 -1
  115. package/cjs/utils/is-event-in-time-range/is-event-in-time-range.cjs +2 -1
  116. package/cjs/utils/is-event-in-time-range/is-event-in-time-range.cjs.map +1 -1
  117. package/cjs/utils/is-events-overlap/is-events-overlap.cjs.map +1 -1
  118. package/cjs/utils/is-in-time-range/is-in-time-range.cjs.map +1 -1
  119. package/cjs/utils/is-multiday-event/is-multiday-event.cjs.map +1 -1
  120. package/cjs/utils/is-same-month/is-same-month.cjs.map +1 -1
  121. package/cjs/utils/is-within-week/is-within-week.cjs.map +1 -1
  122. package/cjs/utils/next-week/next-week.cjs.map +1 -1
  123. package/cjs/utils/previous-week/previous-week.cjs.map +1 -1
  124. package/cjs/utils/sort-events/sort-events.cjs.map +1 -1
  125. package/cjs/utils/to-date-string/to-date-string.cjs.map +1 -1
  126. package/cjs/utils/validate-event/validate-event.cjs.map +1 -1
  127. package/esm/components/AgendaView/AgendaView.mjs +7 -6
  128. package/esm/components/AgendaView/AgendaView.mjs.map +1 -1
  129. package/esm/components/CurrentTimeIndicator/CurrentTimeIndicator.mjs +4 -3
  130. package/esm/components/CurrentTimeIndicator/CurrentTimeIndicator.mjs.map +1 -1
  131. package/esm/components/DayView/DayView.mjs +154 -81
  132. package/esm/components/DayView/DayView.mjs.map +1 -1
  133. package/esm/components/DayView/DayView.module.mjs +1 -0
  134. package/esm/components/DayView/DayView.module.mjs.map +1 -1
  135. package/esm/components/DayView/get-day-view-events/get-day-positioned-events.mjs +12 -7
  136. package/esm/components/DayView/get-day-view-events/get-day-positioned-events.mjs.map +1 -1
  137. package/esm/components/DayView/get-day-view-events/get-day-view-events.mjs +3 -2
  138. package/esm/components/DayView/get-day-view-events/get-day-view-events.mjs.map +1 -1
  139. package/esm/components/MobileMonthView/MobileMonthView.mjs +7 -6
  140. package/esm/components/MobileMonthView/MobileMonthView.mjs.map +1 -1
  141. package/esm/components/MonthView/MonthView.mjs +25 -35
  142. package/esm/components/MonthView/MonthView.mjs.map +1 -1
  143. package/esm/components/MonthView/MonthView.module.mjs.map +1 -1
  144. package/esm/components/MonthView/get-month-view-events/get-month-positioned-events.mjs +4 -2
  145. package/esm/components/MonthView/get-month-view-events/get-month-positioned-events.mjs.map +1 -1
  146. package/esm/components/MonthView/get-month-view-events/get-weeks-in-range.mjs +3 -2
  147. package/esm/components/MonthView/get-month-view-events/get-weeks-in-range.mjs.map +1 -1
  148. package/esm/components/MonthView/get-renderable-month-event-segments.mjs +1 -1
  149. package/esm/components/MonthView/get-renderable-month-event-segments.mjs.map +1 -1
  150. package/esm/components/MoreEvents/MoreEvents.mjs.map +1 -1
  151. package/esm/components/ResourcesDayView/ResourcesDayView.mjs +139 -55
  152. package/esm/components/ResourcesDayView/ResourcesDayView.mjs.map +1 -1
  153. package/esm/components/ResourcesDayView/ResourcesDayView.module.mjs +2 -1
  154. package/esm/components/ResourcesDayView/ResourcesDayView.module.mjs.map +1 -1
  155. package/esm/components/ResourcesDayView/ResourcesDayViewColumn.mjs.map +1 -1
  156. package/esm/components/ResourcesMonthView/ResourcesMonthView.mjs.map +1 -1
  157. package/esm/components/ResourcesSchedule/ResourcesSchedule.mjs +3 -1
  158. package/esm/components/ResourcesSchedule/ResourcesSchedule.mjs.map +1 -1
  159. package/esm/components/ResourcesWeekView/ResourcesWeekView.mjs +153 -62
  160. package/esm/components/ResourcesWeekView/ResourcesWeekView.mjs.map +1 -1
  161. package/esm/components/ResourcesWeekView/ResourcesWeekView.module.mjs +2 -1
  162. package/esm/components/ResourcesWeekView/ResourcesWeekView.module.mjs.map +1 -1
  163. package/esm/components/ResourcesWeekView/ResourcesWeekViewRow.mjs.map +1 -1
  164. package/esm/components/ResourcesWeekView/get-resources-week-view-events/get-resources-week-view-events.mjs +6 -3
  165. package/esm/components/ResourcesWeekView/get-resources-week-view-events/get-resources-week-view-events.mjs.map +1 -1
  166. package/esm/components/Schedule/Schedule.mjs +4 -1
  167. package/esm/components/Schedule/Schedule.mjs.map +1 -1
  168. package/esm/components/ScheduleBackgroundEvent/ScheduleBackgroundEvent.mjs +53 -0
  169. package/esm/components/ScheduleBackgroundEvent/ScheduleBackgroundEvent.mjs.map +1 -0
  170. package/esm/components/ScheduleEvent/ScheduleEvent.mjs.map +1 -1
  171. package/esm/components/ScheduleEvent/ScheduleEvent.module.mjs.map +1 -1
  172. package/esm/components/ScheduleHeader/HeaderControl/HeaderControl.mjs +15 -14
  173. package/esm/components/ScheduleHeader/HeaderControl/HeaderControl.mjs.map +1 -1
  174. package/esm/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.mjs.map +1 -1
  175. package/esm/components/ScheduleHeader/ScheduleHeader.mjs.map +1 -1
  176. package/esm/components/ScheduleHeader/ScheduleHeaderBase.mjs.map +1 -1
  177. package/esm/components/ScheduleHeader/ViewSelect/ViewSelect.mjs.map +1 -1
  178. package/esm/components/WeekView/WeekView.mjs +169 -85
  179. package/esm/components/WeekView/WeekView.mjs.map +1 -1
  180. package/esm/components/WeekView/WeekView.module.mjs +1 -0
  181. package/esm/components/WeekView/WeekView.module.mjs.map +1 -1
  182. package/esm/components/WeekView/WeekViewDay.mjs.map +1 -1
  183. package/esm/components/WeekView/get-week-view-events/get-week-positioned-events.mjs +4 -2
  184. package/esm/components/WeekView/get-week-view-events/get-week-positioned-events.mjs.map +1 -1
  185. package/esm/components/YearView/YearView.mjs +7 -6
  186. package/esm/components/YearView/YearView.mjs.map +1 -1
  187. package/esm/components/YearView/YearViewMonth.mjs.map +1 -1
  188. package/esm/hooks/use-drag-drop-handlers.mjs +13 -2
  189. package/esm/hooks/use-drag-drop-handlers.mjs.map +1 -1
  190. package/esm/hooks/use-event-resize.mjs +30 -15
  191. package/esm/hooks/use-event-resize.mjs.map +1 -1
  192. package/esm/hooks/use-horizontal-event-resize.mjs +30 -15
  193. package/esm/hooks/use-horizontal-event-resize.mjs.map +1 -1
  194. package/esm/index.mjs +4 -1
  195. package/esm/utils/apply-cascade-layout/apply-cascade-layout.mjs +21 -0
  196. package/esm/utils/apply-cascade-layout/apply-cascade-layout.mjs.map +1 -0
  197. package/esm/utils/calculate-drop-time/calculate-drop-time.mjs +25 -4
  198. package/esm/utils/calculate-drop-time/calculate-drop-time.mjs.map +1 -1
  199. package/esm/utils/get-month-days/get-month-days.mjs +4 -2
  200. package/esm/utils/get-month-days/get-month-days.mjs.map +1 -1
  201. package/esm/{components/ResourcesDayView → utils}/get-overlap-clusters/get-overlap-clusters.mjs +2 -2
  202. package/esm/utils/get-overlap-clusters/get-overlap-clusters.mjs.map +1 -0
  203. package/esm/utils/get-week-number/get-week-number.mjs +4 -1
  204. package/esm/utils/get-week-number/get-week-number.mjs.map +1 -1
  205. package/esm/utils/is-event-in-time-range/is-event-in-time-range.mjs +2 -1
  206. package/esm/utils/is-event-in-time-range/is-event-in-time-range.mjs.map +1 -1
  207. package/lib/components/DayView/DayView.d.ts +12 -2
  208. package/lib/components/DayView/get-day-view-events/get-day-positioned-events.d.ts +4 -2
  209. package/lib/components/DayView/get-day-view-events/get-day-view-events.d.ts +3 -2
  210. package/lib/components/MonthView/MonthView.d.ts +2 -0
  211. package/lib/components/ResourcesDayView/ResourcesDayView.d.ts +7 -1
  212. package/lib/components/ResourcesDayView/ResourcesDayViewColumn.d.ts +1 -1
  213. package/lib/components/ResourcesSchedule/ResourcesSchedule.d.ts +3 -1
  214. package/lib/components/ResourcesWeekView/ResourcesWeekView.d.ts +7 -1
  215. package/lib/components/ResourcesWeekView/ResourcesWeekViewRow.d.ts +1 -1
  216. package/lib/components/Schedule/Schedule.d.ts +3 -1
  217. package/lib/components/ScheduleBackgroundEvent/ScheduleBackgroundEvent.d.ts +19 -0
  218. package/lib/components/ScheduleBackgroundEvent/index.d.ts +2 -0
  219. package/lib/components/ScheduleHeader/HeaderControl/HeaderControl.d.ts +3 -3
  220. package/lib/components/ScheduleHeader/ScheduleHeaderBase.d.ts +1 -1
  221. package/lib/components/WeekView/WeekView.d.ts +12 -2
  222. package/lib/components/WeekView/WeekViewDay.d.ts +1 -1
  223. package/lib/components/WeekView/get-week-view-events/get-week-positioned-events.d.ts +4 -2
  224. package/lib/components/YearView/YearViewMonth.d.ts +1 -1
  225. package/lib/hooks/use-drag-drop-handlers.d.ts +10 -1
  226. package/lib/hooks/use-event-resize.d.ts +2 -1
  227. package/lib/hooks/use-horizontal-event-resize.d.ts +2 -1
  228. package/lib/index.d.mts +1 -0
  229. package/lib/index.d.ts +1 -0
  230. package/lib/types.d.ts +3 -1
  231. package/lib/utils/apply-cascade-layout/apply-cascade-layout.d.ts +6 -0
  232. package/lib/utils/calculate-drop-time/calculate-drop-time.d.ts +11 -1
  233. package/lib/utils/get-overlap-clusters/get-overlap-clusters.d.ts +2 -0
  234. package/lib/utils/index.d.ts +3 -0
  235. package/package.json +8 -5
  236. package/styles.css +221 -0
  237. package/styles.layer.css +221 -0
  238. package/cjs/components/ResourcesDayView/get-overlap-clusters/get-overlap-clusters.cjs.map +0 -1
  239. package/esm/components/ResourcesDayView/get-overlap-clusters/get-overlap-clusters.mjs.map +0 -1
  240. package/lib/components/ResourcesDayView/get-overlap-clusters/get-overlap-clusters.d.ts +0 -2
@@ -9,6 +9,7 @@ const require_get_week_days = require("../../utils/get-week-days/get-week-days.c
9
9
  const require_next_week = require("../../utils/next-week/next-week.cjs");
10
10
  const require_previous_week = require("../../utils/previous-week/previous-week.cjs");
11
11
  const require_is_all_day_event = require("../../utils/is-all-day-event/is-all-day-event.cjs");
12
+ const require_get_day_position = require("../../utils/get-day-position/get-day-position.cjs");
12
13
  const require_get_time_axis_event_style = require("../../utils/get-time-axis-event-style/get-time-axis-event-style.cjs");
13
14
  const require_calculate_drop_time = require("../../utils/calculate-drop-time/calculate-drop-time.cjs");
14
15
  const require_get_business_hours_mod = require("../../utils/get-business-hours-mod/get-business-hours-mod.cjs");
@@ -21,6 +22,7 @@ const require_AgendaView = require("../AgendaView/AgendaView.cjs");
21
22
  const require_CurrentTimeIndicator = require("../CurrentTimeIndicator/CurrentTimeIndicator.cjs");
22
23
  const require_DragContext = require("../DragContext/DragContext.cjs");
23
24
  const require_ScheduleEvent = require("../ScheduleEvent/ScheduleEvent.cjs");
25
+ const require_ScheduleBackgroundEvent = require("../ScheduleBackgroundEvent/ScheduleBackgroundEvent.cjs");
24
26
  const require_ScheduleHeaderBase = require("../ScheduleHeader/ScheduleHeaderBase.cjs");
25
27
  const require_get_week_label = require("./get-week-label/get-week-label.cjs");
26
28
  const require_get_week_view_events = require("./get-week-view-events/get-week-view-events.cjs");
@@ -55,7 +57,10 @@ const defaultProps = {
55
57
  withEventsDragAndDrop: false,
56
58
  withDragSlotSelect: false,
57
59
  withEventResize: false,
58
- mode: "default"
60
+ mode: "default",
61
+ withInteractiveBackgroundEvents: false,
62
+ eventOverlapMode: "columns",
63
+ eventOverlapRaiseDelay: 600
59
64
  };
60
65
  const varsResolver = (0, _mantine_core.createVarsResolver)((_theme, { radius, allDaySlotHeight, slotHeight }) => ({ weekView: {
61
66
  "--week-view-radius": radius !== void 0 ? (0, _mantine_core.getRadius)(radius) : void 0,
@@ -64,7 +69,7 @@ const varsResolver = (0, _mantine_core.createVarsResolver)((_theme, { radius, al
64
69
  } }));
65
70
  const WeekView = (0, _mantine_core.factory)((_props) => {
66
71
  const props = (0, _mantine_core.useProps)("WeekView", defaultProps, _props);
67
- const { classNames, className, style, styles, unstyled, attributes, vars, startTime, endTime, date, onDateChange, intervalMinutes, withSubHourGridLines, slotLabelFormat, withWeekendDays, weekendDays, firstDayOfWeek, weekdayFormat, radius, highlightToday, withCurrentTimeIndicator, forceCurrentTimeIndicator, getCurrentTime, scrollAreaProps, locale, withWeekNumber, withCurrentTimeBubble, withAllDaySlots, __staticSelector, withHeader, onViewChange, previousControlProps, nextControlProps, todayControlProps, viewSelectProps, weekLabelFormat, events, allDaySlotHeight, slotHeight, labels, highlightBusinessHours, businessHours, renderEventBody, renderEvent, withEventsDragAndDrop, onEventDrop, canDragEvent, onEventDragStart, onEventDragEnd, onTimeSlotClick, onAllDaySlotClick, onEventClick, withDragSlotSelect, onSlotDragEnd, mode, startScrollTime, renderWeekLabel, onExternalEventDrop, withEventResize, onEventResize, canResizeEvent, recurrenceExpansionLimit, getTimeSlotProps, withAgenda, ...others } = props;
72
+ const { classNames, className, style, styles, unstyled, attributes, vars, startTime, endTime, date, onDateChange, intervalMinutes, withSubHourGridLines, slotLabelFormat, withWeekendDays, eventOverlapMode, eventOverlapRaiseDelay, weekendDays, firstDayOfWeek, weekdayFormat, radius, highlightToday, withCurrentTimeIndicator, forceCurrentTimeIndicator, getCurrentTime, scrollAreaProps, locale, withWeekNumber, withCurrentTimeBubble, withAllDaySlots, __staticSelector, withHeader, onViewChange, previousControlProps, nextControlProps, todayControlProps, viewSelectProps, weekLabelFormat, events, allDaySlotHeight, slotHeight, labels, highlightBusinessHours, businessHours, renderEventBody, renderEvent, withEventsDragAndDrop, onEventDrop, canDragEvent, eventDragInterval, onEventDragStart, onEventDragEnd, onTimeSlotClick, onAllDaySlotClick, onEventClick, withInteractiveBackgroundEvents, withDragSlotSelect, onSlotDragEnd, mode, startScrollTime, renderWeekLabel, onExternalEventDrop, withEventResize, onEventResize, canResizeEvent, eventResizeInterval, recurrenceExpansionLimit, getTimeSlotProps, withAgenda, ...others } = props;
68
73
  const [agendaOpen, setAgendaOpen] = (0, react.useState)(false);
69
74
  const getStyles = (0, _mantine_core.useStyles)({
70
75
  name: __staticSelector,
@@ -92,7 +97,6 @@ const WeekView = (0, _mantine_core.factory)((_props) => {
92
97
  __staticSelector,
93
98
  radius
94
99
  };
95
- const theme = (0, _mantine_core.useMantineTheme)();
96
100
  const [scrolled, setScrolled] = (0, react.useState)(false);
97
101
  const ctx = (0, _mantine_dates.useDatesContext)();
98
102
  const slots = require_get_day_time_intervals.getDayTimeIntervals({
@@ -105,11 +109,56 @@ const WeekView = (0, _mantine_core.factory)((_props) => {
105
109
  viewportRef,
106
110
  enabled: (withEventsDragAndDrop || !!onExternalEventDrop) && mode !== "static"
107
111
  });
112
+ const dragOffsetRef = (0, react.useRef)({
113
+ offset: 0,
114
+ size: 0
115
+ });
116
+ const getDropTimeForSlot = (target, draggedEvent) => {
117
+ const slotTime = slots[target.slotIndex].startTime;
118
+ return require_calculate_drop_time.calculateDropTime({
119
+ draggedEvent,
120
+ targetDate: target.day,
121
+ targetSlotTime: slotTime,
122
+ intervalMinutes,
123
+ dragIntervalMinutes: eventDragInterval,
124
+ slotOffset: eventDragInterval == null ? void 0 : dragOffsetRef.current.offset,
125
+ slotSize: eventDragInterval == null ? void 0 : dragOffsetRef.current.size,
126
+ startTime,
127
+ endTime
128
+ });
129
+ };
108
130
  const handleExternalDrop = (0, react.useCallback)((e, target) => {
109
131
  if (!onExternalEventDrop) return;
110
132
  const slotDate = (0, dayjs.default)(target.day).format("YYYY-MM-DD");
111
- onExternalEventDrop(e.dataTransfer, `${slotDate} ${slots[target.slotIndex].startTime}`);
112
- }, [onExternalEventDrop, slots]);
133
+ const slotTime = slots[target.slotIndex].startTime;
134
+ if (eventDragInterval == null) {
135
+ onExternalEventDrop(e.dataTransfer, `${slotDate} ${slotTime}`);
136
+ return;
137
+ }
138
+ const slotStart = `${slotDate} ${slotTime}`;
139
+ const { start } = require_calculate_drop_time.calculateDropTime({
140
+ draggedEvent: {
141
+ start: slotStart,
142
+ end: slotStart
143
+ },
144
+ targetDate: target.day,
145
+ targetSlotTime: slotTime,
146
+ intervalMinutes,
147
+ dragIntervalMinutes: eventDragInterval,
148
+ slotOffset: dragOffsetRef.current.offset,
149
+ slotSize: dragOffsetRef.current.size,
150
+ startTime,
151
+ endTime
152
+ });
153
+ onExternalEventDrop(e.dataTransfer, (0, dayjs.default)(start).format("YYYY-MM-DD HH:mm:ss"));
154
+ }, [
155
+ onExternalEventDrop,
156
+ slots,
157
+ eventDragInterval,
158
+ intervalMinutes,
159
+ startTime,
160
+ endTime
161
+ ]);
113
162
  const handleExternalAllDayDrop = (0, react.useCallback)((e, day) => {
114
163
  if (!onExternalEventDrop) return;
115
164
  onExternalEventDrop(e.dataTransfer, `${(0, dayjs.default)(day).format("YYYY-MM-DD")} 00:00:00`);
@@ -121,17 +170,21 @@ const WeekView = (0, _mantine_core.factory)((_props) => {
121
170
  canDragEvent,
122
171
  onEventDragStart,
123
172
  onEventDragEnd,
124
- calculateDropTarget: (target, draggedEvent) => {
125
- const slotTime = slots[target.slotIndex].startTime;
126
- return require_calculate_drop_time.calculateDropTime({
127
- draggedEvent,
128
- targetDate: target.day,
129
- targetSlotTime: slotTime,
130
- intervalMinutes
131
- });
132
- },
173
+ calculateDropTarget: getDropTimeForSlot,
133
174
  onExternalDrop: onExternalEventDrop ? handleExternalDrop : void 0
134
175
  });
176
+ const updateDragPreview = (target) => {
177
+ const draggedEvent = dragDrop.dragContextValue.draggedEvent;
178
+ if (eventDragInterval == null || !draggedEvent) return;
179
+ const { start, end } = getDropTimeForSlot(target, draggedEvent);
180
+ const newStart = (0, dayjs.default)(start).format("YYYY-MM-DD HH:mm:ss");
181
+ if (dragDrop.dragPreview?.start !== newStart || dragDrop.dragPreview?.target.day !== target.day) dragDrop.setDragPreview({
182
+ start: newStart,
183
+ end: (0, dayjs.default)(end).format("YYYY-MM-DD HH:mm:ss"),
184
+ target
185
+ });
186
+ };
187
+ const suppressDropHighlight = eventDragInterval != null && dragDrop.dragContextValue.isDragging;
135
188
  const allDayDragDrop = require_use_drag_drop_handlers.useDragDropHandlers({
136
189
  enabled: withEventsDragAndDrop,
137
190
  mode,
@@ -163,6 +216,7 @@ const WeekView = (0, _mantine_core.factory)((_props) => {
163
216
  startTime,
164
217
  endTime,
165
218
  intervalMinutes,
219
+ resizeIntervalMinutes: eventResizeInterval,
166
220
  onEventResize,
167
221
  canResizeEvent
168
222
  });
@@ -185,25 +239,28 @@ const WeekView = (0, _mantine_core.factory)((_props) => {
185
239
  weekendDays: ctx.getWeekendDays(weekendDays),
186
240
  firstDayOfWeek: ctx.getFirstDayOfWeek(firstDayOfWeek)
187
241
  });
242
+ const expandedEvents = require_expand_recurring_events.expandRecurringEvents({
243
+ events,
244
+ rangeStart: (0, dayjs.default)(weekdays[0]).startOf("day").toDate(),
245
+ rangeEnd: (0, dayjs.default)(weekdays[weekdays.length - 1]).endOf("day").toDate(),
246
+ expansionLimit: recurrenceExpansionLimit
247
+ });
188
248
  const weekEvents = require_get_week_view_events.getWeekViewEvents({
189
249
  date,
190
- events: require_expand_recurring_events.expandRecurringEvents({
191
- events,
192
- rangeStart: (0, dayjs.default)(weekdays[0]).startOf("day").toDate(),
193
- rangeEnd: (0, dayjs.default)(weekdays[weekdays.length - 1]).endOf("day").toDate(),
194
- expansionLimit: recurrenceExpansionLimit
195
- }),
250
+ events: expandedEvents,
196
251
  startTime,
197
252
  endTime,
198
253
  intervalMinutes,
199
254
  firstDayOfWeek: ctx.getFirstDayOfWeek(firstDayOfWeek),
200
255
  weekendDays: ctx.getWeekendDays(weekendDays),
201
- withWeekendDays
256
+ withWeekendDays,
257
+ eventOverlapMode
202
258
  });
203
259
  const timeValues = slots.reduce((acc, interval) => {
204
260
  if (!interval.isHourStart) return acc;
261
+ const intervalTime = (0, dayjs.default)(`${(0, dayjs.default)(date).format("YYYY-MM-DD")} ${interval.startTime}`);
205
262
  const label = require_format_date.formatDate({
206
- date: (0, dayjs.default)(`${(0, dayjs.default)(date).format("YYYY-MM-DD")} ${interval.startTime}`),
263
+ date: intervalTime,
207
264
  locale: ctx.getLocale(locale),
208
265
  format: slotLabelFormat
209
266
  });
@@ -252,14 +309,33 @@ const WeekView = (0, _mantine_core.factory)((_props) => {
252
309
  const rect = slotNode.getBoundingClientRect();
253
310
  return event.clientY >= rect.top && event.clientY <= rect.bottom;
254
311
  });
255
- if (slotIndex >= 0) return slotIndex;
312
+ if (slotIndex >= 0) {
313
+ const rect = daySlots[slotIndex].getBoundingClientRect();
314
+ dragOffsetRef.current = {
315
+ offset: event.clientY - rect.top,
316
+ size: rect.height
317
+ };
318
+ return slotIndex;
319
+ }
256
320
  const firstSlot = daySlots[0];
257
321
  const lastSlot = daySlots[daySlots.length - 1];
258
322
  if (!firstSlot || !lastSlot) return null;
259
323
  const firstRect = firstSlot.getBoundingClientRect();
260
324
  const lastRect = lastSlot.getBoundingClientRect();
261
- if (event.clientY < firstRect.top) return 0;
262
- if (event.clientY > lastRect.bottom) return daySlots.length - 1;
325
+ if (event.clientY < firstRect.top) {
326
+ dragOffsetRef.current = {
327
+ offset: 0,
328
+ size: firstRect.height
329
+ };
330
+ return 0;
331
+ }
332
+ if (event.clientY > lastRect.bottom) {
333
+ dragOffsetRef.current = {
334
+ offset: lastRect.height,
335
+ size: lastRect.height
336
+ };
337
+ return daySlots.length - 1;
338
+ }
263
339
  return null;
264
340
  }, []);
265
341
  const handleSlotKeyDown = (event, dayIndex, slotIndex) => {
@@ -325,32 +401,20 @@ const WeekView = (0, _mantine_core.factory)((_props) => {
325
401
  ...getStyles("weekViewDayNumber"),
326
402
  key: "date"
327
403
  }, (0, dayjs.default)(day).date())));
404
+ const interactiveBackgroundEvents = withInteractiveBackgroundEvents && mode !== "static";
328
405
  const days = weekdays.map((day, dayIndex) => {
329
- const backgroundEventNodes = (weekEvents.backgroundEvents[day] || []).filter((event) => !event.position.allDay).map((event) => {
330
- const colors = theme.variantColorResolver({
331
- color: event.color || theme.primaryColor,
332
- theme,
333
- variant: "light",
334
- autoContrast: true
335
- });
336
- const bgEventBody = typeof renderEventBody === "function" ? renderEventBody(event) : event.title;
337
- const bgEventProps = {
338
- key: `bg-${event.id}`,
339
- ...getStyles("weekViewBackgroundEvent", { style: {
340
- top: `${event.position.top}%`,
341
- height: `${event.position.height}%`,
342
- width: "100%"
343
- } }),
344
- __vars: {
345
- "--bg-event-bg": colors.background,
346
- "--bg-event-color": colors.color
347
- },
348
- children: bgEventBody
349
- };
350
- if (typeof renderEvent === "function") return renderEvent(event, bgEventProps);
351
- const { key: bgEventKey, ...restBgEventProps } = bgEventProps;
352
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mantine_core.Box, { ...restBgEventProps }, bgEventKey);
353
- });
406
+ const backgroundEventNodes = (weekEvents.backgroundEvents[day] || []).filter((event) => !event.position.allDay).map((event) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ScheduleBackgroundEvent.ScheduleBackgroundEvent, {
407
+ event,
408
+ renderEvent,
409
+ renderEventBody,
410
+ interactive: interactiveBackgroundEvents,
411
+ onEventClick,
412
+ ...getStyles("weekViewBackgroundEvent", { style: {
413
+ top: `${event.position.top}%`,
414
+ height: `${event.position.height}%`,
415
+ width: "100%"
416
+ } })
417
+ }, `bg-${event.id}`));
354
418
  const dayEvents = (weekEvents.regularEvents[day] || []).map((event) => {
355
419
  const eventIsAllDay = require_is_all_day_event.isAllDayEvent({
356
420
  event,
@@ -387,6 +451,7 @@ const WeekView = (0, _mantine_core.factory)((_props) => {
387
451
  onClick: onEventClick ? (e) => {
388
452
  if (!eventResize.wasResizing()) onEventClick(event, e);
389
453
  } : void 0,
454
+ mod: { cascade: eventOverlapMode === "cascade" },
390
455
  style: {
391
456
  position: "absolute",
392
457
  ...require_get_time_axis_event_style.getTimeAxisEventStyle({
@@ -395,7 +460,9 @@ const WeekView = (0, _mantine_core.factory)((_props) => {
395
460
  axis: "vertical"
396
461
  }),
397
462
  left: `${event.position.offset}%`,
398
- width: `${event.position.width}%`
463
+ width: `${event.position.width}%`,
464
+ "--event-z-index": event.position.column + 3,
465
+ "--event-z-index-raised": event.position.overlaps + 3
399
466
  }
400
467
  }, event.id);
401
468
  });
@@ -420,10 +487,16 @@ const WeekView = (0, _mantine_core.factory)((_props) => {
420
487
  } : void 0,
421
488
  onDaySlotsDragOver: (event, dayStr, dayIdx) => {
422
489
  const slotIndex = getSlotIndexFromDragPoint(event, dayIdx);
423
- if (slotIndex !== null) dragDrop.handleDragOver(event, {
424
- day: dayStr,
425
- slotIndex
426
- });
490
+ if (slotIndex !== null) {
491
+ dragDrop.handleDragOver(event, {
492
+ day: dayStr,
493
+ slotIndex
494
+ });
495
+ updateDragPreview({
496
+ day: dayStr,
497
+ slotIndex
498
+ });
499
+ }
427
500
  },
428
501
  onDaySlotsDragLeave: dragDrop.handleDragLeave,
429
502
  onDaySlotsDrop: (event, dayStr, dayIdx) => {
@@ -433,7 +506,7 @@ const WeekView = (0, _mantine_core.factory)((_props) => {
433
506
  slotIndex
434
507
  });
435
508
  },
436
- dropTargetSlotIndex: dragDrop.dropTarget?.day === day ? dragDrop.dropTarget.slotIndex : void 0,
509
+ dropTargetSlotIndex: !suppressDropHighlight && dragDrop.dropTarget?.day === day ? dragDrop.dropTarget.slotIndex : void 0,
437
510
  withDragSlotSelect,
438
511
  onSlotPointerDown: slotDragSelect.handleSlotPointerDown,
439
512
  isSlotDragSelected: slotDragSelect.isSlotSelected,
@@ -441,7 +514,29 @@ const WeekView = (0, _mantine_core.factory)((_props) => {
441
514
  daySlotsContainersRef.current[dayIndex] = node;
442
515
  },
443
516
  getTimeSlotProps,
444
- children: [backgroundEventNodes, dayEvents]
517
+ children: [
518
+ backgroundEventNodes,
519
+ dayEvents,
520
+ dragDrop.dragPreview?.target.day === day && dragDrop.dragContextValue.draggedEvent && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mantine_core.Box, { ...getStyles("weekViewDragPreview", { style: (() => {
521
+ const { top, height } = require_get_day_position.getDayPosition({
522
+ event: {
523
+ ...dragDrop.dragContextValue.draggedEvent,
524
+ start: dragDrop.dragPreview.start,
525
+ end: dragDrop.dragPreview.end
526
+ },
527
+ startTime,
528
+ endTime,
529
+ intervalMinutes
530
+ });
531
+ return {
532
+ position: "absolute",
533
+ insetInlineStart: 0,
534
+ insetInlineEnd: 0,
535
+ top: `${top}%`,
536
+ height: `${height}%`
537
+ };
538
+ })() }) })
539
+ ]
445
540
  }, day);
446
541
  });
447
542
  const allDaySlots = weekdays.map((day, dayIndex) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mantine_core.UnstyledButton, {
@@ -482,32 +577,19 @@ const WeekView = (0, _mantine_core.factory)((_props) => {
482
577
  const allDayBgEvents = (weekEvents.backgroundEvents[day] || []).filter((event) => event.position.allDay);
483
578
  const dayWidth = 100 / weekdays.length;
484
579
  const dayOffset = dayIndex * dayWidth;
485
- return allDayBgEvents.map((event) => {
486
- const colors = theme.variantColorResolver({
487
- color: event.color || theme.primaryColor,
488
- theme,
489
- variant: "light",
490
- autoContrast: true
491
- });
492
- const bgEventBody = typeof renderEventBody === "function" ? renderEventBody(event) : event.title;
493
- const bgEventProps = {
494
- key: `bg-allday-${event.id}-${day}`,
495
- ...getStyles("weekViewBackgroundEvent", { style: {
496
- top: 0,
497
- height: "100%",
498
- left: `${dayOffset}%`,
499
- width: `${dayWidth}%`
500
- } }),
501
- __vars: {
502
- "--bg-event-bg": colors.background,
503
- "--bg-event-color": colors.color
504
- },
505
- children: bgEventBody
506
- };
507
- if (typeof renderEvent === "function") return renderEvent(event, bgEventProps);
508
- const { key: bgEventKey, ...restBgEventProps } = bgEventProps;
509
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mantine_core.Box, { ...restBgEventProps }, bgEventKey);
510
- });
580
+ return allDayBgEvents.map((event) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ScheduleBackgroundEvent.ScheduleBackgroundEvent, {
581
+ event,
582
+ renderEvent,
583
+ renderEventBody,
584
+ interactive: interactiveBackgroundEvents,
585
+ onEventClick,
586
+ ...getStyles("weekViewBackgroundEvent", { style: {
587
+ top: 0,
588
+ height: "100%",
589
+ left: `${dayOffset}%`,
590
+ width: `${dayWidth}%`
591
+ } })
592
+ }, `bg-allday-${event.id}-${day}`));
511
593
  });
512
594
  const extraRows = Math.max(...weekEvents.allDayEvents.map((event) => event.position.row), 1) - 1;
513
595
  const content = /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_mantine_core.Box, {
@@ -559,13 +641,15 @@ const WeekView = (0, _mantine_core.factory)((_props) => {
559
641
  !agendaOpen && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mantine_core.Box, {
560
642
  ...getStyles("weekViewRoot"),
561
643
  __vars: {
644
+ "--event-raise-delay": `${eventOverlapRaiseDelay}ms`,
562
645
  "--indicator-offset-index": currentWeekdayIndex === -1 ? void 0 : `${currentWeekdayIndex + 1}`,
563
646
  "--number-of-days": withWeekendDays ? "7" : `${7 - ctx.getWeekendDays(weekendDays).length}`
564
647
  },
565
648
  mod: {
566
649
  "with-weekends": withWeekendDays,
567
650
  "hide-sub-hour-grid-lines": !withSubHourGridLines,
568
- "event-interaction": eventResize.isResizing || dragDrop.dragContextValue.isDragging
651
+ "event-interaction": eventResize.isResizing || dragDrop.dragContextValue.isDragging,
652
+ "all-day-dragging": allDayDragDrop.dragContextValue.isDragging
569
653
  },
570
654
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_mantine_core.ScrollArea.Autosize, {
571
655
  scrollbarSize: 4,