@mantine-vue/schedule 3.4.0 → 3.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/index.cjs +1146 -262
- package/cjs/index.cjs.map +1 -1
- package/esm/index.mjs +1145 -263
- package/esm/index.mjs.map +1 -1
- package/lib/component-props.d.ts +13 -2
- package/lib/components/DayView/DayView.types.d.ts +7 -3
- package/lib/components/DayView/DayView.vue.d.ts +2 -0
- package/lib/components/DayView/get-day-view-events/get-day-positioned-events.d.ts +4 -2
- package/lib/components/DayView/get-day-view-events/get-day-view-events.d.ts +3 -2
- package/lib/components/MonthView/MonthView.types.d.ts +9 -1
- package/lib/components/MonthView/MonthView.vue.d.ts +2 -0
- package/lib/components/MonthView/get-month-view-events/reserve-row.d.ts +7 -0
- package/lib/components/ResourcesDayView/ResourcesDayView.types.d.ts +10 -1
- package/lib/components/ResourcesDayView/ResourcesDayView.vue.d.ts +2 -0
- package/lib/components/ResourcesDayView/index.d.ts +0 -1
- package/lib/components/ResourcesMonthView/ResourcesMonthView.types.d.ts +10 -1
- package/lib/components/ResourcesMonthView/ResourcesMonthView.vue.d.ts +2 -0
- package/lib/components/ResourcesSchedule/ResourcesSchedule.types.d.ts +10 -1
- package/lib/components/ResourcesSchedule/ResourcesSchedule.vue.d.ts +2 -0
- package/lib/components/ResourcesWeekView/ResourcesWeekView.types.d.ts +10 -1
- package/lib/components/ResourcesWeekView/ResourcesWeekView.vue.d.ts +2 -0
- package/lib/components/Schedule/Schedule.types.d.ts +12 -2
- package/lib/components/Schedule/Schedule.vue.d.ts +2 -0
- package/lib/components/ScheduleBackgroundEvent/ScheduleBackgroundEvent.types.d.ts +12 -0
- package/lib/components/ScheduleBackgroundEvent/ScheduleBackgroundEvent.vue.d.ts +2 -0
- package/lib/components/WeekView/WeekView.types.d.ts +7 -3
- package/lib/components/WeekView/WeekView.vue.d.ts +2 -0
- package/lib/components/WeekView/get-week-view-events/get-week-positioned-events.d.ts +4 -2
- package/lib/hooks/use-event-resize.d.ts +10 -2
- package/lib/hooks/use-horizontal-event-resize.d.ts +9 -1
- package/lib/hooks/validate-event-resize.d.ts +26 -0
- package/lib/types.d.ts +40 -0
- package/lib/utils/apply-cascade-layout/apply-cascade-layout.d.ts +5 -0
- package/lib/utils/get-overlap-clusters/get-overlap-clusters.d.ts +2 -0
- package/lib/utils/index.d.ts +4 -0
- package/lib/utils/is-event-placement-allowed/is-event-placement-allowed.d.ts +13 -0
- package/package.json +4 -4
- package/styles.css +711 -379
- package/styles.layer.css +711 -379
- package/lib/components/ResourcesDayView/get-overlap-clusters/get-overlap-clusters.d.ts +0 -2
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { EventDropData } from '../component-props';
|
|
2
2
|
import type { DateTimeStringValue, ScheduleEventData, ScheduleMode } from '../types';
|
|
3
|
+
import type { PreventEventOverlap, ScheduleCanResizeEventToData, ScheduleEventPlacementRejectedData } from '../types';
|
|
3
4
|
type ResizeEdge = 'start' | 'end';
|
|
4
5
|
interface ResizeState {
|
|
5
6
|
event: ScheduleEventData;
|
|
@@ -24,8 +25,15 @@ export declare function useHorizontalEventResize(input: {
|
|
|
24
25
|
resizeIntervalMinutes?: () => number | undefined;
|
|
25
26
|
onEventResize: (data: EventDropData) => void;
|
|
26
27
|
canResizeEvent: () => ((event: ScheduleEventData) => boolean) | undefined;
|
|
28
|
+
withBackgroundEvents?: () => boolean;
|
|
29
|
+
events?: () => ScheduleEventData[];
|
|
30
|
+
preventEventOverlap?: () => PreventEventOverlap | undefined;
|
|
31
|
+
canResizeEventTo?: () => ((data: ScheduleCanResizeEventToData) => boolean) | undefined;
|
|
32
|
+
onEventPlacementRejected?: (data: ScheduleEventPlacementRejectedData) => void;
|
|
27
33
|
}): {
|
|
28
34
|
state: import("vue").ShallowRef<ResizeState | null, ResizeState | null>;
|
|
35
|
+
resizeValid: import("vue").Ref<boolean, boolean>;
|
|
36
|
+
readonly resizingEdge: ResizeEdge | null;
|
|
29
37
|
handleResizeStart: (params: {
|
|
30
38
|
event: ScheduleEventData;
|
|
31
39
|
edge: ResizeEdge;
|
|
@@ -37,7 +45,7 @@ export declare function useHorizontalEventResize(input: {
|
|
|
37
45
|
dayIndex?: number;
|
|
38
46
|
dayCount?: number;
|
|
39
47
|
}) => void;
|
|
40
|
-
getResizePosition: (id: string | number) => {
|
|
48
|
+
getResizePosition: (id: string | number, eventDate?: string) => {
|
|
41
49
|
left: number;
|
|
42
50
|
width: number;
|
|
43
51
|
} | null;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { DateTimeStringValue, PreventEventOverlap, ScheduleCanResizeEventToData, ScheduleEventData, ScheduleEventPlacementRejectedData } from '../types';
|
|
2
|
+
export interface EventResizeValidationOptions {
|
|
3
|
+
events?: ScheduleEventData[];
|
|
4
|
+
preventEventOverlap?: PreventEventOverlap;
|
|
5
|
+
canResizeEventTo?: (data: ScheduleCanResizeEventToData) => boolean;
|
|
6
|
+
onEventPlacementRejected?: (data: ScheduleEventPlacementRejectedData) => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function validateEventResize({ event, start, end, edge, events, preventEventOverlap, canResizeEventTo, resourceId, }: EventResizeValidationOptions & {
|
|
9
|
+
event: ScheduleEventData;
|
|
10
|
+
start: DateTimeStringValue;
|
|
11
|
+
end: DateTimeStringValue;
|
|
12
|
+
edge: 'start' | 'end';
|
|
13
|
+
resourceId?: string | number;
|
|
14
|
+
}): {
|
|
15
|
+
valid: boolean;
|
|
16
|
+
conflicts: ScheduleEventData[];
|
|
17
|
+
reason: "overlap";
|
|
18
|
+
} | {
|
|
19
|
+
valid: boolean;
|
|
20
|
+
conflicts: never[];
|
|
21
|
+
reason: "rejected";
|
|
22
|
+
} | {
|
|
23
|
+
valid: boolean;
|
|
24
|
+
conflicts: never[];
|
|
25
|
+
reason: null;
|
|
26
|
+
};
|
package/lib/types.d.ts
CHANGED
|
@@ -97,6 +97,8 @@ interface ScheduleEventRuntimeMeta {
|
|
|
97
97
|
}
|
|
98
98
|
/** Event data object passed to all `@mantine/schedule` components */
|
|
99
99
|
export type ScheduleEventData<Payload extends EventPayload = EventPayload> = (ScheduleSingleEventData<Payload> & ScheduleEventRuntimeMeta) | (ScheduleRecurringSeriesEventData<Payload> & ScheduleEventRuntimeMeta) | (ScheduleRecurringOverrideEventData<Payload> & ScheduleEventRuntimeMeta);
|
|
100
|
+
/** Controls how events that overlap in time are laid out along the horizontal axis. */
|
|
101
|
+
export type ScheduleEventOverlapMode = 'columns' | 'cascade';
|
|
100
102
|
export interface DayEventPositionData {
|
|
101
103
|
/** All day events */
|
|
102
104
|
allDay: boolean;
|
|
@@ -153,4 +155,42 @@ export interface DropTarget {
|
|
|
153
155
|
/** Target slot index (for DayView/WeekView) */
|
|
154
156
|
slotIndex?: number;
|
|
155
157
|
}
|
|
158
|
+
export type PreventEventOverlap = boolean | ((stillEvent: ScheduleEventData, movingEvent: ScheduleEventData) => boolean);
|
|
159
|
+
export interface ScheduleCanDropEventData {
|
|
160
|
+
event: ScheduleEventData;
|
|
161
|
+
start: DateTimeStringValue;
|
|
162
|
+
end: DateTimeStringValue;
|
|
163
|
+
resourceId?: string | number;
|
|
164
|
+
}
|
|
165
|
+
export interface ScheduleCanDropExternalEventData {
|
|
166
|
+
dataTransfer: DataTransfer;
|
|
167
|
+
start: DateTimeStringValue;
|
|
168
|
+
resourceId?: string | number;
|
|
169
|
+
}
|
|
170
|
+
export interface ScheduleCanResizeEventToData {
|
|
171
|
+
event: ScheduleEventData;
|
|
172
|
+
start: DateTimeStringValue;
|
|
173
|
+
end: DateTimeStringValue;
|
|
174
|
+
edge: 'start' | 'end';
|
|
175
|
+
}
|
|
176
|
+
interface ScheduleEventPlacementRejectedBase {
|
|
177
|
+
start: DateTimeStringValue;
|
|
178
|
+
end: DateTimeStringValue;
|
|
179
|
+
conflicts: ScheduleEventData[];
|
|
180
|
+
reason: 'overlap' | 'rejected';
|
|
181
|
+
resourceId?: string | number;
|
|
182
|
+
}
|
|
183
|
+
export type ScheduleEventPlacementRejectedData = (ScheduleEventPlacementRejectedBase & {
|
|
184
|
+
action: 'drop';
|
|
185
|
+
event: ScheduleEventData;
|
|
186
|
+
}) | (ScheduleEventPlacementRejectedBase & {
|
|
187
|
+
action: 'resize';
|
|
188
|
+
event: ScheduleEventData;
|
|
189
|
+
edge: 'start' | 'end';
|
|
190
|
+
}) | (Omit<ScheduleEventPlacementRejectedBase, 'end'> & {
|
|
191
|
+
action: 'external-drop';
|
|
192
|
+
dataTransfer: DataTransfer;
|
|
193
|
+
reason: 'rejected';
|
|
194
|
+
conflicts: [];
|
|
195
|
+
});
|
|
156
196
|
export {};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { DayEventPositionData, ScheduleEventData } from '../../types';
|
|
2
|
+
export type CascadePositionedEvent = ScheduleEventData & {
|
|
3
|
+
position: Pick<DayEventPositionData, 'allDay' | 'column' | 'width' | 'offset' | 'overlaps'>;
|
|
4
|
+
};
|
|
5
|
+
export declare function applyCascadeLayout<T extends CascadePositionedEvent>(events: T[]): void;
|
package/lib/utils/index.d.ts
CHANGED
|
@@ -22,6 +22,8 @@ export { isAllDayEvent } from './is-all-day-event/is-all-day-event';
|
|
|
22
22
|
export { validateEvent } from './validate-event/validate-event';
|
|
23
23
|
export { sortEvents } from './sort-events/sort-events';
|
|
24
24
|
export { isEventsOverlap } from './is-events-overlap/is-events-overlap';
|
|
25
|
+
export { isEventPlacementAllowed } from './is-event-placement-allowed/is-event-placement-allowed';
|
|
26
|
+
export type { IsEventPlacementAllowedInput } from './is-event-placement-allowed/is-event-placement-allowed';
|
|
25
27
|
export { getVisibleEvents } from './get-visible-events/get-visible-events';
|
|
26
28
|
export { isMultidayEvent } from './is-multiday-event/is-multiday-event';
|
|
27
29
|
export { isEventInTimeRange } from './is-event-in-time-range/is-event-in-time-range';
|
|
@@ -34,6 +36,8 @@ export { calculateDropTime } from './calculate-drop-time/calculate-drop-time';
|
|
|
34
36
|
export { calculateMonthDropDate } from './calculate-month-drop-date/calculate-month-drop-date';
|
|
35
37
|
export { getBusinessHoursMod } from './get-business-hours-mod/get-business-hours-mod';
|
|
36
38
|
export { expandRecurringEvents } from './expand-recurring-events/expand-recurring-events';
|
|
39
|
+
export { applyCascadeLayout } from './apply-cascade-layout/apply-cascade-layout';
|
|
40
|
+
export { getOverlapClusters } from './get-overlap-clusters/get-overlap-clusters';
|
|
37
41
|
export type { DayTimeInterval } from './get-day-time-intervals/get-day-time-intervals';
|
|
38
42
|
export type { ParsedTime } from './parse-time-string/parse-time-string';
|
|
39
43
|
export type { CalculateDropTimeInput, CalculateDropTimeResult, } from './calculate-drop-time/calculate-drop-time';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { DateTimeStringValue, PreventEventOverlap, ScheduleEventData } from '../../types';
|
|
2
|
+
export interface IsEventPlacementAllowedInput {
|
|
3
|
+
event: ScheduleEventData;
|
|
4
|
+
start: DateTimeStringValue;
|
|
5
|
+
end: DateTimeStringValue;
|
|
6
|
+
events: ScheduleEventData[];
|
|
7
|
+
preventEventOverlap?: PreventEventOverlap;
|
|
8
|
+
resourceId?: string | number;
|
|
9
|
+
}
|
|
10
|
+
export declare function isEventPlacementAllowed({ event, start, end, events, preventEventOverlap, resourceId, }: IsEventPlacementAllowedInput): {
|
|
11
|
+
allowed: boolean;
|
|
12
|
+
conflicts: ScheduleEventData[];
|
|
13
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mantine-vue/schedule",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.6.0",
|
|
4
4
|
"description": "Vue schedule and calendar components equivalent to @mantine/schedule",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"files": [
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
"vue": "^3.5.0"
|
|
45
45
|
},
|
|
46
46
|
"peerDependencies": {
|
|
47
|
-
"@mantine-vue/core": "3.
|
|
48
|
-
"@mantine-vue/dates": "3.
|
|
49
|
-
"@mantine-vue/hooks": "3.
|
|
47
|
+
"@mantine-vue/core": "3.6.0",
|
|
48
|
+
"@mantine-vue/dates": "3.6.0",
|
|
49
|
+
"@mantine-vue/hooks": "3.6.0",
|
|
50
50
|
"dayjs": ">=1.0.0",
|
|
51
51
|
"vue": "^3.5.0"
|
|
52
52
|
}
|