@progress/kendo-angular-scheduler 21.4.1-develop.1 → 22.0.0-develop.1

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 (197) hide show
  1. package/editing/recurrence/localization/messages.d.ts +1 -1
  2. package/editing/resource-editor-base.d.ts +1 -1
  3. package/editing-directives/editing-directive-base.d.ts +1 -1
  4. package/fesm2022/progress-kendo-angular-scheduler.mjs +313 -313
  5. package/localization/messages.d.ts +1 -1
  6. package/package.json +20 -28
  7. package/schematics/ngAdd/index.js +3 -3
  8. package/views/common/base-view.d.ts +1 -1
  9. package/views/common/configuration-view-base.d.ts +1 -1
  10. package/views/day-time/day-time-view-base.d.ts +1 -1
  11. package/views/day-time/day-time-view.component.d.ts +1 -1
  12. package/views/multi-day/multi-day-view-base.d.ts +1 -1
  13. package/views/timeline/timeline-base.d.ts +1 -1
  14. package/views/view-items/base-slot.directive.d.ts +1 -1
  15. package/views/view-items/base-view-item.d.ts +1 -1
  16. package/esm2022/common/constants.mjs +0 -8
  17. package/esm2022/common/default-model-fields.mjs +0 -20
  18. package/esm2022/common/dom-queries.mjs +0 -107
  19. package/esm2022/common/modifiers.mjs +0 -31
  20. package/esm2022/common/util.mjs +0 -227
  21. package/esm2022/data-binding.directive.mjs +0 -162
  22. package/esm2022/directives.mjs +0 -136
  23. package/esm2022/editing/date-time-picker.component.mjs +0 -190
  24. package/esm2022/editing/dialogs.service.mjs +0 -96
  25. package/esm2022/editing/edit-dialog-template.directive.mjs +0 -53
  26. package/esm2022/editing/edit-dialog.component.mjs +0 -679
  27. package/esm2022/editing/edit.service.mjs +0 -107
  28. package/esm2022/editing/local-data-changes.service.mjs +0 -18
  29. package/esm2022/editing/recurrence/end-rule-radio-button.directive.mjs +0 -77
  30. package/esm2022/editing/recurrence/localization/custom-messages.component.mjs +0 -44
  31. package/esm2022/editing/recurrence/localization/localized-messages.directive.mjs +0 -39
  32. package/esm2022/editing/recurrence/localization/messages.mjs +0 -239
  33. package/esm2022/editing/recurrence/localization/recurrence-localization.service.mjs +0 -47
  34. package/esm2022/editing/recurrence/recurrence-editor.component.mjs +0 -497
  35. package/esm2022/editing/recurrence/recurrence-end-rule-editor.component.mjs +0 -334
  36. package/esm2022/editing/recurrence/recurrence-frequency-editor.component.mjs +0 -105
  37. package/esm2022/editing/recurrence/recurrence-interval-editor.component.mjs +0 -169
  38. package/esm2022/editing/recurrence/recurrence-monthly-yearly-editor.component.mjs +0 -468
  39. package/esm2022/editing/recurrence/recurrence-weekday-rule-editor.component.mjs +0 -138
  40. package/esm2022/editing/recurrence/recurrence.service.mjs +0 -254
  41. package/esm2022/editing/recurrence/repeat-on-radio-button.directive.mjs +0 -81
  42. package/esm2022/editing/resource-editor-base.mjs +0 -59
  43. package/esm2022/editing/resource-multiple-editor.component.mjs +0 -101
  44. package/esm2022/editing/resource-single-editor.component.mjs +0 -82
  45. package/esm2022/editing/timezone-editor.component.mjs +0 -193
  46. package/esm2022/editing-directives/base-edit.service.mjs +0 -320
  47. package/esm2022/editing-directives/edit-service.interface.mjs +0 -5
  48. package/esm2022/editing-directives/editing-directive-base.mjs +0 -242
  49. package/esm2022/editing-directives/local-edit.service.mjs +0 -122
  50. package/esm2022/editing-directives/reactive-editing.directive.mjs +0 -132
  51. package/esm2022/editing-directives/utils.mjs +0 -107
  52. package/esm2022/events/add-event.mjs +0 -26
  53. package/esm2022/events/cancel-event.mjs +0 -14
  54. package/esm2022/events/create-event.mjs +0 -40
  55. package/esm2022/events/date-change-event.mjs +0 -29
  56. package/esm2022/events/drag-end-event.mjs +0 -46
  57. package/esm2022/events/drag-event.mjs +0 -54
  58. package/esm2022/events/drag-start-event.mjs +0 -30
  59. package/esm2022/events/edit-event-base.mjs +0 -32
  60. package/esm2022/events/edit-event.mjs +0 -30
  61. package/esm2022/events/event-click-event.mjs +0 -32
  62. package/esm2022/events/event-keydown-event.mjs +0 -28
  63. package/esm2022/events/more-events-click.mjs +0 -24
  64. package/esm2022/events/navigate-event.mjs +0 -26
  65. package/esm2022/events/preventable-event.mjs +0 -28
  66. package/esm2022/events/remove-event.mjs +0 -30
  67. package/esm2022/events/resize-end-event.mjs +0 -38
  68. package/esm2022/events/resize-event.mjs +0 -46
  69. package/esm2022/events/resize-start-event.mjs +0 -30
  70. package/esm2022/events/save-event.mjs +0 -18
  71. package/esm2022/events/slot-click-event.mjs +0 -44
  72. package/esm2022/events/slot-drag-end-event.mjs +0 -10
  73. package/esm2022/events/slot-drag-event.mjs +0 -40
  74. package/esm2022/events/slot-drag-start-event.mjs +0 -44
  75. package/esm2022/events/view-event-map.mjs +0 -35
  76. package/esm2022/events.mjs +0 -27
  77. package/esm2022/index.mjs +0 -83
  78. package/esm2022/loading.component.mjs +0 -52
  79. package/esm2022/localization/custom-messages.component.mjs +0 -56
  80. package/esm2022/localization/localized-messages.directive.mjs +0 -39
  81. package/esm2022/localization/messages.mjs +0 -614
  82. package/esm2022/localization/scheduler-localization.service.mjs +0 -31
  83. package/esm2022/navigation/focus-position.interface.mjs +0 -5
  84. package/esm2022/navigation/focus.service.mjs +0 -202
  85. package/esm2022/navigation/focusable-element.interface.mjs +0 -5
  86. package/esm2022/navigation/focusable.directive.mjs +0 -98
  87. package/esm2022/navigation/shortcuts.directive.mjs +0 -239
  88. package/esm2022/navigation.mjs +0 -6
  89. package/esm2022/package-metadata.mjs +0 -16
  90. package/esm2022/pdf/pdf-command.directive.mjs +0 -96
  91. package/esm2022/pdf/pdf-export-event.mjs +0 -10
  92. package/esm2022/pdf/pdf.component.mjs +0 -241
  93. package/esm2022/pdf/pdf.module.mjs +0 -42
  94. package/esm2022/pdf/pdf.service.mjs +0 -36
  95. package/esm2022/progress-kendo-angular-scheduler.mjs +0 -8
  96. package/esm2022/scheduler.component.mjs +0 -1981
  97. package/esm2022/scheduler.module.mjs +0 -138
  98. package/esm2022/toolbar/navigation.component.mjs +0 -391
  99. package/esm2022/toolbar/toolbar-context.mjs +0 -5
  100. package/esm2022/toolbar/toolbar-template.directive.mjs +0 -50
  101. package/esm2022/toolbar/toolbar.component.mjs +0 -168
  102. package/esm2022/toolbar/toolbar.service.mjs +0 -46
  103. package/esm2022/toolbar/view-selector.component.mjs +0 -181
  104. package/esm2022/types/actions.mjs +0 -5
  105. package/esm2022/types/create-form-group-args.interface.mjs +0 -5
  106. package/esm2022/types/crud-operation.enum.mjs +0 -18
  107. package/esm2022/types/current-time-settings.interface.mjs +0 -5
  108. package/esm2022/types/date-range.interface.mjs +0 -5
  109. package/esm2022/types/datepicker-options.interface.mjs +0 -5
  110. package/esm2022/types/edit-event-args.interface.mjs +0 -5
  111. package/esm2022/types/edit-mode.enum.mjs +0 -23
  112. package/esm2022/types/editable-settings.interface.mjs +0 -5
  113. package/esm2022/types/event-style-args.interface.mjs +0 -5
  114. package/esm2022/types/focusable-container.mjs +0 -5
  115. package/esm2022/types/group.interface.mjs +0 -5
  116. package/esm2022/types/numeric-options.interface.mjs +0 -5
  117. package/esm2022/types/ongoing-events-settings.interface.mjs +0 -5
  118. package/esm2022/types/resource.interface.mjs +0 -5
  119. package/esm2022/types/scheduler-event.mjs +0 -5
  120. package/esm2022/types/scheduler-model-fields.interface.mjs +0 -5
  121. package/esm2022/types/scheduler-slot.interface.mjs +0 -5
  122. package/esm2022/types/scheduler-view.mjs +0 -9
  123. package/esm2022/types/slot-class-args.interface.mjs +0 -5
  124. package/esm2022/types/slot-selection.mjs +0 -35
  125. package/esm2022/types/view-item.interface.mjs +0 -5
  126. package/esm2022/types.mjs +0 -12
  127. package/esm2022/views/agenda/agenda-header-item.component.mjs +0 -85
  128. package/esm2022/views/agenda/agenda-header.component.mjs +0 -75
  129. package/esm2022/views/agenda/agenda-task-item.component.mjs +0 -137
  130. package/esm2022/views/agenda/agenda-view-internal.component.mjs +0 -424
  131. package/esm2022/views/agenda/agenda-view-list.component.mjs +0 -256
  132. package/esm2022/views/agenda/agenda-view.component.mjs +0 -130
  133. package/esm2022/views/agenda/tasks.collection.mjs +0 -96
  134. package/esm2022/views/agenda/utils.mjs +0 -176
  135. package/esm2022/views/common/base-view.mjs +0 -1099
  136. package/esm2022/views/common/configuration-view-base.mjs +0 -164
  137. package/esm2022/views/common/dom-events.service.mjs +0 -22
  138. package/esm2022/views/common/hint-container.component.mjs +0 -41
  139. package/esm2022/views/common/repeat.pipe.mjs +0 -36
  140. package/esm2022/views/common/resize-hint.component.mjs +0 -97
  141. package/esm2022/views/common/resource-iterator.pipe.mjs +0 -49
  142. package/esm2022/views/common/scheduler-task.mjs +0 -5
  143. package/esm2022/views/common/slot-selectable.directive.mjs +0 -137
  144. package/esm2022/views/common/view-footer.component.mjs +0 -103
  145. package/esm2022/views/common/work-hours-footer.directive.mjs +0 -45
  146. package/esm2022/views/constants.mjs +0 -31
  147. package/esm2022/views/day-time/day-time-slot.service.mjs +0 -633
  148. package/esm2022/views/day-time/day-time-view-base.mjs +0 -244
  149. package/esm2022/views/day-time/day-time-view-item.component.mjs +0 -216
  150. package/esm2022/views/day-time/day-time-view.component.mjs +0 -437
  151. package/esm2022/views/day-time/event-slot.directive.mjs +0 -138
  152. package/esm2022/views/day-time/utils.mjs +0 -32
  153. package/esm2022/views/month/month-slot.component.mjs +0 -166
  154. package/esm2022/views/month/month-slot.service.mjs +0 -404
  155. package/esm2022/views/month/month-view-item.component.mjs +0 -161
  156. package/esm2022/views/month/month-view-renderer.component.mjs +0 -683
  157. package/esm2022/views/month/month-view.component.mjs +0 -203
  158. package/esm2022/views/month/multi-week-view.component.mjs +0 -202
  159. package/esm2022/views/month/utils.mjs +0 -107
  160. package/esm2022/views/multi-day/day-view.component.mjs +0 -186
  161. package/esm2022/views/multi-day/multi-day-view-base.mjs +0 -55
  162. package/esm2022/views/multi-day/multi-day-view-renderer.component.mjs +0 -1002
  163. package/esm2022/views/multi-day/multi-day-view.component.mjs +0 -197
  164. package/esm2022/views/multi-day/utils.mjs +0 -63
  165. package/esm2022/views/multi-day/week-view.component.mjs +0 -189
  166. package/esm2022/views/multi-day/work-week-view.component.mjs +0 -172
  167. package/esm2022/views/scheduler-view.directive.mjs +0 -65
  168. package/esm2022/views/templates/agenda-date-template.directive.mjs +0 -41
  169. package/esm2022/views/templates/agenda-time-template.directive.mjs +0 -46
  170. package/esm2022/views/templates/all-day-event-template.directive.mjs +0 -42
  171. package/esm2022/views/templates/all-day-slot-template.directive.mjs +0 -42
  172. package/esm2022/views/templates/date-header-template.directive.mjs +0 -42
  173. package/esm2022/views/templates/event-template.directive.mjs +0 -42
  174. package/esm2022/views/templates/group-header-template.directive.mjs +0 -42
  175. package/esm2022/views/templates/major-time-header-template.directive.mjs +0 -41
  176. package/esm2022/views/templates/minor-time-header-template.directive.mjs +0 -41
  177. package/esm2022/views/templates/month-day-slot-template.directive.mjs +0 -42
  178. package/esm2022/views/templates/multi-week-day-slot-template.directive.mjs +0 -42
  179. package/esm2022/views/templates/time-slot-template.directive.mjs +0 -43
  180. package/esm2022/views/templates.mjs +0 -16
  181. package/esm2022/views/timeline/timeline-base.mjs +0 -39
  182. package/esm2022/views/timeline/timeline-month-view.component.mjs +0 -211
  183. package/esm2022/views/timeline/timeline-multi-day-view.component.mjs +0 -649
  184. package/esm2022/views/timeline/timeline-view.component.mjs +0 -189
  185. package/esm2022/views/timeline/timeline-week-view.component.mjs +0 -181
  186. package/esm2022/views/timeline/utils.mjs +0 -60
  187. package/esm2022/views/utils.mjs +0 -373
  188. package/esm2022/views/view-context.service.mjs +0 -111
  189. package/esm2022/views/view-items/base-slot.directive.mjs +0 -104
  190. package/esm2022/views/view-items/base-slot.service.mjs +0 -82
  191. package/esm2022/views/view-items/base-view-item.mjs +0 -194
  192. package/esm2022/views/view-items/item-map.mjs +0 -38
  193. package/esm2022/views/view-items/types.mjs +0 -5
  194. package/esm2022/views/view-state.service.mjs +0 -144
  195. package/esm2022/views/year/utils.mjs +0 -60
  196. package/esm2022/views/year/year-view-internal.component.mjs +0 -471
  197. package/esm2022/views/year/year-view.component.mjs +0 -136
