@bimetal/calendar-angular-components 0.35.0 → 0.37.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 (74) hide show
  1. package/dist/binding/controller.d.ts +10 -1
  2. package/dist/binding/controller.d.ts.map +1 -1
  3. package/dist/binding/controller.js +11 -1
  4. package/dist/binding/controller.js.map +1 -1
  5. package/dist/binding/index.d.ts +4 -2
  6. package/dist/binding/index.d.ts.map +1 -1
  7. package/dist/binding/index.js +5 -2
  8. package/dist/binding/index.js.map +1 -1
  9. package/dist/binding/services/pointer-gesture.service.d.ts +52 -0
  10. package/dist/binding/services/pointer-gesture.service.d.ts.map +1 -0
  11. package/dist/binding/services/pointer-gesture.service.js +83 -0
  12. package/dist/binding/services/pointer-gesture.service.js.map +1 -0
  13. package/dist/components/Calendar.d.ts +20 -4
  14. package/dist/components/Calendar.d.ts.map +1 -1
  15. package/dist/components/Calendar.js +133 -31
  16. package/dist/components/Calendar.js.map +1 -1
  17. package/dist/components/CalendarHeader.d.ts +3 -0
  18. package/dist/components/CalendarHeader.d.ts.map +1 -1
  19. package/dist/components/CalendarHeader.js +10 -4
  20. package/dist/components/CalendarHeader.js.map +1 -1
  21. package/dist/components/CategoryFilter.d.ts +3 -0
  22. package/dist/components/CategoryFilter.d.ts.map +1 -1
  23. package/dist/components/CategoryFilter.js +9 -5
  24. package/dist/components/CategoryFilter.js.map +1 -1
  25. package/dist/components/EventBar.d.ts +11 -4
  26. package/dist/components/EventBar.d.ts.map +1 -1
  27. package/dist/components/EventBar.js +87 -32
  28. package/dist/components/EventBar.js.map +1 -1
  29. package/dist/components/EventDialog.d.ts +12 -6
  30. package/dist/components/EventDialog.d.ts.map +1 -1
  31. package/dist/components/EventDialog.js +122 -45
  32. package/dist/components/EventDialog.js.map +1 -1
  33. package/dist/components/EventHistory.d.ts +14 -10
  34. package/dist/components/EventHistory.d.ts.map +1 -1
  35. package/dist/components/EventHistory.js +59 -56
  36. package/dist/components/EventHistory.js.map +1 -1
  37. package/dist/styles/index.css.d.ts +3 -0
  38. package/dist/views/day/DayView.d.ts +26 -4
  39. package/dist/views/day/DayView.d.ts.map +1 -1
  40. package/dist/views/day/DayView.js +56 -17
  41. package/dist/views/day/DayView.js.map +1 -1
  42. package/dist/views/month/MonthView.d.ts +14 -3
  43. package/dist/views/month/MonthView.d.ts.map +1 -1
  44. package/dist/views/month/MonthView.js +55 -7
  45. package/dist/views/month/MonthView.js.map +1 -1
  46. package/dist/views/month/WeekRow.d.ts +19 -3
  47. package/dist/views/month/WeekRow.d.ts.map +1 -1
  48. package/dist/views/month/WeekRow.js +73 -34
  49. package/dist/views/month/WeekRow.js.map +1 -1
  50. package/dist/views/resource/ResourceView.d.ts +28 -1
  51. package/dist/views/resource/ResourceView.d.ts.map +1 -1
  52. package/dist/views/resource/ResourceView.js +78 -21
  53. package/dist/views/resource/ResourceView.js.map +1 -1
  54. package/dist/views/timeline/TimelineView.d.ts +25 -3
  55. package/dist/views/timeline/TimelineView.d.ts.map +1 -1
  56. package/dist/views/timeline/TimelineView.js +77 -16
  57. package/dist/views/timeline/TimelineView.js.map +1 -1
  58. package/dist/views/week/AllDayRow.d.ts +16 -3
  59. package/dist/views/week/AllDayRow.d.ts.map +1 -1
  60. package/dist/views/week/AllDayRow.js +47 -10
  61. package/dist/views/week/AllDayRow.js.map +1 -1
  62. package/dist/views/week/TimeEvent.d.ts +11 -4
  63. package/dist/views/week/TimeEvent.d.ts.map +1 -1
  64. package/dist/views/week/TimeEvent.js +76 -26
  65. package/dist/views/week/TimeEvent.js.map +1 -1
  66. package/dist/views/week/WeekView.d.ts +16 -1
  67. package/dist/views/week/WeekView.d.ts.map +1 -1
  68. package/dist/views/week/WeekView.js +53 -18
  69. package/dist/views/week/WeekView.js.map +1 -1
  70. package/dist/views/year/YearView.d.ts +2 -0
  71. package/dist/views/year/YearView.d.ts.map +1 -1
  72. package/dist/views/year/YearView.js +17 -1
  73. package/dist/views/year/YearView.js.map +1 -1
  74. package/package.json +17 -13
@@ -1,13 +1,19 @@
1
- import { EventEmitter, OnChanges } from '@angular/core';
1
+ import type { DragInfo } from '@bimetal/calendar-headless';
2
+ import { EventEmitter, OnChanges, ElementRef, AfterViewInit } from '@angular/core';
2
3
  import type { CalendarEvent, CalendarDateTime, LayoutItem } from '@bimetal/calendar-core';
3
4
  import { Month } from '@bimetal/calendar-core';
4
5
  import type { CalendarConfig } from '../../binding/index.js';
6
+ import { CalendarPointerGestureService } from '../../binding/index.js';
5
7
  import * as i0 from "@angular/core";
6
8
  /**
7
9
  * Month grid view: lays out weeks as `cal-week-row` children, computes the day
8
10
  * grid, and buckets events into per-week all-day segments and per-day timed events.
9
11
  */
