summaryrefslogtreecommitdiff
path: root/src/lib/category/components
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/category/components')
-rw-r--r--src/lib/category/components/Breadcrumb.jsx46
1 files changed, 31 insertions, 15 deletions
diff --git a/src/lib/category/components/Breadcrumb.jsx b/src/lib/category/components/Breadcrumb.jsx
index 8579bb14..29bc9c0a 100644
--- a/src/lib/category/components/Breadcrumb.jsx
+++ b/src/lib/category/components/Breadcrumb.jsx
@@ -11,17 +11,18 @@ import React from 'react';
import { useQuery } from 'react-query';
import useDevice from '@/core/hooks/useDevice';
-const Breadcrumb = ({ categoryId, shortDesc }) => {
+const Breadcrumb = ({ categoryId, shortDesc, currentLabel }) => {
const breadcrumbs = useQuery(
['category-breadcrumbs', categoryId],
async () =>
- await odooApi('GET', `/api/v1/category/${categoryId}/category-breadcrumb`)
+ await odooApi(
+ 'GET',
+ `/api/v1/category/${categoryId}/category-breadcrumb`,
+ ),
);
const { isDesktop, isMobile } = useDevice();
-
const items = breadcrumbs.data ?? [];
- const lastIdx = items.length - 1;
/* =========================
DESKTOP
@@ -58,29 +59,40 @@ const Breadcrumb = ({ categoryId, shortDesc }) => {
{/* Categories */}
{items.map((category, index) => {
- const isLast = index === lastIdx;
+ const isLastCategory = index === items.length - 1;
+ const isClickable = currentLabel || !isLastCategory;
+
return (
- <BreadcrumbItem key={index} isCurrentPage={isLast}>
- {isLast ? (
- <BreadcrumbLink className='block whitespace-normal break-words md:whitespace-nowrap'>
- {category.name}
- </BreadcrumbLink>
- ) : (
+ <BreadcrumbItem key={index} isCurrentPage={!isClickable}>
+ {isClickable ? (
<BreadcrumbLink
as={Link}
href={createSlug(
'/shop/category/',
category.name,
- category.id
+ category.id,
)}
className='!text-danger-500'
>
{category.name}
</BreadcrumbLink>
+ ) : (
+ <BreadcrumbLink className='block whitespace-normal break-words md:whitespace-nowrap'>
+ {category.name}
+ </BreadcrumbLink>
)}
</BreadcrumbItem>
);
})}
+
+ {/* Searchkey / Current Page */}
+ {currentLabel && (
+ <BreadcrumbItem isCurrentPage>
+ <BreadcrumbLink className='block whitespace-normal break-words md:whitespace-nowrap'>
+ {currentLabel}
+ </BreadcrumbLink>
+ </BreadcrumbItem>
+ )}
</ChakraBreadcrumb>
</Skeleton>
{shortDesc && (
@@ -119,6 +131,8 @@ const Breadcrumb = ({ categoryId, shortDesc }) => {
.join(' / ')
: '';
+ const finalLabel = currentLabel || lastCat?.name;
+
return (
<div className='container mx-auto py-2 mt-2'>
<Skeleton isLoaded={!breadcrumbs.isLoading} className='w-full'>
@@ -152,6 +166,7 @@ const Breadcrumb = ({ categoryId, shortDesc }) => {
</BreadcrumbLink>
</BreadcrumbItem>
+ {/* Jika ada kategori sebelum secondLast, tampilkan '..' (link ke beforeSecond) */}
{beforeSecond && (
<BreadcrumbItem>
<BreadcrumbLink
@@ -159,7 +174,7 @@ const Breadcrumb = ({ categoryId, shortDesc }) => {
href={createSlug(
'/shop/category/',
beforeSecond.name,
- beforeSecond.id
+ beforeSecond.id,
)}
title={hiddenText}
className='!text-danger-500'
@@ -176,7 +191,7 @@ const Breadcrumb = ({ categoryId, shortDesc }) => {
href={createSlug(
'/shop/category/',
secondLast.name,
- secondLast.id
+ secondLast.id,
)}
className='!text-danger-500'
>
@@ -185,6 +200,7 @@ const Breadcrumb = ({ categoryId, shortDesc }) => {
</BreadcrumbItem>
)}
+ {/* lastCat (current) dengan truncate & lebar dibatasi */}
{lastCat && (
<BreadcrumbItem isCurrentPage>
<span
@@ -192,7 +208,7 @@ const Breadcrumb = ({ categoryId, shortDesc }) => {
style={{ maxWidth: '60vw' }}
title={lastCat.name}
>
- {lastCat.name}
+ {finalLabel}
</span>
</BreadcrumbItem>
)}