@mantine/schedule 9.5.0 → 9.5.1-alpha.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/ResourcesMonthView/ResourcesMonthView.cjs +105 -35
- package/cjs/components/ResourcesMonthView/ResourcesMonthView.cjs.map +1 -1
- package/cjs/components/ResourcesMonthView/ResourcesMonthView.module.cjs +3 -1
- package/cjs/components/ResourcesMonthView/ResourcesMonthView.module.cjs.map +1 -1
- package/cjs/components/ResourcesSchedule/ResourcesSchedule.cjs +3 -0
- package/cjs/components/ResourcesSchedule/ResourcesSchedule.cjs.map +1 -1
- package/cjs/components/YearView/YearView.cjs +23 -4
- package/cjs/components/YearView/YearView.cjs.map +1 -1
- package/cjs/components/YearView/YearView.module.cjs.map +1 -1
- package/cjs/components/YearView/YearViewMonth.cjs +18 -6
- package/cjs/components/YearView/YearViewMonth.cjs.map +1 -1
- package/cjs/components/YearView/get-visible-week-days.cjs +24 -0
- package/cjs/components/YearView/get-visible-week-days.cjs.map +1 -0
- package/cjs/hooks/use-day-grid-event-resize.cjs +119 -0
- package/cjs/hooks/use-day-grid-event-resize.cjs.map +1 -0
- package/cjs/utils/calculate-month-resize-dates/calculate-month-resize-dates.cjs +39 -0
- package/cjs/utils/calculate-month-resize-dates/calculate-month-resize-dates.cjs.map +1 -0
- package/esm/components/ResourcesMonthView/ResourcesMonthView.mjs +106 -36
- package/esm/components/ResourcesMonthView/ResourcesMonthView.mjs.map +1 -1
- package/esm/components/ResourcesMonthView/ResourcesMonthView.module.mjs +3 -1
- package/esm/components/ResourcesMonthView/ResourcesMonthView.module.mjs.map +1 -1
- package/esm/components/ResourcesSchedule/ResourcesSchedule.mjs +3 -0
- package/esm/components/ResourcesSchedule/ResourcesSchedule.mjs.map +1 -1
- package/esm/components/YearView/YearView.mjs +23 -4
- package/esm/components/YearView/YearView.mjs.map +1 -1
- package/esm/components/YearView/YearView.module.mjs.map +1 -1
- package/esm/components/YearView/YearViewMonth.mjs +18 -6
- package/esm/components/YearView/YearViewMonth.mjs.map +1 -1
- package/esm/components/YearView/get-visible-week-days.mjs +21 -0
- package/esm/components/YearView/get-visible-week-days.mjs.map +1 -0
- package/esm/hooks/use-day-grid-event-resize.mjs +117 -0
- package/esm/hooks/use-day-grid-event-resize.mjs.map +1 -0
- package/esm/utils/calculate-month-resize-dates/calculate-month-resize-dates.mjs +37 -0
- package/esm/utils/calculate-month-resize-dates/calculate-month-resize-dates.mjs.map +1 -0
- package/lib/components/ResourcesMonthView/ResourcesMonthView.d.ts +12 -1
- package/lib/components/ResourcesSchedule/ResourcesSchedule.d.ts +1 -1
- package/lib/components/YearView/YearViewMonth.d.ts +3 -1
- package/lib/components/YearView/get-visible-week-days.d.ts +19 -0
- package/lib/hooks/use-day-grid-event-resize.d.ts +35 -0
- package/lib/utils/calculate-month-resize-dates/calculate-month-resize-dates.d.ts +17 -0
- package/package.json +4 -4
- package/styles.css +63 -2
- package/styles.layer.css +63 -2
|
@@ -23,6 +23,8 @@ export interface YearViewMonthSettings {
|
|
|
23
23
|
weekdayFormat?: DateLabelFormat;
|
|
24
24
|
/** Indices of weekend days, 0-6, where 0 is Sunday and 6 is Saturday. The default value is defined by `DatesProvider`. */
|
|
25
25
|
weekendDays?: DayOfWeek[];
|
|
26
|
+
/** If set, weekend days are displayed. When `false`, weekend columns are hidden and the month grid shrinks. @default true */
|
|
27
|
+
withWeekendDays?: boolean;
|
|
26
28
|
/** Props passed down to the week number button */
|
|
27
29
|
getWeekNumberProps?: (weekStartDate: DateStringValue) => Record<string, any>;
|
|
28
30
|
/** Props passed down to the day button */
|
|
@@ -59,4 +61,4 @@ export interface YearViewMonthProps extends YearViewMonthSettings {
|
|
|
59
61
|
dayIndex: number;
|
|
60
62
|
};
|
|
61
63
|
}
|
|
62
|
-
export declare function YearViewMonth({ month, getStyles, monthLabelFormat, withWeekNumbers, withWeekDays, locale, firstDayOfWeek, weekdayFormat, weekendDays, getDayProps, onDayClick, onWeekNumberClick, onMonthClick, getWeekNumberProps, highlightToday, groupedEvents, mode, withOutsideDays, __getDayRef, __onDayKeyDown, firstDayIndex, }: YearViewMonthProps): import("react/jsx-runtime").JSX.Element;
|
|
64
|
+
export declare function YearViewMonth({ month, getStyles, monthLabelFormat, withWeekNumbers, withWeekDays, locale, firstDayOfWeek, weekdayFormat, weekendDays, withWeekendDays, getDayProps, onDayClick, onWeekNumberClick, onMonthClick, getWeekNumberProps, highlightToday, groupedEvents, mode, withOutsideDays, __getDayRef, __onDayKeyDown, firstDayIndex, }: YearViewMonthProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { DateStringValue, DayOfWeek } from '../../types';
|
|
2
|
+
interface HiddenWeekendColumnsInput {
|
|
3
|
+
weekendDays: DayOfWeek[];
|
|
4
|
+
firstDayOfWeek: DayOfWeek;
|
|
5
|
+
withWeekendDays: boolean | undefined;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Returns indices of week columns (0-6, relative to `firstDayOfWeek`) that are
|
|
9
|
+
* hidden because they fall on a weekend day and `withWeekendDays` is `false`.
|
|
10
|
+
*/
|
|
11
|
+
export declare function getHiddenWeekendColumns({ weekendDays, firstDayOfWeek, withWeekendDays, }: HiddenWeekendColumnsInput): number[];
|
|
12
|
+
interface VisibleWeekDaysInput {
|
|
13
|
+
week: DateStringValue[];
|
|
14
|
+
weekendDays: DayOfWeek[];
|
|
15
|
+
withWeekendDays: boolean | undefined;
|
|
16
|
+
}
|
|
17
|
+
/** Filters out weekend days from a week when `withWeekendDays` is `false` */
|
|
18
|
+
export declare function getVisibleWeekDays({ week, weekendDays, withWeekendDays, }: VisibleWeekDaysInput): DateStringValue[];
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { DateStringValue, DateTimeStringValue, ScheduleEventData, ScheduleMode } from '../types';
|
|
2
|
+
import { MonthResizeEdge } from '../utils/calculate-month-resize-dates/calculate-month-resize-dates';
|
|
3
|
+
export interface UseDayGridEventResizeInput {
|
|
4
|
+
enabled?: boolean;
|
|
5
|
+
mode?: ScheduleMode;
|
|
6
|
+
onEventResize?: (data: {
|
|
7
|
+
eventId: string | number;
|
|
8
|
+
newStart: DateTimeStringValue;
|
|
9
|
+
newEnd: DateTimeStringValue;
|
|
10
|
+
event: ScheduleEventData;
|
|
11
|
+
}) => void;
|
|
12
|
+
canResizeEvent?: (event: ScheduleEventData) => boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface DayGridResizeStartInput {
|
|
15
|
+
event: ScheduleEventData;
|
|
16
|
+
edge: MonthResizeEdge;
|
|
17
|
+
cells: (HTMLElement | null)[];
|
|
18
|
+
days: DateStringValue[];
|
|
19
|
+
pointerEvent: React.PointerEvent;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Resizes an event by dragging its start or end edge across a strip of day cells.
|
|
23
|
+
* The target day is resolved by hit-testing `cells` with the pointer position, so
|
|
24
|
+
* the hook works for any layout that renders one element per day in a single row.
|
|
25
|
+
*/
|
|
26
|
+
export declare function useDayGridEventResize({ enabled, mode, onEventResize, canResizeEvent, }: UseDayGridEventResizeInput): {
|
|
27
|
+
handleResizeStart: ({ event, edge, cells, days, pointerEvent }: DayGridResizeStartInput) => void;
|
|
28
|
+
isResizing: boolean;
|
|
29
|
+
resizingEventId: string | number | null;
|
|
30
|
+
resizingEdge: MonthResizeEdge | null;
|
|
31
|
+
previewStart: string | null;
|
|
32
|
+
previewEnd: string | null;
|
|
33
|
+
isResizableEvent: (event: ScheduleEventData) => boolean;
|
|
34
|
+
wasResizing: () => boolean;
|
|
35
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { DateStringValue, DateTimeStringValue, ScheduleEventData } from '../../types';
|
|
2
|
+
export type MonthResizeEdge = 'start' | 'end';
|
|
3
|
+
export interface CalculateMonthResizeDatesInput {
|
|
4
|
+
/** The event being resized */
|
|
5
|
+
event: ScheduleEventData;
|
|
6
|
+
/** Edge of the event that is being dragged */
|
|
7
|
+
edge: MonthResizeEdge;
|
|
8
|
+
/** The day on which the dragged edge was released */
|
|
9
|
+
targetDay: DateStringValue;
|
|
10
|
+
}
|
|
11
|
+
export interface CalculateMonthResizeDatesResult {
|
|
12
|
+
/** New start date for the event */
|
|
13
|
+
start: DateTimeStringValue;
|
|
14
|
+
/** New end date for the event */
|
|
15
|
+
end: DateTimeStringValue;
|
|
16
|
+
}
|
|
17
|
+
export declare function calculateMonthResizeDates({ event, edge, targetDay, }: CalculateMonthResizeDatesInput): CalculateMonthResizeDatesResult;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mantine/schedule",
|
|
3
|
-
"version": "9.5.0",
|
|
3
|
+
"version": "9.5.1-alpha.0",
|
|
4
4
|
"description": "Schedule Mantine component",
|
|
5
5
|
"homepage": "https://mantine.dev/",
|
|
6
6
|
"license": "MIT",
|
|
@@ -35,9 +35,9 @@
|
|
|
35
35
|
"directory": "packages/@mantine/schedule"
|
|
36
36
|
},
|
|
37
37
|
"peerDependencies": {
|
|
38
|
-
"@mantine/core": "9.5.0",
|
|
39
|
-
"@mantine/dates": "9.5.0",
|
|
40
|
-
"@mantine/hooks": "9.5.0",
|
|
38
|
+
"@mantine/core": "9.5.1-alpha.0",
|
|
39
|
+
"@mantine/dates": "9.5.1-alpha.0",
|
|
40
|
+
"@mantine/hooks": "9.5.1-alpha.0",
|
|
41
41
|
"react": "^19.2.0",
|
|
42
42
|
"react-dom": "^19.2.0"
|
|
43
43
|
},
|
package/styles.css
CHANGED
|
@@ -1922,6 +1922,7 @@
|
|
|
1922
1922
|
.m_7301354d {
|
|
1923
1923
|
--year-view-radius: var(--schedule-radius, var(--mantine-radius-default));
|
|
1924
1924
|
--year-view-font-size: var(--mantine-font-size-sm);
|
|
1925
|
+
--year-view-columns: 7;
|
|
1925
1926
|
container-type: inline-size;
|
|
1926
1927
|
}
|
|
1927
1928
|
|
|
@@ -2087,7 +2088,8 @@
|
|
|
2087
2088
|
}
|
|
2088
2089
|
|
|
2089
2090
|
.m_e33cb11b {
|
|
2090
|
-
flex: 0 0
|
|
2091
|
+
flex: 0 0
|
|
2092
|
+
calc(100% / var(--year-view-columns) - var(--week-numbers-offset) / var(--year-view-columns));
|
|
2091
2093
|
height: calc(2.25rem * var(--mantine-scale));
|
|
2092
2094
|
font-size: var(--year-view-font-size);
|
|
2093
2095
|
font-weight: var(--mantine-font-weight-medium);
|
|
@@ -2114,7 +2116,8 @@
|
|
|
2114
2116
|
}
|
|
2115
2117
|
|
|
2116
2118
|
.m_399ab70f {
|
|
2117
|
-
flex: 0 0
|
|
2119
|
+
flex: 0 0
|
|
2120
|
+
calc(100% / var(--year-view-columns) - var(--week-numbers-offset) / var(--year-view-columns));
|
|
2118
2121
|
padding: calc(0.25rem * var(--mantine-scale));
|
|
2119
2122
|
font-size: var(--year-view-font-size);
|
|
2120
2123
|
color: var(--day-base-color);
|
|
@@ -3461,6 +3464,64 @@
|
|
|
3461
3464
|
pointer-events: none;
|
|
3462
3465
|
}
|
|
3463
3466
|
|
|
3467
|
+
.m_4a182c06:hover .m_4dcd6369 {
|
|
3468
|
+
opacity: 0.5;
|
|
3469
|
+
}
|
|
3470
|
+
|
|
3471
|
+
.m_4a182c06 .m_4dcd6369:hover {
|
|
3472
|
+
opacity: 0.8;
|
|
3473
|
+
}
|
|
3474
|
+
|
|
3475
|
+
.m_4a182c06:where([data-resizing]) .m_4dcd6369:where([data-active]) {
|
|
3476
|
+
opacity: 0.8;
|
|
3477
|
+
}
|
|
3478
|
+
|
|
3479
|
+
.m_4a182c06:where([data-resizing]) .m_4dcd6369:not([data-active]) {
|
|
3480
|
+
opacity: 0;
|
|
3481
|
+
pointer-events: none;
|
|
3482
|
+
}
|
|
3483
|
+
|
|
3484
|
+
.m_4dcd6369 {
|
|
3485
|
+
position: absolute;
|
|
3486
|
+
top: 20%;
|
|
3487
|
+
width: calc(0.25rem * var(--mantine-scale));
|
|
3488
|
+
height: 60%;
|
|
3489
|
+
cursor: ew-resize;
|
|
3490
|
+
z-index: 5;
|
|
3491
|
+
border-radius: calc(0.125rem * var(--mantine-scale));
|
|
3492
|
+
opacity: 0;
|
|
3493
|
+
transition: opacity 100ms ease;
|
|
3494
|
+
pointer-events: all;
|
|
3495
|
+
touch-action: none;
|
|
3496
|
+
background-color: var(--event-color);
|
|
3497
|
+
}
|
|
3498
|
+
|
|
3499
|
+
.m_4dcd6369::before {
|
|
3500
|
+
content: '';
|
|
3501
|
+
position: absolute;
|
|
3502
|
+
inset: calc(-0.25rem * var(--mantine-scale)) calc(-0.375rem * var(--mantine-scale));
|
|
3503
|
+
}
|
|
3504
|
+
|
|
3505
|
+
.m_4dcd6369:where([data-edge='start']) {
|
|
3506
|
+
inset-inline-start: calc(-0.125rem * var(--mantine-scale));
|
|
3507
|
+
}
|
|
3508
|
+
|
|
3509
|
+
.m_4dcd6369:where([data-edge='end']) {
|
|
3510
|
+
inset-inline-end: calc(-0.125rem * var(--mantine-scale));
|
|
3511
|
+
}
|
|
3512
|
+
|
|
3513
|
+
.m_652b3acd:where([data-resizing]) * {
|
|
3514
|
+
cursor: ew-resize !important;
|
|
3515
|
+
}
|
|
3516
|
+
|
|
3517
|
+
.m_652b3acd:where([data-resizing]) .m_4a182c06:not([data-resizing]) {
|
|
3518
|
+
pointer-events: none;
|
|
3519
|
+
}
|
|
3520
|
+
|
|
3521
|
+
.m_652b3acd:where([data-resizing]) .m_4a182c06:not([data-resizing]) .m_4dcd6369 {
|
|
3522
|
+
opacity: 0;
|
|
3523
|
+
}
|
|
3524
|
+
|
|
3464
3525
|
.m_428e1853 {
|
|
3465
3526
|
height: 100%;
|
|
3466
3527
|
}
|
package/styles.layer.css
CHANGED
|
@@ -1922,6 +1922,7 @@
|
|
|
1922
1922
|
.m_7301354d {
|
|
1923
1923
|
--year-view-radius: var(--schedule-radius, var(--mantine-radius-default));
|
|
1924
1924
|
--year-view-font-size: var(--mantine-font-size-sm);
|
|
1925
|
+
--year-view-columns: 7;
|
|
1925
1926
|
container-type: inline-size;
|
|
1926
1927
|
}
|
|
1927
1928
|
|
|
@@ -2087,7 +2088,8 @@
|
|
|
2087
2088
|
}
|
|
2088
2089
|
|
|
2089
2090
|
.m_e33cb11b {
|
|
2090
|
-
flex: 0 0
|
|
2091
|
+
flex: 0 0
|
|
2092
|
+
calc(100% / var(--year-view-columns) - var(--week-numbers-offset) / var(--year-view-columns));
|
|
2091
2093
|
height: calc(2.25rem * var(--mantine-scale));
|
|
2092
2094
|
font-size: var(--year-view-font-size);
|
|
2093
2095
|
font-weight: var(--mantine-font-weight-medium);
|
|
@@ -2114,7 +2116,8 @@
|
|
|
2114
2116
|
}
|
|
2115
2117
|
|
|
2116
2118
|
.m_399ab70f {
|
|
2117
|
-
flex: 0 0
|
|
2119
|
+
flex: 0 0
|
|
2120
|
+
calc(100% / var(--year-view-columns) - var(--week-numbers-offset) / var(--year-view-columns));
|
|
2118
2121
|
padding: calc(0.25rem * var(--mantine-scale));
|
|
2119
2122
|
font-size: var(--year-view-font-size);
|
|
2120
2123
|
color: var(--day-base-color);
|
|
@@ -3461,6 +3464,64 @@
|
|
|
3461
3464
|
pointer-events: none;
|
|
3462
3465
|
}
|
|
3463
3466
|
|
|
3467
|
+
.m_4a182c06:hover .m_4dcd6369 {
|
|
3468
|
+
opacity: 0.5;
|
|
3469
|
+
}
|
|
3470
|
+
|
|
3471
|
+
.m_4a182c06 .m_4dcd6369:hover {
|
|
3472
|
+
opacity: 0.8;
|
|
3473
|
+
}
|
|
3474
|
+
|
|
3475
|
+
.m_4a182c06:where([data-resizing]) .m_4dcd6369:where([data-active]) {
|
|
3476
|
+
opacity: 0.8;
|
|
3477
|
+
}
|
|
3478
|
+
|
|
3479
|
+
.m_4a182c06:where([data-resizing]) .m_4dcd6369:not([data-active]) {
|
|
3480
|
+
opacity: 0;
|
|
3481
|
+
pointer-events: none;
|
|
3482
|
+
}
|
|
3483
|
+
|
|
3484
|
+
.m_4dcd6369 {
|
|
3485
|
+
position: absolute;
|
|
3486
|
+
top: 20%;
|
|
3487
|
+
width: calc(0.25rem * var(--mantine-scale));
|
|
3488
|
+
height: 60%;
|
|
3489
|
+
cursor: ew-resize;
|
|
3490
|
+
z-index: 5;
|
|
3491
|
+
border-radius: calc(0.125rem * var(--mantine-scale));
|
|
3492
|
+
opacity: 0;
|
|
3493
|
+
transition: opacity 100ms ease;
|
|
3494
|
+
pointer-events: all;
|
|
3495
|
+
touch-action: none;
|
|
3496
|
+
background-color: var(--event-color);
|
|
3497
|
+
}
|
|
3498
|
+
|
|
3499
|
+
.m_4dcd6369::before {
|
|
3500
|
+
content: '';
|
|
3501
|
+
position: absolute;
|
|
3502
|
+
inset: calc(-0.25rem * var(--mantine-scale)) calc(-0.375rem * var(--mantine-scale));
|
|
3503
|
+
}
|
|
3504
|
+
|
|
3505
|
+
.m_4dcd6369:where([data-edge='start']) {
|
|
3506
|
+
inset-inline-start: calc(-0.125rem * var(--mantine-scale));
|
|
3507
|
+
}
|
|
3508
|
+
|
|
3509
|
+
.m_4dcd6369:where([data-edge='end']) {
|
|
3510
|
+
inset-inline-end: calc(-0.125rem * var(--mantine-scale));
|
|
3511
|
+
}
|
|
3512
|
+
|
|
3513
|
+
.m_652b3acd:where([data-resizing]) * {
|
|
3514
|
+
cursor: ew-resize !important;
|
|
3515
|
+
}
|
|
3516
|
+
|
|
3517
|
+
.m_652b3acd:where([data-resizing]) .m_4a182c06:not([data-resizing]) {
|
|
3518
|
+
pointer-events: none;
|
|
3519
|
+
}
|
|
3520
|
+
|
|
3521
|
+
.m_652b3acd:where([data-resizing]) .m_4a182c06:not([data-resizing]) .m_4dcd6369 {
|
|
3522
|
+
opacity: 0;
|
|
3523
|
+
}
|
|
3524
|
+
|
|
3464
3525
|
.m_428e1853 {
|
|
3465
3526
|
height: 100%;
|
|
3466
3527
|
}
|