@mantine-vue/schedule 2.3.1 → 2.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/index.cjs CHANGED
@@ -171,11 +171,18 @@ function getMonthsByQuarter(year) {
171
171
  }
172
172
  //#endregion
173
173
  //#region src/utils/clamp-interval-minutes/clamp-interval-minutes.ts
174
- /** Clamp interval minutes to valid values (1-60) and ensure it divides evenly into 60 */
174
+ /**
175
+ * Clamps interval minutes to a value that keeps the time grid consistent:
176
+ *
177
+ * - Values of 60 or less must divide evenly into an hour.
178
+ * - Values above an hour must be a whole number of hours.
179
+ *
180
+ * Invalid values fall back to 60 and the result is capped to one day.
181
+ */
175
182
  function clampIntervalMinutes(intervalMinutes) {
176
- let clamped = Math.round(Math.max(1, Math.min(60, intervalMinutes)));
177
- clamped = 60 % clamped === 0 ? clamped : 60;
178
- return clamped;
183
+ const rounded = Math.round(Math.max(1, Math.min(1440, intervalMinutes)));
184
+ if (rounded <= 60) return 60 % rounded === 0 ? rounded : 60;
185
+ return rounded % 60 === 0 ? rounded : 60;
179
186
  }
180
187
  //#endregion
181
188
  //#region src/utils/parse-time-string/parse-time-string.ts
@@ -939,9 +946,9 @@ var CurrentTimeIndicator = (0, vue.defineComponent)({
939
946
  }
940
947
  });
941
948
  var ScheduleEvent_module_default = {
942
- event: "_event_bnqc2_1",
943
- eventInner: "_eventInner_bnqc2_14",
944
- eventResizeHandle: "_eventResizeHandle_bnqc2_177"
949
+ event: "_event_19lsr_1",
950
+ eventInner: "_eventInner_19lsr_14",
951
+ eventResizeHandle: "_eventResizeHandle_19lsr_186"
945
952
  };
946
953
  //#endregion
947
954
  //#region src/components/ScheduleEvent/ScheduleEvent.ts
@@ -1725,6 +1732,7 @@ var ScheduleHeader = Object.assign(ScheduleHeaderBaseComponent, {
1725
1732
  //#region src/components/ScheduleHeader/ScheduleHeaderBase.ts
1726
1733
  var ScheduleHeaderBase = (0, vue.defineComponent)({
1727
1734
  name: "ScheduleHeaderBase",
1735
+ slots: Object,
1728
1736
  props: {
1729
1737
  view: {
1730
1738
  type: String,
@@ -1746,7 +1754,7 @@ var ScheduleHeaderBase = (0, vue.defineComponent)({
1746
1754
  todayControlProps: Object,
1747
1755
  viewSelectProps: Object
1748
1756
  },
1749
- setup(props) {
1757
+ setup(props, { slots }) {
1750
1758
  return () => {
1751
1759
  const views = props.viewSelectProps?.views || [
1752
1760
  "day",
@@ -1763,7 +1771,7 @@ var ScheduleHeaderBase = (0, vue.defineComponent)({
1763
1771
  props.control.monthYearSelect ? (0, vue.h)(ScheduleHeader.MonthYearSelect, {
1764
1772
  ...props.control.monthYearSelect,
1765
1773
  labels: props.labels
1766
- }) : (0, vue.h)(ScheduleHeader.Control, { interactive: false }, () => props.control.title),
1774
+ }) : (0, vue.h)(ScheduleHeader.Control, { interactive: false }, () => props.control.title !== void 0 ? props.control.title : slots.title?.()),
1767
1775
  (0, vue.h)(ScheduleHeader.Next, {
1768
1776
  ...props.nextControlProps,
1769
1777
  onClick: () => props.onDateChange?.(props.navigationHandlers.next())
@@ -2197,7 +2205,8 @@ var DayView = (0, vue.defineComponent)({
2197
2205
  class: DayView_module_default.dayViewBackgroundEvent,
2198
2206
  style: {
2199
2207
  top: `${event.position.top}%`,
2200
- height: `${event.position.height}%`
2208
+ bottom: `${100 - event.position.top - event.position.height}%`,
2209
+ minHeight: "1px"
2201
2210
  }
2202
2211
  })),
2203
2212
  ...regularEvents.map((event) => {
@@ -2209,7 +2218,8 @@ var DayView = (0, vue.defineComponent)({
2209
2218
  style: {
2210
2219
  position: "absolute",
2211
2220
  top: `${resizePosition?.top ?? event.position.top}%`,
2212
- height: `${resizePosition?.height ?? event.position.height}%`,
2221
+ bottom: `${100 - (resizePosition?.top ?? event.position.top) - (resizePosition?.height ?? event.position.height)}%`,
2222
+ minHeight: "1px",
2213
2223
  width: `${event.position.width}%`,
2214
2224
  insetInlineStart: `${event.position.offset}%`
2215
2225
  },
@@ -3794,7 +3804,8 @@ var WeekView = (0, vue.defineComponent)({
3794
3804
  class: WeekView_module_default.weekViewBackgroundEvent,
3795
3805
  style: {
3796
3806
  top: `${event.position.top}%`,
3797
- height: `${event.position.height}%`,
3807
+ bottom: `${100 - event.position.top - event.position.height}%`,
3808
+ minHeight: "1px",
3798
3809
  width: "100%"
3799
3810
  }
3800
3811
  })),
@@ -3807,7 +3818,8 @@ var WeekView = (0, vue.defineComponent)({
3807
3818
  style: {
3808
3819
  position: "absolute",
3809
3820
  top: `${resizePosition?.top ?? event.position.top}%`,
3810
- height: `${resizePosition?.height ?? event.position.height}%`,
3821
+ bottom: `${100 - (resizePosition?.top ?? event.position.top) - (resizePosition?.height ?? event.position.height)}%`,
3822
+ minHeight: "1px",
3811
3823
  width: `${event.position.width}%`,
3812
3824
  insetInlineStart: `${event.position.offset}%`
3813
3825
  },
@@ -4693,7 +4705,8 @@ var ResourcesDayView = (0, vue.defineComponent)({
4693
4705
  class: ResourcesDayView_module_default.resourcesDayViewBackgroundEvent,
4694
4706
  style: {
4695
4707
  left: `${event.position.top}%`,
4696
- width: `${event.position.height}%`,
4708
+ right: `${100 - event.position.top - event.position.height}%`,
4709
+ minWidth: "1px",
4697
4710
  top: 0,
4698
4711
  height: "100%",
4699
4712
  "--bg-event-bg": colors.background,
@@ -5412,7 +5425,8 @@ var ResourcesWeekView = (0, vue.defineComponent)({
5412
5425
  class: ResourcesWeekView_module_default.resourcesWeekViewBackgroundEvent,
5413
5426
  style: {
5414
5427
  left: `${dayOffset + event.position.top / 100 * dayWidth}%`,
5415
- width: `${event.position.height / 100 * dayWidth}%`,
5428
+ right: `${100 - dayOffset - (event.position.top + event.position.height) / 100 * dayWidth}%`,
5429
+ minWidth: "1px",
5416
5430
  top: 0,
5417
5431
  height: "100%",
5418
5432
  "--bg-event-bg": colors.background,