@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,130 +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, forwardRef, Input, ContentChild, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';
6
- import { LocalizationService } from '@progress/kendo-angular-l10n';
7
- import { ConfigurationViewBase } from '../common/configuration-view-base';
8
- import { SchedulerView } from '../../types';
9
- import { ViewContextService } from '../view-context.service';
10
- import { ViewStateService } from '../view-state.service';
11
- import { AgendaTimeTemplateDirective, AgendaDateTemplateDirective } from '../templates';
12
- import { AgendaViewInternalComponent } from './agenda-view-internal.component';
13
- import * as i0 from "@angular/core";
14
- import * as i1 from "@progress/kendo-angular-l10n";
15
- import * as i2 from "../view-context.service";
16
- import * as i3 from "../view-state.service";
17
- /**
18
- * Represents the component that renders the **Agenda** view in the Scheduler.
19
- *
20
- * @example
21
- * ```html
22
- * <kendo-scheduler>
23
- * <kendo-scheduler-agenda-view></kendo-scheduler-agenda-view>
24
- * </kendo-scheduler>
25
- * ```
26
- */
27
- export class AgendaViewComponent extends ConfigurationViewBase {
28
- /**
29
- * @hidden
30
- */
31
- get title() {
32
- return this.localization.get('agendaViewTitle');
33
- }
34
- /**
35
- * Sets the long-date format for the selected date in the Scheduler toolbar.
36
- * Defaults to `'{0:D} - {1:D}'`, where `0` is the start and `1` is the end date.
37
- * For more information, see [Parsing and Formatting Dates and Numbers](slug:parsingandformatting_intl#date-formatting).
38
- * @default '{0:D} - {1:D}'
39
- */
40
- selectedDateFormat = '{0:D} - {1:D}';
41
- /**
42
- * Sets the short-date format for the selected date in the Scheduler toolbar.
43
- * Defaults to `'{0:d} - {1:d}'`, where `0` is the start and `1` is the end date.
44
- * For more information, see [Parsing and Formatting Dates and Numbers](slug:parsingandformatting_intl#date-formatting).
45
- * @default '{0:d} - {1:d}'
46
- */
47
- selectedShortDateFormat = '{0:d} - {1:d}';
48
- /**
49
- * Specifies the number of days that the view will render.
50
- * @default 7
51
- */
52
- numberOfDays = 7;
53
- /**
54
- * @hidden
55
- */
56
- agendaTimeTemplate;
57
- /**
58
- * @hidden
59
- */
60
- agendaDateTemplate;
61
- /**
62
- * The invariant name for this view (`agenda`).
63
- * @default 'agenda'
64
- */
65
- name = 'agenda';
66
- constructor(localization, changeDetector, viewContext, viewState) {
67
- super(localization, changeDetector, viewContext, viewState);
68
- }
69
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AgendaViewComponent, deps: [{ token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i2.ViewContextService }, { token: i3.ViewStateService }], target: i0.ɵɵFactoryTarget.Component });
70
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AgendaViewComponent, isStandalone: true, selector: "kendo-scheduler-agenda-view", inputs: { selectedDateFormat: "selectedDateFormat", selectedShortDateFormat: "selectedShortDateFormat", numberOfDays: "numberOfDays" }, providers: [{
71
- provide: SchedulerView,
72
- useExisting: forwardRef(() => AgendaViewComponent)
73
- }], queries: [{ propertyName: "agendaTimeTemplate", first: true, predicate: AgendaTimeTemplateDirective, descendants: true }, { propertyName: "agendaDateTemplate", first: true, predicate: AgendaDateTemplateDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: `
74
- <ng-template #content>
75
- <agenda-view-internal
76
- [numberOfDays]="numberOfDays"
77
- [hiddenDays]="viewHiddenDays"
78
- [eventTemplate]="eventTemplate?.templateRef"
79
- [slotClass]="viewSlotClass"
80
- [eventClass]="viewEventClass"
81
- [eventStyles]="viewEventStyles"
82
- [agendaTimeTemplate]="agendaTimeTemplate?.templateRef"
83
- [agendaDateTemplate]="agendaDateTemplate?.templateRef"
84
- [selectedDateFormat]="selectedDateFormat"
85
- [selectedShortDateFormat]="selectedShortDateFormat">
86
- </agenda-view-internal>
87
- </ng-template>
88
- `, isInline: true, dependencies: [{ kind: "component", type: AgendaViewInternalComponent, selector: "agenda-view-internal", inputs: ["hiddenDays", "eventTemplate", "slotClass", "eventClass", "eventStyles", "agendaTimeTemplate", "agendaDateTemplate", "selectedDateFormat", "selectedShortDateFormat", "numberOfDays"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
89
- }
90
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AgendaViewComponent, decorators: [{
91
- type: Component,
92
- args: [{
93
- changeDetection: ChangeDetectionStrategy.OnPush,
94
- selector: 'kendo-scheduler-agenda-view',
95
- providers: [{
96
- provide: SchedulerView,
97
- useExisting: forwardRef(() => AgendaViewComponent)
98
- }],
99
- template: `
100
- <ng-template #content>
101
- <agenda-view-internal
102
- [numberOfDays]="numberOfDays"
103
- [hiddenDays]="viewHiddenDays"
104
- [eventTemplate]="eventTemplate?.templateRef"
105
- [slotClass]="viewSlotClass"
106
- [eventClass]="viewEventClass"
107
- [eventStyles]="viewEventStyles"
108
- [agendaTimeTemplate]="agendaTimeTemplate?.templateRef"
109
- [agendaDateTemplate]="agendaDateTemplate?.templateRef"
110
- [selectedDateFormat]="selectedDateFormat"
111
- [selectedShortDateFormat]="selectedShortDateFormat">
112
- </agenda-view-internal>
113
- </ng-template>
114
- `,
115
- standalone: true,
116
- imports: [AgendaViewInternalComponent]
117
- }]
118
- }], ctorParameters: () => [{ type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i2.ViewContextService }, { type: i3.ViewStateService }], propDecorators: { selectedDateFormat: [{
119
- type: Input
120
- }], selectedShortDateFormat: [{
121
- type: Input
122
- }], numberOfDays: [{
123
- type: Input
124
- }], agendaTimeTemplate: [{
125
- type: ContentChild,
126
- args: [AgendaTimeTemplateDirective, { static: false }]
127
- }], agendaDateTemplate: [{
128
- type: ContentChild,
129
- args: [AgendaDateTemplateDirective, { static: false }]
130
- }] } });
@@ -1,96 +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 { groupBy, orderBy } from '@progress/kendo-data-query';
6
- import { iterator } from '../../common/util';
7
- const flip = fn => a => b => fn(b, a);
8
- const sort = flip(orderBy);
9
- const group = flip(groupBy);
10
- /**
11
- * @hidden
12
- */
13
- export const compose = (...args) => (data) => args.reduceRight((acc, curr) => curr(acc), data);
14
- /**
15
- * @hidden
16
- */
17
- export const processEvents = (_start, _end) => compose(group([{ field: "startDate" }]), sort([{ field: "start", dir: "asc" }, { field: "end", dir: "asc" }]));
18
- function flattenGroupsAndAddIds(scope) {
19
- return function* flattenGroups(groups) {
20
- for (let index = 0; index < groups.length; index++) {
21
- const groupItem = groups[index];
22
- const dayOfWeek = groupItem.items[0]?.startDate?.getDay();
23
- if (scope.hiddenDays?.includes(dayOfWeek)) {
24
- continue;
25
- }
26
- yield {
27
- type: "group",
28
- dataItem: groupItem,
29
- rowSpan: groupItem.items.length,
30
- elementId: `k-scheduler-${scope.counter}-${index}`
31
- };
32
- for (let itemIndex = 1; itemIndex < groupItem.items.length; itemIndex++) {
33
- const item = groupItem.items[itemIndex];
34
- yield {
35
- type: "event",
36
- dataItem: item,
37
- elementId: `k-scheduler-${scope.counter}-${index}-item-${itemIndex}`
38
- };
39
- }
40
- }
41
- };
42
- }
43
- /** @hidden */
44
- export class EmptyIterator {
45
- [iterator]() {
46
- return {
47
- next: () => ({ done: true, value: null })
48
- };
49
- }
50
- toString() {
51
- return "Empty Iterator";
52
- }
53
- }
54
- let seed = 0;
55
- /**
56
- * @hidden
57
- */
58
- export class TaskCollection {
59
- start;
60
- end;
61
- events;
62
- counter; // used to give unique ids to event elements
63
- hiddenDays;
64
- static empty() {
65
- return (new EmptyIterator());
66
- }
67
- constructor(start, end, events, hiddenDays) {
68
- this.start = start;
69
- this.end = end;
70
- this.events = events;
71
- this.hiddenDays = hiddenDays || [];
72
- this.counter = seed;
73
- seed++;
74
- this.createIterator = compose(flattenGroupsAndAddIds(this), processEvents(this.start, this.end));
75
- }
76
- createIterator;
77
- [iterator]() {
78
- return this.createIterator(this.events);
79
- }
80
- itemAt(index) {
81
- const taskIterator = this.createIterator(this.events);
82
- let idx = 0;
83
- let item;
84
- do {
85
- item = taskIterator.next();
86
- if (item && idx === index) {
87
- const value = item.value;
88
- return value.type === 'group' ? value.dataItem.items[0] : value.dataItem;
89
- }
90
- idx++;
91
- } while (item);
92
- }
93
- toString() {
94
- return this.events.toString();
95
- }
96
- }
@@ -1,176 +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 { TaskCollection, compose } from './tasks.collection';
6
- import { MS_PER_DAY, toLocalDate } from '@progress/kendo-date-math';
7
- import { intersects, eventResources, toUTCDate, addUTCDays, getUTCDate } from '../utils';
8
- import { getField } from '../../common/util';
9
- /**
10
- * @hidden
11
- */
12
- export function createResourceGroups(groupedResources) {
13
- let result = [];
14
- const firstResource = groupedResources[0];
15
- const firstResourceData = firstResource.data;
16
- for (let dataIdx = 0; dataIdx < firstResourceData.length; dataIdx++) {
17
- const item = firstResourceData[dataIdx];
18
- result.push({ resources: [getField(item, firstResource.textField)] });
19
- }
20
- for (let idx = 1; idx < groupedResources.length; idx++) {
21
- const resource = groupedResources[idx];
22
- const data = resource.data;
23
- const current = [];
24
- for (let resourceIdx = 0; resourceIdx < result.length; resourceIdx++) {
25
- const resourceItem = result[resourceIdx];
26
- for (let dataIdx = 0; dataIdx < data.length; dataIdx++) {
27
- const item = data[dataIdx];
28
- current.push({ resources: resourceItem.resources.concat(getField(item, resource.textField)) });
29
- }
30
- }
31
- result = current;
32
- }
33
- return result;
34
- }
35
- function createTask(item, resourceIdx, resources, color) {
36
- const event = item.event;
37
- return {
38
- event,
39
- start: item.start.toUTCDate(),
40
- end: item.end.toUTCDate(),
41
- title: event.title,
42
- isAllDay: event.isAllDay,
43
- color,
44
- resourceIdx,
45
- resources
46
- };
47
- }
48
- const durationInDays = ({ start, end, isAllDay = false }) => {
49
- const eventEnd = isAllDay ? getUTCDate(end) : end;
50
- const duration = Math.ceil((eventEnd - +getUTCDate(start)) / MS_PER_DAY);
51
- if (isAllDay && duration > 0 && !endsAtMidnight(end)) {
52
- return duration + 1;
53
- }
54
- return duration;
55
- };
56
- const endsAtMidnight = (end) => {
57
- end = toLocalDate(end);
58
- return (end.getHours() === 0 && end.getMinutes() === 0 && end.getSeconds() === 0 && end.getMilliseconds() === 0);
59
- };
60
- const curry = fn => {
61
- const len = fn.length;
62
- return (...args) => len === args.length
63
- ? fn(...args)
64
- : curry(fn.bind(null, ...args));
65
- };
66
- const range = num => Array.from(new Array(num).keys());
67
- const cloneTask = (eventStart, eventEnd) => task => ({
68
- ...task,
69
- start: getUTCDate(eventStart),
70
- end: task.tail && !task.isAllDay ? eventEnd : addUTCDays(eventStart, 1),
71
- startDate: getUTCDate(eventStart)
72
- });
73
- const previousEventEnd = (start, events) => events.length
74
- ? events[events.length - 1].end
75
- : start;
76
- const markAsTail = isLast => task => {
77
- if (isLast) {
78
- task.tail = true;
79
- }
80
- return task;
81
- };
82
- const markAsMid = task => {
83
- if (!task.tail) {
84
- task.mid = true;
85
- }
86
- return task;
87
- };
88
- const addTaskPart = (task, start) => (tasks, _, day, days) => tasks.concat(compose(markAsMid, cloneTask(previousEventEnd(start, tasks), task.end), markAsTail(day === days.length - 1))(task));
89
- const splitMultiDayTask = (task, start) => range(durationInDays(task) - 1)
90
- .reduce(addTaskPart(task, start), []);
91
- /**
92
- * @hidden
93
- */
94
- export const splitTasks = curry((periodStart, periodEnd, tasks) => {
95
- const result = [];
96
- for (let index = 0; index < tasks.length; index++) {
97
- const task = { ...tasks[index] };
98
- task.startDate = getUTCDate(task.start);
99
- if (task.start >= periodStart && task.start <= periodEnd) {
100
- result.push(task);
101
- }
102
- if (durationInDays(task) > 1) {
103
- task.end = addUTCDays(task.startDate, 1);
104
- task.head = true;
105
- result.push(...splitMultiDayTask({ ...tasks[index] }, task.end)
106
- .filter(tsk => getUTCDate(tsk.end) <= periodEnd && tsk.start >= periodStart));
107
- }
108
- }
109
- return result;
110
- });
111
- function groupByResource(groupedResources, resourceGroups, dateRange) {
112
- const groups = resourceGroups.filter(group => group.tasks && group.tasks.length);
113
- if (!groups.length) {
114
- return [];
115
- }
116
- const values = groups[0].resources.map(resource => ({ value: resource, span: 0, groupIdx: 0 }));
117
- const periodStart = toUTCDate(dateRange.start);
118
- const periodEnd = toUTCDate(dateRange.end);
119
- for (let groupIdx = 0; groupIdx < groups.length; groupIdx++) {
120
- const group = groups[groupIdx];
121
- group.tasks = splitTasks(periodStart, periodEnd, group.tasks);
122
- const count = group.tasks.length;
123
- group.tasks = new TaskCollection(periodStart, periodEnd, group.tasks);
124
- let invalidate = false;
125
- for (let resourceIdx = 0; resourceIdx < groupedResources.length; resourceIdx++) {
126
- const resourceValue = values[resourceIdx];
127
- if (resourceValue.value !== group.resources[resourceIdx] || invalidate) {
128
- resourceValue.value = group.resources[resourceIdx];
129
- const spanGroup = groups[resourceValue.groupIdx];
130
- spanGroup.spans = spanGroup.spans || [];
131
- spanGroup.spans[resourceIdx] = resourceValue.span;
132
- resourceValue.span = count;
133
- resourceValue.groupIdx = groupIdx;
134
- invalidate = true;
135
- }
136
- else {
137
- resourceValue.span += count;
138
- }
139
- }
140
- }
141
- values.forEach((value, index) => {
142
- const group = groups[value.groupIdx];
143
- group.spans = group.spans || [];
144
- group.spans[index] = value.span;
145
- });
146
- return groups;
147
- }
148
- /**
149
- * @hidden
150
- */
151
- export function groupEvents(items, { taskResources, resourceGroups, spans, allResources, dateRange, hiddenDays }) {
152
- const groups = resourceGroups || [{}];
153
- const periodStart = toUTCDate(dateRange.start);
154
- const periodEnd = toUTCDate(dateRange.end);
155
- for (let idx = 0; idx < items.length; idx++) {
156
- const item = items[idx];
157
- const event = item.event;
158
- if (!intersects(item.start.toUTCDate(), item.end.toUTCDate(), periodStart, periodEnd)) {
159
- continue;
160
- }
161
- const resources = eventResources(event, { taskResources, hasGroups: resourceGroups && resourceGroups.length > 0, spans, allResources });
162
- if (resources.length && resources[0].leafIdx >= 0) {
163
- for (let resourceIdx = 0; resourceIdx < resources.length; resourceIdx++) {
164
- const current = resources[resourceIdx];
165
- const task = createTask(item, current.leafIdx, current.resources, current.color);
166
- const tasks = groups[current.leafIdx].tasks = groups[current.leafIdx].tasks || [];
167
- tasks.push(task);
168
- }
169
- }
170
- }
171
- if (resourceGroups) {
172
- return groupByResource(taskResources, groups, dateRange);
173
- }
174
- groups[0].tasks = new TaskCollection(periodStart, periodEnd, splitTasks(periodStart, periodEnd, groups[0].tasks || []), hiddenDays);
175
- return groups;
176
- }