From c86c591d07d4fb6ed67a31a592a324724387e6e3 Mon Sep 17 00:00:00 2001 From: N48LL <58626061+thisisvv@users.noreply.github.com> Date: Mon, 13 Apr 2026 15:59:28 +0200 Subject: [PATCH 1/3] fix: drag-and-drop for mobile --- app/components/board/BoardSection.vue | 6 ++++++ app/components/board/BoardView.vue | 3 +++ app/components/editor/EditorContextMenu.vue | 20 +++++++++++++------- app/components/widgets/WidgetWrapper.vue | 2 +- 4 files changed, 23 insertions(+), 8 deletions(-) diff --git a/app/components/board/BoardSection.vue b/app/components/board/BoardSection.vue index 1e70b2f..58442c7 100644 --- a/app/components/board/BoardSection.vue +++ b/app/components/board/BoardSection.vue @@ -104,6 +104,12 @@ function toggleCollapse() { group="widgets" :animation="150" ghost-class="opacity-30" + :force-fallback="true" + :fallback-on-body="true" + :fallback-tolerance="3" + :delay="200" + :delay-on-touch-only="true" + :touch-start-threshold="5" class="grid gap-4" :class="gridClass" @change="onDragChange" diff --git a/app/components/board/BoardView.vue b/app/components/board/BoardView.vue index 81ead8a..8bda944 100644 --- a/app/components/board/BoardView.vue +++ b/app/components/board/BoardView.vue @@ -14,6 +14,9 @@ const { isEditing, markDirty } = useEditMode() handle=".section-handle" :animation="150" ghost-class="opacity-30" + :force-fallback="true" + :fallback-on-body="true" + :fallback-tolerance="3" class="flex flex-col gap-6" @change="markDirty" > diff --git a/app/components/editor/EditorContextMenu.vue b/app/components/editor/EditorContextMenu.vue index 9944782..9da6cb3 100644 --- a/app/components/editor/EditorContextMenu.vue +++ b/app/components/editor/EditorContextMenu.vue @@ -11,6 +11,13 @@ const store = useBoardStore() const { markDirty } = useEditMode() const showSettings = ref(false) +const menuOpen = ref(false) + +function onContextMenu(e: MouseEvent) { + if (props.disabled) return + e.preventDefault() + menuOpen.value = true +} const items = computed(() => { if (props.disabled) return [] @@ -112,19 +119,18 @@ const items = computed(() => {