@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.
Files changed (112) hide show
  1. package/LICENSE +129 -0
  2. package/README.md +56 -0
  3. package/dist/binding/config.d.ts +6 -0
  4. package/dist/binding/config.d.ts.map +1 -0
  5. package/dist/binding/config.js +6 -0
  6. package/dist/binding/config.js.map +1 -0
  7. package/dist/binding/controller.d.ts +22 -0
  8. package/dist/binding/controller.d.ts.map +1 -0
  9. package/dist/binding/controller.js +17 -0
  10. package/dist/binding/controller.js.map +1 -0
  11. package/dist/binding/index.d.ts +24 -0
  12. package/dist/binding/index.d.ts.map +1 -0
  13. package/dist/binding/index.js +26 -0
  14. package/dist/binding/index.js.map +1 -0
  15. package/dist/binding/services/event-render.service.d.ts +40 -0
  16. package/dist/binding/services/event-render.service.d.ts.map +1 -0
  17. package/dist/binding/services/event-render.service.js +58 -0
  18. package/dist/binding/services/event-render.service.js.map +1 -0
  19. package/dist/binding/types.d.ts +128 -0
  20. package/dist/binding/types.d.ts.map +1 -0
  21. package/dist/binding/types.js +12 -0
  22. package/dist/binding/types.js.map +1 -0
  23. package/dist/binding/utils/date-strings.d.ts +16 -0
  24. package/dist/binding/utils/date-strings.d.ts.map +1 -0
  25. package/dist/binding/utils/date-strings.js +30 -0
  26. package/dist/binding/utils/date-strings.js.map +1 -0
  27. package/dist/binding/utils/gridUtils.d.ts +6 -0
  28. package/dist/binding/utils/gridUtils.d.ts.map +1 -0
  29. package/dist/binding/utils/gridUtils.js +13 -0
  30. package/dist/binding/utils/gridUtils.js.map +1 -0
  31. package/dist/binding/view-configs.d.ts +6 -0
  32. package/dist/binding/view-configs.d.ts.map +1 -0
  33. package/dist/binding/view-configs.js +6 -0
  34. package/dist/binding/view-configs.js.map +1 -0
  35. package/dist/components/Calendar.d.ts +110 -0
  36. package/dist/components/Calendar.d.ts.map +1 -0
  37. package/dist/components/Calendar.js +554 -0
  38. package/dist/components/Calendar.js.map +1 -0
  39. package/dist/components/CalendarHeader.d.ts +17 -0
  40. package/dist/components/CalendarHeader.d.ts.map +1 -0
  41. package/dist/components/CalendarHeader.js +105 -0
  42. package/dist/components/CalendarHeader.js.map +1 -0
  43. package/dist/components/CategoryFilter.d.ts +11 -0
  44. package/dist/components/CategoryFilter.d.ts.map +1 -0
  45. package/dist/components/CategoryFilter.js +66 -0
  46. package/dist/components/CategoryFilter.js.map +1 -0
  47. package/dist/components/EventBar.d.ts +56 -0
  48. package/dist/components/EventBar.d.ts.map +1 -0
  49. package/dist/components/EventBar.js +328 -0
  50. package/dist/components/EventBar.js.map +1 -0
  51. package/dist/components/EventDialog.d.ts +52 -0
  52. package/dist/components/EventDialog.d.ts.map +1 -0
  53. package/dist/components/EventDialog.js +557 -0
  54. package/dist/components/EventDialog.js.map +1 -0
  55. package/dist/components/EventHistory.d.ts +17 -0
  56. package/dist/components/EventHistory.d.ts.map +1 -0
  57. package/dist/components/EventHistory.js +166 -0
  58. package/dist/components/EventHistory.js.map +1 -0
  59. package/dist/components/ResourceFilter.d.ts +12 -0
  60. package/dist/components/ResourceFilter.d.ts.map +1 -0
  61. package/dist/components/ResourceFilter.js +67 -0
  62. package/dist/components/ResourceFilter.js.map +1 -0
  63. package/dist/components/UndoToast.d.ts +20 -0
  64. package/dist/components/UndoToast.d.ts.map +1 -0
  65. package/dist/components/UndoToast.js +90 -0
  66. package/dist/components/UndoToast.js.map +1 -0
  67. package/dist/index.d.ts +20 -0
  68. package/dist/index.d.ts.map +1 -0
  69. package/dist/index.js +25 -0
  70. package/dist/index.js.map +1 -0
  71. package/dist/styles/index.css +1 -0
  72. package/dist/views/agenda/AgendaView.d.ts +54 -0
  73. package/dist/views/agenda/AgendaView.d.ts.map +1 -0
  74. package/dist/views/agenda/AgendaView.js +309 -0
  75. package/dist/views/agenda/AgendaView.js.map +1 -0
  76. package/dist/views/day/DayView.d.ts +85 -0
  77. package/dist/views/day/DayView.d.ts.map +1 -0
  78. package/dist/views/day/DayView.js +422 -0
  79. package/dist/views/day/DayView.js.map +1 -0
  80. package/dist/views/month/MonthView.d.ts +51 -0
  81. package/dist/views/month/MonthView.d.ts.map +1 -0
  82. package/dist/views/month/MonthView.js +184 -0
  83. package/dist/views/month/MonthView.js.map +1 -0
  84. package/dist/views/month/WeekRow.d.ts +89 -0
  85. package/dist/views/month/WeekRow.d.ts.map +1 -0
  86. package/dist/views/month/WeekRow.js +548 -0
  87. package/dist/views/month/WeekRow.js.map +1 -0
  88. package/dist/views/resource/ResourceView.d.ts +85 -0
  89. package/dist/views/resource/ResourceView.d.ts.map +1 -0
  90. package/dist/views/resource/ResourceView.js +388 -0
  91. package/dist/views/resource/ResourceView.js.map +1 -0
  92. package/dist/views/timeline/TimelineView.d.ts +69 -0
  93. package/dist/views/timeline/TimelineView.d.ts.map +1 -0
  94. package/dist/views/timeline/TimelineView.js +314 -0
  95. package/dist/views/timeline/TimelineView.js.map +1 -0
  96. package/dist/views/week/AllDayRow.d.ts +38 -0
  97. package/dist/views/week/AllDayRow.d.ts.map +1 -0
  98. package/dist/views/week/AllDayRow.js +149 -0
  99. package/dist/views/week/AllDayRow.js.map +1 -0
  100. package/dist/views/week/TimeEvent.d.ts +77 -0
  101. package/dist/views/week/TimeEvent.d.ts.map +1 -0
  102. package/dist/views/week/TimeEvent.js +279 -0
  103. package/dist/views/week/TimeEvent.js.map +1 -0
  104. package/dist/views/week/WeekView.d.ts +79 -0
  105. package/dist/views/week/WeekView.d.ts.map +1 -0
  106. package/dist/views/week/WeekView.js +370 -0
  107. package/dist/views/week/WeekView.js.map +1 -0
  108. package/dist/views/year/YearView.d.ts +37 -0
  109. package/dist/views/year/YearView.d.ts.map +1 -0
  110. package/dist/views/year/YearView.js +162 -0
  111. package/dist/views/year/YearView.js.map +1 -0
  112. package/package.json +69 -0
