@calends/vue 0.0.0-stage → 0.1.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/LICENSE +21 -0
- package/README.md +138 -2
- package/dist/CalendarHeading.vue.d.ts +18 -0
- package/dist/CalendarNav.vue.d.ts +19 -0
- package/dist/CalendarRoot.vue.d.ts +63 -0
- package/dist/EventBar.vue.d.ts +34 -0
- package/dist/EventResizeHandle.vue.d.ts +23 -0
- package/dist/Gantt.vue.d.ts +21 -0
- package/dist/GanttBar.vue.d.ts +24 -0
- package/dist/GanttLinks.vue.d.ts +37 -0
- package/dist/GanttRow.vue.d.ts +23 -0
- package/dist/GanttToday.vue.d.ts +16 -0
- package/dist/GanttTrack.vue.d.ts +16 -0
- package/dist/MonthDay.vue.d.ts +25 -0
- package/dist/MonthDayMore.vue.d.ts +24 -0
- package/dist/MonthGrid.vue.d.ts +20 -0
- package/dist/MonthWeek.vue.d.ts +23 -0
- package/dist/MonthWeekday.vue.d.ts +22 -0
- package/dist/NowIndicator.vue.d.ts +21 -0
- package/dist/ResourceCell.vue.d.ts +29 -0
- package/dist/ResourceDayHeader.vue.d.ts +23 -0
- package/dist/ResourceGrid.vue.d.ts +20 -0
- package/dist/ResourceLabel.vue.d.ts +25 -0
- package/dist/ResourceRow.vue.d.ts +24 -0
- package/dist/TimeColumn.vue.d.ts +23 -0
- package/dist/TimeEvent.vue.d.ts +27 -0
- package/dist/TimeGrid.vue.d.ts +24 -0
- package/dist/TimeSelection.vue.d.ts +24 -0
- package/dist/Timeline.vue.d.ts +20 -0
- package/dist/TimelineEvent.vue.d.ts +27 -0
- package/dist/TimelineNow.vue.d.ts +16 -0
- package/dist/TimelineRow.vue.d.ts +24 -0
- package/dist/TimelineSelection.vue.d.ts +24 -0
- package/dist/TimelineTrack.vue.d.ts +21 -0
- package/dist/index.d.ts +35 -0
- package/dist/index.js +1757 -0
- package/dist/index.js.map +1 -0
- package/dist/useCalendar.d.ts +111 -0
- package/dist/useEventState.d.ts +26 -0
- package/dist/useInteractions.d.ts +112 -0
- package/package.json +51 -3
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { type ComputedRef, type MaybeRefOrGetter } from 'vue';
|
|
2
|
+
import { type CalendarEvent, type CalendarEventInput, type CalendarResource, type EventDelta, type EventTimes, type ResourceId } from '@calends/core';
|
|
3
|
+
/** What sits under the pointer: a day cell, a point in a day's hours, or a point on a timeline. */
|
|
4
|
+
export interface DropTarget {
|
|
5
|
+
kind: 'day' | 'time' | 'axis' | 'dayaxis';
|
|
6
|
+
date: Temporal.PlainDate;
|
|
7
|
+
/** Wall-clock minutes from midnight, for `time` and `axis` targets. */
|
|
8
|
+
minutes: number | null;
|
|
9
|
+
/** Present only on targets inside a resource row; null for the unassigned row. */
|
|
10
|
+
resourceId?: ResourceId | null;
|
|
11
|
+
}
|
|
12
|
+
export interface EventDropDetail<T extends CalendarEventInput = CalendarEventInput> {
|
|
13
|
+
event: T;
|
|
14
|
+
start: Temporal.PlainDate | Temporal.ZonedDateTime;
|
|
15
|
+
end: Temporal.PlainDate | Temporal.ZonedDateTime;
|
|
16
|
+
previousStart: Temporal.PlainDate | Temporal.ZonedDateTime;
|
|
17
|
+
previousEnd: Temporal.PlainDate | Temporal.ZonedDateTime;
|
|
18
|
+
allDay: boolean;
|
|
19
|
+
/** Set only when the event moved to another resource row (null for unassigned). */
|
|
20
|
+
resourceId?: ResourceId | null;
|
|
21
|
+
previousResourceId?: ResourceId | null;
|
|
22
|
+
}
|
|
23
|
+
export interface RangeSelectDetail {
|
|
24
|
+
start: Temporal.PlainDate | Temporal.ZonedDateTime;
|
|
25
|
+
/** Inclusive last day for all-day ranges, exclusive end time for timed ones. */
|
|
26
|
+
end: Temporal.PlainDate | Temporal.ZonedDateTime;
|
|
27
|
+
allDay: boolean;
|
|
28
|
+
resourceId?: ResourceId | null;
|
|
29
|
+
}
|
|
30
|
+
/** How arrow keys move a picked-up event in each layout. */
|
|
31
|
+
export interface KeyboardAxes {
|
|
32
|
+
horizontal: 'day' | 'minutes';
|
|
33
|
+
vertical: 'week' | 'minutes' | 'resource' | 'none';
|
|
34
|
+
/** Resource ids in row order, for `vertical: 'resource'`. */
|
|
35
|
+
resourceOrder?: readonly (ResourceId | null)[];
|
|
36
|
+
}
|
|
37
|
+
export interface InteractionOptions<T extends CalendarEventInput> {
|
|
38
|
+
events: ComputedRef<CalendarEvent<T>[]>;
|
|
39
|
+
resources: MaybeRefOrGetter<readonly CalendarResource[] | undefined>;
|
|
40
|
+
getResourceIds?: (event: T) => readonly ResourceId[] | null | undefined;
|
|
41
|
+
timeZone: ComputedRef<string>;
|
|
42
|
+
locale: ComputedRef<string | undefined>;
|
|
43
|
+
rangeStart: ComputedRef<Temporal.PlainDate>;
|
|
44
|
+
slotMinMinutes: MaybeRefOrGetter<number | undefined>;
|
|
45
|
+
slotMaxMinutes: MaybeRefOrGetter<number | undefined>;
|
|
46
|
+
editable?: MaybeRefOrGetter<boolean | undefined>;
|
|
47
|
+
selectable?: MaybeRefOrGetter<boolean | undefined>;
|
|
48
|
+
snapMinutes?: MaybeRefOrGetter<number | undefined>;
|
|
49
|
+
canEdit?: (event: T) => boolean;
|
|
50
|
+
onEventDrop?: (detail: EventDropDetail<T>) => void;
|
|
51
|
+
onEventResize?: (detail: EventDropDetail<T>) => void;
|
|
52
|
+
onRangeSelect?: (detail: RangeSelectDetail) => void;
|
|
53
|
+
}
|
|
54
|
+
type DragKind = 'move' | 'resize-start' | 'resize-end';
|
|
55
|
+
export interface DragState<T extends CalendarEventInput> {
|
|
56
|
+
kind: DragKind;
|
|
57
|
+
event: CalendarEvent<T>;
|
|
58
|
+
origin: DropTarget;
|
|
59
|
+
started: boolean;
|
|
60
|
+
keyboard: boolean;
|
|
61
|
+
pointer: {
|
|
62
|
+
x: number;
|
|
63
|
+
y: number;
|
|
64
|
+
};
|
|
65
|
+
preview: EventTimes;
|
|
66
|
+
resourceId: ResourceId | null | undefined;
|
|
67
|
+
/** Keyboard only: accumulated movement, and a separate end-edge resize from Shift. */
|
|
68
|
+
moveDelta: EventDelta;
|
|
69
|
+
endDelta: EventDelta;
|
|
70
|
+
axes?: KeyboardAxes;
|
|
71
|
+
}
|
|
72
|
+
export declare function useInteractions<T extends CalendarEventInput>(options: InteractionOptions<T>): {
|
|
73
|
+
editable: ComputedRef<boolean>;
|
|
74
|
+
selectable: ComputedRef<boolean>;
|
|
75
|
+
drag: import("vue").ShallowRef<DragState<T> | null, DragState<T> | null>;
|
|
76
|
+
selectedRange: ComputedRef<{
|
|
77
|
+
kind: "day" | "dayaxis";
|
|
78
|
+
resourceId: ResourceId | null | undefined;
|
|
79
|
+
startDate: Temporal.PlainDate;
|
|
80
|
+
endDate: Temporal.PlainDate;
|
|
81
|
+
detail: {
|
|
82
|
+
start: Temporal.PlainDate;
|
|
83
|
+
end: Temporal.PlainDate;
|
|
84
|
+
allDay: boolean;
|
|
85
|
+
resourceId: ResourceId | null | undefined;
|
|
86
|
+
};
|
|
87
|
+
startMinutes?: undefined;
|
|
88
|
+
endMinutes?: undefined;
|
|
89
|
+
} | {
|
|
90
|
+
kind: "time" | "axis";
|
|
91
|
+
resourceId: ResourceId | null | undefined;
|
|
92
|
+
startDate: Temporal.PlainDate;
|
|
93
|
+
endDate: Temporal.PlainDate;
|
|
94
|
+
startMinutes: number;
|
|
95
|
+
endMinutes: number;
|
|
96
|
+
detail: {
|
|
97
|
+
start: Temporal.ZonedDateTime;
|
|
98
|
+
end: Temporal.ZonedDateTime;
|
|
99
|
+
allDay: boolean;
|
|
100
|
+
resourceId: ResourceId | null | undefined;
|
|
101
|
+
};
|
|
102
|
+
} | null>;
|
|
103
|
+
announcement: import("vue").Ref<string, string>;
|
|
104
|
+
displayEvents: ComputedRef<CalendarEvent<T>[]>;
|
|
105
|
+
displayResourceIds: (event: T) => readonly ResourceId[] | null | undefined;
|
|
106
|
+
canEdit: (event: CalendarEvent<T>) => boolean;
|
|
107
|
+
isDragging: (event: CalendarEvent<T>) => boolean;
|
|
108
|
+
startPointerDrag: (pointerEvent: PointerEvent, event: CalendarEvent<T>, kind: DragKind) => void;
|
|
109
|
+
startSelection: (pointerEvent: PointerEvent) => void;
|
|
110
|
+
handleEventKeydown: (keyboardEvent: KeyboardEvent, event: CalendarEvent<T>, axes: KeyboardAxes, resourceId?: ResourceId | null) => void;
|
|
111
|
+
};
|
|
112
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,54 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@calends/vue",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Headless Vue calendar primitives, styled with data attributes. Ships no CSS.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"vue",
|
|
7
|
+
"calendar",
|
|
8
|
+
"headless",
|
|
9
|
+
"temporal",
|
|
10
|
+
"scheduler",
|
|
11
|
+
"gantt",
|
|
12
|
+
"timeline",
|
|
13
|
+
"reka-ui"
|
|
14
|
+
],
|
|
15
|
+
"license": "MIT",
|
|
16
|
+
"author": "Ben Miller",
|
|
17
|
+
"repository": {
|
|
18
|
+
"type": "git",
|
|
19
|
+
"url": "git+https://github.com/benjivm/calends.git",
|
|
20
|
+
"directory": "packages/vue"
|
|
21
|
+
},
|
|
22
|
+
"homepage": "https://github.com/benjivm/calends#readme",
|
|
23
|
+
"bugs": "https://github.com/benjivm/calends/issues",
|
|
24
|
+
"type": "module",
|
|
25
|
+
"sideEffects": false,
|
|
26
|
+
"files": [
|
|
27
|
+
"dist"
|
|
28
|
+
],
|
|
29
|
+
"exports": {
|
|
30
|
+
".": {
|
|
31
|
+
"types": "./dist/index.d.ts",
|
|
32
|
+
"import": "./dist/index.js"
|
|
33
|
+
},
|
|
34
|
+
"./package.json": "./package.json"
|
|
35
|
+
},
|
|
36
|
+
"dependencies": {
|
|
37
|
+
"@calends/core": "^0.1.0"
|
|
38
|
+
},
|
|
39
|
+
"peerDependencies": {
|
|
40
|
+
"reka-ui": "^2.11.0",
|
|
41
|
+
"vue": "^3.5.0"
|
|
42
|
+
},
|
|
43
|
+
"devDependencies": {
|
|
44
|
+
"reka-ui": "^2.11.0",
|
|
45
|
+
"vue": "~3.5.44"
|
|
46
|
+
},
|
|
47
|
+
"publishConfig": {
|
|
48
|
+
"access": "public"
|
|
49
|
+
},
|
|
50
|
+
"scripts": {
|
|
51
|
+
"build": "vite build && vue-tsc -p tsconfig.build.json && node scripts/fix-declarations.mjs",
|
|
52
|
+
"typecheck": "vue-tsc -p tsconfig.json --noEmit"
|
|
53
|
+
}
|
|
6
54
|
}
|