@mantine/schedule 9.0.0-alpha.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 (482) hide show
  1. package/README.md +21 -0
  2. package/cjs/components/CurrentTimeIndicator/CurrentTimeIndicator.cjs +107 -0
  3. package/cjs/components/CurrentTimeIndicator/CurrentTimeIndicator.cjs.map +1 -0
  4. package/cjs/components/CurrentTimeIndicator/CurrentTimeIndicator.module.css.cjs +7 -0
  5. package/cjs/components/CurrentTimeIndicator/CurrentTimeIndicator.module.css.cjs.map +1 -0
  6. package/cjs/components/DayView/DayView.cjs +404 -0
  7. package/cjs/components/DayView/DayView.cjs.map +1 -0
  8. package/cjs/components/DayView/DayView.module.css.cjs +7 -0
  9. package/cjs/components/DayView/DayView.module.css.cjs.map +1 -0
  10. package/cjs/components/DayView/get-day-view-events/get-day-positioned-events.cjs +108 -0
  11. package/cjs/components/DayView/get-day-view-events/get-day-positioned-events.cjs.map +1 -0
  12. package/cjs/components/DayView/get-day-view-events/get-day-view-events.cjs +52 -0
  13. package/cjs/components/DayView/get-day-view-events/get-day-view-events.cjs.map +1 -0
  14. package/cjs/components/DragContext/DragContext.cjs +9 -0
  15. package/cjs/components/DragContext/DragContext.cjs.map +1 -0
  16. package/cjs/components/MobileMonthView/MobileMonthView.cjs +295 -0
  17. package/cjs/components/MobileMonthView/MobileMonthView.cjs.map +1 -0
  18. package/cjs/components/MobileMonthView/MobileMonthView.module.css.cjs +7 -0
  19. package/cjs/components/MobileMonthView/MobileMonthView.module.css.cjs.map +1 -0
  20. package/cjs/components/MobileMonthView/get-mobile-month-view-events.cjs +54 -0
  21. package/cjs/components/MobileMonthView/get-mobile-month-view-events.cjs.map +1 -0
  22. package/cjs/components/MonthView/MonthView.cjs +410 -0
  23. package/cjs/components/MonthView/MonthView.cjs.map +1 -0
  24. package/cjs/components/MonthView/MonthView.module.css.cjs +7 -0
  25. package/cjs/components/MonthView/MonthView.module.css.cjs.map +1 -0
  26. package/cjs/components/MonthView/get-month-view-events/add-event-to-day-groups.cjs +26 -0
  27. package/cjs/components/MonthView/get-month-view-events/add-event-to-day-groups.cjs.map +1 -0
  28. package/cjs/components/MonthView/get-month-view-events/calculate-event-position-in-week.cjs +37 -0
  29. package/cjs/components/MonthView/get-month-view-events/calculate-event-position-in-week.cjs.map +1 -0
  30. package/cjs/components/MonthView/get-month-view-events/find-available-row.cjs +31 -0
  31. package/cjs/components/MonthView/get-month-view-events/find-available-row.cjs.map +1 -0
  32. package/cjs/components/MonthView/get-month-view-events/get-month-positioned-events.cjs +83 -0
  33. package/cjs/components/MonthView/get-month-view-events/get-month-positioned-events.cjs.map +1 -0
  34. package/cjs/components/MonthView/get-month-view-events/get-month-view-events.cjs +46 -0
  35. package/cjs/components/MonthView/get-month-view-events/get-month-view-events.cjs.map +1 -0
  36. package/cjs/components/MonthView/get-month-view-events/get-weeks-in-range.cjs +40 -0
  37. package/cjs/components/MonthView/get-month-view-events/get-weeks-in-range.cjs.map +1 -0
  38. package/cjs/components/MonthView/handle-month-view-key-down.cjs +147 -0
  39. package/cjs/components/MonthView/handle-month-view-key-down.cjs.map +1 -0
  40. package/cjs/components/MoreEvents/MoreEvents.cjs +124 -0
  41. package/cjs/components/MoreEvents/MoreEvents.cjs.map +1 -0
  42. package/cjs/components/MoreEvents/MoreEvents.module.css.cjs +7 -0
  43. package/cjs/components/MoreEvents/MoreEvents.module.css.cjs.map +1 -0
  44. package/cjs/components/Schedule/Schedule.cjs +168 -0
  45. package/cjs/components/Schedule/Schedule.cjs.map +1 -0
  46. package/cjs/components/Schedule/Schedule.module.css.cjs +7 -0
  47. package/cjs/components/Schedule/Schedule.module.css.cjs.map +1 -0
  48. package/cjs/components/ScheduleEvent/ScheduleEvent.cjs +126 -0
  49. package/cjs/components/ScheduleEvent/ScheduleEvent.cjs.map +1 -0
  50. package/cjs/components/ScheduleEvent/ScheduleEvent.module.css.cjs +7 -0
  51. package/cjs/components/ScheduleEvent/ScheduleEvent.module.css.cjs.map +1 -0
  52. package/cjs/components/ScheduleHeader/HeaderControl/HeaderControl.cjs +91 -0
  53. package/cjs/components/ScheduleHeader/HeaderControl/HeaderControl.cjs.map +1 -0
  54. package/cjs/components/ScheduleHeader/HeaderControl/HeaderControl.module.css.cjs +7 -0
  55. package/cjs/components/ScheduleHeader/HeaderControl/HeaderControl.module.css.cjs.map +1 -0
  56. package/cjs/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.cjs +195 -0
  57. package/cjs/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.cjs.map +1 -0
  58. package/cjs/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.module.css.cjs +7 -0
  59. package/cjs/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.module.css.cjs.map +1 -0
  60. package/cjs/components/ScheduleHeader/ScheduleHeader.cjs +59 -0
  61. package/cjs/components/ScheduleHeader/ScheduleHeader.cjs.map +1 -0
  62. package/cjs/components/ScheduleHeader/ScheduleHeader.module.css.cjs +7 -0
  63. package/cjs/components/ScheduleHeader/ScheduleHeader.module.css.cjs.map +1 -0
  64. package/cjs/components/ScheduleHeader/ScheduleHeaderBase.cjs +86 -0
  65. package/cjs/components/ScheduleHeader/ScheduleHeaderBase.cjs.map +1 -0
  66. package/cjs/components/ScheduleHeader/ViewSelect/ViewSelect.cjs +131 -0
  67. package/cjs/components/ScheduleHeader/ViewSelect/ViewSelect.cjs.map +1 -0
  68. package/cjs/components/ScheduleHeader/ViewSelect/ViewSelect.module.css.cjs +7 -0
  69. package/cjs/components/ScheduleHeader/ViewSelect/ViewSelect.module.css.cjs.map +1 -0
  70. package/cjs/components/WeekView/WeekView.cjs +557 -0
  71. package/cjs/components/WeekView/WeekView.cjs.map +1 -0
  72. package/cjs/components/WeekView/WeekView.module.css.cjs +7 -0
  73. package/cjs/components/WeekView/WeekView.module.css.cjs.map +1 -0
  74. package/cjs/components/WeekView/WeekViewDay.cjs +100 -0
  75. package/cjs/components/WeekView/WeekViewDay.cjs.map +1 -0
  76. package/cjs/components/WeekView/get-week-label/get-week-label.cjs +36 -0
  77. package/cjs/components/WeekView/get-week-label/get-week-label.cjs.map +1 -0
  78. package/cjs/components/WeekView/get-week-view-events/assign-event-rows.cjs +31 -0
  79. package/cjs/components/WeekView/get-week-view-events/assign-event-rows.cjs.map +1 -0
  80. package/cjs/components/WeekView/get-week-view-events/calculate-all-day-event-offset.cjs +31 -0
  81. package/cjs/components/WeekView/get-week-view-events/calculate-all-day-event-offset.cjs.map +1 -0
  82. package/cjs/components/WeekView/get-week-view-events/calculate-all-day-event-width.cjs +33 -0
  83. package/cjs/components/WeekView/get-week-view-events/calculate-all-day-event-width.cjs.map +1 -0
  84. package/cjs/components/WeekView/get-week-view-events/calculate-event-days.cjs +19 -0
  85. package/cjs/components/WeekView/get-week-view-events/calculate-event-days.cjs.map +1 -0
  86. package/cjs/components/WeekView/get-week-view-events/calculate-regular-event-overlaps.cjs +24 -0
  87. package/cjs/components/WeekView/get-week-view-events/calculate-regular-event-overlaps.cjs.map +1 -0
  88. package/cjs/components/WeekView/get-week-view-events/filter-week-view-events.cjs +36 -0
  89. package/cjs/components/WeekView/get-week-view-events/filter-week-view-events.cjs.map +1 -0
  90. package/cjs/components/WeekView/get-week-view-events/find-available-column.cjs +42 -0
  91. package/cjs/components/WeekView/get-week-view-events/find-available-column.cjs.map +1 -0
  92. package/cjs/components/WeekView/get-week-view-events/get-event-end-date.cjs +19 -0
  93. package/cjs/components/WeekView/get-week-view-events/get-event-end-date.cjs.map +1 -0
  94. package/cjs/components/WeekView/get-week-view-events/get-hanging-status.cjs +32 -0
  95. package/cjs/components/WeekView/get-week-view-events/get-hanging-status.cjs.map +1 -0
  96. package/cjs/components/WeekView/get-week-view-events/get-week-positioned-events.cjs +142 -0
  97. package/cjs/components/WeekView/get-week-view-events/get-week-positioned-events.cjs.map +1 -0
  98. package/cjs/components/WeekView/get-week-view-events/get-week-view-events.cjs +12 -0
  99. package/cjs/components/WeekView/get-week-view-events/get-week-view-events.cjs.map +1 -0
  100. package/cjs/components/WeekView/handle-week-view-key-down.cjs +135 -0
  101. package/cjs/components/WeekView/handle-week-view-key-down.cjs.map +1 -0
  102. package/cjs/components/YearView/YearView.cjs +216 -0
  103. package/cjs/components/YearView/YearView.cjs.map +1 -0
  104. package/cjs/components/YearView/YearView.module.css.cjs +7 -0
  105. package/cjs/components/YearView/YearView.module.css.cjs.map +1 -0
  106. package/cjs/components/YearView/YearViewMonth.cjs +158 -0
  107. package/cjs/components/YearView/YearViewMonth.cjs.map +1 -0
  108. package/cjs/components/YearView/get-year-view-events/get-year-view-events.cjs +52 -0
  109. package/cjs/components/YearView/get-year-view-events/get-year-view-events.cjs.map +1 -0
  110. package/cjs/components/YearView/handle-year-view-key-down.cjs +210 -0
  111. package/cjs/components/YearView/handle-year-view-key-down.cjs.map +1 -0
  112. package/cjs/hooks/use-drag-drop-handlers.cjs +107 -0
  113. package/cjs/hooks/use-drag-drop-handlers.cjs.map +1 -0
  114. package/cjs/hooks/use-drag-state.cjs +47 -0
  115. package/cjs/hooks/use-drag-state.cjs.map +1 -0
  116. package/cjs/hooks/use-slot-drag-select.cjs +91 -0
  117. package/cjs/hooks/use-slot-drag-select.cjs.map +1 -0
  118. package/cjs/index.cjs +101 -0
  119. package/cjs/index.cjs.map +1 -0
  120. package/cjs/labels.cjs +34 -0
  121. package/cjs/labels.cjs.map +1 -0
  122. package/cjs/utils/calculate-drop-time/calculate-drop-time.cjs +38 -0
  123. package/cjs/utils/calculate-drop-time/calculate-drop-time.cjs.map +1 -0
  124. package/cjs/utils/calculate-month-drop-date/calculate-month-drop-date.cjs +26 -0
  125. package/cjs/utils/calculate-month-drop-date/calculate-month-drop-date.cjs.map +1 -0
  126. package/cjs/utils/clamp-interval-minutes/clamp-interval-minutes.cjs +11 -0
  127. package/cjs/utils/clamp-interval-minutes/clamp-interval-minutes.cjs.map +1 -0
  128. package/cjs/utils/format-date/format-date.cjs +18 -0
  129. package/cjs/utils/format-date/format-date.cjs.map +1 -0
  130. package/cjs/utils/get-business-hours-mod/get-business-hours-mod.cjs +24 -0
  131. package/cjs/utils/get-business-hours-mod/get-business-hours-mod.cjs.map +1 -0
  132. package/cjs/utils/get-current-time-position/get-current-time-position.cjs +28 -0
  133. package/cjs/utils/get-current-time-position/get-current-time-position.cjs.map +1 -0
  134. package/cjs/utils/get-day-position/get-day-position.cjs +37 -0
  135. package/cjs/utils/get-day-position/get-day-position.cjs.map +1 -0
  136. package/cjs/utils/get-day-time-intervals/get-day-time-intervals.cjs +47 -0
  137. package/cjs/utils/get-day-time-intervals/get-day-time-intervals.cjs.map +1 -0
  138. package/cjs/utils/get-end-of-week/get-end-of-week.cjs +23 -0
  139. package/cjs/utils/get-end-of-week/get-end-of-week.cjs.map +1 -0
  140. package/cjs/utils/get-month-days/get-month-days.cjs +49 -0
  141. package/cjs/utils/get-month-days/get-month-days.cjs.map +1 -0
  142. package/cjs/utils/get-month-range/get-month-range.cjs +32 -0
  143. package/cjs/utils/get-month-range/get-month-range.cjs.map +1 -0
  144. package/cjs/utils/get-months-by-quarter/get-months-by-quarter.cjs +24 -0
  145. package/cjs/utils/get-months-by-quarter/get-months-by-quarter.cjs.map +1 -0
  146. package/cjs/utils/get-months-list/get-months-list.cjs +21 -0
  147. package/cjs/utils/get-months-list/get-months-list.cjs.map +1 -0
  148. package/cjs/utils/get-start-of-week/get-start-of-week.cjs +19 -0
  149. package/cjs/utils/get-start-of-week/get-start-of-week.cjs.map +1 -0
  150. package/cjs/utils/get-visible-events/get-visible-events.cjs +18 -0
  151. package/cjs/utils/get-visible-events/get-visible-events.cjs.map +1 -0
  152. package/cjs/utils/get-week-days/get-week-days.cjs +32 -0
  153. package/cjs/utils/get-week-days/get-week-days.cjs.map +1 -0
  154. package/cjs/utils/get-week-number/get-week-number.cjs +22 -0
  155. package/cjs/utils/get-week-number/get-week-number.cjs.map +1 -0
  156. package/cjs/utils/get-weekdays-names/get-weekdays-names.cjs +25 -0
  157. package/cjs/utils/get-weekdays-names/get-weekdays-names.cjs.map +1 -0
  158. package/cjs/utils/get-years-list/get-years-list.cjs +13 -0
  159. package/cjs/utils/get-years-list/get-years-list.cjs.map +1 -0
  160. package/cjs/utils/is-after-min-date/is-after-min-date.cjs +15 -0
  161. package/cjs/utils/is-after-min-date/is-after-min-date.cjs.map +1 -0
  162. package/cjs/utils/is-all-day-event/is-all-day-event.cjs +19 -0
  163. package/cjs/utils/is-all-day-event/is-all-day-event.cjs.map +1 -0
  164. package/cjs/utils/is-before-max-date/is-before-max-date.cjs +15 -0
  165. package/cjs/utils/is-before-max-date/is-before-max-date.cjs.map +1 -0
  166. package/cjs/utils/is-event-in-time-range/is-event-in-time-range.cjs +30 -0
  167. package/cjs/utils/is-event-in-time-range/is-event-in-time-range.cjs.map +1 -0
  168. package/cjs/utils/is-events-overlap/is-events-overlap.cjs +19 -0
  169. package/cjs/utils/is-events-overlap/is-events-overlap.cjs.map +1 -0
  170. package/cjs/utils/is-in-time-range/is-in-time-range.cjs +25 -0
  171. package/cjs/utils/is-in-time-range/is-in-time-range.cjs.map +1 -0
  172. package/cjs/utils/is-multiday-event/is-multiday-event.cjs +17 -0
  173. package/cjs/utils/is-multiday-event/is-multiday-event.cjs.map +1 -0
  174. package/cjs/utils/is-same-month/is-same-month.cjs +15 -0
  175. package/cjs/utils/is-same-month/is-same-month.cjs.map +1 -0
  176. package/cjs/utils/is-within-week/is-within-week.cjs +18 -0
  177. package/cjs/utils/is-within-week/is-within-week.cjs.map +1 -0
  178. package/cjs/utils/next-week/next-week.cjs +18 -0
  179. package/cjs/utils/next-week/next-week.cjs.map +1 -0
  180. package/cjs/utils/parse-time-string/parse-time-string.cjs +10 -0
  181. package/cjs/utils/parse-time-string/parse-time-string.cjs.map +1 -0
  182. package/cjs/utils/previous-week/previous-week.cjs +18 -0
  183. package/cjs/utils/previous-week/previous-week.cjs.map +1 -0
  184. package/cjs/utils/sort-events/sort-events.cjs +21 -0
  185. package/cjs/utils/sort-events/sort-events.cjs.map +1 -0
  186. package/cjs/utils/to-date-string/to-date-string.cjs +15 -0
  187. package/cjs/utils/to-date-string/to-date-string.cjs.map +1 -0
  188. package/cjs/utils/to-time-string/to-time-string.cjs +9 -0
  189. package/cjs/utils/to-time-string/to-time-string.cjs.map +1 -0
  190. package/cjs/utils/validate-event/validate-event.cjs +26 -0
  191. package/cjs/utils/validate-event/validate-event.cjs.map +1 -0
  192. package/esm/components/CurrentTimeIndicator/CurrentTimeIndicator.mjs +101 -0
  193. package/esm/components/CurrentTimeIndicator/CurrentTimeIndicator.mjs.map +1 -0
  194. package/esm/components/CurrentTimeIndicator/CurrentTimeIndicator.module.css.mjs +5 -0
  195. package/esm/components/CurrentTimeIndicator/CurrentTimeIndicator.module.css.mjs.map +1 -0
  196. package/esm/components/DayView/DayView.mjs +398 -0
  197. package/esm/components/DayView/DayView.mjs.map +1 -0
  198. package/esm/components/DayView/DayView.module.css.mjs +5 -0
  199. package/esm/components/DayView/DayView.module.css.mjs.map +1 -0
  200. package/esm/components/DayView/get-day-view-events/get-day-positioned-events.mjs +106 -0
  201. package/esm/components/DayView/get-day-view-events/get-day-positioned-events.mjs.map +1 -0
  202. package/esm/components/DayView/get-day-view-events/get-day-view-events.mjs +46 -0
  203. package/esm/components/DayView/get-day-view-events/get-day-view-events.mjs.map +1 -0
  204. package/esm/components/DragContext/DragContext.mjs +7 -0
  205. package/esm/components/DragContext/DragContext.mjs.map +1 -0
  206. package/esm/components/MobileMonthView/MobileMonthView.mjs +288 -0
  207. package/esm/components/MobileMonthView/MobileMonthView.mjs.map +1 -0
  208. package/esm/components/MobileMonthView/MobileMonthView.module.css.mjs +5 -0
  209. package/esm/components/MobileMonthView/MobileMonthView.module.css.mjs.map +1 -0
  210. package/esm/components/MobileMonthView/get-mobile-month-view-events.mjs +48 -0
  211. package/esm/components/MobileMonthView/get-mobile-month-view-events.mjs.map +1 -0
  212. package/esm/components/MonthView/MonthView.mjs +404 -0
  213. package/esm/components/MonthView/MonthView.mjs.map +1 -0
  214. package/esm/components/MonthView/MonthView.module.css.mjs +5 -0
  215. package/esm/components/MonthView/MonthView.module.css.mjs.map +1 -0
  216. package/esm/components/MonthView/get-month-view-events/add-event-to-day-groups.mjs +24 -0
  217. package/esm/components/MonthView/get-month-view-events/add-event-to-day-groups.mjs.map +1 -0
  218. package/esm/components/MonthView/get-month-view-events/calculate-event-position-in-week.mjs +35 -0
  219. package/esm/components/MonthView/get-month-view-events/calculate-event-position-in-week.mjs.map +1 -0
  220. package/esm/components/MonthView/get-month-view-events/find-available-row.mjs +25 -0
  221. package/esm/components/MonthView/get-month-view-events/find-available-row.mjs.map +1 -0
  222. package/esm/components/MonthView/get-month-view-events/get-month-positioned-events.mjs +77 -0
  223. package/esm/components/MonthView/get-month-view-events/get-month-positioned-events.mjs.map +1 -0
  224. package/esm/components/MonthView/get-month-view-events/get-month-view-events.mjs +40 -0
  225. package/esm/components/MonthView/get-month-view-events/get-month-view-events.mjs.map +1 -0
  226. package/esm/components/MonthView/get-month-view-events/get-weeks-in-range.mjs +34 -0
  227. package/esm/components/MonthView/get-month-view-events/get-weeks-in-range.mjs.map +1 -0
  228. package/esm/components/MonthView/handle-month-view-key-down.mjs +145 -0
  229. package/esm/components/MonthView/handle-month-view-key-down.mjs.map +1 -0
  230. package/esm/components/MoreEvents/MoreEvents.mjs +122 -0
  231. package/esm/components/MoreEvents/MoreEvents.mjs.map +1 -0
  232. package/esm/components/MoreEvents/MoreEvents.module.css.mjs +5 -0
  233. package/esm/components/MoreEvents/MoreEvents.module.css.mjs.map +1 -0
  234. package/esm/components/Schedule/Schedule.mjs +166 -0
  235. package/esm/components/Schedule/Schedule.mjs.map +1 -0
  236. package/esm/components/Schedule/Schedule.module.css.mjs +5 -0
  237. package/esm/components/Schedule/Schedule.module.css.mjs.map +1 -0
  238. package/esm/components/ScheduleEvent/ScheduleEvent.mjs +124 -0
  239. package/esm/components/ScheduleEvent/ScheduleEvent.mjs.map +1 -0
  240. package/esm/components/ScheduleEvent/ScheduleEvent.module.css.mjs +5 -0
  241. package/esm/components/ScheduleEvent/ScheduleEvent.module.css.mjs.map +1 -0
  242. package/esm/components/ScheduleHeader/HeaderControl/HeaderControl.mjs +86 -0
  243. package/esm/components/ScheduleHeader/HeaderControl/HeaderControl.mjs.map +1 -0
  244. package/esm/components/ScheduleHeader/HeaderControl/HeaderControl.module.css.mjs +5 -0
  245. package/esm/components/ScheduleHeader/HeaderControl/HeaderControl.module.css.mjs.map +1 -0
  246. package/esm/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.mjs +193 -0
  247. package/esm/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.mjs.map +1 -0
  248. package/esm/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.module.css.mjs +5 -0
  249. package/esm/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.module.css.mjs.map +1 -0
  250. package/esm/components/ScheduleHeader/ScheduleHeader.mjs +57 -0
  251. package/esm/components/ScheduleHeader/ScheduleHeader.mjs.map +1 -0
  252. package/esm/components/ScheduleHeader/ScheduleHeader.module.css.mjs +5 -0
  253. package/esm/components/ScheduleHeader/ScheduleHeader.module.css.mjs.map +1 -0
  254. package/esm/components/ScheduleHeader/ScheduleHeaderBase.mjs +84 -0
  255. package/esm/components/ScheduleHeader/ScheduleHeaderBase.mjs.map +1 -0
  256. package/esm/components/ScheduleHeader/ViewSelect/ViewSelect.mjs +129 -0
  257. package/esm/components/ScheduleHeader/ViewSelect/ViewSelect.mjs.map +1 -0
  258. package/esm/components/ScheduleHeader/ViewSelect/ViewSelect.module.css.mjs +5 -0
  259. package/esm/components/ScheduleHeader/ViewSelect/ViewSelect.module.css.mjs.map +1 -0
  260. package/esm/components/WeekView/WeekView.mjs +551 -0
  261. package/esm/components/WeekView/WeekView.mjs.map +1 -0
  262. package/esm/components/WeekView/WeekView.module.css.mjs +5 -0
  263. package/esm/components/WeekView/WeekView.module.css.mjs.map +1 -0
  264. package/esm/components/WeekView/WeekViewDay.mjs +94 -0
  265. package/esm/components/WeekView/WeekViewDay.mjs.map +1 -0
  266. package/esm/components/WeekView/get-week-label/get-week-label.mjs +30 -0
  267. package/esm/components/WeekView/get-week-label/get-week-label.mjs.map +1 -0
  268. package/esm/components/WeekView/get-week-view-events/assign-event-rows.mjs +29 -0
  269. package/esm/components/WeekView/get-week-view-events/assign-event-rows.mjs.map +1 -0
  270. package/esm/components/WeekView/get-week-view-events/calculate-all-day-event-offset.mjs +25 -0
  271. package/esm/components/WeekView/get-week-view-events/calculate-all-day-event-offset.mjs.map +1 -0
  272. package/esm/components/WeekView/get-week-view-events/calculate-all-day-event-width.mjs +27 -0
  273. package/esm/components/WeekView/get-week-view-events/calculate-all-day-event-width.mjs.map +1 -0
  274. package/esm/components/WeekView/get-week-view-events/calculate-event-days.mjs +13 -0
  275. package/esm/components/WeekView/get-week-view-events/calculate-event-days.mjs.map +1 -0
  276. package/esm/components/WeekView/get-week-view-events/calculate-regular-event-overlaps.mjs +22 -0
  277. package/esm/components/WeekView/get-week-view-events/calculate-regular-event-overlaps.mjs.map +1 -0
  278. package/esm/components/WeekView/get-week-view-events/filter-week-view-events.mjs +34 -0
  279. package/esm/components/WeekView/get-week-view-events/filter-week-view-events.mjs.map +1 -0
  280. package/esm/components/WeekView/get-week-view-events/find-available-column.mjs +40 -0
  281. package/esm/components/WeekView/get-week-view-events/find-available-column.mjs.map +1 -0
  282. package/esm/components/WeekView/get-week-view-events/get-event-end-date.mjs +13 -0
  283. package/esm/components/WeekView/get-week-view-events/get-event-end-date.mjs.map +1 -0
  284. package/esm/components/WeekView/get-week-view-events/get-hanging-status.mjs +26 -0
  285. package/esm/components/WeekView/get-week-view-events/get-hanging-status.mjs.map +1 -0
  286. package/esm/components/WeekView/get-week-view-events/get-week-positioned-events.mjs +136 -0
  287. package/esm/components/WeekView/get-week-view-events/get-week-positioned-events.mjs.map +1 -0
  288. package/esm/components/WeekView/get-week-view-events/get-week-view-events.mjs +10 -0
  289. package/esm/components/WeekView/get-week-view-events/get-week-view-events.mjs.map +1 -0
  290. package/esm/components/WeekView/handle-week-view-key-down.mjs +133 -0
  291. package/esm/components/WeekView/handle-week-view-key-down.mjs.map +1 -0
  292. package/esm/components/YearView/YearView.mjs +210 -0
  293. package/esm/components/YearView/YearView.mjs.map +1 -0
  294. package/esm/components/YearView/YearView.module.css.mjs +5 -0
  295. package/esm/components/YearView/YearView.module.css.mjs.map +1 -0
  296. package/esm/components/YearView/YearViewMonth.mjs +152 -0
  297. package/esm/components/YearView/YearViewMonth.mjs.map +1 -0
  298. package/esm/components/YearView/get-year-view-events/get-year-view-events.mjs +46 -0
  299. package/esm/components/YearView/get-year-view-events/get-year-view-events.mjs.map +1 -0
  300. package/esm/components/YearView/handle-year-view-key-down.mjs +208 -0
  301. package/esm/components/YearView/handle-year-view-key-down.mjs.map +1 -0
  302. package/esm/hooks/use-drag-drop-handlers.mjs +101 -0
  303. package/esm/hooks/use-drag-drop-handlers.mjs.map +1 -0
  304. package/esm/hooks/use-drag-state.mjs +45 -0
  305. package/esm/hooks/use-drag-state.mjs.map +1 -0
  306. package/esm/hooks/use-slot-drag-select.mjs +89 -0
  307. package/esm/hooks/use-slot-drag-select.mjs.map +1 -0
  308. package/esm/index.mjs +48 -0
  309. package/esm/index.mjs.map +1 -0
  310. package/esm/labels.mjs +31 -0
  311. package/esm/labels.mjs.map +1 -0
  312. package/esm/utils/calculate-drop-time/calculate-drop-time.mjs +32 -0
  313. package/esm/utils/calculate-drop-time/calculate-drop-time.mjs.map +1 -0
  314. package/esm/utils/calculate-month-drop-date/calculate-month-drop-date.mjs +20 -0
  315. package/esm/utils/calculate-month-drop-date/calculate-month-drop-date.mjs.map +1 -0
  316. package/esm/utils/clamp-interval-minutes/clamp-interval-minutes.mjs +9 -0
  317. package/esm/utils/clamp-interval-minutes/clamp-interval-minutes.mjs.map +1 -0
  318. package/esm/utils/format-date/format-date.mjs +12 -0
  319. package/esm/utils/format-date/format-date.mjs.map +1 -0
  320. package/esm/utils/get-business-hours-mod/get-business-hours-mod.mjs +22 -0
  321. package/esm/utils/get-business-hours-mod/get-business-hours-mod.mjs.map +1 -0
  322. package/esm/utils/get-current-time-position/get-current-time-position.mjs +22 -0
  323. package/esm/utils/get-current-time-position/get-current-time-position.mjs.map +1 -0
  324. package/esm/utils/get-day-position/get-day-position.mjs +31 -0
  325. package/esm/utils/get-day-position/get-day-position.mjs.map +1 -0
  326. package/esm/utils/get-day-time-intervals/get-day-time-intervals.mjs +45 -0
  327. package/esm/utils/get-day-time-intervals/get-day-time-intervals.mjs.map +1 -0
  328. package/esm/utils/get-end-of-week/get-end-of-week.mjs +17 -0
  329. package/esm/utils/get-end-of-week/get-end-of-week.mjs.map +1 -0
  330. package/esm/utils/get-month-days/get-month-days.mjs +43 -0
  331. package/esm/utils/get-month-days/get-month-days.mjs.map +1 -0
  332. package/esm/utils/get-month-range/get-month-range.mjs +26 -0
  333. package/esm/utils/get-month-range/get-month-range.mjs.map +1 -0
  334. package/esm/utils/get-months-by-quarter/get-months-by-quarter.mjs +18 -0
  335. package/esm/utils/get-months-by-quarter/get-months-by-quarter.mjs.map +1 -0
  336. package/esm/utils/get-months-list/get-months-list.mjs +15 -0
  337. package/esm/utils/get-months-list/get-months-list.mjs.map +1 -0
  338. package/esm/utils/get-start-of-week/get-start-of-week.mjs +13 -0
  339. package/esm/utils/get-start-of-week/get-start-of-week.mjs.map +1 -0
  340. package/esm/utils/get-visible-events/get-visible-events.mjs +16 -0
  341. package/esm/utils/get-visible-events/get-visible-events.mjs.map +1 -0
  342. package/esm/utils/get-week-days/get-week-days.mjs +26 -0
  343. package/esm/utils/get-week-days/get-week-days.mjs.map +1 -0
  344. package/esm/utils/get-week-number/get-week-number.mjs +15 -0
  345. package/esm/utils/get-week-number/get-week-number.mjs.map +1 -0
  346. package/esm/utils/get-weekdays-names/get-weekdays-names.mjs +19 -0
  347. package/esm/utils/get-weekdays-names/get-weekdays-names.mjs.map +1 -0
  348. package/esm/utils/get-years-list/get-years-list.mjs +11 -0
  349. package/esm/utils/get-years-list/get-years-list.mjs.map +1 -0
  350. package/esm/utils/is-after-min-date/is-after-min-date.mjs +9 -0
  351. package/esm/utils/is-after-min-date/is-after-min-date.mjs.map +1 -0
  352. package/esm/utils/is-all-day-event/is-all-day-event.mjs +13 -0
  353. package/esm/utils/is-all-day-event/is-all-day-event.mjs.map +1 -0
  354. package/esm/utils/is-before-max-date/is-before-max-date.mjs +9 -0
  355. package/esm/utils/is-before-max-date/is-before-max-date.mjs.map +1 -0
  356. package/esm/utils/is-event-in-time-range/is-event-in-time-range.mjs +24 -0
  357. package/esm/utils/is-event-in-time-range/is-event-in-time-range.mjs.map +1 -0
  358. package/esm/utils/is-events-overlap/is-events-overlap.mjs +13 -0
  359. package/esm/utils/is-events-overlap/is-events-overlap.mjs.map +1 -0
  360. package/esm/utils/is-in-time-range/is-in-time-range.mjs +19 -0
  361. package/esm/utils/is-in-time-range/is-in-time-range.mjs.map +1 -0
  362. package/esm/utils/is-multiday-event/is-multiday-event.mjs +11 -0
  363. package/esm/utils/is-multiday-event/is-multiday-event.mjs.map +1 -0
  364. package/esm/utils/is-same-month/is-same-month.mjs +9 -0
  365. package/esm/utils/is-same-month/is-same-month.mjs.map +1 -0
  366. package/esm/utils/is-within-week/is-within-week.mjs +12 -0
  367. package/esm/utils/is-within-week/is-within-week.mjs.map +1 -0
  368. package/esm/utils/next-week/next-week.mjs +12 -0
  369. package/esm/utils/next-week/next-week.mjs.map +1 -0
  370. package/esm/utils/parse-time-string/parse-time-string.mjs +8 -0
  371. package/esm/utils/parse-time-string/parse-time-string.mjs.map +1 -0
  372. package/esm/utils/previous-week/previous-week.mjs +12 -0
  373. package/esm/utils/previous-week/previous-week.mjs.map +1 -0
  374. package/esm/utils/sort-events/sort-events.mjs +15 -0
  375. package/esm/utils/sort-events/sort-events.mjs.map +1 -0
  376. package/esm/utils/to-date-string/to-date-string.mjs +9 -0
  377. package/esm/utils/to-date-string/to-date-string.mjs.map +1 -0
  378. package/esm/utils/to-time-string/to-time-string.mjs +7 -0
  379. package/esm/utils/to-time-string/to-time-string.mjs.map +1 -0
  380. package/esm/utils/validate-event/validate-event.mjs +20 -0
  381. package/esm/utils/validate-event/validate-event.mjs.map +1 -0
  382. package/lib/components/CurrentTimeIndicator/CurrentTimeIndicator.d.ts +43 -0
  383. package/lib/components/CurrentTimeIndicator/index.d.ts +2 -0
  384. package/lib/components/DayView/DayView.d.ts +106 -0
  385. package/lib/components/DayView/get-day-view-events/get-day-positioned-events.d.ts +13 -0
  386. package/lib/components/DayView/get-day-view-events/get-day-view-events.d.ts +12 -0
  387. package/lib/components/DayView/index.d.ts +9 -0
  388. package/lib/components/DragContext/DragContext.d.ts +18 -0
  389. package/lib/components/DragContext/index.d.ts +2 -0
  390. package/lib/components/MobileMonthView/MobileMonthView.d.ts +94 -0
  391. package/lib/components/MobileMonthView/get-mobile-month-view-events.d.ts +8 -0
  392. package/lib/components/MobileMonthView/index.d.ts +2 -0
  393. package/lib/components/MonthView/MonthView.d.ts +103 -0
  394. package/lib/components/MonthView/get-month-view-events/add-event-to-day-groups.d.ts +14 -0
  395. package/lib/components/MonthView/get-month-view-events/calculate-event-position-in-week.d.ts +18 -0
  396. package/lib/components/MonthView/get-month-view-events/find-available-row.d.ts +10 -0
  397. package/lib/components/MonthView/get-month-view-events/get-month-positioned-events.d.ts +27 -0
  398. package/lib/components/MonthView/get-month-view-events/get-month-view-events.d.ts +16 -0
  399. package/lib/components/MonthView/get-month-view-events/get-weeks-in-range.d.ts +15 -0
  400. package/lib/components/MonthView/handle-month-view-key-down.d.ts +10 -0
  401. package/lib/components/MonthView/index.d.ts +9 -0
  402. package/lib/components/MoreEvents/MoreEvents.d.ts +40 -0
  403. package/lib/components/MoreEvents/index.d.ts +2 -0
  404. package/lib/components/Schedule/Schedule.d.ts +97 -0
  405. package/lib/components/Schedule/index.d.ts +2 -0
  406. package/lib/components/ScheduleEvent/ScheduleEvent.d.ts +54 -0
  407. package/lib/components/ScheduleEvent/index.d.ts +2 -0
  408. package/lib/components/ScheduleHeader/HeaderControl/HeaderControl.d.ts +43 -0
  409. package/lib/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.d.ts +52 -0
  410. package/lib/components/ScheduleHeader/ScheduleHeader.d.ts +40 -0
  411. package/lib/components/ScheduleHeader/ScheduleHeaderBase.d.ts +53 -0
  412. package/lib/components/ScheduleHeader/ViewSelect/ViewSelect.d.ts +27 -0
  413. package/lib/components/ScheduleHeader/index.d.ts +2 -0
  414. package/lib/components/WeekView/WeekView.d.ts +119 -0
  415. package/lib/components/WeekView/WeekViewDay.d.ts +58 -0
  416. package/lib/components/WeekView/get-week-label/get-week-label.d.ts +13 -0
  417. package/lib/components/WeekView/get-week-view-events/assign-event-rows.d.ts +2 -0
  418. package/lib/components/WeekView/get-week-view-events/calculate-all-day-event-offset.d.ts +11 -0
  419. package/lib/components/WeekView/get-week-view-events/calculate-all-day-event-width.d.ts +12 -0
  420. package/lib/components/WeekView/get-week-view-events/calculate-event-days.d.ts +9 -0
  421. package/lib/components/WeekView/get-week-view-events/calculate-regular-event-overlaps.d.ts +2 -0
  422. package/lib/components/WeekView/get-week-view-events/filter-week-view-events.d.ts +14 -0
  423. package/lib/components/WeekView/get-week-view-events/find-available-column.d.ts +9 -0
  424. package/lib/components/WeekView/get-week-view-events/get-event-end-date.d.ts +3 -0
  425. package/lib/components/WeekView/get-week-view-events/get-hanging-status.d.ts +9 -0
  426. package/lib/components/WeekView/get-week-view-events/get-week-positioned-events.d.ts +23 -0
  427. package/lib/components/WeekView/get-week-view-events/get-week-view-events.d.ts +7 -0
  428. package/lib/components/WeekView/handle-week-view-key-down.d.ts +10 -0
  429. package/lib/components/WeekView/index.d.ts +9 -0
  430. package/lib/components/YearView/YearView.d.ts +51 -0
  431. package/lib/components/YearView/YearViewMonth.d.ts +62 -0
  432. package/lib/components/YearView/get-year-view-events/get-year-view-events.d.ts +8 -0
  433. package/lib/components/YearView/handle-year-view-key-down.d.ts +11 -0
  434. package/lib/components/YearView/index.d.ts +9 -0
  435. package/lib/hooks/index.d.ts +5 -0
  436. package/lib/hooks/use-drag-drop-handlers.d.ts +51 -0
  437. package/lib/hooks/use-drag-state.d.ts +32 -0
  438. package/lib/hooks/use-slot-drag-select.d.ts +10 -0
  439. package/lib/index.d.mts +15 -0
  440. package/lib/index.d.ts +15 -0
  441. package/lib/labels.d.ts +24 -0
  442. package/lib/test-utils.d.ts +7 -0
  443. package/lib/types.d.ts +91 -0
  444. package/lib/utils/calculate-drop-time/calculate-drop-time.d.ts +22 -0
  445. package/lib/utils/calculate-month-drop-date/calculate-month-drop-date.d.ts +14 -0
  446. package/lib/utils/clamp-interval-minutes/clamp-interval-minutes.d.ts +2 -0
  447. package/lib/utils/format-date/format-date.d.ts +8 -0
  448. package/lib/utils/get-business-hours-mod/get-business-hours-mod.d.ts +17 -0
  449. package/lib/utils/get-current-time-position/get-current-time-position.d.ts +6 -0
  450. package/lib/utils/get-day-position/get-day-position.d.ts +15 -0
  451. package/lib/utils/get-day-time-intervals/get-day-time-intervals.d.ts +19 -0
  452. package/lib/utils/get-end-of-week/get-end-of-week.d.ts +3 -0
  453. package/lib/utils/get-month-days/get-month-days.d.ts +8 -0
  454. package/lib/utils/get-month-range/get-month-range.d.ts +13 -0
  455. package/lib/utils/get-months-by-quarter/get-months-by-quarter.d.ts +2 -0
  456. package/lib/utils/get-months-list/get-months-list.d.ts +11 -0
  457. package/lib/utils/get-start-of-week/get-start-of-week.d.ts +7 -0
  458. package/lib/utils/get-visible-events/get-visible-events.d.ts +9 -0
  459. package/lib/utils/get-week-days/get-week-days.d.ts +13 -0
  460. package/lib/utils/get-week-number/get-week-number.d.ts +2 -0
  461. package/lib/utils/get-weekdays-names/get-weekdays-names.d.ts +8 -0
  462. package/lib/utils/get-years-list/get-years-list.d.ts +6 -0
  463. package/lib/utils/index.d.ts +40 -0
  464. package/lib/utils/is-after-min-date/is-after-min-date.d.ts +2 -0
  465. package/lib/utils/is-all-day-event/is-all-day-event.d.ts +7 -0
  466. package/lib/utils/is-before-max-date/is-before-max-date.d.ts +2 -0
  467. package/lib/utils/is-event-in-time-range/is-event-in-time-range.d.ts +8 -0
  468. package/lib/utils/is-events-overlap/is-events-overlap.d.ts +3 -0
  469. package/lib/utils/is-in-time-range/is-in-time-range.d.ts +9 -0
  470. package/lib/utils/is-multiday-event/is-multiday-event.d.ts +2 -0
  471. package/lib/utils/is-same-month/is-same-month.d.ts +2 -0
  472. package/lib/utils/is-within-week/is-within-week.d.ts +8 -0
  473. package/lib/utils/next-week/next-week.d.ts +2 -0
  474. package/lib/utils/parse-time-string/parse-time-string.d.ts +6 -0
  475. package/lib/utils/previous-week/previous-week.d.ts +2 -0
  476. package/lib/utils/sort-events/sort-events.d.ts +3 -0
  477. package/lib/utils/to-date-string/to-date-string.d.ts +2 -0
  478. package/lib/utils/to-time-string/to-time-string.d.ts +2 -0
  479. package/lib/utils/validate-event/validate-event.d.ts +2 -0
  480. package/package.json +50 -0
  481. package/styles.css +1948 -0
  482. package/styles.layer.css +1949 -0
