@bimetal/calendar-vue-components 0.29.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.
Files changed (116) hide show
  1. package/LICENSE +129 -0
  2. package/dist/.tsbuildinfo +1 -0
  3. package/dist/binding/composables/useCalendarConfig.d.ts +15 -0
  4. package/dist/binding/composables/useCalendarConfig.d.ts.map +1 -0
  5. package/dist/binding/composables/useCalendarConfig.js +19 -0
  6. package/dist/binding/composables/useCalendarConfig.js.map +1 -0
  7. package/dist/binding/composables/useCalendarContext.d.ts +73 -0
  8. package/dist/binding/composables/useCalendarContext.d.ts.map +1 -0
  9. package/dist/binding/composables/useCalendarContext.js +31 -0
  10. package/dist/binding/composables/useCalendarContext.js.map +1 -0
  11. package/dist/binding/composables/useCalendarController.d.ts +31 -0
  12. package/dist/binding/composables/useCalendarController.d.ts.map +1 -0
  13. package/dist/binding/composables/useCalendarController.js +38 -0
  14. package/dist/binding/composables/useCalendarController.js.map +1 -0
  15. package/dist/binding/config.d.ts +6 -0
  16. package/dist/binding/config.d.ts.map +1 -0
  17. package/dist/binding/config.js +6 -0
  18. package/dist/binding/config.js.map +1 -0
  19. package/dist/binding/index.d.ts +24 -0
  20. package/dist/binding/index.d.ts.map +1 -0
  21. package/dist/binding/index.js +26 -0
  22. package/dist/binding/index.js.map +1 -0
  23. package/dist/binding/types.d.ts +87 -0
  24. package/dist/binding/types.d.ts.map +1 -0
  25. package/dist/binding/types.js +12 -0
  26. package/dist/binding/types.js.map +1 -0
  27. package/dist/binding/utils/date-strings.d.ts +16 -0
  28. package/dist/binding/utils/date-strings.d.ts.map +1 -0
  29. package/dist/binding/utils/date-strings.js +30 -0
  30. package/dist/binding/utils/date-strings.js.map +1 -0
  31. package/dist/binding/utils/gridUtils.d.ts +6 -0
  32. package/dist/binding/utils/gridUtils.d.ts.map +1 -0
  33. package/dist/binding/utils/gridUtils.js +13 -0
  34. package/dist/binding/utils/gridUtils.js.map +1 -0
  35. package/dist/binding/view-configs.d.ts +6 -0
  36. package/dist/binding/view-configs.d.ts.map +1 -0
  37. package/dist/binding/view-configs.js +6 -0
  38. package/dist/binding/view-configs.js.map +1 -0
  39. package/dist/components/Calendar.d.ts +139 -0
  40. package/dist/components/Calendar.d.ts.map +1 -0
  41. package/dist/components/Calendar.js +229 -0
  42. package/dist/components/Calendar.js.map +1 -0
  43. package/dist/components/CalendarHeader.d.ts +65 -0
  44. package/dist/components/CalendarHeader.d.ts.map +1 -0
  45. package/dist/components/CalendarHeader.js +33 -0
  46. package/dist/components/CalendarHeader.js.map +1 -0
  47. package/dist/components/CategoryFilter.d.ts +26 -0
  48. package/dist/components/CategoryFilter.d.ts.map +1 -0
  49. package/dist/components/CategoryFilter.js +26 -0
  50. package/dist/components/CategoryFilter.js.map +1 -0
  51. package/dist/components/EventBar.d.ts +34 -0
  52. package/dist/components/EventBar.d.ts.map +1 -0
  53. package/dist/components/EventBar.js +141 -0
  54. package/dist/components/EventBar.js.map +1 -0
  55. package/dist/components/EventDialog.d.ts +54 -0
  56. package/dist/components/EventDialog.d.ts.map +1 -0
  57. package/dist/components/EventDialog.js +284 -0
  58. package/dist/components/EventDialog.js.map +1 -0
  59. package/dist/components/EventHistory.d.ts +32 -0
  60. package/dist/components/EventHistory.d.ts.map +1 -0
  61. package/dist/components/EventHistory.js +76 -0
  62. package/dist/components/EventHistory.js.map +1 -0
  63. package/dist/components/ResourceFilter.d.ts +32 -0
  64. package/dist/components/ResourceFilter.d.ts.map +1 -0
  65. package/dist/components/ResourceFilter.js +26 -0
  66. package/dist/components/ResourceFilter.js.map +1 -0
  67. package/dist/components/UndoToast.d.ts +4 -0
  68. package/dist/components/UndoToast.d.ts.map +1 -0
  69. package/dist/components/UndoToast.js +36 -0
  70. package/dist/components/UndoToast.js.map +1 -0
  71. package/dist/index.d.ts +20 -0
  72. package/dist/index.d.ts.map +1 -0
  73. package/dist/index.js +24 -0
  74. package/dist/index.js.map +1 -0
  75. package/dist/styles/index.css +1 -0
  76. package/dist/views/agenda/AgendaView.d.ts +16 -0
  77. package/dist/views/agenda/AgendaView.d.ts.map +1 -0
  78. package/dist/views/agenda/AgendaView.js +163 -0
  79. package/dist/views/agenda/AgendaView.js.map +1 -0
  80. package/dist/views/day/DayView.d.ts +16 -0
  81. package/dist/views/day/DayView.d.ts.map +1 -0
  82. package/dist/views/day/DayView.js +237 -0
  83. package/dist/views/day/DayView.js.map +1 -0
  84. package/dist/views/month/MonthView.d.ts +22 -0
  85. package/dist/views/month/MonthView.d.ts.map +1 -0
  86. package/dist/views/month/MonthView.js +54 -0
  87. package/dist/views/month/MonthView.js.map +1 -0
  88. package/dist/views/month/WeekRow.d.ts +48 -0
  89. package/dist/views/month/WeekRow.d.ts.map +1 -0
  90. package/dist/views/month/WeekRow.js +208 -0
  91. package/dist/views/month/WeekRow.js.map +1 -0
  92. package/dist/views/resource/ResourceView.d.ts +40 -0
  93. package/dist/views/resource/ResourceView.d.ts.map +1 -0
  94. package/dist/views/resource/ResourceView.js +194 -0
  95. package/dist/views/resource/ResourceView.js.map +1 -0
  96. package/dist/views/timeline/TimelineView.d.ts +48 -0
  97. package/dist/views/timeline/TimelineView.d.ts.map +1 -0
  98. package/dist/views/timeline/TimelineView.js +155 -0
  99. package/dist/views/timeline/TimelineView.js.map +1 -0
  100. package/dist/views/week/AllDayRow.d.ts +24 -0
  101. package/dist/views/week/AllDayRow.d.ts.map +1 -0
  102. package/dist/views/week/AllDayRow.js +67 -0
  103. package/dist/views/week/AllDayRow.js.map +1 -0
  104. package/dist/views/week/TimeEvent.d.ts +72 -0
  105. package/dist/views/week/TimeEvent.d.ts.map +1 -0
  106. package/dist/views/week/TimeEvent.js +141 -0
  107. package/dist/views/week/TimeEvent.js.map +1 -0
  108. package/dist/views/week/WeekView.d.ts +16 -0
  109. package/dist/views/week/WeekView.d.ts.map +1 -0
  110. package/dist/views/week/WeekView.js +210 -0
  111. package/dist/views/week/WeekView.js.map +1 -0
  112. package/dist/views/year/YearView.d.ts +25 -0
  113. package/dist/views/year/YearView.d.ts.map +1 -0
  114. package/dist/views/year/YearView.js +67 -0
  115. package/dist/views/year/YearView.js.map +1 -0
  116. package/package.json +50 -0
