@bimetal/calendar-angular-components 0.35.0 → 0.36.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/dist/binding/controller.d.ts +10 -1
- package/dist/binding/controller.d.ts.map +1 -1
- package/dist/binding/controller.js +11 -1
- package/dist/binding/controller.js.map +1 -1
- package/dist/binding/index.d.ts +4 -2
- package/dist/binding/index.d.ts.map +1 -1
- package/dist/binding/index.js +5 -2
- package/dist/binding/index.js.map +1 -1
- package/dist/binding/services/pointer-gesture.service.d.ts +26 -0
- package/dist/binding/services/pointer-gesture.service.d.ts.map +1 -0
- package/dist/binding/services/pointer-gesture.service.js +37 -0
- package/dist/binding/services/pointer-gesture.service.js.map +1 -0
- package/dist/components/Calendar.d.ts +21 -4
- package/dist/components/Calendar.d.ts.map +1 -1
- package/dist/components/Calendar.js +121 -30
- package/dist/components/Calendar.js.map +1 -1
- package/dist/components/CalendarHeader.d.ts +3 -0
- package/dist/components/CalendarHeader.d.ts.map +1 -1
- package/dist/components/CalendarHeader.js +10 -4
- package/dist/components/CalendarHeader.js.map +1 -1
- package/dist/components/CategoryFilter.d.ts +3 -0
- package/dist/components/CategoryFilter.d.ts.map +1 -1
- package/dist/components/CategoryFilter.js +9 -5
- package/dist/components/CategoryFilter.js.map +1 -1
- package/dist/components/EventBar.d.ts +11 -4
- package/dist/components/EventBar.d.ts.map +1 -1
- package/dist/components/EventBar.js +87 -32
- package/dist/components/EventBar.js.map +1 -1
- package/dist/components/EventDialog.d.ts +6 -4
- package/dist/components/EventDialog.d.ts.map +1 -1
- package/dist/components/EventDialog.js +81 -44
- package/dist/components/EventDialog.js.map +1 -1
- package/dist/components/EventHistory.d.ts +14 -10
- package/dist/components/EventHistory.d.ts.map +1 -1
- package/dist/components/EventHistory.js +59 -56
- package/dist/components/EventHistory.js.map +1 -1
- package/dist/styles/index.css.d.ts +3 -0
- package/dist/views/day/DayView.d.ts +26 -4
- package/dist/views/day/DayView.d.ts.map +1 -1
- package/dist/views/day/DayView.js +56 -17
- package/dist/views/day/DayView.js.map +1 -1
- package/dist/views/month/MonthView.d.ts +14 -3
- package/dist/views/month/MonthView.d.ts.map +1 -1
- package/dist/views/month/MonthView.js +55 -7
- package/dist/views/month/MonthView.js.map +1 -1
- package/dist/views/month/WeekRow.d.ts +19 -3
- package/dist/views/month/WeekRow.d.ts.map +1 -1
- package/dist/views/month/WeekRow.js +73 -34
- package/dist/views/month/WeekRow.js.map +1 -1
- package/dist/views/resource/ResourceView.d.ts +28 -1
- package/dist/views/resource/ResourceView.d.ts.map +1 -1
- package/dist/views/resource/ResourceView.js +78 -21
- package/dist/views/resource/ResourceView.js.map +1 -1
- package/dist/views/timeline/TimelineView.d.ts +25 -3
- package/dist/views/timeline/TimelineView.d.ts.map +1 -1
- package/dist/views/timeline/TimelineView.js +77 -16
- package/dist/views/timeline/TimelineView.js.map +1 -1
- package/dist/views/week/AllDayRow.d.ts +16 -3
- package/dist/views/week/AllDayRow.d.ts.map +1 -1
- package/dist/views/week/AllDayRow.js +47 -10
- package/dist/views/week/AllDayRow.js.map +1 -1
- package/dist/views/week/TimeEvent.d.ts +11 -4
- package/dist/views/week/TimeEvent.d.ts.map +1 -1
- package/dist/views/week/TimeEvent.js +76 -26
- package/dist/views/week/TimeEvent.js.map +1 -1
- package/dist/views/week/WeekView.d.ts +16 -1
- package/dist/views/week/WeekView.d.ts.map +1 -1
- package/dist/views/week/WeekView.js +53 -18
- package/dist/views/week/WeekView.js.map +1 -1
- package/dist/views/year/YearView.d.ts +2 -0
- package/dist/views/year/YearView.d.ts.map +1 -1
- package/dist/views/year/YearView.js +17 -1
- package/dist/views/year/YearView.js.map +1 -1
- package/package.json +15 -12
|
@@ -2,11 +2,13 @@ import { Component, Input, Output, EventEmitter, ViewChild, ElementRef } from '@
|
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { isSameDay, now, startOfDay, addDays, getHours, getMinutes, createTimeRange, overlaps, formatDateTime } from '@bimetal/temporal';
|
|
4
4
|
import { segmentTimed, layoutTimed, getRecurrenceInstanceMetadata } from '@bimetal/calendar-core';
|
|
5
|
-
import {
|
|
5
|
+
import { colFromTimeGridX } from '@bimetal/calendar-headless';
|
|
6
|
+
import { snapTimeFromMouseY, CalendarPointerGestureService } from '../../binding/index.js';
|
|
6
7
|
import { DEFAULT_HOUR_HEIGHT, DEFAULT_TIME_LABEL_WIDTH_DAY, DEFAULT_SCROLL_HOUR, createClickIntent } from '@bimetal/calendar-headless';
|
|
7
8
|
import { TimeEventComponent } from '../week/TimeEvent.js';
|
|
8
9
|
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "
|
|
10
|
+
import * as i1 from "../../binding/index.js";
|
|
11
|
+
import * as i2 from "@angular/common";
|
|
10
12
|
const _c0 = ["timeGridEl"];
|
|
11
13
|
const _c1 = ["gridInnerEl"];
|
|
12
14
|
function ResourceViewComponent_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -59,7 +61,7 @@ function ResourceViewComponent_ng_template_1_div_12_Template(rf, ctx) { if (rf &
|
|
|
59
61
|
} if (rf & 2) {
|
|
60
62
|
const i_r7 = ctx.index;
|
|
61
63
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
62
|
-
i0.ɵɵstyleProp("
|
|
64
|
+
i0.ɵɵstyleProp("inset-inline-start", ctx_r0.colLeft(i_r7))("width", ctx_r0.colWidth);
|
|
63
65
|
} }
|
|
64
66
|
function ResourceViewComponent_ng_template_1_cal_time_event_13_Template(rf, ctx) { if (rf & 1) {
|
|
65
67
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
@@ -69,7 +71,7 @@ function ResourceViewComponent_ng_template_1_cal_time_event_13_Template(rf, ctx)
|
|
|
69
71
|
} if (rf & 2) {
|
|
70
72
|
const entry_r9 = ctx.$implicit;
|
|
71
73
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
72
|
-
i0.ɵɵproperty("event", entry_r9.event)("dayCol", entry_r9.layout.dayCol)("dayCount", entry_r9.layout.dayCount)("lane", entry_r9.layout.lane)("laneCount", entry_r9.layout.laneCount)("startOffset", entry_r9.layout.startOffset)("endOffset", entry_r9.layout.endOffset)("dayDate", ctx_r0.currentDate)("hourHeight", ctx_r0.hourHeight)("timeLabelWidth", ctx_r0.timeLabelWidth)("ghost", (ctx_r0.previewEvent == null ? null : ctx_r0.previewEvent.id) === entry_r9.event.id)("clickThresholdMs", ctx_r0.config.clickThresholdMs)("locale", ctx_r0.config.locale)("snapMinutes", ctx_r0.config.core.granularity.day.minutes)("isSelected", ctx_r0.isTimeSelected(entry_r9.event));
|
|
74
|
+
i0.ɵɵproperty("config", ctx_r0.config)("event", entry_r9.event)("dayCol", entry_r9.layout.dayCol)("dayCount", entry_r9.layout.dayCount)("lane", entry_r9.layout.lane)("laneCount", entry_r9.layout.laneCount)("startOffset", entry_r9.layout.startOffset)("endOffset", entry_r9.layout.endOffset)("dayDate", ctx_r0.currentDate)("hourHeight", ctx_r0.hourHeight)("timeLabelWidth", ctx_r0.timeLabelWidth)("ghost", (ctx_r0.previewEvent == null ? null : ctx_r0.previewEvent.id) === entry_r9.event.id)("clickThresholdMs", ctx_r0.config.clickThresholdMs)("locale", ctx_r0.config.locale)("snapMinutes", ctx_r0.config.core.granularity.day.minutes)("isSelected", ctx_r0.isTimeSelected(entry_r9.event));
|
|
73
75
|
} }
|
|
74
76
|
function ResourceViewComponent_ng_template_1_div_14_Template(rf, ctx) { if (rf & 1) {
|
|
75
77
|
i0.ɵɵelementStart(0, "div", 24);
|
|
@@ -77,7 +79,7 @@ function ResourceViewComponent_ng_template_1_div_14_Template(rf, ctx) { if (rf &
|
|
|
77
79
|
i0.ɵɵelementEnd();
|
|
78
80
|
} if (rf & 2) {
|
|
79
81
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
80
|
-
i0.ɵɵstyleProp("top", ctx_r0.nowHours * ctx_r0.hourHeight, "px")("
|
|
82
|
+
i0.ɵɵstyleProp("top", ctx_r0.nowHours * ctx_r0.hourHeight, "px")("inset-inline-start", ctx_r0.timeLabelWidth, "px");
|
|
81
83
|
} }
|
|
82
84
|
function ResourceViewComponent_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
83
85
|
const _r2 = i0.ɵɵgetCurrentView();
|
|
@@ -90,7 +92,7 @@ function ResourceViewComponent_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
|
90
92
|
i0.ɵɵelementEnd()();
|
|
91
93
|
i0.ɵɵelementStart(7, "div", 11, 1)(9, "div", 12, 2);
|
|
92
94
|
i0.ɵɵlistener("dragover", function ResourceViewComponent_ng_template_1_Template_div_dragover_9_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.onGridDragOver($event)); })("drop", function ResourceViewComponent_ng_template_1_Template_div_drop_9_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.onGridDrop($event)); })("dragleave", function ResourceViewComponent_ng_template_1_Template_div_dragleave_9_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.onGridDragLeave($event)); });
|
|
93
|
-
i0.ɵɵtemplate(11, ResourceViewComponent_ng_template_1_div_11_Template, 3, 7, "div", 13)(12, ResourceViewComponent_ng_template_1_div_12_Template, 1, 4, "div", 14)(13, ResourceViewComponent_ng_template_1_cal_time_event_13_Template, 1,
|
|
95
|
+
i0.ɵɵtemplate(11, ResourceViewComponent_ng_template_1_div_11_Template, 3, 7, "div", 13)(12, ResourceViewComponent_ng_template_1_div_12_Template, 1, 4, "div", 14)(13, ResourceViewComponent_ng_template_1_cal_time_event_13_Template, 1, 16, "cal-time-event", 15)(14, ResourceViewComponent_ng_template_1_div_14_Template, 2, 4, "div", 16);
|
|
94
96
|
i0.ɵɵelementEnd()()();
|
|
95
97
|
} if (rf & 2) {
|
|
96
98
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -107,7 +109,7 @@ function ResourceViewComponent_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
|
107
109
|
i0.ɵɵadvance();
|
|
108
110
|
i0.ɵɵproperty("ngForOf", ctx_r0.visibleResources)("ngForTrackBy", ctx_r0.trackResource);
|
|
109
111
|
i0.ɵɵadvance();
|
|
110
|
-
i0.ɵɵproperty("ngForOf", ctx_r0.timedEntries);
|
|
112
|
+
i0.ɵɵproperty("ngForOf", ctx_r0.timedEntries)("ngForTrackBy", ctx_r0.trackTimed);
|
|
111
113
|
i0.ɵɵadvance();
|
|
112
114
|
i0.ɵɵproperty("ngIf", ctx_r0.isToday);
|
|
113
115
|
} }
|
|
@@ -117,6 +119,10 @@ const HOURS = Array.from({ length: 24 }, (_, i) => i);
|
|
|
117
119
|
* with its own overlap-lane layout of timed events.
|
|
118
120
|
*/
|
|
119
121
|
export class ResourceViewComponent {
|
|
122
|
+
gesture;
|
|
123
|
+
constructor(gesture) {
|
|
124
|
+
this.gesture = gesture;
|
|
125
|
+
}
|
|
120
126
|
currentDate;
|
|
121
127
|
events = [];
|
|
122
128
|
visibleResources = [];
|
|
@@ -135,6 +141,7 @@ export class ResourceViewComponent {
|
|
|
135
141
|
hidePreviewEv = new EventEmitter();
|
|
136
142
|
/** Native `dragend` der Source — Drag-Session vollständig beendet. */
|
|
137
143
|
dragEnd = new EventEmitter();
|
|
144
|
+
resourceDropInfo = new EventEmitter();
|
|
138
145
|
dragStartEv = new EventEmitter();
|
|
139
146
|
timeGridEl;
|
|
140
147
|
gridInnerEl;
|
|
@@ -143,6 +150,26 @@ export class ResourceViewComponent {
|
|
|
143
150
|
timeLabelWidth = DEFAULT_TIME_LABEL_WIDTH_DAY;
|
|
144
151
|
click = createClickIntent();
|
|
145
152
|
ngAfterViewInit() {
|
|
153
|
+
// mcp-57 Slice E: shared FSM — resource column + snapped time, scrollport-bounded.
|
|
154
|
+
this.gesture.init({
|
|
155
|
+
hitTest: (x, y) => {
|
|
156
|
+
const inner = this.gridInnerEl?.nativeElement;
|
|
157
|
+
if (!inner)
|
|
158
|
+
return null;
|
|
159
|
+
const port = (inner.parentElement ?? inner).getBoundingClientRect();
|
|
160
|
+
if (x < port.left || x > port.right || y < port.top || y > port.bottom)
|
|
161
|
+
return null;
|
|
162
|
+
const resourceId = this.resourceFromX(x, inner);
|
|
163
|
+
if (resourceId === null)
|
|
164
|
+
return null;
|
|
165
|
+
return { resourceId, time: snapTimeFromMouseY(y, inner.getBoundingClientRect(), this.hourHeight, this.config.core.granularity.day.minutes) };
|
|
166
|
+
},
|
|
167
|
+
onGestureStart: (info) => this.dragStartEv.emit(info),
|
|
168
|
+
onGestureOver: (hit) => this.dragOverDateTime.emit({ date: this.currentDate, time: hit.time }),
|
|
169
|
+
onGestureLeave: () => this.hidePreviewEv.emit(),
|
|
170
|
+
onGestureDrop: (info, hit) => this.resourceDropInfo.emit({ info, date: this.currentDate, time: hit.time, resourceId: hit.resourceId }),
|
|
171
|
+
onGestureEnd: () => this.dragEnd.emit(),
|
|
172
|
+
});
|
|
146
173
|
if (this.timeGridEl?.nativeElement) {
|
|
147
174
|
this.timeGridEl.nativeElement.scrollTop = DEFAULT_SCROLL_HOUR * DEFAULT_HOUR_HEIGHT;
|
|
148
175
|
}
|
|
@@ -172,7 +199,31 @@ export class ResourceViewComponent {
|
|
|
172
199
|
* dayCol = Resource-Index, lane/laneCount aus layoutTimed pro Resource
|
|
173
200
|
* — Überlapper in r1 dürfen die Spalte r2 nicht halbieren.
|
|
174
201
|
*/
|
|
202
|
+
/**
|
|
203
|
+
* CACHED PER INPUT IDENTITY, not per call (mcp-130 — the resource-view twin of
|
|
204
|
+
* mcp-129). As a plain getter this ran the full segment/lane layout and minted
|
|
205
|
+
* fresh {event, layout} wrappers on EVERY change-detection pass; Zone runs CD
|
|
206
|
+
* after every DOM event, so the dragstart itself handed the un-trackBy'd *ngFor
|
|
207
|
+
* all-new identities, every cal-time-event was re-created, and Chromium
|
|
208
|
+
* cancelled the native drag whose source died in its own dragstart task. The
|
|
209
|
+
* dragstart-survival fence in e2e/calendar.spec.ts went red on exactly this
|
|
210
|
+
* view before the cache + trackBy below.
|
|
211
|
+
*/
|
|
212
|
+
timedCache = null;
|
|
175
213
|
get timedEntries() {
|
|
214
|
+
const key = [this.events, this.previewEvent, this.visibleResources, this.currentDate];
|
|
215
|
+
const c = this.timedCache;
|
|
216
|
+
if (c && c.key.every((k, i) => k === key[i]))
|
|
217
|
+
return c.value;
|
|
218
|
+
const value = this.buildTimedEntries();
|
|
219
|
+
this.timedCache = { key, value };
|
|
220
|
+
return value;
|
|
221
|
+
}
|
|
222
|
+
/** Same identity rule the week view pins (`trackTimed`): event + column. */
|
|
223
|
+
trackTimed(_i, entry) {
|
|
224
|
+
return `${entry.event.id}@${entry.layout.dayCol}`;
|
|
225
|
+
}
|
|
226
|
+
buildTimedEntries() {
|
|
176
227
|
const dayStart = startOfDay(this.currentDate);
|
|
177
228
|
const dayEnd = addDays(dayStart, 1);
|
|
178
229
|
const dayRange = createTimeRange(dayStart, dayEnd);
|
|
@@ -202,12 +253,14 @@ export class ResourceViewComponent {
|
|
|
202
253
|
if (this.visibleResources.length === 0)
|
|
203
254
|
return null;
|
|
204
255
|
const rect = gridInner.getBoundingClientRect();
|
|
205
|
-
|
|
206
|
-
|
|
256
|
+
// mcp-91 R1 (review F2): shared, core-pinned guttered-row math (rtl incl.).
|
|
257
|
+
const rtl = getComputedStyle(gridInner).direction === 'rtl';
|
|
258
|
+
const inGutter = rtl
|
|
259
|
+
? clientX > rect.left + rect.width - this.timeLabelWidth
|
|
260
|
+
: clientX < rect.left + this.timeLabelWidth;
|
|
261
|
+
if (inGutter)
|
|
207
262
|
return null;
|
|
208
|
-
|
|
209
|
-
const idx = Math.min(this.visibleResources.length - 1, Math.max(0, Math.floor(x / cw)));
|
|
210
|
-
return this.visibleResources[idx].id;
|
|
263
|
+
return this.visibleResources[colFromTimeGridX(clientX, rect, this.timeLabelWidth, this.visibleResources.length, rtl)].id;
|
|
211
264
|
}
|
|
212
265
|
isOffHour(h) {
|
|
213
266
|
const wh = this.config.core.workingHours;
|
|
@@ -268,7 +321,7 @@ export class ResourceViewComponent {
|
|
|
268
321
|
}
|
|
269
322
|
trackResource(_, r) { return r.id; }
|
|
270
323
|
trackEvent(_, ev) { return ev.id; }
|
|
271
|
-
static ɵfac = function ResourceViewComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ResourceViewComponent)(); };
|
|
324
|
+
static ɵfac = function ResourceViewComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ResourceViewComponent)(i0.ɵɵdirectiveInject(i1.CalendarPointerGestureService)); };
|
|
272
325
|
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ResourceViewComponent, selectors: [["cal-resource-view"]], viewQuery: function ResourceViewComponent_Query(rf, ctx) { if (rf & 1) {
|
|
273
326
|
i0.ɵɵviewQuery(_c0, 5);
|
|
274
327
|
i0.ɵɵviewQuery(_c1, 5);
|
|
@@ -276,17 +329,18 @@ export class ResourceViewComponent {
|
|
|
276
329
|
let _t;
|
|
277
330
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.timeGridEl = _t.first);
|
|
278
331
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.gridInnerEl = _t.first);
|
|
279
|
-
} }, hostAttrs: [2, "display", "contents"], inputs: { currentDate: "currentDate", events: "events", visibleResources: "visibleResources", config: "config", previewEvent: "previewEvent", selectedEventId: "selectedEventId", selectedInstanceDate: "selectedInstanceDate" }, outputs: { eventClick: "eventClick", selectEvent: "selectEvent", clearSelection: "clearSelection", resourceCellClick: "resourceCellClick", resourceDrop: "resourceDrop", dragOverDateTime: "dragOverDateTime", hidePreviewEv: "hidePreviewEv", dragEnd: "dragEnd", dragStartEv: "dragStartEv" }, decls: 3, vars: 2, consts: [["withResources", ""], ["timeGridEl", ""], ["gridInnerEl", ""], [4, "ngIf", "ngIfElse"], [1, "bm-cal-resource", "bm-cal-resource--empty"], [1, "bm-cal-resource"], [1, "bm-cal-resource__header"], [1, "bm-cal-resource__day-name"], [1, "bm-cal-resource__resources"], [1, "bm-cal-resource__time-spacer"], ["class", "bm-cal-resource__resource-header", "style", "flex: 1 1 0; min-width: 0;", 4, "ngFor", "ngForOf", "ngForTrackBy"], [1, "bm-cal-resource__time-grid"], [1, "bm-cal-resource__time-grid-inner", 3, "dragover", "drop", "dragleave"], [3, "class", "top", "height", 4, "ngFor", "ngForOf"], ["class", "bm-cal-resource__resource-col", 3, "
|
|
280
|
-
i0.ɵɵtemplate(0, ResourceViewComponent_ng_container_0_Template, 3, 1, "ng-container", 3)(1, ResourceViewComponent_ng_template_1_Template, 15,
|
|
332
|
+
} }, hostAttrs: [2, "display", "contents"], inputs: { currentDate: "currentDate", events: "events", visibleResources: "visibleResources", config: "config", previewEvent: "previewEvent", selectedEventId: "selectedEventId", selectedInstanceDate: "selectedInstanceDate" }, outputs: { eventClick: "eventClick", selectEvent: "selectEvent", clearSelection: "clearSelection", resourceCellClick: "resourceCellClick", resourceDrop: "resourceDrop", dragOverDateTime: "dragOverDateTime", hidePreviewEv: "hidePreviewEv", dragEnd: "dragEnd", resourceDropInfo: "resourceDropInfo", dragStartEv: "dragStartEv" }, features: [i0.ɵɵProvidersFeature([CalendarPointerGestureService])], decls: 3, vars: 2, consts: [["withResources", ""], ["timeGridEl", ""], ["gridInnerEl", ""], [4, "ngIf", "ngIfElse"], [1, "bm-cal-resource", "bm-cal-resource--empty"], [1, "bm-cal-resource"], [1, "bm-cal-resource__header"], [1, "bm-cal-resource__day-name"], [1, "bm-cal-resource__resources"], [1, "bm-cal-resource__time-spacer"], ["class", "bm-cal-resource__resource-header", "style", "flex: 1 1 0; min-width: 0;", 4, "ngFor", "ngForOf", "ngForTrackBy"], [1, "bm-cal-resource__time-grid"], [1, "bm-cal-resource__time-grid-inner", 3, "dragover", "drop", "dragleave"], [3, "class", "top", "height", 4, "ngFor", "ngForOf"], ["class", "bm-cal-resource__resource-col", 3, "inset-inline-start", "width", "mousedown", "click", "dblclick", 4, "ngFor", "ngForOf", "ngForTrackBy"], [3, "config", "event", "dayCol", "dayCount", "lane", "laneCount", "startOffset", "endOffset", "dayDate", "hourHeight", "timeLabelWidth", "ghost", "clickThresholdMs", "locale", "snapMinutes", "isSelected", "eventClick", "selectEvent", "dragStart", "dragEnd", 4, "ngFor", "ngForOf", "ngForTrackBy"], ["class", "bm-cal-resource__now-line", 3, "top", "inset-inline-start", 4, "ngIf"], [1, "bm-cal-resource__resource-header", 2, "flex", "1 1 0", "min-width", "0"], ["class", "bm-cal-resource__resource-dot", 3, "background-color", 4, "ngIf"], [1, "bm-cal-resource__resource-name"], [1, "bm-cal-resource__resource-dot"], [1, "bm-cal-resource__hour-label"], [1, "bm-cal-resource__resource-col", 3, "mousedown", "click", "dblclick"], [3, "eventClick", "selectEvent", "dragStart", "dragEnd", "config", "event", "dayCol", "dayCount", "lane", "laneCount", "startOffset", "endOffset", "dayDate", "hourHeight", "timeLabelWidth", "ghost", "clickThresholdMs", "locale", "snapMinutes", "isSelected"], [1, "bm-cal-resource__now-line"], [1, "bm-cal-resource__now-dot"]], template: function ResourceViewComponent_Template(rf, ctx) { if (rf & 1) {
|
|
333
|
+
i0.ɵɵtemplate(0, ResourceViewComponent_ng_container_0_Template, 3, 1, "ng-container", 3)(1, ResourceViewComponent_ng_template_1_Template, 15, 13, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
|
|
281
334
|
} if (rf & 2) {
|
|
282
335
|
const withResources_r10 = i0.ɵɵreference(2);
|
|
283
336
|
i0.ɵɵproperty("ngIf", ctx.visibleResources.length === 0)("ngIfElse", withResources_r10);
|
|
284
|
-
} }, dependencies: [CommonModule,
|
|
337
|
+
} }, dependencies: [CommonModule, i2.NgForOf, i2.NgIf, TimeEventComponent], encapsulation: 2 });
|
|
285
338
|
}
|
|
286
339
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ResourceViewComponent, [{
|
|
287
340
|
type: Component,
|
|
288
341
|
args: [{
|
|
289
342
|
selector: 'cal-resource-view',
|
|
343
|
+
providers: [CalendarPointerGestureService],
|
|
290
344
|
standalone: true,
|
|
291
345
|
host: { style: 'display: contents' },
|
|
292
346
|
imports: [CommonModule, TimeEventComponent],
|
|
@@ -324,14 +378,15 @@ export class ResourceViewComponent {
|
|
|
324
378
|
<!-- Click-target columns; drag handlers live on the grid-inner above -->
|
|
325
379
|
<div *ngFor="let r of visibleResources; let i = index; trackBy: trackResource"
|
|
326
380
|
class="bm-cal-resource__resource-col"
|
|
327
|
-
[style.
|
|
381
|
+
[style.inset-inline-start]="colLeft(i)"
|
|
328
382
|
[style.width]="colWidth"
|
|
329
383
|
(mousedown)="click.markMouseDown()"
|
|
330
384
|
(click)="onColClick($event)"
|
|
331
385
|
(dblclick)="onColDoubleClick($event, r.id)">
|
|
332
386
|
</div>
|
|
333
387
|
<!-- Events as siblings: TimeEvent positions relative to the full grid -->
|
|
334
|
-
<cal-time-event *ngFor="let entry of timedEntries"
|
|
388
|
+
<cal-time-event *ngFor="let entry of timedEntries; trackBy: trackTimed"
|
|
389
|
+
[config]="config"
|
|
335
390
|
[event]="entry.event"
|
|
336
391
|
[dayCol]="entry.layout.dayCol" [dayCount]="entry.layout.dayCount"
|
|
337
392
|
[lane]="entry.layout.lane" [laneCount]="entry.layout.laneCount"
|
|
@@ -349,7 +404,7 @@ export class ResourceViewComponent {
|
|
|
349
404
|
</cal-time-event>
|
|
350
405
|
|
|
351
406
|
<div *ngIf="isToday" class="bm-cal-resource__now-line"
|
|
352
|
-
[style.top.px]="nowHours * hourHeight" [style.
|
|
407
|
+
[style.top.px]="nowHours * hourHeight" [style.inset-inline-start.px]="timeLabelWidth">
|
|
353
408
|
<div class="bm-cal-resource__now-dot"></div>
|
|
354
409
|
</div>
|
|
355
410
|
</div>
|
|
@@ -358,7 +413,7 @@ export class ResourceViewComponent {
|
|
|
358
413
|
</ng-template>
|
|
359
414
|
`,
|
|
360
415
|
}]
|
|
361
|
-
}],
|
|
416
|
+
}], () => [{ type: i1.CalendarPointerGestureService }], { currentDate: [{
|
|
362
417
|
type: Input
|
|
363
418
|
}], events: [{
|
|
364
419
|
type: Input
|
|
@@ -388,6 +443,8 @@ export class ResourceViewComponent {
|
|
|
388
443
|
type: Output
|
|
389
444
|
}], dragEnd: [{
|
|
390
445
|
type: Output
|
|
446
|
+
}], resourceDropInfo: [{
|
|
447
|
+
type: Output
|
|
391
448
|
}], dragStartEv: [{
|
|
392
449
|
type: Output
|
|
393
450
|
}], timeGridEl: [{
|
|
@@ -397,5 +454,5 @@ export class ResourceViewComponent {
|
|
|
397
454
|
type: ViewChild,
|
|
398
455
|
args: ['gridInnerEl']
|
|
399
456
|
}] }); })();
|
|
400
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ResourceViewComponent, { className: "ResourceViewComponent", filePath: "views/resource/resourceview.ts", lineNumber:
|
|
457
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ResourceViewComponent, { className: "ResourceViewComponent", filePath: "views/resource/resourceview.ts", lineNumber: 94 }); })();
|
|
401
458
|
//# sourceMappingURL=ResourceView.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourceView.js","sourceRoot":"","sources":["../../../src/views/resource/ResourceView.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ResourceView.js","sourceRoot":"","sources":["../../../src/views/resource/ResourceView.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,18 @@
|
|
|
1
|
-
import { EventEmitter } from '@angular/core';
|
|
1
|
+
import { EventEmitter, ElementRef, AfterViewInit } from '@angular/core';
|
|
2
2
|
import type { CalendarEvent, CalendarDateTime, Resource, LayoutItem } from '@bimetal/calendar-core';
|
|
3
3
|
import type { CalendarConfig } from '../../binding/index.js';
|
|
4
4
|
import type { DragInfo } from '@bimetal/calendar-headless';
|
|
5
|
+
import { CalendarPointerGestureService } from '../../binding/index.js';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
7
|
/**
|
|
7
8
|
* Multi-day, multi-resource Gantt-style timeline: one lane per resource, with
|
|
8
9
|
* all-day-style event bars spanning `days` date columns.
|
|
9
10
|
*/
|
|
10
|
-
export declare class TimelineViewComponent {
|
|
11
|
+
export declare class TimelineViewComponent implements AfterViewInit {
|
|
12
|
+
private gesture;
|
|
13
|
+
private host;
|
|
14
|
+
constructor(gesture: CalendarPointerGestureService, host: ElementRef<HTMLElement>);
|
|
15
|
+
ngAfterViewInit(): void;
|
|
11
16
|
currentDate: CalendarDateTime;
|
|
12
17
|
days: number;
|
|
13
18
|
events: CalendarEvent[];
|
|
@@ -42,6 +47,12 @@ export declare class TimelineViewComponent {
|
|
|
42
47
|
/** Native `dragend` der Source — Drag-Session vollständig beendet. */
|
|
43
48
|
dragEnd: EventEmitter<void>;
|
|
44
49
|
dragStartEv: EventEmitter<DragInfo>;
|
|
50
|
+
/** Pointer-gesture drop (mcp-57): same controller path, minus the DataTransfer. */
|
|
51
|
+
timelineDropInfo: EventEmitter<{
|
|
52
|
+
info: DragInfo;
|
|
53
|
+
date: CalendarDateTime;
|
|
54
|
+
resourceId: string;
|
|
55
|
+
}>;
|
|
45
56
|
resourceLabelW: number;
|
|
46
57
|
get dates(): CalendarDateTime[];
|
|
47
58
|
get colTemplate(): string;
|
|
@@ -55,6 +66,17 @@ export declare class TimelineViewComponent {
|
|
|
55
66
|
* event in by id — the timeline no longer reconstructs anything.
|
|
56
67
|
*/
|
|
57
68
|
get displayEvents(): CalendarEvent[];
|
|
69
|
+
/**
|
|
70
|
+
* CACHED PER INPUT IDENTITY (mcp-130 R1). As a bare method call in the template
|
|
71
|
+
* this ran filter+segment+layout for EVERY lane on EVERY change-detection pass
|
|
72
|
+
* — including the dragstart's own — and minted fresh LayoutItem wrappers each
|
|
73
|
+
* time. `trackBy: trackItem` kept the dragged node alive, but that left the
|
|
74
|
+
* timeline hanging on ONE protective layer where mcp-129/130 deliberately keep
|
|
75
|
+
* two: the very lesson of that ticket ("one fenced source per class is not
|
|
76
|
+
* enough") applied to its defenses too. `laneHeight` calls this as well, so the
|
|
77
|
+
* cache also halves the per-CD layout work.
|
|
78
|
+
*/
|
|
79
|
+
private itemsCache;
|
|
58
80
|
itemsFor(resourceId: string): LayoutItem[];
|
|
59
81
|
private dayFromX;
|
|
60
82
|
onLaneDragOver(e: DragEvent): void;
|
|
@@ -69,6 +91,6 @@ export declare class TimelineViewComponent {
|
|
|
69
91
|
trackItem(_: number, item: LayoutItem): string;
|
|
70
92
|
isSelected(ev: CalendarEvent): boolean;
|
|
71
93
|
static ɵfac: i0.ɵɵFactoryDeclaration<TimelineViewComponent, never>;
|
|
72
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<TimelineViewComponent, "cal-timeline-view", never, { "currentDate": { "alias": "currentDate"; "required": false; }; "days": { "alias": "days"; "required": false; }; "events": { "alias": "events"; "required": false; }; "visibleResources": { "alias": "visibleResources"; "required": false; }; "config": { "alias": "config"; "required": false; }; "previewEvent": { "alias": "previewEvent"; "required": false; }; "selectedEventId": { "alias": "selectedEventId"; "required": false; }; "selectedInstanceDate": { "alias": "selectedInstanceDate"; "required": false; }; }, { "eventClick": "eventClick"; "selectEvent": "selectEvent"; "clearSelection": "clearSelection"; "timelineCellClick": "timelineCellClick"; "timelineDrop": "timelineDrop"; "dragOverDate": "dragOverDate"; "hidePreviewEv": "hidePreviewEv"; "dragEnd": "dragEnd"; "dragStartEv": "dragStartEv"; }, never, never, true, never>;
|
|
94
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TimelineViewComponent, "cal-timeline-view", never, { "currentDate": { "alias": "currentDate"; "required": false; }; "days": { "alias": "days"; "required": false; }; "events": { "alias": "events"; "required": false; }; "visibleResources": { "alias": "visibleResources"; "required": false; }; "config": { "alias": "config"; "required": false; }; "previewEvent": { "alias": "previewEvent"; "required": false; }; "selectedEventId": { "alias": "selectedEventId"; "required": false; }; "selectedInstanceDate": { "alias": "selectedInstanceDate"; "required": false; }; }, { "eventClick": "eventClick"; "selectEvent": "selectEvent"; "clearSelection": "clearSelection"; "timelineCellClick": "timelineCellClick"; "timelineDrop": "timelineDrop"; "dragOverDate": "dragOverDate"; "hidePreviewEv": "hidePreviewEv"; "dragEnd": "dragEnd"; "dragStartEv": "dragStartEv"; "timelineDropInfo": "timelineDropInfo"; }, never, never, true, never>;
|
|
73
95
|
}
|
|
74
96
|
//# sourceMappingURL=TimelineView.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimelineView.d.ts","sourceRoot":"","sources":["../../../src/views/timeline/TimelineView.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,
|
|
1
|
+
{"version":3,"file":"TimelineView.d.ts","sourceRoot":"","sources":["../../../src/views/timeline/TimelineView.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAA4B,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE5H,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAE3D,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;;AAIvE;;;GAGG;AACH,qBAsEa,qBAAsB,YAAW,aAAa;IAC7C,OAAO,CAAC,OAAO;IAAiC,OAAO,CAAC,IAAI;gBAApD,OAAO,EAAE,6BAA6B,EAAU,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC;IAEjG,eAAe;IAsBN,WAAW,EAAG,gBAAgB,CAAC;IAC/B,IAAI,SAAK;IACT,MAAM,EAAE,aAAa,EAAE,CAAM;IAC7B,gBAAgB,EAAE,SAAS,QAAQ,EAAE,CAAM;IAC3C,MAAM,EAAG,cAAc,CAAC;IAExB,YAAY,EAAE,aAAa,GAAG,IAAI,CAAQ;IAC1C,eAAe,EAAE,MAAM,GAAG,IAAI,CAAQ;IACtC,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAa;IACpD,UAAU;iBAA+B,MAAM;cAAQ,OAAO;uBAAiB,MAAM;OAAM;IAC3F,WAAW;iBAA+B,MAAM;uBAAiB,MAAM;OAAM;IAC7E,cAAc,qBAA4B;IAC1C,iBAAiB;cAA4B,gBAAgB;oBAAc,MAAM;cAAQ,OAAO;OAAM;IACtG,YAAY;eAA6B,SAAS;cAAQ,gBAAgB;oBAAc,MAAM;OAAM;IACpG,YAAY,iCAAwC;IAC9D,yEAAyE;IAC/D,aAAa,qBAA4B;IACnD,sEAAsE;IAC5D,OAAO,qBAA4B;IACnC,WAAW,yBAAgC;IACrD,mFAAmF;IACzE,gBAAgB;cAA4B,QAAQ;cAAQ,gBAAgB;oBAAc,MAAM;OAAM;IAEhH,cAAc,SAAgC;IAE9C,IAAI,KAAK,IAAI,gBAAgB,EAAE,CAG9B;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,OAAO,KAAK,MAAM,GAEjB;IAED,OAAO,KAAK,QAAQ,GAInB;IAED,OAAO,CAAC,CAAC,EAAE,gBAAgB,GAAG,OAAO;IACrC,UAAU,CAAC,CAAC,EAAE,gBAAgB,GAAG,MAAM;IAEvC;;;;OAIG;IACH,IAAI,aAAa,IAAI,aAAa,EAAE,CAInC;IAED;;;;;;;;;OASG;IACH,OAAO,CAAC,UAAU,CAGF;IAChB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,EAAE;IAgB1C,OAAO,CAAC,QAAQ;IAOhB,cAAc,CAAC,CAAC,EAAE,SAAS;IAO3B,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM;IAM3C,eAAe,CAAC,CAAC,EAAE,SAAS;IAS5B,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAKtC,SAAS,mDAAuB;IAEhC,WAAW;IAMX,iBAAiB,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM;IAM3E,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ;IACpC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,gBAAgB;IACxC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU;IAErC,UAAU,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO;yCArK3B,qBAAqB;2CAArB,qBAAqB;CAyKjC"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';
|
|
1
|
+
import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ElementRef } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { startOfDay, addDays, isSameDay, now } from '@bimetal/temporal';
|
|
4
4
|
import { segmentInRange, layoutAllDay, maxLanes, getRecurrenceInstanceMetadata } from '@bimetal/calendar-core';
|
|
5
|
-
import { DEFAULT_RESOURCE_LABEL_WIDTH, createClickIntent } from '@bimetal/calendar-headless';
|
|
5
|
+
import { colFromTimeGridX, DEFAULT_RESOURCE_LABEL_WIDTH, createClickIntent } from '@bimetal/calendar-headless';
|
|
6
|
+
import { CalendarPointerGestureService } from '../../binding/index.js';
|
|
6
7
|
import { EventBarComponent } from '../../components/EventBar.js';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "
|
|
9
|
+
import * as i1 from "../../binding/index.js";
|
|
10
|
+
import * as i2 from "@angular/common";
|
|
9
11
|
function TimelineViewComponent_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
|
10
12
|
i0.ɵɵelementContainerStart(0);
|
|
11
13
|
i0.ɵɵelementStart(1, "div", 2);
|
|
@@ -42,9 +44,11 @@ function TimelineViewComponent_ng_template_1_div_5_button_6_Template(rf, ctx) {
|
|
|
42
44
|
} if (rf & 2) {
|
|
43
45
|
const d_r6 = ctx.$implicit;
|
|
44
46
|
const i_r7 = ctx.index;
|
|
45
|
-
const
|
|
47
|
+
const r_r4 = i0.ɵɵnextContext().$implicit;
|
|
48
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
46
49
|
i0.ɵɵclassMap("bm-cal-timeline__cell" + (ctx_r0.isToday(d_r6) ? " bm-cal-timeline__cell--today" : ""));
|
|
47
50
|
i0.ɵɵstyleProp("grid-column", i_r7 + 1)("grid-row", "1 / -1");
|
|
51
|
+
i0.ɵɵattribute("aria-label", r_r4.name + ", " + ctx_r0.formatDate(d_r6));
|
|
48
52
|
} }
|
|
49
53
|
function TimelineViewComponent_ng_template_1_div_5_cal_event_bar_7_Template(rf, ctx) { if (rf & 1) {
|
|
50
54
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
@@ -54,7 +58,7 @@ function TimelineViewComponent_ng_template_1_div_5_cal_event_bar_7_Template(rf,
|
|
|
54
58
|
} if (rf & 2) {
|
|
55
59
|
const item_r9 = ctx.$implicit;
|
|
56
60
|
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
57
|
-
i0.ɵɵproperty("event", item_r9.segment.event)("isStart", item_r9.segment.isStart)("isEnd", item_r9.segment.isEnd)("dayIndex", item_r9.dayIndex)("daySpan", item_r9.daySpan)("column", item_r9.column)("weekDates", ctx_r0.dates)("ghost", (ctx_r0.previewEvent == null ? null : ctx_r0.previewEvent.id) === item_r9.segment.event.id)("clickThresholdMs", ctx_r0.config.clickThresholdMs)("isSelected", ctx_r0.isSelected(item_r9.segment.event));
|
|
61
|
+
i0.ɵɵproperty("config", ctx_r0.config)("event", item_r9.segment.event)("isStart", item_r9.segment.isStart)("isEnd", item_r9.segment.isEnd)("dayIndex", item_r9.dayIndex)("daySpan", item_r9.daySpan)("column", item_r9.column)("weekDates", ctx_r0.dates)("ghost", (ctx_r0.previewEvent == null ? null : ctx_r0.previewEvent.id) === item_r9.segment.event.id)("clickThresholdMs", ctx_r0.config.clickThresholdMs)("isSelected", ctx_r0.isSelected(item_r9.segment.event));
|
|
58
62
|
} }
|
|
59
63
|
function TimelineViewComponent_ng_template_1_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
60
64
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
@@ -65,7 +69,7 @@ function TimelineViewComponent_ng_template_1_div_5_Template(rf, ctx) { if (rf &
|
|
|
65
69
|
i0.ɵɵelementEnd()();
|
|
66
70
|
i0.ɵɵelementStart(5, "div", 13);
|
|
67
71
|
i0.ɵɵlistener("dragover", function TimelineViewComponent_ng_template_1_div_5_Template_div_dragover_5_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.onLaneDragOver($event)); })("drop", function TimelineViewComponent_ng_template_1_div_5_Template_div_drop_5_listener($event) { const r_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.onLaneDrop($event, r_r4.id)); })("dragleave", function TimelineViewComponent_ng_template_1_div_5_Template_div_dragleave_5_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.onLaneDragLeave($event)); });
|
|
68
|
-
i0.ɵɵtemplate(6, TimelineViewComponent_ng_template_1_div_5_button_6_Template, 1,
|
|
72
|
+
i0.ɵɵtemplate(6, TimelineViewComponent_ng_template_1_div_5_button_6_Template, 1, 7, "button", 14)(7, TimelineViewComponent_ng_template_1_div_5_cal_event_bar_7_Template, 1, 11, "cal-event-bar", 15);
|
|
69
73
|
i0.ɵɵelementEnd()();
|
|
70
74
|
} if (rf & 2) {
|
|
71
75
|
const r_r4 = ctx.$implicit;
|
|
@@ -105,6 +109,35 @@ function TimelineViewComponent_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
|
105
109
|
* all-day-style event bars spanning `days` date columns.
|
|
106
110
|
*/
|
|
107
111
|
export class TimelineViewComponent {
|
|
112
|
+
gesture;
|
|
113
|
+
host;
|
|
114
|
+
constructor(gesture, host) {
|
|
115
|
+
this.gesture = gesture;
|
|
116
|
+
this.host = host;
|
|
117
|
+
}
|
|
118
|
+
ngAfterViewInit() {
|
|
119
|
+
// mcp-57 Slice E: shared FSM over the lanes — hit = lane resource + day column.
|
|
120
|
+
this.gesture.init({
|
|
121
|
+
hitTest: (x, y) => {
|
|
122
|
+
const lanes = this.host.nativeElement.querySelectorAll('.bm-cal-timeline__lane-content');
|
|
123
|
+
for (let i = 0; i < lanes.length; i++) {
|
|
124
|
+
const rect = lanes[i].getBoundingClientRect();
|
|
125
|
+
if (x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom) {
|
|
126
|
+
const r = this.visibleResources[i];
|
|
127
|
+
if (!r)
|
|
128
|
+
return null;
|
|
129
|
+
return { resourceId: r.id, date: this.dayFromX(x, rect) };
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return null;
|
|
133
|
+
},
|
|
134
|
+
onGestureStart: (info) => this.dragStartEv.emit(info),
|
|
135
|
+
onGestureOver: (hit) => this.dragOverDate.emit(hit.date),
|
|
136
|
+
onGestureLeave: () => this.hidePreviewEv.emit(),
|
|
137
|
+
onGestureDrop: (info, hit) => this.timelineDropInfo.emit({ info, date: hit.date, resourceId: hit.resourceId }),
|
|
138
|
+
onGestureEnd: () => this.dragEnd.emit(),
|
|
139
|
+
});
|
|
140
|
+
}
|
|
108
141
|
currentDate;
|
|
109
142
|
days = 7;
|
|
110
143
|
events = [];
|
|
@@ -125,6 +158,8 @@ export class TimelineViewComponent {
|
|
|
125
158
|
/** Native `dragend` der Source — Drag-Session vollständig beendet. */
|
|
126
159
|
dragEnd = new EventEmitter();
|
|
127
160
|
dragStartEv = new EventEmitter();
|
|
161
|
+
/** Pointer-gesture drop (mcp-57): same controller path, minus the DataTransfer. */
|
|
162
|
+
timelineDropInfo = new EventEmitter();
|
|
128
163
|
resourceLabelW = DEFAULT_RESOURCE_LABEL_WIDTH;
|
|
129
164
|
get dates() {
|
|
130
165
|
const start = startOfDay(this.currentDate);
|
|
@@ -154,17 +189,38 @@ export class TimelineViewComponent {
|
|
|
154
189
|
return this.events;
|
|
155
190
|
return this.events.map(ev => ev.id === pe.id ? { ...ev, timeRange: pe.timeRange } : ev);
|
|
156
191
|
}
|
|
192
|
+
/**
|
|
193
|
+
* CACHED PER INPUT IDENTITY (mcp-130 R1). As a bare method call in the template
|
|
194
|
+
* this ran filter+segment+layout for EVERY lane on EVERY change-detection pass
|
|
195
|
+
* — including the dragstart's own — and minted fresh LayoutItem wrappers each
|
|
196
|
+
* time. `trackBy: trackItem` kept the dragged node alive, but that left the
|
|
197
|
+
* timeline hanging on ONE protective layer where mcp-129/130 deliberately keep
|
|
198
|
+
* two: the very lesson of that ticket ("one fenced source per class is not
|
|
199
|
+
* enough") applied to its defenses too. `laneHeight` calls this as well, so the
|
|
200
|
+
* cache also halves the per-CD layout work.
|
|
201
|
+
*/
|
|
202
|
+
itemsCache = null;
|
|
157
203
|
itemsFor(resourceId) {
|
|
204
|
+
// Keyed on currentDate+days, NOT on `this.dates`: that getter mints a fresh
|
|
205
|
+
// array per call (same class, one level down), which would defeat this cache.
|
|
206
|
+
const key = [this.events, this.previewEvent, this.currentDate, this.days];
|
|
207
|
+
if (!this.itemsCache || !this.itemsCache.key.every((k, i) => k === key[i])) {
|
|
208
|
+
this.itemsCache = { key, byResource: new Map() };
|
|
209
|
+
}
|
|
210
|
+
const cached = this.itemsCache.byResource.get(resourceId);
|
|
211
|
+
if (cached)
|
|
212
|
+
return cached;
|
|
158
213
|
const own = this.displayEvents.filter(e => e.resourceId === resourceId);
|
|
159
214
|
const segments = segmentInRange(own, this.dates);
|
|
160
|
-
|
|
215
|
+
const items = layoutAllDay(segments, this.dates);
|
|
216
|
+
this.itemsCache.byResource.set(resourceId, items);
|
|
217
|
+
return items;
|
|
161
218
|
}
|
|
162
219
|
dayFromX(clientX, laneRect) {
|
|
220
|
+
// mcp-91 R1 (review F2): shared, core-pinned mapping (gutterless row).
|
|
221
|
+
const rtl = getComputedStyle(this.host.nativeElement).direction === 'rtl';
|
|
163
222
|
const ds = this.dates;
|
|
164
|
-
|
|
165
|
-
const colWidth = laneRect.width / ds.length;
|
|
166
|
-
const idx = Math.min(ds.length - 1, Math.floor(x / colWidth));
|
|
167
|
-
return ds[idx];
|
|
223
|
+
return ds[colFromTimeGridX(clientX, laneRect, 0, ds.length, rtl)];
|
|
168
224
|
}
|
|
169
225
|
onLaneDragOver(e) {
|
|
170
226
|
e.preventDefault();
|
|
@@ -212,18 +268,19 @@ export class TimelineViewComponent {
|
|
|
212
268
|
return this.selectedEventId === ev.id
|
|
213
269
|
&& this.selectedInstanceDate === (getRecurrenceInstanceMetadata(ev)?.instanceDate);
|
|
214
270
|
}
|
|
215
|
-
static ɵfac = function TimelineViewComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TimelineViewComponent)(); };
|
|
216
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TimelineViewComponent, selectors: [["cal-timeline-view"]], inputs: { currentDate: "currentDate", days: "days", events: "events", visibleResources: "visibleResources", config: "config", previewEvent: "previewEvent", selectedEventId: "selectedEventId", selectedInstanceDate: "selectedInstanceDate" }, outputs: { eventClick: "eventClick", selectEvent: "selectEvent", clearSelection: "clearSelection", timelineCellClick: "timelineCellClick", timelineDrop: "timelineDrop", dragOverDate: "dragOverDate", hidePreviewEv: "hidePreviewEv", dragEnd: "dragEnd", dragStartEv: "dragStartEv" }, decls: 3, vars: 2, consts: [["withResources", ""], [4, "ngIf", "ngIfElse"], [1, "bm-cal-timeline", "bm-cal-timeline--empty"], [1, "bm-cal-timeline"], [1, "bm-cal-timeline__header"], [1, "bm-cal-timeline__corner"], [3, "class", 4, "ngFor", "ngForOf", "ngForTrackBy"], [1, "bm-cal-timeline__body"], ["class", "bm-cal-timeline__lane", 4, "ngFor", "ngForOf", "ngForTrackBy"], [1, "bm-cal-timeline__lane"], [1, "bm-cal-timeline__resource-label"], ["class", "bm-cal-timeline__resource-dot", 3, "background-color", 4, "ngIf"], [1, "bm-cal-timeline__resource-name"], [1, "bm-cal-timeline__lane-content", 3, "dragover", "drop", "dragleave"], ["type", "button", 3, "class", "grid-column", "grid-row", "mousedown", "click", "dblclick", 4, "ngFor", "ngForOf", "ngForTrackBy"], [3, "event", "isStart", "isEnd", "dayIndex", "daySpan", "column", "weekDates", "ghost", "clickThresholdMs", "isSelected", "eventClick", "selectEvent", "dragStart", "dragEnd", 4, "ngFor", "ngForOf", "ngForTrackBy"], [1, "bm-cal-timeline__resource-dot"], ["type", "button", 3, "mousedown", "click", "dblclick"], [3, "eventClick", "selectEvent", "dragStart", "dragEnd", "event", "isStart", "isEnd", "dayIndex", "daySpan", "column", "weekDates", "ghost", "clickThresholdMs", "isSelected"]], template: function TimelineViewComponent_Template(rf, ctx) { if (rf & 1) {
|
|
271
|
+
static ɵfac = function TimelineViewComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TimelineViewComponent)(i0.ɵɵdirectiveInject(i1.CalendarPointerGestureService), i0.ɵɵdirectiveInject(i0.ElementRef)); };
|
|
272
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TimelineViewComponent, selectors: [["cal-timeline-view"]], inputs: { currentDate: "currentDate", days: "days", events: "events", visibleResources: "visibleResources", config: "config", previewEvent: "previewEvent", selectedEventId: "selectedEventId", selectedInstanceDate: "selectedInstanceDate" }, outputs: { eventClick: "eventClick", selectEvent: "selectEvent", clearSelection: "clearSelection", timelineCellClick: "timelineCellClick", timelineDrop: "timelineDrop", dragOverDate: "dragOverDate", hidePreviewEv: "hidePreviewEv", dragEnd: "dragEnd", dragStartEv: "dragStartEv", timelineDropInfo: "timelineDropInfo" }, features: [i0.ɵɵProvidersFeature([CalendarPointerGestureService])], decls: 3, vars: 2, consts: [["withResources", ""], [4, "ngIf", "ngIfElse"], [1, "bm-cal-timeline", "bm-cal-timeline--empty"], [1, "bm-cal-timeline"], [1, "bm-cal-timeline__header"], [1, "bm-cal-timeline__corner"], [3, "class", 4, "ngFor", "ngForOf", "ngForTrackBy"], [1, "bm-cal-timeline__body"], ["class", "bm-cal-timeline__lane", 4, "ngFor", "ngForOf", "ngForTrackBy"], [1, "bm-cal-timeline__lane"], [1, "bm-cal-timeline__resource-label"], ["class", "bm-cal-timeline__resource-dot", 3, "background-color", 4, "ngIf"], [1, "bm-cal-timeline__resource-name"], [1, "bm-cal-timeline__lane-content", 3, "dragover", "drop", "dragleave"], ["type", "button", 3, "class", "grid-column", "grid-row", "mousedown", "click", "dblclick", 4, "ngFor", "ngForOf", "ngForTrackBy"], [3, "config", "event", "isStart", "isEnd", "dayIndex", "daySpan", "column", "weekDates", "ghost", "clickThresholdMs", "isSelected", "eventClick", "selectEvent", "dragStart", "dragEnd", 4, "ngFor", "ngForOf", "ngForTrackBy"], [1, "bm-cal-timeline__resource-dot"], ["type", "button", 3, "mousedown", "click", "dblclick"], [3, "eventClick", "selectEvent", "dragStart", "dragEnd", "config", "event", "isStart", "isEnd", "dayIndex", "daySpan", "column", "weekDates", "ghost", "clickThresholdMs", "isSelected"]], template: function TimelineViewComponent_Template(rf, ctx) { if (rf & 1) {
|
|
217
273
|
i0.ɵɵtemplate(0, TimelineViewComponent_ng_container_0_Template, 3, 1, "ng-container", 1)(1, TimelineViewComponent_ng_template_1_Template, 6, 6, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
|
|
218
274
|
} if (rf & 2) {
|
|
219
275
|
const withResources_r10 = i0.ɵɵreference(2);
|
|
220
276
|
i0.ɵɵproperty("ngIf", ctx.visibleResources.length === 0)("ngIfElse", withResources_r10);
|
|
221
|
-
} }, dependencies: [CommonModule,
|
|
277
|
+
} }, dependencies: [CommonModule, i2.NgForOf, i2.NgIf, EventBarComponent], encapsulation: 2, changeDetection: 0 });
|
|
222
278
|
}
|
|
223
279
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TimelineViewComponent, [{
|
|
224
280
|
type: Component,
|
|
225
281
|
args: [{
|
|
226
282
|
selector: 'cal-timeline-view',
|
|
283
|
+
providers: [CalendarPointerGestureService],
|
|
227
284
|
standalone: true,
|
|
228
285
|
imports: [CommonModule, EventBarComponent],
|
|
229
286
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
@@ -260,6 +317,7 @@ export class TimelineViewComponent {
|
|
|
260
317
|
<button *ngFor="let d of dates; let i = index; trackBy: trackDate"
|
|
261
318
|
type="button"
|
|
262
319
|
[class]="'bm-cal-timeline__cell' + (isToday(d) ? ' bm-cal-timeline__cell--today' : '')"
|
|
320
|
+
[attr.aria-label]="r.name + ', ' + formatDate(d)"
|
|
263
321
|
[style.grid-column]="i + 1"
|
|
264
322
|
[style.grid-row]="'1 / -1'"
|
|
265
323
|
(mousedown)="cellClick.markMouseDown()"
|
|
@@ -267,6 +325,7 @@ export class TimelineViewComponent {
|
|
|
267
325
|
(dblclick)="onCellDoubleClick($event, d, r.id)">
|
|
268
326
|
</button>
|
|
269
327
|
<cal-event-bar *ngFor="let item of itemsFor(r.id); let idx = index; trackBy: trackItem"
|
|
328
|
+
[config]="config"
|
|
270
329
|
[event]="item.segment.event"
|
|
271
330
|
[isStart]="item.segment.isStart"
|
|
272
331
|
[isEnd]="item.segment.isEnd"
|
|
@@ -289,7 +348,7 @@ export class TimelineViewComponent {
|
|
|
289
348
|
</ng-template>
|
|
290
349
|
`,
|
|
291
350
|
}]
|
|
292
|
-
}],
|
|
351
|
+
}], () => [{ type: i1.CalendarPointerGestureService }, { type: i0.ElementRef }], { currentDate: [{
|
|
293
352
|
type: Input
|
|
294
353
|
}], days: [{
|
|
295
354
|
type: Input
|
|
@@ -323,6 +382,8 @@ export class TimelineViewComponent {
|
|
|
323
382
|
type: Output
|
|
324
383
|
}], dragStartEv: [{
|
|
325
384
|
type: Output
|
|
385
|
+
}], timelineDropInfo: [{
|
|
386
|
+
type: Output
|
|
326
387
|
}] }); })();
|
|
327
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TimelineViewComponent, { className: "TimelineViewComponent", filePath: "views/timeline/timelineview.ts", lineNumber:
|
|
388
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TimelineViewComponent, { className: "TimelineViewComponent", filePath: "views/timeline/timelineview.ts", lineNumber: 87 }); })();
|
|
328
389
|
//# sourceMappingURL=TimelineView.js.map
|