From 32a7e28c80fba0393b8e8971d3f5b3ec798f2516 Mon Sep 17 00:00:00 2001 From: ma0048 Date: Fri, 24 Jul 2026 12:37:38 +0200 Subject: [PATCH] fix: correct drop time when dropping onto an existing event --- public/js/components/Calendar/Base/Grid.js | 12 ++++++++++-- .../js/components/Calendar/Base/Grid/Line/Event.js | 12 +++++------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/public/js/components/Calendar/Base/Grid.js b/public/js/components/Calendar/Base/Grid.js index 2c64cc2f5..39a2f9c4a 100644 --- a/public/js/components/Calendar/Base/Grid.js +++ b/public/js/components/Calendar/Base/Grid.js @@ -27,7 +27,8 @@ export default { provide() { return { flipAxis: Vue.computed(() => this.flipAxis), - axisRow: Vue.computed(() => this.axisRow) + axisRow: Vue.computed(() => this.axisRow), + onDropEvent: Vue.computed(() => this.onDropEvent), }; }, props: { @@ -376,6 +377,13 @@ export default { return dropStart.startOf('day').plus(lastBlock.end); }, + onDropEvent(evt, items, date) + { + if (this.snapToGrid) + this.onDropSnap(evt, items, date) + else + this.onDropFree(evt, items, date) + }, onDropSnap(evt, items, date, part) { let obj = items; if (!obj?.orig) return; @@ -390,7 +398,7 @@ export default { const grabOffset = grabTime.diff(dropDay); const snappedPart = blocks.find(b => grabOffset >= b.start && grabOffset < b.end) || part; - const dropStart = dropDay.plus(snappedPart.start); + const dropStart = snappedPart ? dropDay.plus(snappedPart.start) : grabTime; let nettoDuration = this._getNettoDurationForDrop(obj); let dropEnd = this.calculateDropEnd(dropStart, nettoDuration); diff --git a/public/js/components/Calendar/Base/Grid/Line/Event.js b/public/js/components/Calendar/Base/Grid/Line/Event.js index 98f241bed..583d0f9f0 100644 --- a/public/js/components/Calendar/Base/Grid/Line/Event.js +++ b/public/js/components/Calendar/Base/Grid/Line/Event.js @@ -35,6 +35,10 @@ export default { onDrop: { from: "onDrop", default: () => null + }, + onDropEvent: { + from: "onDropEvent", + default: () => () => {} } }, props: { @@ -128,13 +132,7 @@ export default { }); } - return this.onDrop({ - item: [obj], - start: this.event.start.toISO(), - end: this.event.end.toISO(), - ctrlKey: false, - targetKalenderId: null - }); + return this.onDropEvent(evt, items, this.event.start.startOf('day')); }, }, template:`