@progress/kendo-angular-scheduler 21.4.0-develop.1 → 21.4.0-develop.11
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/esm2022/events/more-events-click.mjs +24 -0
- package/esm2022/events/navigate-event.mjs +1 -1
- package/esm2022/events.mjs +1 -0
- package/esm2022/navigation/focusable.directive.mjs +1 -1
- package/esm2022/package-metadata.mjs +2 -2
- package/esm2022/scheduler.component.mjs +12 -2
- package/esm2022/views/agenda/agenda-view-internal.component.mjs +8 -4
- package/esm2022/views/agenda/agenda-view.component.mjs +3 -1
- package/esm2022/views/agenda/tasks.collection.mjs +7 -1
- package/esm2022/views/agenda/utils.mjs +2 -2
- package/esm2022/views/common/configuration-view-base.mjs +22 -2
- package/esm2022/views/common/slot-selectable.directive.mjs +3 -3
- package/esm2022/views/day-time/day-time-slot.service.mjs +1 -0
- package/esm2022/views/day-time/day-time-view.component.mjs +23 -10
- package/esm2022/views/month/month-view-renderer.component.mjs +33 -7
- package/esm2022/views/month/month-view.component.mjs +17 -5
- package/esm2022/views/month/multi-week-view.component.mjs +3 -1
- package/esm2022/views/month/utils.mjs +31 -1
- package/esm2022/views/multi-day/day-view.component.mjs +8 -1
- package/esm2022/views/multi-day/multi-day-view-renderer.component.mjs +18 -8
- package/esm2022/views/multi-day/multi-day-view.component.mjs +16 -2
- package/esm2022/views/multi-day/utils.mjs +7 -1
- package/esm2022/views/multi-day/week-view.component.mjs +3 -1
- package/esm2022/views/multi-day/work-week-view.component.mjs +3 -1
- package/esm2022/views/timeline/timeline-month-view.component.mjs +5 -1
- package/esm2022/views/timeline/timeline-multi-day-view.component.mjs +14 -4
- package/esm2022/views/timeline/timeline-view.component.mjs +8 -1
- package/esm2022/views/timeline/timeline-week-view.component.mjs +3 -1
- package/esm2022/views/timeline/utils.mjs +7 -1
- package/esm2022/views/utils.mjs +25 -3
- package/esm2022/views/year/year-view.component.mjs +7 -0
- package/events/more-events-click.d.ts +23 -0
- package/events/navigate-event.d.ts +1 -1
- package/events.d.ts +1 -0
- package/fesm2022/progress-kendo-angular-scheduler.mjs +334 -90
- package/package.json +15 -15
- package/scheduler.component.d.ts +8 -1
- package/schematics/ngAdd/index.js +3 -3
- package/views/agenda/agenda-view-internal.component.d.ts +3 -1
- package/views/agenda/tasks.collection.d.ts +3 -1
- package/views/agenda/utils.d.ts +1 -1
- package/views/common/configuration-view-base.d.ts +13 -1
- package/views/day-time/day-time-slot.service.d.ts +2 -0
- package/views/day-time/day-time-view.component.d.ts +2 -1
- package/views/month/month-view-renderer.component.d.ts +5 -2
- package/views/month/month-view.component.d.ts +9 -2
- package/views/month/utils.d.ts +2 -1
- package/views/multi-day/day-view.component.d.ts +6 -0
- package/views/multi-day/multi-day-view-renderer.component.d.ts +4 -2
- package/views/multi-day/multi-day-view.component.d.ts +8 -1
- package/views/multi-day/utils.d.ts +2 -1
- package/views/timeline/timeline-multi-day-view.component.d.ts +3 -1
- package/views/timeline/timeline-view.component.d.ts +6 -0
- package/views/timeline/utils.d.ts +2 -1
- package/views/utils.d.ts +7 -3
- package/views/year/year-view.component.d.ts +6 -0
|
@@ -9,7 +9,7 @@ const last = (arr) => arr[arr.length - 1];
|
|
|
9
9
|
/**
|
|
10
10
|
* @hidden
|
|
11
11
|
*/
|
|
12
|
-
export const createTasks = (periodStart, periodEnd, items, ranges) => {
|
|
12
|
+
export const createTasks = (periodStart, periodEnd, items, ranges, hiddenDays = []) => {
|
|
13
13
|
const tasks = [];
|
|
14
14
|
const utcStart = toUTCDate(periodStart);
|
|
15
15
|
const utcEnd = toUTCDate(periodEnd);
|
|
@@ -22,6 +22,9 @@ export const createTasks = (periodStart, periodEnd, items, ranges) => {
|
|
|
22
22
|
if (intersects(startTime, endTime, utcStart, utcEnd)) {
|
|
23
23
|
for (let rangeIdx = 0; rangeIdx < ranges.length; rangeIdx++) {
|
|
24
24
|
const range = ranges[rangeIdx];
|
|
25
|
+
if (!range[0]) {
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
25
28
|
const rangeStart = toUTCDate(range[0]);
|
|
26
29
|
const rangeEnd = addUTCDays(toUTCDate(last(range)), 1);
|
|
27
30
|
if (intersects(startTime, endTime, rangeStart, rangeEnd)) {
|
|
@@ -38,6 +41,12 @@ export const createTasks = (periodStart, periodEnd, items, ranges) => {
|
|
|
38
41
|
};
|
|
39
42
|
task.head = task.endTime > rangeEnd;
|
|
40
43
|
task.tail = task.startTime < rangeStart;
|
|
44
|
+
if (hiddenDays.includes(task.endTime.getDay())) {
|
|
45
|
+
task.head = true;
|
|
46
|
+
}
|
|
47
|
+
if (hiddenDays.includes(task.startTime.getDay())) {
|
|
48
|
+
task.tail = true;
|
|
49
|
+
}
|
|
41
50
|
let slotMatch;
|
|
42
51
|
range.forEach(slot => {
|
|
43
52
|
const slotStartTime = slot;
|
|
@@ -47,6 +56,27 @@ export const createTasks = (periodStart, periodEnd, items, ranges) => {
|
|
|
47
56
|
}
|
|
48
57
|
});
|
|
49
58
|
task.isMultiDay = task.event.end > slotMatch?.end || task.head || task.tail;
|
|
59
|
+
const eventStart = task.event.start;
|
|
60
|
+
const eventEnd = task.event.end;
|
|
61
|
+
let sameDate = eventStart.getFullYear() === eventEnd.getFullYear() &&
|
|
62
|
+
eventStart.getMonth() === eventEnd.getMonth() &&
|
|
63
|
+
eventStart.getDate() === eventEnd.getDate();
|
|
64
|
+
// Also treat as same date if end is at 00:00:00 the following day
|
|
65
|
+
if (!sameDate &&
|
|
66
|
+
eventEnd.getHours() === 0 &&
|
|
67
|
+
eventEnd.getMinutes() === 0 &&
|
|
68
|
+
eventEnd.getSeconds() === 0 &&
|
|
69
|
+
eventEnd.getMilliseconds() === 0) {
|
|
70
|
+
const nextDay = new Date(eventStart);
|
|
71
|
+
nextDay.setDate(nextDay.getDate() + 1);
|
|
72
|
+
sameDate = nextDay.getFullYear() === eventEnd.getFullYear() &&
|
|
73
|
+
nextDay.getMonth() === eventEnd.getMonth() &&
|
|
74
|
+
nextDay.getDate() === eventEnd.getDate();
|
|
75
|
+
}
|
|
76
|
+
// Skip task if it starts and ends on the same date and that date is a hidden day
|
|
77
|
+
if (hiddenDays?.length > 0 && sameDate && hiddenDays.includes(eventStart.getDay())) {
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
50
80
|
tasks.push(task);
|
|
51
81
|
}
|
|
52
82
|
}
|
|
@@ -68,6 +68,13 @@ export class DayViewComponent extends MultiDayViewBase {
|
|
|
68
68
|
* @default 'day'
|
|
69
69
|
*/
|
|
70
70
|
name = 'day';
|
|
71
|
+
/**
|
|
72
|
+
* @hidden
|
|
73
|
+
* Used to override the hiddenDays as this options is not applicable for Day view.
|
|
74
|
+
*/
|
|
75
|
+
set hiddenDays(_hiddenDays) {
|
|
76
|
+
// no-op
|
|
77
|
+
}
|
|
71
78
|
_selectedDateFormat = '{0:D}';
|
|
72
79
|
_selectedShortDateFormat = '{0:d}';
|
|
73
80
|
constructor(localization, changeDetector, viewContext, viewState) {
|
|
@@ -114,7 +121,7 @@ export class DayViewComponent extends MultiDayViewBase {
|
|
|
114
121
|
<div viewFooter kendoWorkHoursFooter [showWorkHours]="shouldShowWorkHours" (itemClick)="showWorkHours = !shouldShowWorkHours"></div>
|
|
115
122
|
}
|
|
116
123
|
</ng-template>
|
|
117
|
-
`, isInline: true, dependencies: [{ kind: "component", type: MultiDayViewRendererComponent, selector: "multi-day-view", inputs: ["allDaySlot", "name", "slotFill", "allDaySlotTemplate", "allDayEventTemplate"] }, { kind: "component", type: ViewFooterComponent, selector: "[viewFooter]", inputs: ["items"], outputs: ["itemClick"] }, { kind: "directive", type: WorkHoursFooterDirective, selector: "[kendoWorkHoursFooter]", inputs: ["showWorkHours"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
124
|
+
`, isInline: true, dependencies: [{ kind: "component", type: MultiDayViewRendererComponent, selector: "multi-day-view", inputs: ["hiddenDays", "allDaySlot", "name", "slotFill", "allDaySlotTemplate", "allDayEventTemplate"] }, { kind: "component", type: ViewFooterComponent, selector: "[viewFooter]", inputs: ["items"], outputs: ["itemClick"] }, { kind: "directive", type: WorkHoursFooterDirective, selector: "[kendoWorkHoursFooter]", inputs: ["showWorkHours"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
118
125
|
}
|
|
119
126
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DayViewComponent, decorators: [{
|
|
120
127
|
type: Component,
|
|
@@ -13,7 +13,7 @@ import { DayTimeSlotService } from '../day-time/day-time-slot.service';
|
|
|
13
13
|
import { createTasks, isMultiDay } from './utils';
|
|
14
14
|
import { DayTimeViewComponent } from '../day-time/day-time-view.component';
|
|
15
15
|
import { HintContainerComponent } from '../common/hint-container.component';
|
|
16
|
-
import { toPx, dateWithTime, elementOffset, toUTCTime, toUTCDate } from '../utils';
|
|
16
|
+
import { toPx, dateWithTime, elementOffset, toUTCTime, toUTCDate, allDaysHidden } from '../utils';
|
|
17
17
|
import { PDFService } from '../../pdf/pdf.service';
|
|
18
18
|
import { ResourceIteratorPipe } from '../common/resource-iterator.pipe';
|
|
19
19
|
import { ResizeHintComponent } from '../common/resize-hint.component';
|
|
@@ -33,6 +33,7 @@ import * as i7 from "@progress/kendo-angular-common";
|
|
|
33
33
|
* @hidden
|
|
34
34
|
*/
|
|
35
35
|
export class MultiDayViewRendererComponent extends DayTimeViewComponent {
|
|
36
|
+
hiddenDays;
|
|
36
37
|
allDaySlot;
|
|
37
38
|
name = 'day';
|
|
38
39
|
slotFill;
|
|
@@ -74,12 +75,16 @@ export class MultiDayViewRendererComponent extends DayTimeViewComponent {
|
|
|
74
75
|
if (changes.slotFill) {
|
|
75
76
|
this.changes.next(null);
|
|
76
77
|
}
|
|
78
|
+
if (changes.hiddenDays) {
|
|
79
|
+
this.slotService.hiddenDays = this.hiddenDays || [];
|
|
80
|
+
}
|
|
77
81
|
if (anyChanged(['startTime', 'endTime', 'showWorkHours', 'workDayStart',
|
|
78
82
|
'workDayEnd', 'workWeekStart', 'workWeekEnd', 'allDaySlot'], changes)) {
|
|
79
83
|
this.viewRangeChange.next(null);
|
|
80
84
|
}
|
|
81
85
|
if (isChanged('numberOfDays', changes, true /* skipFirstChange */) ||
|
|
82
|
-
isChanged('weekStart', changes)
|
|
86
|
+
isChanged('weekStart', changes) ||
|
|
87
|
+
isChanged('hiddenDays', changes)) {
|
|
83
88
|
this.daySlots = this.createDaySlots();
|
|
84
89
|
this.viewState.notifyDateRange(this.dateRange());
|
|
85
90
|
}
|
|
@@ -110,6 +115,9 @@ export class MultiDayViewRendererComponent extends DayTimeViewComponent {
|
|
|
110
115
|
});
|
|
111
116
|
}
|
|
112
117
|
}
|
|
118
|
+
isMiddleSlot(index) {
|
|
119
|
+
return index + 1 < this.timeSlots.length && !this.timeSlots[index + 1].isMajor;
|
|
120
|
+
}
|
|
113
121
|
createTasks(items, dateRange) {
|
|
114
122
|
const startTimeSlot = this.timeSlots[0];
|
|
115
123
|
const endTimeSlot = this.timeSlots[this.timeSlots.length - 1].end;
|
|
@@ -118,13 +126,16 @@ export class MultiDayViewRendererComponent extends DayTimeViewComponent {
|
|
|
118
126
|
start: toUTCTime(daySlot.start, startTimeSlot.start),
|
|
119
127
|
end: nextDateEnd ? toUTCDate(daySlot.end) : toUTCTime(daySlot.start, endTimeSlot)
|
|
120
128
|
}));
|
|
121
|
-
return createTasks(dateRange.start, dateRange.end, items, ranges);
|
|
129
|
+
return createTasks(dateRange.start, dateRange.end, items, ranges, this.hiddenDays || []);
|
|
122
130
|
}
|
|
123
131
|
onTasksChange() {
|
|
124
132
|
this.items.next(this.tasks.filter(task => !task.isAllDay));
|
|
125
133
|
this.allDayItems.next(this.tasks.filter(task => task.isAllDay));
|
|
126
134
|
}
|
|
127
135
|
reflow() {
|
|
136
|
+
if (allDaysHidden(this.hiddenDays)) {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
128
139
|
const slotService = this.slotService;
|
|
129
140
|
if (!this.verticalResources.length) {
|
|
130
141
|
this.updateContentHeight();
|
|
@@ -245,11 +256,8 @@ export class MultiDayViewRendererComponent extends DayTimeViewComponent {
|
|
|
245
256
|
}
|
|
246
257
|
return 0;
|
|
247
258
|
}
|
|
248
|
-
isMiddleSlot(index) {
|
|
249
|
-
return index + 1 < this.timeSlots.length && !this.timeSlots[index + 1].isMajor;
|
|
250
|
-
}
|
|
251
259
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MultiDayViewRendererComponent, deps: [{ token: i1.LocalizationService }, { token: i2.ViewContextService }, { token: i3.ViewStateService }, { token: i4.IntlService }, { token: i5.DayTimeSlotService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i6.PDFService }, { token: i7.ScrollbarWidthService }], target: i0.ɵɵFactoryTarget.Component });
|
|
252
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: MultiDayViewRendererComponent, isStandalone: true, selector: "multi-day-view", inputs: { allDaySlot: "allDaySlot", name: "name", slotFill: "slotFill", allDaySlotTemplate: "allDaySlotTemplate", allDayEventTemplate: "allDayEventTemplate" }, providers: [
|
|
260
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: MultiDayViewRendererComponent, isStandalone: true, selector: "multi-day-view", inputs: { hiddenDays: "hiddenDays", allDaySlot: "allDaySlot", name: "name", slotFill: "slotFill", allDaySlotTemplate: "allDaySlotTemplate", allDayEventTemplate: "allDayEventTemplate" }, providers: [
|
|
253
261
|
DayTimeSlotService
|
|
254
262
|
], viewQueries: [{ propertyName: "headerHintContainer", first: true, predicate: ["headerHintContainer"], descendants: true }, { propertyName: "dayCells", predicate: ["allDayCell"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
|
|
255
263
|
<table class="k-scheduler-layout" role="presentation" [ngClass]="classNames">
|
|
@@ -973,7 +981,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
973
981
|
standalone: true,
|
|
974
982
|
imports: [NgClass, NgTemplateOutlet, DaySlotDirective, DayTimeViewItemComponent, NgStyle, FocusableDirective, HintContainerComponent, ResizeHintComponent, TimeSlotDirective, ResourceIteratorPipe, DatePipe, AsyncPipe]
|
|
975
983
|
}]
|
|
976
|
-
}], ctorParameters: () => [{ type: i1.LocalizationService }, { type: i2.ViewContextService }, { type: i3.ViewStateService }, { type: i4.IntlService }, { type: i5.DayTimeSlotService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i6.PDFService }, { type: i7.ScrollbarWidthService }], propDecorators: {
|
|
984
|
+
}], ctorParameters: () => [{ type: i1.LocalizationService }, { type: i2.ViewContextService }, { type: i3.ViewStateService }, { type: i4.IntlService }, { type: i5.DayTimeSlotService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i6.PDFService }, { type: i7.ScrollbarWidthService }], propDecorators: { hiddenDays: [{
|
|
985
|
+
type: Input
|
|
986
|
+
}], allDaySlot: [{
|
|
977
987
|
type: Input
|
|
978
988
|
}], name: [{
|
|
979
989
|
type: Input
|
|
@@ -55,6 +55,16 @@ export class MultiDayViewComponent extends DayViewComponent {
|
|
|
55
55
|
* @default 1
|
|
56
56
|
*/
|
|
57
57
|
numberOfDays = 1;
|
|
58
|
+
/**
|
|
59
|
+
* Specifies the days that will be hidden from the view.
|
|
60
|
+
* Accepts an array of `Day` enum values.
|
|
61
|
+
**/
|
|
62
|
+
set hiddenDays(value) {
|
|
63
|
+
this._hiddenDays = value;
|
|
64
|
+
}
|
|
65
|
+
get hiddenDays() {
|
|
66
|
+
return this._hiddenDays;
|
|
67
|
+
}
|
|
58
68
|
/**
|
|
59
69
|
* @hidden
|
|
60
70
|
*/
|
|
@@ -78,7 +88,7 @@ export class MultiDayViewComponent extends DayViewComponent {
|
|
|
78
88
|
super(localization, changeDetector, viewContext, viewState);
|
|
79
89
|
}
|
|
80
90
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MultiDayViewComponent, deps: [{ token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i2.ViewContextService }, { token: i3.ViewStateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
81
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: MultiDayViewComponent, isStandalone: true, selector: "kendo-scheduler-multi-day-view", inputs: { selectedDateFormat: "selectedDateFormat", selectedShortDateFormat: "selectedShortDateFormat", numberOfDays: "numberOfDays" }, providers: [{
|
|
91
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: MultiDayViewComponent, isStandalone: true, selector: "kendo-scheduler-multi-day-view", inputs: { selectedDateFormat: "selectedDateFormat", selectedShortDateFormat: "selectedShortDateFormat", numberOfDays: "numberOfDays", hiddenDays: "hiddenDays" }, providers: [{
|
|
82
92
|
provide: SchedulerView,
|
|
83
93
|
useExisting: forwardRef(() => MultiDayViewComponent)
|
|
84
94
|
}], usesInheritance: true, ngImport: i0, template: `
|
|
@@ -87,6 +97,7 @@ export class MultiDayViewComponent extends DayViewComponent {
|
|
|
87
97
|
viewName="day"
|
|
88
98
|
[allDaySlot]="allDaySlot"
|
|
89
99
|
[name]="name"
|
|
100
|
+
[hiddenDays]="viewHiddenDays"
|
|
90
101
|
[numberOfDays]="numberOfDays"
|
|
91
102
|
[eventHeight]="viewEventHeight"
|
|
92
103
|
[currentTimeMarker]="viewCurrentTimeMarker"
|
|
@@ -120,7 +131,7 @@ export class MultiDayViewComponent extends DayViewComponent {
|
|
|
120
131
|
<div viewFooter kendoWorkHoursFooter [showWorkHours]="shouldShowWorkHours" (itemClick)="showWorkHours = !shouldShowWorkHours"></div>
|
|
121
132
|
}
|
|
122
133
|
</ng-template>
|
|
123
|
-
`, isInline: true, dependencies: [{ kind: "component", type: MultiDayViewRendererComponent, selector: "multi-day-view", inputs: ["allDaySlot", "name", "slotFill", "allDaySlotTemplate", "allDayEventTemplate"] }, { kind: "component", type: ViewFooterComponent, selector: "[viewFooter]", inputs: ["items"], outputs: ["itemClick"] }, { kind: "directive", type: WorkHoursFooterDirective, selector: "[kendoWorkHoursFooter]", inputs: ["showWorkHours"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
134
|
+
`, isInline: true, dependencies: [{ kind: "component", type: MultiDayViewRendererComponent, selector: "multi-day-view", inputs: ["hiddenDays", "allDaySlot", "name", "slotFill", "allDaySlotTemplate", "allDayEventTemplate"] }, { kind: "component", type: ViewFooterComponent, selector: "[viewFooter]", inputs: ["items"], outputs: ["itemClick"] }, { kind: "directive", type: WorkHoursFooterDirective, selector: "[kendoWorkHoursFooter]", inputs: ["showWorkHours"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
124
135
|
}
|
|
125
136
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MultiDayViewComponent, decorators: [{
|
|
126
137
|
type: Component,
|
|
@@ -137,6 +148,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
137
148
|
viewName="day"
|
|
138
149
|
[allDaySlot]="allDaySlot"
|
|
139
150
|
[name]="name"
|
|
151
|
+
[hiddenDays]="viewHiddenDays"
|
|
140
152
|
[numberOfDays]="numberOfDays"
|
|
141
153
|
[eventHeight]="viewEventHeight"
|
|
142
154
|
[currentTimeMarker]="viewCurrentTimeMarker"
|
|
@@ -180,4 +192,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
180
192
|
type: Input
|
|
181
193
|
}], numberOfDays: [{
|
|
182
194
|
type: Input
|
|
195
|
+
}], hiddenDays: [{
|
|
196
|
+
type: Input
|
|
183
197
|
}] } });
|
|
@@ -13,7 +13,7 @@ export const isMultiDay = ({ start, end }) => {
|
|
|
13
13
|
};
|
|
14
14
|
//check start and times or update day ranges to have them
|
|
15
15
|
/** @hidden */
|
|
16
|
-
export const createTasks = (periodStart, periodEnd, items, ranges) => {
|
|
16
|
+
export const createTasks = (periodStart, periodEnd, items, ranges, hiddenDays = []) => {
|
|
17
17
|
const tasks = [];
|
|
18
18
|
const utcStart = toUTCDate(periodStart);
|
|
19
19
|
const utcEnd = toUTCDate(periodEnd);
|
|
@@ -49,6 +49,12 @@ export const createTasks = (periodStart, periodEnd, items, ranges) => {
|
|
|
49
49
|
const previousRange = ranges[rangeIndex - 1];
|
|
50
50
|
task.head = (nextRange ? nextRange.start : utcEnd) < endTime;
|
|
51
51
|
task.tail = startTime < (previousRange ? previousRange.end : utcStart);
|
|
52
|
+
if (hiddenDays.includes(task.endTime.getDay())) {
|
|
53
|
+
task.head = true;
|
|
54
|
+
}
|
|
55
|
+
if (hiddenDays.includes(task.startTime.getDay())) {
|
|
56
|
+
task.tail = true;
|
|
57
|
+
}
|
|
52
58
|
}
|
|
53
59
|
}
|
|
54
60
|
}
|
|
@@ -85,6 +85,7 @@ export class WeekViewComponent extends MultiDayViewBase {
|
|
|
85
85
|
[name]="name"
|
|
86
86
|
[allDaySlot]="viewAllDaySlot"
|
|
87
87
|
[numberOfDays]="7"
|
|
88
|
+
[hiddenDays]="viewHiddenDays"
|
|
88
89
|
[getStartDate]="getStartDate"
|
|
89
90
|
[eventHeight]="viewEventHeight"
|
|
90
91
|
[currentTimeMarker]="viewCurrentTimeMarker"
|
|
@@ -119,7 +120,7 @@ export class WeekViewComponent extends MultiDayViewBase {
|
|
|
119
120
|
<div viewFooter kendoWorkHoursFooter [showWorkHours]="shouldShowWorkHours" (itemClick)="showWorkHours = !shouldShowWorkHours"></div>
|
|
120
121
|
}
|
|
121
122
|
</ng-template>
|
|
122
|
-
`, isInline: true, dependencies: [{ kind: "component", type: MultiDayViewRendererComponent, selector: "multi-day-view", inputs: ["allDaySlot", "name", "slotFill", "allDaySlotTemplate", "allDayEventTemplate"] }, { kind: "component", type: ViewFooterComponent, selector: "[viewFooter]", inputs: ["items"], outputs: ["itemClick"] }, { kind: "directive", type: WorkHoursFooterDirective, selector: "[kendoWorkHoursFooter]", inputs: ["showWorkHours"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
123
|
+
`, isInline: true, dependencies: [{ kind: "component", type: MultiDayViewRendererComponent, selector: "multi-day-view", inputs: ["hiddenDays", "allDaySlot", "name", "slotFill", "allDaySlotTemplate", "allDayEventTemplate"] }, { kind: "component", type: ViewFooterComponent, selector: "[viewFooter]", inputs: ["items"], outputs: ["itemClick"] }, { kind: "directive", type: WorkHoursFooterDirective, selector: "[kendoWorkHoursFooter]", inputs: ["showWorkHours"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
123
124
|
}
|
|
124
125
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WeekViewComponent, decorators: [{
|
|
125
126
|
type: Component,
|
|
@@ -136,6 +137,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
136
137
|
[name]="name"
|
|
137
138
|
[allDaySlot]="viewAllDaySlot"
|
|
138
139
|
[numberOfDays]="7"
|
|
140
|
+
[hiddenDays]="viewHiddenDays"
|
|
139
141
|
[getStartDate]="getStartDate"
|
|
140
142
|
[eventHeight]="viewEventHeight"
|
|
141
143
|
[currentTimeMarker]="viewCurrentTimeMarker"
|
|
@@ -77,6 +77,7 @@ export class WorkWeekViewComponent extends WeekViewComponent {
|
|
|
77
77
|
[allDaySlot]="viewAllDaySlot"
|
|
78
78
|
[name]="name"
|
|
79
79
|
[numberOfDays]="numberOfDays"
|
|
80
|
+
[hiddenDays]="viewHiddenDays"
|
|
80
81
|
[getStartDate]="getStartDate"
|
|
81
82
|
[getNextDate]="getNextDate"
|
|
82
83
|
[eventHeight]="viewEventHeight"
|
|
@@ -111,7 +112,7 @@ export class WorkWeekViewComponent extends WeekViewComponent {
|
|
|
111
112
|
<div viewFooter kendoWorkHoursFooter [showWorkHours]="shouldShowWorkHours" (itemClick)="showWorkHours = !shouldShowWorkHours"></div>
|
|
112
113
|
}
|
|
113
114
|
</ng-template>
|
|
114
|
-
`, isInline: true, dependencies: [{ kind: "component", type: MultiDayViewRendererComponent, selector: "multi-day-view", inputs: ["allDaySlot", "name", "slotFill", "allDaySlotTemplate", "allDayEventTemplate"] }, { kind: "component", type: ViewFooterComponent, selector: "[viewFooter]", inputs: ["items"], outputs: ["itemClick"] }, { kind: "directive", type: WorkHoursFooterDirective, selector: "[kendoWorkHoursFooter]", inputs: ["showWorkHours"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
115
|
+
`, isInline: true, dependencies: [{ kind: "component", type: MultiDayViewRendererComponent, selector: "multi-day-view", inputs: ["hiddenDays", "allDaySlot", "name", "slotFill", "allDaySlotTemplate", "allDayEventTemplate"] }, { kind: "component", type: ViewFooterComponent, selector: "[viewFooter]", inputs: ["items"], outputs: ["itemClick"] }, { kind: "directive", type: WorkHoursFooterDirective, selector: "[kendoWorkHoursFooter]", inputs: ["showWorkHours"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
115
116
|
}
|
|
116
117
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WorkWeekViewComponent, decorators: [{
|
|
117
118
|
type: Component,
|
|
@@ -129,6 +130,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
129
130
|
[allDaySlot]="viewAllDaySlot"
|
|
130
131
|
[name]="name"
|
|
131
132
|
[numberOfDays]="numberOfDays"
|
|
133
|
+
[hiddenDays]="viewHiddenDays"
|
|
132
134
|
[getStartDate]="getStartDate"
|
|
133
135
|
[getNextDate]="getNextDate"
|
|
134
136
|
[eventHeight]="viewEventHeight"
|
|
@@ -112,6 +112,8 @@ export class TimelineMonthViewComponent extends TimelineBase {
|
|
|
112
112
|
<timeline-multi-day-view
|
|
113
113
|
viewName="timeline-month"
|
|
114
114
|
[name]="name"
|
|
115
|
+
[hiddenDays]="viewHiddenDays"
|
|
116
|
+
[numberOfDays]="31 * numberOfMonths"
|
|
115
117
|
[getNextDate]="getNextDate"
|
|
116
118
|
[getStartDate]="getStartDate"
|
|
117
119
|
[getEndDate]="getEndDate"
|
|
@@ -145,7 +147,7 @@ export class TimelineMonthViewComponent extends TimelineBase {
|
|
|
145
147
|
<div viewFooter kendoWorkHoursFooter [showWorkHours]="shouldShowWorkHours" (itemClick)="showWorkHours = !shouldShowWorkHours"></div>
|
|
146
148
|
}
|
|
147
149
|
</ng-template>
|
|
148
|
-
`, isInline: true, dependencies: [{ kind: "component", type: TimelineMultiDayViewComponent, selector: "timeline-multi-day-view", inputs: ["name", "columnWidth", "viewName"] }, { kind: "component", type: ViewFooterComponent, selector: "[viewFooter]", inputs: ["items"], outputs: ["itemClick"] }, { kind: "directive", type: WorkHoursFooterDirective, selector: "[kendoWorkHoursFooter]", inputs: ["showWorkHours"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
150
|
+
`, isInline: true, dependencies: [{ kind: "component", type: TimelineMultiDayViewComponent, selector: "timeline-multi-day-view", inputs: ["hiddenDays", "name", "columnWidth", "viewName"] }, { kind: "component", type: ViewFooterComponent, selector: "[viewFooter]", inputs: ["items"], outputs: ["itemClick"] }, { kind: "directive", type: WorkHoursFooterDirective, selector: "[kendoWorkHoursFooter]", inputs: ["showWorkHours"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
149
151
|
}
|
|
150
152
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TimelineMonthViewComponent, decorators: [{
|
|
151
153
|
type: Component,
|
|
@@ -161,6 +163,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
161
163
|
<timeline-multi-day-view
|
|
162
164
|
viewName="timeline-month"
|
|
163
165
|
[name]="name"
|
|
166
|
+
[hiddenDays]="viewHiddenDays"
|
|
167
|
+
[numberOfDays]="31 * numberOfMonths"
|
|
164
168
|
[getNextDate]="getNextDate"
|
|
165
169
|
[getStartDate]="getStartDate"
|
|
166
170
|
[getEndDate]="getEndDate"
|
|
@@ -12,7 +12,7 @@ import { createTasks, SortPipe } from './utils';
|
|
|
12
12
|
import { toPx } from '../utils';
|
|
13
13
|
import { DayTimeViewComponent } from '../day-time/day-time-view.component';
|
|
14
14
|
import { PDFService } from '../../pdf/pdf.service';
|
|
15
|
-
import { ScrollbarWidthService, isDocumentAvailable } from '@progress/kendo-angular-common';
|
|
15
|
+
import { ScrollbarWidthService, anyChanged, isDocumentAvailable } from '@progress/kendo-angular-common';
|
|
16
16
|
import { ResourceIteratorPipe } from '../common/resource-iterator.pipe';
|
|
17
17
|
import { ResizeHintComponent } from '../common/resize-hint.component';
|
|
18
18
|
import { HintContainerComponent } from '../common/hint-container.component';
|
|
@@ -32,6 +32,7 @@ import * as i7 from "@progress/kendo-angular-common";
|
|
|
32
32
|
* @hidden
|
|
33
33
|
*/
|
|
34
34
|
export class TimelineMultiDayViewComponent extends DayTimeViewComponent {
|
|
35
|
+
hiddenDays;
|
|
35
36
|
name = 'timeline';
|
|
36
37
|
columnWidth = 100;
|
|
37
38
|
viewName = 'timeline';
|
|
@@ -54,6 +55,13 @@ export class TimelineMultiDayViewComponent extends DayTimeViewComponent {
|
|
|
54
55
|
if (changes.columnWidth) {
|
|
55
56
|
this.changes.next(null);
|
|
56
57
|
}
|
|
58
|
+
if (changes.hiddenDays) {
|
|
59
|
+
this.slotService.hiddenDays = this.hiddenDays || [];
|
|
60
|
+
}
|
|
61
|
+
if (anyChanged(['hiddenDays', 'numberOfDays'], changes)) {
|
|
62
|
+
this.daySlots = this.createDaySlots();
|
|
63
|
+
this.viewState.notifyDateRange(this.dateRange(this.selectedDate));
|
|
64
|
+
}
|
|
57
65
|
super.ngOnChanges(changes);
|
|
58
66
|
}
|
|
59
67
|
reflow() {
|
|
@@ -113,7 +121,7 @@ export class TimelineMultiDayViewComponent extends DayTimeViewComponent {
|
|
|
113
121
|
this.headerWrap.nativeElement.scrollLeft = this.content.nativeElement.scrollLeft;
|
|
114
122
|
}
|
|
115
123
|
createTasks(items, dateRange) {
|
|
116
|
-
return createTasks(dateRange.start, dateRange.end, items);
|
|
124
|
+
return createTasks(dateRange.start, dateRange.end, items, this.hiddenDays || []);
|
|
117
125
|
}
|
|
118
126
|
onTasksChange() {
|
|
119
127
|
this.items.next(this.tasks);
|
|
@@ -140,7 +148,7 @@ export class TimelineMultiDayViewComponent extends DayTimeViewComponent {
|
|
|
140
148
|
return this.headerWrap.nativeElement.querySelector('tr:last-child').offsetTop;
|
|
141
149
|
}
|
|
142
150
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TimelineMultiDayViewComponent, deps: [{ token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i2.ViewContextService }, { token: i3.ViewStateService }, { token: i4.IntlService }, { token: i5.DayTimeSlotService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i6.PDFService }, { token: i7.ScrollbarWidthService }], target: i0.ɵɵFactoryTarget.Component });
|
|
143
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TimelineMultiDayViewComponent, isStandalone: true, selector: "timeline-multi-day-view", inputs: { name: "name", columnWidth: "columnWidth", viewName: "viewName" }, providers: [
|
|
151
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TimelineMultiDayViewComponent, isStandalone: true, selector: "timeline-multi-day-view", inputs: { hiddenDays: "hiddenDays", name: "name", columnWidth: "columnWidth", viewName: "viewName" }, providers: [
|
|
144
152
|
DayTimeSlotService
|
|
145
153
|
], viewQueries: [{ propertyName: "headerTable", first: true, predicate: ["headerTable"], descendants: true }, { propertyName: "verticalResourceRows", predicate: ["verticalResourceRows"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
|
|
146
154
|
<table class="k-scheduler-layout" [ngClass]="classNames">
|
|
@@ -624,7 +632,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
624
632
|
standalone: true,
|
|
625
633
|
imports: [NgClass, NgTemplateOutlet, NgStyle, TimeSlotDirective, DayTimeViewItemComponent, FocusableDirective, HintContainerComponent, ResizeHintComponent, ResourceIteratorPipe, DatePipe, AsyncPipe, SortPipe]
|
|
626
634
|
}]
|
|
627
|
-
}], ctorParameters: () => [{ type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i2.ViewContextService }, { type: i3.ViewStateService }, { type: i4.IntlService }, { type: i5.DayTimeSlotService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i6.PDFService }, { type: i7.ScrollbarWidthService }], propDecorators: {
|
|
635
|
+
}], ctorParameters: () => [{ type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i2.ViewContextService }, { type: i3.ViewStateService }, { type: i4.IntlService }, { type: i5.DayTimeSlotService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i6.PDFService }, { type: i7.ScrollbarWidthService }], propDecorators: { hiddenDays: [{
|
|
636
|
+
type: Input
|
|
637
|
+
}], name: [{
|
|
628
638
|
type: Input
|
|
629
639
|
}], columnWidth: [{
|
|
630
640
|
type: Input
|
|
@@ -81,6 +81,13 @@ export class TimelineViewComponent extends TimelineBase {
|
|
|
81
81
|
* @default 'timeline'
|
|
82
82
|
*/
|
|
83
83
|
name = 'timeline';
|
|
84
|
+
/**
|
|
85
|
+
* @hidden
|
|
86
|
+
* Used to override the hiddenDays as this options is not applicable for Timeline view.
|
|
87
|
+
*/
|
|
88
|
+
set hiddenDays(_hiddenDays) {
|
|
89
|
+
// no-op
|
|
90
|
+
}
|
|
84
91
|
constructor(localization, changeDetector, viewContext, viewState) {
|
|
85
92
|
super(localization, changeDetector, viewContext, viewState);
|
|
86
93
|
}
|
|
@@ -123,7 +130,7 @@ export class TimelineViewComponent extends TimelineBase {
|
|
|
123
130
|
<div viewFooter kendoWorkHoursFooter [showWorkHours]="shouldShowWorkHours" (itemClick)="showWorkHours = !shouldShowWorkHours"></div>
|
|
124
131
|
}
|
|
125
132
|
</ng-template>
|
|
126
|
-
`, isInline: true, dependencies: [{ kind: "component", type: TimelineMultiDayViewComponent, selector: "timeline-multi-day-view", inputs: ["name", "columnWidth", "viewName"] }, { kind: "component", type: ViewFooterComponent, selector: "[viewFooter]", inputs: ["items"], outputs: ["itemClick"] }, { kind: "directive", type: WorkHoursFooterDirective, selector: "[kendoWorkHoursFooter]", inputs: ["showWorkHours"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
133
|
+
`, isInline: true, dependencies: [{ kind: "component", type: TimelineMultiDayViewComponent, selector: "timeline-multi-day-view", inputs: ["hiddenDays", "name", "columnWidth", "viewName"] }, { kind: "component", type: ViewFooterComponent, selector: "[viewFooter]", inputs: ["items"], outputs: ["itemClick"] }, { kind: "directive", type: WorkHoursFooterDirective, selector: "[kendoWorkHoursFooter]", inputs: ["showWorkHours"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
127
134
|
}
|
|
128
135
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TimelineViewComponent, decorators: [{
|
|
129
136
|
type: Component,
|
|
@@ -84,6 +84,7 @@ export class TimelineWeekViewComponent extends TimelineBase {
|
|
|
84
84
|
<timeline-multi-day-view
|
|
85
85
|
viewName="timeline-week"
|
|
86
86
|
[name]="name"
|
|
87
|
+
[hiddenDays]="viewHiddenDays"
|
|
87
88
|
[numberOfDays]="7 * numberOfWeeks"
|
|
88
89
|
[getStartDate]="getStartDate"
|
|
89
90
|
[eventHeight]="viewEventHeight"
|
|
@@ -117,7 +118,7 @@ export class TimelineWeekViewComponent extends TimelineBase {
|
|
|
117
118
|
<div viewFooter kendoWorkHoursFooter [showWorkHours]="shouldShowWorkHours" (itemClick)="showWorkHours = !shouldShowWorkHours"></div>
|
|
118
119
|
}
|
|
119
120
|
</ng-template>
|
|
120
|
-
`, isInline: true, dependencies: [{ kind: "component", type: TimelineMultiDayViewComponent, selector: "timeline-multi-day-view", inputs: ["name", "columnWidth", "viewName"] }, { kind: "component", type: ViewFooterComponent, selector: "[viewFooter]", inputs: ["items"], outputs: ["itemClick"] }, { kind: "directive", type: WorkHoursFooterDirective, selector: "[kendoWorkHoursFooter]", inputs: ["showWorkHours"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
121
|
+
`, isInline: true, dependencies: [{ kind: "component", type: TimelineMultiDayViewComponent, selector: "timeline-multi-day-view", inputs: ["hiddenDays", "name", "columnWidth", "viewName"] }, { kind: "component", type: ViewFooterComponent, selector: "[viewFooter]", inputs: ["items"], outputs: ["itemClick"] }, { kind: "directive", type: WorkHoursFooterDirective, selector: "[kendoWorkHoursFooter]", inputs: ["showWorkHours"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
121
122
|
}
|
|
122
123
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TimelineWeekViewComponent, decorators: [{
|
|
123
124
|
type: Component,
|
|
@@ -133,6 +134,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
133
134
|
<timeline-multi-day-view
|
|
134
135
|
viewName="timeline-week"
|
|
135
136
|
[name]="name"
|
|
137
|
+
[hiddenDays]="viewHiddenDays"
|
|
136
138
|
[numberOfDays]="7 * numberOfWeeks"
|
|
137
139
|
[getStartDate]="getStartDate"
|
|
138
140
|
[eventHeight]="viewEventHeight"
|
|
@@ -8,7 +8,7 @@ import * as i0 from "@angular/core";
|
|
|
8
8
|
/**
|
|
9
9
|
* @hidden
|
|
10
10
|
*/
|
|
11
|
-
export const createTasks = (periodStart, periodEnd, items) => {
|
|
11
|
+
export const createTasks = (periodStart, periodEnd, items, hiddenDays = []) => {
|
|
12
12
|
const tasks = [];
|
|
13
13
|
const utcStart = toUTCDate(periodStart);
|
|
14
14
|
const utcEnd = toUTCDate(periodEnd);
|
|
@@ -30,6 +30,12 @@ export const createTasks = (periodStart, periodEnd, items) => {
|
|
|
30
30
|
tasks.push(task);
|
|
31
31
|
task.head = task.endTime > utcEnd;
|
|
32
32
|
task.tail = task.startTime < utcStart;
|
|
33
|
+
if (hiddenDays.includes(task.endTime.getDay())) {
|
|
34
|
+
task.head = true;
|
|
35
|
+
}
|
|
36
|
+
if (hiddenDays.includes(task.startTime.getDay())) {
|
|
37
|
+
task.tail = true;
|
|
38
|
+
}
|
|
33
39
|
}
|
|
34
40
|
}
|
|
35
41
|
return tasks;
|
package/esm2022/views/utils.mjs
CHANGED
|
@@ -6,6 +6,17 @@ import { isEqualDate } from '@progress/kendo-date-math';
|
|
|
6
6
|
import { formatDate } from '@progress/kendo-angular-intl';
|
|
7
7
|
import { isPresent, getField, isArray, isObject, isString } from '../common/util';
|
|
8
8
|
import { hasClasses } from '../common/dom-queries';
|
|
9
|
+
/**
|
|
10
|
+
* @hidden
|
|
11
|
+
*/
|
|
12
|
+
export const allDaysHidden = (days) => {
|
|
13
|
+
for (let day = 0; day <= 6; day++) {
|
|
14
|
+
if (!days?.includes(day)) {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return true;
|
|
19
|
+
};
|
|
9
20
|
/** @hidden */
|
|
10
21
|
export const intersects = (startTime, endTime, periodStart, periodEnd) => (startTime < periodStart && endTime > periodEnd) ||
|
|
11
22
|
(periodStart <= startTime && startTime < periodEnd) ||
|
|
@@ -203,23 +214,34 @@ export function isEmptyResource(resources) {
|
|
|
203
214
|
/**
|
|
204
215
|
* @hidden
|
|
205
216
|
*/
|
|
206
|
-
export function resourcesMatch(res1, res2) {
|
|
217
|
+
export function resourcesMatch(res1, res2, resourceConfigs) {
|
|
207
218
|
if (res1.length !== res2.length) {
|
|
208
219
|
return false;
|
|
209
220
|
}
|
|
210
221
|
if (isEmptyResource(res1) && isEmptyResource(res2)) {
|
|
211
222
|
return true;
|
|
212
223
|
}
|
|
224
|
+
// When resource configurations are provided, use their valueField to compare
|
|
225
|
+
if (resourceConfigs?.length > 0) {
|
|
226
|
+
return res1.every((r1, index) => {
|
|
227
|
+
const config = resourceConfigs[index];
|
|
228
|
+
if (!config?.valueField) {
|
|
229
|
+
return res2.some(r2 => r2.value === r1.value);
|
|
230
|
+
}
|
|
231
|
+
const value1 = getField(r1, config.valueField);
|
|
232
|
+
return res2.some(r2 => getField(r2, config.valueField) === value1);
|
|
233
|
+
});
|
|
234
|
+
}
|
|
213
235
|
return res1.every(r1 => res2.some(r2 => r2.value === r1.value));
|
|
214
236
|
}
|
|
215
237
|
/**
|
|
216
238
|
* @hidden
|
|
217
239
|
*/
|
|
218
|
-
export function isSameRange(range1, range2) {
|
|
240
|
+
export function isSameRange(range1, range2, resourceConfigs) {
|
|
219
241
|
return (range1.start.getTime() === range2.start.getTime() &&
|
|
220
242
|
range1.end.getTime() === range2.end.getTime() &&
|
|
221
243
|
range1.isAllDay === range2.isAllDay &&
|
|
222
|
-
resourcesMatch(range1.resources, range2.resources));
|
|
244
|
+
resourcesMatch(range1.resources, range2.resources, resourceConfigs));
|
|
223
245
|
}
|
|
224
246
|
/** @hidden */
|
|
225
247
|
export function findRowIndex(events, data) {
|
|
@@ -56,6 +56,13 @@ export class YearViewComponent extends ConfigurationViewBase {
|
|
|
56
56
|
* @default 'year'
|
|
57
57
|
*/
|
|
58
58
|
name = 'year';
|
|
59
|
+
/**
|
|
60
|
+
* @hidden
|
|
61
|
+
* Used to override the hiddenDays as this options is not applicable for Year view.
|
|
62
|
+
*/
|
|
63
|
+
set hiddenDays(_hiddenDays) {
|
|
64
|
+
// no-op
|
|
65
|
+
}
|
|
59
66
|
constructor(localization, changeDetector, viewContext, viewState, intl) {
|
|
60
67
|
super(localization, changeDetector, viewContext, viewState);
|
|
61
68
|
this.intl = intl;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**-----------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright © 2025 Progress Software Corporation. All rights reserved.
|
|
3
|
+
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
+
*-------------------------------------------------------------------------------------------*/
|
|
5
|
+
import { PreventableEvent } from './preventable-event';
|
|
6
|
+
import { SchedulerEvent } from '../types';
|
|
7
|
+
/**
|
|
8
|
+
* Represents the arguments for the `moreEventsClick` event.
|
|
9
|
+
*/
|
|
10
|
+
export declare class MoreEventsClickEvent extends PreventableEvent {
|
|
11
|
+
/**
|
|
12
|
+
* The events that are displayed in the day slot.
|
|
13
|
+
*/
|
|
14
|
+
displayedEvents: SchedulerEvent[];
|
|
15
|
+
/**
|
|
16
|
+
* The events that are hidden from the day slot.
|
|
17
|
+
*/
|
|
18
|
+
moreEvents: SchedulerEvent[];
|
|
19
|
+
/**
|
|
20
|
+
* @hidden
|
|
21
|
+
*/
|
|
22
|
+
constructor();
|
|
23
|
+
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Copyright © 2025 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 { PreventableEvent } from '
|
|
5
|
+
import { PreventableEvent } from './preventable-event';
|
|
6
6
|
import { SchedulerComponent } from '../scheduler.component';
|
|
7
7
|
import { NavigationAction } from '../types';
|
|
8
8
|
/**
|
package/events.d.ts
CHANGED
|
@@ -20,6 +20,7 @@ export { DragEvent } from './events/drag-event';
|
|
|
20
20
|
export { DragEndEvent } from './events/drag-end-event';
|
|
21
21
|
export { EditEvent } from './events/edit-event';
|
|
22
22
|
export { AddEvent } from './events/add-event';
|
|
23
|
+
export { MoreEventsClickEvent } from './events/more-events-click';
|
|
23
24
|
export { SlotDragStartEvent } from './events/slot-drag-start-event';
|
|
24
25
|
export { SlotDragEvent } from './events/slot-drag-event';
|
|
25
26
|
export { SlotDragEndEvent } from './events/slot-drag-end-event';
|