@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,674 @@
1
+ "use client";
2
+ import { getLabel } from "../../labels.mjs";
3
+ import { formatDate } from "../../utils/format-date/format-date.mjs";
4
+ import { getDayTimeIntervals } from "../../utils/get-day-time-intervals/get-day-time-intervals.mjs";
5
+ import { toDateString } from "../../utils/to-date-string/to-date-string.mjs";
6
+ import { getWeekDays } from "../../utils/get-week-days/get-week-days.mjs";
7
+ import { nextWeek } from "../../utils/next-week/next-week.mjs";
8
+ import { previousWeek } from "../../utils/previous-week/previous-week.mjs";
9
+ import { getCurrentTimePosition } from "../../utils/get-current-time-position/get-current-time-position.mjs";
10
+ import { isInTimeRange } from "../../utils/is-in-time-range/is-in-time-range.mjs";
11
+ import { isAllDayEvent } from "../../utils/is-all-day-event/is-all-day-event.mjs";
12
+ import { calculateDropTime } from "../../utils/calculate-drop-time/calculate-drop-time.mjs";
13
+ import { getBusinessHoursMod } from "../../utils/get-business-hours-mod/get-business-hours-mod.mjs";
14
+ import { getOrderedResources } from "../../utils/get-ordered-resources/get-ordered-resources.mjs";
15
+ import { handleResourcesGridKeyDown } from "../../utils/handle-resources-grid-key-down/handle-resources-grid-key-down.mjs";
16
+ import { getGroupToResourceIdMap } from "../../utils/get-group-to-resource-id-map/get-group-to-resource-id-map.mjs";
17
+ import { getIndexFromDragPoint } from "../../utils/get-index-from-drag-point/get-index-from-drag-point.mjs";
18
+ import { useDragDropHandlers } from "../../hooks/use-drag-drop-handlers.mjs";
19
+ import { useSlotDragSelect } from "../../hooks/use-slot-drag-select.mjs";
20
+ import { DragContext } from "../DragContext/DragContext.mjs";
21
+ import { ScheduleEvent } from "../ScheduleEvent/ScheduleEvent.mjs";
22
+ import { MoreEvents } from "../MoreEvents/MoreEvents.mjs";
23
+ import { ScheduleHeaderBase } from "../ScheduleHeader/ScheduleHeaderBase.mjs";
24
+ import { getWeekLabel } from "../WeekView/get-week-label/get-week-label.mjs";
25
+ import { useHorizontalEventResize } from "../../hooks/use-horizontal-event-resize.mjs";
26
+ import { getOverlapClusters } from "../ResourcesDayView/get-overlap-clusters/get-overlap-clusters.mjs";
27
+ import { getResourcesWeekViewEvents } from "./get-resources-week-view-events/get-resources-week-view-events.mjs";
28
+ import { ResourcesWeekViewRow } from "./ResourcesWeekViewRow.mjs";
29
+ import ResourcesWeekView_module_default from "./ResourcesWeekView.module.mjs";
30
+ import dayjs from "dayjs";
31
+ import { Box, ScrollArea, createVarsResolver, factory, getRadius, rem, useMantineTheme, useProps, useResolvedStylesApi, useStyles } from "@mantine/core";
32
+ import { useInterval, useIsomorphicEffect, useMergedRef } from "@mantine/hooks";
33
+ import { createElement, useCallback, useMemo, useRef, useState } from "react";
34
+ import { useDatesContext } from "@mantine/dates";
35
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
36
+ //#region packages/@mantine/schedule/src/components/ResourcesWeekView/ResourcesWeekView.tsx
37
+ const defaultProps = {
38
+ __staticSelector: "ResourcesWeekView",
39
+ startTime: "00:00:00",
40
+ endTime: "23:59:59",
41
+ slotLabelFormat: "HH:mm",
42
+ intervalMinutes: 60,
43
+ withHeader: true,
44
+ weekLabelFormat: "MMM DD",
45
+ weekdayFormat: "ddd D",
46
+ highlightBusinessHours: false,
47
+ businessHours: ["09:00:00", "17:00:00"],
48
+ withEventsDragAndDrop: false,
49
+ withEventResize: false,
50
+ withDragSlotSelect: false,
51
+ withWeekendDays: true,
52
+ withCurrentTimeBubble: true,
53
+ highlightToday: true,
54
+ mode: "default",
55
+ maxEventsPerTimeSlot: 2
56
+ };
57
+ const varsResolver = createVarsResolver((_theme, { radius, slotWidth, rowHeight, groupLabelWidth }) => ({ resourcesWeekView: {
58
+ "--resources-week-view-radius": radius ? getRadius(radius) : void 0,
59
+ "--resources-week-view-slot-width": rem(slotWidth),
60
+ "--resources-week-view-row-height": rem(rowHeight),
61
+ "--resources-week-view-group-label-width": rem(groupLabelWidth)
62
+ } }));
63
+ const ResourcesWeekView = factory((_props) => {
64
+ const props = useProps("ResourcesWeekView", defaultProps, _props);
65
+ const { classNames, className, style, styles, unstyled, attributes, vars, startTime, endTime, date, onDateChange, resources, intervalMinutes, slotLabelFormat, radius, startScrollDateTime, scrollAreaProps, locale, withCurrentTimeIndicator: _withCurrentTimeIndicator, withCurrentTimeBubble, __staticSelector, withHeader, onViewChange, previousControlProps, nextControlProps, todayControlProps, viewSelectProps, weekLabelFormat, renderWeekLabel, events, slotWidth, rowHeight, labels, highlightBusinessHours, businessHours, renderEventBody, renderEvent, renderResourceLabel, groups, renderGroupLabel, groupLabelWidth, withEventsDragAndDrop, onEventDrop, canDragEvent, onEventDragStart, onEventDragEnd, withEventResize, onEventResize, canResizeEvent, onTimeSlotClick, onEventClick, withDragSlotSelect, onSlotDragEnd, mode, onExternalEventDrop, recurrenceExpansionLimit, maxEventsPerTimeSlot: _maxEventsPerTimeSlot, moreEventsProps, firstDayOfWeek, weekendDays, withWeekendDays, weekdayFormat, highlightToday, ...others } = props;
66
+ const maxEventsPerTimeSlot = _maxEventsPerTimeSlot !== void 0 ? Math.max(1, _maxEventsPerTimeSlot) : void 0;
67
+ const getStyles = useStyles({
68
+ name: __staticSelector,
69
+ classes: ResourcesWeekView_module_default,
70
+ props,
71
+ className,
72
+ style,
73
+ classNames,
74
+ styles,
75
+ unstyled,
76
+ vars,
77
+ varsResolver,
78
+ attributes,
79
+ rootSelector: "resourcesWeekView"
80
+ });
81
+ const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi({
82
+ classNames,
83
+ styles,
84
+ props
85
+ });
86
+ const stylesApiProps = {
87
+ classNames: resolvedClassNames,
88
+ styles: resolvedStyles,
89
+ attributes,
90
+ __staticSelector,
91
+ radius
92
+ };
93
+ const theme = useMantineTheme();
94
+ const [scrolled, setScrolled] = useState(false);
95
+ const [scrolledX, setScrolledX] = useState(false);
96
+ const ctx = useDatesContext();
97
+ const slots = getDayTimeIntervals({
98
+ startTime,
99
+ endTime,
100
+ intervalMinutes
101
+ });
102
+ const { orderedResources, groupRanges, resourceGroupMap } = useMemo(() => getOrderedResources(resources, groups), [resources, groups]);
103
+ const hasGroups = groupRanges.length > 0;
104
+ const weekdays = useMemo(() => getWeekDays({
105
+ week: date,
106
+ withWeekendDays,
107
+ weekendDays: ctx.getWeekendDays(weekendDays),
108
+ firstDayOfWeek: ctx.getFirstDayOfWeek(firstDayOfWeek)
109
+ }), [
110
+ date,
111
+ withWeekendDays,
112
+ weekendDays,
113
+ firstDayOfWeek,
114
+ ctx
115
+ ]);
116
+ const totalSlotsPerDay = slots.length;
117
+ const isToday = weekdays.some((day) => dayjs(day).isSame(dayjs(), "day"));
118
+ const withCurrentTimeIndicator = _withCurrentTimeIndicator ?? isToday;
119
+ const [timeIndicatorOffset, setTimeIndicatorOffset] = useState(getCurrentTimePosition({
120
+ startTime,
121
+ endTime,
122
+ intervalMinutes
123
+ }));
124
+ useInterval(() => setTimeIndicatorOffset(getCurrentTimePosition({
125
+ startTime,
126
+ endTime,
127
+ intervalMinutes
128
+ })), 6e4, { autoInvoke: true });
129
+ const todayDayIndex = weekdays.findIndex((day) => dayjs(day).isSame(dayjs(), "day"));
130
+ const showTimeIndicator = withCurrentTimeIndicator && todayDayIndex >= 0 && isInTimeRange({
131
+ date: dayjs().toDate(),
132
+ startTime,
133
+ endTime
134
+ });
135
+ const formattedCurrentTime = withCurrentTimeBubble ? formatDate({
136
+ locale: ctx.getLocale(locale),
137
+ date: dayjs(),
138
+ format: slotLabelFormat
139
+ }) : "";
140
+ const handleExternalDrop = useCallback((e, target) => {
141
+ if (!onExternalEventDrop) return;
142
+ const dayIndex = Math.floor(target.slotIndex / totalSlotsPerDay);
143
+ const slotInDay = target.slotIndex % totalSlotsPerDay;
144
+ const slotDay = weekdays[dayIndex];
145
+ if (slotDay) onExternalEventDrop({
146
+ dataTransfer: e.dataTransfer,
147
+ dropDateTime: `${dayjs(slotDay).format("YYYY-MM-DD")} ${slots[slotInDay].startTime}`,
148
+ resourceId: target.resourceId
149
+ });
150
+ }, [
151
+ onExternalEventDrop,
152
+ slots,
153
+ weekdays,
154
+ totalSlotsPerDay
155
+ ]);
156
+ const lastDropResourceId = useRef(void 0);
157
+ const dragDrop = useDragDropHandlers({
158
+ enabled: withEventsDragAndDrop,
159
+ mode,
160
+ onEventDrop: useCallback((data) => {
161
+ onEventDrop?.({
162
+ ...data,
163
+ resourceId: lastDropResourceId.current
164
+ });
165
+ }, [onEventDrop]),
166
+ canDragEvent,
167
+ onEventDragStart,
168
+ onEventDragEnd,
169
+ calculateDropTarget: (target, draggedEvent) => {
170
+ lastDropResourceId.current = target.resourceId;
171
+ const dayIndex = Math.floor(target.slotIndex / totalSlotsPerDay);
172
+ const slotTime = slots[target.slotIndex % totalSlotsPerDay].startTime;
173
+ return calculateDropTime({
174
+ draggedEvent,
175
+ targetDate: weekdays[dayIndex] || weekdays[0],
176
+ targetSlotTime: slotTime,
177
+ intervalMinutes
178
+ });
179
+ },
180
+ onExternalDrop: onExternalEventDrop ? handleExternalDrop : void 0
181
+ });
182
+ const groupToResourceId = useMemo(() => getGroupToResourceIdMap(resources), [resources]);
183
+ const slotDragSelect = useSlotDragSelect({
184
+ enabled: withDragSlotSelect && mode !== "static",
185
+ onDragEnd: (startIndex, endIndex, group) => {
186
+ if (!onSlotDragEnd) return;
187
+ const startDayIndex = Math.floor(startIndex / totalSlotsPerDay);
188
+ const startSlotInDay = startIndex % totalSlotsPerDay;
189
+ const endDayIndex = Math.floor(endIndex / totalSlotsPerDay);
190
+ const endSlotInDay = endIndex % totalSlotsPerDay;
191
+ const startDay = weekdays[startDayIndex];
192
+ const endDay = weekdays[endDayIndex];
193
+ if (startDay && endDay) onSlotDragEnd({
194
+ rangeStart: `${dayjs(startDay).format("YYYY-MM-DD")} ${slots[startSlotInDay].startTime}`,
195
+ rangeEnd: `${dayjs(endDay).format("YYYY-MM-DD")} ${slots[endSlotInDay].endTime}`,
196
+ resourceId: groupToResourceId.get(group) ?? group
197
+ });
198
+ }
199
+ });
200
+ const eventResize = useHorizontalEventResize({
201
+ enabled: withEventResize,
202
+ mode,
203
+ startTime,
204
+ endTime,
205
+ intervalMinutes,
206
+ onEventResize,
207
+ canResizeEvent
208
+ });
209
+ const withDragHandlers = (withEventsDragAndDrop || !!onExternalEventDrop) && mode !== "static";
210
+ const handleTimeSlotClick = (resourceId, day, slotTime, e) => {
211
+ if (!onTimeSlotClick) return;
212
+ const slotIndex = slots.findIndex((s) => s.startTime === slotTime);
213
+ if (slotIndex === -1) return;
214
+ const slot = slots[slotIndex];
215
+ const dayStr = dayjs(day).format("YYYY-MM-DD");
216
+ onTimeSlotClick({
217
+ slotStart: `${dayStr} ${slot.startTime}`,
218
+ slotEnd: `${dayStr} ${slot.endTime}`,
219
+ nativeEvent: e,
220
+ resourceId
221
+ });
222
+ };
223
+ const weekViewEvents = useMemo(() => getResourcesWeekViewEvents({
224
+ events,
225
+ resources,
226
+ weekdays,
227
+ startTime,
228
+ endTime,
229
+ expansionLimit: recurrenceExpansionLimit
230
+ }), [
231
+ events,
232
+ resources,
233
+ weekdays,
234
+ startTime,
235
+ endTime,
236
+ recurrenceExpansionLimit
237
+ ]);
238
+ const dayLabels = weekdays.map((day) => {
239
+ const d = dayjs(day);
240
+ const today = d.isSame(dayjs(), "day") && highlightToday;
241
+ const weekend = ctx.getWeekendDays(weekendDays).includes(d.day());
242
+ return /* @__PURE__ */ createElement(Box, {
243
+ ...getStyles("resourcesWeekViewDayLabel"),
244
+ key: day,
245
+ mod: {
246
+ today,
247
+ weekend
248
+ },
249
+ style: { width: `calc(var(--resources-week-view-slot-width) * ${totalSlotsPerDay})` }
250
+ }, formatDate({
251
+ date: d,
252
+ locale: ctx.getLocale(locale),
253
+ format: weekdayFormat
254
+ }));
255
+ });
256
+ const timeLabels = weekdays.flatMap((day) => slots.map((interval) => {
257
+ const label = formatDate({
258
+ date: dayjs(`${dayjs(day).format("YYYY-MM-DD")} ${interval.startTime}`),
259
+ locale: ctx.getLocale(locale),
260
+ format: slotLabelFormat
261
+ });
262
+ return /* @__PURE__ */ createElement(Box, {
263
+ ...getStyles("resourcesWeekViewTimeLabel"),
264
+ key: `${day}-${interval.startTime}`,
265
+ mod: {
266
+ "hour-start": interval.isHourStart,
267
+ ...getBusinessHoursMod({
268
+ time: interval.startTime,
269
+ businessHours,
270
+ highlightBusinessHours
271
+ })
272
+ }
273
+ }, label);
274
+ }));
275
+ const slotsRef = useRef([]);
276
+ const rowSlotsContainersRef = useRef([]);
277
+ const viewportRef = useRef(null);
278
+ const mergedViewportRef = useMergedRef(viewportRef, scrollAreaProps?.viewportRef);
279
+ const firstSlotIndex = {
280
+ resourceIndex: 0,
281
+ slotIndex: 0
282
+ };
283
+ useIsomorphicEffect(() => {
284
+ if (!startScrollDateTime || !viewportRef.current) return;
285
+ const parsed = dayjs(startScrollDateTime);
286
+ const targetDayStr = parsed.format("YYYY-MM-DD 00:00:00");
287
+ const targetTime = parsed.format("HH:mm:ss");
288
+ const dayIndex = weekdays.indexOf(targetDayStr);
289
+ if (dayIndex < 0) return;
290
+ const slotInDay = slots.findIndex((s) => s.startTime >= targetTime);
291
+ if (slotInDay < 0) return;
292
+ const flatIndex = dayIndex * totalSlotsPerDay + slotInDay;
293
+ const firstResourceSlots = slotsRef.current[0];
294
+ if (!firstResourceSlots || firstResourceSlots.length === 0) return;
295
+ const targetSlot = firstResourceSlots[flatIndex];
296
+ if (!targetSlot) return;
297
+ const slotRect = targetSlot.getBoundingClientRect();
298
+ const viewportRect = viewportRef.current.getBoundingClientRect();
299
+ const cornerEl = viewportRef.current.querySelector(`.${ResourcesWeekView_module_default.resourcesWeekViewCorner}`);
300
+ const labelWidth = cornerEl ? cornerEl.getBoundingClientRect().width : 0;
301
+ viewportRef.current.scrollTo({
302
+ left: slotRect.left - viewportRect.left - labelWidth,
303
+ top: 0
304
+ });
305
+ }, []);
306
+ const getSlotIndexFromDragPoint = useCallback((event, resourceIndex) => {
307
+ return getIndexFromDragPoint(slotsRef.current[resourceIndex] ?? [], event.clientX);
308
+ }, []);
309
+ const handleSlotKeyDown = (event, resourceIndex, slotIndex) => {
310
+ handleResourcesGridKeyDown({
311
+ controlsRef: slotsRef,
312
+ resourceIndex,
313
+ slotIndex,
314
+ event
315
+ });
316
+ };
317
+ const dayWidthPercent = 100 / weekdays.length;
318
+ const rows = orderedResources.map((resource, resourceIndex) => {
319
+ const eventNodes = [];
320
+ const resourceAllDayBars = weekViewEvents.allDayBars[resource.id] ?? [];
321
+ const maxAllDayCount = resourceAllDayBars.reduce((max, bar) => Math.max(max, bar.row + 1), 0);
322
+ weekdays.forEach((day, dayIndex) => {
323
+ const dayEvents = weekViewEvents.byDay[day];
324
+ if (!dayEvents) return;
325
+ const dayOffsetPercent = dayIndex / weekdays.length * 100;
326
+ const bgEvents = [...dayEvents.backgroundTimedEvents[resource.id] || [], ...dayEvents.backgroundAllDayEvents[resource.id] || []];
327
+ for (const event of bgEvents) {
328
+ const colors = theme.variantColorResolver({
329
+ color: event.color || theme.primaryColor,
330
+ theme,
331
+ variant: "light",
332
+ autoContrast: true
333
+ });
334
+ const bgEventBody = typeof renderEventBody === "function" ? renderEventBody(event) : event.title;
335
+ const bgEventProps = {
336
+ key: `bg-${event.id}-${day}`,
337
+ ...getStyles("resourcesWeekViewBackgroundEvent", { style: {
338
+ left: `${dayOffsetPercent + event.position.top / 100 * dayWidthPercent}%`,
339
+ width: `${event.position.height / 100 * dayWidthPercent}%`,
340
+ top: 0,
341
+ height: "100%"
342
+ } }),
343
+ __vars: {
344
+ "--bg-event-bg": colors.background,
345
+ "--bg-event-color": colors.color
346
+ },
347
+ children: bgEventBody
348
+ };
349
+ if (typeof renderEvent === "function") eventNodes.push(renderEvent(event, bgEventProps));
350
+ else eventNodes.push(/* @__PURE__ */ jsx(Box, { ...bgEventProps }));
351
+ }
352
+ const allRegularEvents = (dayEvents.regularEvents[resource.id] || []).filter((event) => !isAllDayEvent({
353
+ event,
354
+ date: day
355
+ }));
356
+ const visibleEvents = maxEventsPerTimeSlot !== void 0 ? allRegularEvents.filter((event) => event.position.column < maxEventsPerTimeSlot) : allRegularEvents;
357
+ for (const event of visibleEvents) {
358
+ const isDraggable = dragDrop.isDraggableEvent(event);
359
+ const isResizable = eventResize.isResizableEvent(event);
360
+ const resizePosition = eventResize.getResizePosition(event.id);
361
+ const isThisEventResizing = resizePosition !== null;
362
+ const activeEdge = isThisEventResizing && eventResize.resizingEdge ? eventResize.resizingEdge : null;
363
+ const effectiveTop = resizePosition ? resizePosition.left : event.position.top;
364
+ const effectiveHeight = resizePosition ? resizePosition.width : event.position.height;
365
+ const eventLeft = dayOffsetPercent + effectiveTop / 100 * dayWidthPercent;
366
+ const eventWidth = effectiveHeight / 100 * dayWidthPercent;
367
+ const eventColors = isResizable ? theme.variantColorResolver({
368
+ color: event.color || theme.primaryColor,
369
+ theme,
370
+ variant: event.variant || "light",
371
+ autoContrast: true
372
+ }) : null;
373
+ const adjustPosition = maxEventsPerTimeSlot !== void 0 && event.position.overlaps > maxEventsPerTimeSlot;
374
+ const eventDate = dayjs(day).format("YYYY-MM-DD");
375
+ eventNodes.push(/* @__PURE__ */ jsxs(Box, {
376
+ ...getStyles("resourcesWeekViewEventWrapper"),
377
+ __vars: eventColors ? { "--event-color": eventColors.color } : void 0,
378
+ "data-resizing": isThisEventResizing || void 0,
379
+ style: {
380
+ left: `calc(${eventLeft}% + 1px)`,
381
+ top: adjustPosition ? `calc((100% - 22px) * ${event.position.column} / ${maxEventsPerTimeSlot})` : `${event.position.offset}%`,
382
+ width: `calc(${eventWidth}% - 2px)`,
383
+ height: adjustPosition ? `calc((100% - 22px) / ${maxEventsPerTimeSlot})` : `${event.position.width}%`
384
+ },
385
+ children: [/* @__PURE__ */ jsx(ScheduleEvent, {
386
+ event,
387
+ autoSize: true,
388
+ nowrap: true,
389
+ draggable: isDraggable,
390
+ isResizing: isThisEventResizing,
391
+ renderEventBody,
392
+ renderEvent,
393
+ radius,
394
+ mode,
395
+ onClick: onEventClick ? (e) => {
396
+ if (!eventResize.wasResizing()) onEventClick(event, e);
397
+ } : void 0,
398
+ style: {
399
+ width: "100%",
400
+ height: "100%"
401
+ }
402
+ }), isResizable && mode !== "static" && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("div", {
403
+ ...getStyles("resourcesWeekViewResizeHandle"),
404
+ "data-edge": "start",
405
+ "data-active": activeEdge === "start" || void 0,
406
+ onPointerDown: (e) => {
407
+ const container = rowSlotsContainersRef.current[resourceIndex];
408
+ if (container) eventResize.handleResizeStart({
409
+ event,
410
+ edge: "start",
411
+ container,
412
+ originalLeft: event.position.top,
413
+ originalWidth: event.position.height,
414
+ eventDate,
415
+ dayIndex,
416
+ dayCount: weekdays.length,
417
+ pointerEvent: e
418
+ });
419
+ }
420
+ }), /* @__PURE__ */ jsx("div", {
421
+ ...getStyles("resourcesWeekViewResizeHandle"),
422
+ "data-edge": "end",
423
+ "data-active": activeEdge === "end" || void 0,
424
+ onPointerDown: (e) => {
425
+ const container = rowSlotsContainersRef.current[resourceIndex];
426
+ if (container) eventResize.handleResizeStart({
427
+ event,
428
+ edge: "end",
429
+ container,
430
+ originalLeft: event.position.top,
431
+ originalWidth: event.position.height,
432
+ eventDate,
433
+ dayIndex,
434
+ dayCount: weekdays.length,
435
+ pointerEvent: e
436
+ });
437
+ }
438
+ })] })]
439
+ }, `${event.id}-${day}`));
440
+ }
441
+ if (maxEventsPerTimeSlot !== void 0) {
442
+ const clusters = getOverlapClusters(allRegularEvents);
443
+ for (const cluster of clusters) {
444
+ const hiddenCount = cluster.filter((e) => e.position.column >= maxEventsPerTimeSlot).length;
445
+ if (hiddenCount > 0 && mode !== "static") {
446
+ const leftPercent = dayOffsetPercent + Math.min(...cluster.map((e) => e.position.top)) / 100 * dayWidthPercent;
447
+ const rightPercent = dayOffsetPercent + Math.max(...cluster.map((e) => e.position.top + e.position.height)) / 100 * dayWidthPercent;
448
+ eventNodes.push(/* @__PURE__ */ jsx(MoreEvents, {
449
+ events: cluster,
450
+ moreEventsCount: hiddenCount,
451
+ mode,
452
+ labels,
453
+ renderEventBody,
454
+ renderEvent,
455
+ onEventClick,
456
+ style: {
457
+ position: "absolute",
458
+ left: `calc(${leftPercent}% + 1px)`,
459
+ width: `calc(${rightPercent - leftPercent}% - 2px)`,
460
+ bottom: 0,
461
+ height: "22px",
462
+ paddingInline: 4,
463
+ zIndex: 4
464
+ },
465
+ ...stylesApiProps,
466
+ ...moreEventsProps
467
+ }, `more-${resource.id}-${day}-${cluster[0].id}`));
468
+ }
469
+ }
470
+ }
471
+ });
472
+ const stickyLabelOffset = hasGroups ? "calc(var(--resources-week-view-group-label-width) + var(--resources-week-view-resource-label-width) + 5px)" : "calc(var(--resources-week-view-resource-label-width) + 5px)";
473
+ resourceAllDayBars.forEach((bar) => {
474
+ const leftPercent = bar.startDayIndex * dayWidthPercent;
475
+ const widthPercent = (bar.endDayIndex - bar.startDayIndex + 1) * dayWidthPercent;
476
+ eventNodes.push(/* @__PURE__ */ jsx("div", {
477
+ ...getStyles("resourcesWeekViewAllDayEvent", { style: {
478
+ left: `calc(${leftPercent}% + 1px)`,
479
+ width: `calc(${widthPercent}% - 2px)`,
480
+ top: `calc(${bar.row} * (var(--resources-week-view-all-day-height) + 2px) + 2px)`
481
+ } }),
482
+ children: /* @__PURE__ */ jsx(ScheduleEvent, {
483
+ event: bar.event,
484
+ autoSize: true,
485
+ nowrap: true,
486
+ renderEventBody: (barEvent) => /* @__PURE__ */ jsx("span", {
487
+ style: {
488
+ position: "sticky",
489
+ insetInlineStart: stickyLabelOffset,
490
+ display: "inline-block",
491
+ maxWidth: "100%",
492
+ overflow: "hidden",
493
+ textOverflow: "ellipsis"
494
+ },
495
+ children: renderEventBody ? renderEventBody(barEvent) : barEvent.title
496
+ }),
497
+ renderEvent,
498
+ radius,
499
+ mode,
500
+ onClick: onEventClick ? (e) => onEventClick(bar.event, e) : void 0,
501
+ style: {
502
+ width: "100%",
503
+ height: "100%",
504
+ overflow: "visible"
505
+ },
506
+ styles: { eventInner: {
507
+ display: "block",
508
+ overflow: "visible",
509
+ lineHeight: "var(--resources-week-view-all-day-height)"
510
+ } }
511
+ })
512
+ }, `all-day-${bar.event.id}-${bar.startDayIndex}`));
513
+ });
514
+ return /* @__PURE__ */ jsx(ResourcesWeekViewRow, {
515
+ resource,
516
+ resourceIndex,
517
+ weekdays,
518
+ slots,
519
+ getStyles,
520
+ labels,
521
+ highlightBusinessHours,
522
+ businessHours,
523
+ withEventsDragAndDrop: withDragHandlers,
524
+ mode,
525
+ slotsRef,
526
+ firstSlotIndex,
527
+ onSlotKeyDown: handleSlotKeyDown,
528
+ onSlotClick: handleTimeSlotClick,
529
+ onRowSlotsDragOver: (event, resourceId, resIdx) => {
530
+ const slotIndex = getSlotIndexFromDragPoint(event, resIdx);
531
+ if (slotIndex !== null) dragDrop.handleDragOver(event, {
532
+ resourceId,
533
+ slotIndex
534
+ });
535
+ },
536
+ onRowSlotsDragLeave: dragDrop.handleDragLeave,
537
+ onRowSlotsDrop: (event, resourceId, resIdx) => {
538
+ const slotIndex = getSlotIndexFromDragPoint(event, resIdx);
539
+ if (slotIndex !== null) dragDrop.handleDrop(event, {
540
+ resourceId,
541
+ slotIndex
542
+ });
543
+ },
544
+ dropTargetSlotIndex: dragDrop.dropTarget?.resourceId === resource.id ? dragDrop.dropTarget.slotIndex : void 0,
545
+ withDragSlotSelect,
546
+ onSlotPointerDown: slotDragSelect.handleSlotPointerDown,
547
+ isSlotDragSelected: slotDragSelect.isSlotSelected,
548
+ rowSlotsContainerRef: (node) => {
549
+ rowSlotsContainersRef.current[resourceIndex] = node;
550
+ },
551
+ renderResourceLabel,
552
+ renderGroupLabel,
553
+ scrolledX,
554
+ groupInfo: hasGroups ? resourceGroupMap[resourceIndex] : void 0,
555
+ allDayCount: maxAllDayCount,
556
+ children: eventNodes
557
+ }, resource.id);
558
+ });
559
+ const headerLabel = getWeekLabel({
560
+ weekdays,
561
+ locale: ctx.getLocale(locale),
562
+ weekLabelFormat,
563
+ renderWeekLabel
564
+ });
565
+ const indicatorLeftPercent = todayDayIndex >= 0 ? (todayDayIndex + timeIndicatorOffset / 100) / weekdays.length * 100 : 0;
566
+ const content = /* @__PURE__ */ jsxs(Box, {
567
+ ...getStyles("resourcesWeekView"),
568
+ mod: {
569
+ static: mode === "static",
570
+ "slot-dragging": slotDragSelect.isDragging,
571
+ resizing: eventResize.isResizing,
572
+ "event-interaction": eventResize.isResizing || dragDrop.dragContextValue.isDragging
573
+ },
574
+ ...others,
575
+ children: [withHeader && /* @__PURE__ */ jsx(ScheduleHeaderBase, {
576
+ view: "week",
577
+ navigationHandlers: {
578
+ previous: () => previousWeek(date, ctx.getFirstDayOfWeek(firstDayOfWeek)),
579
+ next: () => nextWeek(date, ctx.getFirstDayOfWeek(firstDayOfWeek)),
580
+ today: () => toDateString(dayjs())
581
+ },
582
+ control: {
583
+ miw: 180,
584
+ title: headerLabel
585
+ },
586
+ labels,
587
+ onDateChange,
588
+ onViewChange,
589
+ previousControlProps,
590
+ nextControlProps,
591
+ todayControlProps,
592
+ viewSelectProps: {
593
+ views: [
594
+ "day",
595
+ "week",
596
+ "month"
597
+ ],
598
+ ...viewSelectProps
599
+ },
600
+ stylesApiProps
601
+ }), /* @__PURE__ */ jsx(Box, {
602
+ ...getStyles("resourcesWeekViewRoot"),
603
+ children: /* @__PURE__ */ jsx(ScrollArea, {
604
+ scrollbarSize: 4,
605
+ ...scrollAreaProps,
606
+ ...getStyles("resourcesWeekViewScrollArea", {
607
+ className: scrollAreaProps?.className,
608
+ style: scrollAreaProps?.style
609
+ }),
610
+ onScrollPositionChange: (position) => {
611
+ scrollAreaProps?.onScrollPositionChange?.(position);
612
+ setScrolled(position.y !== 0);
613
+ setScrolledX(position.x !== 0);
614
+ },
615
+ viewportRef: mergedViewportRef,
616
+ children: /* @__PURE__ */ jsxs("div", {
617
+ ...getStyles("resourcesWeekViewInner"),
618
+ children: [
619
+ /* @__PURE__ */ jsxs("div", {
620
+ ...getStyles("resourcesWeekViewHeaderRows"),
621
+ children: [/* @__PURE__ */ createElement("div", {
622
+ ...getStyles("resourcesWeekViewCorner"),
623
+ key: "corner",
624
+ style: hasGroups ? {
625
+ flexBasis: "calc(var(--resources-week-view-resource-label-width) + var(--resources-week-view-group-label-width))",
626
+ minWidth: "calc(var(--resources-week-view-resource-label-width) + var(--resources-week-view-group-label-width))"
627
+ } : void 0
628
+ }, getLabel("resources", labels)), /* @__PURE__ */ jsxs("div", {
629
+ ...getStyles("resourcesWeekViewHeaderContent"),
630
+ children: [/* @__PURE__ */ jsx("div", {
631
+ ...getStyles("resourcesWeekViewDayLabelsRow"),
632
+ children: dayLabels
633
+ }), /* @__PURE__ */ jsx(Box, {
634
+ ...getStyles("resourcesWeekViewTimeLabelsRow"),
635
+ mod: { scrolled },
636
+ children: timeLabels
637
+ })]
638
+ })]
639
+ }),
640
+ rows,
641
+ showTimeIndicator && /* @__PURE__ */ jsxs(Box, {
642
+ ...getStyles("resourcesWeekViewCurrentTimeIndicator"),
643
+ __vars: {
644
+ "--indicator-left-offset": hasGroups ? `calc(var(--resources-week-view-resource-label-width) + var(--resources-week-view-group-label-width) + (100% - var(--resources-week-view-resource-label-width) - var(--resources-week-view-group-label-width)) * ${indicatorLeftPercent} / 100)` : `calc(var(--resources-week-view-resource-label-width) + (100% - var(--resources-week-view-resource-label-width)) * ${indicatorLeftPercent} / 100)`,
645
+ "--_time-bubble-width": formattedCurrentTime?.toString().toLowerCase().includes("m") ? "64px" : "46px"
646
+ },
647
+ children: [
648
+ withCurrentTimeBubble && /* @__PURE__ */ jsx("div", {
649
+ ...getStyles("resourcesWeekViewCurrentTimeIndicatorTimeBubble"),
650
+ children: formattedCurrentTime
651
+ }),
652
+ !withCurrentTimeBubble && /* @__PURE__ */ jsx("div", { ...getStyles("resourcesWeekViewCurrentTimeIndicatorThumb") }),
653
+ /* @__PURE__ */ jsx("div", { ...getStyles("resourcesWeekViewCurrentTimeIndicatorLine") })
654
+ ]
655
+ })
656
+ ]
657
+ })
658
+ })
659
+ })]
660
+ });
661
+ const dragContextValue = useMemo(() => dragDrop.dragContextValue, [dragDrop.dragContextValue]);
662
+ if (withEventsDragAndDrop) return /* @__PURE__ */ jsx(DragContext.Provider, {
663
+ value: dragContextValue,
664
+ children: content
665
+ });
666
+ return content;
667
+ });
668
+ ResourcesWeekView.displayName = "@mantine/schedule/ResourcesWeekView";
669
+ ResourcesWeekView.classes = ResourcesWeekView_module_default;
670
+ ResourcesWeekView.varsResolver = varsResolver;
671
+ //#endregion
672
+ export { ResourcesWeekView };
673
+
674
+ //# sourceMappingURL=ResourcesWeekView.mjs.map