@mantine/schedule 9.3.1 → 9.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/components/AgendaView/AgendaView.cjs +133 -0
- package/cjs/components/AgendaView/AgendaView.cjs.map +1 -0
- package/cjs/components/AgendaView/AgendaView.module.cjs +19 -0
- package/cjs/components/AgendaView/AgendaView.module.cjs.map +1 -0
- package/cjs/components/AgendaView/get-agenda-view-events.cjs +48 -0
- package/cjs/components/AgendaView/get-agenda-view-events.cjs.map +1 -0
- package/cjs/components/CurrentTimeIndicator/CurrentTimeIndicator.cjs.map +1 -1
- package/cjs/components/DayView/DayView.cjs +128 -106
- package/cjs/components/DayView/DayView.cjs.map +1 -1
- package/cjs/components/DayView/DayView.module.cjs.map +1 -1
- package/cjs/components/DayView/get-day-view-events/get-day-positioned-events.cjs.map +1 -1
- package/cjs/components/DayView/get-day-view-events/get-day-view-events.cjs.map +1 -1
- package/cjs/components/DragContext/DragContext.cjs.map +1 -1
- package/cjs/components/MobileMonthView/MobileMonthView.cjs.map +1 -1
- package/cjs/components/MobileMonthView/get-mobile-month-view-events.cjs.map +1 -1
- package/cjs/components/MonthView/MonthView.cjs +114 -64
- package/cjs/components/MonthView/MonthView.cjs.map +1 -1
- package/cjs/components/MonthView/MonthView.module.cjs.map +1 -1
- package/cjs/components/MonthView/get-month-view-events/add-event-to-day-groups.cjs.map +1 -1
- package/cjs/components/MonthView/get-month-view-events/find-available-row.cjs.map +1 -1
- package/cjs/components/MonthView/get-month-view-events/get-month-positioned-events.cjs.map +1 -1
- package/cjs/components/MonthView/get-month-view-events/get-month-view-events.cjs.map +1 -1
- package/cjs/components/MonthView/get-month-view-events/get-weeks-in-range.cjs.map +1 -1
- package/cjs/components/MonthView/get-renderable-month-event-segments.cjs +17 -15
- package/cjs/components/MonthView/get-renderable-month-event-segments.cjs.map +1 -1
- package/cjs/components/MonthView/get-visible-columns.cjs +54 -0
- package/cjs/components/MonthView/get-visible-columns.cjs.map +1 -0
- package/cjs/components/MonthView/handle-month-view-key-down.cjs.map +1 -1
- package/cjs/components/MoreEvents/MoreEvents.cjs.map +1 -1
- package/cjs/components/ResourcesDayView/ResourcesDayView.cjs +578 -0
- package/cjs/components/ResourcesDayView/ResourcesDayView.cjs.map +1 -0
- package/cjs/components/ResourcesDayView/ResourcesDayView.module.cjs +29 -0
- package/cjs/components/ResourcesDayView/ResourcesDayView.module.cjs.map +1 -0
- package/cjs/components/ResourcesDayView/ResourcesDayViewColumn.cjs +89 -0
- package/cjs/components/ResourcesDayView/ResourcesDayViewColumn.cjs.map +1 -0
- package/cjs/components/ResourcesDayView/get-overlap-clusters/get-overlap-clusters.cjs +26 -0
- package/cjs/components/ResourcesDayView/get-overlap-clusters/get-overlap-clusters.cjs.map +1 -0
- package/cjs/components/ResourcesDayView/get-resources-day-view-events/get-resources-day-view-events.cjs +115 -0
- package/cjs/components/ResourcesDayView/get-resources-day-view-events/get-resources-day-view-events.cjs.map +1 -0
- package/cjs/components/ResourcesMonthView/ResourcesMonthView.cjs +602 -0
- package/cjs/components/ResourcesMonthView/ResourcesMonthView.cjs.map +1 -0
- package/cjs/components/ResourcesMonthView/ResourcesMonthView.module.cjs +23 -0
- package/cjs/components/ResourcesMonthView/ResourcesMonthView.module.cjs.map +1 -0
- package/cjs/components/ResourcesSchedule/ResourcesSchedule.cjs +102 -0
- package/cjs/components/ResourcesSchedule/ResourcesSchedule.cjs.map +1 -0
- package/cjs/components/ResourcesSchedule/ResourcesSchedule.module.cjs +7 -0
- package/cjs/components/ResourcesSchedule/ResourcesSchedule.module.cjs.map +1 -0
- package/cjs/components/ResourcesWeekView/ResourcesWeekView.cjs +610 -0
- package/cjs/components/ResourcesWeekView/ResourcesWeekView.cjs.map +1 -0
- package/cjs/components/ResourcesWeekView/ResourcesWeekView.module.cjs +33 -0
- package/cjs/components/ResourcesWeekView/ResourcesWeekView.module.cjs.map +1 -0
- package/cjs/components/ResourcesWeekView/ResourcesWeekViewRow.cjs +90 -0
- package/cjs/components/ResourcesWeekView/ResourcesWeekViewRow.cjs.map +1 -0
- package/cjs/components/ResourcesWeekView/get-resources-week-view-events/get-resources-week-view-events.cjs +97 -0
- package/cjs/components/ResourcesWeekView/get-resources-week-view-events/get-resources-week-view-events.cjs.map +1 -0
- package/cjs/components/Schedule/Schedule.cjs +3 -2
- package/cjs/components/Schedule/Schedule.cjs.map +1 -1
- package/cjs/components/ScheduleEvent/ScheduleEvent.cjs +1 -1
- package/cjs/components/ScheduleEvent/ScheduleEvent.cjs.map +1 -1
- package/cjs/components/ScheduleHeader/HeaderControl/HeaderControl.cjs.map +1 -1
- package/cjs/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.cjs.map +1 -1
- package/cjs/components/ScheduleHeader/ScheduleHeader.cjs.map +1 -1
- package/cjs/components/ScheduleHeader/ScheduleHeader.module.cjs +2 -0
- package/cjs/components/ScheduleHeader/ScheduleHeader.module.cjs.map +1 -1
- package/cjs/components/ScheduleHeader/ScheduleHeaderBase.cjs +29 -11
- package/cjs/components/ScheduleHeader/ScheduleHeaderBase.cjs.map +1 -1
- package/cjs/components/ScheduleHeader/ScheduleHeaderContext.cjs.map +1 -1
- package/cjs/components/ScheduleHeader/ViewSelect/ViewSelect.cjs.map +1 -1
- package/cjs/components/WeekView/WeekView.cjs +128 -102
- package/cjs/components/WeekView/WeekView.cjs.map +1 -1
- package/cjs/components/WeekView/WeekView.module.cjs.map +1 -1
- package/cjs/components/WeekView/WeekViewDay.cjs +3 -1
- package/cjs/components/WeekView/WeekViewDay.cjs.map +1 -1
- package/cjs/components/WeekView/get-week-label/get-week-label.cjs.map +1 -1
- package/cjs/components/WeekView/get-week-view-events/calculate-all-day-event-offset.cjs.map +1 -1
- package/cjs/components/WeekView/get-week-view-events/calculate-all-day-event-width.cjs.map +1 -1
- package/cjs/components/WeekView/get-week-view-events/calculate-event-days.cjs.map +1 -1
- package/cjs/components/WeekView/get-week-view-events/find-available-column.cjs.map +1 -1
- package/cjs/components/WeekView/get-week-view-events/get-event-end-date.cjs.map +1 -1
- package/cjs/components/WeekView/get-week-view-events/get-hanging-status.cjs.map +1 -1
- package/cjs/components/WeekView/get-week-view-events/get-week-positioned-events.cjs.map +1 -1
- package/cjs/components/WeekView/handle-week-view-key-down.cjs.map +1 -1
- package/cjs/components/YearView/YearView.cjs.map +1 -1
- package/cjs/components/YearView/YearViewMonth.cjs.map +1 -1
- package/cjs/components/YearView/get-year-view-events/get-year-view-events.cjs.map +1 -1
- package/cjs/components/YearView/handle-year-view-key-down.cjs.map +1 -1
- package/cjs/hooks/use-auto-scroll-on-drag.cjs.map +1 -1
- package/cjs/hooks/use-drag-drop-handlers.cjs.map +1 -1
- package/cjs/hooks/use-drag-state.cjs.map +1 -1
- package/cjs/hooks/use-event-resize.cjs.map +1 -1
- package/cjs/hooks/use-horizontal-event-resize.cjs +153 -0
- package/cjs/hooks/use-horizontal-event-resize.cjs.map +1 -0
- package/cjs/hooks/use-slot-drag-select.cjs.map +1 -1
- package/cjs/index.cjs +18 -0
- package/cjs/labels.cjs +5 -1
- package/cjs/labels.cjs.map +1 -1
- package/cjs/utils/calculate-drop-time/calculate-drop-time.cjs.map +1 -1
- package/cjs/utils/calculate-month-drop-date/calculate-month-drop-date.cjs.map +1 -1
- package/cjs/utils/expand-recurring-events/expand-recurring-events.cjs.map +1 -1
- package/cjs/utils/format-date/format-date.cjs.map +1 -1
- package/cjs/utils/get-current-time-position/get-current-time-position.cjs.map +1 -1
- package/cjs/utils/get-day-position/get-day-position.cjs.map +1 -1
- package/cjs/utils/get-end-of-week/get-end-of-week.cjs.map +1 -1
- package/cjs/utils/get-group-to-resource-id-map/get-group-to-resource-id-map.cjs +12 -0
- package/cjs/utils/get-group-to-resource-id-map/get-group-to-resource-id-map.cjs.map +1 -0
- package/cjs/utils/get-index-from-drag-point/get-index-from-drag-point.cjs +27 -0
- package/cjs/utils/get-index-from-drag-point/get-index-from-drag-point.cjs.map +1 -0
- package/cjs/utils/get-month-days/get-month-days.cjs.map +1 -1
- package/cjs/utils/get-month-range/get-month-range.cjs.map +1 -1
- package/cjs/utils/get-months-by-quarter/get-months-by-quarter.cjs.map +1 -1
- package/cjs/utils/get-months-list/get-months-list.cjs.map +1 -1
- package/cjs/utils/get-ordered-resources/get-ordered-resources.cjs +54 -0
- package/cjs/utils/get-ordered-resources/get-ordered-resources.cjs.map +1 -0
- package/cjs/utils/get-start-of-week/get-start-of-week.cjs.map +1 -1
- package/cjs/utils/get-week-days/get-week-days.cjs.map +1 -1
- package/cjs/utils/get-week-number/get-week-number.cjs.map +1 -1
- package/cjs/utils/get-weekdays-names/get-weekdays-names.cjs.map +1 -1
- package/cjs/utils/handle-resources-grid-key-down/handle-resources-grid-key-down.cjs +88 -0
- package/cjs/utils/handle-resources-grid-key-down/handle-resources-grid-key-down.cjs.map +1 -0
- package/cjs/utils/is-after-min-date/is-after-min-date.cjs.map +1 -1
- package/cjs/utils/is-all-day-event/is-all-day-event.cjs.map +1 -1
- package/cjs/utils/is-before-max-date/is-before-max-date.cjs.map +1 -1
- package/cjs/utils/is-event-in-time-range/is-event-in-time-range.cjs.map +1 -1
- package/cjs/utils/is-events-overlap/is-events-overlap.cjs.map +1 -1
- package/cjs/utils/is-in-time-range/is-in-time-range.cjs.map +1 -1
- package/cjs/utils/is-multiday-event/is-multiday-event.cjs.map +1 -1
- package/cjs/utils/is-same-month/is-same-month.cjs.map +1 -1
- package/cjs/utils/is-within-week/is-within-week.cjs.map +1 -1
- package/cjs/utils/next-week/next-week.cjs.map +1 -1
- package/cjs/utils/parse-time-string/parse-time-string.cjs.map +1 -1
- package/cjs/utils/previous-week/previous-week.cjs.map +1 -1
- package/cjs/utils/sort-events/sort-events.cjs.map +1 -1
- package/cjs/utils/to-date-string/to-date-string.cjs.map +1 -1
- package/cjs/utils/to-time-string/to-time-string.cjs.map +1 -1
- package/cjs/utils/validate-event/validate-event.cjs.map +1 -1
- package/esm/components/AgendaView/AgendaView.mjs +130 -0
- package/esm/components/AgendaView/AgendaView.mjs.map +1 -0
- package/esm/components/AgendaView/AgendaView.module.mjs +19 -0
- package/esm/components/AgendaView/AgendaView.module.mjs.map +1 -0
- package/esm/components/AgendaView/get-agenda-view-events.mjs +46 -0
- package/esm/components/AgendaView/get-agenda-view-events.mjs.map +1 -0
- package/esm/components/CurrentTimeIndicator/CurrentTimeIndicator.mjs.map +1 -1
- package/esm/components/DayView/DayView.mjs +129 -107
- package/esm/components/DayView/DayView.mjs.map +1 -1
- package/esm/components/DayView/DayView.module.mjs.map +1 -1
- package/esm/components/DayView/get-day-view-events/get-day-positioned-events.mjs.map +1 -1
- package/esm/components/DayView/get-day-view-events/get-day-view-events.mjs.map +1 -1
- package/esm/components/MobileMonthView/MobileMonthView.mjs.map +1 -1
- package/esm/components/MobileMonthView/get-mobile-month-view-events.mjs.map +1 -1
- package/esm/components/MonthView/MonthView.mjs +115 -65
- package/esm/components/MonthView/MonthView.mjs.map +1 -1
- package/esm/components/MonthView/MonthView.module.mjs.map +1 -1
- package/esm/components/MonthView/get-month-view-events/add-event-to-day-groups.mjs.map +1 -1
- package/esm/components/MonthView/get-month-view-events/find-available-row.mjs.map +1 -1
- package/esm/components/MonthView/get-month-view-events/get-month-positioned-events.mjs.map +1 -1
- package/esm/components/MonthView/get-month-view-events/get-month-view-events.mjs.map +1 -1
- package/esm/components/MonthView/get-renderable-month-event-segments.mjs +17 -15
- package/esm/components/MonthView/get-renderable-month-event-segments.mjs.map +1 -1
- package/esm/components/MonthView/get-visible-columns.mjs +53 -0
- package/esm/components/MonthView/get-visible-columns.mjs.map +1 -0
- package/esm/components/MonthView/handle-month-view-key-down.mjs.map +1 -1
- package/esm/components/MoreEvents/MoreEvents.mjs.map +1 -1
- package/esm/components/ResourcesDayView/ResourcesDayView.mjs +576 -0
- package/esm/components/ResourcesDayView/ResourcesDayView.mjs.map +1 -0
- package/esm/components/ResourcesDayView/ResourcesDayView.module.mjs +29 -0
- package/esm/components/ResourcesDayView/ResourcesDayView.module.mjs.map +1 -0
- package/esm/components/ResourcesDayView/ResourcesDayViewColumn.mjs +89 -0
- package/esm/components/ResourcesDayView/ResourcesDayViewColumn.mjs.map +1 -0
- package/esm/components/ResourcesDayView/get-overlap-clusters/get-overlap-clusters.mjs +26 -0
- package/esm/components/ResourcesDayView/get-overlap-clusters/get-overlap-clusters.mjs.map +1 -0
- package/esm/components/ResourcesDayView/get-resources-day-view-events/get-resources-day-view-events.mjs +113 -0
- package/esm/components/ResourcesDayView/get-resources-day-view-events/get-resources-day-view-events.mjs.map +1 -0
- package/esm/components/ResourcesMonthView/ResourcesMonthView.mjs +600 -0
- package/esm/components/ResourcesMonthView/ResourcesMonthView.mjs.map +1 -0
- package/esm/components/ResourcesMonthView/ResourcesMonthView.module.mjs +23 -0
- package/esm/components/ResourcesMonthView/ResourcesMonthView.module.mjs.map +1 -0
- package/esm/components/ResourcesSchedule/ResourcesSchedule.mjs +102 -0
- package/esm/components/ResourcesSchedule/ResourcesSchedule.mjs.map +1 -0
- package/esm/components/ResourcesSchedule/ResourcesSchedule.module.mjs +7 -0
- package/esm/components/ResourcesSchedule/ResourcesSchedule.module.mjs.map +1 -0
- package/esm/components/ResourcesWeekView/ResourcesWeekView.mjs +608 -0
- package/esm/components/ResourcesWeekView/ResourcesWeekView.mjs.map +1 -0
- package/esm/components/ResourcesWeekView/ResourcesWeekView.module.mjs +33 -0
- package/esm/components/ResourcesWeekView/ResourcesWeekView.module.mjs.map +1 -0
- package/esm/components/ResourcesWeekView/ResourcesWeekViewRow.mjs +90 -0
- package/esm/components/ResourcesWeekView/ResourcesWeekViewRow.mjs.map +1 -0
- package/esm/components/ResourcesWeekView/get-resources-week-view-events/get-resources-week-view-events.mjs +95 -0
- package/esm/components/ResourcesWeekView/get-resources-week-view-events/get-resources-week-view-events.mjs.map +1 -0
- package/esm/components/Schedule/Schedule.mjs +3 -2
- package/esm/components/Schedule/Schedule.mjs.map +1 -1
- package/esm/components/ScheduleEvent/ScheduleEvent.mjs +1 -1
- package/esm/components/ScheduleEvent/ScheduleEvent.mjs.map +1 -1
- package/esm/components/ScheduleHeader/HeaderControl/HeaderControl.mjs.map +1 -1
- package/esm/components/ScheduleHeader/MonthYearSelect/MonthYearSelect.mjs.map +1 -1
- package/esm/components/ScheduleHeader/ScheduleHeader.module.mjs +2 -0
- package/esm/components/ScheduleHeader/ScheduleHeader.module.mjs.map +1 -1
- package/esm/components/ScheduleHeader/ScheduleHeaderBase.mjs +29 -11
- package/esm/components/ScheduleHeader/ScheduleHeaderBase.mjs.map +1 -1
- package/esm/components/ScheduleHeader/ViewSelect/ViewSelect.mjs.map +1 -1
- package/esm/components/WeekView/WeekView.mjs +128 -102
- package/esm/components/WeekView/WeekView.mjs.map +1 -1
- package/esm/components/WeekView/WeekView.module.mjs.map +1 -1
- package/esm/components/WeekView/WeekViewDay.mjs +3 -1
- package/esm/components/WeekView/WeekViewDay.mjs.map +1 -1
- package/esm/components/WeekView/get-week-label/get-week-label.mjs.map +1 -1
- package/esm/components/WeekView/get-week-view-events/calculate-all-day-event-offset.mjs.map +1 -1
- package/esm/components/WeekView/get-week-view-events/calculate-all-day-event-width.mjs.map +1 -1
- package/esm/components/WeekView/get-week-view-events/calculate-event-days.mjs.map +1 -1
- package/esm/components/WeekView/get-week-view-events/find-available-column.mjs.map +1 -1
- package/esm/components/WeekView/get-week-view-events/get-event-end-date.mjs.map +1 -1
- package/esm/components/WeekView/get-week-view-events/get-week-positioned-events.mjs.map +1 -1
- package/esm/components/WeekView/handle-week-view-key-down.mjs.map +1 -1
- package/esm/components/YearView/YearView.mjs.map +1 -1
- package/esm/components/YearView/YearViewMonth.mjs.map +1 -1
- package/esm/components/YearView/get-year-view-events/get-year-view-events.mjs.map +1 -1
- package/esm/components/YearView/handle-year-view-key-down.mjs.map +1 -1
- package/esm/hooks/use-drag-drop-handlers.mjs.map +1 -1
- package/esm/hooks/use-event-resize.mjs.map +1 -1
- package/esm/hooks/use-horizontal-event-resize.mjs +151 -0
- package/esm/hooks/use-horizontal-event-resize.mjs.map +1 -0
- package/esm/index.mjs +10 -1
- package/esm/labels.mjs +5 -1
- package/esm/labels.mjs.map +1 -1
- package/esm/utils/calculate-drop-time/calculate-drop-time.mjs.map +1 -1
- package/esm/utils/calculate-month-drop-date/calculate-month-drop-date.mjs.map +1 -1
- package/esm/utils/expand-recurring-events/expand-recurring-events.mjs.map +1 -1
- package/esm/utils/format-date/format-date.mjs.map +1 -1
- package/esm/utils/get-current-time-position/get-current-time-position.mjs.map +1 -1
- package/esm/utils/get-day-position/get-day-position.mjs.map +1 -1
- package/esm/utils/get-group-to-resource-id-map/get-group-to-resource-id-map.mjs +12 -0
- package/esm/utils/get-group-to-resource-id-map/get-group-to-resource-id-map.mjs.map +1 -0
- package/esm/utils/get-index-from-drag-point/get-index-from-drag-point.mjs +27 -0
- package/esm/utils/get-index-from-drag-point/get-index-from-drag-point.mjs.map +1 -0
- package/esm/utils/get-month-days/get-month-days.mjs.map +1 -1
- package/esm/utils/get-month-range/get-month-range.mjs.map +1 -1
- package/esm/utils/get-months-by-quarter/get-months-by-quarter.mjs.map +1 -1
- package/esm/utils/get-months-list/get-months-list.mjs.map +1 -1
- package/esm/utils/get-ordered-resources/get-ordered-resources.mjs +54 -0
- package/esm/utils/get-ordered-resources/get-ordered-resources.mjs.map +1 -0
- package/esm/utils/get-week-number/get-week-number.mjs.map +1 -1
- package/esm/utils/get-weekdays-names/get-weekdays-names.mjs.map +1 -1
- package/esm/utils/handle-resources-grid-key-down/handle-resources-grid-key-down.mjs +88 -0
- package/esm/utils/handle-resources-grid-key-down/handle-resources-grid-key-down.mjs.map +1 -0
- package/esm/utils/is-after-min-date/is-after-min-date.mjs.map +1 -1
- package/esm/utils/is-all-day-event/is-all-day-event.mjs.map +1 -1
- package/esm/utils/is-before-max-date/is-before-max-date.mjs.map +1 -1
- package/esm/utils/is-event-in-time-range/is-event-in-time-range.mjs.map +1 -1
- package/esm/utils/is-events-overlap/is-events-overlap.mjs.map +1 -1
- package/esm/utils/is-in-time-range/is-in-time-range.mjs.map +1 -1
- package/esm/utils/is-multiday-event/is-multiday-event.mjs.map +1 -1
- package/esm/utils/is-same-month/is-same-month.mjs.map +1 -1
- package/esm/utils/is-within-week/is-within-week.mjs.map +1 -1
- package/esm/utils/next-week/next-week.mjs.map +1 -1
- package/esm/utils/parse-time-string/parse-time-string.mjs.map +1 -1
- package/esm/utils/previous-week/previous-week.mjs.map +1 -1
- package/esm/utils/sort-events/sort-events.mjs.map +1 -1
- package/esm/utils/to-date-string/to-date-string.mjs.map +1 -1
- package/esm/utils/to-time-string/to-time-string.mjs.map +1 -1
- package/esm/utils/validate-event/validate-event.mjs.map +1 -1
- package/lib/components/AgendaView/AgendaView.d.ts +54 -0
- package/lib/components/AgendaView/get-agenda-view-events.d.ts +9 -0
- package/lib/components/AgendaView/index.d.ts +2 -0
- package/lib/components/DayView/DayView.d.ts +6 -1
- package/lib/components/MonthView/MonthView.d.ts +6 -1
- package/lib/components/MonthView/get-renderable-month-event-segments.d.ts +5 -1
- package/lib/components/MonthView/get-visible-columns.d.ts +19 -0
- package/lib/components/ResourcesDayView/ResourcesDayView.d.ts +148 -0
- package/lib/components/ResourcesDayView/ResourcesDayViewColumn.d.ts +39 -0
- package/lib/components/ResourcesDayView/get-overlap-clusters/get-overlap-clusters.d.ts +2 -0
- package/lib/components/ResourcesDayView/get-resources-day-view-events/get-resources-day-view-events.d.ts +16 -0
- package/lib/components/ResourcesDayView/index.d.ts +9 -0
- package/lib/components/ResourcesMonthView/ResourcesMonthView.d.ts +129 -0
- package/lib/components/ResourcesMonthView/index.d.ts +9 -0
- package/lib/components/ResourcesSchedule/ResourcesSchedule.d.ts +123 -0
- package/lib/components/ResourcesSchedule/index.d.ts +3 -0
- package/lib/components/ResourcesWeekView/ResourcesWeekView.d.ts +106 -0
- package/lib/components/ResourcesWeekView/ResourcesWeekViewRow.d.ts +39 -0
- package/lib/components/ResourcesWeekView/get-resources-week-view-events/get-resources-week-view-events.d.ts +29 -0
- package/lib/components/ResourcesWeekView/index.d.ts +3 -0
- package/lib/components/Schedule/Schedule.d.ts +3 -1
- package/lib/components/ScheduleHeader/ScheduleHeaderBase.d.ts +5 -1
- package/lib/components/WeekView/WeekView.d.ts +6 -1
- package/lib/components/WeekView/WeekViewDay.d.ts +3 -1
- package/lib/hooks/use-horizontal-event-resize.d.ts +37 -0
- package/lib/index.d.mts +5 -0
- package/lib/index.d.ts +5 -0
- package/lib/labels.d.ts +4 -0
- package/lib/types.d.ts +20 -0
- package/lib/utils/get-group-to-resource-id-map/get-group-to-resource-id-map.d.ts +3 -0
- package/lib/utils/get-index-from-drag-point/get-index-from-drag-point.d.ts +6 -0
- package/lib/utils/get-ordered-resources/get-ordered-resources.d.ts +17 -0
- package/lib/utils/handle-resources-grid-key-down/handle-resources-grid-key-down.d.ts +10 -0
- package/lib/utils/index.d.ts +6 -0
- package/package.json +4 -4
- package/styles.css +1363 -10
- package/styles.layer.css +1364 -11
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
const require_runtime = require("../../_virtual/_rolldown/runtime.cjs");
|
|
3
|
+
const require_labels = require("../../labels.cjs");
|
|
4
|
+
const require_format_date = require("../../utils/format-date/format-date.cjs");
|
|
5
|
+
const require_is_all_day_event = require("../../utils/is-all-day-event/is-all-day-event.cjs");
|
|
6
|
+
const require_sort_events = require("../../utils/sort-events/sort-events.cjs");
|
|
7
|
+
const require_is_multiday_event = require("../../utils/is-multiday-event/is-multiday-event.cjs");
|
|
8
|
+
const require_expand_recurring_events = require("../../utils/expand-recurring-events/expand-recurring-events.cjs");
|
|
9
|
+
const require_get_agenda_view_events = require("./get-agenda-view-events.cjs");
|
|
10
|
+
const require_AgendaView_module = require("./AgendaView.module.cjs");
|
|
11
|
+
let dayjs = require("dayjs");
|
|
12
|
+
dayjs = require_runtime.__toESM(dayjs);
|
|
13
|
+
let _mantine_core = require("@mantine/core");
|
|
14
|
+
let react = require("react");
|
|
15
|
+
react = require_runtime.__toESM(react);
|
|
16
|
+
let _mantine_dates = require("@mantine/dates");
|
|
17
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
18
|
+
//#region packages/@mantine/schedule/src/components/AgendaView/AgendaView.tsx
|
|
19
|
+
const defaultProps = {
|
|
20
|
+
__staticSelector: "AgendaView",
|
|
21
|
+
mode: "default",
|
|
22
|
+
dateHeaderFormat: "dddd, MMMM D",
|
|
23
|
+
headerFormat: "MMMM D, YYYY"
|
|
24
|
+
};
|
|
25
|
+
const varsResolver = (0, _mantine_core.createVarsResolver)((_theme, { radius }) => ({ agendaView: { "--agenda-view-radius": (0, _mantine_core.getRadius)(radius) } }));
|
|
26
|
+
const AgendaView = (0, _mantine_core.factory)((_props) => {
|
|
27
|
+
const props = (0, _mantine_core.useProps)("AgendaView", defaultProps, _props);
|
|
28
|
+
const { classNames, className, style, styles, unstyled, vars, attributes, __staticSelector, rangeStart, rangeEnd, events, locale, radius, labels, mode, renderEvent, dateHeaderFormat, headerFormat, onEventClick, recurrenceExpansionLimit, ...others } = props;
|
|
29
|
+
const ctx = (0, _mantine_dates.useDatesContext)();
|
|
30
|
+
const theme = (0, _mantine_core.useMantineTheme)();
|
|
31
|
+
const getStyles = (0, _mantine_core.useStyles)({
|
|
32
|
+
name: __staticSelector,
|
|
33
|
+
classes: require_AgendaView_module.default,
|
|
34
|
+
props,
|
|
35
|
+
className,
|
|
36
|
+
style,
|
|
37
|
+
classNames,
|
|
38
|
+
styles,
|
|
39
|
+
unstyled,
|
|
40
|
+
attributes,
|
|
41
|
+
vars,
|
|
42
|
+
varsResolver,
|
|
43
|
+
rootSelector: "agendaView"
|
|
44
|
+
});
|
|
45
|
+
const groupedEvents = require_get_agenda_view_events.getAgendaViewEvents({
|
|
46
|
+
rangeStart,
|
|
47
|
+
rangeEnd,
|
|
48
|
+
events: require_expand_recurring_events.expandRecurringEvents({
|
|
49
|
+
events,
|
|
50
|
+
rangeStart: (0, dayjs.default)(rangeStart).startOf("day").toDate(),
|
|
51
|
+
rangeEnd: (0, dayjs.default)(rangeEnd).endOf("day").toDate(),
|
|
52
|
+
expansionLimit: recurrenceExpansionLimit
|
|
53
|
+
})
|
|
54
|
+
});
|
|
55
|
+
const sortedDates = Object.keys(groupedEvents).sort();
|
|
56
|
+
const headerLabel = `${require_format_date.formatDate({
|
|
57
|
+
locale: ctx.getLocale(locale),
|
|
58
|
+
date: rangeStart,
|
|
59
|
+
format: headerFormat
|
|
60
|
+
})} – ${require_format_date.formatDate({
|
|
61
|
+
locale: ctx.getLocale(locale),
|
|
62
|
+
date: rangeEnd,
|
|
63
|
+
format: headerFormat
|
|
64
|
+
})}`;
|
|
65
|
+
const dateGroups = sortedDates.map((dateStr) => {
|
|
66
|
+
const eventNodes = require_sort_events.sortEvents(groupedEvents[dateStr]).map((event) => {
|
|
67
|
+
const startTime = (0, dayjs.default)(event.start).format("HH:mm");
|
|
68
|
+
const endTime = (0, dayjs.default)(event.end).format("HH:mm");
|
|
69
|
+
const isAllDay = require_is_multiday_event.isMultidayEvent(event) || require_is_all_day_event.isAllDayEvent({
|
|
70
|
+
event,
|
|
71
|
+
date: dateStr
|
|
72
|
+
});
|
|
73
|
+
const eventChildren = /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_mantine_core.Box, {
|
|
74
|
+
...getStyles("agendaViewEventBody"),
|
|
75
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { ...getStyles("agendaViewEventColor", { style: { backgroundColor: (0, _mantine_core.getThemeColor)(event.color, theme) } }) }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mantine_core.Text, {
|
|
76
|
+
...getStyles("agendaViewEventTitle"),
|
|
77
|
+
children: event.title
|
|
78
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mantine_core.Text, {
|
|
79
|
+
...getStyles("agendaViewEventTime"),
|
|
80
|
+
children: isAllDay ? require_labels.getLabel("allDay", labels) : `${startTime} – ${endTime}`
|
|
81
|
+
})] })]
|
|
82
|
+
});
|
|
83
|
+
const rootProps = {
|
|
84
|
+
...getStyles("agendaViewEvent"),
|
|
85
|
+
onClick: mode === "static" ? void 0 : (e) => {
|
|
86
|
+
onEventClick?.(event, e);
|
|
87
|
+
},
|
|
88
|
+
tabIndex: mode === "static" ? -1 : 0,
|
|
89
|
+
children: eventChildren
|
|
90
|
+
};
|
|
91
|
+
if (typeof renderEvent === "function") return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react.default.Fragment, { children: renderEvent(event, rootProps) }, event.id);
|
|
92
|
+
return /* @__PURE__ */ (0, react.createElement)(_mantine_core.UnstyledButton, {
|
|
93
|
+
...rootProps,
|
|
94
|
+
key: event.id
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
return /* @__PURE__ */ (0, react.createElement)("div", {
|
|
98
|
+
...getStyles("agendaViewDateGroup"),
|
|
99
|
+
key: dateStr
|
|
100
|
+
}, /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mantine_core.Text, {
|
|
101
|
+
...getStyles("agendaViewDateHeader"),
|
|
102
|
+
children: require_format_date.formatDate({
|
|
103
|
+
locale: ctx.getLocale(locale),
|
|
104
|
+
date: dateStr,
|
|
105
|
+
format: dateHeaderFormat
|
|
106
|
+
})
|
|
107
|
+
}), eventNodes);
|
|
108
|
+
});
|
|
109
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_mantine_core.Box, {
|
|
110
|
+
...getStyles("agendaView"),
|
|
111
|
+
...others,
|
|
112
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
113
|
+
...getStyles("agendaViewHeader"),
|
|
114
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mantine_core.Text, {
|
|
115
|
+
...getStyles("agendaViewHeaderLabel"),
|
|
116
|
+
children: headerLabel
|
|
117
|
+
})
|
|
118
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mantine_core.Box, {
|
|
119
|
+
...getStyles("agendaViewBody"),
|
|
120
|
+
children: dateGroups.length > 0 ? dateGroups : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mantine_core.Text, {
|
|
121
|
+
...getStyles("agendaViewNoEvents"),
|
|
122
|
+
children: require_labels.getLabel("noEvents", labels)
|
|
123
|
+
})
|
|
124
|
+
})]
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
AgendaView.displayName = "@mantine/schedule/AgendaView";
|
|
128
|
+
AgendaView.classes = require_AgendaView_module.default;
|
|
129
|
+
AgendaView.varsResolver = varsResolver;
|
|
130
|
+
//#endregion
|
|
131
|
+
exports.AgendaView = AgendaView;
|
|
132
|
+
|
|
133
|
+
//# sourceMappingURL=AgendaView.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgendaView.cjs","names":["getAgendaViewEvents","expandRecurringEvents","formatDate","sortEvents","isMultidayEvent","isAllDayEvent","Box","Text","getLabel","React","UnstyledButton","classes"],"sources":["../../../src/components/AgendaView/AgendaView.tsx"],"sourcesContent":["import dayjs from 'dayjs';\nimport React from 'react';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getRadius,\n getThemeColor,\n MantineRadius,\n StylesApiProps,\n Text,\n UnstyledButton,\n useMantineTheme,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { useDatesContext } from '@mantine/dates';\nimport { getLabel, ScheduleLabelsOverride } from '../../labels';\nimport { AnyDateValue, DateLabelFormat, ScheduleEventData, ScheduleMode } from '../../types';\nimport {\n expandRecurringEvents,\n formatDate,\n isAllDayEvent,\n isMultidayEvent,\n sortEvents,\n} from '../../utils';\nimport { RenderEvent } from '../ScheduleEvent/ScheduleEvent';\nimport { getAgendaViewEvents } from './get-agenda-view-events';\nimport classes from './AgendaView.module.css';\n\nexport type AgendaViewStylesNames =\n | 'agendaView'\n | 'agendaViewHeader'\n | 'agendaViewHeaderLabel'\n | 'agendaViewBody'\n | 'agendaViewDateGroup'\n | 'agendaViewDateHeader'\n | 'agendaViewEvent'\n | 'agendaViewEventBody'\n | 'agendaViewEventColor'\n | 'agendaViewEventTitle'\n | 'agendaViewEventTime'\n | 'agendaViewNoEvents';\n\nexport type AgendaViewCssVariables = {\n agendaView: '--agenda-view-radius';\n};\n\nexport interface AgendaViewProps\n extends BoxProps, StylesApiProps<AgendaViewFactory>, ElementProps<'div'> {\n __staticSelector?: string;\n\n /** Start of the date range to display events for */\n rangeStart: AnyDateValue;\n\n /** End of the date range to display events for */\n rangeEnd: AnyDateValue;\n\n /** Events to display */\n events?: ScheduleEventData[];\n\n /** Locale passed down to dayjs, overrides value defined on `DatesProvider` */\n locale?: string;\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 for i18n */\n labels?: ScheduleLabelsOverride;\n\n /** Interaction mode: 'default' allows all interactions, 'static' disables event interactions @default 'default' */\n mode?: ScheduleMode;\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 /** Format for the date group headers @default 'dddd, MMMM D' */\n dateHeaderFormat?: DateLabelFormat;\n\n /** Format for the header label showing the date range @default 'MMMM D, YYYY' */\n headerFormat?: DateLabelFormat;\n\n /** Called when event is clicked */\n onEventClick?: (event: ScheduleEventData, e: React.MouseEvent<HTMLButtonElement>) => void;\n\n /** Max number of generated recurring instances per recurring series @default 2000 */\n recurrenceExpansionLimit?: number;\n}\n\nexport type AgendaViewFactory = Factory<{\n props: AgendaViewProps;\n ref: HTMLDivElement;\n stylesNames: AgendaViewStylesNames;\n vars: AgendaViewCssVariables;\n}>;\n\nconst defaultProps = {\n __staticSelector: 'AgendaView',\n mode: 'default',\n dateHeaderFormat: 'dddd, MMMM D',\n headerFormat: 'MMMM D, YYYY',\n} satisfies Partial<AgendaViewProps>;\n\nconst varsResolver = createVarsResolver<AgendaViewFactory>((_theme, { radius }) => ({\n agendaView: {\n '--agenda-view-radius': getRadius(radius),\n },\n}));\n\nexport const AgendaView = factory<AgendaViewFactory>((_props) => {\n const props = useProps('AgendaView', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n attributes,\n __staticSelector,\n rangeStart,\n rangeEnd,\n events,\n locale,\n radius,\n labels,\n mode,\n renderEvent,\n dateHeaderFormat,\n headerFormat,\n onEventClick,\n recurrenceExpansionLimit,\n ...others\n } = props;\n\n const ctx = useDatesContext();\n const theme = useMantineTheme();\n\n const getStyles = useStyles<AgendaViewFactory>({\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: 'agendaView',\n });\n\n const expandedEvents = expandRecurringEvents({\n events,\n rangeStart: dayjs(rangeStart).startOf('day').toDate(),\n rangeEnd: dayjs(rangeEnd).endOf('day').toDate(),\n expansionLimit: recurrenceExpansionLimit,\n });\n\n const groupedEvents = getAgendaViewEvents({\n rangeStart,\n rangeEnd,\n events: expandedEvents,\n });\n\n const sortedDates = Object.keys(groupedEvents).sort();\n\n const headerLabel = `${formatDate({\n locale: ctx.getLocale(locale),\n date: rangeStart,\n format: headerFormat,\n })} – ${formatDate({\n locale: ctx.getLocale(locale),\n date: rangeEnd,\n format: headerFormat,\n })}`;\n\n const dateGroups = sortedDates.map((dateStr) => {\n const dateEvents = sortEvents(groupedEvents[dateStr]);\n\n const eventNodes = dateEvents.map((event) => {\n const startTime = dayjs(event.start).format('HH:mm');\n const endTime = dayjs(event.end).format('HH:mm');\n const isAllDay = isMultidayEvent(event) || isAllDayEvent({ event, date: dateStr });\n\n const eventChildren = (\n <Box {...getStyles('agendaViewEventBody')}>\n <div\n {...getStyles('agendaViewEventColor', {\n style: { backgroundColor: getThemeColor(event.color, theme) },\n })}\n />\n <div>\n <Text {...getStyles('agendaViewEventTitle')}>{event.title}</Text>\n <Text {...getStyles('agendaViewEventTime')}>\n {isAllDay ? getLabel('allDay', labels) : `${startTime} – ${endTime}`}\n </Text>\n </div>\n </Box>\n );\n\n const rootProps: React.ComponentPropsWithoutRef<'button'> & { children: React.ReactNode } = {\n ...getStyles('agendaViewEvent'),\n onClick:\n mode === 'static'\n ? undefined\n : (e: React.MouseEvent<HTMLButtonElement>) => {\n onEventClick?.(event, e);\n },\n tabIndex: mode === 'static' ? -1 : 0,\n children: eventChildren,\n };\n\n if (typeof renderEvent === 'function') {\n return <React.Fragment key={event.id}>{renderEvent(event, rootProps)}</React.Fragment>;\n }\n\n return <UnstyledButton {...rootProps} key={event.id} />;\n });\n\n return (\n <div {...getStyles('agendaViewDateGroup')} key={dateStr}>\n <Text {...getStyles('agendaViewDateHeader')}>\n {formatDate({\n locale: ctx.getLocale(locale),\n date: dateStr,\n format: dateHeaderFormat,\n })}\n </Text>\n {eventNodes}\n </div>\n );\n });\n\n return (\n <Box {...getStyles('agendaView')} {...others}>\n <div {...getStyles('agendaViewHeader')}>\n <Text {...getStyles('agendaViewHeaderLabel')}>{headerLabel}</Text>\n </div>\n\n <Box {...getStyles('agendaViewBody')}>\n {dateGroups.length > 0 ? (\n dateGroups\n ) : (\n <Text {...getStyles('agendaViewNoEvents')}>{getLabel('noEvents', labels)}</Text>\n )}\n </Box>\n </Box>\n );\n});\n\nAgendaView.displayName = '@mantine/schedule/AgendaView';\nAgendaView.classes = classes;\nAgendaView.varsResolver = varsResolver;\n\nexport namespace AgendaView {\n export type Props = AgendaViewProps;\n export type Factory = AgendaViewFactory;\n export type StylesNames = AgendaViewStylesNames;\n export type CssVariables = AgendaViewCssVariables;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
//#region packages/@mantine/schedule/src/components/AgendaView/AgendaView.module.css
|
|
3
|
+
var AgendaView_module_default = {
|
|
4
|
+
"agendaView": "m_c5e63f2d",
|
|
5
|
+
"agendaViewHeader": "m_b70d381a",
|
|
6
|
+
"agendaViewHeaderLabel": "m_693056fa",
|
|
7
|
+
"agendaViewBody": "m_dd488e6f",
|
|
8
|
+
"agendaViewDateGroup": "m_e7e356c4",
|
|
9
|
+
"agendaViewDateHeader": "m_157e8ae8",
|
|
10
|
+
"agendaViewEvent": "m_cbf6b76d",
|
|
11
|
+
"agendaViewEventBody": "m_f9e2e6af",
|
|
12
|
+
"agendaViewEventColor": "m_428823f6",
|
|
13
|
+
"agendaViewEventTime": "m_f9eaffda",
|
|
14
|
+
"agendaViewNoEvents": "m_7a1aec87"
|
|
15
|
+
};
|
|
16
|
+
//#endregion
|
|
17
|
+
exports.default = AgendaView_module_default;
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=AgendaView.module.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgendaView.module.cjs","names":[],"sources":["../../../src/components/AgendaView/AgendaView.module.css"],"sourcesContent":[".agendaView {\n --agenda-view-radius: var(--schedule-radius, var(--mantine-radius-default));\n\n display: flex;\n flex-direction: column;\n\n @mixin where-light {\n --agenda-view-border-color: var(--mantine-color-gray-3);\n }\n\n @mixin where-dark {\n --agenda-view-border-color: var(--mantine-color-dark-4);\n }\n}\n\n.agendaViewHeader {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--mantine-spacing-sm);\n border-bottom: 1px solid var(--agenda-view-border-color);\n}\n\n.agendaViewHeaderLabel {\n user-select: none;\n font-weight: var(--mantine-font-weight-semibold);\n font-size: var(--mantine-font-size-sm);\n text-transform: capitalize;\n}\n\n.agendaViewBody {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n}\n\n.agendaViewDateGroup {\n &:where(:not(:last-child)) {\n border-bottom: 1px solid var(--agenda-view-border-color);\n }\n}\n\n.agendaViewDateHeader {\n padding: var(--mantine-spacing-xs) var(--mantine-spacing-sm);\n font-weight: var(--mantine-font-weight-semibold);\n font-size: var(--mantine-font-size-sm);\n text-transform: capitalize;\n\n @mixin where-light {\n background-color: var(--mantine-color-gray-0);\n }\n\n @mixin where-dark {\n background-color: var(--mantine-color-dark-6);\n }\n}\n\n.agendaViewEvent {\n display: block;\n width: 100%;\n text-align: start;\n cursor: pointer;\n\n &:where(:not(:last-child)) {\n border-bottom: 1px solid var(--agenda-view-border-color);\n }\n\n @mixin hover {\n @mixin where-light {\n background-color: var(--mantine-color-gray-0);\n }\n\n @mixin where-dark {\n background-color: var(--mantine-color-dark-6);\n }\n }\n}\n\n.agendaViewEventBody {\n display: flex;\n gap: var(--mantine-spacing-sm);\n padding: var(--mantine-spacing-xs) var(--mantine-spacing-sm);\n}\n\n.agendaViewEventColor {\n width: 4px;\n border-radius: 2px;\n flex-shrink: 0;\n}\n\n.agendaViewEventTime {\n margin-top: 2px;\n font-size: var(--mantine-font-size-xs);\n color: var(--mantine-color-dimmed);\n}\n\n.agendaViewNoEvents {\n padding: var(--mantine-spacing-xl) var(--mantine-spacing-sm);\n color: var(--mantine-color-dimmed);\n text-align: center;\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
const require_runtime = require("../../_virtual/_rolldown/runtime.cjs");
|
|
3
|
+
const require_validate_event = require("../../utils/validate-event/validate-event.cjs");
|
|
4
|
+
const require_is_multiday_event = require("../../utils/is-multiday-event/is-multiday-event.cjs");
|
|
5
|
+
let dayjs = require("dayjs");
|
|
6
|
+
dayjs = require_runtime.__toESM(dayjs);
|
|
7
|
+
//#region packages/@mantine/schedule/src/components/AgendaView/get-agenda-view-events.ts
|
|
8
|
+
function getEffectiveEndDate(event) {
|
|
9
|
+
const endDate = (0, dayjs.default)(event.end).startOf("day");
|
|
10
|
+
if ((0, dayjs.default)(event.end).hour() === 0 && (0, dayjs.default)(event.end).minute() === 0) return endDate.subtract(1, "day");
|
|
11
|
+
return endDate;
|
|
12
|
+
}
|
|
13
|
+
function groupEventByDate(event, groupedEvents, rangeStart, rangeEnd) {
|
|
14
|
+
if (require_is_multiday_event.isMultidayEvent(event)) {
|
|
15
|
+
const startDate = (0, dayjs.default)(event.start).startOf("day");
|
|
16
|
+
const endDate = getEffectiveEndDate(event);
|
|
17
|
+
for (let date = startDate; date.isBefore(endDate) || date.isSame(endDate); date = date.add(1, "day")) {
|
|
18
|
+
if (date.isBefore(rangeStart) || date.isAfter(rangeEnd)) continue;
|
|
19
|
+
const dateKey = date.format("YYYY-MM-DD");
|
|
20
|
+
if (!groupedEvents[dateKey]) groupedEvents[dateKey] = [];
|
|
21
|
+
groupedEvents[dateKey].push(event);
|
|
22
|
+
}
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const eventDate = (0, dayjs.default)(event.start).format("YYYY-MM-DD");
|
|
26
|
+
if (!groupedEvents[eventDate]) groupedEvents[eventDate] = [];
|
|
27
|
+
groupedEvents[eventDate].push(event);
|
|
28
|
+
}
|
|
29
|
+
function getAgendaViewEvents({ rangeStart, rangeEnd, events }) {
|
|
30
|
+
const groupedEvents = {};
|
|
31
|
+
if (events === void 0) return groupedEvents;
|
|
32
|
+
const start = (0, dayjs.default)(rangeStart).startOf("day");
|
|
33
|
+
const end = (0, dayjs.default)(rangeEnd).startOf("day");
|
|
34
|
+
const ids = /* @__PURE__ */ new Set();
|
|
35
|
+
for (const event of events) {
|
|
36
|
+
if (event.display === "background") continue;
|
|
37
|
+
const eventStart = (0, dayjs.default)(event.start).startOf("day");
|
|
38
|
+
if ((0, dayjs.default)(event.end).startOf("day").isBefore(start) || eventStart.isAfter(end)) continue;
|
|
39
|
+
if (!ids.has(event.id)) ids.add(event.id);
|
|
40
|
+
else throw new Error(`[@mantine/schedule] AgendaView: Duplicated event ids found: ${event.id}`);
|
|
41
|
+
groupEventByDate(require_validate_event.validateEvent(event), groupedEvents, start, end);
|
|
42
|
+
}
|
|
43
|
+
return groupedEvents;
|
|
44
|
+
}
|
|
45
|
+
//#endregion
|
|
46
|
+
exports.getAgendaViewEvents = getAgendaViewEvents;
|
|
47
|
+
|
|
48
|
+
//# sourceMappingURL=get-agenda-view-events.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-agenda-view-events.cjs","names":["isMultidayEvent","validateEvent"],"sources":["../../../src/components/AgendaView/get-agenda-view-events.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { AnyDateValue, DateStringValue, ScheduleEventData } from '../../types';\nimport { isMultidayEvent, validateEvent } from '../../utils';\n\nfunction getEffectiveEndDate(event: ScheduleEventData) {\n const endDate = dayjs(event.end).startOf('day');\n if (dayjs(event.end).hour() === 0 && dayjs(event.end).minute() === 0) {\n return endDate.subtract(1, 'day');\n }\n return endDate;\n}\n\nexport type AgendaGroupedEvents = Record<DateStringValue, ScheduleEventData[]>;\n\nfunction groupEventByDate(\n event: ScheduleEventData,\n groupedEvents: AgendaGroupedEvents,\n rangeStart: dayjs.Dayjs,\n rangeEnd: dayjs.Dayjs\n) {\n if (isMultidayEvent(event)) {\n const startDate = dayjs(event.start).startOf('day');\n const endDate = getEffectiveEndDate(event);\n\n for (\n let date = startDate;\n date.isBefore(endDate) || date.isSame(endDate);\n date = date.add(1, 'day')\n ) {\n if (date.isBefore(rangeStart) || date.isAfter(rangeEnd)) {\n continue;\n }\n const dateKey = date.format('YYYY-MM-DD');\n if (!groupedEvents[dateKey]) {\n groupedEvents[dateKey] = [];\n }\n groupedEvents[dateKey].push(event);\n }\n\n return;\n }\n\n const eventDate = dayjs(event.start).format('YYYY-MM-DD');\n if (!groupedEvents[eventDate]) {\n groupedEvents[eventDate] = [];\n }\n groupedEvents[eventDate].push(event);\n}\n\ninterface GetAgendaViewEventsInput {\n rangeStart: AnyDateValue;\n rangeEnd: AnyDateValue;\n events: ScheduleEventData[] | undefined;\n}\n\nexport function getAgendaViewEvents({ rangeStart, rangeEnd, events }: GetAgendaViewEventsInput) {\n const groupedEvents: AgendaGroupedEvents = {};\n\n if (events === undefined) {\n return groupedEvents;\n }\n\n const start = dayjs(rangeStart).startOf('day');\n const end = dayjs(rangeEnd).startOf('day');\n const ids = new Set<string | number>();\n\n for (const event of events) {\n if (event.display === 'background') {\n continue;\n }\n\n const eventStart = dayjs(event.start).startOf('day');\n const eventEnd = dayjs(event.end).startOf('day');\n\n if (eventEnd.isBefore(start) || eventStart.isAfter(end)) {\n continue;\n }\n\n if (!ids.has(event.id)) {\n ids.add(event.id);\n } else {\n throw new Error(`[@mantine/schedule] AgendaView: Duplicated event ids found: ${event.id}`);\n }\n\n groupEventByDate(validateEvent(event), groupedEvents, start, end);\n }\n\n return groupedEvents;\n}\n"],"mappings":";;;;;;;AAIA,SAAS,oBAAoB,OAA0B;CACrD,MAAM,WAAA,GAAA,MAAA,QAAA,CAAgB,MAAM,GAAG,CAAC,CAAC,QAAQ,KAAK;CAC9C,KAAA,GAAA,MAAA,QAAA,CAAU,MAAM,GAAG,CAAC,CAAC,KAAK,MAAM,MAAA,GAAA,MAAA,QAAA,CAAW,MAAM,GAAG,CAAC,CAAC,OAAO,MAAM,GACjE,OAAO,QAAQ,SAAS,GAAG,KAAK;CAElC,OAAO;AACT;AAIA,SAAS,iBACP,OACA,eACA,YACA,UACA;CACA,IAAIA,0BAAAA,gBAAgB,KAAK,GAAG;EAC1B,MAAM,aAAA,GAAA,MAAA,QAAA,CAAkB,MAAM,KAAK,CAAC,CAAC,QAAQ,KAAK;EAClD,MAAM,UAAU,oBAAoB,KAAK;EAEzC,KACE,IAAI,OAAO,WACX,KAAK,SAAS,OAAO,KAAK,KAAK,OAAO,OAAO,GAC7C,OAAO,KAAK,IAAI,GAAG,KAAK,GACxB;GACA,IAAI,KAAK,SAAS,UAAU,KAAK,KAAK,QAAQ,QAAQ,GACpD;GAEF,MAAM,UAAU,KAAK,OAAO,YAAY;GACxC,IAAI,CAAC,cAAc,UACjB,cAAc,WAAW,CAAC;GAE5B,cAAc,QAAQ,CAAC,KAAK,KAAK;EACnC;EAEA;CACF;CAEA,MAAM,aAAA,GAAA,MAAA,QAAA,CAAkB,MAAM,KAAK,CAAC,CAAC,OAAO,YAAY;CACxD,IAAI,CAAC,cAAc,YACjB,cAAc,aAAa,CAAC;CAE9B,cAAc,UAAU,CAAC,KAAK,KAAK;AACrC;AAQA,SAAgB,oBAAoB,EAAE,YAAY,UAAU,UAAoC;CAC9F,MAAM,gBAAqC,CAAC;CAE5C,IAAI,WAAW,KAAA,GACb,OAAO;CAGT,MAAM,SAAA,GAAA,MAAA,QAAA,CAAc,UAAU,CAAC,CAAC,QAAQ,KAAK;CAC7C,MAAM,OAAA,GAAA,MAAA,QAAA,CAAY,QAAQ,CAAC,CAAC,QAAQ,KAAK;CACzC,MAAM,sBAAM,IAAI,IAAqB;CAErC,KAAK,MAAM,SAAS,QAAQ;EAC1B,IAAI,MAAM,YAAY,cACpB;EAGF,MAAM,cAAA,GAAA,MAAA,QAAA,CAAmB,MAAM,KAAK,CAAC,CAAC,QAAQ,KAAK;EAGnD,KAAA,GAAA,MAAA,QAAA,CAFuB,MAAM,GAAG,CAAC,CAAC,QAAQ,KAE/B,CAAC,CAAC,SAAS,KAAK,KAAK,WAAW,QAAQ,GAAG,GACpD;EAGF,IAAI,CAAC,IAAI,IAAI,MAAM,EAAE,GACnB,IAAI,IAAI,MAAM,EAAE;OAEhB,MAAM,IAAI,MAAM,+DAA+D,MAAM,IAAI;EAG3F,iBAAiBC,uBAAAA,cAAc,KAAK,GAAG,eAAe,OAAO,GAAG;CAClE;CAEA,OAAO;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CurrentTimeIndicator.cjs","names":["getCurrentTimePosition","formatDate","isInTimeRange","Box","classes"],"sources":["../../../src/components/CurrentTimeIndicator/CurrentTimeIndicator.tsx"],"sourcesContent":["import dayjs from 'dayjs';\nimport { useState } from 'react';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getThemeColor,\n MantineColor,\n StylesApiProps,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { useDatesContext } from '@mantine/dates';\nimport { useInterval } from '@mantine/hooks';\nimport { AnyDateValue, DateLabelFormat } from '../../types';\nimport { formatDate, getCurrentTimePosition, isInTimeRange } from '../../utils';\nimport classes from './CurrentTimeIndicator.module.css';\n\nexport type CurrentTimeIndicatorStylesNames =\n | 'currentTimeIndicator'\n | 'currentTimeIndicatorLine'\n | 'currentTimeIndicatorThumb'\n | 'currentTimeIndicatorTimeBubble';\n\nexport type CurrentTimeIndicatorCssVariables = {\n currentTimeIndicator: '--indicator-color';\n};\n\nexport interface CurrentTimeIndicatorProps\n extends BoxProps, StylesApiProps<CurrentTimeIndicatorFactory>, ElementProps<'div'> {\n __staticSelector?: string;\n\n /** Key of `theme.colors` or any valid CSS color value @default 'red' */\n color?: MantineColor;\n\n /** Offset from the left side */\n startOffset?: string;\n\n /** Offset from the right side */\n endOffset?: string;\n\n /** Extra configurable offset from the top */\n topOffset?: string;\n\n /** Offset for the time bubble */\n timeBubbleStartOffset?: string;\n\n /** If set, displays a bubble with the current time @default @true */\n withTimeBubble?: boolean;\n\n /** If set, displays thumb next to the line @default true */\n withThumb?: boolean;\n\n /** Format of the time displayed in the time bubble @default 'HH:mm' */\n currentTimeFormat?: DateLabelFormat;\n\n /** Locale passed down to dayjs during formatting */\n locale?: string;\n\n /** Start time of the day */\n startTime?: string;\n\n /** End time of the day */\n endTime?: string;\n\n /** Number of minutes per time slot. Used to align the indicator to whole slots when `endTime` does not divide evenly. */\n intervalMinutes?: number;\n\n /** A function to get the current time, called on every tick. Can be used to display the indicator in a different timezone. @default () => dayjs() */\n getCurrentTime?: () => AnyDateValue;\n}\n\nexport type CurrentTimeIndicatorFactory = Factory<{\n props: CurrentTimeIndicatorProps;\n ref: HTMLDivElement;\n stylesNames: CurrentTimeIndicatorStylesNames;\n vars: CurrentTimeIndicatorCssVariables;\n}>;\n\nconst defaultProps = {\n __staticSelector: 'CurrentTimeIndicator',\n withTimeBubble: true,\n withThumb: true,\n currentTimeFormat: 'HH:mm',\n topOffset: '0rem',\n} satisfies Partial<CurrentTimeIndicatorProps>;\n\nconst varsResolver = createVarsResolver<CurrentTimeIndicatorFactory>((theme, { color }) => ({\n currentTimeIndicator: {\n '--indicator-color': color ? getThemeColor(color, theme) : undefined,\n },\n}));\n\nexport const CurrentTimeIndicator = factory<CurrentTimeIndicatorFactory>((_props) => {\n const props = useProps('CurrentTimeIndicator', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n attributes,\n startOffset,\n endOffset,\n color,\n withTimeBubble,\n withThumb,\n currentTimeFormat,\n locale,\n timeBubbleStartOffset,\n __staticSelector,\n topOffset,\n startTime,\n endTime,\n intervalMinutes,\n getCurrentTime,\n ...others\n } = props;\n\n const getStyles = useStyles<CurrentTimeIndicatorFactory>({\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: 'currentTimeIndicator',\n });\n\n const ctx = useDatesContext();\n const [, setTick] = useState(0);\n useInterval(() => setTick((tick) => tick + 1), 1000 * 60, {\n autoInvoke: true,\n });\n\n const now = getCurrentTime ? dayjs(getCurrentTime()) : dayjs();\n const offsetPercent = getCurrentTimePosition({ startTime, endTime, intervalMinutes, now });\n const formattedTime = withTimeBubble\n ? formatDate({ locale: ctx.getLocale(locale), date: now, format: currentTimeFormat })\n : '';\n\n if (!isInTimeRange({ date: now, startTime, endTime })) {\n return null;\n }\n\n return (\n <Box\n {...getStyles('currentTimeIndicator')}\n __vars={{\n '--top-offset': `calc(${offsetPercent}% + ${topOffset})`,\n '--start-offset': startOffset,\n '--end-offset': endOffset,\n '--time-bubble-start-offset': timeBubbleStartOffset,\n\n // Adjust time bubble width for formats including AM/PM\n '--time-bubble-width': formattedTime?.toString().toLowerCase().includes('m')\n ? '64px'\n : '46px',\n }}\n {...others}\n >\n {withTimeBubble && (\n <div {...getStyles('currentTimeIndicatorTimeBubble')}>{formattedTime}</div>\n )}\n\n {withThumb && <div {...getStyles('currentTimeIndicatorThumb')} />}\n\n <div {...getStyles('currentTimeIndicatorLine')} />\n </Box>\n );\n});\n\nCurrentTimeIndicator.displayName = '@mantine/schedule/CurrentTimeIndicator';\nCurrentTimeIndicator.classes = classes;\nCurrentTimeIndicator.varsResolver = varsResolver;\n"],"mappings":";;;;;;;;;;;;;;AAkFA,MAAM,eAAe;CACnB,kBAAkB;CAClB,gBAAgB;CAChB,WAAW;CACX,mBAAmB;CACnB,WAAW;AACb;AAEA,MAAM,gBAAA,GAAA,cAAA,
|
|
1
|
+
{"version":3,"file":"CurrentTimeIndicator.cjs","names":["getCurrentTimePosition","formatDate","isInTimeRange","Box","classes"],"sources":["../../../src/components/CurrentTimeIndicator/CurrentTimeIndicator.tsx"],"sourcesContent":["import dayjs from 'dayjs';\nimport { useState } from 'react';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getThemeColor,\n MantineColor,\n StylesApiProps,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { useDatesContext } from '@mantine/dates';\nimport { useInterval } from '@mantine/hooks';\nimport { AnyDateValue, DateLabelFormat } from '../../types';\nimport { formatDate, getCurrentTimePosition, isInTimeRange } from '../../utils';\nimport classes from './CurrentTimeIndicator.module.css';\n\nexport type CurrentTimeIndicatorStylesNames =\n | 'currentTimeIndicator'\n | 'currentTimeIndicatorLine'\n | 'currentTimeIndicatorThumb'\n | 'currentTimeIndicatorTimeBubble';\n\nexport type CurrentTimeIndicatorCssVariables = {\n currentTimeIndicator: '--indicator-color';\n};\n\nexport interface CurrentTimeIndicatorProps\n extends BoxProps, StylesApiProps<CurrentTimeIndicatorFactory>, ElementProps<'div'> {\n __staticSelector?: string;\n\n /** Key of `theme.colors` or any valid CSS color value @default 'red' */\n color?: MantineColor;\n\n /** Offset from the left side */\n startOffset?: string;\n\n /** Offset from the right side */\n endOffset?: string;\n\n /** Extra configurable offset from the top */\n topOffset?: string;\n\n /** Offset for the time bubble */\n timeBubbleStartOffset?: string;\n\n /** If set, displays a bubble with the current time @default @true */\n withTimeBubble?: boolean;\n\n /** If set, displays thumb next to the line @default true */\n withThumb?: boolean;\n\n /** Format of the time displayed in the time bubble @default 'HH:mm' */\n currentTimeFormat?: DateLabelFormat;\n\n /** Locale passed down to dayjs during formatting */\n locale?: string;\n\n /** Start time of the day */\n startTime?: string;\n\n /** End time of the day */\n endTime?: string;\n\n /** Number of minutes per time slot. Used to align the indicator to whole slots when `endTime` does not divide evenly. */\n intervalMinutes?: number;\n\n /** A function to get the current time, called on every tick. Can be used to display the indicator in a different timezone. @default () => dayjs() */\n getCurrentTime?: () => AnyDateValue;\n}\n\nexport type CurrentTimeIndicatorFactory = Factory<{\n props: CurrentTimeIndicatorProps;\n ref: HTMLDivElement;\n stylesNames: CurrentTimeIndicatorStylesNames;\n vars: CurrentTimeIndicatorCssVariables;\n}>;\n\nconst defaultProps = {\n __staticSelector: 'CurrentTimeIndicator',\n withTimeBubble: true,\n withThumb: true,\n currentTimeFormat: 'HH:mm',\n topOffset: '0rem',\n} satisfies Partial<CurrentTimeIndicatorProps>;\n\nconst varsResolver = createVarsResolver<CurrentTimeIndicatorFactory>((theme, { color }) => ({\n currentTimeIndicator: {\n '--indicator-color': color ? getThemeColor(color, theme) : undefined,\n },\n}));\n\nexport const CurrentTimeIndicator = factory<CurrentTimeIndicatorFactory>((_props) => {\n const props = useProps('CurrentTimeIndicator', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n attributes,\n startOffset,\n endOffset,\n color,\n withTimeBubble,\n withThumb,\n currentTimeFormat,\n locale,\n timeBubbleStartOffset,\n __staticSelector,\n topOffset,\n startTime,\n endTime,\n intervalMinutes,\n getCurrentTime,\n ...others\n } = props;\n\n const getStyles = useStyles<CurrentTimeIndicatorFactory>({\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: 'currentTimeIndicator',\n });\n\n const ctx = useDatesContext();\n const [, setTick] = useState(0);\n useInterval(() => setTick((tick) => tick + 1), 1000 * 60, {\n autoInvoke: true,\n });\n\n const now = getCurrentTime ? dayjs(getCurrentTime()) : dayjs();\n const offsetPercent = getCurrentTimePosition({ startTime, endTime, intervalMinutes, now });\n const formattedTime = withTimeBubble\n ? formatDate({ locale: ctx.getLocale(locale), date: now, format: currentTimeFormat })\n : '';\n\n if (!isInTimeRange({ date: now, startTime, endTime })) {\n return null;\n }\n\n return (\n <Box\n {...getStyles('currentTimeIndicator')}\n __vars={{\n '--top-offset': `calc(${offsetPercent}% + ${topOffset})`,\n '--start-offset': startOffset,\n '--end-offset': endOffset,\n '--time-bubble-start-offset': timeBubbleStartOffset,\n\n // Adjust time bubble width for formats including AM/PM\n '--time-bubble-width': formattedTime?.toString().toLowerCase().includes('m')\n ? '64px'\n : '46px',\n }}\n {...others}\n >\n {withTimeBubble && (\n <div {...getStyles('currentTimeIndicatorTimeBubble')}>{formattedTime}</div>\n )}\n\n {withThumb && <div {...getStyles('currentTimeIndicatorThumb')} />}\n\n <div {...getStyles('currentTimeIndicatorLine')} />\n </Box>\n );\n});\n\nCurrentTimeIndicator.displayName = '@mantine/schedule/CurrentTimeIndicator';\nCurrentTimeIndicator.classes = classes;\nCurrentTimeIndicator.varsResolver = varsResolver;\n"],"mappings":";;;;;;;;;;;;;;AAkFA,MAAM,eAAe;CACnB,kBAAkB;CAClB,gBAAgB;CAChB,WAAW;CACX,mBAAmB;CACnB,WAAW;AACb;AAEA,MAAM,gBAAA,GAAA,cAAA,mBAAA,EAAgE,OAAO,EAAE,aAAa,EAC1F,sBAAsB,EACpB,qBAAqB,SAAA,GAAA,cAAA,cAAA,CAAsB,OAAO,KAAK,IAAI,KAAA,EAC7D,EACF,EAAE;AAEF,MAAa,wBAAA,GAAA,cAAA,QAAA,EAA6D,WAAW;CACnF,MAAM,SAAA,GAAA,cAAA,SAAA,CAAiB,wBAAwB,cAAc,MAAM;CACnE,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,YACA,aACA,WACA,OACA,gBACA,WACA,mBACA,QACA,uBACA,kBACA,WACA,WACA,SACA,iBACA,gBACA,GAAG,WACD;CAEJ,MAAM,aAAA,GAAA,cAAA,UAAA,CAAmD;EACvD,MAAM;EACN,SAAA,oCAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,cAAc;CAChB,CAAC;CAED,MAAM,OAAA,GAAA,eAAA,gBAAA,CAAsB;CAC5B,MAAM,GAAG,YAAA,GAAA,MAAA,SAAA,CAAoB,CAAC;CAC9B,CAAA,GAAA,eAAA,YAAA,OAAkB,SAAS,SAAS,OAAO,CAAC,GAAG,MAAO,IAAI,EACxD,YAAY,KACd,CAAC;CAED,MAAM,MAAM,kBAAA,GAAA,MAAA,QAAA,CAAuB,eAAe,CAAC,KAAA,GAAA,MAAA,QAAA,CAAU;CAC7D,MAAM,gBAAgBA,kCAAAA,uBAAuB;EAAE;EAAW;EAAS;EAAiB;CAAI,CAAC;CACzF,MAAM,gBAAgB,iBAClBC,oBAAAA,WAAW;EAAE,QAAQ,IAAI,UAAU,MAAM;EAAG,MAAM;EAAK,QAAQ;CAAkB,CAAC,IAClF;CAEJ,IAAI,CAACC,yBAAAA,cAAc;EAAE,MAAM;EAAK;EAAW;CAAQ,CAAC,GAClD,OAAO;CAGT,OACE,iBAAA,GAAA,kBAAA,KAAA,CAACC,cAAAA,KAAD;EACE,GAAI,UAAU,sBAAsB;EACpC,QAAQ;GACN,gBAAgB,QAAQ,cAAc,MAAM,UAAU;GACtD,kBAAkB;GAClB,gBAAgB;GAChB,8BAA8B;GAG9B,uBAAuB,eAAe,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,GAAG,IACvE,SACA;EACN;EACA,GAAI;YAbN;GAeG,kBACC,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;IAAK,GAAI,UAAU,gCAAgC;cAAI;GAAmB,CAAA;GAG3E,aAAa,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD,EAAK,GAAI,UAAU,2BAA2B,EAAI,CAAA;GAEhE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD,EAAK,GAAI,UAAU,0BAA0B,EAAI,CAAA;EAC9C;;AAET,CAAC;AAED,qBAAqB,cAAc;AACnC,qBAAqB,UAAUC,oCAAAA;AAC/B,qBAAqB,eAAe"}
|
|
@@ -14,6 +14,7 @@ const require_use_auto_scroll_on_drag = require("../../hooks/use-auto-scroll-on-
|
|
|
14
14
|
const require_use_drag_drop_handlers = require("../../hooks/use-drag-drop-handlers.cjs");
|
|
15
15
|
const require_use_event_resize = require("../../hooks/use-event-resize.cjs");
|
|
16
16
|
const require_use_slot_drag_select = require("../../hooks/use-slot-drag-select.cjs");
|
|
17
|
+
const require_AgendaView = require("../AgendaView/AgendaView.cjs");
|
|
17
18
|
const require_CurrentTimeIndicator = require("../CurrentTimeIndicator/CurrentTimeIndicator.cjs");
|
|
18
19
|
const require_DragContext = require("../DragContext/DragContext.cjs");
|
|
19
20
|
const require_ScheduleEvent = require("../ScheduleEvent/ScheduleEvent.cjs");
|
|
@@ -34,6 +35,7 @@ const defaultProps = {
|
|
|
34
35
|
startTime: "00:00:00",
|
|
35
36
|
endTime: "23:59:59",
|
|
36
37
|
intervalMinutes: 15,
|
|
38
|
+
withSubHourGridLines: true,
|
|
37
39
|
withAllDaySlot: true,
|
|
38
40
|
slotLabelFormat: "HH:mm",
|
|
39
41
|
headerFormat: "MMMM D, YYYY",
|
|
@@ -53,7 +55,8 @@ const varsResolver = (0, _mantine_core.createVarsResolver)((_theme, { radius, sl
|
|
|
53
55
|
} }));
|
|
54
56
|
const DayView = (0, _mantine_core.factory)((_props) => {
|
|
55
57
|
const props = (0, _mantine_core.useProps)("DayView", defaultProps, _props);
|
|
56
|
-
const { classNames, className, style, styles, unstyled, attributes, vars, __staticSelector, startTime, endTime, intervalMinutes, withAllDaySlot, date, locale, slotLabelFormat, headerFormat, getCurrentTime, withCurrentTimeIndicator, withCurrentTimeBubble, withHeader, radius, onDateChange, onViewChange, previousControlProps, nextControlProps, todayControlProps, viewSelectProps, slotHeight, allDaySlotHeight, scrollAreaProps, events, moreEventsProps, renderEventBody, renderEvent, labels, highlightBusinessHours, businessHours, withEventsDragAndDrop, onEventDrop, canDragEvent, onEventDragStart, onEventDragEnd, onTimeSlotClick, onAllDaySlotClick, onEventClick, withDragSlotSelect, onSlotDragEnd, mode, startScrollTime, onExternalEventDrop, withEventResize, onEventResize, canResizeEvent, recurrenceExpansionLimit, getTimeSlotProps, ...others } = props;
|
|
58
|
+
const { classNames, className, style, styles, unstyled, attributes, vars, __staticSelector, startTime, endTime, intervalMinutes, withSubHourGridLines, withAllDaySlot, date, locale, slotLabelFormat, headerFormat, getCurrentTime, withCurrentTimeIndicator, withCurrentTimeBubble, withHeader, radius, onDateChange, onViewChange, previousControlProps, nextControlProps, todayControlProps, viewSelectProps, slotHeight, allDaySlotHeight, scrollAreaProps, events, moreEventsProps, renderEventBody, renderEvent, labels, highlightBusinessHours, businessHours, withEventsDragAndDrop, onEventDrop, canDragEvent, onEventDragStart, onEventDragEnd, onTimeSlotClick, onAllDaySlotClick, onEventClick, withDragSlotSelect, onSlotDragEnd, mode, startScrollTime, onExternalEventDrop, withEventResize, onEventResize, canResizeEvent, recurrenceExpansionLimit, getTimeSlotProps, withAgenda, ...others } = props;
|
|
59
|
+
const [agendaOpen, setAgendaOpen] = (0, react.useState)(false);
|
|
57
60
|
const getStyles = (0, _mantine_core.useStyles)({
|
|
58
61
|
name: __staticSelector,
|
|
59
62
|
classes: require_DayView_module.default,
|
|
@@ -277,6 +280,7 @@ const DayView = (0, _mantine_core.factory)((_props) => {
|
|
|
277
280
|
slotsRef.current[index] = node;
|
|
278
281
|
},
|
|
279
282
|
mod: {
|
|
283
|
+
first: index === 0,
|
|
280
284
|
"hour-start": slot.isHourStart,
|
|
281
285
|
...require_get_business_hours_mod.getBusinessHoursMod({
|
|
282
286
|
time: slot.startTime,
|
|
@@ -373,117 +377,135 @@ const DayView = (0, _mantine_core.factory)((_props) => {
|
|
|
373
377
|
...getStyles("dayView"),
|
|
374
378
|
mod: {
|
|
375
379
|
static: mode === "static",
|
|
376
|
-
"slot-dragging": slotDragSelect.isDragging
|
|
380
|
+
"slot-dragging": slotDragSelect.isDragging,
|
|
381
|
+
"hide-sub-hour-grid-lines": !withSubHourGridLines,
|
|
382
|
+
"event-interaction": eventResize.isResizing || dragDrop.dragContextValue.isDragging
|
|
377
383
|
},
|
|
378
384
|
...others,
|
|
379
|
-
children: [
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
...getStyles("dayViewScrollArea", {
|
|
406
|
-
className: scrollAreaProps?.className,
|
|
407
|
-
style: scrollAreaProps?.style
|
|
385
|
+
children: [
|
|
386
|
+
withHeader && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ScheduleHeaderBase.ScheduleHeaderBase, {
|
|
387
|
+
view: "day",
|
|
388
|
+
navigationHandlers: {
|
|
389
|
+
previous: () => require_to_date_string.toDateString((0, dayjs.default)(date).subtract(1, "day")),
|
|
390
|
+
next: () => require_to_date_string.toDateString((0, dayjs.default)(date).add(1, "day")),
|
|
391
|
+
today: () => require_to_date_string.toDateString(resolveNow())
|
|
392
|
+
},
|
|
393
|
+
control: {
|
|
394
|
+
title: require_format_date.formatDate({
|
|
395
|
+
locale: ctx.getLocale(locale),
|
|
396
|
+
date,
|
|
397
|
+
format: headerFormat
|
|
398
|
+
}),
|
|
399
|
+
miw: 140
|
|
400
|
+
},
|
|
401
|
+
labels,
|
|
402
|
+
onDateChange,
|
|
403
|
+
onViewChange,
|
|
404
|
+
previousControlProps,
|
|
405
|
+
nextControlProps,
|
|
406
|
+
todayControlProps,
|
|
407
|
+
viewSelectProps,
|
|
408
|
+
stylesApiProps,
|
|
409
|
+
onAgendaClick: withAgenda ? () => setAgendaOpen((v) => !v) : void 0,
|
|
410
|
+
agendaActive: agendaOpen
|
|
408
411
|
}),
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
})]
|
|
438
|
-
}),
|
|
439
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mantine_core.UnstyledButton, {
|
|
440
|
-
...getStyles("dayViewSlot"),
|
|
441
|
-
mod: {
|
|
442
|
-
"all-day": true,
|
|
443
|
-
static: mode === "static"
|
|
444
|
-
},
|
|
445
|
-
"aria-label": `${require_labels.getLabel("timeSlot", labels)} ${require_labels.getLabel("allDay", labels)}`,
|
|
446
|
-
onClick: mode === "static" || !onAllDaySlotClick ? void 0 : (e) => {
|
|
447
|
-
onAllDaySlotClick((0, dayjs.default)(date).format("YYYY-MM-DD"), e);
|
|
448
|
-
}
|
|
449
|
-
})
|
|
450
|
-
]
|
|
412
|
+
agendaOpen && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_AgendaView.AgendaView, {
|
|
413
|
+
rangeStart: (0, dayjs.default)(date).startOf("day").format("YYYY-MM-DD"),
|
|
414
|
+
rangeEnd: (0, dayjs.default)(date).endOf("day").format("YYYY-MM-DD"),
|
|
415
|
+
events,
|
|
416
|
+
locale,
|
|
417
|
+
labels,
|
|
418
|
+
mode,
|
|
419
|
+
onEventClick,
|
|
420
|
+
recurrenceExpansionLimit,
|
|
421
|
+
...stylesApiProps
|
|
422
|
+
}),
|
|
423
|
+
!agendaOpen && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mantine_core.ScrollArea.Autosize, {
|
|
424
|
+
scrollbarSize: 4,
|
|
425
|
+
...scrollAreaProps,
|
|
426
|
+
...getStyles("dayViewScrollArea", {
|
|
427
|
+
className: scrollAreaProps?.className,
|
|
428
|
+
style: scrollAreaProps?.style
|
|
429
|
+
}),
|
|
430
|
+
viewportRef: mergedViewportRef,
|
|
431
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_mantine_core.Box, {
|
|
432
|
+
...getStyles("dayViewInner"),
|
|
433
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
434
|
+
...getStyles("dayViewSlotLabels"),
|
|
435
|
+
children: [withAllDaySlot && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mantine_core.Box, {
|
|
436
|
+
...getStyles("dayViewSlotLabel"),
|
|
437
|
+
mod: { "all-day": true },
|
|
438
|
+
children: require_labels.getLabel("allDay", labels)
|
|
439
|
+
}), slotsLabels]
|
|
451
440
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
441
|
+
...getStyles("dayViewSlots"),
|
|
442
|
+
children: [withAllDaySlot && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
443
|
+
...getStyles("dayViewAllDay"),
|
|
444
|
+
children: [
|
|
445
|
+
backgroundAllDayEventNodes,
|
|
446
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
447
|
+
...getStyles("dayViewAllDayEvents"),
|
|
448
|
+
children: [allDayEventsNodes, allDayEventsCount.hiddenEventsCount > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_MoreEvents.MoreEvents, {
|
|
449
|
+
events: eventsData.allDayEvents,
|
|
450
|
+
moreEventsCount: allDayEventsCount.hiddenEventsCount,
|
|
451
|
+
renderEventBody,
|
|
452
|
+
renderEvent,
|
|
453
|
+
mode,
|
|
454
|
+
labels,
|
|
455
|
+
onEventClick,
|
|
456
|
+
...stylesApiProps,
|
|
457
|
+
...moreEventsProps
|
|
458
|
+
})]
|
|
459
|
+
}),
|
|
460
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mantine_core.UnstyledButton, {
|
|
461
|
+
...getStyles("dayViewSlot"),
|
|
462
|
+
mod: {
|
|
463
|
+
"all-day": true,
|
|
464
|
+
static: mode === "static"
|
|
465
|
+
},
|
|
466
|
+
"aria-label": `${require_labels.getLabel("timeSlot", labels)} ${require_labels.getLabel("allDay", labels)}`,
|
|
467
|
+
onClick: mode === "static" || !onAllDaySlotClick ? void 0 : (e) => {
|
|
468
|
+
onAllDaySlotClick((0, dayjs.default)(date).format("YYYY-MM-DD"), e);
|
|
469
|
+
}
|
|
470
|
+
})
|
|
471
|
+
]
|
|
472
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
473
|
+
ref: timeSlotsContainerRef,
|
|
474
|
+
...getStyles("dayViewTimeSlots"),
|
|
475
|
+
onDragOver: withDragHandlers ? (event) => {
|
|
476
|
+
const slotIndex = getSlotIndexFromDragPoint(event);
|
|
477
|
+
if (slotIndex !== null) dragDrop.handleDragOver(event, slotIndex);
|
|
478
|
+
} : void 0,
|
|
479
|
+
onDragLeave: withDragHandlers ? dragDrop.handleDragLeave : void 0,
|
|
480
|
+
onDrop: withDragHandlers ? (event) => {
|
|
481
|
+
const slotIndex = getSlotIndexFromDragPoint(event);
|
|
482
|
+
if (slotIndex !== null) dragDrop.handleDrop(event, slotIndex);
|
|
483
|
+
} : void 0,
|
|
484
|
+
children: [
|
|
485
|
+
backgroundTimedEventNodes,
|
|
486
|
+
eventsNodes,
|
|
487
|
+
showCurrentTimeIndicator && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_CurrentTimeIndicator.CurrentTimeIndicator, {
|
|
488
|
+
startOffset: "calc(var(--day-view-slot-labels-width) * -1)",
|
|
489
|
+
endOffset: "0rem",
|
|
490
|
+
topOffset: "0rem",
|
|
491
|
+
timeBubbleStartOffset: "calc(var(--day-view-slot-labels-width) * -1 + 30px)",
|
|
492
|
+
currentTimeFormat: slotLabelFormat,
|
|
493
|
+
withTimeBubble: withCurrentTimeBubble,
|
|
494
|
+
withThumb: !withCurrentTimeBubble,
|
|
495
|
+
locale,
|
|
496
|
+
startTime,
|
|
497
|
+
endTime,
|
|
498
|
+
intervalMinutes,
|
|
499
|
+
getCurrentTime,
|
|
500
|
+
...stylesApiProps
|
|
501
|
+
}),
|
|
502
|
+
items
|
|
503
|
+
]
|
|
504
|
+
})]
|
|
483
505
|
})]
|
|
484
|
-
})
|
|
506
|
+
})
|
|
485
507
|
})
|
|
486
|
-
|
|
508
|
+
]
|
|
487
509
|
});
|
|
488
510
|
if (withEventsDragAndDrop) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_DragContext.DragContext.Provider, {
|
|
489
511
|
value: dragDrop.dragContextValue,
|