diff --git a/src/components/EventOverlay.vue b/src/components/EventOverlay.vue index 589759f..3de07bb 100644 --- a/src/components/EventOverlay.vue +++ b/src/components/EventOverlay.vue @@ -307,19 +307,16 @@ function startLocalDrag(init, evt) { // Determine date under pointer: traverse DOM to find day cell carrying data-date attribute function getDateUnderPointer(x, y, el) { - let cur = el - while (cur) { - if (cur.dataset && cur.dataset.date) { - return { date: cur.dataset.date } + for (let cur = el; cur; cur = cur.parentElement) + if (cur.dataset?.date) return { date: cur.dataset.date } + // The event overlay may block seeing the day under it, so we need a fallback + const overlayEl = weekOverlayRef.value + const container = overlayEl?.parentElement // .days-grid + if (container) { + for (const d of container.querySelectorAll('[data-date]')) { + const { left, right, top, bottom } = d.getBoundingClientRect() + if (y >= top && y <= bottom && x >= left && x <= right) return { date: d.dataset.date } } - cur = cur.parentElement - } - // Fallback: elementFromPoint scan - const probe = document.elementFromPoint(x, y) - let p = probe - while (p) { - if (p.dataset && p.dataset.date) return { date: p.dataset.date } - p = p.parentElement } return null }