@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
|
@@ -16,13 +16,15 @@ var utils_1 = require("../utils");
|
|
|
16
16
|
var constants_1 = require("../constants");
|
|
17
17
|
var kendo_draggable_1 = require("@telerik/kendo-draggable");
|
|
18
18
|
var hint_container_component_1 = require("../common/hint-container.component");
|
|
19
|
+
var slot_selection_1 = require("../../types/slot-selection");
|
|
20
|
+
var slot_drag_start_event_1 = require("../../events/slot-drag-start-event");
|
|
19
21
|
var SCROLL_CHANGE = 15;
|
|
20
22
|
var MIN_DISTANCE = 60;
|
|
21
23
|
var SCROLL_INTERVAL = 50;
|
|
22
24
|
var MIN_MOVE_DISTANCE = 10;
|
|
23
25
|
/** @hidden */
|
|
24
26
|
var BaseView = /** @class */ (function () {
|
|
25
|
-
function BaseView(viewContext, viewState, intl, slotService, zone, renderer, element, pdfService, localization) {
|
|
27
|
+
function BaseView(viewContext, viewState, intl, slotService, zone, renderer, element, pdfService, localization, cdr) {
|
|
26
28
|
this.viewContext = viewContext;
|
|
27
29
|
this.viewState = viewState;
|
|
28
30
|
this.intl = intl;
|
|
@@ -32,6 +34,7 @@ var BaseView = /** @class */ (function () {
|
|
|
32
34
|
this.element = element;
|
|
33
35
|
this.pdfService = pdfService;
|
|
34
36
|
this.localization = localization;
|
|
37
|
+
this.cdr = cdr;
|
|
35
38
|
this.items = new rxjs_1.BehaviorSubject(null);
|
|
36
39
|
this.horizontalResources = [];
|
|
37
40
|
this.verticalResources = [];
|
|
@@ -45,8 +48,17 @@ var BaseView = /** @class */ (function () {
|
|
|
45
48
|
this.spans = [];
|
|
46
49
|
this.domEvents = [];
|
|
47
50
|
this.resourcesCache = {};
|
|
51
|
+
/**
|
|
52
|
+
* The slot which is currently being dragged over while selecting a range of slots.
|
|
53
|
+
*/
|
|
54
|
+
this.dragSelecting = null;
|
|
55
|
+
/**
|
|
56
|
+
* The slot where the drag-selecting originated. Used for flipping the start and end of the emitted range.
|
|
57
|
+
*/
|
|
58
|
+
this.dragSelectOrigin = null;
|
|
48
59
|
this.autoHeight = false;
|
|
49
60
|
this.rtl = false;
|
|
61
|
+
this.isSlotSelected = function () { return false; };
|
|
50
62
|
this.setSlotClass = this.setSlotClass.bind(this);
|
|
51
63
|
this.setHintClass = this.setHintClass.bind(this);
|
|
52
64
|
this.weekStart = intl.firstDay();
|
|
@@ -177,6 +189,20 @@ var BaseView = /** @class */ (function () {
|
|
|
177
189
|
}
|
|
178
190
|
return result;
|
|
179
191
|
};
|
|
192
|
+
// Similar to https://tc39.es/proposal-temporal/docs/plaindate.html
|
|
193
|
+
// Stores a "plain date" in the UTC parts of a regular `Date`.
|
|
194
|
+
BaseView.prototype.toPlainDate = function (date) {
|
|
195
|
+
var result = utils_1.toUTCDateTime(this.convertDate(date));
|
|
196
|
+
return result;
|
|
197
|
+
};
|
|
198
|
+
// Similar to https://tc39.es/proposal-temporal/docs/plaindatetime.html
|
|
199
|
+
// Stores a "plain date-time" in the UTC parts of a regular `Date`.
|
|
200
|
+
BaseView.prototype.toPlainDateTime = function (date, time) {
|
|
201
|
+
if (!date || !time) {
|
|
202
|
+
return null;
|
|
203
|
+
}
|
|
204
|
+
return this.toPlainDate(utils_1.dateWithTime(date, time));
|
|
205
|
+
};
|
|
180
206
|
BaseView.prototype.optionsChange = function (options) {
|
|
181
207
|
this.schedulerEventTemplate = options.eventTemplate;
|
|
182
208
|
this.schedulerGroupHeaderTemplate = options.groupHeaderTemplate;
|
|
@@ -184,6 +210,8 @@ var BaseView = /** @class */ (function () {
|
|
|
184
210
|
this.max = options.max;
|
|
185
211
|
this.editable = options.editable;
|
|
186
212
|
this.timezone = options.timezone;
|
|
213
|
+
this.selectable = options.selectable;
|
|
214
|
+
this.isSlotSelected = options.isSlotSelected;
|
|
187
215
|
if (!options.changes || kendo_angular_common_1.anyChanged(['group', 'resources'], options.changes, false) ||
|
|
188
216
|
options.group !== this.group || options.resources !== this.resources) {
|
|
189
217
|
this.group = options.group;
|
|
@@ -210,6 +238,7 @@ var BaseView = /** @class */ (function () {
|
|
|
210
238
|
this.toggleElement(true);
|
|
211
239
|
this.reflow();
|
|
212
240
|
this.viewState.notifyLayoutEnd();
|
|
241
|
+
this.viewState.emitEvent(slot_selection_1.slotDragEventName.refreshSlotSelection);
|
|
213
242
|
};
|
|
214
243
|
BaseView.prototype.assignResources = function () {
|
|
215
244
|
utils_1.assignTasksResources(this.tasks, {
|
|
@@ -251,16 +280,16 @@ var BaseView = /** @class */ (function () {
|
|
|
251
280
|
});
|
|
252
281
|
};
|
|
253
282
|
BaseView.prototype.onPress = function (args) {
|
|
254
|
-
var
|
|
255
|
-
var
|
|
283
|
+
var editResizable = this.editable && this.editable.resize !== false;
|
|
284
|
+
var editDraggable = this.editable && this.editable.drag !== false;
|
|
256
285
|
var target = args.originalEvent.target;
|
|
257
286
|
if (dom_queries_1.hasClasses(target, 'k-resize-handle')) {
|
|
258
|
-
if (!
|
|
287
|
+
if (!editResizable) {
|
|
259
288
|
return;
|
|
260
289
|
}
|
|
261
290
|
this.initResize(args);
|
|
262
291
|
}
|
|
263
|
-
else if (
|
|
292
|
+
else if (editDraggable) {
|
|
264
293
|
var task = this.targetTask(target);
|
|
265
294
|
if (task) {
|
|
266
295
|
if (!args.isTouch) {
|
|
@@ -270,6 +299,10 @@ var BaseView = /** @class */ (function () {
|
|
|
270
299
|
this.pressTarget = task;
|
|
271
300
|
}
|
|
272
301
|
}
|
|
302
|
+
var notDraggingEvent = !this.pressTarget;
|
|
303
|
+
if (notDraggingEvent && this.selectable) {
|
|
304
|
+
this.initDragSelect(args);
|
|
305
|
+
}
|
|
273
306
|
this.dragArgs = args;
|
|
274
307
|
};
|
|
275
308
|
BaseView.prototype.onDrag = function (args) {
|
|
@@ -284,12 +317,15 @@ var BaseView = /** @class */ (function () {
|
|
|
284
317
|
args.originalEvent.preventDefault();
|
|
285
318
|
this.scrollContainer(this.drag, args);
|
|
286
319
|
}
|
|
320
|
+
if (this.dragSelecting) {
|
|
321
|
+
this.dragSelect(args);
|
|
322
|
+
}
|
|
287
323
|
}
|
|
288
324
|
this.dragArgs = args;
|
|
289
325
|
};
|
|
290
|
-
BaseView.prototype.onRelease = function () {
|
|
326
|
+
BaseView.prototype.onRelease = function (args) {
|
|
291
327
|
clearInterval(this.scrollInterval);
|
|
292
|
-
var _a = this, resizing = _a.resizing, dragging = _a.dragging;
|
|
328
|
+
var _a = this, resizing = _a.resizing, dragging = _a.dragging, dragSelecting = _a.dragSelecting;
|
|
293
329
|
if (resizing) {
|
|
294
330
|
this.emitEvent('resizeEnd', {
|
|
295
331
|
event: resizing.task.event,
|
|
@@ -316,6 +352,20 @@ var BaseView = /** @class */ (function () {
|
|
|
316
352
|
this.resizing = null;
|
|
317
353
|
this.dragging = null;
|
|
318
354
|
}
|
|
355
|
+
if (dragSelecting) {
|
|
356
|
+
var _b = utils_1.normaliseRangeStartAndEnd(this.dragSelectOrigin, this.dragSelecting), start = _b.start, end = _b.end;
|
|
357
|
+
var range = {
|
|
358
|
+
start: this.convertDate(start),
|
|
359
|
+
end: this.convertDate(end),
|
|
360
|
+
isAllDay: this.dragSelecting.isDaySlot,
|
|
361
|
+
resources: this.resourcesByIndex(this.dragSelecting.id.resourceIndex),
|
|
362
|
+
originalEvent: args.originalEvent
|
|
363
|
+
};
|
|
364
|
+
this.viewState.notifySlotSelectionEnd(range);
|
|
365
|
+
this.dragSelectOrigin = null;
|
|
366
|
+
this.dragSelecting = null;
|
|
367
|
+
this.cdr.markForCheck();
|
|
368
|
+
}
|
|
319
369
|
this.container = null;
|
|
320
370
|
this.dragArgs = null;
|
|
321
371
|
this.pressLocation = null;
|
|
@@ -467,6 +517,51 @@ var BaseView = /** @class */ (function () {
|
|
|
467
517
|
this.updateHintContainer();
|
|
468
518
|
}
|
|
469
519
|
};
|
|
520
|
+
BaseView.prototype.initDragSelect = function (args) {
|
|
521
|
+
this.updateDragContainer(args);
|
|
522
|
+
if (!this.containerOffset) {
|
|
523
|
+
return;
|
|
524
|
+
}
|
|
525
|
+
var _a = this.coordinatesOffset(args.pageX, args.pageY), x = _a.x, y = _a.y;
|
|
526
|
+
var slot = this.slotByPosition(x, y, this.container);
|
|
527
|
+
if (!slot) {
|
|
528
|
+
return;
|
|
529
|
+
}
|
|
530
|
+
var range = {
|
|
531
|
+
start: this.convertDate(slot.start),
|
|
532
|
+
end: this.convertDate(slot.end),
|
|
533
|
+
isAllDay: slot.isDaySlot,
|
|
534
|
+
resources: this.resourcesByIndex(slot.id.resourceIndex),
|
|
535
|
+
originalEvent: args.originalEvent
|
|
536
|
+
};
|
|
537
|
+
var slotDragStartEvent = new slot_drag_start_event_1.SlotDragStartEvent(null, range);
|
|
538
|
+
this.viewState.notifySlotSelectionStart(slotDragStartEvent);
|
|
539
|
+
if (!slotDragStartEvent.isDefaultPrevented()) {
|
|
540
|
+
this.dragSelecting = slot;
|
|
541
|
+
this.dragSelectOrigin = slot;
|
|
542
|
+
this.cdr.markForCheck();
|
|
543
|
+
}
|
|
544
|
+
};
|
|
545
|
+
BaseView.prototype.dragSelect = function (args) {
|
|
546
|
+
var _a = this.coordinatesOffset(args.pageX, args.pageY), x = _a.x, y = _a.y;
|
|
547
|
+
var slot = this.slotByPosition(x, y, this.container);
|
|
548
|
+
if (!slot) {
|
|
549
|
+
return;
|
|
550
|
+
}
|
|
551
|
+
if (this.dragSelecting !== slot) {
|
|
552
|
+
this.dragSelecting = slot;
|
|
553
|
+
var _b = utils_1.normaliseRangeStartAndEnd(this.dragSelectOrigin, this.dragSelecting), start = _b.start, end = _b.end;
|
|
554
|
+
var range = {
|
|
555
|
+
start: this.convertDate(start),
|
|
556
|
+
end: this.convertDate(end),
|
|
557
|
+
isAllDay: slot.isDaySlot,
|
|
558
|
+
resources: this.resourcesByIndex(slot.id.resourceIndex),
|
|
559
|
+
originalEvent: args.originalEvent
|
|
560
|
+
};
|
|
561
|
+
this.viewState.notifySlotSelectionDrag(range);
|
|
562
|
+
this.cdr.markForCheck();
|
|
563
|
+
}
|
|
564
|
+
};
|
|
470
565
|
BaseView.prototype.dragHintClasses = function () {
|
|
471
566
|
var hintClass = this.dragging.hintClass;
|
|
472
567
|
var result = [];
|
|
@@ -0,0 +1,119 @@
|
|
|
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
|
+
"use strict";
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
var tslib_1 = require("tslib");
|
|
8
|
+
var core_1 = require("@angular/core");
|
|
9
|
+
var rxjs_1 = require("rxjs");
|
|
10
|
+
var utils_1 = require("../utils");
|
|
11
|
+
var scheduler_component_1 = require("../../scheduler.component");
|
|
12
|
+
var operators_1 = require("rxjs/operators");
|
|
13
|
+
var kendo_angular_common_1 = require("@progress/kendo-angular-common");
|
|
14
|
+
/**
|
|
15
|
+
* A directive which manages the in-memory selection state of the Scheduler slots
|
|
16
|
+
* ([see example]({% slug slotselection_scheduler %}#toc-built-in-directive)).
|
|
17
|
+
*/
|
|
18
|
+
var SlotSelectableDirective = /** @class */ (function () {
|
|
19
|
+
function SlotSelectableDirective(scheduler, cdr) {
|
|
20
|
+
var _this = this;
|
|
21
|
+
this.scheduler = scheduler;
|
|
22
|
+
this.cdr = cdr;
|
|
23
|
+
/**
|
|
24
|
+
* Fires when the currently selected slot range has changed through user interaction.
|
|
25
|
+
*/
|
|
26
|
+
this.slotSelectionChange = new core_1.EventEmitter();
|
|
27
|
+
this.selectedRange = null;
|
|
28
|
+
this.slotSelectionChangeSource = new core_1.EventEmitter();
|
|
29
|
+
this.subscriptions = new rxjs_1.Subscription();
|
|
30
|
+
this.scheduler.selectable = true;
|
|
31
|
+
this.subscriptions.add(this.slotSelectionChangeSource
|
|
32
|
+
.pipe(operators_1.distinctUntilChanged(utils_1.isSameRange)).subscribe(function (v) {
|
|
33
|
+
_this.slotSelectionChange.emit(v);
|
|
34
|
+
}));
|
|
35
|
+
var start$ = this.scheduler.slotDragStart;
|
|
36
|
+
var drag$ = this.scheduler.slotDrag;
|
|
37
|
+
var end$ = this.scheduler.slotDragEnd;
|
|
38
|
+
var startSource = start$.pipe(operators_1.filter(function (e) { return !e.isDefaultPrevented(); }));
|
|
39
|
+
this.subscriptions.add(startSource.subscribe(function (e) { return _this.initDragSelect(e); }));
|
|
40
|
+
this.subscriptions.add(drag$.subscribe(function (e) { return _this.onDrag(e); }));
|
|
41
|
+
this.subscriptions.add(end$.subscribe(function () { return _this.onRelease(); }));
|
|
42
|
+
}
|
|
43
|
+
SlotSelectableDirective.prototype.ngOnInit = function () {
|
|
44
|
+
this.scheduler.isSlotSelected = this.isSlotSelected.bind(this);
|
|
45
|
+
};
|
|
46
|
+
SlotSelectableDirective.prototype.ngOnChanges = function (changes) {
|
|
47
|
+
if (kendo_angular_common_1.isChanged("slotSelection", changes, false)) {
|
|
48
|
+
/**
|
|
49
|
+
* The default values for resources below are necessarry because this is not fixed yet: https://github.com/telerik/kendo-angular-scheduler/pull/338
|
|
50
|
+
*/
|
|
51
|
+
var resources = this.scheduler.resources ? [this.scheduler.resources[0].data[0]] : [undefined];
|
|
52
|
+
this.selectedRange = Object.assign({}, { isAllDay: false, resources: resources }, changes.slotSelection.currentValue);
|
|
53
|
+
this.cdr.markForCheck();
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
SlotSelectableDirective.prototype.ngOnDestroy = function () {
|
|
57
|
+
this.subscriptions.unsubscribe();
|
|
58
|
+
};
|
|
59
|
+
SlotSelectableDirective.prototype.isSlotSelected = function (_a) {
|
|
60
|
+
var start = _a.start, end = _a.end, isAllDay = _a.isAllDay, resources = _a.resources;
|
|
61
|
+
if (!start || !end || !this.selectedRange) {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
var match = utils_1.resourcesMatch(this.selectedRange.resources, resources);
|
|
65
|
+
if (!match) {
|
|
66
|
+
return false; // Limit selection to the grouped resource where the drag started.
|
|
67
|
+
}
|
|
68
|
+
return this.selectedRange && isAllDay === this.selectedRange.isAllDay && this.isInRange(start, end);
|
|
69
|
+
};
|
|
70
|
+
SlotSelectableDirective.prototype.initDragSelect = function (_a) {
|
|
71
|
+
var start = _a.start, end = _a.end, isAllDay = _a.isAllDay, resources = _a.resources;
|
|
72
|
+
this.selectionOriginResources = resources.slice();
|
|
73
|
+
this.selectedRange = { start: start, end: end, isAllDay: isAllDay, resources: resources.slice() };
|
|
74
|
+
this.cdr.markForCheck();
|
|
75
|
+
};
|
|
76
|
+
SlotSelectableDirective.prototype.onDrag = function (_a) {
|
|
77
|
+
var start = _a.start, end = _a.end, resources = _a.resources;
|
|
78
|
+
var match = utils_1.resourcesMatch(this.selectionOriginResources, resources);
|
|
79
|
+
if (!match) {
|
|
80
|
+
return; // Don't change selection when dragging over a different grouped resource's cells.
|
|
81
|
+
}
|
|
82
|
+
this.selectedRange.start = start;
|
|
83
|
+
this.selectedRange.end = end;
|
|
84
|
+
this.cdr.markForCheck();
|
|
85
|
+
};
|
|
86
|
+
SlotSelectableDirective.prototype.onRelease = function () {
|
|
87
|
+
this.selectionOriginResources = null;
|
|
88
|
+
if (this.selectedRange) {
|
|
89
|
+
this.slotSelectionChangeSource.emit(this.selectedRange);
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* @hidden
|
|
94
|
+
* Checks if the selected range contains a local date range.
|
|
95
|
+
*/
|
|
96
|
+
SlotSelectableDirective.prototype.isInRange = function (start, end) {
|
|
97
|
+
if (!this.selectedRange) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
return utils_1.intersects(start, end, this.selectedRange.start, this.selectedRange.end);
|
|
101
|
+
};
|
|
102
|
+
tslib_1.__decorate([
|
|
103
|
+
core_1.Input(),
|
|
104
|
+
tslib_1.__metadata("design:type", Object)
|
|
105
|
+
], SlotSelectableDirective.prototype, "slotSelection", void 0);
|
|
106
|
+
tslib_1.__decorate([
|
|
107
|
+
core_1.Output(),
|
|
108
|
+
tslib_1.__metadata("design:type", core_1.EventEmitter)
|
|
109
|
+
], SlotSelectableDirective.prototype, "slotSelectionChange", void 0);
|
|
110
|
+
SlotSelectableDirective = tslib_1.__decorate([
|
|
111
|
+
core_1.Directive({
|
|
112
|
+
selector: '[kendoSchedulerSlotSelectable]'
|
|
113
|
+
}),
|
|
114
|
+
tslib_1.__metadata("design:paramtypes", [scheduler_component_1.SchedulerComponent,
|
|
115
|
+
core_1.ChangeDetectorRef])
|
|
116
|
+
], SlotSelectableDirective);
|
|
117
|
+
return SlotSelectableDirective;
|
|
118
|
+
}());
|
|
119
|
+
exports.SlotSelectableDirective = SlotSelectableDirective;
|
|
@@ -44,7 +44,7 @@ var ViewFooterComponent = /** @class */ (function () {
|
|
|
44
44
|
core_1.Component({
|
|
45
45
|
// tslint:disable-next-line:component-selector
|
|
46
46
|
selector: '[viewFooter]',
|
|
47
|
-
template: "\n <button type=\"button\"
|
|
47
|
+
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 "
|
|
48
48
|
})
|
|
49
49
|
], ViewFooterComponent);
|
|
50
50
|
return ViewFooterComponent;
|
|
@@ -15,6 +15,7 @@ var resource_iterator_pipe_1 = require("./resource-iterator.pipe");
|
|
|
15
15
|
var hint_container_component_1 = require("./hint-container.component");
|
|
16
16
|
var resize_hint_component_1 = require("./resize-hint.component");
|
|
17
17
|
var shared_module_1 = require("../../shared.module");
|
|
18
|
+
var kendo_angular_buttons_1 = require("@progress/kendo-angular-buttons");
|
|
18
19
|
var DECLARATIONS = [
|
|
19
20
|
view_footer_component_1.ViewFooterComponent,
|
|
20
21
|
work_hours_footer_directive_1.WorkHoursFooterDirective,
|
|
@@ -31,7 +32,7 @@ var ViewsSharedModule = /** @class */ (function () {
|
|
|
31
32
|
}
|
|
32
33
|
ViewsSharedModule = tslib_1.__decorate([
|
|
33
34
|
core_1.NgModule({
|
|
34
|
-
imports: [common_1.CommonModule, kendo_angular_intl_1.IntlModule, shared_module_1.SharedModule],
|
|
35
|
+
imports: [common_1.CommonModule, kendo_angular_intl_1.IntlModule, shared_module_1.SharedModule, kendo_angular_buttons_1.ButtonsModule],
|
|
35
36
|
exports: [
|
|
36
37
|
DECLARATIONS,
|
|
37
38
|
kendo_angular_intl_1.IntlModule,
|
|
@@ -30,7 +30,7 @@ exports.ɵ2 = ɵ2;
|
|
|
30
30
|
var DayTimeViewComponent = /** @class */ (function (_super) {
|
|
31
31
|
tslib_1.__extends(DayTimeViewComponent, _super);
|
|
32
32
|
function DayTimeViewComponent(changeDetector, viewContext, viewState, intl, slotService, zone, renderer, element, pdfService, localization) {
|
|
33
|
-
var _this = _super.call(this, viewContext, viewState, intl, slotService, zone, renderer, element, pdfService, localization) || this;
|
|
33
|
+
var _this = _super.call(this, viewContext, viewState, intl, slotService, zone, renderer, element, pdfService, localization, changeDetector) || this;
|
|
34
34
|
_this.changeDetector = changeDetector;
|
|
35
35
|
_this.numberOfDays = 1;
|
|
36
36
|
_this.startTime = '00:00';
|
|
@@ -10,6 +10,7 @@ var common_1 = require("@angular/common");
|
|
|
10
10
|
var shared_module_1 = require("../../shared.module");
|
|
11
11
|
var event_slot_directive_1 = require("./event-slot.directive");
|
|
12
12
|
var day_time_view_item_component_1 = require("./day-time-view-item.component");
|
|
13
|
+
var views_shared_module_1 = require("../common/views-shared.module");
|
|
13
14
|
var DIRECTIVES = [event_slot_directive_1.TimeSlotDirective, event_slot_directive_1.DaySlotDirective, day_time_view_item_component_1.DayTimeViewItemComponent];
|
|
14
15
|
/**
|
|
15
16
|
* @hidden
|
|
@@ -19,7 +20,7 @@ var DayTimeModule = /** @class */ (function () {
|
|
|
19
20
|
}
|
|
20
21
|
DayTimeModule = tslib_1.__decorate([
|
|
21
22
|
core_1.NgModule({
|
|
22
|
-
imports: [common_1.CommonModule, shared_module_1.SharedModule],
|
|
23
|
+
imports: [common_1.CommonModule, shared_module_1.SharedModule, views_shared_module_1.ViewsSharedModule],
|
|
23
24
|
exports: [
|
|
24
25
|
DIRECTIVES
|
|
25
26
|
],
|
|
@@ -25,8 +25,8 @@ var WEEKS_COUNT = 6;
|
|
|
25
25
|
*/
|
|
26
26
|
var MonthViewRendererComponent = /** @class */ (function (_super) {
|
|
27
27
|
tslib_1.__extends(MonthViewRendererComponent, _super);
|
|
28
|
-
function MonthViewRendererComponent(viewContext, viewState, intl, slotService, zone, element, renderer, pdfService, localization) {
|
|
29
|
-
var _this = _super.call(this, viewContext, viewState, intl, slotService, zone, renderer, element, pdfService, localization) || this;
|
|
28
|
+
function MonthViewRendererComponent(viewContext, viewState, intl, slotService, zone, element, renderer, pdfService, localization, changeDetector) {
|
|
29
|
+
var _this = _super.call(this, viewContext, viewState, intl, slotService, zone, renderer, element, pdfService, localization, changeDetector) || this;
|
|
30
30
|
_this.resizeHintFormat = { skeleton: 'Md' };
|
|
31
31
|
_this.weeks = [];
|
|
32
32
|
return _this;
|
|
@@ -82,6 +82,9 @@ var MonthViewRendererComponent = /** @class */ (function (_super) {
|
|
|
82
82
|
MonthViewRendererComponent.prototype.cellTitle = function (value) {
|
|
83
83
|
return this.intl.formatDate(value, 'D');
|
|
84
84
|
};
|
|
85
|
+
MonthViewRendererComponent.prototype.addDay = function (dayStart) {
|
|
86
|
+
return kendo_date_math_1.addDays(dayStart, 1);
|
|
87
|
+
};
|
|
85
88
|
MonthViewRendererComponent.prototype.optionsChange = function (changes) {
|
|
86
89
|
this.schedulerMonthDaySlotTemplate = changes.monthDaySlotTemplate;
|
|
87
90
|
_super.prototype.optionsChange.call(this, changes);
|
|
@@ -196,7 +199,7 @@ var MonthViewRendererComponent = /** @class */ (function (_super) {
|
|
|
196
199
|
providers: [
|
|
197
200
|
month_slot_service_1.MonthSlotService
|
|
198
201
|
],
|
|
199
|
-
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\"
|
|
202
|
+
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 "
|
|
200
203
|
}),
|
|
201
204
|
tslib_1.__metadata("design:paramtypes", [view_context_service_1.ViewContextService,
|
|
202
205
|
view_state_service_1.ViewStateService,
|
|
@@ -206,7 +209,8 @@ var MonthViewRendererComponent = /** @class */ (function (_super) {
|
|
|
206
209
|
core_1.ElementRef,
|
|
207
210
|
core_1.Renderer2,
|
|
208
211
|
pdf_service_1.PDFService,
|
|
209
|
-
kendo_angular_l10n_1.LocalizationService
|
|
212
|
+
kendo_angular_l10n_1.LocalizationService,
|
|
213
|
+
core_1.ChangeDetectorRef])
|
|
210
214
|
], MonthViewRendererComponent);
|
|
211
215
|
return MonthViewRendererComponent;
|
|
212
216
|
}(base_view_1.BaseView));
|
|
@@ -177,8 +177,8 @@ var MultiDayViewRendererComponent = /** @class */ (function (_super) {
|
|
|
177
177
|
}
|
|
178
178
|
_super.prototype.updateHintContainer.call(this);
|
|
179
179
|
};
|
|
180
|
-
MultiDayViewRendererComponent.prototype.onRelease = function () {
|
|
181
|
-
_super.prototype.onRelease.call(this);
|
|
180
|
+
MultiDayViewRendererComponent.prototype.onRelease = function (args) {
|
|
181
|
+
_super.prototype.onRelease.call(this, args);
|
|
182
182
|
this.dragContainers = null;
|
|
183
183
|
};
|
|
184
184
|
MultiDayViewRendererComponent.prototype.updateDragContainer = function (args) {
|
|
@@ -307,7 +307,7 @@ var MultiDayViewRendererComponent = /** @class */ (function (_super) {
|
|
|
307
307
|
providers: [
|
|
308
308
|
day_time_slot_service_1.DayTimeSlotService
|
|
309
309
|
],
|
|
310
|
-
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 "
|
|
310
|
+
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 "
|
|
311
311
|
}),
|
|
312
312
|
tslib_1.__metadata("design:paramtypes", [kendo_angular_l10n_1.LocalizationService,
|
|
313
313
|
view_context_service_1.ViewContextService,
|