nuxt-ui-elements-pro 0.1.5 → 0.1.7

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.
Files changed (67) hide show
  1. package/dist/module.json +1 -1
  2. package/dist/module.mjs +153 -18
  3. package/dist/runtime/components/EventCalendar.d.vue.ts +109 -22
  4. package/dist/runtime/components/EventCalendar.vue +225 -602
  5. package/dist/runtime/components/EventCalendar.vue.d.ts +109 -22
  6. package/dist/runtime/components/OrgChart.d.vue.ts +191 -0
  7. package/dist/runtime/components/OrgChart.vue +290 -0
  8. package/dist/runtime/components/OrgChart.vue.d.ts +191 -0
  9. package/dist/runtime/components/event-calendar/EventCalendarHeader.d.vue.ts +45 -0
  10. package/dist/runtime/components/event-calendar/EventCalendarHeader.vue +55 -0
  11. package/dist/runtime/components/event-calendar/EventCalendarHeader.vue.d.ts +45 -0
  12. package/dist/runtime/components/event-calendar/EventCalendarListView.d.vue.ts +25 -0
  13. package/dist/runtime/components/event-calendar/EventCalendarListView.vue +95 -0
  14. package/dist/runtime/components/event-calendar/EventCalendarListView.vue.d.ts +25 -0
  15. package/dist/runtime/components/event-calendar/EventCalendarMonthView.d.vue.ts +34 -0
  16. package/dist/runtime/components/event-calendar/EventCalendarMonthView.vue +336 -0
  17. package/dist/runtime/components/event-calendar/EventCalendarMonthView.vue.d.ts +34 -0
  18. package/dist/runtime/components/event-calendar/EventCalendarTimeGrid.d.vue.ts +31 -0
  19. package/dist/runtime/components/event-calendar/EventCalendarTimeGrid.vue +306 -0
  20. package/dist/runtime/components/event-calendar/EventCalendarTimeGrid.vue.d.ts +31 -0
  21. package/dist/runtime/components/org-chart/OrgChartConnectors.d.vue.ts +15 -0
  22. package/dist/runtime/components/org-chart/OrgChartConnectors.vue +29 -0
  23. package/dist/runtime/components/org-chart/OrgChartConnectors.vue.d.ts +15 -0
  24. package/dist/runtime/components/org-chart/OrgChartControls.d.vue.ts +19 -0
  25. package/dist/runtime/components/org-chart/OrgChartControls.vue +25 -0
  26. package/dist/runtime/components/org-chart/OrgChartControls.vue.d.ts +19 -0
  27. package/dist/runtime/components/org-chart/OrgChartNode.d.vue.ts +30 -0
  28. package/dist/runtime/components/org-chart/OrgChartNode.vue +129 -0
  29. package/dist/runtime/components/org-chart/OrgChartNode.vue.d.ts +30 -0
  30. package/dist/runtime/composables/useEventCalendar.d.ts +52 -0
  31. package/dist/runtime/composables/useEventCalendar.js +362 -0
  32. package/dist/runtime/composables/useEventCalendarContext.d.ts +8 -0
  33. package/dist/runtime/composables/useEventCalendarContext.js +11 -0
  34. package/dist/runtime/composables/useEventCalendarDragDrop.d.ts +1 -1
  35. package/dist/runtime/composables/useEventCalendarDragDrop.js +11 -9
  36. package/dist/runtime/composables/useEventCalendarKeyboard.d.ts +20 -0
  37. package/dist/runtime/composables/useEventCalendarKeyboard.js +128 -0
  38. package/dist/runtime/composables/useEventCalendarResize.d.ts +31 -0
  39. package/dist/runtime/composables/useEventCalendarResize.js +87 -0
  40. package/dist/runtime/composables/useEventCalendarSelect.d.ts +21 -0
  41. package/dist/runtime/composables/useEventCalendarSelect.js +119 -0
  42. package/dist/runtime/composables/useOrgChart.d.ts +42 -0
  43. package/dist/runtime/composables/useOrgChart.js +154 -0
  44. package/dist/runtime/composables/useOrgChartContext.d.ts +8 -0
  45. package/dist/runtime/composables/useOrgChartContext.js +11 -0
  46. package/dist/runtime/composables/useOrgChartDragDrop.d.ts +20 -0
  47. package/dist/runtime/composables/useOrgChartDragDrop.js +67 -0
  48. package/dist/runtime/composables/useOrgChartKeyboard.d.ts +16 -0
  49. package/dist/runtime/composables/useOrgChartKeyboard.js +101 -0
  50. package/dist/runtime/composables/useOrgChartSearch.d.ts +16 -0
  51. package/dist/runtime/composables/useOrgChartSearch.js +62 -0
  52. package/dist/runtime/composables/useOrgChartZoom.d.ts +26 -0
  53. package/dist/runtime/composables/useOrgChartZoom.js +101 -0
  54. package/dist/runtime/index.d.ts +3 -0
  55. package/dist/runtime/index.js +2 -0
  56. package/dist/runtime/types/event-calendar.d.ts +170 -0
  57. package/dist/runtime/types/index.d.ts +2 -0
  58. package/dist/runtime/types/index.js +2 -0
  59. package/dist/runtime/types/org-chart.d.ts +181 -0
  60. package/dist/runtime/types/org-chart.js +0 -0
  61. package/dist/runtime/utils/event-calendar.d.ts +22 -1
  62. package/dist/runtime/utils/event-calendar.js +199 -1
  63. package/dist/runtime/utils/org-chart.d.ts +55 -0
  64. package/dist/runtime/utils/org-chart.js +367 -0
  65. package/dist/runtime/utils/recurrence.d.ts +30 -0
  66. package/dist/runtime/utils/recurrence.js +150 -0
  67. package/package.json +15 -6
