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 @@ } - +