@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
@@ -142,7 +142,7 @@ var TimelineMultiDayViewComponent = /** @class */ (function (_super) {
142
142
  providers: [
143
143
  DayTimeSlotService
144
144
  ],
145
- template: "\n <div class=\"k-scheduler-layout k-scheduler-flex-layout\" [ngClass]=\"classNames\">\n <div class=\"k-scheduler-pane\">\n <div class=\"k-scheduler-times\" #timesHeader>\n <table class=\"k-scheduler-table\" aria-hidden=\"true\">\n <tr><th></th></tr>\n <tr><th class=\"k-slot-cell\"></th></tr>\n <tr *ngFor=\"let resource of horizontalResources; trackBy: itemIndex;\">\n <th></th>\n </tr>\n </table>\n </div>\n <div class=\"k-scheduler-header k-state-default\" #header >\n <div class=\"k-scheduler-header-wrap\" #headerWrap>\n <ng-container *ngIf=\"showCurrentTime\">\n <div *ngFor=\"let resource of horizontalResources | resourceIterator; trackBy: itemIndex;\"\n #currentTimeArrow class=\"k-current-time k-current-time-arrow-down\">\n </div>\n </ng-container>\n <table class=\"k-scheduler-table\" aria-hidden=\"true\">\n <colgroup>\n <col *ngFor=\"let slotIndex of slotsCount | repeat; trackBy: itemIndex;\" [ngStyle]=\"{ 'width.px': columnWidth }\" />\n </colgroup>\n <tr *ngFor=\"let resource of horizontalResources; let resourceIndex = index; trackBy: itemIndex;\">\n <th *ngFor=\"let item of horizontalResources | resourceIterator : resourceIndex; trackBy: itemIndex;\"\n class=\"k-slot-cell\" [attr.colspan]=\"horizontalColspan(resourceIndex)\">\n <ng-container *ngIf=\"!groupHeaderTemplateRef\">{{ getField(item, resource.textField) }}</ng-container>\n <ng-container *ngIf=\"groupHeaderTemplateRef\" [ngTemplateOutlet]=\"groupHeaderTemplateRef\"\n [ngTemplateOutletContext]=\"{ resource: item }\"></ng-container>\n </th>\n </tr>\n <tr>\n <ng-container *ngFor=\"let resource of horizontalResources | resourceIterator; trackBy: itemIndex;\">\n <ng-container *ngFor=\"let daySlot of daySlots; let index = index; trackBy: itemIndex;\">\n <th [attr.colspan]=\"timeSlots.length\" class=\"k-slot-cell\">\n <span *ngIf=\"!dateHeaderTemplateRef\" class=\"k-link\" [ngClass]=\"{ 'k-nav-day': numberOfDays > 1 }\" [attr.data-dayslot-index]=\"index\">{{ daySlot.start | kendoDate: 'm'}}</span>\n <ng-container *ngIf=\"dateHeaderTemplateRef\" [ngTemplateOutlet]=\"dateHeaderTemplateRef\" [ngTemplateOutletContext]=\"{ date: daySlot.start }\"></ng-container>\n </th>\n </ng-container>\n </ng-container>\n </tr>\n <tr>\n <ng-container *ngFor=\"let resource of horizontalResources | resourceIterator; let resourceIndex = index; trackBy: itemIndex;\">\n <ng-container *ngFor=\"let daySlot of daySlots; let rangeIndex = index; trackBy: itemIndex;\">\n <ng-container *ngFor=\"let timeSlot of timeSlots; let index = index; trackBy: itemIndex;\">\n <th *ngIf=\"timeSlot.isMajor\" [attr.colspan]=\"timeColspan(index)\" >{{ timeSlot.start | kendoDate: 't' }}</th>\n </ng-container>\n </ng-container>\n </ng-container>\n </tr>\n </table>\n </div>\n </div>\n </div>\n <div class=\"k-scheduler-pane\">\n <div class=\"k-scheduler-times\" #times>\n <table class=\"k-scheduler-table\" #timesTable aria-hidden=\"true\">\n <tr *ngIf=\"!verticalResources.length\">\n <th rowspan=\"1\" #titleCell>\n {{ allEventsMessage }}\n </th>\n </tr>\n <ng-container *ngIf=\"verticalResources.length\">\n <ng-container *ngFor=\"let resourceItem of verticalResources | resourceIterator; let leafIndex = index; trackBy: itemIndex;\">\n <tr #verticalResourceRows>\n <ng-container *ngFor=\"let resource of verticalResources; let resourceIndex = index; trackBy: itemIndex;\">\n <th *ngIf=\"verticalItem(leafIndex, resourceIndex)\" [attr.rowspan]=\"verticalRowspan(resourceIndex)\" class=\"k-slot-cell\">\n <div>\n <ng-container *ngIf=\"!groupHeaderTemplateRef\">{{ getField(verticalItem(leafIndex, resourceIndex), resource.textField) }}</ng-container>\n <ng-container *ngIf=\"groupHeaderTemplateRef\" [ngTemplateOutlet]=\"groupHeaderTemplateRef\"\n [ngTemplateOutletContext]=\"{ resource: verticalItem(leafIndex, resourceIndex) }\"></ng-container>\n </div>\n </th>\n </ng-container>\n </tr>\n </ng-container>\n </ng-container>\n </table>\n </div>\n <div class=\"k-scheduler-content\" #content>\n <ng-container *ngIf=\"showCurrentTime\">\n <div *ngFor=\"let resource of horizontalResources | resourceIterator; trackBy: itemIndex;\"\n class=\"k-current-time\" #currentTimeMarker>\n </div>\n </ng-container>\n <table class=\"k-scheduler-table\" #contentTable role=\"presentation\">\n <colgroup>\n <col *ngFor=\"let slotIndex of slotsCount | repeat; trackBy: itemIndex;\" [ngStyle]=\"{ 'width.px': columnWidth }\" />\n </colgroup>\n <tr *ngFor=\"let resourceItem of verticalResources | resourceIterator; let verticalIndex = index; trackBy: itemIndex;\">\n <ng-container *ngFor=\"let resource of horizontalResources | resourceIterator; let horizontalIndex = index; trackBy: itemIndex;\">\n <ng-container *ngFor=\"let daySlot of daySlots; let rangeIndex = index; trackBy: itemIndex;\">\n <td *ngFor=\"let slot of timeSlots; let index = index; trackBy: itemIndex;\"\n [ngClass]=\"timeSlotClass(slot, daySlot.start, verticalResources.length ? verticalIndex : horizontalIndex)\"\n timeSlot #timeSlot=\"timeSlot\"\n [date]=\"daySlot.start\"\n [invariantStart]=\"slot.start\"\n [invariantEnd]=\"slot.end\"\n [workDayStart]=\"workDayStartTime\"\n [workDayEnd]=\"workDayEndTime\"\n [workWeekStart]=\"workWeekStart\"\n [workWeekEnd]=\"workWeekEnd\"\n [id]=\"{ resourceIndex: verticalResources.length ? verticalIndex : horizontalIndex, rangeIndex: rangeIndex, index: index }\"\n >\n <ng-container *ngIf=\"timeSlotTemplateRef\" [ngTemplateOutlet]=\"timeSlotTemplateRef\"\n [ngTemplateOutletContext]=\"{ date: timeSlot.start, resources: resourcesByIndex(timeSlot.id.resourceIndex ) }\">\n </ng-container>\n </td>\n </ng-container>\n </ng-container>\n </tr>\n </table>\n <ng-container *ngFor=\"let item of items | async; trackBy: itemIndex;\">\n <div *ngFor=\"let itemResource of item.resources; trackBy: itemIndex;\"\n [ngClass]=\"getEventClasses(item, itemResource.resources)\"\n [ngStyle]=\"getEventStyles(item, itemResource)\"\n [kendoSchedulerFocusIndex]=\"itemResource.leafIdx\"\n dayTimeViewItem\n [editable]=\"editable\"\n [item]=\"item\"\n [index]=\"item.index\"\n [rangeIndex]=\"item.rangeIndex\"\n [eventTemplate]=\"eventTemplateRef\"\n [resources]=\"itemResource.resources\"\n [resourceIndex]=\"itemResource.leafIdx\">\n </div>\n </ng-container>\n <kendo-hint-container #hintContainer>\n <ng-template>\n <div *ngFor=\"let hint of dragHints; trackBy: itemIndex;\"\n class=\"k-event-drag-hint\"\n dayTimeViewItem\n [ngStyle]=\"hint.style\"\n [ngClass]=\"hint.class\"\n [dragHint]=\"true\"\n [eventTemplate]=\"eventTemplateRef\"\n [item]=\"hint.item\"\n [resources]=\"hint.resources\">\n </div>\n <div *ngIf=\"resizeHints && resizeHints.length\"\n kendoResizeHint\n [hint]=\"resizeHints[0]\"\n [ngClass]=\"resizeHints[0].class\"\n [format]=\"resizeHintFormat\">\n </div>\n </ng-template>\n </kendo-hint-container>\n </div>\n </div>\n </div>\n "
145
+ template: "\n <div class=\"k-scheduler-layout k-scheduler-flex-layout\" [ngClass]=\"classNames\">\n <div class=\"k-scheduler-pane\">\n <div class=\"k-scheduler-times\" #timesHeader>\n <table class=\"k-scheduler-table\" aria-hidden=\"true\">\n <tr><th></th></tr>\n <tr><th class=\"k-slot-cell\"></th></tr>\n <tr *ngFor=\"let resource of horizontalResources; trackBy: itemIndex;\">\n <th></th>\n </tr>\n </table>\n </div>\n <div class=\"k-scheduler-header k-state-default\" #header >\n <div class=\"k-scheduler-header-wrap\" #headerWrap>\n <ng-container *ngIf=\"showCurrentTime\">\n <div *ngFor=\"let resource of horizontalResources | resourceIterator; trackBy: itemIndex;\"\n #currentTimeArrow class=\"k-current-time k-current-time-arrow-down\">\n </div>\n </ng-container>\n <table class=\"k-scheduler-table\" aria-hidden=\"true\">\n <colgroup>\n <col *ngFor=\"let slotIndex of slotsCount | repeat; trackBy: itemIndex;\" [ngStyle]=\"{ 'width.px': columnWidth }\" />\n </colgroup>\n <tr *ngFor=\"let resource of horizontalResources; let resourceIndex = index; trackBy: itemIndex;\">\n <th *ngFor=\"let item of horizontalResources | resourceIterator : resourceIndex; trackBy: itemIndex;\"\n class=\"k-slot-cell\" [attr.colspan]=\"horizontalColspan(resourceIndex)\">\n <ng-container *ngIf=\"!groupHeaderTemplateRef\">{{ getField(item, resource.textField) }}</ng-container>\n <ng-container *ngIf=\"groupHeaderTemplateRef\" [ngTemplateOutlet]=\"groupHeaderTemplateRef\"\n [ngTemplateOutletContext]=\"{ resource: item }\"></ng-container>\n </th>\n </tr>\n <tr>\n <ng-container *ngFor=\"let resource of horizontalResources | resourceIterator; trackBy: itemIndex;\">\n <ng-container *ngFor=\"let daySlot of daySlots; let index = index; trackBy: itemIndex;\">\n <th [attr.colspan]=\"timeSlots.length\" class=\"k-slot-cell\">\n <span *ngIf=\"!dateHeaderTemplateRef\" class=\"k-link\" [ngClass]=\"{ 'k-nav-day': numberOfDays > 1 }\" [attr.data-dayslot-index]=\"index\">{{ daySlot.start | kendoDate: 'm'}}</span>\n <ng-container *ngIf=\"dateHeaderTemplateRef\" [ngTemplateOutlet]=\"dateHeaderTemplateRef\" [ngTemplateOutletContext]=\"{ date: daySlot.start }\"></ng-container>\n </th>\n </ng-container>\n </ng-container>\n </tr>\n <tr>\n <ng-container *ngFor=\"let resource of horizontalResources | resourceIterator; let resourceIndex = index; trackBy: itemIndex;\">\n <ng-container *ngFor=\"let daySlot of daySlots; let rangeIndex = index; trackBy: itemIndex;\">\n <ng-container *ngFor=\"let timeSlot of timeSlots; let index = index; trackBy: itemIndex;\">\n <th *ngIf=\"timeSlot.isMajor\" [attr.colspan]=\"timeColspan(index)\" >{{ timeSlot.start | kendoDate: 't' }}</th>\n </ng-container>\n </ng-container>\n </ng-container>\n </tr>\n </table>\n </div>\n </div>\n </div>\n <div class=\"k-scheduler-pane\">\n <div class=\"k-scheduler-times\" #times>\n <table class=\"k-scheduler-table\" #timesTable aria-hidden=\"true\">\n <tr *ngIf=\"!verticalResources.length\">\n <th rowspan=\"1\" #titleCell>\n {{ allEventsMessage }}\n </th>\n </tr>\n <ng-container *ngIf=\"verticalResources.length\">\n <ng-container *ngFor=\"let resourceItem of verticalResources | resourceIterator; let leafIndex = index; trackBy: itemIndex;\">\n <tr #verticalResourceRows>\n <ng-container *ngFor=\"let resource of verticalResources; let resourceIndex = index; trackBy: itemIndex;\">\n <th *ngIf=\"verticalItem(leafIndex, resourceIndex)\" [attr.rowspan]=\"verticalRowspan(resourceIndex)\" class=\"k-slot-cell\">\n <div>\n <ng-container *ngIf=\"!groupHeaderTemplateRef\">{{ getField(verticalItem(leafIndex, resourceIndex), resource.textField) }}</ng-container>\n <ng-container *ngIf=\"groupHeaderTemplateRef\" [ngTemplateOutlet]=\"groupHeaderTemplateRef\"\n [ngTemplateOutletContext]=\"{ resource: verticalItem(leafIndex, resourceIndex) }\"></ng-container>\n </div>\n </th>\n </ng-container>\n </tr>\n </ng-container>\n </ng-container>\n </table>\n </div>\n <div class=\"k-scheduler-content\" #content>\n <ng-container *ngIf=\"showCurrentTime\">\n <div *ngFor=\"let resource of horizontalResources | resourceIterator; trackBy: itemIndex;\"\n class=\"k-current-time\" #currentTimeMarker>\n </div>\n </ng-container>\n <table class=\"k-scheduler-table k-user-select-none\" #contentTable role=\"presentation\">\n <colgroup>\n <col *ngFor=\"let slotIndex of slotsCount | repeat; trackBy: itemIndex;\" [ngStyle]=\"{ 'width.px': columnWidth }\" />\n </colgroup>\n <tr *ngFor=\"let resourceItem of verticalResources | resourceIterator; let verticalIndex = index; trackBy: itemIndex;\">\n <ng-container *ngFor=\"let resource of horizontalResources | resourceIterator; let horizontalIndex = index; trackBy: itemIndex;\">\n <ng-container *ngFor=\"let daySlot of daySlots; let rangeIndex = index; trackBy: itemIndex;\">\n <td *ngFor=\"let slot of timeSlots; let index = index; trackBy: itemIndex;\"\n [ngClass]=\"timeSlotClass(slot, daySlot.start, verticalResources.length ? verticalIndex : horizontalIndex)\"\n timeSlot #timeSlot=\"timeSlot\"\n [date]=\"daySlot.start\"\n [invariantStart]=\"slot.start\"\n [invariantEnd]=\"slot.end\"\n [workDayStart]=\"workDayStartTime\"\n [workDayEnd]=\"workDayEndTime\"\n [workWeekStart]=\"workWeekStart\"\n [workWeekEnd]=\"workWeekEnd\"\n selectableSlot\n [id]=\"{ resourceIndex: verticalResources.length ? verticalIndex : horizontalIndex, rangeIndex: rangeIndex, index: index }\"\n [class.k-state-selected]=\"isSlotSelected({\n start: toPlainDateTime(daySlot.start, slot.start),\n end: toPlainDateTime(daySlot.start, slot.end),\n isAllDay: false,\n resources: resourcesByIndex(verticalResources.length ? verticalIndex : horizontalIndex)\n })\"\n >\n <ng-container *ngIf=\"timeSlotTemplateRef\" [ngTemplateOutlet]=\"timeSlotTemplateRef\"\n [ngTemplateOutletContext]=\"{ date: timeSlot.start, resources: resourcesByIndex(timeSlot.id.resourceIndex ) }\">\n </ng-container>\n </td>\n </ng-container>\n </ng-container>\n </tr>\n </table>\n <ng-container *ngFor=\"let item of items | async; trackBy: itemIndex;\">\n <div *ngFor=\"let itemResource of item.resources; trackBy: itemIndex;\"\n [ngClass]=\"getEventClasses(item, itemResource.resources)\"\n [ngStyle]=\"getEventStyles(item, itemResource)\"\n [kendoSchedulerFocusIndex]=\"itemResource.leafIdx\"\n dayTimeViewItem\n [editable]=\"editable\"\n [item]=\"item\"\n [index]=\"item.index\"\n [rangeIndex]=\"item.rangeIndex\"\n [eventTemplate]=\"eventTemplateRef\"\n [resources]=\"itemResource.resources\"\n [resourceIndex]=\"itemResource.leafIdx\">\n </div>\n </ng-container>\n <kendo-hint-container #hintContainer>\n <ng-template>\n <div *ngFor=\"let hint of dragHints; trackBy: itemIndex;\"\n class=\"k-event-drag-hint\"\n dayTimeViewItem\n [ngStyle]=\"hint.style\"\n [ngClass]=\"hint.class\"\n [dragHint]=\"true\"\n [eventTemplate]=\"eventTemplateRef\"\n [item]=\"hint.item\"\n [resources]=\"hint.resources\">\n </div>\n <div *ngIf=\"resizeHints && resizeHints.length\"\n kendoResizeHint\n [hint]=\"resizeHints[0]\"\n [ngClass]=\"resizeHints[0].class\"\n [format]=\"resizeHintFormat\">\n </div>\n </ng-template>\n </kendo-hint-container>\n </div>\n </div>\n </div>\n "
146
146
  }),
