@bimetal/calendar-angular-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.
- package/LICENSE +129 -0
- package/README.md +56 -0
- package/dist/binding/config.d.ts +6 -0
- package/dist/binding/config.d.ts.map +1 -0
- package/dist/binding/config.js +6 -0
- package/dist/binding/config.js.map +1 -0
- package/dist/binding/controller.d.ts +22 -0
- package/dist/binding/controller.d.ts.map +1 -0
- package/dist/binding/controller.js +17 -0
- package/dist/binding/controller.js.map +1 -0
- package/dist/binding/index.d.ts +24 -0
- package/dist/binding/index.d.ts.map +1 -0
- package/dist/binding/index.js +26 -0
- package/dist/binding/index.js.map +1 -0
- package/dist/binding/services/event-render.service.d.ts +40 -0
- package/dist/binding/services/event-render.service.d.ts.map +1 -0
- package/dist/binding/services/event-render.service.js +58 -0
- package/dist/binding/services/event-render.service.js.map +1 -0
- package/dist/binding/types.d.ts +128 -0
- package/dist/binding/types.d.ts.map +1 -0
- package/dist/binding/types.js +12 -0
- package/dist/binding/types.js.map +1 -0
- package/dist/binding/utils/date-strings.d.ts +16 -0
- package/dist/binding/utils/date-strings.d.ts.map +1 -0
- package/dist/binding/utils/date-strings.js +30 -0
- package/dist/binding/utils/date-strings.js.map +1 -0
- package/dist/binding/utils/gridUtils.d.ts +6 -0
- package/dist/binding/utils/gridUtils.d.ts.map +1 -0
- package/dist/binding/utils/gridUtils.js +13 -0
- package/dist/binding/utils/gridUtils.js.map +1 -0
- package/dist/binding/view-configs.d.ts +6 -0
- package/dist/binding/view-configs.d.ts.map +1 -0
- package/dist/binding/view-configs.js +6 -0
- package/dist/binding/view-configs.js.map +1 -0
- package/dist/components/Calendar.d.ts +110 -0
- package/dist/components/Calendar.d.ts.map +1 -0
- package/dist/components/Calendar.js +554 -0
- package/dist/components/Calendar.js.map +1 -0
- package/dist/components/CalendarHeader.d.ts +17 -0
- package/dist/components/CalendarHeader.d.ts.map +1 -0
- package/dist/components/CalendarHeader.js +105 -0
- package/dist/components/CalendarHeader.js.map +1 -0
- package/dist/components/CategoryFilter.d.ts +11 -0
- package/dist/components/CategoryFilter.d.ts.map +1 -0
- package/dist/components/CategoryFilter.js +66 -0
- package/dist/components/CategoryFilter.js.map +1 -0
- package/dist/components/EventBar.d.ts +56 -0
- package/dist/components/EventBar.d.ts.map +1 -0
- package/dist/components/EventBar.js +328 -0
- package/dist/components/EventBar.js.map +1 -0
- package/dist/components/EventDialog.d.ts +52 -0
- package/dist/components/EventDialog.d.ts.map +1 -0
- package/dist/components/EventDialog.js +557 -0
- package/dist/components/EventDialog.js.map +1 -0
- package/dist/components/EventHistory.d.ts +17 -0
- package/dist/components/EventHistory.d.ts.map +1 -0
- package/dist/components/EventHistory.js +166 -0
- package/dist/components/EventHistory.js.map +1 -0
- package/dist/components/ResourceFilter.d.ts +12 -0
- package/dist/components/ResourceFilter.d.ts.map +1 -0
- package/dist/components/ResourceFilter.js +67 -0
- package/dist/components/ResourceFilter.js.map +1 -0
- package/dist/components/UndoToast.d.ts +20 -0
- package/dist/components/UndoToast.d.ts.map +1 -0
- package/dist/components/UndoToast.js +90 -0
- package/dist/components/UndoToast.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/styles/index.css +1 -0
- package/dist/views/agenda/AgendaView.d.ts +54 -0
- package/dist/views/agenda/AgendaView.d.ts.map +1 -0
- package/dist/views/agenda/AgendaView.js +309 -0
- package/dist/views/agenda/AgendaView.js.map +1 -0
- package/dist/views/day/DayView.d.ts +85 -0
- package/dist/views/day/DayView.d.ts.map +1 -0
- package/dist/views/day/DayView.js +422 -0
- package/dist/views/day/DayView.js.map +1 -0
- package/dist/views/month/MonthView.d.ts +51 -0
- package/dist/views/month/MonthView.d.ts.map +1 -0
- package/dist/views/month/MonthView.js +184 -0
- package/dist/views/month/MonthView.js.map +1 -0
- package/dist/views/month/WeekRow.d.ts +89 -0
- package/dist/views/month/WeekRow.d.ts.map +1 -0
- package/dist/views/month/WeekRow.js +548 -0
- package/dist/views/month/WeekRow.js.map +1 -0
- package/dist/views/resource/ResourceView.d.ts +85 -0
- package/dist/views/resource/ResourceView.d.ts.map +1 -0
- package/dist/views/resource/ResourceView.js +388 -0
- package/dist/views/resource/ResourceView.js.map +1 -0
- package/dist/views/timeline/TimelineView.d.ts +69 -0
- package/dist/views/timeline/TimelineView.d.ts.map +1 -0
- package/dist/views/timeline/TimelineView.js +314 -0
- package/dist/views/timeline/TimelineView.js.map +1 -0
- package/dist/views/week/AllDayRow.d.ts +38 -0
- package/dist/views/week/AllDayRow.d.ts.map +1 -0
- package/dist/views/week/AllDayRow.js +149 -0
- package/dist/views/week/AllDayRow.js.map +1 -0
- package/dist/views/week/TimeEvent.d.ts +77 -0
- package/dist/views/week/TimeEvent.d.ts.map +1 -0
- package/dist/views/week/TimeEvent.js +279 -0
- package/dist/views/week/TimeEvent.js.map +1 -0
- package/dist/views/week/WeekView.d.ts +79 -0
- package/dist/views/week/WeekView.d.ts.map +1 -0
- package/dist/views/week/WeekView.js +370 -0
- package/dist/views/week/WeekView.js.map +1 -0
- package/dist/views/year/YearView.d.ts +37 -0
- package/dist/views/year/YearView.d.ts.map +1 -0
- package/dist/views/year/YearView.js +162 -0
- package/dist/views/year/YearView.js.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { startOfDay, addDays, isSameDay, now, segmentInRange, layoutAllDay, maxLanes, } from '@bimetal/calendar-core';
|
|
4
|
+
import { DEFAULT_RESOURCE_LABEL_WIDTH, createClickIntent } from '@bimetal/calendar-headless';
|
|
5
|
+
import { EventBarComponent } from '../../components/EventBar.js';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/common";
|
|
8
|
+
function TimelineViewComponent_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
|
9
|
+
i0.ɵɵelementContainerStart(0);
|
|
10
|
+
i0.ɵɵelementStart(1, "div", 2);
|
|
11
|
+
i0.ɵɵtext(2);
|
|
12
|
+
i0.ɵɵelementEnd();
|
|
13
|
+
i0.ɵɵelementContainerEnd();
|
|
14
|
+
} if (rf & 2) {
|
|
15
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
16
|
+
i0.ɵɵadvance(2);
|
|
17
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r0.config.locale.unassigned || "No resource selected", " ");
|
|
18
|
+
} }
|
|
19
|
+
function TimelineViewComponent_ng_template_1_div_3_Template(rf, ctx) { if (rf & 1) {
|
|
20
|
+
i0.ɵɵelementStart(0, "div");
|
|
21
|
+
i0.ɵɵtext(1);
|
|
22
|
+
i0.ɵɵelementEnd();
|
|
23
|
+
} if (rf & 2) {
|
|
24
|
+
const d_r2 = ctx.$implicit;
|
|
25
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
26
|
+
i0.ɵɵclassMap("timeline-view__date-header" + (ctx_r0.isToday(d_r2) ? " timeline-view__date-header--today" : ""));
|
|
27
|
+
i0.ɵɵadvance();
|
|
28
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r0.formatDate(d_r2), " ");
|
|
29
|
+
} }
|
|
30
|
+
function TimelineViewComponent_ng_template_1_div_5_span_2_Template(rf, ctx) { if (rf & 1) {
|
|
31
|
+
i0.ɵɵelement(0, "span", 16);
|
|
32
|
+
} if (rf & 2) {
|
|
33
|
+
const r_r4 = i0.ɵɵnextContext().$implicit;
|
|
34
|
+
i0.ɵɵstyleProp("background-color", r_r4.color);
|
|
35
|
+
} }
|
|
36
|
+
function TimelineViewComponent_ng_template_1_div_5_button_6_Template(rf, ctx) { if (rf & 1) {
|
|
37
|
+
const _r5 = i0.ɵɵgetCurrentView();
|
|
38
|
+
i0.ɵɵelementStart(0, "button", 17);
|
|
39
|
+
i0.ɵɵlistener("mousedown", function TimelineViewComponent_ng_template_1_div_5_button_6_Template_button_mousedown_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.cellClick.markMouseDown()); })("click", function TimelineViewComponent_ng_template_1_div_5_button_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.onCellClick()); })("dblclick", function TimelineViewComponent_ng_template_1_div_5_button_6_Template_button_dblclick_0_listener($event) { const d_r6 = i0.ɵɵrestoreView(_r5).$implicit; const r_r4 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.onCellDoubleClick($event, d_r6, r_r4.id)); });
|
|
40
|
+
i0.ɵɵelementEnd();
|
|
41
|
+
} if (rf & 2) {
|
|
42
|
+
const d_r6 = ctx.$implicit;
|
|
43
|
+
const i_r7 = ctx.index;
|
|
44
|
+
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
45
|
+
i0.ɵɵclassMap("timeline-view__cell" + (ctx_r0.isToday(d_r6) ? " timeline-view__cell--today" : ""));
|
|
46
|
+
i0.ɵɵstyleProp("grid-column", i_r7 + 1)("grid-row", "1 / -1");
|
|
47
|
+
} }
|
|
48
|
+
function TimelineViewComponent_ng_template_1_div_5_cal_event_bar_7_Template(rf, ctx) { if (rf & 1) {
|
|
49
|
+
const _r8 = i0.ɵɵgetCurrentView();
|
|
50
|
+
i0.ɵɵelementStart(0, "cal-event-bar", 18);
|
|
51
|
+
i0.ɵɵlistener("eventClick", function TimelineViewComponent_ng_template_1_div_5_cal_event_bar_7_Template_cal_event_bar_eventClick_0_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.eventClick.emit($event)); })("selectEvent", function TimelineViewComponent_ng_template_1_div_5_cal_event_bar_7_Template_cal_event_bar_selectEvent_0_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.selectEvent.emit($event)); })("dragStart", function TimelineViewComponent_ng_template_1_div_5_cal_event_bar_7_Template_cal_event_bar_dragStart_0_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.dragStartEv.emit($event)); })("dragEnd", function TimelineViewComponent_ng_template_1_div_5_cal_event_bar_7_Template_cal_event_bar_dragEnd_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.dragEnd.emit()); });
|
|
52
|
+
i0.ɵɵelementEnd();
|
|
53
|
+
} if (rf & 2) {
|
|
54
|
+
const item_r9 = ctx.$implicit;
|
|
55
|
+
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
56
|
+
i0.ɵɵproperty("item", item_r9)("weekDates", ctx_r0.dates)("ghost", (ctx_r0.previewEvent == null ? null : ctx_r0.previewEvent.id) === item_r9.segment.event.id)("clickThresholdMs", ctx_r0.config.clickThresholdMs)("selectedEventId", ctx_r0.selectedEventId)("selectedInstanceDate", ctx_r0.selectedInstanceDate);
|
|
57
|
+
} }
|
|
58
|
+
function TimelineViewComponent_ng_template_1_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
59
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
60
|
+
i0.ɵɵelementStart(0, "div", 9)(1, "div", 10);
|
|
61
|
+
i0.ɵɵtemplate(2, TimelineViewComponent_ng_template_1_div_5_span_2_Template, 1, 2, "span", 11);
|
|
62
|
+
i0.ɵɵelementStart(3, "span", 12);
|
|
63
|
+
i0.ɵɵtext(4);
|
|
64
|
+
i0.ɵɵelementEnd()();
|
|
65
|
+
i0.ɵɵelementStart(5, "div", 13);
|
|
66
|
+
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)); });
|
|
67
|
+
i0.ɵɵtemplate(6, TimelineViewComponent_ng_template_1_div_5_button_6_Template, 1, 6, "button", 14)(7, TimelineViewComponent_ng_template_1_div_5_cal_event_bar_7_Template, 1, 6, "cal-event-bar", 15);
|
|
68
|
+
i0.ɵɵelementEnd()();
|
|
69
|
+
} if (rf & 2) {
|
|
70
|
+
const r_r4 = ctx.$implicit;
|
|
71
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
72
|
+
i0.ɵɵadvance();
|
|
73
|
+
i0.ɵɵstyleProp("width", ctx_r0.resourceLabelW, "px");
|
|
74
|
+
i0.ɵɵadvance();
|
|
75
|
+
i0.ɵɵproperty("ngIf", r_r4.color);
|
|
76
|
+
i0.ɵɵadvance(2);
|
|
77
|
+
i0.ɵɵtextInterpolate(r_r4.name);
|
|
78
|
+
i0.ɵɵadvance();
|
|
79
|
+
i0.ɵɵstyleProp("display", "grid")("grid-template-columns", "repeat(" + ctx_r0.days + ", 1fr)")("grid-auto-rows", "32px")("min-height", ctx_r0.laneHeight(r_r4.id), "px");
|
|
80
|
+
i0.ɵɵadvance();
|
|
81
|
+
i0.ɵɵproperty("ngForOf", ctx_r0.dates)("ngForTrackBy", ctx_r0.trackDate);
|
|
82
|
+
i0.ɵɵadvance();
|
|
83
|
+
i0.ɵɵproperty("ngForOf", ctx_r0.itemsFor(r_r4.id))("ngForTrackBy", ctx_r0.trackItem);
|
|
84
|
+
} }
|
|
85
|
+
function TimelineViewComponent_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
86
|
+
i0.ɵɵelementStart(0, "div", 3)(1, "div", 4);
|
|
87
|
+
i0.ɵɵelement(2, "div", 5);
|
|
88
|
+
i0.ɵɵtemplate(3, TimelineViewComponent_ng_template_1_div_3_Template, 2, 3, "div", 6);
|
|
89
|
+
i0.ɵɵelementEnd();
|
|
90
|
+
i0.ɵɵelementStart(4, "div", 7);
|
|
91
|
+
i0.ɵɵtemplate(5, TimelineViewComponent_ng_template_1_div_5_Template, 8, 16, "div", 8);
|
|
92
|
+
i0.ɵɵelementEnd()();
|
|
93
|
+
} if (rf & 2) {
|
|
94
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
95
|
+
i0.ɵɵadvance();
|
|
96
|
+
i0.ɵɵstyleProp("grid-template-columns", ctx_r0.colTemplate);
|
|
97
|
+
i0.ɵɵadvance(2);
|
|
98
|
+
i0.ɵɵproperty("ngForOf", ctx_r0.dates)("ngForTrackBy", ctx_r0.trackDate);
|
|
99
|
+
i0.ɵɵadvance(2);
|
|
100
|
+
i0.ɵɵproperty("ngForOf", ctx_r0.visibleResources)("ngForTrackBy", ctx_r0.trackResource);
|
|
101
|
+
} }
|
|
102
|
+
export class TimelineViewComponent {
|
|
103
|
+
currentDate;
|
|
104
|
+
days = 7;
|
|
105
|
+
events = [];
|
|
106
|
+
visibleResources = [];
|
|
107
|
+
config;
|
|
108
|
+
// B-CAL-1: the controller already rebuilt the dragged event's geometry.
|
|
109
|
+
previewEvent = null;
|
|
110
|
+
selectedEventId = null;
|
|
111
|
+
selectedInstanceDate = undefined;
|
|
112
|
+
eventClick = new EventEmitter();
|
|
113
|
+
selectEvent = new EventEmitter();
|
|
114
|
+
clearSelection = new EventEmitter();
|
|
115
|
+
timelineCellClick = new EventEmitter();
|
|
116
|
+
timelineDrop = new EventEmitter();
|
|
117
|
+
dragOverDate = new EventEmitter();
|
|
118
|
+
/** Drop-Zone wurde verlassen (dragleave) — Preview visuell ausräumen. */
|
|
119
|
+
hidePreviewEv = new EventEmitter();
|
|
120
|
+
/** Native `dragend` der Source — Drag-Session vollständig beendet. */
|
|
121
|
+
dragEnd = new EventEmitter();
|
|
122
|
+
dragStartEv = new EventEmitter();
|
|
123
|
+
resourceLabelW = DEFAULT_RESOURCE_LABEL_WIDTH;
|
|
124
|
+
get dates() {
|
|
125
|
+
const start = startOfDay(this.currentDate);
|
|
126
|
+
return Array.from({ length: this.days }, (_, i) => addDays(start, i));
|
|
127
|
+
}
|
|
128
|
+
get colTemplate() {
|
|
129
|
+
return `${DEFAULT_RESOURCE_LABEL_WIDTH}px repeat(${this.days}, 1fr)`;
|
|
130
|
+
}
|
|
131
|
+
get _today() {
|
|
132
|
+
return now(this.config.core.timezone, this.config.core.clock);
|
|
133
|
+
}
|
|
134
|
+
get _dateFmt() {
|
|
135
|
+
return new Intl.DateTimeFormat(this.config.locale.code, {
|
|
136
|
+
weekday: 'short', day: 'numeric', month: 'short', timeZone: this.config.core.timezone,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
isToday(d) { return isSameDay(d, this._today); }
|
|
140
|
+
formatDate(d) { return this._dateFmt.format(new Date(d.epochMs)); }
|
|
141
|
+
/**
|
|
142
|
+
* B-CAL-1: the day-shift dance that preserved time-of-day now lives in the
|
|
143
|
+
* controller (`computeMoveRange` is a pure addDays). Just swap the rebuilt
|
|
144
|
+
* event in by id — the timeline no longer reconstructs anything.
|
|
145
|
+
*/
|
|
146
|
+
get displayEvents() {
|
|
147
|
+
const pe = this.previewEvent;
|
|
148
|
+
if (!pe)
|
|
149
|
+
return this.events;
|
|
150
|
+
return this.events.map(ev => ev.id === pe.id ? { ...ev, timeRange: pe.timeRange } : ev);
|
|
151
|
+
}
|
|
152
|
+
itemsFor(resourceId) {
|
|
153
|
+
const own = this.displayEvents.filter(e => e.resourceId === resourceId);
|
|
154
|
+
const segments = segmentInRange(own, this.dates);
|
|
155
|
+
return layoutAllDay(segments, this.dates);
|
|
156
|
+
}
|
|
157
|
+
dayFromX(clientX, laneRect) {
|
|
158
|
+
const ds = this.dates;
|
|
159
|
+
const x = Math.max(0, clientX - laneRect.left);
|
|
160
|
+
const colWidth = laneRect.width / ds.length;
|
|
161
|
+
const idx = Math.min(ds.length - 1, Math.floor(x / colWidth));
|
|
162
|
+
return ds[idx];
|
|
163
|
+
}
|
|
164
|
+
onLaneDragOver(e) {
|
|
165
|
+
e.preventDefault();
|
|
166
|
+
if (e.dataTransfer)
|
|
167
|
+
e.dataTransfer.dropEffect = 'move';
|
|
168
|
+
const rect = e.currentTarget.getBoundingClientRect();
|
|
169
|
+
this.dragOverDate.emit(this.dayFromX(e.clientX, rect));
|
|
170
|
+
}
|
|
171
|
+
onLaneDrop(e, resourceId) {
|
|
172
|
+
e.preventDefault();
|
|
173
|
+
const rect = e.currentTarget.getBoundingClientRect();
|
|
174
|
+
this.timelineDrop.emit({ event: e, date: this.dayFromX(e.clientX, rect), resourceId });
|
|
175
|
+
}
|
|
176
|
+
onLaneDragLeave(e) {
|
|
177
|
+
const el = e.currentTarget;
|
|
178
|
+
const rect = el.getBoundingClientRect();
|
|
179
|
+
if (e.clientX < rect.left || e.clientX > rect.right
|
|
180
|
+
|| e.clientY < rect.top || e.clientY > rect.bottom) {
|
|
181
|
+
this.hidePreviewEv.emit();
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
laneHeight(resourceId) {
|
|
185
|
+
const items = this.itemsFor(resourceId);
|
|
186
|
+
return Math.max(1, maxLanes(items)) * 32;
|
|
187
|
+
}
|
|
188
|
+
cellClick = createClickIntent();
|
|
189
|
+
onCellClick() {
|
|
190
|
+
if (!this.cellClick.accept(this.config.clickThresholdMs))
|
|
191
|
+
return;
|
|
192
|
+
// Single click deselects; dblclick opens the dialog.
|
|
193
|
+
if (this.selectedEventId !== null)
|
|
194
|
+
this.clearSelection.emit();
|
|
195
|
+
}
|
|
196
|
+
onCellDoubleClick(e, date, resourceId) {
|
|
197
|
+
if (!this.cellClick.accept(this.config.clickThresholdMs))
|
|
198
|
+
return;
|
|
199
|
+
const rect = e.currentTarget.getBoundingClientRect();
|
|
200
|
+
this.timelineCellClick.emit({ date, resourceId, rect });
|
|
201
|
+
}
|
|
202
|
+
trackResource(_, r) { return r.id; }
|
|
203
|
+
trackDate(_, d) { return d.epochMs; }
|
|
204
|
+
trackItem(_, item) { return item.segment.event.id; }
|
|
205
|
+
static ɵfac = function TimelineViewComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TimelineViewComponent)(); };
|
|
206
|
+
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, "timeline-view", "timeline-view--empty"], [1, "timeline-view"], [1, "timeline-view__header"], [1, "timeline-view__corner"], [3, "class", 4, "ngFor", "ngForOf", "ngForTrackBy"], [1, "timeline-view__body"], ["class", "timeline-view__lane", 4, "ngFor", "ngForOf", "ngForTrackBy"], [1, "timeline-view__lane"], [1, "timeline-view__resource-label"], ["class", "timeline-view__resource-dot", 3, "background-color", 4, "ngIf"], [1, "timeline-view__resource-name"], [1, "timeline-view__lane-content", 3, "dragover", "drop", "dragleave"], ["type", "button", 3, "class", "grid-column", "grid-row", "mousedown", "click", "dblclick", 4, "ngFor", "ngForOf", "ngForTrackBy"], [3, "item", "weekDates", "ghost", "clickThresholdMs", "selectedEventId", "selectedInstanceDate", "eventClick", "selectEvent", "dragStart", "dragEnd", 4, "ngFor", "ngForOf", "ngForTrackBy"], [1, "timeline-view__resource-dot"], ["type", "button", 3, "mousedown", "click", "dblclick"], [3, "eventClick", "selectEvent", "dragStart", "dragEnd", "item", "weekDates", "ghost", "clickThresholdMs", "selectedEventId", "selectedInstanceDate"]], template: function TimelineViewComponent_Template(rf, ctx) { if (rf & 1) {
|
|
207
|
+
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);
|
|
208
|
+
} if (rf & 2) {
|
|
209
|
+
const withResources_r10 = i0.ɵɵreference(2);
|
|
210
|
+
i0.ɵɵproperty("ngIf", ctx.visibleResources.length === 0)("ngIfElse", withResources_r10);
|
|
211
|
+
} }, dependencies: [CommonModule, i1.NgForOf, i1.NgIf, EventBarComponent], encapsulation: 2, changeDetection: 0 });
|
|
212
|
+
}
|
|
213
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TimelineViewComponent, [{
|
|
214
|
+
type: Component,
|
|
215
|
+
args: [{
|
|
216
|
+
selector: 'cal-timeline-view',
|
|
217
|
+
standalone: true,
|
|
218
|
+
imports: [CommonModule, EventBarComponent],
|
|
219
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
220
|
+
template: `
|
|
221
|
+
<ng-container *ngIf="visibleResources.length === 0; else withResources">
|
|
222
|
+
<div class="timeline-view timeline-view--empty">
|
|
223
|
+
{{ config.locale.unassigned || 'No resource selected' }}
|
|
224
|
+
</div>
|
|
225
|
+
</ng-container>
|
|
226
|
+
<ng-template #withResources>
|
|
227
|
+
<div class="timeline-view">
|
|
228
|
+
<div class="timeline-view__header" [style.grid-template-columns]="colTemplate">
|
|
229
|
+
<div class="timeline-view__corner"></div>
|
|
230
|
+
<div *ngFor="let d of dates; trackBy: trackDate"
|
|
231
|
+
[class]="'timeline-view__date-header' + (isToday(d) ? ' timeline-view__date-header--today' : '')">
|
|
232
|
+
{{ formatDate(d) }}
|
|
233
|
+
</div>
|
|
234
|
+
</div>
|
|
235
|
+
|
|
236
|
+
<div class="timeline-view__body">
|
|
237
|
+
<div *ngFor="let r of visibleResources; trackBy: trackResource" class="timeline-view__lane">
|
|
238
|
+
<div class="timeline-view__resource-label" [style.width.px]="resourceLabelW">
|
|
239
|
+
<span *ngIf="r.color" class="timeline-view__resource-dot" [style.background-color]="r.color"></span>
|
|
240
|
+
<span class="timeline-view__resource-name">{{ r.name }}</span>
|
|
241
|
+
</div>
|
|
242
|
+
<div class="timeline-view__lane-content"
|
|
243
|
+
[style.display]="'grid'"
|
|
244
|
+
[style.grid-template-columns]="'repeat(' + days + ', 1fr)'"
|
|
245
|
+
[style.grid-auto-rows]="'32px'"
|
|
246
|
+
[style.min-height.px]="laneHeight(r.id)"
|
|
247
|
+
(dragover)="onLaneDragOver($event)"
|
|
248
|
+
(drop)="onLaneDrop($event, r.id)"
|
|
249
|
+
(dragleave)="onLaneDragLeave($event)">
|
|
250
|
+
<button *ngFor="let d of dates; let i = index; trackBy: trackDate"
|
|
251
|
+
type="button"
|
|
252
|
+
[class]="'timeline-view__cell' + (isToday(d) ? ' timeline-view__cell--today' : '')"
|
|
253
|
+
[style.grid-column]="i + 1"
|
|
254
|
+
[style.grid-row]="'1 / -1'"
|
|
255
|
+
(mousedown)="cellClick.markMouseDown()"
|
|
256
|
+
(click)="onCellClick()"
|
|
257
|
+
(dblclick)="onCellDoubleClick($event, d, r.id)">
|
|
258
|
+
</button>
|
|
259
|
+
<cal-event-bar *ngFor="let item of itemsFor(r.id); let idx = index; trackBy: trackItem"
|
|
260
|
+
[item]="item"
|
|
261
|
+
[weekDates]="dates"
|
|
262
|
+
[ghost]="previewEvent?.id === item.segment.event.id"
|
|
263
|
+
[clickThresholdMs]="config.clickThresholdMs"
|
|
264
|
+
[selectedEventId]="selectedEventId"
|
|
265
|
+
[selectedInstanceDate]="selectedInstanceDate"
|
|
266
|
+
(eventClick)="eventClick.emit($event)"
|
|
267
|
+
(selectEvent)="selectEvent.emit($event)"
|
|
268
|
+
(dragStart)="dragStartEv.emit($event)"
|
|
269
|
+
(dragEnd)="dragEnd.emit()">
|
|
270
|
+
</cal-event-bar>
|
|
271
|
+
</div>
|
|
272
|
+
</div>
|
|
273
|
+
</div>
|
|
274
|
+
</div>
|
|
275
|
+
</ng-template>
|
|
276
|
+
`,
|
|
277
|
+
}]
|
|
278
|
+
}], null, { currentDate: [{
|
|
279
|
+
type: Input
|
|
280
|
+
}], days: [{
|
|
281
|
+
type: Input
|
|
282
|
+
}], events: [{
|
|
283
|
+
type: Input
|
|
284
|
+
}], visibleResources: [{
|
|
285
|
+
type: Input
|
|
286
|
+
}], config: [{
|
|
287
|
+
type: Input
|
|
288
|
+
}], previewEvent: [{
|
|
289
|
+
type: Input
|
|
290
|
+
}], selectedEventId: [{
|
|
291
|
+
type: Input
|
|
292
|
+
}], selectedInstanceDate: [{
|
|
293
|
+
type: Input
|
|
294
|
+
}], eventClick: [{
|
|
295
|
+
type: Output
|
|
296
|
+
}], selectEvent: [{
|
|
297
|
+
type: Output
|
|
298
|
+
}], clearSelection: [{
|
|
299
|
+
type: Output
|
|
300
|
+
}], timelineCellClick: [{
|
|
301
|
+
type: Output
|
|
302
|
+
}], timelineDrop: [{
|
|
303
|
+
type: Output
|
|
304
|
+
}], dragOverDate: [{
|
|
305
|
+
type: Output
|
|
306
|
+
}], hidePreviewEv: [{
|
|
307
|
+
type: Output
|
|
308
|
+
}], dragEnd: [{
|
|
309
|
+
type: Output
|
|
310
|
+
}], dragStartEv: [{
|
|
311
|
+
type: Output
|
|
312
|
+
}] }); })();
|
|
313
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TimelineViewComponent, { className: "TimelineViewComponent", filePath: "views/timeline/timelineview.ts", lineNumber: 77 }); })();
|
|
314
|
+
//# sourceMappingURL=TimelineView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TimelineView.js","sourceRoot":"","sources":["../../../src/views/timeline/TimelineView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAChG,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EACL,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EACnC,cAAc,EAAE,YAAY,EAAE,QAAQ,GACvC,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,4BAA4B,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;;;;IAS7D,6BAAwE;IACtE,8BAAgD;IAC9C,YACF;IAAA,iBAAM;;;;IADJ,eACF;IADE,0FACF;;;IAMI,2BACuG;IACrG,YACF;IAAA,iBAAM;;;;IAFD,gHAAiG;IACpG,cACF;IADE,wDACF;;;IAMI,2BAAoG;;;IAA1C,8CAAkC;;;;IAW5F,kCAOwD;IAAhD,AADA,AADA,iNAAa,gCAAyB,KAAC,4LAC9B,oBAAa,KAAC,0QACX,+CAAkC,KAAC;IACvD,iBAAS;;;;;IAND,kGAAmF;IAEnF,AADA,uCAA2B,sBACA;;;;IAKnC,yCAU6B;IAA3B,AADA,AADA,AADA,uOAAc,8BAAuB,KAAC,4NACvB,+BAAwB,KAAC,wNAC3B,+BAAwB,KAAC,8MAC3B,qBAAc,KAAC;IAC5B,iBAAgB;;;;IALd,AADA,AADA,AADA,AADA,AADA,8BAAa,2BACM,qGACiC,oDACR,2CACT,qDACU;;;;IA3BjD,AADF,8BAA4F,cACb;IAC3E,6FAA6F;IAC7F,gCAA2C;IAAA,YAAY;IACzD,AADyD,iBAAO,EAC1D;IACN,+BAO2C;IAAtC,AADA,AADA,yMAAY,6BAAsB,KAAC,2MAC3B,kCAAwB,KAAC,8LACpB,8BAAuB,KAAC;IAUxC,AATA,iGAOwD,kGAY3B;IAGjC,AADE,iBAAM,EACF;;;;IAlCuC,cAAiC;IAAjC,oDAAiC;IACnE,cAAa;IAAb,iCAAa;IACuB,eAAY;IAAZ,+BAAY;IAGpD,cAAwB;IAGxB,AADA,AADA,AADA,iCAAwB,6DACmC,0BAC5B,gDACS;IAIrB,cAAU;IAAe,AAAzB,sCAAU,kCAAiC;IASjC,cAAmB;IAAiB,AAApC,kDAAmB,kCAAmC;;;IA/B5F,AADF,8BAA2B,aACsD;IAC7E,yBAAyC;IACzC,oFACuG;IAGzG,iBAAM;IAEN,8BAAiC;IAC/B,qFAA4F;IAqChG,AADE,iBAAM,EACF;;;IA9C+B,cAA2C;IAA3C,2DAA2C;IAEzD,eAAU;IAAA,AAAV,sCAAU,kCAAkB;IAO5B,eAAqB;IAAA,AAArB,iDAAqB,sCAAsB;;AAyCxE,MAAM,OAAO,qBAAqB;IACvB,WAAW,CAAoB;IAC/B,IAAI,GAAG,CAAC,CAAC;IACT,MAAM,GAAoB,EAAE,CAAC;IAC7B,gBAAgB,GAAwB,EAAE,CAAC;IAC3C,MAAM,CAAkB;IACjC,wEAAwE;IAC/D,YAAY,GAAyB,IAAI,CAAC;IAC1C,eAAe,GAAkB,IAAI,CAAC;IACtC,oBAAoB,GAAuB,SAAS,CAAC;IACpD,UAAU,GAAG,IAAI,YAAY,EAA6D,CAAC;IAC3F,WAAW,GAAG,IAAI,YAAY,EAA8C,CAAC;IAC7E,cAAc,GAAG,IAAI,YAAY,EAAQ,CAAC;IAC1C,iBAAiB,GAAG,IAAI,YAAY,EAAiE,CAAC;IACtG,YAAY,GAAG,IAAI,YAAY,EAAoE,CAAC;IACpG,YAAY,GAAG,IAAI,YAAY,EAAoB,CAAC;IAC9D,yEAAyE;IAC/D,aAAa,GAAG,IAAI,YAAY,EAAQ,CAAC;IACnD,sEAAsE;IAC5D,OAAO,GAAG,IAAI,YAAY,EAAQ,CAAC;IACnC,WAAW,GAAG,IAAI,YAAY,EAAY,CAAC;IAErD,cAAc,GAAG,4BAA4B,CAAC;IAE9C,IAAI,KAAK;QACP,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3C,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,IAAI,WAAW;QACb,OAAO,GAAG,4BAA4B,aAAa,IAAI,CAAC,IAAI,QAAQ,CAAC;IACvE,CAAC;IAED,IAAY,MAAM;QAChB,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChE,CAAC;IAED,IAAY,QAAQ;QAClB,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;YACtD,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ;SACtF,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,CAAmB,IAAa,OAAO,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3E,UAAU,CAAC,CAAmB,IAAY,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7F;;;;OAIG;IACH,IAAI,aAAa;QACf,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;QAC7B,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC;QAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,QAAQ,CAAC,UAAkB;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,CAAC;QACxE,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACjD,OAAO,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAEO,QAAQ,CAAC,OAAe,EAAE,QAAiB;QACjD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACtB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;QAC9D,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;IAED,cAAc,CAAC,CAAY;QACzB,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC,CAAC,YAAY;YAAE,CAAC,CAAC,YAAY,CAAC,UAAU,GAAG,MAAM,CAAC;QACvD,MAAM,IAAI,GAAI,CAAC,CAAC,aAA6B,CAAC,qBAAqB,EAAE,CAAC;QACtE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,UAAU,CAAC,CAAY,EAAE,UAAkB;QACzC,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,MAAM,IAAI,GAAI,CAAC,CAAC,aAA6B,CAAC,qBAAqB,EAAE,CAAC;QACtE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;IACzF,CAAC;IAED,eAAe,CAAC,CAAY;QAC1B,MAAM,EAAE,GAAG,CAAC,CAAC,aAA4B,CAAC;QAC1C,MAAM,IAAI,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC;QACxC,IAAI,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK;eAC9C,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACrD,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,UAAU,CAAC,UAAkB;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC;IAC3C,CAAC;IAED,SAAS,GAAG,iBAAiB,EAAE,CAAC;IAEhC,WAAW;QACT,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;YAAE,OAAO;QACjE,qDAAqD;QACrD,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI;YAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAChE,CAAC;IAED,iBAAiB,CAAC,CAAa,EAAE,IAAsB,EAAE,UAAkB;QACzE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;YAAE,OAAO;QACjE,MAAM,IAAI,GAAI,CAAC,CAAC,aAA6B,CAAC,qBAAqB,EAAE,CAAC;QACtE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,aAAa,CAAC,CAAS,EAAE,CAAW,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtD,SAAS,CAAC,CAAS,EAAE,CAAmB,IAAI,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/D,SAAS,CAAC,CAAS,EAAE,IAAgB,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;+GAlH7D,qBAAqB;6DAArB,qBAAqB;YApD9B,AALA,wFAAwE,0GAK5C;;;YALwB,AAArC,wDAAqC,+BAAkB;4BAH9D,YAAY,uBAAE,iBAAiB;;iFA4D9B,qBAAqB;cA/DjC,SAAS;eAAC;gBACT,QAAQ,EAAE,mBAAmB;gBAC7B,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE,CAAC,YAAY,EAAE,iBAAiB,CAAC;gBAC1C,eAAe,EAAE,uBAAuB,CAAC,MAAM;gBAC/C,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDT;aACF;gBAEU,WAAW;kBAAnB,KAAK;YACG,IAAI;kBAAZ,KAAK;YACG,MAAM;kBAAd,KAAK;YACG,gBAAgB;kBAAxB,KAAK;YACG,MAAM;kBAAd,KAAK;YAEG,YAAY;kBAApB,KAAK;YACG,eAAe;kBAAvB,KAAK;YACG,oBAAoB;kBAA5B,KAAK;YACI,UAAU;kBAAnB,MAAM;YACG,WAAW;kBAApB,MAAM;YACG,cAAc;kBAAvB,MAAM;YACG,iBAAiB;kBAA1B,MAAM;YACG,YAAY;kBAArB,MAAM;YACG,YAAY;kBAArB,MAAM;YAEG,aAAa;kBAAtB,MAAM;YAEG,OAAO;kBAAhB,MAAM;YACG,WAAW;kBAApB,MAAM;;kFApBI,qBAAqB"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { EventEmitter, ElementRef } from '@angular/core';
|
|
2
|
+
import type { CalendarDateTime, CalendarEvent, LayoutItem } from '@bimetal/calendar-core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class AllDayRowComponent {
|
|
5
|
+
weekDates: CalendarDateTime[];
|
|
6
|
+
items: LayoutItem[];
|
|
7
|
+
allDayLabel: string;
|
|
8
|
+
previewEvent: CalendarEvent | null;
|
|
9
|
+
selectedEventId: string | null;
|
|
10
|
+
selectedInstanceDate: number | undefined;
|
|
11
|
+
eventClick: EventEmitter<{
|
|
12
|
+
eventId: string;
|
|
13
|
+
rect: DOMRect;
|
|
14
|
+
instanceDate?: number;
|
|
15
|
+
}>;
|
|
16
|
+
selectEvent: EventEmitter<{
|
|
17
|
+
eventId: string;
|
|
18
|
+
instanceDate?: number;
|
|
19
|
+
}>;
|
|
20
|
+
dropEvent: EventEmitter<{
|
|
21
|
+
event: DragEvent;
|
|
22
|
+
date: CalendarDateTime;
|
|
23
|
+
}>;
|
|
24
|
+
dragOver: EventEmitter<CalendarDateTime>;
|
|
25
|
+
/** Drop-Zone wurde verlassen (dragleave) — Preview visuell ausräumen. */
|
|
26
|
+
hidePreviewEv: EventEmitter<void>;
|
|
27
|
+
/** Native `dragend` der Source — Drag-Session vollständig beendet. */
|
|
28
|
+
dragEnd: EventEmitter<void>;
|
|
29
|
+
dragStartEv: EventEmitter<any>;
|
|
30
|
+
rowEl?: ElementRef<HTMLDivElement>;
|
|
31
|
+
get lanes(): number;
|
|
32
|
+
handleDragOver(e: DragEvent): void;
|
|
33
|
+
handleDrop(e: DragEvent): void;
|
|
34
|
+
handleDragLeave(e: DragEvent): void;
|
|
35
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AllDayRowComponent, never>;
|
|
36
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AllDayRowComponent, "cal-allday-row", never, { "weekDates": { "alias": "weekDates"; "required": false; }; "items": { "alias": "items"; "required": false; }; "allDayLabel": { "alias": "allDayLabel"; "required": false; }; "previewEvent": { "alias": "previewEvent"; "required": false; }; "selectedEventId": { "alias": "selectedEventId"; "required": false; }; "selectedInstanceDate": { "alias": "selectedInstanceDate"; "required": false; }; }, { "eventClick": "eventClick"; "selectEvent": "selectEvent"; "dropEvent": "dropEvent"; "dragOver": "dragOver"; "hidePreviewEv": "hidePreviewEv"; "dragEnd": "dragEnd"; "dragStartEv": "dragStartEv"; }, never, never, true, never>;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=AllDayRow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AllDayRow.d.ts","sourceRoot":"","sources":["../../../src/views/week/AllDayRow.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAa,UAAU,EAAE,MAAM,eAAe,CAAC;AAE9F,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;;AAK1F,qBAyBa,kBAAkB;IACpB,SAAS,EAAE,gBAAgB,EAAE,CAAM;IACnC,KAAK,EAAE,UAAU,EAAE,CAAM;IACzB,WAAW,SAAa;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,SAAS;eAA6B,SAAS;cAAQ,gBAAgB;OAAM;IAC7E,QAAQ,iCAAwC;IAC1D,yEAAyE;IAC/D,aAAa,qBAA4B;IACnD,sEAAsE;IAC5D,OAAO,qBAA4B;IACnC,WAAW,oBAA2B;IAE5B,KAAK,CAAC,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;IAEvD,IAAI,KAAK,WAAmC;IAE5C,cAAc,CAAC,CAAC,EAAE,SAAS;IAQ3B,UAAU,CAAC,CAAC,EAAE,SAAS;IAOvB,eAAe,CAAC,CAAC,EAAE,SAAS;yCArCjB,kBAAkB;2CAAlB,kBAAkB;CA4C9B"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter, ViewChild, ElementRef } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { maxLanes } from '@bimetal/calendar-core';
|
|
4
|
+
import { colFromTimeGridX, DEFAULT_TIME_LABEL_WIDTH_WEEK } from '@bimetal/calendar-headless';
|
|
5
|
+
import { EventBarComponent } from '../../components/EventBar.js';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/common";
|
|
8
|
+
const _c0 = ["rowEl"];
|
|
9
|
+
function AllDayRowComponent_div_0_cal_event_bar_5_Template(rf, ctx) { if (rf & 1) {
|
|
10
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
11
|
+
i0.ɵɵelementStart(0, "cal-event-bar", 6);
|
|
12
|
+
i0.ɵɵlistener("eventClick", function AllDayRowComponent_div_0_cal_event_bar_5_Template_cal_event_bar_eventClick_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.eventClick.emit($event)); })("selectEvent", function AllDayRowComponent_div_0_cal_event_bar_5_Template_cal_event_bar_selectEvent_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.selectEvent.emit($event)); })("dragStart", function AllDayRowComponent_div_0_cal_event_bar_5_Template_cal_event_bar_dragStart_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.dragStartEv.emit($event)); })("dragEnd", function AllDayRowComponent_div_0_cal_event_bar_5_Template_cal_event_bar_dragEnd_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.dragEnd.emit()); });
|
|
13
|
+
i0.ɵɵelementEnd();
|
|
14
|
+
} if (rf & 2) {
|
|
15
|
+
const item_r4 = ctx.$implicit;
|
|
16
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
17
|
+
i0.ɵɵproperty("item", item_r4)("weekDates", ctx_r1.weekDates)("ghost", (ctx_r1.previewEvent == null ? null : ctx_r1.previewEvent.id) === item_r4.segment.event.id)("selectedEventId", ctx_r1.selectedEventId)("selectedInstanceDate", ctx_r1.selectedInstanceDate);
|
|
18
|
+
} }
|
|
19
|
+
function AllDayRowComponent_div_0_Template(rf, ctx) { if (rf & 1) {
|
|
20
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
21
|
+
i0.ɵɵelementStart(0, "div", 2, 0);
|
|
22
|
+
i0.ɵɵlistener("dragover", function AllDayRowComponent_div_0_Template_div_dragover_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.handleDragOver($event)); })("drop", function AllDayRowComponent_div_0_Template_div_drop_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.handleDrop($event)); })("dragleave", function AllDayRowComponent_div_0_Template_div_dragleave_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.handleDragLeave($event)); });
|
|
23
|
+
i0.ɵɵelementStart(2, "div", 3);
|
|
24
|
+
i0.ɵɵtext(3);
|
|
25
|
+
i0.ɵɵelementEnd();
|
|
26
|
+
i0.ɵɵelementStart(4, "div", 4);
|
|
27
|
+
i0.ɵɵtemplate(5, AllDayRowComponent_div_0_cal_event_bar_5_Template, 1, 5, "cal-event-bar", 5);
|
|
28
|
+
i0.ɵɵelementEnd()();
|
|
29
|
+
} if (rf & 2) {
|
|
30
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
31
|
+
i0.ɵɵadvance(3);
|
|
32
|
+
i0.ɵɵtextInterpolate(ctx_r1.allDayLabel);
|
|
33
|
+
i0.ɵɵadvance();
|
|
34
|
+
i0.ɵɵstyleProp("--lane-count", ctx_r1.lanes);
|
|
35
|
+
i0.ɵɵadvance();
|
|
36
|
+
i0.ɵɵproperty("ngForOf", ctx_r1.items);
|
|
37
|
+
} }
|
|
38
|
+
export class AllDayRowComponent {
|
|
39
|
+
weekDates = [];
|
|
40
|
+
items = [];
|
|
41
|
+
allDayLabel = 'all day';
|
|
42
|
+
// B-CAL-1: the controller-rebuilt dragged event; only the ghost flag reads it.
|
|
43
|
+
previewEvent = null;
|
|
44
|
+
selectedEventId = null;
|
|
45
|
+
selectedInstanceDate = undefined;
|
|
46
|
+
eventClick = new EventEmitter();
|
|
47
|
+
selectEvent = new EventEmitter();
|
|
48
|
+
dropEvent = new EventEmitter();
|
|
49
|
+
dragOver = new EventEmitter();
|
|
50
|
+
/** Drop-Zone wurde verlassen (dragleave) — Preview visuell ausräumen. */
|
|
51
|
+
hidePreviewEv = new EventEmitter();
|
|
52
|
+
/** Native `dragend` der Source — Drag-Session vollständig beendet. */
|
|
53
|
+
dragEnd = new EventEmitter();
|
|
54
|
+
dragStartEv = new EventEmitter();
|
|
55
|
+
rowEl;
|
|
56
|
+
get lanes() { return maxLanes(this.items); }
|
|
57
|
+
handleDragOver(e) {
|
|
58
|
+
e.preventDefault();
|
|
59
|
+
e.dataTransfer.dropEffect = 'move';
|
|
60
|
+
if (!this.rowEl)
|
|
61
|
+
return;
|
|
62
|
+
const col = colFromTimeGridX(e.clientX, this.rowEl.nativeElement.getBoundingClientRect(), DEFAULT_TIME_LABEL_WIDTH_WEEK);
|
|
63
|
+
this.dragOver.emit(this.weekDates[col]);
|
|
64
|
+
}
|
|
65
|
+
handleDrop(e) {
|
|
66
|
+
e.preventDefault();
|
|
67
|
+
if (!this.rowEl)
|
|
68
|
+
return;
|
|
69
|
+
const col = colFromTimeGridX(e.clientX, this.rowEl.nativeElement.getBoundingClientRect(), DEFAULT_TIME_LABEL_WIDTH_WEEK);
|
|
70
|
+
this.dropEvent.emit({ event: e, date: this.weekDates[col] });
|
|
71
|
+
}
|
|
72
|
+
handleDragLeave(e) {
|
|
73
|
+
const row = e.currentTarget;
|
|
74
|
+
const rect = row.getBoundingClientRect();
|
|
75
|
+
if (e.clientX < rect.left || e.clientX > rect.right || e.clientY < rect.top || e.clientY > rect.bottom) {
|
|
76
|
+
this.hidePreviewEv.emit();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
static ɵfac = function AllDayRowComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AllDayRowComponent)(); };
|
|
80
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AllDayRowComponent, selectors: [["cal-allday-row"]], viewQuery: function AllDayRowComponent_Query(rf, ctx) { if (rf & 1) {
|
|
81
|
+
i0.ɵɵviewQuery(_c0, 5);
|
|
82
|
+
} if (rf & 2) {
|
|
83
|
+
let _t;
|
|
84
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.rowEl = _t.first);
|
|
85
|
+
} }, hostAttrs: [2, "display", "contents"], inputs: { weekDates: "weekDates", items: "items", allDayLabel: "allDayLabel", previewEvent: "previewEvent", selectedEventId: "selectedEventId", selectedInstanceDate: "selectedInstanceDate" }, outputs: { eventClick: "eventClick", selectEvent: "selectEvent", dropEvent: "dropEvent", dragOver: "dragOver", hidePreviewEv: "hidePreviewEv", dragEnd: "dragEnd", dragStartEv: "dragStartEv" }, decls: 1, vars: 1, consts: [["rowEl", ""], ["class", "week-view__allday", 3, "dragover", "drop", "dragleave", 4, "ngIf"], [1, "week-view__allday", 3, "dragover", "drop", "dragleave"], [1, "week-view__allday-label"], [1, "week-view__allday-grid"], [3, "item", "weekDates", "ghost", "selectedEventId", "selectedInstanceDate", "eventClick", "selectEvent", "dragStart", "dragEnd", 4, "ngFor", "ngForOf"], [3, "eventClick", "selectEvent", "dragStart", "dragEnd", "item", "weekDates", "ghost", "selectedEventId", "selectedInstanceDate"]], template: function AllDayRowComponent_Template(rf, ctx) { if (rf & 1) {
|
|
86
|
+
i0.ɵɵtemplate(0, AllDayRowComponent_div_0_Template, 6, 4, "div", 1);
|
|
87
|
+
} if (rf & 2) {
|
|
88
|
+
i0.ɵɵproperty("ngIf", ctx.items.length > 0);
|
|
89
|
+
} }, dependencies: [CommonModule, i1.NgForOf, i1.NgIf, EventBarComponent], encapsulation: 2 });
|
|
90
|
+
}
|
|
91
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AllDayRowComponent, [{
|
|
92
|
+
type: Component,
|
|
93
|
+
args: [{
|
|
94
|
+
selector: 'cal-allday-row',
|
|
95
|
+
standalone: true,
|
|
96
|
+
host: { style: 'display: contents' },
|
|
97
|
+
imports: [CommonModule, EventBarComponent],
|
|
98
|
+
template: `
|
|
99
|
+
<div *ngIf="items.length > 0" #rowEl class="week-view__allday"
|
|
100
|
+
(dragover)="handleDragOver($event)" (drop)="handleDrop($event)"
|
|
101
|
+
(dragleave)="handleDragLeave($event)">
|
|
102
|
+
<div class="week-view__allday-label">{{ allDayLabel }}</div>
|
|
103
|
+
<div class="week-view__allday-grid" [style.--lane-count]="lanes">
|
|
104
|
+
<cal-event-bar *ngFor="let item of items; let idx = index"
|
|
105
|
+
[item]="item" [weekDates]="weekDates"
|
|
106
|
+
[ghost]="previewEvent?.id === item.segment.event.id"
|
|
107
|
+
[selectedEventId]="selectedEventId"
|
|
108
|
+
[selectedInstanceDate]="selectedInstanceDate"
|
|
109
|
+
(eventClick)="eventClick.emit($event)"
|
|
110
|
+
(selectEvent)="selectEvent.emit($event)"
|
|
111
|
+
(dragStart)="dragStartEv.emit($event)"
|
|
112
|
+
(dragEnd)="dragEnd.emit()">
|
|
113
|
+
</cal-event-bar>
|
|
114
|
+
</div>
|
|
115
|
+
</div>
|
|
116
|
+
`,
|
|
117
|
+
}]
|
|
118
|
+
}], null, { weekDates: [{
|
|
119
|
+
type: Input
|
|
120
|
+
}], items: [{
|
|
121
|
+
type: Input
|
|
122
|
+
}], allDayLabel: [{
|
|
123
|
+
type: Input
|
|
124
|
+
}], previewEvent: [{
|
|
125
|
+
type: Input
|
|
126
|
+
}], selectedEventId: [{
|
|
127
|
+
type: Input
|
|
128
|
+
}], selectedInstanceDate: [{
|
|
129
|
+
type: Input
|
|
130
|
+
}], eventClick: [{
|
|
131
|
+
type: Output
|
|
132
|
+
}], selectEvent: [{
|
|
133
|
+
type: Output
|
|
134
|
+
}], dropEvent: [{
|
|
135
|
+
type: Output
|
|
136
|
+
}], dragOver: [{
|
|
137
|
+
type: Output
|
|
138
|
+
}], hidePreviewEv: [{
|
|
139
|
+
type: Output
|
|
140
|
+
}], dragEnd: [{
|
|
141
|
+
type: Output
|
|
142
|
+
}], dragStartEv: [{
|
|
143
|
+
type: Output
|
|
144
|
+
}], rowEl: [{
|
|
145
|
+
type: ViewChild,
|
|
146
|
+
args: ['rowEl']
|
|
147
|
+
}] }); })();
|
|
148
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AllDayRowComponent, { className: "AllDayRowComponent", filePath: "views/week/alldayrow.ts", lineNumber: 33 }); })();
|
|
149
|
+
//# sourceMappingURL=AllDayRow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AllDayRow.js","sourceRoot":"","sources":["../../../src/views/week/AllDayRow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import type { CalendarEvent, CalendarDateTime } from '@bimetal/calendar-core';
|
|
3
|
+
import { type DragInfo } from '@bimetal/calendar-headless';
|
|
4
|
+
import { EventRenderService } from '../../binding/index.js';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
/**
|
|
7
|
+
* Layout-Position eines Termins in einer Spalten-orientierten View
|
|
8
|
+
* (Week, Day, Resource). Zwei orthogonale Achsen — siehe React-Variante
|
|
9
|
+
* `packages/react-components/src/views/week/TimeEvent.tsx` für die
|
|
10
|
+
* Architektur-Begründung (Pilot-Direktive 2026-06-21).
|
|
11
|
+
*/
|
|
12
|
+
export interface TimeEventLayout {
|
|
13
|
+
readonly dayCol: number;
|
|
14
|
+
readonly dayCount: number;
|
|
15
|
+
readonly lane: number;
|
|
16
|
+
readonly laneCount: number;
|
|
17
|
+
readonly startOffset: number;
|
|
18
|
+
readonly endOffset: number;
|
|
19
|
+
}
|
|
20
|
+
export declare class TimeEventComponent {
|
|
21
|
+
private renderService?;
|
|
22
|
+
event: CalendarEvent;
|
|
23
|
+
layout: TimeEventLayout;
|
|
24
|
+
dayDate: CalendarDateTime;
|
|
25
|
+
hourHeight: number;
|
|
26
|
+
timeLabelWidth: number;
|
|
27
|
+
ghost: boolean;
|
|
28
|
+
clickThresholdMs: number;
|
|
29
|
+
snapMinutes: number;
|
|
30
|
+
locale: any;
|
|
31
|
+
selectedEventId: string | null;
|
|
32
|
+
selectedInstanceDate: number | undefined;
|
|
33
|
+
eventClick: EventEmitter<{
|
|
34
|
+
eventId: string;
|
|
35
|
+
rect: DOMRect;
|
|
36
|
+
instanceDate?: number;
|
|
37
|
+
}>;
|
|
38
|
+
selectEvent: EventEmitter<{
|
|
39
|
+
eventId: string;
|
|
40
|
+
instanceDate?: number;
|
|
41
|
+
}>;
|
|
42
|
+
dragStart: EventEmitter<DragInfo>;
|
|
43
|
+
/** Native `dragend` der Source — bubbelt aus Body und Resize-Handles. */
|
|
44
|
+
dragEnd: EventEmitter<void>;
|
|
45
|
+
private click;
|
|
46
|
+
constructor(renderService?: EventRenderService | undefined);
|
|
47
|
+
get badgesTpl(): import("@angular/core").TemplateRef<import("../../index.js").EventRenderTemplateContext> | undefined;
|
|
48
|
+
get contentTpl(): import("@angular/core").TemplateRef<import("../../index.js").EventRenderTemplateContext> | undefined;
|
|
49
|
+
get tplCtx(): import("../../index.js").EventRenderTemplateContext | undefined;
|
|
50
|
+
get renderedTitle(): string;
|
|
51
|
+
get slotsClassName(): string;
|
|
52
|
+
get slotsStyle(): Record<string, string | number> | undefined;
|
|
53
|
+
get dayHeight(): number;
|
|
54
|
+
get top(): number;
|
|
55
|
+
get height(): number;
|
|
56
|
+
get duration(): number;
|
|
57
|
+
get isFirstDay(): boolean;
|
|
58
|
+
get isLastDay(): boolean;
|
|
59
|
+
get color(): string;
|
|
60
|
+
get leftFraction(): number;
|
|
61
|
+
get widthFraction(): number;
|
|
62
|
+
get left(): string;
|
|
63
|
+
get width(): string;
|
|
64
|
+
get borderRadius(): string;
|
|
65
|
+
get instanceDate(): number | undefined;
|
|
66
|
+
get isSelected(): boolean;
|
|
67
|
+
get selectedClass(): "" | " time-event--selected";
|
|
68
|
+
get timeLabel(): string;
|
|
69
|
+
handleMouseDown(): void;
|
|
70
|
+
handleDragStart(e: DragEvent): void;
|
|
71
|
+
handleResizeDragStart(e: DragEvent, edge: 'start' | 'end'): void;
|
|
72
|
+
handleClick(e: MouseEvent): void;
|
|
73
|
+
handleDoubleClick(e: MouseEvent): void;
|
|
74
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TimeEventComponent, [{ optional: true; }]>;
|
|
75
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TimeEventComponent, "cal-time-event", never, { "event": { "alias": "event"; "required": false; }; "layout": { "alias": "layout"; "required": false; }; "dayDate": { "alias": "dayDate"; "required": false; }; "hourHeight": { "alias": "hourHeight"; "required": false; }; "timeLabelWidth": { "alias": "timeLabelWidth"; "required": false; }; "ghost": { "alias": "ghost"; "required": false; }; "clickThresholdMs": { "alias": "clickThresholdMs"; "required": false; }; "snapMinutes": { "alias": "snapMinutes"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "selectedEventId": { "alias": "selectedEventId"; "required": false; }; "selectedInstanceDate": { "alias": "selectedInstanceDate"; "required": false; }; }, { "eventClick": "eventClick"; "selectEvent": "selectEvent"; "dragStart": "dragStart"; "dragEnd": "dragEnd"; }, never, never, true, never>;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=TimeEvent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TimeEvent.d.ts","sourceRoot":"","sources":["../../../src/views/week/TimeEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAY,MAAM,eAAe,CAAC;AAEjF,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE9E,OAAO,EAAwF,KAAK,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACjJ,OAAO,EAAa,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;;AAEvE;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,qBA+Ca,kBAAkB;IAoBL,OAAO,CAAC,aAAa,CAAC;IAnBrC,KAAK,EAAG,aAAa,CAAC;IACtB,MAAM,EAAG,eAAe,CAAC;IACzB,OAAO,EAAG,gBAAgB,CAAC;IAC3B,UAAU,SAAM;IAChB,cAAc,SAAM;IACpB,KAAK,UAAS;IACd,gBAAgB,SAAO;IACvB,WAAW,SAAM;IACjB,MAAM,EAAE,GAAG,CAAC;IACZ,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,SAAS,yBAAgC;IACnD,yEAAyE;IAC/D,OAAO,qBAA4B;IAE7C,OAAO,CAAC,KAAK,CAAuB;gBAEJ,aAAa,CAAC,EAAE,kBAAkB,YAAA;IAElE,IAAI,SAAS,yGAAiD;IAC9D,IAAI,UAAU,yGAAkD;IAChE,IAAI,MAAM,oEAAmE;IAC7E,IAAI,aAAa,WAA+E;IAChG,IAAI,cAAc,WAGjB;IACD,IAAI,UAAU,gDAA2D;IAKzE,IAAI,SAAS,WAAmC;IAChD,IAAI,GAAG,WAAuD;IAC9D,IAAI,MAAM,WAGT;IACD,IAAI,QAAQ,WAEX;IACD,IAAI,UAAU,YAAkE;IAChF,IAAI,SAAS,YAAgE;IAC7E,IAAI,KAAK,WAAiF;IAC1F,IAAI,YAAY,WAGf;IACD,IAAI,aAAa,WAEhB;IACD,IAAI,IAAI,WAAgH;IACxH,IAAI,KAAK,WAAsF;IAC/F,IAAI,YAAY,WAIf;IACD,IAAI,YAAY,uBAAsE;IACtF,IAAI,UAAU,YAEb;IACD,IAAI,aAAa,iCAA6D;IAC9E,IAAI,SAAS,IAAI,MAAM,CAOtB;IAED,eAAe;IAEf,eAAe,CAAC,CAAC,EAAE,SAAS;IAU5B,qBAAqB,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,GAAG,KAAK;IASzD,WAAW,CAAC,CAAC,EAAE,UAAU;IAMzB,iBAAiB,CAAC,CAAC,EAAE,UAAU;yCAtGpB,kBAAkB;2CAAlB,kBAAkB;CA4G9B"}
|