@progress/kendo-angular-scheduler 23.3.0-develop.16 → 23.3.0-develop.18
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.
|
@@ -43,8 +43,8 @@ const packageMetadata = {
|
|
|
43
43
|
productName: 'Kendo UI for Angular',
|
|
44
44
|
productCode: 'KENDOUIANGULAR',
|
|
45
45
|
productCodes: ['KENDOUIANGULAR'],
|
|
46
|
-
publishDate:
|
|
47
|
-
version: '23.3.0-develop.
|
|
46
|
+
publishDate: 1774603585,
|
|
47
|
+
version: '23.3.0-develop.18',
|
|
48
48
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
|
|
49
49
|
};
|
|
50
50
|
|
|
@@ -15840,6 +15840,42 @@ const columnIndexComparer = (a, b) => {
|
|
|
15840
15840
|
}
|
|
15841
15841
|
return indexA - indexB;
|
|
15842
15842
|
};
|
|
15843
|
+
function addMinHeightOverflowEvents(sorted, slots, slotItems) {
|
|
15844
|
+
const firstSlot = slots[0];
|
|
15845
|
+
if (!firstSlot || slots.length <= 1) {
|
|
15846
|
+
return;
|
|
15847
|
+
}
|
|
15848
|
+
const slotDurationMs = firstSlot.end.getTime() - firstSlot.start.getTime();
|
|
15849
|
+
const slotHeight = firstSlot.height;
|
|
15850
|
+
if (slotDurationMs <= 0 || slotHeight <= 0) {
|
|
15851
|
+
return;
|
|
15852
|
+
}
|
|
15853
|
+
const msPerPixel = slotDurationMs / slotHeight;
|
|
15854
|
+
const minEventDurationMs = MIN_EVENT_HEIGHT * msPerPixel;
|
|
15855
|
+
sorted.forEach(event => {
|
|
15856
|
+
const eventDurationMs = event.item.endTime.getTime() - event.item.startTime.getTime();
|
|
15857
|
+
if (eventDurationMs >= minEventDurationMs) {
|
|
15858
|
+
return;
|
|
15859
|
+
}
|
|
15860
|
+
const visualEndMs = event.item.startTime.getTime() + minEventDurationMs;
|
|
15861
|
+
const endMs = event.item.endTime.getTime();
|
|
15862
|
+
for (let i = 0; i < slots.length; i++) {
|
|
15863
|
+
const slot = slots[i];
|
|
15864
|
+
if (slot.end.getTime() <= endMs) {
|
|
15865
|
+
continue;
|
|
15866
|
+
}
|
|
15867
|
+
if (slot.start.getTime() >= visualEndMs) {
|
|
15868
|
+
break;
|
|
15869
|
+
}
|
|
15870
|
+
if (intersects(event.item.startTime, event.item.endTime, slot.start, slot.end)) {
|
|
15871
|
+
continue;
|
|
15872
|
+
}
|
|
15873
|
+
const value = slotItems[slot.key] = slotItems[slot.key] || { events: [] };
|
|
15874
|
+
value.slot = slot;
|
|
15875
|
+
value.events.push(event);
|
|
15876
|
+
}
|
|
15877
|
+
});
|
|
15878
|
+
}
|
|
15843
15879
|
function initTimeColumns(slotKeys, slotItems) {
|
|
15844
15880
|
// Break slots into groups with overlapping events.
|
|
15845
15881
|
let columns = 0;
|
|
@@ -15853,7 +15889,14 @@ function initTimeColumns(slotKeys, slotItems) {
|
|
|
15853
15889
|
groupSlots.push(slot);
|
|
15854
15890
|
for (let eventIdx = 0; eventIdx < count; eventIdx++) {
|
|
15855
15891
|
const event = events[eventIdx];
|
|
15856
|
-
|
|
15892
|
+
const endsInSlot = event.item.endTime.getTime() <= slot.end.getTime();
|
|
15893
|
+
// Grouping needs to consider the enforced minimum rendered height with MIN_EVENT_HEIGHT.
|
|
15894
|
+
let visuallyEndsInSlot = true;
|
|
15895
|
+
if (endsInSlot) {
|
|
15896
|
+
const eventTop = event.rect ? event.rect.top : (slot.rect.top + timeOffset(slot, event.item.startTime));
|
|
15897
|
+
visuallyEndsInSlot = eventTop + MIN_EVENT_HEIGHT <= slot.rect.top + slot.rect.height;
|
|
15898
|
+
}
|
|
15899
|
+
groupEnd = groupEnd && endsInSlot && visuallyEndsInSlot;
|
|
15857
15900
|
if (isNumber(event.columnIndex)) {
|
|
15858
15901
|
continue;
|
|
15859
15902
|
}
|
|
@@ -15862,6 +15905,7 @@ function initTimeColumns(slotKeys, slotItems) {
|
|
|
15862
15905
|
};
|
|
15863
15906
|
event.columnIndex = eventIdx;
|
|
15864
15907
|
event.lastColumn = true;
|
|
15908
|
+
let columnFound = false;
|
|
15865
15909
|
for (let idx = 0, previousIdx = -1; idx < eventIdx; idx++) {
|
|
15866
15910
|
const current = events[idx];
|
|
15867
15911
|
if (current.columnIndex > previousIdx + 1) {
|
|
@@ -15869,9 +15913,10 @@ function initTimeColumns(slotKeys, slotItems) {
|
|
|
15869
15913
|
event.lastColumn = false;
|
|
15870
15914
|
events.splice(eventIdx, 1);
|
|
15871
15915
|
events.splice(event.columnIndex, 0, event);
|
|
15916
|
+
columnFound = true;
|
|
15872
15917
|
break;
|
|
15873
15918
|
}
|
|
15874
|
-
//
|
|
15919
|
+
// Events that don't intersect their start or end times but overlap in rendered height due to the minimum event height
|
|
15875
15920
|
const anyOverlappingEvents = events.filter(e => e !== current && e.rect).some(event => {
|
|
15876
15921
|
const areIntersecting = intersects(event.item.startTime, event.item.endTime, current.item.startTime, current.item.endTime);
|
|
15877
15922
|
const areOverlapping = minHeightOverlaps(current.rect.top, event.rect.top);
|
|
@@ -15880,6 +15925,18 @@ function initTimeColumns(slotKeys, slotItems) {
|
|
|
15880
15925
|
const intersectingEvents = intersects(event.item.startTime, event.item.endTime, current.item.startTime, current.item.endTime);
|
|
15881
15926
|
const overlappingEvents = minHeightOverlaps(current.rect.top, event.rect.top);
|
|
15882
15927
|
if (!(anyOverlappingEvents || intersectingEvents || overlappingEvents)) {
|
|
15928
|
+
const targetColumn = current.columnIndex;
|
|
15929
|
+
// Verify no other event in the same column overlaps with the new event
|
|
15930
|
+
const hasColumnConflict = events.some(e => e !== current &&
|
|
15931
|
+
isNumber(e.columnIndex) &&
|
|
15932
|
+
e.columnIndex === targetColumn &&
|
|
15933
|
+
(intersects(event.item.startTime, event.item.endTime, e.item.startTime, e.item.endTime) ||
|
|
15934
|
+
(e.rect && event.rect && minHeightOverlaps(e.rect.top, event.rect.top))));
|
|
15935
|
+
if (hasColumnConflict) {
|
|
15936
|
+
previousIdx = current.columnIndex;
|
|
15937
|
+
current.lastColumn = false;
|
|
15938
|
+
continue;
|
|
15939
|
+
}
|
|
15883
15940
|
const currentSlotDay = new Date(slot.start).toDateString();
|
|
15884
15941
|
const hasPreviousSlotsWithMoreOrSameColumns = slotKeys.some(previousKey => {
|
|
15885
15942
|
const previousSlot = slotItems[previousKey].slot;
|
|
@@ -15891,20 +15948,32 @@ function initTimeColumns(slotKeys, slotItems) {
|
|
|
15891
15948
|
if (!hasPreviousSlotsWithMoreOrSameColumns) {
|
|
15892
15949
|
columns--;
|
|
15893
15950
|
}
|
|
15894
|
-
event.columnIndex =
|
|
15951
|
+
event.columnIndex = targetColumn;
|
|
15895
15952
|
event.lastColumn = !events.some((e) => {
|
|
15896
15953
|
const hasColumnIndex = e.columnIndex;
|
|
15897
|
-
const isBeforeCurrentIndex =
|
|
15954
|
+
const isBeforeCurrentIndex = targetColumn < e.columnIndex;
|
|
15898
15955
|
const areIntersecting = intersects(event.item.startTime, event.item.endTime, e.item.startTime, e.item.endTime);
|
|
15899
15956
|
return hasColumnIndex && isBeforeCurrentIndex && areIntersecting;
|
|
15900
15957
|
});
|
|
15901
15958
|
events.splice(eventIdx, 1);
|
|
15902
15959
|
events.splice(idx, 0, event);
|
|
15960
|
+
columnFound = true;
|
|
15903
15961
|
break;
|
|
15904
15962
|
}
|
|
15905
15963
|
previousIdx = current.columnIndex;
|
|
15906
15964
|
current.lastColumn = false;
|
|
15907
15965
|
}
|
|
15966
|
+
// After splice operations, array positions may not match column indices.
|
|
15967
|
+
// Recalculate the column index based on the highest occupied column.
|
|
15968
|
+
if (!columnFound) {
|
|
15969
|
+
let maxColumn = -1;
|
|
15970
|
+
for (let i = 0; i < eventIdx; i++) {
|
|
15971
|
+
if (isNumber(events[i].columnIndex) && events[i].columnIndex > maxColumn) {
|
|
15972
|
+
maxColumn = events[i].columnIndex;
|
|
15973
|
+
}
|
|
15974
|
+
}
|
|
15975
|
+
event.columnIndex = maxColumn + 1;
|
|
15976
|
+
}
|
|
15908
15977
|
}
|
|
15909
15978
|
if (groupEnd) {
|
|
15910
15979
|
groupSlots.forEach(item => item.columns = columns);
|
|
@@ -16076,6 +16145,7 @@ class SlotRange {
|
|
|
16076
16145
|
value.slot = slot;
|
|
16077
16146
|
value.events.push(event);
|
|
16078
16147
|
}));
|
|
16148
|
+
addMinHeightOverflowEvents(sorted, slots, slotItems);
|
|
16079
16149
|
const slotKeys = Object.keys(slotItems);
|
|
16080
16150
|
initTimeColumns(slotKeys, slotItems);
|
|
16081
16151
|
slotKeys.forEach((key) => {
|
package/package-metadata.mjs
CHANGED
|
@@ -7,7 +7,7 @@ export const packageMetadata = {
|
|
|
7
7
|
"productCodes": [
|
|
8
8
|
"KENDOUIANGULAR"
|
|
9
9
|
],
|
|
10
|
-
"publishDate":
|
|
11
|
-
"version": "23.3.0-develop.
|
|
10
|
+
"publishDate": 1774603585,
|
|
11
|
+
"version": "23.3.0-develop.18",
|
|
12
12
|
"licensingDocsUrl": "https://www.telerik.com/kendo-angular-ui/my-license/"
|
|
13
13
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@progress/kendo-angular-scheduler",
|
|
3
|
-
"version": "23.3.0-develop.
|
|
3
|
+
"version": "23.3.0-develop.18",
|
|
4
4
|
"description": "Kendo UI Scheduler Angular - Outlook or Google-style angular scheduler calendar. Full-featured and customizable embedded scheduling from the creator developers trust for professional UI components.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"author": "Progress",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"package": {
|
|
20
20
|
"productName": "Kendo UI for Angular",
|
|
21
21
|
"productCode": "KENDOUIANGULAR",
|
|
22
|
-
"publishDate":
|
|
22
|
+
"publishDate": 1774603585,
|
|
23
23
|
"licensingDocsUrl": "https://www.telerik.com/kendo-angular-ui/my-license/"
|
|
24
24
|
}
|
|
25
25
|
},
|
|
@@ -32,23 +32,23 @@
|
|
|
32
32
|
"@progress/kendo-data-query": "^1.7.3",
|
|
33
33
|
"@progress/kendo-drawing": "^1.24.1",
|
|
34
34
|
"@progress/kendo-licensing": "^1.10.0",
|
|
35
|
-
"@progress/kendo-angular-tooltip": "23.3.0-develop.
|
|
36
|
-
"@progress/kendo-angular-buttons": "23.3.0-develop.
|
|
37
|
-
"@progress/kendo-angular-common": "23.3.0-develop.
|
|
38
|
-
"@progress/kendo-angular-dateinputs": "23.3.0-develop.
|
|
39
|
-
"@progress/kendo-angular-dialog": "23.3.0-develop.
|
|
40
|
-
"@progress/kendo-angular-dropdowns": "23.3.0-develop.
|
|
41
|
-
"@progress/kendo-angular-icons": "23.3.0-develop.
|
|
42
|
-
"@progress/kendo-angular-inputs": "23.3.0-develop.
|
|
43
|
-
"@progress/kendo-angular-intl": "23.3.0-develop.
|
|
44
|
-
"@progress/kendo-angular-l10n": "23.3.0-develop.
|
|
45
|
-
"@progress/kendo-angular-label": "23.3.0-develop.
|
|
46
|
-
"@progress/kendo-angular-popup": "23.3.0-develop.
|
|
35
|
+
"@progress/kendo-angular-tooltip": "23.3.0-develop.18",
|
|
36
|
+
"@progress/kendo-angular-buttons": "23.3.0-develop.18",
|
|
37
|
+
"@progress/kendo-angular-common": "23.3.0-develop.18",
|
|
38
|
+
"@progress/kendo-angular-dateinputs": "23.3.0-develop.18",
|
|
39
|
+
"@progress/kendo-angular-dialog": "23.3.0-develop.18",
|
|
40
|
+
"@progress/kendo-angular-dropdowns": "23.3.0-develop.18",
|
|
41
|
+
"@progress/kendo-angular-icons": "23.3.0-develop.18",
|
|
42
|
+
"@progress/kendo-angular-inputs": "23.3.0-develop.18",
|
|
43
|
+
"@progress/kendo-angular-intl": "23.3.0-develop.18",
|
|
44
|
+
"@progress/kendo-angular-l10n": "23.3.0-develop.18",
|
|
45
|
+
"@progress/kendo-angular-label": "23.3.0-develop.18",
|
|
46
|
+
"@progress/kendo-angular-popup": "23.3.0-develop.18",
|
|
47
47
|
"rxjs": "^6.5.3 || ^7.0.0"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
50
|
"tslib": "^2.3.1",
|
|
51
|
-
"@progress/kendo-angular-schematics": "23.3.0-develop.
|
|
51
|
+
"@progress/kendo-angular-schematics": "23.3.0-develop.18",
|
|
52
52
|
"@progress/kendo-date-math": "^1.3.2",
|
|
53
53
|
"@progress/kendo-draggable": "^3.0.2",
|
|
54
54
|
"@progress/kendo-file-saver": "^1.0.7",
|
|
@@ -9,10 +9,10 @@ const schematics_1 = require("@angular-devkit/schematics");
|
|
|
9
9
|
function default_1(options) {
|
|
10
10
|
const finalOptions = Object.assign(Object.assign({}, options), { mainNgModule: 'SchedulerModule', package: 'scheduler', peerDependencies: {
|
|
11
11
|
// peer deps of the dropdowns
|
|
12
|
-
'@progress/kendo-angular-treeview': '23.3.0-develop.
|
|
13
|
-
'@progress/kendo-angular-navigation': '23.3.0-develop.
|
|
12
|
+
'@progress/kendo-angular-treeview': '23.3.0-develop.18',
|
|
13
|
+
'@progress/kendo-angular-navigation': '23.3.0-develop.18',
|
|
14
14
|
// peer dependency of kendo-angular-inputs
|
|
15
|
-
'@progress/kendo-angular-dialog': '23.3.0-develop.
|
|
15
|
+
'@progress/kendo-angular-dialog': '23.3.0-develop.18',
|
|
16
16
|
// peer dependency of kendo-angular-icons
|
|
17
17
|
'@progress/kendo-svg-icons': '^4.0.0'
|
|
18
18
|
} });
|