147
147
  tslib_1.__metadata("design:paramtypes", [LocalizationService,
148
148
  ChangeDetectorRef,
@@ -72,6 +72,24 @@ export function toUTCDateTime(localDate) {
72
72
  export function dateWithTime(target, time) {
73
73
  return new Date(target.getFullYear(), target.getMonth(), target.getDate(), time.getHours(), time.getMinutes());
74
74
  }
75
+ /**
76
+ * @hidden
77
+ * Flips the start and end values of a slot selection based on whether
78
+ * the last dragged-over slot is before or after the slot where the selection began.
79
+ */
80
+ export function normaliseRangeStartAndEnd(selectionOrigin, currentSlot) {
81
+ var start;
82
+ var end;
83
+ if (currentSlot.end <= selectionOrigin.end) {
84
+ end = selectionOrigin.end;
85
+ start = currentSlot.start;
86
+ }
87
+ else {
88
+ start = selectionOrigin.start;
89
+ end = currentSlot.end;
90
+ }
91
+ return { start: start, end: end };
92
+ }
75
93
  function getDataIdx(value, resource) {
76
94
  var data = resource.data;
77
95
  for (var dataIdx = 0; dataIdx < data.length; dataIdx++) {
@@ -180,6 +198,33 @@ export function assignTasksResources(tasks, options) {
180
198
  task.resources = eventResources(task.event, options);
181
199
  }
182
200
  }
201
+ /**
202
+ * @hidden
203
+ */
204
+ export function isEmptyResource(resources) {
205
+ return Array.isArray(resources) && resources.length === 1 && resources[0] === undefined;
206
+ }
207
+ /**
208
+ * @hidden
209
+ */
210
+ export function resourcesMatch(res1, res2) {
211
+ if (res1.length !== res2.length) {
212
+ return false;
213
+ }
214
+ if (isEmptyResource(res1) && isEmptyResource(res2)) {
215
+ return true;
216
+ }
217
+ return res1.every(function (r1) { return res2.some(function (r2) { return r2.value === r1.value; }); });
218
+ }
219
+ /**
220
+ * @hidden
221
+ */
222
+ export function isSameRange(range1, range2) {
223
+ return (range1.start.getTime() === range2.start.getTime() &&
224
+ range1.end.getTime() === range2.end.getTime() &&
225
+ range1.isAllDay === range2.isAllDay &&
226
+ resourcesMatch(range1.resources, range2.resources));
227
+ }
183
228
  /** @hidden */
184
229
  export function findRowIndex(events, data) {
185
230
  if (data.rowIndex !== undefined) {
@@ -284,3 +329,7 @@ export var isWorkWeekDay = function (day, start, end) {
284
329
  }
285
330
  return start <= day && day <= end;
286
331
  };
332
+ /**
333
+ * @hidden
334
+ */
335
+ export var alwaysFalse = function () { return false; };
@@ -23,12 +23,18 @@ var ViewStateService = /** @class */ (function () {
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 @@ var ViewStateService = /** @class */ (function () {
72
78
  args: args
73
79
  });
74
80
  };
81
+ /** @hidden */
82
+ ViewStateService.prototype.notifySlotSelectionStart = function (selection) {
83
+ this.slotSelectionStartSource.next(selection);
84
+ };
85
+ /** @hidden */
86
+ ViewStateService.prototype.notifySlotSelectionDrag = function (selection) {
87
+ this.slotSelectionStartDragSource.next(selection);
88
+ };
89
+ /** @hidden */
90
+ ViewStateService.prototype.notifySlotSelectionEnd = function (selection) {
91
+ this.slotSelectionStartEndSource.next(selection);
92
+ };
75
93
  ViewStateService = tslib_1.__decorate([
76
94
  Injectable(),
77
95
  tslib_1.__metadata("design:paramtypes", [])
@@ -85,7 +85,13 @@ SchedulerDateTimePickerComponent = tslib_1.__decorate([
85
85
  [(value)]='date'
86
86
  (valueChange)='onValueChange($event)'
87
87
  ></kendo-timepicker>
88
- `
88
+ `,
89
+ styles: [`
90
+ kendo-datepicker,
91
+ kendo-timepicker {
92
+ width: 170px;
93
+ }
94
+ `]
89
95
  })
90
96
  ], SchedulerDateTimePickerComponent);
91
97
  export { SchedulerDateTimePickerComponent };
@@ -257,7 +257,7 @@ EditDialogComponent = tslib_1.__decorate([
257
257
  <label for='k-event-title'>{{ textFor('editorEventTitle') }}</label>
258
258
  </div>
259
259
  <div class='k-edit-field'>
260
- <input #title id='k-event-title' class='k-textbox' placeholder='Title' [formControl]='formGroup.get(fields.title)' />
260
+ <input #title id='k-event-title' kendoTextBox placeholder='Title' [formControl]='formGroup.get(fields.title)' />
261
261
  </div>
262
262
 
263
263
  <div class='k-edit-label'>
@@ -299,17 +299,17 @@ EditDialogComponent = tslib_1.__decorate([
299
299
  </ng-container>
300
300
 
301
301
  <div class='k-edit-field' *ngIf="hasAllDay">
302
- <input type='checkbox' id='k-is-allday-chkbox' class='k-checkbox' [formControl]='formGroup.get(fields.isAllDay)' />
302
+ <input type='checkbox' id='k-is-allday-chkbox' kendoCheckBox [formControl]='formGroup.get(fields.isAllDay)' />
303
303
  <label class='k-checkbox-label' for='k-is-allday-chkbox'>{{ textFor('editorEventAllDay') }}</label>
304
304
  </div>
305
305
 
306
306
  <div class='k-edit-field' *ngIf="hasStartTimeZone">
307
- <input type='checkbox' id='k-set-timezone' class='k-checkbox'
307
+ <input type='checkbox' id='k-set-timezone' kendoCheckBox
308
308
  formControlName='startTimezoneCheckbox' />
309
309
  <label class='k-checkbox-label' for='k-set-timezone'>{{ textFor('editorEventTimeZone') }}</label>
310
310
 
311
311
  <ng-container *ngIf="isStartTimeZoneVisible && hasEndTimeZone">
312
- <input type='checkbox' id='k-use-separate' class='k-checkbox' formControlName='endTimezoneCheckbox' />
312
+ <input type='checkbox' id='k-use-separate' kendoCheckBox formControlName='endTimezoneCheckbox' />
313
313
  <label class='k-checkbox-label' for='k-use-separate'>{{ textFor('editorEventSeparateTimeZones') }}</label>
314
314
  </ng-container>
315
315
  </div>
@@ -328,7 +328,7 @@ EditDialogComponent = tslib_1.__decorate([
328
328
  <label for='k-event-description'>{{ textFor('editorEventDescription') }}</label>
329
329
  </div>
330
330
  <div class='k-edit-field'>
331
- <textarea id='k-event-description' class='k-textbox' [formControl]='formGroup.get(fields.description)'></textarea>
331
+ <textarea id='k-event-description' kendoTextArea [formControl]='formGroup.get(fields.description)'></textarea>
332
332
  </div>
333
333
  </ng-container>
334
334
 
@@ -373,8 +373,8 @@ EditDialogComponent = tslib_1.__decorate([
373
373
  </ng-container>
374
374
 
375
375
  <kendo-dialog-actions>
376
- <button class="k-button" (click)="onCancel($event)">{{ textFor('cancel') }}</button>
377
- <button class="k-button k-primary" (click)="onSave($event)" [disabled]="!formGroup.valid">{{ textFor('save') }}</button>
376
+ <button kendoButton (click)="onCancel($event)">{{ textFor('cancel') }}</button>
377
+ <button kendoButton themeColor="primary" (click)="onSave($event)" [disabled]="!formGroup.valid">{{ textFor('save') }}</button>
378
378
  </kendo-dialog-actions>
379
379
  </kendo-dialog>
380
380
  `
@@ -14,6 +14,7 @@ export declare class EndRuleRadioButtonDirective implements OnInit, AfterContent
14
14
  private changeDetector;
15
15
  type: string;
16
16
  radioClass: boolean;
17
+ radioSizeClass: boolean;
17
18
  endRuleId: string;
18
19
  private destroyChange;
19
20
  private endRule;
@@ -16,6 +16,7 @@ let EndRuleRadioButtonDirective = class EndRuleRadioButtonDirective {
16
16
  this.changeDetector = changeDetector;
17
17
  this.type = 'radio';
18
18
  this.radioClass = true;
19
+ this.radioSizeClass = true;
19
20
  this.destroyChange = this.renderer.listen(this.elem, 'change', this.onChange.bind(this));
20
21
  }
21
22
  ngOnInit() {
@@ -53,6 +54,10 @@ tslib_1.__decorate([
53
54
  HostBinding('class.k-radio'),
54
55
  tslib_1.__metadata("design:type", Boolean)
55
56
  ], EndRuleRadioButtonDirective.prototype, "radioClass", void 0);
57
+ tslib_1.__decorate([
58
+ HostBinding('class.k-radio-md'),
59
+ tslib_1.__metadata("design:type", Boolean)
60
+ ], EndRuleRadioButtonDirective.prototype, "radioSizeClass", void 0);
56
61
  tslib_1.__decorate([
57
62
  Input("kendoRecurrenceEndRuleRadioButton"),
58
63
  tslib_1.__metadata("design:type", String)
@@ -263,7 +263,9 @@ RecurrenceMonthlyYearlyEditorComponent = tslib_1.__decorate([
263
263
  [value]='currentMonthMonthDay'
264
264
  [valuePrimitive]='true'
265
265
  (valueChange)="onMonthChange($event, 'monthday')"
266
- [disabled]="isDisabled('monthday')">
266
+ [disabled]="isDisabled('monthday')"
267
+ [style.width.px]="170"
268
+ [style.margin]="'0 .4ex 0 1ex'">
267
269
  </kendo-dropdownlist>
268
270
  </ng-template>
269
271
 
@@ -281,7 +283,8 @@ RecurrenceMonthlyYearlyEditorComponent = tslib_1.__decorate([
281
283
  [title]="numericOptions.title"
282
284
  [value]='monthDay'
283
285
  (valueChange)='onMonthDayChange($event)'
284
- [disabled]="isDisabled('monthday')">
286
+ [disabled]="isDisabled('monthday')"
287
+ [style.margin]="'0 .4ex 0 1ex'">
285
288
  </kendo-numerictextbox>
286
289
  </li>
287
290
  <li>
@@ -295,7 +298,9 @@ RecurrenceMonthlyYearlyEditorComponent = tslib_1.__decorate([
295
298
  [value]='offset'
296
299
  [valuePrimitive]='true'
297
300
  (valueChange)='onOffsetPositionChange($event)'
298
- [disabled]="isDisabled('weekday')">
301
+ [disabled]="isDisabled('weekday')"
302
+ [style.width.px]="170"
303
+ [style.margin]="'0 .4ex 0 1ex'">
299
304
  </kendo-dropdownlist>
300
305
 
301
306
  <kendo-dropdownlist
@@ -305,7 +310,9 @@ RecurrenceMonthlyYearlyEditorComponent = tslib_1.__decorate([
305
310
  [value]='weekDay'
306
311
  [valuePrimitive]='true'
307
312
  (valueChange)='onWeekDayChange($event)'
308
- [disabled]="isDisabled('weekday')">
313
+ [disabled]="isDisabled('weekday')"
314
+ [style.width.px]="170"
315
+ [style.margin]="'0 .4ex 0 1ex'">
309
316
  </kendo-dropdownlist>
310
317
 
311
318
  <ng-template [ngIf]="currentFreq === 'yearly'">
@@ -318,7 +325,9 @@ RecurrenceMonthlyYearlyEditorComponent = tslib_1.__decorate([
318
325
  [value]='currentMonthWeekDay'
319
326
  [valuePrimitive]='true'
320
327
  (valueChange)="onMonthChange($event, 'weekday')"
321
- [disabled]="isDisabled('weekday')">
328
+ [disabled]="isDisabled('weekday')"
329
+ [style.width.px]="170"
330
+ [style.margin]="'0 .4ex 0 1ex'">
322
331
  </kendo-dropdownlist>
323
332
  </ng-template>
324
333
  </li>
@@ -14,6 +14,7 @@ export declare class RepeatOnRadioButtonDirective implements OnInit, AfterConten
14
14
  private changeDetector;
15
15
  type: string;
16
16
  radioClass: boolean;
17
+ radioSizeClass: boolean;
17
18
  repeatOnRule: string;
18
19
  private destroyChange;
19
20
  private _repeatOnRule;
@@ -16,6 +16,7 @@ let RepeatOnRadioButtonDirective = class RepeatOnRadioButtonDirective {
16
16
  this.changeDetector = changeDetector;
17
17
  this.type = 'radio';
18
18
  this.radioClass = true;
19
+ this.radioSizeClass = true;
19
20
  this.destroyChange = this.renderer.listen(this.elem, 'change', this.onChange.bind(this));
20
21
  }
21
22
  /* tslint:disable-next-line:no-input-rename */
@@ -58,6 +59,10 @@ tslib_1.__decorate([
58
59
  HostBinding('class.k-radio'),
59
60
  tslib_1.__metadata("design:type", Boolean)
60
61
  ], RepeatOnRadioButtonDirective.prototype, "radioClass", void 0);
62
+ tslib_1.__decorate([
63
+ HostBinding('class.k-radio-md'),
64
+ tslib_1.__metadata("design:type", Boolean)
65
+ ], RepeatOnRadioButtonDirective.prototype, "radioSizeClass", void 0);
61
66
  tslib_1.__decorate([
62
67
  Input("kendoRecurrenceRepeatOnRadioButton"),
63
68
  tslib_1.__metadata("design:type", String),
@@ -0,0 +1,10 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2021 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ import { SlotDragEvent } from './slot-drag-event';
6
+ /**
7
+ * Arguments for the `slotDragEnd` event.
8
+ */
9
+ export declare class SlotDragEndEvent extends SlotDragEvent {
10
+ }
@@ -0,0 +1,10 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2021 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ import { SlotDragEvent } from './slot-drag-event';
6
+ /**
7
+ * Arguments for the `slotDragEnd` event.
8
+ */
9
+ export class SlotDragEndEvent extends SlotDragEvent {
10
+ }
@@ -0,0 +1,39 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2021 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ import { SchedulerComponent } from '../scheduler.component';
6
+ import { ExtendedSlotRange } from '../types/slot-selection';
7
+ /**
8
+ * Arguments for the `slotDrag` event.
9
+ */
10
+ export declare class SlotDragEvent implements ExtendedSlotRange {
11
+ /**
12
+ * The start date of the slot selection.
13
+ */
14
+ start: Date;
15
+ /**
16
+ * The end date of the slot selection.
17
+ */
18
+ end: Date;
19
+ /**
20
+ * Indicates if the slot selection consists of all-day slots, or of time slots.
21
+ */
22
+ isAllDay: boolean;
23
+ /**
24
+ * The resources for the slot, if grouping by resource; otherwise all Scheduler resources.
25
+ */
26
+ resources: any[];
27
+ /**
28
+ * The original DOM event.
29
+ */
30
+ originalEvent: PointerEvent;
31
+ /**
32
+ * A reference to the Scheduler instance that triggered the event.
33
+ */
34
+ sender: SchedulerComponent;
35
+ /**
36
+ * @hidden
37
+ */
38
+ constructor(sender: SchedulerComponent, args: ExtendedSlotRange);
39
+ }
@@ -0,0 +1,16 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2021 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ /**
6
+ * Arguments for the `slotDrag` event.
7
+ */
8
+ export class SlotDragEvent {
9
+ /**
10
+ * @hidden
11
+ */
12
+ constructor(sender, args) {
13
+ this.sender = sender;
14
+ Object.assign(this, args);
15
+ }
16
+ }
@@ -0,0 +1,41 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2021 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ import { SchedulerComponent } from '../scheduler.component';
6
+ import { ExtendedSlotRange } from '../types/slot-selection';
7
+ import { PreventableEvent } from './preventable-event';
8
+ /**
9
+ * Arguments for the `slotDragStart` event.
10
+ * The event is preventable and if prevented, subsequent `slotDrag`, `slotDragEnd`, and `slotSelectionChange` will not be fired.
11
+ */
12
+ export declare class SlotDragStartEvent extends PreventableEvent implements ExtendedSlotRange {
13
+ /**
14
+ * The start date of the slot selection.
15
+ */
16
+ start: Date;
17
+ /**
18
+ * The end date of the slot selection.
19
+ */
20
+ end: Date;
21
+ /**
22
+ * Indicates if the slot selection consists of all-day slots, or of time slots.
23
+ */
24
+ isAllDay: boolean;
25
+ /**
26
+ * The resources for the slot, if grouping by resource; otherwise all Scheduler resources.
27
+ */
28
+ resources: any[];
29
+ /**
30
+ * The original DOM event.
31
+ */
32
+ originalEvent: PointerEvent;
33
+ /**
34
+ * A reference to the Scheduler instance that triggered the event.
35
+ */
36
+ sender: SchedulerComponent;
37
+ /**
38
+ * @hidden
39
+ */
40
+ constructor(sender: SchedulerComponent, args: ExtendedSlotRange);
41
+ }
@@ -0,0 +1,19 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2021 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ import { PreventableEvent } from './preventable-event';
6
+ /**
7
+ * Arguments for the `slotDragStart` event.
8
+ * The event is preventable and if prevented, subsequent `slotDrag`, `slotDragEnd`, and `slotSelectionChange` will not be fired.
9
+ */
10
+ export class SlotDragStartEvent extends PreventableEvent {
11
+ /**
12
+ * @hidden
13
+ */
14
+ constructor(sender, args) {
15
+ super();
16
+ this.sender = sender;
17
+ Object.assign(this, args);
18
+ }
19
+ }
@@ -20,3 +20,6 @@ export { DragEvent } from './events/drag-event';
20
20
  export { DragEndEvent } from './events/drag-end-event';
21
21
  export { EditEvent } from './events/edit-event';
22
22
  export { AddEvent } from './events/add-event';
23
+ export { SlotDragStartEvent } from './events/slot-drag-start-event';
24
+ export { SlotDragEvent } from './events/slot-drag-event';
25
+ export { SlotDragEndEvent } from './events/slot-drag-end-event';
@@ -20,3 +20,6 @@ export { DragEvent } from './events/drag-event';
20
20
  export { DragEndEvent } from './events/drag-end-event';
21
21
  export { EditEvent } from './events/edit-event';
22
22
  export { AddEvent } from './events/add-event';
23
+ export { SlotDragStartEvent } from './events/slot-drag-start-event';
24
+ export { SlotDragEvent } from './events/slot-drag-event';
25
+ export { SlotDragEndEvent } from './events/slot-drag-end-event';
@@ -46,6 +46,7 @@ export { ToolbarTemplateDirective } from './toolbar/toolbar-template.directive';
46
46
  export { ToolbarComponent } from './toolbar/toolbar.component';
47
47
  export { ToolbarModule, publicDirectives } from './toolbar/toolbar.module';
48
48
  export { ToolbarViewSelectorComponent } from './toolbar/view-selector.component';
49
+ export { ExtendedSlotRange } from './types/slot-selection';
49
50
  export { AgendaHeaderItemComponent } from './views/agenda/agenda-header-item.component';
50
51
  export { AgendaHeaderComponent } from './views/agenda/agenda-header.component';
51
52
  export { AgendaTaskItemComponent } from './views/agenda/agenda-task-item.component';
@@ -59,6 +60,7 @@ export { HintContainerComponent } from './views/common/hint-container.component'
59
60
  export { RepeatPipe } from './views/common/repeat.pipe';
60
61
  export { ResizeHintComponent } from './views/common/resize-hint.component';
61
62
  export { ResourceIteratorPipe } from './views/common/resource-iterator.pipe';
63
+ export { SlotSelectableDirective } from './views/common/slot-selectable.directive';
62
64
  export { ViewFooterComponent } from './views/common/view-footer.component';
63
65
  export { ViewsSharedModule } from './views/common/views-shared.module';
64
66
  export { WorkHoursFooterDirective } from './views/common/work-hours-footer.directive';
@@ -59,6 +59,7 @@ export { HintContainerComponent } from './views/common/hint-container.component'
59
59
  export { RepeatPipe } from './views/common/repeat.pipe';
60
60
  export { ResizeHintComponent } from './views/common/resize-hint.component';
61
61
  export { ResourceIteratorPipe } from './views/common/resource-iterator.pipe';
62
+ export { SlotSelectableDirective } from './views/common/slot-selectable.directive';
62
63
  export { ViewFooterComponent } from './views/common/view-footer.component';
63
64
  export { ViewsSharedModule } from './views/common/views-shared.module';
64
65
  export { WorkHoursFooterDirective } from './views/common/work-hours-footer.directive';