From 0c8fbb86e863ec66d1e1fc902b97eebe955b3d21 Mon Sep 17 00:00:00 2001 From: Scarriffle Date: Tue, 9 Jun 2026 21:32:51 +0200 Subject: [PATCH] Web: date picker commits on leave, close day context menu on event click MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Date picker: clicking a day only selects it now; the choice is committed when you leave the picker (click outside) or press Save — for both date and datetime modes (previously datetime discarded on click-away, and date committed instantly on click, neither of which was wanted). - The day right-click context menu ("Neuen Termin erstellen") now closes when an event popup opens (the event row stops propagation, so its own outside-click closer never fired). - version v47 -> v48. Co-Authored-By: Claude Opus 4.8 --- frontend/js/calendar.js | 3 +++ frontend/js/date-picker.js | 11 +++++------ frontend/js/version.js | 2 +- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/frontend/js/calendar.js b/frontend/js/calendar.js index 446a3ec..bd8d437 100644 --- a/frontend/js/calendar.js +++ b/frontend/js/calendar.js @@ -1373,6 +1373,9 @@ function showDayContextMenu(date, mouseEvent) { // ── Event Popup ─────────────────────────────────────────── function showEventPopup(ev, anchor) { + // The event row stops click propagation, so the day context menu's own + // outside-click closer never fires — remove it explicitly here. + document.querySelectorAll('.cal-context-menu').forEach(m => m.remove()); const popup = document.getElementById('popup-event'); document.getElementById('popup-copy-menu').classList.add('hidden'); popup.classList.remove('hidden'); diff --git a/frontend/js/date-picker.js b/frontend/js/date-picker.js index c2b34db..ac9c98d 100644 --- a/frontend/js/date-picker.js +++ b/frontend/js/date-picker.js @@ -48,9 +48,10 @@ export function openDatePicker(anchor, value, mode = 'datetime') { resolve(result); } - // Click outside → cancel + // Click outside (leaving the picker) → commit the current selection, + // rather than discarding it. Cancel button still reverts. overlay.addEventListener('mousedown', e => { - if (e.target === overlay) done(null); + if (e.target === overlay) done(buildResult()); }); // ── Calendar builder ────────────────────────────────── @@ -144,13 +145,11 @@ export function openDatePicker(anchor, value, mode = 'datetime') { render(); }; - // Day click + // Day click → just select/highlight; committing happens on Save or when + // the user leaves the picker (clicks outside). card.querySelectorAll('.dtp-day').forEach(el => { el.addEventListener('click', () => { selDate = new Date(parseInt(el.dataset.ts)); - // In date-only mode there's nothing else to choose — commit the day - // immediately instead of forcing an extra "Save" click. - if (mode === 'date') { done(buildResult()); return; } if (el.classList.contains('other')) { viewYear = selDate.getFullYear(); viewMonth = selDate.getMonth(); diff --git a/frontend/js/version.js b/frontend/js/version.js index ca911d1..769a8b9 100644 --- a/frontend/js/version.js +++ b/frontend/js/version.js @@ -1,2 +1,2 @@ // Increment APP_VERSION with every code change -export const APP_VERSION = 'v47'; +export const APP_VERSION = 'v48';