From b3a8b74433be62753dff6040b1eb2a7f66791ded Mon Sep 17 00:00:00 2001 From: vcoppe Date: Wed, 5 Jun 2024 17:19:03 +0200 Subject: [PATCH] functional dnd? --- .../src/lib/components/file-list/FileList.ts | 10 +- .../components/file-list/FileListNode.svelte | 4 +- .../file-list/FileListNodeContent.svelte | 129 +++++++----------- 3 files changed, 64 insertions(+), 79 deletions(-) diff --git a/website/src/lib/components/file-list/FileList.ts b/website/src/lib/components/file-list/FileList.ts index ec85675a..ac5f4be4 100644 --- a/website/src/lib/components/file-list/FileList.ts +++ b/website/src/lib/components/file-list/FileList.ts @@ -308,7 +308,7 @@ export function moveItems(fromParent: ListItem, toParent: ListItem, fromItems: L let [result, _removed] = newFile.replaceTrackSegments(item.getTrackIndex(), item.getSegmentIndex(), item.getSegmentIndex() - 1, [context[i]]); newFile = castDraft(result); } else if (item instanceof ListWaypointsItem && Array.isArray(context[i]) && context[i].length > 0 && context[i][0] instanceof Waypoint) { - let [result, _removed] = newFile.replaceWaypoints(0, -1, context[i]); + let [result, _removed] = newFile.replaceWaypoints(newFile.wpt.length, newFile.wpt.length - 1, context[i]); newFile = castDraft(result); } else if (item instanceof ListWaypointItem && context[i] instanceof Waypoint) { let [result, _removed] = newFile.replaceWaypoints(item.getWaypointIndex(), item.getWaypointIndex() - 1, [context[i]]); @@ -318,4 +318,12 @@ export function moveItems(fromParent: ListItem, toParent: ListItem, fromItems: L return newFile; } ], []); + + selection.update(($selection) => { + $selection.clear(); + toItems.forEach((item) => { + $selection.set(item, true); + }); + return $selection; + }); } diff --git a/website/src/lib/components/file-list/FileListNode.svelte b/website/src/lib/components/file-list/FileListNode.svelte index 8836cd23..8878ac39 100644 --- a/website/src/lib/components/file-list/FileListNode.svelte +++ b/website/src/lib/components/file-list/FileListNode.svelte @@ -67,7 +67,9 @@
- + {#key node} + + {/key}
{:else} diff --git a/website/src/lib/components/file-list/FileListNodeContent.svelte b/website/src/lib/components/file-list/FileListNodeContent.svelte index 58377f06..b2924727 100644 --- a/website/src/lib/components/file-list/FileListNodeContent.svelte +++ b/website/src/lib/components/file-list/FileListNodeContent.svelte @@ -1,6 +1,6 @@
{#if node instanceof Map} {#each node as [fileId, file] (fileId)} -
+
{/each} {:else if node instanceof GPXFile} {#if waypointRoot} {#if node.wpt.length > 0} -
+
{/if} {:else} {#each node.children as child, i (child)} -
+
{/each} {/if} {:else if node instanceof Track} {#each node.children as child, i (child)} -
+
{/each} {:else if Array.isArray(node) && node.length > 0 && node[0] instanceof Waypoint} {#each node as wpt, i (wpt)} -
+
{/each}