@progress/kendo-angular-scheduler 3.0.2 → 3.1.0-dev.202204121440

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 (70) 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/package-metadata.js +1 -1
  4. package/dist/es/scheduler.component.js +9 -0
  5. package/dist/es/types/ongoing-events-settings.interface.js +4 -0
  6. package/dist/es/views/common/base-view.js +3 -0
  7. package/dist/es/views/common/configuration-view-base.js +14 -0
  8. package/dist/es/views/constants.js +6 -0
  9. package/dist/es/views/day-time/day-time-view-base.js +15 -0
  10. package/dist/es/views/day-time/day-time-view.component.js +36 -2
  11. package/dist/es/views/month/month-view-renderer.component.js +47 -5
  12. package/dist/es/views/month/month-view.component.js +1 -1
  13. package/dist/es/views/multi-day/day-view.component.js +1 -1
  14. package/dist/es/views/multi-day/multi-day-view.component.js +1 -1
  15. package/dist/es/views/multi-day/week-view.component.js +1 -1
  16. package/dist/es/views/multi-day/work-week-view.component.js +1 -1
  17. package/dist/es/views/timeline/timeline-month-view.component.js +1 -1
  18. package/dist/es/views/timeline/timeline-view.component.js +1 -1
  19. package/dist/es/views/timeline/timeline-week-view.component.js +1 -1
  20. package/dist/es/views/utils.js +5 -1
  21. package/dist/es2015/index.metadata.json +1 -1
  22. package/dist/es2015/package-metadata.js +1 -1
  23. package/dist/es2015/scheduler.component.d.ts +5 -1
  24. package/dist/es2015/scheduler.component.js +9 -0
  25. package/dist/es2015/types/ongoing-events-settings.interface.d.ts +23 -0
  26. package/dist/es2015/types/ongoing-events-settings.interface.js +4 -0
  27. package/dist/es2015/types.d.ts +1 -0
  28. package/dist/es2015/views/common/base-view.d.ts +6 -0
  29. package/dist/es2015/views/common/base-view.js +3 -0
  30. package/dist/es2015/views/common/configuration-view-base.d.ts +9 -1
  31. package/dist/es2015/views/common/configuration-view-base.js +10 -0
  32. package/dist/es2015/views/constants.d.ts +6 -0
  33. package/dist/es2015/views/constants.js +6 -0
  34. package/dist/es2015/views/day-time/day-time-view-base.d.ts +9 -1
  35. package/dist/es2015/views/day-time/day-time-view-base.js +11 -0
  36. package/dist/es2015/views/day-time/day-time-view.component.d.ts +6 -0
  37. package/dist/es2015/views/day-time/day-time-view.component.js +34 -2
  38. package/dist/es2015/views/month/month-view-renderer.component.d.ts +10 -1
  39. package/dist/es2015/views/month/month-view-renderer.component.js +45 -5
  40. package/dist/es2015/views/month/month-view.component.js +1 -0
  41. package/dist/es2015/views/multi-day/day-view.component.js +1 -0
  42. package/dist/es2015/views/multi-day/multi-day-view.component.js +1 -0
  43. package/dist/es2015/views/multi-day/week-view.component.js +1 -0
  44. package/dist/es2015/views/multi-day/work-week-view.component.js +1 -0
  45. package/dist/es2015/views/timeline/timeline-month-view.component.js +1 -0
  46. package/dist/es2015/views/timeline/timeline-view.component.js +1 -0
  47. package/dist/es2015/views/timeline/timeline-week-view.component.js +1 -0
  48. package/dist/es2015/views/utils.js +5 -1
  49. package/dist/fesm2015/index.js +198 -79
  50. package/dist/fesm5/index.js +179 -56
  51. package/dist/npm/package-metadata.js +1 -1
  52. package/dist/npm/scheduler.component.js +9 -0
  53. package/dist/npm/types/ongoing-events-settings.interface.js +6 -0
  54. package/dist/npm/views/common/base-view.js +3 -0
  55. package/dist/npm/views/common/configuration-view-base.js +14 -0
  56. package/dist/npm/views/constants.js +6 -0
  57. package/dist/npm/views/day-time/day-time-view-base.js +15 -0
  58. package/dist/npm/views/day-time/day-time-view.component.js +34 -0
  59. package/dist/npm/views/month/month-view-renderer.component.js +49 -7
  60. package/dist/npm/views/month/month-view.component.js +1 -1
  61. package/dist/npm/views/multi-day/day-view.component.js +1 -1
  62. package/dist/npm/views/multi-day/multi-day-view.component.js +1 -1
  63. package/dist/npm/views/multi-day/week-view.component.js +1 -1
  64. package/dist/npm/views/multi-day/work-week-view.component.js +1 -1
  65. package/dist/npm/views/timeline/timeline-month-view.component.js +1 -1
  66. package/dist/npm/views/timeline/timeline-view.component.js +1 -1
  67. package/dist/npm/views/timeline/timeline-week-view.component.js +1 -1
  68. package/dist/npm/views/utils.js +5 -1
  69. package/dist/systemjs/kendo-angular-scheduler.js +1 -1
  70. package/package.json +2 -2
