@mantine/schedule 9.3.2 → 9.4.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 (301) hide show
  1. package/cjs/components/AgendaView/AgendaView.cjs +133 -0
  2. package/cjs/components/AgendaView/AgendaView.cjs.map +1 -0
  3. package/cjs/components/AgendaView/AgendaView.module.cjs +19 -0
  4. package/cjs/components/AgendaView/AgendaView.module.cjs.map +1 -0
  5. package/cjs/components/AgendaView/get-agenda-view-events.cjs +48 -0
  6. package/cjs/components/AgendaView/get-agenda-view-events.cjs.map +1 -0
  7. package/cjs/components/CurrentTimeIndicator/CurrentTimeIndicator.cjs.map +1 -1
  8. package/cjs/components/DayView/DayView.cjs +127 -106
  9. package/cjs/components/DayView/DayView.cjs.map +1 -1
  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.map +1 -1
  12. package/cjs/components/DayView/get-day-view-events/get-day-view-events.cjs.map +1 -1
  13. package/cjs/components/DragContext/DragContext.cjs.map +1 -1
  14. package/cjs/components/MobileMonthView/MobileMonthView.cjs.map +1 -1
  15. package/cjs/components/MobileMonthView/get-mobile-month-view-events.cjs.map +1 -1
  16. package/cjs/components/MonthView/MonthView.cjs +114 -64
  17. package/cjs/components/MonthView/MonthView.cjs.map +1 -1
  18. package/cjs/components/MonthView/MonthView.module.cjs.map +1 -1
  19. package/cjs/components/MonthView/get-month-view-events/add-event-to-day-groups.cjs.map +1 -1
  20. package/cjs/components/MonthView/get-month-view-events/find-available-row.cjs.map +1 -1
  21. package/cjs/components/MonthView/get-month-view-events/get-month-positioned-events.cjs.map +1 -1
  22. package/cjs/components/MonthView/get-month-view-events/get-month-view-events.cjs.map +1 -1
  23. package/cjs/components/MonthView/get-month-view-events/get-weeks-in-range.cjs.map +1 -1
  24. package/cjs/components/MonthView/get-renderable-month-event-segments.cjs +17 -15
  25. package/cjs/components/MonthView/get-renderable-month-event-segments.cjs.map +1 -1
  26. package/cjs/components/MonthView/get-visible-columns.cjs +54 -0
  27. package/cjs/components/MonthView/get-visible-columns.cjs.map +1 -0
  28. package/cjs/components/MonthView/handle-month-view-key-down.cjs.map +1 -1
  29. package/cjs/components/MoreEvents/MoreEvents.cjs.map +1 -1
  30. package/cjs/components/ResourcesDayView/ResourcesDayView.cjs +578 -0
  31. package/cjs/components/ResourcesDayView/ResourcesDayView.cjs.map +1 -0
  32. package/cjs/components/ResourcesDayView/ResourcesDayView.module.cjs +29 -0
  33. package/cjs/components/ResourcesDayView/ResourcesDayView.module.cjs.map +1 -0
  34. package/cjs/components/ResourcesDayView/ResourcesDayViewColumn.cjs +89 -0
  35. package/cjs/components/ResourcesDayView/ResourcesDayViewColumn.cjs.map +1 -0
  36. package/cjs/components/ResourcesDayView/get-overlap-clusters/get-overlap-clusters.cjs +26 -0
  37. package/cjs/components/ResourcesDayView/get-overlap-clusters/get-overlap-clusters.cjs.map +1 -0
  38. package/cjs/components/ResourcesDayView/get-resources-day-view-events/get-resources-day-view-events.cjs +129 -0
  39. package/cjs/components/ResourcesDayView/get-resources-day-view-events/get-resources-day-view-events.cjs.map +1 -0
  40. package/cjs/components/ResourcesMonthView/ResourcesMonthView.cjs +602 -0
  41. package/cjs/components/ResourcesMonthView/ResourcesMonthView.cjs.map +1 -0
  42. package/cjs/components/ResourcesMonthView/ResourcesMonthView.module.cjs +23 -0
  43. package/cjs/components/ResourcesMonthView/ResourcesMonthView.module.cjs.map +1 -0
  44. package/cjs/components/ResourcesSchedule/ResourcesSchedule.cjs +105 -0
  45. package/cjs/components/ResourcesSchedule/ResourcesSchedule.cjs.map +1 -0
  46. package/cjs/components/ResourcesSchedule/ResourcesSchedule.module.cjs +7 -0
  47. package/cjs/components/ResourcesSchedule/ResourcesSchedule.module.cjs.map +1 -0
  48. package/cjs/components/ResourcesWeekView/ResourcesWeekView.cjs +676 -0
  49. package/cjs/components/ResourcesWeekView/ResourcesWeekView.cjs.map +1 -0
  50. package/cjs/components/ResourcesWeekView/ResourcesWeekView.module.cjs +33 -0
  51. package/cjs/components/ResourcesWeekView/ResourcesWeekView.module.cjs.map +1 -0
  52. package/cjs/components/ResourcesWeekView/ResourcesWeekViewRow.cjs +90 -0
  53. package/cjs/components/ResourcesWeekView/ResourcesWeekViewRow.cjs.map +1 -0
  54. package/cjs/components/ResourcesWeekView/get-resources-week-view-events/get-resources-week-view-events.cjs +97 -0
  55. package/cjs/components/ResourcesWeekView/get-resources-week-view-events/get-resources-week-view-events.cjs.map +1 -0
  56. package/cjs/components/Schedule/Schedule.cjs +3 -2
  57. package/cjs/components/Schedule/Schedule.cjs.map +1 -1
  58. package/cjs/components/ScheduleEvent/ScheduleEvent.cjs +1 -1
  59. package/cjs/components/ScheduleEvent/ScheduleEvent.cjs.map +1 -1
  60. package/cjs/components/ScheduleHeader/HeaderControl/HeaderControl.cjs.map +1 -1
  61. package/cjs/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.cjs.map +1 -1
  62. package/cjs/components/ScheduleHeader/ScheduleHeader.cjs.map +1 -1
  63. package/cjs/components/ScheduleHeader/ScheduleHeader.module.cjs +2 -0
  64. package/cjs/components/ScheduleHeader/ScheduleHeader.module.cjs.map +1 -1
  65. package/cjs/components/ScheduleHeader/ScheduleHeaderBase.cjs +29 -11
  66. package/cjs/components/ScheduleHeader/ScheduleHeaderBase.cjs.map +1 -1
  67. package/cjs/components/ScheduleHeader/ScheduleHeaderContext.cjs.map +1 -1
  68. package/cjs/components/ScheduleHeader/ViewSelect/ViewSelect.cjs.map +1 -1
  69. package/cjs/components/WeekView/WeekView.cjs +128 -102
  70. package/cjs/components/WeekView/WeekView.cjs.map +1 -1
  71. package/cjs/components/WeekView/WeekView.module.cjs.map +1 -1
  72. package/cjs/components/WeekView/WeekViewDay.cjs +3 -1
  73. package/cjs/components/WeekView/WeekViewDay.cjs.map +1 -1
  74. package/cjs/components/WeekView/get-week-label/get-week-label.cjs.map +1 -1
  75. package/cjs/components/WeekView/get-week-view-events/calculate-all-day-event-offset.cjs.map +1 -1
  76. package/cjs/components/WeekView/get-week-view-events/calculate-all-day-event-width.cjs.map +1 -1
  77. package/cjs/components/WeekView/get-week-view-events/calculate-event-days.cjs.map +1 -1
  78. package/cjs/components/WeekView/get-week-view-events/find-available-column.cjs.map +1 -1
  79. package/cjs/components/WeekView/get-week-view-events/get-event-end-date.cjs.map +1 -1
  80. package/cjs/components/WeekView/get-week-view-events/get-hanging-status.cjs.map +1 -1
  81. package/cjs/components/WeekView/get-week-view-events/get-week-positioned-events.cjs.map +1 -1
  82. package/cjs/components/WeekView/handle-week-view-key-down.cjs.map +1 -1
  83. package/cjs/components/YearView/YearView.cjs.map +1 -1
  84. package/cjs/components/YearView/YearViewMonth.cjs.map +1 -1
  85. package/cjs/components/YearView/get-year-view-events/get-year-view-events.cjs.map +1 -1
  86. package/cjs/components/YearView/handle-year-view-key-down.cjs.map +1 -1
  87. package/cjs/hooks/use-auto-scroll-on-drag.cjs.map +1 -1
  88. package/cjs/hooks/use-drag-drop-handlers.cjs.map +1 -1
  89. package/cjs/hooks/use-drag-state.cjs.map +1 -1
  90. package/cjs/hooks/use-event-resize.cjs.map +1 -1
  91. package/cjs/hooks/use-horizontal-event-resize.cjs +161 -0
  92. package/cjs/hooks/use-horizontal-event-resize.cjs.map +1 -0
  93. package/cjs/hooks/use-slot-drag-select.cjs.map +1 -1
  94. package/cjs/index.cjs +20 -0
  95. package/cjs/labels.cjs +5 -1
  96. package/cjs/labels.cjs.map +1 -1
  97. package/cjs/utils/calculate-drop-time/calculate-drop-time.cjs.map +1 -1
  98. package/cjs/utils/calculate-month-drop-date/calculate-month-drop-date.cjs.map +1 -1
  99. package/cjs/utils/expand-recurring-events/expand-recurring-events.cjs.map +1 -1
  100. package/cjs/utils/format-date/format-date.cjs.map +1 -1
  101. package/cjs/utils/get-current-time-position/get-current-time-position.cjs.map +1 -1
  102. package/cjs/utils/get-day-position/get-day-position.cjs.map +1 -1
  103. package/cjs/utils/get-day-relative-percent/get-day-relative-percent.cjs +18 -0
  104. package/cjs/utils/get-day-relative-percent/get-day-relative-percent.cjs.map +1 -0
  105. package/cjs/utils/get-end-of-week/get-end-of-week.cjs.map +1 -1
  106. package/cjs/utils/get-group-to-resource-id-map/get-group-to-resource-id-map.cjs +12 -0
  107. package/cjs/utils/get-group-to-resource-id-map/get-group-to-resource-id-map.cjs.map +1 -0
  108. package/cjs/utils/get-index-from-drag-point/get-index-from-drag-point.cjs +27 -0
  109. package/cjs/utils/get-index-from-drag-point/get-index-from-drag-point.cjs.map +1 -0
  110. package/cjs/utils/get-month-days/get-month-days.cjs.map +1 -1
  111. package/cjs/utils/get-month-range/get-month-range.cjs.map +1 -1
  112. package/cjs/utils/get-months-by-quarter/get-months-by-quarter.cjs.map +1 -1
  113. package/cjs/utils/get-months-list/get-months-list.cjs.map +1 -1
  114. package/cjs/utils/get-ordered-resources/get-ordered-resources.cjs +54 -0
  115. package/cjs/utils/get-ordered-resources/get-ordered-resources.cjs.map +1 -0
  116. package/cjs/utils/get-start-of-week/get-start-of-week.cjs.map +1 -1
  117. package/cjs/utils/get-week-days/get-week-days.cjs.map +1 -1
  118. package/cjs/utils/get-week-number/get-week-number.cjs.map +1 -1
  119. package/cjs/utils/get-weekdays-names/get-weekdays-names.cjs.map +1 -1
  120. package/cjs/utils/handle-resources-grid-key-down/handle-resources-grid-key-down.cjs +88 -0
  121. package/cjs/utils/handle-resources-grid-key-down/handle-resources-grid-key-down.cjs.map +1 -0
  122. package/cjs/utils/is-after-min-date/is-after-min-date.cjs.map +1 -1
  123. package/cjs/utils/is-all-day-event/is-all-day-event.cjs.map +1 -1
  124. package/cjs/utils/is-before-max-date/is-before-max-date.cjs.map +1 -1
  125. package/cjs/utils/is-event-in-time-range/is-event-in-time-range.cjs.map +1 -1
  126. package/cjs/utils/is-events-overlap/is-events-overlap.cjs.map +1 -1
  127. package/cjs/utils/is-in-time-range/is-in-time-range.cjs.map +1 -1
  128. package/cjs/utils/is-multiday-event/is-multiday-event.cjs.map +1 -1
  129. package/cjs/utils/is-same-month/is-same-month.cjs.map +1 -1
  130. package/cjs/utils/is-within-week/is-within-week.cjs.map +1 -1
  131. package/cjs/utils/next-week/next-week.cjs.map +1 -1
  132. package/cjs/utils/parse-time-string/parse-time-string.cjs.map +1 -1
  133. package/cjs/utils/previous-week/previous-week.cjs.map +1 -1
  134. package/cjs/utils/sort-events/sort-events.cjs.map +1 -1
  135. package/cjs/utils/to-date-string/to-date-string.cjs.map +1 -1
  136. package/cjs/utils/to-time-string/to-time-string.cjs.map +1 -1
  137. package/cjs/utils/validate-event/validate-event.cjs.map +1 -1
  138. package/esm/components/AgendaView/AgendaView.mjs +130 -0
  139. package/esm/components/AgendaView/AgendaView.mjs.map +1 -0
  140. package/esm/components/AgendaView/AgendaView.module.mjs +19 -0
  141. package/esm/components/AgendaView/AgendaView.module.mjs.map +1 -0
  142. package/esm/components/AgendaView/get-agenda-view-events.mjs +46 -0
  143. package/esm/components/AgendaView/get-agenda-view-events.mjs.map +1 -0
  144. package/esm/components/CurrentTimeIndicator/CurrentTimeIndicator.mjs.map +1 -1
  145. package/esm/components/DayView/DayView.mjs +128 -107
  146. package/esm/components/DayView/DayView.mjs.map +1 -1
  147. package/esm/components/DayView/DayView.module.mjs.map +1 -1
  148. package/esm/components/DayView/get-day-view-events/get-day-positioned-events.mjs.map +1 -1
  149. package/esm/components/DayView/get-day-view-events/get-day-view-events.mjs.map +1 -1
  150. package/esm/components/MobileMonthView/MobileMonthView.mjs.map +1 -1
  151. package/esm/components/MobileMonthView/get-mobile-month-view-events.mjs.map +1 -1
  152. package/esm/components/MonthView/MonthView.mjs +115 -65
  153. package/esm/components/MonthView/MonthView.mjs.map +1 -1
  154. package/esm/components/MonthView/MonthView.module.mjs.map +1 -1
  155. package/esm/components/MonthView/get-month-view-events/add-event-to-day-groups.mjs.map +1 -1
  156. package/esm/components/MonthView/get-month-view-events/find-available-row.mjs.map +1 -1
  157. package/esm/components/MonthView/get-month-view-events/get-month-positioned-events.mjs.map +1 -1
  158. package/esm/components/MonthView/get-month-view-events/get-month-view-events.mjs.map +1 -1
  159. package/esm/components/MonthView/get-renderable-month-event-segments.mjs +17 -15
  160. package/esm/components/MonthView/get-renderable-month-event-segments.mjs.map +1 -1
  161. package/esm/components/MonthView/get-visible-columns.mjs +53 -0
  162. package/esm/components/MonthView/get-visible-columns.mjs.map +1 -0
  163. package/esm/components/MonthView/handle-month-view-key-down.mjs.map +1 -1
  164. package/esm/components/MoreEvents/MoreEvents.mjs.map +1 -1
  165. package/esm/components/ResourcesDayView/ResourcesDayView.mjs +576 -0
  166. package/esm/components/ResourcesDayView/ResourcesDayView.mjs.map +1 -0
  167. package/esm/components/ResourcesDayView/ResourcesDayView.module.mjs +29 -0
  168. package/esm/components/ResourcesDayView/ResourcesDayView.module.mjs.map +1 -0
  169. package/esm/components/ResourcesDayView/ResourcesDayViewColumn.mjs +89 -0
  170. package/esm/components/ResourcesDayView/ResourcesDayViewColumn.mjs.map +1 -0
  171. package/esm/components/ResourcesDayView/get-overlap-clusters/get-overlap-clusters.mjs +26 -0
  172. package/esm/components/ResourcesDayView/get-overlap-clusters/get-overlap-clusters.mjs.map +1 -0
  173. package/esm/components/ResourcesDayView/get-resources-day-view-events/get-resources-day-view-events.mjs +127 -0
  174. package/esm/components/ResourcesDayView/get-resources-day-view-events/get-resources-day-view-events.mjs.map +1 -0
  175. package/esm/components/ResourcesMonthView/ResourcesMonthView.mjs +600 -0
  176. package/esm/components/ResourcesMonthView/ResourcesMonthView.mjs.map +1 -0
  177. package/esm/components/ResourcesMonthView/ResourcesMonthView.module.mjs +23 -0
  178. package/esm/components/ResourcesMonthView/ResourcesMonthView.module.mjs.map +1 -0
  179. package/esm/components/ResourcesSchedule/ResourcesSchedule.mjs +105 -0
  180. package/esm/components/ResourcesSchedule/ResourcesSchedule.mjs.map +1 -0
  181. package/esm/components/ResourcesSchedule/ResourcesSchedule.module.mjs +7 -0
  182. package/esm/components/ResourcesSchedule/ResourcesSchedule.module.mjs.map +1 -0
  183. package/esm/components/ResourcesWeekView/ResourcesWeekView.mjs +674 -0
  184. package/esm/components/ResourcesWeekView/ResourcesWeekView.mjs.map +1 -0
  185. package/esm/components/ResourcesWeekView/ResourcesWeekView.module.mjs +33 -0
  186. package/esm/components/ResourcesWeekView/ResourcesWeekView.module.mjs.map +1 -0
  187. package/esm/components/ResourcesWeekView/ResourcesWeekViewRow.mjs +90 -0
  188. package/esm/components/ResourcesWeekView/ResourcesWeekViewRow.mjs.map +1 -0
  189. package/esm/components/ResourcesWeekView/get-resources-week-view-events/get-resources-week-view-events.mjs +95 -0
  190. package/esm/components/ResourcesWeekView/get-resources-week-view-events/get-resources-week-view-events.mjs.map +1 -0
  191. package/esm/components/Schedule/Schedule.mjs +3 -2
  192. package/esm/components/Schedule/Schedule.mjs.map +1 -1
  193. package/esm/components/ScheduleEvent/ScheduleEvent.mjs +1 -1
  194. package/esm/components/ScheduleEvent/ScheduleEvent.mjs.map +1 -1
  195. package/esm/components/ScheduleHeader/HeaderControl/HeaderControl.mjs.map +1 -1
  196. package/esm/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.mjs.map +1 -1
  197. package/esm/components/ScheduleHeader/ScheduleHeader.module.mjs +2 -0
  198. package/esm/components/ScheduleHeader/ScheduleHeader.module.mjs.map +1 -1
  199. package/esm/components/ScheduleHeader/ScheduleHeaderBase.mjs +29 -11
  200. package/esm/components/ScheduleHeader/ScheduleHeaderBase.mjs.map +1 -1
  201. package/esm/components/ScheduleHeader/ViewSelect/ViewSelect.mjs.map +1 -1
  202. package/esm/components/WeekView/WeekView.mjs +128 -102
  203. package/esm/components/WeekView/WeekView.mjs.map +1 -1
  204. package/esm/components/WeekView/WeekView.module.mjs.map +1 -1
  205. package/esm/components/WeekView/WeekViewDay.mjs +3 -1
  206. package/esm/components/WeekView/WeekViewDay.mjs.map +1 -1
  207. package/esm/components/WeekView/get-week-label/get-week-label.mjs.map +1 -1
  208. package/esm/components/WeekView/get-week-view-events/calculate-all-day-event-offset.mjs.map +1 -1
  209. package/esm/components/WeekView/get-week-view-events/calculate-all-day-event-width.mjs.map +1 -1
  210. package/esm/components/WeekView/get-week-view-events/calculate-event-days.mjs.map +1 -1
  211. package/esm/components/WeekView/get-week-view-events/find-available-column.mjs.map +1 -1
  212. package/esm/components/WeekView/get-week-view-events/get-event-end-date.mjs.map +1 -1
  213. package/esm/components/WeekView/get-week-view-events/get-week-positioned-events.mjs.map +1 -1
  214. package/esm/components/WeekView/handle-week-view-key-down.mjs.map +1 -1
  215. package/esm/components/YearView/YearView.mjs.map +1 -1
  216. package/esm/components/YearView/YearViewMonth.mjs.map +1 -1
  217. package/esm/components/YearView/get-year-view-events/get-year-view-events.mjs.map +1 -1
  218. package/esm/components/YearView/handle-year-view-key-down.mjs.map +1 -1
  219. package/esm/hooks/use-drag-drop-handlers.mjs.map +1 -1
  220. package/esm/hooks/use-event-resize.mjs.map +1 -1
  221. package/esm/hooks/use-horizontal-event-resize.mjs +159 -0
  222. package/esm/hooks/use-horizontal-event-resize.mjs.map +1 -0
  223. package/esm/index.mjs +11 -1
  224. package/esm/labels.mjs +5 -1
  225. package/esm/labels.mjs.map +1 -1
  226. package/esm/utils/calculate-drop-time/calculate-drop-time.mjs.map +1 -1
  227. package/esm/utils/calculate-month-drop-date/calculate-month-drop-date.mjs.map +1 -1
  228. package/esm/utils/expand-recurring-events/expand-recurring-events.mjs.map +1 -1
  229. package/esm/utils/format-date/format-date.mjs.map +1 -1
  230. package/esm/utils/get-current-time-position/get-current-time-position.mjs.map +1 -1
  231. package/esm/utils/get-day-position/get-day-position.mjs.map +1 -1
  232. package/esm/utils/get-day-relative-percent/get-day-relative-percent.mjs +18 -0
  233. package/esm/utils/get-day-relative-percent/get-day-relative-percent.mjs.map +1 -0
  234. package/esm/utils/get-group-to-resource-id-map/get-group-to-resource-id-map.mjs +12 -0
  235. package/esm/utils/get-group-to-resource-id-map/get-group-to-resource-id-map.mjs.map +1 -0
  236. package/esm/utils/get-index-from-drag-point/get-index-from-drag-point.mjs +27 -0
  237. package/esm/utils/get-index-from-drag-point/get-index-from-drag-point.mjs.map +1 -0
  238. package/esm/utils/get-month-days/get-month-days.mjs.map +1 -1
  239. package/esm/utils/get-month-range/get-month-range.mjs.map +1 -1
  240. package/esm/utils/get-months-by-quarter/get-months-by-quarter.mjs.map +1 -1
  241. package/esm/utils/get-months-list/get-months-list.mjs.map +1 -1
  242. package/esm/utils/get-ordered-resources/get-ordered-resources.mjs +54 -0
  243. package/esm/utils/get-ordered-resources/get-ordered-resources.mjs.map +1 -0
  244. package/esm/utils/get-week-number/get-week-number.mjs.map +1 -1
  245. package/esm/utils/get-weekdays-names/get-weekdays-names.mjs.map +1 -1
  246. package/esm/utils/handle-resources-grid-key-down/handle-resources-grid-key-down.mjs +88 -0
  247. package/esm/utils/handle-resources-grid-key-down/handle-resources-grid-key-down.mjs.map +1 -0
  248. package/esm/utils/is-after-min-date/is-after-min-date.mjs.map +1 -1
  249. package/esm/utils/is-all-day-event/is-all-day-event.mjs.map +1 -1
  250. package/esm/utils/is-before-max-date/is-before-max-date.mjs.map +1 -1
  251. package/esm/utils/is-event-in-time-range/is-event-in-time-range.mjs.map +1 -1
  252. package/esm/utils/is-events-overlap/is-events-overlap.mjs.map +1 -1
  253. package/esm/utils/is-in-time-range/is-in-time-range.mjs.map +1 -1
  254. package/esm/utils/is-multiday-event/is-multiday-event.mjs.map +1 -1
  255. package/esm/utils/is-same-month/is-same-month.mjs.map +1 -1
  256. package/esm/utils/is-within-week/is-within-week.mjs.map +1 -1
  257. package/esm/utils/next-week/next-week.mjs.map +1 -1
  258. package/esm/utils/parse-time-string/parse-time-string.mjs.map +1 -1
  259. package/esm/utils/previous-week/previous-week.mjs.map +1 -1
  260. package/esm/utils/sort-events/sort-events.mjs.map +1 -1
  261. package/esm/utils/to-date-string/to-date-string.mjs.map +1 -1
  262. package/esm/utils/to-time-string/to-time-string.mjs.map +1 -1
  263. package/esm/utils/validate-event/validate-event.mjs.map +1 -1
  264. package/lib/components/AgendaView/AgendaView.d.ts +54 -0
  265. package/lib/components/AgendaView/get-agenda-view-events.d.ts +9 -0
  266. package/lib/components/AgendaView/index.d.ts +2 -0
  267. package/lib/components/DayView/DayView.d.ts +6 -1
  268. package/lib/components/MonthView/MonthView.d.ts +6 -1
  269. package/lib/components/MonthView/get-renderable-month-event-segments.d.ts +5 -1
  270. package/lib/components/MonthView/get-visible-columns.d.ts +19 -0
  271. package/lib/components/ResourcesDayView/ResourcesDayView.d.ts +148 -0
  272. package/lib/components/ResourcesDayView/ResourcesDayViewColumn.d.ts +39 -0
  273. package/lib/components/ResourcesDayView/get-overlap-clusters/get-overlap-clusters.d.ts +2 -0
  274. package/lib/components/ResourcesDayView/get-resources-day-view-events/get-resources-day-view-events.d.ts +16 -0
  275. package/lib/components/ResourcesDayView/index.d.ts +9 -0
  276. package/lib/components/ResourcesMonthView/ResourcesMonthView.d.ts +129 -0
  277. package/lib/components/ResourcesMonthView/index.d.ts +9 -0
  278. package/lib/components/ResourcesSchedule/ResourcesSchedule.d.ts +123 -0
  279. package/lib/components/ResourcesSchedule/index.d.ts +3 -0
  280. package/lib/components/ResourcesWeekView/ResourcesWeekView.d.ts +117 -0
  281. package/lib/components/ResourcesWeekView/ResourcesWeekViewRow.d.ts +39 -0
  282. package/lib/components/ResourcesWeekView/get-resources-week-view-events/get-resources-week-view-events.d.ts +29 -0
  283. package/lib/components/ResourcesWeekView/index.d.ts +3 -0
  284. package/lib/components/Schedule/Schedule.d.ts +3 -1
  285. package/lib/components/ScheduleHeader/ScheduleHeaderBase.d.ts +5 -1
  286. package/lib/components/WeekView/WeekView.d.ts +6 -1
  287. package/lib/components/WeekView/WeekViewDay.d.ts +3 -1
  288. package/lib/hooks/use-horizontal-event-resize.d.ts +39 -0
  289. package/lib/index.d.mts +5 -0
  290. package/lib/index.d.ts +5 -0
  291. package/lib/labels.d.ts +4 -0
  292. package/lib/types.d.ts +20 -0
  293. package/lib/utils/get-day-relative-percent/get-day-relative-percent.d.ts +15 -0
  294. package/lib/utils/get-group-to-resource-id-map/get-group-to-resource-id-map.d.ts +3 -0
  295. package/lib/utils/get-index-from-drag-point/get-index-from-drag-point.d.ts +6 -0
  296. package/lib/utils/get-ordered-resources/get-ordered-resources.d.ts +17 -0
  297. package/lib/utils/handle-resources-grid-key-down/handle-resources-grid-key-down.d.ts +10 -0
  298. package/lib/utils/index.d.ts +7 -0
  299. package/package.json +4 -4
  300. package/styles.css +1362 -9
  301. package/styles.layer.css +1363 -10
