From 76c819848b6fba340269860c98cd5495facf6cc2 Mon Sep 17 00:00:00 2001 From: "@jcarymuhammedow" Date: Sat, 18 Apr 2026 12:10:38 +0500 Subject: [PATCH] added sorting2 --- src/app/api/brandsApi.js | 14 ++- .../Category/components/CategoryFilters.jsx | 16 ++- src/pages/Category/index.jsx | 106 ++++++++++++------ src/pages/DeliveryTerms/index.jsx | 4 +- 4 files changed, 99 insertions(+), 41 deletions(-) diff --git a/src/app/api/brandsApi.js b/src/app/api/brandsApi.js index 6aa916c..c067862 100644 --- a/src/app/api/brandsApi.js +++ b/src/app/api/brandsApi.js @@ -32,12 +32,24 @@ export const brandsApi = baseApi.injectEndpoints({ return `/brands/${params}/products`; } - const { id, page = 1, limit } = params; + const { id, page = 1, limit, sorting, min_price, max_price, brands } = params; let url = `/brands/${id}/products?page=${page}`; if (limit) { url += `&limit=${limit}`; } + if (sorting) { + url += `&sorting=${encodeURIComponent(sorting)}`; + } + if (min_price) { + url += `&min_price=${encodeURIComponent(min_price)}`; + } + if (max_price) { + url += `&max_price=${encodeURIComponent(max_price)}`; + } + if (brands) { + url += `&brands=${encodeURIComponent(brands)}`; + } return url; }, diff --git a/src/pages/Category/components/CategoryFilters.jsx b/src/pages/Category/components/CategoryFilters.jsx index d90ae22..c12ef06 100644 --- a/src/pages/Category/components/CategoryFilters.jsx +++ b/src/pages/Category/components/CategoryFilters.jsx @@ -19,7 +19,7 @@ const CategoryFilters = ({ onBrandSelect, onBrandDeselect, onBrandSearchChange, - sorting = "price_amount-descending", + sorting = "", onSortingChange = () => {}, className, }) => { @@ -35,8 +35,14 @@ const CategoryFilters = ({ ]; const handlePricePreset = (preset) => { - onMinPriceChange(preset.min.toString()); - onMaxPriceChange(preset.max.toString()); + // Eğer zaten aktifse, sıfırla + if (minPrice === preset.min.toString() && maxPrice === preset.max.toString()) { + onMinPriceChange(""); + onMaxPriceChange(""); + } else { + onMinPriceChange(preset.min.toString()); + onMaxPriceChange(preset.max.toString()); + } }; const sortOptions = [ @@ -173,8 +179,12 @@ const CategoryFilters = ({ key={option.value} className={`${styles.sortingBtn} ${sorting === option.value ? styles.activeSorting : ""}`} onClick={() => onSortingChange(option.value)} + aria-pressed={sorting === option.value} > {option.label} + {sorting === option.value && ( + + )} ))} diff --git a/src/pages/Category/index.jsx b/src/pages/Category/index.jsx index 1d600d6..7f5648a 100644 --- a/src/pages/Category/index.jsx +++ b/src/pages/Category/index.jsx @@ -29,7 +29,7 @@ const CategoryPage = () => { currentPage: 1, minPrice: "", maxPrice: "", - sorting: "price_amount-ascending", + sorting: "", }); const [filterState, setFilterState] = useState({ @@ -314,22 +314,31 @@ const CategoryPage = () => { minPrice={pageState.minPrice} maxPrice={pageState.maxPrice} onMinPriceChange={(value) => { - setPageState((prev) => ({ - ...prev, - minPrice: value, - currentPage: 1, - })); - setAllProducts([]); - setHasMore(true); + setPageState((prev) => { + // Sadece aktif bir değer girilirse ürünleri sıfırla + if (value !== "") { + setAllProducts([]); + setHasMore(true); + } + return { + ...prev, + minPrice: value, + currentPage: 1, + }; + }); }} onMaxPriceChange={(value) => { - setPageState((prev) => ({ - ...prev, - maxPrice: value, - currentPage: 1, - })); - setAllProducts([]); - setHasMore(true); + setPageState((prev) => { + if (value !== "") { + setAllProducts([]); + setHasMore(true); + } + return { + ...prev, + maxPrice: value, + currentPage: 1, + }; + }); }} onCategorySelect={handleFilterCategorySelect} onCategoryDeselect={handleFilterCategoryDeselect} @@ -340,9 +349,19 @@ const CategoryPage = () => { } sorting={pageState.sorting} onSortingChange={(value) => { - setPageState((prev) => ({ ...prev, sorting: value, currentPage: 1 })); - setAllProducts([]); - setHasMore(true); + setPageState((prev) => { + const newSorting = prev.sorting === value ? "" : value; + // Sadece aktif bir sort seçilirse ürünleri sıfırla + if (newSorting !== "") { + setAllProducts([]); + setHasMore(true); + } + return { + ...prev, + sorting: newSorting, + currentPage: 1, + }; + }); }} /> @@ -358,22 +377,30 @@ const CategoryPage = () => { minPrice={pageState.minPrice} maxPrice={pageState.maxPrice} onMinPriceChange={(value) => { - setPageState((prev) => ({ - ...prev, - minPrice: value, - currentPage: 1, - })); - setAllProducts([]); - setHasMore(true); + setPageState((prev) => { + if (value !== "") { + setAllProducts([]); + setHasMore(true); + } + return { + ...prev, + minPrice: value, + currentPage: 1, + }; + }); }} onMaxPriceChange={(value) => { - setPageState((prev) => ({ - ...prev, - maxPrice: value, - currentPage: 1, - })); - setAllProducts([]); - setHasMore(true); + setPageState((prev) => { + if (value !== "") { + setAllProducts([]); + setHasMore(true); + } + return { + ...prev, + maxPrice: value, + currentPage: 1, + }; + }); }} onCategorySelect={handleFilterCategorySelect} onCategoryDeselect={handleFilterCategoryDeselect} @@ -384,9 +411,18 @@ const CategoryPage = () => { } sorting={pageState.sorting} onSortingChange={(value) => { - setPageState((prev) => ({ ...prev, sorting: value, currentPage: 1 })); - setAllProducts([]); - setHasMore(true); + setPageState((prev) => { + const newSorting = prev.sorting === value ? "" : value; + if (newSorting) { + setAllProducts([]); + setHasMore(true); + } + return { + ...prev, + sorting: newSorting, + currentPage: 1, + }; + }); }} /> diff --git a/src/pages/DeliveryTerms/index.jsx b/src/pages/DeliveryTerms/index.jsx index 8f4edba..fae8d9d 100644 --- a/src/pages/DeliveryTerms/index.jsx +++ b/src/pages/DeliveryTerms/index.jsx @@ -11,12 +11,12 @@ const DeliveryTerms = () => {

Eltip bermek hyzmaty Aşgabat şäheriniň çägi bilen bir hatarda Büzmeýine we Änew şäherine hem elýeterlidir;

-
+ {/*

Sargydyň iň pes çägi 50 manat bolmaly; sargydyňyz 150 manatdan geçse eltip bermek hyzmaty mugt;

-
+
*/}

Saýtdan sargyt edeniňizden soňra operator size jaň edip sargyt tassyklar (eger hemişelik müşderi bolsaňyz sargytlaryňyz islegiňize göra awtomatik usulda hem tassyklanýar);