forked from EduCraft/curriculum-project-hub
feat(admin-web): add folder and project creation functionality in FolderNode and FolderTree components
This commit is contained in:
@@ -14,9 +14,7 @@
|
||||
import { toastError, toastSuccess } from '$lib/toast';
|
||||
|
||||
const slug = $derived(page.params.slug ?? '');
|
||||
const org = $derived(
|
||||
($session.me?.organizations.find((o) => o.slug === slug) as OrgMembership | undefined) ?? null,
|
||||
);
|
||||
const org = $derived(($session.me?.organizations.find((o) => o.slug === slug) as OrgMembership | undefined) ?? null);
|
||||
const isAdmin = $derived(!!org && (org.role === 'OWNER' || org.role === 'ADMIN'));
|
||||
|
||||
let data = $state<ExplorerData | null>(null);
|
||||
@@ -32,6 +30,18 @@
|
||||
let projectName = $state('');
|
||||
let projectFolder = $state('');
|
||||
|
||||
function openFolderModal(parentId: string) {
|
||||
folderName = '';
|
||||
folderParent = parentId;
|
||||
showFolderModal = true;
|
||||
}
|
||||
|
||||
function openProjectModal(folderId: string) {
|
||||
projectName = '';
|
||||
projectFolder = folderId;
|
||||
showProjectModal = true;
|
||||
}
|
||||
|
||||
async function load() {
|
||||
loading = true;
|
||||
error = null;
|
||||
@@ -113,8 +123,8 @@
|
||||
{:else if isAdmin && data}
|
||||
<PageHeader title="项目" description="文件夹是透明组织节点;项目是权限边界。">
|
||||
{#snippet actions()}
|
||||
<button class="saas-btn-secondary" onclick={() => (showFolderModal = true)}>新建文件夹</button>
|
||||
<button class="saas-btn-primary" onclick={() => (showProjectModal = true)}>新建项目</button>
|
||||
<button class="saas-btn-secondary" onclick={() => openFolderModal('')}>新建文件夹</button>
|
||||
<button class="saas-btn-primary" onclick={() => openProjectModal('')}>新建项目</button>
|
||||
{/snippet}
|
||||
</PageHeader>
|
||||
|
||||
@@ -122,7 +132,14 @@
|
||||
{#if data.projects.filter((p) => !p.folderId).length === 0 && data.folders.filter((f) => !f.parentId).length === 0}
|
||||
<EmptyState title="暂无项目" description="新建文件夹或项目,开始组织你的教研资产。" />
|
||||
{:else}
|
||||
<FolderTree folders={data.folders} projects={data.projects} parentId={null} {slug} />
|
||||
<FolderTree
|
||||
folders={data.folders}
|
||||
projects={data.projects}
|
||||
parentId={null}
|
||||
{slug}
|
||||
onCreateFolder={openFolderModal}
|
||||
onCreateProject={openProjectModal}
|
||||
/>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user