added sorting2
This commit is contained in:
@@ -32,12 +32,24 @@ export const brandsApi = baseApi.injectEndpoints({
|
|||||||
return `/brands/${params}/products`;
|
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}`;
|
let url = `/brands/${id}/products?page=${page}`;
|
||||||
|
|
||||||
if (limit) {
|
if (limit) {
|
||||||
url += `&limit=${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;
|
return url;
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ const CategoryFilters = ({
|
|||||||
onBrandSelect,
|
onBrandSelect,
|
||||||
onBrandDeselect,
|
onBrandDeselect,
|
||||||
onBrandSearchChange,
|
onBrandSearchChange,
|
||||||
sorting = "price_amount-descending",
|
sorting = "",
|
||||||
onSortingChange = () => {},
|
onSortingChange = () => {},
|
||||||
className,
|
className,
|
||||||
}) => {
|
}) => {
|
||||||
@@ -35,8 +35,14 @@ const CategoryFilters = ({
|
|||||||
];
|
];
|
||||||
|
|
||||||
const handlePricePreset = (preset) => {
|
const handlePricePreset = (preset) => {
|
||||||
onMinPriceChange(preset.min.toString());
|
// Eğer zaten aktifse, sıfırla
|
||||||
onMaxPriceChange(preset.max.toString());
|
if (minPrice === preset.min.toString() && maxPrice === preset.max.toString()) {
|
||||||
|
onMinPriceChange("");
|
||||||
|
onMaxPriceChange("");
|
||||||
|
} else {
|
||||||
|
onMinPriceChange(preset.min.toString());
|
||||||
|
onMaxPriceChange(preset.max.toString());
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const sortOptions = [
|
const sortOptions = [
|
||||||
@@ -173,8 +179,12 @@ const CategoryFilters = ({
|
|||||||
key={option.value}
|
key={option.value}
|
||||||
className={`${styles.sortingBtn} ${sorting === option.value ? styles.activeSorting : ""}`}
|
className={`${styles.sortingBtn} ${sorting === option.value ? styles.activeSorting : ""}`}
|
||||||
onClick={() => onSortingChange(option.value)}
|
onClick={() => onSortingChange(option.value)}
|
||||||
|
aria-pressed={sorting === option.value}
|
||||||
>
|
>
|
||||||
{option.label}
|
{option.label}
|
||||||
|
{sorting === option.value && (
|
||||||
|
<span style={{ marginLeft: 4, fontWeight: "bold" }}></span>
|
||||||
|
)}
|
||||||
</button>
|
</button>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ const CategoryPage = () => {
|
|||||||
currentPage: 1,
|
currentPage: 1,
|
||||||
minPrice: "",
|
minPrice: "",
|
||||||
maxPrice: "",
|
maxPrice: "",
|
||||||
sorting: "price_amount-ascending",
|
sorting: "",
|
||||||
});
|
});
|
||||||
|
|
||||||
const [filterState, setFilterState] = useState({
|
const [filterState, setFilterState] = useState({
|
||||||
@@ -314,22 +314,31 @@ const CategoryPage = () => {
|
|||||||
minPrice={pageState.minPrice}
|
minPrice={pageState.minPrice}
|
||||||
maxPrice={pageState.maxPrice}
|
maxPrice={pageState.maxPrice}
|
||||||
onMinPriceChange={(value) => {
|
onMinPriceChange={(value) => {
|
||||||
setPageState((prev) => ({
|
setPageState((prev) => {
|
||||||
...prev,
|
// Sadece aktif bir değer girilirse ürünleri sıfırla
|
||||||
minPrice: value,
|
if (value !== "") {
|
||||||
currentPage: 1,
|
setAllProducts([]);
|
||||||
}));
|
setHasMore(true);
|
||||||
setAllProducts([]);
|
}
|
||||||
setHasMore(true);
|
return {
|
||||||
|
...prev,
|
||||||
|
minPrice: value,
|
||||||
|
currentPage: 1,
|
||||||
|
};
|
||||||
|
});
|
||||||
}}
|
}}
|
||||||
onMaxPriceChange={(value) => {
|
onMaxPriceChange={(value) => {
|
||||||
setPageState((prev) => ({
|
setPageState((prev) => {
|
||||||
...prev,
|
if (value !== "") {
|
||||||
maxPrice: value,
|
setAllProducts([]);
|
||||||
currentPage: 1,
|
setHasMore(true);
|
||||||
}));
|
}
|
||||||
setAllProducts([]);
|
return {
|
||||||
setHasMore(true);
|
...prev,
|
||||||
|
maxPrice: value,
|
||||||
|
currentPage: 1,
|
||||||
|
};
|
||||||
|
});
|
||||||
}}
|
}}
|
||||||
onCategorySelect={handleFilterCategorySelect}
|
onCategorySelect={handleFilterCategorySelect}
|
||||||
onCategoryDeselect={handleFilterCategoryDeselect}
|
onCategoryDeselect={handleFilterCategoryDeselect}
|
||||||
@@ -340,9 +349,19 @@ const CategoryPage = () => {
|
|||||||
}
|
}
|
||||||
sorting={pageState.sorting}
|
sorting={pageState.sorting}
|
||||||
onSortingChange={(value) => {
|
onSortingChange={(value) => {
|
||||||
setPageState((prev) => ({ ...prev, sorting: value, currentPage: 1 }));
|
setPageState((prev) => {
|
||||||
setAllProducts([]);
|
const newSorting = prev.sorting === value ? "" : value;
|
||||||
setHasMore(true);
|
// Sadece aktif bir sort seçilirse ürünleri sıfırla
|
||||||
|
if (newSorting !== "") {
|
||||||
|
setAllProducts([]);
|
||||||
|
setHasMore(true);
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
...prev,
|
||||||
|
sorting: newSorting,
|
||||||
|
currentPage: 1,
|
||||||
|
};
|
||||||
|
});
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</Drawer>
|
</Drawer>
|
||||||
@@ -358,22 +377,30 @@ const CategoryPage = () => {
|
|||||||
minPrice={pageState.minPrice}
|
minPrice={pageState.minPrice}
|
||||||
maxPrice={pageState.maxPrice}
|
maxPrice={pageState.maxPrice}
|
||||||
onMinPriceChange={(value) => {
|
onMinPriceChange={(value) => {
|
||||||
setPageState((prev) => ({
|
setPageState((prev) => {
|
||||||
...prev,
|
if (value !== "") {
|
||||||
minPrice: value,
|
setAllProducts([]);
|
||||||
currentPage: 1,
|
setHasMore(true);
|
||||||
}));
|
}
|
||||||
setAllProducts([]);
|
return {
|
||||||
setHasMore(true);
|
...prev,
|
||||||
|
minPrice: value,
|
||||||
|
currentPage: 1,
|
||||||
|
};
|
||||||
|
});
|
||||||
}}
|
}}
|
||||||
onMaxPriceChange={(value) => {
|
onMaxPriceChange={(value) => {
|
||||||
setPageState((prev) => ({
|
setPageState((prev) => {
|
||||||
...prev,
|
if (value !== "") {
|
||||||
maxPrice: value,
|
setAllProducts([]);
|
||||||
currentPage: 1,
|
setHasMore(true);
|
||||||
}));
|
}
|
||||||
setAllProducts([]);
|
return {
|
||||||
setHasMore(true);
|
...prev,
|
||||||
|
maxPrice: value,
|
||||||
|
currentPage: 1,
|
||||||
|
};
|
||||||
|
});
|
||||||
}}
|
}}
|
||||||
onCategorySelect={handleFilterCategorySelect}
|
onCategorySelect={handleFilterCategorySelect}
|
||||||
onCategoryDeselect={handleFilterCategoryDeselect}
|
onCategoryDeselect={handleFilterCategoryDeselect}
|
||||||
@@ -384,9 +411,18 @@ const CategoryPage = () => {
|
|||||||
}
|
}
|
||||||
sorting={pageState.sorting}
|
sorting={pageState.sorting}
|
||||||
onSortingChange={(value) => {
|
onSortingChange={(value) => {
|
||||||
setPageState((prev) => ({ ...prev, sorting: value, currentPage: 1 }));
|
setPageState((prev) => {
|
||||||
setAllProducts([]);
|
const newSorting = prev.sorting === value ? "" : value;
|
||||||
setHasMore(true);
|
if (newSorting) {
|
||||||
|
setAllProducts([]);
|
||||||
|
setHasMore(true);
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
...prev,
|
||||||
|
sorting: newSorting,
|
||||||
|
currentPage: 1,
|
||||||
|
};
|
||||||
|
});
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|||||||
@@ -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>
|
<p>Eltip bermek hyzmaty Aşgabat şäheriniň çägi bilen bir hatarda Büzmeýine we Änew şäherine hem elýeterlidir;</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className={styles.termItem}>
|
{/* <div className={styles.termItem}>
|
||||||
<p>
|
<p>
|
||||||
Sargydyň iň pes çägi <span className={styles.highlight}>50 manat</span> bolmaly;
|
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;
|
sargydyňyz <span className={styles.highlight}>150 manatdan</span> geçse eltip bermek hyzmaty mugt;
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div> */}
|
||||||
|
|
||||||
<div className={styles.termItem}>
|
<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>
|
<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>
|
||||||
|
|||||||
Reference in New Issue
Block a user