@@ -0,0 +1,150 @@
1
+ import {
2
+ asCalendarDate,
3
+ asCalendarDateTime,
4
+ startOf,
5
+ add,
6
+ subtract
7
+ } from "#std/date";
8
+ import { hasTimeComponent, startOfWeekByDay } from "./event-calendar.js";
9
+ export function getVisibleRange(displayDate, view, weekStartsOn, fixedWeeks) {
10
+ if (view === "month") {
11
+ const monthStart = startOf(displayDate, "month");
12
+ const monthEnd = asCalendarDate(add(startOf(displayDate, "month"), 1, "month"));
13
+ const monthEndDate = asCalendarDate(subtract(monthEnd, 1, "day"));
14
+ const gridStart = asCalendarDate(subtract(startOfWeekByDay(monthStart, weekStartsOn), 1, "day"));
15
+ const gridEnd = fixedWeeks ? asCalendarDate(add(startOfWeekByDay(monthStart, weekStartsOn), 42, "day")) : asCalendarDate(add(startOfWeekByDay(monthEndDate, weekStartsOn).add({ days: 6 }), 1, "day"));
16
+ return { start: gridStart, end: gridEnd };
17
+ }
18
+ if (view === "week" || view === "list") {
19
+ const weekStart = startOfWeekByDay(asCalendarDate(displayDate), weekStartsOn);
20
+ return {
21
+ start: asCalendarDate(subtract(weekStart, 1, "day")),
22
+ end: asCalendarDate(add(weekStart, 7, "day"))
23
+ };
24
+ }
25
+ return {
26
+ start: asCalendarDate(subtract(displayDate, 1, "day")),
27
+ end: asCalendarDate(add(displayDate, 1, "day"))
28
+ };
29
+ }
30
+ function toFloatingUTC(value) {
31
+ if (hasTimeComponent(value)) {
32
+ const dt = value;
33
+ return new Date(Date.UTC(dt.year, dt.month - 1, dt.day, dt.hour, dt.minute, dt.second ?? 0));
34
+ }
35
+ return new Date(Date.UTC(value.year, value.month - 1, value.day));
36
+ }
37
+ function fromFloatingUTC(date, withTime) {
38
+ const year = date.getUTCFullYear();
39
+ const month = String(date.getUTCMonth() + 1).padStart(2, "0");
40
+ const day = String(date.getUTCDate()).padStart(2, "0");
41
+ if (withTime) {
42
+ const hour = String(date.getUTCHours()).padStart(2, "0");
43
+ const minute = String(date.getUTCMinutes()).padStart(2, "0");
44
+ return asCalendarDateTime(`${year}-${month}-${day}T${hour}:${minute}`);
45
+ }
46
+ return asCalendarDate(`${year}-${month}-${day}`);
47
+ }
48
+ function parseDateValue(input) {
49
+ if (typeof input === "object" && "calendar" in input) {
50
+ return input;
51
+ }
52
+ if (input instanceof Date) {
53
+ const iso = input.toISOString();
54
+ if (iso.endsWith("T00:00:00.000Z")) {
55
+ return asCalendarDate(input);
56
+ }
57
+ return asCalendarDateTime(input);
58
+ }
59
+ if (typeof input === "string") {
60
+ if (input.includes("T") || input.includes(" ")) {
61
+ try {
62
+ return asCalendarDateTime(input);
63
+ } catch {
64
+ return asCalendarDate(input);
65
+ }
66
+ }
67
+ return asCalendarDate(input);
68
+ }
69
+ return asCalendarDate(/* @__PURE__ */ new Date());
70
+ }
71
+ function formatDtstart(date, allDay) {
72
+ const y = date.getUTCFullYear();
73
+ const m = String(date.getUTCMonth() + 1).padStart(2, "0");
74
+ const d = String(date.getUTCDate()).padStart(2, "0");
75
+ if (allDay) {
76
+ return `DTSTART;VALUE=DATE:${y}${m}${d}`;
77
+ }
78
+ const hh = String(date.getUTCHours()).padStart(2, "0");
79
+ const mm = String(date.getUTCMinutes()).padStart(2, "0");
80
+ const ss = String(date.getUTCSeconds()).padStart(2, "0");
81
+ return `DTSTART:${y}${m}${d}T${hh}${mm}${ss}Z`;
82
+ }
83
+ export function expandRecurringEvents(events, range, rruleLib) {
84
+ return events.flatMap((event) => {
85
+ if (!event.rrule) return [event];
86
+ return expandSingleEvent(event, range, rruleLib);
87
+ });
88
+ }
89
+ function expandSingleEvent(event, range, rruleLib) {
90
+ const { rrulestr } = rruleLib;
91
+ const parsedStart = parseDateValue(event.start);
92
+ const isTimedEvent = hasTimeComponent(parsedStart);
93
+ const startAsUTC = toFloatingUTC(parsedStart);
94
+ let rruleString = event.rrule;
95
+ const hasExistingDtstart = /DTSTART[;:]/i.test(rruleString);
96
+ if (!hasExistingDtstart) {
97
+ const dtstart = formatDtstart(startAsUTC, !isTimedEvent);
98
+ if (!rruleString.startsWith("RRULE:")) {
99
+ rruleString = `RRULE:${rruleString}`;
100
+ }
101
+ rruleString = `${dtstart}
102
+ ${rruleString}`;
103
+ }
104
+ let ruleSet;
105
+ try {
106
+ const parsed = rrulestr(rruleString, { forceset: true });
107
+ ruleSet = parsed;
108
+ } catch (err) {
109
+ console.warn(`[UEEventCalendar] Failed to parse rrule for event "${event.id}":`, err);
110
+ return [event];
111
+ }
112
+ if (event.exdate?.length) {
113
+ for (const exd of event.exdate) {
114
+ const parsedEx = parseDateValue(exd);
115
+ ruleSet.exdate(toFloatingUTC(parsedEx));
116
+ }
117
+ }
118
+ const rangeStart = toFloatingUTC(range.start);
119
+ const rangeEnd = toFloatingUTC(range.end);
120
+ const occurrences = ruleSet.between(rangeStart, rangeEnd, true);
121
+ if (occurrences.length === 0) return [];
122
+ let durationMinutes = 0;
123
+ if (event.duration != null) {
124
+ durationMinutes = event.duration;
125
+ } else if (event.end) {
126
+ const parsedEnd = parseDateValue(event.end);
127
+ const endUTC = toFloatingUTC(parsedEnd);
128
+ durationMinutes = Math.round((endUTC.getTime() - startAsUTC.getTime()) / 6e4);
129
+ }
130
+ return occurrences.map((occDate) => {
131
+ const occStart = fromFloatingUTC(occDate, isTimedEvent);
132
+ const occEnd = durationMinutes > 0 ? fromFloatingUTC(new Date(occDate.getTime() + durationMinutes * 6e4), isTimedEvent) : occStart;
133
+ const occKey = isTimedEvent ? `${occStart.toString()}` : `${occStart.toString()}`;
134
+ return {
135
+ id: `${event.id}::${occKey}`,
136
+ title: event.title,
137
+ start: occStart,
138
+ end: occEnd,
139
+ color: event.color,
140
+ allDay: event.allDay,
141
+ draggable: event.draggable,
142
+ resizable: event.resizable,
143
+ recurringEventId: event.id
144
+ };
145
+ });
146
+ }
147
+ export async function expandRecurringEventsAsync(events, range) {
148
+ const rruleLib = await import("rrule");
149
+ return expandRecurringEvents(events, range, rruleLib);
150
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nuxt-ui-elements-pro",
3
- "version": "0.1.5",
3
+ "version": "0.1.7",
4
4
  "description": "Pro components for nuxt-ui-elements",
5
5
  "license": "UNLICENSED",
6
6
  "files": [
@@ -46,23 +46,32 @@
46
46
  },
47
47
  "devDependencies": {
48
48
  "@nuxt/devtools": "3.2.1",
49
- "@nuxt/ui": "4.4.0",
50
49
  "@nuxt/eslint-config": "1.15.1",
51
50
  "@nuxt/module-builder": "1.0.2",
52
51
  "@nuxt/schema": "4.3.1",
53
52
  "@nuxt/test-utils": "4.0.0",
53
+ "@nuxt/ui": "4.4.0",
54
54
  "@types/node": "latest",
55
- "eslint": "10.0.0",
55
+ "@vue/test-utils": "2.4.6",
56
+ "eslint": "10.0.1",
56
57
  "eslint-config-prettier": "10.1.8",
57
58
  "eslint-plugin-prettier": "5.5.5",
59
+ "happy-dom": "20.7.0",
58
60
  "nuxt": "4.3.1",
59
61
  "prettier": "3.8.1",
62
+ "rrule": "2.8.1",
60
63
  "typescript": "5.9.3",
61
64
  "vitest": "4.0.18",
62
- "vue-tsc": "3.2.4"
65
+ "vue-tsc": "3.2.5"
63
66
  },
64
67
  "peerDependencies": {
65
- "@nuxt/ui": "^4.0.0"
68
+ "@nuxt/ui": "^4.0.0",
69
+ "rrule": "^2.8.0"
70
+ },
71
+ "peerDependenciesMeta": {
72
+ "rrule": {
73
+ "optional": true
74
+ }
66
75
  },
67
- "packageManager": "pnpm@10.30.0+sha512.2b5753de015d480eeb88f5b5b61e0051f05b4301808a82ec8b840c9d2adf7748eb352c83f5c1593ca703ff1017295bc3fdd3119abb9686efc96b9fcb18200937"
76
+ "packageManager": "pnpm@10.30.1+sha512.3590e550d5384caa39bd5c7c739f72270234b2f6059e13018f975c313b1eb9fefcc09714048765d4d9efe961382c312e624572c0420762bdc5d5940cdf9be73a"
68
77
  }