diff --git a/app/src/lib/project-manager/ProjectManager.svelte b/app/src/lib/project-manager/ProjectManager.svelte index 88486dc..f64f491 100644 --- a/app/src/lib/project-manager/ProjectManager.svelte +++ b/app/src/lib/project-manager/ProjectManager.svelte @@ -1,7 +1,7 @@ Project - (showNewProject = !showNewProject)} - > - New - + (showNewProject = !showNewProject)}>New {#if showNewProject} @@ -53,20 +64,11 @@ onkeydown={(e) => e.key === 'Enter' && handleCreate()} /> t.name)} bind:value={selectedTemplateIndex} /> - handleCreate()} - > - Create - + handleCreate()}>Create {/if} - {#if projectManager.loading} - Loading... - {/if} - {#each projectManager.projects as project (project.id)} @@ -89,16 +91,35 @@ {project.meta?.title || 'Untitled'} { - projectManager.handleDeleteProject(project.id!); - }} + class="opacity-20 hover:opacity-70 transition-opacity cursor-pointer p-1 rounded text-red-400" + onclick={(e) => requestDelete(project.id!, e)} + aria-label="Delete project" > - × + + {:else} + {#if projectManager.loading} + + + Loading + + {:else} + + No projects yet.Press New to create one. + + {/if} {/each} + + diff --git a/app/src/lib/project-manager/project-manager.svelte.ts b/app/src/lib/project-manager/project-manager.svelte.ts index f69071e..f6f53dd 100644 --- a/app/src/lib/project-manager/project-manager.svelte.ts +++ b/app/src/lib/project-manager/project-manager.svelte.ts @@ -10,7 +10,9 @@ export class ProjectManager { 'node.activeProjectId', undefined ); - public readonly loading = $derived(this.graph?.id !== this.activeProjectId.value); + public readonly loading = $derived( + this.projects.length && this.graph?.id !== this.activeProjectId.value + ); constructor() { this.init(); diff --git a/packages/ui/src/lib/ConfirmDialog.svelte b/packages/ui/src/lib/ConfirmDialog.svelte new file mode 100644 index 0000000..8e5f0cb --- /dev/null +++ b/packages/ui/src/lib/ConfirmDialog.svelte @@ -0,0 +1,91 @@ + + + + { if (e.target === dialogEl) cancel(); }} +> + + {title} + {#if message} + {message} + {/if} + {#if children} + + {@render children()} + + {/if} + + {cancelLabel} + {confirmLabel} + + + + +
Loading...
Loading
{message}