@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.
- package/dist/cdn/js/kendo-angular-scheduler.js +2 -2
- package/dist/cdn/main.js +1 -1
- package/dist/es/editing/date-time-picker.component.js +2 -1
- package/dist/es/editing/edit-dialog.component.js +1 -1
- package/dist/es/editing/recurrence/end-rule-radio-button.directive.js +5 -0
- package/dist/es/editing/recurrence/recurrence-monthly-yearly-editor.component.js +1 -1
- package/dist/es/editing/recurrence/repeat-on-radio-button.directive.js +5 -0
- package/dist/es/events/slot-drag-end-event.js +17 -0
- package/dist/es/events/slot-drag-event.js +18 -0
- package/dist/es/events/slot-drag-start-event.js +24 -0
- package/dist/es/events.js +3 -0
- package/dist/es/index.js +1 -0
- package/dist/es/package-metadata.js +1 -1
- package/dist/es/scheduler.component.js +73 -1
- package/dist/es/scheduler.module.js +5 -1
- package/dist/es/toolbar/view-selector.component.js +1 -1
- package/dist/es/types/slot-selection.js +23 -0
- package/dist/es/types.js +1 -0
- package/dist/es/views/common/base-view.js +103 -8
- package/dist/es/views/common/slot-selectable.directive.js +117 -0
- package/dist/es/views/common/view-footer.component.js +1 -1
- package/dist/es/views/common/views-shared.module.js +2 -1
- package/dist/es/views/day-time/day-time-view.component.js +1 -1
- package/dist/es/views/day-time/day-time.module.js +2 -1
- package/dist/es/views/month/month-view-renderer.component.js +9 -5
- package/dist/es/views/multi-day/multi-day-view-renderer.component.js +3 -3
- package/dist/es/views/timeline/timeline-multi-day-view.component.js +1 -1
- package/dist/es/views/utils.js +49 -0
- package/dist/es/views/view-state.service.js +18 -0
- package/dist/es2015/editing/date-time-picker.component.js +7 -1
- package/dist/es2015/editing/edit-dialog.component.js +7 -7
- package/dist/es2015/editing/recurrence/end-rule-radio-button.directive.d.ts +1 -0
- package/dist/es2015/editing/recurrence/end-rule-radio-button.directive.js +5 -0
- package/dist/es2015/editing/recurrence/recurrence-monthly-yearly-editor.component.js +14 -5
- package/dist/es2015/editing/recurrence/repeat-on-radio-button.directive.d.ts +1 -0
- package/dist/es2015/editing/recurrence/repeat-on-radio-button.directive.js +5 -0
- package/dist/es2015/events/slot-drag-end-event.d.ts +10 -0
- package/dist/es2015/events/slot-drag-end-event.js +10 -0
- package/dist/es2015/events/slot-drag-event.d.ts +39 -0
- package/dist/es2015/events/slot-drag-event.js +16 -0
- package/dist/es2015/events/slot-drag-start-event.d.ts +41 -0
- package/dist/es2015/events/slot-drag-start-event.js +19 -0
- package/dist/es2015/events.d.ts +3 -0
- package/dist/es2015/events.js +3 -0
- package/dist/es2015/index.d.ts +2 -0
- package/dist/es2015/index.js +1 -0
- package/dist/es2015/index.metadata.json +1 -1
- package/dist/es2015/package-metadata.js +1 -1
- package/dist/es2015/scheduler.component.d.ts +27 -0
- package/dist/es2015/scheduler.component.js +73 -1
- package/dist/es2015/scheduler.module.js +5 -1
- package/dist/es2015/toolbar/view-selector.component.js +1 -1
- package/dist/es2015/types/datepicker-options.interface.d.ts +5 -5
- package/dist/es2015/types/slot-selection.d.ts +71 -0
- package/dist/es2015/types/slot-selection.js +19 -0
- package/dist/es2015/types.d.ts +2 -0
- package/dist/es2015/types.js +1 -0
- package/dist/es2015/views/common/base-view.d.ts +26 -5
- package/dist/es2015/views/common/base-view.js +103 -8
- package/dist/es2015/views/common/slot-selectable.directive.d.ts +45 -0
- package/dist/es2015/views/common/slot-selectable.directive.js +112 -0
- package/dist/es2015/views/common/view-footer.component.js +1 -1
- package/dist/es2015/views/common/views-shared.module.js +2 -1
- package/dist/es2015/views/day-time/day-time-view.component.js +1 -1
- package/dist/es2015/views/day-time/day-time.module.js +2 -1
- package/dist/es2015/views/month/month-view-renderer.component.d.ts +3 -2
- package/dist/es2015/views/month/month-view-renderer.component.js +17 -7
- package/dist/es2015/views/multi-day/multi-day-view-renderer.component.d.ts +1 -1
- package/dist/es2015/views/multi-day/multi-day-view-renderer.component.js +22 -4
- package/dist/es2015/views/timeline/timeline-multi-day-view.component.js +8 -1
- package/dist/es2015/views/utils.d.ts +29 -0
- package/dist/es2015/views/utils.js +49 -0
- package/dist/es2015/views/view-state.service.d.ts +24 -1
- package/dist/es2015/views/view-state.service.js +18 -0
- package/dist/fesm2015/index.js +1674 -1231
- package/dist/fesm5/index.js +1803 -1388
- package/dist/npm/editing/date-time-picker.component.js +2 -1
- package/dist/npm/editing/edit-dialog.component.js +1 -1
- package/dist/npm/editing/recurrence/end-rule-radio-button.directive.js +5 -0
- package/dist/npm/editing/recurrence/recurrence-monthly-yearly-editor.component.js +1 -1
- package/dist/npm/editing/recurrence/repeat-on-radio-button.directive.js +5 -0
- package/dist/npm/events/slot-drag-end-event.js +19 -0
- package/dist/npm/events/slot-drag-event.js +20 -0
- package/dist/npm/events/slot-drag-start-event.js +26 -0
- package/dist/npm/events.js +6 -0
- package/dist/npm/index.js +2 -0
- package/dist/npm/package-metadata.js +1 -1
- package/dist/npm/scheduler.component.js +73 -1
- package/dist/npm/scheduler.module.js +4 -0
- package/dist/npm/toolbar/view-selector.component.js +1 -1
- package/dist/npm/types/slot-selection.js +25 -0
- package/dist/npm/types.js +2 -0
- package/dist/npm/views/common/base-view.js +102 -7
- package/dist/npm/views/common/slot-selectable.directive.js +119 -0
- package/dist/npm/views/common/view-footer.component.js +1 -1
- package/dist/npm/views/common/views-shared.module.js +2 -1
- package/dist/npm/views/day-time/day-time-view.component.js +1 -1
- package/dist/npm/views/day-time/day-time.module.js +2 -1
- package/dist/npm/views/month/month-view-renderer.component.js +8 -4
- package/dist/npm/views/multi-day/multi-day-view-renderer.component.js +3 -3
- package/dist/npm/views/timeline/timeline-multi-day-view.component.js +1 -1
- package/dist/npm/views/utils.js +53 -0
- package/dist/npm/views/view-state.service.js +18 -0
- package/dist/systemjs/kendo-angular-scheduler.js +1 -1
- package/package.json +27 -24
- package/schematics/ngAdd/index.js +1 -1
|
@@ -10,17 +10,19 @@ import { Subscription, BehaviorSubject, combineLatest, fromEvent, merge } from '
|
|
|
10
10
|
import { switchMap, take, map, filter, tap } from 'rxjs/operators';
|
|
11
11
|
import { closestInScope, hasClasses, preventLockedScroll, scrollbarWidth, wheelDeltaY, hasScrollbar } from '../../common/dom-queries';
|
|
12
12
|
import { groupResources, getField, setField, fromClick, fromDoubleClick } from '../../common/util';
|
|
13
|
-
import { assignTasksResources, toPx, elementOffset, pointDistance, ignoreContentChild, resourceItemByValue, convertNgClassBindings } from '../utils';
|
|
13
|
+
import { assignTasksResources, toPx, elementOffset, pointDistance, ignoreContentChild, resourceItemByValue, convertNgClassBindings, toUTCDateTime, dateWithTime, normaliseRangeStartAndEnd } from '../utils';
|
|
14
14
|
import { BORDER_WIDTH } from '../constants';
|
|
15
15
|
import Draggable from '@telerik/kendo-draggable';
|
|
16
16
|
import { HintContainerComponent } from '../common/hint-container.component';
|
|
17
|
+
import { slotDragEventName } from '../../types/slot-selection';
|
|
18
|
+
import { SlotDragStartEvent } from '../../events/slot-drag-start-event';
|
|
17
19
|
var SCROLL_CHANGE = 15;
|
|
18
20
|
var MIN_DISTANCE = 60;
|
|
19
21
|
var SCROLL_INTERVAL = 50;
|
|
20
22
|
var MIN_MOVE_DISTANCE = 10;
|
|
21
23
|
/** @hidden */
|
|
22
24
|
var BaseView = /** @class */ (function () {
|
|
23
|
-
function BaseView(viewContext, viewState, intl, slotService, zone, renderer, element, pdfService, localization) {
|
|
25
|
+
function BaseView(viewContext, viewState, intl, slotService, zone, renderer, element, pdfService, localization, cdr) {
|
|
24
26
|
this.viewContext = viewContext;
|
|
25
27
|
this.viewState = viewState;
|
|
26
28
|
this.intl = intl;
|
|
@@ -30,6 +32,7 @@ var BaseView = /** @class */ (function () {
|
|
|
30
32
|
this.element = element;
|
|
31
33
|
this.pdfService = pdfService;
|
|
32
34
|
this.localization = localization;
|
|
35
|
+
this.cdr = cdr;
|
|
33
36
|
this.items = new BehaviorSubject(null);
|
|
34
37
|
this.horizontalResources = [];
|
|
35
38
|
this.verticalResources = [];
|
|
@@ -43,8 +46,17 @@ var BaseView = /** @class */ (function () {
|
|
|
43
46
|
this.spans = [];
|
|
44
47
|
this.domEvents = [];
|
|
45
48
|
this.resourcesCache = {};
|
|
49
|
+
/**
|
|
50
|
+
* The slot which is currently being dragged over while selecting a range of slots.
|
|
51
|
+
*/
|
|
52
|
+
this.dragSelecting = null;
|
|
53
|
+
/**
|
|
54
|
+
* The slot where the drag-selecting originated. Used for flipping the start and end of the emitted range.
|
|
55
|
+
*/
|
|
56
|
+
this.dragSelectOrigin = null;
|
|
46
57
|
this.autoHeight = false;
|
|
47
58
|
this.rtl = false;
|
|
59
|
+
this.isSlotSelected = function () { return false; };
|
|
48
60
|
this.setSlotClass = this.setSlotClass.bind(this);
|
|
49
61
|
this.setHintClass = this.setHintClass.bind(this);
|
|
50
62
|
this.weekStart = intl.firstDay();
|
|
@@ -175,6 +187,20 @@ var BaseView = /** @class */ (function () {
|
|
|
175
187
|
}
|
|
176
188
|
return result;
|
|
177
189
|
};
|
|
190
|
+
// Similar to https://tc39.es/proposal-temporal/docs/plaindate.html
|
|
191
|
+
// Stores a "plain date" in the UTC parts of a regular `Date`.
|
|
192
|
+
BaseView.prototype.toPlainDate = function (date) {
|
|
193
|
+
var result = toUTCDateTime(this.convertDate(date));
|
|
194
|
+
return result;
|
|
195
|
+
};
|
|
196
|
+
// Similar to https://tc39.es/proposal-temporal/docs/plaindatetime.html
|
|
197
|
+
// Stores a "plain date-time" in the UTC parts of a regular `Date`.
|
|
198
|
+
BaseView.prototype.toPlainDateTime = function (date, time) {
|
|
199
|
+
if (!date || !time) {
|
|
200
|
+
return null;
|
|
201
|
+
}
|
|
202
|
+
return this.toPlainDate(dateWithTime(date, time));
|
|
203
|
+
};
|
|
178
204
|
BaseView.prototype.optionsChange = function (options) {
|
|
179
205
|
this.schedulerEventTemplate = options.eventTemplate;
|
|
180
206
|
this.schedulerGroupHeaderTemplate = options.groupHeaderTemplate;
|
|
@@ -182,6 +208,8 @@ var BaseView = /** @class */ (function () {
|
|
|
182
208
|
this.max = options.max;
|
|
183
209
|
this.editable = options.editable;
|
|
184
210
|
this.timezone = options.timezone;
|
|
211
|
+
this.selectable = options.selectable;
|
|
212
|
+
this.isSlotSelected = options.isSlotSelected;
|
|
185
213
|
if (!options.changes || anyChanged(['group', 'resources'], options.changes, false) ||
|
|
186
214
|
options.group !== this.group || options.resources !== this.resources) {
|
|
187
215
|
this.group = options.group;
|
|
@@ -208,6 +236,7 @@ var BaseView = /** @class */ (function () {
|
|
|
208
236
|
this.toggleElement(true);
|
|
209
237
|
this.reflow();
|
|
210
238
|
this.viewState.notifyLayoutEnd();
|
|
239
|
+
this.viewState.emitEvent(slotDragEventName.refreshSlotSelection);
|
|
211
240
|
};
|
|
212
241
|
BaseView.prototype.assignResources = function () {
|
|
213
242
|
assignTasksResources(this.tasks, {
|
|
@@ -249,16 +278,16 @@ var BaseView = /** @class */ (function () {
|
|
|
249
278
|
});
|
|
250
279
|
};
|
|
251
280
|
BaseView.prototype.onPress = function (args) {
|
|
252
|
-
var
|
|
253
|
-
var
|
|
281
|
+
var editResizable = this.editable && this.editable.resize !== false;
|
|
282
|
+
var editDraggable = this.editable && this.editable.drag !== false;
|
|
254
283
|
var target = args.originalEvent.target;
|
|
255
284
|
if (hasClasses(target, 'k-resize-handle')) {
|
|
256
|
-
if (!
|
|
285
|
+
if (!editResizable) {
|
|
257
286
|
return;
|
|
258
287
|
}
|
|
259
288
|
this.initResize(args);
|
|
260
289
|
}
|
|
261
|
-
else if (
|
|
290
|
+
else if (editDraggable) {
|
|
262
291
|
var task = this.targetTask(target);
|
|
263
292
|
if (task) {
|
|
264
293
|
if (!args.isTouch) {
|
|
@@ -268,6 +297,10 @@ var BaseView = /** @class */ (function () {
|
|
|
268
297
|
this.pressTarget = task;
|
|
269
298
|
}
|
|
270
299
|
}
|
|
300
|
+
var notDraggingEvent = !this.pressTarget;
|
|
301
|
+
if (notDraggingEvent && this.selectable) {
|
|
302
|
+
this.initDragSelect(args);
|
|
303
|
+
}
|
|
271
304
|
this.dragArgs = args;
|
|
272
305
|
};
|
|
273
306
|
BaseView.prototype.onDrag = function (args) {
|
|
@@ -282,12 +315,15 @@ var BaseView = /** @class */ (function () {
|
|
|
282
315
|
args.originalEvent.preventDefault();
|
|
283
316
|
this.scrollContainer(this.drag, args);
|
|
284
317
|
}
|
|
318
|
+
if (this.dragSelecting) {
|
|
319
|
+
this.dragSelect(args);
|
|
320
|
+
}
|
|
285
321
|
}
|
|
286
322
|
this.dragArgs = args;
|
|
287
323
|
};
|
|
288
|
-
BaseView.prototype.onRelease = function () {
|
|
324
|
+
BaseView.prototype.onRelease = function (args) {
|
|
289
325
|
clearInterval(this.scrollInterval);
|
|
290
|
-
var _a = this, resizing = _a.resizing, dragging = _a.dragging;
|
|
326
|
+
var _a = this, resizing = _a.resizing, dragging = _a.dragging, dragSelecting = _a.dragSelecting;
|
|
291
327
|
if (resizing) {
|
|
292
328
|
this.emitEvent('resizeEnd', {
|
|
293
329
|
event: resizing.task.event,
|
|
@@ -314,6 +350,20 @@ var BaseView = /** @class */ (function () {
|
|
|
314
350
|
this.resizing = null;
|
|
315
351
|
this.dragging = null;
|
|
316
352
|
}
|
|
353
|
+
if (dragSelecting) {
|
|
354
|
+
var _b = normaliseRangeStartAndEnd(this.dragSelectOrigin, this.dragSelecting), start = _b.start, end = _b.end;
|
|
355
|
+
var range = {
|
|
356
|
+
start: this.convertDate(start),
|
|
357
|
+
end: this.convertDate(end),
|
|
358
|
+
isAllDay: this.dragSelecting.isDaySlot,
|
|
359
|
+
resources: this.resourcesByIndex(this.dragSelecting.id.resourceIndex),
|
|
360
|
+
originalEvent: args.originalEvent
|
|
361
|
+
};
|
|
362
|
+
this.viewState.notifySlotSelectionEnd(range);
|
|
363
|
+
this.dragSelectOrigin = null;
|
|
364
|
+
this.dragSelecting = null;
|
|
365
|
+
this.cdr.markForCheck();
|
|
366
|
+
}
|
|
317
367
|
this.container = null;
|
|
318
368
|
this.dragArgs = null;
|
|
319
369
|
this.pressLocation = null;
|
|
@@ -465,6 +515,51 @@ var BaseView = /** @class */ (function () {
|
|
|
465
515
|
this.updateHintContainer();
|
|
466
516
|
}
|
|
467
517
|
};
|
|
518
|
+
BaseView.prototype.initDragSelect = function (args) {
|
|
519
|
+
this.updateDragContainer(args);
|
|
520
|
+
if (!this.containerOffset) {
|
|
521
|
+
return;
|
|
522
|
+
}
|
|
523
|
+
var _a = this.coordinatesOffset(args.pageX, args.pageY), x = _a.x, y = _a.y;
|
|
524
|
+
var slot = this.slotByPosition(x, y, this.container);
|
|
525
|
+
if (!slot) {
|
|
526
|
+
return;
|
|
527
|
+
}
|
|
528
|
+
var range = {
|
|
529
|
+
start: this.convertDate(slot.start),
|
|
530
|
+
end: this.convertDate(slot.end),
|
|
531
|
+
isAllDay: slot.isDaySlot,
|
|
532
|
+
resources: this.resourcesByIndex(slot.id.resourceIndex),
|
|
533
|
+
originalEvent: args.originalEvent
|
|
534
|
+
};
|
|
535
|
+
var slotDragStartEvent = new SlotDragStartEvent(null, range);
|
|
536
|
+
this.viewState.notifySlotSelectionStart(slotDragStartEvent);
|
|
537
|
+
if (!slotDragStartEvent.isDefaultPrevented()) {
|
|
538
|
+
this.dragSelecting = slot;
|
|
539
|
+
this.dragSelectOrigin = slot;
|
|
540
|
+
this.cdr.markForCheck();
|
|
541
|
+
}
|
|
542
|
+
};
|
|
543
|
+
BaseView.prototype.dragSelect = function (args) {
|
|
544
|
+
var _a = this.coordinatesOffset(args.pageX, args.pageY), x = _a.x, y = _a.y;
|
|
545
|
+
var slot = this.slotByPosition(x, y, this.container);
|
|
546
|
+
if (!slot) {
|
|
547
|
+
return;
|
|
548
|
+
}
|
|
549
|
+
if (this.dragSelecting !== slot) {
|
|
550
|
+
this.dragSelecting = slot;
|
|
551
|
+
var _b = normaliseRangeStartAndEnd(this.dragSelectOrigin, this.dragSelecting), start = _b.start, end = _b.end;
|
|
552
|
+
var range = {
|
|
553
|
+
start: this.convertDate(start),
|
|
554
|
+
end: this.convertDate(end),
|
|
555
|
+
isAllDay: slot.isDaySlot,
|
|
556
|
+
resources: this.resourcesByIndex(slot.id.resourceIndex),
|
|
557
|
+
originalEvent: args.originalEvent
|
|
558
|
+
};
|
|
559
|
+
this.viewState.notifySlotSelectionDrag(range);
|
|
560
|
+
this.cdr.markForCheck();
|
|
561
|
+
}
|
|
562
|
+
};
|
|
468
563
|
BaseView.prototype.dragHintClasses = function () {
|
|
469
564
|
var hintClass = this.dragging.hintClass;
|
|
470
565
|
var result = [];
|
|
@@ -0,0 +1,117 @@
|
|
|
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 * as tslib_1 from "tslib";
|
|
6
|
+
import { Directive, Input, Output, EventEmitter, ChangeDetectorRef } from '@angular/core';
|
|
7
|
+
import { Subscription } from 'rxjs';
|
|
8
|
+
import { intersects, isSameRange, resourcesMatch } from '../utils';
|
|
9
|
+
import { SchedulerComponent } from '../../scheduler.component';
|
|
10
|
+
import { distinctUntilChanged, filter } from 'rxjs/operators';
|
|
11
|
+
import { isChanged } from '@progress/kendo-angular-common';
|
|
12
|
+
/**
|
|
13
|
+
* A directive which manages the in-memory selection state of the Scheduler slots
|
|
14
|
+
* ([see example]({% slug slotselection_scheduler %}#toc-built-in-directive)).
|
|
15
|
+
*/
|
|
16
|
+
var SlotSelectableDirective = /** @class */ (function () {
|
|
17
|
+
function SlotSelectableDirective(scheduler, cdr) {
|
|
18
|
+
var _this = this;
|
|
19
|
+
this.scheduler = scheduler;
|
|
20
|
+
this.cdr = cdr;
|
|
21
|
+
/**
|
|
22
|
+
* Fires when the currently selected slot range has changed through user interaction.
|
|
23
|
+
*/
|
|
24
|
+
this.slotSelectionChange = new EventEmitter();
|
|
25
|
+
this.selectedRange = null;
|
|
26
|
+
this.slotSelectionChangeSource = new EventEmitter();
|
|
27
|
+
this.subscriptions = new Subscription();
|
|
28
|
+
this.scheduler.selectable = true;
|
|
29
|
+
this.subscriptions.add(this.slotSelectionChangeSource
|
|
30
|
+
.pipe(distinctUntilChanged(isSameRange)).subscribe(function (v) {
|
|
31
|
+
_this.slotSelectionChange.emit(v);
|
|
32
|
+
}));
|
|
33
|
+
var start$ = this.scheduler.slotDragStart;
|
|
34
|
+
var drag$ = this.scheduler.slotDrag;
|
|
35
|
+
var end$ = this.scheduler.slotDragEnd;
|
|
36
|
+
var startSource = start$.pipe(filter(function (e) { return !e.isDefaultPrevented(); }));
|
|
37
|
+
this.subscriptions.add(startSource.subscribe(function (e) { return _this.initDragSelect(e); }));
|
|
38
|
+
this.subscriptions.add(drag$.subscribe(function (e) { return _this.onDrag(e); }));
|
|
39
|
+
this.subscriptions.add(end$.subscribe(function () { return _this.onRelease(); }));
|
|
40
|
+
}
|
|
41
|
+
SlotSelectableDirective.prototype.ngOnInit = function () {
|
|
42
|
+
this.scheduler.isSlotSelected = this.isSlotSelected.bind(this);
|
|
43
|
+
};
|
|
44
|
+
SlotSelectableDirective.prototype.ngOnChanges = function (changes) {
|
|
45
|
+
if (isChanged("slotSelection", changes, false)) {
|
|
46
|
+
/**
|
|
47
|
+
* The default values for resources below are necessarry because this is not fixed yet: https://github.com/telerik/kendo-angular-scheduler/pull/338
|
|
48
|
+
*/
|
|
49
|
+
var resources = this.scheduler.resources ? [this.scheduler.resources[0].data[0]] : [undefined];
|
|
50
|
+
this.selectedRange = Object.assign({}, { isAllDay: false, resources: resources }, changes.slotSelection.currentValue);
|
|
51
|
+
this.cdr.markForCheck();
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
SlotSelectableDirective.prototype.ngOnDestroy = function () {
|
|
55
|
+
this.subscriptions.unsubscribe();
|
|
56
|
+
};
|
|
57
|
+
SlotSelectableDirective.prototype.isSlotSelected = function (_a) {
|
|
58
|
+
var start = _a.start, end = _a.end, isAllDay = _a.isAllDay, resources = _a.resources;
|
|
59
|
+
if (!start || !end || !this.selectedRange) {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
var match = resourcesMatch(this.selectedRange.resources, resources);
|
|
63
|
+
if (!match) {
|
|
64
|
+
return false; // Limit selection to the grouped resource where the drag started.
|
|
65
|
+
}
|
|
66
|
+
return this.selectedRange && isAllDay === this.selectedRange.isAllDay && this.isInRange(start, end);
|
|
67
|
+
};
|
|
68
|
+
SlotSelectableDirective.prototype.initDragSelect = function (_a) {
|
|
69
|
+
var start = _a.start, end = _a.end, isAllDay = _a.isAllDay, resources = _a.resources;
|
|
70
|
+
this.selectionOriginResources = resources.slice();
|
|
71
|
+
this.selectedRange = { start: start, end: end, isAllDay: isAllDay, resources: resources.slice() };
|
|
72
|
+
this.cdr.markForCheck();
|
|
73
|
+
};
|
|
74
|
+
SlotSelectableDirective.prototype.onDrag = function (_a) {
|
|
75
|
+
var start = _a.start, end = _a.end, resources = _a.resources;
|
|
76
|
+
var match = resourcesMatch(this.selectionOriginResources, resources);
|
|
77
|
+
if (!match) {
|
|
78
|
+
return; // Don't change selection when dragging over a different grouped resource's cells.
|
|
79
|
+
}
|
|
80
|
+
this.selectedRange.start = start;
|
|
81
|
+
this.selectedRange.end = end;
|
|
82
|
+
this.cdr.markForCheck();
|
|
83
|
+
};
|
|
84
|
+
SlotSelectableDirective.prototype.onRelease = function () {
|
|
85
|
+
this.selectionOriginResources = null;
|
|
86
|
+
if (this.selectedRange) {
|
|
87
|
+
this.slotSelectionChangeSource.emit(this.selectedRange);
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* @hidden
|
|
92
|
+
* Checks if the selected range contains a local date range.
|
|
93
|
+
*/
|
|
94
|
+
SlotSelectableDirective.prototype.isInRange = function (start, end) {
|
|
95
|
+
if (!this.selectedRange) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
return intersects(start, end, this.selectedRange.start, this.selectedRange.end);
|
|
99
|
+
};
|
|
100
|
+
tslib_1.__decorate([
|
|
101
|
+
Input(),
|
|
102
|
+
tslib_1.__metadata("design:type", Object)
|
|
103
|
+
], SlotSelectableDirective.prototype, "slotSelection", void 0);
|
|
104
|
+
tslib_1.__decorate([
|
|
105
|
+
Output(),
|
|
106
|
+
tslib_1.__metadata("design:type", EventEmitter)
|
|
107
|
+
], SlotSelectableDirective.prototype, "slotSelectionChange", void 0);
|
|
108
|
+
SlotSelectableDirective = tslib_1.__decorate([
|
|
109
|
+
Directive({
|
|
110
|
+
selector: '[kendoSchedulerSlotSelectable]'
|
|
111
|
+
}),
|
|
112
|
+
tslib_1.__metadata("design:paramtypes", [SchedulerComponent,
|
|
113
|
+
ChangeDetectorRef])
|
|
114
|
+
], SlotSelectableDirective);
|
|
115
|
+
return SlotSelectableDirective;
|
|
116
|
+
}());
|
|
117
|
+
export { SlotSelectableDirective };
|
|
@@ -42,7 +42,7 @@ var ViewFooterComponent = /** @class */ (function () {
|
|
|
42
42
|
Component({
|
|
43
43
|
// tslint:disable-next-line:component-selector
|
|
44
44
|
selector: '[viewFooter]',
|
|
45
|
-
template: "\n <button type=\"button\"
|
|
45
|
+
template: "\n <button type=\"button\" kendoButton *ngFor=\"let item of items\" [ngClass]=\"item.cssClass\" (click)=\"onItemClick($event, item)\">\n <span class=\"k-button-icon k-icon\" [ngClass]=\"item.iconClass\"></span>\n <span class=\"k-button-text\">{{ item.text }}</span>\n </button>\n "
|
|
46
46
|
})
|
|
47
47
|
], ViewFooterComponent);
|
|
48
48
|
return ViewFooterComponent;
|
|
@@ -13,6 +13,7 @@ import { ResourceIteratorPipe } from './resource-iterator.pipe';
|
|
|
13
13
|
import { HintContainerComponent } from './hint-container.component';
|
|
14
14
|
import { ResizeHintComponent } from './resize-hint.component';
|
|
15
15
|
import { SharedModule } from '../../shared.module';
|
|
16
|
+
import { ButtonsModule } from '@progress/kendo-angular-buttons';
|
|
16
17
|
var DECLARATIONS = [
|
|
17
18
|
ViewFooterComponent,
|
|
18
19
|
WorkHoursFooterDirective,
|
|
@@ -29,7 +30,7 @@ var ViewsSharedModule = /** @class */ (function () {
|
|
|
29
30
|
}
|
|
30
31
|
ViewsSharedModule = tslib_1.__decorate([
|
|
31
32
|
NgModule({
|
|
32
|
-
imports: [CommonModule, IntlModule, SharedModule],
|
|
33
|
+
imports: [CommonModule, IntlModule, SharedModule, ButtonsModule],
|
|
33
34
|
exports: [
|
|
34
35
|
DECLARATIONS,
|
|
35
36
|
IntlModule,
|
|
@@ -25,7 +25,7 @@ var ɵ2 = getNextDate;
|
|
|
25
25
|
var DayTimeViewComponent = /** @class */ (function (_super) {
|
|
26
26
|
tslib_1.__extends(DayTimeViewComponent, _super);
|
|
27
27
|
function DayTimeViewComponent(changeDetector, viewContext, viewState, intl, slotService, zone, renderer, element, pdfService, localization) {
|
|
28
|
-
var _this = _super.call(this, viewContext, viewState, intl, slotService, zone, renderer, element, pdfService, localization) || this;
|
|
28
|
+
var _this = _super.call(this, viewContext, viewState, intl, slotService, zone, renderer, element, pdfService, localization, changeDetector) || this;
|
|
29
29
|
_this.changeDetector = changeDetector;
|
|
30
30
|
_this.numberOfDays = 1;
|
|
31
31
|
_this.startTime = '00:00';
|
|
@@ -8,6 +8,7 @@ import { CommonModule } from '@angular/common';
|
|
|
8
8
|
import { SharedModule } from '../../shared.module';
|
|
9
9
|
import { TimeSlotDirective, DaySlotDirective } from './event-slot.directive';
|
|
10
10
|
import { DayTimeViewItemComponent } from './day-time-view-item.component';
|
|
11
|
+
import { ViewsSharedModule } from '../common/views-shared.module';
|
|
11
12
|
var DIRECTIVES = [TimeSlotDirective, DaySlotDirective, DayTimeViewItemComponent];
|
|
12
13
|
/**
|
|
13
14
|
* @hidden
|
|
@@ -17,7 +18,7 @@ var DayTimeModule = /** @class */ (function () {
|
|
|
17
18
|
}
|
|
18
19
|
DayTimeModule = tslib_1.__decorate([
|
|
19
20
|
NgModule({
|
|
20
|
-
imports: [CommonModule, SharedModule],
|
|
21
|
+
imports: [CommonModule, SharedModule, ViewsSharedModule],
|
|
21
22
|
exports: [
|
|
22
23
|
DIRECTIVES
|
|
23
24
|
],
|
|
@@ -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 * as tslib_1 from "tslib";
|
|
6
|
-
import { Component, Input, NgZone, ElementRef, Renderer2, TemplateRef } from '@angular/core';
|
|
6
|
+
import { Component, Input, NgZone, ElementRef, Renderer2, TemplateRef, ChangeDetectorRef } from '@angular/core';
|
|
7
7
|
import { IntlService } from '@progress/kendo-angular-intl';
|
|
8
8
|
import { isChanged } from '@progress/kendo-angular-common';
|
|
9
9
|
import { addDays, addMonths, firstDayInWeek, firstDayOfMonth, getDate, toLocalDate } from '@progress/kendo-date-math';
|
|
@@ -23,8 +23,8 @@ var WEEKS_COUNT = 6;
|
|
|
23
23
|
*/
|
|
24
24
|
var MonthViewRendererComponent = /** @class */ (function (_super) {
|
|
25
25
|
tslib_1.__extends(MonthViewRendererComponent, _super);
|
|
26
|
-
function MonthViewRendererComponent(viewContext, viewState, intl, slotService, zone, element, renderer, pdfService, localization) {
|
|
27
|
-
var _this = _super.call(this, viewContext, viewState, intl, slotService, zone, renderer, element, pdfService, localization) || this;
|
|
26
|
+
function MonthViewRendererComponent(viewContext, viewState, intl, slotService, zone, element, renderer, pdfService, localization, changeDetector) {
|
|
27
|
+
var _this = _super.call(this, viewContext, viewState, intl, slotService, zone, renderer, element, pdfService, localization, changeDetector) || this;
|
|
28
28
|
_this.resizeHintFormat = { skeleton: 'Md' };
|
|
29
29
|
_this.weeks = [];
|
|
30
30
|
return _this;
|
|
@@ -80,6 +80,9 @@ var MonthViewRendererComponent = /** @class */ (function (_super) {
|
|
|
80
80
|
MonthViewRendererComponent.prototype.cellTitle = function (value) {
|
|
81
81
|
return this.intl.formatDate(value, 'D');
|
|
82
82
|
};
|
|
83
|
+
MonthViewRendererComponent.prototype.addDay = function (dayStart) {
|
|
84
|
+
return addDays(dayStart, 1);
|
|
85
|
+
};
|
|
83
86
|
MonthViewRendererComponent.prototype.optionsChange = function (changes) {
|
|
84
87
|
this.schedulerMonthDaySlotTemplate = changes.monthDaySlotTemplate;
|
|
85
88
|
_super.prototype.optionsChange.call(this, changes);
|
|
@@ -194,7 +197,7 @@ var MonthViewRendererComponent = /** @class */ (function (_super) {
|
|
|
194
197
|
providers: [
|
|
195
198
|
MonthSlotService
|
|
196
199
|
],
|
|
197
|
-
template: "\n <div class=\"k-scheduler-layout k-scheduler-monthview k-scheduler-flex-layout\">\n <div class=\"k-scheduler-pane\">\n <div class=\"k-scheduler-times\" #timesHeader *ngIf=\"verticalResources.length\">\n <table class=\"k-scheduler-table\" aria-hidden=\"true\">\n <tr>\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 <table class=\"k-scheduler-table\" aria-hidden=\"true\">\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\" [ngTemplateOutletContext]=\"{ resource: item }\"></ng-container>\n </th>\n </tr>\n <tr>\n <ng-container *ngFor=\"let resource of horizontalResources | resourceIterator; trackBy: itemIndex\">\n <th *ngFor=\"let day of weeks[0]; trackBy: itemIndex\">\n {{ day | kendoDate: 'EEEE' }}\n </th>\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 k-scheduler-resources\" #times *ngIf=\"verticalResources.length\">\n <table class=\"k-scheduler-table\" #timesTable aria-hidden=\"true\">\n <ng-container *ngFor=\"let resourceItem of verticalResources | resourceIterator; let leafIndex = index; trackBy: itemIndex\">\n <tr>\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\" [ngClass]=\"{ 'k-last-resource': resourceIndex === verticalResources.length - 1 }\">\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 </th>\n </ng-container>\n <th class=\"k-slot-cell k-empty-slot\">\n </th>\n </tr>\n <tr *ngFor=\"let index of 5 | repeat; trackBy: itemIndex\">\n <th class=\"k-slot-cell k-empty-slot\"></th>\n </tr>\n </ng-container>\n </table>\n </div>\n <div class=\"k-scheduler-content\" #content>\n <table class=\"k-scheduler-table\" #contentTable role=\"presentation\">\n <ng-container *ngFor=\"let resourceItem of verticalResources | resourceIterator; let verticalIndex = index; trackBy: itemIndex\">\n <tr *ngFor=\"let week of weeks; let rangeIndex = index; trackBy: itemIndex\">\n <ng-container *ngFor=\"let resource of horizontalResources | resourceIterator; let horizontalIndex = index; trackBy: itemIndex\">\n <td *ngFor=\"let day of week; let index = index; trackBy: itemIndex\"\n monthSlot\n [ngClass]=\"daySlotClass(day, verticalResources.length ? verticalIndex : horizontalIndex)\"\n [start]=\"day\"\n [id]=\"{ resourceIndex: verticalResources.length ? verticalIndex : horizontalIndex, rangeIndex: rangeIndex, index: index }\"\n [title]=\"cellTitle(day)\"\n >\n <span aria-hidden=\"true\" class=\"k-link k-nav-day\" *ngIf=\"!monthDaySlotTemplateRef\"
|
|
200
|
+
template: "\n <div class=\"k-scheduler-layout k-scheduler-monthview k-scheduler-flex-layout\">\n <div class=\"k-scheduler-pane\">\n <div class=\"k-scheduler-times\" #timesHeader *ngIf=\"verticalResources.length\">\n <table class=\"k-scheduler-table\" aria-hidden=\"true\">\n <tr>\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 <table class=\"k-scheduler-table\" aria-hidden=\"true\">\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\" [ngTemplateOutletContext]=\"{ resource: item }\"></ng-container>\n </th>\n </tr>\n <tr>\n <ng-container *ngFor=\"let resource of horizontalResources | resourceIterator; trackBy: itemIndex\">\n <th *ngFor=\"let day of weeks[0]; trackBy: itemIndex\">\n {{ day | kendoDate: 'EEEE' }}\n </th>\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 k-scheduler-resources\" #times *ngIf=\"verticalResources.length\">\n <table class=\"k-scheduler-table\" #timesTable aria-hidden=\"true\">\n <ng-container *ngFor=\"let resourceItem of verticalResources | resourceIterator; let leafIndex = index; trackBy: itemIndex\">\n <tr>\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\" [ngClass]=\"{ 'k-last-resource': resourceIndex === verticalResources.length - 1 }\">\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 </th>\n </ng-container>\n <th class=\"k-slot-cell k-empty-slot\">\n </th>\n </tr>\n <tr *ngFor=\"let index of 5 | repeat; trackBy: itemIndex\">\n <th class=\"k-slot-cell k-empty-slot\"></th>\n </tr>\n </ng-container>\n </table>\n </div>\n <div class=\"k-scheduler-content\" #content>\n <table class=\"k-scheduler-table k-user-select-none\" #contentTable role=\"presentation\">\n <ng-container *ngFor=\"let resourceItem of verticalResources | resourceIterator; let verticalIndex = index; trackBy: itemIndex\">\n <tr *ngFor=\"let week of weeks; let rangeIndex = index; trackBy: itemIndex\">\n <ng-container *ngFor=\"let resource of horizontalResources | resourceIterator; let horizontalIndex = index; trackBy: itemIndex\">\n <td *ngFor=\"let day of week; let index = index; trackBy: itemIndex\"\n monthSlot\n [ngClass]=\"daySlotClass(day, verticalResources.length ? verticalIndex : horizontalIndex)\"\n [start]=\"day\"\n [id]=\"{ resourceIndex: verticalResources.length ? verticalIndex : horizontalIndex, rangeIndex: rangeIndex, index: index }\"\n [title]=\"cellTitle(day)\"\n [class.k-state-selected]=\"isSlotSelected({\n start: toPlainDate(day),\n end: addDay(toPlainDate(day)),\n isAllDay: true,\n resources: resourcesByIndex(verticalResources.length ? verticalIndex : horizontalIndex)\n })\"\n >\n <span aria-hidden=\"true\" class=\"k-link k-nav-day\" *ngIf=\"!monthDaySlotTemplateRef\">{{ day | kendoDate: 'dd' }}</span>\n <ng-container *ngIf=\"monthDaySlotTemplateRef\" [ngTemplateOutlet]=\"monthDaySlotTemplateRef\"\n [ngTemplateOutletContext]=\"{ date: day, resources: resourcesByIndex(verticalResources.length ? verticalIndex : horizontalIndex) }\"></ng-container>\n </td>\n </ng-container>\n </tr>\n </ng-container>\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 monthViewItem\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 monthViewItem\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\n <div *ngFor=\"let hint of resizeHints; trackBy: itemIndex;\"\n kendoResizeHint\n [hint]=\"hint\"\n [ngClass]=\"hint.class\"\n [format]=\"resizeHintFormat\">\n </div>\n </ng-template>\n </kendo-hint-container>\n </div>\n </div>\n </div>\n "
|
|
198
201
|
}),
|
|
199
202
|
tslib_1.__metadata("design:paramtypes", [ViewContextService,
|
|
200
203
|
ViewStateService,
|
|
@@ -204,7 +207,8 @@ var MonthViewRendererComponent = /** @class */ (function (_super) {
|
|
|
204
207
|
ElementRef,
|
|
205
208
|
Renderer2,
|
|
206
209
|
PDFService,
|
|
207
|
-
LocalizationService
|
|
210
|
+
LocalizationService,
|
|
211
|
+
ChangeDetectorRef])
|
|
208
212
|
], MonthViewRendererComponent);
|
|
209
213
|
return MonthViewRendererComponent;
|
|
210
214
|
}(BaseView));
|
|
@@ -175,8 +175,8 @@ var MultiDayViewRendererComponent = /** @class */ (function (_super) {
|
|
|
175
175
|
}
|
|
176
176
|
_super.prototype.updateHintContainer.call(this);
|
|
177
177
|
};
|
|
178
|
-
MultiDayViewRendererComponent.prototype.onRelease = function () {
|
|
179
|
-
_super.prototype.onRelease.call(this);
|
|
178
|
+
MultiDayViewRendererComponent.prototype.onRelease = function (args) {
|
|
179
|
+
_super.prototype.onRelease.call(this, args);
|
|
180
180
|
this.dragContainers = null;
|
|
181
181
|
};
|
|
182
182
|
MultiDayViewRendererComponent.prototype.updateDragContainer = function (args) {
|
|
@@ -305,7 +305,7 @@ var MultiDayViewRendererComponent = /** @class */ (function (_super) {
|
|
|
305
305
|
providers: [
|
|
306
306
|
DayTimeSlotService
|
|
307
307
|
],
|
|
308
|
-
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 *ngFor=\"let resource of horizontalResources; trackBy: itemIndex;\">\n <th></th>\n </tr>\n <tr>\n <th>\u200B</th>\n </tr>\n <tr *ngIf=\"!verticalResources.length\">\n <th class=\"k-scheduler-times-all-day\" #allDayCell>{{ allDayMessage }}</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 <table class=\"k-scheduler-table\" aria-hidden=\"true\">\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\" [ngTemplateOutletContext]=\"{ resource: item }\"></ng-container>\n </th>\n </tr>\n <tr>\n <ng-container *ngFor=\"let resource of horizontalResources | resourceIterator; trackBy: itemIndex;\">\n <th *ngFor=\"let slot of daySlots; let index = index; trackBy: itemIndex\">\n <span *ngIf=\"!dateHeaderTemplateRef\" class=\"k-link k-nav-day\" [attr.data-dayslot-index]=\"index\">{{ slot.start | kendoDate: dateFormat }}</span>\n <ng-container *ngIf=\"dateHeaderTemplateRef\" [ngTemplateOutlet]=\"dateHeaderTemplateRef\" [ngTemplateOutletContext]=\"{ date: slot.start }\"></ng-container>\n </th>\n </ng-container>\n </tr>\n </table>\n <div style=\"position: relative;\" *ngIf=\"!verticalResources.length\">\n <table class=\"k-scheduler-table k-scheduler-header-all-day\" aria-hidden=\"true\">\n <tr>\n <ng-container *ngFor=\"let resource of horizontalResources | resourceIterator; let resourceIndex = index; trackBy: itemIndex;\">\n <td *ngFor=\"let slot of daySlots; let index = index; trackBy: itemIndex\"\n daySlot\n [start]=\"slot.start\"\n [end]=\"slot.end\"\n [id]=\"{ resourceIndex: resourceIndex, rangeIndex: 0, index: index }\"\n [ngClass]=\"allDaySlotClass(slot, resourceIndex)\">\n <ng-container *ngIf=\"allDaySlotTemplateRef\" [ngTemplateOutlet]=\"allDaySlotTemplateRef\"\n [ngTemplateOutletContext]=\"{ date: slot.start, resources: resourcesByIndex(resourceIndex) }\"></ng-container>\n </td>\n </ng-container>\n </tr>\n </table>\n <ng-container *ngFor=\"let item of allDayItems | async; trackBy: itemIndex;\">\n <div *ngFor=\"let itemResource of item.resources; trackBy: itemIndex;\"\n [ngClass]=\"getEventClasses(item, itemResource.resources, true)\"\n [ngStyle]=\"getEventStyles(item, itemResource, true)\"\n [kendoSchedulerFocusIndex]=\"itemResource.leafIdx\"\n dayTimeViewItem\n [isAllDay]=\"true\"\n [editable]=\"editable\"\n [eventTemplate]=\"allDayEventTemplateRef\"\n [item]=\"item\"\n [index]=\"item.index\"\n [rangeIndex]=\"item.rangeIndex\"\n [resources]=\"itemResource.resources\"\n [resourceIndex]=\"itemResource.leafIdx\">\n </div>\n </ng-container>\n <kendo-hint-container #headerHintContainer>\n <ng-template>\n <div *ngIf=\"dragHints.length && allDayDragHint\"\n class=\"k-event-drag-hint\"\n dayTimeViewItem\n [isAllDay]=\"true\"\n [ngStyle]=\"dragHints[0].style\"\n [ngClass]=\"dragHints[0].class\"\n [dragHint]=\"true\"\n [eventTemplate]=\"eventTemplateRef\"\n [item]=\"dragHints[0].item\"\n [resources]=\"dragHints[0].resources\">\n </div>\n\n <div *ngIf=\"resizeHints.length && allDayResizeHint\"\n kendoResizeHint\n [hint]=\"resizeHints[0]\"\n [ngClass]=\"resizeHints[0].class\"\n [format]=\"allDayResizeHintFormat\">\n </div>\n </ng-template>\n </kendo-hint-container>\n </div>\n </div>\n </div>\n </div>\n <div class=\"k-scheduler-pane\">\n <div class=\"k-scheduler-times\" #times>\n <ng-container *ngIf=\"showCurrentTime\">\n <div *ngFor=\"let resource of verticalResources | resourceIterator; trackBy: itemIndex;\"\n #currentTimeArrow class=\"k-current-time k-current-time-arrow-right\">\n </div>\n </ng-container>\n <table class=\"k-scheduler-table\" #timesTable aria-hidden=\"true\">\n <ng-container *ngFor=\"let resourceItem of verticalResources | resourceIterator; let leafIndex = index; trackBy: itemIndex;\">\n <tr *ngIf=\"verticalResources.length\">\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 <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 </th>\n </ng-container>\n <th class=\"k-scheduler-times-all-day\" #allDayCell>{{ allDayMessage }}</th>\n </tr>\n <tr *ngFor=\"let slot of timeSlots; let timeSlotIndex = index;trackBy: itemIndex\">\n <th *ngIf=\"slot.isMajor\" [ngClass]=\"{ 'k-slot-cell': slotDivisions === 1 }\">\n <ng-container *ngIf=\"!majorTimeHeaderTemplateRef\">{{ slot.start | kendoDate: 't' }}</ng-container>\n <ng-container *ngIf=\"majorTimeHeaderTemplateRef\" [ngTemplateOutlet]=\"majorTimeHeaderTemplateRef\" [ngTemplateOutletContext]=\"{ date: slot.start }\"></ng-container>\n </th>\n <th *ngIf=\"!slot.isMajor\" [ngClass]=\"{ 'k-slot-cell': timeSlotIndex % slotDivisions === slotDivisions - 1 }\">\n <ng-container *ngIf=\"minorTimeHeaderTemplateRef\" [ngTemplateOutlet]=\"minorTimeHeaderTemplateRef\" [ngTemplateOutletContext]=\"{ date: slot.start }\">\n </ng-container>\n </th>\n </tr>\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 verticalResources | resourceIterator; trackBy: itemIndex;\"\n #currentTimeMarker class=\"k-current-time\">\n </div>\n </ng-container>\n <table class=\"k-scheduler-table\" #contentTable role=\"presentation\">\n <ng-container *ngFor=\"let resourceItem of verticalResources | resourceIterator; let verticalIndex = index; trackBy: itemIndex;\">\n <tr class=\"k-scheduler-header-all-day\" *ngIf=\"verticalResources.length\">\n <td *ngFor=\"let slot of daySlots; let index = index; trackBy: itemIndex\"\n daySlot\n [start]=\"slot.start\"\n [end]=\"slot.end\"\n [id]=\"{ resourceIndex: verticalIndex, rangeIndex: 0, index: index }\">\n <ng-container *ngIf=\"allDaySlotTemplateRef\" [ngTemplateOutlet]=\"allDaySlotTemplateRef\"\n [ngTemplateOutletContext]=\"{ date: slot.start, resources: resourcesByIndex(verticalIndex) }\"></ng-container>\n </td>\n </tr>\n <tr *ngFor=\"let slot of timeSlots; index as index; trackBy: itemIndex\" [class.k-middle-row]=\"slot.isMajor\">\n <ng-container *ngFor=\"let resource of horizontalResources | resourceIterator; let horizontalIndex = index; trackBy: itemIndex;\">\n <td *ngFor=\"let daySlot of daySlots; index as rangeIndex; 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.startLocalTime, resources: resourcesByIndex(timeSlot.id.resourceIndex) }\">\n </ng-container>\n </td>\n </ng-container>\n </tr>\n </ng-container>\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 [vertical]=\"true\"\n [eventTemplate]=\"eventTemplateRef\"\n [item]=\"item\"\n [index]=\"item.index\"\n [rangeIndex]=\"item.rangeIndex\"\n [resources]=\"itemResource.resources\"\n [resourceIndex]=\"itemResource.leafIdx\">\n </div>\n </ng-container>\n <ng-container *ngIf=\"verticalResources.length\">\n <ng-container *ngFor=\"let item of allDayItems | async; trackBy: itemIndex;\">\n <div *ngFor=\"let itemResource of item.resources; trackBy: itemIndex;\"\n [ngClass]=\"getEventClasses(item, itemResource.resources, true)\"\n [ngStyle]=\"getEventStyles(item, itemResource, true)\"\n [kendoSchedulerFocusIndex]=\"itemResource.leafIdx\"\n dayTimeViewItem\n [isAllDay]=\"true\"\n [editable]=\"editable\"\n [eventTemplate]=\"allDayEventTemplateRef\"\n [item]=\"item\"\n [index]=\"item.index\"\n [rangeIndex]=\"item.rangeIndex\"\n [resources]=\"itemResource.resources\"\n [resourceIndex]=\"itemResource.leafIdx\">\n </div>\n </ng-container>\n </ng-container>\n <kendo-hint-container #hintContainer>\n <ng-template>\n <div *ngIf=\"dragHints.length && (!allDayDragHint || verticalResources.length)\"\n class=\"k-event-drag-hint\"\n dayTimeViewItem\n [isAllDay]=\"allDayDragHint\"\n [ngStyle]=\"dragHints[0].style\"\n [ngClass]=\"dragHints[0].class\"\n [dragHint]=\"true\"\n [eventTemplate]=\"eventTemplateRef\"\n [resources]=\"dragHints[0].resources\"\n [item]=\"dragHints[0].item\">\n </div>\n\n <ng-container *ngIf=\"resizeHints.length && (!allDayResizeHint || verticalResources.length)\">\n <div *ngFor=\"let hint of resizeHints; trackBy: itemIndex;\"\n kendoResizeHint\n [hint]=\"hint\"\n [ngClass]=\"hint.class\"\n [format]=\"allDayResizeHint ? allDayResizeHintFormat : resizeHintFormat\">\n </div>\n </ng-container>\n </ng-template>\n </kendo-hint-container>\n </div>\n </div>\n </div>\n "
|
|
308
|
+
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 *ngFor=\"let resource of horizontalResources; trackBy: itemIndex;\">\n <th></th>\n </tr>\n <tr>\n <th>\u200B</th>\n </tr>\n <tr *ngIf=\"!verticalResources.length\">\n <th class=\"k-scheduler-times-all-day\" #allDayCell>{{ allDayMessage }}</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 <table class=\"k-scheduler-table\" aria-hidden=\"true\">\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\" [ngTemplateOutletContext]=\"{ resource: item }\"></ng-container>\n </th>\n </tr>\n <tr>\n <ng-container *ngFor=\"let resource of horizontalResources | resourceIterator; trackBy: itemIndex;\">\n <th *ngFor=\"let slot of daySlots; let index = index; trackBy: itemIndex\">\n <span *ngIf=\"!dateHeaderTemplateRef\" class=\"k-link k-nav-day\" [attr.data-dayslot-index]=\"index\">{{ slot.start | kendoDate: dateFormat }}</span>\n <ng-container *ngIf=\"dateHeaderTemplateRef\" [ngTemplateOutlet]=\"dateHeaderTemplateRef\" [ngTemplateOutletContext]=\"{ date: slot.start }\"></ng-container>\n </th>\n </ng-container>\n </tr>\n </table>\n <div style=\"position: relative;\" *ngIf=\"!verticalResources.length\">\n <table class=\"k-scheduler-table k-scheduler-header-all-day k-user-select-none\" aria-hidden=\"true\">\n <tr>\n <ng-container *ngFor=\"let resource of horizontalResources | resourceIterator; let resourceIndex = index; trackBy: itemIndex;\">\n <td *ngFor=\"let slot of daySlots; let index = index; trackBy: itemIndex\"\n daySlot\n [start]=\"slot.start\"\n [end]=\"slot.end\"\n [id]=\"{ resourceIndex: resourceIndex, rangeIndex: 0, index: index }\"\n [class.k-state-selected]=\"isSlotSelected({\n start: toPlainDate(slot.start),\n end: toPlainDate(slot.end),\n isAllDay: true,\n resources: resourcesByIndex(resourceIndex)\n })\"\n [ngClass]=\"allDaySlotClass(slot, resourceIndex)\">\n <ng-container *ngIf=\"allDaySlotTemplateRef\" [ngTemplateOutlet]=\"allDaySlotTemplateRef\"\n [ngTemplateOutletContext]=\"{ date: slot.start, resources: resourcesByIndex(resourceIndex) }\"></ng-container>\n </td>\n </ng-container>\n </tr>\n </table>\n <ng-container *ngFor=\"let item of allDayItems | async; trackBy: itemIndex;\">\n <div *ngFor=\"let itemResource of item.resources; trackBy: itemIndex;\"\n [ngClass]=\"getEventClasses(item, itemResource.resources, true)\"\n [ngStyle]=\"getEventStyles(item, itemResource, true)\"\n [kendoSchedulerFocusIndex]=\"itemResource.leafIdx\"\n dayTimeViewItem\n [isAllDay]=\"true\"\n [editable]=\"editable\"\n [eventTemplate]=\"allDayEventTemplateRef\"\n [item]=\"item\"\n [index]=\"item.index\"\n [rangeIndex]=\"item.rangeIndex\"\n [resources]=\"itemResource.resources\"\n [resourceIndex]=\"itemResource.leafIdx\">\n </div>\n </ng-container>\n <kendo-hint-container #headerHintContainer>\n <ng-template>\n <div *ngIf=\"dragHints.length && allDayDragHint\"\n class=\"k-event-drag-hint\"\n dayTimeViewItem\n [isAllDay]=\"true\"\n [ngStyle]=\"dragHints[0].style\"\n [ngClass]=\"dragHints[0].class\"\n [dragHint]=\"true\"\n [eventTemplate]=\"eventTemplateRef\"\n [item]=\"dragHints[0].item\"\n [resources]=\"dragHints[0].resources\">\n </div>\n\n <div *ngIf=\"resizeHints.length && allDayResizeHint\"\n kendoResizeHint\n [hint]=\"resizeHints[0]\"\n [ngClass]=\"resizeHints[0].class\"\n [format]=\"allDayResizeHintFormat\">\n </div>\n </ng-template>\n </kendo-hint-container>\n </div>\n </div>\n </div>\n </div>\n <div class=\"k-scheduler-pane\">\n <div class=\"k-scheduler-times\" #times>\n <ng-container *ngIf=\"showCurrentTime\">\n <div *ngFor=\"let resource of verticalResources | resourceIterator; trackBy: itemIndex;\"\n #currentTimeArrow class=\"k-current-time k-current-time-arrow-right\">\n </div>\n </ng-container>\n <table class=\"k-scheduler-table\" #timesTable aria-hidden=\"true\">\n <ng-container *ngFor=\"let resourceItem of verticalResources | resourceIterator; let leafIndex = index; trackBy: itemIndex;\">\n <tr *ngIf=\"verticalResources.length\">\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 <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 </th>\n </ng-container>\n <th class=\"k-scheduler-times-all-day\" #allDayCell>{{ allDayMessage }}</th>\n </tr>\n <tr *ngFor=\"let slot of timeSlots; let timeSlotIndex = index;trackBy: itemIndex\">\n <th *ngIf=\"slot.isMajor\" [ngClass]=\"{ 'k-slot-cell': slotDivisions === 1 }\">\n <ng-container *ngIf=\"!majorTimeHeaderTemplateRef\">{{ slot.start | kendoDate: 't' }}</ng-container>\n <ng-container *ngIf=\"majorTimeHeaderTemplateRef\" [ngTemplateOutlet]=\"majorTimeHeaderTemplateRef\" [ngTemplateOutletContext]=\"{ date: slot.start }\"></ng-container>\n </th>\n <th *ngIf=\"!slot.isMajor\" [ngClass]=\"{ 'k-slot-cell': timeSlotIndex % slotDivisions === slotDivisions - 1 }\">\n <ng-container *ngIf=\"minorTimeHeaderTemplateRef\" [ngTemplateOutlet]=\"minorTimeHeaderTemplateRef\" [ngTemplateOutletContext]=\"{ date: slot.start }\">\n </ng-container>\n </th>\n </tr>\n </ng-container>\n </table>\n </div>\n <div class=\"k-scheduler-content k-user-select-none\" #content>\n <ng-container *ngIf=\"showCurrentTime\">\n <div *ngFor=\"let resource of verticalResources | resourceIterator; trackBy: itemIndex;\"\n #currentTimeMarker class=\"k-current-time\">\n </div>\n </ng-container>\n <table class=\"k-scheduler-table\" #contentTable role=\"presentation\">\n <ng-container *ngFor=\"let resourceItem of verticalResources | resourceIterator; let verticalIndex = index; trackBy: itemIndex;\">\n <tr class=\"k-scheduler-header-all-day\" *ngIf=\"verticalResources.length\">\n <td *ngFor=\"let slot of daySlots; let index = index; trackBy: itemIndex\"\n daySlot\n [start]=\"slot.start\"\n [end]=\"slot.end\"\n [class.k-state-selected]=\"isSlotSelected({\n start: toPlainDate(slot.start),\n end: toPlainDate(slot.end),\n isAllDay: true,\n resources: resourcesByIndex(verticalIndex)\n })\"\n [id]=\"{ resourceIndex: verticalIndex, rangeIndex: 0, index: index }\">\n <ng-container *ngIf=\"allDaySlotTemplateRef\" [ngTemplateOutlet]=\"allDaySlotTemplateRef\"\n [ngTemplateOutletContext]=\"{ date: slot.start, resources: resourcesByIndex(verticalIndex) }\"></ng-container>\n </td>\n </tr>\n <tr *ngFor=\"let slot of timeSlots; index as index; trackBy: itemIndex\" [class.k-middle-row]=\"slot.isMajor\">\n <ng-container *ngFor=\"let resource of horizontalResources | resourceIterator; let horizontalIndex = index; trackBy: itemIndex;\">\n <td *ngFor=\"let daySlot of daySlots; index as rangeIndex; 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 [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.startLocalTime, resources: resourcesByIndex(timeSlot.id.resourceIndex) }\">\n </ng-container>\n </td>\n </ng-container>\n </tr>\n </ng-container>\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 [vertical]=\"true\"\n [eventTemplate]=\"eventTemplateRef\"\n [item]=\"item\"\n [index]=\"item.index\"\n [rangeIndex]=\"item.rangeIndex\"\n [resources]=\"itemResource.resources\"\n [resourceIndex]=\"itemResource.leafIdx\">\n </div>\n </ng-container>\n <ng-container *ngIf=\"verticalResources.length\">\n <ng-container *ngFor=\"let item of allDayItems | async; trackBy: itemIndex;\">\n <div *ngFor=\"let itemResource of item.resources; trackBy: itemIndex;\"\n [ngClass]=\"getEventClasses(item, itemResource.resources, true)\"\n [ngStyle]=\"getEventStyles(item, itemResource, true)\"\n [kendoSchedulerFocusIndex]=\"itemResource.leafIdx\"\n dayTimeViewItem\n [isAllDay]=\"true\"\n [editable]=\"editable\"\n [eventTemplate]=\"allDayEventTemplateRef\"\n [item]=\"item\"\n [index]=\"item.index\"\n [rangeIndex]=\"item.rangeIndex\"\n [resources]=\"itemResource.resources\"\n [resourceIndex]=\"itemResource.leafIdx\">\n </div>\n </ng-container>\n </ng-container>\n <kendo-hint-container #hintContainer>\n <ng-template>\n <div *ngIf=\"dragHints.length && (!allDayDragHint || verticalResources.length)\"\n class=\"k-event-drag-hint\"\n dayTimeViewItem\n [isAllDay]=\"allDayDragHint\"\n [ngStyle]=\"dragHints[0].style\"\n [ngClass]=\"dragHints[0].class\"\n [dragHint]=\"true\"\n [eventTemplate]=\"eventTemplateRef\"\n [resources]=\"dragHints[0].resources\"\n [item]=\"dragHints[0].item\">\n </div>\n\n <ng-container *ngIf=\"resizeHints.length && (!allDayResizeHint || verticalResources.length)\">\n <div *ngFor=\"let hint of resizeHints; trackBy: itemIndex;\"\n kendoResizeHint\n [hint]=\"hint\"\n [ngClass]=\"hint.class\"\n [format]=\"allDayResizeHint ? allDayResizeHintFormat : resizeHintFormat\">\n </div>\n </ng-container>\n </ng-template>\n </kendo-hint-container>\n </div>\n </div>\n </div>\n "
|
|
309
309
|
}),
|
|
310
310
|
tslib_1.__metadata("design:paramtypes", [LocalizationService,
|
|
311
311
|
ViewContextService,
|