@mantine/schedule 9.5.1 → 9.6.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/_virtual/_rolldown/runtime.cjs +1 -1
- package/cjs/components/AgendaView/AgendaView.cjs +7 -6
- package/cjs/components/AgendaView/AgendaView.cjs.map +1 -1
- package/cjs/components/AgendaView/get-agenda-view-events.cjs.map +1 -1
- package/cjs/components/CurrentTimeIndicator/CurrentTimeIndicator.cjs +3 -2
- package/cjs/components/CurrentTimeIndicator/CurrentTimeIndicator.cjs.map +1 -1
- package/cjs/components/DayView/DayView.cjs +144 -78
- package/cjs/components/DayView/DayView.cjs.map +1 -1
- package/cjs/components/DayView/DayView.module.cjs +2 -1
- package/cjs/components/DayView/DayView.module.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 +7 -6
- 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 +24 -34
- 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/find-available-row.cjs.map +1 -1
- package/cjs/components/MonthView/get-month-view-events/get-month-positioned-events.cjs +4 -2
- 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 +3 -2
- 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 +1 -1
- package/cjs/components/MonthView/get-renderable-month-event-segments.cjs.map +1 -1
- package/cjs/components/MoreEvents/MoreEvents.cjs.map +1 -1
- package/cjs/components/ResourcesDayView/ResourcesDayView.cjs +136 -52
- package/cjs/components/ResourcesDayView/ResourcesDayView.cjs.map +1 -1
- package/cjs/components/ResourcesDayView/ResourcesDayView.module.cjs +2 -1
- package/cjs/components/ResourcesDayView/ResourcesDayView.module.cjs.map +1 -1
- package/cjs/components/ResourcesDayView/ResourcesDayViewColumn.cjs.map +1 -1
- package/cjs/components/ResourcesDayView/get-resources-day-view-events/get-resources-day-view-events.cjs.map +1 -1
- package/cjs/components/ResourcesMonthView/ResourcesMonthView.cjs.map +1 -1
- package/cjs/components/ResourcesSchedule/ResourcesSchedule.cjs +3 -1
- package/cjs/components/ResourcesSchedule/ResourcesSchedule.cjs.map +1 -1
- package/cjs/components/ResourcesWeekView/ResourcesWeekView.cjs +150 -59
- package/cjs/components/ResourcesWeekView/ResourcesWeekView.cjs.map +1 -1
- package/cjs/components/ResourcesWeekView/ResourcesWeekView.module.cjs +2 -1
- package/cjs/components/ResourcesWeekView/ResourcesWeekView.module.cjs.map +1 -1
- package/cjs/components/ResourcesWeekView/ResourcesWeekViewRow.cjs.map +1 -1
- package/cjs/components/ResourcesWeekView/get-resources-week-view-events/get-resources-week-view-events.cjs +6 -3
- package/cjs/components/ResourcesWeekView/get-resources-week-view-events/get-resources-week-view-events.cjs.map +1 -1
- package/cjs/components/Schedule/Schedule.cjs +4 -1
- package/cjs/components/Schedule/Schedule.cjs.map +1 -1
- package/cjs/components/ScheduleBackgroundEvent/ScheduleBackgroundEvent.cjs +53 -0
- package/cjs/components/ScheduleBackgroundEvent/ScheduleBackgroundEvent.cjs.map +1 -0
- package/cjs/components/ScheduleEvent/ScheduleEvent.cjs.map +1 -1
- package/cjs/components/ScheduleHeader/HeaderControl/HeaderControl.cjs +15 -14
- 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/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 +159 -82
- package/cjs/components/WeekView/WeekView.cjs.map +1 -1
- package/cjs/components/WeekView/WeekView.module.cjs +2 -1
- package/cjs/components/WeekView/WeekView.module.cjs.map +1 -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 +5 -10
- 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 +5 -3
- package/cjs/components/WeekView/get-week-view-events/get-week-positioned-events.cjs.map +1 -1
- package/cjs/components/YearView/YearView.cjs +7 -6
- package/cjs/components/YearView/YearView.cjs.map +1 -1
- package/cjs/components/YearView/YearViewMonth.cjs.map +1 -1
- package/cjs/components/YearView/get-visible-week-days.cjs.map +1 -1
- package/cjs/components/YearView/get-year-view-events/get-year-view-events.cjs.map +1 -1
- package/cjs/hooks/use-auto-scroll-on-drag.cjs.map +1 -1
- package/cjs/hooks/use-day-grid-event-resize.cjs.map +1 -1
- package/cjs/hooks/use-drag-drop-handlers.cjs +13 -2
- 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 +30 -15
- package/cjs/hooks/use-event-resize.cjs.map +1 -1
- package/cjs/hooks/use-horizontal-event-resize.cjs +30 -15
- package/cjs/hooks/use-horizontal-event-resize.cjs.map +1 -1
- package/cjs/hooks/use-slot-drag-select.cjs.map +1 -1
- package/cjs/index.cjs +2 -0
- package/cjs/utils/calculate-drop-time/calculate-drop-time.cjs +25 -4
- 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/calculate-month-resize-dates/calculate-month-resize-dates.cjs.map +1 -1
- package/cjs/utils/expand-recurring-events/expand-recurring-events.cjs +20 -8
- 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-month-days/get-month-days.cjs +4 -2
- 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-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 +4 -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/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 +16 -4
- 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/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/validate-event/validate-event.cjs.map +1 -1
- package/esm/components/AgendaView/AgendaView.mjs +7 -6
- package/esm/components/AgendaView/AgendaView.mjs.map +1 -1
- package/esm/components/CurrentTimeIndicator/CurrentTimeIndicator.mjs +4 -3
- package/esm/components/CurrentTimeIndicator/CurrentTimeIndicator.mjs.map +1 -1
- package/esm/components/DayView/DayView.mjs +145 -79
- package/esm/components/DayView/DayView.mjs.map +1 -1
- package/esm/components/DayView/DayView.module.mjs +2 -1
- package/esm/components/DayView/DayView.module.mjs.map +1 -1
- package/esm/components/MobileMonthView/MobileMonthView.mjs +7 -6
- package/esm/components/MobileMonthView/MobileMonthView.mjs.map +1 -1
- package/esm/components/MonthView/MonthView.mjs +25 -35
- 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/get-month-positioned-events.mjs +4 -2
- 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-weeks-in-range.mjs +3 -2
- package/esm/components/MonthView/get-month-view-events/get-weeks-in-range.mjs.map +1 -1
- package/esm/components/MonthView/get-renderable-month-event-segments.mjs +1 -1
- package/esm/components/MonthView/get-renderable-month-event-segments.mjs.map +1 -1
- package/esm/components/MoreEvents/MoreEvents.mjs.map +1 -1
- package/esm/components/ResourcesDayView/ResourcesDayView.mjs +138 -54
- package/esm/components/ResourcesDayView/ResourcesDayView.mjs.map +1 -1
- package/esm/components/ResourcesDayView/ResourcesDayView.module.mjs +2 -1
- package/esm/components/ResourcesDayView/ResourcesDayView.module.mjs.map +1 -1
- package/esm/components/ResourcesDayView/ResourcesDayViewColumn.mjs.map +1 -1
- package/esm/components/ResourcesMonthView/ResourcesMonthView.mjs.map +1 -1
- package/esm/components/ResourcesSchedule/ResourcesSchedule.mjs +3 -1
- package/esm/components/ResourcesSchedule/ResourcesSchedule.mjs.map +1 -1
- package/esm/components/ResourcesWeekView/ResourcesWeekView.mjs +152 -61
- package/esm/components/ResourcesWeekView/ResourcesWeekView.mjs.map +1 -1
- package/esm/components/ResourcesWeekView/ResourcesWeekView.module.mjs +2 -1
- package/esm/components/ResourcesWeekView/ResourcesWeekView.module.mjs.map +1 -1
- package/esm/components/ResourcesWeekView/ResourcesWeekViewRow.mjs.map +1 -1
- package/esm/components/ResourcesWeekView/get-resources-week-view-events/get-resources-week-view-events.mjs +6 -3
- package/esm/components/ResourcesWeekView/get-resources-week-view-events/get-resources-week-view-events.mjs.map +1 -1
- package/esm/components/Schedule/Schedule.mjs +4 -1
- package/esm/components/Schedule/Schedule.mjs.map +1 -1
- package/esm/components/ScheduleBackgroundEvent/ScheduleBackgroundEvent.mjs +53 -0
- package/esm/components/ScheduleBackgroundEvent/ScheduleBackgroundEvent.mjs.map +1 -0
- package/esm/components/ScheduleEvent/ScheduleEvent.mjs.map +1 -1
- package/esm/components/ScheduleHeader/HeaderControl/HeaderControl.mjs +15 -14
- 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.mjs.map +1 -1
- 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 +160 -83
- package/esm/components/WeekView/WeekView.mjs.map +1 -1
- package/esm/components/WeekView/WeekView.module.mjs +2 -1
- package/esm/components/WeekView/WeekView.module.mjs.map +1 -1
- package/esm/components/WeekView/WeekViewDay.mjs.map +1 -1
- package/esm/components/WeekView/get-week-view-events/find-available-column.mjs +5 -10
- package/esm/components/WeekView/get-week-view-events/find-available-column.mjs.map +1 -1
- package/esm/components/WeekView/get-week-view-events/get-week-positioned-events.mjs +5 -3
- package/esm/components/WeekView/get-week-view-events/get-week-positioned-events.mjs.map +1 -1
- package/esm/components/YearView/YearView.mjs +7 -6
- package/esm/components/YearView/YearView.mjs.map +1 -1
- package/esm/components/YearView/YearViewMonth.mjs.map +1 -1
- package/esm/hooks/use-drag-drop-handlers.mjs +13 -2
- package/esm/hooks/use-drag-drop-handlers.mjs.map +1 -1
- package/esm/hooks/use-event-resize.mjs +30 -15
- package/esm/hooks/use-event-resize.mjs.map +1 -1
- package/esm/hooks/use-horizontal-event-resize.mjs +30 -15
- package/esm/hooks/use-horizontal-event-resize.mjs.map +1 -1
- package/esm/index.mjs +2 -1
- package/esm/utils/calculate-drop-time/calculate-drop-time.mjs +25 -4
- package/esm/utils/calculate-drop-time/calculate-drop-time.mjs.map +1 -1
- package/esm/utils/expand-recurring-events/expand-recurring-events.mjs +20 -8
- package/esm/utils/expand-recurring-events/expand-recurring-events.mjs.map +1 -1
- package/esm/utils/get-month-days/get-month-days.mjs +4 -2
- package/esm/utils/get-month-days/get-month-days.mjs.map +1 -1
- package/esm/utils/get-week-number/get-week-number.mjs +4 -1
- package/esm/utils/get-week-number/get-week-number.mjs.map +1 -1
- package/esm/utils/is-events-overlap/is-events-overlap.mjs +16 -4
- package/esm/utils/is-events-overlap/is-events-overlap.mjs.map +1 -1
- package/lib/components/DayView/DayView.d.ts +7 -1
- package/lib/components/MonthView/MonthView.d.ts +2 -0
- package/lib/components/ResourcesDayView/ResourcesDayView.d.ts +7 -1
- package/lib/components/ResourcesDayView/ResourcesDayViewColumn.d.ts +1 -1
- package/lib/components/ResourcesSchedule/ResourcesSchedule.d.ts +3 -1
- package/lib/components/ResourcesWeekView/ResourcesWeekView.d.ts +7 -1
- package/lib/components/ResourcesWeekView/ResourcesWeekViewRow.d.ts +1 -1
- package/lib/components/Schedule/Schedule.d.ts +3 -1
- package/lib/components/ScheduleBackgroundEvent/ScheduleBackgroundEvent.d.ts +19 -0
- package/lib/components/ScheduleBackgroundEvent/index.d.ts +2 -0
- package/lib/components/ScheduleHeader/HeaderControl/HeaderControl.d.ts +3 -3
- package/lib/components/ScheduleHeader/ScheduleHeaderBase.d.ts +1 -1
- package/lib/components/WeekView/WeekView.d.ts +7 -1
- package/lib/components/WeekView/WeekViewDay.d.ts +1 -1
- package/lib/components/WeekView/get-week-view-events/find-available-column.d.ts +7 -3
- package/lib/components/YearView/YearViewMonth.d.ts +1 -1
- package/lib/hooks/use-drag-drop-handlers.d.ts +10 -1
- package/lib/hooks/use-event-resize.d.ts +2 -1
- package/lib/hooks/use-horizontal-event-resize.d.ts +2 -1
- package/lib/index.d.mts +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/types.d.ts +1 -1
- package/lib/utils/calculate-drop-time/calculate-drop-time.d.ts +11 -1
- package/package.json +8 -5
- package/styles.css +160 -0
- package/styles.layer.css +160 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScheduleHeader.cjs","names":["ScheduleHeaderLabelsContext","Box","classes","HeaderControl","ScheduleHeaderNext","ScheduleHeaderPrevious","ScheduleHeaderToday","ViewSelect","MonthYearSelect"],"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,gBAAA,
|
|
1
|
+
{"version":3,"file":"ScheduleHeader.cjs","names":["createVarsResolver","factory","useProps","useStyles","ScheduleHeaderLabelsContext","Box","classes","HeaderControl","ScheduleHeaderNext","ScheduleHeaderPrevious","ScheduleHeaderToday","ViewSelect","MonthYearSelect"],"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,gBAAA,GAAeA,cAAAA,mBAAAA,QAAiD,EACpE,gBAAgB,EACd,UAAU,OACZ,EACF,EAAE;AAEF,MAAa,kBAAA,GAAiBC,cAAAA,QAAAA,EAAgC,WAAW;CACvE,MAAM,SAAA,GAAQC,cAAAA,SAAAA,CAAS,kBAAkB,cAAc,MAAM;CAC7D,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,YACA,kBACA,QACA,GAAG,WACD;CAEJ,MAAM,aAAA,GAAYC,cAAAA,UAAAA,CAAiC;EACjD,MAAM;EACN,SAAA,8BAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,cAAc;CAChB,CAAC;CAED,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,8BAAAA,4BAA4B,UAA7B;EAAsC,OAAO;EAC3C,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,cAAAA,KAAD;GAAK,GAAI,UAAU,QAAQ;GAAG,GAAI;EAAS,CAAA;CACP,CAAA;AAE1C,CAAC;AAED,eAAe,cAAc;AAC7B,eAAe,UAAUC,8BAAAA;AACzB,eAAe,eAAe;AAC9B,eAAe,UAAUC,sBAAAA;AACzB,eAAe,OAAOC,sBAAAA;AACtB,eAAe,WAAWC,sBAAAA;AAC1B,eAAe,QAAQC,sBAAAA;AACvB,eAAe,aAAaC,mBAAAA;AAC5B,eAAe,kBAAkBC,wBAAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScheduleHeaderBase.cjs","names":["ScheduleHeader","getLabel","classes","NativeSelect"],"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 /** Called when agenda button is clicked */\n onAgendaClick?: () => void;\n\n /** Whether the agenda view is currently active */\n agendaActive?: boolean;\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 onAgendaClick,\n agendaActive,\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 {onAgendaClick && (\n <ScheduleHeader.Control\n {...stylesApiProps}\n data-type=\"agenda\"\n active={agendaActive}\n onClick={onAgendaClick}\n aria-label={getLabel('agenda', labels) as string}\n >\n {getLabel('agenda', labels)}\n </ScheduleHeader.Control>\n )}\n </div>\n\n <div className={classes.compactControls}>\n {onAgendaClick && (\n <ScheduleHeader.Control\n {...stylesApiProps}\n data-type=\"agenda\"\n active={agendaActive}\n onClick={onAgendaClick}\n aria-label={getLabel('agenda', labels) as string}\n className={classes.compactAgendaControl}\n >\n {getLabel('agenda', labels)}\n </ScheduleHeader.Control>\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 </div>\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":";;;;;;;AA2EA,MAAM,cAAmC;CAAC;CAAO;CAAQ;CAAS;AAAM;AAExE,SAAgB,mBAAmB,EACjC,MACA,oBACA,SACA,QACA,cACA,cACA,sBACA,kBACA,mBACA,iBACA,gBACA,eACA,gBAC0B;CAC1B,MAAM,iBAAiB,QAAQ,kBAC7B,iBAAA,GAAA,kBAAA,IAAA,CAACA,uBAAAA,eAAe,iBAAhB;EACE,GAAI;EACI;EACR,GAAI,QAAQ;CACb,CAAA,IAED,iBAAA,GAAA,kBAAA,IAAA,CAACA,uBAAAA,eAAe,SAAhB;EAAwB,GAAI;EAAgB,aAAa;EAAO,KAAK,QAAQ;
|
|
1
|
+
{"version":3,"file":"ScheduleHeaderBase.cjs","names":["ScheduleHeader","getLabel","classes","NativeSelect"],"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 /** Called when agenda button is clicked */\n onAgendaClick?: () => void;\n\n /** Whether the agenda view is currently active */\n agendaActive?: boolean;\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 onAgendaClick,\n agendaActive,\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 {onAgendaClick && (\n <ScheduleHeader.Control\n {...stylesApiProps}\n data-type=\"agenda\"\n active={agendaActive}\n onClick={onAgendaClick}\n aria-label={getLabel('agenda', labels) as string}\n >\n {getLabel('agenda', labels)}\n </ScheduleHeader.Control>\n )}\n </div>\n\n <div className={classes.compactControls}>\n {onAgendaClick && (\n <ScheduleHeader.Control\n {...stylesApiProps}\n data-type=\"agenda\"\n active={agendaActive}\n onClick={onAgendaClick}\n aria-label={getLabel('agenda', labels) as string}\n className={classes.compactAgendaControl}\n >\n {getLabel('agenda', labels)}\n </ScheduleHeader.Control>\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 </div>\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":";;;;;;;AA2EA,MAAM,cAAmC;CAAC;CAAO;CAAQ;CAAS;AAAM;AAExE,SAAgB,mBAAmB,EACjC,MACA,oBACA,SACA,QACA,cACA,cACA,sBACA,kBACA,mBACA,iBACA,gBACA,eACA,gBAC0B;CAC1B,MAAM,iBAAiB,QAAQ,kBAC7B,iBAAA,GAAA,kBAAA,IAAA,CAACA,uBAAAA,eAAe,iBAAhB;EACE,GAAI;EACI;EACR,GAAI,QAAQ;CACb,CAAA,IAED,iBAAA,GAAA,kBAAA,IAAA,CAACA,uBAAAA,eAAe,SAAhB;EAAwB,GAAI;EAAgB,aAAa;EAAO,KAAK,QAAQ;EAC1E,UAAA,QAAQ;CACa,CAAA;CAI1B,MAAM,yBADQ,iBAAiB,SAAS,YAAA,CACJ,KAAK,OAAO;EAC9C,OAAO;EACP,OAAOC,eAAAA,SAAS,GAAG,MAAM;CAC3B,EAAE;CAEF,OACE,iBAAA,GAAA,kBAAA,KAAA,CAACD,uBAAAA,gBAAD;EAAgB,GAAI;EAAwB;EAA5C,UAAA;GACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;IAAK,WAAWE,8BAAAA,QAAQ;IAAxB,UAAA;KACE,iBAAA,GAAA,kBAAA,IAAA,CAACF,uBAAAA,eAAe,UAAhB;MACE,GAAI;MACJ,eAAe,eAAe,mBAAmB,SAAS,CAAC;MACnD;MACR,GAAI;KACL,CAAA;KAEA;KAED,iBAAA,GAAA,kBAAA,IAAA,CAACA,uBAAAA,eAAe,MAAhB;MACE,GAAI;MACJ,eAAe,eAAe,mBAAmB,KAAK,CAAC;MAC/C;MACR,GAAI;KACL,CAAA;IACE;;GAEL,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;IAAK,WAAWE,8BAAAA,QAAQ;IAAxB,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACF,uBAAAA,eAAe,OAAhB;KACE,GAAI;KACJ,eAAe,eAAe,mBAAmB,MAAM,CAAC;KAChD;KACR,GAAI;IACL,CAAA,GACA,iBACC,iBAAA,GAAA,kBAAA,IAAA,CAACA,uBAAAA,eAAe,SAAhB;KACE,GAAI;KACJ,aAAU;KACV,QAAQ;KACR,SAAS;KACT,cAAYC,eAAAA,SAAS,UAAU,MAAM;KAEpCA,UAAAA,eAAAA,SAAS,UAAU,MAAM;IACJ,CAAA,CAEvB;;GAEL,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;IAAK,WAAWC,8BAAAA,QAAQ;IAAxB,UAAA,CACG,iBACC,iBAAA,GAAA,kBAAA,IAAA,CAACF,uBAAAA,eAAe,SAAhB;KACE,GAAI;KACJ,aAAU;KACV,QAAQ;KACR,SAAS;KACT,cAAYC,eAAAA,SAAS,UAAU,MAAM;KACrC,WAAWC,8BAAAA,QAAQ;KAElBD,UAAAA,eAAAA,SAAS,UAAU,MAAM;IACJ,CAAA,GAE1B,iBAAA,GAAA,kBAAA,IAAA,CAACE,cAAAA,cAAD;KACE,WAAWD,8BAAAA,QAAQ;KACnB,MAAM;KACN,OAAO;KACP,WAAW,UAAU,eAAe,MAAM,cAAc,KAA0B;KAClF,cAAYD,eAAAA,SAAS,mBAAmB,MAAM;KAC9C,MAAK;IACN,CAAA,CACE;;GAEL,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;IAAK,WAAWC,8BAAAA,QAAQ;IAAY,OAAO,EAAE,mBAAmB,OAAO;IACrE,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACF,uBAAAA,eAAe,YAAhB;KACE,OAAO;KACP,UAAU;KACF;KACR,GAAI;KACJ,GAAI;IACL,CAAA;GACE,CAAA;EACS;;AAEpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScheduleHeaderContext.cjs","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,+BAAA,
|
|
1
|
+
{"version":3,"file":"ScheduleHeaderContext.cjs","names":["createContext","useContext"],"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,+BAAA,GAA8BA,MAAAA,cAAAA,CACzC,KAAA,CACF;AACA,4BAA4B,cAAc;AAE1C,SAAgB,wBACd,UACoC;CACpC,MAAM,iBAAA,GAAgBC,MAAAA,WAAAA,CAAW,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.cjs","names":["useScheduleHeaderLabels","HeaderControl","getLabel","Box","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,cAAA,
|
|
1
|
+
{"version":3,"file":"ViewSelect.cjs","names":["factory","useProps","useStyles","useScheduleHeaderLabels","useResolvedStylesApi","useDirection","useRef","HeaderControl","getLabel","Box","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,cAAA,GAAaA,cAAAA,QAAAA,EAA4B,WAAW;CAC/D,MAAM,SAAA,GAAQC,cAAAA,SAAAA,CAAS,cAAc,cAAc,MAAM;CACzD,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,YACA,OACA,UACA,OACA,kBACA,QACA,QACA,GAAG,WACD;CAEJ,MAAM,aAAA,GAAYC,cAAAA,UAAAA,CAA6B;EAC7C,MAAM;EACN,SAAA,0BAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,cAAc;CAChB,CAAC;CAED,MAAM,iBAAiBC,8BAAAA,wBAAwB,MAAM;CAErD,MAAM,EAAE,oBAAoB,oBAAA,GAAmBC,cAAAA,qBAAAA,CAAwC;EACrF;EACA;EACA;CACF,CAAC;CAED,MAAM,EAAE,SAAA,GAAQC,cAAAA,aAAAA,CAAa;CAC7B,MAAM,eAAA,GAAcC,MAAAA,OAAAA,CAAqC,CAAC,CAAC;CAC3D,MAAM,4BAAA,GAA2BA,MAAAA,OAAAA,CAAO,KAAK;CAK7C,CAAA,GAAA,MAAA,UAAA,OAAgB;EACd,IAAI,yBAAyB,WAAW,SAAS,kBAAkB,SAAS,MAAM;GAChF,MAAM,gBAAgB,MAAO,WAAW,SAAS,SAAS,KAAK;GAC/D,IAAI,kBAAkB,IACpB,YAAY,QAAQ,cAAc,EAAE,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,UAAU,EAAE,MAAM;EACxC,OAAO,IAAI,MAAM,QAAQ,SAAS;GAChC,MAAM,eAAe;GACrB,MAAM,YAAY,QAAQ,IAAI,QAAQ,IAAI,MAAO,SAAS;GAC1D,YAAY,QAAQ,UAAU,EAAE,MAAM;EACxC,OAAO,IAAI,MAAM,QAAQ,QAAQ;GAC/B,MAAM,eAAe;GACrB,YAAY,QAAQ,EAAE,EAAE,MAAM;EAChC,OAAO,IAAI,MAAM,QAAQ,OAAO;GAC9B,MAAM,eAAe;GACrB,YAAY,QAAQ,MAAO,SAAS,EAAE,EAAE,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,iBAAA,GAAA,kBAAA,IAAA,CAACC,sBAAAA,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,cAAYC,eAAAA,SAAS,kBAAkB,OAAO,cAAc;GAC5D,iBAAe;GACf,UAAU,aAAa,IAAI;GAE1BA,UAAAA,eAAAA,SAAS,MAAM,cAAc;EACjB,GAlBR,IAkBQ;CAEnB,CAAC;CAED,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,cAAAA,KAAD;EACE,GAAI,UAAU,YAAY;EAC1B,MAAK;EACL,cAAYD,eAAAA,SAAS,mBAAmB,cAAc;EACtD,GAAI;EAEH,UAAA;CACE,CAAA;AAET,CAAC;AAED,WAAW,cAAc;AACzB,WAAW,UAAUE,0BAAAA"}
|
|
@@ -9,6 +9,7 @@ const require_get_week_days = require("../../utils/get-week-days/get-week-days.c
|
|
|
9
9
|
const require_next_week = require("../../utils/next-week/next-week.cjs");
|
|
10
10
|
const require_previous_week = require("../../utils/previous-week/previous-week.cjs");
|
|
11
11
|
const require_is_all_day_event = require("../../utils/is-all-day-event/is-all-day-event.cjs");
|
|
12
|
+
const require_get_day_position = require("../../utils/get-day-position/get-day-position.cjs");
|
|
12
13
|
const require_get_time_axis_event_style = require("../../utils/get-time-axis-event-style/get-time-axis-event-style.cjs");
|
|
13
14
|
const require_calculate_drop_time = require("../../utils/calculate-drop-time/calculate-drop-time.cjs");
|
|
14
15
|
const require_get_business_hours_mod = require("../../utils/get-business-hours-mod/get-business-hours-mod.cjs");
|
|
@@ -21,6 +22,7 @@ const require_AgendaView = require("../AgendaView/AgendaView.cjs");
|
|
|
21
22
|
const require_CurrentTimeIndicator = require("../CurrentTimeIndicator/CurrentTimeIndicator.cjs");
|
|
22
23
|
const require_DragContext = require("../DragContext/DragContext.cjs");
|
|
23
24
|
const require_ScheduleEvent = require("../ScheduleEvent/ScheduleEvent.cjs");
|
|
25
|
+
const require_ScheduleBackgroundEvent = require("../ScheduleBackgroundEvent/ScheduleBackgroundEvent.cjs");
|
|
24
26
|
const require_ScheduleHeaderBase = require("../ScheduleHeader/ScheduleHeaderBase.cjs");
|
|
25
27
|
const require_get_week_label = require("./get-week-label/get-week-label.cjs");
|
|
26
28
|
const require_get_week_view_events = require("./get-week-view-events/get-week-view-events.cjs");
|
|
@@ -55,7 +57,8 @@ const defaultProps = {
|
|
|
55
57
|
withEventsDragAndDrop: false,
|
|
56
58
|
withDragSlotSelect: false,
|
|
57
59
|
withEventResize: false,
|
|
58
|
-
mode: "default"
|
|
60
|
+
mode: "default",
|
|
61
|
+
withInteractiveBackgroundEvents: false
|
|
59
62
|
};
|
|
60
63
|
const varsResolver = (0, _mantine_core.createVarsResolver)((_theme, { radius, allDaySlotHeight, slotHeight }) => ({ weekView: {
|
|
61
64
|
"--week-view-radius": radius !== void 0 ? (0, _mantine_core.getRadius)(radius) : void 0,
|
|
@@ -64,7 +67,7 @@ const varsResolver = (0, _mantine_core.createVarsResolver)((_theme, { radius, al
|
|
|
64
67
|
} }));
|
|
65
68
|
const WeekView = (0, _mantine_core.factory)((_props) => {
|
|
66
69
|
const props = (0, _mantine_core.useProps)("WeekView", defaultProps, _props);
|
|
67
|
-
const { classNames, className, style, styles, unstyled, attributes, vars, startTime, endTime, date, onDateChange, intervalMinutes, withSubHourGridLines, slotLabelFormat, withWeekendDays, weekendDays, firstDayOfWeek, weekdayFormat, radius, highlightToday, withCurrentTimeIndicator, forceCurrentTimeIndicator, getCurrentTime, scrollAreaProps, locale, withWeekNumber, withCurrentTimeBubble, withAllDaySlots, __staticSelector, withHeader, onViewChange, previousControlProps, nextControlProps, todayControlProps, viewSelectProps, weekLabelFormat, events, allDaySlotHeight, slotHeight, labels, highlightBusinessHours, businessHours, renderEventBody, renderEvent, withEventsDragAndDrop, onEventDrop, canDragEvent, onEventDragStart, onEventDragEnd, onTimeSlotClick, onAllDaySlotClick, onEventClick, withDragSlotSelect, onSlotDragEnd, mode, startScrollTime, renderWeekLabel, onExternalEventDrop, withEventResize, onEventResize, canResizeEvent, recurrenceExpansionLimit, getTimeSlotProps, withAgenda, ...others } = props;
|
|
70
|
+
const { classNames, className, style, styles, unstyled, attributes, vars, startTime, endTime, date, onDateChange, intervalMinutes, withSubHourGridLines, slotLabelFormat, withWeekendDays, weekendDays, firstDayOfWeek, weekdayFormat, radius, highlightToday, withCurrentTimeIndicator, forceCurrentTimeIndicator, getCurrentTime, scrollAreaProps, locale, withWeekNumber, withCurrentTimeBubble, withAllDaySlots, __staticSelector, withHeader, onViewChange, previousControlProps, nextControlProps, todayControlProps, viewSelectProps, weekLabelFormat, events, allDaySlotHeight, slotHeight, labels, highlightBusinessHours, businessHours, renderEventBody, renderEvent, withEventsDragAndDrop, onEventDrop, canDragEvent, eventDragInterval, onEventDragStart, onEventDragEnd, onTimeSlotClick, onAllDaySlotClick, onEventClick, withInteractiveBackgroundEvents, withDragSlotSelect, onSlotDragEnd, mode, startScrollTime, renderWeekLabel, onExternalEventDrop, withEventResize, onEventResize, canResizeEvent, eventResizeInterval, recurrenceExpansionLimit, getTimeSlotProps, withAgenda, ...others } = props;
|
|
68
71
|
const [agendaOpen, setAgendaOpen] = (0, react.useState)(false);
|
|
69
72
|
const getStyles = (0, _mantine_core.useStyles)({
|
|
70
73
|
name: __staticSelector,
|
|
@@ -92,7 +95,6 @@ const WeekView = (0, _mantine_core.factory)((_props) => {
|
|
|
92
95
|
__staticSelector,
|
|
93
96
|
radius
|
|
94
97
|
};
|
|
95
|
-
const theme = (0, _mantine_core.useMantineTheme)();
|
|
96
98
|
const [scrolled, setScrolled] = (0, react.useState)(false);
|
|
97
99
|
const ctx = (0, _mantine_dates.useDatesContext)();
|
|
98
100
|
const slots = require_get_day_time_intervals.getDayTimeIntervals({
|
|
@@ -105,11 +107,56 @@ const WeekView = (0, _mantine_core.factory)((_props) => {
|
|
|
105
107
|
viewportRef,
|
|
106
108
|
enabled: (withEventsDragAndDrop || !!onExternalEventDrop) && mode !== "static"
|
|
107
109
|
});
|
|
110
|
+
const dragOffsetRef = (0, react.useRef)({
|
|
111
|
+
offset: 0,
|
|
112
|
+
size: 0
|
|
113
|
+
});
|
|
114
|
+
const getDropTimeForSlot = (target, draggedEvent) => {
|
|
115
|
+
const slotTime = slots[target.slotIndex].startTime;
|
|
116
|
+
return require_calculate_drop_time.calculateDropTime({
|
|
117
|
+
draggedEvent,
|
|
118
|
+
targetDate: target.day,
|
|
119
|
+
targetSlotTime: slotTime,
|
|
120
|
+
intervalMinutes,
|
|
121
|
+
dragIntervalMinutes: eventDragInterval,
|
|
122
|
+
slotOffset: eventDragInterval == null ? void 0 : dragOffsetRef.current.offset,
|
|
123
|
+
slotSize: eventDragInterval == null ? void 0 : dragOffsetRef.current.size,
|
|
124
|
+
startTime,
|
|
125
|
+
endTime
|
|
126
|
+
});
|
|
127
|
+
};
|
|
108
128
|
const handleExternalDrop = (0, react.useCallback)((e, target) => {
|
|
109
129
|
if (!onExternalEventDrop) return;
|
|
110
130
|
const slotDate = (0, dayjs.default)(target.day).format("YYYY-MM-DD");
|
|
111
|
-
|
|
112
|
-
|
|
131
|
+
const slotTime = slots[target.slotIndex].startTime;
|
|
132
|
+
if (eventDragInterval == null) {
|
|
133
|
+
onExternalEventDrop(e.dataTransfer, `${slotDate} ${slotTime}`);
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
const slotStart = `${slotDate} ${slotTime}`;
|
|
137
|
+
const { start } = require_calculate_drop_time.calculateDropTime({
|
|
138
|
+
draggedEvent: {
|
|
139
|
+
start: slotStart,
|
|
140
|
+
end: slotStart
|
|
141
|
+
},
|
|
142
|
+
targetDate: target.day,
|
|
143
|
+
targetSlotTime: slotTime,
|
|
144
|
+
intervalMinutes,
|
|
145
|
+
dragIntervalMinutes: eventDragInterval,
|
|
146
|
+
slotOffset: dragOffsetRef.current.offset,
|
|
147
|
+
slotSize: dragOffsetRef.current.size,
|
|
148
|
+
startTime,
|
|
149
|
+
endTime
|
|
150
|
+
});
|
|
151
|
+
onExternalEventDrop(e.dataTransfer, (0, dayjs.default)(start).format("YYYY-MM-DD HH:mm:ss"));
|
|
152
|
+
}, [
|
|
153
|
+
onExternalEventDrop,
|
|
154
|
+
slots,
|
|
155
|
+
eventDragInterval,
|
|
156
|
+
intervalMinutes,
|
|
157
|
+
startTime,
|
|
158
|
+
endTime
|
|
159
|
+
]);
|
|
113
160
|
const handleExternalAllDayDrop = (0, react.useCallback)((e, day) => {
|
|
114
161
|
if (!onExternalEventDrop) return;
|
|
115
162
|
onExternalEventDrop(e.dataTransfer, `${(0, dayjs.default)(day).format("YYYY-MM-DD")} 00:00:00`);
|
|
@@ -121,17 +168,21 @@ const WeekView = (0, _mantine_core.factory)((_props) => {
|
|
|
121
168
|
canDragEvent,
|
|
122
169
|
onEventDragStart,
|
|
123
170
|
onEventDragEnd,
|
|
124
|
-
calculateDropTarget:
|
|
125
|
-
const slotTime = slots[target.slotIndex].startTime;
|
|
126
|
-
return require_calculate_drop_time.calculateDropTime({
|
|
127
|
-
draggedEvent,
|
|
128
|
-
targetDate: target.day,
|
|
129
|
-
targetSlotTime: slotTime,
|
|
130
|
-
intervalMinutes
|
|
131
|
-
});
|
|
132
|
-
},
|
|
171
|
+
calculateDropTarget: getDropTimeForSlot,
|
|
133
172
|
onExternalDrop: onExternalEventDrop ? handleExternalDrop : void 0
|
|
134
173
|
});
|
|
174
|
+
const updateDragPreview = (target) => {
|
|
175
|
+
const draggedEvent = dragDrop.dragContextValue.draggedEvent;
|
|
176
|
+
if (eventDragInterval == null || !draggedEvent) return;
|
|
177
|
+
const { start, end } = getDropTimeForSlot(target, draggedEvent);
|
|
178
|
+
const newStart = (0, dayjs.default)(start).format("YYYY-MM-DD HH:mm:ss");
|
|
179
|
+
if (dragDrop.dragPreview?.start !== newStart || dragDrop.dragPreview?.target.day !== target.day) dragDrop.setDragPreview({
|
|
180
|
+
start: newStart,
|
|
181
|
+
end: (0, dayjs.default)(end).format("YYYY-MM-DD HH:mm:ss"),
|
|
182
|
+
target
|
|
183
|
+
});
|
|
184
|
+
};
|
|
185
|
+
const suppressDropHighlight = eventDragInterval != null && dragDrop.dragContextValue.isDragging;
|
|
135
186
|
const allDayDragDrop = require_use_drag_drop_handlers.useDragDropHandlers({
|
|
136
187
|
enabled: withEventsDragAndDrop,
|
|
137
188
|
mode,
|
|
@@ -163,6 +214,7 @@ const WeekView = (0, _mantine_core.factory)((_props) => {
|
|
|
163
214
|
startTime,
|
|
164
215
|
endTime,
|
|
165
216
|
intervalMinutes,
|
|
217
|
+
resizeIntervalMinutes: eventResizeInterval,
|
|
166
218
|
onEventResize,
|
|
167
219
|
canResizeEvent
|
|
168
220
|
});
|
|
@@ -185,14 +237,15 @@ const WeekView = (0, _mantine_core.factory)((_props) => {
|
|
|
185
237
|
weekendDays: ctx.getWeekendDays(weekendDays),
|
|
186
238
|
firstDayOfWeek: ctx.getFirstDayOfWeek(firstDayOfWeek)
|
|
187
239
|
});
|
|
240
|
+
const expandedEvents = require_expand_recurring_events.expandRecurringEvents({
|
|
241
|
+
events,
|
|
242
|
+
rangeStart: (0, dayjs.default)(weekdays[0]).startOf("day").toDate(),
|
|
243
|
+
rangeEnd: (0, dayjs.default)(weekdays[weekdays.length - 1]).endOf("day").toDate(),
|
|
244
|
+
expansionLimit: recurrenceExpansionLimit
|
|
245
|
+
});
|
|
188
246
|
const weekEvents = require_get_week_view_events.getWeekViewEvents({
|
|
189
247
|
date,
|
|
190
|
-
events:
|
|
191
|
-
events,
|
|
192
|
-
rangeStart: (0, dayjs.default)(weekdays[0]).startOf("day").toDate(),
|
|
193
|
-
rangeEnd: (0, dayjs.default)(weekdays[weekdays.length - 1]).endOf("day").toDate(),
|
|
194
|
-
expansionLimit: recurrenceExpansionLimit
|
|
195
|
-
}),
|
|
248
|
+
events: expandedEvents,
|
|
196
249
|
startTime,
|
|
197
250
|
endTime,
|
|
198
251
|
intervalMinutes,
|
|
@@ -202,8 +255,9 @@ const WeekView = (0, _mantine_core.factory)((_props) => {
|
|
|
202
255
|
});
|
|
203
256
|
const timeValues = slots.reduce((acc, interval) => {
|
|
204
257
|
if (!interval.isHourStart) return acc;
|
|
258
|
+
const intervalTime = (0, dayjs.default)(`${(0, dayjs.default)(date).format("YYYY-MM-DD")} ${interval.startTime}`);
|
|
205
259
|
const label = require_format_date.formatDate({
|
|
206
|
-
date:
|
|
260
|
+
date: intervalTime,
|
|
207
261
|
locale: ctx.getLocale(locale),
|
|
208
262
|
format: slotLabelFormat
|
|
209
263
|
});
|
|
@@ -252,14 +306,33 @@ const WeekView = (0, _mantine_core.factory)((_props) => {
|
|
|
252
306
|
const rect = slotNode.getBoundingClientRect();
|
|
253
307
|
return event.clientY >= rect.top && event.clientY <= rect.bottom;
|
|
254
308
|
});
|
|
255
|
-
if (slotIndex >= 0)
|
|
309
|
+
if (slotIndex >= 0) {
|
|
310
|
+
const rect = daySlots[slotIndex].getBoundingClientRect();
|
|
311
|
+
dragOffsetRef.current = {
|
|
312
|
+
offset: event.clientY - rect.top,
|
|
313
|
+
size: rect.height
|
|
314
|
+
};
|
|
315
|
+
return slotIndex;
|
|
316
|
+
}
|
|
256
317
|
const firstSlot = daySlots[0];
|
|
257
318
|
const lastSlot = daySlots[daySlots.length - 1];
|
|
258
319
|
if (!firstSlot || !lastSlot) return null;
|
|
259
320
|
const firstRect = firstSlot.getBoundingClientRect();
|
|
260
321
|
const lastRect = lastSlot.getBoundingClientRect();
|
|
261
|
-
if (event.clientY < firstRect.top)
|
|
262
|
-
|
|
322
|
+
if (event.clientY < firstRect.top) {
|
|
323
|
+
dragOffsetRef.current = {
|
|
324
|
+
offset: 0,
|
|
325
|
+
size: firstRect.height
|
|
326
|
+
};
|
|
327
|
+
return 0;
|
|
328
|
+
}
|
|
329
|
+
if (event.clientY > lastRect.bottom) {
|
|
330
|
+
dragOffsetRef.current = {
|
|
331
|
+
offset: lastRect.height,
|
|
332
|
+
size: lastRect.height
|
|
333
|
+
};
|
|
334
|
+
return daySlots.length - 1;
|
|
335
|
+
}
|
|
263
336
|
return null;
|
|
264
337
|
}, []);
|
|
265
338
|
const handleSlotKeyDown = (event, dayIndex, slotIndex) => {
|
|
@@ -325,32 +398,20 @@ const WeekView = (0, _mantine_core.factory)((_props) => {
|
|
|
325
398
|
...getStyles("weekViewDayNumber"),
|
|
326
399
|
key: "date"
|
|
327
400
|
}, (0, dayjs.default)(day).date())));
|
|
401
|
+
const interactiveBackgroundEvents = withInteractiveBackgroundEvents && mode !== "static";
|
|
328
402
|
const days = weekdays.map((day, dayIndex) => {
|
|
329
|
-
const backgroundEventNodes = (weekEvents.backgroundEvents[day] || []).filter((event) => !event.position.allDay).map((event) => {
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
height: `${event.position.height}%`,
|
|
342
|
-
width: "100%"
|
|
343
|
-
} }),
|
|
344
|
-
__vars: {
|
|
345
|
-
"--bg-event-bg": colors.background,
|
|
346
|
-
"--bg-event-color": colors.color
|
|
347
|
-
},
|
|
348
|
-
children: bgEventBody
|
|
349
|
-
};
|
|
350
|
-
if (typeof renderEvent === "function") return renderEvent(event, bgEventProps);
|
|
351
|
-
const { key: bgEventKey, ...restBgEventProps } = bgEventProps;
|
|
352
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mantine_core.Box, { ...restBgEventProps }, bgEventKey);
|
|
353
|
-
});
|
|
403
|
+
const backgroundEventNodes = (weekEvents.backgroundEvents[day] || []).filter((event) => !event.position.allDay).map((event) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ScheduleBackgroundEvent.ScheduleBackgroundEvent, {
|
|
404
|
+
event,
|
|
405
|
+
renderEvent,
|
|
406
|
+
renderEventBody,
|
|
407
|
+
interactive: interactiveBackgroundEvents,
|
|
408
|
+
onEventClick,
|
|
409
|
+
...getStyles("weekViewBackgroundEvent", { style: {
|
|
410
|
+
top: `${event.position.top}%`,
|
|
411
|
+
height: `${event.position.height}%`,
|
|
412
|
+
width: "100%"
|
|
413
|
+
} })
|
|
414
|
+
}, `bg-${event.id}`));
|
|
354
415
|
const dayEvents = (weekEvents.regularEvents[day] || []).map((event) => {
|
|
355
416
|
const eventIsAllDay = require_is_all_day_event.isAllDayEvent({
|
|
356
417
|
event,
|
|
@@ -420,10 +481,16 @@ const WeekView = (0, _mantine_core.factory)((_props) => {
|
|
|
420
481
|
} : void 0,
|
|
421
482
|
onDaySlotsDragOver: (event, dayStr, dayIdx) => {
|
|
422
483
|
const slotIndex = getSlotIndexFromDragPoint(event, dayIdx);
|
|
423
|
-
if (slotIndex !== null)
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
484
|
+
if (slotIndex !== null) {
|
|
485
|
+
dragDrop.handleDragOver(event, {
|
|
486
|
+
day: dayStr,
|
|
487
|
+
slotIndex
|
|
488
|
+
});
|
|
489
|
+
updateDragPreview({
|
|
490
|
+
day: dayStr,
|
|
491
|
+
slotIndex
|
|
492
|
+
});
|
|
493
|
+
}
|
|
427
494
|
},
|
|
428
495
|
onDaySlotsDragLeave: dragDrop.handleDragLeave,
|
|
429
496
|
onDaySlotsDrop: (event, dayStr, dayIdx) => {
|
|
@@ -433,7 +500,7 @@ const WeekView = (0, _mantine_core.factory)((_props) => {
|
|
|
433
500
|
slotIndex
|
|
434
501
|
});
|
|
435
502
|
},
|
|
436
|
-
dropTargetSlotIndex: dragDrop.dropTarget?.day === day ? dragDrop.dropTarget.slotIndex : void 0,
|
|
503
|
+
dropTargetSlotIndex: !suppressDropHighlight && dragDrop.dropTarget?.day === day ? dragDrop.dropTarget.slotIndex : void 0,
|
|
437
504
|
withDragSlotSelect,
|
|
438
505
|
onSlotPointerDown: slotDragSelect.handleSlotPointerDown,
|
|
439
506
|
isSlotDragSelected: slotDragSelect.isSlotSelected,
|
|
@@ -441,7 +508,29 @@ const WeekView = (0, _mantine_core.factory)((_props) => {
|
|
|
441
508
|
daySlotsContainersRef.current[dayIndex] = node;
|
|
442
509
|
},
|
|
443
510
|
getTimeSlotProps,
|
|
444
|
-
children: [
|
|
511
|
+
children: [
|
|
512
|
+
backgroundEventNodes,
|
|
513
|
+
dayEvents,
|
|
514
|
+
dragDrop.dragPreview?.target.day === day && dragDrop.dragContextValue.draggedEvent && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mantine_core.Box, { ...getStyles("weekViewDragPreview", { style: (() => {
|
|
515
|
+
const { top, height } = require_get_day_position.getDayPosition({
|
|
516
|
+
event: {
|
|
517
|
+
...dragDrop.dragContextValue.draggedEvent,
|
|
518
|
+
start: dragDrop.dragPreview.start,
|
|
519
|
+
end: dragDrop.dragPreview.end
|
|
520
|
+
},
|
|
521
|
+
startTime,
|
|
522
|
+
endTime,
|
|
523
|
+
intervalMinutes
|
|
524
|
+
});
|
|
525
|
+
return {
|
|
526
|
+
position: "absolute",
|
|
527
|
+
insetInlineStart: 0,
|
|
528
|
+
insetInlineEnd: 0,
|
|
529
|
+
top: `${top}%`,
|
|
530
|
+
height: `${height}%`
|
|
531
|
+
};
|
|
532
|
+
})() }) })
|
|
533
|
+
]
|
|
445
534
|
}, day);
|
|
446
535
|
});
|
|
447
536
|
const allDaySlots = weekdays.map((day, dayIndex) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mantine_core.UnstyledButton, {
|
|
@@ -482,32 +571,19 @@ const WeekView = (0, _mantine_core.factory)((_props) => {
|
|
|
482
571
|
const allDayBgEvents = (weekEvents.backgroundEvents[day] || []).filter((event) => event.position.allDay);
|
|
483
572
|
const dayWidth = 100 / weekdays.length;
|
|
484
573
|
const dayOffset = dayIndex * dayWidth;
|
|
485
|
-
return allDayBgEvents.map((event) => {
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
left: `${dayOffset}%`,
|
|
499
|
-
width: `${dayWidth}%`
|
|
500
|
-
} }),
|
|
501
|
-
__vars: {
|
|
502
|
-
"--bg-event-bg": colors.background,
|
|
503
|
-
"--bg-event-color": colors.color
|
|
504
|
-
},
|
|
505
|
-
children: bgEventBody
|
|
506
|
-
};
|
|
507
|
-
if (typeof renderEvent === "function") return renderEvent(event, bgEventProps);
|
|
508
|
-
const { key: bgEventKey, ...restBgEventProps } = bgEventProps;
|
|
509
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mantine_core.Box, { ...restBgEventProps }, bgEventKey);
|
|
510
|
-
});
|
|
574
|
+
return allDayBgEvents.map((event) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ScheduleBackgroundEvent.ScheduleBackgroundEvent, {
|
|
575
|
+
event,
|
|
576
|
+
renderEvent,
|
|
577
|
+
renderEventBody,
|
|
578
|
+
interactive: interactiveBackgroundEvents,
|
|
579
|
+
onEventClick,
|
|
580
|
+
...getStyles("weekViewBackgroundEvent", { style: {
|
|
581
|
+
top: 0,
|
|
582
|
+
height: "100%",
|
|
583
|
+
left: `${dayOffset}%`,
|
|
584
|
+
width: `${dayWidth}%`
|
|
585
|
+
} })
|
|
586
|
+
}, `bg-allday-${event.id}-${day}`));
|
|
511
587
|
});
|
|
512
588
|
const extraRows = Math.max(...weekEvents.allDayEvents.map((event) => event.position.row), 1) - 1;
|
|
513
589
|
const content = /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_mantine_core.Box, {
|
|
@@ -565,7 +641,8 @@ const WeekView = (0, _mantine_core.factory)((_props) => {
|
|
|
565
641
|
mod: {
|
|
566
642
|
"with-weekends": withWeekendDays,
|
|
567
643
|
"hide-sub-hour-grid-lines": !withSubHourGridLines,
|
|
568
|
-
"event-interaction": eventResize.isResizing || dragDrop.dragContextValue.isDragging
|
|
644
|
+
"event-interaction": eventResize.isResizing || dragDrop.dragContextValue.isDragging,
|
|
645
|
+
"all-day-dragging": allDayDragDrop.dragContextValue.isDragging
|
|
569
646
|
},
|
|
570
647
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_mantine_core.ScrollArea.Autosize, {
|
|
571
648
|
scrollbarSize: 4,
|