@mintplayer/scheduler-wc 1.0.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.
@@ -0,0 +1,223 @@
1
+ import { dateService, timelineService, resourceService, isResource, isResourceGroup, getContrastColor, } from '@mintplayer/scheduler-core';
2
+ import { BaseView } from './base-view';
3
+ /**
4
+ * Timeline view renderer
5
+ */
6
+ export class TimelineView extends BaseView {
7
+ constructor() {
8
+ super(...arguments);
9
+ this.rowElements = new Map();
10
+ this.slotWidth = 50;
11
+ }
12
+ render() {
13
+ this.clearContainer();
14
+ this.container.classList.add('scheduler-timeline-view');
15
+ const { date, options, resources, collapsedGroups } = this.state;
16
+ const days = dateService.getWeekDays(date, options.firstDayOfWeek);
17
+ // Create timeline structure
18
+ const timeline = this.createElement('div', 'scheduler-timeline');
19
+ // Header
20
+ const header = this.createElement('div', 'scheduler-timeline-header');
21
+ // Resource column header
22
+ const resourceHeader = this.createElement('div', 'scheduler-resource-header');
23
+ resourceHeader.textContent = 'Resources';
24
+ header.appendChild(resourceHeader);
25
+ // Time slots header
26
+ const slotsHeader = this.createElement('div', 'scheduler-timeline-slots-header');
27
+ for (const day of days) {
28
+ const slots = dateService.getTimeSlots(day, options.slotDuration, options.slotMinTime, options.slotMaxTime);
29
+ // Day header spanning multiple slots
30
+ const daySlots = slots.length;
31
+ const dayHeader = this.createElement('div', 'scheduler-timeline-slot-header');
32
+ dayHeader.style.width = `${daySlots * this.slotWidth}px`;
33
+ dayHeader.textContent = dateService.formatDateWithWeekday(day, options.locale);
34
+ dayHeader.style.borderBottom = '1px solid var(--scheduler-border-color)';
35
+ slotsHeader.appendChild(dayHeader);
36
+ }
37
+ header.appendChild(slotsHeader);
38
+ timeline.appendChild(header);
39
+ // Time labels row
40
+ const timeLabelRow = this.createElement('div', 'scheduler-timeline-header');
41
+ const emptyCell = this.createElement('div', 'scheduler-resource-header');
42
+ emptyCell.style.borderBottom = '1px solid var(--scheduler-border-color)';
43
+ timeLabelRow.appendChild(emptyCell);
44
+ const timeLabelsContainer = this.createElement('div', 'scheduler-timeline-slots-header');
45
+ for (const day of days) {
46
+ const slots = dateService.getTimeSlots(day, options.slotDuration, options.slotMinTime, options.slotMaxTime);
47
+ for (const slot of slots) {
48
+ const slotHeader = this.createElement('div', 'scheduler-timeline-slot-header');
49
+ slotHeader.style.width = `${this.slotWidth}px`;
50
+ slotHeader.textContent = dateService.formatTime(slot.start, options.timeFormat);
51
+ slotHeader.style.fontSize = '10px';
52
+ timeLabelsContainer.appendChild(slotHeader);
53
+ }
54
+ }
55
+ timeLabelRow.appendChild(timeLabelsContainer);
56
+ timeline.appendChild(timeLabelRow);
57
+ // Body
58
+ const body = this.createElement('div', 'scheduler-timeline-body');
59
+ // Flatten resources
60
+ const flattened = resourceService.flatten(resources, collapsedGroups);
61
+ for (const flat of flattened) {
62
+ if (!flat.visible)
63
+ continue;
64
+ const row = this.createResourceRow(flat, days);
65
+ body.appendChild(row);
66
+ }
67
+ timeline.appendChild(body);
68
+ this.container.appendChild(timeline);
69
+ // Render events
70
+ this.renderEvents(days);
71
+ }
72
+ createResourceRow(flat, days) {
73
+ const { options } = this.state;
74
+ const row = this.createElement('div', 'scheduler-timeline-row');
75
+ if (isResourceGroup(flat.item)) {
76
+ row.classList.add('group');
77
+ }
78
+ // Resource cell
79
+ const resourceCell = this.createElement('div', 'scheduler-resource-cell');
80
+ resourceCell.style.paddingLeft = `${8 + flat.depth * 16}px`;
81
+ if (isResourceGroup(flat.item)) {
82
+ const toggle = this.createElement('span', 'expand-toggle');
83
+ toggle.textContent = this.state.collapsedGroups.has(flat.item.id) ? '▶' : '▼';
84
+ this.setData(toggle, { groupId: flat.item.id });
85
+ resourceCell.appendChild(toggle);
86
+ }
87
+ const title = this.createElement('span');
88
+ title.textContent = flat.item.title;
89
+ resourceCell.appendChild(title);
90
+ row.appendChild(resourceCell);
91
+ // Slots container
92
+ const slotsContainer = this.createElement('div', 'scheduler-timeline-slots');
93
+ for (const day of days) {
94
+ const slots = dateService.getTimeSlots(day, options.slotDuration, options.slotMinTime, options.slotMaxTime);
95
+ for (const slot of slots) {
96
+ const slotEl = this.createElement('div', 'scheduler-timeline-slot');
97
+ slotEl.style.width = `${this.slotWidth}px`;
98
+ this.setData(slotEl, {
99
+ resourceId: flat.item.id,
100
+ start: slot.start.toISOString(),
101
+ end: slot.end.toISOString(),
102
+ });
103
+ slotsContainer.appendChild(slotEl);
104
+ }
105
+ }
106
+ // Events container for this row
107
+ if (isResource(flat.item)) {
108
+ const eventsContainer = this.createElement('div', 'scheduler-timeline-events');
109
+ slotsContainer.appendChild(eventsContainer);
110
+ }
111
+ row.appendChild(slotsContainer);
112
+ this.rowElements.set(flat.item.id, row);
113
+ return row;
114
+ }
115
+ renderEvents(days) {
116
+ var _a, _b;
117
+ const { events, resources, options, collapsedGroups } = this.state;
118
+ const weekStart = days[0];
119
+ const weekEnd = new Date(days[6]);
120
+ weekEnd.setHours(23, 59, 59, 999);
121
+ // Get total slots per day
122
+ const slotsPerDay = dateService.getTimeSlots(days[0], options.slotDuration, options.slotMinTime, options.slotMaxTime).length;
123
+ const totalSlots = slotsPerDay * 7;
124
+ const totalWidth = totalSlots * this.slotWidth;
125
+ // Get all resources
126
+ const allResources = resourceService.getAllResources(resources);
127
+ for (const resource of allResources) {
128
+ const row = this.rowElements.get(resource.id);
129
+ if (!row)
130
+ continue;
131
+ const eventsContainer = row.querySelector('.scheduler-timeline-events');
132
+ if (!eventsContainer)
133
+ continue;
134
+ // Clear existing events
135
+ eventsContainer.innerHTML = '';
136
+ // Get events for this resource
137
+ const resourceEvents = ((_a = resource.events) !== null && _a !== void 0 ? _a : []).filter((e) => e.start < weekEnd && e.end > weekStart);
138
+ // Get timeline tracks for this resource's events
139
+ const tracks = timelineService.getTimeline(resourceEvents);
140
+ for (const track of tracks) {
141
+ for (const event of track.events) {
142
+ const eventEl = this.createEventElement(event, track.index, tracks.length, weekStart, totalWidth, (_b = options.slotDuration) !== null && _b !== void 0 ? _b : 1800);
143
+ eventsContainer.appendChild(eventEl);
144
+ }
145
+ }
146
+ }
147
+ }
148
+ createEventElement(event, trackIndex, totalTracks, viewStart, totalWidth, slotDuration) {
149
+ var _a, _b, _c, _d;
150
+ const eventEl = this.createElement('div', 'scheduler-timeline-event');
151
+ // Mark as selected if this is the selected event
152
+ if (((_a = this.state.selectedEvent) === null || _a === void 0 ? void 0 : _a.id) === event.id) {
153
+ eventEl.classList.add('selected');
154
+ }
155
+ // Clamp event to view bounds
156
+ const eventStart = Math.max(event.start.getTime(), viewStart.getTime());
157
+ const viewEndTime = viewStart.getTime() + 7 * 24 * 60 * 60 * 1000;
158
+ const eventEnd = Math.min(event.end.getTime(), viewEndTime);
159
+ // Calculate position
160
+ const startOffset = eventStart - viewStart.getTime();
161
+ const duration = eventEnd - eventStart;
162
+ const viewDuration = viewEndTime - viewStart.getTime();
163
+ const left = (startOffset / viewDuration) * totalWidth;
164
+ const width = Math.max((duration / viewDuration) * totalWidth, 20);
165
+ // Calculate vertical position based on track
166
+ const trackHeight = 100 / Math.max(totalTracks, 1);
167
+ const top = trackIndex * trackHeight;
168
+ eventEl.style.left = `${left}px`;
169
+ eventEl.style.width = `${width}px`;
170
+ eventEl.style.top = `${top}%`;
171
+ eventEl.style.height = `${trackHeight}%`;
172
+ eventEl.style.backgroundColor = (_b = event.color) !== null && _b !== void 0 ? _b : '#3788d8';
173
+ eventEl.style.color = (_c = event.textColor) !== null && _c !== void 0 ? _c : getContrastColor((_d = event.color) !== null && _d !== void 0 ? _d : '#3788d8');
174
+ this.setData(eventEl, { eventId: event.id });
175
+ eventEl.textContent = event.title;
176
+ return eventEl;
177
+ }
178
+ update(state) {
179
+ const dateChanged = this.state.date.getTime() !== state.date.getTime();
180
+ const optionsChanged = this.optionsRequireRerender(this.state.options, state.options);
181
+ this.state = state;
182
+ // If date or relevant options changed, we need to re-render the entire view
183
+ if (dateChanged || optionsChanged) {
184
+ this.render();
185
+ return;
186
+ }
187
+ // Update greyed slots
188
+ this.updateGreyedSlots();
189
+ // Re-render events
190
+ const days = dateService.getWeekDays(state.date, state.options.firstDayOfWeek);
191
+ this.renderEvents(days);
192
+ }
193
+ optionsRequireRerender(oldOpts, newOpts) {
194
+ return oldOpts.slotDuration !== newOpts.slotDuration ||
195
+ oldOpts.timeFormat !== newOpts.timeFormat ||
196
+ oldOpts.firstDayOfWeek !== newOpts.firstDayOfWeek ||
197
+ oldOpts.slotMinTime !== newOpts.slotMinTime ||
198
+ oldOpts.slotMaxTime !== newOpts.slotMaxTime ||
199
+ oldOpts.locale !== newOpts.locale;
200
+ }
201
+ updateGreyedSlots() {
202
+ const { dragState, previewEvent } = this.state;
203
+ // Clear all greyed slots
204
+ const allSlots = this.container.querySelectorAll('.scheduler-timeline-slot');
205
+ allSlots.forEach((slot) => slot.classList.remove('greyed'));
206
+ if (!dragState || !previewEvent)
207
+ return;
208
+ // Grey out slots that overlap with the preview
209
+ allSlots.forEach((slot) => {
210
+ var _a, _b;
211
+ const slotStart = new Date((_a = slot.dataset['start']) !== null && _a !== void 0 ? _a : '');
212
+ const slotEnd = new Date((_b = slot.dataset['end']) !== null && _b !== void 0 ? _b : '');
213
+ if (slotStart < previewEvent.end && slotEnd > previewEvent.start) {
214
+ slot.classList.add('greyed');
215
+ }
216
+ });
217
+ }
218
+ destroy() {
219
+ this.rowElements.clear();
220
+ this.clearContainer();
221
+ }
222
+ }
223
+ //# sourceMappingURL=timeline-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeline-view.js","sourceRoot":"","sources":["../../../../../libs/mp-scheduler-wc/src/views/timeline-view.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { BaseView } from './base-view';
2
+ import { SchedulerState } from '../state/scheduler-state';
3
+ /**
4
+ * Week view renderer
5
+ */
6
+ export declare class WeekView extends BaseView {
7
+ private dayColumns;
8
+ private eventElements;
9
+ private slotElements;
10
+ render(): void;
11
+ update(state: SchedulerState): void;
12
+ private optionsRequireRerender;
13
+ private renderEvents;
14
+ private createEventElement;
15
+ private renderPreviewEvent;
16
+ private updateGreyedSlots;
17
+ private renderNowIndicator;
18
+ destroy(): void;
19
+ }
@@ -0,0 +1,299 @@
1
+ import { dateService, timelineService, getContrastColor, } from '@mintplayer/scheduler-core';
2
+ import { BaseView } from './base-view';
3
+ /**
4
+ * Week view renderer
5
+ */
6
+ export class WeekView extends BaseView {
7
+ constructor() {
8
+ super(...arguments);
9
+ this.dayColumns = [];
10
+ this.eventElements = new Map();
11
+ this.slotElements = new Map();
12
+ }
13
+ render() {
14
+ this.clearContainer();
15
+ this.container.classList.add('scheduler-week-view');
16
+ const { date, options } = this.state;
17
+ const days = dateService.getWeekDays(date, options.firstDayOfWeek);
18
+ // Create day headers
19
+ const headers = this.createElement('div', 'scheduler-day-headers');
20
+ // Add time gutter space
21
+ const gutterSpace = this.createElement('div', 'scheduler-time-gutter-space');
22
+ gutterSpace.style.width = 'var(--scheduler-time-gutter-width)';
23
+ headers.appendChild(gutterSpace);
24
+ for (const day of days) {
25
+ const header = this.createElement('div', 'scheduler-day-header');
26
+ if (dateService.isToday(day)) {
27
+ header.classList.add('today');
28
+ }
29
+ const dayName = this.createElement('div', 'day-name');
30
+ dayName.textContent = dateService.getDayName(day, options.locale);
31
+ const dayNumber = this.createElement('div', 'day-number');
32
+ dayNumber.textContent = String(day.getDate());
33
+ header.appendChild(dayName);
34
+ header.appendChild(dayNumber);
35
+ headers.appendChild(header);
36
+ }
37
+ this.container.appendChild(headers);
38
+ // Create time grid
39
+ const timeGrid = this.createElement('div', 'scheduler-time-grid');
40
+ // Time gutter
41
+ const timeGutter = this.createElement('div', 'scheduler-time-gutter');
42
+ const slots = dateService.getTimeSlots(days[0], options.slotDuration, options.slotMinTime, options.slotMaxTime);
43
+ for (const slot of slots) {
44
+ const label = this.createElement('div', 'scheduler-time-slot-label');
45
+ label.textContent = dateService.formatTime(slot.start, options.timeFormat);
46
+ timeGutter.appendChild(label);
47
+ }
48
+ timeGrid.appendChild(timeGutter);
49
+ // Days container
50
+ const daysContainer = this.createElement('div', 'scheduler-days-container');
51
+ this.dayColumns = [];
52
+ for (let dayIndex = 0; dayIndex < days.length; dayIndex++) {
53
+ const day = days[dayIndex];
54
+ const dayColumn = this.createElement('div', 'scheduler-day-column');
55
+ this.setData(dayColumn, { dayIndex });
56
+ // Create time slots
57
+ for (let slotIndex = 0; slotIndex < slots.length; slotIndex++) {
58
+ const slotTemplate = slots[slotIndex];
59
+ const slotStart = new Date(day);
60
+ slotStart.setHours(slotTemplate.start.getHours(), slotTemplate.start.getMinutes(), 0, 0);
61
+ const slotEnd = new Date(day);
62
+ slotEnd.setHours(slotTemplate.end.getHours(), slotTemplate.end.getMinutes(), 0, 0);
63
+ const slotEl = this.createElement('div', 'scheduler-time-slot');
64
+ this.setData(slotEl, {
65
+ dayIndex,
66
+ slotIndex,
67
+ start: slotStart.toISOString(),
68
+ end: slotEnd.toISOString(),
69
+ });
70
+ const key = `${dayIndex}-${slotIndex}`;
71
+ this.slotElements.set(key, slotEl);
72
+ dayColumn.appendChild(slotEl);
73
+ }
74
+ // Events container for this day
75
+ const eventsContainer = this.createElement('div', 'scheduler-events-container');
76
+ dayColumn.appendChild(eventsContainer);
77
+ this.dayColumns.push(dayColumn);
78
+ daysContainer.appendChild(dayColumn);
79
+ }
80
+ timeGrid.appendChild(daysContainer);
81
+ this.container.appendChild(timeGrid);
82
+ // Render events
83
+ this.renderEvents();
84
+ // Render now indicator
85
+ this.renderNowIndicator(days, slots);
86
+ }
87
+ update(state) {
88
+ var _a, _b;
89
+ const dateChanged = this.state.date.getTime() !== state.date.getTime();
90
+ const optionsChanged = this.optionsRequireRerender(this.state.options, state.options);
91
+ const selectionChanged = ((_a = this.state.selectedEvent) === null || _a === void 0 ? void 0 : _a.id) !== ((_b = state.selectedEvent) === null || _b === void 0 ? void 0 : _b.id);
92
+ this.state = state;
93
+ // If date or relevant options changed, we need to re-render the entire view
94
+ if (dateChanged || optionsChanged) {
95
+ this.render();
96
+ return;
97
+ }
98
+ // Update greyed slots based on drag state
99
+ this.updateGreyedSlots();
100
+ // Re-render events if selection changed or needed
101
+ if (selectionChanged) {
102
+ this.renderEvents();
103
+ }
104
+ else {
105
+ this.renderEvents();
106
+ }
107
+ // Render preview event
108
+ this.renderPreviewEvent();
109
+ }
110
+ optionsRequireRerender(oldOpts, newOpts) {
111
+ return oldOpts.slotDuration !== newOpts.slotDuration ||
112
+ oldOpts.timeFormat !== newOpts.timeFormat ||
113
+ oldOpts.firstDayOfWeek !== newOpts.firstDayOfWeek ||
114
+ oldOpts.slotMinTime !== newOpts.slotMinTime ||
115
+ oldOpts.slotMaxTime !== newOpts.slotMaxTime ||
116
+ oldOpts.locale !== newOpts.locale;
117
+ }
118
+ renderEvents() {
119
+ var _a;
120
+ const { date, events, options } = this.state;
121
+ const days = dateService.getWeekDays(date, options.firstDayOfWeek);
122
+ const weekStart = days[0];
123
+ const weekEnd = new Date(days[6]);
124
+ weekEnd.setHours(23, 59, 59, 999);
125
+ // Filter events for this week
126
+ const weekEvents = timelineService.filterByRange(events, weekStart, weekEnd);
127
+ // Split events into parts and get timeline
128
+ const allParts = [];
129
+ for (const event of weekEvents) {
130
+ const { parts } = timelineService.splitInParts(event);
131
+ allParts.push(...parts);
132
+ }
133
+ // Filter parts for this week
134
+ const weekParts = timelineService.filterPartsByRange(allParts, weekStart, weekEnd);
135
+ // Get timelened parts with track info
136
+ const timelinedParts = timelineService.getTimelinedParts(weekParts);
137
+ // Clear existing events
138
+ this.eventElements.forEach((el) => el.remove());
139
+ this.eventElements.clear();
140
+ // Render each event part
141
+ for (const { part, trackIndex, totalTracks } of timelinedParts) {
142
+ if (!part.event)
143
+ continue;
144
+ const dayIndex = days.findIndex((d) => dateService.isSameDay(d, part.start));
145
+ if (dayIndex === -1)
146
+ continue;
147
+ const dayColumn = this.dayColumns[dayIndex];
148
+ const eventsContainer = dayColumn.querySelector('.scheduler-events-container');
149
+ if (!eventsContainer)
150
+ continue;
151
+ const eventEl = this.createEventElement(part, trackIndex, totalTracks, (_a = options.slotDuration) !== null && _a !== void 0 ? _a : 1800);
152
+ eventsContainer.appendChild(eventEl);
153
+ this.eventElements.set(part.id, eventEl);
154
+ }
155
+ }
156
+ createEventElement(part, trackIndex, totalTracks, slotDuration) {
157
+ var _a, _b, _c, _d;
158
+ const event = part.event;
159
+ const eventEl = this.createElement('div', 'scheduler-event');
160
+ // Mark as selected if this is the selected event
161
+ if (((_a = this.state.selectedEvent) === null || _a === void 0 ? void 0 : _a.id) === event.id) {
162
+ eventEl.classList.add('selected');
163
+ }
164
+ // Calculate position
165
+ const dayStart = new Date(part.start);
166
+ dayStart.setHours(0, 0, 0, 0);
167
+ const startMinutes = (part.start.getTime() - dayStart.getTime()) / (1000 * 60);
168
+ const endMinutes = (part.end.getTime() - dayStart.getTime()) / (1000 * 60);
169
+ const durationMinutes = endMinutes - startMinutes;
170
+ const slotMinutes = slotDuration / 60;
171
+ const top = (startMinutes / slotMinutes) * 40; // 40px per slot
172
+ const height = Math.max((durationMinutes / slotMinutes) * 40, 20);
173
+ // Calculate width based on tracks
174
+ const widthPercent = 100 / totalTracks;
175
+ const leftPercent = trackIndex * widthPercent;
176
+ eventEl.style.top = `${top}px`;
177
+ eventEl.style.height = `${height}px`;
178
+ eventEl.style.left = `${leftPercent}%`;
179
+ eventEl.style.width = `calc(${widthPercent}% - 2px)`;
180
+ eventEl.style.backgroundColor = (_b = event.color) !== null && _b !== void 0 ? _b : '#3788d8';
181
+ eventEl.style.color = (_c = event.textColor) !== null && _c !== void 0 ? _c : getContrastColor((_d = event.color) !== null && _d !== void 0 ? _d : '#3788d8');
182
+ this.setData(eventEl, { eventId: event.id });
183
+ // Title
184
+ const title = this.createElement('div', 'event-title');
185
+ title.textContent = event.title;
186
+ eventEl.appendChild(title);
187
+ // Time
188
+ const timeEl = this.createElement('div', 'event-time');
189
+ timeEl.textContent = `${dateService.formatTime(part.start, this.state.options.timeFormat)} - ${dateService.formatTime(part.end, this.state.options.timeFormat)}`;
190
+ eventEl.appendChild(timeEl);
191
+ // Resize handles
192
+ if (event.resizable !== false) {
193
+ if (part.isStart) {
194
+ const topHandle = this.createElement('div', 'resize-handle', 'top');
195
+ this.setData(topHandle, { handle: 'start' });
196
+ eventEl.appendChild(topHandle);
197
+ }
198
+ if (part.isEnd) {
199
+ const bottomHandle = this.createElement('div', 'resize-handle', 'bottom');
200
+ this.setData(bottomHandle, { handle: 'end' });
201
+ eventEl.appendChild(bottomHandle);
202
+ }
203
+ }
204
+ return eventEl;
205
+ }
206
+ renderPreviewEvent() {
207
+ var _a;
208
+ // Remove existing preview
209
+ const existingPreview = this.container.querySelector('.scheduler-event.preview');
210
+ if (existingPreview) {
211
+ existingPreview.remove();
212
+ }
213
+ const { previewEvent, options, date } = this.state;
214
+ if (!previewEvent)
215
+ return;
216
+ const days = dateService.getWeekDays(date, options.firstDayOfWeek);
217
+ const dayIndex = days.findIndex((d) => dateService.isSameDay(d, previewEvent.start));
218
+ if (dayIndex === -1)
219
+ return;
220
+ const dayColumn = this.dayColumns[dayIndex];
221
+ const eventsContainer = dayColumn === null || dayColumn === void 0 ? void 0 : dayColumn.querySelector('.scheduler-events-container');
222
+ if (!eventsContainer)
223
+ return;
224
+ const previewEl = this.createElement('div', 'scheduler-event', 'preview');
225
+ const dayStart = new Date(previewEvent.start);
226
+ dayStart.setHours(0, 0, 0, 0);
227
+ const startMinutes = (previewEvent.start.getTime() - dayStart.getTime()) / (1000 * 60);
228
+ const endMinutes = (previewEvent.end.getTime() - dayStart.getTime()) / (1000 * 60);
229
+ const durationMinutes = endMinutes - startMinutes;
230
+ const slotMinutes = ((_a = options.slotDuration) !== null && _a !== void 0 ? _a : 1800) / 60;
231
+ const top = (startMinutes / slotMinutes) * 40;
232
+ const height = Math.max((durationMinutes / slotMinutes) * 40, 20);
233
+ previewEl.style.top = `${top}px`;
234
+ previewEl.style.height = `${height}px`;
235
+ previewEl.style.left = '0';
236
+ previewEl.style.width = '100%';
237
+ eventsContainer.appendChild(previewEl);
238
+ }
239
+ updateGreyedSlots() {
240
+ const { dragState, previewEvent, options, date } = this.state;
241
+ // Clear all greyed slots
242
+ this.slotElements.forEach((el) => el.classList.remove('greyed'));
243
+ if (!dragState || !previewEvent)
244
+ return;
245
+ const days = dateService.getWeekDays(date, options.firstDayOfWeek);
246
+ const slots = dateService.getTimeSlots(days[0], options.slotDuration, options.slotMinTime, options.slotMaxTime);
247
+ // Find affected slots
248
+ for (let dayIndex = 0; dayIndex < days.length; dayIndex++) {
249
+ const day = days[dayIndex];
250
+ if (!dateService.isSameDay(day, previewEvent.start) &&
251
+ !dateService.isSameDay(day, previewEvent.end)) {
252
+ continue;
253
+ }
254
+ for (let slotIndex = 0; slotIndex < slots.length; slotIndex++) {
255
+ const slotTemplate = slots[slotIndex];
256
+ const slotStart = new Date(day);
257
+ slotStart.setHours(slotTemplate.start.getHours(), slotTemplate.start.getMinutes(), 0, 0);
258
+ const slotEnd = new Date(day);
259
+ slotEnd.setHours(slotTemplate.end.getHours(), slotTemplate.end.getMinutes(), 0, 0);
260
+ // Check if slot overlaps with preview event
261
+ if (slotStart < previewEvent.end && slotEnd > previewEvent.start) {
262
+ const key = `${dayIndex}-${slotIndex}`;
263
+ const slotEl = this.slotElements.get(key);
264
+ if (slotEl) {
265
+ slotEl.classList.add('greyed');
266
+ }
267
+ }
268
+ }
269
+ }
270
+ }
271
+ renderNowIndicator(days, slots) {
272
+ var _a;
273
+ if (!this.state.options.nowIndicator)
274
+ return;
275
+ const now = new Date();
276
+ const todayIndex = days.findIndex((d) => dateService.isSameDay(d, now));
277
+ if (todayIndex === -1)
278
+ return;
279
+ const dayColumn = this.dayColumns[todayIndex];
280
+ if (!dayColumn)
281
+ return;
282
+ // Calculate position
283
+ const dayStart = new Date(now);
284
+ dayStart.setHours(0, 0, 0, 0);
285
+ const minutesFromMidnight = (now.getTime() - dayStart.getTime()) / (1000 * 60);
286
+ const slotMinutes = ((_a = this.state.options.slotDuration) !== null && _a !== void 0 ? _a : 1800) / 60;
287
+ const top = (minutesFromMidnight / slotMinutes) * 40;
288
+ const indicator = this.createElement('div', 'scheduler-now-indicator');
289
+ indicator.style.top = `${top}px`;
290
+ dayColumn.appendChild(indicator);
291
+ }
292
+ destroy() {
293
+ this.eventElements.clear();
294
+ this.slotElements.clear();
295
+ this.dayColumns = [];
296
+ this.clearContainer();
297
+ }
298
+ }
299
+ //# sourceMappingURL=week-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"week-view.js","sourceRoot":"","sources":["../../../../../libs/mp-scheduler-wc/src/views/week-view.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { BaseView } from './base-view';
2
+ import { SchedulerState } from '../state/scheduler-state';
3
+ /**
4
+ * Year view renderer
5
+ */
6
+ export declare class YearView extends BaseView {
7
+ render(): void;
8
+ private createMonthCard;
9
+ update(state: SchedulerState): void;
10
+ destroy(): void;
11
+ }