@bimetal/calendar-angular-components 0.34.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.
Files changed (92) hide show
  1. package/LICENSE +57 -129
  2. package/README.md +1 -1
  3. package/dist/binding/controller.d.ts +10 -1
  4. package/dist/binding/controller.d.ts.map +1 -1
  5. package/dist/binding/controller.js +11 -1
  6. package/dist/binding/controller.js.map +1 -1
  7. package/dist/binding/index.d.ts +5 -5
  8. package/dist/binding/index.d.ts.map +1 -1
  9. package/dist/binding/index.js +5 -5
  10. package/dist/binding/index.js.map +1 -1
  11. package/dist/binding/services/event-render.service.d.ts +9 -0
  12. package/dist/binding/services/event-render.service.d.ts.map +1 -1
  13. package/dist/binding/services/event-render.service.js +11 -0
  14. package/dist/binding/services/event-render.service.js.map +1 -1
  15. package/dist/binding/services/pointer-gesture.service.d.ts +26 -0
  16. package/dist/binding/services/pointer-gesture.service.d.ts.map +1 -0
  17. package/dist/binding/services/pointer-gesture.service.js +37 -0
  18. package/dist/binding/services/pointer-gesture.service.js.map +1 -0
  19. package/dist/components/Calendar.d.ts +47 -8
  20. package/dist/components/Calendar.d.ts.map +1 -1
  21. package/dist/components/Calendar.js +183 -63
  22. package/dist/components/Calendar.js.map +1 -1
  23. package/dist/components/CalendarHeader.d.ts +12 -1
  24. package/dist/components/CalendarHeader.d.ts.map +1 -1
  25. package/dist/components/CalendarHeader.js +66 -14
  26. package/dist/components/CalendarHeader.js.map +1 -1
  27. package/dist/components/CategoryFilter.d.ts +4 -0
  28. package/dist/components/CategoryFilter.d.ts.map +1 -1
  29. package/dist/components/CategoryFilter.js +10 -5
  30. package/dist/components/CategoryFilter.js.map +1 -1
  31. package/dist/components/EventBar.d.ts +15 -4
  32. package/dist/components/EventBar.d.ts.map +1 -1
  33. package/dist/components/EventBar.js +108 -37
  34. package/dist/components/EventBar.js.map +1 -1
  35. package/dist/components/EventDialog.d.ts +11 -4
  36. package/dist/components/EventDialog.d.ts.map +1 -1
  37. package/dist/components/EventDialog.js +86 -44
  38. package/dist/components/EventDialog.js.map +1 -1
  39. package/dist/components/EventHistory.d.ts +14 -9
  40. package/dist/components/EventHistory.d.ts.map +1 -1
  41. package/dist/components/EventHistory.js +59 -55
  42. package/dist/components/EventHistory.js.map +1 -1
  43. package/dist/components/UndoToast.d.ts +9 -5
  44. package/dist/components/UndoToast.d.ts.map +1 -1
  45. package/dist/components/UndoToast.js +16 -27
  46. package/dist/components/UndoToast.js.map +1 -1
  47. package/dist/index.d.ts +0 -2
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +0 -2
  50. package/dist/index.js.map +1 -1
  51. package/dist/styles/index.css.d.ts +3 -0
  52. package/dist/views/agenda/AgendaView.d.ts +1 -0
  53. package/dist/views/agenda/AgendaView.d.ts.map +1 -1
  54. package/dist/views/agenda/AgendaView.js +9 -2
  55. package/dist/views/agenda/AgendaView.js.map +1 -1
  56. package/dist/views/day/DayView.d.ts +30 -4
  57. package/dist/views/day/DayView.d.ts.map +1 -1
  58. package/dist/views/day/DayView.js +61 -17
  59. package/dist/views/day/DayView.js.map +1 -1
  60. package/dist/views/month/MonthView.d.ts +21 -4
  61. package/dist/views/month/MonthView.d.ts.map +1 -1
  62. package/dist/views/month/MonthView.js +66 -12
  63. package/dist/views/month/MonthView.js.map +1 -1
  64. package/dist/views/month/WeekRow.d.ts +28 -4
  65. package/dist/views/month/WeekRow.d.ts.map +1 -1
  66. package/dist/views/month/WeekRow.js +100 -29
  67. package/dist/views/month/WeekRow.js.map +1 -1
  68. package/dist/views/resource/ResourceView.d.ts +32 -1
  69. package/dist/views/resource/ResourceView.d.ts.map +1 -1
  70. package/dist/views/resource/ResourceView.js +84 -22
  71. package/dist/views/resource/ResourceView.js.map +1 -1
  72. package/dist/views/timeline/TimelineView.d.ts +29 -3
  73. package/dist/views/timeline/TimelineView.d.ts.map +1 -1
  74. package/dist/views/timeline/TimelineView.js +83 -17
  75. package/dist/views/timeline/TimelineView.js.map +1 -1
  76. package/dist/views/week/AllDayRow.d.ts +21 -3
  77. package/dist/views/week/AllDayRow.d.ts.map +1 -1
  78. package/dist/views/week/AllDayRow.js +60 -13
  79. package/dist/views/week/AllDayRow.js.map +1 -1
  80. package/dist/views/week/TimeEvent.d.ts +20 -4
  81. package/dist/views/week/TimeEvent.d.ts.map +1 -1
  82. package/dist/views/week/TimeEvent.js +101 -31
  83. package/dist/views/week/TimeEvent.js.map +1 -1
  84. package/dist/views/week/WeekView.d.ts +25 -2
  85. package/dist/views/week/WeekView.d.ts.map +1 -1
  86. package/dist/views/week/WeekView.js +69 -21
  87. package/dist/views/week/WeekView.js.map +1 -1
  88. package/dist/views/year/YearView.d.ts +11 -4
  89. package/dist/views/year/YearView.d.ts.map +1 -1
  90. package/dist/views/year/YearView.js +26 -5
  91. package/dist/views/year/YearView.js.map +1 -1
  92. package/package.json +16 -13
