@mantine/schedule 9.1.1 → 9.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (209) hide show
  1. package/cjs/components/CurrentTimeIndicator/CurrentTimeIndicator.cjs.map +1 -1
  2. package/cjs/components/DayView/DayView.cjs +2 -1
  3. package/cjs/components/DayView/DayView.cjs.map +1 -1
  4. package/cjs/components/DayView/get-day-view-events/get-day-positioned-events.cjs +3 -2
  5. package/cjs/components/DayView/get-day-view-events/get-day-positioned-events.cjs.map +1 -1
  6. package/cjs/components/DayView/get-day-view-events/get-day-view-events.cjs +4 -2
  7. package/cjs/components/DayView/get-day-view-events/get-day-view-events.cjs.map +1 -1
  8. package/cjs/components/DragContext/DragContext.cjs.map +1 -1
  9. package/cjs/components/MobileMonthView/MobileMonthView.cjs.map +1 -1
  10. package/cjs/components/MobileMonthView/get-mobile-month-view-events.cjs.map +1 -1
  11. package/cjs/components/MonthView/MonthView.cjs +19 -9
  12. package/cjs/components/MonthView/MonthView.cjs.map +1 -1
  13. package/cjs/components/MonthView/get-month-view-events/add-event-to-day-groups.cjs.map +1 -1
  14. package/cjs/components/MonthView/get-month-view-events/calculate-event-position-in-week.cjs.map +1 -1
  15. package/cjs/components/MonthView/get-month-view-events/find-available-row.cjs.map +1 -1
  16. package/cjs/components/MonthView/get-month-view-events/get-month-positioned-events.cjs.map +1 -1
  17. package/cjs/components/MonthView/get-month-view-events/get-month-view-events.cjs.map +1 -1
  18. package/cjs/components/MonthView/get-month-view-events/get-weeks-in-range.cjs.map +1 -1
  19. package/cjs/components/MonthView/get-renderable-month-event-segments.cjs +121 -0
  20. package/cjs/components/MonthView/get-renderable-month-event-segments.cjs.map +1 -0
  21. package/cjs/components/MonthView/handle-month-view-key-down.cjs.map +1 -1
  22. package/cjs/components/MoreEvents/MoreEvents.cjs.map +1 -1
  23. package/cjs/components/Schedule/Schedule.cjs.map +1 -1
  24. package/cjs/components/ScheduleEvent/ScheduleEvent.cjs.map +1 -1
  25. package/cjs/components/ScheduleEvent/ScheduleEvent.module.cjs.map +1 -1
  26. package/cjs/components/ScheduleHeader/HeaderControl/HeaderControl.cjs.map +1 -1
  27. package/cjs/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.cjs.map +1 -1
  28. package/cjs/components/ScheduleHeader/ScheduleHeader.cjs.map +1 -1
  29. package/cjs/components/ScheduleHeader/ScheduleHeaderBase.cjs.map +1 -1
  30. package/cjs/components/ScheduleHeader/ScheduleHeaderContext.cjs.map +1 -1
  31. package/cjs/components/ScheduleHeader/ViewSelect/ViewSelect.cjs.map +1 -1
  32. package/cjs/components/WeekView/WeekView.cjs +1 -0
  33. package/cjs/components/WeekView/WeekView.cjs.map +1 -1
  34. package/cjs/components/WeekView/WeekViewDay.cjs +5 -2
  35. package/cjs/components/WeekView/WeekViewDay.cjs.map +1 -1
  36. package/cjs/components/WeekView/get-week-label/get-week-label.cjs.map +1 -1
  37. package/cjs/components/WeekView/get-week-view-events/assign-event-rows.cjs.map +1 -1
  38. package/cjs/components/WeekView/get-week-view-events/calculate-all-day-event-offset.cjs.map +1 -1
  39. package/cjs/components/WeekView/get-week-view-events/calculate-all-day-event-width.cjs.map +1 -1
  40. package/cjs/components/WeekView/get-week-view-events/calculate-event-days.cjs.map +1 -1
  41. package/cjs/components/WeekView/get-week-view-events/calculate-regular-event-overlaps.cjs.map +1 -1
  42. package/cjs/components/WeekView/get-week-view-events/filter-week-view-events.cjs.map +1 -1
  43. package/cjs/components/WeekView/get-week-view-events/find-available-column.cjs.map +1 -1
  44. package/cjs/components/WeekView/get-week-view-events/get-event-end-date.cjs.map +1 -1
  45. package/cjs/components/WeekView/get-week-view-events/get-hanging-status.cjs.map +1 -1
  46. package/cjs/components/WeekView/get-week-view-events/get-week-positioned-events.cjs +5 -3
  47. package/cjs/components/WeekView/get-week-view-events/get-week-positioned-events.cjs.map +1 -1
  48. package/cjs/components/WeekView/get-week-view-events/get-week-view-events.cjs.map +1 -1
  49. package/cjs/components/WeekView/handle-week-view-key-down.cjs.map +1 -1
  50. package/cjs/components/YearView/YearView.cjs.map +1 -1
  51. package/cjs/components/YearView/YearViewMonth.cjs.map +1 -1
  52. package/cjs/components/YearView/get-year-view-events/get-year-view-events.cjs.map +1 -1
  53. package/cjs/components/YearView/handle-year-view-key-down.cjs.map +1 -1
  54. package/cjs/hooks/use-auto-scroll-on-drag.cjs.map +1 -1
  55. package/cjs/hooks/use-drag-drop-handlers.cjs.map +1 -1
  56. package/cjs/hooks/use-drag-state.cjs.map +1 -1
  57. package/cjs/hooks/use-event-resize.cjs +9 -5
  58. package/cjs/hooks/use-event-resize.cjs.map +1 -1
  59. package/cjs/hooks/use-slot-drag-select.cjs.map +1 -1
  60. package/cjs/labels.cjs.map +1 -1
  61. package/cjs/utils/calculate-drop-time/calculate-drop-time.cjs.map +1 -1
  62. package/cjs/utils/calculate-month-drop-date/calculate-month-drop-date.cjs.map +1 -1
  63. package/cjs/utils/clamp-interval-minutes/clamp-interval-minutes.cjs.map +1 -1
  64. package/cjs/utils/expand-recurring-events/expand-recurring-events.cjs.map +1 -1
  65. package/cjs/utils/format-date/format-date.cjs.map +1 -1
  66. package/cjs/utils/get-business-hours-mod/get-business-hours-mod.cjs +20 -3
  67. package/cjs/utils/get-business-hours-mod/get-business-hours-mod.cjs.map +1 -1
  68. package/cjs/utils/get-current-time-position/get-current-time-position.cjs.map +1 -1
  69. package/cjs/utils/get-day-position/get-day-position.cjs +11 -8
  70. package/cjs/utils/get-day-position/get-day-position.cjs.map +1 -1
  71. package/cjs/utils/get-day-time-intervals/get-day-time-intervals.cjs.map +1 -1
  72. package/cjs/utils/get-end-of-week/get-end-of-week.cjs.map +1 -1
  73. package/cjs/utils/get-month-days/get-month-days.cjs.map +1 -1
  74. package/cjs/utils/get-month-range/get-month-range.cjs.map +1 -1
  75. package/cjs/utils/get-months-by-quarter/get-months-by-quarter.cjs.map +1 -1
  76. package/cjs/utils/get-months-list/get-months-list.cjs.map +1 -1
  77. package/cjs/utils/get-start-of-week/get-start-of-week.cjs.map +1 -1
  78. package/cjs/utils/get-visible-events/get-visible-events.cjs.map +1 -1
  79. package/cjs/utils/get-week-days/get-week-days.cjs.map +1 -1
  80. package/cjs/utils/get-week-number/get-week-number.cjs.map +1 -1
  81. package/cjs/utils/get-weekdays-names/get-weekdays-names.cjs.map +1 -1
  82. package/cjs/utils/get-years-list/get-years-list.cjs.map +1 -1
  83. package/cjs/utils/is-after-min-date/is-after-min-date.cjs.map +1 -1
  84. package/cjs/utils/is-all-day-event/is-all-day-event.cjs.map +1 -1
  85. package/cjs/utils/is-before-max-date/is-before-max-date.cjs.map +1 -1
  86. package/cjs/utils/is-event-in-time-range/is-event-in-time-range.cjs.map +1 -1
  87. package/cjs/utils/is-events-overlap/is-events-overlap.cjs.map +1 -1
  88. package/cjs/utils/is-in-time-range/is-in-time-range.cjs.map +1 -1
  89. package/cjs/utils/is-multiday-event/is-multiday-event.cjs.map +1 -1
  90. package/cjs/utils/is-same-month/is-same-month.cjs.map +1 -1
  91. package/cjs/utils/is-within-week/is-within-week.cjs.map +1 -1
  92. package/cjs/utils/next-week/next-week.cjs.map +1 -1
  93. package/cjs/utils/parse-time-string/parse-time-string.cjs.map +1 -1
  94. package/cjs/utils/previous-week/previous-week.cjs.map +1 -1
  95. package/cjs/utils/sort-events/sort-events.cjs.map +1 -1
  96. package/cjs/utils/to-date-string/to-date-string.cjs.map +1 -1
  97. package/cjs/utils/to-time-string/to-time-string.cjs.map +1 -1
  98. package/cjs/utils/validate-event/validate-event.cjs.map +1 -1
  99. package/esm/components/CurrentTimeIndicator/CurrentTimeIndicator.mjs.map +1 -1
  100. package/esm/components/DayView/DayView.mjs +2 -1
  101. package/esm/components/DayView/DayView.mjs.map +1 -1
  102. package/esm/components/DayView/get-day-view-events/get-day-positioned-events.mjs +3 -2
  103. package/esm/components/DayView/get-day-view-events/get-day-positioned-events.mjs.map +1 -1
  104. package/esm/components/DayView/get-day-view-events/get-day-view-events.mjs +4 -2
  105. package/esm/components/DayView/get-day-view-events/get-day-view-events.mjs.map +1 -1
  106. package/esm/components/DragContext/DragContext.mjs.map +1 -1
  107. package/esm/components/MobileMonthView/MobileMonthView.mjs.map +1 -1
  108. package/esm/components/MobileMonthView/get-mobile-month-view-events.mjs.map +1 -1
  109. package/esm/components/MonthView/MonthView.mjs +19 -9
  110. package/esm/components/MonthView/MonthView.mjs.map +1 -1
  111. package/esm/components/MonthView/get-month-view-events/add-event-to-day-groups.mjs.map +1 -1
  112. package/esm/components/MonthView/get-month-view-events/calculate-event-position-in-week.mjs.map +1 -1
  113. package/esm/components/MonthView/get-month-view-events/find-available-row.mjs.map +1 -1
  114. package/esm/components/MonthView/get-month-view-events/get-month-positioned-events.mjs.map +1 -1
  115. package/esm/components/MonthView/get-month-view-events/get-month-view-events.mjs.map +1 -1
  116. package/esm/components/MonthView/get-month-view-events/get-weeks-in-range.mjs.map +1 -1
  117. package/esm/components/MonthView/get-renderable-month-event-segments.mjs +121 -0
  118. package/esm/components/MonthView/get-renderable-month-event-segments.mjs.map +1 -0
  119. package/esm/components/MonthView/handle-month-view-key-down.mjs.map +1 -1
  120. package/esm/components/MoreEvents/MoreEvents.mjs.map +1 -1
  121. package/esm/components/Schedule/Schedule.mjs.map +1 -1
  122. package/esm/components/ScheduleEvent/ScheduleEvent.mjs.map +1 -1
  123. package/esm/components/ScheduleEvent/ScheduleEvent.module.mjs.map +1 -1
  124. package/esm/components/ScheduleHeader/HeaderControl/HeaderControl.mjs.map +1 -1
  125. package/esm/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.mjs.map +1 -1
  126. package/esm/components/ScheduleHeader/ScheduleHeader.mjs.map +1 -1
  127. package/esm/components/ScheduleHeader/ScheduleHeaderBase.mjs.map +1 -1
  128. package/esm/components/ScheduleHeader/ScheduleHeaderContext.mjs.map +1 -1
  129. package/esm/components/ScheduleHeader/ViewSelect/ViewSelect.mjs.map +1 -1
  130. package/esm/components/WeekView/WeekView.mjs +1 -0
  131. package/esm/components/WeekView/WeekView.mjs.map +1 -1
  132. package/esm/components/WeekView/WeekViewDay.mjs +5 -2
  133. package/esm/components/WeekView/WeekViewDay.mjs.map +1 -1
  134. package/esm/components/WeekView/get-week-label/get-week-label.mjs.map +1 -1
  135. package/esm/components/WeekView/get-week-view-events/assign-event-rows.mjs.map +1 -1
  136. package/esm/components/WeekView/get-week-view-events/calculate-all-day-event-offset.mjs.map +1 -1
  137. package/esm/components/WeekView/get-week-view-events/calculate-all-day-event-width.mjs.map +1 -1
  138. package/esm/components/WeekView/get-week-view-events/calculate-event-days.mjs.map +1 -1
  139. package/esm/components/WeekView/get-week-view-events/calculate-regular-event-overlaps.mjs.map +1 -1
  140. package/esm/components/WeekView/get-week-view-events/filter-week-view-events.mjs.map +1 -1
  141. package/esm/components/WeekView/get-week-view-events/find-available-column.mjs.map +1 -1
  142. package/esm/components/WeekView/get-week-view-events/get-event-end-date.mjs.map +1 -1
  143. package/esm/components/WeekView/get-week-view-events/get-hanging-status.mjs.map +1 -1
  144. package/esm/components/WeekView/get-week-view-events/get-week-positioned-events.mjs +5 -3
  145. package/esm/components/WeekView/get-week-view-events/get-week-positioned-events.mjs.map +1 -1
  146. package/esm/components/WeekView/get-week-view-events/get-week-view-events.mjs.map +1 -1
  147. package/esm/components/WeekView/handle-week-view-key-down.mjs.map +1 -1
  148. package/esm/components/YearView/YearView.mjs.map +1 -1
  149. package/esm/components/YearView/YearViewMonth.mjs.map +1 -1
  150. package/esm/components/YearView/get-year-view-events/get-year-view-events.mjs.map +1 -1
  151. package/esm/components/YearView/handle-year-view-key-down.mjs.map +1 -1
  152. package/esm/hooks/use-auto-scroll-on-drag.mjs.map +1 -1
  153. package/esm/hooks/use-drag-drop-handlers.mjs.map +1 -1
  154. package/esm/hooks/use-drag-state.mjs.map +1 -1
  155. package/esm/hooks/use-event-resize.mjs +9 -5
  156. package/esm/hooks/use-event-resize.mjs.map +1 -1
  157. package/esm/hooks/use-slot-drag-select.mjs.map +1 -1
  158. package/esm/labels.mjs.map +1 -1
  159. package/esm/utils/calculate-drop-time/calculate-drop-time.mjs.map +1 -1
  160. package/esm/utils/calculate-month-drop-date/calculate-month-drop-date.mjs.map +1 -1
  161. package/esm/utils/clamp-interval-minutes/clamp-interval-minutes.mjs.map +1 -1
  162. package/esm/utils/expand-recurring-events/expand-recurring-events.mjs.map +1 -1
  163. package/esm/utils/format-date/format-date.mjs.map +1 -1
  164. package/esm/utils/get-business-hours-mod/get-business-hours-mod.mjs +20 -3
  165. package/esm/utils/get-business-hours-mod/get-business-hours-mod.mjs.map +1 -1
  166. package/esm/utils/get-current-time-position/get-current-time-position.mjs.map +1 -1
  167. package/esm/utils/get-day-position/get-day-position.mjs +11 -8
  168. package/esm/utils/get-day-position/get-day-position.mjs.map +1 -1
  169. package/esm/utils/get-day-time-intervals/get-day-time-intervals.mjs.map +1 -1
  170. package/esm/utils/get-end-of-week/get-end-of-week.mjs.map +1 -1
  171. package/esm/utils/get-month-days/get-month-days.mjs.map +1 -1
  172. package/esm/utils/get-month-range/get-month-range.mjs.map +1 -1
  173. package/esm/utils/get-months-by-quarter/get-months-by-quarter.mjs.map +1 -1
  174. package/esm/utils/get-months-list/get-months-list.mjs.map +1 -1
  175. package/esm/utils/get-start-of-week/get-start-of-week.mjs.map +1 -1
  176. package/esm/utils/get-visible-events/get-visible-events.mjs.map +1 -1
  177. package/esm/utils/get-week-days/get-week-days.mjs.map +1 -1
  178. package/esm/utils/get-week-number/get-week-number.mjs.map +1 -1
  179. package/esm/utils/get-weekdays-names/get-weekdays-names.mjs.map +1 -1
  180. package/esm/utils/get-years-list/get-years-list.mjs.map +1 -1
  181. package/esm/utils/is-after-min-date/is-after-min-date.mjs.map +1 -1
  182. package/esm/utils/is-all-day-event/is-all-day-event.mjs.map +1 -1
  183. package/esm/utils/is-before-max-date/is-before-max-date.mjs.map +1 -1
  184. package/esm/utils/is-event-in-time-range/is-event-in-time-range.mjs.map +1 -1
  185. package/esm/utils/is-events-overlap/is-events-overlap.mjs.map +1 -1
  186. package/esm/utils/is-in-time-range/is-in-time-range.mjs.map +1 -1
  187. package/esm/utils/is-multiday-event/is-multiday-event.mjs.map +1 -1
  188. package/esm/utils/is-same-month/is-same-month.mjs.map +1 -1
  189. package/esm/utils/is-within-week/is-within-week.mjs.map +1 -1
  190. package/esm/utils/next-week/next-week.mjs.map +1 -1
  191. package/esm/utils/parse-time-string/parse-time-string.mjs.map +1 -1
  192. package/esm/utils/previous-week/previous-week.mjs.map +1 -1
  193. package/esm/utils/sort-events/sort-events.mjs.map +1 -1
  194. package/esm/utils/to-date-string/to-date-string.mjs.map +1 -1
  195. package/esm/utils/to-time-string/to-time-string.mjs.map +1 -1
  196. package/esm/utils/validate-event/validate-event.mjs.map +1 -1
  197. package/lib/components/DayView/get-day-view-events/get-day-positioned-events.d.ts +3 -1
  198. package/lib/components/DayView/get-day-view-events/get-day-view-events.d.ts +2 -1
  199. package/lib/components/MonthView/get-renderable-month-event-segments.d.ts +16 -0
  200. package/lib/components/Schedule/Schedule.d.ts +1 -1
  201. package/lib/components/WeekView/WeekView.d.ts +3 -2
  202. package/lib/components/WeekView/WeekViewDay.d.ts +3 -3
  203. package/lib/components/WeekView/get-week-view-events/get-week-positioned-events.d.ts +3 -1
  204. package/lib/utils/get-business-hours-mod/get-business-hours-mod.d.ts +12 -3
  205. package/lib/utils/get-day-position/get-day-position.d.ts +3 -1
  206. package/lib/utils/index.d.ts +1 -1
  207. package/package.json +4 -4
  208. package/styles.css +25 -0
  209. package/styles.layer.css +25 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-renderable-month-event-segments.mjs","names":[],"sources":["../../../src/components/MonthView/get-renderable-month-event-segments.ts"],"sourcesContent":["import { DateStringValue, MonthEventPositionData, MonthPositionedEventData } from '../../types';\n\nconst DAYS_IN_WEEK = 7;\nconst DAY_WIDTH = 100 / DAYS_IN_WEEK;\n\ninterface GetRenderableMonthEventSegmentsInput {\n events: MonthPositionedEventData[];\n groupedByDay: Record<string, MonthPositionedEventData[]>;\n maxEventsPerDay: number;\n week: DateStringValue[];\n}\n\ninterface EventDayRange {\n startDayIndex: number;\n endDayIndex: number;\n}\n\ninterface SegmentRange extends EventDayRange {\n row: number;\n}\n\nexport interface RenderableMonthEventSegment {\n event: MonthPositionedEventData;\n position: MonthEventPositionData;\n clipStart: boolean;\n clipEnd: boolean;\n key: string;\n}\n\nfunction getEventDayRange(event: MonthPositionedEventData): EventDayRange {\n const startDayIndex = Math.max(0, Math.round(event.position.startOffset / DAY_WIDTH));\n const daysSpanned = Math.max(1, Math.round(event.position.width / DAY_WIDTH));\n\n return {\n startDayIndex,\n endDayIndex: Math.min(DAYS_IN_WEEK - 1, startDayIndex + daysSpanned - 1),\n };\n}\n\nfunction getFirstAvailableRow(usedRows: Set<number>, maxEventsPerDay: number): number | null {\n for (let row = 0; row < maxEventsPerDay; row += 1) {\n if (!usedRows.has(row)) {\n return row;\n }\n }\n\n return null;\n}\n\nfunction getSegmentHanging(\n originalHanging: MonthEventPositionData['hanging'],\n touchesStart: boolean,\n touchesEnd: boolean\n): MonthEventPositionData['hanging'] {\n const hangsFromStart =\n touchesStart && (originalHanging === 'start' || originalHanging === 'both');\n const hangsFromEnd = touchesEnd && (originalHanging === 'end' || originalHanging === 'both');\n\n if (hangsFromStart && hangsFromEnd) {\n return 'both';\n }\n\n if (hangsFromStart) {\n return 'start';\n }\n\n if (hangsFromEnd) {\n return 'end';\n }\n\n return 'none';\n}\n\nfunction getSegmentPosition(\n event: MonthPositionedEventData,\n segment: SegmentRange,\n eventRange: EventDayRange\n): MonthEventPositionData {\n const touchesStart = segment.startDayIndex === eventRange.startDayIndex;\n const touchesEnd = segment.endDayIndex === eventRange.endDayIndex;\n\n return {\n ...event.position,\n startOffset: (segment.startDayIndex / DAYS_IN_WEEK) * 100,\n width: ((segment.endDayIndex - segment.startDayIndex + 1) / DAYS_IN_WEEK) * 100,\n row: segment.row,\n hanging: getSegmentHanging(event.position.hanging, touchesStart, touchesEnd),\n };\n}\n\nfunction getEventKey(event: MonthPositionedEventData): string | number {\n return event.id;\n}\n\nexport function getRenderableMonthEventSegments({\n events,\n groupedByDay,\n maxEventsPerDay,\n week,\n}: GetRenderableMonthEventSegmentsInput): RenderableMonthEventSegment[] {\n const eventIndexes = new Map<MonthPositionedEventData, number>();\n const eventRanges = new Map<MonthPositionedEventData, EventDayRange>();\n const renderRows = new Map<MonthPositionedEventData, Map<number, number>>();\n\n events.forEach((event, index) => {\n eventIndexes.set(event, index);\n eventRanges.set(event, getEventDayRange(event));\n });\n\n const setRenderRow = (event: MonthPositionedEventData, dayIndex: number, row: number) => {\n if (!renderRows.has(event)) {\n renderRows.set(event, new Map());\n }\n\n renderRows.get(event)!.set(dayIndex, row);\n };\n\n for (let dayIndex = 0; dayIndex < week.length; dayIndex += 1) {\n const dayEvents = groupedByDay[week[dayIndex]] || [];\n const dayEventIds = new Set(dayEvents.map((event) => getEventKey(event)));\n const dayWeekEvents = events.filter((event) => {\n const range = eventRanges.get(event)!;\n return (\n dayEventIds.has(getEventKey(event)) &&\n dayIndex >= range.startDayIndex &&\n dayIndex <= range.endDayIndex\n );\n });\n\n if (dayEvents.length > maxEventsPerDay) {\n dayWeekEvents.forEach((event) => {\n if (event.position.row < maxEventsPerDay) {\n setRenderRow(event, dayIndex, event.position.row);\n }\n });\n\n continue;\n }\n\n const usedRows = new Set<number>();\n const sortedDayEvents = [...dayWeekEvents].sort((a, b) => {\n const rowDiff = a.position.row - b.position.row;\n\n if (rowDiff !== 0) {\n return rowDiff;\n }\n\n return eventIndexes.get(a)! - eventIndexes.get(b)!;\n });\n\n sortedDayEvents.forEach((event) => {\n let row = event.position.row;\n\n if (row >= maxEventsPerDay || usedRows.has(row)) {\n const availableRow = getFirstAvailableRow(usedRows, maxEventsPerDay);\n\n if (availableRow === null) {\n return;\n }\n\n row = availableRow;\n }\n\n usedRows.add(row);\n setRenderRow(event, dayIndex, row);\n });\n }\n\n return events.flatMap((event) => {\n const eventRange = eventRanges.get(event)!;\n const eventRenderRows = renderRows.get(event);\n const segments: RenderableMonthEventSegment[] = [];\n let currentSegment: SegmentRange | null = null;\n\n const addSegment = (segment: SegmentRange) => {\n const position = getSegmentPosition(event, segment, eventRange);\n\n segments.push({\n event,\n position,\n clipStart: segment.startDayIndex > eventRange.startDayIndex,\n clipEnd: segment.endDayIndex < eventRange.endDayIndex,\n key: `${event.id}-${event.position.weekIndex}-${segment.startDayIndex}-${segment.endDayIndex}-${segment.row}`,\n });\n };\n\n for (\n let dayIndex = eventRange.startDayIndex;\n dayIndex <= eventRange.endDayIndex;\n dayIndex += 1\n ) {\n const row = eventRenderRows?.get(dayIndex);\n\n if (row === undefined) {\n if (currentSegment) {\n addSegment(currentSegment);\n currentSegment = null;\n }\n\n continue;\n }\n\n if (currentSegment && currentSegment.row === row) {\n currentSegment.endDayIndex = dayIndex;\n } else {\n if (currentSegment) {\n addSegment(currentSegment);\n }\n\n currentSegment = {\n startDayIndex: dayIndex,\n endDayIndex: dayIndex,\n row,\n };\n }\n }\n\n if (currentSegment) {\n addSegment(currentSegment);\n }\n\n return segments;\n });\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"handle-month-view-key-down.mjs","names":[],"sources":["../../../src/components/MonthView/handle-month-view-key-down.ts"],"sourcesContent":["import { RefObject } from 'react';\n\n/** Reference to a 2D array of day buttons: [weekIndex][dayIndex] */\nexport type MonthViewControlsRef = RefObject<HTMLButtonElement[][]>;\n\ntype Direction = 'up' | 'down' | 'left' | 'right';\n\ninterface DayPosition {\n weekIndex: number;\n dayIndex: number;\n}\n\nfunction getDirection(key: KeyboardEvent['key']): Direction | null {\n switch (key) {\n case 'ArrowDown':\n return 'down';\n case 'ArrowUp':\n return 'up';\n case 'ArrowRight':\n return 'right';\n case 'ArrowLeft':\n return 'left';\n default:\n return null;\n }\n}\n\nfunction getControlsSize(controlsRef: MonthViewControlsRef): number[] | null {\n if (!controlsRef.current) {\n return null;\n }\n return controlsRef.current.map((week) => (week ? week.length : 0));\n}\n\ninterface GetNextPositionInput {\n direction: Direction;\n weekIndex: number;\n dayIndex: number;\n size: number[];\n}\n\nfunction getNextPosition({\n direction,\n weekIndex,\n dayIndex,\n size,\n}: GetNextPositionInput): DayPosition | null {\n const currentWeekSize = size[weekIndex];\n if (!currentWeekSize) {\n return null;\n }\n\n switch (direction) {\n case 'up': {\n if (weekIndex === 0) {\n return null;\n }\n\n const prevWeekSize = size[weekIndex - 1];\n const clampedDayIndex = Math.min(dayIndex, prevWeekSize - 1);\n return {\n weekIndex: weekIndex - 1,\n dayIndex: clampedDayIndex,\n };\n }\n\n case 'down': {\n if (weekIndex === size.length - 1) {\n return null;\n }\n\n const nextWeekSize = size[weekIndex + 1];\n const clampedDayIndex = Math.min(dayIndex, nextWeekSize - 1);\n return {\n weekIndex: weekIndex + 1,\n dayIndex: clampedDayIndex,\n };\n }\n\n case 'left': {\n if (dayIndex === 0) {\n if (weekIndex === 0) {\n return null;\n }\n\n return {\n weekIndex: weekIndex - 1,\n dayIndex: size[weekIndex - 1] - 1,\n };\n }\n\n return {\n weekIndex,\n dayIndex: dayIndex - 1,\n };\n }\n\n case 'right': {\n if (dayIndex === currentWeekSize - 1) {\n if (weekIndex === size.length - 1) {\n return null;\n }\n\n return {\n weekIndex: weekIndex + 1,\n dayIndex: 0,\n };\n }\n\n return {\n weekIndex,\n dayIndex: dayIndex + 1,\n };\n }\n\n default:\n return null;\n }\n}\n\ninterface FocusOnNextControlInput {\n controlsRef: MonthViewControlsRef;\n direction: Direction;\n weekIndex: number;\n dayIndex: number;\n size: number[];\n}\n\nfunction focusOnNextFocusableControl({\n controlsRef,\n direction,\n weekIndex,\n dayIndex,\n size,\n}: FocusOnNextControlInput): void {\n const nextPosition = getNextPosition({\n direction,\n weekIndex,\n dayIndex,\n size,\n });\n\n if (!nextPosition) {\n return;\n }\n\n const controlToFocus = controlsRef.current?.[nextPosition.weekIndex]?.[nextPosition.dayIndex];\n\n if (!controlToFocus) {\n return;\n }\n\n if (\n controlToFocus.disabled ||\n controlToFocus.getAttribute('data-hidden') ||\n controlToFocus.getAttribute('data-day-placeholder')\n ) {\n focusOnNextFocusableControl({\n controlsRef,\n direction,\n weekIndex: nextPosition.weekIndex,\n dayIndex: nextPosition.dayIndex,\n size,\n });\n } else {\n controlToFocus.focus();\n }\n}\n\nexport interface HandleMonthViewKeyDownInput {\n controlsRef: MonthViewControlsRef;\n weekIndex: number;\n dayIndex: number;\n event: React.KeyboardEvent<HTMLButtonElement>;\n}\n\nexport function handleMonthViewKeyDown({\n controlsRef,\n weekIndex,\n dayIndex,\n event,\n}: HandleMonthViewKeyDownInput): void {\n const direction = getDirection(event.key);\n\n if (direction) {\n event.preventDefault();\n\n const size = getControlsSize(controlsRef);\n\n if (!size) {\n return;\n }\n\n focusOnNextFocusableControl({\n controlsRef,\n direction,\n weekIndex,\n dayIndex,\n size,\n });\n }\n}\n"],"mappings":";;AAYA,SAAS,aAAa,KAA6C;AACjE,SAAQ,KAAR;EACE,KAAK,YACH,QAAO;EACT,KAAK,UACH,QAAO;EACT,KAAK,aACH,QAAO;EACT,KAAK,YACH,QAAO;EACT,QACE,QAAO;;;AAIb,SAAS,gBAAgB,aAAoD;AAC3E,KAAI,CAAC,YAAY,QACf,QAAO;AAET,QAAO,YAAY,QAAQ,KAAK,SAAU,OAAO,KAAK,SAAS,EAAG;;AAUpE,SAAS,gBAAgB,EACvB,WACA,WACA,UACA,QAC2C;CAC3C,MAAM,kBAAkB,KAAK;AAC7B,KAAI,CAAC,gBACH,QAAO;AAGT,SAAQ,WAAR;EACE,KAAK,MAAM;AACT,OAAI,cAAc,EAChB,QAAO;GAGT,MAAM,eAAe,KAAK,YAAY;GACtC,MAAM,kBAAkB,KAAK,IAAI,UAAU,eAAe,EAAE;AAC5D,UAAO;IACL,WAAW,YAAY;IACvB,UAAU;IACX;;EAGH,KAAK,QAAQ;AACX,OAAI,cAAc,KAAK,SAAS,EAC9B,QAAO;GAGT,MAAM,eAAe,KAAK,YAAY;GACtC,MAAM,kBAAkB,KAAK,IAAI,UAAU,eAAe,EAAE;AAC5D,UAAO;IACL,WAAW,YAAY;IACvB,UAAU;IACX;;EAGH,KAAK;AACH,OAAI,aAAa,GAAG;AAClB,QAAI,cAAc,EAChB,QAAO;AAGT,WAAO;KACL,WAAW,YAAY;KACvB,UAAU,KAAK,YAAY,KAAK;KACjC;;AAGH,UAAO;IACL;IACA,UAAU,WAAW;IACtB;EAGH,KAAK;AACH,OAAI,aAAa,kBAAkB,GAAG;AACpC,QAAI,cAAc,KAAK,SAAS,EAC9B,QAAO;AAGT,WAAO;KACL,WAAW,YAAY;KACvB,UAAU;KACX;;AAGH,UAAO;IACL;IACA,UAAU,WAAW;IACtB;EAGH,QACE,QAAO;;;AAYb,SAAS,4BAA4B,EACnC,aACA,WACA,WACA,UACA,QACgC;CAChC,MAAM,eAAe,gBAAgB;EACnC;EACA;EACA;EACA;EACD,CAAC;AAEF,KAAI,CAAC,aACH;CAGF,MAAM,iBAAiB,YAAY,UAAU,aAAa,aAAa,aAAa;AAEpF,KAAI,CAAC,eACH;AAGF,KACE,eAAe,YACf,eAAe,aAAa,cAAc,IAC1C,eAAe,aAAa,uBAAuB,CAEnD,6BAA4B;EAC1B;EACA;EACA,WAAW,aAAa;EACxB,UAAU,aAAa;EACvB;EACD,CAAC;KAEF,gBAAe,OAAO;;AAW1B,SAAgB,uBAAuB,EACrC,aACA,WACA,UACA,SACoC;CACpC,MAAM,YAAY,aAAa,MAAM,IAAI;AAEzC,KAAI,WAAW;AACb,QAAM,gBAAgB;EAEtB,MAAM,OAAO,gBAAgB,YAAY;AAEzC,MAAI,CAAC,KACH;AAGF,8BAA4B;GAC1B;GACA;GACA;GACA;GACA;GACD,CAAC"}
