@progress/kendo-angular-scheduler 4.1.0-dev.202205110843 → 4.2.0
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/bundles/kendo-angular-scheduler.umd.js +1 -1
- package/common/dom-queries.d.ts +1 -1
- package/esm2015/editing/edit-dialog.component.js +1 -1
- package/esm2015/localization/messages.js +3 -1
- package/esm2015/navigation/focus.service.js +14 -2
- package/esm2015/package-metadata.js +1 -1
- package/esm2015/scheduler.component.js +16 -1
- package/esm2015/toolbar/navigation.component.js +2 -0
- package/esm2015/toolbar/view-selector.component.js +26 -12
- package/esm2015/views/agenda/agenda-header-item.component.js +5 -1
- package/esm2015/views/agenda/agenda-header.component.js +14 -14
- package/esm2015/views/agenda/agenda-view-internal.component.js +8 -5
- package/esm2015/views/agenda/agenda-view-list.component.js +18 -16
- package/esm2015/views/agenda/tasks.collection.js +21 -14
- package/esm2015/views/common/base-view.js +3 -3
- package/esm2015/views/day-time/day-time-view.component.js +6 -3
- package/esm2015/views/month/month-view-renderer.component.js +19 -12
- package/esm2015/views/multi-day/multi-day-view-renderer.component.js +27 -12
- package/esm2015/views/timeline/timeline-multi-day-view.component.js +18 -13
- package/fesm2015/kendo-angular-scheduler.js +286 -200
- package/localization/messages.d.ts +5 -1
- package/navigation/focus.service.d.ts +3 -1
- package/package.json +6 -6
- package/scheduler.component.d.ts +1 -0
- package/toolbar/view-selector.component.d.ts +7 -1
- package/views/agenda/agenda-header-item.component.d.ts +1 -0
- package/views/agenda/tasks.collection.d.ts +3 -1
- package/views/common/base-view.d.ts +1 -1
- package/views/common/scheduler-task.d.ts +4 -0
- package/views/day-time/day-time-view.component.d.ts +3 -1
- package/views/month/month-view-renderer.component.d.ts +3 -1
- package/views/multi-day/multi-day-view-renderer.component.d.ts +2 -1
- package/views/timeline/timeline-multi-day-view.component.d.ts +2 -1
package/common/dom-queries.d.ts
CHANGED
|
@@ -21,7 +21,7 @@ export declare const firstElementChild: (node: any) => any;
|
|
|
21
21
|
/**
|
|
22
22
|
* @hidden
|
|
23
23
|
*/
|
|
24
|
-
export declare const closestInScope: (node: any, predicate: any, scope: any) =>
|
|
24
|
+
export declare const closestInScope: (node: any, predicate: any, scope: any) => HTMLElement;
|
|
25
25
|
/**
|
|
26
26
|
* @hidden
|
|
27
27
|
*/
|
|
@@ -366,7 +366,7 @@ EditDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
|
|
|
366
366
|
<button kendoButton themeColor="primary" (click)="onSave($event)" [disabled]="!formGroup.valid">{{ textFor('save') }}</button>
|
|
367
367
|
</kendo-dialog-actions>
|
|
368
368
|
</kendo-dialog>
|
|
369
|
-
`, isInline: true, components: [{ type: i4.DialogComponent, selector: "kendo-dialog", inputs: ["actions", "actionsLayout", "autoFocusedElement", "title", "width", "minWidth", "maxWidth", "height", "minHeight", "maxHeight"], outputs: ["action", "close"], exportAs: ["kendoDialog"] }, { type: i5.SchedulerDateTimePickerComponent, selector: "kendo-scheduler-datetime-picker", inputs: ["isAllDay"], outputs: ["valueChange"] }, { type: i6.TimeZoneEditorComponent, selector: "kendo-timezone-editor", inputs: ["width"], outputs: ["valueChange"] }, { type: i7.RecurrenceEditorComponent, selector: "kendo-recurrence-editor", inputs: ["start", "timezone", "weekStart", "repeatEveryOptions", "endAfterOptions", "repeatOnOptions", "endOnOptions"], outputs: ["valueChange"], exportAs: ["kendoRecurrenceEditor"] }, { type: i8.MultipleResourceEditorComponent, selector: "kendo-multiple-resource-editor" }, { type: i9.SingleResourceEditorComponent, selector: "kendo-single-resource-editor" }, { type: i4.DialogActionsComponent, selector: "kendo-dialog-actions", inputs: ["actions", "layout"], outputs: ["action"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i11.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i11.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i11.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i12.TextBoxDirective, selector: "input[kendoTextBox]", inputs: ["value"] }, { type: i11.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i11.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i11.FormControlDirective, selector: "[formControl]", inputs: ["disabled", "formControl", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i11.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i12.CheckBoxDirective, selector: "input[kendoCheckBox]", inputs: ["size", "rounded"] }, { type: i11.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i12.TextAreaDirective, selector: "textarea[kendoTextArea]", inputs: ["autoSize", "value"], outputs: ["valueChange"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i13.ButtonDirective, selector: "button[kendoButton], span[kendoButton]", inputs: ["toggleable", "togglable", "selected", "tabIndex", "icon", "iconClass", "imageUrl", "disabled", "size", "rounded", "fillMode", "themeColor", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }] });
|
|
369
|
+
`, isInline: true, components: [{ type: i4.DialogComponent, selector: "kendo-dialog", inputs: ["actions", "actionsLayout", "autoFocusedElement", "title", "width", "minWidth", "maxWidth", "height", "minHeight", "maxHeight", "animation"], outputs: ["action", "close"], exportAs: ["kendoDialog"] }, { type: i5.SchedulerDateTimePickerComponent, selector: "kendo-scheduler-datetime-picker", inputs: ["isAllDay"], outputs: ["valueChange"] }, { type: i6.TimeZoneEditorComponent, selector: "kendo-timezone-editor", inputs: ["width"], outputs: ["valueChange"] }, { type: i7.RecurrenceEditorComponent, selector: "kendo-recurrence-editor", inputs: ["start", "timezone", "weekStart", "repeatEveryOptions", "endAfterOptions", "repeatOnOptions", "endOnOptions"], outputs: ["valueChange"], exportAs: ["kendoRecurrenceEditor"] }, { type: i8.MultipleResourceEditorComponent, selector: "kendo-multiple-resource-editor" }, { type: i9.SingleResourceEditorComponent, selector: "kendo-single-resource-editor" }, { type: i4.DialogActionsComponent, selector: "kendo-dialog-actions", inputs: ["actions", "layout"], outputs: ["action"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i11.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i11.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i11.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i12.TextBoxDirective, selector: "input[kendoTextBox]", inputs: ["value"] }, { type: i11.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i11.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i11.FormControlDirective, selector: "[formControl]", inputs: ["disabled", "formControl", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i11.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i12.CheckBoxDirective, selector: "input[kendoCheckBox]", inputs: ["size", "rounded"] }, { type: i11.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i12.TextAreaDirective, selector: "textarea[kendoTextArea]", inputs: ["autoSize", "value"], outputs: ["valueChange"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i13.ButtonDirective, selector: "button[kendoButton], span[kendoButton]", inputs: ["toggleable", "togglable", "selected", "tabIndex", "icon", "iconClass", "imageUrl", "disabled", "size", "rounded", "fillMode", "themeColor", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }] });
|
|
370
370
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: EditDialogComponent, decorators: [{
|
|
371
371
|
type: Component,
|
|
372
372
|
args: [{
|
|
@@ -11,7 +11,7 @@ import * as i0 from "@angular/core";
|
|
|
11
11
|
export class Messages extends ComponentMessages {
|
|
12
12
|
}
|
|
13
13
|
Messages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Messages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
14
|
-
Messages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: Messages, inputs: { allEvents: "allEvents", allDay: "allDay", dateHeader: "dateHeader", timeHeader: "timeHeader", eventHeader: "eventHeader", deleteTitle: "deleteTitle", nextTitle: "nextTitle", previousTitle: "previousTitle", today: "today", calendarToday: "calendarToday", showFullDay: "showFullDay", showWorkDay: "showWorkDay", dayViewTitle: "dayViewTitle", multiDayViewTitle: "multiDayViewTitle", weekViewTitle: "weekViewTitle", workWeekViewTitle: "workWeekViewTitle", monthViewTitle: "monthViewTitle", timelineViewTitle: "timelineViewTitle", timelineWeekViewTitle: "timelineWeekViewTitle", timelineMonthViewTitle: "timelineMonthViewTitle", agendaViewTitle: "agendaViewTitle", cancel: "cancel", save: "save", editorEventTitle: "editorEventTitle", editorEventStart: "editorEventStart", editorEventStartTimeZone: "editorEventStartTimeZone", editorEventEnd: "editorEventEnd", editorEventEndTimeZone: "editorEventEndTimeZone", editorEventAllDay: "editorEventAllDay", editorEventDescription: "editorEventDescription", editorEventSeparateTimeZones: "editorEventSeparateTimeZones", editorEventTimeZone: "editorEventTimeZone", recurrenceEditorRepeat: "recurrenceEditorRepeat", recurrenceEditorDailyInterval: "recurrenceEditorDailyInterval", recurrenceEditorDailyRepeatEvery: "recurrenceEditorDailyRepeatEvery", recurrenceEditorWeeklyInterval: "recurrenceEditorWeeklyInterval", recurrenceEditorWeeklyRepeatEvery: "recurrenceEditorWeeklyRepeatEvery", recurrenceEditorWeeklyRepeatOn: "recurrenceEditorWeeklyRepeatOn", recurrenceEditorMonthlyDay: "recurrenceEditorMonthlyDay", recurrenceEditorMonthlyInterval: "recurrenceEditorMonthlyInterval", recurrenceEditorMonthlyRepeatEvery: "recurrenceEditorMonthlyRepeatEvery", recurrenceEditorMonthlyRepeatOn: "recurrenceEditorMonthlyRepeatOn", recurrenceEditorYearlyOf: "recurrenceEditorYearlyOf", recurrenceEditorYearlyRepeatEvery: "recurrenceEditorYearlyRepeatEvery", recurrenceEditorYearlyRepeatOn: "recurrenceEditorYearlyRepeatOn", recurrenceEditorYearlyInterval: "recurrenceEditorYearlyInterval", recurrenceEditorFrequenciesDaily: "recurrenceEditorFrequenciesDaily", recurrenceEditorFrequenciesMonthly: "recurrenceEditorFrequenciesMonthly", recurrenceEditorFrequenciesNever: "recurrenceEditorFrequenciesNever", recurrenceEditorFrequenciesWeekly: "recurrenceEditorFrequenciesWeekly", recurrenceEditorFrequenciesYearly: "recurrenceEditorFrequenciesYearly", recurrenceEditorOffsetPositionsFirst: "recurrenceEditorOffsetPositionsFirst", recurrenceEditorOffsetPositionsSecond: "recurrenceEditorOffsetPositionsSecond", recurrenceEditorOffsetPositionsThird: "recurrenceEditorOffsetPositionsThird", recurrenceEditorOffsetPositionsFourth: "recurrenceEditorOffsetPositionsFourth", recurrenceEditorOffsetPositionsLast: "recurrenceEditorOffsetPositionsLast", recurrenceEditorWeekdaysDay: "recurrenceEditorWeekdaysDay", recurrenceEditorWeekdaysWeekday: "recurrenceEditorWeekdaysWeekday", recurrenceEditorWeekdaysWeekendday: "recurrenceEditorWeekdaysWeekendday", recurrenceEditorEndAfter: "recurrenceEditorEndAfter", recurrenceEditorEndOccurrence: "recurrenceEditorEndOccurrence", recurrenceEditorEndLabel: "recurrenceEditorEndLabel", recurrenceEditorEndNever: "recurrenceEditorEndNever", recurrenceEditorEndOn: "recurrenceEditorEndOn", editorTitle: "editorTitle", destroy: "destroy", deleteConfirmation: "deleteConfirmation", editRecurringConfirmation: "editRecurringConfirmation", editOccurrence: "editOccurrence", editSeries: "editSeries", deleteRecurringConfirmation: "deleteRecurringConfirmation", deleteOccurrence: "deleteOccurrence", deleteSeries: "deleteSeries", deleteDialogTitle: "deleteDialogTitle", deleteRecurringDialogTitle: "deleteRecurringDialogTitle", editRecurringDialogTitle: "editRecurringDialogTitle" }, usesInheritance: true, ngImport: i0 });
|
|
14
|
+
Messages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: Messages, inputs: { allEvents: "allEvents", allDay: "allDay", dateHeader: "dateHeader", timeHeader: "timeHeader", eventHeader: "eventHeader", deleteTitle: "deleteTitle", nextTitle: "nextTitle", previousTitle: "previousTitle", today: "today", calendarToday: "calendarToday", showFullDay: "showFullDay", showWorkDay: "showWorkDay", dayViewTitle: "dayViewTitle", multiDayViewTitle: "multiDayViewTitle", weekViewTitle: "weekViewTitle", workWeekViewTitle: "workWeekViewTitle", monthViewTitle: "monthViewTitle", timelineViewTitle: "timelineViewTitle", timelineWeekViewTitle: "timelineWeekViewTitle", timelineMonthViewTitle: "timelineMonthViewTitle", agendaViewTitle: "agendaViewTitle", cancel: "cancel", save: "save", editorEventTitle: "editorEventTitle", editorEventStart: "editorEventStart", editorEventStartTimeZone: "editorEventStartTimeZone", editorEventEnd: "editorEventEnd", editorEventEndTimeZone: "editorEventEndTimeZone", editorEventAllDay: "editorEventAllDay", editorEventDescription: "editorEventDescription", editorEventSeparateTimeZones: "editorEventSeparateTimeZones", editorEventTimeZone: "editorEventTimeZone", recurrenceEditorRepeat: "recurrenceEditorRepeat", recurrenceEditorDailyInterval: "recurrenceEditorDailyInterval", recurrenceEditorDailyRepeatEvery: "recurrenceEditorDailyRepeatEvery", recurrenceEditorWeeklyInterval: "recurrenceEditorWeeklyInterval", recurrenceEditorWeeklyRepeatEvery: "recurrenceEditorWeeklyRepeatEvery", recurrenceEditorWeeklyRepeatOn: "recurrenceEditorWeeklyRepeatOn", recurrenceEditorMonthlyDay: "recurrenceEditorMonthlyDay", recurrenceEditorMonthlyInterval: "recurrenceEditorMonthlyInterval", recurrenceEditorMonthlyRepeatEvery: "recurrenceEditorMonthlyRepeatEvery", recurrenceEditorMonthlyRepeatOn: "recurrenceEditorMonthlyRepeatOn", recurrenceEditorYearlyOf: "recurrenceEditorYearlyOf", recurrenceEditorYearlyRepeatEvery: "recurrenceEditorYearlyRepeatEvery", recurrenceEditorYearlyRepeatOn: "recurrenceEditorYearlyRepeatOn", recurrenceEditorYearlyInterval: "recurrenceEditorYearlyInterval", recurrenceEditorFrequenciesDaily: "recurrenceEditorFrequenciesDaily", recurrenceEditorFrequenciesMonthly: "recurrenceEditorFrequenciesMonthly", recurrenceEditorFrequenciesNever: "recurrenceEditorFrequenciesNever", recurrenceEditorFrequenciesWeekly: "recurrenceEditorFrequenciesWeekly", recurrenceEditorFrequenciesYearly: "recurrenceEditorFrequenciesYearly", recurrenceEditorOffsetPositionsFirst: "recurrenceEditorOffsetPositionsFirst", recurrenceEditorOffsetPositionsSecond: "recurrenceEditorOffsetPositionsSecond", recurrenceEditorOffsetPositionsThird: "recurrenceEditorOffsetPositionsThird", recurrenceEditorOffsetPositionsFourth: "recurrenceEditorOffsetPositionsFourth", recurrenceEditorOffsetPositionsLast: "recurrenceEditorOffsetPositionsLast", recurrenceEditorWeekdaysDay: "recurrenceEditorWeekdaysDay", recurrenceEditorWeekdaysWeekday: "recurrenceEditorWeekdaysWeekday", recurrenceEditorWeekdaysWeekendday: "recurrenceEditorWeekdaysWeekendday", recurrenceEditorEndAfter: "recurrenceEditorEndAfter", recurrenceEditorEndOccurrence: "recurrenceEditorEndOccurrence", recurrenceEditorEndLabel: "recurrenceEditorEndLabel", recurrenceEditorEndNever: "recurrenceEditorEndNever", recurrenceEditorEndOn: "recurrenceEditorEndOn", editorTitle: "editorTitle", destroy: "destroy", deleteConfirmation: "deleteConfirmation", editRecurringConfirmation: "editRecurringConfirmation", editOccurrence: "editOccurrence", editSeries: "editSeries", deleteRecurringConfirmation: "deleteRecurringConfirmation", deleteOccurrence: "deleteOccurrence", deleteSeries: "deleteSeries", deleteDialogTitle: "deleteDialogTitle", deleteRecurringDialogTitle: "deleteRecurringDialogTitle", editRecurringDialogTitle: "editRecurringDialogTitle", selectView: "selectView" }, usesInheritance: true, ngImport: i0 });
|
|
15
15
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Messages, decorators: [{
|
|
16
16
|
type: Directive
|
|
17
17
|
}], propDecorators: { allEvents: [{
|
|
@@ -166,4 +166,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
166
166
|
type: Input
|
|
167
167
|
}], editRecurringDialogTitle: [{
|
|
168
168
|
type: Input
|
|
169
|
+
}], selectView: [{
|
|
170
|
+
type: Input
|
|
169
171
|
}] } });
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Copyright © 2021 Progress Software Corporation. All rights reserved.
|
|
3
3
|
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { Injectable, Optional } from '@angular/core';
|
|
5
|
+
import { Injectable, Optional, EventEmitter } from '@angular/core';
|
|
6
6
|
import { Subscription } from 'rxjs';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
import * as i1 from "../views/common/dom-events.service";
|
|
@@ -14,6 +14,7 @@ export class FocusService {
|
|
|
14
14
|
this.renderer = renderer;
|
|
15
15
|
this.wrapper = wrapper;
|
|
16
16
|
this.domEvents = domEvents;
|
|
17
|
+
this.ariaActiveDescendant = new EventEmitter();
|
|
17
18
|
this.items = new Set();
|
|
18
19
|
this.elementMap = new WeakMap();
|
|
19
20
|
this.subs = new Subscription();
|
|
@@ -61,8 +62,18 @@ export class FocusService {
|
|
|
61
62
|
}
|
|
62
63
|
return this.activeItem !== currentItem;
|
|
63
64
|
}
|
|
65
|
+
clearActiveDescendant() {
|
|
66
|
+
this.ariaActiveDescendant.next(null);
|
|
67
|
+
}
|
|
68
|
+
;
|
|
64
69
|
activate(next) {
|
|
65
|
-
this.items.forEach(item =>
|
|
70
|
+
this.items.forEach(item => {
|
|
71
|
+
item.toggle(item === next);
|
|
72
|
+
if (item === next) {
|
|
73
|
+
const id = item.element.nativeElement.getAttribute('id');
|
|
74
|
+
this.ariaActiveDescendant.next(id);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
66
77
|
this.activeItem = next;
|
|
67
78
|
}
|
|
68
79
|
activateNext(position) {
|
|
@@ -115,6 +126,7 @@ export class FocusService {
|
|
|
115
126
|
}
|
|
116
127
|
this.focusedItem.toggleFocus(false);
|
|
117
128
|
this.focusedItem = null;
|
|
129
|
+
this.ariaActiveDescendant.next(null);
|
|
118
130
|
}
|
|
119
131
|
}
|
|
120
132
|
FocusService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FocusService, deps: [{ token: i0.Renderer2, optional: true }, { token: i0.ElementRef, optional: true }, { token: i1.DomEventsService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
@@ -9,7 +9,7 @@ export const packageMetadata = {
|
|
|
9
9
|
name: '@progress/kendo-angular-scheduler',
|
|
10
10
|
productName: 'Kendo UI for Angular',
|
|
11
11
|
productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
|
|
12
|
-
publishDate:
|
|
12
|
+
publishDate: 1655883470,
|
|
13
13
|
version: '',
|
|
14
14
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'
|
|
15
15
|
};
|
|
@@ -96,6 +96,7 @@ export class SchedulerComponent {
|
|
|
96
96
|
this.renderer = renderer;
|
|
97
97
|
this.focusService = focusService;
|
|
98
98
|
this.hostClasses = true;
|
|
99
|
+
this.ariaRole = 'application';
|
|
99
100
|
this.rtl = false;
|
|
100
101
|
/**
|
|
101
102
|
* Specifies if the Scheduler is editable.
|
|
@@ -434,6 +435,10 @@ export class SchedulerComponent {
|
|
|
434
435
|
});
|
|
435
436
|
}
|
|
436
437
|
}));
|
|
438
|
+
this.subs.add(this.focusService.ariaActiveDescendant.subscribe((id) => {
|
|
439
|
+
const method = id ? 'setAttribute' : 'removeAttribute';
|
|
440
|
+
this.renderer[method](this.wrapper.nativeElement, 'aria-activedescendant', id);
|
|
441
|
+
}));
|
|
437
442
|
this.onViewIndexChange();
|
|
438
443
|
this.notifyOptionsChange = this.notifyOptionsChange.bind(this);
|
|
439
444
|
this.subs.add(this.allDayEventTemplate.changes.subscribe(this.notifyOptionsChange));
|
|
@@ -511,6 +516,7 @@ export class SchedulerComponent {
|
|
|
511
516
|
if (args.isDefaultPrevented()) {
|
|
512
517
|
return true;
|
|
513
518
|
}
|
|
519
|
+
this.focusService.clearActiveDescendant();
|
|
514
520
|
if (action.type === 'view-change') {
|
|
515
521
|
const views = this.views.toArray();
|
|
516
522
|
const index = views.indexOf(action.view);
|
|
@@ -865,7 +871,7 @@ export class SchedulerComponent {
|
|
|
865
871
|
}
|
|
866
872
|
}
|
|
867
873
|
SchedulerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SchedulerComponent, deps: [{ token: i0.ElementRef }, { token: i1.ViewContextService }, { token: i2.ViewStateService }, { token: i3.EditService }, { token: i4.DialogsService }, { token: i5.IntlService }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i6.PDFService }, { token: i7.LocalizationService }, { token: i8.DomEventsService }, { token: i0.Renderer2 }, { token: i9.FocusService }], target: i0.ɵɵFactoryTarget.Component });
|
|
868
|
-
SchedulerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SchedulerComponent, selector: "kendo-scheduler", inputs: { selectedViewIndex: "selectedViewIndex", editable: "editable", selectable: "selectable", min: "min", max: "max", eventHeight: "eventHeight", columnWidth: "columnWidth", showWorkHours: "showWorkHours", startTime: "startTime", endTime: "endTime", workDayStart: "workDayStart", workDayEnd: "workDayEnd", workWeekStart: "workWeekStart", workWeekEnd: "workWeekEnd", weekStart: "weekStart", slotDuration: "slotDuration", slotDivisions: "slotDivisions", slotFill: "slotFill", scrollTime: "scrollTime", group: "group", resources: "resources", loading: "loading", timezone: "timezone", events: "events", selectedDate: "selectedDate", modelFields: "modelFields", currentTimeMarker: "currentTimeMarker", highlightOngoingEvents: "highlightOngoingEvents", slotClass: "slotClass", eventClass: "eventClass", eventStyles: "eventStyles", isSlotSelected: "isSlotSelected" }, outputs: { selectedViewIndexChange: "selectedViewIndexChange", navigate: "navigate", dateChange: "dateChange", slotClick: "slotClick", slotDblClick: "slotDblClick", create: "create", eventClick: "eventClick", eventDblClick: "eventDblClick", eventKeydown: "eventKeydown", cancel: "cancel", save: "save", remove: "remove", resizeStart: "resizeStart", resize: "resize", resizeEnd: "resizeEnd", dragStart: "dragStart", drag: "drag", dragEnd: "dragEnd", slotDragStart: "slotDragStart", slotDrag: "slotDrag", slotDragEnd: "slotDragEnd", pdfExport: "pdfExport" }, host: { properties: { "class.k-widget": "this.hostClasses", "class.k-scheduler": "this.hostClasses", "class.k-floatwrap": "this.hostClasses", "class.k-rtl": "this.rtl", "attr.dir": "this.dir" } }, providers: [
|
|
874
|
+
SchedulerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SchedulerComponent, selector: "kendo-scheduler", inputs: { selectedViewIndex: "selectedViewIndex", editable: "editable", selectable: "selectable", min: "min", max: "max", eventHeight: "eventHeight", columnWidth: "columnWidth", showWorkHours: "showWorkHours", startTime: "startTime", endTime: "endTime", workDayStart: "workDayStart", workDayEnd: "workDayEnd", workWeekStart: "workWeekStart", workWeekEnd: "workWeekEnd", weekStart: "weekStart", slotDuration: "slotDuration", slotDivisions: "slotDivisions", slotFill: "slotFill", scrollTime: "scrollTime", group: "group", resources: "resources", loading: "loading", timezone: "timezone", events: "events", selectedDate: "selectedDate", modelFields: "modelFields", currentTimeMarker: "currentTimeMarker", highlightOngoingEvents: "highlightOngoingEvents", slotClass: "slotClass", eventClass: "eventClass", eventStyles: "eventStyles", isSlotSelected: "isSlotSelected" }, outputs: { selectedViewIndexChange: "selectedViewIndexChange", navigate: "navigate", dateChange: "dateChange", slotClick: "slotClick", slotDblClick: "slotDblClick", create: "create", eventClick: "eventClick", eventDblClick: "eventDblClick", eventKeydown: "eventKeydown", cancel: "cancel", save: "save", remove: "remove", resizeStart: "resizeStart", resize: "resize", resizeEnd: "resizeEnd", dragStart: "dragStart", drag: "drag", dragEnd: "dragEnd", slotDragStart: "slotDragStart", slotDrag: "slotDrag", slotDragEnd: "slotDragEnd", pdfExport: "pdfExport" }, host: { properties: { "class.k-widget": "this.hostClasses", "class.k-scheduler": "this.hostClasses", "class.k-floatwrap": "this.hostClasses", "attr.role": "this.ariaRole", "class.k-rtl": "this.rtl", "attr.dir": "this.dir" } }, providers: [
|
|
869
875
|
EditService,
|
|
870
876
|
DialogsService,
|
|
871
877
|
DomEventsService,
|
|
@@ -1113,6 +1119,9 @@ SchedulerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ver
|
|
|
1113
1119
|
|
|
1114
1120
|
i18n-editRecurringDialogTitle="kendo.scheduler.editRecurringDialogTitle|The title of the recurring edit confirmation dialog, similar to 'Edit Recurring Item'"
|
|
1115
1121
|
editRecurringDialogTitle='Edit Recurring Item'
|
|
1122
|
+
|
|
1123
|
+
i18n-selectView="kendo.scheduler.selectView|The value of the aria-label attribute of the <select> element used for switching the Scheduler views."
|
|
1124
|
+
selectView='Select View'
|
|
1116
1125
|
>
|
|
1117
1126
|
</ng-container>
|
|
1118
1127
|
|
|
@@ -1403,6 +1412,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
1403
1412
|
|
|
1404
1413
|
i18n-editRecurringDialogTitle="kendo.scheduler.editRecurringDialogTitle|The title of the recurring edit confirmation dialog, similar to 'Edit Recurring Item'"
|
|
1405
1414
|
editRecurringDialogTitle='Edit Recurring Item'
|
|
1415
|
+
|
|
1416
|
+
i18n-selectView="kendo.scheduler.selectView|The value of the aria-label attribute of the <select> element used for switching the Scheduler views."
|
|
1417
|
+
selectView='Select View'
|
|
1406
1418
|
>
|
|
1407
1419
|
</ng-container>
|
|
1408
1420
|
|
|
@@ -1446,6 +1458,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
1446
1458
|
}, {
|
|
1447
1459
|
type: HostBinding,
|
|
1448
1460
|
args: ['class.k-floatwrap']
|
|
1461
|
+
}], ariaRole: [{
|
|
1462
|
+
type: HostBinding,
|
|
1463
|
+
args: ['attr.role']
|
|
1449
1464
|
}], rtl: [{
|
|
1450
1465
|
type: HostBinding,
|
|
1451
1466
|
args: ['class.k-rtl']
|
|
@@ -196,6 +196,7 @@ ToolbarNavigationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0
|
|
|
196
196
|
href="#"
|
|
197
197
|
class="k-nav-current"
|
|
198
198
|
tabindex="-1"
|
|
199
|
+
[attr.aria-live]="'polite'"
|
|
199
200
|
>
|
|
200
201
|
<span class="k-icon k-i-calendar"></span>
|
|
201
202
|
<span class="k-sm-date-format">{{ (ctx.dateRange | async)?.shortText }}</span>
|
|
@@ -252,6 +253,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
252
253
|
href="#"
|
|
253
254
|
class="k-nav-current"
|
|
254
255
|
tabindex="-1"
|
|
256
|
+
[attr.aria-live]="'polite'"
|
|
255
257
|
>
|
|
256
258
|
<span class="k-icon k-i-calendar"></span>
|
|
257
259
|
<span class="k-sm-date-format">{{ (ctx.dateRange | async)?.shortText }}</span>
|
|
@@ -5,8 +5,9 @@
|
|
|
5
5
|
import { Component, HostBinding } from '@angular/core';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
import * as i1 from "./toolbar.service";
|
|
8
|
-
import * as i2 from "@angular
|
|
9
|
-
import * as i3 from "@
|
|
8
|
+
import * as i2 from "@progress/kendo-angular-l10n";
|
|
9
|
+
import * as i3 from "@angular/common";
|
|
10
|
+
import * as i4 from "@progress/kendo-angular-buttons";
|
|
10
11
|
/**
|
|
11
12
|
* A toolbar component which contains the controls for switching the views
|
|
12
13
|
* ([see example]({% slug toolbar_scheduler %}#toc-including-the-built-in-components)).
|
|
@@ -23,8 +24,9 @@ import * as i3 from "@progress/kendo-angular-buttons";
|
|
|
23
24
|
* {% endmeta %}
|
|
24
25
|
*/
|
|
25
26
|
export class ToolbarViewSelectorComponent {
|
|
26
|
-
constructor(service) {
|
|
27
|
+
constructor(service, localization) {
|
|
27
28
|
this.service = service;
|
|
29
|
+
this.localization = localization;
|
|
28
30
|
/**
|
|
29
31
|
* @hidden
|
|
30
32
|
*/
|
|
@@ -36,6 +38,12 @@ export class ToolbarViewSelectorComponent {
|
|
|
36
38
|
get ctx() {
|
|
37
39
|
return this.service.context;
|
|
38
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* @hidden
|
|
43
|
+
*/
|
|
44
|
+
get selectView() {
|
|
45
|
+
return this.localization.get('selectView');
|
|
46
|
+
}
|
|
39
47
|
ngOnDestroy() {
|
|
40
48
|
if (this.detachDomEvents) {
|
|
41
49
|
this.detachDomEvents();
|
|
@@ -68,11 +76,14 @@ export class ToolbarViewSelectorComponent {
|
|
|
68
76
|
return this.ctx.selectedView === view;
|
|
69
77
|
}
|
|
70
78
|
}
|
|
71
|
-
ToolbarViewSelectorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ToolbarViewSelectorComponent, deps: [{ token: i1.ToolbarService }], target: i0.ɵɵFactoryTarget.Component });
|
|
79
|
+
ToolbarViewSelectorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ToolbarViewSelectorComponent, deps: [{ token: i1.ToolbarService }, { token: i2.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
72
80
|
ToolbarViewSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ToolbarViewSelectorComponent, selector: "[kendoSchedulerToolbarViewSelector]", host: { properties: { "class.k-scheduler-views-wrapper": "this.hostClasses" } }, ngImport: i0, template: `
|
|
73
|
-
<select
|
|
74
|
-
|
|
75
|
-
|
|
81
|
+
<select
|
|
82
|
+
*ngIf="ctx.views?.length > 1"
|
|
83
|
+
(change)="onChange($event)"
|
|
84
|
+
class="k-views-dropdown k-picker-md k-rounded-md k-picker-solid k-dropdownlist k-picker"
|
|
85
|
+
[attr.aria-label]="selectView"
|
|
86
|
+
>
|
|
76
87
|
<option *ngFor="let view of ctx.views"
|
|
77
88
|
[selected]="isSelected(view) === true"
|
|
78
89
|
[value]="view.name"
|
|
@@ -93,16 +104,19 @@ ToolbarViewSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12
|
|
|
93
104
|
</span>
|
|
94
105
|
</button>
|
|
95
106
|
</span>
|
|
96
|
-
`, isInline: true, directives: [{ type:
|
|
107
|
+
`, isInline: true, directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.ButtonDirective, selector: "button[kendoButton], span[kendoButton]", inputs: ["toggleable", "togglable", "selected", "tabIndex", "icon", "iconClass", "imageUrl", "disabled", "size", "rounded", "fillMode", "themeColor", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }] });
|
|
97
108
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ToolbarViewSelectorComponent, decorators: [{
|
|
98
109
|
type: Component,
|
|
99
110
|
args: [{
|
|
100
111
|
// eslint-disable-next-line @angular-eslint/component-selector
|
|
101
112
|
selector: '[kendoSchedulerToolbarViewSelector]',
|
|
102
113
|
template: `
|
|
103
|
-
<select
|
|
104
|
-
|
|
105
|
-
|
|
114
|
+
<select
|
|
115
|
+
*ngIf="ctx.views?.length > 1"
|
|
116
|
+
(change)="onChange($event)"
|
|
117
|
+
class="k-views-dropdown k-picker-md k-rounded-md k-picker-solid k-dropdownlist k-picker"
|
|
118
|
+
[attr.aria-label]="selectView"
|
|
119
|
+
>
|
|
106
120
|
<option *ngFor="let view of ctx.views"
|
|
107
121
|
[selected]="isSelected(view) === true"
|
|
108
122
|
[value]="view.name"
|
|
@@ -125,7 +139,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
125
139
|
</span>
|
|
126
140
|
`
|
|
127
141
|
}]
|
|
128
|
-
}], ctorParameters: function () { return [{ type: i1.ToolbarService }]; }, propDecorators: { hostClasses: [{
|
|
142
|
+
}], ctorParameters: function () { return [{ type: i1.ToolbarService }, { type: i2.LocalizationService }]; }, propDecorators: { hostClasses: [{
|
|
129
143
|
type: HostBinding,
|
|
130
144
|
args: ['class.k-scheduler-views-wrapper']
|
|
131
145
|
}] } });
|
|
@@ -13,6 +13,7 @@ import * as i2 from "@progress/kendo-angular-intl";
|
|
|
13
13
|
export class AgendaHeaderItemComponent {
|
|
14
14
|
constructor() {
|
|
15
15
|
this.classes = true;
|
|
16
|
+
this.roleAttribute = "rowheader";
|
|
16
17
|
}
|
|
17
18
|
get rowSpan() {
|
|
18
19
|
return this.item.rowSpan;
|
|
@@ -22,7 +23,7 @@ export class AgendaHeaderItemComponent {
|
|
|
22
23
|
}
|
|
23
24
|
}
|
|
24
25
|
AgendaHeaderItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: AgendaHeaderItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
25
|
-
AgendaHeaderItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: AgendaHeaderItemComponent, selector: "[kendoSchedulerAgendaHeaderItem]", inputs: { item: ["kendoSchedulerAgendaHeaderItem", "item"], agendaDateTemplate: "agendaDateTemplate" }, host: { properties: { "class.k-scheduler-datecolumn": "this.classes", "attr.rowspan": "this.rowSpan" } }, ngImport: i0, template: `
|
|
26
|
+
AgendaHeaderItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: AgendaHeaderItemComponent, selector: "[kendoSchedulerAgendaHeaderItem]", inputs: { item: ["kendoSchedulerAgendaHeaderItem", "item"], agendaDateTemplate: "agendaDateTemplate" }, host: { properties: { "class.k-scheduler-datecolumn": "this.classes", "attr.role": "this.roleAttribute", "attr.rowspan": "this.rowSpan" } }, ngImport: i0, template: `
|
|
26
27
|
<ng-container *ngIf="!agendaDateTemplate">
|
|
27
28
|
<strong class="k-scheduler-agendaday">{{itemDate | kendoDate: 'dd'}}</strong>
|
|
28
29
|
<em class="k-scheduler-agendaweek">{{itemDate | kendoDate: 'EEEE'}}</em>
|
|
@@ -52,6 +53,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
52
53
|
}], propDecorators: { classes: [{
|
|
53
54
|
type: HostBinding,
|
|
54
55
|
args: ["class.k-scheduler-datecolumn"]
|
|
56
|
+
}], roleAttribute: [{
|
|
57
|
+
type: HostBinding,
|
|
58
|
+
args: ["attr.role"]
|
|
55
59
|
}], rowSpan: [{
|
|
56
60
|
type: HostBinding,
|
|
57
61
|
args: ["attr.rowspan"]
|
|
@@ -27,13 +27,13 @@ export class AgendaHeaderComponent {
|
|
|
27
27
|
AgendaHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: AgendaHeaderComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
28
28
|
AgendaHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: AgendaHeaderComponent, selector: "[kendoSchedulerAgendaHeader]", inputs: { resources: "resources" }, host: { properties: { "class.k-scheduler-header": "this.classes", "class.k-state-default": "this.classes" } }, ngImport: i0, template: `
|
|
29
29
|
<div class="k-scheduler-header-wrap">
|
|
30
|
-
<table class="k-scheduler-table" role="
|
|
31
|
-
<tbody>
|
|
32
|
-
<tr>
|
|
33
|
-
<th *ngFor="let resource of resources" class="k-scheduler-groupcolumn"></th>
|
|
34
|
-
<th class="k-scheduler-datecolumn">{{ dateMessage }}</th>
|
|
35
|
-
<th class="k-scheduler-timecolumn">{{ timeMessage }}</th>
|
|
36
|
-
<th>{{ eventMessage }}</th>
|
|
30
|
+
<table class="k-scheduler-table" role="rowgroup">
|
|
31
|
+
<tbody role="none">
|
|
32
|
+
<tr role="row">
|
|
33
|
+
<th *ngFor="let resource of resources" class="k-scheduler-groupcolumn" role="columnheader"></th>
|
|
34
|
+
<th class="k-scheduler-datecolumn" role="columnheader">{{ dateMessage }}</th>
|
|
35
|
+
<th class="k-scheduler-timecolumn" role="columnheader">{{ timeMessage }}</th>
|
|
36
|
+
<th role="columnheader">{{ eventMessage }}</th>
|
|
37
37
|
</tr>
|
|
38
38
|
</tbody>
|
|
39
39
|
</table>
|
|
@@ -47,13 +47,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
47
47
|
selector: '[kendoSchedulerAgendaHeader]',
|
|
48
48
|
template: `
|
|
49
49
|
<div class="k-scheduler-header-wrap">
|
|
50
|
-
<table class="k-scheduler-table" role="
|
|
51
|
-
<tbody>
|
|
52
|
-
<tr>
|
|
53
|
-
<th *ngFor="let resource of resources" class="k-scheduler-groupcolumn"></th>
|
|
54
|
-
<th class="k-scheduler-datecolumn">{{ dateMessage }}</th>
|
|
55
|
-
<th class="k-scheduler-timecolumn">{{ timeMessage }}</th>
|
|
56
|
-
<th>{{ eventMessage }}</th>
|
|
50
|
+
<table class="k-scheduler-table" role="rowgroup">
|
|
51
|
+
<tbody role="none">
|
|
52
|
+
<tr role="row">
|
|
53
|
+
<th *ngFor="let resource of resources" class="k-scheduler-groupcolumn" role="columnheader"></th>
|
|
54
|
+
<th class="k-scheduler-datecolumn" role="columnheader">{{ dateMessage }}</th>
|
|
55
|
+
<th class="k-scheduler-timecolumn" role="columnheader">{{ timeMessage }}</th>
|
|
56
|
+
<th role="columnheader">{{ eventMessage }}</th>
|
|
57
57
|
</tr>
|
|
58
58
|
</tbody>
|
|
59
59
|
</table>
|
|
@@ -52,7 +52,10 @@ export class AgendaViewInternalComponent {
|
|
|
52
52
|
this.subs.add(this.viewContext.action.subscribe(this.onAction.bind(this)));
|
|
53
53
|
this.subs.add(this.viewContext.execute.subscribe(this.execute.bind(this)));
|
|
54
54
|
this.subs.add(this.viewContext.resize.subscribe(this.updateContentHeight));
|
|
55
|
-
this.subs.add(combineLatest(
|
|
55
|
+
this.subs.add(combineLatest([
|
|
56
|
+
this.viewContext.items,
|
|
57
|
+
this.viewState.dateRange
|
|
58
|
+
]).pipe(map(([items, dateRange]) => {
|
|
56
59
|
this.items = items;
|
|
57
60
|
this.range = dateRange;
|
|
58
61
|
return this.createEventGroups();
|
|
@@ -295,8 +298,8 @@ export class AgendaViewInternalComponent {
|
|
|
295
298
|
}
|
|
296
299
|
AgendaViewInternalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: AgendaViewInternalComponent, deps: [{ token: i1.ViewContextService }, { token: i2.ViewStateService }, { token: i3.IntlService }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i4.PDFService }, { token: i5.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
297
300
|
AgendaViewInternalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: AgendaViewInternalComponent, selector: "agenda-view-internal", inputs: { eventTemplate: "eventTemplate", slotClass: "slotClass", eventClass: "eventClass", eventStyles: "eventStyles", agendaTimeTemplate: "agendaTimeTemplate", agendaDateTemplate: "agendaDateTemplate", selectedDateFormat: "selectedDateFormat", selectedShortDateFormat: "selectedShortDateFormat", numberOfDays: "numberOfDays" }, viewQueries: [{ propertyName: "headerWrap", first: true, predicate: ["headerWrap"], descendants: true, read: ElementRef, static: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true, read: ElementRef, static: true }], usesOnChanges: true, ngImport: i0, template: `
|
|
298
|
-
<table class="k-scheduler-layout k-scheduler-agendaview k-scheduler-agenda">
|
|
299
|
-
<tbody>
|
|
301
|
+
<table class="k-scheduler-layout k-scheduler-agendaview k-scheduler-agenda" role="grid">
|
|
302
|
+
<tbody role="none">
|
|
300
303
|
<tr>
|
|
301
304
|
<td>
|
|
302
305
|
<div kendoSchedulerAgendaHeader [resources]="groupedResources" #headerWrap></div>
|
|
@@ -325,8 +328,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
325
328
|
// eslint-disable-next-line @angular-eslint/component-selector
|
|
326
329
|
selector: 'agenda-view-internal',
|
|
327
330
|
template: `
|
|
328
|
-
<table class="k-scheduler-layout k-scheduler-agendaview k-scheduler-agenda">
|
|
329
|
-
<tbody>
|
|
331
|
+
<table class="k-scheduler-layout k-scheduler-agendaview k-scheduler-agenda" role="grid">
|
|
332
|
+
<tbody role="none">
|
|
330
333
|
<tr>
|
|
331
334
|
<td>
|
|
332
335
|
<div kendoSchedulerAgendaHeader [resources]="groupedResources" #headerWrap></div>
|
|
@@ -71,12 +71,12 @@ export class AgendaListComponent {
|
|
|
71
71
|
}
|
|
72
72
|
AgendaListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: AgendaListComponent, deps: [{ token: i1.IntlService }, { token: i2.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
73
73
|
AgendaListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: AgendaListComponent, selector: "[kendoSchedulerAgendaList]", inputs: { tasks: "tasks", eventTemplate: "eventTemplate", slotClass: "slotClass", eventClass: "eventClass", eventStyles: "eventStyles", agendaTimeTemplate: "agendaTimeTemplate", agendaDateTemplate: "agendaDateTemplate", editable: "editable" }, host: { properties: { "class.k-scheduler-content": "this.classes" } }, ngImport: i0, template: `
|
|
74
|
-
<table class="k-scheduler-table" role="
|
|
75
|
-
<tbody>
|
|
74
|
+
<table class="k-scheduler-table" role="none">
|
|
75
|
+
<tbody role="rowgroup">
|
|
76
76
|
<ng-container *ngFor="let group of tasks; let groupIndex = index;">
|
|
77
|
-
<tr *ngFor="let item of group.tasks;let index = index; trackBy: trackByFn">
|
|
78
|
-
<ng-container *ngFor="let resource of group.resources;let resourceIndex = index">
|
|
79
|
-
<td *ngIf="group.spans[resourceIndex] && index === 0" class="k-scheduler-groupcolumn" [attr.rowspan]="group.spans[resourceIndex]">
|
|
77
|
+
<tr *ngFor="let item of group.tasks; let index = index; trackBy: trackByFn" role="row">
|
|
78
|
+
<ng-container *ngFor="let resource of group.resources; let resourceIndex = index">
|
|
79
|
+
<td *ngIf="group.spans[resourceIndex] && index === 0" class="k-scheduler-groupcolumn" [attr.rowspan]="group.spans[resourceIndex]" role="rowheader">
|
|
80
80
|
{{ resource }}
|
|
81
81
|
</td>
|
|
82
82
|
</ng-container>
|
|
@@ -84,19 +84,20 @@ AgendaListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
|
|
|
84
84
|
[kendoSchedulerAgendaHeaderItem]="item"
|
|
85
85
|
[agendaDateTemplate]="agendaDateTemplate">
|
|
86
86
|
</td>
|
|
87
|
-
<td class="k-scheduler-timecolumn">
|
|
87
|
+
<td class="k-scheduler-timecolumn" role="gridcell">
|
|
88
88
|
<div *ngIf="!agendaTimeTemplate">
|
|
89
89
|
<span class="k-icon k-i-arrow-60-left" *ngIf="extractDataItem(item).tail"></span>
|
|
90
|
-
{{formatTime(extractDataItem(item)) }}
|
|
90
|
+
{{ formatTime(extractDataItem(item)) }}
|
|
91
91
|
<span class="k-icon k-i-arrow-60-right" *ngIf="extractDataItem(item).head"></span>
|
|
92
92
|
</div>
|
|
93
93
|
<ng-container *ngIf="agendaTimeTemplate" [ngTemplateOutlet]="agendaTimeTemplate"
|
|
94
94
|
[ngTemplateOutletContext]="extractDataItem(item)">
|
|
95
95
|
</ng-container>
|
|
96
96
|
</td>
|
|
97
|
-
<td [attr.data-group-index]="groupIndex" [attr.data-task-index]="index"
|
|
97
|
+
<td [attr.data-group-index]="groupIndex" [attr.data-task-index]="index" role="gridcell"
|
|
98
98
|
[ngClass]="cellClasses(item)" [ngStyle]="getEventStyles(item)"
|
|
99
99
|
[kendoSchedulerFocusIndex]="groupIndex"
|
|
100
|
+
[id]="item.elementId"
|
|
100
101
|
[kendoSchedulerAgendaTaskItem]="extractDataItem(item)"
|
|
101
102
|
[editable]="editable"
|
|
102
103
|
[eventTemplate]="eventTemplate"
|
|
@@ -112,12 +113,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
112
113
|
// eslint-disable-next-line @angular-eslint/component-selector
|
|
113
114
|
selector: '[kendoSchedulerAgendaList]',
|
|
114
115
|
template: `
|
|
115
|
-
<table class="k-scheduler-table" role="
|
|
116
|
-
<tbody>
|
|
116
|
+
<table class="k-scheduler-table" role="none">
|
|
117
|
+
<tbody role="rowgroup">
|
|
117
118
|
<ng-container *ngFor="let group of tasks; let groupIndex = index;">
|
|
118
|
-
<tr *ngFor="let item of group.tasks;let index = index; trackBy: trackByFn">
|
|
119
|
-
<ng-container *ngFor="let resource of group.resources;let resourceIndex = index">
|
|
120
|
-
<td *ngIf="group.spans[resourceIndex] && index === 0" class="k-scheduler-groupcolumn" [attr.rowspan]="group.spans[resourceIndex]">
|
|
119
|
+
<tr *ngFor="let item of group.tasks; let index = index; trackBy: trackByFn" role="row">
|
|
120
|
+
<ng-container *ngFor="let resource of group.resources; let resourceIndex = index">
|
|
121
|
+
<td *ngIf="group.spans[resourceIndex] && index === 0" class="k-scheduler-groupcolumn" [attr.rowspan]="group.spans[resourceIndex]" role="rowheader">
|
|
121
122
|
{{ resource }}
|
|
122
123
|
</td>
|
|
123
124
|
</ng-container>
|
|
@@ -125,19 +126,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
125
126
|
[kendoSchedulerAgendaHeaderItem]="item"
|
|
126
127
|
[agendaDateTemplate]="agendaDateTemplate">
|
|
127
128
|
</td>
|
|
128
|
-
<td class="k-scheduler-timecolumn">
|
|
129
|
+
<td class="k-scheduler-timecolumn" role="gridcell">
|
|
129
130
|
<div *ngIf="!agendaTimeTemplate">
|
|
130
131
|
<span class="k-icon k-i-arrow-60-left" *ngIf="extractDataItem(item).tail"></span>
|
|
131
|
-
{{formatTime(extractDataItem(item)) }}
|
|
132
|
+
{{ formatTime(extractDataItem(item)) }}
|
|
132
133
|
<span class="k-icon k-i-arrow-60-right" *ngIf="extractDataItem(item).head"></span>
|
|
133
134
|
</div>
|
|
134
135
|
<ng-container *ngIf="agendaTimeTemplate" [ngTemplateOutlet]="agendaTimeTemplate"
|
|
135
136
|
[ngTemplateOutletContext]="extractDataItem(item)">
|
|
136
137
|
</ng-container>
|
|
137
138
|
</td>
|
|
138
|
-
<td [attr.data-group-index]="groupIndex" [attr.data-task-index]="index"
|
|
139
|
+
<td [attr.data-group-index]="groupIndex" [attr.data-task-index]="index" role="gridcell"
|
|
139
140
|
[ngClass]="cellClasses(item)" [ngStyle]="getEventStyles(item)"
|
|
140
141
|
[kendoSchedulerFocusIndex]="groupIndex"
|
|
142
|
+
[id]="item.elementId"
|
|
141
143
|
[kendoSchedulerAgendaTaskItem]="extractDataItem(item)"
|
|
142
144
|
[editable]="editable"
|
|
143
145
|
[eventTemplate]="eventTemplate"
|
|
@@ -15,22 +15,26 @@ export const compose = (...args) => (data) => args.reduceRight((acc, curr) => cu
|
|
|
15
15
|
* @hidden
|
|
16
16
|
*/
|
|
17
17
|
export const processEvents = (_start, _end) => compose(group([{ field: "startDate" }]), sort([{ field: "start", dir: "asc" }, { field: "end", dir: "asc" }]));
|
|
18
|
-
function
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
type: "group",
|
|
23
|
-
dataItem: groupItem,
|
|
24
|
-
rowSpan: groupItem.items.length
|
|
25
|
-
};
|
|
26
|
-
for (let itemIndex = 1; itemIndex < groupItem.items.length; itemIndex++) {
|
|
27
|
-
const item = groupItem.items[itemIndex];
|
|
18
|
+
function flattenGroupsAndAddIds(scope) {
|
|
19
|
+
return function* flattenGroups(groups) {
|
|
20
|
+
for (let index = 0; index < groups.length; index++) {
|
|
21
|
+
const groupItem = groups[index];
|
|
28
22
|
yield {
|
|
29
|
-
type: "
|
|
30
|
-
dataItem:
|
|
23
|
+
type: "group",
|
|
24
|
+
dataItem: groupItem,
|
|
25
|
+
rowSpan: groupItem.items.length,
|
|
26
|
+
elementId: `k-scheduler-${scope.counter}-${index}`
|
|
31
27
|
};
|
|
28
|
+
for (let itemIndex = 1; itemIndex < groupItem.items.length; itemIndex++) {
|
|
29
|
+
const item = groupItem.items[itemIndex];
|
|
30
|
+
yield {
|
|
31
|
+
type: "event",
|
|
32
|
+
dataItem: item,
|
|
33
|
+
elementId: `k-scheduler-${scope.counter}-${index}-item-${itemIndex}`
|
|
34
|
+
};
|
|
35
|
+
}
|
|
32
36
|
}
|
|
33
|
-
}
|
|
37
|
+
};
|
|
34
38
|
}
|
|
35
39
|
/** @hidden */
|
|
36
40
|
export class EmptyIterator {
|
|
@@ -43,6 +47,7 @@ export class EmptyIterator {
|
|
|
43
47
|
return "Empty Iterator";
|
|
44
48
|
}
|
|
45
49
|
}
|
|
50
|
+
let seed = 0;
|
|
46
51
|
/**
|
|
47
52
|
* @hidden
|
|
48
53
|
*/
|
|
@@ -51,7 +56,9 @@ export class TaskCollection {
|
|
|
51
56
|
this.start = start;
|
|
52
57
|
this.end = end;
|
|
53
58
|
this.events = events;
|
|
54
|
-
this.createIterator = compose(
|
|
59
|
+
this.createIterator = compose(flattenGroupsAndAddIds(this), processEvents(this.start, this.end));
|
|
60
|
+
this.counter = seed;
|
|
61
|
+
seed++;
|
|
55
62
|
}
|
|
56
63
|
static empty() {
|
|
57
64
|
return (new EmptyIterator());
|
|
@@ -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 { ViewChild, Input, Directive } from '@angular/core';
|
|
6
|
-
import { anyChanged } from '@progress/kendo-angular-common';
|
|
6
|
+
import { anyChanged, guid } from '@progress/kendo-angular-common';
|
|
7
7
|
import { ZonedDate } from '@progress/kendo-date-math';
|
|
8
8
|
import { Subscription, BehaviorSubject, combineLatest, fromEvent, merge } from 'rxjs';
|
|
9
9
|
import { switchMap, take, map, filter, tap } from 'rxjs/operators';
|
|
@@ -11,7 +11,7 @@ import { closestInScope, hasClasses, preventLockedScroll, scrollbarWidth, wheelD
|
|
|
11
11
|
import { groupResources, getField, setField, fromClick, fromDoubleClick } from '../../common/util';
|
|
12
12
|
import { assignTasksResources, toPx, elementOffset, pointDistance, ignoreContentChild, resourceItemByValue, convertNgClassBindings, toUTCDateTime, dateWithTime, normaliseRangeStartAndEnd } from '../utils';
|
|
13
13
|
import { BORDER_WIDTH } from '../constants';
|
|
14
|
-
import Draggable from '@
|
|
14
|
+
import Draggable from '@progress/kendo-draggable';
|
|
15
15
|
import { slotDragEventName } from '../../types/slot-selection';
|
|
16
16
|
import { SlotDragStartEvent } from '../../events/slot-drag-start-event';
|
|
17
17
|
import * as i0 from "@angular/core";
|
|
@@ -92,7 +92,7 @@ export class BaseView {
|
|
|
92
92
|
this.subs.add(combineLatest(this.viewContext.items, this.viewState.dateRange, this.viewRangeChange)
|
|
93
93
|
.pipe(map(([items, dateRange]) => this.createTasks(items, dateRange)))
|
|
94
94
|
.subscribe((tasks) => {
|
|
95
|
-
this.tasks = tasks;
|
|
95
|
+
this.tasks = tasks.map(t => (Object.assign(Object.assign({}, t), { elementId: guid() })));
|
|
96
96
|
this.assignResources();
|
|
97
97
|
this.onTasksChange();
|
|
98
98
|
}));
|