diff --git a/src/lib/components/tree/ConfigTree.svelte b/src/lib/components/tree/ConfigTree.svelte
index 6d2c159..8a73471 100644
--- a/src/lib/components/tree/ConfigTree.svelte
+++ b/src/lib/components/tree/ConfigTree.svelte
@@ -520,6 +520,10 @@
handler: () => get(config_manager)?.showConfigInFolder(item),
isDisabled: () => !get(config_manager)?.hasLocalFile(item),
},
+ {
+ text: [`Create a copy`, ``],
+ handler: () => dispatch("create-copy", item),
+ },
{
text: [`Rename`, ``],
handler: () => startRename(item),
@@ -563,19 +567,21 @@
{#if renamingFolderTitle === data.title}
-
confirmRenameFolder(data.title)}
- on:keydown={(e) =>
- handleRenameKeydown(
- e,
- () => renameFolderValue,
- (v) => (renameFolderValue = v),
- () => confirmRenameFolder(data.title),
- cancelRenameFolder,
- )}
- />
+
+ confirmRenameFolder(data.title)}
+ on:keydown={(e) =>
+ handleRenameKeydown(
+ e,
+ () => renameFolderValue,
+ (v) => (renameFolderValue = v),
+ () => confirmRenameFolder(data.title),
+ cancelRenameFolder,
+ )}
+ />
+
e.preventDefault()}
onClick={cancelRenameFolder}
@@ -609,53 +615,53 @@
let:itemProps
>
{@const data = getItemData(item)}
- {#if renamingConfigId === data.item.id}
-
-
-
confirmRename(data.item)}
- on:keydown={(e) =>
- handleRenameKeydown(
- e,
- () => renameValue,
- (v) => (renameValue = v),
- () => confirmRename(data.item),
- cancelRename,
- )}
- />
+ {@const isRenaming = renamingConfigId === data.item.id}
+ handleDragStart(item)}
+ on:drag-end={() => handleDragEnd(item)}
+ on:click={() => handleClick(item)}
+ on:contextmenu={() => handleContextMenu(item)}
+ >
+
+ {@html highlightMatches(data.item.name, $filter_value)}
+
+
+ {@html highlightMatches(data.item.type, $filter_value)}
+
+
+
+ confirmRename(data.item)}
+ on:keydown={(e) =>
+ handleRenameKeydown(
+ e,
+ () => renameValue,
+ (v) => (renameValue = v),
+ () => confirmRename(data.item),
+ cancelRename,
+ )}
+ />
+
e.preventDefault()}
onClick={cancelRename}
iconPath="close"
tooltipText="Cancel"
/>
-
- {#if renameError}
- {renameError}
- {/if}
- {:else}
- handleDragStart(item)}
- on:drag-end={() => handleDragEnd(item)}
- on:click={() => handleClick(item)}
- on:contextmenu={() => handleContextMenu(item)}
- >
-
- {@html highlightMatches(data.item.name, $filter_value)}
-
-
- {@html highlightMatches(data.item.type, $filter_value)}
-
-
+
+
+ {#if isRenaming && renameError}
+ {renameError}
{/if}
@@ -669,7 +675,7 @@
padding: 0.25rem;
}
- .rename-row > :global(:first-child) {
+ .rename-input {
flex-grow: 1;
min-width: 0;
}
diff --git a/src/lib/components/tree/ProfileCloudTreeItem.svelte b/src/lib/components/tree/ProfileCloudTreeItem.svelte
index 2b9b776..ab5fb61 100644
--- a/src/lib/components/tree/ProfileCloudTreeItem.svelte
+++ b/src/lib/components/tree/ProfileCloudTreeItem.svelte
@@ -28,6 +28,7 @@
export let itemProps: any;
export let itemFunction: any;
export let ctxOptions: ContextMenuOptions = { items: [] };
+ export let editing: boolean = false;
type WithProfileCloudData = T & ProfileCloudCardData;
@@ -51,15 +52,16 @@
}
-