@@ -0,0 +1,210 @@
1
+ import { defineComponent, computed, ref, onMounted, onUnmounted, h } from 'vue';
2
+ import { weekGrid, calendarWeekNumber, isSameDay, now, segmentAllDay, segmentTimed, layoutAllDay, layoutTimed, getHours, getMinutes, getDayOfMonth, } from '@bimetal/calendar-core';
3
+ import { useCalendarContext, useCalendarConfig, toDateStr, parseDateTimeStr } from '../../binding/index.js';
4
+ import { DEFAULT_HOUR_HEIGHT, DEFAULT_TIME_LABEL_WIDTH_WEEK, DEFAULT_SCROLL_HOUR, createClickIntent, timeGridHit } from '@bimetal/calendar-headless';
5
+ import { AllDayRow } from './AllDayRow.js';
6
+ import { TimeEvent } from './TimeEvent.js';
7
+ const HOURS = Array.from({ length: 24 }, (_, i) => i);
8
+ export const WeekView = defineComponent({
9
+ name: 'WeekView',
10
+ props: {
11
+ currentDate: { type: Object, required: true },
12
+ },
13
+ setup(props) {
14
+ const config = useCalendarConfig();
15
+ const { events, previewEvent, onDragOverDateTime, onDropTimedEvent, onHidePreview, onDayCellClick, selectedEventId, onClearSelection, } = useCalendarContext();
16
+ const timeGridRef = ref(null);
17
+ const gridInnerRef = ref(null);
18
+ const click = createClickIntent();
19
+ const timeSnapMinutes = config.core.granularity.week.minutes;
20
+ const weekDates = computed(() => weekGrid(props.currentDate, config.core));
21
+ const weekNumber = computed(() => calendarWeekNumber(weekDates.value[0]));
22
+ // Auto-scroll to 8 AM on mount and when currentDate changes
23
+ const scrollTo8AM = () => {
24
+ if (timeGridRef.value) {
25
+ timeGridRef.value.scrollTop = DEFAULT_SCROLL_HOUR * DEFAULT_HOUR_HEIGHT;
26
+ }
27
+ };
28
+ onMounted(scrollTo8AM);
29
+ // Watch for currentDate changes by using a computed with side effect in render
30
+ let lastDateEpoch = 0;
31
+ // B-CAL-1: Controller hat das gezogene Event schon neu gebaut (previewEvent).
32
+ // Swap by id — kein Parsing/+1/Validity in der View.
33
+ const displayEvents = computed(() => {
34
+ const pe = previewEvent.value;
35
+ if (!pe)
36
+ return events.value;
37
+ return events.value.map(ev => ev.id === pe.id ? { ...ev, timeRange: pe.timeRange } : ev);
38
+ });
39
+ const allDayEvents = computed(() => displayEvents.value.filter(ev => ev.allDay));
40
+ const timedEvents = computed(() => displayEvents.value.filter(ev => !ev.allDay));
41
+ const allDaySegments = computed(() => segmentAllDay(allDayEvents.value, weekDates.value));
42
+ const allDayItems = computed(() => layoutAllDay(allDaySegments.value, weekDates.value));
43
+ // Lane-Layout pro Tag durch den Core (Pilot-Direktive 2026-06-21):
44
+ // segmentTimed + layoutTimed bauen Collision-Groups + Lane-Belegung.
45
+ const timedLayoutByDay = computed(() => {
46
+ const map = new Map();
47
+ for (let col = 0; col < 7; col++) {
48
+ const segments = segmentTimed(timedEvents.value, weekDates.value[col]);
49
+ map.set(col, layoutTimed(segments));
50
+ }
51
+ return map;
52
+ });
53
+ const handleGridDragOver = (e) => {
54
+ e.preventDefault();
55
+ e.dataTransfer.dropEffect = 'move';
56
+ if (!gridInnerRef.value)
57
+ return;
58
+ const rect = gridInnerRef.value.getBoundingClientRect();
59
+ const hit = timeGridHit({ x: e.clientX, y: e.clientY }, rect, { labelWidth: DEFAULT_TIME_LABEL_WIDTH_WEEK, hourHeight: DEFAULT_HOUR_HEIGHT, snapMinutes: timeSnapMinutes });
60
+ onDragOverDateTime(weekDates.value[hit.col], hit.time);
61
+ };
62
+ const handleGridDrop = (e) => {
63
+ e.preventDefault();
64
+ if (!gridInnerRef.value)
65
+ return;
66
+ const rect = gridInnerRef.value.getBoundingClientRect();
67
+ const hit = timeGridHit({ x: e.clientX, y: e.clientY }, rect, { labelWidth: DEFAULT_TIME_LABEL_WIDTH_WEEK, hourHeight: DEFAULT_HOUR_HEIGHT, snapMinutes: timeSnapMinutes });
68
+ onDropTimedEvent(e, weekDates.value[hit.col], hit.time);
69
+ };
70
+ const handleGridDragLeave = (e) => {
71
+ const el = e.currentTarget;
72
+ const rect = el.getBoundingClientRect();
73
+ if (e.clientX < rect.left || e.clientX > rect.right ||
74
+ e.clientY < rect.top || e.clientY > rect.bottom) {
75
+ onHidePreview();
76
+ }
77
+ };
78
+ const handleGridMouseDown = () => { click.markMouseDown(); };
79
+ const handleGridClick = (e) => {
80
+ if (!click.accept(config.clickThresholdMs))
81
+ return;
82
+ if (e.target.closest('.time-event'))
83
+ return;
84
+ // Single click on empty grid deselects; create-dialog moves to dblclick.
85
+ if (selectedEventId.value !== null)
86
+ onClearSelection();
87
+ };
88
+ const handleGridDoubleClick = (e) => {
89
+ if (!click.accept(config.clickThresholdMs))
90
+ return;
91
+ if (!gridInnerRef.value)
92
+ return;
93
+ if (e.target.closest('.time-event'))
94
+ return;
95
+ const gridRect = gridInnerRef.value.getBoundingClientRect();
96
+ const hit = timeGridHit({ x: e.clientX, y: e.clientY }, gridRect, { labelWidth: DEFAULT_TIME_LABEL_WIDTH_WEEK, hourHeight: DEFAULT_HOUR_HEIGHT, snapMinutes: timeSnapMinutes });
97
+ const clickedDate = weekDates.value[hit.col];
98
+ // Geklicktes Datum + gesnapte Zeit über den geteilten Parser (kein split).
99
+ const clickedDt = parseDateTimeStr(toDateStr(clickedDate), hit.time, clickedDate.timezone);
100
+ const rect = e.currentTarget.getBoundingClientRect();
101
+ onDayCellClick(clickedDt, rect);
102
+ };
103
+ return () => {
104
+ // Scroll to 8 AM when currentDate changes
105
+ const dateEpoch = props.currentDate.epochMs;
106
+ if (lastDateEpoch !== 0 && lastDateEpoch !== dateEpoch) {
107
+ // Use nextTick-like approach via requestAnimationFrame
108
+ if (timeGridRef.value) {
109
+ timeGridRef.value.scrollTop = DEFAULT_SCROLL_HOUR * DEFAULT_HOUR_HEIGHT;
110
+ }
111
+ }
112
+ lastDateEpoch = dateEpoch;
113
+ const currentNow = now(config.core.timezone, config.core.clock);
114
+ const nowCol = weekDates.value.findIndex(d => isSameDay(d, currentNow));
115
+ const nowHours = getHours(currentNow) + getMinutes(currentNow) / 60;
116
+ return h('div', { class: 'week-view' }, [
117
+ // Header
118
+ h('div', { class: 'week-view__header' }, [
119
+ h('div', { class: 'week-view__corner' }, `${config.locale.calendarWeek} ${weekNumber.value}`),
120
+ ...weekDates.value.map((date, i) => {
121
+ const isToday = isSameDay(date, currentNow);
122
+ return h('div', {
123
+ key: i,
124
+ class: `week-view__day-header ${isToday ? 'week-view__day-header--today' : ''}`,
125
+ }, [
126
+ h('span', { class: 'week-view__day-name' }, config.locale.dayNamesShort[i]),
127
+ h('span', {
128
+ class: `week-view__day-number ${isToday ? 'week-view__day-number--today' : ''}`,
129
+ }, getDayOfMonth(date)),
130
+ ]);
131
+ }),
132
+ ]),
133
+ // All-day row
134
+ h(AllDayRow, {
135
+ weekDates: weekDates.value,
136
+ items: allDayItems.value,
137
+ }),
138
+ // Time grid
139
+ h('div', {
140
+ ref: timeGridRef,
141
+ class: 'week-view__time-grid',
142
+ onDragover: handleGridDragOver,
143
+ onDrop: handleGridDrop,
144
+ onDragleave: handleGridDragLeave,
145
+ onMousedown: handleGridMouseDown,
146
+ onClick: handleGridClick,
147
+ onDblclick: handleGridDoubleClick,
148
+ }, [
149
+ h('div', {
150
+ ref: gridInnerRef,
151
+ class: 'week-view__time-grid-inner',
152
+ style: { height: `${24 * DEFAULT_HOUR_HEIGHT}px` },
153
+ }, [
154
+ // Hour rows
155
+ ...HOURS.map(hr => {
156
+ const wh = config.core.workingHours;
157
+ const isOff = wh ? (hr < wh.start || hr >= wh.end) : false;
158
+ return h('div', {
159
+ key: hr,
160
+ class: `week-view__hour-row${isOff ? ' hour-slot--off' : ''}`,
161
+ style: { top: `${hr * DEFAULT_HOUR_HEIGHT}px`, height: `${DEFAULT_HOUR_HEIGHT}px` },
162
+ }, [
163
+ h('div', { class: 'week-view__hour-label' }, hr > 0 ? `${String(hr).padStart(2, '0')}:00` : ''),
164
+ ]);
165
+ }),
166
+ // Day columns
167
+ ...weekDates.value.map((_, col) => h('div', {
168
+ key: col,
169
+ class: 'week-view__day-col',
170
+ style: {
171
+ left: `calc(${DEFAULT_TIME_LABEL_WIDTH_WEEK}px + ${col} * (100% - ${DEFAULT_TIME_LABEL_WIDTH_WEEK}px) / 7)`,
172
+ width: `calc((100% - ${DEFAULT_TIME_LABEL_WIDTH_WEEK}px) / 7)`,
173
+ },
174
+ })),
175
+ // Timed events
176
+ ...Array.from(timedLayoutByDay.value.entries()).flatMap(([col, items]) => items.map(item => h(TimeEvent, {
177
+ key: `${item.segment.event.id}-${col}-${item.column}`,
178
+ event: item.segment.event,
179
+ layout: {
180
+ dayCol: col,
181
+ dayCount: 7,
182
+ lane: item.column,
183
+ laneCount: item.totalColumns,
184
+ startOffset: item.startOffset,
185
+ endOffset: item.endOffset,
186
+ },
187
+ dayDate: weekDates.value[col],
188
+ hourHeight: DEFAULT_HOUR_HEIGHT,
189
+ ghost: previewEvent.value?.id === item.segment.event.id,
190
+ }))),
191
+ // Now line
192
+ nowCol >= 0
193
+ ? h('div', {
194
+ class: 'week-view__now-line',
195
+ style: {
196
+ top: `${nowHours * DEFAULT_HOUR_HEIGHT}px`,
197
+ left: `calc(${DEFAULT_TIME_LABEL_WIDTH_WEEK}px + ${nowCol} * (100% - ${DEFAULT_TIME_LABEL_WIDTH_WEEK}px) / 7)`,
198
+ width: `calc((100% - ${DEFAULT_TIME_LABEL_WIDTH_WEEK}px) / 7)`,
199
+ },
200
+ }, [
201
+ h('div', { class: 'week-view__now-dot' }),
202
+ ])
203
+ : null,
204
+ ]),
205
+ ]),
206
+ ]);
207
+ };
208
+ },
209
+ });
210
+ //# sourceMappingURL=WeekView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WeekView.js","sourceRoot":"","sources":["../../../src/views/week/WeekView.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { type PropType } from 'vue';
2
+ export declare const YearView: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
3
+ year: {
4
+ type: NumberConstructor;
5
+ required: true;
6
+ };
7
+ onMonthClick: {
8
+ type: PropType<(year: number, month: number) => void>;
9
+ default: undefined;
10
+ };
11
+ }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
12
+ [key: string]: any;
13
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
14
+ year: {
15
+ type: NumberConstructor;
16
+ required: true;
17
+ };
18
+ onMonthClick: {
19
+ type: PropType<(year: number, month: number) => void>;
20
+ default: undefined;
21
+ };
22
+ }>> & Readonly<{}>, {
23
+ onMonthClick: (year: number, month: number) => void;
24
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
25
+ //# sourceMappingURL=YearView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"YearView.d.ts","sourceRoot":"","sources":["../../../src/views/year/YearView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,KAAK,QAAQ,EAAE,MAAM,KAAK,CAAC;AAMlE,eAAO,MAAM,QAAQ;;;;;;cAIiB,QAAQ,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;;;;;;;;;;;cAA/C,QAAQ,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;;;;yBAA/B,MAAM,SAAS,MAAM,KAAK,IAAI;4EAyElF,CAAC"}
@@ -0,0 +1,67 @@
1
+ import { defineComponent, computed, h } from 'vue';
2
+ import { monthGrid, getMonth, getDayOfMonth, isSameDay, startOfDay, addDays, now, } from '@bimetal/calendar-core';
3
+ import { useCalendarContext, useCalendarConfig } from '../../binding/index.js';
4
+ export const YearView = defineComponent({
5
+ name: 'YearView',
6
+ props: {
7
+ year: { type: Number, required: true },
8
+ onMonthClick: { type: Function, default: undefined },
9
+ },
10
+ setup(props) {
11
+ const config = useCalendarConfig();
12
+ const { events, onDayCellClick } = useCalendarContext();
13
+ const eventDays = computed(() => {
14
+ const set = new Set();
15
+ for (const ev of events.value) {
16
+ let cursor = startOfDay(ev.timeRange.start);
17
+ const last = ev.timeRange.end;
18
+ while (cursor.epochMs < last.epochMs) {
19
+ set.add(cursor.epochMs);
20
+ cursor = addDays(cursor, 1);
21
+ }
22
+ }
23
+ return set;
24
+ });
25
+ const months = computed(() => {
26
+ const monthFmt = new Intl.DateTimeFormat(config.locale.code, {
27
+ month: 'long', timeZone: config.core.timezone,
28
+ });
29
+ return Array.from({ length: 12 }, (_, m) => ({
30
+ month: m,
31
+ label: monthFmt.format(new Date(Date.UTC(props.year, m, 15, 12))),
32
+ weeks: monthGrid(props.year, m, config.core),
33
+ }));
34
+ });
35
+ return () => {
36
+ const today = now(config.core.timezone, config.core.clock);
37
+ return h('div', { class: 'year-grid' }, months.value.map(({ month, label, weeks }) => h('div', { key: month, class: 'year-month' }, [
38
+ props.onMonthClick
39
+ ? h('button', {
40
+ type: 'button',
41
+ class: 'year-month__header',
42
+ onClick: () => props.onMonthClick(props.year, month),
43
+ }, label)
44
+ : h('div', { class: 'year-month__header' }, label),
45
+ h('div', { class: 'year-month__day-headers' }, config.locale.dayNamesShort.map(n => h('div', { key: n, class: 'year-month__day-header' }, n[0]))),
46
+ h('div', { class: 'year-month__days' }, weeks.flatMap(week => week.map(date => {
47
+ const inMonth = getMonth(date) === month;
48
+ const isToday = isSameDay(date, today);
49
+ const hasEvents = eventDays.value.has(startOfDay(date).epochMs);
50
+ return h('button', {
51
+ key: date.epochMs,
52
+ type: 'button',
53
+ class: 'year-month__day'
54
+ + (inMonth ? '' : ' year-month__day--outside')
55
+ + (isToday ? ' year-month__day--today' : '')
56
+ + (hasEvents ? ' year-month__day--has-events' : ''),
57
+ onClick: (e) => {
58
+ const rect = e.currentTarget.getBoundingClientRect();
59
+ onDayCellClick(date, rect);
60
+ },
61
+ }, h('span', { class: 'year-month__day-num' }, String(getDayOfMonth(date))));
62
+ }))),
63
+ ])));
64
+ };
65
+ },
66
+ });
67
+ //# sourceMappingURL=YearView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"YearView.js","sourceRoot":"","sources":["../../../src/views/year/YearView.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,50 @@
1
+ {
2
+ "name": "@bimetal/calendar-vue-components",
3
+ "version": "0.29.0",
4
+ "description": "Default Vue 3 calendar UI components",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ },
13
+ "./styles": "./dist/styles/index.css"
14
+ },
15
+ "files": [
16
+ "dist",
17
+ "README.md",
18
+ "LICENSE"
19
+ ],
20
+ "scripts": {
21
+ "build": "tsc -b && node scripts/copy-css.mjs",
22
+ "dev": "tsc -b --watch",
23
+ "typecheck": "tsc --noEmit",
24
+ "test": "vitest run",
25
+ "prepublishOnly": "npm run build"
26
+ },
27
+ "dependencies": {
28
+ "@bimetal/vue": "^0.29.0",
29
+ "@bimetal/core": "^0.29.0",
30
+ "@bimetal/calendar-core": "^0.29.0",
31
+ "@bimetal/calendar-data": "^0.29.0",
32
+ "@bimetal/calendar-headless": "^0.29.0",
33
+ "@bimetal/calendar-rules": "^0.29.0",
34
+ "@bimetal/calendar-themes": "^0.29.0"
35
+ },
36
+ "peerDependencies": {
37
+ "vue": "^3.3.0"
38
+ },
39
+ "devDependencies": {
40
+ "@vue/test-utils": "^2.4.6",
41
+ "happy-dom": "^18.0.1",
42
+ "vitest": "^3.2.4",
43
+ "vue": "^3.5.13"
44
+ },
45
+ "sideEffects": [
46
+ "**/*.css"
47
+ ],
48
+ "license": "PolyForm-Noncommercial-1.0.0",
49
+ "author": "Andreas Biederbeck"
50
+ }