1
+ {"version":3,"file":"handle-month-view-key-down.mjs","names":[],"sources":["../../../src/components/MonthView/handle-month-view-key-down.ts"],"sourcesContent":["import { RefObject } from 'react';\n\n/** Reference to a 2D array of day buttons: [weekIndex][dayIndex] */\nexport type MonthViewControlsRef = RefObject<HTMLButtonElement[][]>;\n\ntype Direction = 'up' | 'down' | 'left' | 'right';\n\ninterface DayPosition {\n weekIndex: number;\n dayIndex: number;\n}\n\nfunction getDirection(key: KeyboardEvent['key']): Direction | null {\n switch (key) {\n case 'ArrowDown':\n return 'down';\n case 'ArrowUp':\n return 'up';\n case 'ArrowRight':\n return 'right';\n case 'ArrowLeft':\n return 'left';\n default:\n return null;\n }\n}\n\nfunction getControlsSize(controlsRef: MonthViewControlsRef): number[] | null {\n if (!controlsRef.current) {\n return null;\n }\n return controlsRef.current.map((week) => (week ? week.length : 0));\n}\n\ninterface GetNextPositionInput {\n direction: Direction;\n weekIndex: number;\n dayIndex: number;\n size: number[];\n}\n\nfunction getNextPosition({\n direction,\n weekIndex,\n dayIndex,\n size,\n}: GetNextPositionInput): DayPosition | null {\n const currentWeekSize = size[weekIndex];\n if (!currentWeekSize) {\n return null;\n }\n\n switch (direction) {\n case 'up': {\n if (weekIndex === 0) {\n return null;\n }\n\n const prevWeekSize = size[weekIndex - 1];\n const clampedDayIndex = Math.min(dayIndex, prevWeekSize - 1);\n return {\n weekIndex: weekIndex - 1,\n dayIndex: clampedDayIndex,\n };\n }\n\n case 'down': {\n if (weekIndex === size.length - 1) {\n return null;\n }\n\n const nextWeekSize = size[weekIndex + 1];\n const clampedDayIndex = Math.min(dayIndex, nextWeekSize - 1);\n return {\n weekIndex: weekIndex + 1,\n dayIndex: clampedDayIndex,\n };\n }\n\n case 'left': {\n if (dayIndex === 0) {\n if (weekIndex === 0) {\n return null;\n }\n\n return {\n weekIndex: weekIndex - 1,\n dayIndex: size[weekIndex - 1] - 1,\n };\n }\n\n return {\n weekIndex,\n dayIndex: dayIndex - 1,\n };\n }\n\n case 'right': {\n if (dayIndex === currentWeekSize - 1) {\n if (weekIndex === size.length - 1) {\n return null;\n }\n\n return {\n weekIndex: weekIndex + 1,\n dayIndex: 0,\n };\n }\n\n return {\n weekIndex,\n dayIndex: dayIndex + 1,\n };\n }\n\n default:\n return null;\n }\n}\n\ninterface FocusOnNextControlInput {\n controlsRef: MonthViewControlsRef;\n direction: Direction;\n weekIndex: number;\n dayIndex: number;\n size: number[];\n}\n\nfunction focusOnNextFocusableControl({\n controlsRef,\n direction,\n weekIndex,\n dayIndex,\n size,\n}: FocusOnNextControlInput): void {\n const nextPosition = getNextPosition({\n direction,\n weekIndex,\n dayIndex,\n size,\n });\n\n if (!nextPosition) {\n return;\n }\n\n const controlToFocus = controlsRef.current?.[nextPosition.weekIndex]?.[nextPosition.dayIndex];\n\n if (!controlToFocus) {\n return;\n }\n\n if (\n controlToFocus.disabled ||\n controlToFocus.getAttribute('data-hidden') ||\n controlToFocus.getAttribute('data-day-placeholder')\n ) {\n focusOnNextFocusableControl({\n controlsRef,\n direction,\n weekIndex: nextPosition.weekIndex,\n dayIndex: nextPosition.dayIndex,\n size,\n });\n } else {\n controlToFocus.focus();\n }\n}\n\nexport interface HandleMonthViewKeyDownInput {\n controlsRef: MonthViewControlsRef;\n weekIndex: number;\n dayIndex: number;\n event: React.KeyboardEvent<HTMLButtonElement>;\n}\n\nexport function handleMonthViewKeyDown({\n controlsRef,\n weekIndex,\n dayIndex,\n event,\n}: HandleMonthViewKeyDownInput): void {\n const direction = getDirection(event.key);\n\n if (direction) {\n event.preventDefault();\n\n const size = getControlsSize(controlsRef);\n\n if (!size) {\n return;\n }\n\n focusOnNextFocusableControl({\n controlsRef,\n direction,\n weekIndex,\n dayIndex,\n size,\n });\n }\n}\n"],"mappings":";;AAYA,SAAS,aAAa,KAA6C;CACjE,QAAQ,KAAR;EACE,KAAK,aACH,OAAO;EACT,KAAK,WACH,OAAO;EACT,KAAK,cACH,OAAO;EACT,KAAK,aACH,OAAO;EACT,SACE,OAAO;CACX;AACF;AAEA,SAAS,gBAAgB,aAAoD;CAC3E,IAAI,CAAC,YAAY,SACf,OAAO;CAET,OAAO,YAAY,QAAQ,KAAK,SAAU,OAAO,KAAK,SAAS,CAAE;AACnE;AASA,SAAS,gBAAgB,EACvB,WACA,WACA,UACA,QAC2C;CAC3C,MAAM,kBAAkB,KAAK;CAC7B,IAAI,CAAC,iBACH,OAAO;CAGT,QAAQ,WAAR;EACE,KAAK,MAAM;GACT,IAAI,cAAc,GAChB,OAAO;GAGT,MAAM,eAAe,KAAK,YAAY;GACtC,MAAM,kBAAkB,KAAK,IAAI,UAAU,eAAe,CAAC;GAC3D,OAAO;IACL,WAAW,YAAY;IACvB,UAAU;GACZ;EACF;EAEA,KAAK,QAAQ;GACX,IAAI,cAAc,KAAK,SAAS,GAC9B,OAAO;GAGT,MAAM,eAAe,KAAK,YAAY;GACtC,MAAM,kBAAkB,KAAK,IAAI,UAAU,eAAe,CAAC;GAC3D,OAAO;IACL,WAAW,YAAY;IACvB,UAAU;GACZ;EACF;EAEA,KAAK;GACH,IAAI,aAAa,GAAG;IAClB,IAAI,cAAc,GAChB,OAAO;IAGT,OAAO;KACL,WAAW,YAAY;KACvB,UAAU,KAAK,YAAY,KAAK;IAClC;GACF;GAEA,OAAO;IACL;IACA,UAAU,WAAW;GACvB;EAGF,KAAK;GACH,IAAI,aAAa,kBAAkB,GAAG;IACpC,IAAI,cAAc,KAAK,SAAS,GAC9B,OAAO;IAGT,OAAO;KACL,WAAW,YAAY;KACvB,UAAU;IACZ;GACF;GAEA,OAAO;IACL;IACA,UAAU,WAAW;GACvB;EAGF,SACE,OAAO;CACX;AACF;AAUA,SAAS,4BAA4B,EACnC,aACA,WACA,WACA,UACA,QACgC;CAChC,MAAM,eAAe,gBAAgB;EACnC;EACA;EACA;EACA;CACF,CAAC;CAED,IAAI,CAAC,cACH;CAGF,MAAM,iBAAiB,YAAY,UAAU,aAAa,aAAa,aAAa;CAEpF,IAAI,CAAC,gBACH;CAGF,IACE,eAAe,YACf,eAAe,aAAa,aAAa,KACzC,eAAe,aAAa,sBAAsB,GAElD,4BAA4B;EAC1B;EACA;EACA,WAAW,aAAa;EACxB,UAAU,aAAa;EACvB;CACF,CAAC;MAED,eAAe,MAAM;AAEzB;AASA,SAAgB,uBAAuB,EACrC,aACA,WACA,UACA,SACoC;CACpC,MAAM,YAAY,aAAa,MAAM,GAAG;CAExC,IAAI,WAAW;EACb,MAAM,eAAe;EAErB,MAAM,OAAO,gBAAgB,WAAW;EAExC,IAAI,CAAC,MACH;EAGF,4BAA4B;GAC1B;GACA;GACA;GACA;GACA;EACF,CAAC;CACH;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"MoreEvents.mjs","names":["classes"],"sources":["../../../src/components/MoreEvents/MoreEvents.tsx"],"sourcesContent":["import {\n BoxProps,\n ElementProps,\n factory,\n Factory,\n MantineRadius,\n Modal,\n ModalProps,\n Popover,\n PopoverProps,\n StylesApiProps,\n UnstyledButton,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { useDisclosure } from '@mantine/hooks';\nimport { getLabel, ScheduleLabelsOverride } from '../../labels';\nimport { ScheduleEventData, ScheduleMode } from '../../types';\nimport { RenderEvent, RenderEventBody, ScheduleEvent } from '../ScheduleEvent/ScheduleEvent';\nimport classes from './MoreEvents.module.css';\n\nexport type MoreEventsDropdownType = 'popover' | 'modal';\n\nexport type MoreEventsStylesNames = 'moreEventsButton' | 'moreEventsList' | 'moreEventsDropdown';\n\nexport interface MoreEventsProps\n extends BoxProps, StylesApiProps<MoreEventsFactory>, ElementProps<'button'> {\n /** List of events to display */\n events: ScheduleEventData[];\n\n /** Events count to use for `+X more` label */\n moreEventsCount: number;\n\n /** Key of `theme.radius` or any valid CSS value to set border-radius @default theme.defaultRadius */\n radius?: MantineRadius;\n\n /** Title for the Modal component, ignored if `dropdownType` is not 'modal' */\n modalTitle?: string;\n\n /** Type of dropdown to use for displaying more events @default 'popover' */\n dropdownType?: MoreEventsDropdownType;\n\n /** Props passed down to `Popover` component */\n popoverProps?: Partial<Omit<PopoverProps, 'children'>>;\n\n /** Props passed down to `Modal` component */\n modalProps?: Partial<Omit<ModalProps, 'children'>>;\n\n /** Called when the dropdown is closed */\n onDropdownClose?: () => void;\n\n /** Function to customize event body, `event` object is passed as first argument */\n renderEventBody?: RenderEventBody;\n\n /** Function to fully customize event rendering, receives all props that would be passed to the root element including children */\n renderEvent?: RenderEvent;\n\n /** Labels override */\n labels?: ScheduleLabelsOverride;\n\n /** Interaction mode: 'default' allows all interactions, 'static' disables event interactions @default default */\n mode?: ScheduleMode;\n\n /** Called when an event inside the dropdown is clicked */\n onEventClick?: (event: ScheduleEventData, e: React.MouseEvent<HTMLButtonElement>) => void;\n}\n\nexport type MoreEventsFactory = Factory<{\n props: MoreEventsProps;\n ref: HTMLButtonElement;\n stylesNames: MoreEventsStylesNames;\n}>;\n\nconst defaultProps = {\n dropdownType: 'popover',\n} satisfies Partial<MoreEventsProps>;\n\nexport const MoreEvents = factory<MoreEventsFactory>((_props) => {\n const props = useProps('MoreEvents', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n attributes,\n radius,\n dropdownType,\n events,\n moreEventsCount,\n popoverProps,\n modalProps,\n onDropdownClose,\n children,\n modalTitle,\n renderEventBody,\n renderEvent,\n id,\n labels,\n mode,\n onEventClick,\n ...others\n } = props;\n const [dropdownOpened, dropdownHandlers] = useDisclosure();\n\n const getStyles = useStyles<MoreEventsFactory>({\n name: 'MoreEvents',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n rootSelector: 'moreEventsButton',\n });\n\n const handleClose = () => {\n dropdownHandlers.close();\n onDropdownClose?.();\n };\n\n const eventsList = (\n <div {...getStyles('moreEventsList')}>\n {events.map((event) => (\n <ScheduleEvent\n key={event.id}\n radius={radius}\n event={event}\n size=\"md\"\n renderEventBody={renderEventBody}\n renderEvent={renderEvent}\n mode={mode}\n onClick={onEventClick ? (e) => onEventClick(event, e) : undefined}\n >\n {event.title}\n </ScheduleEvent>\n ))}\n </div>\n );\n\n return (\n <>\n {dropdownType === 'modal' && (\n <Modal\n opened={dropdownOpened}\n onClose={handleClose}\n unstyled={unstyled}\n radius={radius}\n title={modalTitle}\n {...modalProps}\n >\n {eventsList}\n </Modal>\n )}\n\n <Popover\n position=\"bottom-start\"\n width={260}\n opened={dropdownOpened}\n trapFocus\n returnFocus={false}\n unstyled={unstyled}\n disabled={popoverProps?.disabled || dropdownType === 'modal'}\n radius={radius}\n transitionProps={{ transition: 'pop', duration: 120 }}\n offset={-46}\n id={id}\n {...popoverProps}\n onChange={(_opened) => {\n if (!_opened) {\n popoverProps?.onChange?.(_opened);\n handleClose();\n }\n }}\n >\n <Popover.Target>\n <UnstyledButton\n {...getStyles('moreEventsButton')}\n mod={{ static: mode === 'static' }}\n onClick={() => dropdownHandlers.toggle()}\n {...others}\n >\n {getLabel('moreLabel', labels)(moreEventsCount)}\n </UnstyledButton>\n </Popover.Target>\n\n <Popover.Dropdown {...getStyles('moreEventsDropdown')}>{eventsList}</Popover.Dropdown>\n </Popover>\n </>\n );\n});\n\nMoreEvents.displayName = '@mantine/schedule/MoreEvents';\nMoreEvents.classes = classes;\n"],"mappings":";;;;;;;;AAyEA,MAAM,eAAe,EACnB,cAAc,WACf;AAED,MAAa,aAAa,SAA4B,WAAW;CAC/D,MAAM,QAAQ,SAAS,cAAc,cAAc,OAAO;CAC1D,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,YACA,QACA,cACA,QACA,iBACA,cACA,YACA,iBACA,UACA,YACA,iBACA,aACA,IACA,QACA,MACA,cACA,GAAG,WACD;CACJ,MAAM,CAAC,gBAAgB,oBAAoB,eAAe;CAE1D,MAAM,YAAY,UAA6B;EAC7C,MAAM;EACN,SAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,cAAc;EACf,CAAC;CAEF,MAAM,oBAAoB;AACxB,mBAAiB,OAAO;AACxB,qBAAmB;;CAGrB,MAAM,aACJ,oBAAC,OAAD;EAAK,GAAI,UAAU,iBAAiB;YACjC,OAAO,KAAK,UACX,oBAAC,eAAD;GAEU;GACD;GACP,MAAK;GACY;GACJ;GACP;GACN,SAAS,gBAAgB,MAAM,aAAa,OAAO,EAAE,GAAG,KAAA;aAEvD,MAAM;GACO,EAVT,MAAM,GAUG,CAChB;EACE,CAAA;AAGR,QACE,qBAAA,UAAA,EAAA,UAAA,CACG,iBAAiB,WAChB,oBAAC,OAAD;EACE,QAAQ;EACR,SAAS;EACC;EACF;EACR,OAAO;EACP,GAAI;YAEH;EACK,CAAA,EAGV,qBAAC,SAAD;EACE,UAAS;EACT,OAAO;EACP,QAAQ;EACR,WAAA;EACA,aAAa;EACH;EACV,UAAU,cAAc,YAAY,iBAAiB;EAC7C;EACR,iBAAiB;GAAE,YAAY;GAAO,UAAU;GAAK;EACrD,QAAQ;EACJ;EACJ,GAAI;EACJ,WAAW,YAAY;AACrB,OAAI,CAAC,SAAS;AACZ,kBAAc,WAAW,QAAQ;AACjC,iBAAa;;;YAhBnB,CAoBE,oBAAC,QAAQ,QAAT,EAAA,UACE,oBAAC,gBAAD;GACE,GAAI,UAAU,mBAAmB;GACjC,KAAK,EAAE,QAAQ,SAAS,UAAU;GAClC,eAAe,iBAAiB,QAAQ;GACxC,GAAI;aAEH,SAAS,aAAa,OAAO,CAAC,gBAAgB;GAChC,CAAA,EACF,CAAA,EAEjB,oBAAC,QAAQ,UAAT;GAAkB,GAAI,UAAU,qBAAqB;aAAG;GAA8B,CAAA,CAC9E;IACT,EAAA,CAAA;EAEL;AAEF,WAAW,cAAc;AACzB,WAAW,UAAUA"}
1
+ {"version":3,"file":"MoreEvents.mjs","names":["classes"],"sources":["../../../src/components/MoreEvents/MoreEvents.tsx"],"sourcesContent":["import {\n BoxProps,\n ElementProps,\n factory,\n Factory,\n MantineRadius,\n Modal,\n ModalProps,\n Popover,\n PopoverProps,\n StylesApiProps,\n UnstyledButton,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { useDisclosure } from '@mantine/hooks';\nimport { getLabel, ScheduleLabelsOverride } from '../../labels';\nimport { ScheduleEventData, ScheduleMode } from '../../types';\nimport { RenderEvent, RenderEventBody, ScheduleEvent } from '../ScheduleEvent/ScheduleEvent';\nimport classes from './MoreEvents.module.css';\n\nexport type MoreEventsDropdownType = 'popover' | 'modal';\n\nexport type MoreEventsStylesNames = 'moreEventsButton' | 'moreEventsList' | 'moreEventsDropdown';\n\nexport interface MoreEventsProps\n extends BoxProps, StylesApiProps<MoreEventsFactory>, ElementProps<'button'> {\n /** List of events to display */\n events: ScheduleEventData[];\n\n /** Events count to use for `+X more` label */\n moreEventsCount: number;\n\n /** Key of `theme.radius` or any valid CSS value to set border-radius @default theme.defaultRadius */\n radius?: MantineRadius;\n\n /** Title for the Modal component, ignored if `dropdownType` is not 'modal' */\n modalTitle?: string;\n\n /** Type of dropdown to use for displaying more events @default 'popover' */\n dropdownType?: MoreEventsDropdownType;\n\n /** Props passed down to `Popover` component */\n popoverProps?: Partial<Omit<PopoverProps, 'children'>>;\n\n /** Props passed down to `Modal` component */\n modalProps?: Partial<Omit<ModalProps, 'children'>>;\n\n /** Called when the dropdown is closed */\n onDropdownClose?: () => void;\n\n /** Function to customize event body, `event` object is passed as first argument */\n renderEventBody?: RenderEventBody;\n\n /** Function to fully customize event rendering, receives all props that would be passed to the root element including children */\n renderEvent?: RenderEvent;\n\n /** Labels override */\n labels?: ScheduleLabelsOverride;\n\n /** Interaction mode: 'default' allows all interactions, 'static' disables event interactions @default default */\n mode?: ScheduleMode;\n\n /** Called when an event inside the dropdown is clicked */\n onEventClick?: (event: ScheduleEventData, e: React.MouseEvent<HTMLButtonElement>) => void;\n}\n\nexport type MoreEventsFactory = Factory<{\n props: MoreEventsProps;\n ref: HTMLButtonElement;\n stylesNames: MoreEventsStylesNames;\n}>;\n\nconst defaultProps = {\n dropdownType: 'popover',\n} satisfies Partial<MoreEventsProps>;\n\nexport const MoreEvents = factory<MoreEventsFactory>((_props) => {\n const props = useProps('MoreEvents', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n attributes,\n radius,\n dropdownType,\n events,\n moreEventsCount,\n popoverProps,\n modalProps,\n onDropdownClose,\n children,\n modalTitle,\n renderEventBody,\n renderEvent,\n id,\n labels,\n mode,\n onEventClick,\n ...others\n } = props;\n const [dropdownOpened, dropdownHandlers] = useDisclosure();\n\n const getStyles = useStyles<MoreEventsFactory>({\n name: 'MoreEvents',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n rootSelector: 'moreEventsButton',\n });\n\n const handleClose = () => {\n dropdownHandlers.close();\n onDropdownClose?.();\n };\n\n const eventsList = (\n <div {...getStyles('moreEventsList')}>\n {events.map((event) => (\n <ScheduleEvent\n key={event.id}\n radius={radius}\n event={event}\n size=\"md\"\n renderEventBody={renderEventBody}\n renderEvent={renderEvent}\n mode={mode}\n onClick={onEventClick ? (e) => onEventClick(event, e) : undefined}\n >\n {event.title}\n </ScheduleEvent>\n ))}\n </div>\n );\n\n return (\n <>\n {dropdownType === 'modal' && (\n <Modal\n opened={dropdownOpened}\n onClose={handleClose}\n unstyled={unstyled}\n radius={radius}\n title={modalTitle}\n {...modalProps}\n >\n {eventsList}\n </Modal>\n )}\n\n <Popover\n position=\"bottom-start\"\n width={260}\n opened={dropdownOpened}\n trapFocus\n returnFocus={false}\n unstyled={unstyled}\n disabled={popoverProps?.disabled || dropdownType === 'modal'}\n radius={radius}\n transitionProps={{ transition: 'pop', duration: 120 }}\n offset={-46}\n id={id}\n {...popoverProps}\n onChange={(_opened) => {\n if (!_opened) {\n popoverProps?.onChange?.(_opened);\n handleClose();\n }\n }}\n >\n <Popover.Target>\n <UnstyledButton\n {...getStyles('moreEventsButton')}\n mod={{ static: mode === 'static' }}\n onClick={() => dropdownHandlers.toggle()}\n {...others}\n >\n {getLabel('moreLabel', labels)(moreEventsCount)}\n </UnstyledButton>\n </Popover.Target>\n\n <Popover.Dropdown {...getStyles('moreEventsDropdown')}>{eventsList}</Popover.Dropdown>\n </Popover>\n </>\n );\n});\n\nMoreEvents.displayName = '@mantine/schedule/MoreEvents';\nMoreEvents.classes = classes;\n"],"mappings":";;;;;;;;AAyEA,MAAM,eAAe,EACnB,cAAc,UAChB;AAEA,MAAa,aAAa,SAA4B,WAAW;CAC/D,MAAM,QAAQ,SAAS,cAAc,cAAc,MAAM;CACzD,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,YACA,QACA,cACA,QACA,iBACA,cACA,YACA,iBACA,UACA,YACA,iBACA,aACA,IACA,QACA,MACA,cACA,GAAG,WACD;CACJ,MAAM,CAAC,gBAAgB,oBAAoB,cAAc;CAEzD,MAAM,YAAY,UAA6B;EAC7C,MAAM;EACN,SAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,cAAc;CAChB,CAAC;CAED,MAAM,oBAAoB;EACxB,iBAAiB,MAAM;EACvB,kBAAkB;CACpB;CAEA,MAAM,aACJ,oBAAC,OAAD;EAAK,GAAI,UAAU,gBAAgB;YAChC,OAAO,KAAK,UACX,oBAAC,eAAD;GAEU;GACD;GACP,MAAK;GACY;GACJ;GACP;GACN,SAAS,gBAAgB,MAAM,aAAa,OAAO,CAAC,IAAI,KAAA;aAEvD,MAAM;EACM,GAVR,MAAM,EAUE,CAChB;CACE,CAAA;CAGP,OACE,qBAAA,UAAA,EAAA,UAAA,CACG,iBAAiB,WAChB,oBAAC,OAAD;EACE,QAAQ;EACR,SAAS;EACC;EACF;EACR,OAAO;EACP,GAAI;YAEH;CACI,CAAA,GAGT,qBAAC,SAAD;EACE,UAAS;EACT,OAAO;EACP,QAAQ;EACR,WAAA;EACA,aAAa;EACH;EACV,UAAU,cAAc,YAAY,iBAAiB;EAC7C;EACR,iBAAiB;GAAE,YAAY;GAAO,UAAU;EAAI;EACpD,QAAQ;EACJ;EACJ,GAAI;EACJ,WAAW,YAAY;GACrB,IAAI,CAAC,SAAS;IACZ,cAAc,WAAW,OAAO;IAChC,YAAY;GACd;EACF;YAlBF,CAoBE,oBAAC,QAAQ,QAAT,EAAA,UACE,oBAAC,gBAAD;GACE,GAAI,UAAU,kBAAkB;GAChC,KAAK,EAAE,QAAQ,SAAS,SAAS;GACjC,eAAe,iBAAiB,OAAO;GACvC,GAAI;aAEH,SAAS,aAAa,MAAM,EAAE,eAAe;EAChC,CAAA,EACF,CAAA,GAEhB,oBAAC,QAAQ,UAAT;GAAkB,GAAI,UAAU,oBAAoB;aAAI;EAA6B,CAAA,CAC9E;GACT,EAAA,CAAA;AAEN,CAAC;AAED,WAAW,cAAc;AACzB,WAAW,UAAUA"}
@@ -1 +1 @@
1
- {"version":3,"file":"Schedule.mjs","names":["classes"],"sources":["../../../src/components/Schedule/Schedule.tsx"],"sourcesContent":["import {\n Box,\n BoxProps,\n ElementProps,\n factory,\n Factory,\n MantineRadius,\n StylesApiProps,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { useUncontrolled } from '@mantine/hooks';\nimport { ScheduleLabelsOverride } from '../../labels';\nimport {\n DateStringValue,\n DateTimeStringValue,\n ScheduleEventData,\n ScheduleMode,\n ScheduleViewLevel,\n} from '../../types';\nimport { DayView, DayViewProps, DayViewStylesNames } from '../DayView/DayView';\nimport {\n MobileMonthView,\n MobileMonthViewProps,\n MobileMonthViewStylesNames,\n} from '../MobileMonthView/MobileMonthView';\nimport { MonthView, MonthViewProps, MonthViewStylesNames } from '../MonthView/MonthView';\nimport { RenderEventBody } from '../ScheduleEvent/ScheduleEvent';\nimport { WeekView, WeekViewProps, WeekViewStylesNames } from '../WeekView/WeekView';\nimport { YearView, YearViewProps, YearViewStylesNames } from '../YearView/YearView';\nimport classes from './Schedule.module.css';\n\nexport type ScheduleStylesNames =\n | 'root'\n | 'desktopView'\n | 'mobileView'\n | DayViewStylesNames\n | WeekViewStylesNames\n | MonthViewStylesNames\n | YearViewStylesNames\n | MobileMonthViewStylesNames;\n\nexport type ScheduleLayout = 'default' | 'responsive';\n\ntype ScheduleCommonProps =\n | 'date'\n | 'onDateChange'\n | 'events'\n | 'locale'\n | 'radius'\n | 'labels'\n | 'renderEventBody'\n | 'withEventsDragAndDrop'\n | 'onEventDrop'\n | 'canDragEvent'\n | 'onEventDragStart'\n | 'onEventDragEnd'\n | 'onTimeSlotClick'\n | 'onAllDaySlotClick'\n | 'onEventClick'\n | 'onDayClick'\n | 'onMonthClick'\n | 'withDragSlotSelect'\n | 'onSlotDragEnd'\n | 'view'\n | 'onViewChange'\n | 'mode'\n | 'onExternalEventDrop'\n | 'withEventResize'\n | 'onEventResize'\n | 'canResizeEvent'\n | 'recurrenceExpansionLimit';\n\ntype ScheduleViewProps<T> = Partial<Omit<T, ScheduleCommonProps>>;\n\nexport interface ScheduleProps\n extends BoxProps, StylesApiProps<ScheduleFactory>, ElementProps<'div'> {\n __staticSelector?: string;\n\n /** Current date to display (controlled) */\n date?: Date | DateStringValue;\n\n /** Default date (uncontrolled) */\n defaultDate?: Date | DateStringValue;\n\n /** Called when date changes via navigation */\n onDateChange?: (date: DateStringValue) => void;\n\n /** Current view level (controlled) */\n view?: ScheduleViewLevel;\n\n /** Default view level (uncontrolled) */\n defaultView?: ScheduleViewLevel;\n\n /** Called when view level changes */\n onViewChange?: (view: ScheduleViewLevel) => void;\n\n /** Events to display across all views */\n events?: ScheduleEventData[];\n\n /** Locale for date formatting (overrides `DatesProvider`) */\n locale?: string;\n\n /** Key of theme.radius or any valid CSS value to set border-radius */\n radius?: MantineRadius;\n\n /** Labels override for i18n */\n labels?: ScheduleLabelsOverride;\n\n /** Custom event body renderer */\n renderEventBody?: RenderEventBody;\n\n /** Enable drag and drop for events @default false */\n withEventsDragAndDrop?: boolean;\n\n /** Called when event is dropped */\n onEventDrop?: (data: {\n eventId: string | number;\n newStart: DateTimeStringValue;\n newEnd: DateTimeStringValue;\n event: ScheduleEventData;\n }) => void;\n\n /** Function to determine if event can be dragged */\n canDragEvent?: (event: ScheduleEventData) => boolean;\n\n /** Called when any event drag starts */\n onEventDragStart?: (event: ScheduleEventData) => void;\n\n /** Called when any event drag ends */\n onEventDragEnd?: () => void;\n\n /** Called when time slot is clicked in DayView/WeekView */\n onTimeSlotClick?: (data: {\n slotStart: DateTimeStringValue;\n slotEnd: DateTimeStringValue;\n nativeEvent: React.MouseEvent<HTMLButtonElement>;\n }) => void;\n\n /** Called when all-day slot is clicked in DayView/WeekView */\n onAllDaySlotClick?: (date: DateStringValue, event: React.MouseEvent<HTMLButtonElement>) => void;\n\n /** Called when day is clicked in MonthView */\n onDayClick?: (date: DateStringValue, event: React.MouseEvent<HTMLButtonElement>) => void;\n\n /** If set, enables drag-to-select slot ranges @default false */\n withDragSlotSelect?: boolean;\n\n /** Called when a slot range is selected by dragging */\n onSlotDragEnd?: (rangeStart: DateTimeStringValue, rangeEnd: DateTimeStringValue) => void;\n\n /** Called when event is clicked in any view */\n onEventClick?: (event: ScheduleEventData, e: React.MouseEvent<HTMLButtonElement>) => void;\n\n /** Interaction mode:\n * - `'default'` allows all interactions\n * - `'static'` disables event interactions\n * @default 'default' */\n mode?: ScheduleMode;\n\n /** Called when an external item is dropped onto the schedule. Receives the `DataTransfer` object and the drop target datetime. */\n onExternalEventDrop?: (dataTransfer: DataTransfer, dropDateTime: DateTimeStringValue) => void;\n\n /** If true, events can be resized by dragging their edges @default false */\n withEventResize?: boolean;\n\n /** Called when event is resized */\n onEventResize?: (data: {\n eventId: string | number;\n newStart: DateTimeStringValue;\n newEnd: DateTimeStringValue;\n event: ScheduleEventData;\n }) => void;\n\n /** Function to determine if event can be resized */\n canResizeEvent?: (event: ScheduleEventData) => boolean;\n\n /** Max number of generated recurring instances per recurring series @default 2000 */\n recurrenceExpansionLimit?: number;\n\n /** Layout mode:\n * - `'default'` uses same views on all screen sizes\n * - `'responsive'` switches to YearView/MobileMonthView on small screens\n * @default 'default' */\n layout?: ScheduleLayout;\n\n /** Props specific to DayView (includes `startTime`, `endTime`, `intervalMinutes`, etc.) */\n dayViewProps?: ScheduleViewProps<DayViewProps>;\n\n /** Props specific to WeekView (includes `startTime`, `endTime`, `intervalMinutes`, etc.) */\n weekViewProps?: ScheduleViewProps<WeekViewProps>;\n\n /** Props specific to MonthView (includes `firstDayOfWeek`, `weekendDays`, etc.) */\n monthViewProps?: ScheduleViewProps<MonthViewProps>;\n\n /** Props specific to YearView (includes `firstDayOfWeek`, `weekendDays`, etc.) */\n yearViewProps?: ScheduleViewProps<YearViewProps>;\n\n /** Props specific to MobileMonthView (used in responsive layout) */\n mobileMonthViewProps?: ScheduleViewProps<MobileMonthViewProps>;\n}\n\nexport type ScheduleFactory = Factory<{\n props: ScheduleProps;\n ref: HTMLDivElement;\n stylesNames: ScheduleStylesNames;\n}>;\n\nconst defaultProps: Partial<ScheduleProps> = {\n defaultView: 'week',\n mode: 'default',\n layout: 'default',\n};\n\nexport const Schedule = factory<ScheduleFactory>((_props) => {\n const props = useProps('Schedule', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n date,\n defaultDate,\n onDateChange,\n view,\n defaultView,\n onViewChange,\n events,\n locale,\n radius,\n labels,\n renderEventBody,\n withEventsDragAndDrop,\n onEventDrop,\n canDragEvent,\n onEventDragStart,\n onEventDragEnd,\n onTimeSlotClick,\n onAllDaySlotClick,\n onDayClick,\n onEventClick,\n withDragSlotSelect,\n onSlotDragEnd,\n onExternalEventDrop,\n withEventResize,\n onEventResize,\n canResizeEvent,\n recurrenceExpansionLimit,\n mode,\n layout,\n dayViewProps,\n weekViewProps,\n monthViewProps,\n yearViewProps,\n mobileMonthViewProps,\n __staticSelector,\n mod,\n ...others\n } = props;\n\n const getStyles = useStyles<ScheduleFactory>({\n name: __staticSelector || 'Schedule',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n vars,\n });\n\n const [_view, _setView] = useUncontrolled<ScheduleViewLevel>({\n value: view,\n defaultValue: defaultView,\n onChange: onViewChange,\n });\n\n const [_date, _setDate] = useUncontrolled<Date | DateStringValue>({\n value: date,\n defaultValue: defaultDate ?? new Date(),\n });\n\n const handleDateChange = (newDate: DateStringValue) => {\n _setDate(newDate);\n onDateChange?.(newDate);\n };\n\n const handleViewChange = (newView: ScheduleViewLevel) => {\n _setView(newView);\n onViewChange?.(newView);\n };\n\n const handleMonthClick = (monthDate: DateStringValue) => {\n handleDateChange(monthDate);\n handleViewChange('month');\n };\n\n const commonProps = {\n date: _date,\n onDateChange: handleDateChange,\n view: _view,\n onViewChange: handleViewChange,\n events,\n locale,\n radius,\n labels,\n renderEventBody,\n withEventsDragAndDrop: mode === 'static' ? false : withEventsDragAndDrop,\n onEventDrop,\n canDragEvent,\n onEventDragStart,\n onEventDragEnd,\n onTimeSlotClick,\n onAllDaySlotClick,\n onDayClick,\n onEventClick,\n withDragSlotSelect,\n onSlotDragEnd,\n onExternalEventDrop,\n withEventResize: mode === 'static' ? false : withEventResize,\n onEventResize,\n canResizeEvent,\n recurrenceExpansionLimit,\n mode,\n };\n\n const desktopContent = (() => {\n switch (_view) {\n case 'day':\n return <DayView {...commonProps} {...dayViewProps} />;\n case 'week':\n return <WeekView {...commonProps} {...weekViewProps} />;\n case 'month':\n return <MonthView {...commonProps} {...monthViewProps} />;\n case 'year':\n return <YearView {...commonProps} onMonthClick={handleMonthClick} {...yearViewProps} />;\n default:\n return null;\n }\n })();\n\n const mobileContent = (() => {\n switch (_view) {\n case 'day':\n case 'week':\n case 'month':\n return (\n <MobileMonthView\n date={_date}\n onDateChange={handleDateChange}\n events={events}\n locale={locale}\n radius={radius}\n labels={labels}\n mode={mode}\n recurrenceExpansionLimit={recurrenceExpansionLimit}\n onYearClick={() => handleViewChange('year')}\n onEventClick={onEventClick}\n {...mobileMonthViewProps}\n />\n );\n case 'year':\n return <YearView {...commonProps} onMonthClick={handleMonthClick} {...yearViewProps} />;\n default:\n return null;\n }\n })();\n\n if (layout === 'responsive') {\n return (\n <Box {...getStyles('root')} mod={[{ layout }, mod]} {...others}>\n <Box {...getStyles('desktopView')}>{desktopContent}</Box>\n <Box {...getStyles('mobileView')}>{mobileContent}</Box>\n </Box>\n );\n }\n\n return (\n <Box {...getStyles('root')} mod={mod} {...others}>\n {desktopContent}\n </Box>\n );\n});\n\nSchedule.displayName = '@mantine/schedule/Schedule';\nSchedule.classes = classes;\n\nexport namespace Schedule {\n export type Props = ScheduleProps;\n export type StylesNames = ScheduleStylesNames;\n export type Factory = ScheduleFactory;\n export type Layout = ScheduleLayout;\n}\n"],"mappings":";;;;;;;;;;;AAgNA,MAAM,eAAuC;CAC3C,aAAa;CACb,MAAM;CACN,QAAQ;CACT;AAED,MAAa,WAAW,SAA0B,WAAW;CAC3D,MAAM,QAAQ,SAAS,YAAY,cAAc,OAAO;CACxD,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,MACA,aACA,cACA,MACA,aACA,cACA,QACA,QACA,QACA,QACA,iBACA,uBACA,aACA,cACA,kBACA,gBACA,iBACA,mBACA,YACA,cACA,oBACA,eACA,qBACA,iBACA,eACA,gBACA,0BACA,MACA,QACA,cACA,eACA,gBACA,eACA,sBACA,kBACA,KACA,GAAG,WACD;CAEJ,MAAM,YAAY,UAA2B;EAC3C,MAAM,oBAAoB;EAC1B,SAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,CAAC,OAAO,YAAY,gBAAmC;EAC3D,OAAO;EACP,cAAc;EACd,UAAU;EACX,CAAC;CAEF,MAAM,CAAC,OAAO,YAAY,gBAAwC;EAChE,OAAO;EACP,cAAc,+BAAe,IAAI,MAAM;EACxC,CAAC;CAEF,MAAM,oBAAoB,YAA6B;AACrD,WAAS,QAAQ;AACjB,iBAAe,QAAQ;;CAGzB,MAAM,oBAAoB,YAA+B;AACvD,WAAS,QAAQ;AACjB,iBAAe,QAAQ;;CAGzB,MAAM,oBAAoB,cAA+B;AACvD,mBAAiB,UAAU;AAC3B,mBAAiB,QAAQ;;CAG3B,MAAM,cAAc;EAClB,MAAM;EACN,cAAc;EACd,MAAM;EACN,cAAc;EACd;EACA;EACA;EACA;EACA;EACA,uBAAuB,SAAS,WAAW,QAAQ;EACnD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,iBAAiB,SAAS,WAAW,QAAQ;EAC7C;EACA;EACA;EACA;EACD;CAED,MAAM,wBAAwB;AAC5B,UAAQ,OAAR;GACE,KAAK,MACH,QAAO,oBAAC,SAAD;IAAS,GAAI;IAAa,GAAI;IAAgB,CAAA;GACvD,KAAK,OACH,QAAO,oBAAC,UAAD;IAAU,GAAI;IAAa,GAAI;IAAiB,CAAA;GACzD,KAAK,QACH,QAAO,oBAAC,WAAD;IAAW,GAAI;IAAa,GAAI;IAAkB,CAAA;GAC3D,KAAK,OACH,QAAO,oBAAC,UAAD;IAAU,GAAI;IAAa,cAAc;IAAkB,GAAI;IAAiB,CAAA;GACzF,QACE,QAAO;;KAET;CAEJ,MAAM,uBAAuB;AAC3B,UAAQ,OAAR;GACE,KAAK;GACL,KAAK;GACL,KAAK,QACH,QACE,oBAAC,iBAAD;IACE,MAAM;IACN,cAAc;IACN;IACA;IACA;IACA;IACF;IACoB;IAC1B,mBAAmB,iBAAiB,OAAO;IAC7B;IACd,GAAI;IACJ,CAAA;GAEN,KAAK,OACH,QAAO,oBAAC,UAAD;IAAU,GAAI;IAAa,cAAc;IAAkB,GAAI;IAAiB,CAAA;GACzF,QACE,QAAO;;KAET;AAEJ,KAAI,WAAW,aACb,QACE,qBAAC,KAAD;EAAK,GAAI,UAAU,OAAO;EAAE,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI;EAAE,GAAI;YAAxD,CACE,oBAAC,KAAD;GAAK,GAAI,UAAU,cAAc;aAAG;GAAqB,CAAA,EACzD,oBAAC,KAAD;GAAK,GAAI,UAAU,aAAa;aAAG;GAAoB,CAAA,CACnD;;AAIV,QACE,oBAAC,KAAD;EAAK,GAAI,UAAU,OAAO;EAAO;EAAK,GAAI;YACvC;EACG,CAAA;EAER;AAEF,SAAS,cAAc;AACvB,SAAS,UAAUA"}
1
+ {"version":3,"file":"Schedule.mjs","names":["classes"],"sources":["../../../src/components/Schedule/Schedule.tsx"],"sourcesContent":["import {\n Box,\n BoxProps,\n ElementProps,\n factory,\n Factory,\n MantineRadius,\n StylesApiProps,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { useUncontrolled } from '@mantine/hooks';\nimport { ScheduleLabelsOverride } from '../../labels';\nimport {\n DateStringValue,\n DateTimeStringValue,\n ScheduleEventData,\n ScheduleMode,\n ScheduleViewLevel,\n} from '../../types';\nimport { DayView, DayViewProps, DayViewStylesNames } from '../DayView/DayView';\nimport {\n MobileMonthView,\n MobileMonthViewProps,\n MobileMonthViewStylesNames,\n} from '../MobileMonthView/MobileMonthView';\nimport { MonthView, MonthViewProps, MonthViewStylesNames } from '../MonthView/MonthView';\nimport { RenderEventBody } from '../ScheduleEvent/ScheduleEvent';\nimport { WeekView, WeekViewProps, WeekViewStylesNames } from '../WeekView/WeekView';\nimport { YearView, YearViewProps, YearViewStylesNames } from '../YearView/YearView';\nimport classes from './Schedule.module.css';\n\nexport type ScheduleStylesNames =\n | 'root'\n | 'desktopView'\n | 'mobileView'\n | DayViewStylesNames\n | WeekViewStylesNames\n | MonthViewStylesNames\n | YearViewStylesNames\n | MobileMonthViewStylesNames;\n\nexport type ScheduleLayout = 'default' | 'responsive';\n\ntype ScheduleCommonProps =\n | 'date'\n | 'onDateChange'\n | 'events'\n | 'locale'\n | 'radius'\n | 'labels'\n | 'renderEventBody'\n | 'withEventsDragAndDrop'\n | 'onEventDrop'\n | 'canDragEvent'\n | 'onEventDragStart'\n | 'onEventDragEnd'\n | 'onTimeSlotClick'\n | 'onAllDaySlotClick'\n | 'onEventClick'\n | 'onDayClick'\n | 'onMonthClick'\n | 'withDragSlotSelect'\n | 'onSlotDragEnd'\n | 'view'\n | 'onViewChange'\n | 'mode'\n | 'onExternalEventDrop'\n | 'withEventResize'\n | 'onEventResize'\n | 'canResizeEvent'\n | 'recurrenceExpansionLimit';\n\ntype ScheduleViewProps<T> = Partial<Omit<T, ScheduleCommonProps>>;\n\nexport interface ScheduleProps\n extends BoxProps, StylesApiProps<ScheduleFactory>, ElementProps<'div'> {\n __staticSelector?: string;\n\n /** Current date to display (controlled) */\n date?: Date | DateStringValue;\n\n /** Default date (uncontrolled) */\n defaultDate?: Date | DateStringValue;\n\n /** Called when date changes via navigation */\n onDateChange?: (date: DateStringValue) => void;\n\n /** Current view level (controlled) */\n view?: ScheduleViewLevel;\n\n /** Default view level (uncontrolled) */\n defaultView?: ScheduleViewLevel;\n\n /** Called when view level changes */\n onViewChange?: (view: ScheduleViewLevel) => void;\n\n /** Events to display across all views */\n events?: ScheduleEventData[];\n\n /** Locale for date formatting (overrides `DatesProvider`) */\n locale?: string;\n\n /** Key of theme.radius or any valid CSS value to set border-radius */\n radius?: MantineRadius;\n\n /** Labels override for i18n */\n labels?: ScheduleLabelsOverride;\n\n /** Custom event body renderer */\n renderEventBody?: RenderEventBody;\n\n /** Enable drag and drop for events @default false */\n withEventsDragAndDrop?: boolean;\n\n /** Called when event is dropped */\n onEventDrop?: (data: {\n eventId: string | number;\n newStart: DateTimeStringValue;\n newEnd: DateTimeStringValue;\n event: ScheduleEventData;\n }) => void;\n\n /** Function to determine if event can be dragged */\n canDragEvent?: (event: ScheduleEventData) => boolean;\n\n /** Called when any event drag starts */\n onEventDragStart?: (event: ScheduleEventData) => void;\n\n /** Called when any event drag ends */\n onEventDragEnd?: () => void;\n\n /** Called when time slot is clicked in DayView/WeekView */\n onTimeSlotClick?: (data: {\n slotStart: DateTimeStringValue;\n slotEnd: DateTimeStringValue;\n nativeEvent: React.MouseEvent<HTMLButtonElement>;\n }) => void;\n\n /** Called when all-day slot is clicked in DayView/WeekView */\n onAllDaySlotClick?: (date: DateStringValue, event: React.MouseEvent<HTMLButtonElement>) => void;\n\n /** Called when a day is clicked in MonthView and YearView */\n onDayClick?: (date: DateStringValue, event: React.MouseEvent<HTMLButtonElement>) => void;\n\n /** If set, enables drag-to-select slot ranges @default false */\n withDragSlotSelect?: boolean;\n\n /** Called when a slot range is selected by dragging */\n onSlotDragEnd?: (rangeStart: DateTimeStringValue, rangeEnd: DateTimeStringValue) => void;\n\n /** Called when event is clicked in any view */\n onEventClick?: (event: ScheduleEventData, e: React.MouseEvent<HTMLButtonElement>) => void;\n\n /** Interaction mode:\n * - `'default'` allows all interactions\n * - `'static'` disables event interactions\n * @default 'default' */\n mode?: ScheduleMode;\n\n /** Called when an external item is dropped onto the schedule. Receives the `DataTransfer` object and the drop target datetime. */\n onExternalEventDrop?: (dataTransfer: DataTransfer, dropDateTime: DateTimeStringValue) => void;\n\n /** If true, events can be resized by dragging their edges @default false */\n withEventResize?: boolean;\n\n /** Called when event is resized */\n onEventResize?: (data: {\n eventId: string | number;\n newStart: DateTimeStringValue;\n newEnd: DateTimeStringValue;\n event: ScheduleEventData;\n }) => void;\n\n /** Function to determine if event can be resized */\n canResizeEvent?: (event: ScheduleEventData) => boolean;\n\n /** Max number of generated recurring instances per recurring series @default 2000 */\n recurrenceExpansionLimit?: number;\n\n /** Layout mode:\n * - `'default'` uses same views on all screen sizes\n * - `'responsive'` switches to YearView/MobileMonthView on small screens\n * @default 'default' */\n layout?: ScheduleLayout;\n\n /** Props specific to DayView (includes `startTime`, `endTime`, `intervalMinutes`, etc.) */\n dayViewProps?: ScheduleViewProps<DayViewProps>;\n\n /** Props specific to WeekView (includes `startTime`, `endTime`, `intervalMinutes`, etc.) */\n weekViewProps?: ScheduleViewProps<WeekViewProps>;\n\n /** Props specific to MonthView (includes `firstDayOfWeek`, `weekendDays`, etc.) */\n monthViewProps?: ScheduleViewProps<MonthViewProps>;\n\n /** Props specific to YearView (includes `firstDayOfWeek`, `weekendDays`, etc.) */\n yearViewProps?: ScheduleViewProps<YearViewProps>;\n\n /** Props specific to MobileMonthView (used in responsive layout) */\n mobileMonthViewProps?: ScheduleViewProps<MobileMonthViewProps>;\n}\n\nexport type ScheduleFactory = Factory<{\n props: ScheduleProps;\n ref: HTMLDivElement;\n stylesNames: ScheduleStylesNames;\n}>;\n\nconst defaultProps: Partial<ScheduleProps> = {\n defaultView: 'week',\n mode: 'default',\n layout: 'default',\n};\n\nexport const Schedule = factory<ScheduleFactory>((_props) => {\n const props = useProps('Schedule', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n date,\n defaultDate,\n onDateChange,\n view,\n defaultView,\n onViewChange,\n events,\n locale,\n radius,\n labels,\n renderEventBody,\n withEventsDragAndDrop,\n onEventDrop,\n canDragEvent,\n onEventDragStart,\n onEventDragEnd,\n onTimeSlotClick,\n onAllDaySlotClick,\n onDayClick,\n onEventClick,\n withDragSlotSelect,\n onSlotDragEnd,\n onExternalEventDrop,\n withEventResize,\n onEventResize,\n canResizeEvent,\n recurrenceExpansionLimit,\n mode,\n layout,\n dayViewProps,\n weekViewProps,\n monthViewProps,\n yearViewProps,\n mobileMonthViewProps,\n __staticSelector,\n mod,\n ...others\n } = props;\n\n const getStyles = useStyles<ScheduleFactory>({\n name: __staticSelector || 'Schedule',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n vars,\n });\n\n const [_view, _setView] = useUncontrolled<ScheduleViewLevel>({\n value: view,\n defaultValue: defaultView,\n onChange: onViewChange,\n });\n\n const [_date, _setDate] = useUncontrolled<Date | DateStringValue>({\n value: date,\n defaultValue: defaultDate ?? new Date(),\n });\n\n const handleDateChange = (newDate: DateStringValue) => {\n _setDate(newDate);\n onDateChange?.(newDate);\n };\n\n const handleViewChange = (newView: ScheduleViewLevel) => {\n _setView(newView);\n onViewChange?.(newView);\n };\n\n const handleMonthClick = (monthDate: DateStringValue) => {\n handleDateChange(monthDate);\n handleViewChange('month');\n };\n\n const commonProps = {\n date: _date,\n onDateChange: handleDateChange,\n view: _view,\n onViewChange: handleViewChange,\n events,\n locale,\n radius,\n labels,\n renderEventBody,\n withEventsDragAndDrop: mode === 'static' ? false : withEventsDragAndDrop,\n onEventDrop,\n canDragEvent,\n onEventDragStart,\n onEventDragEnd,\n onTimeSlotClick,\n onAllDaySlotClick,\n onDayClick,\n onEventClick,\n withDragSlotSelect,\n onSlotDragEnd,\n onExternalEventDrop,\n withEventResize: mode === 'static' ? false : withEventResize,\n onEventResize,\n canResizeEvent,\n recurrenceExpansionLimit,\n mode,\n };\n\n const desktopContent = (() => {\n switch (_view) {\n case 'day':\n return <DayView {...commonProps} {...dayViewProps} />;\n case 'week':\n return <WeekView {...commonProps} {...weekViewProps} />;\n case 'month':\n return <MonthView {...commonProps} {...monthViewProps} />;\n case 'year':\n return <YearView {...commonProps} onMonthClick={handleMonthClick} {...yearViewProps} />;\n default:\n return null;\n }\n })();\n\n const mobileContent = (() => {\n switch (_view) {\n case 'day':\n case 'week':\n case 'month':\n return (\n <MobileMonthView\n date={_date}\n onDateChange={handleDateChange}\n events={events}\n locale={locale}\n radius={radius}\n labels={labels}\n mode={mode}\n recurrenceExpansionLimit={recurrenceExpansionLimit}\n onYearClick={() => handleViewChange('year')}\n onEventClick={onEventClick}\n {...mobileMonthViewProps}\n />\n );\n case 'year':\n return <YearView {...commonProps} onMonthClick={handleMonthClick} {...yearViewProps} />;\n default:\n return null;\n }\n })();\n\n if (layout === 'responsive') {\n return (\n <Box {...getStyles('root')} mod={[{ layout }, mod]} {...others}>\n <Box {...getStyles('desktopView')}>{desktopContent}</Box>\n <Box {...getStyles('mobileView')}>{mobileContent}</Box>\n </Box>\n );\n }\n\n return (\n <Box {...getStyles('root')} mod={mod} {...others}>\n {desktopContent}\n </Box>\n );\n});\n\nSchedule.displayName = '@mantine/schedule/Schedule';\nSchedule.classes = classes;\n\nexport namespace Schedule {\n export type Props = ScheduleProps;\n export type StylesNames = ScheduleStylesNames;\n export type Factory = ScheduleFactory;\n export type Layout = ScheduleLayout;\n}\n"],"mappings":";;;;;;;;;;;AAgNA,MAAM,eAAuC;CAC3C,aAAa;CACb,MAAM;CACN,QAAQ;AACV;AAEA,MAAa,WAAW,SAA0B,WAAW;CAC3D,MAAM,QAAQ,SAAS,YAAY,cAAc,MAAM;CACvD,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,MACA,aACA,cACA,MACA,aACA,cACA,QACA,QACA,QACA,QACA,iBACA,uBACA,aACA,cACA,kBACA,gBACA,iBACA,mBACA,YACA,cACA,oBACA,eACA,qBACA,iBACA,eACA,gBACA,0BACA,MACA,QACA,cACA,eACA,gBACA,eACA,sBACA,kBACA,KACA,GAAG,WACD;CAEJ,MAAM,YAAY,UAA2B;EAC3C,MAAM,oBAAoB;EAC1B,SAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,CAAC,OAAO,YAAY,gBAAmC;EAC3D,OAAO;EACP,cAAc;EACd,UAAU;CACZ,CAAC;CAED,MAAM,CAAC,OAAO,YAAY,gBAAwC;EAChE,OAAO;EACP,cAAc,+BAAe,IAAI,KAAK;CACxC,CAAC;CAED,MAAM,oBAAoB,YAA6B;EACrD,SAAS,OAAO;EAChB,eAAe,OAAO;CACxB;CAEA,MAAM,oBAAoB,YAA+B;EACvD,SAAS,OAAO;EAChB,eAAe,OAAO;CACxB;CAEA,MAAM,oBAAoB,cAA+B;EACvD,iBAAiB,SAAS;EAC1B,iBAAiB,OAAO;CAC1B;CAEA,MAAM,cAAc;EAClB,MAAM;EACN,cAAc;EACd,MAAM;EACN,cAAc;EACd;EACA;EACA;EACA;EACA;EACA,uBAAuB,SAAS,WAAW,QAAQ;EACnD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,iBAAiB,SAAS,WAAW,QAAQ;EAC7C;EACA;EACA;EACA;CACF;CAEA,MAAM,wBAAwB;EAC5B,QAAQ,OAAR;GACE,KAAK,OACH,OAAO,oBAAC,SAAD;IAAS,GAAI;IAAa,GAAI;GAAe,CAAA;GACtD,KAAK,QACH,OAAO,oBAAC,UAAD;IAAU,GAAI;IAAa,GAAI;GAAgB,CAAA;GACxD,KAAK,SACH,OAAO,oBAAC,WAAD;IAAW,GAAI;IAAa,GAAI;GAAiB,CAAA;GAC1D,KAAK,QACH,OAAO,oBAAC,UAAD;IAAU,GAAI;IAAa,cAAc;IAAkB,GAAI;GAAgB,CAAA;GACxF,SACE,OAAO;EACX;CACF,GAAG;CAEH,MAAM,uBAAuB;EAC3B,QAAQ,OAAR;GACE,KAAK;GACL,KAAK;GACL,KAAK,SACH,OACE,oBAAC,iBAAD;IACE,MAAM;IACN,cAAc;IACN;IACA;IACA;IACA;IACF;IACoB;IAC1B,mBAAmB,iBAAiB,MAAM;IAC5B;IACd,GAAI;GACL,CAAA;GAEL,KAAK,QACH,OAAO,oBAAC,UAAD;IAAU,GAAI;IAAa,cAAc;IAAkB,GAAI;GAAgB,CAAA;GACxF,SACE,OAAO;EACX;CACF,GAAG;CAEH,IAAI,WAAW,cACb,OACE,qBAAC,KAAD;EAAK,GAAI,UAAU,MAAM;EAAG,KAAK,CAAC,EAAE,OAAO,GAAG,GAAG;EAAG,GAAI;YAAxD,CACE,oBAAC,KAAD;GAAK,GAAI,UAAU,aAAa;aAAI;EAAoB,CAAA,GACxD,oBAAC,KAAD;GAAK,GAAI,UAAU,YAAY;aAAI;EAAmB,CAAA,CACnD;;CAIT,OACE,oBAAC,KAAD;EAAK,GAAI,UAAU,MAAM;EAAQ;EAAK,GAAI;YACvC;CACE,CAAA;AAET,CAAC;AAED,SAAS,cAAc;AACvB,SAAS,UAAUA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScheduleEvent.mjs","names":["classes"],"sources":["../../../src/components/ScheduleEvent/ScheduleEvent.tsx"],"sourcesContent":["import { use, useEffect, useRef } from 'react';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getRadius,\n MantineRadius,\n StylesApiProps,\n UnstyledButton,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { ScheduleEventData, ScheduleMode } from '../../types';\nimport { DragContext } from '../DragContext/DragContext';\nimport classes from './ScheduleEvent.module.css';\n\nexport type ScheduleEventStylesNames = 'event' | 'eventInner' | 'eventResizeHandle';\n\nexport type ScheduleEventVariant = 'filled' | 'light';\nexport type ScheduleEventCssVariables = {\n event: '--event-bg' | '--event-color' | '--event-radius' | '--event-hover';\n};\n\nexport type RenderEventBody = (event: ScheduleEventData<any>) => React.ReactNode;\n\nexport type RenderEvent = (\n event: ScheduleEventData,\n props: React.ComponentPropsWithoutRef<'button'> & { children: React.ReactNode }\n) => React.ReactElement;\n\nexport interface ScheduleEventProps\n extends BoxProps, StylesApiProps<ScheduleEventFactory>, ElementProps<'button'> {\n __staticSelector?: string;\n\n /** Event to display */\n event: ScheduleEventData;\n\n /** Key of `theme.radius` or any valid CSS value to set border-radius @default 'sm' */\n radius?: MantineRadius;\n\n /** If set, event has `white-space: nowrap` @default false */\n nowrap?: boolean;\n\n /** If set, event shrinks its font-size with limited height @default false */\n autoSize?: boolean;\n\n /** Event size @default 'sm' */\n size?: 'sm' | 'md' | (string & {});\n\n /** Function to customize event body, `event` object is passed as first argument */\n renderEventBody?: RenderEventBody;\n\n /** Function to fully customize event rendering, receives all props that would be passed to the root element including children */\n renderEvent?: RenderEvent;\n\n /** Event hanging position */\n hanging?: 'start' | 'end' | 'both' | 'none';\n\n /** If true, event can be dragged @default false */\n draggable?: boolean;\n\n /** Called when event drag starts */\n onEventDragStart?: (event: ScheduleEventData) => void;\n\n /** Called when event drag ends */\n onEventDragEnd?: () => void;\n\n /** If true, event is currently being dragged @default false */\n isDragging?: boolean;\n\n /** Interaction mode: 'default' allows all interactions, 'static' disables event interactions @default default */\n mode?: ScheduleMode;\n\n /** If true, event can be resized by dragging its edges @default false */\n withResize?: boolean;\n\n /** Called when resize starts on an edge */\n onResizeStart?: (edge: 'top' | 'bottom', e: React.PointerEvent) => void;\n\n /** If true, event is currently being resized @default false */\n isResizing?: boolean;\n}\n\nexport type ScheduleEventFactory = Factory<{\n props: ScheduleEventProps;\n ref: HTMLButtonElement;\n stylesNames: ScheduleEventStylesNames;\n vars: ScheduleEventCssVariables;\n variant: ScheduleEventVariant;\n}>;\n\nconst defaultProps = {\n __staticSelector: 'ScheduleEvent',\n mode: 'default',\n radius: 'sm' as MantineRadius,\n} satisfies Partial<ScheduleEventProps>;\n\nconst varsResolver = createVarsResolver<ScheduleEventFactory>(\n (theme, { event, variant, radius }) => {\n const colors = theme.variantColorResolver({\n color: event.color || theme.primaryColor,\n theme,\n variant: variant || event.variant || 'light',\n autoContrast: true,\n });\n\n return {\n event: {\n '--event-bg': colors.background,\n '--event-hover': colors.hover,\n '--event-color': colors.color,\n '--event-radius': getRadius(radius),\n },\n };\n }\n);\n\nexport const ScheduleEvent = factory<ScheduleEventFactory>((_props) => {\n const props = useProps('ScheduleEvent', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n attributes,\n children,\n nowrap,\n radius,\n color,\n __staticSelector,\n event,\n renderEventBody,\n renderEvent,\n size,\n autoSize,\n mod,\n hanging,\n draggable = false,\n onEventDragStart,\n onEventDragEnd,\n isDragging = false,\n mode,\n withResize = false,\n onResizeStart,\n isResizing = false,\n ...others\n } = props;\n\n const ctx = use(DragContext);\n\n const getStyles = useStyles<ScheduleEventFactory>({\n name: __staticSelector,\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n rootSelector: 'event',\n });\n\n const handleDragStart = (e: React.DragEvent<HTMLButtonElement>) => {\n if (!draggable) {\n e.preventDefault();\n return;\n }\n\n e.dataTransfer.effectAllowed = 'move';\n e.dataTransfer.setData('application/json', JSON.stringify({ eventId: event.id }));\n onEventDragStart?.(event);\n ctx.onDragStart?.(event);\n };\n\n const handleDragEnd = () => {\n onEventDragEnd?.();\n ctx.onDragEnd?.();\n };\n\n const isCurrentlyDragging = isDragging || ctx.draggedEventId === event.id;\n const isAnyEventDragging = ctx.isDragging || false;\n\n const dragEndRef = useRef(ctx.onDragEnd);\n dragEndRef.current = ctx.onDragEnd;\n\n useEffect(() => {\n if (isCurrentlyDragging) {\n return () => {\n dragEndRef.current?.();\n };\n }\n return undefined;\n }, [isCurrentlyDragging]);\n\n const showResizeHandles = withResize && mode !== 'static';\n\n const eventChildren = (\n <>\n {showResizeHandles && (\n <Box\n {...getStyles('eventResizeHandle')}\n mod={{ edge: 'top' }}\n onPointerDown={(e: React.PointerEvent) => onResizeStart?.('top', e)}\n />\n )}\n <Box mod={{ nowrap, size, autoSize, hanging }} {...getStyles('eventInner')}>\n {typeof renderEventBody === 'function' ? renderEventBody(event) : event.title}\n </Box>\n {showResizeHandles && (\n <Box\n {...getStyles('eventResizeHandle')}\n mod={{ edge: 'bottom' }}\n onPointerDown={(e: React.PointerEvent) => onResizeStart?.('bottom', e)}\n />\n )}\n </>\n );\n\n const rootProps = {\n ...getStyles('event'),\n 'data-event-id': event.id,\n size,\n title: event.title,\n mod: [\n {\n autoSize,\n hanging,\n draggable,\n dragging: isCurrentlyDragging,\n 'any-dragging': isAnyEventDragging,\n static: mode === 'static',\n resizing: isResizing,\n resizable: showResizeHandles,\n },\n mod,\n ],\n draggable: draggable && mode !== 'static',\n tabIndex: mode === 'static' ? -1 : 0,\n onDragStart: mode === 'static' ? undefined : handleDragStart,\n onDragEnd: mode === 'static' ? undefined : handleDragEnd,\n onClick: mode === 'static' ? undefined : others.onClick,\n ...others,\n children: eventChildren,\n };\n\n if (typeof renderEvent === 'function') {\n return renderEvent(event, rootProps);\n }\n\n return <UnstyledButton {...rootProps} />;\n});\n\nScheduleEvent.displayName = '@mantine/schedule/ScheduleEvent';\nScheduleEvent.classes = classes;\nScheduleEvent.varsResolver = varsResolver;\n"],"mappings":"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"}
1
+ {"version":3,"file":"ScheduleEvent.mjs","names":["classes"],"sources":["../../../src/components/ScheduleEvent/ScheduleEvent.tsx"],"sourcesContent":["import { use, useEffect, useRef } from 'react';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getRadius,\n MantineRadius,\n StylesApiProps,\n UnstyledButton,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { ScheduleEventData, ScheduleMode } from '../../types';\nimport { DragContext } from '../DragContext/DragContext';\nimport classes from './ScheduleEvent.module.css';\n\nexport type ScheduleEventStylesNames = 'event' | 'eventInner' | 'eventResizeHandle';\n\nexport type ScheduleEventVariant = 'filled' | 'light';\nexport type ScheduleEventCssVariables = {\n event: '--event-bg' | '--event-color' | '--event-radius' | '--event-hover';\n};\n\nexport type RenderEventBody = (event: ScheduleEventData<any>) => React.ReactNode;\n\nexport type RenderEvent = (\n event: ScheduleEventData,\n props: React.ComponentPropsWithoutRef<'button'> & { children: React.ReactNode }\n) => React.ReactElement;\n\nexport interface ScheduleEventProps\n extends BoxProps, StylesApiProps<ScheduleEventFactory>, ElementProps<'button'> {\n __staticSelector?: string;\n\n /** Event to display */\n event: ScheduleEventData;\n\n /** Key of `theme.radius` or any valid CSS value to set border-radius @default 'sm' */\n radius?: MantineRadius;\n\n /** If set, event has `white-space: nowrap` @default false */\n nowrap?: boolean;\n\n /** If set, event shrinks its font-size with limited height @default false */\n autoSize?: boolean;\n\n /** Event size @default 'sm' */\n size?: 'sm' | 'md' | (string & {});\n\n /** Function to customize event body, `event` object is passed as first argument */\n renderEventBody?: RenderEventBody;\n\n /** Function to fully customize event rendering, receives all props that would be passed to the root element including children */\n renderEvent?: RenderEvent;\n\n /** Event hanging position */\n hanging?: 'start' | 'end' | 'both' | 'none';\n\n /** If true, event can be dragged @default false */\n draggable?: boolean;\n\n /** Called when event drag starts */\n onEventDragStart?: (event: ScheduleEventData) => void;\n\n /** Called when event drag ends */\n onEventDragEnd?: () => void;\n\n /** If true, event is currently being dragged @default false */\n isDragging?: boolean;\n\n /** Interaction mode: 'default' allows all interactions, 'static' disables event interactions @default default */\n mode?: ScheduleMode;\n\n /** If true, event can be resized by dragging its edges @default false */\n withResize?: boolean;\n\n /** Called when resize starts on an edge */\n onResizeStart?: (edge: 'top' | 'bottom', e: React.PointerEvent) => void;\n\n /** If true, event is currently being resized @default false */\n isResizing?: boolean;\n}\n\nexport type ScheduleEventFactory = Factory<{\n props: ScheduleEventProps;\n ref: HTMLButtonElement;\n stylesNames: ScheduleEventStylesNames;\n vars: ScheduleEventCssVariables;\n variant: ScheduleEventVariant;\n}>;\n\nconst defaultProps = {\n __staticSelector: 'ScheduleEvent',\n mode: 'default',\n radius: 'sm' as MantineRadius,\n} satisfies Partial<ScheduleEventProps>;\n\nconst varsResolver = createVarsResolver<ScheduleEventFactory>(\n (theme, { event, variant, radius }) => {\n const colors = theme.variantColorResolver({\n color: event.color || theme.primaryColor,\n theme,\n variant: variant || event.variant || 'light',\n autoContrast: true,\n });\n\n return {\n event: {\n '--event-bg': colors.background,\n '--event-hover': colors.hover,\n '--event-color': colors.color,\n '--event-radius': getRadius(radius),\n },\n };\n }\n);\n\nexport const ScheduleEvent = factory<ScheduleEventFactory>((_props) => {\n const props = useProps('ScheduleEvent', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n attributes,\n children,\n nowrap,\n radius,\n color,\n __staticSelector,\n event,\n renderEventBody,\n renderEvent,\n size,\n autoSize,\n mod,\n hanging,\n draggable = false,\n onEventDragStart,\n onEventDragEnd,\n isDragging = false,\n mode,\n withResize = false,\n onResizeStart,\n isResizing = false,\n ...others\n } = props;\n\n const ctx = use(DragContext);\n\n const getStyles = useStyles<ScheduleEventFactory>({\n name: __staticSelector,\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n rootSelector: 'event',\n });\n\n const handleDragStart = (e: React.DragEvent<HTMLButtonElement>) => {\n if (!draggable) {\n e.preventDefault();\n return;\n }\n\n e.dataTransfer.effectAllowed = 'move';\n e.dataTransfer.setData('application/json', JSON.stringify({ eventId: event.id }));\n onEventDragStart?.(event);\n ctx.onDragStart?.(event);\n };\n\n const handleDragEnd = () => {\n onEventDragEnd?.();\n ctx.onDragEnd?.();\n };\n\n const isCurrentlyDragging = isDragging || ctx.draggedEventId === event.id;\n const isAnyEventDragging = ctx.isDragging || false;\n\n const dragEndRef = useRef(ctx.onDragEnd);\n dragEndRef.current = ctx.onDragEnd;\n\n useEffect(() => {\n if (isCurrentlyDragging) {\n return () => {\n dragEndRef.current?.();\n };\n }\n return undefined;\n }, [isCurrentlyDragging]);\n\n const showResizeHandles = withResize && mode !== 'static';\n\n const eventChildren = (\n <>\n {showResizeHandles && (\n <Box\n {...getStyles('eventResizeHandle')}\n mod={{ edge: 'top' }}\n onPointerDown={(e: React.PointerEvent) => onResizeStart?.('top', e)}\n />\n )}\n <Box mod={{ nowrap, size, autoSize, hanging }} {...getStyles('eventInner')}>\n {typeof renderEventBody === 'function' ? renderEventBody(event) : event.title}\n </Box>\n {showResizeHandles && (\n <Box\n {...getStyles('eventResizeHandle')}\n mod={{ edge: 'bottom' }}\n onPointerDown={(e: React.PointerEvent) => onResizeStart?.('bottom', e)}\n />\n )}\n </>\n );\n\n const rootProps = {\n ...getStyles('event'),\n 'data-event-id': event.id,\n size,\n title: event.title,\n mod: [\n {\n autoSize,\n hanging,\n draggable,\n dragging: isCurrentlyDragging,\n 'any-dragging': isAnyEventDragging,\n static: mode === 'static',\n resizing: isResizing,\n resizable: showResizeHandles,\n },\n mod,\n ],\n draggable: draggable && mode !== 'static',\n tabIndex: mode === 'static' ? -1 : 0,\n onDragStart: mode === 'static' ? undefined : handleDragStart,\n onDragEnd: mode === 'static' ? undefined : handleDragEnd,\n onClick: mode === 'static' ? undefined : others.onClick,\n ...others,\n children: eventChildren,\n };\n\n if (typeof renderEvent === 'function') {\n return renderEvent(event, rootProps);\n }\n\n return <UnstyledButton {...rootProps} />;\n});\n\nScheduleEvent.displayName = '@mantine/schedule/ScheduleEvent';\nScheduleEvent.classes = classes;\nScheduleEvent.varsResolver = varsResolver;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScheduleEvent.module.mjs","names":[],"sources":["../../../src/components/ScheduleEvent/ScheduleEvent.module.css"],"sourcesContent":[".event {\n padding: 1px;\n pointer-events: none;\n display: flex;\n flex-direction: column;\n flex: 1 0 auto;\n position: relative;\n z-index: 3;\n\n &:where([data-auto-size]) {\n container-type: size;\n }\n\n &:where([data-draggable]) .eventInner {\n cursor: grab;\n\n &:active {\n cursor: grabbing;\n }\n }\n\n &:where([data-dragging]) {\n opacity: 0.2;\n\n .eventInner {\n cursor: grabbing;\n }\n }\n\n &:where([data-any-dragging]:not([data-dragging])) {\n pointer-events: none;\n\n .eventInner {\n pointer-events: none;\n }\n }\n\n &:where([data-static]) {\n pointer-events: none;\n cursor: default;\n }\n\n &:where([data-resizing]) {\n z-index: 10;\n\n .eventInner {\n @mixin hover {\n background-color: var(--event-bg);\n }\n }\n }\n\n &:where([data-hanging='start'], [data-hanging='both']) {\n &::before {\n content: '';\n position: absolute;\n inset-block: 2px;\n inset-inline-start: 2px;\n width: 2px;\n background-color: var(--event-color);\n border-radius: 10px;\n opacity: 0.3;\n }\n\n .eventInner {\n padding-inline-start: 6px;\n border-start-start-radius: 0;\n border-end-start-radius: 0;\n }\n }\n\n &:where([data-hanging='end'], [data-hanging='both']) {\n &::after {\n content: '';\n position: absolute;\n inset-block: 2px;\n inset-inline-end: 2px;\n width: 2px;\n background-color: var(--event-color);\n border-radius: 10px;\n opacity: 0.3;\n }\n\n .eventInner {\n padding-inline-end: 6px;\n border-start-end-radius: 0;\n border-end-end-radius: 0;\n }\n }\n}\n\n.eventInner {\n background-color: var(--event-bg);\n color: var(--event-color);\n pointer-events: all;\n border-radius: var(--event-radius);\n font-weight: var(--mantine-font-weight-medium);\n font-size: 12px;\n line-height: 1;\n padding: 3px 4px;\n width: 100%;\n height: 100%;\n cursor: pointer;\n user-select: none;\n overflow: hidden;\n\n &:where([data-nowrap]) {\n white-space: nowrap;\n text-overflow: ellipsis;\n line-height: 1.25;\n }\n\n &:where([data-size='md']) {\n font-size: 14px;\n padding: 4px 6px;\n }\n\n @mixin hover {\n background-color: var(--event-hover);\n }\n\n &:where([data-auto-size]) {\n @container (max-height: 18px) {\n font-size: 9px;\n padding-block: 0px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n }\n }\n\n .event[data-static] & {\n cursor: default;\n pointer-events: none;\n\n @mixin hover {\n background-color: var(--event-bg);\n }\n }\n\n :where([data-slot-dragging]) & {\n pointer-events: none;\n }\n}\n\n.eventResizeHandle {\n position: absolute;\n left: 50%;\n transform: translateX(-50%);\n width: 40%;\n max-width: 40px;\n height: 4px;\n border-radius: 2px;\n cursor: ns-resize;\n pointer-events: all;\n z-index: 4;\n touch-action: none;\n background-color: var(--event-color);\n opacity: 0;\n transition: opacity 100ms ease;\n\n &::before {\n content: '';\n position: absolute;\n inset: -4px -6px;\n }\n\n &:where([data-edge='top']) {\n top: -2px;\n }\n\n &:where([data-edge='bottom']) {\n bottom: -2px;\n }\n\n .event:where(:hover, [data-resizing]) & {\n opacity: 0.5;\n }\n\n @mixin hover {\n opacity: 0.8;\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"ScheduleEvent.module.mjs","names":[],"sources":["../../../src/components/ScheduleEvent/ScheduleEvent.module.css"],"sourcesContent":[".event {\n padding: 1px;\n pointer-events: none;\n display: flex;\n flex-direction: column;\n flex: 1 0 auto;\n position: relative;\n z-index: 3;\n\n &:where([data-auto-size]) {\n container-type: size;\n }\n\n &:where([data-draggable]) .eventInner {\n cursor: grab;\n\n &:active {\n cursor: grabbing;\n }\n }\n\n &:where([data-dragging]) {\n opacity: 0.2;\n\n .eventInner {\n cursor: grabbing;\n }\n }\n\n &:where([data-any-dragging]:not([data-dragging])) {\n pointer-events: none;\n\n .eventInner {\n pointer-events: none;\n }\n }\n\n &:where([data-static]) {\n pointer-events: none;\n cursor: default;\n }\n\n &:where([data-resizing]) {\n z-index: 10;\n\n .eventInner {\n @mixin hover {\n background-color: var(--event-bg);\n }\n }\n }\n\n &:where([data-hanging='start'], [data-hanging='both']) {\n &::before {\n content: '';\n position: absolute;\n inset-block: 2px;\n inset-inline-start: 2px;\n width: 2px;\n background-color: var(--event-color);\n border-radius: 10px;\n opacity: 0.3;\n }\n\n .eventInner {\n padding-inline-start: 6px;\n border-start-start-radius: 0;\n border-end-start-radius: 0;\n }\n }\n\n &:where([data-hanging='end'], [data-hanging='both']) {\n &::after {\n content: '';\n position: absolute;\n inset-block: 2px;\n inset-inline-end: 2px;\n width: 2px;\n background-color: var(--event-color);\n border-radius: 10px;\n opacity: 0.3;\n }\n\n .eventInner {\n padding-inline-end: 6px;\n border-start-end-radius: 0;\n border-end-end-radius: 0;\n }\n }\n\n &:where([data-clip-start]) {\n .eventInner {\n padding-inline-start: 12px;\n border-start-start-radius: 0;\n border-end-start-radius: 0;\n clip-path: polygon(10px 0, 100% 0, 100% 100%, 10px 100%, 0 50%);\n }\n }\n\n &:where([data-clip-end]) {\n .eventInner {\n padding-inline-end: 12px;\n border-start-end-radius: 0;\n border-end-end-radius: 0;\n clip-path: polygon(0 0, calc(100% - 10px) 0, 100% 50%, calc(100% - 10px) 100%, 0 100%);\n }\n }\n\n &:where([data-clip-start][data-clip-end]) {\n .eventInner {\n clip-path: polygon(\n 10px 0,\n calc(100% - 10px) 0,\n 100% 50%,\n calc(100% - 10px) 100%,\n 10px 100%,\n 0 50%\n );\n }\n }\n}\n\n.eventInner {\n background-color: var(--event-bg);\n color: var(--event-color);\n pointer-events: all;\n border-radius: var(--event-radius);\n font-weight: var(--mantine-font-weight-medium);\n font-size: 12px;\n line-height: 1;\n padding: 3px 4px;\n width: 100%;\n height: 100%;\n cursor: pointer;\n user-select: none;\n overflow: hidden;\n\n &:where([data-nowrap]) {\n white-space: nowrap;\n text-overflow: ellipsis;\n line-height: 1.25;\n }\n\n &:where([data-size='md']) {\n font-size: 14px;\n padding: 4px 6px;\n }\n\n @mixin hover {\n background-color: var(--event-hover);\n }\n\n &:where([data-auto-size]) {\n @container (max-height: 18px) {\n font-size: 9px;\n padding-block: 0px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n }\n }\n\n .event[data-static] & {\n cursor: default;\n pointer-events: none;\n\n @mixin hover {\n background-color: var(--event-bg);\n }\n }\n\n :where([data-slot-dragging]) & {\n pointer-events: none;\n }\n}\n\n.eventResizeHandle {\n position: absolute;\n left: 50%;\n transform: translateX(-50%);\n width: 40%;\n max-width: 40px;\n height: 4px;\n border-radius: 2px;\n cursor: ns-resize;\n pointer-events: all;\n z-index: 4;\n touch-action: none;\n background-color: var(--event-color);\n opacity: 0;\n transition: opacity 100ms ease;\n\n &::before {\n content: '';\n position: absolute;\n inset: -4px -6px;\n }\n\n &:where([data-edge='top']) {\n top: -2px;\n }\n\n &:where([data-edge='bottom']) {\n bottom: -2px;\n }\n\n .event:where(:hover, [data-resizing]) & {\n opacity: 0.5;\n }\n\n @mixin hover {\n opacity: 0.8;\n }\n}\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderControl.mjs","names":["classes"],"sources":["../../../../src/components/ScheduleHeader/HeaderControl/HeaderControl.tsx"],"sourcesContent":["import {\n AccordionChevron,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getRadius,\n MantineRadius,\n StylesApiProps,\n UnstyledButton,\n useDirection,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { getLabel, ScheduleLabelsOverride } from '../../../labels';\nimport { useScheduleHeaderLabels } from '../ScheduleHeaderContext';\nimport classes from './HeaderControl.module.css';\n\nexport type HeaderControlStylesNames = 'headerControl';\nexport type HeaderControlCssVariables = {\n headerControl: '--control-radius';\n};\n\nexport interface HeaderControlProps\n extends BoxProps, StylesApiProps<HeaderControlFactory>, ElementProps<'button'> {\n __staticSelector?: string;\n\n /** Applies active styles */\n active?: boolean;\n\n /** Removes inline padding */\n square?: boolean;\n\n /** Key of `theme.radius` or any valid CSS value to set `border-radius` @default theme.defaultRadius */\n radius?: MantineRadius;\n\n /** If set to `false`, the control will not be clickable */\n interactive?: boolean;\n\n /** Labels override */\n labels?: ScheduleLabelsOverride;\n}\n\nexport type HeaderControlFactory = Factory<{\n props: HeaderControlProps;\n ref: HTMLButtonElement;\n stylesNames: HeaderControlStylesNames;\n vars: HeaderControlCssVariables;\n}>;\n\nconst defaultProps = {\n __staticSelector: 'HeaderControl',\n interactive: true,\n} satisfies Partial<HeaderControlProps>;\n\nconst varsResolver = createVarsResolver<HeaderControlFactory>((_theme, { radius }) => ({\n headerControl: {\n '--control-radius': radius === undefined ? undefined : getRadius(radius),\n },\n}));\n\nexport const HeaderControl = factory<HeaderControlFactory>((_props) => {\n const props = useProps('HeaderControl', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n __staticSelector,\n mod,\n attributes,\n active,\n square,\n radius,\n interactive,\n labels,\n ...others\n } = props;\n\n const getStyles = useStyles<HeaderControlFactory>({\n name: __staticSelector,\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n rootSelector: 'headerControl',\n });\n\n return (\n <UnstyledButton\n {...getStyles('headerControl', { active: interactive })}\n mod={[{ active, square, interactive }, mod]}\n tabIndex={interactive ? undefined : -1}\n {...others}\n />\n );\n});\n\nHeaderControl.displayName = '@mantine/schedule/HeaderControl';\nHeaderControl.classes = classes;\nHeaderControl.varsResolver = varsResolver;\n\nexport function ScheduleHeaderNext(props: HeaderControlProps) {\n const { dir } = useDirection();\n const resolvedLabels = useScheduleHeaderLabels(props.labels);\n\n return (\n <HeaderControl data-type=\"next\" aria-label={getLabel('next', resolvedLabels)} square {...props}>\n <AccordionChevron style={{ transform: `rotate(${dir === 'rtl' ? 90 : -90}deg)` }} />\n </HeaderControl>\n );\n}\n\nexport function ScheduleHeaderPrevious(props: HeaderControlProps) {\n const { dir } = useDirection();\n const resolvedLabels = useScheduleHeaderLabels(props.labels);\n\n return (\n <HeaderControl\n data-type=\"previous\"\n aria-label={getLabel('previous', resolvedLabels)}\n square\n {...props}\n >\n <AccordionChevron style={{ transform: `rotate(${dir === 'rtl' ? -90 : 90}deg)` }} />\n </HeaderControl>\n );\n}\n\nexport function ScheduleHeaderToday(props: HeaderControlProps) {\n const resolvedLabels = useScheduleHeaderLabels(props.labels);\n\n return (\n <HeaderControl data-type=\"today\" aria-label={getLabel('today', resolvedLabels)} {...props}>\n {getLabel('today', resolvedLabels)}\n </HeaderControl>\n );\n}\n\nScheduleHeaderNext.displayName = '@mantine/schedule/ScheduleHeaderNext';\nScheduleHeaderPrevious.displayName = '@mantine/schedule/ScheduleHeaderPrevious';\nScheduleHeaderToday.displayName = '@mantine/schedule/ScheduleHeaderToday';\n"],"mappings":";;;;;;;AAmDA,MAAM,eAAe;CACnB,kBAAkB;CAClB,aAAa;CACd;AAED,MAAM,eAAe,oBAA0C,QAAQ,EAAE,cAAc,EACrF,eAAe,EACb,oBAAoB,WAAW,KAAA,IAAY,KAAA,IAAY,UAAU,OAAO,EACzE,EACF,EAAE;AAEH,MAAa,gBAAgB,SAA+B,WAAW;CACrE,MAAM,QAAQ,SAAS,iBAAiB,cAAc,OAAO;CAC7D,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,kBACA,KACA,YACA,QACA,QACA,QACA,aACA,QACA,GAAG,WACD;AAiBJ,QACE,oBAAC,gBAAD;EACE,GAjBc,UAAgC;GAChD,MAAM;GACN,SAAA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,cAAc;GACf,CAAC,CAIgB,iBAAiB,EAAE,QAAQ,aAAa,CAAC;EACvD,KAAK,CAAC;GAAE;GAAQ;GAAQ;GAAa,EAAE,IAAI;EAC3C,UAAU,cAAc,KAAA,IAAY;EACpC,GAAI;EACJ,CAAA;EAEJ;AAEF,cAAc,cAAc;AAC5B,cAAc,UAAUA;AACxB,cAAc,eAAe;AAE7B,SAAgB,mBAAmB,OAA2B;CAC5D,MAAM,EAAE,QAAQ,cAAc;AAG9B,QACE,oBAAC,eAAD;EAAe,aAAU;EAAO,cAAY,SAAS,QAHhC,wBAAwB,MAAM,OAAO,CAGkB;EAAE,QAAA;EAAO,GAAI;YACvF,oBAAC,kBAAD,EAAkB,OAAO,EAAE,WAAW,UAAU,QAAQ,QAAQ,KAAK,IAAI,OAAO,EAAI,CAAA;EACtE,CAAA;;AAIpB,SAAgB,uBAAuB,OAA2B;CAChE,MAAM,EAAE,QAAQ,cAAc;AAG9B,QACE,oBAAC,eAAD;EACE,aAAU;EACV,cAAY,SAAS,YALF,wBAAwB,MAAM,OAAO,CAKR;EAChD,QAAA;EACA,GAAI;YAEJ,oBAAC,kBAAD,EAAkB,OAAO,EAAE,WAAW,UAAU,QAAQ,QAAQ,MAAM,GAAG,OAAO,EAAI,CAAA;EACtE,CAAA;;AAIpB,SAAgB,oBAAoB,OAA2B;CAC7D,MAAM,iBAAiB,wBAAwB,MAAM,OAAO;AAE5D,QACE,oBAAC,eAAD;EAAe,aAAU;EAAQ,cAAY,SAAS,SAAS,eAAe;EAAE,GAAI;YACjF,SAAS,SAAS,eAAe;EACpB,CAAA;;AAIpB,mBAAmB,cAAc;AACjC,uBAAuB,cAAc;AACrC,oBAAoB,cAAc"}
1
+ {"version":3,"file":"HeaderControl.mjs","names":["classes"],"sources":["../../../../src/components/ScheduleHeader/HeaderControl/HeaderControl.tsx"],"sourcesContent":["import {\n AccordionChevron,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getRadius,\n MantineRadius,\n StylesApiProps,\n UnstyledButton,\n useDirection,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { getLabel, ScheduleLabelsOverride } from '../../../labels';\nimport { useScheduleHeaderLabels } from '../ScheduleHeaderContext';\nimport classes from './HeaderControl.module.css';\n\nexport type HeaderControlStylesNames = 'headerControl';\nexport type HeaderControlCssVariables = {\n headerControl: '--control-radius';\n};\n\nexport interface HeaderControlProps\n extends BoxProps, StylesApiProps<HeaderControlFactory>, ElementProps<'button'> {\n __staticSelector?: string;\n\n /** Applies active styles */\n active?: boolean;\n\n /** Removes inline padding */\n square?: boolean;\n\n /** Key of `theme.radius` or any valid CSS value to set `border-radius` @default theme.defaultRadius */\n radius?: MantineRadius;\n\n /** If set to `false`, the control will not be clickable */\n interactive?: boolean;\n\n /** Labels override */\n labels?: ScheduleLabelsOverride;\n}\n\nexport type HeaderControlFactory = Factory<{\n props: HeaderControlProps;\n ref: HTMLButtonElement;\n stylesNames: HeaderControlStylesNames;\n vars: HeaderControlCssVariables;\n}>;\n\nconst defaultProps = {\n __staticSelector: 'HeaderControl',\n interactive: true,\n} satisfies Partial<HeaderControlProps>;\n\nconst varsResolver = createVarsResolver<HeaderControlFactory>((_theme, { radius }) => ({\n headerControl: {\n '--control-radius': radius === undefined ? undefined : getRadius(radius),\n },\n}));\n\nexport const HeaderControl = factory<HeaderControlFactory>((_props) => {\n const props = useProps('HeaderControl', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n __staticSelector,\n mod,\n attributes,\n active,\n square,\n radius,\n interactive,\n labels,\n ...others\n } = props;\n\n const getStyles = useStyles<HeaderControlFactory>({\n name: __staticSelector,\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n rootSelector: 'headerControl',\n });\n\n return (\n <UnstyledButton\n {...getStyles('headerControl', { active: interactive })}\n mod={[{ active, square, interactive }, mod]}\n tabIndex={interactive ? undefined : -1}\n {...others}\n />\n );\n});\n\nHeaderControl.displayName = '@mantine/schedule/HeaderControl';\nHeaderControl.classes = classes;\nHeaderControl.varsResolver = varsResolver;\n\nexport function ScheduleHeaderNext(props: HeaderControlProps) {\n const { dir } = useDirection();\n const resolvedLabels = useScheduleHeaderLabels(props.labels);\n\n return (\n <HeaderControl data-type=\"next\" aria-label={getLabel('next', resolvedLabels)} square {...props}>\n <AccordionChevron style={{ transform: `rotate(${dir === 'rtl' ? 90 : -90}deg)` }} />\n </HeaderControl>\n );\n}\n\nexport function ScheduleHeaderPrevious(props: HeaderControlProps) {\n const { dir } = useDirection();\n const resolvedLabels = useScheduleHeaderLabels(props.labels);\n\n return (\n <HeaderControl\n data-type=\"previous\"\n aria-label={getLabel('previous', resolvedLabels)}\n square\n {...props}\n >\n <AccordionChevron style={{ transform: `rotate(${dir === 'rtl' ? -90 : 90}deg)` }} />\n </HeaderControl>\n );\n}\n\nexport function ScheduleHeaderToday(props: HeaderControlProps) {\n const resolvedLabels = useScheduleHeaderLabels(props.labels);\n\n return (\n <HeaderControl data-type=\"today\" aria-label={getLabel('today', resolvedLabels)} {...props}>\n {getLabel('today', resolvedLabels)}\n </HeaderControl>\n );\n}\n\nScheduleHeaderNext.displayName = '@mantine/schedule/ScheduleHeaderNext';\nScheduleHeaderPrevious.displayName = '@mantine/schedule/ScheduleHeaderPrevious';\nScheduleHeaderToday.displayName = '@mantine/schedule/ScheduleHeaderToday';\n"],"mappings":";;;;;;;AAmDA,MAAM,eAAe;CACnB,kBAAkB;CAClB,aAAa;AACf;AAEA,MAAM,eAAe,oBAA0C,QAAQ,EAAE,cAAc,EACrF,eAAe,EACb,oBAAoB,WAAW,KAAA,IAAY,KAAA,IAAY,UAAU,MAAM,EACzE,EACF,EAAE;AAEF,MAAa,gBAAgB,SAA+B,WAAW;CACrE,MAAM,QAAQ,SAAS,iBAAiB,cAAc,MAAM;CAC5D,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,kBACA,KACA,YACA,QACA,QACA,QACA,aACA,QACA,GAAG,WACD;CAiBJ,OACE,oBAAC,gBAAD;EACE,GAjBc,UAAgC;GAChD,MAAM;GACN,SAAA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,cAAc;EAChB,CAIgB,EAAE,iBAAiB,EAAE,QAAQ,YAAY,CAAC;EACtD,KAAK,CAAC;GAAE;GAAQ;GAAQ;EAAY,GAAG,GAAG;EAC1C,UAAU,cAAc,KAAA,IAAY;EACpC,GAAI;CACL,CAAA;AAEL,CAAC;AAED,cAAc,cAAc;AAC5B,cAAc,UAAUA;AACxB,cAAc,eAAe;AAE7B,SAAgB,mBAAmB,OAA2B;CAC5D,MAAM,EAAE,QAAQ,aAAa;CAG7B,OACE,oBAAC,eAAD;EAAe,aAAU;EAAO,cAAY,SAAS,QAHhC,wBAAwB,MAAM,MAGuB,CAAC;EAAG,QAAA;EAAO,GAAI;YACvF,oBAAC,kBAAD,EAAkB,OAAO,EAAE,WAAW,UAAU,QAAQ,QAAQ,KAAK,IAAI,MAAM,EAAI,CAAA;CACtE,CAAA;AAEnB;AAEA,SAAgB,uBAAuB,OAA2B;CAChE,MAAM,EAAE,QAAQ,aAAa;CAG7B,OACE,oBAAC,eAAD;EACE,aAAU;EACV,cAAY,SAAS,YALF,wBAAwB,MAAM,MAKH,CAAC;EAC/C,QAAA;EACA,GAAI;YAEJ,oBAAC,kBAAD,EAAkB,OAAO,EAAE,WAAW,UAAU,QAAQ,QAAQ,MAAM,GAAG,MAAM,EAAI,CAAA;CACtE,CAAA;AAEnB;AAEA,SAAgB,oBAAoB,OAA2B;CAC7D,MAAM,iBAAiB,wBAAwB,MAAM,MAAM;CAE3D,OACE,oBAAC,eAAD;EAAe,aAAU;EAAQ,cAAY,SAAS,SAAS,cAAc;EAAG,GAAI;YACjF,SAAS,SAAS,cAAc;CACpB,CAAA;AAEnB;AAEA,mBAAmB,cAAc;AACjC,uBAAuB,cAAc;AACrC,oBAAoB,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"MonthYearSelect.mjs","names":["classes"],"sources":["../../../../src/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.tsx"],"sourcesContent":["import {\n BoxProps,\n createScopedKeydownHandler,\n createVarsResolver,\n DataAttributes,\n ElementProps,\n factory,\n Factory,\n getRadius,\n MantineRadius,\n Popover,\n PopoverProps,\n StylesApiProps,\n UnstyledButton,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { useDatesContext } from '@mantine/dates';\nimport { useDisclosure } from '@mantine/hooks';\nimport { getLabel, ScheduleLabelsOverride } from '../../../labels';\nimport { DateLabelFormat } from '../../../types';\nimport { formatDate, getMonthsList, getYearsList } from '../../../utils';\nimport { HeaderControl } from '../HeaderControl/HeaderControl';\nimport { useScheduleHeaderLabels } from '../ScheduleHeaderContext';\nimport classes from './MonthYearSelect.module.css';\n\nexport type MonthYearSelectStylesNames =\n | 'monthYearSelectTarget'\n | 'monthYearSelectDropdown'\n | 'monthYearSelectControl'\n | 'monthYearSelectList'\n | 'monthYearSelectLabel';\n\nexport type MonthYearSelectCssVariables = {\n monthYearSelectDropdown: '--control-radius';\n};\n\nexport interface MonthYearSelectProps\n extends BoxProps, StylesApiProps<MonthYearSelectFactory>, ElementProps<'button'> {\n __staticSelector?: string;\n\n /** Locale passed down to dayjs, overrides value defined on `DatesProvider` */\n locale?: string;\n\n /** Props passed down to the underlying Popover component */\n popoverProps?: PopoverProps;\n\n /** Start year for year selection, calculated from the current date by default */\n startYear?: number;\n\n /** End year for year selection, calculated from the current date by default */\n endYear?: number;\n\n /** Current year value (e.g. `2025`) */\n yearValue?: number;\n\n /** Current month value (0-11) */\n monthValue?: number;\n\n /** Called with year value (e.g. `2025`) when year is selected in the dropdown */\n onYearChange?: (year: number) => void;\n\n /** Called with month value (0-11) when month is selected in the dropdown */\n onMonthChange?: (month: number) => void;\n\n /** Format for displaying months in the dropdown, dayjs format or custom formatter function @default 'MMM' */\n monthsListFormat?: DateLabelFormat;\n\n /** Format for displaying month label in the control, dayjs format @default 'MMMM YYYY' */\n labelFormat?: DateLabelFormat;\n\n /** Key of `theme.radius` or any valid CSS value to set `border-radius` @default theme.defaultRadius */\n radius?: MantineRadius;\n\n /** Props passed down to year controls */\n getYearControlProps?: (year: number) => React.ComponentProps<'button'> & DataAttributes;\n\n /** Props passed down to month controls */\n getMonthControlProps?: (month: number) => React.ComponentProps<'button'> & DataAttributes;\n\n /** If set to false, months are not displayed in the dropdown @default true */\n withMonths?: boolean;\n\n /** Labels override */\n labels?: ScheduleLabelsOverride;\n}\n\nexport type MonthYearSelectFactory = Factory<{\n props: MonthYearSelectProps;\n ref: HTMLButtonElement;\n stylesNames: MonthYearSelectStylesNames;\n vars: MonthYearSelectCssVariables;\n}>;\n\nconst defaultProps = {\n __staticSelector: 'MonthYearSelect',\n withMonths: true,\n} satisfies Partial<MonthYearSelectProps>;\n\nconst varsResolver = createVarsResolver<MonthYearSelectFactory>((_theme, { radius }) => ({\n monthYearSelectDropdown: {\n '--control-radius': radius === undefined ? undefined : getRadius(radius),\n },\n}));\n\nexport const MonthYearSelect = factory<MonthYearSelectFactory>((_props) => {\n const props = useProps('MonthYearSelect', defaultProps, _props);\n const {\n __staticSelector,\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n attributes,\n popoverProps,\n startYear,\n endYear,\n onYearChange,\n onMonthChange,\n locale,\n monthsListFormat,\n monthValue,\n yearValue,\n labelFormat,\n radius,\n getMonthControlProps,\n getYearControlProps,\n withMonths,\n id,\n labels,\n ...others\n } = props;\n\n const getStyles = useStyles<MonthYearSelectFactory>({\n name: __staticSelector,\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n rootSelector: 'monthYearSelectTarget',\n });\n\n const [opened, handlers] = useDisclosure(false);\n const resolvedLabels = useScheduleHeaderLabels(labels);\n\n const today = new Date();\n const ctx = useDatesContext();\n const _startYear = startYear ?? today.getFullYear() - 5;\n const _endYear = endYear ?? today.getFullYear() + 5;\n const hasActiveYear = yearValue !== undefined && yearValue >= _startYear && yearValue <= _endYear;\n\n const years = getYearsList({ startYear: _startYear, endYear: _endYear }).map((year, index) => {\n const controlProps = getYearControlProps?.(year);\n return (\n <UnstyledButton\n key={year}\n onClick={() => {\n onYearChange?.(year);\n if (!withMonths) {\n handlers.close();\n }\n }}\n mod={{ type: 'year', active: year === yearValue }}\n aria-label={`${getLabel('selectYear', resolvedLabels)} ${year}`}\n tabIndex={hasActiveYear ? (year === yearValue ? 0 : -1) : index === 0 ? 0 : -1}\n {...controlProps}\n onKeyDown={createScopedKeydownHandler({\n siblingSelector: '[data-type=\"year\"]:not(:disabled)',\n parentSelector: '[data-list]',\n activateOnFocus: false,\n loop: true,\n orientation: 'vertical',\n onKeyDown: controlProps?.onKeyDown,\n })}\n {...getStyles('monthYearSelectControl', {\n className: controlProps?.className,\n style: controlProps?.style,\n })}\n >\n {year}\n </UnstyledButton>\n );\n });\n\n const months = withMonths\n ? getMonthsList({\n locale: ctx.getLocale(locale),\n format: monthsListFormat || 'MMMM',\n }).map((month) => {\n const controlProps = getMonthControlProps?.(month.month);\n return (\n <UnstyledButton\n key={month.name}\n onClick={() => onMonthChange?.(month.month)}\n mod={{ type: 'month', active: month.month === monthValue }}\n tabIndex={month.month === monthValue ? 0 : -1}\n onKeyDown={createScopedKeydownHandler({\n siblingSelector: '[data-type=\"month\"]:not(:disabled)',\n parentSelector: '[data-list]',\n activateOnFocus: false,\n loop: true,\n orientation: 'vertical',\n onKeyDown: controlProps?.onKeyDown,\n })}\n {...controlProps}\n {...getStyles('monthYearSelectControl', {\n className: controlProps?.className,\n style: controlProps?.style,\n })}\n aria-label={`${getLabel('selectMonth', resolvedLabels)} ${month.name}`}\n >\n {month.name}\n </UnstyledButton>\n );\n })\n : null;\n\n return (\n <Popover\n position=\"bottom-start\"\n __staticSelector={__staticSelector}\n trapFocus\n transitionProps={{ transition: 'pop', duration: 120 }}\n radius={radius || 'var(--schedule-radius, var(--mantine-radius-default))'}\n shadow=\"md\"\n offset={3}\n width={withMonths ? undefined : 'target'}\n opened={opened}\n onChange={handlers.set}\n id={id}\n {...popoverProps}\n >\n <Popover.Target>\n <HeaderControl\n {...getStyles('monthYearSelectTarget')}\n __staticSelector={__staticSelector}\n radius={radius}\n data-with-months={withMonths || undefined}\n onClick={handlers.toggle}\n {...others}\n >\n {formatDate({\n locale: ctx.getLocale(locale),\n date: new Date(yearValue ?? today.getFullYear(), monthValue ?? today.getMonth()),\n format: labelFormat || (withMonths ? 'MMMM YYYY' : 'YYYY'),\n })}\n </HeaderControl>\n </Popover.Target>\n\n <Popover.Dropdown\n data-with-months={withMonths || undefined}\n {...getStyles('monthYearSelectDropdown')}\n >\n {withMonths && (\n <div data-list {...getStyles('monthYearSelectList')}>\n <div {...getStyles('monthYearSelectLabel')}>{getLabel('month', resolvedLabels)}</div>\n {months}\n </div>\n )}\n <div data-list {...getStyles('monthYearSelectList')}>\n {withMonths && (\n <div {...getStyles('monthYearSelectLabel')}>{getLabel('year', resolvedLabels)}</div>\n )}\n {years}\n </div>\n </Popover.Dropdown>\n </Popover>\n );\n});\n\nMonthYearSelect.displayName = '@mantine/schedule/MonthYearSelect';\nMonthYearSelect.classes = classes;\nMonthYearSelect.varsResolver = varsResolver;\n"],"mappings":"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"}
1
+ {"version":3,"file":"MonthYearSelect.mjs","names":["classes"],"sources":["../../../../src/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.tsx"],"sourcesContent":["import {\n BoxProps,\n createScopedKeydownHandler,\n createVarsResolver,\n DataAttributes,\n ElementProps,\n factory,\n Factory,\n getRadius,\n MantineRadius,\n Popover,\n PopoverProps,\n StylesApiProps,\n UnstyledButton,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { useDatesContext } from '@mantine/dates';\nimport { useDisclosure } from '@mantine/hooks';\nimport { getLabel, ScheduleLabelsOverride } from '../../../labels';\nimport { DateLabelFormat } from '../../../types';\nimport { formatDate, getMonthsList, getYearsList } from '../../../utils';\nimport { HeaderControl } from '../HeaderControl/HeaderControl';\nimport { useScheduleHeaderLabels } from '../ScheduleHeaderContext';\nimport classes from './MonthYearSelect.module.css';\n\nexport type MonthYearSelectStylesNames =\n | 'monthYearSelectTarget'\n | 'monthYearSelectDropdown'\n | 'monthYearSelectControl'\n | 'monthYearSelectList'\n | 'monthYearSelectLabel';\n\nexport type MonthYearSelectCssVariables = {\n monthYearSelectDropdown: '--control-radius';\n};\n\nexport interface MonthYearSelectProps\n extends BoxProps, StylesApiProps<MonthYearSelectFactory>, ElementProps<'button'> {\n __staticSelector?: string;\n\n /** Locale passed down to dayjs, overrides value defined on `DatesProvider` */\n locale?: string;\n\n /** Props passed down to the underlying Popover component */\n popoverProps?: PopoverProps;\n\n /** Start year for year selection, calculated from the current date by default */\n startYear?: number;\n\n /** End year for year selection, calculated from the current date by default */\n endYear?: number;\n\n /** Current year value (e.g. `2025`) */\n yearValue?: number;\n\n /** Current month value (0-11) */\n monthValue?: number;\n\n /** Called with year value (e.g. `2025`) when year is selected in the dropdown */\n onYearChange?: (year: number) => void;\n\n /** Called with month value (0-11) when month is selected in the dropdown */\n onMonthChange?: (month: number) => void;\n\n /** Format for displaying months in the dropdown, dayjs format or custom formatter function @default 'MMM' */\n monthsListFormat?: DateLabelFormat;\n\n /** Format for displaying month label in the control, dayjs format @default 'MMMM YYYY' */\n labelFormat?: DateLabelFormat;\n\n /** Key of `theme.radius` or any valid CSS value to set `border-radius` @default theme.defaultRadius */\n radius?: MantineRadius;\n\n /** Props passed down to year controls */\n getYearControlProps?: (year: number) => React.ComponentProps<'button'> & DataAttributes;\n\n /** Props passed down to month controls */\n getMonthControlProps?: (month: number) => React.ComponentProps<'button'> & DataAttributes;\n\n /** If set to false, months are not displayed in the dropdown @default true */\n withMonths?: boolean;\n\n /** Labels override */\n labels?: ScheduleLabelsOverride;\n}\n\nexport type MonthYearSelectFactory = Factory<{\n props: MonthYearSelectProps;\n ref: HTMLButtonElement;\n stylesNames: MonthYearSelectStylesNames;\n vars: MonthYearSelectCssVariables;\n}>;\n\nconst defaultProps = {\n __staticSelector: 'MonthYearSelect',\n withMonths: true,\n} satisfies Partial<MonthYearSelectProps>;\n\nconst varsResolver = createVarsResolver<MonthYearSelectFactory>((_theme, { radius }) => ({\n monthYearSelectDropdown: {\n '--control-radius': radius === undefined ? undefined : getRadius(radius),\n },\n}));\n\nexport const MonthYearSelect = factory<MonthYearSelectFactory>((_props) => {\n const props = useProps('MonthYearSelect', defaultProps, _props);\n const {\n __staticSelector,\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n attributes,\n popoverProps,\n startYear,\n endYear,\n onYearChange,\n onMonthChange,\n locale,\n monthsListFormat,\n monthValue,\n yearValue,\n labelFormat,\n radius,\n getMonthControlProps,\n getYearControlProps,\n withMonths,\n id,\n labels,\n ...others\n } = props;\n\n const getStyles = useStyles<MonthYearSelectFactory>({\n name: __staticSelector,\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n rootSelector: 'monthYearSelectTarget',\n });\n\n const [opened, handlers] = useDisclosure(false);\n const resolvedLabels = useScheduleHeaderLabels(labels);\n\n const today = new Date();\n const ctx = useDatesContext();\n const _startYear = startYear ?? today.getFullYear() - 5;\n const _endYear = endYear ?? today.getFullYear() + 5;\n const hasActiveYear = yearValue !== undefined && yearValue >= _startYear && yearValue <= _endYear;\n\n const years = getYearsList({ startYear: _startYear, endYear: _endYear }).map((year, index) => {\n const controlProps = getYearControlProps?.(year);\n return (\n <UnstyledButton\n key={year}\n onClick={() => {\n onYearChange?.(year);\n if (!withMonths) {\n handlers.close();\n }\n }}\n mod={{ type: 'year', active: year === yearValue }}\n aria-label={`${getLabel('selectYear', resolvedLabels)} ${year}`}\n tabIndex={hasActiveYear ? (year === yearValue ? 0 : -1) : index === 0 ? 0 : -1}\n {...controlProps}\n onKeyDown={createScopedKeydownHandler({\n siblingSelector: '[data-type=\"year\"]:not(:disabled)',\n parentSelector: '[data-list]',\n activateOnFocus: false,\n loop: true,\n orientation: 'vertical',\n onKeyDown: controlProps?.onKeyDown,\n })}\n {...getStyles('monthYearSelectControl', {\n className: controlProps?.className,\n style: controlProps?.style,\n })}\n >\n {year}\n </UnstyledButton>\n );\n });\n\n const months = withMonths\n ? getMonthsList({\n locale: ctx.getLocale(locale),\n format: monthsListFormat || 'MMMM',\n }).map((month) => {\n const controlProps = getMonthControlProps?.(month.month);\n return (\n <UnstyledButton\n key={month.name}\n onClick={() => onMonthChange?.(month.month)}\n mod={{ type: 'month', active: month.month === monthValue }}\n tabIndex={month.month === monthValue ? 0 : -1}\n onKeyDown={createScopedKeydownHandler({\n siblingSelector: '[data-type=\"month\"]:not(:disabled)',\n parentSelector: '[data-list]',\n activateOnFocus: false,\n loop: true,\n orientation: 'vertical',\n onKeyDown: controlProps?.onKeyDown,\n })}\n {...controlProps}\n {...getStyles('monthYearSelectControl', {\n className: controlProps?.className,\n style: controlProps?.style,\n })}\n aria-label={`${getLabel('selectMonth', resolvedLabels)} ${month.name}`}\n >\n {month.name}\n </UnstyledButton>\n );\n })\n : null;\n\n return (\n <Popover\n position=\"bottom-start\"\n __staticSelector={__staticSelector}\n trapFocus\n transitionProps={{ transition: 'pop', duration: 120 }}\n radius={radius || 'var(--schedule-radius, var(--mantine-radius-default))'}\n shadow=\"md\"\n offset={3}\n width={withMonths ? undefined : 'target'}\n opened={opened}\n onChange={handlers.set}\n id={id}\n {...popoverProps}\n >\n <Popover.Target>\n <HeaderControl\n {...getStyles('monthYearSelectTarget')}\n __staticSelector={__staticSelector}\n radius={radius}\n data-with-months={withMonths || undefined}\n onClick={handlers.toggle}\n {...others}\n >\n {formatDate({\n locale: ctx.getLocale(locale),\n date: new Date(yearValue ?? today.getFullYear(), monthValue ?? today.getMonth()),\n format: labelFormat || (withMonths ? 'MMMM YYYY' : 'YYYY'),\n })}\n </HeaderControl>\n </Popover.Target>\n\n <Popover.Dropdown\n data-with-months={withMonths || undefined}\n {...getStyles('monthYearSelectDropdown')}\n >\n {withMonths && (\n <div data-list {...getStyles('monthYearSelectList')}>\n <div {...getStyles('monthYearSelectLabel')}>{getLabel('month', resolvedLabels)}</div>\n {months}\n </div>\n )}\n <div data-list {...getStyles('monthYearSelectList')}>\n {withMonths && (\n <div {...getStyles('monthYearSelectLabel')}>{getLabel('year', resolvedLabels)}</div>\n )}\n {years}\n </div>\n </Popover.Dropdown>\n </Popover>\n );\n});\n\nMonthYearSelect.displayName = '@mantine/schedule/MonthYearSelect';\nMonthYearSelect.classes = classes;\nMonthYearSelect.varsResolver = varsResolver;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScheduleHeader.mjs","names":["classes"],"sources":["../../../src/components/ScheduleHeader/ScheduleHeader.tsx"],"sourcesContent":["import {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n StylesApiProps,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { ScheduleLabelsOverride } from '../../labels';\nimport {\n HeaderControl,\n HeaderControlStylesNames,\n ScheduleHeaderNext,\n ScheduleHeaderPrevious,\n ScheduleHeaderToday,\n} from './HeaderControl/HeaderControl';\nimport { MonthYearSelect, MonthYearSelectStylesNames } from './MonthYearSelect/MonthYearSelect';\nimport { ScheduleHeaderLabelsContext } from './ScheduleHeaderContext';\nimport { ViewSelect, ViewSelectStylesNames } from './ViewSelect/ViewSelect';\nimport classes from './ScheduleHeader.module.css';\n\nexport type CombinedScheduleHeaderStylesNames =\n | ScheduleHeaderStylesNames\n | ViewSelectStylesNames\n | HeaderControlStylesNames\n | MonthYearSelectStylesNames;\n\nexport type ScheduleHeaderStylesNames = 'header';\nexport type ScheduleHeaderCssVariables = {\n scheduleHeader: '--test';\n};\n\nexport interface ScheduleHeaderProps\n extends BoxProps, StylesApiProps<ScheduleHeaderFactory>, ElementProps<'div'> {\n __staticSelector?: string;\n\n /** Labels override shared with compound components rendered inside */\n labels?: ScheduleLabelsOverride;\n}\n\nexport type ScheduleHeaderFactory = Factory<{\n props: ScheduleHeaderProps;\n ref: HTMLDivElement;\n stylesNames: ScheduleHeaderStylesNames;\n vars: ScheduleHeaderCssVariables;\n staticComponents: {\n Control: typeof HeaderControl;\n Previous: typeof ScheduleHeaderPrevious;\n Next: typeof ScheduleHeaderNext;\n Today: typeof ScheduleHeaderToday;\n ViewSelect: typeof ViewSelect;\n MonthYearSelect: typeof MonthYearSelect;\n };\n}>;\n\nconst defaultProps = {\n __staticSelector: 'ScheduleHeader',\n} satisfies Partial<ScheduleHeaderProps>;\n\nconst varsResolver = createVarsResolver<ScheduleHeaderFactory>(() => ({\n scheduleHeader: {\n '--test': 'test',\n },\n}));\n\nexport const ScheduleHeader = factory<ScheduleHeaderFactory>((_props) => {\n const props = useProps('ScheduleHeader', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n attributes,\n __staticSelector,\n labels,\n ...others\n } = props;\n\n const getStyles = useStyles<ScheduleHeaderFactory>({\n name: __staticSelector,\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n vars,\n varsResolver,\n attributes,\n rootSelector: 'header',\n });\n\n return (\n <ScheduleHeaderLabelsContext.Provider value={labels}>\n <Box {...getStyles('header')} {...others} />\n </ScheduleHeaderLabelsContext.Provider>\n );\n});\n\nScheduleHeader.displayName = '@mantine/schedule/ScheduleHeader';\nScheduleHeader.classes = classes;\nScheduleHeader.varsResolver = varsResolver;\nScheduleHeader.Control = HeaderControl;\nScheduleHeader.Next = ScheduleHeaderNext;\nScheduleHeader.Previous = ScheduleHeaderPrevious;\nScheduleHeader.Today = ScheduleHeaderToday;\nScheduleHeader.ViewSelect = ViewSelect;\nScheduleHeader.MonthYearSelect = MonthYearSelect;\n"],"mappings":";;;;;;;;;AA0DA,MAAM,eAAe,EACnB,kBAAkB,kBACnB;AAED,MAAM,eAAe,0BAAiD,EACpE,gBAAgB,EACd,UAAU,QACX,EACF,EAAE;AAEH,MAAa,iBAAiB,SAAgC,WAAW;CACvE,MAAM,QAAQ,SAAS,kBAAkB,cAAc,OAAO;CAC9D,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,YACA,kBACA,QACA,GAAG,WACD;CAEJ,MAAM,YAAY,UAAiC;EACjD,MAAM;EACN,SAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,cAAc;EACf,CAAC;AAEF,QACE,oBAAC,4BAA4B,UAA7B;EAAsC,OAAO;YAC3C,oBAAC,KAAD;GAAK,GAAI,UAAU,SAAS;GAAE,GAAI;GAAU,CAAA;EACP,CAAA;EAEzC;AAEF,eAAe,cAAc;AAC7B,eAAe,UAAUA;AACzB,eAAe,eAAe;AAC9B,eAAe,UAAU;AACzB,eAAe,OAAO;AACtB,eAAe,WAAW;AAC1B,eAAe,QAAQ;AACvB,eAAe,aAAa;AAC5B,eAAe,kBAAkB"}
1
+ {"version":3,"file":"ScheduleHeader.mjs","names":["classes"],"sources":["../../../src/components/ScheduleHeader/ScheduleHeader.tsx"],"sourcesContent":["import {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n StylesApiProps,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { ScheduleLabelsOverride } from '../../labels';\nimport {\n HeaderControl,\n HeaderControlStylesNames,\n ScheduleHeaderNext,\n ScheduleHeaderPrevious,\n ScheduleHeaderToday,\n} from './HeaderControl/HeaderControl';\nimport { MonthYearSelect, MonthYearSelectStylesNames } from './MonthYearSelect/MonthYearSelect';\nimport { ScheduleHeaderLabelsContext } from './ScheduleHeaderContext';\nimport { ViewSelect, ViewSelectStylesNames } from './ViewSelect/ViewSelect';\nimport classes from './ScheduleHeader.module.css';\n\nexport type CombinedScheduleHeaderStylesNames =\n | ScheduleHeaderStylesNames\n | ViewSelectStylesNames\n | HeaderControlStylesNames\n | MonthYearSelectStylesNames;\n\nexport type ScheduleHeaderStylesNames = 'header';\nexport type ScheduleHeaderCssVariables = {\n scheduleHeader: '--test';\n};\n\nexport interface ScheduleHeaderProps\n extends BoxProps, StylesApiProps<ScheduleHeaderFactory>, ElementProps<'div'> {\n __staticSelector?: string;\n\n /** Labels override shared with compound components rendered inside */\n labels?: ScheduleLabelsOverride;\n}\n\nexport type ScheduleHeaderFactory = Factory<{\n props: ScheduleHeaderProps;\n ref: HTMLDivElement;\n stylesNames: ScheduleHeaderStylesNames;\n vars: ScheduleHeaderCssVariables;\n staticComponents: {\n Control: typeof HeaderControl;\n Previous: typeof ScheduleHeaderPrevious;\n Next: typeof ScheduleHeaderNext;\n Today: typeof ScheduleHeaderToday;\n ViewSelect: typeof ViewSelect;\n MonthYearSelect: typeof MonthYearSelect;\n };\n}>;\n\nconst defaultProps = {\n __staticSelector: 'ScheduleHeader',\n} satisfies Partial<ScheduleHeaderProps>;\n\nconst varsResolver = createVarsResolver<ScheduleHeaderFactory>(() => ({\n scheduleHeader: {\n '--test': 'test',\n },\n}));\n\nexport const ScheduleHeader = factory<ScheduleHeaderFactory>((_props) => {\n const props = useProps('ScheduleHeader', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n attributes,\n __staticSelector,\n labels,\n ...others\n } = props;\n\n const getStyles = useStyles<ScheduleHeaderFactory>({\n name: __staticSelector,\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n vars,\n varsResolver,\n attributes,\n rootSelector: 'header',\n });\n\n return (\n <ScheduleHeaderLabelsContext.Provider value={labels}>\n <Box {...getStyles('header')} {...others} />\n </ScheduleHeaderLabelsContext.Provider>\n );\n});\n\nScheduleHeader.displayName = '@mantine/schedule/ScheduleHeader';\nScheduleHeader.classes = classes;\nScheduleHeader.varsResolver = varsResolver;\nScheduleHeader.Control = HeaderControl;\nScheduleHeader.Next = ScheduleHeaderNext;\nScheduleHeader.Previous = ScheduleHeaderPrevious;\nScheduleHeader.Today = ScheduleHeaderToday;\nScheduleHeader.ViewSelect = ViewSelect;\nScheduleHeader.MonthYearSelect = MonthYearSelect;\n"],"mappings":";;;;;;;;;AA0DA,MAAM,eAAe,EACnB,kBAAkB,iBACpB;AAEA,MAAM,eAAe,0BAAiD,EACpE,gBAAgB,EACd,UAAU,OACZ,EACF,EAAE;AAEF,MAAa,iBAAiB,SAAgC,WAAW;CACvE,MAAM,QAAQ,SAAS,kBAAkB,cAAc,MAAM;CAC7D,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,YACA,kBACA,QACA,GAAG,WACD;CAEJ,MAAM,YAAY,UAAiC;EACjD,MAAM;EACN,SAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,cAAc;CAChB,CAAC;CAED,OACE,oBAAC,4BAA4B,UAA7B;EAAsC,OAAO;YAC3C,oBAAC,KAAD;GAAK,GAAI,UAAU,QAAQ;GAAG,GAAI;EAAS,CAAA;CACP,CAAA;AAE1C,CAAC;AAED,eAAe,cAAc;AAC7B,eAAe,UAAUA;AACzB,eAAe,eAAe;AAC9B,eAAe,UAAU;AACzB,eAAe,OAAO;AACtB,eAAe,WAAW;AAC1B,eAAe,QAAQ;AACvB,eAAe,aAAa;AAC5B,eAAe,kBAAkB"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScheduleHeaderBase.mjs","names":["classes"],"sources":["../../../src/components/ScheduleHeader/ScheduleHeaderBase.tsx"],"sourcesContent":["import { NativeSelect, StylesApiProps } from '@mantine/core';\nimport { getLabel, ScheduleLabelsOverride } from '../../labels';\nimport { DateStringValue, ScheduleViewLevel } from '../../types';\nimport { MonthYearSelectProps } from './MonthYearSelect/MonthYearSelect';\nimport { ScheduleHeader } from './ScheduleHeader';\nimport { ViewSelectProps } from './ViewSelect/ViewSelect';\nimport classes from './ScheduleHeader.module.css';\n\ninterface NavigationHandlers {\n /** Handler for previous button click, returns new date */\n previous: () => DateStringValue;\n\n /** Handler for next button click, returns new date */\n next: () => DateStringValue;\n\n /** Handler for today button click, returns new date */\n today: () => DateStringValue;\n}\n\ninterface HeaderControlOptions {\n /** Title to render in a simple control (used by DayView, WeekView) */\n title?: React.ReactNode;\n /** MonthYearSelect props (used by MonthView, YearView) */\n monthYearSelect?: {\n yearValue: number;\n monthValue: number;\n onYearChange?: (year: number) => void;\n onMonthChange?: (month: number) => void;\n withMonths?: boolean;\n } & Partial<MonthYearSelectProps>;\n /** Minimum width for control */\n miw?: React.CSSProperties['minWidth'];\n}\n\nexport interface ScheduleHeaderBaseProps {\n /** Current view level */\n view: ScheduleViewLevel;\n\n /** Navigation handlers for previous, next, and today */\n navigationHandlers: NavigationHandlers;\n\n /** Central control configuration (either title or monthYearSelect) */\n control: HeaderControlOptions;\n\n /** Label overrides */\n labels?: ScheduleLabelsOverride;\n\n /** Called when date is changed */\n onDateChange?: (date: DateStringValue) => void;\n\n /** Called when view is changed */\n onViewChange?: (view: ScheduleViewLevel) => void;\n\n /** Props passed to previous control button */\n previousControlProps?: React.ComponentProps<'button'>;\n\n /** Props passed to next control button */\n nextControlProps?: React.ComponentProps<'button'>;\n\n /** Props passed to today control button */\n todayControlProps?: React.ComponentProps<'button'>;\n\n /** Props passed to view select */\n viewSelectProps?: Partial<ViewSelectProps>;\n\n /** Styles API props to pass through */\n stylesApiProps?: StylesApiProps<any>;\n}\n\nconst VIEW_LEVELS: ScheduleViewLevel[] = ['day', 'week', 'month', 'year'];\n\nexport function ScheduleHeaderBase({\n view,\n navigationHandlers,\n control,\n labels,\n onDateChange,\n onViewChange,\n previousControlProps,\n nextControlProps,\n todayControlProps,\n viewSelectProps,\n stylesApiProps,\n}: ScheduleHeaderBaseProps) {\n const centralControl = control.monthYearSelect ? (\n <ScheduleHeader.MonthYearSelect\n {...stylesApiProps}\n labels={labels}\n {...control.monthYearSelect}\n />\n ) : (\n <ScheduleHeader.Control {...stylesApiProps} interactive={false} miw={control.miw}>\n {control.title}\n </ScheduleHeader.Control>\n );\n\n const views = viewSelectProps?.views || VIEW_LEVELS;\n const compactViewSelectData = views.map((v) => ({\n value: v,\n label: getLabel(v, labels) as string,\n }));\n\n return (\n <ScheduleHeader {...stylesApiProps} labels={labels}>\n <div className={classes.navigationGroup}>\n <ScheduleHeader.Previous\n {...stylesApiProps}\n onClick={() => onDateChange?.(navigationHandlers.previous())}\n labels={labels}\n {...previousControlProps}\n />\n\n {centralControl}\n\n <ScheduleHeader.Next\n {...stylesApiProps}\n onClick={() => onDateChange?.(navigationHandlers.next())}\n labels={labels}\n {...nextControlProps}\n />\n </div>\n\n <div className={classes.todayControl}>\n <ScheduleHeader.Today\n {...stylesApiProps}\n onClick={() => onDateChange?.(navigationHandlers.today())}\n labels={labels}\n {...todayControlProps}\n />\n </div>\n\n <NativeSelect\n className={classes.compactViewSelect}\n data={compactViewSelectData}\n value={view}\n onChange={(event) => onViewChange?.(event.currentTarget.value as ScheduleViewLevel)}\n aria-label={getLabel('viewSelectLabel', labels) as string}\n size=\"sm\"\n />\n\n <div className={classes.viewSelect} style={{ marginInlineStart: 'auto' }}>\n <ScheduleHeader.ViewSelect\n value={view}\n onChange={onViewChange}\n labels={labels}\n {...stylesApiProps}\n {...viewSelectProps}\n />\n </div>\n </ScheduleHeader>\n );\n}\n"],"mappings":";;;;;;;AAqEA,MAAM,cAAmC;CAAC;CAAO;CAAQ;CAAS;CAAO;AAEzE,SAAgB,mBAAmB,EACjC,MACA,oBACA,SACA,QACA,cACA,cACA,sBACA,kBACA,mBACA,iBACA,kBAC0B;CAC1B,MAAM,iBAAiB,QAAQ,kBAC7B,oBAAC,eAAe,iBAAhB;EACE,GAAI;EACI;EACR,GAAI,QAAQ;EACZ,CAAA,GAEF,oBAAC,eAAe,SAAhB;EAAwB,GAAI;EAAgB,aAAa;EAAO,KAAK,QAAQ;YAC1E,QAAQ;EACc,CAAA;CAI3B,MAAM,yBADQ,iBAAiB,SAAS,aACJ,KAAK,OAAO;EAC9C,OAAO;EACP,OAAO,SAAS,GAAG,OAAO;EAC3B,EAAE;AAEH,QACE,qBAAC,gBAAD;EAAgB,GAAI;EAAwB;YAA5C;GACE,qBAAC,OAAD;IAAK,WAAWA,8BAAQ;cAAxB;KACE,oBAAC,eAAe,UAAhB;MACE,GAAI;MACJ,eAAe,eAAe,mBAAmB,UAAU,CAAC;MACpD;MACR,GAAI;MACJ,CAAA;KAED;KAED,oBAAC,eAAe,MAAhB;MACE,GAAI;MACJ,eAAe,eAAe,mBAAmB,MAAM,CAAC;MAChD;MACR,GAAI;MACJ,CAAA;KACE;;GAEN,oBAAC,OAAD;IAAK,WAAWA,8BAAQ;cACtB,oBAAC,eAAe,OAAhB;KACE,GAAI;KACJ,eAAe,eAAe,mBAAmB,OAAO,CAAC;KACjD;KACR,GAAI;KACJ,CAAA;IACE,CAAA;GAEN,oBAAC,cAAD;IACE,WAAWA,8BAAQ;IACnB,MAAM;IACN,OAAO;IACP,WAAW,UAAU,eAAe,MAAM,cAAc,MAA2B;IACnF,cAAY,SAAS,mBAAmB,OAAO;IAC/C,MAAK;IACL,CAAA;GAEF,oBAAC,OAAD;IAAK,WAAWA,8BAAQ;IAAY,OAAO,EAAE,mBAAmB,QAAQ;cACtE,oBAAC,eAAe,YAAhB;KACE,OAAO;KACP,UAAU;KACF;KACR,GAAI;KACJ,GAAI;KACJ,CAAA;IACE,CAAA;GACS"}
1
+ {"version":3,"file":"ScheduleHeaderBase.mjs","names":["classes"],"sources":["../../../src/components/ScheduleHeader/ScheduleHeaderBase.tsx"],"sourcesContent":["import { NativeSelect, StylesApiProps } from '@mantine/core';\nimport { getLabel, ScheduleLabelsOverride } from '../../labels';\nimport { DateStringValue, ScheduleViewLevel } from '../../types';\nimport { MonthYearSelectProps } from './MonthYearSelect/MonthYearSelect';\nimport { ScheduleHeader } from './ScheduleHeader';\nimport { ViewSelectProps } from './ViewSelect/ViewSelect';\nimport classes from './ScheduleHeader.module.css';\n\ninterface NavigationHandlers {\n /** Handler for previous button click, returns new date */\n previous: () => DateStringValue;\n\n /** Handler for next button click, returns new date */\n next: () => DateStringValue;\n\n /** Handler for today button click, returns new date */\n today: () => DateStringValue;\n}\n\ninterface HeaderControlOptions {\n /** Title to render in a simple control (used by DayView, WeekView) */\n title?: React.ReactNode;\n /** MonthYearSelect props (used by MonthView, YearView) */\n monthYearSelect?: {\n yearValue: number;\n monthValue: number;\n onYearChange?: (year: number) => void;\n onMonthChange?: (month: number) => void;\n withMonths?: boolean;\n } & Partial<MonthYearSelectProps>;\n /** Minimum width for control */\n miw?: React.CSSProperties['minWidth'];\n}\n\nexport interface ScheduleHeaderBaseProps {\n /** Current view level */\n view: ScheduleViewLevel;\n\n /** Navigation handlers for previous, next, and today */\n navigationHandlers: NavigationHandlers;\n\n /** Central control configuration (either title or monthYearSelect) */\n control: HeaderControlOptions;\n\n /** Label overrides */\n labels?: ScheduleLabelsOverride;\n\n /** Called when date is changed */\n onDateChange?: (date: DateStringValue) => void;\n\n /** Called when view is changed */\n onViewChange?: (view: ScheduleViewLevel) => void;\n\n /** Props passed to previous control button */\n previousControlProps?: React.ComponentProps<'button'>;\n\n /** Props passed to next control button */\n nextControlProps?: React.ComponentProps<'button'>;\n\n /** Props passed to today control button */\n todayControlProps?: React.ComponentProps<'button'>;\n\n /** Props passed to view select */\n viewSelectProps?: Partial<ViewSelectProps>;\n\n /** Styles API props to pass through */\n stylesApiProps?: StylesApiProps<any>;\n}\n\nconst VIEW_LEVELS: ScheduleViewLevel[] = ['day', 'week', 'month', 'year'];\n\nexport function ScheduleHeaderBase({\n view,\n navigationHandlers,\n control,\n labels,\n onDateChange,\n onViewChange,\n previousControlProps,\n nextControlProps,\n todayControlProps,\n viewSelectProps,\n stylesApiProps,\n}: ScheduleHeaderBaseProps) {\n const centralControl = control.monthYearSelect ? (\n <ScheduleHeader.MonthYearSelect\n {...stylesApiProps}\n labels={labels}\n {...control.monthYearSelect}\n />\n ) : (\n <ScheduleHeader.Control {...stylesApiProps} interactive={false} miw={control.miw}>\n {control.title}\n </ScheduleHeader.Control>\n );\n\n const views = viewSelectProps?.views || VIEW_LEVELS;\n const compactViewSelectData = views.map((v) => ({\n value: v,\n label: getLabel(v, labels) as string,\n }));\n\n return (\n <ScheduleHeader {...stylesApiProps} labels={labels}>\n <div className={classes.navigationGroup}>\n <ScheduleHeader.Previous\n {...stylesApiProps}\n onClick={() => onDateChange?.(navigationHandlers.previous())}\n labels={labels}\n {...previousControlProps}\n />\n\n {centralControl}\n\n <ScheduleHeader.Next\n {...stylesApiProps}\n onClick={() => onDateChange?.(navigationHandlers.next())}\n labels={labels}\n {...nextControlProps}\n />\n </div>\n\n <div className={classes.todayControl}>\n <ScheduleHeader.Today\n {...stylesApiProps}\n onClick={() => onDateChange?.(navigationHandlers.today())}\n labels={labels}\n {...todayControlProps}\n />\n </div>\n\n <NativeSelect\n className={classes.compactViewSelect}\n data={compactViewSelectData}\n value={view}\n onChange={(event) => onViewChange?.(event.currentTarget.value as ScheduleViewLevel)}\n aria-label={getLabel('viewSelectLabel', labels) as string}\n size=\"sm\"\n />\n\n <div className={classes.viewSelect} style={{ marginInlineStart: 'auto' }}>\n <ScheduleHeader.ViewSelect\n value={view}\n onChange={onViewChange}\n labels={labels}\n {...stylesApiProps}\n {...viewSelectProps}\n />\n </div>\n </ScheduleHeader>\n );\n}\n"],"mappings":";;;;;;;AAqEA,MAAM,cAAmC;CAAC;CAAO;CAAQ;CAAS;AAAM;AAExE,SAAgB,mBAAmB,EACjC,MACA,oBACA,SACA,QACA,cACA,cACA,sBACA,kBACA,mBACA,iBACA,kBAC0B;CAC1B,MAAM,iBAAiB,QAAQ,kBAC7B,oBAAC,eAAe,iBAAhB;EACE,GAAI;EACI;EACR,GAAI,QAAQ;CACb,CAAA,IAED,oBAAC,eAAe,SAAhB;EAAwB,GAAI;EAAgB,aAAa;EAAO,KAAK,QAAQ;YAC1E,QAAQ;CACa,CAAA;CAI1B,MAAM,yBADQ,iBAAiB,SAAS,aACJ,KAAK,OAAO;EAC9C,OAAO;EACP,OAAO,SAAS,GAAG,MAAM;CAC3B,EAAE;CAEF,OACE,qBAAC,gBAAD;EAAgB,GAAI;EAAwB;YAA5C;GACE,qBAAC,OAAD;IAAK,WAAWA,8BAAQ;cAAxB;KACE,oBAAC,eAAe,UAAhB;MACE,GAAI;MACJ,eAAe,eAAe,mBAAmB,SAAS,CAAC;MACnD;MACR,GAAI;KACL,CAAA;KAEA;KAED,oBAAC,eAAe,MAAhB;MACE,GAAI;MACJ,eAAe,eAAe,mBAAmB,KAAK,CAAC;MAC/C;MACR,GAAI;KACL,CAAA;IACE;;GAEL,oBAAC,OAAD;IAAK,WAAWA,8BAAQ;cACtB,oBAAC,eAAe,OAAhB;KACE,GAAI;KACJ,eAAe,eAAe,mBAAmB,MAAM,CAAC;KAChD;KACR,GAAI;IACL,CAAA;GACE,CAAA;GAEL,oBAAC,cAAD;IACE,WAAWA,8BAAQ;IACnB,MAAM;IACN,OAAO;IACP,WAAW,UAAU,eAAe,MAAM,cAAc,KAA0B;IAClF,cAAY,SAAS,mBAAmB,MAAM;IAC9C,MAAK;GACN,CAAA;GAED,oBAAC,OAAD;IAAK,WAAWA,8BAAQ;IAAY,OAAO,EAAE,mBAAmB,OAAO;cACrE,oBAAC,eAAe,YAAhB;KACE,OAAO;KACP,UAAU;KACF;KACR,GAAI;KACJ,GAAI;IACL,CAAA;GACE,CAAA;EACS;;AAEpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScheduleHeaderContext.mjs","names":[],"sources":["../../../src/components/ScheduleHeader/ScheduleHeaderContext.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type { ScheduleLabelsOverride } from '../../labels';\n\nexport const ScheduleHeaderLabelsContext = createContext<ScheduleLabelsOverride | undefined>(\n undefined\n);\nScheduleHeaderLabelsContext.displayName = '@mantine/schedule/ScheduleHeaderLabelsContext';\n\nexport function useScheduleHeaderLabels(\n override?: ScheduleLabelsOverride\n): ScheduleLabelsOverride | undefined {\n const contextLabels = useContext(ScheduleHeaderLabelsContext);\n if (!override) {\n return contextLabels;\n }\n if (!contextLabels) {\n return override;\n }\n return { ...contextLabels, ...override };\n}\n"],"mappings":";;;AAGA,MAAa,8BAA8B,cACzC,KAAA,EACD;AACD,4BAA4B,cAAc;AAE1C,SAAgB,wBACd,UACoC;CACpC,MAAM,gBAAgB,WAAW,4BAA4B;AAC7D,KAAI,CAAC,SACH,QAAO;AAET,KAAI,CAAC,cACH,QAAO;AAET,QAAO;EAAE,GAAG;EAAe,GAAG;EAAU"}
1
+ {"version":3,"file":"ScheduleHeaderContext.mjs","names":[],"sources":["../../../src/components/ScheduleHeader/ScheduleHeaderContext.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type { ScheduleLabelsOverride } from '../../labels';\n\nexport const ScheduleHeaderLabelsContext = createContext<ScheduleLabelsOverride | undefined>(\n undefined\n);\nScheduleHeaderLabelsContext.displayName = '@mantine/schedule/ScheduleHeaderLabelsContext';\n\nexport function useScheduleHeaderLabels(\n override?: ScheduleLabelsOverride\n): ScheduleLabelsOverride | undefined {\n const contextLabels = useContext(ScheduleHeaderLabelsContext);\n if (!override) {\n return contextLabels;\n }\n if (!contextLabels) {\n return override;\n }\n return { ...contextLabels, ...override };\n}\n"],"mappings":";;;AAGA,MAAa,8BAA8B,cACzC,KAAA,CACF;AACA,4BAA4B,cAAc;AAE1C,SAAgB,wBACd,UACoC;CACpC,MAAM,gBAAgB,WAAW,2BAA2B;CAC5D,IAAI,CAAC,UACH,OAAO;CAET,IAAI,CAAC,eACH,OAAO;CAET,OAAO;EAAE,GAAG;EAAe,GAAG;CAAS;AACzC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ViewSelect.mjs","names":["classes"],"sources":["../../../../src/components/ScheduleHeader/ViewSelect/ViewSelect.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport {\n Box,\n BoxProps,\n ElementProps,\n factory,\n Factory,\n MantineRadius,\n StylesApiProps,\n useDirection,\n useProps,\n useResolvedStylesApi,\n useStyles,\n} from '@mantine/core';\nimport { getLabel, ScheduleLabels, ScheduleLabelsOverride } from '../../../labels';\nimport { ScheduleViewLevel } from '../../../types';\nimport { HeaderControl } from '../HeaderControl/HeaderControl';\nimport { useScheduleHeaderLabels } from '../ScheduleHeaderContext';\nimport classes from './ViewSelect.module.css';\n\nexport type ViewSelectStylesNames = 'viewSelect';\n\nexport interface ViewSelectProps\n extends BoxProps, StylesApiProps<ViewSelectFactory>, ElementProps<'div', 'value' | 'onChange'> {\n __staticSelector?: string;\n\n /** A list of views to display @default ['day', 'week', 'month', 'year'] */\n views?: readonly ScheduleViewLevel[];\n\n /** Selected view type */\n value?: ScheduleViewLevel;\n\n /** Called when view type changes */\n onChange?: (value: ScheduleViewLevel) => void;\n\n /** Key of `theme.radius` or any valid CSS value to set `border-radius` @default theme.defaultRadius */\n radius?: MantineRadius;\n\n /** Labels override */\n labels?: ScheduleLabelsOverride;\n}\n\nexport type ViewSelectFactory = Factory<{\n props: ViewSelectProps;\n ref: HTMLDivElement;\n stylesNames: ViewSelectStylesNames;\n}>;\n\nconst defaultProps = {\n __staticSelector: 'ViewSelect',\n views: ['day', 'week', 'month', 'year'],\n} satisfies Partial<ViewSelectProps>;\n\nexport const ViewSelect = factory<ViewSelectFactory>((_props) => {\n const props = useProps('ViewSelect', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n attributes,\n value,\n onChange,\n views,\n __staticSelector,\n radius,\n labels,\n ...others\n } = props;\n\n const getStyles = useStyles<ViewSelectFactory>({\n name: __staticSelector,\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n rootSelector: 'viewSelect',\n });\n\n const resolvedLabels = useScheduleHeaderLabels(labels);\n\n const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi<ViewSelectFactory>({\n classNames,\n styles,\n props,\n });\n\n const { dir } = useDirection();\n const controlsRef = useRef<(HTMLButtonElement | null)[]>([]);\n const activatedWithKeyboardRef = useRef(false);\n\n // Restore focus to the selected tab when the component mounts\n // This handles the case where focus is lost due to view switch (header unmount/remount)\n // Only restore focus if the view was activated via keyboard (Enter/Space)\n useEffect(() => {\n if (activatedWithKeyboardRef.current && document.activeElement === document.body) {\n const selectedIndex = views!.findIndex((view) => view === value);\n if (selectedIndex !== -1) {\n controlsRef.current[selectedIndex]?.focus();\n }\n }\n activatedWithKeyboardRef.current = false;\n }, []);\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>, index: number) => {\n const isRtl = dir === 'rtl';\n const nextKey = isRtl ? 'ArrowLeft' : 'ArrowRight';\n const prevKey = isRtl ? 'ArrowRight' : 'ArrowLeft';\n\n if (event.key === nextKey) {\n event.preventDefault();\n const nextIndex = index < views!.length - 1 ? index + 1 : 0;\n controlsRef.current[nextIndex]?.focus();\n } else if (event.key === prevKey) {\n event.preventDefault();\n const prevIndex = index > 0 ? index - 1 : views!.length - 1;\n controlsRef.current[prevIndex]?.focus();\n } else if (event.key === 'Home') {\n event.preventDefault();\n controlsRef.current[0]?.focus();\n } else if (event.key === 'End') {\n event.preventDefault();\n controlsRef.current[views!.length - 1]?.focus();\n } else if (event.key === 'Enter' || event.key === ' ') {\n activatedWithKeyboardRef.current = true;\n }\n };\n\n const switchToLabelKeys: Record<ScheduleViewLevel, keyof ScheduleLabels> = {\n day: 'switchToDayView',\n week: 'switchToWeekView',\n month: 'switchToMonthView',\n year: 'switchToYearView',\n };\n\n const items = views!.map((view, index) => {\n const isSelected = value === view;\n return (\n <HeaderControl\n key={view}\n ref={(node) => {\n controlsRef.current[index] = node;\n }}\n data-type={view}\n active={isSelected}\n onClick={() => onChange?.(view)}\n onKeyDown={(event) => handleKeyDown(event, index)}\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n __staticSelector={__staticSelector}\n radius={radius}\n role=\"tab\"\n aria-label={getLabel(switchToLabelKeys[view], resolvedLabels) as string}\n aria-selected={isSelected}\n tabIndex={isSelected ? 0 : -1}\n >\n {getLabel(view, resolvedLabels)}\n </HeaderControl>\n );\n });\n\n return (\n <Box\n {...getStyles('viewSelect')}\n role=\"tablist\"\n aria-label={getLabel('viewSelectLabel', resolvedLabels)}\n {...others}\n >\n {items}\n </Box>\n );\n});\n\nViewSelect.displayName = '@mantine/schedule/ViewSelect';\nViewSelect.classes = classes;\n"],"mappings":";;;;;;;;;AAgDA,MAAM,eAAe;CACnB,kBAAkB;CAClB,OAAO;EAAC;EAAO;EAAQ;EAAS;EAAO;CACxC;AAED,MAAa,aAAa,SAA4B,WAAW;CAC/D,MAAM,QAAQ,SAAS,cAAc,cAAc,OAAO;CAC1D,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,YACA,OACA,UACA,OACA,kBACA,QACA,QACA,GAAG,WACD;CAEJ,MAAM,YAAY,UAA6B;EAC7C,MAAM;EACN,SAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,cAAc;EACf,CAAC;CAEF,MAAM,iBAAiB,wBAAwB,OAAO;CAEtD,MAAM,EAAE,oBAAoB,mBAAmB,qBAAwC;EACrF;EACA;EACA;EACD,CAAC;CAEF,MAAM,EAAE,QAAQ,cAAc;CAC9B,MAAM,cAAc,OAAqC,EAAE,CAAC;CAC5D,MAAM,2BAA2B,OAAO,MAAM;AAK9C,iBAAgB;AACd,MAAI,yBAAyB,WAAW,SAAS,kBAAkB,SAAS,MAAM;GAChF,MAAM,gBAAgB,MAAO,WAAW,SAAS,SAAS,MAAM;AAChE,OAAI,kBAAkB,GACpB,aAAY,QAAQ,gBAAgB,OAAO;;AAG/C,2BAAyB,UAAU;IAClC,EAAE,CAAC;CAEN,MAAM,iBAAiB,OAA+C,UAAkB;EACtF,MAAM,QAAQ,QAAQ;EACtB,MAAM,UAAU,QAAQ,cAAc;EACtC,MAAM,UAAU,QAAQ,eAAe;AAEvC,MAAI,MAAM,QAAQ,SAAS;AACzB,SAAM,gBAAgB;GACtB,MAAM,YAAY,QAAQ,MAAO,SAAS,IAAI,QAAQ,IAAI;AAC1D,eAAY,QAAQ,YAAY,OAAO;aAC9B,MAAM,QAAQ,SAAS;AAChC,SAAM,gBAAgB;GACtB,MAAM,YAAY,QAAQ,IAAI,QAAQ,IAAI,MAAO,SAAS;AAC1D,eAAY,QAAQ,YAAY,OAAO;aAC9B,MAAM,QAAQ,QAAQ;AAC/B,SAAM,gBAAgB;AACtB,eAAY,QAAQ,IAAI,OAAO;aACtB,MAAM,QAAQ,OAAO;AAC9B,SAAM,gBAAgB;AACtB,eAAY,QAAQ,MAAO,SAAS,IAAI,OAAO;aACtC,MAAM,QAAQ,WAAW,MAAM,QAAQ,IAChD,0BAAyB,UAAU;;CAIvC,MAAM,oBAAqE;EACzE,KAAK;EACL,MAAM;EACN,OAAO;EACP,MAAM;EACP;CAED,MAAM,QAAQ,MAAO,KAAK,MAAM,UAAU;EACxC,MAAM,aAAa,UAAU;AAC7B,SACE,oBAAC,eAAD;GAEE,MAAM,SAAS;AACb,gBAAY,QAAQ,SAAS;;GAE/B,aAAW;GACX,QAAQ;GACR,eAAe,WAAW,KAAK;GAC/B,YAAY,UAAU,cAAc,OAAO,MAAM;GACjD,YAAY;GACZ,QAAQ;GACU;GACV;GACR,MAAK;GACL,cAAY,SAAS,kBAAkB,OAAO,eAAe;GAC7D,iBAAe;GACf,UAAU,aAAa,IAAI;aAE1B,SAAS,MAAM,eAAe;GACjB,EAlBT,KAkBS;GAElB;AAEF,QACE,oBAAC,KAAD;EACE,GAAI,UAAU,aAAa;EAC3B,MAAK;EACL,cAAY,SAAS,mBAAmB,eAAe;EACvD,GAAI;YAEH;EACG,CAAA;EAER;AAEF,WAAW,cAAc;AACzB,WAAW,UAAUA"}
1
+ {"version":3,"file":"ViewSelect.mjs","names":["classes"],"sources":["../../../../src/components/ScheduleHeader/ViewSelect/ViewSelect.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport {\n Box,\n BoxProps,\n ElementProps,\n factory,\n Factory,\n MantineRadius,\n StylesApiProps,\n useDirection,\n useProps,\n useResolvedStylesApi,\n useStyles,\n} from '@mantine/core';\nimport { getLabel, ScheduleLabels, ScheduleLabelsOverride } from '../../../labels';\nimport { ScheduleViewLevel } from '../../../types';\nimport { HeaderControl } from '../HeaderControl/HeaderControl';\nimport { useScheduleHeaderLabels } from '../ScheduleHeaderContext';\nimport classes from './ViewSelect.module.css';\n\nexport type ViewSelectStylesNames = 'viewSelect';\n\nexport interface ViewSelectProps\n extends BoxProps, StylesApiProps<ViewSelectFactory>, ElementProps<'div', 'value' | 'onChange'> {\n __staticSelector?: string;\n\n /** A list of views to display @default ['day', 'week', 'month', 'year'] */\n views?: readonly ScheduleViewLevel[];\n\n /** Selected view type */\n value?: ScheduleViewLevel;\n\n /** Called when view type changes */\n onChange?: (value: ScheduleViewLevel) => void;\n\n /** Key of `theme.radius` or any valid CSS value to set `border-radius` @default theme.defaultRadius */\n radius?: MantineRadius;\n\n /** Labels override */\n labels?: ScheduleLabelsOverride;\n}\n\nexport type ViewSelectFactory = Factory<{\n props: ViewSelectProps;\n ref: HTMLDivElement;\n stylesNames: ViewSelectStylesNames;\n}>;\n\nconst defaultProps = {\n __staticSelector: 'ViewSelect',\n views: ['day', 'week', 'month', 'year'],\n} satisfies Partial<ViewSelectProps>;\n\nexport const ViewSelect = factory<ViewSelectFactory>((_props) => {\n const props = useProps('ViewSelect', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n attributes,\n value,\n onChange,\n views,\n __staticSelector,\n radius,\n labels,\n ...others\n } = props;\n\n const getStyles = useStyles<ViewSelectFactory>({\n name: __staticSelector,\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n rootSelector: 'viewSelect',\n });\n\n const resolvedLabels = useScheduleHeaderLabels(labels);\n\n const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi<ViewSelectFactory>({\n classNames,\n styles,\n props,\n });\n\n const { dir } = useDirection();\n const controlsRef = useRef<(HTMLButtonElement | null)[]>([]);\n const activatedWithKeyboardRef = useRef(false);\n\n // Restore focus to the selected tab when the component mounts\n // This handles the case where focus is lost due to view switch (header unmount/remount)\n // Only restore focus if the view was activated via keyboard (Enter/Space)\n useEffect(() => {\n if (activatedWithKeyboardRef.current && document.activeElement === document.body) {\n const selectedIndex = views!.findIndex((view) => view === value);\n if (selectedIndex !== -1) {\n controlsRef.current[selectedIndex]?.focus();\n }\n }\n activatedWithKeyboardRef.current = false;\n }, []);\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>, index: number) => {\n const isRtl = dir === 'rtl';\n const nextKey = isRtl ? 'ArrowLeft' : 'ArrowRight';\n const prevKey = isRtl ? 'ArrowRight' : 'ArrowLeft';\n\n if (event.key === nextKey) {\n event.preventDefault();\n const nextIndex = index < views!.length - 1 ? index + 1 : 0;\n controlsRef.current[nextIndex]?.focus();\n } else if (event.key === prevKey) {\n event.preventDefault();\n const prevIndex = index > 0 ? index - 1 : views!.length - 1;\n controlsRef.current[prevIndex]?.focus();\n } else if (event.key === 'Home') {\n event.preventDefault();\n controlsRef.current[0]?.focus();\n } else if (event.key === 'End') {\n event.preventDefault();\n controlsRef.current[views!.length - 1]?.focus();\n } else if (event.key === 'Enter' || event.key === ' ') {\n activatedWithKeyboardRef.current = true;\n }\n };\n\n const switchToLabelKeys: Record<ScheduleViewLevel, keyof ScheduleLabels> = {\n day: 'switchToDayView',\n week: 'switchToWeekView',\n month: 'switchToMonthView',\n year: 'switchToYearView',\n };\n\n const items = views!.map((view, index) => {\n const isSelected = value === view;\n return (\n <HeaderControl\n key={view}\n ref={(node) => {\n controlsRef.current[index] = node;\n }}\n data-type={view}\n active={isSelected}\n onClick={() => onChange?.(view)}\n onKeyDown={(event) => handleKeyDown(event, index)}\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n __staticSelector={__staticSelector}\n radius={radius}\n role=\"tab\"\n aria-label={getLabel(switchToLabelKeys[view], resolvedLabels) as string}\n aria-selected={isSelected}\n tabIndex={isSelected ? 0 : -1}\n >\n {getLabel(view, resolvedLabels)}\n </HeaderControl>\n );\n });\n\n return (\n <Box\n {...getStyles('viewSelect')}\n role=\"tablist\"\n aria-label={getLabel('viewSelectLabel', resolvedLabels)}\n {...others}\n >\n {items}\n </Box>\n );\n});\n\nViewSelect.displayName = '@mantine/schedule/ViewSelect';\nViewSelect.classes = classes;\n"],"mappings":";;;;;;;;;AAgDA,MAAM,eAAe;CACnB,kBAAkB;CAClB,OAAO;EAAC;EAAO;EAAQ;EAAS;CAAM;AACxC;AAEA,MAAa,aAAa,SAA4B,WAAW;CAC/D,MAAM,QAAQ,SAAS,cAAc,cAAc,MAAM;CACzD,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,YACA,OACA,UACA,OACA,kBACA,QACA,QACA,GAAG,WACD;CAEJ,MAAM,YAAY,UAA6B;EAC7C,MAAM;EACN,SAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,cAAc;CAChB,CAAC;CAED,MAAM,iBAAiB,wBAAwB,MAAM;CAErD,MAAM,EAAE,oBAAoB,mBAAmB,qBAAwC;EACrF;EACA;EACA;CACF,CAAC;CAED,MAAM,EAAE,QAAQ,aAAa;CAC7B,MAAM,cAAc,OAAqC,CAAC,CAAC;CAC3D,MAAM,2BAA2B,OAAO,KAAK;CAK7C,gBAAgB;EACd,IAAI,yBAAyB,WAAW,SAAS,kBAAkB,SAAS,MAAM;GAChF,MAAM,gBAAgB,MAAO,WAAW,SAAS,SAAS,KAAK;GAC/D,IAAI,kBAAkB,IACpB,YAAY,QAAQ,gBAAgB,MAAM;EAE9C;EACA,yBAAyB,UAAU;CACrC,GAAG,CAAC,CAAC;CAEL,MAAM,iBAAiB,OAA+C,UAAkB;EACtF,MAAM,QAAQ,QAAQ;EACtB,MAAM,UAAU,QAAQ,cAAc;EACtC,MAAM,UAAU,QAAQ,eAAe;EAEvC,IAAI,MAAM,QAAQ,SAAS;GACzB,MAAM,eAAe;GACrB,MAAM,YAAY,QAAQ,MAAO,SAAS,IAAI,QAAQ,IAAI;GAC1D,YAAY,QAAQ,YAAY,MAAM;EACxC,OAAO,IAAI,MAAM,QAAQ,SAAS;GAChC,MAAM,eAAe;GACrB,MAAM,YAAY,QAAQ,IAAI,QAAQ,IAAI,MAAO,SAAS;GAC1D,YAAY,QAAQ,YAAY,MAAM;EACxC,OAAO,IAAI,MAAM,QAAQ,QAAQ;GAC/B,MAAM,eAAe;GACrB,YAAY,QAAQ,IAAI,MAAM;EAChC,OAAO,IAAI,MAAM,QAAQ,OAAO;GAC9B,MAAM,eAAe;GACrB,YAAY,QAAQ,MAAO,SAAS,IAAI,MAAM;EAChD,OAAO,IAAI,MAAM,QAAQ,WAAW,MAAM,QAAQ,KAChD,yBAAyB,UAAU;CAEvC;CAEA,MAAM,oBAAqE;EACzE,KAAK;EACL,MAAM;EACN,OAAO;EACP,MAAM;CACR;CAEA,MAAM,QAAQ,MAAO,KAAK,MAAM,UAAU;EACxC,MAAM,aAAa,UAAU;EAC7B,OACE,oBAAC,eAAD;GAEE,MAAM,SAAS;IACb,YAAY,QAAQ,SAAS;GAC/B;GACA,aAAW;GACX,QAAQ;GACR,eAAe,WAAW,IAAI;GAC9B,YAAY,UAAU,cAAc,OAAO,KAAK;GAChD,YAAY;GACZ,QAAQ;GACU;GACV;GACR,MAAK;GACL,cAAY,SAAS,kBAAkB,OAAO,cAAc;GAC5D,iBAAe;GACf,UAAU,aAAa,IAAI;aAE1B,SAAS,MAAM,cAAc;EACjB,GAlBR,IAkBQ;CAEnB,CAAC;CAED,OACE,oBAAC,KAAD;EACE,GAAI,UAAU,YAAY;EAC1B,MAAK;EACL,cAAY,SAAS,mBAAmB,cAAc;EACtD,GAAI;YAEH;CACE,CAAA;AAET,CAAC;AAED,WAAW,cAAc;AACzB,WAAW,UAAUA"}
@@ -189,6 +189,7 @@ const WeekView = factory((_props) => {
189
189
  }),
190
190
  startTime,
191
191
  endTime,
192
+ intervalMinutes,
192
193
  firstDayOfWeek: ctx.getFirstDayOfWeek(firstDayOfWeek),
193
194
  weekendDays: ctx.getWeekendDays(weekendDays),
194
195
  withWeekendDays