@mantine/schedule 9.3.2 → 9.4.0

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