@@ -0,0 +1,279 @@
1
+ import { Component, Input, Output, EventEmitter, Optional } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { isSameDay, getRecurrenceInstanceMetadata } from '@bimetal/calendar-core';
4
+ import { buildDragInfo, createClickIntent, writeCalendarDragData, installTransparentDragImage } from '@bimetal/calendar-headless';
5
+ import { toTimeStr, EventRenderService } from '../../binding/index.js';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../../binding/index.js";
8
+ import * as i2 from "@angular/common";
9
+ function TimeEventComponent_div_1_Template(rf, ctx) { if (rf & 1) {
10
+ const _r2 = i0.ɵɵgetCurrentView();
11
+ i0.ɵɵelementStart(0, "div", 6);
12
+ i0.ɵɵlistener("dragstart", function TimeEventComponent_div_1_Template_div_dragstart_0_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.handleResizeDragStart($event, "start")); })("dragend", function TimeEventComponent_div_1_Template_div_dragend_0_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.dragEnd.emit()); })("mousedown", function TimeEventComponent_div_1_Template_div_mousedown_0_listener($event) { i0.ɵɵrestoreView(_r2); return i0.ɵɵresetView($event.stopPropagation()); });
13
+ i0.ɵɵelementEnd();
14
+ } }
15
+ function TimeEventComponent_ng_container_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
16
+ i0.ɵɵelementContainer(0);
17
+ } }
18
+ function TimeEventComponent_ng_container_2_Template(rf, ctx) { if (rf & 1) {
19
+ i0.ɵɵelementContainerStart(0);
20
+ i0.ɵɵtemplate(1, TimeEventComponent_ng_container_2_ng_container_1_Template, 1, 0, "ng-container", 7);
21
+ i0.ɵɵelementContainerEnd();
22
+ } if (rf & 2) {
23
+ const ctx_r2 = i0.ɵɵnextContext();
24
+ i0.ɵɵadvance();
25
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.contentTpl)("ngTemplateOutletContext", ctx_r2.tplCtx);
26
+ } }
27
+ function TimeEventComponent_ng_template_3_div_2_Template(rf, ctx) { if (rf & 1) {
28
+ i0.ɵɵelementStart(0, "div", 10);
29
+ i0.ɵɵtext(1);
30
+ i0.ɵɵelementEnd();
31
+ } if (rf & 2) {
32
+ const ctx_r2 = i0.ɵɵnextContext(2);
33
+ i0.ɵɵadvance();
34
+ i0.ɵɵtextInterpolate(ctx_r2.timeLabel);
35
+ } }
36
+ function TimeEventComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
37
+ i0.ɵɵelementStart(0, "div", 8);
38
+ i0.ɵɵtext(1);
39
+ i0.ɵɵelementEnd();
40
+ i0.ɵɵtemplate(2, TimeEventComponent_ng_template_3_div_2_Template, 2, 1, "div", 9);
41
+ } if (rf & 2) {
42
+ const ctx_r2 = i0.ɵɵnextContext();
43
+ i0.ɵɵadvance();
44
+ i0.ɵɵtextInterpolate(ctx_r2.renderedTitle);
45
+ i0.ɵɵadvance();
46
+ i0.ɵɵproperty("ngIf", ctx_r2.duration >= 0.75 && ctx_r2.timeLabel);
47
+ } }
48
+ function TimeEventComponent_ng_container_5_ng_container_1_Template(rf, ctx) { if (rf & 1) {
49
+ i0.ɵɵelementContainer(0);
50
+ } }
51
+ function TimeEventComponent_ng_container_5_Template(rf, ctx) { if (rf & 1) {
52
+ i0.ɵɵelementContainerStart(0);
53
+ i0.ɵɵtemplate(1, TimeEventComponent_ng_container_5_ng_container_1_Template, 1, 0, "ng-container", 7);
54
+ i0.ɵɵelementContainerEnd();
55
+ } if (rf & 2) {
56
+ const ctx_r2 = i0.ɵɵnextContext();
57
+ i0.ɵɵadvance();
58
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.badgesTpl)("ngTemplateOutletContext", ctx_r2.tplCtx);
59
+ } }
60
+ function TimeEventComponent_div_6_Template(rf, ctx) { if (rf & 1) {
61
+ const _r4 = i0.ɵɵgetCurrentView();
62
+ i0.ɵɵelementStart(0, "div", 11);
63
+ i0.ɵɵlistener("dragstart", function TimeEventComponent_div_6_Template_div_dragstart_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.handleResizeDragStart($event, "end")); })("dragend", function TimeEventComponent_div_6_Template_div_dragend_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.dragEnd.emit()); })("mousedown", function TimeEventComponent_div_6_Template_div_mousedown_0_listener($event) { i0.ɵɵrestoreView(_r4); return i0.ɵɵresetView($event.stopPropagation()); });
64
+ i0.ɵɵelementEnd();
65
+ } }
66
+ export class TimeEventComponent {
67
+ renderService;
68
+ event;
69
+ layout;
70
+ dayDate;
71
+ hourHeight = 60;
72
+ timeLabelWidth = 50;
73
+ ghost = false;
74
+ clickThresholdMs = 300;
75
+ snapMinutes = 15;
76
+ locale;
77
+ selectedEventId = null;
78
+ selectedInstanceDate = undefined;
79
+ eventClick = new EventEmitter();
80
+ selectEvent = new EventEmitter();
81
+ dragStart = new EventEmitter();
82
+ /** Native `dragend` der Source — bubbelt aus Body und Resize-Handles. */
83
+ dragEnd = new EventEmitter();
84
+ click = createClickIntent();
85
+ constructor(renderService) {
86
+ this.renderService = renderService;
87
+ }
88
+ get badgesTpl() { return this.renderService?.eventBadgesTpl; }
89
+ get contentTpl() { return this.renderService?.eventContentTpl; }
90
+ get tplCtx() { return this.renderService?.buildTemplateContext(this.event); }
91
+ get renderedTitle() { return this.renderService?.resolveTitle(this.event) ?? this.event.title; }
92
+ get slotsClassName() {
93
+ const cls = this.renderService?.resolveClassName(this.event) ?? '';
94
+ return cls ? ' ' + cls : '';
95
+ }
96
+ get slotsStyle() { return this.renderService?.resolveStyle(this.event); }
97
+ // Zeit-Geometrie aus layoutTimed-Item (startOffset/endOffset sind
98
+ // Bruchteile 0..1 des Tages). Vorgerechnete leftFraction/widthFraction —
99
+ // siehe React-Variante für die calc-Vereinfachung.
100
+ get dayHeight() { return 24 * this.hourHeight; }
101
+ get top() { return this.layout.startOffset * this.dayHeight; }
102
+ get height() {
103
+ const raw = (this.layout.endOffset - this.layout.startOffset) * this.dayHeight;
104
+ return Math.max(raw, 0.25 * this.hourHeight);
105
+ }
106
+ get duration() {
107
+ return Math.max((this.layout.endOffset - this.layout.startOffset) * 24, 0.25);
108
+ }
109
+ get isFirstDay() { return isSameDay(this.event.timeRange.start, this.dayDate); }
110
+ get isLastDay() { return isSameDay(this.event.timeRange.end, this.dayDate); }
111
+ get color() { return this.event.metadata.color ?? '#007AFF'; }
112
+ get leftFraction() {
113
+ return this.layout.dayCol / this.layout.dayCount
114
+ + this.layout.lane / (this.layout.dayCount * this.layout.laneCount);
115
+ }
116
+ get widthFraction() {
117
+ return 1 / (this.layout.dayCount * this.layout.laneCount);
118
+ }
119
+ get left() { return `calc(${this.timeLabelWidth}px + (100% - ${this.timeLabelWidth}px) * ${this.leftFraction} + 2px)`; }
120
+ get width() { return `calc((100% - ${this.timeLabelWidth}px) * ${this.widthFraction} - 4px)`; }
121
+ get borderRadius() {
122
+ const f = this.isFirstDay ? 4 : 0;
123
+ const l = this.isLastDay ? 4 : 0;
124
+ return `${f}px ${f}px ${l}px ${l}px`;
125
+ }
126
+ get instanceDate() { return getRecurrenceInstanceMetadata(this.event)?.instanceDate; }
127
+ get isSelected() {
128
+ return this.selectedEventId === this.event.id && this.selectedInstanceDate === this.instanceDate;
129
+ }
130
+ get selectedClass() { return this.isSelected ? ' time-event--selected' : ''; }
131
+ get timeLabel() {
132
+ const st = toTimeStr(this.event.timeRange.start);
133
+ const et = toTimeStr(this.event.timeRange.end);
134
+ if (this.isFirstDay && this.isLastDay)
135
+ return `${st} – ${et}`;
136
+ if (this.isFirstDay)
137
+ return `${this.locale?.timeFrom ?? 'from'} ${st}`;
138
+ if (this.isLastDay)
139
+ return `${this.locale?.timeUntil ?? 'until'} ${et}`;
140
+ return '';
141
+ }
142
+ handleMouseDown() { this.click.markMouseDown(); }
143
+ handleDragStart(e) {
144
+ this.click.markDragged();
145
+ const rect = e.currentTarget.getBoundingClientRect();
146
+ const raw = ((e.clientY - rect.top) / this.hourHeight) * 60;
147
+ const minuteOffset = Math.round(raw / this.snapMinutes) * this.snapMinutes;
148
+ const info = buildDragInfo(this.event, 'move-timed', { minuteOffset });
149
+ writeCalendarDragData(e.dataTransfer, info);
150
+ this.dragStart.emit(info);
151
+ }
152
+ handleResizeDragStart(e, edge) {
153
+ e.stopPropagation();
154
+ this.click.markDragged();
155
+ installTransparentDragImage(e.dataTransfer);
156
+ const info = buildDragInfo(this.event, 'resize-timed', { edge });
157
+ writeCalendarDragData(e.dataTransfer, info);
158
+ this.dragStart.emit(info);
159
+ }
160
+ handleClick(e) {
161
+ e.stopPropagation();
162
+ if (!this.click.accept(this.clickThresholdMs))
163
+ return;
164
+ this.selectEvent.emit({ eventId: this.event.id, instanceDate: this.instanceDate });
165
+ }
166
+ handleDoubleClick(e) {
167
+ e.stopPropagation();
168
+ if (!this.click.accept(this.clickThresholdMs))
169
+ return;
170
+ const rect = e.currentTarget.getBoundingClientRect();
171
+ this.eventClick.emit({ eventId: this.event.id, rect, instanceDate: this.instanceDate });
172
+ }
173
+ static ɵfac = function TimeEventComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TimeEventComponent)(i0.ɵɵdirectiveInject(i1.EventRenderService, 8)); };
174
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TimeEventComponent, selectors: [["cal-time-event"]], hostAttrs: [2, "display", "contents"], inputs: { event: "event", layout: "layout", dayDate: "dayDate", hourHeight: "hourHeight", timeLabelWidth: "timeLabelWidth", ghost: "ghost", clickThresholdMs: "clickThresholdMs", snapMinutes: "snapMinutes", locale: "locale", selectedEventId: "selectedEventId", selectedInstanceDate: "selectedInstanceDate" }, outputs: { eventClick: "eventClick", selectEvent: "selectEvent", dragStart: "dragStart", dragEnd: "dragEnd" }, decls: 7, vars: 26, consts: [["defaultContent", ""], [3, "mousedown", "dragstart", "dragend", "click", "dblclick", "ngStyle", "title"], ["class", "time-event__resize time-event__resize--top", "draggable", "true", 3, "dragstart", "dragend", "mousedown", 4, "ngIf"], [4, "ngIf", "ngIfElse"], [4, "ngIf"], ["class", "time-event__resize time-event__resize--bottom", "draggable", "true", 3, "dragstart", "dragend", "mousedown", 4, "ngIf"], ["draggable", "true", 1, "time-event__resize", "time-event__resize--top", 3, "dragstart", "dragend", "mousedown"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "time-event__title"], ["class", "time-event__time", 4, "ngIf"], [1, "time-event__time"], ["draggable", "true", 1, "time-event__resize", "time-event__resize--bottom", 3, "dragstart", "dragend", "mousedown"]], template: function TimeEventComponent_Template(rf, ctx) { if (rf & 1) {
175
+ const _r1 = i0.ɵɵgetCurrentView();
176
+ i0.ɵɵelementStart(0, "div", 1);
177
+ i0.ɵɵlistener("mousedown", function TimeEventComponent_Template_div_mousedown_0_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.handleMouseDown()); })("dragstart", function TimeEventComponent_Template_div_dragstart_0_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.handleDragStart($event)); })("dragend", function TimeEventComponent_Template_div_dragend_0_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.dragEnd.emit()); })("click", function TimeEventComponent_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.handleClick($event)); })("dblclick", function TimeEventComponent_Template_div_dblclick_0_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.handleDoubleClick($event)); });
178
+ i0.ɵɵtemplate(1, TimeEventComponent_div_1_Template, 1, 0, "div", 2)(2, TimeEventComponent_ng_container_2_Template, 2, 2, "ng-container", 3)(3, TimeEventComponent_ng_template_3_Template, 3, 2, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor)(5, TimeEventComponent_ng_container_5_Template, 2, 2, "ng-container", 4)(6, TimeEventComponent_div_6_Template, 1, 0, "div", 5);
179
+ i0.ɵɵelementEnd();
180
+ } if (rf & 2) {
181
+ const defaultContent_r5 = i0.ɵɵreference(4);
182
+ i0.ɵɵclassMap("time-event" + (ctx.ghost ? " time-event--ghost" : "") + ctx.selectedClass + ctx.slotsClassName);
183
+ i0.ɵɵstyleProp("top", ctx.top, "px")("height", ctx.height, "px")("left", ctx.left)("width", ctx.width)("background-color", ctx.color)("border-radius", ctx.borderRadius);
184
+ i0.ɵɵproperty("ngStyle", ctx.slotsStyle)("title", ctx.renderedTitle);
185
+ i0.ɵɵattribute("draggable", !ctx.ghost)("data-day-col", ctx.layout.dayCol)("data-day-count", ctx.layout.dayCount)("data-lane", ctx.layout.lane)("data-lane-count", ctx.layout.laneCount);
186
+ i0.ɵɵadvance();
187
+ i0.ɵɵproperty("ngIf", ctx.isFirstDay && !ctx.ghost);
188
+ i0.ɵɵadvance();
189
+ i0.ɵɵproperty("ngIf", ctx.contentTpl)("ngIfElse", defaultContent_r5);
190
+ i0.ɵɵadvance(3);
191
+ i0.ɵɵproperty("ngIf", ctx.badgesTpl);
192
+ i0.ɵɵadvance();
193
+ i0.ɵɵproperty("ngIf", ctx.isLastDay && !ctx.ghost);
194
+ } }, dependencies: [CommonModule, i2.NgIf, i2.NgTemplateOutlet, i2.NgStyle], encapsulation: 2 });
195
+ }
196
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TimeEventComponent, [{
197
+ type: Component,
198
+ args: [{
199
+ selector: 'cal-time-event',
200
+ standalone: true,
201
+ host: { style: 'display: contents' },
202
+ imports: [CommonModule],
203
+ template: `
204
+ <div [class]="'time-event' + (ghost ? ' time-event--ghost' : '') + selectedClass + slotsClassName"
205
+ [style.top.px]="top" [style.height.px]="height"
206
+ [style.left]="left" [style.width]="width"
207
+ [style.background-color]="color" [style.border-radius]="borderRadius"
208
+ [ngStyle]="slotsStyle"
209
+ [attr.draggable]="!ghost"
210
+ [attr.data-day-col]="layout.dayCol"
211
+ [attr.data-day-count]="layout.dayCount"
212
+ [attr.data-lane]="layout.lane"
213
+ [attr.data-lane-count]="layout.laneCount"
214
+ (mousedown)="handleMouseDown()" (dragstart)="handleDragStart($event)"
215
+ (dragend)="dragEnd.emit()"
216
+ (click)="handleClick($event)" (dblclick)="handleDoubleClick($event)" [title]="renderedTitle">
217
+
218
+ <div *ngIf="isFirstDay && !ghost"
219
+ class="time-event__resize time-event__resize--top"
220
+ draggable="true"
221
+ (dragstart)="handleResizeDragStart($event, 'start')"
222
+ (dragend)="dragEnd.emit()"
223
+ (mousedown)="$event.stopPropagation()"></div>
224
+
225
+ <ng-container *ngIf="contentTpl; else defaultContent">
226
+ <ng-container *ngTemplateOutlet="contentTpl; context: tplCtx"></ng-container>
227
+ </ng-container>
228
+ <ng-template #defaultContent>
229
+ <div class="time-event__title">{{ renderedTitle }}</div>
230
+ <div *ngIf="duration >= 0.75 && timeLabel" class="time-event__time">{{ timeLabel }}</div>
231
+ </ng-template>
232
+ <ng-container *ngIf="badgesTpl">
233
+ <ng-container *ngTemplateOutlet="badgesTpl; context: tplCtx"></ng-container>
234
+ </ng-container>
235
+
236
+ <div *ngIf="isLastDay && !ghost"
237
+ class="time-event__resize time-event__resize--bottom"
238
+ draggable="true"
239
+ (dragstart)="handleResizeDragStart($event, 'end')"
240
+ (dragend)="dragEnd.emit()"
241
+ (mousedown)="$event.stopPropagation()"></div>
242
+ </div>
243
+ `,
244
+ }]
245
+ }], () => [{ type: i1.EventRenderService, decorators: [{
246
+ type: Optional
247
+ }] }], { event: [{
248
+ type: Input
249
+ }], layout: [{
250
+ type: Input
251
+ }], dayDate: [{
252
+ type: Input
253
+ }], hourHeight: [{
254
+ type: Input
255
+ }], timeLabelWidth: [{
256
+ type: Input
257
+ }], ghost: [{
258
+ type: Input
259
+ }], clickThresholdMs: [{
260
+ type: Input
261
+ }], snapMinutes: [{
262
+ type: Input
263
+ }], locale: [{
264
+ type: Input
265
+ }], selectedEventId: [{
266
+ type: Input
267
+ }], selectedInstanceDate: [{
268
+ type: Input
269
+ }], eventClick: [{
270
+ type: Output
271
+ }], selectEvent: [{
272
+ type: Output
273
+ }], dragStart: [{
274
+ type: Output
275
+ }], dragEnd: [{
276
+ type: Output
277
+ }] }); })();
278
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TimeEventComponent, { className: "TimeEventComponent", filePath: "views/week/timeevent.ts", lineNumber: 70 }); })();
279
+ //# sourceMappingURL=TimeEvent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimeEvent.js","sourceRoot":"","sources":["../../../src/views/week/TimeEvent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ import { EventEmitter, OnChanges, AfterViewInit, ElementRef } from '@angular/core';
2
+ import type { CalendarEvent, CalendarDateTime, LayoutItem } from '@bimetal/calendar-core';
3
+ import { getDayOfMonth } from '@bimetal/calendar-core';
4
+ import type { CalendarConfig } from '../../binding/index.js';
5
+ import { type TimeEventLayout } from './TimeEvent.js';
6
+ import * as i0 from "@angular/core";
7
+ export declare class WeekViewComponent implements OnChanges, AfterViewInit {
8
+ currentDate: CalendarDateTime;
9
+ events: CalendarEvent[];
10
+ config: CalendarConfig;
11
+ previewEvent: CalendarEvent | null;
12
+ selectedEventId: string | null;
13
+ selectedInstanceDate: number | undefined;
14
+ eventClick: EventEmitter<{
15
+ eventId: string;
16
+ rect: DOMRect;
17
+ instanceDate?: number;
18
+ }>;
19
+ selectEvent: EventEmitter<{
20
+ eventId: string;
21
+ instanceDate?: number;
22
+ }>;
23
+ clearSelection: EventEmitter<void>;
24
+ dayCellClick: EventEmitter<{
25
+ date: CalendarDateTime;
26
+ rect: DOMRect;
27
+ }>;
28
+ dropEvent: EventEmitter<{
29
+ event: DragEvent;
30
+ date: CalendarDateTime;
31
+ }>;
32
+ dropTimedEvent: EventEmitter<{
33
+ event: DragEvent;
34
+ date: CalendarDateTime;
35
+ time: string;
36
+ }>;
37
+ dragOverDate: EventEmitter<CalendarDateTime>;
38
+ dragOverDateTime: EventEmitter<{
39
+ date: CalendarDateTime;
40
+ time: string;
41
+ }>;
42
+ /** Drop-Zone wurde verlassen (dragleave) — Preview visuell ausräumen. */
43
+ hidePreviewEv: EventEmitter<void>;
44
+ /** Native `dragend` der Source — Drag-Session vollständig beendet. */
45
+ dragEnd: EventEmitter<void>;
46
+ dragStartEv: EventEmitter<any>;
47
+ timeGridEl?: ElementRef<HTMLDivElement>;
48
+ gridInnerEl?: ElementRef<HTMLDivElement>;
49
+ weekDates: CalendarDateTime[];
50
+ weekNumber: number;
51
+ allDayItems: LayoutItem[];
52
+ timedEntries: {
53
+ event: CalendarEvent;
54
+ layout: TimeEventLayout;
55
+ }[];
56
+ hours: number[];
57
+ hourHeight: number;
58
+ timeLabelWidth: number;
59
+ nowCol: number;
60
+ nowHours: number;
61
+ click: import("@bimetal/calendar-headless").ClickIntent;
62
+ getDayOfMonth: typeof getDayOfMonth;
63
+ private currentNow;
64
+ private timeSnapMinutes;
65
+ get dayColWidth(): string;
66
+ dayColLeft(col: number): string;
67
+ isTodayAt(i: number): boolean;
68
+ isOffHour(h: number): boolean;
69
+ ngOnChanges(): void;
70
+ ngAfterViewInit(): void;
71
+ handleGridDragOver(e: DragEvent): void;
72
+ handleGridDrop(e: DragEvent): void;
73
+ handleGridDragLeave(e: DragEvent): void;
74
+ handleGridClick(e: MouseEvent): void;
75
+ handleGridDoubleClick(e: MouseEvent): void;
76
+ static ɵfac: i0.ɵɵFactoryDeclaration<WeekViewComponent, never>;
77
+ static ɵcmp: i0.ɵɵComponentDeclaration<WeekViewComponent, "cal-week-view", never, { "currentDate": { "alias": "currentDate"; "required": false; }; "events": { "alias": "events"; "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"; "dayCellClick": "dayCellClick"; "dropEvent": "dropEvent"; "dropTimedEvent": "dropTimedEvent"; "dragOverDate": "dragOverDate"; "dragOverDateTime": "dragOverDateTime"; "hidePreviewEv": "hidePreviewEv"; "dragEnd": "dragEnd"; "dragStartEv": "dragStartEv"; }, never, never, true, never>;
78
+ }
79
+ //# sourceMappingURL=WeekView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WeekView.d.ts","sourceRoot":"","sources":["../../../src/views/week/WeekView.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,SAAS,EAAE,aAAa,EAAa,UAAU,EAAE,MAAM,eAAe,CAAC;AAExH,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAGiB,aAAa,EACpC,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAI7D,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;;AAI1E,qBA6Ea,iBAAkB,YAAW,SAAS,EAAE,aAAa;IACvD,WAAW,EAAG,gBAAgB,CAAC;IAC/B,MAAM,EAAE,aAAa,EAAE,CAAM;IAC7B,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,YAAY;cAA4B,gBAAgB;cAAQ,OAAO;OAAM;IAC7E,SAAS;eAA6B,SAAS;cAAQ,gBAAgB;OAAM;IAC7E,cAAc;eAA6B,SAAS;cAAQ,gBAAgB;cAAQ,MAAM;OAAM;IAChG,YAAY,iCAAwC;IACpD,gBAAgB;cAA4B,gBAAgB;cAAQ,MAAM;OAAM;IAC1F,yEAAyE;IAC/D,aAAa,qBAA4B;IACnD,sEAAsE;IAC5D,OAAO,qBAA4B;IACnC,WAAW,oBAA2B;IAEvB,UAAU,CAAC,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;IACvC,WAAW,CAAC,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;IAEnE,SAAS,EAAE,gBAAgB,EAAE,CAAM;IACnC,UAAU,SAAK;IACf,WAAW,EAAE,UAAU,EAAE,CAAM;IAC/B,YAAY,EAAE;QAAE,KAAK,EAAE,aAAa,CAAC;QAAC,MAAM,EAAE,eAAe,CAAA;KAAE,EAAE,CAAM;IACvE,KAAK,WAAS;IACd,UAAU,SAAuB;IACjC,cAAc,SAAiC;IAC/C,MAAM,SAAM;IACZ,QAAQ,SAAK;IACb,KAAK,mDAAuB;IAC5B,aAAa,uBAAiB;IAE9B,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,eAAe,CAAM;IAE7B,IAAI,WAAW,WAAsE;IACrF,UAAU,CAAC,GAAG,EAAE,MAAM;IAEtB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO;IAC7B,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO;IAK7B,WAAW;IA4CX,eAAe;IAMf,kBAAkB,CAAC,CAAC,EAAE,SAAS;IAS/B,cAAc,CAAC,CAAC,EAAE,SAAS;IAQ3B,mBAAmB,CAAC,CAAC,EAAE,SAAS;IAQhC,eAAe,CAAC,CAAC,EAAE,UAAU;IAO7B,qBAAqB,CAAC,CAAC,EAAE,UAAU;yCAnIxB,iBAAiB;2CAAjB,iBAAiB;CA+I7B"}