@progress/kendo-angular-scheduler 2.2.0-dev.202111260859 → 3.0.1-dev.202202071010

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 (106) hide show
  1. package/dist/cdn/js/kendo-angular-scheduler.js +2 -2
  2. package/dist/cdn/main.js +1 -1
  3. package/dist/es/editing/date-time-picker.component.js +2 -1
  4. package/dist/es/editing/edit-dialog.component.js +1 -1
  5. package/dist/es/editing/recurrence/end-rule-radio-button.directive.js +5 -0
  6. package/dist/es/editing/recurrence/recurrence-monthly-yearly-editor.component.js +1 -1
  7. package/dist/es/editing/recurrence/repeat-on-radio-button.directive.js +5 -0
  8. package/dist/es/events/slot-drag-end-event.js +17 -0
  9. package/dist/es/events/slot-drag-event.js +18 -0
  10. package/dist/es/events/slot-drag-start-event.js +24 -0
  11. package/dist/es/events.js +3 -0
  12. package/dist/es/index.js +1 -0
  13. package/dist/es/package-metadata.js +1 -1
  14. package/dist/es/scheduler.component.js +73 -1
  15. package/dist/es/scheduler.module.js +5 -1
  16. package/dist/es/toolbar/view-selector.component.js +1 -1
  17. package/dist/es/types/slot-selection.js +23 -0
  18. package/dist/es/types.js +1 -0
  19. package/dist/es/views/common/base-view.js +103 -8
  20. package/dist/es/views/common/slot-selectable.directive.js +117 -0
  21. package/dist/es/views/common/view-footer.component.js +1 -1
  22. package/dist/es/views/common/views-shared.module.js +2 -1
  23. package/dist/es/views/day-time/day-time-view.component.js +1 -1
  24. package/dist/es/views/day-time/day-time.module.js +2 -1
  25. package/dist/es/views/month/month-view-renderer.component.js +9 -5
  26. package/dist/es/views/multi-day/multi-day-view-renderer.component.js +3 -3
  27. package/dist/es/views/timeline/timeline-multi-day-view.component.js +1 -1
  28. package/dist/es/views/utils.js +49 -0
  29. package/dist/es/views/view-state.service.js +18 -0
  30. package/dist/es2015/editing/date-time-picker.component.js +7 -1
  31. package/dist/es2015/editing/edit-dialog.component.js +7 -7
  32. package/dist/es2015/editing/recurrence/end-rule-radio-button.directive.d.ts +1 -0
  33. package/dist/es2015/editing/recurrence/end-rule-radio-button.directive.js +5 -0
  34. package/dist/es2015/editing/recurrence/recurrence-monthly-yearly-editor.component.js +14 -5
  35. package/dist/es2015/editing/recurrence/repeat-on-radio-button.directive.d.ts +1 -0
  36. package/dist/es2015/editing/recurrence/repeat-on-radio-button.directive.js +5 -0
  37. package/dist/es2015/events/slot-drag-end-event.d.ts +10 -0
  38. package/dist/es2015/events/slot-drag-end-event.js +10 -0
  39. package/dist/es2015/events/slot-drag-event.d.ts +39 -0
  40. package/dist/es2015/events/slot-drag-event.js +16 -0
  41. package/dist/es2015/events/slot-drag-start-event.d.ts +41 -0
  42. package/dist/es2015/events/slot-drag-start-event.js +19 -0
  43. package/dist/es2015/events.d.ts +3 -0
  44. package/dist/es2015/events.js +3 -0
  45. package/dist/es2015/index.d.ts +2 -0
  46. package/dist/es2015/index.js +1 -0
  47. package/dist/es2015/index.metadata.json +1 -1
  48. package/dist/es2015/package-metadata.js +1 -1
  49. package/dist/es2015/scheduler.component.d.ts +27 -0
  50. package/dist/es2015/scheduler.component.js +73 -1
  51. package/dist/es2015/scheduler.module.js +5 -1
  52. package/dist/es2015/toolbar/view-selector.component.js +1 -1
  53. package/dist/es2015/types/datepicker-options.interface.d.ts +5 -5
  54. package/dist/es2015/types/slot-selection.d.ts +71 -0
  55. package/dist/es2015/types/slot-selection.js +19 -0
  56. package/dist/es2015/types.d.ts +2 -0
  57. package/dist/es2015/types.js +1 -0
  58. package/dist/es2015/views/common/base-view.d.ts +26 -5
  59. package/dist/es2015/views/common/base-view.js +103 -8
  60. package/dist/es2015/views/common/slot-selectable.directive.d.ts +45 -0
  61. package/dist/es2015/views/common/slot-selectable.directive.js +112 -0
  62. package/dist/es2015/views/common/view-footer.component.js +1 -1
  63. package/dist/es2015/views/common/views-shared.module.js +2 -1
  64. package/dist/es2015/views/day-time/day-time-view.component.js +1 -1
  65. package/dist/es2015/views/day-time/day-time.module.js +2 -1
  66. package/dist/es2015/views/month/month-view-renderer.component.d.ts +3 -2
  67. package/dist/es2015/views/month/month-view-renderer.component.js +17 -7
  68. package/dist/es2015/views/multi-day/multi-day-view-renderer.component.d.ts +1 -1
  69. package/dist/es2015/views/multi-day/multi-day-view-renderer.component.js +22 -4
  70. package/dist/es2015/views/timeline/timeline-multi-day-view.component.js +8 -1
  71. package/dist/es2015/views/utils.d.ts +29 -0
  72. package/dist/es2015/views/utils.js +49 -0
  73. package/dist/es2015/views/view-state.service.d.ts +24 -1
  74. package/dist/es2015/views/view-state.service.js +18 -0
  75. package/dist/fesm2015/index.js +1674 -1231
  76. package/dist/fesm5/index.js +1803 -1388
  77. package/dist/npm/editing/date-time-picker.component.js +2 -1
  78. package/dist/npm/editing/edit-dialog.component.js +1 -1
  79. package/dist/npm/editing/recurrence/end-rule-radio-button.directive.js +5 -0
  80. package/dist/npm/editing/recurrence/recurrence-monthly-yearly-editor.component.js +1 -1
  81. package/dist/npm/editing/recurrence/repeat-on-radio-button.directive.js +5 -0
  82. package/dist/npm/events/slot-drag-end-event.js +19 -0
  83. package/dist/npm/events/slot-drag-event.js +20 -0
  84. package/dist/npm/events/slot-drag-start-event.js +26 -0
  85. package/dist/npm/events.js +6 -0
  86. package/dist/npm/index.js +2 -0
  87. package/dist/npm/package-metadata.js +1 -1
  88. package/dist/npm/scheduler.component.js +73 -1
  89. package/dist/npm/scheduler.module.js +4 -0
  90. package/dist/npm/toolbar/view-selector.component.js +1 -1
  91. package/dist/npm/types/slot-selection.js +25 -0
  92. package/dist/npm/types.js +2 -0
  93. package/dist/npm/views/common/base-view.js +102 -7
  94. package/dist/npm/views/common/slot-selectable.directive.js +119 -0
  95. package/dist/npm/views/common/view-footer.component.js +1 -1
  96. package/dist/npm/views/common/views-shared.module.js +2 -1
  97. package/dist/npm/views/day-time/day-time-view.component.js +1 -1
  98. package/dist/npm/views/day-time/day-time.module.js +2 -1
  99. package/dist/npm/views/month/month-view-renderer.component.js +8 -4
  100. package/dist/npm/views/multi-day/multi-day-view-renderer.component.js +3 -3
  101. package/dist/npm/views/timeline/timeline-multi-day-view.component.js +1 -1
  102. package/dist/npm/views/utils.js +53 -0
  103. package/dist/npm/views/view-state.service.js +18 -0
  104. package/dist/systemjs/kendo-angular-scheduler.js +1 -1
  105. package/package.json +27 -24
  106. package/schematics/ngAdd/index.js +1 -1
