+
- {isOpen && (
-
+
+ {/* Header with title and X close button */}
+
+
Sort by
+
+
+
{SORT_OPTIONS.map((option, index) => (
- )}
);
-}
\ No newline at end of file
+
+}
diff --git a/src/pages/Products/Products.jsx b/src/pages/Products/Products.jsx
index cc574e6e..5ee4e9e9 100644
--- a/src/pages/Products/Products.jsx
+++ b/src/pages/Products/Products.jsx
@@ -70,51 +70,7 @@ export default function Products() {
});
}, [allProducts, filters, maxProductPrice]);
- // Apply client-side sorting to filtered products
- const sortedProducts = useMemo(() => {
- if (!filteredProducts || filteredProducts.length === 0) return [];
-
- // shallow copy to avoid mutating original array
- const copy = [...filteredProducts];
-
- const getString = (p, key) => (p[key] || p.name || p.title || '').toString().toLowerCase();
- const getNumber = (p, key) => {
- const val = p[key];
- if (val === undefined || val === null || val === '') return 0;
- const n = Number(val);
- return Number.isNaN(n) ? 0 : n;
- };
-
- switch (`${sortBy}:${sortOrder}`) {
- case 'title:asc':
- copy.sort((a, b) => getString(a, 'name').localeCompare(getString(b, 'name')));
- break;
- case 'title:desc':
- copy.sort((a, b) => getString(b, 'name').localeCompare(getString(a, 'name')));
- break;
- case 'price:asc':
- copy.sort((a, b) => getNumber(a, 'price') - getNumber(b, 'price'));
- break;
- case 'price:desc':
- copy.sort((a, b) => getNumber(b, 'price') - getNumber(a, 'price'));
- break;
- case 'rating:asc':
- copy.sort((a, b) => getNumber(a, 'rating') - getNumber(b, 'rating'));
- break;
- case 'rating:desc':
- copy.sort((a, b) => getNumber(b, 'rating') - getNumber(a, 'rating'));
- break;
- case 'featured:desc':
- default:
- // Featured (placeholder) - keep backend/default ordering
- break;
- }
-
- return copy;
- }, [filteredProducts, sortBy, sortOrder]);
-
- // Simple display of filtered products with pagination/infinite scroll
- const displayedProducts = sortedProducts.slice(0, displayedCount);
+ const displayedProducts = filteredProducts.slice(0, displayedCount);
const hasMoreProducts = displayedCount < filteredProducts.length;
// Infinite scroll callback
@@ -135,7 +91,7 @@ export default function Products() {
);
useEffect(() => {
- dispatch(fetchProducts({ page: 1, limit: 1000 }));
+ dispatch(fetchProducts({ page: 1, limit: 1000, sort: 'feature' }));
}, [dispatch]);
return (
@@ -174,7 +130,7 @@ export default function Products() {
{/* Left: All Filters button (full width on mobile) */}
-