10
- export declare class MonthViewComponent implements OnChanges {
12
+ export declare class MonthViewComponent implements OnChanges, AfterViewInit {
13
+ private gesture;
14
+ private host;
15
+ constructor(gesture: CalendarPointerGestureService, host: ElementRef<HTMLElement>);
16
+ ngAfterViewInit(): void;
11
17
  year: number;
12
18
  /** The branded `Month` (§7); pass `monthIndex(n)` for a computed value. */
13
19
  month: Month;
@@ -36,6 +42,11 @@ export declare class MonthViewComponent implements OnChanges {
36
42
  date: CalendarDateTime;
37
43
  }>;
38
44
  dragOverDate: EventEmitter<CalendarDateTime>;
45
+ /** Pointer-gesture drop (mcp-57): same controller path, minus the DataTransfer. */
46
+ dropDayInfo: EventEmitter<{
47
+ info: DragInfo;
48
+ date: CalendarDateTime;
49
+ }>;
39
50
  /** Drop-Zone wurde verlassen (dragleave) — Preview visuell ausräumen. */
40
51
  hidePreviewEv: EventEmitter<void>;
41
52
  /** Native `dragend` der Source — Drag-Session vollständig beendet. */
@@ -52,6 +63,6 @@ export declare class MonthViewComponent implements OnChanges {
52
63
  ngOnChanges(): void;
53
64
  getItems(weekIdx: number): LayoutItem[];
54
65
  static ɵfac: i0.ɵɵFactoryDeclaration<MonthViewComponent, never>;
55
- static ɵcmp: i0.ɵɵComponentDeclaration<MonthViewComponent, "cal-month-view", never, { "year": { "alias": "year"; "required": false; }; "month": { "alias": "month"; "required": false; }; "events": { "alias": "events"; "required": false; }; "config": { "alias": "config"; "required": false; }; "previewEvent": { "alias": "previewEvent"; "required": false; }; "expandedMonthDay": { "alias": "expandedMonthDay"; "required": false; }; "selectedEventId": { "alias": "selectedEventId"; "required": false; }; "selectedInstanceDate": { "alias": "selectedInstanceDate"; "required": false; }; }, { "eventClick": "eventClick"; "selectEvent": "selectEvent"; "clearSelection": "clearSelection"; "dayCellClick": "dayCellClick"; "dropEvent": "dropEvent"; "dragOverDate": "dragOverDate"; "hidePreviewEv": "hidePreviewEv"; "dragEnd": "dragEnd"; "dragStartEv": "dragStartEv"; "expandMonthCell": "expandMonthCell"; "collapseMonthCell": "collapseMonthCell"; }, never, never, true, never>;
66
+ static ɵcmp: i0.ɵɵComponentDeclaration<MonthViewComponent, "cal-month-view", never, { "year": { "alias": "year"; "required": false; }; "month": { "alias": "month"; "required": false; }; "events": { "alias": "events"; "required": false; }; "config": { "alias": "config"; "required": false; }; "previewEvent": { "alias": "previewEvent"; "required": false; }; "expandedMonthDay": { "alias": "expandedMonthDay"; "required": false; }; "selectedEventId": { "alias": "selectedEventId"; "required": false; }; "selectedInstanceDate": { "alias": "selectedInstanceDate"; "required": false; }; }, { "eventClick": "eventClick"; "selectEvent": "selectEvent"; "clearSelection": "clearSelection"; "dayCellClick": "dayCellClick"; "dropEvent": "dropEvent"; "dragOverDate": "dragOverDate"; "dropDayInfo": "dropDayInfo"; "hidePreviewEv": "hidePreviewEv"; "dragEnd": "dragEnd"; "dragStartEv": "dragStartEv"; "expandMonthCell": "expandMonthCell"; "collapseMonthCell": "collapseMonthCell"; }, never, never, true, never>;
56
67
  }
57
68
  //# sourceMappingURL=MonthView.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MonthView.d.ts","sourceRoot":"","sources":["../../../src/views/month/MonthView.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAElF,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAE1F,OAAO,EAAa,KAAK,EAAoD,MAAM,wBAAwB,CAAC;AAC5G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;;AAG7D;;;GAGG;AACH,qBAuCa,kBAAmB,YAAW,SAAS;IACzC,IAAI,SAAK;IAClB,2EAA2E;IAClE,KAAK,EAAE,KAAK,CAAiB;IAC7B,MAAM,EAAE,aAAa,EAAE,CAAM;IAC7B,MAAM,EAAG,cAAc,CAAC;IAExB,YAAY,EAAE,aAAa,GAAG,IAAI,CAAQ;IAE1C,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAQ;IACvC,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,YAAY,iCAAwC;IAC9D,yEAAyE;IAC/D,aAAa,qBAA4B;IACnD,sEAAsE;IAC5D,OAAO,qBAA4B;IACnC,WAAW,oBAA2B;IAChD,iFAAiF;IACvE,eAAe,uBAA8B;IAC7C,iBAAiB,qBAA4B;IAEvD,KAAK,EAAE,gBAAgB,EAAE,EAAE,CAAM;IACjC,KAAK,EAAG,gBAAgB,CAAC;IACzB,UAAU,+BAAsC;IAChD,OAAO,CAAC,SAAS,CAAsB;IAMvC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE;IAE7C,WAAW;IA2BX,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;yCAjE5B,kBAAkB;2CAAlB,kBAAkB;CAoE9B"}
1
+ {"version":3,"file":"MonthView.d.ts","sourceRoot":"","sources":["../../../src/views/month/MonthView.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAA4B,YAAY,EAAE,SAAS,EAAG,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9G,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAE1F,OAAO,EAAa,KAAK,EAAoD,MAAM,wBAAwB,CAAC;AAC5G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;;AAIvE;;;GAGG;AACH,qBAwCa,kBAAmB,YAAW,SAAS,EAAE,aAAa;IACrD,OAAO,CAAC,OAAO;IAAiC,OAAO,CAAC,IAAI;gBAApD,OAAO,EAAE,6BAA6B,EAAU,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC;IAEjG,eAAe;IAgCN,IAAI,SAAK;IAClB,2EAA2E;IAClE,KAAK,EAAE,KAAK,CAAiB;IAC7B,MAAM,EAAE,aAAa,EAAE,CAAM;IAC7B,MAAM,EAAG,cAAc,CAAC;IAExB,YAAY,EAAE,aAAa,GAAG,IAAI,CAAQ;IAE1C,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAQ;IACvC,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,YAAY,iCAAwC;IAC9D,mFAAmF;IACzE,WAAW;cAA4B,QAAQ;cAAQ,gBAAgB;OAAM;IACvF,yEAAyE;IAC/D,aAAa,qBAA4B;IACnD,sEAAsE;IAC5D,OAAO,qBAA4B;IACnC,WAAW,oBAA2B;IAChD,iFAAiF;IACvE,eAAe,uBAA8B;IAC7C,iBAAiB,qBAA4B;IAEvD,KAAK,EAAE,gBAAgB,EAAE,EAAE,CAAM;IACjC,KAAK,EAAG,gBAAgB,CAAC;IACzB,UAAU,+BAAsC;IAChD,OAAO,CAAC,SAAS,CAAsB;IAMvC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE;IAE7C,WAAW;IA2BX,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;yCArG5B,kBAAkB;2CAAlB,kBAAkB;CAwG9B"}
@@ -1,10 +1,13 @@
1
- import { Component, Input, Output, EventEmitter } from '@angular/core';
1
+ import { Component, Input, Output, EventEmitter, ElementRef } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { startOfDay, now } from '@bimetal/temporal';
4
4
  import { monthGrid, Month, segmentSpanning, spansMultipleDays, layoutAllDay } from '@bimetal/calendar-core';
5
+ import { CalendarPointerGestureService } from '../../binding/index.js';
6
+ import { getColFromX } from '@bimetal/calendar-headless';
5
7
  import { WeekRowComponent } from './WeekRow.js';
6
8
  import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/common";
9
+ import * as i1 from "../../binding/index.js";
10
+ import * as i2 from "@angular/common";
8
11
  function MonthViewComponent_div_3_Template(rf, ctx) { if (rf & 1) {
9
12
  i0.ɵɵelementStart(0, "div", 5);
10
13
  i0.ɵɵtext(1);
@@ -30,6 +33,46 @@ function MonthViewComponent_cal_week_row_4_Template(rf, ctx) { if (rf & 1) {
30
33
  * grid, and buckets events into per-week all-day segments and per-day timed events.
31
34
  */
32
35
  export class MonthViewComponent {
36
+ gesture;
37
+ host;
38
+ constructor(gesture, host) {
39
+ this.gesture = gesture;
40
+ this.host = host;
41
+ }
42
+ ngAfterViewInit() {
43
+ // mcp-57 Slice E: shared FSM over the WHOLE month grid (drag can cross
44
+ // week rows); open "+N more" overlay resolves to ITS row first.
45
+ this.gesture.init({
46
+ hitTest: (x, y) => {
47
+ const rows = [...this.host.nativeElement.querySelectorAll('.bm-cal__week-row')];
48
+ const overlay = this.host.nativeElement.querySelector('.bm-cal__day-expand-overlay');
49
+ if (overlay) {
50
+ const o = overlay.getBoundingClientRect();
51
+ if (x >= o.left && x <= o.right && y >= o.top && y <= o.bottom) {
52
+ const owner = overlay.closest('.bm-cal__week-row');
53
+ const i = owner ? rows.indexOf(owner) : -1;
54
+ if (i >= 0)
55
+ return { date: this.weeks[i][getColFromX(x, rows[i].getBoundingClientRect(), 7, getComputedStyle(this.host.nativeElement).direction === 'rtl')] };
56
+ }
57
+ }
58
+ for (let i = 0; i < rows.length; i++) {
59
+ const r = rows[i].getBoundingClientRect();
60
+ if (x >= r.left && x <= r.right && y >= r.top && y <= r.bottom) {
61
+ const week = this.weeks[i];
62
+ if (!week)
63
+ return null;
64
+ return { date: week[getColFromX(x, r, 7, getComputedStyle(this.host.nativeElement).direction === 'rtl')] };
65
+ }
66
+ }
67
+ return null;
68
+ },
69
+ onGestureStart: (info) => this.dragStartEv.emit(info),
70
+ onGestureOver: (hit) => this.dragOverDate.emit(hit.date),
71
+ onGestureLeave: () => this.hidePreviewEv.emit(),
72
+ onGestureDrop: (info, hit) => this.dropDayInfo.emit({ info, date: hit.date }),
73
+ onGestureEnd: () => this.dragEnd.emit(),
74
+ });
75
+ }
33
76
  year = 0;
34
77
  /** The branded `Month` (§7); pass `monthIndex(n)` for a computed value. */
35
78
  month = Month.January;
@@ -47,6 +90,8 @@ export class MonthViewComponent {
47
90
  dayCellClick = new EventEmitter();
48
91
  dropEvent = new EventEmitter();
49
92
  dragOverDate = new EventEmitter();
93
+ /** Pointer-gesture drop (mcp-57): same controller path, minus the DataTransfer. */
94
+ dropDayInfo = new EventEmitter();
50
95
  /** Drop-Zone wurde verlassen (dragleave) — Preview visuell ausräumen. */
51
96
  hidePreviewEv = new EventEmitter();
52
97
  /** Native `dragend` der Source — Drag-Session vollständig beendet. */
@@ -91,8 +136,8 @@ export class MonthViewComponent {
91
136
  getItems(weekIdx) {
92
137
  return this.weekItems[weekIdx] ?? [];
93
138
  }
94
- static ɵfac = function MonthViewComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MonthViewComponent)(); };
95
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MonthViewComponent, selectors: [["cal-month-view"]], hostAttrs: [2, "display", "contents"], inputs: { year: "year", month: "month", events: "events", config: "config", previewEvent: "previewEvent", expandedMonthDay: "expandedMonthDay", selectedEventId: "selectedEventId", selectedInstanceDate: "selectedInstanceDate" }, outputs: { eventClick: "eventClick", selectEvent: "selectEvent", clearSelection: "clearSelection", dayCellClick: "dayCellClick", dropEvent: "dropEvent", dragOverDate: "dragOverDate", hidePreviewEv: "hidePreviewEv", dragEnd: "dragEnd", dragStartEv: "dragStartEv", expandMonthCell: "expandMonthCell", collapseMonthCell: "collapseMonthCell" }, features: [i0.ɵɵNgOnChangesFeature], decls: 5, vars: 3, consts: [[1, "bm-cal__month-grid"], [1, "bm-cal__day-headers"], [1, "bm-cal__header-spacer"], ["class", "bm-cal__day-header", 4, "ngFor", "ngForOf"], [3, "weekDates", "items", "timedByDay", "currentYear", "currentMonth", "config", "today", "previewEvent", "expandedMonthDay", "selectedEventId", "selectedInstanceDate", "eventClick", "selectEvent", "clearSelection", "dayCellClick", "dropEvent", "dragOver", "hidePreviewEv", "dragEnd", "dragStartEv", "expandMonthCell", "collapseMonthCell", 4, "ngFor", "ngForOf", "ngForTrackBy"], [1, "bm-cal__day-header"], [3, "eventClick", "selectEvent", "clearSelection", "dayCellClick", "dropEvent", "dragOver", "hidePreviewEv", "dragEnd", "dragStartEv", "expandMonthCell", "collapseMonthCell", "weekDates", "items", "timedByDay", "currentYear", "currentMonth", "config", "today", "previewEvent", "expandedMonthDay", "selectedEventId", "selectedInstanceDate"]], template: function MonthViewComponent_Template(rf, ctx) { if (rf & 1) {
139
+ static ɵfac = function MonthViewComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MonthViewComponent)(i0.ɵɵdirectiveInject(i1.CalendarPointerGestureService), i0.ɵɵdirectiveInject(i0.ElementRef)); };
140
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MonthViewComponent, selectors: [["cal-month-view"]], hostAttrs: [2, "display", "contents"], inputs: { year: "year", month: "month", events: "events", config: "config", previewEvent: "previewEvent", expandedMonthDay: "expandedMonthDay", selectedEventId: "selectedEventId", selectedInstanceDate: "selectedInstanceDate" }, outputs: { eventClick: "eventClick", selectEvent: "selectEvent", clearSelection: "clearSelection", dayCellClick: "dayCellClick", dropEvent: "dropEvent", dragOverDate: "dragOverDate", dropDayInfo: "dropDayInfo", hidePreviewEv: "hidePreviewEv", dragEnd: "dragEnd", dragStartEv: "dragStartEv", expandMonthCell: "expandMonthCell", collapseMonthCell: "collapseMonthCell" }, features: [i0.ɵɵProvidersFeature([CalendarPointerGestureService]), i0.ɵɵNgOnChangesFeature], decls: 5, vars: 3, consts: [[1, "bm-cal__month-grid"], [1, "bm-cal__day-headers"], [1, "bm-cal__header-spacer"], ["class", "bm-cal__day-header", 4, "ngFor", "ngForOf"], [3, "weekDates", "items", "timedByDay", "currentYear", "currentMonth", "config", "today", "previewEvent", "expandedMonthDay", "selectedEventId", "selectedInstanceDate", "eventClick", "selectEvent", "clearSelection", "dayCellClick", "dropEvent", "dragOver", "hidePreviewEv", "dragEnd", "dragStartEv", "expandMonthCell", "collapseMonthCell", 4, "ngFor", "ngForOf", "ngForTrackBy"], [1, "bm-cal__day-header"], [3, "eventClick", "selectEvent", "clearSelection", "dayCellClick", "dropEvent", "dragOver", "hidePreviewEv", "dragEnd", "dragStartEv", "expandMonthCell", "collapseMonthCell", "weekDates", "items", "timedByDay", "currentYear", "currentMonth", "config", "today", "previewEvent", "expandedMonthDay", "selectedEventId", "selectedInstanceDate"]], template: function MonthViewComponent_Template(rf, ctx) { if (rf & 1) {
96
141
  i0.ɵɵelementStart(0, "div", 0)(1, "div", 1);
97
142
  i0.ɵɵelement(2, "div", 2);
98
143
  i0.ɵɵtemplate(3, MonthViewComponent_div_3_Template, 2, 1, "div", 3);
@@ -104,12 +149,13 @@ export class MonthViewComponent {
104
149
  i0.ɵɵproperty("ngForOf", ctx.config.locale.dayNamesShort);
105
150
  i0.ɵɵadvance();
106
151
  i0.ɵɵproperty("ngForOf", ctx.weeks)("ngForTrackBy", ctx.trackWeek);
107
- } }, dependencies: [CommonModule, i1.NgForOf, WeekRowComponent], encapsulation: 2 });
152
+ } }, dependencies: [CommonModule, i2.NgForOf, WeekRowComponent], encapsulation: 2 });
108
153
  }
109
154
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MonthViewComponent, [{
110
155
  type: Component,
111
156
  args: [{
112
157
  selector: 'cal-month-view',
158
+ providers: [CalendarPointerGestureService],
113
159
  standalone: true,
114
160
  host: { style: 'display: contents' },
115
161
  imports: [CommonModule, WeekRowComponent],
@@ -147,7 +193,7 @@ export class MonthViewComponent {
147
193
  </div>
148
194
  `,
149
195
  }]
150
- }], null, { year: [{
196
+ }], () => [{ type: i1.CalendarPointerGestureService }, { type: i0.ElementRef }], { year: [{
151
197
  type: Input
152
198
  }], month: [{
153
199
  type: Input
@@ -175,6 +221,8 @@ export class MonthViewComponent {
175
221
  type: Output
176
222
  }], dragOverDate: [{
177
223
  type: Output
224
+ }], dropDayInfo: [{
225
+ type: Output
178
226
  }], hidePreviewEv: [{
179
227
  type: Output
180
228
  }], dragEnd: [{
@@ -186,5 +234,5 @@ export class MonthViewComponent {
186
234
  }], collapseMonthCell: [{
187
235
  type: Output
188
236
  }] }); })();
189
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MonthViewComponent, { className: "MonthViewComponent", filePath: "views/month/monthview.ts", lineNumber: 52 }); })();
237
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MonthViewComponent, { className: "MonthViewComponent", filePath: "views/month/monthview.ts", lineNumber: 56 }); })();
190
238
  //# sourceMappingURL=MonthView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MonthView.js","sourceRoot":"","sources":["../../../src/views/month/MonthView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAa,MAAM,eAAe,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE5G,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;;;;IAexC,8BAAiF;IAAA,YAAU;IAAA,iBAAM;;;IAAhB,cAAU;IAAV,6BAAU;;;;IAG7F,uCAsBiD;IAA/C,AADA,AADA,AADA,AADA,AADA,AADA,AADA,AADA,AADA,AADA,6MAAc,8BAAuB,KAAC,kMACvB,+BAAwB,KAAC,kMACtB,4BAAqB,KAAC,oMACxB,gCAAyB,KAAC,8LAC7B,6BAAsB,KAAC,4LACxB,gCAAyB,KAAC,gMACrB,2BAAoB,KAAC,oLAC3B,qBAAc,KAAC,kMACX,+BAAwB,KAAC,0MACrB,mCAA4B,KAAC,wMAC3B,+BAAwB,KAAC;IAChD,iBAAe;;;;;IAZb,AADA,AADA,AADA,AADA,AADA,AADA,AADA,AADA,AADA,AADA,mCAAkB,kCACK,iCACE,4BACL,8BACE,yBACL,uBACF,qCACc,6CACQ,2CACF,qDACU;;AA3BrD;;;GAGG;AAwCH,MAAM,OAAO,kBAAkB;IACpB,IAAI,GAAG,CAAC,CAAC;IAClB,2EAA2E;IAClE,KAAK,GAAU,KAAK,CAAC,OAAO,CAAC;IAC7B,MAAM,GAAoB,EAAE,CAAC;IAC7B,MAAM,CAAkB;IACjC,wEAAwE;IAC/D,YAAY,GAAyB,IAAI,CAAC;IACnD,6EAA6E;IACpE,gBAAgB,GAAkB,IAAI,CAAC;IACvC,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,YAAY,GAAG,IAAI,YAAY,EAA6C,CAAC;IAC7E,SAAS,GAAG,IAAI,YAAY,EAAgD,CAAC;IAC7E,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,EAAO,CAAC;IAChD,iFAAiF;IACvE,eAAe,GAAG,IAAI,YAAY,EAAU,CAAC;IAC7C,iBAAiB,GAAG,IAAI,YAAY,EAAQ,CAAC;IAEvD,KAAK,GAAyB,EAAE,CAAC;IACjC,KAAK,CAAoB;IACzB,UAAU,GAAG,IAAI,GAAG,EAA2B,CAAC;IACxC,SAAS,GAAmB,EAAE,CAAC;IAEvC,2EAA2E;IAC3E,4EAA4E;IAC5E,4EAA4E;IAC5E,+EAA+E;IAC/E,SAAS,CAAC,CAAS,EAAE,IAAwB,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAE3E,WAAW;QACT,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEhE,gFAAgF;QAChF,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;QAC7B,MAAM,aAAa,GAAG,EAAE;YACtB,CAAC,CAAC,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;YAClF,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QAEhB,0FAA0F;QAC1F,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;QAC5B,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;YAClC,IAAI,KAAK,CAAC,MAAM,IAAI,iBAAiB,CAAC,KAAK,CAAC;gBAAE,SAAS;YACvD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;YACxD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAC9C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACnC,CAAC;QAED,wBAAwB;QACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;YAC1C,MAAM,QAAQ,GAAG,eAAe,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;YAC3D,OAAO,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,QAAQ,CAAC,OAAe;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACvC,CAAC;4GAnEU,kBAAkB;6DAAlB,kBAAkB;YAhCzB,AADF,8BAAgC,aACG;YAC/B,yBAAyC;YACzC,mEAAiF;YACnF,iBAAM;YAEN,sFAsBiD;YAEnD,iBAAM;;YA3BoB,eAA8B;YAA9B,yDAA8B;YAGvB,cAAU;YAAiB,AAA3B,mCAAU,+BAAmC;4BARtE,YAAY,cAAE,gBAAgB;;iFAmC7B,kBAAkB;cAvC9B,SAAS;eAAC;gBACT,QAAQ,EAAE,gBAAgB;gBAC1B,UAAU,EAAE,IAAI;gBAChB,IAAI,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE;gBACpC,OAAO,EAAE,CAAC,YAAY,EAAE,gBAAgB,CAAC;gBACzC,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCT;aACF;gBAEU,IAAI;kBAAZ,KAAK;YAEG,KAAK;kBAAb,KAAK;YACG,MAAM;kBAAd,KAAK;YACG,MAAM;kBAAd,KAAK;YAEG,YAAY;kBAApB,KAAK;YAEG,gBAAgB;kBAAxB,KAAK;YACG,eAAe;kBAAvB,KAAK;YACG,oBAAoB;kBAA5B,KAAK;YACI,UAAU;kBAAnB,MAAM;YACG,WAAW;kBAApB,MAAM;YACG,cAAc;kBAAvB,MAAM;YACG,YAAY;kBAArB,MAAM;YACG,SAAS;kBAAlB,MAAM;YACG,YAAY;kBAArB,MAAM;YAEG,aAAa;kBAAtB,MAAM;YAEG,OAAO;kBAAhB,MAAM;YACG,WAAW;kBAApB,MAAM;YAEG,eAAe;kBAAxB,MAAM;YACG,iBAAiB;kBAA1B,MAAM;;kFAzBI,kBAAkB"}
1
+ {"version":3,"file":"MonthView.js","sourceRoot":"","sources":["../../../src/views/month/MonthView.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { EventEmitter, ElementRef } from '@angular/core';
2
2
  import type { CalendarEvent, CalendarDateTime, LayoutItem } from '@bimetal/calendar-core';
3
3
  import { getDayOfMonth } from '@bimetal/temporal';
4
4
  import type { CalendarConfig } from '../../binding/index.js';
5
- import { EventRenderService } from '../../binding/index.js';
5
+ import { EventRenderService, CalendarPointerGestureService } from '../../binding/index.js';
6
6
  import * as i0 from "@angular/core";
7
7
  /**
8
8
  * A single week's row in the month grid: renders day cells, timed-event chips
@@ -10,6 +10,7 @@ import * as i0 from "@angular/core";
10
10
  */
11
11
  export declare class WeekRowComponent {
12
12
  private renderService?;
13
+ private gesture?;
13
14
  weekDates: CalendarDateTime[];
14
15
  items: LayoutItem[];
15
16
  timedByDay: Map<number, CalendarEvent[]>;
@@ -52,7 +53,8 @@ export declare class WeekRowComponent {
52
53
  click: import("@bimetal/calendar-headless").ClickIntent;
53
54
  timedClick: import("@bimetal/calendar-headless").ClickIntent;
54
55
  getDayOfMonth: typeof getDayOfMonth;
55
- constructor(renderService?: EventRenderService | undefined);
56
+ constructor(renderService?: EventRenderService | undefined, gesture?: CalendarPointerGestureService | undefined);
57
+ get pointerMode(): boolean;
56
58
  get badgesTpl(): import("@angular/core").TemplateRef<import("../../index.js").EventRenderTemplateContext> | undefined;
57
59
  get contentTpl(): import("@angular/core").TemplateRef<import("../../index.js").EventRenderTemplateContext> | undefined;
58
60
  tplCtx(ev: CalendarEvent): import("../../index.js").EventRenderTemplateContext | undefined;
@@ -70,6 +72,19 @@ export declare class WeekRowComponent {
70
72
  onCollapse(): void;
71
73
  isToday(date: CalendarDateTime): boolean;
72
74
  inMonth(date: CalendarDateTime): boolean;
75
+ /**
76
+ * Stable identity for the event-bar layout items (drag-survival, not just perf).
77
+ *
78
+ * The wrappers are minted fresh per snapshot, so without trackBy the ngFor
79
+ * differ sees all-new objects and re-creates every `cal-event-bar` on any items
80
+ * change. Chromium cancels a native HTML5 drag whose source node is destroyed
81
+ * in the dragstart task — exactly what happened here on Angular only, because
82
+ * the other stacks key by event identity. Keyed by event + the segment's day,
83
+ * because a multi-week event renders one bar per week row.
84
+ */
85
+ trackItem(_i: number, li: LayoutItem): string;
86
+ /** Same rule for the timed chips — the event object is the identity. */
87
+ trackEvent(_i: number, ev: CalendarEvent): string;
73
88
  trackDay(_: number, date: CalendarDateTime): number;
74
89
  formatDayNumber(date: CalendarDateTime): string;
75
90
  getTimedEvents(date: CalendarDateTime): CalendarEvent[];
@@ -84,6 +99,7 @@ export declare class WeekRowComponent {
84
99
  handleDayCellClick(e: MouseEvent, date: CalendarDateTime): void;
85
100
  handleDayCellDoubleClick(e: MouseEvent, date: CalendarDateTime): void;
86
101
  handleTimedMouseDown(): void;
102
+ handleTimedPointerDown(e: PointerEvent, ev: CalendarEvent): void;
87
103
  handleTimedDragStart(e: DragEvent, ev: CalendarEvent): void;
88
104
  private timedPolicy;
89
105
  timedCanDrag(ev: CalendarEvent): boolean;
@@ -91,7 +107,7 @@ export declare class WeekRowComponent {
91
107
  handleTimedClick(e: MouseEvent, ev: CalendarEvent): void;
92
108
  handleTimedDoubleClick(e: MouseEvent, ev: CalendarEvent): void;
93
109
  isTimedSelected(ev: CalendarEvent): boolean;
94
- static ɵfac: i0.ɵɵFactoryDeclaration<WeekRowComponent, [{ optional: true; }]>;
110
+ static ɵfac: i0.ɵɵFactoryDeclaration<WeekRowComponent, [{ optional: true; }, { optional: true; }]>;
95
111
  static ɵcmp: i0.ɵɵComponentDeclaration<WeekRowComponent, "cal-week-row", never, { "weekDates": { "alias": "weekDates"; "required": false; }; "items": { "alias": "items"; "required": false; }; "timedByDay": { "alias": "timedByDay"; "required": false; }; "currentYear": { "alias": "currentYear"; "required": false; }; "currentMonth": { "alias": "currentMonth"; "required": false; }; "config": { "alias": "config"; "required": false; }; "today": { "alias": "today"; "required": false; }; "previewEvent": { "alias": "previewEvent"; "required": false; }; "expandedMonthDay": { "alias": "expandedMonthDay"; "required": false; }; "selectedEventId": { "alias": "selectedEventId"; "required": false; }; "selectedInstanceDate": { "alias": "selectedInstanceDate"; "required": false; }; }, { "eventClick": "eventClick"; "selectEvent": "selectEvent"; "clearSelection": "clearSelection"; "dayCellClick": "dayCellClick"; "dropEvent": "dropEvent"; "dragOver": "dragOver"; "hidePreviewEv": "hidePreviewEv"; "dragEnd": "dragEnd"; "dragStartEv": "dragStartEv"; "expandMonthCell": "expandMonthCell"; "collapseMonthCell": "collapseMonthCell"; }, never, never, true, never>;
96
112
  }
97
113
  //# sourceMappingURL=WeekRow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WeekRow.d.ts","sourceRoot":"","sources":["../../../src/views/month/WeekRow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WeekRow.d.ts","sourceRoot":"","sources":["../../../src/views/month/WeekRow.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,8 @@ import { Component, Input, Output, EventEmitter, ElementRef, ViewChild, Optional
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { isSameDay, getDayOfMonth, getMonth, startOfDay, formatDayLabel } from '@bimetal/temporal';
4
4
  import { calendarWeekNumber, maxLanes, lanesPerDay, getRecurrenceInstanceMetadata } from '@bimetal/calendar-core';
5
- import { getColFromX, EventRenderService } from '../../binding/index.js';
6
- import { createClickIntent, toTimeStr, maxVisibleTimedInMonth, buildDragInfo, writeCalendarDragData } from '@bimetal/calendar-headless';
5
+ import { getColFromX, EventRenderService, CalendarPointerGestureService, formatTime } from '../../binding/index.js';
6
+ import { createClickIntent, maxVisibleTimedInMonth, buildDragInfo, writeCalendarDragData } from '@bimetal/calendar-headless';
7
7
  import { EventBarComponent } from '../../components/EventBar.js';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "../../binding/index.js";
@@ -55,16 +55,16 @@ function WeekRowComponent_div_4_ng_container_4_div_1_div_1_ng_container_4_Templa
55
55
  function WeekRowComponent_div_4_ng_container_4_div_1_div_1_Template(rf, ctx) { if (rf & 1) {
56
56
  const _r5 = i0.ɵɵgetCurrentView();
57
57
  i0.ɵɵelementStart(0, "div", 17);
58
- i0.ɵɵlistener("dragstart", function WeekRowComponent_div_4_ng_container_4_div_1_div_1_Template_div_dragstart_0_listener($event) { const ev_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.handleTimedDragStart($event, ev_r6)); })("dragend", function WeekRowComponent_div_4_ng_container_4_div_1_div_1_Template_div_dragend_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.dragEnd.emit()); })("mousedown", function WeekRowComponent_div_4_ng_container_4_div_1_div_1_Template_div_mousedown_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.handleTimedMouseDown()); })("click", function WeekRowComponent_div_4_ng_container_4_div_1_div_1_Template_div_click_0_listener($event) { const ev_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.handleTimedClick($event, ev_r6)); })("dblclick", function WeekRowComponent_div_4_ng_container_4_div_1_div_1_Template_div_dblclick_0_listener($event) { const ev_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.handleTimedDoubleClick($event, ev_r6)); });
58
+ i0.ɵɵlistener("pointerdown", function WeekRowComponent_div_4_ng_container_4_div_1_div_1_Template_div_pointerdown_0_listener($event) { const ev_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.handleTimedPointerDown($event, ev_r6)); })("dragstart", function WeekRowComponent_div_4_ng_container_4_div_1_div_1_Template_div_dragstart_0_listener($event) { const ev_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.pointerMode || ctx_r2.handleTimedDragStart($event, ev_r6)); })("dragend", function WeekRowComponent_div_4_ng_container_4_div_1_div_1_Template_div_dragend_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.pointerMode || ctx_r2.dragEnd.emit()); })("mousedown", function WeekRowComponent_div_4_ng_container_4_div_1_div_1_Template_div_mousedown_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.pointerMode || ctx_r2.handleTimedMouseDown()); })("click", function WeekRowComponent_div_4_ng_container_4_div_1_div_1_Template_div_click_0_listener($event) { const ev_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.handleTimedClick($event, ev_r6)); })("dblclick", function WeekRowComponent_div_4_ng_container_4_div_1_div_1_Template_div_dblclick_0_listener($event) { const ev_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.handleTimedDoubleClick($event, ev_r6)); });
59
59
  i0.ɵɵtemplate(1, WeekRowComponent_div_4_ng_container_4_div_1_div_1_ng_container_1_Template, 2, 2, "ng-container", 18)(2, WeekRowComponent_div_4_ng_container_4_div_1_div_1_ng_template_2_Template, 5, 4, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor)(4, WeekRowComponent_div_4_ng_container_4_div_1_div_1_ng_container_4_Template, 2, 2, "ng-container", 11);
60
60
  i0.ɵɵelementEnd();
61
61
  } if (rf & 2) {
62
62
  const ev_r6 = ctx.$implicit;
63
63
  const defaultTimed_r7 = i0.ɵɵreference(3);
64
64
  const ctx_r2 = i0.ɵɵnextContext(4);
65
- i0.ɵɵclassMap("bm-cal-timed-entry" + (ctx_r2.isTimedSelected(ev_r6) ? " bm-cal-timed-entry--selected" : "") + ctx_r2.timedStateClass(ev_r6) + ctx_r2.slotsClassName(ev_r6));
65
+ i0.ɵɵclassMap("bm-cal-timed-entry" + (ctx_r2.isTimedSelected(ev_r6) ? " bm-cal-timed-entry--selected" : "") + ctx_r2.timedStateClass(ev_r6) + (ctx_r2.pointerMode && ctx_r2.timedCanDrag(ev_r6) ? " bm-cal-timed-entry--pointer" : "") + ctx_r2.slotsClassName(ev_r6));
66
66
  i0.ɵɵproperty("ngStyle", ctx_r2.slotsStyle(ev_r6))("title", ctx_r2.renderedTitle(ev_r6));
67
- i0.ɵɵattribute("draggable", ctx_r2.timedCanDrag(ev_r6));
67
+ i0.ɵɵattribute("draggable", ctx_r2.pointerMode ? null : ctx_r2.timedCanDrag(ev_r6));
68
68
  i0.ɵɵadvance();
69
69
  i0.ɵɵproperty("ngIf", ctx_r2.contentTpl)("ngIfElse", defaultTimed_r7);
70
70
  i0.ɵɵadvance(3);
@@ -94,7 +94,7 @@ function WeekRowComponent_div_4_ng_container_4_div_1_Template(rf, ctx) { if (rf
94
94
  const colIdx_r10 = ctx_r10.index;
95
95
  const ctx_r2 = i0.ɵɵnextContext();
96
96
  i0.ɵɵadvance();
97
- i0.ɵɵproperty("ngForOf", ctx_r2.getVisibleTimed(timed_r9, colIdx_r10, date_r4));
97
+ i0.ɵɵproperty("ngForOf", ctx_r2.getVisibleTimed(timed_r9, colIdx_r10, date_r4))("ngForTrackBy", ctx_r2.trackEvent);
98
98
  i0.ɵɵadvance();
99
99
  i0.ɵɵproperty("ngIf", ctx_r2.hasOverflow(timed_r9, colIdx_r10) && !ctx_r2.isExpanded(date_r4));
100
100
  } }
@@ -144,16 +144,16 @@ function WeekRowComponent_div_4_ng_container_4_div_2_div_4_ng_container_4_Templa
144
144
  function WeekRowComponent_div_4_ng_container_4_div_2_div_4_Template(rf, ctx) { if (rf & 1) {
145
145
  const _r13 = i0.ɵɵgetCurrentView();
146
146
  i0.ɵɵelementStart(0, "div", 17);
147
- i0.ɵɵlistener("dragstart", function WeekRowComponent_div_4_ng_container_4_div_2_div_4_Template_div_dragstart_0_listener($event) { const ev_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.handleTimedDragStart($event, ev_r14)); })("dragend", function WeekRowComponent_div_4_ng_container_4_div_2_div_4_Template_div_dragend_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.dragEnd.emit()); })("mousedown", function WeekRowComponent_div_4_ng_container_4_div_2_div_4_Template_div_mousedown_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.handleTimedMouseDown()); })("click", function WeekRowComponent_div_4_ng_container_4_div_2_div_4_Template_div_click_0_listener($event) { const ev_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.handleTimedClick($event, ev_r14)); })("dblclick", function WeekRowComponent_div_4_ng_container_4_div_2_div_4_Template_div_dblclick_0_listener($event) { const ev_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.handleTimedDoubleClick($event, ev_r14)); });
147
+ i0.ɵɵlistener("pointerdown", function WeekRowComponent_div_4_ng_container_4_div_2_div_4_Template_div_pointerdown_0_listener($event) { const ev_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.handleTimedPointerDown($event, ev_r14)); })("dragstart", function WeekRowComponent_div_4_ng_container_4_div_2_div_4_Template_div_dragstart_0_listener($event) { const ev_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.pointerMode || ctx_r2.handleTimedDragStart($event, ev_r14)); })("dragend", function WeekRowComponent_div_4_ng_container_4_div_2_div_4_Template_div_dragend_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.pointerMode || ctx_r2.dragEnd.emit()); })("mousedown", function WeekRowComponent_div_4_ng_container_4_div_2_div_4_Template_div_mousedown_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.pointerMode || ctx_r2.handleTimedMouseDown()); })("click", function WeekRowComponent_div_4_ng_container_4_div_2_div_4_Template_div_click_0_listener($event) { const ev_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.handleTimedClick($event, ev_r14)); })("dblclick", function WeekRowComponent_div_4_ng_container_4_div_2_div_4_Template_div_dblclick_0_listener($event) { const ev_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.handleTimedDoubleClick($event, ev_r14)); });
148
148
  i0.ɵɵtemplate(1, WeekRowComponent_div_4_ng_container_4_div_2_div_4_ng_container_1_Template, 2, 2, "ng-container", 18)(2, WeekRowComponent_div_4_ng_container_4_div_2_div_4_ng_template_2_Template, 5, 4, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor)(4, WeekRowComponent_div_4_ng_container_4_div_2_div_4_ng_container_4_Template, 2, 2, "ng-container", 11);
149
149
  i0.ɵɵelementEnd();
150
150
  } if (rf & 2) {
151
151
  const ev_r14 = ctx.$implicit;
152
152
  const defaultTimedExp_r15 = i0.ɵɵreference(3);
153
153
  const ctx_r2 = i0.ɵɵnextContext(4);
154
- i0.ɵɵclassMap("bm-cal-timed-entry" + (ctx_r2.isTimedSelected(ev_r14) ? " bm-cal-timed-entry--selected" : "") + ctx_r2.timedStateClass(ev_r14) + ctx_r2.slotsClassName(ev_r14));
154
+ i0.ɵɵclassMap("bm-cal-timed-entry" + (ctx_r2.isTimedSelected(ev_r14) ? " bm-cal-timed-entry--selected" : "") + ctx_r2.timedStateClass(ev_r14) + (ctx_r2.pointerMode && ctx_r2.timedCanDrag(ev_r14) ? " bm-cal-timed-entry--pointer" : "") + ctx_r2.slotsClassName(ev_r14));
155
155
  i0.ɵɵproperty("ngStyle", ctx_r2.slotsStyle(ev_r14))("title", ctx_r2.renderedTitle(ev_r14));
156
- i0.ɵɵattribute("draggable", ctx_r2.timedCanDrag(ev_r14));
156
+ i0.ɵɵattribute("draggable", ctx_r2.pointerMode ? null : ctx_r2.timedCanDrag(ev_r14));
157
157
  i0.ɵɵadvance();
158
158
  i0.ɵɵproperty("ngIf", ctx_r2.contentTpl)("ngIfElse", defaultTimedExp_r15);
159
159
  i0.ɵɵadvance(3);
@@ -177,11 +177,11 @@ function WeekRowComponent_div_4_ng_container_4_div_2_Template(rf, ctx) { if (rf
177
177
  i0.ɵɵadvance();
178
178
  i0.ɵɵtextInterpolate(ctx_r2.getDayOfMonth(date_r4));
179
179
  i0.ɵɵadvance();
180
- i0.ɵɵproperty("ngForOf", timed_r9);
180
+ i0.ɵɵproperty("ngForOf", timed_r9)("ngForTrackBy", ctx_r2.trackEvent);
181
181
  } }
182
182
  function WeekRowComponent_div_4_ng_container_4_Template(rf, ctx) { if (rf & 1) {
183
183
  i0.ɵɵelementContainerStart(0);
184
- i0.ɵɵtemplate(1, WeekRowComponent_div_4_ng_container_4_div_1_Template, 3, 2, "div", 12)(2, WeekRowComponent_div_4_ng_container_4_div_2_Template, 5, 4, "div", 13);
184
+ i0.ɵɵtemplate(1, WeekRowComponent_div_4_ng_container_4_div_1_Template, 3, 3, "div", 12)(2, WeekRowComponent_div_4_ng_container_4_div_2_Template, 5, 5, "div", 13);
185
185
  i0.ɵɵelementContainerEnd();
186
186
  } if (rf & 2) {
187
187
  const timed_r9 = ctx.ngIf;
@@ -224,7 +224,7 @@ function WeekRowComponent_cal_event_bar_7_Template(rf, ctx) { if (rf & 1) {
224
224
  } if (rf & 2) {
225
225
  const layoutItem_r17 = ctx.$implicit;
226
226
  const ctx_r2 = i0.ɵɵnextContext();
227
- i0.ɵɵproperty("event", layoutItem_r17.segment.event)("isStart", layoutItem_r17.segment.isStart)("isEnd", layoutItem_r17.segment.isEnd)("dayIndex", layoutItem_r17.dayIndex)("daySpan", layoutItem_r17.daySpan)("column", layoutItem_r17.column)("weekDates", ctx_r2.weekDates)("ghost", ctx_r2.isDragged(layoutItem_r17))("clickThresholdMs", ctx_r2.config.clickThresholdMs)("isSelected", ctx_r2.isTimedSelected(layoutItem_r17.segment.event));
227
+ i0.ɵɵproperty("config", ctx_r2.config)("event", layoutItem_r17.segment.event)("isStart", layoutItem_r17.segment.isStart)("isEnd", layoutItem_r17.segment.isEnd)("dayIndex", layoutItem_r17.dayIndex)("daySpan", layoutItem_r17.daySpan)("column", layoutItem_r17.column)("weekDates", ctx_r2.weekDates)("ghost", ctx_r2.isDragged(layoutItem_r17))("clickThresholdMs", ctx_r2.config.clickThresholdMs)("isSelected", ctx_r2.isTimedSelected(layoutItem_r17.segment.event));
228
228
  } }
229
229
  /**
230
230
  * A single week's row in the month grid: renders day cells, timed-event chips
@@ -232,6 +232,7 @@ function WeekRowComponent_cal_event_bar_7_Template(rf, ctx) { if (rf & 1) {
232
232
  */
233
233
  export class WeekRowComponent {
234
234
  renderService;
235
+ gesture;
235
236
  weekDates = [];
236
237
  items = [];
237
238
  timedByDay = new Map();
@@ -265,9 +266,13 @@ export class WeekRowComponent {
265
266
  click = createClickIntent();
266
267
  timedClick = createClickIntent();
267
268
  getDayOfMonth = getDayOfMonth;
268
- constructor(renderService) {
269
+ constructor(renderService,
270
+ // mcp-57 dual-mode (see TimeEvent.ts).
271
+ gesture) {
269
272
  this.renderService = renderService;
273
+ this.gesture = gesture;
270
274
  }
275
+ get pointerMode() { return !!this.gesture; }
271
276
  get badgesTpl() { return this.renderService?.eventBadgesTpl; }
272
277
  get contentTpl() { return this.renderService?.eventContentTpl; }
273
278
  tplCtx(ev) { return this.renderService?.buildTemplateContext(ev); }
@@ -289,6 +294,21 @@ export class WeekRowComponent {
289
294
  onCollapse() { this.collapseMonthCell.emit(); }
290
295
  isToday(date) { return isSameDay(date, this.today); }
291
296
  inMonth(date) { return getMonth(date) === this.currentMonth; }
297
+ /**
298
+ * Stable identity for the event-bar layout items (drag-survival, not just perf).
299
+ *
300
+ * The wrappers are minted fresh per snapshot, so without trackBy the ngFor
301
+ * differ sees all-new objects and re-creates every `cal-event-bar` on any items
302
+ * change. Chromium cancels a native HTML5 drag whose source node is destroyed
303
+ * in the dragstart task — exactly what happened here on Angular only, because
304
+ * the other stacks key by event identity. Keyed by event + the segment's day,
305
+ * because a multi-week event renders one bar per week row.
306
+ */
307
+ trackItem(_i, li) {
308
+ return li.segment.event.id + '@' + li.dayIndex;
309
+ }
310
+ /** Same rule for the timed chips — the event object is the identity. */
311
+ trackEvent(_i, ev) { return ev.id; }
292
312
  // Stable identity for the day cells: without trackBy, any change-detection pass
293
313
  // that yields fresh CalendarDateTime objects (e.g. a click → markChanged → grid
294
314
  // recompute) re-creates the cell nodes mid-gesture, dropping the in-flight
@@ -310,7 +330,7 @@ export class WeekRowComponent {
310
330
  return ev.metadata.color ?? '#007AFF';
311
331
  }
312
332
  formatTime(ev) {
313
- return toTimeStr(ev.timeRange.start);
333
+ return formatTime(ev.timeRange.start, this.config.locale.code, this.config.core.timezone);
314
334
  }
315
335
  isDragged(item) {
316
336
  return this.previewEvent?.id === item.segment.event.id;
@@ -320,7 +340,7 @@ export class WeekRowComponent {
320
340
  e.dataTransfer.dropEffect = 'move';
321
341
  if (!this.rowEl)
322
342
  return;
323
- const col = getColFromX(e.clientX, this.rowEl.nativeElement.getBoundingClientRect());
343
+ const col = getColFromX(e.clientX, this.rowEl.nativeElement.getBoundingClientRect(), 7, getComputedStyle(this.rowEl.nativeElement).direction === 'rtl');
324
344
  this.dragOver.emit(this.weekDates[col]);
325
345
  }
326
346
  handleDragLeave(e) {
@@ -334,7 +354,7 @@ export class WeekRowComponent {
334
354
  e.preventDefault();
335
355
  if (!this.rowEl)
336
356
  return;
337
- const col = getColFromX(e.clientX, this.rowEl.nativeElement.getBoundingClientRect());
357
+ const col = getColFromX(e.clientX, this.rowEl.nativeElement.getBoundingClientRect(), 7, getComputedStyle(this.rowEl.nativeElement).direction === 'rtl');
338
358
  this.dropEvent.emit({ event: e, date: this.weekDates[col] });
339
359
  }
340
360
  handleDayCellClick(e, date) {
@@ -356,6 +376,20 @@ export class WeekRowComponent {
356
376
  }
357
377
  // ticket-29: day-grain move of a month timed entry (mirrors cal-event-bar; markDragged so the
358
378
  // drop doesn't also select). dayOffset 0 — always single-day in its cell.
379
+ handleTimedPointerDown(e, ev) {
380
+ if (!this.pointerMode)
381
+ return;
382
+ e.stopPropagation();
383
+ this.timedClick.markMouseDown();
384
+ if (!this.timedCanDrag(ev))
385
+ return;
386
+ try {
387
+ e.currentTarget.setPointerCapture?.(e.pointerId);
388
+ }
389
+ catch { /* synthetic */ }
390
+ const info = buildDragInfo(ev, 'move', { dayOffset: 0 });
391
+ this.gesture.onPointerDown(info, e.pointerId, e.clientX, e.clientY, () => this.timedClick.markDragged());
392
+ }
359
393
  handleTimedDragStart(e, ev) {
360
394
  this.timedClick.markDragged();
361
395
  const info = buildDragInfo(ev, 'move', { dayOffset: 0 });
@@ -392,13 +426,13 @@ export class WeekRowComponent {
392
426
  const id = getRecurrenceInstanceMetadata(ev)?.instanceDate;
393
427
  return this.selectedEventId === ev.id && this.selectedInstanceDate === id;
394
428
  }
395
- static ɵfac = function WeekRowComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || WeekRowComponent)(i0.ɵɵdirectiveInject(i1.EventRenderService, 8)); };
429
+ static ɵfac = function WeekRowComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || WeekRowComponent)(i0.ɵɵdirectiveInject(i1.EventRenderService, 8), i0.ɵɵdirectiveInject(i1.CalendarPointerGestureService, 8)); };
396
430
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: WeekRowComponent, selectors: [["cal-week-row"]], viewQuery: function WeekRowComponent_Query(rf, ctx) { if (rf & 1) {
397
431
  i0.ɵɵviewQuery(_c0, 5);
398
432
  } if (rf & 2) {
399
433
  let _t;
400
434
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.rowEl = _t.first);
401
- } }, hostAttrs: [2, "display", "contents"], inputs: { weekDates: "weekDates", items: "items", timedByDay: "timedByDay", currentYear: "currentYear", currentMonth: "currentMonth", config: "config", today: "today", previewEvent: "previewEvent", expandedMonthDay: "expandedMonthDay", selectedEventId: "selectedEventId", selectedInstanceDate: "selectedInstanceDate" }, outputs: { eventClick: "eventClick", selectEvent: "selectEvent", clearSelection: "clearSelection", dayCellClick: "dayCellClick", dropEvent: "dropEvent", dragOver: "dragOver", hidePreviewEv: "hidePreviewEv", dragEnd: "dragEnd", dragStartEv: "dragStartEv", expandMonthCell: "expandMonthCell", collapseMonthCell: "collapseMonthCell" }, decls: 8, vars: 6, consts: [["rowEl", ""], ["defaultTimed", ""], ["defaultTimedExp", ""], [1, "bm-cal__week-row", 3, "dragover", "dragleave", "drop"], [1, "bm-cal__week-number"], [3, "class", "grid-column", "grid-row", "--lane-count", "mousedown", "click", "dblclick", 4, "ngFor", "ngForOf", "ngForTrackBy"], [1, "bm-cal__events-overlay"], [1, "bm-cal__events-grid"], [3, "event", "isStart", "isEnd", "dayIndex", "daySpan", "column", "weekDates", "ghost", "clickThresholdMs", "isSelected", "eventClick", "selectEvent", "dragStart", "dragEnd", 4, "ngFor", "ngForOf"], [3, "mousedown", "click", "dblclick"], [1, "bm-cal__day-number-container"], [4, "ngIf"], ["class", "bm-cal__day-timed", 4, "ngIf"], ["class", "bm-cal__day-expand-overlay", 3, "mouseleave", 4, "ngIf"], [1, "bm-cal__day-timed"], [3, "class", "ngStyle", "title", "dragstart", "dragend", "mousedown", "click", "dblclick", 4, "ngFor", "ngForOf"], ["class", "bm-cal__timed-overflow", 3, "mouseenter", 4, "ngIf"], [3, "dragstart", "dragend", "mousedown", "click", "dblclick", "ngStyle", "title"], [4, "ngIf", "ngIfElse"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "bm-cal-timed-entry__dot"], [1, "bm-cal-timed-entry__time"], [1, "bm-cal-timed-entry__title"], [1, "bm-cal__timed-overflow", 3, "mouseenter"], [1, "bm-cal__day-expand-overlay", 3, "mouseleave"], [3, "eventClick", "selectEvent", "dragStart", "dragEnd", "event", "isStart", "isEnd", "dayIndex", "daySpan", "column", "weekDates", "ghost", "clickThresholdMs", "isSelected"]], template: function WeekRowComponent_Template(rf, ctx) { if (rf & 1) {
435
+ } }, hostAttrs: [2, "display", "contents"], inputs: { weekDates: "weekDates", items: "items", timedByDay: "timedByDay", currentYear: "currentYear", currentMonth: "currentMonth", config: "config", today: "today", previewEvent: "previewEvent", expandedMonthDay: "expandedMonthDay", selectedEventId: "selectedEventId", selectedInstanceDate: "selectedInstanceDate" }, outputs: { eventClick: "eventClick", selectEvent: "selectEvent", clearSelection: "clearSelection", dayCellClick: "dayCellClick", dropEvent: "dropEvent", dragOver: "dragOver", hidePreviewEv: "hidePreviewEv", dragEnd: "dragEnd", dragStartEv: "dragStartEv", expandMonthCell: "expandMonthCell", collapseMonthCell: "collapseMonthCell" }, decls: 8, vars: 7, consts: [["rowEl", ""], ["defaultTimed", ""], ["defaultTimedExp", ""], [1, "bm-cal__week-row", 3, "dragover", "dragleave", "drop"], [1, "bm-cal__week-number"], [3, "class", "grid-column", "grid-row", "--lane-count", "mousedown", "click", "dblclick", 4, "ngFor", "ngForOf", "ngForTrackBy"], [1, "bm-cal__events-overlay"], [1, "bm-cal__events-grid"], [3, "config", "event", "isStart", "isEnd", "dayIndex", "daySpan", "column", "weekDates", "ghost", "clickThresholdMs", "isSelected", "eventClick", "selectEvent", "dragStart", "dragEnd", 4, "ngFor", "ngForOf", "ngForTrackBy"], [3, "mousedown", "click", "dblclick"], [1, "bm-cal__day-number-container"], [4, "ngIf"], ["class", "bm-cal__day-timed", 4, "ngIf"], ["class", "bm-cal__day-expand-overlay", 3, "mouseleave", 4, "ngIf"], [1, "bm-cal__day-timed"], [3, "class", "ngStyle", "title", "pointerdown", "dragstart", "dragend", "mousedown", "click", "dblclick", 4, "ngFor", "ngForOf", "ngForTrackBy"], ["class", "bm-cal__timed-overflow", 3, "mouseenter", 4, "ngIf"], [3, "pointerdown", "dragstart", "dragend", "mousedown", "click", "dblclick", "ngStyle", "title"], [4, "ngIf", "ngIfElse"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "bm-cal-timed-entry__dot"], [1, "bm-cal-timed-entry__time"], [1, "bm-cal-timed-entry__title"], [1, "bm-cal__timed-overflow", 3, "mouseenter"], [1, "bm-cal__day-expand-overlay", 3, "mouseleave"], [3, "eventClick", "selectEvent", "dragStart", "dragEnd", "config", "event", "isStart", "isEnd", "dayIndex", "daySpan", "column", "weekDates", "ghost", "clickThresholdMs", "isSelected"]], template: function WeekRowComponent_Template(rf, ctx) { if (rf & 1) {
402
436
  const _r1 = i0.ɵɵgetCurrentView();
403
437
  i0.ɵɵelementStart(0, "div", 3, 0);
404
438
  i0.ɵɵlistener("dragover", function WeekRowComponent_Template_div_dragover_0_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.handleDragOver($event)); })("dragleave", function WeekRowComponent_Template_div_dragleave_0_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.handleDragLeave($event)); })("drop", function WeekRowComponent_Template_div_drop_0_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.handleDrop($event)); });
@@ -407,7 +441,7 @@ export class WeekRowComponent {
407
441
  i0.ɵɵelementEnd();
408
442
  i0.ɵɵtemplate(4, WeekRowComponent_div_4_Template, 5, 12, "div", 5);
409
443
  i0.ɵɵelementStart(5, "div", 6)(6, "div", 7);
410
- i0.ɵɵtemplate(7, WeekRowComponent_cal_event_bar_7_Template, 1, 10, "cal-event-bar", 8);
444
+ i0.ɵɵtemplate(7, WeekRowComponent_cal_event_bar_7_Template, 1, 11, "cal-event-bar", 8);
411
445
  i0.ɵɵelementEnd()()();
412
446
  } if (rf & 2) {
413
447
  i0.ɵɵstyleProp("--lane-count", ctx.lanes);
@@ -416,7 +450,7 @@ export class WeekRowComponent {
416
450
  i0.ɵɵadvance();
417
451
  i0.ɵɵproperty("ngForOf", ctx.weekDates)("ngForTrackBy", ctx.trackDay);
418
452
  i0.ɵɵadvance(3);
419
- i0.ɵɵproperty("ngForOf", ctx.items);
453
+ i0.ɵɵproperty("ngForOf", ctx.items)("ngForTrackBy", ctx.trackItem);
420
454
  } }, dependencies: [CommonModule, i2.NgForOf, i2.NgIf, i2.NgTemplateOutlet, i2.NgStyle, EventBarComponent], encapsulation: 2 });
421
455
  }
422
456
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WeekRowComponent, [{
@@ -449,13 +483,14 @@ export class WeekRowComponent {
449
483
  </div>
450
484
  <ng-container *ngIf="getTimedEvents(date) as timed">
451
485
  <div *ngIf="timed.length > 0" class="bm-cal__day-timed">
452
- <div *ngFor="let ev of getVisibleTimed(timed, colIdx, date)"
453
- [class]="'bm-cal-timed-entry' + (isTimedSelected(ev) ? ' bm-cal-timed-entry--selected' : '') + timedStateClass(ev) + slotsClassName(ev)"
486
+ <div *ngFor="let ev of getVisibleTimed(timed, colIdx, date); trackBy: trackEvent"
487
+ [class]="'bm-cal-timed-entry' + (isTimedSelected(ev) ? ' bm-cal-timed-entry--selected' : '') + timedStateClass(ev) + (pointerMode && timedCanDrag(ev) ? ' bm-cal-timed-entry--pointer' : '') + slotsClassName(ev)"
454
488
  [ngStyle]="slotsStyle(ev)"
455
- [attr.draggable]="timedCanDrag(ev)"
456
- (dragstart)="handleTimedDragStart($event, ev)"
457
- (dragend)="dragEnd.emit()"
458
- (mousedown)="handleTimedMouseDown()"
489
+ [attr.draggable]="pointerMode ? null : timedCanDrag(ev)"
490
+ (pointerdown)="handleTimedPointerDown($event, ev)"
491
+ (dragstart)="pointerMode || handleTimedDragStart($event, ev)"
492
+ (dragend)="pointerMode || dragEnd.emit()"
493
+ (mousedown)="pointerMode || handleTimedMouseDown()"
459
494
  (click)="handleTimedClick($event, ev)"
460
495
  (dblclick)="handleTimedDoubleClick($event, ev)"
461
496
  [title]="renderedTitle(ev)">
@@ -481,13 +516,14 @@ export class WeekRowComponent {
481
516
  <div class="bm-cal__day-number-container">
482
517
  <span [class]="'bm-cal__day-number' + (isToday(date) ? ' bm-cal__today' : '')">{{ getDayOfMonth(date) }}</span>
483
518
  </div>
484
- <div *ngFor="let ev of timed"
485
- [class]="'bm-cal-timed-entry' + (isTimedSelected(ev) ? ' bm-cal-timed-entry--selected' : '') + timedStateClass(ev) + slotsClassName(ev)"
519
+ <div *ngFor="let ev of timed; trackBy: trackEvent"
520
+ [class]="'bm-cal-timed-entry' + (isTimedSelected(ev) ? ' bm-cal-timed-entry--selected' : '') + timedStateClass(ev) + (pointerMode && timedCanDrag(ev) ? ' bm-cal-timed-entry--pointer' : '') + slotsClassName(ev)"
486
521
  [ngStyle]="slotsStyle(ev)"
487
- [attr.draggable]="timedCanDrag(ev)"
488
- (dragstart)="handleTimedDragStart($event, ev)"
489
- (dragend)="dragEnd.emit()"
490
- (mousedown)="handleTimedMouseDown()"
522
+ [attr.draggable]="pointerMode ? null : timedCanDrag(ev)"
523
+ (pointerdown)="handleTimedPointerDown($event, ev)"
524
+ (dragstart)="pointerMode || handleTimedDragStart($event, ev)"
525
+ (dragend)="pointerMode || dragEnd.emit()"
526
+ (mousedown)="pointerMode || handleTimedMouseDown()"
491
527
  (click)="handleTimedClick($event, ev)"
492
528
  (dblclick)="handleTimedDoubleClick($event, ev)"
493
529
  [title]="renderedTitle(ev)">
@@ -509,7 +545,8 @@ export class WeekRowComponent {
509
545
 
510
546
  <div class="bm-cal__events-overlay">
511
547
  <div class="bm-cal__events-grid">
512
- <cal-event-bar *ngFor="let layoutItem of items; let idx = index"
548
+ <cal-event-bar *ngFor="let layoutItem of items; let idx = index; trackBy: trackItem"
549
+ [config]="config"
513
550
  [event]="layoutItem.segment.event"
514
551
  [isStart]="layoutItem.segment.isStart"
515
552
  [isEnd]="layoutItem.segment.isEnd"
@@ -532,6 +569,8 @@ export class WeekRowComponent {
532
569
  }]
533
570
  }], () => [{ type: i1.EventRenderService, decorators: [{
534
571
  type: Optional
572
+ }] }, { type: i1.CalendarPointerGestureService, decorators: [{
573
+ type: Optional
535
574
  }] }], { weekDates: [{
536
575
  type: Input
537
576
  }], items: [{
@@ -580,5 +619,5 @@ export class WeekRowComponent {
580
619
  type: ViewChild,
581
620
  args: ['rowEl']
582
621
  }] }); })();
583
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(WeekRowComponent, { className: "WeekRowComponent", filePath: "views/month/weekrow.ts", lineNumber: 124 }); })();
622
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(WeekRowComponent, { className: "WeekRowComponent", filePath: "views/month/weekrow.ts", lineNumber: 127 }); })();
584
623
  //# sourceMappingURL=WeekRow.js.map