added sorting2

This commit is contained in:
@jcarymuhammedow
2026-04-18 12:10:38 +05:00
parent a2298dfa9c
commit 76c819848b
4 changed files with 99 additions and 41 deletions

View File

@@ -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;
},

View File

@@ -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 && (
<span style={{ marginLeft: 4, fontWeight: "bold" }}></span>
)}
</button>
))}
</div>

View File

@@ -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,
};
});
}}
/>
</Drawer>
@@ -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,
};
});
}}
/>

View File

@@ -11,12 +11,12 @@ const DeliveryTerms = () => {
<p>Eltip bermek hyzmaty Aşgabat şäheriniň çägi bilen bir hatarda Büzmeýine we Änew şäherine hem elýeterlidir;</p>
</div>
<div className={styles.termItem}>
{/* <div className={styles.termItem}>
<p>
Sargydyň iň pes çägi <span className={styles.highlight}>50 manat</span> bolmaly;
sargydyňyz <span className={styles.highlight}>150 manatdan</span> geçse eltip bermek hyzmaty mugt;
</p>
</div>
</div> */}
<div className={styles.termItem}>
<p>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);</p>