add contextmenu actions to edit menu

This commit is contained in:
vcoppe
2024-06-27 18:23:11 +02:00
parent aad5cf8770
commit 804a155257
7 changed files with 141 additions and 27 deletions

View File

@@ -35,7 +35,15 @@
} from './Selection';
import { getContext } from 'svelte';
import { get } from 'svelte/store';
import { gpxLayers, hideSelection, map, showSelection } from '$lib/stores';
import {
anyHidden,
editMetadata,
editStyle,
gpxLayers,
hideSelection,
map,
showSelection
} from '$lib/stores';
import {
GPXTreeElement,
Track,
@@ -54,7 +62,6 @@
| Readonly<Waypoint>;
export let item: ListItem;
export let label: string | undefined;
let hidden = false;
let orientation = getContext<'vertical' | 'horizontal'>('orientation');
@@ -62,9 +69,6 @@
$: singleSelection = $selection.size === 1;
let openEditMetadata: boolean = false;
let openEditStyle: boolean = false;
let nodeColors: string[] = [];
$: if (node && $map) {
@@ -98,6 +102,15 @@
}
}
}
let openEditMetadata: boolean = false;
let openEditStyle: boolean = false;
$: openEditMetadata = $editMetadata && singleSelection && $selection.has(item);
$: openEditStyle =
$editStyle &&
$selection.has(item) &&
$selection.getSelected().findIndex((i) => i.getFullId() === item.getFullId()) === 0;
</script>
<!-- svelte-ignore a11y-click-events-have-key-events -->
@@ -108,10 +121,6 @@
if (!get(selection).has(item)) {
selectItem(item);
}
let layer = gpxLayers.get(item.getFileId());
if (layer) {
hidden = layer.hidden;
}
}
}}
>
@@ -185,25 +194,25 @@
</ContextMenu.Trigger>
<ContextMenu.Content>
{#if item instanceof ListFileItem || item instanceof ListTrackItem}
<ContextMenu.Item disabled={!singleSelection} on:click={() => (openEditMetadata = true)}>
<ContextMenu.Item disabled={!singleSelection} on:click={() => ($editMetadata = true)}>
<Info size="16" class="mr-1" />
{$_('menu.metadata.button')}
</ContextMenu.Item>
<ContextMenu.Item on:click={() => (openEditStyle = true)}>
<ContextMenu.Item on:click={() => ($editStyle = true)}>
<PaintBucket size="16" class="mr-1" />
{$_('menu.style.button')}
</ContextMenu.Item>
{#if item instanceof ListFileItem}
<ContextMenu.Item
on:click={() => {
if (hidden) {
if ($anyHidden) {
showSelection();
} else {
hideSelection();
}
}}
>
{#if hidden}
{#if $anyHidden}
<Eye size="16" class="mr-1" />
{$_('menu.unhide')}
{:else}
@@ -252,14 +261,12 @@
<ContextMenu.Separator />
{/if}
{/if}
{#if $verticalFileView || item.level !== ListLevel.WAYPOINTS}
{#if item.level !== ListLevel.WAYPOINTS}
<ContextMenu.Item on:click={dbUtils.duplicateSelection}>
<Copy size="16" class="mr-1" />
{$_('menu.duplicate')}
<Shortcut key="D" ctrl={true} /></ContextMenu.Item
>
{/if}
{#if $verticalFileView}
<ContextMenu.Item on:click={dbUtils.duplicateSelection}>
<Copy size="16" class="mr-1" />
{$_('menu.duplicate')}
<Shortcut key="D" ctrl={true} /></ContextMenu.Item
>
{#if $verticalFileView}
<ContextMenu.Item on:click={copySelection}>
<ClipboardCopy size="16" class="mr-1" />