@@ -4,6 +4,8 @@
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import { ZonedDate } from '@progress/kendo-date-math';
6
6
  import { FormGroup } from '@angular/forms';
7
+ import { Resource } from '../types';
8
+ import { SlotRange } from '../types/slot-selection';
7
9
  /** @hidden */
8
10
  export declare const intersects: (startTime: Date, endTime: Date, periodStart: Date, periodEnd: Date) => boolean;
9
11
  /** @hidden */
@@ -35,11 +37,34 @@ export declare function toUTCDateTime(localDate: Date): Date;
35
37
  /** @hidden */
36
38
  export declare function dateWithTime(target: Date, time: Date): Date;
37
39
  /** @hidden */
40
+ export interface SimpleRange {
41
+ start: Date;
42
+ end: Date;
43
+ }
44
+ /**
45
+ * @hidden
46
+ * Flips the start and end values of a slot selection based on whether
47
+ * the last dragged-over slot is before or after the slot where the selection began.
48
+ */
49
+ export declare function normaliseRangeStartAndEnd(selectionOrigin: SimpleRange, currentSlot: SimpleRange): SimpleRange;
50
+ /** @hidden */
38
51
  export declare function resourceItemByValue(event: any, resource: any): any;
39
52
  /** @hidden */
40
53
  export declare function eventResources(event: any, { taskResources, hasGroups, spans, allResources }: any): any[];