@@ -3,7 +3,7 @@
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import { __decorate, __param, __metadata } from 'tslib';
6
- import { Directive, Optional, TemplateRef, Injectable, EventEmitter, NgZone, Input, Renderer2, ElementRef, ChangeDetectorRef, Inject, isDevMode, HostBinding, Component, Output, ContentChild, ContentChildren, QueryList, ViewChild, ViewContainerRef, ChangeDetectionStrategy, ViewEncapsulation, forwardRef, NgModule, LOCALE_ID, Pipe, ViewChildren, HostListener } from '@angular/core';
6
+ import { Directive, Optional, TemplateRef, Injectable, EventEmitter, NgZone, Input, Renderer2, ElementRef, ChangeDetectorRef, Inject, isDevMode, HostBinding, Component, Output, ContentChild, ContentChildren, QueryList, ViewChild, ViewContainerRef, ChangeDetectionStrategy, ViewEncapsulation, forwardRef, NgModule, LOCALE_ID, ViewChildren, Pipe, HostListener } from '@angular/core';
7
7
  import { LocalizationService, L10N_PREFIX, RTL, MessageService, ComponentMessages } from '@progress/kendo-angular-l10n';
8
8
  import { hasObservers, isDocumentAvailable, isChanged, anyChanged, ResizeSensorComponent, EventsModule, guid, Keys, ResizeSensorModule } from '@progress/kendo-angular-common';
9
9
  import { isEqualDate, getDate, Day, ZonedDate, toLocalDate, MS_PER_DAY, addDays, firstDayOfMonth, addMonths, firstDayInWeek, timezoneNames } from '@progress/kendo-date-math';
@@ -32,7 +32,7 @@ const packageMetadata = {
32
32
  name: '@progress/kendo-angular-scheduler',
33
33
  productName: 'Kendo UI for Angular',
34
34
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
35
- publishDate: 1646219330,
35
+ publishDate: 1649774242,
36
36
  version: '',
37
37
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'
38
38
  };
