41 lines
1.2 KiB
JavaScript
41 lines
1.2 KiB
JavaScript
window.calendarSwipe = {
|
|
register: function (element, dotnetHelper) {
|
|
let startX = 0;
|
|
let endX = 0;
|
|
|
|
element.addEventListener('touchstart', (e) => {
|
|
if (e.touches.length === 1) {
|
|
startX = e.touches[0].clientX;
|
|
}
|
|
});
|
|
|
|
element.addEventListener('touchend', (e) => {
|
|
if (e.changedTouches.length === 1) {
|
|
endX = e.changedTouches[0].clientX;
|
|
handle();
|
|
}
|
|
});
|
|
|
|
// Per desktop: mouse drag
|
|
let mouseDown = false;
|
|
element.addEventListener('mousedown', (e) => {
|
|
if (e.button !== 0) return; // solo left mouse
|
|
mouseDown = true;
|
|
startX = e.clientX;
|
|
});
|
|
element.addEventListener('mouseup', (e) => {
|
|
if (!mouseDown) return;
|
|
mouseDown = false;
|
|
endX = e.clientX;
|
|
handle();
|
|
});
|
|
|
|
function handle() {
|
|
let diff = endX - startX;
|
|
if (Math.abs(diff) > 40) {
|
|
if (diff < 0) dotnetHelper.invokeMethodAsync('OnSwipeLeft');
|
|
else dotnetHelper.invokeMethodAsync('OnSwipeRight');
|
|
}
|
|
}
|
|
}
|
|
}; |