@@ -1,1002 +0,0 @@
1
- /**-----------------------------------------------------------------------------------------
2
- * Copyright © 2026 Progress Software Corporation. All rights reserved.
3
- * Licensed under commercial license. See LICENSE.md in the project root for more information
4
- *-------------------------------------------------------------------------------------------*/
5
- import { Component, Input, NgZone, ViewChild, ViewChildren, QueryList, ElementRef, Renderer2, TemplateRef, ChangeDetectorRef } from '@angular/core';
6
- import { IntlService, DatePipe } from '@progress/kendo-angular-intl';
7
- import { LocalizationService } from '@progress/kendo-angular-l10n';
8
- import { anyChanged, isChanged, ScrollbarWidthService } from '@progress/kendo-angular-common';
9
- import { BehaviorSubject } from 'rxjs';
10
- import { ViewContextService } from '../view-context.service';
11
- import { ViewStateService } from '../view-state.service';
12
- import { DayTimeSlotService } from '../day-time/day-time-slot.service';
13
- import { createTasks, isMultiDay } from './utils';
14
- import { DayTimeViewComponent } from '../day-time/day-time-view.component';
15
- import { HintContainerComponent } from '../common/hint-container.component';
16
- import { toPx, dateWithTime, elementOffset, toUTCTime, toUTCDate, allDaysHidden } from '../utils';
17
- import { PDFService } from '../../pdf/pdf.service';
18
- import { ResourceIteratorPipe } from '../common/resource-iterator.pipe';
19
- import { ResizeHintComponent } from '../common/resize-hint.component';
20
- import { FocusableDirective } from '../../navigation/focusable.directive';
21
- import { DayTimeViewItemComponent } from '../day-time/day-time-view-item.component';
22
- import { DaySlotDirective, TimeSlotDirective } from '../day-time/event-slot.directive';
23
- import { NgClass, NgTemplateOutlet, NgStyle, AsyncPipe } from '@angular/common';
24
- import * as i0 from "@angular/core";
25
- import * as i1 from "@progress/kendo-angular-l10n";
26
- import * as i2 from "../view-context.service";
27
- import * as i3 from "../view-state.service";
28
- import * as i4 from "@progress/kendo-angular-intl";
29
- import * as i5 from "../day-time/day-time-slot.service";
30
- import * as i6 from "../../pdf/pdf.service";
31
- import * as i7 from "@progress/kendo-angular-common";
32
- /**
33
- * @hidden
34
- */
35
- export class MultiDayViewRendererComponent extends DayTimeViewComponent {
36
- hiddenDays;
37
- allDaySlot;
38
- name = 'day';
39
- slotFill;
40
- allDaySlotTemplate;
41
- allDayEventTemplate;
42
- dayCells;
43
- headerHintContainer;
44
- dateFormat = { skeleton: 'MEd' };
45
- allDayResizeHintFormat = { skeleton: 'Md' };
46
- allDayItems = new BehaviorSubject(null);
47
- get allDaySlotTemplateRef() {
48
- return this.allDaySlotTemplate || (this.schedulerAllDaySlotTemplate || {}).templateRef;
49
- }
50
- get allDayEventTemplateRef() {
51
- return this.allDayEventTemplate || (this.schedulerAllDayEventTemplate || {}).templateRef;
52
- }
53
- get allDayMessage() {
54
- return this.localization.get('allDay');
55
- }
56
- get allDayResizeHint() {
57
- return this.resizing && this.resizing.task.isAllDay;
58
- }
59
- get allDayDragHint() {
60
- return this.dragging && this.dragging.slot.isDaySlot;
61
- }
62
- schedulerAllDaySlotTemplate;
63
- schedulerAllDayEventTemplate;
64
- dragContainers;
65
- constructor(localization, viewContext, viewState, intl, slotService, zone, renderer, element, changeDetector, pdfService, scrollbarWidthService) {
66
- super(changeDetector, viewContext, viewState, intl, slotService, zone, renderer, element, pdfService, localization, scrollbarWidthService);
67
- }
68
- optionsChange(changes) {
69
- this.schedulerAllDaySlotTemplate = changes.allDaySlotTemplate;
70
- this.schedulerAllDayEventTemplate = changes.allDayEventTemplate;
71
- super.optionsChange(changes);
72
- }
73
- ngOnChanges(changes) {
74
- super.ngOnChanges(changes);
75
- if (changes.slotFill) {
76
- this.changes.next(null);
77
- }
78
- if (changes.hiddenDays) {
79
- this.slotService.hiddenDays = this.hiddenDays || [];
80
- }
81
- if (anyChanged(['startTime', 'endTime', 'showWorkHours', 'workDayStart',
82
- 'workDayEnd', 'workWeekStart', 'workWeekEnd', 'allDaySlot'], changes)) {
83
- this.viewRangeChange.next(null);
84
- }
85
- if (isChanged('numberOfDays', changes, true /* skipFirstChange */) ||
86
- isChanged('weekStart', changes) ||
87
- isChanged('hiddenDays', changes)) {
88
- this.daySlots = this.createDaySlots();
89
- this.viewState.notifyDateRange(this.dateRange());
90
- }
91
- }
92
- horizontalColspan(resourceIndex) {
93
- const resources = this.horizontalResources;
94
- let result = this.daySlots.length;
95
- for (let idx = resourceIndex + 1; idx < resources.length; idx++) {
96
- result *= (resources[idx].data || []).length || 1;
97
- }
98
- return result;
99
- }
100
- verticalRowspan(resourceIndex) {
101
- const resources = this.verticalResources;
102
- let result = this.timeSlots.length + 1;
103
- for (let idx = resourceIndex + 1; idx < resources.length; idx++) {
104
- result *= (resources[idx].data || []).length || 1;
105
- }
106
- return result;
107
- }
108
- allDaySlotClass(slot, resourceIndex) {
109
- if (this.slotClass) {
110
- return this.slotClass({
111
- start: slot.start,
112
- end: slot.end,
113
- resources: this.resourcesByIndex(resourceIndex),
114
- isAllDay: true
115
- });
116
- }
117
- }
118
- isMiddleSlot(index) {
119
- return index + 1 < this.timeSlots.length && !this.timeSlots[index + 1].isMajor;
120
- }
121
- createTasks(items, dateRange) {
122
- const startTimeSlot = this.timeSlots[0];
123
- const endTimeSlot = this.timeSlots[this.timeSlots.length - 1].end;
124
- const nextDateEnd = !(endTimeSlot.getHours() || endTimeSlot.getMinutes());
125
- const ranges = this.daySlots.map(daySlot => ({
126
- start: toUTCTime(daySlot.start, startTimeSlot.start),
127
- end: nextDateEnd ? toUTCDate(daySlot.end) : toUTCTime(daySlot.start, endTimeSlot)
128
- }));
129
- return createTasks(dateRange.start, dateRange.end, items, ranges, this.hiddenDays || []);
130
- }
131
- onTasksChange() {
132
- this.items.next(this.tasks.filter(task => !task.isAllDay));
133
- this.allDayItems.next(this.tasks.filter(task => task.isAllDay));
134
- }
135
- reflow() {
136
- if (allDaysHidden(this.hiddenDays)) {
137
- return;
138
- }
139
- const slotService = this.slotService;
140
- if (!this.verticalResources.length) {
141
- this.updateContentHeight();
142
- this.syncTables();
143
- }
144
- this.slotService.containerSize = this.content.nativeElement.clientWidth;
145
- slotService.layoutDays(this.eventHeight);
146
- this.updateContentHeight();
147
- this.syncTables();
148
- if (this.dayCells.length) {
149
- const cells = this.dayCells.toArray();
150
- if (this.verticalResources.length) {
151
- slotService.forEachDateRange((range, index) => {
152
- const slot = range.firstSlot;
153
- cells[index].nativeElement.style.height = `${slot.rect.height - slot.padding}px`;
154
- });
155
- }
156
- else {
157
- const size = slotService.syncDateRanges();
158
- cells[0].nativeElement.style.height = `${size}px`;
159
- }
160
- }
161
- slotService.layoutTimes({ fill: this.slotFill });
162
- this.syncTables();
163
- }
164
- dragHorizontal(slot) {
165
- return slot.isDaySlot;
166
- }
167
- updateHintContainer() {
168
- if (this.headerHintContainer) {
169
- this.headerHintContainer.detectChanges();
170
- }
171
- super.updateHintContainer();
172
- }
173
- onRelease(args) {
174
- super.onRelease(args);
175
- this.dragContainers = null;
176
- }
177
- updateDragContainer(args) {
178
- if (!this.dragContainers) {
179
- this.dragContainers = this.containers;
180
- }
181
- const container = this.dragContainers.find(c => {
182
- const offset = c.offset;
183
- return offset.top <= args.pageY && args.pageY <= offset.top + offset.height;
184
- }) || {};
185
- this.container = container.element;
186
- this.containerOffset = container.offset;
187
- }
188
- containerByPosition({ x, y }) {
189
- return this.containers.find(c => {
190
- const offset = c.offset;
191
- return offset.top <= y && y <= offset.top + offset.height && offset.left <= x && x <= offset.left + offset.width;
192
- });
193
- }
194
- get containers() {
195
- const header = this.headerWrap.nativeElement.children[1];
196
- const content = this.content.nativeElement;
197
- return [{
198
- element: content,
199
- offset: elementOffset(content)
200
- }, {
201
- element: header,
202
- offset: elementOffset(header)
203
- }];
204
- }
205
- scrollContainer(callback, args) {
206
- clearInterval(this.scrollInterval);
207
- if (this.container && this.container === this.content.nativeElement) {
208
- super.scrollContainer(callback, args);
209
- }
210
- }
211
- dragRanges(slot) {
212
- const task = this.dragging.task;
213
- if (slot.isDaySlot && !task.isAllDay) {
214
- return {
215
- ranges: [[slot]],
216
- start: dateWithTime(slot.start, task.start.toUTCDate()),
217
- end: dateWithTime(slot.start, task.end.toUTCDate()),
218
- isAllDay: true
219
- };
220
- }
221
- const allDayToTime = task.isAllDay && !slot.isDaySlot;
222
- const result = this.slotService.dragRanges(slot, allDayToTime ? { start: 0, end: 0 } : this.dragging.offset);
223
- if (allDayToTime) {
224
- result.end = slot.end;
225
- }
226
- result.isAllDay = this.draggedIsAllDay(task, slot);
227
- return result;
228
- }
229
- dragHintEventStyleArgs() {
230
- return {
231
- event: this.dragging.task.event,
232
- resources: this.dragging.resourceItems,
233
- isAllDay: Boolean(this.allDayDragHint)
234
- };
235
- }
236
- draggedIsAllDay(task, slot) {
237
- return Boolean(slot.isDaySlot && (task.event.isAllDay || !isMultiDay(task)));
238
- }
239
- dragHintSize(firstSlot, lastSlot) {
240
- let width, height;
241
- if (firstSlot.isDaySlot) {
242
- width = toPx(lastSlot.rect.left - firstSlot.rect.left + lastSlot.rect.width);
243
- height = toPx(firstSlot.height);
244
- }
245
- else {
246
- width = toPx(firstSlot.rect.width * 0.9);
247
- height = toPx(this.dragging.task.isAllDay ? firstSlot.rect.height : lastSlot.rect.top - firstSlot.rect.top + lastSlot.rect.height);
248
- }
249
- return { width, height };
250
- }
251
- currentTimeArrowOffset() {
252
- if (this.verticalResources.length) {
253
- const el = this.times.nativeElement.querySelector('.k-scheduler-times-all-day');
254
- const timesEl = this.times.nativeElement;
255
- return this.localization.rtl ? timesEl.offsetWidth - el.offsetWidth : el.offsetLeft;
256
- }
257
- return 0;
258
- }
259
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MultiDayViewRendererComponent, deps: [{ token: i1.LocalizationService }, { token: i2.ViewContextService }, { token: i3.ViewStateService }, { token: i4.IntlService }, { token: i5.DayTimeSlotService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i6.PDFService }, { token: i7.ScrollbarWidthService }], target: i0.ɵɵFactoryTarget.Component });
260
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: MultiDayViewRendererComponent, isStandalone: true, selector: "multi-day-view", inputs: { hiddenDays: "hiddenDays", allDaySlot: "allDaySlot", name: "name", slotFill: "slotFill", allDaySlotTemplate: "allDaySlotTemplate", allDayEventTemplate: "allDayEventTemplate" }, providers: [
261
- DayTimeSlotService
262
- ], viewQueries: [{ propertyName: "headerHintContainer", first: true, predicate: ["headerHintContainer"], descendants: true }, { propertyName: "dayCells", predicate: ["allDayCell"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
263
- <table class="k-scheduler-layout" role="presentation" [ngClass]="classNames">
264
- <tbody>
265
- <tr class="k-scheduler-head">
266
- <td>
267
- <div class="k-scheduler-times" #timesHeader>
268
- <table class="k-scheduler-table" aria-hidden="true">
269
- <tbody>
270
- @for (resource of horizontalResources; track itemIndex($index, resource)) {
271
- <tr>
272
- <th class="k-scheduler-cell k-heading-cell"></th>
273
- </tr>
274
- }
275
- <tr [style.height]="'auto'">
276
- <th class="k-scheduler-cell k-heading-cell"></th>
277
- </tr>
278
- @if (allDaySlot && !verticalResources.length) {
279
- <tr>
280
- <th class="k-scheduler-times-all-day k-scheduler-cell k-heading-cell" #allDayCell>{{ allDayMessage }}</th>
281
- </tr>
282
- }
283
- </tbody>
284
- </table>
285
- </div>
286
- </td>
287
- <td>
288
- <div class="k-scheduler-header" #header>
289
- <div class="k-scheduler-header-wrap" #headerWrap>
290
- <table class="k-scheduler-table" aria-hidden="true">
291
- <tbody>
292
- @for (resource of horizontalResources; track itemIndex(resourceIndex, resource); let resourceIndex = $index) {
293
- <tr>
294
- @for (item of horizontalResources | resourceIterator : resourceIndex; track itemIndex($index, item)) {
295
- <th
296
- class="k-scheduler-cell k-heading-cell" [attr.colspan]="horizontalColspan(resourceIndex)">
297
- @if (!groupHeaderTemplateRef) {
298
- {{ getField(item, resource.textField) }}
299
- }
300
- @if (groupHeaderTemplateRef) {
301
- <ng-container [ngTemplateOutlet]="groupHeaderTemplateRef" [ngTemplateOutletContext]="{ resource: item }"></ng-container>
302
- }
303
- </th>
304
- }
305
- </tr>
306
- }
307
- <tr class="k-scheduler-date-group">
308
- @for (resource of horizontalResources | resourceIterator; track itemIndex($index, resource)) {
309
- @for (slot of daySlots; track itemIndex(index, slot); let index = $index) {
310
- <th class="k-scheduler-cell k-heading-cell">
311
- @if (!dateHeaderTemplateRef) {
312
- <span class="k-link k-nav-day" [attr.data-dayslot-index]="index">{{ slot.start | kendoDate: dateFormat }}</span>
313
- }
314
- @if (dateHeaderTemplateRef) {
315
- <ng-container [ngTemplateOutlet]="dateHeaderTemplateRef" [ngTemplateOutletContext]="{ date: slot.start }"></ng-container>
316
- }
317
- </th>
318
- }
319
- }
320
- </tr>
321
- </tbody>
322
- </table>
323
- @if (allDaySlot && !verticalResources.length) {
324
- <div [style.position]="'relative'">
325
- <table class="k-scheduler-table k-scheduler-header-all-day" aria-hidden="true">
326
- <tbody>
327
- <tr>
328
- @for (resource of horizontalResources | resourceIterator; track itemIndex(resourceIndex, resource); let resourceIndex = $index) {
329
- @for (slot of daySlots; track itemIndex(index, slot); let index = $index) {
330
- <td
331
- daySlot
332
- [start]="slot.start"
333
- [end]="slot.end"
334
- [id]="{ resourceIndex: resourceIndex, rangeIndex: 0, index: index }"
335
- [class.k-selected]="isSlotSelected({
336
- start: toPlainDate(slot.start),
337
- end: toPlainDate(slot.end),
338
- isAllDay: true,
339
- resources: resourcesByIndex(resourceIndex)
340
- })"
341
- [ngClass]="allDaySlotClass(slot, resourceIndex)"
342
- class="k-scheduler-cell">
343
- @if (allDaySlotTemplateRef) {
344
- <ng-container [ngTemplateOutlet]="allDaySlotTemplateRef"
345
- [ngTemplateOutletContext]="{ date: slot.start, resources: resourcesByIndex(resourceIndex) }"></ng-container>
346
- }
347
- </td>
348
- }
349
- }
350
- </tr>
351
- </tbody>
352
- </table>
353
- @for (item of allDayItems | async; track itemIndex($index, item)) {
354
- @for (itemResource of item.resources; track itemIndex($index, itemResource)) {
355
- <div
356
- [ngClass]="getEventClasses(item, itemResource.resources, true)"
357
- [ngStyle]="getEventStyles(item, itemResource, true)"
358
- role="button"
359
- [kendoSchedulerFocusIndex]="itemResource.leafIdx"
360
- [id]="item.elementId + '_' + itemResource.leafIdx"
361
- dayTimeViewItem
362
- [name]="name"
363
- [isAllDay]="true"
364
- [editable]="editable"
365
- [eventTemplate]="allDayEventTemplateRef"
366
- [item]="item"
367
- [index]="item.index"
368
- [rangeIndex]="item.rangeIndex"
369
- [resources]="itemResource.resources"
370
- [resourceIndex]="itemResource.leafIdx">
371
- </div>
372
- }
373
- }
374
- <kendo-hint-container #headerHintContainer>
375
- <ng-template>
376
- @if (dragHints.length && allDayDragHint) {
377
- <div
378
- class="k-event-drag-hint"
379
- dayTimeViewItem
380
- [isAllDay]="true"
381
- [ngStyle]="dragHints[0].style"
382
- [ngClass]="dragHints[0].class"
383
- [dragHint]="true"
384
- [eventTemplate]="eventTemplateRef"
385
- [item]="dragHints[0].item"
386
- [resources]="dragHints[0].resources">
387
- </div>
388
- }
389
- @if (resizeHints.length && allDayResizeHint) {
390
- <div
391
- kendoResizeHint
392
- [hint]="resizeHints[0]"
393
- [ngClass]="resizeHints[0].class"
394
- [format]="allDayResizeHintFormat">
395
- </div>
396
- }
397
- </ng-template>
398
- </kendo-hint-container>
399
- </div>
400
- }
401
- </div>
402
- </div>
403
- </td>
404
- </tr>
405
- <tr class="k-scheduler-body">
406
- <td>
407
- <div class="k-scheduler-times" #times>
408
- @if (showCurrentTime) {
409
- @for (resource of verticalResources | resourceIterator; track itemIndex($index, resource)) {
410
- <div
411
- #currentTimeArrow class="k-current-time k-current-time-arrow-right">
412
- </div>
413
- }
414
- }
415
- <table class="k-scheduler-table" #timesTable aria-hidden="true">
416
- <tbody>
417
- @for (resourceItem of verticalResources | resourceIterator; track itemIndex(leafIndex, resourceItem); let leafIndex = $index) {
418
- @if (verticalResources.length) {
419
- <tr>
420
- @for (resource of verticalResources; track itemIndex(resourceIndex, resource); let resourceIndex = $index) {
421
- @if (verticalItem(leafIndex, resourceIndex)) {
422
- <th [attr.rowspan]="verticalRowspan(resourceIndex)" class="k-scheduler-cell k-slot-cell k-heading-cell">
423
- @if (!groupHeaderTemplateRef) {
424
- {{ getField(verticalItem(leafIndex, resourceIndex), resource.textField) }}
425
- }
426
- @if (groupHeaderTemplateRef) {
427
- <ng-container [ngTemplateOutlet]="groupHeaderTemplateRef"
428
- [ngTemplateOutletContext]="{ resource: verticalItem(leafIndex, resourceIndex) }"></ng-container>
429
- }
430
- </th>
431
- }
432
- }
433
- @if (allDaySlot) {
434
- <th class="k-scheduler-times-all-day k-scheduler-cell k-heading-cell" #allDayCell>{{ allDayMessage }}</th>
435
- }
436
- </tr>
437
- }
438
- @for (slot of timeSlots; track itemIndex(timeSlotIndex, slot); let timeSlotIndex = $index) {
439
- <tr>
440
- @if (slot.isMajor) {
441
- <th [ngClass]="{ 'k-slot-cell': slotDivisions === 1 }" class="k-scheduler-cell k-heading-cell">
442
- @if (!majorTimeHeaderTemplateRef) {
443
- {{ slot.start | kendoDate: 't' }}
444
- }
445
- @if (majorTimeHeaderTemplateRef) {
446
- <ng-container [ngTemplateOutlet]="majorTimeHeaderTemplateRef" [ngTemplateOutletContext]="{ date: slot.start }"></ng-container>
447
- }
448
- </th>
449
- }
450
- @if (!slot.isMajor) {
451
- <th [ngClass]="{ 'k-slot-cell': timeSlotIndex % slotDivisions === slotDivisions - 1 }" class="k-scheduler-cell k-heading-cell">
452
- @if (minorTimeHeaderTemplateRef) {
453
- <ng-container [ngTemplateOutlet]="minorTimeHeaderTemplateRef" [ngTemplateOutletContext]="{ date: slot.start }">
454
- </ng-container>
455
- }
456
- </th>
457
- }
458
- </tr>
459
- }
460
- }
461
- </tbody>
462
- </table>
463
- </div>
464
- </td>
465
- <td>
466
- <div
467
- class="k-scheduler-content"
468
- #content
469
- role="group"
470
- tabindex="0"
471
- [attr.aria-owns]="matchOwned(items | async)">
472
- @if (showCurrentTime) {
473
- @for (resource of verticalResources | resourceIterator; track itemIndex($index, resource)) {
474
- <div
475
- #currentTimeMarker class="k-current-time">
476
- </div>
477
- }
478
- }
479
- <table class="k-scheduler-table" #contentTable role="presentation">
480
- <tbody>
481
- @for (resourceItem of verticalResources | resourceIterator; track itemIndex(verticalIndex, resourceItem); let verticalIndex = $index) {
482
- @if (allDaySlot && verticalResources.length) {
483
- <tr class="k-scheduler-header-all-day">
484
- @for (slot of daySlots; track itemIndex(index, slot); let index = $index) {
485
- <td
486
- daySlot
487
- [start]="slot.start"
488
- [end]="slot.end"
489
- [class.k-selected]="isSlotSelected({
490
- start: toPlainDate(slot.start),
491
- end: toPlainDate(slot.end),
492
- isAllDay: true,
493
- resources: resourcesByIndex(verticalIndex)
494
- })"
495
- [id]="{ resourceIndex: verticalIndex, rangeIndex: 0, index: index }">
496
- @if (allDaySlotTemplateRef) {
497
- <ng-container [ngTemplateOutlet]="allDaySlotTemplateRef"
498
- [ngTemplateOutletContext]="{ date: slot.start, resources: resourcesByIndex(verticalIndex) }"></ng-container>
499
- }
500
- </td>
501
- }
502
- </tr>
503
- }
504
- @for (slot of timeSlots; track itemIndex(index, slot); let index = $index) {
505
- <tr [class.k-middle-row]="isMiddleSlot(index)">
506
- @for (resource of horizontalResources | resourceIterator; track itemIndex(horizontalIndex, resource); let horizontalIndex = $index) {
507
- @for (daySlot of daySlots; track itemIndex(rangeIndex, daySlot); let rangeIndex = $index) {
508
- <td
509
- [ngClass]="timeSlotClass(slot, daySlot.start, verticalResources.length ? verticalIndex : horizontalIndex)"
510
- timeSlot #timeSlot="timeSlot"
511
- [date]="daySlot.start"
512
- [invariantStart]="slot.start"
513
- [invariantEnd]="slot.end"
514
- [workDayStart]="workDayStartTime"
515
- [workDayEnd]="workDayEndTime"
516
- [workWeekStart]="workWeekStart"
517
- [workWeekEnd]="workWeekEnd"
518
- [id]="{ resourceIndex: verticalResources.length ? verticalIndex : horizontalIndex, rangeIndex: rangeIndex, index: index }"
519
- [class.k-selected]="isSlotSelected({
520
- start: toPlainDateTime(daySlot.start, slot.start),
521
- end: toPlainDateTime(daySlot.start, slot.end),
522
- isAllDay: false,
523
- resources: resourcesByIndex(verticalResources.length ? verticalIndex : horizontalIndex)
524
- })"
525
- class="k-scheduler-cell"
526
- >
527
- @if (timeSlotTemplateRef) {
528
- <ng-container [ngTemplateOutlet]="timeSlotTemplateRef"
529
- [ngTemplateOutletContext]="{ date: timeSlot.startLocalTime, resources: resourcesByIndex(timeSlot.id.resourceIndex) }">
530
- </ng-container>
531
- }
532
- </td>
533
- }
534
- }
535
- </tr>
536
- }
537
- }
538
- </tbody>
539
- </table>
540
- @for (item of items | async; track itemIndex($index, item)) {
541
- @for (itemResource of item.resources; track itemIndex($index, itemResource)) {
542
- <div
543
- [ngClass]="getEventClasses(item, itemResource.resources)"
544
- [ngStyle]="getEventStyles(item, itemResource)"
545
- role="button"
546
- [kendoSchedulerFocusIndex]="itemResource.leafIdx"
547
- [id]="item.elementId + '_' + itemResource.leafIdx"
548
- dayTimeViewItem
549
- [editable]="editable"
550
- [vertical]="true"
551
- [eventTemplate]="eventTemplateRef"
552
- [item]="item"
553
- [index]="item.index"
554
- [rangeIndex]="item.rangeIndex"
555
- [resources]="itemResource.resources"
556
- [resourceIndex]="itemResource.leafIdx">
557
- </div>
558
- }
559
- }
560
- @if (verticalResources.length) {
561
- @for (item of allDayItems | async; track itemIndex($index, item)) {
562
- @for (itemResource of item.resources; track itemIndex($index, itemResource)) {
563
- <div
564
- [ngClass]="getEventClasses(item, itemResource.resources, true)"
565
- [ngStyle]="getEventStyles(item, itemResource, true)"
566
- role="button"
567
- [kendoSchedulerFocusIndex]="itemResource.leafIdx"
568
- [id]="item.elementId + '_' + itemResource.leafIdx"
569
- dayTimeViewItem
570
- [isAllDay]="true"
571
- [editable]="editable"
572
- [eventTemplate]="allDayEventTemplateRef"
573
- [item]="item"
574
- [index]="item.index"
575
- [rangeIndex]="item.rangeIndex"
576
- [resources]="itemResource.resources"
577
- [resourceIndex]="itemResource.leafIdx">
578
- </div>
579
- }
580
- }
581
- }
582
- <kendo-hint-container #hintContainer>
583
- <ng-template>
584
- @if (dragHints.length && (!allDayDragHint || verticalResources.length)) {
585
- <div
586
- class="k-event-drag-hint"
587
- role="button"
588
- dayTimeViewItem
589
- [isAllDay]="allDayDragHint"
590
- [ngStyle]="dragHints[0].style"
591
- [ngClass]="dragHints[0].class"
592
- [dragHint]="true"
593
- [eventTemplate]="eventTemplateRef"
594
- [resources]="dragHints[0].resources"
595
- [item]="dragHints[0].item">
596
- </div>
597
- }
598
-
599
- @if (resizeHints.length && (!allDayResizeHint || verticalResources.length)) {
600
- @for (hint of resizeHints; track itemIndex($index, hint)) {
601
- <div
602
- kendoResizeHint
603
- [hint]="hint"
604
- [ngClass]="hint.class"
605
- [format]="allDayResizeHint ? allDayResizeHintFormat : resizeHintFormat">
606
- </div>
607
- }
608
- }
609
- </ng-template>
610
- </kendo-hint-container>
611
- </div>
612
- </td>
613
- </tr>
614
- </tbody>
615
- </table>
616
- `, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: DaySlotDirective, selector: "[daySlot]", inputs: ["start", "end"] }, { kind: "component", type: DayTimeViewItemComponent, selector: "[dayTimeViewItem]", inputs: ["vertical", "isAllDay", "name"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: FocusableDirective, selector: "[kendoSchedulerFocusIndex]", inputs: ["kendoSchedulerFocusIndex", "containerType"] }, { kind: "component", type: HintContainerComponent, selector: "kendo-hint-container" }, { kind: "component", type: ResizeHintComponent, selector: "[kendoResizeHint]", inputs: ["hint", "format"] }, { kind: "directive", type: TimeSlotDirective, selector: "[timeSlot]", inputs: ["invariantStart", "invariantEnd", "workDayStart", "workDayEnd", "workWeekStart", "workWeekEnd", "date"], exportAs: ["timeSlot"] }, { kind: "pipe", type: ResourceIteratorPipe, name: "resourceIterator" }, { kind: "pipe", type: DatePipe, name: "kendoDate" }, { kind: "pipe", type: AsyncPipe, name: "async" }] });
617
- }
618
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MultiDayViewRendererComponent, decorators: [{
619
- type: Component,
620
- args: [{
621
- // eslint-disable-next-line @angular-eslint/component-selector
622
- selector: 'multi-day-view',
623
- providers: [
624
- DayTimeSlotService
625
- ],
626
- template: `
627
- <table class="k-scheduler-layout" role="presentation" [ngClass]="classNames">
628
- <tbody>
629
- <tr class="k-scheduler-head">
630
- <td>
631
- <div class="k-scheduler-times" #timesHeader>
632
- <table class="k-scheduler-table" aria-hidden="true">
633
- <tbody>
634
- @for (resource of horizontalResources; track itemIndex($index, resource)) {
635
- <tr>
636
- <th class="k-scheduler-cell k-heading-cell"></th>
637
- </tr>
638
- }
639
- <tr [style.height]="'auto'">
640
- <th class="k-scheduler-cell k-heading-cell"></th>
641
- </tr>
642
- @if (allDaySlot && !verticalResources.length) {
643
- <tr>
644
- <th class="k-scheduler-times-all-day k-scheduler-cell k-heading-cell" #allDayCell>{{ allDayMessage }}</th>
645
- </tr>
646
- }
647
- </tbody>
648
- </table>
649
- </div>
650
- </td>
651
- <td>
652
- <div class="k-scheduler-header" #header>
653
- <div class="k-scheduler-header-wrap" #headerWrap>
654
- <table class="k-scheduler-table" aria-hidden="true">
655
- <tbody>
656
- @for (resource of horizontalResources; track itemIndex(resourceIndex, resource); let resourceIndex = $index) {
657
- <tr>
658
- @for (item of horizontalResources | resourceIterator : resourceIndex; track itemIndex($index, item)) {
659
- <th
660
- class="k-scheduler-cell k-heading-cell" [attr.colspan]="horizontalColspan(resourceIndex)">
661
- @if (!groupHeaderTemplateRef) {
662
- {{ getField(item, resource.textField) }}
663
- }
664
- @if (groupHeaderTemplateRef) {
665
- <ng-container [ngTemplateOutlet]="groupHeaderTemplateRef" [ngTemplateOutletContext]="{ resource: item }"></ng-container>
666
- }
667
- </th>
668
- }
669
- </tr>
670
- }
671
- <tr class="k-scheduler-date-group">
672
- @for (resource of horizontalResources | resourceIterator; track itemIndex($index, resource)) {
673
- @for (slot of daySlots; track itemIndex(index, slot); let index = $index) {
674
- <th class="k-scheduler-cell k-heading-cell">
675
- @if (!dateHeaderTemplateRef) {
676
- <span class="k-link k-nav-day" [attr.data-dayslot-index]="index">{{ slot.start | kendoDate: dateFormat }}</span>
677
- }
678
- @if (dateHeaderTemplateRef) {
679
- <ng-container [ngTemplateOutlet]="dateHeaderTemplateRef" [ngTemplateOutletContext]="{ date: slot.start }"></ng-container>
680
- }
681
- </th>
682
- }
683
- }
684
- </tr>
685
- </tbody>
686
- </table>
687
- @if (allDaySlot && !verticalResources.length) {
688
- <div [style.position]="'relative'">
689
- <table class="k-scheduler-table k-scheduler-header-all-day" aria-hidden="true">
690
- <tbody>
691
- <tr>
692
- @for (resource of horizontalResources | resourceIterator; track itemIndex(resourceIndex, resource); let resourceIndex = $index) {
693
- @for (slot of daySlots; track itemIndex(index, slot); let index = $index) {
694
- <td
695
- daySlot
696
- [start]="slot.start"
697
- [end]="slot.end"
698
- [id]="{ resourceIndex: resourceIndex, rangeIndex: 0, index: index }"
699
- [class.k-selected]="isSlotSelected({
700
- start: toPlainDate(slot.start),
701
- end: toPlainDate(slot.end),
702
- isAllDay: true,
703
- resources: resourcesByIndex(resourceIndex)
704
- })"
705
- [ngClass]="allDaySlotClass(slot, resourceIndex)"
706
- class="k-scheduler-cell">
707
- @if (allDaySlotTemplateRef) {
708
- <ng-container [ngTemplateOutlet]="allDaySlotTemplateRef"
709
- [ngTemplateOutletContext]="{ date: slot.start, resources: resourcesByIndex(resourceIndex) }"></ng-container>
710
- }
711
- </td>
712
- }
713
- }
714
- </tr>
715
- </tbody>
716
- </table>
717
- @for (item of allDayItems | async; track itemIndex($index, item)) {
718
- @for (itemResource of item.resources; track itemIndex($index, itemResource)) {
719
- <div
720
- [ngClass]="getEventClasses(item, itemResource.resources, true)"
721
- [ngStyle]="getEventStyles(item, itemResource, true)"
722
- role="button"
723
- [kendoSchedulerFocusIndex]="itemResource.leafIdx"
724
- [id]="item.elementId + '_' + itemResource.leafIdx"
725
- dayTimeViewItem
726
- [name]="name"
727
- [isAllDay]="true"
728
- [editable]="editable"
729
- [eventTemplate]="allDayEventTemplateRef"
730
- [item]="item"
731
- [index]="item.index"
732
- [rangeIndex]="item.rangeIndex"
733
- [resources]="itemResource.resources"
734
- [resourceIndex]="itemResource.leafIdx">
735
- </div>
736
- }
737
- }
738
- <kendo-hint-container #headerHintContainer>
739
- <ng-template>
740
- @if (dragHints.length && allDayDragHint) {
741
- <div
742
- class="k-event-drag-hint"
743
- dayTimeViewItem
744
- [isAllDay]="true"
745
- [ngStyle]="dragHints[0].style"
746
- [ngClass]="dragHints[0].class"
747
- [dragHint]="true"
748
- [eventTemplate]="eventTemplateRef"
749
- [item]="dragHints[0].item"
750
- [resources]="dragHints[0].resources">
751
- </div>
752
- }
753
- @if (resizeHints.length && allDayResizeHint) {
754
- <div
755
- kendoResizeHint
756
- [hint]="resizeHints[0]"
757
- [ngClass]="resizeHints[0].class"
758
- [format]="allDayResizeHintFormat">
759
- </div>
760
- }
761
- </ng-template>
762
- </kendo-hint-container>
763
- </div>
764
- }
765
- </div>
766
- </div>
767
- </td>
768
- </tr>
769
- <tr class="k-scheduler-body">
770
- <td>
771
- <div class="k-scheduler-times" #times>
772
- @if (showCurrentTime) {
773
- @for (resource of verticalResources | resourceIterator; track itemIndex($index, resource)) {
774
- <div
775
- #currentTimeArrow class="k-current-time k-current-time-arrow-right">
776
- </div>
777
- }
778
- }
779
- <table class="k-scheduler-table" #timesTable aria-hidden="true">
780
- <tbody>
781
- @for (resourceItem of verticalResources | resourceIterator; track itemIndex(leafIndex, resourceItem); let leafIndex = $index) {
782
- @if (verticalResources.length) {
783
- <tr>
784
- @for (resource of verticalResources; track itemIndex(resourceIndex, resource); let resourceIndex = $index) {
785
- @if (verticalItem(leafIndex, resourceIndex)) {
786
- <th [attr.rowspan]="verticalRowspan(resourceIndex)" class="k-scheduler-cell k-slot-cell k-heading-cell">
787
- @if (!groupHeaderTemplateRef) {
788
- {{ getField(verticalItem(leafIndex, resourceIndex), resource.textField) }}
789
- }
790
- @if (groupHeaderTemplateRef) {
791
- <ng-container [ngTemplateOutlet]="groupHeaderTemplateRef"
792
- [ngTemplateOutletContext]="{ resource: verticalItem(leafIndex, resourceIndex) }"></ng-container>
793
- }
794
- </th>
795
- }
796
- }
797
- @if (allDaySlot) {
798
- <th class="k-scheduler-times-all-day k-scheduler-cell k-heading-cell" #allDayCell>{{ allDayMessage }}</th>
799
- }
800
- </tr>
801
- }
802
- @for (slot of timeSlots; track itemIndex(timeSlotIndex, slot); let timeSlotIndex = $index) {
803
- <tr>
804
- @if (slot.isMajor) {
805
- <th [ngClass]="{ 'k-slot-cell': slotDivisions === 1 }" class="k-scheduler-cell k-heading-cell">
806
- @if (!majorTimeHeaderTemplateRef) {
807
- {{ slot.start | kendoDate: 't' }}
808
- }
809
- @if (majorTimeHeaderTemplateRef) {
810
- <ng-container [ngTemplateOutlet]="majorTimeHeaderTemplateRef" [ngTemplateOutletContext]="{ date: slot.start }"></ng-container>
811
- }
812
- </th>
813
- }
814
- @if (!slot.isMajor) {
815
- <th [ngClass]="{ 'k-slot-cell': timeSlotIndex % slotDivisions === slotDivisions - 1 }" class="k-scheduler-cell k-heading-cell">
816
- @if (minorTimeHeaderTemplateRef) {
817
- <ng-container [ngTemplateOutlet]="minorTimeHeaderTemplateRef" [ngTemplateOutletContext]="{ date: slot.start }">
818
- </ng-container>
819
- }
820
- </th>
821
- }
822
- </tr>
823
- }
824
- }
825
- </tbody>
826
- </table>
827
- </div>
828
- </td>
829
- <td>
830
- <div
831
- class="k-scheduler-content"
832
- #content
833
- role="group"
834
- tabindex="0"
835
- [attr.aria-owns]="matchOwned(items | async)">
836
- @if (showCurrentTime) {
837
- @for (resource of verticalResources | resourceIterator; track itemIndex($index, resource)) {
838
- <div
839
- #currentTimeMarker class="k-current-time">
840
- </div>
841
- }
842
- }
843
- <table class="k-scheduler-table" #contentTable role="presentation">
844
- <tbody>
845
- @for (resourceItem of verticalResources | resourceIterator; track itemIndex(verticalIndex, resourceItem); let verticalIndex = $index) {
846
- @if (allDaySlot && verticalResources.length) {
847
- <tr class="k-scheduler-header-all-day">
848
- @for (slot of daySlots; track itemIndex(index, slot); let index = $index) {
849
- <td
850
- daySlot
851
- [start]="slot.start"
852
- [end]="slot.end"
853
- [class.k-selected]="isSlotSelected({
854
- start: toPlainDate(slot.start),
855
- end: toPlainDate(slot.end),
856
- isAllDay: true,
857
- resources: resourcesByIndex(verticalIndex)
858
- })"
859
- [id]="{ resourceIndex: verticalIndex, rangeIndex: 0, index: index }">
860
- @if (allDaySlotTemplateRef) {
861
- <ng-container [ngTemplateOutlet]="allDaySlotTemplateRef"
862
- [ngTemplateOutletContext]="{ date: slot.start, resources: resourcesByIndex(verticalIndex) }"></ng-container>
863
- }
864
- </td>
865
- }
866
- </tr>
867
- }
868
- @for (slot of timeSlots; track itemIndex(index, slot); let index = $index) {
869
- <tr [class.k-middle-row]="isMiddleSlot(index)">
870
- @for (resource of horizontalResources | resourceIterator; track itemIndex(horizontalIndex, resource); let horizontalIndex = $index) {
871
- @for (daySlot of daySlots; track itemIndex(rangeIndex, daySlot); let rangeIndex = $index) {
872
- <td
873
- [ngClass]="timeSlotClass(slot, daySlot.start, verticalResources.length ? verticalIndex : horizontalIndex)"
874
- timeSlot #timeSlot="timeSlot"
875
- [date]="daySlot.start"
876
- [invariantStart]="slot.start"
877
- [invariantEnd]="slot.end"
878
- [workDayStart]="workDayStartTime"
879
- [workDayEnd]="workDayEndTime"
880
- [workWeekStart]="workWeekStart"
881
- [workWeekEnd]="workWeekEnd"
882
- [id]="{ resourceIndex: verticalResources.length ? verticalIndex : horizontalIndex, rangeIndex: rangeIndex, index: index }"
883
- [class.k-selected]="isSlotSelected({
884
- start: toPlainDateTime(daySlot.start, slot.start),
885
- end: toPlainDateTime(daySlot.start, slot.end),
886
- isAllDay: false,
887
- resources: resourcesByIndex(verticalResources.length ? verticalIndex : horizontalIndex)
888
- })"
889
- class="k-scheduler-cell"
890
- >
891
- @if (timeSlotTemplateRef) {
892
- <ng-container [ngTemplateOutlet]="timeSlotTemplateRef"
893
- [ngTemplateOutletContext]="{ date: timeSlot.startLocalTime, resources: resourcesByIndex(timeSlot.id.resourceIndex) }">
894
- </ng-container>
895
- }
896
- </td>
897
- }
898
- }
899
- </tr>
900
- }
901
- }
902
- </tbody>
903
- </table>
904
- @for (item of items | async; track itemIndex($index, item)) {
905
- @for (itemResource of item.resources; track itemIndex($index, itemResource)) {
906
- <div
907
- [ngClass]="getEventClasses(item, itemResource.resources)"
908
- [ngStyle]="getEventStyles(item, itemResource)"
909
- role="button"
910
- [kendoSchedulerFocusIndex]="itemResource.leafIdx"
911
- [id]="item.elementId + '_' + itemResource.leafIdx"
912
- dayTimeViewItem
913
- [editable]="editable"
914
- [vertical]="true"
915
- [eventTemplate]="eventTemplateRef"
916
- [item]="item"
917
- [index]="item.index"
918
- [rangeIndex]="item.rangeIndex"
919
- [resources]="itemResource.resources"
920
- [resourceIndex]="itemResource.leafIdx">
921
- </div>
922
- }
923
- }
924
- @if (verticalResources.length) {
925
- @for (item of allDayItems | async; track itemIndex($index, item)) {
926
- @for (itemResource of item.resources; track itemIndex($index, itemResource)) {
927
- <div
928
- [ngClass]="getEventClasses(item, itemResource.resources, true)"
929
- [ngStyle]="getEventStyles(item, itemResource, true)"
930
- role="button"
931
- [kendoSchedulerFocusIndex]="itemResource.leafIdx"
932
- [id]="item.elementId + '_' + itemResource.leafIdx"
933
- dayTimeViewItem
934
- [isAllDay]="true"
935
- [editable]="editable"
936
- [eventTemplate]="allDayEventTemplateRef"
937
- [item]="item"
938
- [index]="item.index"
939
- [rangeIndex]="item.rangeIndex"
940
- [resources]="itemResource.resources"
941
- [resourceIndex]="itemResource.leafIdx">
942
- </div>
943
- }
944
- }
945
- }
946
- <kendo-hint-container #hintContainer>
947
- <ng-template>
948
- @if (dragHints.length && (!allDayDragHint || verticalResources.length)) {
949
- <div
950
- class="k-event-drag-hint"
951
- role="button"
952
- dayTimeViewItem
953
- [isAllDay]="allDayDragHint"
954
- [ngStyle]="dragHints[0].style"
955
- [ngClass]="dragHints[0].class"
956
- [dragHint]="true"
957
- [eventTemplate]="eventTemplateRef"
958
- [resources]="dragHints[0].resources"
959
- [item]="dragHints[0].item">
960
- </div>
961
- }
962
-
963
- @if (resizeHints.length && (!allDayResizeHint || verticalResources.length)) {
964
- @for (hint of resizeHints; track itemIndex($index, hint)) {
965
- <div
966
- kendoResizeHint
967
- [hint]="hint"
968
- [ngClass]="hint.class"
969
- [format]="allDayResizeHint ? allDayResizeHintFormat : resizeHintFormat">
970
- </div>
971
- }
972
- }
973
- </ng-template>
974
- </kendo-hint-container>
975
- </div>
976
- </td>
977
- </tr>
978
- </tbody>
979
- </table>
980
- `,
981
- standalone: true,
982
- imports: [NgClass, NgTemplateOutlet, DaySlotDirective, DayTimeViewItemComponent, NgStyle, FocusableDirective, HintContainerComponent, ResizeHintComponent, TimeSlotDirective, ResourceIteratorPipe, DatePipe, AsyncPipe]
983
- }]
984
- }], ctorParameters: () => [{ type: i1.LocalizationService }, { type: i2.ViewContextService }, { type: i3.ViewStateService }, { type: i4.IntlService }, { type: i5.DayTimeSlotService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i6.PDFService }, { type: i7.ScrollbarWidthService }], propDecorators: { hiddenDays: [{
985
- type: Input
986
- }], allDaySlot: [{
987
- type: Input
988
- }], name: [{
989
- type: Input
990
- }], slotFill: [{
991
- type: Input
992
- }], allDaySlotTemplate: [{
993
- type: Input
994
- }], allDayEventTemplate: [{
995
- type: Input
996
- }], dayCells: [{
997
- type: ViewChildren,
998
- args: ['allDayCell']
999
- }], headerHintContainer: [{
1000
- type: ViewChild,
1001
- args: ['headerHintContainer', { static: false }]
1002
- }] } });