Refactor breadcrumbs to use page store for selected project

- Replace project selection logic with page.data.project
- Add type annotations for better type safety
- Clean up component formatting and remove unused isSelected property
This commit is contained in:
Torsten Dittmann
2025-05-28 16:04:47 +02:00
parent 5c598e2a39
commit dd5bf02a0d
2 changed files with 19 additions and 19 deletions
+19 -18
View File
@@ -14,6 +14,7 @@
import { base } from '$app/paths';
import { newOrgModal } from '$lib/stores/organization';
import { Click, trackEvent } from '$lib/actions/analytics';
import { page } from '$app/stores';
type Project = {
name: string;
@@ -64,7 +65,7 @@
export let organizations: Organization[] = [];
$: selectedOrg = organizations.find((organization) => organization.isSelected);
$: selectedProject = selectedOrg?.projects.find((project) => project.isSelected);
$: selectedProject = $page.data.project;
let organisationBottomSheetOpen = false;
let projectsBottomSheetOpen = false;
@@ -97,7 +98,7 @@
$: organizationsBottomSheet = !selectedOrg
? switchOrganization
: {
: ({
top: {
items: [
{
@@ -126,8 +127,8 @@
}
]
}
};
let projectsBottomSheet: SheetMenu;
} satisfies SheetMenu);
$: projectsBottomSheet = {
top:
selectedOrg?.projects.length > 1
@@ -173,7 +174,7 @@
]
}
: undefined
};
} satisfies SheetMenu;
function onResize() {
if ((organisationBottomSheetOpen || projectsBottomSheetOpen) && !$isSmallViewport) {
@@ -317,17 +318,19 @@
<div use:melt={$itemProjects}>
<ActionMenu.Root>
<ActionMenu.Item.Anchor
href={`/console/project-${project.region}-${project.$id}`}
>{project.name}</ActionMenu.Item.Anchor
></ActionMenu.Root>
href={`/console/project-${project.region}-${project.$id}`}>
{project.name}
</ActionMenu.Item.Anchor>
</ActionMenu.Root>
</div>
{:else if index === 4}
<div use:melt={$itemProjects}>
<ActionMenu.Root>
<ActionMenu.Item.Anchor
href={`/console/organization-${selectedOrg.$id}`}
>All projects</ActionMenu.Item.Anchor
></ActionMenu.Root>
href={`/console/organization-${selectedOrg.$id}`}>
All projects
</ActionMenu.Item.Anchor>
</ActionMenu.Root>
</div>
{/if}
{/each}
@@ -337,18 +340,16 @@
<ActionMenu.Root>
<ActionMenu.Item.Anchor
leadingIcon={IconPlusSm}
href={`/console/organization-${selectedOrg?.$id}?create-project`}
>Create project</ActionMenu.Item.Anchor
></ActionMenu.Root>
href={`/console/organization-${selectedOrg?.$id}?create-project`}>
Create project
</ActionMenu.Item.Anchor></ActionMenu.Root>
</div>
</Card.Base>
</div>
{/if}
</div>
<BottomSheet.Menu bind:isOpen={organisationBottomSheetOpen} menu={organizationsBottomSheet}
></BottomSheet.Menu>
<BottomSheet.Menu bind:isOpen={projectsBottomSheetOpen} menu={projectsBottomSheet}
></BottomSheet.Menu>
<BottomSheet.Menu bind:isOpen={organisationBottomSheetOpen} menu={organizationsBottomSheet} />
<BottomSheet.Menu bind:isOpen={projectsBottomSheetOpen} menu={projectsBottomSheet} />
<style lang="scss">
.menu {
-1
View File
@@ -70,7 +70,6 @@
name: project?.name,
$id: project.$id,
region: project.region,
isSelected: data.currentProjectId === project.$id,
platformCount: project.platforms.length,
pingCount: project.pingCount
};