Add category browsing and product filtering with breadcrumbs
This commit is contained in:
@@ -20,6 +20,7 @@ public partial class ProductDetail : ComponentBase, IDisposable
|
||||
private const int MaxQty = 20;
|
||||
private IReadOnlyList<ProductGalleryImage> _galleryItems = Array.Empty<ProductGalleryImage>();
|
||||
private IReadOnlyList<ProductCategoryPathInfo> _categoryPaths = Array.Empty<ProductCategoryPathInfo>();
|
||||
private IReadOnlyList<ProductCategoryNodeInfo> _breadcrumbNodes = Array.Empty<ProductCategoryNodeInfo>();
|
||||
private ProductGalleryImage? _selectedGalleryImage;
|
||||
private long TotalPrice => (_product?.Price ?? 0) * _qty;
|
||||
private bool HasDiscount => _product is { Discount: > 0 and < 100 };
|
||||
@@ -52,12 +53,14 @@ public partial class ProductDetail : ComponentBase, IDisposable
|
||||
_galleryItems = BuildGalleryItems(_product);
|
||||
_selectedGalleryImage = _galleryItems.FirstOrDefault();
|
||||
_categoryPaths = _product.Categories;
|
||||
UpdateBreadcrumb();
|
||||
_qty = Math.Clamp(CurrentCartItem?.Quantity ?? _qty, MinQty, MaxQty);
|
||||
}
|
||||
else
|
||||
{
|
||||
_galleryItems = Array.Empty<ProductGalleryImage>();
|
||||
_categoryPaths = Array.Empty<ProductCategoryPathInfo>();
|
||||
_breadcrumbNodes = Array.Empty<ProductCategoryNodeInfo>();
|
||||
}
|
||||
|
||||
StateHasChanged();
|
||||
@@ -172,6 +175,13 @@ public partial class ProductDetail : ComponentBase, IDisposable
|
||||
_selectedGalleryImage = item;
|
||||
}
|
||||
|
||||
private void UpdateBreadcrumb()
|
||||
{
|
||||
_breadcrumbNodes = _categoryPaths
|
||||
.OrderByDescending(path => path.Nodes.Count)
|
||||
.FirstOrDefault()?.Nodes ?? Array.Empty<ProductCategoryNodeInfo>();
|
||||
}
|
||||
|
||||
private void NavigateToCategory(ProductCategoryPathInfo path)
|
||||
{
|
||||
var target = $"{RouteConstants.Store.Products}?category={path.CategoryId}";
|
||||
|
||||
Reference in New Issue
Block a user