@@ -0,0 +1,600 @@
1
+ "use client";
2
+ import { getLabel } from "../../labels.mjs";
3
+ import { formatDate } from "../../utils/format-date/format-date.mjs";
4
+ import { toDateString } from "../../utils/to-date-string/to-date-string.mjs";
5
+ import { calculateMonthDropDate } from "../../utils/calculate-month-drop-date/calculate-month-drop-date.mjs";
6
+ import { expandRecurringEvents } from "../../utils/expand-recurring-events/expand-recurring-events.mjs";
7
+ import { getOrderedResources } from "../../utils/get-ordered-resources/get-ordered-resources.mjs";
8
+ import { getGroupToResourceIdMap } from "../../utils/get-group-to-resource-id-map/get-group-to-resource-id-map.mjs";
9
+ import { getIndexFromDragPoint } from "../../utils/get-index-from-drag-point/get-index-from-drag-point.mjs";
10
+ import { useDragDropHandlers } from "../../hooks/use-drag-drop-handlers.mjs";
11
+ import { useSlotDragSelect } from "../../hooks/use-slot-drag-select.mjs";
12
+ import { DragContext } from "../DragContext/DragContext.mjs";
13
+ import { ScheduleEvent } from "../ScheduleEvent/ScheduleEvent.mjs";
14
+ import { MoreEvents } from "../MoreEvents/MoreEvents.mjs";
15
+ import { ScheduleHeaderBase } from "../ScheduleHeader/ScheduleHeaderBase.mjs";
16
+ import ResourcesMonthView_module_default from "./ResourcesMonthView.module.mjs";
17
+ import dayjs from "dayjs";
18
+ import { Box, ScrollArea, UnstyledButton, createVarsResolver, factory, getRadius, rem, useProps, useResolvedStylesApi, useStyles } from "@mantine/core";
19
+ import { useIsomorphicEffect, useMergedRef } from "@mantine/hooks";
20
+ import { createElement, useCallback, useMemo, useRef } from "react";
21
+ import { useDatesContext } from "@mantine/dates";
22
+ import { jsx, jsxs } from "react/jsx-runtime";
23
+ //#region packages/@mantine/schedule/src/components/ResourcesMonthView/ResourcesMonthView.tsx
24
+ const varsResolver = createVarsResolver((_theme, { radius, dayWidth, rowHeight, groupLabelWidth }) => ({ resourcesMonthView: {
25
+ "--resources-month-view-radius": radius ? getRadius(radius) : void 0,
26
+ "--resources-month-view-day-width": rem(dayWidth),
27
+ "--resources-month-view-row-height": rem(rowHeight),
28
+ "--resources-month-view-group-label-width": rem(groupLabelWidth)
29
+ } }));
30
+ const defaultProps = {
31
+ __staticSelector: "ResourcesMonthView",
32
+ highlightToday: true,
33
+ withHeader: true,
34
+ weekdayFormat: "ddd",
35
+ withWeekendDays: true,
36
+ withEventsDragAndDrop: false,
37
+ withDragSlotSelect: false,
38
+ mode: "default"
39
+ };
40
+ function compareCellEvents(a, b) {
41
+ const aStart = dayjs(a.start);
42
+ const bStart = dayjs(b.start);
43
+ const aSpan = dayjs(a.end).startOf("day").diff(aStart.startOf("day"), "day");
44
+ const bSpan = dayjs(b.end).startOf("day").diff(bStart.startOf("day"), "day");
45
+ if (aSpan !== bSpan) return bSpan - aSpan;
46
+ return aStart.valueOf() - bStart.valueOf();
47
+ }
48
+ function getFirstAvailableRow(usedRows, maxRows) {
49
+ for (let row = 0; row < maxRows; row += 1) if (!usedRows.has(row)) return row;
50
+ return null;
51
+ }
52
+ function isMultiDayEvent(event) {
53
+ return dayjs(event.end).startOf("day").isAfter(dayjs(event.start).startOf("day"));
54
+ }
55
+ const ResourcesMonthView = factory((_props) => {
56
+ const props = useProps("ResourcesMonthView", defaultProps, _props);
57
+ const { classNames, className, style, styles, unstyled, attributes, vars, mod, date, onDateChange, resources, locale, weekdayFormat, weekendDays, withWeekendDays, startScrollDate, __staticSelector, onDayClick, highlightToday, radius, withHeader, monthYearSelectProps, onViewChange, todayControlProps, nextControlProps, previousControlProps, viewSelectProps, events, dayWidth, rowHeight, renderResourceLabel, groups, renderGroupLabel, groupLabelWidth, renderEventBody, renderEvent, withEventsDragAndDrop, onEventDrop, canDragEvent, onEventDragStart, onEventDragEnd, onEventClick, withDragSlotSelect, onSlotDragEnd, labels, mode, scrollAreaProps, onExternalEventDrop, maxEventsPerTimeSlot: _maxEventsPerTimeSlot, moreEventsProps, recurrenceExpansionLimit, ...others } = props;
58
+ const maxEventsPerTimeSlot = Math.min(10, Math.max(1, _maxEventsPerTimeSlot ?? 2));
59
+ const getStyles = useStyles({
60
+ name: __staticSelector,
61
+ classes: ResourcesMonthView_module_default,
62
+ props,
63
+ className,
64
+ style,
65
+ classNames,
66
+ styles,
67
+ unstyled,
68
+ attributes,
69
+ vars,
70
+ varsResolver,
71
+ rootSelector: "resourcesMonthView"
72
+ });
73
+ const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi({
74
+ classNames,
75
+ styles,
76
+ props
77
+ });
78
+ const stylesApiProps = {
79
+ classNames: resolvedClassNames,
80
+ styles: resolvedStyles,
81
+ attributes,
82
+ __staticSelector,
83
+ radius
84
+ };
85
+ const ctx = useDatesContext();
86
+ const resolvedWeekendDays = ctx.getWeekendDays(weekendDays);
87
+ const { orderedResources, groupRanges, resourceGroupMap } = useMemo(() => getOrderedResources(resources, groups), [resources, groups]);
88
+ const hasGroups = groupRanges.length > 0;
89
+ const monthDays = useMemo(() => {
90
+ const start = dayjs(date).startOf("month");
91
+ const daysCount = start.endOf("month").date();
92
+ const weekendDayList = ctx.getWeekendDays(weekendDays);
93
+ const days = [];
94
+ for (let d = 1; d <= daysCount; d++) {
95
+ const day = start.date(d);
96
+ if (!withWeekendDays && weekendDayList.includes(day.day())) continue;
97
+ days.push(day.format("YYYY-MM-DD"));
98
+ }
99
+ return days;
100
+ }, [
101
+ date,
102
+ withWeekendDays,
103
+ weekendDays,
104
+ ctx
105
+ ]);
106
+ const viewportRef = useRef(null);
107
+ const mergedViewportRef = useMergedRef(viewportRef, scrollAreaProps?.viewportRef);
108
+ const dayLabelRefs = useRef([]);
109
+ const resourceLabelRef = useRef(null);
110
+ const scrollToDay = useCallback((targetDate) => {
111
+ if (!viewportRef.current) return;
112
+ const targetIndex = monthDays.indexOf(targetDate);
113
+ if (targetIndex < 0) return;
114
+ const targetLabel = dayLabelRefs.current[targetIndex];
115
+ if (!targetLabel) return;
116
+ const labelRect = targetLabel.getBoundingClientRect();
117
+ const viewportRect = viewportRef.current.getBoundingClientRect();
118
+ const labelWidth = resourceLabelRef.current?.getBoundingClientRect().width ?? 0;
119
+ viewportRef.current.scrollTo({
120
+ left: labelRect.left - viewportRect.left - labelWidth,
121
+ top: 0
122
+ });
123
+ }, [monthDays]);
124
+ useIsomorphicEffect(() => {
125
+ if (startScrollDate) scrollToDay(startScrollDate);
126
+ }, []);
127
+ const expandedEvents = useMemo(() => expandRecurringEvents({
128
+ events,
129
+ rangeStart: dayjs(date).startOf("month").toDate(),
130
+ rangeEnd: dayjs(date).endOf("month").toDate(),
131
+ expansionLimit: recurrenceExpansionLimit
132
+ }), [
133
+ events,
134
+ date,
135
+ recurrenceExpansionLimit
136
+ ]);
137
+ const { eventsByResourceAndDay, eventLayoutByResource } = useMemo(() => {
138
+ const eventsByResourceAndDay = {};
139
+ for (const resource of resources) {
140
+ eventsByResourceAndDay[resource.id] = {};
141
+ for (const day of monthDays) eventsByResourceAndDay[resource.id][day] = [];
142
+ }
143
+ if (expandedEvents) for (const event of expandedEvents) {
144
+ if (event.resourceId === void 0 || !(event.resourceId in eventsByResourceAndDay)) continue;
145
+ const eventStart = dayjs(event.start);
146
+ const eventEnd = dayjs(event.end);
147
+ for (const day of monthDays) {
148
+ const dayStart = dayjs(day).startOf("day");
149
+ const dayEnd = dayjs(day).endOf("day");
150
+ if (eventStart.isBefore(dayEnd) && eventEnd.isAfter(dayStart)) eventsByResourceAndDay[event.resourceId][day].push(event);
151
+ }
152
+ }
153
+ const eventLayoutByResource = {};
154
+ const monthRangeStart = dayjs(monthDays[0]).startOf("day");
155
+ const monthEndExclusive = dayjs(monthDays[monthDays.length - 1]).add(1, "day").startOf("day");
156
+ for (const resource of resources) {
157
+ const byDay = {};
158
+ const lastRow = /* @__PURE__ */ new Map();
159
+ const rowByEventDay = /* @__PURE__ */ new Map();
160
+ const overlapByEvent = /* @__PURE__ */ new Map();
161
+ monthDays.forEach((day, dayIndex) => {
162
+ const dayEvents = eventsByResourceAndDay[resource.id][day];
163
+ dayEvents.sort(compareCellEvents);
164
+ for (const event of dayEvents) {
165
+ const overlap = overlapByEvent.get(event.id);
166
+ if (overlap) overlap.days.push(dayIndex);
167
+ else overlapByEvent.set(event.id, {
168
+ event,
169
+ days: [dayIndex]
170
+ });
171
+ }
172
+ const usedRows = /* @__PURE__ */ new Set();
173
+ const visible = [];
174
+ let hiddenCount = 0;
175
+ for (const event of dayEvents) {
176
+ let row = lastRow.get(event.id);
177
+ if (row === void 0 || row >= maxEventsPerTimeSlot || usedRows.has(row)) row = getFirstAvailableRow(usedRows, maxEventsPerTimeSlot);
178
+ if (row === null) {
179
+ hiddenCount += 1;
180
+ continue;
181
+ }
182
+ usedRows.add(row);
183
+ visible.push({
184
+ event,
185
+ row
186
+ });
187
+ if (!rowByEventDay.has(event.id)) rowByEventDay.set(event.id, /* @__PURE__ */ new Map());
188
+ rowByEventDay.get(event.id).set(dayIndex, row);
189
+ lastRow.set(event.id, row);
190
+ }
191
+ byDay[day] = {
192
+ visible,
193
+ hiddenCount
194
+ };
195
+ });
196
+ const segments = [];
197
+ for (const { event, days } of overlapByEvent.values()) {
198
+ if (!isMultiDayEvent(event)) continue;
199
+ const firstOverlap = days[0];
200
+ const lastOverlap = days[days.length - 1];
201
+ const rows = rowByEventDay.get(event.id);
202
+ const extendsBefore = dayjs(event.start).isBefore(monthRangeStart);
203
+ const extendsAfter = dayjs(event.end).isAfter(monthEndExclusive);
204
+ let run = null;
205
+ const flushRun = () => {
206
+ if (!run) return;
207
+ const clipStart = run.startDayIndex > firstOverlap;
208
+ const clipEnd = run.endDayIndex < lastOverlap;
209
+ const hangStart = !clipStart && extendsBefore;
210
+ const hangEnd = !clipEnd && extendsAfter;
211
+ let hiddenInSpan = false;
212
+ for (let dayIndex = run.startDayIndex; dayIndex <= run.endDayIndex; dayIndex += 1) if ((byDay[monthDays[dayIndex]]?.hiddenCount ?? 0) > 0) {
213
+ hiddenInSpan = true;
214
+ break;
215
+ }
216
+ segments.push({
217
+ event,
218
+ startDayIndex: run.startDayIndex,
219
+ endDayIndex: run.endDayIndex,
220
+ row: run.row,
221
+ clipStart,
222
+ clipEnd,
223
+ hanging: hangStart && hangEnd ? "both" : hangStart ? "start" : hangEnd ? "end" : "none",
224
+ hiddenInSpan
225
+ });
226
+ run = null;
227
+ };
228
+ for (let dayIndex = firstOverlap; dayIndex <= lastOverlap; dayIndex += 1) {
229
+ const row = rows?.get(dayIndex);
230
+ if (row === void 0) {
231
+ flushRun();
232
+ continue;
233
+ }
234
+ if (run && run.row === row && run.endDayIndex === dayIndex - 1) run.endDayIndex = dayIndex;
235
+ else {
236
+ flushRun();
237
+ run = {
238
+ startDayIndex: dayIndex,
239
+ endDayIndex: dayIndex,
240
+ row
241
+ };
242
+ }
243
+ }
244
+ flushRun();
245
+ }
246
+ eventLayoutByResource[resource.id] = {
247
+ byDay,
248
+ segments
249
+ };
250
+ }
251
+ return {
252
+ eventsByResourceAndDay,
253
+ eventLayoutByResource
254
+ };
255
+ }, [
256
+ resources,
257
+ monthDays,
258
+ expandedEvents,
259
+ maxEventsPerTimeSlot
260
+ ]);
261
+ const handleExternalDrop = useCallback((e, target) => {
262
+ if (!onExternalEventDrop) return;
263
+ onExternalEventDrop({
264
+ dataTransfer: e.dataTransfer,
265
+ dropDateTime: `${dayjs(target.day).format("YYYY-MM-DD")} 00:00:00`,
266
+ resourceId: target.resourceId
267
+ });
268
+ }, [onExternalEventDrop]);
269
+ const dragDrop = useDragDropHandlers({
270
+ enabled: withEventsDragAndDrop,
271
+ mode,
272
+ onEventDrop: (data) => {
273
+ onEventDrop?.({
274
+ ...data,
275
+ resourceId: lastDropResourceId.current
276
+ });
277
+ },
278
+ canDragEvent,
279
+ onEventDragStart,
280
+ onEventDragEnd,
281
+ calculateDropTarget: (target, draggedEvent) => {
282
+ lastDropResourceId.current = target.resourceId;
283
+ return calculateMonthDropDate({
284
+ draggedEvent,
285
+ targetDay: target.day
286
+ });
287
+ },
288
+ onExternalDrop: onExternalEventDrop ? handleExternalDrop : void 0
289
+ });
290
+ const lastDropResourceId = useRef(void 0);
291
+ const withDragHandlers = (withEventsDragAndDrop || !!onExternalEventDrop) && mode !== "static";
292
+ const groupToResourceId = useMemo(() => getGroupToResourceIdMap(resources), [resources]);
293
+ const slotDragSelect = useSlotDragSelect({
294
+ enabled: withDragSlotSelect && mode !== "static",
295
+ onDragEnd: (startIndex, endIndex, group) => {
296
+ if (!onSlotDragEnd) return;
297
+ const startDay = monthDays[startIndex];
298
+ const endDay = monthDays[endIndex];
299
+ if (startDay && endDay) onSlotDragEnd({
300
+ rangeStart: dayjs(startDay).startOf("day").format("YYYY-MM-DD HH:mm:ss"),
301
+ rangeEnd: dayjs(endDay).endOf("day").format("YYYY-MM-DD HH:mm:ss"),
302
+ resourceId: groupToResourceId.get(group) ?? group
303
+ });
304
+ }
305
+ });
306
+ const dayLabels = monthDays.map((day, dayIndex) => {
307
+ const d = dayjs(day);
308
+ const weekend = resolvedWeekendDays.includes(d.day());
309
+ const today = d.isSame(dayjs(), "day") && highlightToday;
310
+ return /* @__PURE__ */ createElement(Box, {
311
+ ...getStyles("resourcesMonthViewDayLabel"),
312
+ key: day,
313
+ mod: {
314
+ weekend,
315
+ today
316
+ },
317
+ ref: (node) => {
318
+ dayLabelRefs.current[dayIndex] = node;
319
+ }
320
+ }, /* @__PURE__ */ jsx("span", {
321
+ ...getStyles("resourcesMonthViewDayLabelWeekday"),
322
+ children: formatDate({
323
+ date: d,
324
+ locale: ctx.getLocale(locale),
325
+ format: weekdayFormat
326
+ })
327
+ }), /* @__PURE__ */ jsx("span", {
328
+ ...getStyles("resourcesMonthViewDayLabelNumber"),
329
+ children: d.date()
330
+ }));
331
+ });
332
+ const cellsRef = useRef([]);
333
+ const getDayIndexFromDragPoint = useCallback((event, resourceIndex) => {
334
+ return getIndexFromDragPoint(cellsRef.current[resourceIndex] ?? [], event.clientX);
335
+ }, []);
336
+ const handleCellKeyDown = (event, resourceIndex, dayIndex) => {
337
+ const key = event.key;
338
+ let nextResourceIndex = resourceIndex;
339
+ let nextDayIndex = dayIndex;
340
+ if (key === "ArrowRight") nextDayIndex = Math.min(dayIndex + 1, monthDays.length - 1);
341
+ else if (key === "ArrowLeft") nextDayIndex = Math.max(dayIndex - 1, 0);
342
+ else if (key === "ArrowDown") nextResourceIndex = Math.min(resourceIndex + 1, resources.length - 1);
343
+ else if (key === "ArrowUp") nextResourceIndex = Math.max(resourceIndex - 1, 0);
344
+ else return;
345
+ event.preventDefault();
346
+ cellsRef.current[nextResourceIndex]?.[nextDayIndex]?.focus();
347
+ };
348
+ const rowHeightPercent = 100 / maxEventsPerTimeSlot;
349
+ const rows = orderedResources.map((resource, resourceIndex) => {
350
+ if (!cellsRef.current[resourceIndex]) cellsRef.current[resourceIndex] = [];
351
+ const slotGroup = String(resource.id);
352
+ const dropTarget = dragDrop.dropTarget;
353
+ const totalDays = monthDays.length;
354
+ const eventNodes = [];
355
+ const moreNodes = [];
356
+ const cells = monthDays.map((day, dayIndex) => {
357
+ const d = dayjs(day);
358
+ const weekend = ctx.getWeekendDays(weekendDays).includes(d.day());
359
+ const isDropTarget = dropTarget !== null && typeof dropTarget === "object" && "day" in dropTarget && dropTarget.day === day && dropTarget.resourceId === resource.id;
360
+ const isDragSelected = slotDragSelect.isSlotSelected(dayIndex, slotGroup);
361
+ const dayEvents = eventsByResourceAndDay[resource.id]?.[day] || [];
362
+ const layout = eventLayoutByResource[resource.id]?.byDay[day];
363
+ const visibleEvents = layout?.visible ?? [];
364
+ const hiddenEventsCount = layout?.hiddenCount ?? 0;
365
+ const isFirstCell = resourceIndex === 0 && dayIndex === 0;
366
+ const dayLeftPercent = dayIndex / totalDays * 100;
367
+ const dayWidthPercent = 100 / totalDays;
368
+ const hasHiddenEvents = hiddenEventsCount > 0 && mode !== "static";
369
+ visibleEvents.forEach(({ event, row }) => {
370
+ if (isMultiDayEvent(event)) return;
371
+ const isDraggable = dragDrop.isDraggableEvent(event);
372
+ const topValue = hasHiddenEvents ? `calc((100% - 18px) * ${row} / ${maxEventsPerTimeSlot} + 1px)` : `calc(${row * rowHeightPercent}% + 1px)`;
373
+ const heightValue = hasHiddenEvents ? `calc((100% - 18px) / ${maxEventsPerTimeSlot} - 2px)` : `calc(${rowHeightPercent}% - 2px)`;
374
+ eventNodes.push(/* @__PURE__ */ jsx(ScheduleEvent, {
375
+ event,
376
+ nowrap: true,
377
+ autoSize: true,
378
+ size: "sm",
379
+ draggable: isDraggable,
380
+ renderEventBody,
381
+ renderEvent,
382
+ radius,
383
+ mode,
384
+ onClick: onEventClick ? (e) => onEventClick(event, e) : void 0,
385
+ style: {
386
+ position: "absolute",
387
+ top: topValue,
388
+ left: `calc(${dayLeftPercent}% + 1px)`,
389
+ width: `calc(${dayWidthPercent}% - 2px)`,
390
+ height: heightValue,
391
+ zIndex: 3
392
+ }
393
+ }, `${event.id}-${day}`));
394
+ });
395
+ if (hiddenEventsCount > 0 && mode !== "static") moreNodes.push(/* @__PURE__ */ jsx(MoreEvents, {
396
+ events: dayEvents,
397
+ moreEventsCount: hiddenEventsCount,
398
+ mode,
399
+ labels,
400
+ renderEventBody,
401
+ renderEvent,
402
+ onEventClick,
403
+ style: {
404
+ position: "absolute",
405
+ bottom: 1,
406
+ left: `calc(${dayLeftPercent}% + 1px)`,
407
+ width: `calc(${dayWidthPercent}% - 2px)`,
408
+ height: 18,
409
+ zIndex: 4
410
+ },
411
+ ...stylesApiProps,
412
+ ...moreEventsProps
413
+ }, `more-${resource.id}-${day}`));
414
+ return /* @__PURE__ */ jsx(UnstyledButton, {
415
+ ref: (node) => {
416
+ if (node) {
417
+ if (!cellsRef.current[resourceIndex]) cellsRef.current[resourceIndex] = [];
418
+ cellsRef.current[resourceIndex][dayIndex] = node;
419
+ }
420
+ },
421
+ ...getStyles("resourcesMonthViewCell"),
422
+ "aria-label": `${resource.label} ${d.format("MMMM D, YYYY")}`,
423
+ "data-drag-slot-index": withDragSlotSelect && mode !== "static" ? dayIndex : void 0,
424
+ "data-drag-slot-group": withDragSlotSelect && mode !== "static" ? slotGroup : void 0,
425
+ mod: {
426
+ weekend,
427
+ "drop-target": isDropTarget,
428
+ "drag-selected": isDragSelected,
429
+ static: mode === "static"
430
+ },
431
+ tabIndex: mode === "static" ? -1 : isFirstCell ? 0 : -1,
432
+ onClick: mode === "static" ? void 0 : (e) => onDayClick?.({
433
+ date: day,
434
+ nativeEvent: e,
435
+ resourceId: resource.id
436
+ }),
437
+ onKeyDown: mode === "static" ? void 0 : (e) => handleCellKeyDown(e, resourceIndex, dayIndex),
438
+ onPointerDown: withDragSlotSelect && mode !== "static" ? (e) => slotDragSelect.handleSlotPointerDown(e, dayIndex, slotGroup) : void 0,
439
+ onDragOver: withDragHandlers ? (e) => e.preventDefault() : void 0
440
+ }, day);
441
+ });
442
+ (eventLayoutByResource[resource.id]?.segments ?? []).forEach((segment) => {
443
+ const isDraggable = dragDrop.isDraggableEvent(segment.event);
444
+ const segmentLeftPercent = segment.startDayIndex / totalDays * 100;
445
+ const segmentWidthPercent = (segment.endDayIndex - segment.startDayIndex + 1) / totalDays * 100;
446
+ const compressed = segment.hiddenInSpan && mode !== "static";
447
+ const topValue = compressed ? `calc((100% - 18px) * ${segment.row} / ${maxEventsPerTimeSlot} + 1px)` : `calc(${segment.row * rowHeightPercent}% + 1px)`;
448
+ const heightValue = compressed ? `calc((100% - 18px) / ${maxEventsPerTimeSlot} - 2px)` : `calc(${rowHeightPercent}% - 2px)`;
449
+ eventNodes.push(/* @__PURE__ */ jsx(ScheduleEvent, {
450
+ event: segment.event,
451
+ nowrap: true,
452
+ autoSize: true,
453
+ size: "sm",
454
+ hanging: segment.hanging,
455
+ draggable: isDraggable,
456
+ renderEventBody,
457
+ renderEvent,
458
+ radius,
459
+ mode,
460
+ mod: {
461
+ "clip-start": segment.clipStart,
462
+ "clip-end": segment.clipEnd
463
+ },
464
+ onClick: onEventClick ? (e) => onEventClick(segment.event, e) : void 0,
465
+ style: {
466
+ position: "absolute",
467
+ top: topValue,
468
+ left: `calc(${segmentLeftPercent}% + 1px)`,
469
+ width: `calc(${segmentWidthPercent}% - 2px)`,
470
+ height: heightValue,
471
+ zIndex: 3
472
+ }
473
+ }, `${segment.event.id}-segment-${segment.startDayIndex}`));
474
+ });
475
+ const groupInfo = hasGroups ? resourceGroupMap[resourceIndex] : void 0;
476
+ const isGroupStart = groupInfo?.position === "first" || groupInfo?.position === "only";
477
+ const groupCell = groupInfo !== void 0 ? groupInfo !== null ? /* @__PURE__ */ jsx(Box, {
478
+ ...getStyles("resourcesMonthViewGroupColumn"),
479
+ mod: { "group-position": groupInfo.position },
480
+ children: isGroupStart && /* @__PURE__ */ jsx("span", {
481
+ style: groupInfo.count > 1 ? { transform: `translateY(calc((${groupInfo.count - 1} * (var(--resources-month-view-row-height) + 1px)) / 2))` } : void 0,
482
+ children: renderGroupLabel ? renderGroupLabel(groupInfo.group) : groupInfo.group.label
483
+ })
484
+ }) : /* @__PURE__ */ jsx(Box, { ...getStyles("resourcesMonthViewGroupColumnEmpty") }) : null;
485
+ return /* @__PURE__ */ createElement("div", {
486
+ ...getStyles("resourcesMonthViewRow"),
487
+ key: resource.id
488
+ }, groupCell, /* @__PURE__ */ jsx("div", {
489
+ ...getStyles("resourcesMonthViewResourceLabel"),
490
+ "data-has-groups": hasGroups || void 0,
491
+ children: renderResourceLabel ? renderResourceLabel(resource) : resource.label
492
+ }), /* @__PURE__ */ jsxs("div", {
493
+ ...getStyles("resourcesMonthViewRowSlots"),
494
+ onDragOver: withDragHandlers ? (e) => {
495
+ const dayIndex = getDayIndexFromDragPoint(e, resourceIndex);
496
+ if (dayIndex !== null && monthDays[dayIndex]) dragDrop.handleDragOver(e, {
497
+ day: monthDays[dayIndex],
498
+ resourceId: resource.id
499
+ });
500
+ } : void 0,
501
+ onDragLeave: withDragHandlers ? dragDrop.handleDragLeave : void 0,
502
+ onDrop: withDragHandlers ? (e) => {
503
+ const dayIndex = getDayIndexFromDragPoint(e, resourceIndex);
504
+ if (dayIndex !== null && monthDays[dayIndex]) dragDrop.handleDrop(e, {
505
+ day: monthDays[dayIndex],
506
+ resourceId: resource.id
507
+ });
508
+ } : void 0,
509
+ children: [
510
+ eventNodes,
511
+ moreNodes,
512
+ cells
513
+ ]
514
+ }));
515
+ });
516
+ const content = /* @__PURE__ */ jsxs(Box, {
517
+ mod: [{
518
+ static: mode === "static",
519
+ "slot-dragging": slotDragSelect.isDragging,
520
+ "event-interaction": dragDrop.dragContextValue.isDragging
521
+ }, mod],
522
+ ...getStyles("resourcesMonthView"),
523
+ ...others,
524
+ children: [withHeader && /* @__PURE__ */ jsx(ScheduleHeaderBase, {
525
+ view: "month",
526
+ navigationHandlers: {
527
+ previous: () => toDateString(dayjs(date).subtract(1, "month").startOf("month")),
528
+ next: () => toDateString(dayjs(date).add(1, "month").startOf("month")),
529
+ today: () => {
530
+ requestAnimationFrame(() => {
531
+ scrollToDay(dayjs().format("YYYY-MM-DD"));
532
+ });
533
+ return toDateString(dayjs());
534
+ }
535
+ },
536
+ control: { monthYearSelect: {
537
+ locale,
538
+ yearValue: dayjs(date).get("year"),
539
+ monthValue: dayjs(date).get("month"),
540
+ onYearChange: (year) => onDateChange?.(toDateString(dayjs(date).set("year", year).startOf("month"))),
541
+ onMonthChange: (month) => onDateChange?.(toDateString(dayjs(date).set("month", month).startOf("month"))),
542
+ ...monthYearSelectProps
543
+ } },
544
+ labels,
545
+ onDateChange,
546
+ onViewChange,
547
+ previousControlProps,
548
+ nextControlProps,
549
+ todayControlProps,
550
+ viewSelectProps: {
551
+ views: [
552
+ "day",
553
+ "week",
554
+ "month"
555
+ ],
556
+ ...viewSelectProps
557
+ },
558
+ stylesApiProps
559
+ }), /* @__PURE__ */ jsx(Box, {
560
+ ...getStyles("resourcesMonthViewRoot"),
561
+ children: /* @__PURE__ */ jsx(ScrollArea, {
562
+ scrollbars: "x",
563
+ scrollbarSize: 4,
564
+ ...scrollAreaProps,
565
+ ...getStyles("resourcesMonthViewScrollArea", {
566
+ className: scrollAreaProps?.className,
567
+ style: scrollAreaProps?.style
568
+ }),
569
+ viewportRef: mergedViewportRef,
570
+ children: /* @__PURE__ */ jsxs("div", {
571
+ ...getStyles("resourcesMonthViewInner"),
572
+ children: [/* @__PURE__ */ jsxs("div", {
573
+ ...getStyles("resourcesMonthViewDayLabelsRow"),
574
+ children: [/* @__PURE__ */ createElement("div", {
575
+ ...getStyles("resourcesMonthViewCorner"),
576
+ key: "corner",
577
+ ref: resourceLabelRef,
578
+ style: hasGroups ? {
579
+ flexBasis: "calc(var(--resources-month-view-resource-label-width) + var(--resources-month-view-group-label-width))",
580
+ minWidth: "calc(var(--resources-month-view-resource-label-width) + var(--resources-month-view-group-label-width))"
581
+ } : void 0
582
+ }, getLabel("resources", labels)), dayLabels]
583
+ }), rows]
584
+ })
585
+ })
586
+ })]
587
+ });
588
+ if (withEventsDragAndDrop) return /* @__PURE__ */ jsx(DragContext.Provider, {
589
+ value: dragDrop.dragContextValue,
590
+ children: content
591
+ });
592
+ return content;
593
+ });
594
+ ResourcesMonthView.displayName = "@mantine/schedule/ResourcesMonthView";
595
+ ResourcesMonthView.classes = ResourcesMonthView_module_default;
596
+ ResourcesMonthView.varsResolver = varsResolver;
597
+ //#endregion
598
+ export { ResourcesMonthView };
599
+
600
+ //# sourceMappingURL=ResourcesMonthView.mjs.map