diff --git a/instance/src/web/public/app.webmanifest b/instance/src/web/public/app.webmanifest index 867926b..ad88b29 100644 --- a/instance/src/web/public/app.webmanifest +++ b/instance/src/web/public/app.webmanifest @@ -5,7 +5,8 @@ { "src": "assets/onlineworkspace/online_workspace_logo.svg", "type": "image/svg", - "sizes": "512x512" + "sizes": "512x512", + "purpose": "maskable" } ], "display": "standalone" diff --git a/uikit-solid/src/components/switch/UKSwitch.tsx b/uikit-solid/src/components/switch/UKSwitch.tsx index 0eb49b8..e91730a 100644 --- a/uikit-solid/src/components/switch/UKSwitch.tsx +++ b/uikit-solid/src/components/switch/UKSwitch.tsx @@ -16,14 +16,23 @@ const UKSwitch: Component<{ const removeMouseUpListener = () => { window.removeEventListener("mouseup", handleWindowMouseUp); + window.removeEventListener("touchend", handleWindowMouseUp); }; - const handleWindowMouseUp = (e: MouseEvent) => { + const handleWindowMouseUp = (e: MouseEvent | TouchEvent) => { if (!isDragging()) return; setIsDragging(false); removeMouseUpListener(); - const dragDistance = e.clientX - dragStart(); + let posX: number = 0; + + if ("touches" in e) { + posX = e.touches[0].clientX; + } else { + posX = e.clientX; + } + + const dragDistance = posX - dragStart(); const dragThreshold = 10; if (Math.abs(dragDistance) > dragThreshold) { @@ -31,12 +40,22 @@ const UKSwitch: Component<{ } }; - const handlePointerDown = (e: PointerEvent) => { + const handlePointerDown = (e: PointerEvent | TouchEvent) => { if (props.disabled) return; setIsDragging(true); - setDragStart(e.clientX); + + let posX: number = 0; + + if ("touches" in e) { + posX = e.touches[0].clientX; + } else { + posX = e.clientX; + } + + setDragStart(posX); window.addEventListener("mouseup", handleWindowMouseUp); + window.addEventListener("touchend", handleWindowMouseUp); }; onCleanup(removeMouseUpListener); @@ -48,6 +67,7 @@ const UKSwitch: Component<{ data-value={props.value} onClick={() => props.onValueChange(!props.value)} onPointerDown={handlePointerDown} + onTouchStart={handlePointerDown} disabled={props.disabled} >