From c91a015e798ac746373d1742fc1525293b8219ba Mon Sep 17 00:00:00 2001 From: FReenen Date: Mon, 13 May 2024 23:22:22 +0200 Subject: [PATCH] add touch suport for menu (#5) --- main.js | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/main.js b/main.js index 98da3bb..ef818d1 100644 --- a/main.js +++ b/main.js @@ -651,9 +651,32 @@ class CalendarView extends ItemView eventEl.addEventListener('mousedown', (e) => { if (e.button == 2) { - this.openMenu(e, event); + this.openMenu(event, {x: e.clientX, y: e.clientY}); } - }) + }); + eventEl.addEventListener('touchstart', (e) => { + if (e.touches.length == 1) + { + this.touchEvent = { "event": event, "location": {x: e.touches[0].clientX, y: e.touches[0].clientY}, "time": new Date().getTime() }; + setTimeout(() => { + if (this.touchEvent != null && ((new Date().getTime() - this.touchEvent.time) > 900)) + { + this.openMenu(this.touchEvent.event, this.touchEvent.location); + this.touchEvent = null; + } + }, 1000); + } + else + { + this.touchEvent = null; + } + }); + eventEl.addEventListener('touchend', (e) => { + this.touchEvent = null; + }); + eventEl.addEventListener('touchmove', (e) => { + this.touchEvent = null; + }); switch (event.type) { case 'task': @@ -685,7 +708,7 @@ class CalendarView extends ItemView return el; } - openMenu(e, event) + openMenu(event, location) { let text = ""; Object.keys(event).forEach(key => { @@ -698,7 +721,7 @@ class CalendarView extends ItemView item.setTitle(text); }); - menu.showAtPosition({x: e.x, y: e.y}); + menu.showAtPosition(location); } }