@@ -1,20 +1,24 @@
1
1
  import { EventEmitter, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';
2
- import type { CalendarLocale } from '../binding/index.js';
3
2
  import * as i0 from "@angular/core";
3
+ /**
4
+ * Feedback-only now (ticket-15): the undo/redo affordance moved to the header
5
+ * button pair. The toast just narrates the last action and offers a dismiss — it
6
+ * carries no undo/redo action anymore. ticket-31: auto-dismiss delay is the
7
+ * `undoToastMs` input (0 = never); this timer no longer gates undo capability.
8
+ */
4
9
  export declare class UndoToastComponent implements OnChanges, OnDestroy {
5
10
  lastAction: {
6
11
  entityId: string;
7
12
  description: string;
8
13
  } | null;
9
- locale: CalendarLocale | undefined;
10
- undoAction: EventEmitter<string>;
14
+ /** Auto-dismiss delay (ms); `0` = never (ticket-31). Fed from `config.undoToastMs`. */
15
+ undoToastMs: number;
11
16
  dismiss: EventEmitter<void>;
12
17
  private timer;
13
18
  ngOnChanges(changes: SimpleChanges): void;
14
19
  ngOnDestroy(): void;
15
- handleUndo(): void;
16
20
  private clearTimer;
17
21
  static ɵfac: i0.ɵɵFactoryDeclaration<UndoToastComponent, never>;
18
- static ɵcmp: i0.ɵɵComponentDeclaration<UndoToastComponent, "cal-undo-toast", never, { "lastAction": { "alias": "lastAction"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; }, { "undoAction": "undoAction"; "dismiss": "dismiss"; }, never, never, true, never>;
22
+ static ɵcmp: i0.ɵɵComponentDeclaration<UndoToastComponent, "cal-undo-toast", never, { "lastAction": { "alias": "lastAction"; "required": false; }; "undoToastMs": { "alias": "undoToastMs"; "required": false; }; }, { "dismiss": "dismiss"; }, never, never, true, never>;
19
23
  }
20
24
  //# sourceMappingURL=UndoToast.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"UndoToast.d.ts","sourceRoot":"","sources":["../../src/components/UndoToast.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE5G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;;AAG1D,qBAea,kBAAmB,YAAW,SAAS,EAAE,SAAS;IACpD,UAAU,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAQ;IACpE,MAAM,EAAE,cAAc,GAAG,SAAS,CAAC;IAClC,UAAU,uBAA8B;IACxC,OAAO,qBAA4B;IAE7C,OAAO,CAAC,KAAK,CAA8C;IAE3D,WAAW,CAAC,OAAO,EAAE,aAAa;IASlC,WAAW;IAIX,UAAU;IAOV,OAAO,CAAC,UAAU;yCA5BP,kBAAkB;2CAAlB,kBAAkB;CAkC9B"}
1
+ {"version":3,"file":"UndoToast.d.ts","sourceRoot":"","sources":["../../src/components/UndoToast.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;;AAI5G;;;;;GAKG;AACH,qBAYa,kBAAmB,YAAW,SAAS,EAAE,SAAS;IACpD,UAAU,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAQ;IAC7E,uFAAuF;IAC9E,WAAW,SAA2B;IACrC,OAAO,qBAA4B;IAE7C,OAAO,CAAC,KAAK,CAA8C;IAE3D,WAAW,CAAC,OAAO,EAAE,aAAa;IASlC,WAAW;IAIX,OAAO,CAAC,UAAU;yCArBP,kBAAkB;2CAAlB,kBAAkB;CA2B9B"}
@@ -9,43 +9,37 @@ function UndoToastComponent_div_0_Template(rf, ctx) { if (rf & 1) {
9
9
  i0.ɵɵtext(2);
10
10
  i0.ɵɵelementEnd();
11
11
  i0.ɵɵelementStart(3, "button", 3);
12
- i0.ɵɵlistener("click", function UndoToastComponent_div_0_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.handleUndo()); });
13
- i0.ɵɵtext(4);
14
- i0.ɵɵelementEnd();
15
- i0.ɵɵelementStart(5, "button", 4);
16
- i0.ɵɵlistener("click", function UndoToastComponent_div_0_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.dismiss.emit()); });
17
- i0.ɵɵtext(6, "\u00D7");
12
+ i0.ɵɵlistener("click", function UndoToastComponent_div_0_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.dismiss.emit()); });
13
+ i0.ɵɵtext(4, "\u00D7");
18
14
  i0.ɵɵelementEnd()();
19
15
  } if (rf & 2) {
20
16
  const ctx_r1 = i0.ɵɵnextContext();
21
17
  i0.ɵɵadvance(2);
22
18
  i0.ɵɵtextInterpolate(ctx_r1.lastAction.description);
23
- i0.ɵɵadvance(2);
24
- i0.ɵɵtextInterpolate1(" ", ctx_r1.locale == null ? null : ctx_r1.locale.undo, " ");
25
19
  } }
20
+ /**
21
+ * Feedback-only now (ticket-15): the undo/redo affordance moved to the header
22
+ * button pair. The toast just narrates the last action and offers a dismiss — it
23
+ * carries no undo/redo action anymore. ticket-31: auto-dismiss delay is the
24
+ * `undoToastMs` input (0 = never); this timer no longer gates undo capability.
25
+ */
26
26
  export class UndoToastComponent {
27
27
  lastAction = null;
28
- locale;
29
- undoAction = new EventEmitter();
28
+ /** Auto-dismiss delay (ms); `0` = never (ticket-31). Fed from `config.undoToastMs`. */
29
+ undoToastMs = DEFAULT_UNDO_DISMISS_MS;
30
30
  dismiss = new EventEmitter();
31
31
  timer = null;
32
32
  ngOnChanges(changes) {
33
33
  if (changes['lastAction']) {
34
34
  this.clearTimer();
35
- if (this.lastAction) {
36
- this.timer = setTimeout(() => this.dismiss.emit(), DEFAULT_UNDO_DISMISS_MS);
35
+ if (this.lastAction && this.undoToastMs > 0) {
36
+ this.timer = setTimeout(() => this.dismiss.emit(), this.undoToastMs);
37
37
  }
38
38
  }
39
39
  }
40
40
  ngOnDestroy() {
41
41
  this.clearTimer();
42
42
  }
43
- handleUndo() {
44
- if (this.lastAction) {
45
- this.undoAction.emit(this.lastAction.entityId);
46
- this.dismiss.emit();
47
- }
48
- }
49
43
  clearTimer() {
50
44
  if (this.timer) {
51
45
  clearTimeout(this.timer);
@@ -53,8 +47,8 @@ export class UndoToastComponent {
53
47
  }
54
48
  }
55
49
  static ɵfac = function UndoToastComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || UndoToastComponent)(); };
56
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UndoToastComponent, selectors: [["cal-undo-toast"]], hostAttrs: [2, "display", "contents"], inputs: { lastAction: "lastAction", locale: "locale" }, outputs: { undoAction: "undoAction", dismiss: "dismiss" }, features: [i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [["class", "bm-cal__toast", "role", "status", 4, "ngIf"], ["role", "status", 1, "bm-cal__toast"], [1, "bm-cal__toast-text"], [1, "bm-cal__toast-btn", 3, "click"], [1, "bm-cal__toast-dismiss", 3, "click"]], template: function UndoToastComponent_Template(rf, ctx) { if (rf & 1) {
57
- i0.ɵɵtemplate(0, UndoToastComponent_div_0_Template, 7, 2, "div", 0);
50
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UndoToastComponent, selectors: [["cal-undo-toast"]], hostAttrs: [2, "display", "contents"], inputs: { lastAction: "lastAction", undoToastMs: "undoToastMs" }, outputs: { dismiss: "dismiss" }, features: [i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [["class", "bm-cal__toast", "role", "status", 4, "ngIf"], ["role", "status", 1, "bm-cal__toast"], [1, "bm-cal__toast-text"], [1, "bm-cal__toast-dismiss", 3, "click"]], template: function UndoToastComponent_Template(rf, ctx) { if (rf & 1) {
51
+ i0.ɵɵtemplate(0, UndoToastComponent_div_0_Template, 5, 1, "div", 0);
58
52
  } if (rf & 2) {
59
53
  i0.ɵɵproperty("ngIf", ctx.lastAction);
60
54
  } }, dependencies: [CommonModule, i1.NgIf], encapsulation: 2 });
@@ -69,21 +63,16 @@ export class UndoToastComponent {
69
63
  template: `
70
64
  <div class="bm-cal__toast" role="status" *ngIf="lastAction">
71
65
  <span class="bm-cal__toast-text">{{ lastAction.description }}</span>
72
- <button class="bm-cal__toast-btn" (click)="handleUndo()">
73
- {{ locale?.undo }}
74
- </button>
75
66
  <button class="bm-cal__toast-dismiss" (click)="dismiss.emit()">&times;</button>
76
67
  </div>
77
68
  `,
78
69
  }]
79
70
  }], null, { lastAction: [{
80
71
  type: Input
81
- }], locale: [{
72
+ }], undoToastMs: [{
82
73
  type: Input
83
- }], undoAction: [{
84
- type: Output
85
74
  }], dismiss: [{
86
75
  type: Output
87
76
  }] }); })();
