@mantine/schedule 9.3.1 → 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 +128 -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 +129 -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 +1363 -10
  296. package/styles.layer.css +1364 -11
@@ -0,0 +1,106 @@
1
+ import { BoxProps, DataAttributes, ElementProps, Factory, MantineRadius, ScrollAreaProps, StylesApiProps } from '@mantine/core';
2
+ import { ScheduleLabelsOverride } from '../../labels';
3
+ import { DateLabelFormat, DateStringValue, DateTimeStringValue, DayOfWeek, ScheduleEventData, ScheduleMode, ScheduleResourceData, ScheduleResourceGroup, ScheduleViewLevel } from '../../types';
4
+ import { MoreEventsProps, MoreEventsStylesNames } from '../MoreEvents/MoreEvents';
5
+ import { RenderEvent, RenderEventBody } from '../ScheduleEvent/ScheduleEvent';
6
+ import { CombinedScheduleHeaderStylesNames } from '../ScheduleHeader/ScheduleHeader';
7
+ import { ViewSelectProps } from '../ScheduleHeader/ViewSelect/ViewSelect';
8
+ export type ResourcesWeekViewStylesNames = 'resourcesWeekView' | 'resourcesWeekViewRoot' | 'resourcesWeekViewInner' | 'resourcesWeekViewHeaderRows' | 'resourcesWeekViewHeaderContent' | 'resourcesWeekViewDayLabelsRow' | 'resourcesWeekViewDayLabel' | 'resourcesWeekViewTimeLabelsRow' | 'resourcesWeekViewScrollArea' | 'resourcesWeekViewCorner' | 'resourcesWeekViewTimeLabel' | 'resourcesWeekViewResourceLabel' | 'resourcesWeekViewRow' | 'resourcesWeekViewRowSlot' | 'resourcesWeekViewRowSlots' | 'resourcesWeekViewBackgroundEvent' | 'resourcesWeekViewAllDayEvent' | 'resourcesWeekViewCurrentTimeIndicator' | 'resourcesWeekViewCurrentTimeIndicatorLine' | 'resourcesWeekViewCurrentTimeIndicatorThumb' | 'resourcesWeekViewCurrentTimeIndicatorTimeBubble' | 'resourcesWeekViewEventWrapper' | 'resourcesWeekViewResizeHandle' | 'resourcesWeekViewGroupColumn' | 'resourcesWeekViewGroupColumnEmpty' | MoreEventsStylesNames | CombinedScheduleHeaderStylesNames;
9
+ export type ResourcesWeekViewCssVariables = {
10
+ resourcesWeekView: '--resources-week-view-radius' | '--resources-week-view-slot-width' | '--resources-week-view-row-height' | '--resources-week-view-group-label-width';
11
+ };
12
+ export interface ResourcesWeekViewProps extends BoxProps, StylesApiProps<ResourcesWeekViewFactory>, ElementProps<'div'> {
13
+ __staticSelector?: string;
14
+ date: Date | string;
15
+ onDateChange?: (value: DateStringValue) => void;
16
+ resources: ScheduleResourceData[];
17
+ startTime?: string;
18
+ endTime?: string;
19
+ intervalMinutes?: number;
20
+ slotLabelFormat?: DateLabelFormat;
21
+ radius?: MantineRadius;
22
+ /** Date and time to scroll to on initial render, in `YYYY-MM-DD HH:mm:ss` format */
23
+ startScrollDateTime?: string;
24
+ scrollAreaProps?: Partial<ScrollAreaProps> & DataAttributes;
25
+ locale?: string;
26
+ withCurrentTimeIndicator?: boolean;
27
+ withCurrentTimeBubble?: boolean;
28
+ withHeader?: boolean;
29
+ onViewChange?: (view: ScheduleViewLevel) => void;
30
+ previousControlProps?: React.ComponentProps<'button'> & DataAttributes;
31
+ nextControlProps?: React.ComponentProps<'button'> & DataAttributes;
32
+ todayControlProps?: React.ComponentProps<'button'> & DataAttributes;
33
+ viewSelectProps?: Partial<ViewSelectProps> & DataAttributes;
34
+ weekLabelFormat?: DateLabelFormat;
35
+ renderWeekLabel?: (params: {
36
+ weekStart: DateStringValue;
37
+ weekEnd: DateStringValue;
38
+ }) => React.ReactNode;
39
+ events?: ScheduleEventData[];
40
+ slotWidth?: React.CSSProperties['width'];
41
+ rowHeight?: React.CSSProperties['height'];
42
+ labels?: ScheduleLabelsOverride;
43
+ highlightBusinessHours?: boolean;
44
+ businessHours?: [string, string];
45
+ renderEventBody?: RenderEventBody;
46
+ renderEvent?: RenderEvent;
47
+ renderResourceLabel?: (resource: ScheduleResourceData) => React.ReactNode;
48
+ /** List of resource groups to display as a column to the left of resource labels */
49
+ groups?: ScheduleResourceGroup[];
50
+ /** Function to customize group label rendering */
51
+ renderGroupLabel?: (group: ScheduleResourceGroup) => React.ReactNode;
52
+ /** Width of the group label column @default 80px */
53
+ groupLabelWidth?: React.CSSProperties['width'];
54
+ withEventsDragAndDrop?: boolean;
55
+ onEventDrop?: (data: {
56
+ eventId: string | number;
57
+ newStart: DateTimeStringValue;
58
+ newEnd: DateTimeStringValue;
59
+ event: ScheduleEventData;
60
+ resourceId?: string | number;
61
+ }) => void;
62
+ canDragEvent?: (event: ScheduleEventData) => boolean;
63
+ onEventDragStart?: (event: ScheduleEventData) => void;
64
+ onEventDragEnd?: () => void;
65
+ onTimeSlotClick?: (data: {
66
+ slotStart: DateTimeStringValue;
67
+ slotEnd: DateTimeStringValue;
68
+ nativeEvent: React.MouseEvent<HTMLButtonElement>;
69
+ resourceId?: string | number;
70
+ }) => void;
71
+ onEventClick?: (event: ScheduleEventData, e: React.MouseEvent<HTMLButtonElement>) => void;
72
+ withDragSlotSelect?: boolean;
73
+ onSlotDragEnd?: (data: {
74
+ rangeStart: DateTimeStringValue;
75
+ rangeEnd: DateTimeStringValue;
76
+ resourceId?: string | number;
77
+ }) => void;
78
+ mode?: ScheduleMode;
79
+ onExternalEventDrop?: (data: {
80
+ dataTransfer: DataTransfer;
81
+ dropDateTime: DateTimeStringValue;
82
+ resourceId?: string | number;
83
+ }) => void;
84
+ recurrenceExpansionLimit?: number;
85
+ /** Maximum number of events visible per time slot before "+more" indicator shows, minimum value is 1 @default 2 */
86
+ maxEventsPerTimeSlot?: number;
87
+ /** Props passed down to `MoreEvents` component */
88
+ moreEventsProps?: Partial<MoreEventsProps>;
89
+ firstDayOfWeek?: DayOfWeek;
90
+ weekendDays?: DayOfWeek[];
91
+ withWeekendDays?: boolean;
92
+ weekdayFormat?: DateLabelFormat;
93
+ highlightToday?: boolean;
94
+ }
95
+ export type ResourcesWeekViewFactory = Factory<{
96
+ props: ResourcesWeekViewProps;
97
+ ref: HTMLDivElement;
98
+ stylesNames: ResourcesWeekViewStylesNames;
99
+ vars: ResourcesWeekViewCssVariables;
100
+ }>;
101
+ export declare const ResourcesWeekView: import("@mantine/core").MantineComponent<{
102
+ props: ResourcesWeekViewProps;
103
+ ref: HTMLDivElement;
104
+ stylesNames: ResourcesWeekViewStylesNames;
105
+ vars: ResourcesWeekViewCssVariables;
106
+ }>;
@@ -0,0 +1,39 @@
1
+ import { GetStylesApi } from '@mantine/core';
2
+ import { ScheduleLabelsOverride } from '../../labels';
3
+ import { ScheduleMode, ScheduleResourceData, ScheduleResourceGroup } from '../../types';
4
+ import { DayTimeInterval, ResourceGroupInfo, ResourcesGridControlsRef } from '../../utils';
5
+ import type { ResourcesWeekViewFactory } from './ResourcesWeekView';
6
+ export interface ResourcesWeekViewRowProps {
7
+ resource: ScheduleResourceData;
8
+ resourceIndex: number;
9
+ weekdays: string[];
10
+ slots: DayTimeInterval[];
11
+ getStyles: GetStylesApi<ResourcesWeekViewFactory>;
12
+ children?: React.ReactNode;
13
+ labels?: ScheduleLabelsOverride;
14
+ highlightBusinessHours?: boolean;
15
+ businessHours?: [string, string];
16
+ withEventsDragAndDrop?: boolean;
17
+ onRowSlotsDragOver?: (e: React.DragEvent<HTMLDivElement>, resourceId: string | number, resourceIndex: number) => void;
18
+ onRowSlotsDragLeave?: () => void;
19
+ onRowSlotsDrop?: (e: React.DragEvent<HTMLDivElement>, resourceId: string | number, resourceIndex: number) => void;
20
+ onSlotClick?: (resourceId: string | number, day: string, slotTime: string, event: React.MouseEvent<HTMLButtonElement>) => void;
21
+ dropTargetSlotIndex?: number;
22
+ mode?: ScheduleMode;
23
+ slotsRef?: ResourcesGridControlsRef;
24
+ firstSlotIndex?: {
25
+ resourceIndex: number;
26
+ slotIndex: number;
27
+ };
28
+ onSlotKeyDown?: (event: React.KeyboardEvent<HTMLButtonElement>, resourceIndex: number, slotIndex: number) => void;
29
+ withDragSlotSelect?: boolean;
30
+ onSlotPointerDown?: (event: React.PointerEvent<HTMLButtonElement>, index: number, group: string) => void;
31
+ isSlotDragSelected?: (index: number, group: string) => boolean;
32
+ rowSlotsContainerRef?: (node: HTMLDivElement | null) => void;
33
+ renderResourceLabel?: (resource: ScheduleResourceData) => React.ReactNode;
34
+ renderGroupLabel?: (group: ScheduleResourceGroup) => React.ReactNode;
35
+ scrolledX?: boolean;
36
+ groupInfo?: ResourceGroupInfo | null;
37
+ allDayCount?: number;
38
+ }
39
+ export declare function ResourcesWeekViewRow({ resource, resourceIndex, weekdays, slots, getStyles, children, labels, highlightBusinessHours, businessHours, withEventsDragAndDrop, onRowSlotsDragOver, onRowSlotsDragLeave, onRowSlotsDrop, onSlotClick, dropTargetSlotIndex, mode, slotsRef, firstSlotIndex, onSlotKeyDown, withDragSlotSelect, onSlotPointerDown, isSlotDragSelected, rowSlotsContainerRef, renderResourceLabel, renderGroupLabel, scrolledX, groupInfo, allDayCount, }: ResourcesWeekViewRowProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,29 @@
1
+ import { ScheduleEventData, ScheduleResourceData } from '../../../types';
2
+ import { ResourcesDayViewEventsResult } from '../../ResourcesDayView/get-resources-day-view-events/get-resources-day-view-events';
3
+ /** A single all-day bar (single-day all-day event or a multi-day event) spanning one or more
4
+ * consecutive visible weekdays, placed on a shared row so overlapping bars do not collide. */
5
+ export interface ResourcesWeekViewAllDayBar {
6
+ /** The original event, with its declared start/end preserved for display and interaction */
7
+ event: ScheduleEventData;
8
+ /** Index of the first visible weekday the bar covers */
9
+ startDayIndex: number;
10
+ /** Index of the last visible weekday the bar covers */
11
+ endDayIndex: number;
12
+ /** Row within the all-day band, assigned so overlapping bars stack instead of overlapping */
13
+ row: number;
14
+ }
15
+ export interface ResourcesWeekViewEventsResult {
16
+ byDay: Record<string, ResourcesDayViewEventsResult>;
17
+ /** All-day bars per resource, each spanning the days it covers as a single continuous bar */
18
+ allDayBars: Record<string | number, ResourcesWeekViewAllDayBar[]>;
19
+ }
20
+ interface GetResourcesWeekViewEventsInput {
21
+ events: ScheduleEventData[] | undefined;
22
+ resources: ScheduleResourceData[];
23
+ weekdays: string[];
24
+ startTime?: string;
25
+ endTime?: string;
26
+ expansionLimit?: number;
27
+ }
28
+ export declare function getResourcesWeekViewEvents({ events, resources, weekdays, startTime, endTime, expansionLimit, }: GetResourcesWeekViewEventsInput): ResourcesWeekViewEventsResult;
29
+ export {};
@@ -0,0 +1,3 @@
1
+ import type { ResourcesWeekViewCssVariables, ResourcesWeekViewFactory, ResourcesWeekViewProps, ResourcesWeekViewStylesNames } from './ResourcesWeekView';
2
+ export { ResourcesWeekView } from './ResourcesWeekView';
3
+ export type { ResourcesWeekViewProps, ResourcesWeekViewFactory, ResourcesWeekViewStylesNames, ResourcesWeekViewCssVariables, };
@@ -9,7 +9,7 @@ import { WeekViewProps, WeekViewStylesNames } from '../WeekView/WeekView';
9
9
  import { YearViewProps, YearViewStylesNames } from '../YearView/YearView';
10
10
  export type ScheduleStylesNames = 'root' | 'desktopView' | 'mobileView' | DayViewStylesNames | WeekViewStylesNames | MonthViewStylesNames | YearViewStylesNames | MobileMonthViewStylesNames;
11
11
  export type ScheduleLayout = 'default' | 'responsive';
12
- type ScheduleCommonProps = 'date' | 'onDateChange' | 'events' | 'locale' | 'radius' | 'labels' | 'renderEventBody' | 'withEventsDragAndDrop' | 'onEventDrop' | 'canDragEvent' | 'onEventDragStart' | 'onEventDragEnd' | 'onTimeSlotClick' | 'onAllDaySlotClick' | 'onEventClick' | 'onDayClick' | 'onMonthClick' | 'withDragSlotSelect' | 'onSlotDragEnd' | 'view' | 'onViewChange' | 'mode' | 'onExternalEventDrop' | 'withEventResize' | 'onEventResize' | 'canResizeEvent' | 'recurrenceExpansionLimit';
12
+ type ScheduleCommonProps = 'date' | 'onDateChange' | 'events' | 'locale' | 'radius' | 'labels' | 'renderEventBody' | 'withEventsDragAndDrop' | 'onEventDrop' | 'canDragEvent' | 'onEventDragStart' | 'onEventDragEnd' | 'onTimeSlotClick' | 'onAllDaySlotClick' | 'onEventClick' | 'onDayClick' | 'onMonthClick' | 'withDragSlotSelect' | 'onSlotDragEnd' | 'view' | 'onViewChange' | 'mode' | 'withAgenda' | 'onExternalEventDrop' | 'withEventResize' | 'onEventResize' | 'canResizeEvent' | 'recurrenceExpansionLimit';
13
13
  type ScheduleViewProps<T> = Partial<Omit<T, ScheduleCommonProps>>;
14
14
  export interface ScheduleProps extends BoxProps, StylesApiProps<ScheduleFactory>, ElementProps<'div'> {
15
15
  __staticSelector?: string;
@@ -101,6 +101,8 @@ export interface ScheduleProps extends BoxProps, StylesApiProps<ScheduleFactory>
101
101
  yearViewProps?: ScheduleViewProps<YearViewProps>;
102
102
  /** Props specific to MobileMonthView (used in responsive layout) */
103
103
  mobileMonthViewProps?: ScheduleViewProps<MobileMonthViewProps>;
104
+ /** If set, displays an Agenda button in the header of DayView, WeekView and MonthView @default false */
105
+ withAgenda?: boolean;
104
106
  }
105
107
  export type ScheduleFactory = Factory<{
106
108
  props: ScheduleProps;
@@ -48,6 +48,10 @@ export interface ScheduleHeaderBaseProps {
48
48
  viewSelectProps?: Partial<ViewSelectProps>;
49
49
  /** Styles API props to pass through */
50
50
  stylesApiProps?: StylesApiProps<any>;
51
+ /** Called when agenda button is clicked */
52
+ onAgendaClick?: () => void;
53
+ /** Whether the agenda view is currently active */
54
+ agendaActive?: boolean;
51
55
  }
52
- export declare function ScheduleHeaderBase({ view, navigationHandlers, control, labels, onDateChange, onViewChange, previousControlProps, nextControlProps, todayControlProps, viewSelectProps, stylesApiProps, }: ScheduleHeaderBaseProps): import("react/jsx-runtime").JSX.Element;
56
+ export declare function ScheduleHeaderBase({ view, navigationHandlers, control, labels, onDateChange, onViewChange, previousControlProps, nextControlProps, todayControlProps, viewSelectProps, stylesApiProps, onAgendaClick, agendaActive, }: ScheduleHeaderBaseProps): import("react/jsx-runtime").JSX.Element;
53
57
  export {};
@@ -2,11 +2,12 @@ import { BoxProps, DataAttributes, ElementProps, Factory, MantineRadius, ScrollA
2
2
  import { ScheduleLabelsOverride } from '../../labels';
3
3
  import { AnyDateValue, DateLabelFormat, DateStringValue, DateTimeStringValue, DayOfWeek, ScheduleEventData, ScheduleMode, ScheduleViewLevel } from '../../types';
4
4
  import { BusinessHoursValue } from '../../utils';
5
+ import { AgendaViewStylesNames } from '../AgendaView/AgendaView';
5
6
  import { CurrentTimeIndicatorStylesNames } from '../CurrentTimeIndicator/CurrentTimeIndicator';
6
7
  import { RenderEvent, RenderEventBody } from '../ScheduleEvent/ScheduleEvent';
7
8
  import { CombinedScheduleHeaderStylesNames } from '../ScheduleHeader/ScheduleHeader';
8
9
  import { ViewSelectProps } from '../ScheduleHeader/ViewSelect/ViewSelect';
9
- export type WeekViewStylesNames = 'weekView' | 'weekViewRoot' | 'weekViewHeader' | 'weekViewInner' | 'weekViewAllDaySlotsEvents' | 'weekViewAllDaySlots' | 'weekViewAllDaySlotsList' | 'weekViewAllDaySlot' | 'weekViewAllDaySlotsLabel' | 'weekViewScrollArea' | 'weekViewCorner' | 'weekViewSlotLabels' | 'weekViewSlotLabel' | 'weekViewDayLabel' | 'weekViewDayWeekday' | 'weekViewDay' | 'weekViewDayNumber' | 'weekViewDaySlot' | 'weekViewDaySlots' | 'weekViewWeekLabel' | 'weekViewWeekNumber' | 'weekViewBackgroundEvent' | CurrentTimeIndicatorStylesNames | CombinedScheduleHeaderStylesNames;
10
+ export type WeekViewStylesNames = 'weekView' | 'weekViewRoot' | 'weekViewHeader' | 'weekViewInner' | 'weekViewAllDaySlotsEvents' | 'weekViewAllDaySlots' | 'weekViewAllDaySlotsList' | 'weekViewAllDaySlot' | 'weekViewAllDaySlotsLabel' | 'weekViewScrollArea' | 'weekViewCorner' | 'weekViewSlotLabels' | 'weekViewSlotLabel' | 'weekViewDayLabel' | 'weekViewDayWeekday' | 'weekViewDay' | 'weekViewDayNumber' | 'weekViewDaySlot' | 'weekViewDaySlots' | 'weekViewWeekLabel' | 'weekViewWeekNumber' | 'weekViewBackgroundEvent' | CurrentTimeIndicatorStylesNames | CombinedScheduleHeaderStylesNames | AgendaViewStylesNames;
10
11
  export type WeekViewCssVariables = {
11
12
  weekView: '--week-view-radius' | '--week-view-slot-height' | '--week-view-all-day-slots-height';
12
13
  };
@@ -22,6 +23,8 @@ export interface WeekViewProps extends BoxProps, StylesApiProps<WeekViewFactory>
22
23
  endTime?: string;
23
24
  /** Number of minutes for each interval in the day view @default 60 */
24
25
  intervalMinutes?: number;
26
+ /** If set, grid lines are displayed for intervals smaller than one hour, for example 15 and 30 minutes intervals @default true */
27
+ withSubHourGridLines?: boolean;
25
28
  /** Dayjs format for slot labels or a callback function that returns formatted value @default HH:mm */
26
29
  slotLabelFormat?: DateLabelFormat;
27
30
  /** Number 0-6, where 0 – Sunday and 6 – Saturday. @default 1 – Monday */
@@ -140,6 +143,8 @@ export interface WeekViewProps extends BoxProps, StylesApiProps<WeekViewFactory>
140
143
  start: DateTimeStringValue;
141
144
  end: DateTimeStringValue;
142
145
  }) => Record<string, any> | undefined;
146
+ /** If set, displays an Agenda button in the header that opens an agenda list view @default false */
147
+ withAgenda?: boolean;
143
148
  }