41
54
  /** @hidden */
42
55
  export declare function assignTasksResources(tasks: any[], options: any): void;
56
+ /**
57
+ * @hidden
58
+ */
59
+ export declare function isEmptyResource(resources: Resource[]): boolean;
60
+ /**
61
+ * @hidden
62
+ */
63
+ export declare function resourcesMatch(res1: any[], res2: any[]): boolean;
64
+ /**
65
+ * @hidden
66
+ */
67
+ export declare function isSameRange(range1: SlotRange, range2: SlotRange): boolean;
43
68
  /** @hidden */
44
69
  export declare function findRowIndex(events: any[], data: any): number;
45
70
  /** @hidden */
@@ -74,3 +99,7 @@ export declare function formValueOrDefault(group: FormGroup, field: string, defa
74
99
  * @hidden
75
100
  */
76
101
  export declare const isWorkWeekDay: (day: number, start: number, end: number) => boolean;
102
+ /**
103
+ * @hidden
104
+ */
105
+ export declare const alwaysFalse: () => boolean;
@@ -65,6 +65,24 @@ export function toUTCDateTime(localDate) {
65
65
  export function dateWithTime(target, time) {
66
66
  return new Date(target.getFullYear(), target.getMonth(), target.getDate(), time.getHours(), time.getMinutes());
67
67
  }
68
+ /**
69
+ * @hidden
70
+ * Flips the start and end values of a slot selection based on whether
71
+ * the last dragged-over slot is before or after the slot where the selection began.
72
+ */
73
+ export function normaliseRangeStartAndEnd(selectionOrigin, currentSlot) {
74
+ let start;
75
+ let end;
76
+ if (currentSlot.end <= selectionOrigin.end) {
77
+ end = selectionOrigin.end;
78
+ start = currentSlot.start;
79
+ }
80
+ else {
81
+ start = selectionOrigin.start;
82
+ end = currentSlot.end;
83
+ }
84
+ return { start, end };
85
+ }
68
86
  function getDataIdx(value, resource) {
69
87
  const data = resource.data;
70
88
  for (let dataIdx = 0; dataIdx < data.length; dataIdx++) {
@@ -172,6 +190,33 @@ export function assignTasksResources(tasks, options) {
172
190
  task.resources = eventResources(task.event, options);
173
191
  }
174
192
  }
193
+ /**
194
+ * @hidden
195
+ */
196
+ export function isEmptyResource(resources) {
197
+ return Array.isArray(resources) && resources.length === 1 && resources[0] === undefined;
198
+ }
199
+ /**
200
+ * @hidden
201
+ */
202
+ export function resourcesMatch(res1, res2) {
203
+ if (res1.length !== res2.length) {
204
+ return false;
205
+ }
206
+ if (isEmptyResource(res1) && isEmptyResource(res2)) {
207
+ return true;
208
+ }
209
+ return res1.every(r1 => res2.some(r2 => r2.value === r1.value));
210
+ }
211
+ /**
212
+ * @hidden
213
+ */
214
+ export function isSameRange(range1, range2) {
215
+ return (range1.start.getTime() === range2.start.getTime() &&
216
+ range1.end.getTime() === range2.end.getTime() &&
217
+ range1.isAllDay === range2.isAllDay &&
218
+ resourcesMatch(range1.resources, range2.resources));
219
+ }
175
220
  /** @hidden */
176
221
  export function findRowIndex(events, data) {
177
222
  if (data.rowIndex !== undefined) {
@@ -272,3 +317,7 @@ export const isWorkWeekDay = (day, start, end) => {
272
317
  }
273
318
  return start <= day && day <= end;
274
319
  };
320
+ /**
321
+ * @hidden
322
+ */
323
+ export const alwaysFalse = () => false;
@@ -3,7 +3,9 @@
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import { Observable } from 'rxjs';
6
+ import { SlotDragStartEvent } from '../main';
6
7
  import { DateRange } from '../types';
8
+ import { ExtendedSlotRange, slotDragEventName, SlotRange } from '../types/slot-selection';
7
9
  /**
8
10
  * A service for publishing the view state and actions to the Scheduler.
9
11
  */
@@ -32,12 +34,27 @@ export declare class ViewStateService {
32
34
  * A stream for indicating that the view options has changed.
33
35
  */
34
36
  readonly optionsChange: Observable<any>;
37
+ /**
38
+ * A stream indicating that the user has started making a new slot selection.
39
+ */
40
+ readonly slotSelectionStart: Observable<SlotRange>;
41
+ /**
42
+ * A stream indicating that the user has dragged over a different slot while making a selection.
43
+ */
44
+ readonly slotSelectionDrag: Observable<SlotRange>;
45
+ /**
46
+ * A stream indicating that the user has finished making a slot selection.
47
+ */
48
+ readonly slotSelectionEnd: Observable<SlotRange>;
35
49
  private dateRangeSource;
36
50
  private nextDateSource;
37
51
  private navigateSource;
38
52
  private viewEventSource;
39
53
  private layoutEndSource;
40
54
  private optionsChangeSource;
55
+ private slotSelectionStartSource;
56
+ private slotSelectionStartDragSource;
57
+ private slotSelectionStartEndSource;
41
58
  constructor();
42
59
  /**
43
60
  * Publishes the date that will be displayed by the Scheduler
@@ -65,5 +82,11 @@ export declare class ViewStateService {
65
82
  /**
66
83
  * Emits a DOM event to the Scheduler.
67
84
  */
68
- emitEvent(name: string, args: any): void;
85
+ emitEvent(name: string | slotDragEventName, args?: any): void;
86
+ /** @hidden */
87
+ notifySlotSelectionStart(selection: SlotDragStartEvent): void;
88
+ /** @hidden */
89
+ notifySlotSelectionDrag(selection: ExtendedSlotRange): void;
90
+ /** @hidden */
91
+ notifySlotSelectionEnd(selection: ExtendedSlotRange): void;
69
92
  }
@@ -23,12 +23,18 @@ let ViewStateService = class ViewStateService {
23
23
  this.viewEventSource = new Subject();
24
24
  this.layoutEndSource = new Subject();
25
25
  this.optionsChangeSource = new Subject();
26
+ this.slotSelectionStartSource = new Subject();
27
+ this.slotSelectionStartDragSource = new Subject();
28
+ this.slotSelectionStartEndSource = new Subject();
26
29
  this.dateRange = this.dateRangeSource.asObservable();
27
30
  this.nextDate = this.nextDateSource.asObservable();
28
31
  this.navigate = this.navigateSource.asObservable();
29
32
  this.viewEvent = this.viewEventSource.asObservable();
30
33
  this.layoutEnd = this.layoutEndSource.asObservable();
31
34
  this.optionsChange = this.optionsChangeSource.asObservable();
35
+ this.slotSelectionStart = this.slotSelectionStartSource.asObservable();
36
+ this.slotSelectionDrag = this.slotSelectionStartDragSource.asObservable();
37
+ this.slotSelectionEnd = this.slotSelectionStartEndSource.asObservable();
32
38
  }
33
39
  /**
34
40
  * Publishes the date that will be displayed by the Scheduler
@@ -72,6 +78,18 @@ let ViewStateService = class ViewStateService {
72
78
  args: args
73
79
  });
74
80
  }
81
+ /** @hidden */
82
+ notifySlotSelectionStart(selection) {
83
+ this.slotSelectionStartSource.next(selection);
84
+ }
85
+ /** @hidden */
86
+ notifySlotSelectionDrag(selection) {
87
+ this.slotSelectionStartDragSource.next(selection);
88
+ }
89
+ /** @hidden */
90
+ notifySlotSelectionEnd(selection) {
91
+ this.slotSelectionStartEndSource.next(selection);
92
+ }
75
93
  };
76
94
  ViewStateService = tslib_1.__decorate([
77
95
  Injectable(),