88
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(UndoToastComponent, { className: "UndoToastComponent", filePath: "components/undotoast.ts", lineNumber: 21 }); })();
77
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(UndoToastComponent, { className: "UndoToastComponent", filePath: "components/undotoast.ts", lineNumber: 23 }); })();
89
78
  //# sourceMappingURL=UndoToast.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UndoToast.js","sourceRoot":"","sources":["../../src/components/UndoToast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAuC,MAAM,eAAe,CAAC;AAC5G,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;;;;;IAS/D,AADF,8BAA4D,cACzB;IAAA,YAA4B;IAAA,iBAAO;IACpE,iCAAyD;IAAvB,8KAAS,mBAAY,KAAC;IACtD,YACF;IAAA,iBAAS;IACT,iCAA+D;IAAzB,8KAAS,qBAAc,KAAC;IAAC,sBAAO;IACxE,AADwE,iBAAS,EAC3E;;;IAL6B,eAA4B;IAA5B,mDAA4B;IAE3D,eACF;IADE,kFACF;;AAKN,MAAM,OAAO,kBAAkB;IACpB,UAAU,GAAqD,IAAI,CAAC;IACpE,MAAM,CAA6B;IAClC,UAAU,GAAG,IAAI,YAAY,EAAU,CAAC;IACxC,OAAO,GAAG,IAAI,YAAY,EAAQ,CAAC;IAErC,KAAK,GAAyC,IAAI,CAAC;IAE3D,WAAW,CAAC,OAAsB;QAChC,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,uBAAuB,CAAC,CAAC;YAC9E,CAAC;QACH,CAAC;IACH,CAAC;IAED,WAAW;QACT,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAED,UAAU;QACR,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC/C,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;4GAjCU,kBAAkB;6DAAlB,kBAAkB;YAT3B,mEAA4D;;YAAlB,qCAAgB;4BAFlD,YAAY;;iFAWX,kBAAkB;cAf9B,SAAS;eAAC;gBACT,QAAQ,EAAE,gBAAgB;gBAC1B,UAAU,EAAE,IAAI;gBAChB,IAAI,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE;gBACpC,OAAO,EAAE,CAAC,YAAY,CAAC;gBACvB,QAAQ,EAAE;;;;;;;;GAQT;aACF;gBAEU,UAAU;kBAAlB,KAAK;YACG,MAAM;kBAAd,KAAK;YACI,UAAU;kBAAnB,MAAM;YACG,OAAO;kBAAhB,MAAM;;kFAJI,kBAAkB"}
