Skip to content

Commit 2fc0ab8

Browse files
committed
separating breadcrumb into it's own component
1 parent 2288785 commit 2fc0ab8

File tree

4 files changed

+45
-44
lines changed

4 files changed

+45
-44
lines changed

resources/js/components/AppHeader.vue

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import AppLogo from '@/components/AppLogo.vue';
33
import AppLogoIcon from '@/components/AppLogoIcon.vue';
44
import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar';
5+
import Breadcrumbs from '@/components/Breadcrumbs.vue';
56
import { Button } from '@/components/ui/button';
67
import { DropdownMenu, DropdownMenuContent, DropdownMenuTrigger } from '@/components/ui/dropdown-menu';
78
import {
@@ -19,14 +20,6 @@ import type { BreadcrumbItem, NavItem } from '@/types';
1920
import { Link, usePage } from '@inertiajs/vue3';
2021
import { BookOpen, Folder, LayoutGrid, Menu, Search } from 'lucide-vue-next';
2122
import { computed } from 'vue';
22-
import {
23-
Breadcrumb,
24-
BreadcrumbLink,
25-
BreadcrumbList,
26-
BreadcrumbPage,
27-
BreadcrumbSeparator,
28-
BreadcrumbItem as BreadcrumbItemComponent
29-
} from '@/components/ui/breadcrumb';
3023
3124
interface Props {
3225
breadcrumbs?: BreadcrumbItem[];
@@ -190,23 +183,7 @@ const rightNavItems: NavItem[] = [
190183

191184
<div v-if="props.breadcrumbs.length > 1" class="flex w-full border-b border-sidebar-border/70">
192185
<div class="mx-auto flex h-12 w-full items-center justify-start px-4 text-neutral-500 md:max-w-7xl">
193-
<Breadcrumb>
194-
<BreadcrumbList>
195-
<template v-for="(item, index) in breadcrumbs" :key="index">
196-
<BreadcrumbItemComponent>
197-
<template v-if="index === breadcrumbs.length - 1">
198-
<BreadcrumbPage>{{ item.title }}</BreadcrumbPage>
199-
</template>
200-
<template v-else>
201-
<BreadcrumbLink :href="item.href">
202-
{{ item.title }}
203-
</BreadcrumbLink>
204-
</template>
205-
</BreadcrumbItemComponent>
206-
<BreadcrumbSeparator v-if="index !== breadcrumbs.length - 1" />
207-
</template>
208-
</BreadcrumbList>
209-
</Breadcrumb>
186+
<Breadcrumbs :breadcrumbs="breadcrumbs" />
210187
</div>
211188
</div>
212189
</div>

resources/js/components/AppSidebarHeader.vue

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script setup lang="ts">
2-
import { Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator } from '@/components/ui/breadcrumb';
2+
import Breadcrumbs from '@/components/Breadcrumbs.vue';
33
import { SidebarTrigger } from '@/components/ui/sidebar';
44
import type { BreadcrumbItemType } from '@/types';
55
@@ -15,23 +15,7 @@ defineProps<{
1515
<div class="flex items-center gap-2">
1616
<SidebarTrigger class="-ml-1" />
1717
<template v-if="breadcrumbs.length > 0">
18-
<Breadcrumb>
19-
<BreadcrumbList>
20-
<template v-for="(item, index) in breadcrumbs" :key="index">
21-
<BreadcrumbItem>
22-
<template v-if="index === breadcrumbs.length - 1">
23-
<BreadcrumbPage>{{ item.title }}</BreadcrumbPage>
24-
</template>
25-
<template v-else>
26-
<BreadcrumbLink :href="item.href">
27-
{{ item.title }}
28-
</BreadcrumbLink>
29-
</template>
30-
</BreadcrumbItem>
31-
<BreadcrumbSeparator v-if="index !== breadcrumbs.length - 1" />
32-
</template>
33-
</BreadcrumbList>
34-
</Breadcrumb>
18+
<Breadcrumbs :breadcrumbs="breadcrumbs" />
3519
</template>
3620
</div>
3721
</header>
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<script setup lang="ts">
2+
3+
import {
4+
Breadcrumb,
5+
BreadcrumbItem,
6+
BreadcrumbLink,
7+
BreadcrumbList,
8+
BreadcrumbPage,
9+
BreadcrumbSeparator
10+
} from '@/components/ui/breadcrumb';
11+
12+
interface BreadcrumbItem {
13+
title: string;
14+
href?: string;
15+
}
16+
17+
defineProps<{
18+
breadcrumbs: BreadcrumbItem[];
19+
}>();
20+
</script>
21+
22+
<template>
23+
<Breadcrumb>
24+
<BreadcrumbList>
25+
<template v-for="(item, index) in breadcrumbs" :key="index">
26+
<BreadcrumbItem>
27+
<template v-if="index === breadcrumbs.length - 1">
28+
<BreadcrumbPage>{{ item.title }}</BreadcrumbPage>
29+
</template>
30+
<template v-else>
31+
<BreadcrumbLink :href="item.href">
32+
{{ item.title }}
33+
</BreadcrumbLink>
34+
</template>
35+
</BreadcrumbItem>
36+
<BreadcrumbSeparator v-if="index !== breadcrumbs.length - 1" />
37+
</template>
38+
</BreadcrumbList>
39+
</Breadcrumb>
40+
</template>

resources/js/layouts/AppLayout.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script setup lang="ts">
2-
import AppLayout from '@/layouts/app/AppSidebarLayout.vue';
2+
import AppLayout from '@/layouts/app/AppHeaderLayout.vue';
33
import type { BreadcrumbItemType } from '@/types';
44
55
interface Props {

0 commit comments

Comments
 (0)