@@ -1948,7 +1948,11 @@ function eventResources(event, { taskResources, hasGroups, spans, allResources =
1948
1948
  for (let valueIdx = 0; valueIdx < values.length; valueIdx++) {
1949
1949
  const dataIdx = getDataIdx(values[valueIdx], resource);
1950
1950
  if (dataIdx < 0) {
1951
- return [{ leafIdx: hasGroups ? -1 : 0, resources: [] }];
1951
+ if (hasGroups) {
1952
+ // No match for this resource, but the event might still match other resources.
1953
+ continue;
1954
+ }
1955
+ return [{ leafIdx: 0, resources: [] }];
1952
1956
  }
1953
1957
  const item = resource.data[dataIdx];
1954
1958
  // has groups - need all copies of the multiple resource
@@ -2224,6 +2228,10 @@ let SchedulerComponent = class SchedulerComponent {
2224
2228
  * Specifies the Scheduler current time marker settings.
2225
2229
  */
2226
2230
  this.currentTimeMarker = true;
2231
+ /**
2232
+ * Specifies the settings for the ongoing events highlight of the Scheduler.
2233
+ */
2234
+ this.highlightOngoingEvents = true;
2227
2235
  /**
2228
2236
  * A callback that executes for each slot of the Scheduler view.
2229
2237
  * If it returns `true`, the `k-state-selected` CSS class will be added to the cell, making it visibly selected.
@@ -2795,6 +2803,7 @@ let SchedulerComponent = class SchedulerComponent {
2795
2803
  selectable: this.selectable,
2796
2804
  timezone: this.timezone,
2797
2805
  currentTimeMarker: this.currentTimeMarker,
2806
+ highlightOngoingEvents: this.highlightOngoingEvents,
2798
2807
  slotClass: this.slotClass,
2799
2808
  slotFill: this.slotFill,
2800
2809
  columnWidth: this.columnWidth,
@@ -3054,6 +3063,10 @@ __decorate([
3054
3063
  Input(),
3055
3064
  __metadata("design:type", Object)
3056
3065
  ], SchedulerComponent.prototype, "currentTimeMarker", void 0);
3066
+ __decorate([
3067
+ Input(),
3068
+ __metadata("design:type", Object)
3069
+ ], SchedulerComponent.prototype, "highlightOngoingEvents", void 0);
3057
3070
  __decorate([
3058
3071
  Input(),
3059
3072
  __metadata("design:type", Function)
@@ -4525,6 +4538,12 @@ class ConfigurationViewBase extends SchedulerView {
4525
4538
  get viewEventStyles() {
4526
4539
  return isPresent(this.eventStyles) ? this.eventStyles : this.schedulerOptions.eventStyles;
4527
4540
  }
4541
+ /**
4542
+ * @hidden
4543
+ */
4544
+ get viewHighlightOngoingEvents() {
4545
+ return isPresent(this.highlightOngoingEvents) ? this.highlightOngoingEvents : this.schedulerOptions.highlightOngoingEvents;
4546
+ }
4528
4547
  /**
4529
4548
  * @hidden
4530
4549
  */
@@ -4553,6 +4572,10 @@ __decorate([
4553
4572
  Input(),
4554
4573
  __metadata("design:type", Function)
4555
4574
  ], ConfigurationViewBase.prototype, "eventStyles", void 0);
4575
+ __decorate([
4576
+ Input(),
4577
+ __metadata("design:type", Object)
4578
+ ], ConfigurationViewBase.prototype, "highlightOngoingEvents", void 0);
4556
4579
  __decorate([
4557
4580
  ViewChild('content', { static: true }),
4558
4581
  __metadata("design:type", TemplateRef)
@@ -5730,6 +5753,12 @@ const MS_PER_MINUTE = 60 * MS_PER_SECOND;
5730
5753
  const BORDER_WIDTH = 1;
5731
5754
  /** @hidden */
5732
5755
  const DEFAULT_EVENT_HEIGHT = 25;
5756
+ /** @hidden */
5757
+ const ONGOING_EVENT_CSS_CLASS = 'k-event-ongoing';
5758
+ /** @hidden */
5759
+ const DAYS_IN_WEEK_COUNT = 7;
5760
+ /** @hidden */
5761
+ const WEEKS_COUNT = 6;
5733
5762
 
5734
5763
  //better try to measure this one
5735
5764
  const MORE_BUTTON_HEIGHT = 13;
@@ -6293,6 +6322,7 @@ MonthViewComponent = MonthViewComponent_1 = __decorate([
6293
6322
  [monthDaySlotTemplate]="monthDaySlotTemplate?.templateRef"
6294
6323
  [selectedDateFormat]="selectedDateFormat"
6295
6324
  [selectedShortDateFormat]="selectedShortDateFormat"
6325
+ [highlightOngoingEvents]="viewHighlightOngoingEvents"
6296
6326
  [weekStart]="viewWeekStart">
6297
6327
  </month-view>
6298
6328
  </ng-template>
@@ -6407,6 +6437,9 @@ class BaseView {
6407
6437
  this.pdfService = pdfService;
6408
6438
  this.localization = localization;
6409
6439
  this.cdr = cdr;
6440
+ /**
6441
+ * The non-all-day events.
6442
+ */
6410
6443
  this.items = new BehaviorSubject(null);
6411
6444
  this.horizontalResources = [];
6412
6445
  this.verticalResources = [];
@@ -7389,8 +7422,6 @@ __decorate([
7389
7422
  __metadata("design:type", HintContainerComponent)
7390
7423
  ], BaseView.prototype, "hintContainer", void 0);
7391
7424
 
7392
- const DAYS_IN_WEEK_COUNT = 7;
7393
- const WEEKS_COUNT = 6;
7394
7425
  /**
7395
7426
  * @hidden
7396
7427
  */
@@ -7399,6 +7430,7 @@ let MonthViewRendererComponent = class MonthViewRendererComponent extends BaseVi
7399
7430
  super(viewContext, viewState, intl, slotService, zone, renderer, element, pdfService, localization, changeDetector);
7400
7431
  this.resizeHintFormat = { skeleton: 'Md' };
7401
7432
  this.weeks = [];
7433
+ this.updateOngoingEvents = this.updateOngoingEvents.bind(this);
7402
7434
  }
7403
7435
  get monthDaySlotTemplateRef() {
7404
7436
  return this.monthDaySlotTemplate || (this.schedulerMonthDaySlotTemplate || {}).templateRef;
@@ -7409,6 +7441,14 @@ let MonthViewRendererComponent = class MonthViewRendererComponent extends BaseVi
7409
7441
  }
7410
7442
  super.ngOnChanges(changes);
7411
7443
  }
7444
+ ngAfterViewInit() {
7445
+ this.updateOngoingEvents();
7446
+ super.ngAfterViewInit();
7447
+ }
7448
+ ngOnDestroy() {
7449
+ clearTimeout(this.ongoingEventsTimeout);
7450
+ super.ngOnDestroy();
7451
+ }
7412
7452
  horizontalColspan(resourceIndex) {
7413
7453
  const resources = this.horizontalResources;
7414
7454
  let result = DAYS_IN_WEEK_COUNT;
@@ -7536,6 +7576,28 @@ let MonthViewRendererComponent = class MonthViewRendererComponent extends BaseVi
7536
7576
  slotByPosition(x, y) {
7537
7577
  return this.slotService.slotByPosition(x, y);
7538
7578
  }
7579
+ updateOngoingEvents() {
7580
+ const disabled = !this.highlightOngoingEvents || this.highlightOngoingEvents.enabled === false;
7581
+ if (!isDocumentAvailable() || disabled) {
7582
+ return;
7583
+ }
7584
+ clearTimeout(this.ongoingEventsTimeout);
7585
+ this.zone.runOutsideAngular(() => {
7586
+ this.ongoingEventsTimeout = setTimeout(this.updateOngoingEvents, this.highlightOngoingEvents.updateInterval || MS_PER_MINUTE);
7587
+ });
7588
+ this.toggleOngoingClass();
7589
+ }
7590
+ currentTime() {
7591
+ return new Date();
7592
+ }
7593
+ toggleOngoingClass() {
7594
+ const now = this.currentTime();
7595
+ const cssClass = isPresent(this.highlightOngoingEvents.cssClass) ? this.highlightOngoingEvents.cssClass : ONGOING_EVENT_CSS_CLASS;
7596
+ this.eventElements.forEach((event) => {
7597
+ const isOngoing = dateInRange(now, event.item.start, event.item.end);
7598
+ this.renderer[isOngoing ? 'addClass' : 'removeClass'](event.nativeElement, cssClass);
7599
+ });
7600
+ }
7539
7601
  createDaySlots({ start }) {
7540
7602
  const weeks = [];
7541
7603
  let date = start;
@@ -7554,6 +7616,14 @@ __decorate([
7554
7616
  Input(),
7555
7617
  __metadata("design:type", TemplateRef)
7556
7618
  ], MonthViewRendererComponent.prototype, "monthDaySlotTemplate", void 0);
7619
+ __decorate([
7620
+ Input(),
7621
+ __metadata("design:type", Object)
7622
+ ], MonthViewRendererComponent.prototype, "highlightOngoingEvents", void 0);
7623
+ __decorate([
7624
+ ViewChildren(MonthViewItemComponent),
7625
+ __metadata("design:type", QueryList)
7626
+ ], MonthViewRendererComponent.prototype, "eventElements", void 0);
7557
7627
  MonthViewRendererComponent = __decorate([
7558
7628
  Component({
7559
7629
  // tslint:disable-next-line:component-selector
@@ -8122,6 +8192,7 @@ const WORK_WEEK_END = 'workWeekEnd';
8122
8192
  const SLOT_DURATION = 'slotDuration';
8123
8193
  const SLOT_DIVISIONS = 'slotDivisions';
8124
8194
  const CURRENT_TIME_MARKER = 'currentTimeMarker';
8195
+ const HIGHLIGHT_ONGOING_EVENTS = 'highlightOngoingEvents';
8125
8196
  /**
8126
8197
  * @hidden
8127
8198
  */
@@ -8195,6 +8266,12 @@ class DayTimeViewBase extends ConfigurationViewBase {
8195
8266
  get viewCurrentTimeMarker() {
8196
8267
  return this.optionValue(CURRENT_TIME_MARKER);
8197
8268
  }
8269
+ /**
8270
+ * @hidden
8271
+ */
8272
+ get viewHighlightOngoingEvents() {
8273
+ return this.optionValue(HIGHLIGHT_ONGOING_EVENTS);
8274
+ }
8198
8275
  /**
8199
8276
  * @hidden
8200
8277
  */
@@ -8261,6 +8338,10 @@ __decorate([
8261
8338
  Input(),
8262
8339
  __metadata("design:type", Object)
8263
8340
  ], DayTimeViewBase.prototype, "currentTimeMarker", void 0);
8341
+ __decorate([
8342
+ Input(),
8343
+ __metadata("design:type", Object)
8344
+ ], DayTimeViewBase.prototype, "highlightOngoingEvents", void 0);
8264
8345
 
8265
8346
  const SLOT_FILL = 'slotFill';
8266
8347
  /**
@@ -8354,6 +8435,7 @@ DayViewComponent = DayViewComponent_1 = __decorate([
8354
8435
  [name]="name"
8355
8436
  [eventHeight]="viewEventHeight"
8356
8437
  [currentTimeMarker]="viewCurrentTimeMarker"
8438
+ [highlightOngoingEvents]="viewHighlightOngoingEvents"
8357
8439
  [showWorkHours]="shouldShowWorkHours"
8358
8440
  [scrollTime]="viewScrollTime"
8359
8441
  [startTime]="viewStartTime"
@@ -8471,6 +8553,7 @@ MultiDayViewComponent = MultiDayViewComponent_1 = __decorate([
8471
8553
  [numberOfDays]="numberOfDays"
8472
8554
  [eventHeight]="viewEventHeight"
8473
8555
  [currentTimeMarker]="viewCurrentTimeMarker"
8556
+ [highlightOngoingEvents]="viewHighlightOngoingEvents"
8474
8557
  [showWorkHours]="shouldShowWorkHours"
8475
8558
  [scrollTime]="viewScrollTime"
8476
8559
  [startTime]="viewStartTime"
@@ -8587,6 +8670,7 @@ WeekViewComponent = WeekViewComponent_1 = __decorate([
8587
8670
  [getStartDate]="getStartDate"
8588
8671
  [eventHeight]="viewEventHeight"
8589
8672
  [currentTimeMarker]="viewCurrentTimeMarker"
8673
+ [highlightOngoingEvents]="viewHighlightOngoingEvents"
8590
8674
  [showWorkHours]="shouldShowWorkHours"
8591
8675
  [scrollTime]="viewScrollTime"
8592
8676
  [startTime]="viewStartTime"
@@ -8685,6 +8769,7 @@ WorkWeekViewComponent = WorkWeekViewComponent_1 = __decorate([
8685
8769
  [getNextDate]="getNextDate"
8686
8770
  [eventHeight]="viewEventHeight"
8687
8771
  [currentTimeMarker]="viewCurrentTimeMarker"
8772
+ [highlightOngoingEvents]="viewHighlightOngoingEvents"
8688
8773
  [showWorkHours]="shouldShowWorkHours"
8689
8774
  [scrollTime]="viewScrollTime"
8690
8775
  [startTime]="viewStartTime"
@@ -9397,6 +9482,80 @@ function createTimeSlots(intlService, { showWorkHours, startTime, endTime, workD
9397
9482
  return slots;
9398
9483
  }
9399
9484
 
9485
+ /**
9486
+ * @hidden
9487
+ */
9488
+ let DayTimeViewItemComponent = class DayTimeViewItemComponent extends BaseViewItem {
9489
+ constructor(intlService, slotService, localization, focusService, element, renderer, localeId) {
9490
+ super(slotService, localization, focusService, element, renderer, localeId);
9491
+ this.intlService = intlService;
9492
+ this.localeId = localeId;
9493
+ }
9494
+ get eventTime() {
9495
+ return this.intlService.format('{0:t}–{1:t}', toLocalDate(this.item.startTime), toLocalDate(this.item.endTime));
9496
+ }
9497
+ };
9498
+ __decorate([
9499
+ Input(),
9500
+ __metadata("design:type", Boolean)
9501
+ ], DayTimeViewItemComponent.prototype, "vertical", void 0);
9502
+ __decorate([
9503
+ Input(),
9504
+ __metadata("design:type", Boolean)
9505
+ ], DayTimeViewItemComponent.prototype, "isAllDay", void 0);
9506
+ DayTimeViewItemComponent = __decorate([
9507
+ Component({
9508
+ // tslint:disable-next-line:component-selector
9509
+ selector: '[dayTimeViewItem]',
9510
+ template: `
9511
+ <span class="k-event-actions">
9512
+ <span class="k-icon k-i-arrow-60-left" *ngIf="item.tail && !vertical"></span>
9513
+ <span class="k-icon k-i-reload" *ngIf="isRecurrence"></span>
9514
+ <span class="k-icon k-i-non-recurrence" *ngIf="isRecurrenceException"></span>
9515
+ </span>
9516
+ <ng-container *ngIf="eventTemplate" [ngTemplateOutlet]="eventTemplate"
9517
+ [ngTemplateOutletContext]="{ $implicit: item.event, event: item.event, resources: resources }">
9518
+ </ng-container>
9519
+ <div *ngIf="!eventTemplate" [attr.title]="eventTitle">
9520
+ <div class="k-event-template k-event-time" *ngIf="!isAllDay">{{ eventTime }}</div>
9521
+ <div class="k-event-template" aria-hidden="true">{{ item.event.title }}</div>
9522
+ </div>
9523
+
9524
+ <span class="k-event-actions">
9525
+ <span *ngIf="removable" class="k-link k-event-delete" aria-hidden="true" [attr.title]="deleteMessage">
9526
+ <span class="k-icon k-i-close"></span>
9527
+ </span>
9528
+ <span class="k-icon k-i-arrow-60-right" *ngIf="item.head && !vertical"></span>
9529
+ </span>
9530
+
9531
+ <span class="k-event-top-actions" *ngIf="item.tail && vertical">
9532
+ <span class="k-icon k-i-arrow-60-up"></span>
9533
+ </span>
9534
+
9535
+ <span class="k-event-bottom-actions" *ngIf="item.head && vertical">
9536
+ <span class="k-icon k-i-arrow-60-down"></span>
9537
+ </span>
9538
+
9539
+ <ng-container *ngIf="resizable && vertical">
9540
+ <span class="k-resize-handle k-resize-n" *ngIf="!item.tail"></span>
9541
+ <span class="k-resize-handle k-resize-s" *ngIf="!item.head"></span>
9542
+ </ng-container>
9543
+
9544
+ <ng-container *ngIf="resizable && !vertical">
9545
+ <span class="k-resize-handle k-resize-w"></span>
9546
+ <span class="k-resize-handle k-resize-e"></span>
9547
+ </ng-container>
9548
+ `
9549
+ }),
9550
+ __param(6, Inject(LOCALE_ID)),
9551
+ __metadata("design:paramtypes", [IntlService,
9552
+ DayTimeSlotService,
9553
+ LocalizationService,
9554
+ FocusService,
9555
+ ElementRef,
9556
+ Renderer2, String])
9557
+ ], DayTimeViewItemComponent);
9558
+
9400
9559
  const getStartDate = date => getDate(date);
9401
9560
  const getEndDate = (start, numberOfDays) => getDate(addDays(start, numberOfDays || 1));
9402
9561
  const getNextDate = (date, count, numberOfDays) => getDate(addDays(date, numberOfDays * count));
@@ -9427,6 +9586,8 @@ class DayTimeViewComponent extends BaseView {
9427
9586
  this.verticalTime = true;
9428
9587
  this.initialUpdate = true;
9429
9588
  this.updateCurrentTime = this.updateCurrentTime.bind(this);
9589
+ this.toggleOngoingClass = this.toggleOngoingClass.bind(this);
9590
+ this.updateOngoingEvents = this.updateOngoingEvents.bind(this);
9430
9591
  }
9431
9592
  get classNames() {
9432
9593
  return `k-scheduler-${this.name}view`;
@@ -9455,6 +9616,7 @@ class DayTimeViewComponent extends BaseView {
9455
9616
  ngOnDestroy() {
9456
9617
  super.ngOnDestroy();
9457
9618
  clearTimeout(this.currentTimeTimeout);
9619
+ clearTimeout(this.ongoingEventsTimeout);
9458
9620
  }
9459
9621
  verticalItem(leafIndex, resourceIndex) {
9460
9622
  const data = this.verticalResources[resourceIndex].data || [];
@@ -9475,6 +9637,14 @@ class DayTimeViewComponent extends BaseView {
9475
9637
  });
9476
9638
  }
9477
9639
  }
9640
+ toggleOngoingClass() {
9641
+ const now = this.currentTime();
9642
+ const cssClass = isPresent(this.highlightOngoingEvents.cssClass) ? this.highlightOngoingEvents.cssClass : ONGOING_EVENT_CSS_CLASS;
9643
+ this.eventElements.forEach((event) => {
9644
+ const isOngoing = dateInRange(now, event.item.start, event.item.end);
9645
+ this.renderer[isOngoing ? 'addClass' : 'removeClass'](event.nativeElement, cssClass);
9646
+ });
9647
+ }
9478
9648
  scrollToTime(time = this.scrollTime) {
9479
9649
  let date;
9480
9650
  if (typeof time === 'string') {
@@ -9502,6 +9672,7 @@ class DayTimeViewComponent extends BaseView {
9502
9672
  updateView() {
9503
9673
  super.updateView();
9504
9674
  this.updateCurrentTime();
9675
+ this.updateOngoingEvents();
9505
9676
  if (this.initialUpdate) {
9506
9677
  this.scrollToTime();
9507
9678
  this.initialUpdate = false;
@@ -9540,6 +9711,17 @@ class DayTimeViewComponent extends BaseView {
9540
9711
  this.positionCurrentTime();
9541
9712
  }
9542
9713
  }
9714
+ updateOngoingEvents() {
9715
+ const disabled = !this.highlightOngoingEvents || this.highlightOngoingEvents.enabled === false;
9716
+ if (!isDocumentAvailable() || disabled) {
9717
+ return;
9718
+ }
9719
+ clearTimeout(this.ongoingEventsTimeout);
9720
+ this.zone.runOutsideAngular(() => {
9721
+ this.ongoingEventsTimeout = setTimeout(this.updateOngoingEvents, this.highlightOngoingEvents.updateInterval || MS_PER_MINUTE);
9722
+ });
9723
+ this.toggleOngoingClass();
9724
+ }
9543
9725
  positionCurrentTime() {
9544
9726
  if (this.currentTimeElements && this.currentTimeElements.length) {
9545
9727
  const date = this.currentDate.toUTCDate();
@@ -9753,10 +9935,18 @@ __decorate([
9753
9935
  Input(),
9754
9936
  __metadata("design:type", Object)
9755
9937
  ], DayTimeViewComponent.prototype, "currentTimeMarker", void 0);
9938
+ __decorate([
9939
+ Input(),
9940
+ __metadata("design:type", Object)
9941
+ ], DayTimeViewComponent.prototype, "highlightOngoingEvents", void 0);
9756
9942
  __decorate([
9757
9943
  ViewChildren('currentTimeMarker'),
9758
9944
  __metadata("design:type", QueryList)
9759
9945
  ], DayTimeViewComponent.prototype, "currentTimeElements", void 0);
9946
+ __decorate([
9947
+ ViewChildren(DayTimeViewItemComponent),
9948
+ __metadata("design:type", QueryList)
9949
+ ], DayTimeViewComponent.prototype, "eventElements", void 0);
9760
9950
  __decorate([
9761
9951
  ViewChildren('currentTimeArrow'),
9762
9952
  __metadata("design:type", QueryList)
@@ -10414,80 +10604,6 @@ DaySlotDirective = __decorate([
10414
10604
  LocalizationService])
10415
10605
  ], DaySlotDirective);
10416
10606
 
10417
- /**
10418
- * @hidden
10419
- */
10420
- let DayTimeViewItemComponent = class DayTimeViewItemComponent extends BaseViewItem {
10421
- constructor(intlService, slotService, localization, focusService, element, renderer, localeId) {
10422
- super(slotService, localization, focusService, element, renderer, localeId);
10423
- this.intlService = intlService;
10424
- this.localeId = localeId;
10425
- }
10426
- get eventTime() {
10427
- return this.intlService.format('{0:t}–{1:t}', toLocalDate(this.item.startTime), toLocalDate(this.item.endTime));
10428
- }
10429
- };
10430
- __decorate([
10431
- Input(),
10432
- __metadata("design:type", Boolean)
10433
- ], DayTimeViewItemComponent.prototype, "vertical", void 0);
10434
- __decorate([
10435
- Input(),
10436
- __metadata("design:type", Boolean)
10437
- ], DayTimeViewItemComponent.prototype, "isAllDay", void 0);
10438
- DayTimeViewItemComponent = __decorate([
10439
- Component({
10440
- // tslint:disable-next-line:component-selector
10441
- selector: '[dayTimeViewItem]',
10442
- template: `
10443
- <span class="k-event-actions">
10444
- <span class="k-icon k-i-arrow-60-left" *ngIf="item.tail && !vertical"></span>
10445
- <span class="k-icon k-i-reload" *ngIf="isRecurrence"></span>
10446
- <span class="k-icon k-i-non-recurrence" *ngIf="isRecurrenceException"></span>
10447
- </span>
10448
- <ng-container *ngIf="eventTemplate" [ngTemplateOutlet]="eventTemplate"
10449
- [ngTemplateOutletContext]="{ $implicit: item.event, event: item.event, resources: resources }">
10450
- </ng-container>
10451
- <div *ngIf="!eventTemplate" [attr.title]="eventTitle">
10452
- <div class="k-event-template k-event-time" *ngIf="!isAllDay">{{ eventTime }}</div>
10453
- <div class="k-event-template" aria-hidden="true">{{ item.event.title }}</div>
10454
- </div>
10455
-
10456
- <span class="k-event-actions">
10457
- <span *ngIf="removable" class="k-link k-event-delete" aria-hidden="true" [attr.title]="deleteMessage">
10458
- <span class="k-icon k-i-close"></span>
10459
- </span>
10460
- <span class="k-icon k-i-arrow-60-right" *ngIf="item.head && !vertical"></span>
10461
- </span>
10462
-
10463
- <span class="k-event-top-actions" *ngIf="item.tail && vertical">
10464
- <span class="k-icon k-i-arrow-60-up"></span>
10465
- </span>
10466
-
10467
- <span class="k-event-bottom-actions" *ngIf="item.head && vertical">
10468
- <span class="k-icon k-i-arrow-60-down"></span>
10469
- </span>
10470
-
10471
- <ng-container *ngIf="resizable && vertical">
10472
- <span class="k-resize-handle k-resize-n" *ngIf="!item.tail"></span>
10473
- <span class="k-resize-handle k-resize-s" *ngIf="!item.head"></span>
10474
- </ng-container>
10475
-
10476
- <ng-container *ngIf="resizable && !vertical">
10477
- <span class="k-resize-handle k-resize-w"></span>
10478
- <span class="k-resize-handle k-resize-e"></span>
10479
- </ng-container>
10480
- `
10481
- }),
10482
- __param(6, Inject(LOCALE_ID)),
10483
- __metadata("design:paramtypes", [IntlService,
10484
- DayTimeSlotService,
10485
- LocalizationService,
10486
- FocusService,
10487
- ElementRef,
10488
- Renderer2, String])
10489
- ], DayTimeViewItemComponent);
10490
-
10491
10607
  const DIRECTIVES = [TimeSlotDirective, DaySlotDirective, DayTimeViewItemComponent];
10492
10608
  /**
10493
10609
  * @hidden
@@ -10969,6 +11085,7 @@ TimelineViewComponent = TimelineViewComponent_1 = __decorate([
10969
11085
  [eventHeight]="viewEventHeight"
10970
11086
  [columnWidth]="viewColumnWidth"
10971
11087
  [currentTimeMarker]="viewCurrentTimeMarker"
11088
+ [highlightOngoingEvents]="viewHighlightOngoingEvents"
10972
11089
  [showWorkHours]="shouldShowWorkHours"
10973
11090
  [scrollTime]="viewScrollTime"
10974
11091
  [startTime]="viewStartTime"
@@ -11065,6 +11182,7 @@ TimelineWeekViewComponent = TimelineWeekViewComponent_1 = __decorate([
11065
11182
  [eventHeight]="viewEventHeight"
11066
11183
  [columnWidth]="viewColumnWidth"
11067
11184
  [currentTimeMarker]="viewCurrentTimeMarker"
11185
+ [highlightOngoingEvents]="viewHighlightOngoingEvents"
11068
11186
  [showWorkHours]="shouldShowWorkHours"
11069
11187
  [scrollTime]="viewScrollTime"
11070
11188
  [startTime]="viewStartTime"
@@ -11176,6 +11294,7 @@ TimelineMonthViewComponent = TimelineMonthViewComponent_1 = __decorate([
11176
11294
  [eventHeight]="viewEventHeight"
11177
11295
  [columnWidth]="viewColumnWidth"
11178
11296
  [currentTimeMarker]="viewCurrentTimeMarker"
11297
+ [highlightOngoingEvents]="viewHighlightOngoingEvents"
11179
11298
  [showWorkHours]="shouldShowWorkHours"
11180
11299
  [scrollTime]="viewScrollTime"
11181
11300
  [startTime]="viewStartTime"