144
149
  export type WeekViewFactory = Factory<{
145
150
  props: WeekViewProps;
@@ -11,6 +11,8 @@ export interface WeekViewDayProps {
11
11
  dayIndex: number;
12
12
  /** Slots intervals */
13
13
  slots: DayTimeInterval[];
14
+ /** Number of minutes for each interval, used to calculate slot height */
15
+ intervalMinutes: number;
14
16
  /** `useStyles` return value of `WeekView` */
15
17
  getStyles: GetStylesApi<WeekViewFactory>;
16
18
  /** Indices of weekend days, 0-6, where 0 is Sunday and 6 is Saturday. The default value is defined by `DatesProvider`. */
@@ -62,4 +64,4 @@ export interface WeekViewDayProps {
62
64
  end: DateTimeStringValue;
63
65
  }) => Record<string, any> | undefined;
64
66
  }
65
- export declare function WeekViewDay({ day, dayIndex, slots, getStyles, weekendDays, children, labels, highlightBusinessHours, businessHours, withEventsDragAndDrop, onDaySlotsDragOver, onDaySlotsDragLeave, onDaySlotsDrop, onSlotClick, dropTargetSlotIndex, mode, slotsRef, firstSlotIndex, onSlotKeyDown, onFirstSlotArrowUp, withDragSlotSelect, onSlotPointerDown, isSlotDragSelected, daySlotsContainerRef, getTimeSlotProps, }: WeekViewDayProps): import("react/jsx-runtime").JSX.Element;
67
+ export declare function WeekViewDay({ day, dayIndex, slots, intervalMinutes, getStyles, weekendDays, children, labels, highlightBusinessHours, businessHours, withEventsDragAndDrop, onDaySlotsDragOver, onDaySlotsDragLeave, onDaySlotsDrop, onSlotClick, dropTargetSlotIndex, mode, slotsRef, firstSlotIndex, onSlotKeyDown, onFirstSlotArrowUp, withDragSlotSelect, onSlotPointerDown, isSlotDragSelected, daySlotsContainerRef, getTimeSlotProps, }: WeekViewDayProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,37 @@
1
+ import { DateTimeStringValue, ScheduleEventData, ScheduleMode } from '../types';
2
+ type ResizeEdge = 'start' | 'end';
3
+ export interface UseHorizontalEventResizeInput {
4
+ enabled?: boolean;
5
+ mode?: ScheduleMode;
6
+ startTime: string;
7
+ endTime: string;
8
+ intervalMinutes: number;
9
+ onEventResize?: (data: {
10
+ eventId: string | number;
11
+ newStart: DateTimeStringValue;
12
+ newEnd: DateTimeStringValue;
13
+ event: ScheduleEventData;
14
+ }) => void;
15
+ canResizeEvent?: (event: ScheduleEventData) => boolean;
16
+ }
17
+ export declare function useHorizontalEventResize({ enabled, mode, startTime, endTime, intervalMinutes, onEventResize, canResizeEvent, }: UseHorizontalEventResizeInput): {
18
+ handleResizeStart: ({ event, edge, container, originalLeft, originalWidth, eventDate, pointerEvent, }: {
19
+ event: ScheduleEventData;
20
+ edge: ResizeEdge;
21
+ container: HTMLElement;
22
+ originalLeft: number;
23
+ originalWidth: number;
24
+ eventDate: string;
25
+ pointerEvent: React.PointerEvent;
26
+ }) => void;
27
+ isResizing: boolean;
28
+ resizingEventId: string | number | null;
29
+ resizingEdge: ResizeEdge | null;
30
+ getResizePosition: (eventId: string | number) => {
31
+ left: number;
32
+ width: number;
33
+ } | null;
34
+ isResizableEvent: (event: ScheduleEventData) => boolean;
35
+ wasResizing: () => boolean;
36
+ };
37
+ export {};
package/lib/index.d.mts CHANGED
@@ -7,6 +7,11 @@ export * from './components/DayView';
7
7
  export * from './components/WeekView';
8
8
  export * from './components/MonthView';
9
9
  export * from './components/YearView';
10
+ export * from './components/ResourcesDayView';
11
+ export * from './components/ResourcesWeekView';
12
+ export * from './components/ResourcesMonthView';
13
+ export * from './components/ResourcesSchedule';
14
+ export * from './components/AgendaView';
10
15
  export * from './components/ScheduleEvent';
11
16
  export * from './components/ScheduleHeader';
12
17
  export * from './components/CurrentTimeIndicator';
package/lib/index.d.ts CHANGED
@@ -7,6 +7,11 @@ export * from './components/DayView';
7
7
  export * from './components/WeekView';
8
8
  export * from './components/MonthView';
9
9
  export * from './components/YearView';
10
+ export * from './components/ResourcesDayView';
11
+ export * from './components/ResourcesWeekView';
12
+ export * from './components/ResourcesMonthView';
13
+ export * from './components/ResourcesSchedule';
14
+ export * from './components/AgendaView';
10
15
  export * from './components/ScheduleEvent';
11
16
  export * from './components/ScheduleHeader';
12
17
  export * from './components/CurrentTimeIndicator';
package/lib/labels.d.ts CHANGED
@@ -19,6 +19,10 @@ export interface ScheduleLabels {
19
19
  viewSelectLabel: string;
20
20
  noEvents: string;
21
21
  moreLabel: (hiddenEventsCount: number) => string;
22
+ resource?: string;
23
+ resources?: string;
24
+ resourceSlot?: string;
25
+ agenda?: string;
22
26
  }
23
27
  export declare const DEFAULT_SCHEDULE_LABELS: ScheduleLabels;
24
28
  export type ScheduleLabelsOverride = Partial<ScheduleLabels>;
package/lib/types.d.ts CHANGED
@@ -1,5 +1,23 @@
1
1
  import dayjs from 'dayjs';
2
2
  import { MantineColor } from '@mantine/core';
3
+ /** Resource data object passed to resource view components */
4
+ export interface ScheduleResourceData {
5
+ /** Unique resource identifier */
6
+ id: string | number;
7
+ /** Resource display label */
8
+ label: React.ReactNode;
9
+ /** Optional color for the resource */
10
+ color?: MantineColor;
11
+ /** Additional resource data, defined by the user, not used internally by the library */
12
+ payload?: Record<PropertyKey, any>;
13
+ }
14
+ /** Group definition for resource views, groups are displayed as a rowspan-style column */
15
+ export interface ScheduleResourceGroup {
16
+ /** Group display label */
17
+ label: React.ReactNode;
18
+ /** Resource IDs that belong to this group */
19
+ resourceIds: (string | number)[];
20
+ }
3
21
  /** Date value type used by internal package utils */
4
22
  export type AnyDateValue = DateStringValue | Date | dayjs.Dayjs;
5
23
  /** Date value used by all Mantine components, format: `YYYY-MM-DD` */
@@ -54,6 +72,8 @@ interface ScheduleEventBase<Payload extends EventPayload = EventPayload> {
54
72
  display?: 'default' | 'background';
55
73
  /** Additional event data, defined by the user, not used internally by the library */
56
74
  payload?: Payload;
75
+ /** Resource ID that this event belongs to, used by resource view components */
76
+ resourceId?: string | number;
57
77
  }
58
78
  /** One-off event without recurrence */
59
79
  export interface ScheduleSingleEventData<Payload extends EventPayload = EventPayload> extends ScheduleEventBase<Payload> {
@@ -0,0 +1,3 @@
1
+ import { ScheduleResourceData } from '../../types';
2
+ /** Builds a map from a stringified resource id to its original id value */
3
+ export declare function getGroupToResourceIdMap(resources: ScheduleResourceData[]): Map<string, string | number>;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Finds the index of the element whose horizontal bounds contain `clientX`.
3
+ * When `clientX` falls outside every element, it clamps to the first or last
4
+ * element; returns `null` when no element matches and the row is empty.
5
+ */
6
+ export declare function getIndexFromDragPoint(elements: (HTMLElement | null)[], clientX: number): number | null;
@@ -0,0 +1,17 @@
1
+ import { ScheduleResourceData, ScheduleResourceGroup } from '../../types';
2
+ export interface GroupRange {
3
+ group: ScheduleResourceGroup;
4
+ startIndex: number;
5
+ count: number;
6
+ }
7
+ export interface ResourceGroupInfo {
8
+ group: ScheduleResourceGroup;
9
+ position: 'first' | 'middle' | 'last' | 'only';
10
+ count: number;
11
+ }
12
+ export interface OrderedResourcesResult {
13
+ orderedResources: ScheduleResourceData[];
14
+ groupRanges: GroupRange[];
15
+ resourceGroupMap: (ResourceGroupInfo | null)[];
16
+ }
17
+ export declare function getOrderedResources(resources: ScheduleResourceData[], groups: ScheduleResourceGroup[] | undefined): OrderedResourcesResult;
@@ -0,0 +1,10 @@
1
+ import { RefObject } from 'react';
2
+ /** Reference to a 2D array of slot buttons: [resourceIndex][slotIndex] */
3
+ export type ResourcesGridControlsRef = RefObject<HTMLButtonElement[][]>;
4
+ export interface HandleResourcesGridKeyDownInput {
5
+ controlsRef: ResourcesGridControlsRef;
6
+ resourceIndex: number;
7
+ slotIndex: number;
8
+ event: React.KeyboardEvent<HTMLButtonElement>;
9
+ }
10
+ export declare function handleResourcesGridKeyDown({ controlsRef, resourceIndex, slotIndex, event, }: HandleResourcesGridKeyDownInput): void;
@@ -39,3 +39,9 @@ export type { ParsedTime } from './parse-time-string/parse-time-string';
39
39
  export type { CalculateDropTimeInput, CalculateDropTimeResult, } from './calculate-drop-time/calculate-drop-time';
40
40
  export type { CalculateMonthDropDateInput, CalculateMonthDropDateResult, } from './calculate-month-drop-date/calculate-month-drop-date';
41
41
  export type { BusinessHoursMod, BusinessHoursPerDay, BusinessHoursRange, BusinessHoursValue, GetBusinessHoursModInput, } from './get-business-hours-mod/get-business-hours-mod';
42
+ export { getOrderedResources } from './get-ordered-resources/get-ordered-resources';
43
+ export type { GroupRange, OrderedResourcesResult, ResourceGroupInfo, } from './get-ordered-resources/get-ordered-resources';
44
+ export { handleResourcesGridKeyDown } from './handle-resources-grid-key-down/handle-resources-grid-key-down';
45
+ export type { HandleResourcesGridKeyDownInput, ResourcesGridControlsRef, } from './handle-resources-grid-key-down/handle-resources-grid-key-down';
46
+ export { getGroupToResourceIdMap } from './get-group-to-resource-id-map/get-group-to-resource-id-map';
47
+ export { getIndexFromDragPoint } from './get-index-from-drag-point/get-index-from-drag-point';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mantine/schedule",
3
- "version": "9.3.1",
3
+ "version": "9.4.0",
4
4
  "description": "Schedule Mantine component",
5
5
  "homepage": "https://mantine.dev/",
6
6
  "license": "MIT",
@@ -35,9 +35,9 @@
35
35
  "directory": "packages/@mantine/schedule"
36
36
  },
37
37
  "peerDependencies": {
38
- "@mantine/core": "9.3.1",
39
- "@mantine/dates": "9.3.1",
40
- "@mantine/hooks": "9.3.1",
38
+ "@mantine/core": "9.4.0",
39
+ "@mantine/dates": "9.4.0",
40
+ "@mantine/hooks": "9.4.0",
41
41
  "react": "^19.2.0",
42
42
  "react-dom": "^19.2.0"
43
43
  },