@@ -0,0 +1,52 @@
1
+ import { BoxProps, DataAttributes, ElementProps, Factory, MantineRadius, PopoverProps, StylesApiProps } from '@mantine/core';
2
+ import { ScheduleLabelsOverride } from '../../../labels';
3
+ import { DateLabelFormat } from '../../../types';
4
+ export type MonthYearSelectStylesNames = 'monthYearSelectTarget' | 'monthYearSelectDropdown' | 'monthYearSelectControl' | 'monthYearSelectList' | 'monthYearSelectLabel';
5
+ export type MonthYearSelectCssVariables = {
6
+ monthYearSelectDropdown: '--control-radius';
7
+ };
8
+ export interface MonthYearSelectProps extends BoxProps, StylesApiProps<MonthYearSelectFactory>, ElementProps<'button'> {
9
+ __staticSelector?: string;
10
+ /** Locale passed down to dayjs, overrides value defined on `DatesProvider` */
11
+ locale?: string;
12
+ /** Props passed down to the underlying Popover component */
13
+ popoverProps?: PopoverProps;
14
+ /** Start year for year selection, calculated from the current date by default */
15
+ startYear?: number;
16
+ /** End year for year selection, calculated from the current date by default */
17
+ endYear?: number;
18
+ /** Current year value (e.g. `2025`) */
19
+ yearValue?: number;
20
+ /** Current month value (0-11) */
21
+ monthValue?: number;
22
+ /** Called with year value (e.g. `2025`) when year is selected in the dropdown */
23
+ onYearChange?: (year: number) => void;
24
+ /** Called with month value (0-11) when month is selected in the dropdown */
25
+ onMonthChange?: (month: number) => void;
26
+ /** Format for displaying months in the dropdown, dayjs format or custom formatter function @default 'MMM' */
27
+ monthsListFormat?: DateLabelFormat;
28
+ /** Format for displaying month label in the control, dayjs format @default 'MMMM YYYY' */
29
+ labelFormat?: DateLabelFormat;
30
+ /** Key of `theme.radius` or any valid CSS value to set `border-radius` @default theme.defaultRadius */
31
+ radius?: MantineRadius;
32
+ /** Props passed down to year controls */
33
+ getYearControlProps?: (year: number) => React.ComponentProps<'button'> & DataAttributes;
34
+ /** Props passed down to month controls */
35
+ getMonthControlProps?: (month: number) => React.ComponentProps<'button'> & DataAttributes;
36
+ /** If set to false, months are not displayed in the dropdown @default true */
37
+ withMonths?: boolean;
38
+ /** Labels override */
39
+ labels?: ScheduleLabelsOverride;
40
+ }
41
+ export type MonthYearSelectFactory = Factory<{
42
+ props: MonthYearSelectProps;
43
+ ref: HTMLButtonElement;
44
+ stylesNames: MonthYearSelectStylesNames;
45
+ vars: MonthYearSelectCssVariables;
46
+ }>;
47
+ export declare const MonthYearSelect: import("@mantine/core").MantineComponent<{
48
+ props: MonthYearSelectProps;
49
+ ref: HTMLButtonElement;
50
+ stylesNames: MonthYearSelectStylesNames;
51
+ vars: MonthYearSelectCssVariables;
52
+ }>;
@@ -0,0 +1,40 @@
1
+ import { BoxProps, ElementProps, Factory, StylesApiProps } from '@mantine/core';
2
+ import { HeaderControl, HeaderControlStylesNames, ScheduleHeaderNext, ScheduleHeaderPrevious, ScheduleHeaderToday } from './HeaderControl/HeaderControl';
3
+ import { MonthYearSelect, MonthYearSelectStylesNames } from './MonthYearSelect/MonthYearSelect';
4
+ import { ViewSelect, ViewSelectStylesNames } from './ViewSelect/ViewSelect';
5
+ export type CombinedScheduleHeaderStylesNames = ScheduleHeaderStylesNames | ViewSelectStylesNames | HeaderControlStylesNames | MonthYearSelectStylesNames;
6
+ export type ScheduleHeaderStylesNames = 'header';
7
+ export type ScheduleHeaderCssVariables = {
8
+ scheduleHeader: '--test';
9
+ };
10
+ export interface ScheduleHeaderProps extends BoxProps, StylesApiProps<ScheduleHeaderFactory>, ElementProps<'div'> {
11
+ __staticSelector?: string;
12
+ }
13
+ export type ScheduleHeaderFactory = Factory<{
14
+ props: ScheduleHeaderProps;
15
+ ref: HTMLDivElement;
16
+ stylesNames: ScheduleHeaderStylesNames;
17
+ vars: ScheduleHeaderCssVariables;
18
+ staticComponents: {
19
+ Control: typeof HeaderControl;
20
+ Previous: typeof ScheduleHeaderPrevious;
21
+ Next: typeof ScheduleHeaderNext;
22
+ Today: typeof ScheduleHeaderToday;
23
+ ViewSelect: typeof ViewSelect;
24
+ MonthYearSelect: typeof MonthYearSelect;
25
+ };
26
+ }>;
27
+ export declare const ScheduleHeader: import("@mantine/core").MantineComponent<{
28
+ props: ScheduleHeaderProps;
29
+ ref: HTMLDivElement;
30
+ stylesNames: ScheduleHeaderStylesNames;
31
+ vars: ScheduleHeaderCssVariables;
32
+ staticComponents: {
33
+ Control: typeof HeaderControl;
34
+ Previous: typeof ScheduleHeaderPrevious;
35
+ Next: typeof ScheduleHeaderNext;
36
+ Today: typeof ScheduleHeaderToday;
37
+ ViewSelect: typeof ViewSelect;
38
+ MonthYearSelect: typeof MonthYearSelect;
39
+ };
40
+ }>;
@@ -0,0 +1,53 @@
1
+ import { StylesApiProps } from '@mantine/core';
2
+ import { ScheduleLabelsOverride } from '../../labels';
3
+ import { DateStringValue, ScheduleViewLevel } from '../../types';
4
+ import { MonthYearSelectProps } from './MonthYearSelect/MonthYearSelect';
5
+ import { ViewSelectProps } from './ViewSelect/ViewSelect';
6
+ interface NavigationHandlers {
7
+ /** Handler for previous button click, returns new date */
8
+ previous: () => DateStringValue;
9
+ /** Handler for next button click, returns new date */
10
+ next: () => DateStringValue;
11
+ /** Handler for today button click, returns new date */
12
+ today: () => DateStringValue;
13
+ }
14
+ interface HeaderControlOptions {
15
+ /** Title to render in a simple control (used by DayView, WeekView) */
16
+ title?: React.ReactNode;
17
+ /** MonthYearSelect props (used by MonthView, YearView) */
18
+ monthYearSelect?: {
19
+ yearValue: number;
20
+ monthValue: number;
21
+ onYearChange?: (year: number) => void;
22
+ onMonthChange?: (month: number) => void;
23
+ withMonths?: boolean;
24
+ } & Partial<MonthYearSelectProps>;
25
+ /** Minimum width for control */
26
+ miw?: React.CSSProperties['minWidth'];
27
+ }
28
+ export interface ScheduleHeaderBaseProps {
29
+ /** Current view level */
30
+ view: ScheduleViewLevel;
31
+ /** Navigation handlers for previous, next, and today */
32
+ navigationHandlers: NavigationHandlers;
33
+ /** Central control configuration (either title or monthYearSelect) */
34
+ control: HeaderControlOptions;
35
+ /** Label overrides */
36
+ labels?: ScheduleLabelsOverride;
37
+ /** Called when date is changed */
38
+ onDateChange?: (date: DateStringValue) => void;
39
+ /** Called when view is changed */
40
+ onViewChange?: (view: ScheduleViewLevel) => void;
41
+ /** Props passed to previous control button */
42
+ previousControlProps?: React.ComponentProps<'button'>;
43
+ /** Props passed to next control button */
44
+ nextControlProps?: React.ComponentProps<'button'>;
45
+ /** Props passed to today control button */
46
+ todayControlProps?: React.ComponentProps<'button'>;
47
+ /** Props passed to view select */
48
+ viewSelectProps?: Partial<ViewSelectProps>;
49
+ /** Styles API props to pass through */
50
+ stylesApiProps?: StylesApiProps<any>;
51
+ }
52
+ export declare function ScheduleHeaderBase({ view, navigationHandlers, control, labels, onDateChange, onViewChange, previousControlProps, nextControlProps, todayControlProps, viewSelectProps, stylesApiProps, }: ScheduleHeaderBaseProps): import("react/jsx-runtime").JSX.Element;
53
+ export {};
@@ -0,0 +1,27 @@
1
+ import { BoxProps, ElementProps, Factory, MantineRadius, StylesApiProps } from '@mantine/core';
2
+ import { ScheduleLabelsOverride } from '../../../labels';
3
+ import { ScheduleViewLevel } from '../../../types';
4
+ export type ViewSelectStylesNames = 'viewSelect';
5
+ export interface ViewSelectProps extends BoxProps, StylesApiProps<ViewSelectFactory>, ElementProps<'div', 'value' | 'onChange'> {
6
+ __staticSelector?: string;
7
+ /** A list of views to display @default ['day', 'week', 'month', 'year'] */
8
+ views?: readonly ScheduleViewLevel[];
9
+ /** Selected view type */
10
+ value?: ScheduleViewLevel;
11
+ /** Called when view type changes */
12
+ onChange?: (value: ScheduleViewLevel) => void;
13
+ /** Key of `theme.radius` or any valid CSS value to set `border-radius` @default theme.defaultRadius */
14
+ radius?: MantineRadius;
15
+ /** Labels override */
16
+ labels?: ScheduleLabelsOverride;
17
+ }
18
+ export type ViewSelectFactory = Factory<{
19
+ props: ViewSelectProps;
20
+ ref: HTMLDivElement;
21
+ stylesNames: ViewSelectStylesNames;
22
+ }>;
23
+ export declare const ViewSelect: import("@mantine/core").MantineComponent<{
24
+ props: ViewSelectProps;
25
+ ref: HTMLDivElement;
26
+ stylesNames: ViewSelectStylesNames;
27
+ }>;
@@ -0,0 +1,2 @@
1
+ export { ScheduleHeader } from './ScheduleHeader';
2
+ export type { ScheduleHeaderProps, ScheduleHeaderFactory, ScheduleHeaderStylesNames, ScheduleHeaderCssVariables, CombinedScheduleHeaderStylesNames, } from './ScheduleHeader';
@@ -0,0 +1,119 @@
1
+ import { BoxProps, DataAttributes, ElementProps, Factory, MantineRadius, ScrollAreaAutosizeProps, StylesApiProps } from '@mantine/core';
2
+ import { ScheduleLabelsOverride } from '../../labels';
3
+ import { DateLabelFormat, DateStringValue, DateTimeStringValue, DayOfWeek, ScheduleEventData, ScheduleMode, ScheduleViewLevel } from '../../types';
4
+ import { CurrentTimeIndicatorStylesNames } from '../CurrentTimeIndicator/CurrentTimeIndicator';
5
+ import { RenderEvent, RenderEventBody } from '../ScheduleEvent/ScheduleEvent';
6
+ import { CombinedScheduleHeaderStylesNames } from '../ScheduleHeader/ScheduleHeader';
7
+ import { ViewSelectProps } from '../ScheduleHeader/ViewSelect/ViewSelect';
8
+ export type WeekViewStylesNames = 'weekView' | 'weekViewRoot' | 'weekViewHeader' | 'weekViewInner' | 'weekViewAllDaySlotsEvents' | 'weekViewAllDaySlots' | 'weekViewAllDaySlotsList' | 'weekViewAllDaySlot' | 'weekViewAllDaySlotsLabel' | 'weekViewScrollArea' | 'weekViewCorner' | 'weekViewSlotLabels' | 'weekViewSlotLabel' | 'weekViewDayLabel' | 'weekViewDayWeekday' | 'weekViewDay' | 'weekViewDayNumber' | 'weekViewDaySlot' | 'weekViewDaySlots' | 'weekViewWeekLabel' | 'weekViewWeekNumber' | CurrentTimeIndicatorStylesNames | CombinedScheduleHeaderStylesNames;
9
+ export type WeekViewCssVariables = {
10
+ weekView: '--week-view-radius' | '--week-view-slot-height' | '--week-view-all-day-slots-height';
11
+ };
12
+ export interface WeekViewProps extends BoxProps, StylesApiProps<WeekViewFactory>, ElementProps<'div'> {
13
+ __staticSelector?: string;
14
+ /** Week to display, Date object or date string in `YYYY-MM-DD` format */
15
+ date: Date | string;
16
+ /** Called with the new date value when a date is selected */
17
+ onDateChange?: (value: DateStringValue) => void;
18
+ /** Start time for the day view, in `HH:mm:ss` format @default 00:00:00 */
19
+ startTime?: string;
20
+ /** End time for the day view, in `HH:mm:ss` format @default 23:59:59 */
21
+ endTime?: string;
22
+ /** Number of minutes for each interval in the day view @default 60 */
23
+ intervalMinutes?: number;
24
+ /** Dayjs format for slot labels or a callback function that returns formatted value @default HH:mm */
25
+ slotLabelFormat?: DateLabelFormat;
26
+ /** Number 0-6, where 0 – Sunday and 6 – Saturday. @default 1 – Monday */
27
+ firstDayOfWeek?: DayOfWeek;
28
+ /** `dayjs` format for weekdays names. @default 'ddd' */
29
+ weekdayFormat?: DateLabelFormat;
30
+ /** Indices of weekend days, 0-6, where 0 is Sunday and 6 is Saturday. The default value is defined by `DatesProvider`. */
31
+ weekendDays?: DayOfWeek[];
32
+ /** If set to false, weekend days are hidden @default true */
33
+ withWeekendDays?: boolean;
34
+ /** If set to true, highlights today in the weekday row @default false */
35
+ highlightToday?: boolean;
36
+ /** Key of `theme.radius` or any valid CSS value to set `border-radius` @default theme.defaultRadius */
37
+ radius?: MantineRadius;
38
+ /** Props passed down to the `ScrollArea.Autosize` component */
39
+ scrollAreaProps?: ScrollAreaAutosizeProps & DataAttributes;
40
+ /** Locale passed down to dayjs, overrides value defined on `DatesProvider` */
41
+ locale?: string;
42
+ /** If set, the week number is displayed at the top left corner @default true */
43
+ withWeekNumber?: boolean;
44
+ /** If set, displays a line indicating the current time @default true */
45
+ withCurrentTimeIndicator?: boolean;
46
+ /** If set, the time indicator displays the current time in the bubble @default true */
47
+ withCurrentTimeBubble?: boolean;
48
+ /** If set, displays all-day slots at the top of the view @default true */
49
+ withAllDaySlots?: boolean;
50
+ /** If set, the header is displayed @default true */
51
+ withHeader?: boolean;
52
+ /** Called when view level select button is clicked */
53
+ onViewChange?: (view: ScheduleViewLevel) => void;
54
+ /** Props passed to previous month control */
55
+ previousControlProps?: React.ComponentProps<'button'> & DataAttributes;
56
+ /** Props passed to next month control */
57
+ nextControlProps?: React.ComponentProps<'button'> & DataAttributes;
58
+ /** Props passed to today control */
59
+ todayControlProps?: React.ComponentProps<'button'> & DataAttributes;
60
+ /** Props passed to view level select */
61
+ viewSelectProps?: Partial<ViewSelectProps> & DataAttributes;
62
+ /** Format for week label @default 'MMM DD' */
63
+ weekLabelFormat?: DateLabelFormat;
64
+ /** List of events to display in the week view */
65
+ events?: ScheduleEventData[];
66
+ /** Height of 1hr slot @default 64px */
67
+ slotHeight?: React.CSSProperties['height'];
68
+ /** Height of all-day slot @default 48px */
69
+ allDaySlotHeight?: React.CSSProperties['height'];
70
+ /** Labels override */
71
+ labels?: ScheduleLabelsOverride;
72
+ /** If set to true, highlights business hours with white background @default false */
73
+ highlightBusinessHours?: boolean;
74
+ /** Business hours range in `HH:mm:ss` format @default ['09:00:00', '17:00:00'] */
75
+ businessHours?: [string, string];
76
+ /** Function to customize event body, `event` object is passed as first argument */
77
+ renderEventBody?: RenderEventBody;
78
+ /** Function to fully customize event rendering, receives all props that would be passed to the root element including children */
79
+ renderEvent?: RenderEvent;
80
+ /** If true, events can be dragged and dropped @default false */
81
+ withEventsDragAndDrop?: boolean;
82
+ /** Called when event is dropped at new time */
83
+ onEventDrop?: (eventId: string | number, newStart: DateTimeStringValue, newEnd: DateTimeStringValue) => void;
84
+ /** Function to determine if event can be dragged */
85
+ canDragEvent?: (event: ScheduleEventData) => boolean;
86
+ /** Called when any event drag starts */
87
+ onEventDragStart?: (event: ScheduleEventData) => void;
88
+ /** Called when any event drag ends */
89
+ onEventDragEnd?: () => void;
90
+ /** Called when time slot is clicked */
91
+ onTimeSlotClick?: (slotStart: DateTimeStringValue, slotEnd: DateTimeStringValue, event: React.MouseEvent<HTMLButtonElement>) => void;
92
+ /** Called when all-day slot is clicked */
93
+ onAllDaySlotClick?: (day: DateStringValue, event: React.MouseEvent<HTMLButtonElement>) => void;
94
+ /** Called when event is clicked */
95
+ onEventClick?: (event: ScheduleEventData, e: React.MouseEvent<HTMLButtonElement>) => void;
96
+ /** If set, enables drag-to-select time slot ranges @default false */
97
+ withDragSlotSelect?: boolean;
98
+ /** Called when a time slot range is selected by dragging */
99
+ onSlotDragEnd?: (rangeStart: DateTimeStringValue, rangeEnd: DateTimeStringValue) => void;
100
+ /** Interaction mode: 'default' allows all interactions, 'static' disables event interactions @default default */
101
+ mode?: ScheduleMode;
102
+ /** Function to customize week label in the header */
103
+ renderWeekLabel?: (params: {
104
+ weekStart: DateStringValue;
105
+ weekEnd: DateStringValue;
106
+ }) => React.ReactNode;
107
+ }
108
+ export type WeekViewFactory = Factory<{
109
+ props: WeekViewProps;
110
+ ref: HTMLDivElement;
111
+ stylesNames: WeekViewStylesNames;
112
+ vars: WeekViewCssVariables;
113
+ }>;
114
+ export declare const WeekView: import("@mantine/core").MantineComponent<{
115
+ props: WeekViewProps;
116
+ ref: HTMLDivElement;
117
+ stylesNames: WeekViewStylesNames;
118
+ vars: WeekViewCssVariables;
119
+ }>;
@@ -0,0 +1,58 @@
1
+ import { GetStylesApi } from '@mantine/core';
2
+ import { ScheduleLabelsOverride } from '../../labels';
3
+ import { DateStringValue, DayOfWeek, ScheduleMode } from '../../types';
4
+ import { DayTimeInterval } from '../../utils';
5
+ import type { WeekViewControlsRef } from './handle-week-view-key-down';
6
+ import type { WeekViewFactory } from './WeekView';
7
+ export interface WeekViewDayProps {
8
+ /** Date to display */
9
+ day: Date | DateStringValue;
10
+ /** Index of this day in the week */
11
+ dayIndex: number;
12
+ /** Slots intervals */
13
+ slots: DayTimeInterval[];
14
+ /** `useStyles` return value of `WeekView` */
15
+ getStyles: GetStylesApi<WeekViewFactory>;
16
+ /** Indices of weekend days, 0-6, where 0 is Sunday and 6 is Saturday. The default value is defined by `DatesProvider`. */
17
+ weekendDays?: DayOfWeek[];
18
+ /** Events list */
19
+ children?: React.ReactNode;
20
+ /** Labels override */
21
+ labels?: ScheduleLabelsOverride;
22
+ /** If set to true, highlights business hours with white background */
23
+ highlightBusinessHours?: boolean;
24
+ /** Business hours range in `HH:mm:ss` format */
25
+ businessHours?: [string, string];
26
+ /** If true, slots are drop targets for drag and drop */
27
+ withEventsDragAndDrop?: boolean;
28
+ /** Called when dragging over a slot */
29
+ onSlotDragOver?: (e: React.DragEvent<HTMLButtonElement>, day: string, slotIndex: number) => void;
30
+ /** Called when dragging leaves a slot */
31
+ onSlotDragLeave?: () => void;
32
+ /** Called when dropping on a slot */
33
+ onSlotDrop?: (e: React.DragEvent<HTMLButtonElement>, day: string, slotTime: string) => void;
34
+ /** Called when slot is clicked */
35
+ onSlotClick?: (day: string, slotTime: string, event: React.MouseEvent<HTMLButtonElement>) => void;
36
+ /** Index of the slot that is currently a drop target */
37
+ dropTargetSlotIndex?: number;
38
+ /** Interaction mode: 'default' allows all interactions, 'static' disables event interactions */
39
+ mode?: ScheduleMode;
40
+ /** Ref for keyboard navigation */
41
+ slotsRef?: WeekViewControlsRef;
42
+ /** Index of the first focusable slot */
43
+ firstSlotIndex?: {
44
+ dayIndex: number;
45
+ slotIndex: number;
46
+ };
47
+ /** Keyboard event handler for slots */
48
+ onSlotKeyDown?: (event: React.KeyboardEvent<HTMLButtonElement>, dayIndex: number, slotIndex: number) => void;
49
+ /** Called when Arrow Up is pressed on the first slot, used to navigate to all-day slot */
50
+ onFirstSlotArrowUp?: (dayIndex: number) => void;
51
+ /** If set, enables drag-to-select time slot ranges */
52
+ withDragSlotSelect?: boolean;
53
+ /** Called when pointer down on a slot for drag selection */
54
+ onSlotPointerDown?: (event: React.PointerEvent<HTMLButtonElement>, index: number, group: string) => void;
55
+ /** Function to check if a slot is drag-selected */
56
+ isSlotDragSelected?: (index: number, group: string) => boolean;
57
+ }
58
+ export declare function WeekViewDay({ day, dayIndex, slots, getStyles, weekendDays, children, labels, highlightBusinessHours, businessHours, withEventsDragAndDrop, onSlotDragOver, onSlotDragLeave, onSlotDrop, onSlotClick, dropTargetSlotIndex, mode, slotsRef, firstSlotIndex, onSlotKeyDown, onFirstSlotArrowUp, withDragSlotSelect, onSlotPointerDown, isSlotDragSelected, }: WeekViewDayProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,13 @@
1
+ import type { ReactNode } from 'react';
2
+ import { DateLabelFormat, DateStringValue } from '../../../types';
3
+ interface GetWeekLabelInput {
4
+ weekdays: Date[] | string[];
5
+ locale: string;
6
+ weekLabelFormat: DateLabelFormat;
7
+ renderWeekLabel?: (params: {
8
+ weekStart: DateStringValue;
9
+ weekEnd: DateStringValue;
10
+ }) => ReactNode;
11
+ }
12
+ export declare function getWeekLabel({ weekdays, locale, weekLabelFormat, renderWeekLabel, }: GetWeekLabelInput): ReactNode;
13
+ export {};
@@ -0,0 +1,2 @@
1
+ import { ScheduleEventData, WeekPositionedEventData } from '../../../types';
2
+ export declare function assignEventRows(events: WeekPositionedEventData[]): Map<ScheduleEventData, number>;
@@ -0,0 +1,11 @@
1
+ import { Dayjs } from 'dayjs';
2
+ import { DateStringValue } from '../../../types';
3
+ interface CalculateAllDayEventOffsetInput {
4
+ eventStartDate: Dayjs;
5
+ weekStartDate: Dayjs;
6
+ weekDays: DateStringValue[];
7
+ visibleDaysCount: number;
8
+ hangingStart: boolean;
9
+ }
10
+ export declare function calculateAllDayEventOffset({ eventStartDate, weekStartDate, weekDays, visibleDaysCount, hangingStart, }: CalculateAllDayEventOffsetInput): number;
11
+ export {};
@@ -0,0 +1,12 @@
1
+ import { Dayjs } from 'dayjs';
2
+ import { DateStringValue } from '../../../types';
3
+ interface CalculateAllDayEventWidthInput {
4
+ eventStartDate: Dayjs;
5
+ actualEndDate: Dayjs;
6
+ weekStartDate: Dayjs;
7
+ weekEndDate: Dayjs;
8
+ weekDays: DateStringValue[];
9
+ visibleDaysCount: number;
10
+ }
11
+ export declare function calculateAllDayEventWidth({ eventStartDate, actualEndDate, weekStartDate, weekEndDate, weekDays, visibleDaysCount, }: CalculateAllDayEventWidthInput): number;
12
+ export {};
@@ -0,0 +1,9 @@
1
+ import { Dayjs } from 'dayjs';
2
+ import { DateStringValue, ScheduleEventData } from '../../../types';
3
+ interface CalculateEventDaysInput {
4
+ event: ScheduleEventData;
5
+ weekDays: DateStringValue[];
6
+ actualEndDate: Dayjs;
7
+ }
8
+ export declare function calculateEventDays({ event, weekDays, actualEndDate }: CalculateEventDaysInput): string[];
9
+ export {};
@@ -0,0 +1,2 @@
1
+ import { WeekPositionedEventData } from '../../../types';
2
+ export declare function calculateRegularEventOverlaps(events: WeekPositionedEventData[]): void;
@@ -0,0 +1,14 @@
1
+ import { AnyDateValue, DayOfWeek, ScheduleEventData } from '../../../types';
2
+ export interface FilterWeekViewEventsInput {
3
+ /** Date (week start) at which events are positioned, used to check if events are all-day */
4
+ date: AnyDateValue;
5
+ /** List of all events that belong to the given week, extra events must be filtered out before passing to the function */
6
+ events: ScheduleEventData[] | undefined;
7
+ /** Start time of the week view, used to calculate event positions */
8
+ startTime?: string;
9
+ /** End time of the week view, used to calculate event positions */
10
+ endTime?: string;
11
+ /** First day of the week, 0 - Sunday, 1 - Monday, etc., used to calculate events positions */
12
+ firstDayOfWeek?: DayOfWeek;
13
+ }
14
+ export declare function filterWeekViewEvents({ date, events, startTime, endTime, firstDayOfWeek, }: FilterWeekViewEventsInput): ScheduleEventData[];
@@ -0,0 +1,9 @@
1
+ import { DateStringValue, ScheduleEventData } from '../../../types';
2
+ interface FindAvailableColumnInput {
3
+ columns: Map<string, ScheduleEventData[]>;
4
+ event: ScheduleEventData;
5
+ allDay: boolean;
6
+ allWeekDays: DateStringValue[];
7
+ }
8
+ export declare function findAvailableColumn(input: FindAvailableColumnInput): number;
9
+ export {};
@@ -0,0 +1,3 @@
1
+ import dayjs from 'dayjs';
2
+ import { ScheduleEventData } from '../../../types';
3
+ export declare function getEventEndDate(event: ScheduleEventData): dayjs.Dayjs;
@@ -0,0 +1,9 @@
1
+ import { Dayjs } from 'dayjs';
2
+ import { DateStringValue } from '../../../types';
3
+ interface GetHangingStatusInput {
4
+ eventStartDate: Dayjs;
5
+ actualEndDate: Dayjs;
6
+ weekDays: DateStringValue[];
7
+ }
8
+ export declare function getHangingStatus({ eventStartDate, actualEndDate, weekDays, }: GetHangingStatusInput): 'start' | 'end' | 'both' | 'none';
9
+ export {};
@@ -0,0 +1,23 @@
1
+ import { AnyDateValue, DateStringValue, DayOfWeek, ScheduleEventData, WeekPositionedEventData } from '../../../types';
2
+ export interface GetWeekPositionedEventsInput {
3
+ /** Date (week start) at which events are positioned, used to check if events are all-day */
4
+ date: AnyDateValue;
5
+ /** List of all events that belong to the given week, extra events must be filtered out before passing to the function */
6
+ events: ScheduleEventData[];
7
+ /** Start time of the week view, used to calculate event positions */
8
+ startTime?: string;
9
+ /** End time of the week view, used to calculate event positions */
10
+ endTime?: string;
11
+ /** First day of the week, 0 - Sunday, 1 - Monday, etc., used to calculate events positions */
12
+ firstDayOfWeek?: DayOfWeek;
13
+ /** Indices of weekend days, 0-6, where 0 is Sunday and 6 is Saturday */
14
+ weekendDays?: DayOfWeek[];
15
+ /** If set to false, weekend days are hidden @default true */
16
+ withWeekendDays?: boolean;
17
+ }
18
+ /** Events grouped by week day date (YYYY-MM-DD 00:00:00) and by columns */
19
+ export interface GroupedWeekEvents {
20
+ allDayEvents: WeekPositionedEventData[];
21
+ regularEvents: Record<DateStringValue, WeekPositionedEventData[]>;
22
+ }
23
+ export declare function getWeekPositionedEvents({ date, events, startTime, endTime, firstDayOfWeek, weekendDays, withWeekendDays, }: GetWeekPositionedEventsInput): GroupedWeekEvents;
@@ -0,0 +1,7 @@
1
+ import { ScheduleEventData } from '../../../types';
2
+ import { GetWeekPositionedEventsInput, GroupedWeekEvents } from './get-week-positioned-events';
3
+ interface GetWeekViewEventsInput extends Omit<GetWeekPositionedEventsInput, 'events'> {
4
+ events: ScheduleEventData[] | undefined;
5
+ }
6
+ export declare function getWeekViewEvents(input: GetWeekViewEventsInput): GroupedWeekEvents;
7
+ export {};
@@ -0,0 +1,10 @@
1
+ import { RefObject } from 'react';
2
+ /** Reference to a 2D array of slot buttons: [dayIndex][slotIndex] */
3
+ export type WeekViewControlsRef = RefObject<HTMLButtonElement[][]>;
4
+ export interface HandleWeekViewKeyDownInput {
5
+ controlsRef: WeekViewControlsRef;
6
+ dayIndex: number;
7
+ slotIndex: number;
8
+ event: React.KeyboardEvent<HTMLButtonElement>;
9
+ }
10
+ export declare function handleWeekViewKeyDown({ controlsRef, dayIndex, slotIndex, event, }: HandleWeekViewKeyDownInput): void;
@@ -0,0 +1,9 @@
1
+ import type { WeekViewCssVariables, WeekViewFactory, WeekViewProps, WeekViewStylesNames } from './WeekView';
2
+ export { WeekView } from './WeekView';
3
+ export type { WeekViewProps, WeekViewFactory, WeekViewStylesNames, WeekViewCssVariables };
4
+ export declare namespace WeekView {
5
+ type Props = WeekViewProps;
6
+ type Factory = WeekViewFactory;
7
+ type StylesNames = WeekViewStylesNames;
8
+ type CssVariables = WeekViewCssVariables;
9
+ }
@@ -0,0 +1,51 @@
1
+ import { BoxProps, DataAttributes, ElementProps, Factory, MantineRadius, StylesApiProps } from '@mantine/core';
2
+ import { DateStringValue, ScheduleEventData, ScheduleMode, ScheduleViewLevel } from '../../types';
3
+ import { MonthYearSelectProps } from '../ScheduleHeader/MonthYearSelect/MonthYearSelect';
4
+ import { CombinedScheduleHeaderStylesNames } from '../ScheduleHeader/ScheduleHeader';
5
+ import { ViewSelectProps } from '../ScheduleHeader/ViewSelect/ViewSelect';
6
+ import { YearViewMonthSettings } from './YearViewMonth';
7
+ export type YearViewStylesNames = 'yearView' | 'yearViewMonths' | 'yearViewMonth' | 'yearViewWeekday' | 'yearViewDay' | 'yearViewWeek' | 'yearViewWeekNumber' | 'yearViewWeekdays' | 'yearViewWeekdaysCorner' | 'yearViewMonthCaption' | 'yearViewQuarter' | 'yearViewDayIndicators' | 'yearViewDayIndicator' | CombinedScheduleHeaderStylesNames;
8
+ export type YearViewCssVariables = {
9
+ yearView: '--year-view-radius';
10
+ };
11
+ export interface YearViewProps extends YearViewMonthSettings, BoxProps, StylesApiProps<YearViewFactory>, ElementProps<'div'> {
12
+ __staticSelector?: string;
13
+ /** Date to display, Date object or date string in `YYYY-MM-DD 00:00:00` format */
14
+ date: Date | string;
15
+ /** Called with the new date value when a date is selected */
16
+ onDateChange?: (value: DateStringValue) => void;
17
+ /** Events to display, must be a stable reference */
18
+ events?: ScheduleEventData[];
19
+ /** Key of `theme.radius` or any valid CSS value to set `border-radius` @default theme.defaultRadius */
20
+ radius?: MantineRadius;
21
+ /** If set, highlights the current day @default true */
22
+ highlightToday?: boolean;
23
+ /** If set, the header is displayed @default true */
24
+ withHeader?: boolean;
25
+ /** Props passed down to `MonthYearSelect` component in the header */
26
+ monthYearSelectProps?: Partial<MonthYearSelectProps>;
27
+ /** Called when view level select button is clicked */
28
+ onViewChange?: (view: ScheduleViewLevel) => void;
29
+ /** Props passed to previous month control */
30
+ previousControlProps?: React.ComponentProps<'button'> & DataAttributes;
31
+ /** Props passed to next month control */
32
+ nextControlProps?: React.ComponentProps<'button'> & DataAttributes;
33
+ /** Props passed to today control */
34
+ todayControlProps?: React.ComponentProps<'button'> & DataAttributes;
35
+ /** Props passed to view level select */
36
+ viewSelectProps?: Partial<ViewSelectProps> & DataAttributes;
37
+ /** Interaction mode: 'default' allows all interactions, 'static' disables event interactions @default default */
38
+ mode?: ScheduleMode;
39
+ }
40
+ export type YearViewFactory = Factory<{
41
+ props: YearViewProps;
42
+ ref: HTMLDivElement;
43
+ stylesNames: YearViewStylesNames;
44
+ vars: YearViewCssVariables;
45
+ }>;
46
+ export declare const YearView: import("@mantine/core").MantineComponent<{
47
+ props: YearViewProps;
48
+ ref: HTMLDivElement;
49
+ stylesNames: YearViewStylesNames;
50
+ vars: YearViewCssVariables;
51
+ }>;
@@ -0,0 +1,62 @@
1
+ import { GetStylesApi } from '@mantine/core';
2
+ import { ScheduleLabelsOverride } from '../../labels';
3
+ import { DateLabelFormat, DateStringValue, DayOfWeek, ScheduleMode } from '../../types';
4
+ import { GroupedEvents } from './get-year-view-events/get-year-view-events';
5
+ import type { YearViewFactory } from './YearView';
6
+ export interface YearViewDayKeydownPayload {
7
+ weekIndex: number;
8
+ dayIndex: number;
9
+ date: string;
10
+ }
11
+ export interface YearViewMonthSettings {
12
+ /** `dayjs` format for month label @default 'MMMM' */
13
+ monthLabelFormat?: DateLabelFormat;
14
+ /** If set, show week numbers */
15
+ withWeekNumbers?: boolean;
16
+ /** If set, weekdays names are displayed in the first row @default true */
17
+ withWeekDays?: boolean;
18
+ /** Locale passed down to dayjs, overrides value defined on `DatesProvider` */
19
+ locale?: string;
20
+ /** Number 0-6, where 0 – Sunday and 6 – Saturday @default 0 */
21
+ firstDayOfWeek?: DayOfWeek;
22
+ /** `dayjs` format for weekdays names @default 'd' */
23
+ weekdayFormat?: DateLabelFormat;
24
+ /** Indices of weekend days, 0-6, where 0 is Sunday and 6 is Saturday. The default value is defined by `DatesProvider`. */
25
+ weekendDays?: DayOfWeek[];
26
+ /** Props passed down to the week number button */
27
+ getWeekNumberProps?: (weekStartDate: DateStringValue) => Record<string, any>;
28
+ /** Props passed down to the day button */
29
+ getDayProps?: (date: DateStringValue) => Record<string, any>;
30
+ /** Called when day is clicked */
31
+ onDayClick?: (date: DateStringValue, event: React.MouseEvent<HTMLButtonElement>) => void;
32
+ /** Called with first day of the week when week number is clicked */
33
+ onWeekNumberClick?: (date: DateStringValue, event: React.MouseEvent<HTMLButtonElement>) => void;
34
+ /** Called with the first day of the month when month label is clicked */
35
+ onMonthClick?: (date: DateStringValue, event: React.MouseEvent<HTMLButtonElement>) => void;
36
+ /** If set, highlights the current day @default true */
37
+ highlightToday?: boolean;
38
+ /** Labels override for i18n */
39
+ labels?: ScheduleLabelsOverride;
40
+ /** Interaction mode: 'default' allows all interactions, 'static' disables event interactions */
41
+ mode?: ScheduleMode;
42
+ /** If true, days from adjacent months are displayed @default true */
43
+ withOutsideDays?: boolean;
44
+ }
45
+ export interface YearViewMonthProps extends YearViewMonthSettings {
46
+ /** Month to display, Date object or date string in `YYYY-MM-DD` format */
47
+ month: Date | string;
48
+ /** `useStyles` return value of `YearView` */
49
+ getStyles: GetStylesApi<YearViewFactory>;
50
+ /** Events grouped by date */
51
+ groupedEvents?: GroupedEvents;
52
+ /** Assigns ref of every day based on its position in the month, used for keyboard navigation */
53
+ __getDayRef?: (weekIndex: number, dayIndex: number, node: HTMLButtonElement) => void;
54
+ /** Called when any keydown event is registered on day, used for keyboard navigation */
55
+ __onDayKeyDown?: (event: React.KeyboardEvent<HTMLButtonElement>, payload: YearViewDayKeydownPayload) => void;
56
+ /** Index of the first day of the month in the grid (for determining which day should be in tab order) */
57
+ firstDayIndex?: {
58
+ weekIndex: number;
59
+ dayIndex: number;
60
+ };
61
+ }
62
+ export declare function YearViewMonth({ month, getStyles, monthLabelFormat, withWeekNumbers, withWeekDays, locale, firstDayOfWeek, weekdayFormat, weekendDays, getDayProps, onDayClick, onWeekNumberClick, onMonthClick, getWeekNumberProps, highlightToday, groupedEvents, mode, withOutsideDays, __getDayRef, __onDayKeyDown, firstDayIndex, }: YearViewMonthProps): import("react/jsx-runtime").JSX.Element;