1
+ {"version":3,"file":"UndoToast.js","sourceRoot":"","sources":["../../src/components/UndoToast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAuC,MAAM,eAAe,CAAC;AAC5G,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;;;;;IAe/D,AADF,8BAA4D,cACzB;IAAA,YAA4B;IAAA,iBAAO;IACpE,iCAA+D;IAAzB,8KAAS,qBAAc,KAAC;IAAC,sBAAO;IACxE,AADwE,iBAAS,EAC3E;;;IAF6B,eAA4B;IAA5B,mDAA4B;;AAbnE;;;;;GAKG;AAaH,MAAM,OAAO,kBAAkB;IACpB,UAAU,GAAqD,IAAI,CAAC;IAC7E,uFAAuF;IAC9E,WAAW,GAAG,uBAAuB,CAAC;IACrC,OAAO,GAAG,IAAI,YAAY,EAAQ,CAAC;IAErC,KAAK,GAAyC,IAAI,CAAC;IAE3D,WAAW,CAAC,OAAsB;QAChC,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;gBAC5C,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;IACH,CAAC;IAED,WAAW;QACT,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;4GA1BU,kBAAkB;6DAAlB,kBAAkB;YAN3B,mEAA4D;;YAAlB,qCAAgB;4BAFlD,YAAY;;iFAQX,kBAAkB;cAZ9B,SAAS;eAAC;gBACT,QAAQ,EAAE,gBAAgB;gBAC1B,UAAU,EAAE,IAAI;gBAChB,IAAI,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE;gBACpC,OAAO,EAAE,CAAC,YAAY,CAAC;gBACvB,QAAQ,EAAE;;;;;GAKT;aACF;gBAEU,UAAU;kBAAlB,KAAK;YAEG,WAAW;kBAAnB,KAAK;YACI,OAAO;kBAAhB,MAAM;;kFAJI,kBAAkB"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,6 @@
1
1
  export { CalendarComponent } from './components/Calendar.js';
2
2
  export { CalendarHeaderComponent } from './components/CalendarHeader.js';
3
3
  export { CategoryFilterComponent } from './components/CategoryFilter.js';
4
- export { UndoToastComponent } from './components/UndoToast.js';
5
4
  export { EventHistoryComponent } from './components/EventHistory.js';
6
5
  export { EventBarComponent } from './components/EventBar.js';
7
6
  export { EventDialogComponent } from './components/EventDialog.js';
@@ -16,5 +15,4 @@ export { YearViewComponent } from './views/year/YearView.js';
16
15
  export { ResourceViewComponent } from './views/resource/ResourceView.js';
17
16
  export { TimelineViewComponent } from './views/timeline/TimelineView.js';
18
17
  export * from './binding/index.js';
19
- export * from '@bimetal/angular';
20
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAG7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAGnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAGzE,cAAc,oBAAoB,CAAC;AAGnC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAG7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAGnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAGzE,cAAc,oBAAoB,CAAC"}
package/dist/index.js CHANGED
@@ -3,7 +3,6 @@ export { CalendarComponent } from './components/Calendar.js';
3
3
  // ── UI Components ───────────────────────────────────────────────
4
4
  export { CalendarHeaderComponent } from './components/CalendarHeader.js';
5
5
  export { CategoryFilterComponent } from './components/CategoryFilter.js';
6
- export { UndoToastComponent } from './components/UndoToast.js';
7
6
  export { EventHistoryComponent } from './components/EventHistory.js';
8
7
  export { EventBarComponent } from './components/EventBar.js';
9
8
  export { EventDialogComponent } from './components/EventDialog.js';
@@ -21,5 +20,4 @@ export { TimelineViewComponent } from './views/timeline/TimelineView.js';
21
20
  // ── Calendar Angular binding (controller binding / services / config / types) ──
22
21
  export * from './binding/index.js';
23
22
  // ── Re-export the generic component-family bindings for convenience ──
24
- export * from '@bimetal/angular';
25
23
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,mEAAmE;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,mEAAmE;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAEzE,kFAAkF;AAClF,cAAc,oBAAoB,CAAC;AAEnC,wEAAwE;AACxE,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,mEAAmE;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,mEAAmE;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAEzE,kFAAkF;AAClF,cAAc,oBAAoB,CAAC;AAEnC,wEAAwE"}
@@ -0,0 +1,3 @@
1
+ // Generated by scripts/generate-css-stubs.mjs — DO NOT EDIT.
2
+ // Type-stub for side-effect CSS import (TS moduleResolution: nodenext/bundler).
3
+ export {};
@@ -42,6 +42,7 @@ export declare class AgendaViewComponent implements AfterViewInit, OnDestroy {
42
42
  renderedTitle(ev: CalendarEvent): string;
43
43
  slotsClassName(ev: CalendarEvent): string;
44
44
  slotsStyle(ev: CalendarEvent): Record<string, string | number> | undefined;
45
+ lockedClass(ev: CalendarEvent): string;
45
46
  getColor(ev: CalendarEvent): string;
46
47
  ngAfterViewInit(): void;
47
48
  ngOnDestroy(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"AgendaView.d.ts","sourceRoot":"","sources":["../../../src/views/agenda/AgendaView.ts"],"names":[],"mappings":"AAAA,OAAO,EACqB,YAAY,EAAE,aAAa,EAAE,SAAS,EAC5B,UAAU,EAAE,MAAM,EACvD,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE3G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;;AAE5D;;;;;;;;GAQG;AACH,qBAkDa,mBAAoB,YAAW,aAAa,EAAE,SAAS;IAa1C,OAAO,CAAC,aAAa,CAAC;IAAkC,OAAO,CAAC,IAAI,CAAC;IAZpF,MAAM,EAAG,YAAY,CAAC;IACtB,MAAM,EAAG,cAAc,CAAC;IACjC,iFAAiF;IACxE,WAAW,EAAG,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;IACjE,UAAU;iBAA+B,MAAM;cAAQ,OAAO;uBAAiB,MAAM;OAAM;IAC3F,WAAW;iBAA+B,MAAM;uBAAiB,MAAM;OAAM;IAEhE,QAAQ,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IAC1D,OAAO,CAAC,eAAe,CAA6B;IAEpD,KAAK,mDAAuB;gBAEI,aAAa,CAAC,EAAE,kBAAkB,YAAA,EAAsB,IAAI,CAAC,EAAE,MAAM,YAAA;IAGrG,QAAQ,CAAC,GAAG,EAAE,SAAS,GAAG,eAAe;IACzC,OAAO,CAAC,GAAG,EAAE,SAAS,GAAG,cAAc;IAEvC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,GAAG,MAAM;IAG5C,IAAI,SAAS,yGAAiD;IAC9D,IAAI,UAAU,yGAAkD;IAChE,MAAM,CAAC,EAAE,EAAE,aAAa;IACxB,aAAa,CAAC,EAAE,EAAE,aAAa;IAC/B,cAAc,CAAC,EAAE,EAAE,aAAa;IAIhC,UAAU,CAAC,EAAE,EAAE,aAAa;IAE5B,QAAQ,CAAC,EAAE,EAAE,aAAa,GAAG,MAAM;IAInC,eAAe;IAiBf,WAAW;IAIX,gBAAgB,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,cAAc;IAKpD,sBAAsB,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,cAAc;yCA9D9C,mBAAmB;2CAAnB,mBAAmB;CAmE/B"}
1
+ {"version":3,"file":"AgendaView.d.ts","sourceRoot":"","sources":["../../../src/views/agenda/AgendaView.ts"],"names":[],"mappings":"AAAA,OAAO,EACqB,YAAY,EAAE,aAAa,EAAE,SAAS,EAC5B,UAAU,EAAE,MAAM,EACvD,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE3G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;;AAE5D;;;;;;;;GAQG;AACH,qBAkDa,mBAAoB,YAAW,aAAa,EAAE,SAAS;IAa1C,OAAO,CAAC,aAAa,CAAC;IAAkC,OAAO,CAAC,IAAI,CAAC;IAZpF,MAAM,EAAG,YAAY,CAAC;IACtB,MAAM,EAAG,cAAc,CAAC;IACjC,iFAAiF;IACxE,WAAW,EAAG,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;IACjE,UAAU;iBAA+B,MAAM;cAAQ,OAAO;uBAAiB,MAAM;OAAM;IAC3F,WAAW;iBAA+B,MAAM;uBAAiB,MAAM;OAAM;IAEhE,QAAQ,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IAC1D,OAAO,CAAC,eAAe,CAA6B;IAEpD,KAAK,mDAAuB;gBAEI,aAAa,CAAC,EAAE,kBAAkB,YAAA,EAAsB,IAAI,CAAC,EAAE,MAAM,YAAA;IAGrG,QAAQ,CAAC,GAAG,EAAE,SAAS,GAAG,eAAe;IACzC,OAAO,CAAC,GAAG,EAAE,SAAS,GAAG,cAAc;IAEvC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,GAAG,MAAM;IAG5C,IAAI,SAAS,yGAAiD;IAC9D,IAAI,UAAU,yGAAkD;IAChE,MAAM,CAAC,EAAE,EAAE,aAAa;IACxB,aAAa,CAAC,EAAE,EAAE,aAAa;IAC/B,cAAc,CAAC,EAAE,EAAE,aAAa;IAIhC,UAAU,CAAC,EAAE,EAAE,aAAa;IAG5B,WAAW,CAAC,EAAE,EAAE,aAAa,GAAG,MAAM;IAMtC,QAAQ,CAAC,EAAE,EAAE,aAAa,GAAG,MAAM;IAInC,eAAe;IAiBf,WAAW;IAIX,gBAAgB,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,cAAc;IAKpD,sBAAsB,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,cAAc;yCArE9C,mBAAmB;2CAAnB,mBAAmB;CA0E/B"}
@@ -102,7 +102,7 @@ function AgendaViewComponent_ng_template_3_ng_container_1_div_2_Template(rf, ctx
102
102
  const defaultAgenda_r4 = i0.ɵɵreference(3);
103
103
  const row_r2 = i0.ɵɵnextContext().$implicit;
104
104
  const ctx_r0 = i0.ɵɵnextContext(2);
105
- i0.ɵɵclassMap("bm-cal-agenda__row bm-cal-agenda__event" + (ctx_r0.asEvent(row_r2).isSelected ? " bm-cal-agenda__event--selected" : "") + ctx_r0.slotsClassName(ctx_r0.asEvent(row_r2).event));
105
+ i0.ɵɵclassMap("bm-cal-agenda__row bm-cal-agenda__event" + (ctx_r0.asEvent(row_r2).selected ? " bm-cal-agenda__event--selected" : "") + ctx_r0.lockedClass(ctx_r0.asEvent(row_r2).event) + ctx_r0.slotsClassName(ctx_r0.asEvent(row_r2).event));
106
106
  i0.ɵɵproperty("ngStyle", ctx_r0.slotsStyle(ctx_r0.asEvent(row_r2).event));
107
107
  i0.ɵɵadvance();
108
108
  i0.ɵɵproperty("ngIf", ctx_r0.contentTpl)("ngIfElse", defaultAgenda_r4);
@@ -175,6 +175,13 @@ export class AgendaViewComponent {
175
175
  return cls ? ' ' + cls : '';
176
176
  }
177
177
  slotsStyle(ev) { return this.renderService?.resolveStyle(ev); }
178
+ // ticket-19: agenda rows have no move/resize affordance to drop, but a fully locked
179
+ // event (e.g. a holiday) still gets `--locked` so a theme marks it read-only.
180
+ lockedClass(ev) {
181
+ const p = this.renderService?.resolveInteraction(ev)
182
+ ?? { draggable: true, resizable: true, editable: true, deletable: true };
183
+ return (!p.draggable && !p.resizable && !p.editable && !p.deletable) ? ' bm-cal-agenda__event--locked' : '';
184
+ }
178
185
  getColor(ev) {
179
186
  return ev.metadata.color ?? '#007AFF';
180
187
  }
@@ -254,7 +261,7 @@ export class AgendaViewComponent {
254
261
  </div>
255
262
  </div>
256
263
  <div *ngIf="row.kind === 'event'"
257
- [class]="'bm-cal-agenda__row bm-cal-agenda__event' + (asEvent(row).isSelected ? ' bm-cal-agenda__event--selected' : '') + slotsClassName(asEvent(row).event)"
264
+ [class]="'bm-cal-agenda__row bm-cal-agenda__event' + (asEvent(row).selected ? ' bm-cal-agenda__event--selected' : '') + lockedClass(asEvent(row).event) + slotsClassName(asEvent(row).event)"
258
265
  [ngStyle]="slotsStyle(asEvent(row).event)"
259
266
  (mousedown)="click.markMouseDown()"
260
267
  (click)="handleEventClick($event, asEvent(row))"
@@ -1 +1 @@
1
- {"version":3,"file":"AgendaView.js","sourceRoot":"","sources":["../../../src/views/agenda/AgendaView.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AgendaView.js","sourceRoot":"","sources":["../../../src/views/agenda/AgendaView.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,16 @@
1
+ import type { DragInfo } from '@bimetal/calendar-headless';
1
2
  import { EventEmitter, OnChanges, AfterViewInit, ElementRef } from '@angular/core';
2
3
  import type { CalendarEvent, CalendarDateTime } from '@bimetal/calendar-core';
3
4
  import type { CalendarConfig } from '../../binding/index.js';
4
- import { EventRenderService } from '../../binding/index.js';
5
+ import { EventRenderService, CalendarPointerGestureService } from '../../binding/index.js';
5
6
  import { type TimeEventLayout } from '../week/TimeEvent.js';
6
7
  import * as i0 from "@angular/core";
8
+ /**
9
+ * Single-day view: all-day event row plus a scrollable 24h time grid with one
10
+ * `cal-time-event` per timed event, laid out into overlap lanes.
11
+ */
7
12
  export declare class DayViewComponent implements OnChanges, AfterViewInit {
13
+ private gesture;
8
14
  private renderService?;
9
15
  currentDate: CalendarDateTime;
10
16
  events: CalendarEvent[];
@@ -39,6 +45,11 @@ export declare class DayViewComponent implements OnChanges, AfterViewInit {
39
45
  hidePreviewEv: EventEmitter<void>;
40
46
  /** Native `dragend` der Source — Drag-Session vollständig beendet. */
41
47
  dragEnd: EventEmitter<void>;
48
+ dropTimedInfo: EventEmitter<{
49
+ info: DragInfo;
50
+ date: CalendarDateTime;
51
+ time: string;
52
+ }>;
42
53
  dragStartEv: EventEmitter<any>;
43
54
  timeGridEl?: ElementRef<HTMLDivElement>;
44
55
  gridInnerEl?: ElementRef<HTMLDivElement>;
@@ -56,7 +67,7 @@ export declare class DayViewComponent implements OnChanges, AfterViewInit {
56
67
  nowHours: number;
57
68
  click: import("@bimetal/calendar-headless").ClickIntent;
58
69
  allDayClick: import("@bimetal/calendar-headless").ClickIntent;
59
- constructor(renderService?: EventRenderService | undefined);
70
+ constructor(gesture: CalendarPointerGestureService, renderService?: EventRenderService | undefined);
60
71
  get badgesTpl(): import("@angular/core").TemplateRef<import("../../index.js").EventRenderTemplateContext> | undefined;
61
72
  get contentTpl(): import("@angular/core").TemplateRef<import("../../index.js").EventRenderTemplateContext> | undefined;
62
73
  tplCtx(ev: CalendarEvent): import("../../index.js").EventRenderTemplateContext | undefined;
@@ -68,6 +79,21 @@ export declare class DayViewComponent implements OnChanges, AfterViewInit {
68
79
  getColor(ev: CalendarEvent): string;
69
80
  formatHour(h: number): string;
70
81
  isOffHour(h: number): boolean;
82
+ /**
83
+ * Same identity rule the week view pins (mcp-130 review of mcp-129's class):
84
+ * `timedEntries` is rebuilt with fresh wrappers on every previewEvent tick of a
85
+ * drag (the snapshot deep-copies previewEvent, so the input identity changes per
86
+ * dragover). Without trackBy that re-created every cal-time-event mid-drag —
87
+ * past dragstart Chromium no longer aborts, but the destroyed source's native
88
+ * `dragend` never reaches the binding, leaking the preview on Escape/outside
89
+ * drops. WeekView had `trackTimed` for the identical structure; DayView was the
90
+ * forgotten sister.
91
+ */
92
+ trackTimed(_i: number, entry: {
93
+ event: CalendarEvent;
94
+ layout: TimeEventLayout;
95
+ }): string;
96
+ trackEvent(_i: number, ev: CalendarEvent): string;
71
97
  ngOnChanges(): void;
72
98
  ngAfterViewInit(): void;
73
99
  handleGridDragOver(e: DragEvent): void;
@@ -79,7 +105,7 @@ export declare class DayViewComponent implements OnChanges, AfterViewInit {
79
105
  handleAllDayClick(e: MouseEvent, ev: CalendarEvent): void;
80
106
  handleAllDayDoubleClick(e: MouseEvent, ev: CalendarEvent): void;
81
107
  isAllDaySelected(ev: CalendarEvent): boolean;
82
- static ɵfac: i0.ɵɵFactoryDeclaration<DayViewComponent, [{ optional: true; }]>;
83
- static ɵcmp: i0.ɵɵComponentDeclaration<DayViewComponent, "cal-day-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"; "dropTimedEvent": "dropTimedEvent"; "dragOverDateTime": "dragOverDateTime"; "hidePreviewEv": "hidePreviewEv"; "dragEnd": "dragEnd"; "dragStartEv": "dragStartEv"; }, never, never, true, never>;
108
+ static ɵfac: i0.ɵɵFactoryDeclaration<DayViewComponent, [null, { optional: true; }]>;
109
+ static ɵcmp: i0.ɵɵComponentDeclaration<DayViewComponent, "cal-day-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"; "dropTimedEvent": "dropTimedEvent"; "dragOverDateTime": "dragOverDateTime"; "hidePreviewEv": "hidePreviewEv"; "dragEnd": "dragEnd"; "dropTimedInfo": "dropTimedInfo"; "dragStartEv": "dragStartEv"; }, never, never, true, never>;
84
110
  }
85
111
  //# sourceMappingURL=DayView.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DayView.d.ts","sourceRoot":"","sources":["../../../src/views/day/DayView.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,SAAS,EAAE,aAAa,EAAa,UAAU,EAAY,MAAM,eAAe,CAAC;AAElI,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAQ9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAmD,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE7G,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;;AAIhF,qBA4Ea,gBAAiB,YAAW,SAAS,EAAE,aAAa;IAmCvC,OAAO,CAAC,aAAa,CAAC;IAlCrC,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,cAAc;eAA6B,SAAS;cAAQ,gBAAgB;cAAQ,MAAM;OAAM;IAChG,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,KAAK,WAAS;IACd,UAAU,SAAuB;IACjC,cAAc,SAAgC;IAC9C,YAAY,EAAE,aAAa,EAAE,CAAM;IACnC,YAAY,EAAE;QAAE,KAAK,EAAE,aAAa,CAAC;QAAC,MAAM,EAAE,eAAe,CAAA;KAAE,EAAE,CAAM;IACvE,OAAO,UAAS;IAChB,OAAO,SAAM;IACb,SAAS,SAAK;IACd,QAAQ,SAAK;IACb,KAAK,mDAAuB;IAC5B,WAAW,mDAAuB;gBAEF,aAAa,CAAC,EAAE,kBAAkB,YAAA;IAElE,IAAI,SAAS,yGAAiD;IAC9D,IAAI,UAAU,yGAAkD;IAChE,MAAM,CAAC,EAAE,EAAE,aAAa;IACxB,aAAa,CAAC,EAAE,EAAE,aAAa;IAC/B,cAAc,CAAC,EAAE,EAAE,aAAa;IAIhC,UAAU,CAAC,EAAE,EAAE,aAAa;IAE5B,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,eAAe,CAAM;IAE7B,QAAQ,CAAC,EAAE,EAAE,aAAa,GAAG,MAAM;IACnC,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAC7B,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO;IAK7B,WAAW;IAoCX,eAAe;IAIf,kBAAkB,CAAC,CAAC,EAAE,SAAS;IAQ/B,cAAc,CAAC,CAAC,EAAE,SAAS;IAO3B,mBAAmB,CAAC,CAAC,EAAE,SAAS;IAQhC,eAAe,CAAC,CAAC,EAAE,UAAU;IAO7B,qBAAqB,CAAC,CAAC,EAAE,UAAU;IAWnC,qBAAqB;IAIrB,iBAAiB,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,aAAa;IAOlD,uBAAuB,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,aAAa;IAQxD,gBAAgB,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO;yCA7JjC,gBAAgB;2CAAhB,gBAAgB;CAiK5B"}
1
+ {"version":3,"file":"DayView.d.ts","sourceRoot":"","sources":["../../../src/views/day/DayView.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import { Component, Input, Output, EventEmitter, ViewChild, ElementRef, Optional } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
- import { isSameDay, now, getDayOfMonth, startOfDay, addDays, getHours, getMinutes, createTimeRange, overlaps, formatDateTime, segmentTimed, layoutTimed, getRecurrenceInstanceMetadata, } from '@bimetal/calendar-core';
4
- import { snapTimeFromMouseY, toDateStr, parseDateTimeStr, EventRenderService } from '../../binding/index.js';
3
+ import { isSameDay, now, getDayOfMonth, startOfDay, addDays, getHours, getMinutes, createTimeRange, overlaps, formatWeekdayName } from '@bimetal/temporal';
4
+ import { segmentTimed, layoutTimed, getRecurrenceInstanceMetadata } from '@bimetal/calendar-core';
5
+ import { snapTimeFromMouseY, toDateStr, parseDateTimeStr, EventRenderService, CalendarPointerGestureService } from '../../binding/index.js';
5
6
  import { DEFAULT_HOUR_HEIGHT, DEFAULT_TIME_LABEL_WIDTH_DAY, DEFAULT_SCROLL_HOUR, createClickIntent } from '@bimetal/calendar-headless';
6
7
  import { TimeEventComponent } from '../week/TimeEvent.js';
7
8
  import * as i0 from "@angular/core";
@@ -72,7 +73,7 @@ function DayViewComponent_div_6_Template(rf, ctx) { if (rf & 1) {
72
73
  i0.ɵɵadvance(2);
73
74
  i0.ɵɵtextInterpolate(ctx_r2.config.locale.allDayLabel);
74
75
  i0.ɵɵadvance(2);
75
- i0.ɵɵproperty("ngForOf", ctx_r2.allDayEvents);
76
+ i0.ɵɵproperty("ngForOf", ctx_r2.allDayEvents)("ngForTrackBy", ctx_r2.trackEvent);
76
77
  } }
77
78
  function DayViewComponent_div_11_Template(rf, ctx) { if (rf & 1) {
78
79
  i0.ɵɵelementStart(0, "div")(1, "div", 21);
@@ -94,7 +95,7 @@ function DayViewComponent_cal_time_event_13_Template(rf, ctx) { if (rf & 1) {
94
95
  } if (rf & 2) {
95
96
  const entry_r8 = ctx.$implicit;
96
97
  const ctx_r2 = i0.ɵɵnextContext();
97
- i0.ɵɵproperty("event", entry_r8.event)("dayCol", entry_r8.layout.dayCol)("dayCount", entry_r8.layout.dayCount)("lane", entry_r8.layout.lane)("laneCount", entry_r8.layout.laneCount)("startOffset", entry_r8.layout.startOffset)("endOffset", entry_r8.layout.endOffset)("dayDate", ctx_r2.currentDate)("hourHeight", ctx_r2.hourHeight)("timeLabelWidth", ctx_r2.timeLabelWidth)("ghost", (ctx_r2.previewEvent == null ? null : ctx_r2.previewEvent.id) === entry_r8.event.id)("clickThresholdMs", ctx_r2.config.clickThresholdMs)("locale", ctx_r2.config.locale)("snapMinutes", ctx_r2.config.core.granularity.day.minutes)("isSelected", ctx_r2.isAllDaySelected(entry_r8.event));
98
+ i0.ɵɵproperty("config", ctx_r2.config)("event", entry_r8.event)("dayCol", entry_r8.layout.dayCol)("dayCount", entry_r8.layout.dayCount)("lane", entry_r8.layout.lane)("laneCount", entry_r8.layout.laneCount)("startOffset", entry_r8.layout.startOffset)("endOffset", entry_r8.layout.endOffset)("dayDate", ctx_r2.currentDate)("hourHeight", ctx_r2.hourHeight)("timeLabelWidth", ctx_r2.timeLabelWidth)("ghost", (ctx_r2.previewEvent == null ? null : ctx_r2.previewEvent.id) === entry_r8.event.id)("clickThresholdMs", ctx_r2.config.clickThresholdMs)("locale", ctx_r2.config.locale)("snapMinutes", ctx_r2.config.core.granularity.day.minutes)("isSelected", ctx_r2.isAllDaySelected(entry_r8.event));
98
99
  } }
99
100
  function DayViewComponent_div_14_Template(rf, ctx) { if (rf & 1) {
100
101
  i0.ɵɵelementStart(0, "div", 23);
@@ -105,7 +106,12 @@ function DayViewComponent_div_14_Template(rf, ctx) { if (rf & 1) {
105
106
  i0.ɵɵstyleProp("top", ctx_r2.nowHours * ctx_r2.hourHeight, "px");
106
107
  } }
107
108
  const HOURS = Array.from({ length: 24 }, (_, i) => i);
109
+ /**
110
+ * Single-day view: all-day event row plus a scrollable 24h time grid with one
111
+ * `cal-time-event` per timed event, laid out into overlap lanes.
112
+ */
108
113
  export class DayViewComponent {
114
+ gesture;
109
115
  renderService;
110
116
  currentDate;
111
117
  events = [];
@@ -124,6 +130,7 @@ export class DayViewComponent {
124
130
  hidePreviewEv = new EventEmitter();
125
131
  /** Native `dragend` der Source — Drag-Session vollständig beendet. */
126
132
  dragEnd = new EventEmitter();
133
+ dropTimedInfo = new EventEmitter();
127
134
  dragStartEv = new EventEmitter();
128
135
  timeGridEl;
129
136
  gridInnerEl;
@@ -138,7 +145,8 @@ export class DayViewComponent {
138
145
  nowHours = 0;
139
146
  click = createClickIntent();
140
147
  allDayClick = createClickIntent();
141
- constructor(renderService) {
148
+ constructor(gesture, renderService) {
149
+ this.gesture = gesture;
142
150
  this.renderService = renderService;
143
151
  }
144
152
  get badgesTpl() { return this.renderService?.eventBadgesTpl; }
@@ -158,11 +166,26 @@ export class DayViewComponent {
158
166
  const wh = this.config.core.workingHours;
159
167
  return wh ? (h < wh.start || h >= wh.end) : false;
160
168
  }
169
+ /**
170
+ * Same identity rule the week view pins (mcp-130 review of mcp-129's class):
171
+ * `timedEntries` is rebuilt with fresh wrappers on every previewEvent tick of a
172
+ * drag (the snapshot deep-copies previewEvent, so the input identity changes per
173
+ * dragover). Without trackBy that re-created every cal-time-event mid-drag —
174
+ * past dragstart Chromium no longer aborts, but the destroyed source's native
175
+ * `dragend` never reaches the binding, leaking the preview on Escape/outside
176
+ * drops. WeekView had `trackTimed` for the identical structure; DayView was the
177
+ * forgotten sister.
178
+ */
179
+ trackTimed(_i, entry) {
180
+ return `${entry.event.id}@${entry.layout.dayCol}`;
181
+ }
182
+ trackEvent(_i, ev) { return ev.id; }
161
183
  ngOnChanges() {
162
184
  this.currentNow = now(this.config.core.timezone, this.config.core.clock);
163
185
  this.timeSnapMinutes = this.config.core.granularity.day.minutes;
164
186
  this.isToday = isSameDay(this.currentDate, this.currentNow);
165
- this.dayName = formatDateTime(this.currentDate, { locale: this.config.locale.code, dateStyle: 'full' }).split(',')[0];
187
+ // mcp-51 R1 (Review F1): split(',')[0] leckte in komma-losen Locales (ja-JP) den ganzen String.
188
+ this.dayName = formatWeekdayName(this.currentDate, this.config.locale.code);
166
189
  this.dayNumber = getDayOfMonth(this.currentDate);
167
190
  this.nowHours = getHours(this.currentNow) + getMinutes(this.currentNow) / 60;
168
191
  const dayStart = startOfDay(this.currentDate);
@@ -190,6 +213,23 @@ export class DayViewComponent {
190
213
  }));
191
214
  }
192
215
  ngAfterViewInit() {
216
+ // mcp-57 Slice E: shared FSM — single day column, snapped time, scrollport-bounded.
217
+ this.gesture.init({
218
+ hitTest: (x, y) => {
219
+ const inner = this.gridInnerEl?.nativeElement;
220
+ if (!inner)
221
+ return null;
222
+ const port = (inner.parentElement ?? inner).getBoundingClientRect();
223
+ if (x < port.left || x > port.right || y < port.top || y > port.bottom)
224
+ return null;
225
+ return { time: snapTimeFromMouseY(y, inner.getBoundingClientRect(), this.hourHeight, this.timeSnapMinutes) };
226
+ },
227
+ onGestureStart: (info) => this.dragStartEv.emit(info),
228
+ onGestureOver: (hit) => this.dragOverDateTime.emit({ date: this.currentDate, time: hit.time }),
229
+ onGestureLeave: () => this.hidePreviewEv.emit(),
230
+ onGestureDrop: (info, hit) => this.dropTimedInfo.emit({ info, date: this.currentDate, time: hit.time }),
231
+ onGestureEnd: () => this.dragEnd.emit(),
232
+ });
193
233
  if (this.timeGridEl)
194
234
  this.timeGridEl.nativeElement.scrollTop = DEFAULT_SCROLL_HOUR * DEFAULT_HOUR_HEIGHT;
195
235
  }
@@ -259,7 +299,7 @@ export class DayViewComponent {
259
299
  const id = getRecurrenceInstanceMetadata(ev)?.instanceDate;
260
300
  return this.selectedEventId === ev.id && this.selectedInstanceDate === id;
261
301
  }
262
- static ɵfac = function DayViewComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DayViewComponent)(i0.ɵɵdirectiveInject(i1.EventRenderService, 8)); };
302
+ static ɵfac = function DayViewComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DayViewComponent)(i0.ɵɵdirectiveInject(i1.CalendarPointerGestureService), i0.ɵɵdirectiveInject(i1.EventRenderService, 8)); };
263
303
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DayViewComponent, selectors: [["cal-day-view"]], viewQuery: function DayViewComponent_Query(rf, ctx) { if (rf & 1) {
264
304
  i0.ɵɵviewQuery(_c0, 5);
265
305
  i0.ɵɵviewQuery(_c1, 5);
@@ -267,7 +307,7 @@ export class DayViewComponent {
267
307
  let _t;
268
308
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.timeGridEl = _t.first);
269
309
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.gridInnerEl = _t.first);
270
- } }, hostAttrs: [2, "display", "contents"], inputs: { currentDate: "currentDate", events: "events", config: "config", previewEvent: "previewEvent", selectedEventId: "selectedEventId", selectedInstanceDate: "selectedInstanceDate" }, outputs: { eventClick: "eventClick", selectEvent: "selectEvent", clearSelection: "clearSelection", dayCellClick: "dayCellClick", dropTimedEvent: "dropTimedEvent", dragOverDateTime: "dragOverDateTime", hidePreviewEv: "hidePreviewEv", dragEnd: "dragEnd", dragStartEv: "dragStartEv" }, features: [i0.ɵɵNgOnChangesFeature], decls: 15, vars: 14, consts: [["timeGridEl", ""], ["gridInnerEl", ""], ["defaultAllDay", ""], [1, "bm-cal-day"], [1, "bm-cal-day__header"], [1, "bm-cal-day__day-name"], ["class", "bm-cal-day__allday", 4, "ngIf"], [1, "bm-cal-day__time-grid", 3, "dragover", "drop", "dragleave", "mousedown", "click", "dblclick"], [1, "bm-cal-day__time-grid-inner"], [3, "class", "top", "height", 4, "ngFor", "ngForOf"], [1, "bm-cal-day__day-col"], [3, "event", "dayCol", "dayCount", "lane", "laneCount", "startOffset", "endOffset", "dayDate", "hourHeight", "timeLabelWidth", "ghost", "clickThresholdMs", "locale", "snapMinutes", "isSelected", "eventClick", "selectEvent", "dragStart", "dragEnd", 4, "ngFor", "ngForOf"], ["class", "bm-cal-day__now-line", 3, "top", 4, "ngIf"], [1, "bm-cal-day__allday"], [1, "bm-cal-day__allday-label"], [1, "bm-cal-day__allday-list"], [3, "class", "background-color", "ngStyle", "title", "mousedown", "click", "dblclick", 4, "ngFor", "ngForOf"], [3, "mousedown", "click", "dblclick", "ngStyle", "title"], [4, "ngIf", "ngIfElse"], [4, "ngIf"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "bm-cal-day__hour-label"], [3, "eventClick", "selectEvent", "dragStart", "dragEnd", "event", "dayCol", "dayCount", "lane", "laneCount", "startOffset", "endOffset", "dayDate", "hourHeight", "timeLabelWidth", "ghost", "clickThresholdMs", "locale", "snapMinutes", "isSelected"], [1, "bm-cal-day__now-line"], [1, "bm-cal-day__now-dot"]], template: function DayViewComponent_Template(rf, ctx) { if (rf & 1) {
310
+ } }, hostAttrs: [2, "display", "contents"], inputs: { currentDate: "currentDate", events: "events", config: "config", previewEvent: "previewEvent", selectedEventId: "selectedEventId", selectedInstanceDate: "selectedInstanceDate" }, outputs: { eventClick: "eventClick", selectEvent: "selectEvent", clearSelection: "clearSelection", dayCellClick: "dayCellClick", dropTimedEvent: "dropTimedEvent", dragOverDateTime: "dragOverDateTime", hidePreviewEv: "hidePreviewEv", dragEnd: "dragEnd", dropTimedInfo: "dropTimedInfo", dragStartEv: "dragStartEv" }, features: [i0.ɵɵProvidersFeature([CalendarPointerGestureService]), i0.ɵɵNgOnChangesFeature], decls: 15, vars: 15, consts: [["timeGridEl", ""], ["gridInnerEl", ""], ["defaultAllDay", ""], [1, "bm-cal-day"], [1, "bm-cal-day__header"], [1, "bm-cal-day__day-name"], ["class", "bm-cal-day__allday", 4, "ngIf"], [1, "bm-cal-day__time-grid", 3, "dragover", "drop", "dragleave", "mousedown", "click", "dblclick"], [1, "bm-cal-day__time-grid-inner"], [3, "class", "top", "height", 4, "ngFor", "ngForOf"], [1, "bm-cal-day__day-col"], [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-day__now-line", 3, "top", 4, "ngIf"], [1, "bm-cal-day__allday"], [1, "bm-cal-day__allday-label"], [1, "bm-cal-day__allday-list"], [3, "class", "background-color", "ngStyle", "title", "mousedown", "click", "dblclick", 4, "ngFor", "ngForOf", "ngForTrackBy"], [3, "mousedown", "click", "dblclick", "ngStyle", "title"], [4, "ngIf", "ngIfElse"], [4, "ngIf"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "bm-cal-day__hour-label"], [3, "eventClick", "selectEvent", "dragStart", "dragEnd", "config", "event", "dayCol", "dayCount", "lane", "laneCount", "startOffset", "endOffset", "dayDate", "hourHeight", "timeLabelWidth", "ghost", "clickThresholdMs", "locale", "snapMinutes", "isSelected"], [1, "bm-cal-day__now-line"], [1, "bm-cal-day__now-dot"]], template: function DayViewComponent_Template(rf, ctx) { if (rf & 1) {
271
311
  const _r1 = i0.ɵɵgetCurrentView();
272
312
  i0.ɵɵelementStart(0, "div", 3)(1, "div", 4)(2, "span", 5);
273
313
  i0.ɵɵtext(3);
@@ -275,13 +315,13 @@ export class DayViewComponent {
275
315
  i0.ɵɵelementStart(4, "span");
276
316
  i0.ɵɵtext(5);
277
317
  i0.ɵɵelementEnd()();
278
- i0.ɵɵtemplate(6, DayViewComponent_div_6_Template, 5, 2, "div", 6);
318
+ i0.ɵɵtemplate(6, DayViewComponent_div_6_Template, 5, 3, "div", 6);
279
319
  i0.ɵɵelementStart(7, "div", 7, 0);
280
320
  i0.ɵɵlistener("dragover", function DayViewComponent_Template_div_dragover_7_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.handleGridDragOver($event)); })("drop", function DayViewComponent_Template_div_drop_7_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.handleGridDrop($event)); })("dragleave", function DayViewComponent_Template_div_dragleave_7_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.handleGridDragLeave($event)); })("mousedown", function DayViewComponent_Template_div_mousedown_7_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.click.markMouseDown()); })("click", function DayViewComponent_Template_div_click_7_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.handleGridClick($event)); })("dblclick", function DayViewComponent_Template_div_dblclick_7_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.handleGridDoubleClick($event)); });
281
321
  i0.ɵɵelementStart(9, "div", 8, 1);
282
322
  i0.ɵɵtemplate(11, DayViewComponent_div_11_Template, 3, 7, "div", 9);
283
323
  i0.ɵɵelement(12, "div", 10);
284
- i0.ɵɵtemplate(13, DayViewComponent_cal_time_event_13_Template, 1, 15, "cal-time-event", 11)(14, DayViewComponent_div_14_Template, 2, 2, "div", 12);
324
+ i0.ɵɵtemplate(13, DayViewComponent_cal_time_event_13_Template, 1, 16, "cal-time-event", 11)(14, DayViewComponent_div_14_Template, 2, 2, "div", 12);
285
325
  i0.ɵɵelementEnd()()();
286
326
  } if (rf & 2) {
287
327
  i0.ɵɵadvance(3);
@@ -297,9 +337,9 @@ export class DayViewComponent {
297
337
  i0.ɵɵadvance(2);
298
338
  i0.ɵɵproperty("ngForOf", ctx.hours);
299
339
  i0.ɵɵadvance();
300
- i0.ɵɵstyleProp("left", ctx.timeLabelWidth, "px")("width", "calc(100% - " + ctx.timeLabelWidth + "px)");
340
+ i0.ɵɵstyleProp("inset-inline-start", ctx.timeLabelWidth, "px")("width", "calc(100% - " + ctx.timeLabelWidth + "px)");
301
341
  i0.ɵɵadvance();
302
- i0.ɵɵproperty("ngForOf", ctx.timedEntries);
342
+ i0.ɵɵproperty("ngForOf", ctx.timedEntries)("ngForTrackBy", ctx.trackTimed);
303
343
  i0.ɵɵadvance();
304
344
  i0.ɵɵproperty("ngIf", ctx.isToday);
305
345
  } }, dependencies: [CommonModule, i2.NgForOf, i2.NgIf, i2.NgTemplateOutlet, i2.NgStyle, TimeEventComponent], encapsulation: 2 });
@@ -308,6 +348,7 @@ export class DayViewComponent {
308
348
  type: Component,
309
349
  args: [{
310
350
  selector: 'cal-day-view',
351
+ providers: [CalendarPointerGestureService],
311
352
  standalone: true,
312
353
  host: { style: 'display: contents' },
313
354
  imports: [CommonModule, TimeEventComponent],
@@ -323,7 +364,7 @@ export class DayViewComponent {
323
364
  <div *ngIf="allDayEvents.length > 0" class="bm-cal-day__allday">
324
365
  <div class="bm-cal-day__allday-label">{{ config.locale.allDayLabel }}</div>
325
366
  <div class="bm-cal-day__allday-list">
326
- <div *ngFor="let ev of allDayEvents"
367
+ <div *ngFor="let ev of allDayEvents; trackBy: trackEvent"
327
368
  [class]="'bm-cal-day__allday-event' + (isAllDaySelected(ev) ? ' bm-cal-day__allday-event--selected' : '') + slotsClassName(ev)"
328
369
  [style.background-color]="getColor(ev)"
329
370
  [ngStyle]="slotsStyle(ev)"
@@ -355,9 +396,10 @@ export class DayViewComponent {
355
396
  <div class="bm-cal-day__hour-label">{{ h > 0 ? formatHour(h) : '' }}</div>
356
397
  </div>
357
398
 
358
- <div class="bm-cal-day__day-col" [style.left.px]="timeLabelWidth" [style.width]="'calc(100% - ' + timeLabelWidth + 'px)'"></div>
399
+ <div class="bm-cal-day__day-col" [style.inset-inline-start.px]="timeLabelWidth" [style.width]="'calc(100% - ' + timeLabelWidth + 'px)'"></div>
359
400
 
360
- <cal-time-event *ngFor="let entry of timedEntries"
401
+ <cal-time-event *ngFor="let entry of timedEntries; trackBy: trackTimed"
402
+ [config]="config"
361
403
  [event]="entry.event"
362
404
  [dayCol]="entry.layout.dayCol" [dayCount]="entry.layout.dayCount"
363
405
  [lane]="entry.layout.lane" [laneCount]="entry.layout.laneCount"
@@ -382,7 +424,7 @@ export class DayViewComponent {
382
424
  </div>
383
425
  `,
384
426
  }]
385
- }], () => [{ type: i1.EventRenderService, decorators: [{
427
+ }], () => [{ type: i1.CalendarPointerGestureService }, { type: i1.EventRenderService, decorators: [{
386
428
  type: Optional
387
429
  }] }], { currentDate: [{
388
430
  type: Input
@@ -412,6 +454,8 @@ export class DayViewComponent {
412
454
  type: Output
413
455
  }], dragEnd: [{
414
456
  type: Output
457
+ }], dropTimedInfo: [{
458
+ type: Output
415
459
  }], dragStartEv: [{
416
460
  type: Output
417
461
  }], timeGridEl: [{
@@ -421,5 +465,5 @@ export class DayViewComponent {
421
465
  type: ViewChild,
422
466
  args: ['gridInnerEl']
423
467
  }] }); })();
424
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DayViewComponent, { className: "DayViewComponent", filePath: "views/day/dayview.ts", lineNumber: 94 }); })();
468
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DayViewComponent, { className: "DayViewComponent", filePath: "views/day/dayview.ts", lineNumber: 96 }); })();
425
469
  //# sourceMappingURL=DayView.js.map